STALKER:SOURCE
Другой движок, другая Зона.
 
Воскресенье, 28.04.2024, 22:22:59

Приветствую Вас Турист | RSS
Главная | Создание квестов: Начнем? - Форум | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » Ресурсы » Квесты » Создание квестов: Начнем?
Создание квестов: Начнем?
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 это выяснять неудобно. В будущем, когда убедимся что все безопасно, можно будет добавить квестам интерактивные элементы, вроде автоматического создания квестовых ботов, квестовых аномалий, уже упомянутых квестовых артефактов и прочего.


 
Форум » Ресурсы » Квесты » Создание квестов: Начнем?
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:


Copyright ST:S team © 2024
Хостинг от uCoz