Как сделать?
…
Как сделать задавание количество пшеницы на человека на ход с помощью ввода т.к. я пытался сделать кнопками +1 и -1, но это слишком долго. ТО есть обьясню проблему игрок там строит здания, атакует соседа и у него кончилась пшеница т.к. он не отправил людей работать. Он хочет урезать кол-во пшеницы а там нужен код за это дело отвечающий, у меня есть действие закончить ход в которое я готов прописать что угодно. Так вот повторюсь : как мне сделать изменение переменной пшначел через оператор инпут?
Делаю маленькое меню статистики в ‘предметах’.
В начале игры
$onobjsel = 'onobjsel'
gosub 'Меню'
Локация с массивом ‘Меню’
addobj 'Статистика'
$stat[0] = 'Дней прожито: <<daystart>>'
$stat[1] = 'Яблок поедено: <<allapples>>'
Локация-обработчик ‘onobjsel’
if $selobj = 'Статистика':
delobj 'Статистика'
addobj 'Закрыть'
:loop1
addobj $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop1'
end
if $selobj = 'Закрыть':
addobj 'Статистика'
delobj 'Закрыть'
:loop2
delobj $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop2'
end
unselect
Меню разворачивается нормально. А вот на сворачивании что-то идет не так.. массив не хочет удаляться. Что не так?
И уж вообще не понятно, почему статистика не отображается в этом меню? В ‘дополнительном описании’ все работает, а тут всегда 0.
А вот на сворачивании что-то идет не так.. массив не хочет удаляться. Что не так?
Нужно перед началом каждого цикла всегда обнулять переменную цикла, счётчик.
i = 0
Nex
Ура спасибо. Входит и выходит. Сворачивается и разворачивается :3
Но почему статистика не выводится?
На акте укусить яблоко у меня
allapples=allapples+1
В массиве
$stat[1] = 'Яблок поедено: <<allapples>>'
Везде выводится, только в предметах не выводится.
SneakBug8:
Как сделать задавание количество пшеницы на человека на ход с помощью ввода т.к. я пытался сделать кнопками +1 и -1, но это слишком долго. ТО есть обьясню проблему игрок там строит здания, атакует соседа и у него кончилась пшеница т.к. он не отправил людей работать. Он хочет урезать кол-во пшеницы а там нужен код за это дело отвечающий, у меня есть действие закончить ход в которое я готов прописать что угодно. Так вот повторюсь : как мне сделать изменение переменной пшначел через оператор инпут?
SneakBug8:
как мне сделать изменение переменной пшначел через оператор инпут?
http://wiki.qsp.su/help:inputs
aska:
Но почему статистика не выводится? Везде выводится, только в предметах не выводится.
Создай новую игру, добавь одну локацию и в неё код из под спойлера. Надеюсь придёт понимание.
Spoiler
daystart = 1
allapples = 1
$stat[0] = 'Дней прожито: <<daystart>>'
$stat[1] = 'Яблок поедено: <<allapples>>'
daystart = 2
allapples = 2
arrsize('$stat')
i=0
:loop1
addobj $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop1'
i=0
:loop2
pl $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop2'
i=0
:loop3
*pl $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop3'
newsash,
спс помогло.
Что-то не приходит понимание.
То есть понятно, что вроде бы выводит. Но непонятно, почему у меня не выводит. Вроде бы по сути все так-же.
Spoiler
!Значения переменных
daystart=1
allapples=1
!Объекты
$stat[0] = 'Дней прожито: <<daystart>>'
$stat[1] = 'Яблок поедено: <<allapples>>'
!А зачем тут опять?
daystart=2
allapples=2
!Выводит число элементов массива.
arrsize('$stat')
!Добавляет в объекты
i=0
:loop1
addobj $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop1'
!Добавляет в доп описание
i=0
:loop2
pl $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop2'
!Добавляет в основное окно
i=0
:loop3
*pl $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop3'
aska:
!А зачем тут опять?
Это намек, что значения вычисляются в момент присвоения строки переменной. Выводятся-то единицы, а не двойки. Скорее всего проблема в этом.
И ещё нюанс - у тебя возникнут проблемы с удалением предметов, если между выводом и удалением поменяются значения. Лучше выведенную статистику в отдельной переменной хранить. Создаёшь переменную при выводе, стираешь при удалении.
newsash:
aska:
!А зачем тут опять?
Это намек, что значения вычисляются в момент присвоения строки переменной. Выводятся-то единицы, а не двойки. Скорее всего проблема в этом.
Вроде нащупывается проблема. Если вытащить объекты из локации ‘меню’, то что-то начинается получаться, но пока не очень. И я все равно не понимаю, с чем там это связано.
И почему-то данные обновляются не оперативно, а для обновления нужно прогнать луп добавить, удалить..
newsash:
И ещё нюанс - у тебя возникнут проблемы с удалением предметов, если между выводом и удалением поменяются значения. Лучше выведенную статистику в отдельной переменной хранить. Создаёшь переменную при выводе, стираешь при удалении.
Жесть. Это как-то так что-ли?
Spoiler
if $selobj = 'Статистика':
delobj 'Статистика'
addobj 'Закрыть'
daystart=x
allapples=y
i=0
:loop1
addobj $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop1'
end
if $selobj = 'Закрыть':
addobj 'Статистика'
delobj 'Закрыть'
killvar 'x'
killvar 'y'
i=0
:loop2
delobj $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop2'
end
unselect
aska:
Вроде нащупывается проблема. Если вытащить объекты из локации ‘меню’, то что-то начинается получаться, но пока не очень. И я все равно не понимаю, с чем там это связано.
И почему-то данные обновляются не оперативно, а для обновления нужно прогнать луп добавить, удалить..
Попробуй перед каждым циклом вывода вызывать локацию генерации меню.
aska:
Это как-то так что-ли?
Примерно так:
Spoiler
if $selobj = 'Статистика':
delobj 'Статистика'
addobj 'Закрыть'
gs 'generate_stat'
killvar $stat_objs
i=0
:loop1
addobj $stat[i]
$stat_objs[i] = $stat[i]
i=i+1
if i<arrsize('$stat'): jump 'loop1'
end
if $selobj = 'Закрыть':
addobj 'Статистика'
delobj 'Закрыть'
i=0
:loop2
delobj $stat_objs[i]
i=i+1
if i<arrsize('$stat_objs'): jump 'loop2'
killvar $stat_objs
end
unselect
И используй отступы для многострочных операторов - код нечитаемый.
newsash:
Попробуй перед каждым циклом вывода вызывать локацию генерации меню.
Так получилось. Я правда все равно не понимаю почему :3
Но данные переменных все равно обновляются только, если открыть/закрыть меню.
Добрый день,у меня вопрос,как сделать ссылку на другую локацию через функцию? Код ниже,но пишет “Ошибка синтаксиса”.Что нужно исправить?
<a href="exec: gt ''Локация'' ">$func ('scale.tableHP',100,100)+' 100/100'</a>
aska:
Так получилось. Я правда все равно не понимаю почему :3
Потому что значения попадают в строку в момент присвоения строки переменной, а не в момент её вывода на экран.
aska:
Но данные переменных все равно обновляются только, если открыть/закрыть меню.
Что соответствует твоему коду. Если нужно постоянное обновление - при изменении переменных нужно удалять и добавлять эти предметы заново с новыми значениями.
toliaq:
Что нужно исправить?
А можно строчку целиком? Какие там внешние кавычки?
Народ как сделать рынок? С обменом ресурсов, я попытался сделать сделал так: сделал 3 локации ресурсы на продажу ресурсы на покупку, торговля откуда идут кнопки на две предыдущих локации, в р\локациях о ресурсах сделал действия с названием ресурсов в которых я задаю переменную х в одной а у в другой. как дальше настроить кнопку “обменять” в локации торговля??