Как сделать?
…
RomaDova:
Так, я это и сделал.
Spoiler
Сначала каждому числу дается свое текстовое пояснение
$здоровье[10]="Здоров" $здоровье[9]="Слегка ранен" $здоровье[8]="Слегка ранен" $здоровье[7]="Глубокая рана" $здоровье[6]="Глубокая рана" $здоровье[5]="Серьезное ранение"… и т.д.
В игре будет возможность проверить свое здоровье и если оно полное, то бишь переменная “здоровье” равна 10, то будет написано “Здоров”, если упадет до 5 например, то текстовое значение сменится на “Серьезное ранение”, но это по замыслу. В итоге, у меня постоянно отображается “Мертв”, так как это слово присвоено к $здоровье[0], вне зависимости от того, какой на самом деле уровень здоровья. Конечно все можно было бы сделать такif здоровье=10: msg "Здоров" endи т.д., но в некоторых случаях, эта штука слишком громоздкая, а я не люблю огроменные строки кода с незнакомыми операторами - в этой куче трудно найти ошибку. Если на то пошло, там вообще трудно что-то найти.
Могу предложить поссмотреть код игры “Крутузная балада” там используется такой принцип с оружием.
А как можно остановить все звуки в игре? Например если из одного диалога игрок перешел в другой, то слова останавливаются?
Каким образом можно “склеить” две игры, если там разные концовки?
Команда CLOSE AL
RomaDova,
видимо, решением твоей проблемы является строка
msg $здоровье[здоровье]
Oliver,
не CLOSE AL, а CLOSE ALL.
snail:
RomaDova,
видимо, решением твоей проблемы является строкаmsg $здоровье[здоровье]Oliver,
не CLOSE AL, а CLOSE ALL.
Не заметил, дико извиняюсь.
Добрый день, я в программировании новичок, но сценарий к игре лежит уже давно, и я решила воплотить его, но пока не все клеится.
Дело в том, что по идее у героя есть 6 способностей, это: Здоровье, Владение оружием, Ловкость, Вера, Красноречие и Благосостояние. Изначально на выбор даются 4 героя, у каждого есть определенный бонус (или наоборот) к четырем способностям. Например, у воровки такие бонусы: +5 к Владению оружием, +10 к Ловкости, +5 к Красноречию, -5 к Вере. При этом, базовое состояние каждой способности - 50. Вопрос первый: когда я создаю отдельную локацию на каждого выбранного персонажа в начале, как сделать так, чтобы приплюсовать к его базовым навыкам эти бонусы?
И еще вопрос про рандомизатор: в тексте очень часто встречаются проверки на определенную способность - прошел или нет. Раньше я думала с помощью кубика это все делать и приплюсовывать к случайному числу очки способности, но теперь решила перенести все на компьютер и немного запуталась)
вот что у меня выходит, но когда иду проверять, все время пишет ошибку:
Spoiler
l = rand + 105:
if l < 600:
goto ‘не уклонилась’
if l > 601:
goto ‘уклонилась’
end
end
end
помогите разобраться, пожалуйста)
Lisichka:
помогите разобраться, пожалуйста)
Нужно чуть больше контекста. Пока в глаза бросается лишнее двоеточие в конце первой строки. И при l=600 ничего не произойдёт.
Spoiler
l = rand(2,1)
if l = 1:
gt ‘не уклонилась’
if l = 2:
gt ‘уклонилась’
end
end
Как-то так.
Пытаюсь сделать функцию для добавления падежей, что-то не работает.
Case_set
IF Args[1] > 1:
$RESULT = $ARGS[2] + “а”
ELSE
$RESULT = $ARGS[2]
END
Вызываю из другой локации с параметрами:
$s = FUNC(’Case_set’, “раз”, 2)
При печати всегда получаю “раз”, а не “раза”
В чем ошибка?
И еще вдогонку, какая разница между двойными и одинарными кавычками в QSP?
rutigl:
$s = FUNC(’Case_set’, “раз”, 2)
при таком вызове строка “раз” будет в переменной $ARGS[0] а не $ARGS[2]
rutigl:
И еще вдогонку, какая разница между двойными и одинарными кавычками в QSP?
никакой
Lisichka:
l = rand + 105: if l < 600: goto 'не уклонилась' if l > 601: goto 'уклонилась' end end end
лишнее двоеточие в первой строке
if l > 601: - это условие находится внутри условия if l < 600 и соответственно никогда выполнено не будет
Добрый день, спасибо, убрала лишнее двоеточие, работает, но почему-то только верхний вариант срабатывает, а нижний нет, то есть если наверху ‘не уклонилась’, то в 10 случаях из 10 он будет перенаправлять именно на локацию ‘не уклонилась’, я проверила.
А по поводу контекста - количество бонусов должно влиять на шанс игрока выиграть, то есть те, у кого больше ловкости, в проверках на ловкость будут иметь большую вероятность успеха, нежели другие.
я решила это так:
Spoiler
if бонус_ловкость = 1:
l = rnd + 5
if l < 400:
gt ‘не уклонилась’
if l = 400:
gt ‘не уклонилась’
if l > 400:
gt ‘уклонилась’
end
end
end
else
l = rnd
if l < 500:
gt ‘не уклонилась’
if l > 500:
gt ‘уклонилась’
if l = 500:
gt ‘не уклонилась’
end
end
end
Правда, теперь он уверяет меня, что я на первой строчке не поставила end почему-то.
Огромное спасибо, werewolf, я думала, что ARGS[0] - это имя функции
Спасибо, получается, для того, чтобы выполнить все условия, нужно их как-то обособить или вынести отдельно?
Все, спасибо, переделала, вот это вроде работает:
Spoiler
if бонус_ловкость = 1:
l = rnd + 5
if l < 400:
gt ‘не уклонилась’
end
if l = 400:
gt ‘не уклонилась’
end
if l > 400:
gt ‘уклонилась’
end
end
else
l = rnd
if l > 600:
gt ‘уклонилась’
end
if l = 600:
gt ‘не уклонилась’
end
if l < 600:
gt ‘не уклонилась’
end
end
Oliver:
Спойлер
l = rand(2,1)
if l = 1:
gt ‘не уклонилась’
if l = 2:
gt ‘уклонилась’
end
end
Как-то так.
Спасибо, так тоже попробую)
Lisichka:
Спасибо, так тоже попробую
Не надо так пробовать: Oliver ошибся. У него условие if l = 2 находится внутри условия if l = 1.
Правильно писать так:
l = rand(2,1)
if l = 1: gt 'не уклонилась'
if l = 2: gt 'уклонилась'
В данном случае можно обойтись без многострочной формы оператора IF.
Во втором твоём примере лишний end в строке 12. Правильно и компактно написать так:
if бонус_ловкость = 1:
l = rnd + 5
if l > 400:
gt 'уклонилась'
else
gt 'не уклонилась'
end
else
l = rnd
if l > 600:
gt 'уклонилась'
else
gt 'не уклонилась'
end
end