Форум » » Помогите найти ошибку » Ответить

Помогите найти ошибку

Mixam: Я писал квесты и даже проги на старом QSP (3.0 или что то типа того). Совсем недавно узнал, что у всех уже давно новая версия. Решил создать прогу для генерирования боев. Там должен быть случайный выбор. Найдя в новом QSP только 1 команду для случайного числа (раньше их было вроде 2), я создал такую строчку: if скорость=1:set a=RAND([1,4]) if a=<3:p 'Боец 1 атаковал первым' if a=4:p 'Боец 2 атаковал первым' Ранее на локациях было указанно, что скорость=1 Однако выдает ошибку: Локация: Результат_раунда Место: При посещении Строка: 1 Код ошбки: 118 Описание: Ошибка синтаксиса! В первой строке и пробелы уберал, и наоборот добавлял, но ошибка от этого не меняеться. Не подскажите, что делать?

Ответов - 13

elmortem: if скорость=1:set a=RAND(1, 4)

Mixam: Ой, спасибо! Только сейчас понял, что квадратные скобки, это скобки из Helpa, когда в нем пишут [#выражение1] Еще раз спасибо!

elmortem: нзшт (: обращайтесь ещё.


Mixam: Может я конкретно туплю, а может с непривычки, но все же, если не трудно, ответте. Пишу: if скорость=1:set a=RAND(1,4) if a=<3:*pl 'Боец 1 использовал атаку первым' if a=4:*pl 'Боец 2 использовал атаку первым' if скорость=2:set b=RAND(1,4) if b=<3:*pl 'Боец 2 использовал атаку первым' if b=4:*pl 'Боец 1 использовал атаку первым' Ранеее было указанно, что скорость=2 Но в самой игре пишет вот так вот: "Боец 1 использовал атаку первым" "Боец 1 использовал атаку первым" Или "Боец 2 использовал атаку первым" "Боец 2 использовал атаку первым" А то и вообще "Боец 1 использовал атаку первым" "Боец 2 использовал атаку первым" Т.е. по два сообщения. Если не трудно, обьясните как правильно

Byte: А что конкретно нужно? Если выбрать первого нападающего - то зачем строчки начиная с "if скорость=2:set b=RAND(1,4)" ? Если нужно ввести бонус по скорости, то можно сделать так: [pre2] if RAND(1,4)<=скорость: *pl 'Боец 1 использовал атаку первым' else *pl 'Боец 2 использовал атаку первым' end[/pre2] При скорости 1, боец1 будет атаковать первым с вероятностью 25%; При скорости 4, боец1 будет атаковать первым с вероятностью 100%. Соответственно для скорости 2 - 50%, для 3 - 75%.

elmortem: if скорость=1: set a=RAND(1,4) if a=<3:*pl 'Боец 1 использовал атаку первым' if a=4:*pl 'Боец 2 использовал атаку первым' END if скорость=2: set b=RAND(1,4) if b=<3:*pl 'Боец 2 использовал атаку первым' if b=4:*pl 'Боец 1 использовал атаку первым' END

Mixam: Byte , это нужно скорее не для игры, а для расчета боев на одном ФРПГ форуме. Перед расчетом спрашиваеться, какой боец быстрее, боец 1 или боец 2. Если выбирают, что боец 1, то скорость=1 Если выбирают, что боец 2, то скорость=2 А затем, более медлительный боец имеет шанс атаковать первым 1/4, а более быстрый 3/4. elmortem, сейчас попробую

Mixam: Люди, а как провернуть такое: Если нет действия, то добавить действие. Я пробовал: if no act 'xxx': act 'yyy' но оно не подходит. Подскажите, как мне такое сделать?

elmortem: При добавлении действия присваивай какой-нить переменной некое значение. А где проверить нужно, есть ли действие - проверяй значение этой переменной. В общем тут так просто не сделать, придётся слекга поплясать с бубном.

Byte: Mixam, проверка на существование действия с именем добавляемого происходит всегда, автоматически. То есть можно написать просто act 'название':'text' - всегда будет только одно такое действие. Никаких IF для этого не нужно.

Mixam: Byte, ты немного не понял. Например: Идет диалог. После произношения реплики она удаляеться, но нужно, чтобы добавилась новая (другая). Дабы не мучаться с горой локаций я хотел сделать это в одной. (Кстати, не помню где, но в каком-то конструкторе я видел, что диалог строится с помощью специального окна. Там можно было выставить, как реагирует собеседник на ответ, можно запоминать совокупности ответов, а затем использовать, чтобы собеседник отвечал соответствующе. Можно сделать такое в URQ. Если ты не понял, что я предложил, то не грузись) И новый вопрос: if действие1=1 & действие2=1 & действие3=1: *pl '123' delact 'ввв' act 'Уйти':xgt 'Уйти' END (все названия изменены, дабы не расскрывать даже мелкие детали будущей игры) Все действия=1, но действие не добавляет. Что делать?

Byte: Mixam, может ты такое имел в виду? [pre2] act 'Действие': delact $selact act 'Другое': 'text' end end[/pre2] Нужно писать AND: "if действие1=1 and действие2=1 and действие3=1:" Запоминать ответы тоже можно.

Nex: Mixam в примерах на http://qsp.su был и пример для диалогов.



полная версия страницы