RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2437448 views

подскажите пожалуйста, как сделать, чтобы при нажатии на действие “атаковать”, на след. локации случайным образом были исходы “победа” или “поражение”.

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

Так проще будет разобраться.

Aleks Versus Moderator 03.10.2011 11:29 (14 years ago)

Winter Wolf:

Как указать на шрифт?

насколько я помню в $fname можно прописывать шрифт уже установленный в системе. Т.е. если шрифт лежит в папке с игрой, он, скорее всего, работать не будет. Или QSP всё же держит шрифты, не установленные в системе?

Log in or Register to post comments.