Как сделать?
…
KeyMasterOfGozer,
if you need… hm… sort throught in order, you can use number indexes. Number indexes crossed with text indexes.
check:
NPC_Age['Bob'] = 18
NPC_Age['Jack'] = 15
NPC_Age['Linda'] = 25
NPC_Age[0]
NPC_Age[1]
NPC_Age[2]
You can’t resieved text indexes from it.
Sorry MY Bad English. See http://qsp.su/index.php?option=com_agora&task=search&action=search_results&keywords=строковые+индексы&author=&forum=-1&sort_by=5&sort_dir=DESC&show_as=posts&submit=Поиск
Google-Translate in your help.
Здравствуйте. Я пробую писать в QSP/ И столкнулся с проблемой.
Задача: у персонажа есть некоторая статистика. Я написал параметры этой статистики на отдельной локации в виде массива.
Потом я на проверке вывел эту статистику в формате “У вас <<денег>> золотых. Вы <<$денег>>”
моя проблема: текстовая переменная, которая написана на отдельной локации не отображается в тексте($денег).
НО: если писать характеристику персонажа в одной локации, то все норм.
Я не понимаю, в чем проблема.
Я переписывал переменную $денег c условиями. if денег<0 then $денег=‘ нищий’ else $денег=‘ богатый’
Некоторые пишут команду set ЗАЧЕМ?
Спасибо за ответ
Poganec37, порядок соблюден? Сначала определяешь переменную денег, потом код:
if денег<0:
$денег='нищий'
else
$денег='богатый'
end
потом текст. Скорее всего у тебя текст идёт раньше кода, и переменная $денег пустая.
У тебя возможна ситуация, когда деньги уходят в минус?
set - я так понимаю, использовалась для присвоения значения переменной в ранних версиях qsp, теперь использовать не обязательно.
Я хотел сделать бродилку. И мне нужен был журнал квестов, или что-то похожее. Я написал статистику персонажа на отдельной локации. Там по определённым условиям меняются числа и текст. На локации журнала не отображались ячейки с текстом: их надо было в этой же локации писать. Я обращение сделал через gosub.
Я хотел уточнить: вот в некоторых играх можно переносить сохранения из одной части игры в другую. Как это делается: нельзя же просто сделать 2 части игры, а потом сохранения из одной части переносить в другие?
Я не очень понимаю, что ты хочешь сделать, но попробуй глянуть Komm, susser Tod.
И главное: не отчаивайся! ;) Вопросы решаемы, важно только спросить. А лучше конечно прикреплять файл или участок кода, который не работает, так всем будет проще.
Удачи в написании игр)
Poganec37:
вот в некоторых играх можно переносить сохранения из одной части игры в другую
В каких конкретно?
Я полагаю, что алгоритм следующий, из игры А берутся некоторые ключевые значения переменных и объявляются в игре Б на стартовой локации. А как это реализуется программно - я не знаю.
По урокам очень быстро можно научиться. Я разобрался с системой сохранения переменных и переход между локациями. Goto это переход конкретно с места на место. Если мы хотим переносить какие-либо параметры, которые изменяются, то мы пишем их на отдельной локации и обращаемся к ним в нужном месте через gosub. Это был мой косяк, который я не учел.
О переносе сохранений: да, я тоже думал о переносе параметров. Единственное: я не нашел в документации, как создаются письменные файлы, как блокнот или что-то похожее.
В целом, можно было бы просто создать в конце игры блокнот с параметрами персонажа и эти данные переносить в другие части игры. Как в Масс Эффект.
Poganec37,
Есть opengame, savegame и addqst. Можно использовать сохранение игры
Чтобы сделать дальнейший шаг, надо понять, как эта система работает. Например, я хочу в первой части игры написать персонажа. Потом в других частях о нем будут упоминать НПС. Что-то похожее. Я посмотрел теорию и мне не понятно, как система сохранений работает.
Poganec37,
сохранения работают просто. Плеер сохраняет ТЕКУЩЕЕ состояние игры в момент сохранения. Это значит, что сохраняются значения всех переменных, значения передаваемые функциями и прочее, в том числе состояния окон (не расположение, только содержимое). Так же в файле сохранения прописывается хэш-сумма игры.
Если ты попытаешься открыть сохранение одной игры в другой, плеер сравнит хэш-суммы: игры и в файле сохранения, — увидит, что они разные, и не даст загрузить состояние. Чтобы этого избежать, в каждой игре нужно прописать:
debug=1
Далее, когда станет возможным использовать сохранения от других игр в новой, нужно взять логику механизма чекпойнтов и допилить до собственных нужд.
В справке все достаточно хорошо расписано. Если все ещё сложно, можете скачать старые игры с сейвами.
Poganec37,
особо не разбирался и не тестировал, сам все проверишь, если тебе это необходимо.
Из всего вышесказанного товарищами получается что SAVEGAME - это команда для сохранения игры. Но так как оно сохраняет даже окно и текст, то надо сделать следующее:
1. В части игры, в момент ее завершения пишешь локацию завершения, к примеру, endloc типа
SHOWSTAT 0
SHOWOBJS 0
SHOWINPUT 0
DEBUG = 1
'Часть вторая'
act 'Начать игру':
SAVEGAME 'part2.sav'
gt 'nextloc'
end
В локации nextloc напишешь что-то типа продолжение еще не готово или инструкцию, какой файл нужно открыть плеером.
2. В игре-продолжении на стартовой локации предлагаешь либо начать с дефолтными условиями либо загрузить файл part2.sav из предыдущей версии и пишешь DEBUG = 1. Так же создаешь копию локации endloc:
'Часть вторая'
act 'Начать игру':
gt 'nextloc'
end
где nextloc будет стартовой локацией второй части.
Предварительно, выписываешь все ключевые переменные, от которых будет зависеть сюжет, и пишешь развилки в зависимости от их значения.
Т.е., если ты хочешь, как МЕ, то у тебя будет переменная, отвечающая за жизнь персонажа lifepers, если жив =0, если умер =1. В новой части пишешь условие:
if lifepers=0:
'Этот персонаж живет припеваючи'
else
'Этого персонажа сбила машина и он похоронен на местном кладбище.'
Это теория, на практике не проверено.
Вопрос к специалистам.
Товарищ mkir в своем проекте добавляет монстров в битву при помощи локации, в которой расписаны все характеристики всех монстров, но выбираются они по условию, которым является имя монстра. Поэтому, перед каждым боем эта локация перечитывается. Если взять 20 монстров и 30 характеристик, получим 600 строк.
Когда я делаю что-то подобное, я создаю массив на монстров и на каждую их характеристику и все это объединяю через индекс, локацию инициализирую один раз за всю игру, а потом путем поиска по массиву имен нахожу нужный индекс, а по индексу все остальные значения.
С точки зрения игры, в памяти будет находится одинаковое количество переменных в обоих случаях, но т.к. во втором случае это массивы, то значений получится больше. Суть вопроса - какой метод наиболее предпочтительнее использовать и почему?
Понятно, что при текущих аппаратных мощностях оба варианта будут срабатывать мгновенно, но все же.
Любой. я однажды всю игру сделал в одной локации через замену переменной для отображения текста, а в другой раз всю игру засунул в 140 символов, которые прокручивали голосовые записи.
Коротко: это конкретно ваше дело как написать игру. Даже если кто-то и полезет в код, вам будет глубоко до фени, что он о нем думает.
Пространственно: имеет значение только назначение кода. Если вам нужно сделать условную боевку с парой монстров, можно и банальным выбором правильных вариантов обойтись.
С десятком - можно и ранд на проброс кубиков сделать все также лениво прописывая каждого монстра.
С сотнями - можно сделать одну локу для всех монстров и саммонить их по названию, либо зафигачить один массив для этого дерьма.
С десятками тысяч эволюционирующих и размножающихся прихвостней, живущих своей жизнью и имеющих имена - можно для них несколько разных механизмов выделить. Но на… Зачем
dmvikar,
Каждая переменная в qsp - это массив. Всего можно использовать 12800 имён переменных/массивов одновременно. Вот отсюда и надо думать, что правильнее.