Создание квестов: Начнем?
| |
StalkerSource | Дата: Четверг, 06.10.2011, 03:19:56 | Сообщение # 1 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Какого хрена никто даже не обсуждает квестовую систему? Я написал пару туториалов, они не полные, да и сам плагин работает пока не полностью, но мне кажется, что пора начать обсуждать это дело и спрашивать вопросы. Я ведь не для себя это делаю?
|
|
| |
andruum | Дата: Четверг, 06.10.2011, 16:02:01 | Сообщение # 2 |
Почетный тестер
Группа: Администраторы
Сообщений: 214
Награды: 24
Репутация: 282
Статус: Offline
| Думаю надо привести еще пару примеров, пусть и громоздких, но понятных.
Monolith
|
|
| |
Крот | Дата: Четверг, 06.10.2011, 19:48:17 | Сообщение # 3 |
Охотник
Группа: Лидер группировки
Сообщений: 134
Награды: 26
Репутация: 91
Статус: Offline
| ToNic, Приведи пример кого-нибудь квеста пожалуйста! Попробую повторить. Вопросы: Как будет выглядеть выдача награды за выполненный квест? Её будет выдавать квестер или она будет получена автоматически? Много разнообразия будет возможно в квестах? Надеюсь не только - принеси мне две пукалки и одну бабахалку, убей двух кровососов и принеси мне их щупальца?Добавлено (06.10.2011, 19:48:17) --------------------------------------------- Будет ли какая-нибудь квестовая минюшка как например меню инвентаря?
Миру - Чистое Небо!
Сообщение отредактировал Крот - Четверг, 06.10.2011, 19:46:16 |
|
| |
melkiy | Дата: Пятница, 07.10.2011, 00:28:40 | Сообщение # 4 |
Отмычка
Группа: Проверенные
Сообщений: 8
Награды: 2
Репутация: 52
Статус: Offline
| Ну раз уж тема есть я хотел-бы спросить,допустим я хотел бы сделать квест что-бы после убийства 100 ботов счетчик за убийство прибавлял 2,то код должен выглядить примерно так? kill bots "bots+isbots" if (bots==100){ kill bots "bots+(2*isbots)" }
|
|
| |
StalkerSource | Дата: Пятница, 07.10.2011, 01:49:34 | Сообщение # 5 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Из соображений безопасности, награду выдает лично тот, кто давал квест(квестер). Но в будущем квест при выполнении сможет выдать в качестве награды координаты тайника, которые были указаны квестером. Кроме того, опять же в целях безопасности, скрипты квеста не могут менять переменные сервера и выполнять какие либо команды, лишь менять значения внутренних переменных квеста. То есть квестер создает квест или берет готовый и выдает его игроку, потом игрок выполняет квест и возвращается за наградой. Квестер, проверив что квест выполнен одним из указанных им способов, выдает награду. Quote kill bots "bots+isbots" if (bots==100){ kill bots "bots+(2*isbots)" } Не совсем. Это должно быть записано так. Code kill bots "bots<100?bots+isbots:bots+2*isbots Тут используется тернарный условный оператор. Кстати, на самом деле переменную bots скорее всего использовать будет нельзя. На всякий случай, в целях безопасности и вообще, чтобы лишний раз не усложнять что либо, скорее всего внутренние переменные квеста будут называться qvar0, qvar1 и так далее. Или сходным образом. Менять можно будет только их, но вот использовать можно будет ЛЮБЫЕ переменные сервера, содержащие числовые значения. А так же нечисловые, с помощью спецпеременных-условий.
|
|
| |
melkiy | Дата: Пятница, 07.10.2011, 10:26:54 | Сообщение # 6 |
Отмычка
Группа: Проверенные
Сообщений: 8
Награды: 2
Репутация: 52
Статус: Offline
| всё понял,просто привычнее использовать стандартные if then else.Я по этому так и написал.
|
|
| |
StalkerSource | Дата: Суббота, 08.10.2011, 02:17:30 | Сообщение # 7 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Запомни, в каждом событии строки выполняются в определенной последовательности, которую ты можешь менять. И каждая переменная определяется одной строкой. То есть в течении одного события нельзя менять одну переменную дважды.
|
|
| |
StalkerSource | Дата: Понедельник, 10.10.2011, 13:23:12 | Сообщение # 8 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Команды управления квестами должны уже работать, а вот давать/отказываться/следить за прогрессом пока нельзя, я дописываю эту часть команд. Сам же "движок" работает, но проверить это пока можно только через консоль сервера.
|
|
| |
StalkerSource | Дата: Вторник, 11.10.2011, 21:14:38 | Сообщение # 9 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Комадны дать/отказаться/редактировать/проверить_выполнение работают, но синтаксис изменился, id пользователя не указывается, но нужно смотреть прямо на него.
|
|
| |
StalkerSource | Дата: Четверг, 13.10.2011, 10:47:26 | Сообщение # 10 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Пример квеста на самую длинную серию убийств из АК с при условии, что между двумя убийствами не должно пройти более 1.5 сек. Code quest_create multikill quest_edit multikill description description "Серия убийств из выбранного оружия" quest_edit multikill description var0 "Лучшая серия" quest_edit multikill description var1 "Текущая серия" quest_edit multikill description var3 "Секунд между убийствами не более" quest_edit multikill kill var1 "var4?(timestamp-var2<var3)*(var1+1):var1" quest_edit multikill kill var2 "var4?timestamp:var2" Квест готов, выдадим его игроку и выберем правила, по которым он будет его выполнять. Code quest_give multikill quest_player multikill var3 1.5 quest_player multikill var4 "event_var(weapon) == ak47" say короче, на каждое убийство тебе полторы секунды, убивать нужно с калаша, а перезарядка -твоя проблема, если что, в следующей версии квеста учту, наверное Поднимите руку, кто понял, что написано выше.
|
|
| |
StalkerSource | Дата: Четверг, 13.10.2011, 18:32:39 | Сообщение # 11 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Может, мне на яваскрипте написать эмулятор этой хрени, чтобы можно было прикинуть как оно будет работать?
|
|
| |
andruum | Дата: Суббота, 15.10.2011, 14:34:17 | Сообщение # 12 |
Почетный тестер
Группа: Администраторы
Сообщений: 214
Награды: 24
Репутация: 282
Статус: Offline
| Расскажи про обработчики событий./
Monolith
|
|
| |
StalkerSource | Дата: Суббота, 15.10.2011, 17:37:56 | Сообщение # 13 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Те, что нужно сделать? Ну это просто, вот пример для убийства. Code event player_death { est_uptime timestamp
es_set headshot event_var(headshot) es_set ahealth event_var(es_attackerhealth) es_set aarmor event_var(es_attackerarmor) es_set vdeaths event_var(es_userdeaths) es_set adeaths event_var(es_attackerdeaths) es_set vkills event_var(es_userkills) es_set akills event_var(es_attackerkills) es_set vteam event_var(es_userteam) es_set ateam event_var(es_attackerteam) es_set adead event_var(es_attackerdead)
es est_getguncoord event_var(userid) vx vy vz es est_getguncoord event_var(attacker) ax ay az
es_xset quest_event kill es_set quest_userid event_var(attacker) es_xdoblock quest/test
es_xset quest_event death es_set quest_userid event_var(userid) es_xdoblock quest/test } Сначала засекается момент времени, в который произошло убийство, потом некоторые переменные события (только числовые), потом определяются координаты обоих игроков. В последнюю очередь дважды запускается блок test, проверяющий как отразится это событие на их прогресс по квестам. Возможно, убийца выполнил задание и убил кого ему было нужно, тогда ему сразу же придет сообщение об этом. Возможно, жертве придется начать задание заново, потому что ее убили. Ей тоже об этом сообщат. А может быть, что у обоих не было таких квестов и ничего не произойдет.
|
|
| |
andruum | Дата: Суббота, 15.10.2011, 19:12:48 | Сообщение # 14 |
Почетный тестер
Группа: Администраторы
Сообщений: 214
Награды: 24
Репутация: 282
Статус: Offline
| Все ясно. Таким же образом делать все остальные события? Какие события уже готовы? Какие нужно сделать? Обязательно использовать est_getguncoord? Для координат.
Monolith
|
|
| |
StalkerSource | Дата: Воскресенье, 16.10.2011, 02:08:05 | Сообщение # 15 |
Легенда
Группа: Администраторы
Сообщений: 802
Награды: 55
Репутация: 334
Статус: Offline
| Est_getguncoord используется потому, что возвращает сразу 3 отдельных значения, а не один вектор, а еще потому, что он возращает координаты не левой пятки, а точки, откуда примерно летят пули, где находятся глаза игрока и корректо корректирует высоту, если игрок присел. Совсем не обязательно использовать est_getguncoord, но мне она кажется наиболее удобной для большинства случаев. События нужны все, какие ты считаешь нужными. Очевидно, что события, связанные с бомбой и заложниками для СС не нужны, но могут пригодиться, если мы будем делать новый мод, используя наработки по СС. Кроме того, могут быть добавлены свои события, если попросите, например поднятие артефакта или начало и конец Выброса, попадание в аномалию. Но Выброс и так можно определить по значению специальной переменной, я забыл, какой именно. А на счет артефатов, лучше вообще сделать отдельные квестовые артефакты, которые бы создавались и удалялись самой квестовой системой, не помещаясь в инвентарь, а так же добавить средства для проверки наличия артов в инвентаре и прочего, что предлагал Мелкий. В общем, можно много всего добавлять, дополнительные переменные, дополнительные события, все что посчитаешь нужным. Например, совершенно необходимо добавить переменную isbot в события givedamage и takedamage(не стоит ли их переименовать?), по SteamID это выяснять неудобно. В будущем, когда убедимся что все безопасно, можно будет добавить квестам интерактивные элементы, вроде автоматического создания квестовых ботов, квестовых аномалий, уже упомянутых квестовых артефактов и прочего.
|
|
| |
|