Как сделать?
…
подскажите пожалуйста, как сделать, чтобы при нажатии на действие “атаковать”, на след. локации случайным образом были исходы “победа” или “поражение”.
ACT 'Атаковать':
victory = RAND(1, 2)
GOTO 'КонецБитвы'
END
Локация “КонецБитвы”:
IF victory = 1:
'Победа'
ELSE
'Поражение'
END
Большое спасибо!
Добрый день.
Пытаюсь разобраться с QSP, для пробы решаю задачку с распределением характеристик персонажа.
Решаем в лоб:
сила=RAND(1,5)
выносливость=RAND(1,5)
ловкость=RAND(1,5)
GT 'Герой'
...
локация 'Герой'
очки=15-сила-выносливость-ловкость
*PL 'сила=<<сила>>'
*PL 'выносливость=<<выносливость>>'
*PL 'ловкость=<<ловкость>>'
*PL
*PL 'Нераспределенно очков: <<очки>>'
IF очки=0:
ACT 'Продолжить': GT 'Далее'
ELSE
IF сила<10: ACT 'увеличить силу': сила=сила+1 & очки=очки-1 & GT 'Герой'
IF выносливость<10: ACT 'увеличить выносливость': выносливость=выносливость+1 & очки=очки-1 & GT 'Герой'
IF ловкость<10: ACT 'увеличить ловкость': ловкость=ловкость+1 & очки=очки-1 & GT 'Герой'
END
Работает, но выглядит не комильфо. Если дальше придётся работать со многими характеристиками в разных локациях, код растянется на километр.
Переделал:
$char_name[0]='сила' & char_val[0]=RAND(1,5)
$char_name[1]='выносливость' & char_val[1]=RAND(1,5)
$char_name[2]='ловкость' & char_val[2]=RAND(1,5)
GT 'Герой'
...
локация 'Герой'
очки=15
i=0
:loop
if i<6: *PL '<<$char_name[i]>>= <<char_val[i]>>' & очки=очки-char_val[i] & i=i+1 & jump 'loop'
*PL
*PL 'Нераспределенно очков: <<очки>>'
IF очки=0:
ACT 'Продолжить': GT 'Далее'
ELSE
i=0
:loop2
if i<3:
IF char_val[i]<10: ACT 'увеличить характеристику ''<<$char_name[i]>>'':': char_val[i]=char_val[i]+1 & очки=очки-1 & GT 'Герой'
i=i+1
jump 'loop2'
end
END
Результат - отображает названия актов и значения характеристик правильно, а вот на действия не реагирует, ПОЧЕМУ :mad: !!!
никнейм,
во время выполнения кода действия, переменная “i” равняется трем. Соответственно, код
char_val[i]=char_val[i]+1 & очки=очки-1 & GT 'Герой'
на какое бы действие ни ткнули, всегда будет выполнять увеличение “характеристики” под номером 3.
Это распространенная ошибка.
Можно воспользоваться оператором DYNAMIC.
DYNAMIC "
ACT 'увеличить характеристику ''<<$char_name[i]>>'':':
char_val[<<i>>]=char_val[<<i>>]+1 & очки=очки-1 & GT 'Герой'
END
"
P.S. Не рекомендую записывать операторы в одну строку, как правило это приводит к ошибкам.
ага, оказывается в не зависимости от того какое действие я выбираю, характеристика меняться для i=3 (увеличивается char_val[2])
блин.. неужели ничего нельзя придумать?! =(
P.S. Nex - спасиб.
Я уже привел решение.
это старые грабли - у тебя действия добавляются в цикле но поскольку код действия выполняется при выборе то char_val[i]=char_val[i]+1 не обрабатывается правильно - ведь цикл уже отработал и в i у тебя хранится 4 а не номер нужной характеристики
проще всего это исправить с использованием dynamic
dynamic "ACT 'увеличить характеристику <<$char_name[i]>>:': char_val[<<i>>]=char_val[<<i>>]+1 & очки=очки-1 & GT 'Герой'"
Два вопроса:
1. Можно ли при использовании FUNC(…) вернуть в качестве результата функции массив или только строковое/числовое значение?
2. Где на сайте кнопочка “Версия для печати”? Без неё - жутко не удобно темы читать :rolleyes:
никнейм,
1. Можно заполнить массив, который будет доступен глобально, и вернуть его имя.
2. Такой кнопки нет. С мобильника читаешь? На сайте много чего не хватает, впрочем это уже оффтоп. Давай придерживаться темы.
Почему при загрузке какого-либо шрифта в игру, весь текст пропадает?
Winter Wolf,
расскажи подробнее, как ты загружаешь шрифт в игру.
Хм, я шрифт кладу в папку с игрой. Я не понял: Как указать на шрифт?
$FName “Mediaval English.swf” не подходит.
Winter Wolf,
заходи на наш канал, http://tinyurl.com/qsp-irc2
Так проще будет разобраться.
Winter Wolf:
Как указать на шрифт?
насколько я помню в $fname можно прописывать шрифт уже установленный в системе. Т.е. если шрифт лежит в папке с игрой, он, скорее всего, работать не будет. Или QSP всё же держит шрифты, не установленные в системе?