Автор | Сообщение |
|
Отправлено: 01.02.09 14:29. Заголовок: Помогите найти ошибку
Я писал квесты и даже проги на старом 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
[только новые]
|
|
|
| moderator
|
|
|
Отправлено: 01.02.09 14:32. Заголовок: if скорость=1:set a=..
if скорость=1:set a=RAND(1, 4)
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 01.02.09 14:38. Заголовок: Ой, спасибо! Только ..
Ой, спасибо! Только сейчас понял, что квадратные скобки, это скобки из Helpa, когда в нем пишут [#выражение1] Еще раз спасибо!
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 01.02.09 14:40. Заголовок: нзшт (: обращайтесь ..
нзшт (: обращайтесь ещё.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 01.02.09 15:07. Заголовок: Может я конкретно ту..
Может я конкретно туплю, а может с непривычки, но все же, если не трудно, ответте. Пишу: 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 использовал атаку первым" Т.е. по два сообщения. Если не трудно, обьясните как правильно
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 01.02.09 16:15. Заголовок: А что конкретно нужн..
А что конкретно нужно? Если выбрать первого нападающего - то зачем строчки начиная с "if скорость=2:set b=RAND(1,4)" ? Если нужно ввести бонус по скорости, то можно сделать так: if RAND(1,4)<=скорость: *pl 'Боец 1 использовал атаку первым' else *pl 'Боец 2 использовал атаку первым' end При скорости 1, боец1 будет атаковать первым с вероятностью 25%; При скорости 4, боец1 будет атаковать первым с вероятностью 100%. Соответственно для скорости 2 - 50%, для 3 - 75%.
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 01.02.09 19:01. Заголовок: if скорость=1: set a..
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
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 01.02.09 20:06. Заголовок: Byte , это нужно ско..
Byte , это нужно скорее не для игры, а для расчета боев на одном ФРПГ форуме. Перед расчетом спрашиваеться, какой боец быстрее, боец 1 или боец 2. Если выбирают, что боец 1, то скорость=1 Если выбирают, что боец 2, то скорость=2 А затем, более медлительный боец имеет шанс атаковать первым 1/4, а более быстрый 3/4. elmortem, сейчас попробую
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.02.09 16:08. Заголовок: Люди, а как проверну..
Люди, а как провернуть такое: Если нет действия, то добавить действие. Я пробовал: if no act 'xxx': act 'yyy' но оно не подходит. Подскажите, как мне такое сделать?
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 03.02.09 16:17. Заголовок: При добавлении дейст..
При добавлении действия присваивай какой-нить переменной некое значение. А где проверить нужно, есть ли действие - проверяй значение этой переменной. В общем тут так просто не сделать, придётся слекга поплясать с бубном.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.02.09 20:36. Заголовок: Mixam, проверка на с..
Mixam, проверка на существование действия с именем добавляемого происходит всегда, автоматически. То есть можно написать просто act 'название':'text' - всегда будет только одно такое действие. Никаких IF для этого не нужно.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.02.09 21:20. Заголовок: Byte, ты немного не ..
Byte, ты немного не понял. Например: Идет диалог. После произношения реплики она удаляеться, но нужно, чтобы добавилась новая (другая). Дабы не мучаться с горой локаций я хотел сделать это в одной. (Кстати, не помню где, но в каком-то конструкторе я видел, что диалог строится с помощью специального окна. Там можно было выставить, как реагирует собеседник на ответ, можно запоминать совокупности ответов, а затем использовать, чтобы собеседник отвечал соответствующе. Можно сделать такое в URQ. Если ты не понял, что я предложил, то не грузись) И новый вопрос: if действие1=1 & действие2=1 & действие3=1: *pl '123' delact 'ввв' act 'Уйти':xgt 'Уйти' END (все названия изменены, дабы не расскрывать даже мелкие детали будущей игры) Все действия=1, но действие не добавляет. Что делать?
|
|
Профиль
Цитата
Ответить
|
|
|
Отправлено: 03.02.09 21:32. Заголовок: Mixam, может ты тако..
Mixam, может ты такое имел в виду? act 'Действие': delact $selact act 'Другое': 'text' end end Нужно писать AND: "if действие1=1 and действие2=1 and действие3=1:" Запоминать ответы тоже можно.
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 03.02.09 23:10. Заголовок: Mixam в примерах на ..
|
|
Профиль
Цитата
Ответить
|
|