Как сделать?
…
Freem82,
В общем, к чему эти усложнения?
Вам нужно, чтобы монстры получали благословения? Делаем вот так:
$monster[] = 'Василиск'
$monster[] = 'Стрига'
$monster[] = 'Петрович'
$bless[] = 'на силу'
$bless[] = 'на ловкость'
$bless[] = 'на выносливость'
buff[] = 1
buff[2] = 1
typeBuff[] = 0
typeBuff[2] = 2
index = 0
:renderBless
if (buff[index]):
*PL 'Монстр: <<$monster[index]>>'
*PL 'Благословение: <<$bless[typeBuff[index]]>>'
end
index += 1
if (index < arrsize('$monster')): jump 'renderBless'
Принцип понял. Сейчас попробую как то, обыграть. В конечном итоге эти монстры должны составлять армию поэтому хотел их сделать уникальными. Файл игры предоставляю на грамматические ошибки постарайтесь не обращать внимание. На даном этапе работает только два этапа и послушница игру начал делать пару вечеров назад так-что она сырая. Благословление после поражения ГГ.WP.rar
Freem82,
Совет: пихайте локации в папки.
Связанные со системой - в, к примеру, #System.
Алгоритмы, функции, массивы и прочая в свои версии.
В будущем, вам же проще будет ориентироваться, где и что лежит.
Оператор set опциональный, существует лишь, чтобы немного помочь разработчикам разобраться с языком. На деле, как по мне, особо не нужен, но тут уж кому как удобно.
Капсом пишут в случае, если хотят обозначить, что данная переменная - константа. Если вы тоже следуете этому пути, вопросов нет. Но если вы пишите их от случая к случаю, то лучше перестать :)
Базовые действия бесполезная весчь. Тем более, что вы используете ссылки для действий. К чему их создавать? Может, это просто старые наработки? Их лучше использовать, для создания хот-кеев. Быстрого сохранения/загрузки или выбора варианта в диалогах.
Таблицы - тихий ужас :(
Писать нужно так, если не хотите много пустого пространства под таблицей и повысить читабельность в коде.
*P '<table>'
*P '<tr>'
*P '<th>Title 1</th>'
*P '<th>Title 2</th>'
*P '</tr>'
*P '<tr>'
*P '<td>Cell 1.1</td>'
*P '<td>Cell 1.2</td>'
*P '</tr>'
*P '</table>'
Есть такая классная вещь - массивы. Вы собственно уже начали их использовать.
Тех же монстров можно описать массивом. Вот наиболее простой способ:
$mName[] = 'Маленькая сколопендра'
$mDesc[] = 'Размером с собаку, весьма ядовитая сколопендра, с которой лучше не связываться обычному человеку. Но когда это останавливало приключенца?'
mDamage[] = 10
mDefence[] = 20
mSpeed[] = 5
mAgility[] = 6
! и т. д.
Более сложный завязан на регулярных выражениях, так что, лучше пока туда не соваться)
-
- Проиграть мне так и не удалось))
Всем привет.
Вот сижу пишу на куспе и натолкнулся на реально странную ошибку…
Объяснить что именно произошло затруднительно поэтому вот вам файлик урезанной игры.
Откройте его и следите за мыслью. Нажимаем навыки и выбираем силовой удар.
Всё ок никакой ошибки. Можете даже сами посмотреть на вывод действий и убедиться что всё вроде нормально.
Дальше. Переходим к странному багу.
Нажмите на ударить. Это по сути пустая локация, где есть gt на локацию 1. На ней ничего больше не происходит.
Казалось бы что не так.
Но теперь нажмите на навыки и на силовой удар.
Хопа! Непонятная ошибка. Начнем с того что кусп говорит про 23 строку (которой нет).
А если проще то аргумент в выводе навыков почему то равен 2. При том что максимум должен быть 0. И изза этого и сам баг.
откуда двойка?
pamagiti.qsp
oleksandrigo,
он говорит о строке в действии, причём о строке в сгенерированном действии.
Чтобы отследить эту ошибку, я бы написал после каждой строки кода вывод тех данных, которые эта строка формирует. Например, в окно доп описания. Так я и отлавливаю непонятные баги.
Но вообще мне кажется, что у тебя не одна, а две или больше ошибок, которые совместными усилиями выдают глюк. Генерация действия в локации 2:
gs $Skills[args[0]], 'player', 'enemy'
в этой строке определённо будет подставляться всегда только 0 вместо args[0], потому что args сохраняет значения только в рамках одной “сессии” текущего блока кода. Блок кода в данном случае — это действие, а действию мы не можем передавать аргумент. Если генерировать действие с помощью dynamic, то глюк пропадает, но я не уверен, что работает правильно. Слишком мудрённый код.
dynamic "act '<<$Skills.Name[args[0]]>>':
!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ВОТ ЗДЕСЬ!!!!!!!!!!!!
'вывод <<args[0]>>'
*pl 'Вы использовали <<$Skills.Name[args[0]]>>'
gs '<<$Skills[args[0]]>>', 'player', 'enemy'
xgt 'FightT'
end"
oleksandrigo:
откуда двойка?
двойка берётся из строки args[0] += 1. Ты по сути генерируешь действие с одинаковым названием, чем заменяешь старое правильное действие новым неправильным. Если в название действия подставить его номер (<<args[0]>>), ты увидишь сколько действий действительно генерируешь.
UPD^^ нет, последнее неверно. Не пойму, откуда берётся двойка. Надо более глубоко вникать в код.
Забавно если args[’memory’] приравнять у нулю после вывода действий на 1, то баг пропадает. Вероятно какая-та ошибка в аргументах.
Также сделал как вы говорили использовал dynamic
Spoiler
dynamic ”
act $Skills.Name[<<args[0]>>]:
<<args[0]>>
*pl ’Вы использовали ’ + $Skills.Name[<<args[0]>>]
gs $Skills[<<args[0]>>], ‘player’, ‘enemy’
xgt ‘FightT’
end
”
Теперь всё работает корректно. Благодарю за помощь =)
Друзья! Столкнулся со странной проблемой.
В текущем проекте хочу реализовать игровую карту, с ландшафтом, который в начале игры генерировался бы случайно, но зависел от набора также случайно сгенерированных в начале игре чисел. И вроде все получилось, карта каждый раз новая и т.д., однако случайно заметил, что иногда она… повторяется.
Зажимаю Alt+N (начать новую игру) - смотрю, как ландшафты друг друга сменяют и… вдруг в один из моментов два раза подряд одинаковых.
Вывожу на экран переменные, от которых ландшафт зависит (<<a>><<b>><<c>><<d>><<e>><<f>><<g>><<h>><<j>><<k>>), каждой из них заведомо присваивается =rand(1,9) -
и та же самая ситуация, то они случайные, как надо, то в один из моментов два раза подряд абсолютно одинаковые ряды чисел.
От чего это зависит?
mkir,
абсолютно случайных чисел не бывает. Генератор генерирует псевдослучайные числа. Плохо помню из информатики, но кажется он опирается на значение времени. Миллисекунды или микросекунды. В бейсике предлагалось выходить из этого выбрасывая случайный предел, а затем выбрасывая случайное число из предела.
В QSP можно повторить нечто подобное, и даже лучше:
Spoiler
! в первую очередь генерируем массив, заполненный всеми нужными данными
! можно проставить вручную, но я использую цикл для чисел от 1 до 9
if arrsize('arand')=0:
! только если массив не создан, так как незачем создавать его сто раз
args['i']=1
:for
if args['i']<10:
arand[]=args['i']
args['i']+=1
jump 'for'
end
end
! копируем этот массив во временный
copyarr "temprand","arand"
! теперь заполняем другой массив, случайным образом выдёргивая данные
! из уже сформированного массива (из temprand в newtemprand)
:for_rand
args['size']=arrsize('temprand')
if args['size']>0:
args['rand']=rand(0,args['size']-1)
newtemprand[]=temprand[args['rand']]
! удаляем выбранную ячейку массива
killvar 'temprand',args['rand']
jump 'for_rand'
end
! теперь когда новый массив заполнен случайным образом данными из исходного массива
! выкидываем из него случайное значение
args['result']=newtemprand[rand(0,arrsize('newtemprand')-1)]
! удаляем временные массивы
killvar 'temprand'
killvar 'newtemprand'
! заставляем функцию вернуть значение
result=args['result']
Нужно записать этот код на отдельной локации, назвать её например rand-rand и получать случайное число уже так:
d=func('rand-rand')
Само собой она будет работать медленнее оригинального rand, и для примера я написал только вариант с числами от 1 до 9, но можно легко переделать под возможность гибко задавать предел.
P.S.: такие короткие ряды случайных чисел могут банальным образом случайно повторяться. Такая штука была замечена в айподе. Он смешивал песни в случайном порядке, но пользователи пожаловались, что “очень часто” песни повторяются, или может “долгое время” играть один и тот же исполнитель, из-за чего разработчикам пришлось внести в алгоритм перемешивания корректировку. То есть они “снизили” случайность. Таким образом в плейлисте стало меньше повторов, но он уже не перемешивался по настоящему случайным образом.
$LSP="<a href='EXEC:beginning_quest[2]=beginning_quest[2]+1 & goto ""Loc""'>Бла бла<a/>"
*pl "Бла бла бла <<$LSP>> бла бла бла."
У меня такой вопрос, почему в данном коде, все что после <<$LSP>> тоже выделяется гиперссылкой?
Думал проблема в недостающей кавычке или лишней, но ничего такого не нашел.
UPD неправильно закрыл </a>, вопрос снят
BraJelon,
просто ты ошибся в закрывающем теге:
<a/>
Должно быть
</a>
Всем привет. Подскажите как сделать работающие переменные как голод и уталость? Пробовал сделать систему денег в PL но
То значение что пишу изачально в строке Pl не меняется. Если не трудно объясните. Желательно с примером кода
чтобы показатели было видно
Что значит “система денег в PL”?…
PL это вывод текста. Если ты напишешь pl ’5’ он всегда будет выводить 5. Различай вывод от хранения.
Значения храним в переменной
деньги = 5
Работаем дальше с ней, в том числе и выводим
pl деньги
Engineer,
Зачем str? И так ведь выведется
oleksandrigo,
По привычке написал.
Так должна выглядить таблица
Но она выглядит так
https://ibb.co/VjB3GcG
================================
Как убрать абзаци которые создаються из воздуха?
если можно теги и пример куда их записыват
хотя бы!
вот код
Spoiler
'<html>
<head>
<title></title>
</head>
<body>
<table border="0" cellpadding="1" cellspacing="1">
<tbody>
<tr>
<td style="text-align: center;">
Никнейм</td>
<td style="text-align: center;">
<table border="5" cellpadding="1" cellspacing="1" style="width: 0px;">
<tbody>
<tr>
<td>
меню1</td>
<td>
меню2</td>
<td>
меню3</td>
<td>
меню4</td>
<td>
меню5</td>
<td>
меню6</td>
<td>
меню7</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
<table border="1" cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
<p>
голова </p>
<p>
</p>
</td>
</tr>
<tr>
<td>
рука1</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</tbody>
</table>
</td>
<td>
Фото персонажа</td>
<td>
<table border="1" cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
<table border="0" cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
<table border="1" cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table border="1" cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table border="1" cellpadding="1" cellspacing="1" style="width: 200px;">
<tbody>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</table>
</td>
<td>
<table border="2" cellpadding="1" cellspacing="1" style="height: 50px; width: 50px;">
<tbody>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячйе</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячйй</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
яч5е</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ммм</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
мааа</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
<tr>
<td>
яче</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
<td>
ячей</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table></body>
</html>'