Перейти к содержимому


Фотография

Квест на аномалии в стиле сталкера (как простейший пример квеста)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 сообщений
  • Откуда:Novosibirsk

Отправлено 11 February 2016 - 10:12

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

  - версия для мода Exile (исходные диалоги я делал на своем скудном английском, для наших сделал вариант с руссификацией)

 

В приципе легко переделывается под любой мод или миссию в чистой Arma3, т.к. логика и исполнение простейшее. Может служить примером простого квеста. Как устанавливать я написал в readme.txt на github

Если вы хотите адаптировать к обычной арме, просто уберите ссылки на выдачу награды за квест которые реализованы на базе Exile на свои - логика квеста будет работать и без них (правда уже без награды). 

 

Логика примерно такая: Подходим к квестовому НПС, видим диалог в стиле..

_title  = "<t color='#7FFF00' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЗАДАНИЕ ПОИСК АНОМАЛИЙ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";

_htext   = "Привет Осужденный. Меня зовут Василий Обухов. Это странное место чувак. Но тут тоже нужны деньги. Хочешь подзаработать пару монет, и мое расположение, сделай для меня одну работку. Тут неподалеку есть странное место. Где земля и трава летит вверх. Я дам тебе детектор аномалий, сходи туда и нанеси это место на карту (НАГРАДА 500 POPTABS и 2550 REP.)"; 
hint parseText ( _title + _htext);

и нам выдают предмет в моем случае это 

player addItem "MineDetector"; 

Походим к аномалии, где на триггере срабатывает сам что мы ее нашли первый предмет у нас забирают выдают второй 

в нашем случае 

"Exile_Item_TreasureMap";

Что служит проверкой прохождения этап квеста, т.к. квест итем пытались дюпать, я сделал еще и проверку по перменной.

Собственно некое подобие квеста. 

 

Возвращаемся назад, и если придмет у нас присутствует

_itemToLookFor = "Exile_Item_TreasureMap"; 

получаем награду и переходим к следующему этапу квеста :)

 

Есть и проблемы, например я не разобрался, как сделать, чтобы скрипт учитывал нахождение предмета не только непосредственно в инвентаре, но и например в рюкзаке или в разгрузке. Логические варианты типа в "инвентаре и в разгрузке", почему-то не срабатывают :(

Прикрепленные файлы


Сообщение отредактировал vitacite: 11 February 2016 - 10:34

  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 11 February 2016 - 18:03

 

Есть и проблемы, например я не разобрался, как сделать, чтобы скрипт учитывал нахождение предмета не только непосредственно в инвентаре, но и например в рюкзаке или в разгрузке. Логические варианты типа в "инвентаре и в разгрузке", почему-то не срабатывают

 

quest2.sqf

private ["_title", "_htext"];
_itemToLookFor = "Exile_Item_TreasureMap";
_itemToLookFor2 = "MineDetector";

_inventoryItems = (uniformItems player) + (vestItems player) + (backpackItems player);

if (_itemToLookFor in _inventoryItems) then {

	_title  = "<t color='#7FFF00' size='1.2' shadow='1' shadowColor='#000000' align='center'>ANOMALY ACTIVITY TASK:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";
	_htext   = "Well, the day today. Where are you bro ? South Aero? .. Basil 's not calm down . Map brought ? Excellent. Here beside another . Learn it and mark on the map . Be careful. Do not come too close to it! "; 
	hint parseText ( _title + _htext);

	player removeItem "Exile_Item_TreasureMap";
	player addItem "MineDetector"; 
	["Success",["Find Meat Grinder for Ivan Demidov"]] call ExileClient_gui_notification_event_addNotification; 
	SET_QUEST2 = TRUE;

} else {

	if  SET_QUEST2 then {

		["Whoops",["You are already being this quest"]] call ExileClient_gui_notification_event_addNotification;

	} else {

		if (_itemToLookFor2 in _inventoryItems) then {
			_title  = "<t color='#7FFF00' size='1.2' shadow='1' shadowColor='#000000' align='center'>ANOMALY ACTIVITY TASK:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";
			_htext   = "Damn. Detector is fail. Well, what are you bro ? Ditching the Japanese unit . Okay. Lucky you today . I have a couple of girls Boris ... heh heh ... I exhaust device . take it  him ."; 
			hint parseText ( _title + _htext);
			["Success",["Find Boris Britva"]] call ExileClient_gui_notification_event_addNotification; 
			player addItem "Exile_Item_Magazine01"; 
			player removeItem "MineDetector";
			
		} else {
			playSound "anm";  
			uisleep 5;
			_htext   = "Please activate quest in Aero.";
			hint parseText ( _title + _htext);
			["Whoops",[_htext]] call ExileClient_gui_notification_event_addNotification;
		};
	};
};

 


  • 0

#3 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 сообщений
  • Откуда:Novosibirsk

Отправлено 11 February 2016 - 20:46

а если задать глобальную переменную

questitems = (uniformItems player) + (vestItems player) + (backpackItems player); 

прокатит?


  • 0

#4 OFFLINE   koriaba

koriaba

    Мл.сержант

  • Пользователи
  • 111 сообщений
  • Откуда:Kemerovo

Отправлено 07 June 2016 - 23:23

Здравствуйте.
Тема еще смотрится? Жаль что февральская, где-то я прогулял...)
Решил попробовать, поставил на   0.9.61 "Plum", диалоги идут, детектор который миноискатель выдается, но не активируется и аномалии никак на перса не реагируют, хотя радиация исправно жизнь отнимает.
 

минутка видео, для понимания моей проблемы.

вот кусок рпт с жалобой на детектор

Скрытый текст

 

а вот сам EQP_anmDetector.sqf

Скрытый текст

 

Помогите плиз кто может, целый день на все это убил, но мозгов не хватает..)

 


  • 0

#5 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 08 June 2016 - 16:40

1:44:35 Error Undefined variable in expression: _units

Не определена локальная переменная _units.


  • 0

#6 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 08 June 2016 - 17:22

Hmm!

 

Видимо мой хороший знакомый выложил не очень корректный вариант)

 

В файле EQP_anmDetector.sqf отсутствует начальное определение переданных в код значений переменных.

 

настройка триггера в файле EQP_zonespawn.sqf

	//TODO:RANDOM ANOMALY TYPE SPAWN.............>>>>>>>>>
	if (_useAnmzone) then {		
		for "_i" from 1 to 15 do {
			_pos = [_spawnCenter,_min,_max,_mindist,_water,800,_shoremode] call BIS_fnc_findSafePos;
			_anomalyType = ["electra","gravi","jarka","meat","fluff"] call BIS_fnc_selectRandom;
			_anomaly = createTrigger ["EmptyDetector", _pos];
			_anomaly setTriggerArea [5, 5, 0, false];
			_anomaly setTriggerActivation ["ANY", "PRESENT", true];
			_anomaly setTriggerStatements ["this", "[thisTrigger, thisList] execVM 'EQP_Anomaly\EQP_anmDetector.sqf'", "false"];
			_anomaly setVariable ["anomalyType", _anomalyType, true];
			
			_anomaly2 = createTrigger ["EmptyDetector", _pos];
			_anomaly2 setTriggerArea [0, 0, 0, false];
			_anomaly2 setTriggerActivation ["ANY", "PRESENT", true];
			_anomaly2 setTriggerStatements ["false", "false", "false"];
			
			_anomaly setVariable ["anomaly2", _anomaly2];
			_anomaly setVariable ["anomalyTriggerClient_remoteExecID", [[_anomaly, _anomaly2], "EQP_Anomaly\EQP_TriggerClient.sqf"] remoteExec ["execVM", -2, true]];
			
			if (_useDebug) then {
				diag_log format["PTM: Anomaly in server created: %1", _anomaly];
				_marker = createMarker [format["%1", _anomaly], _pos];
				_marker setMarkerType "selector_selectedMission";
				_marker setMarkerText _anomalyType;
			};
		};
	};

При активации триггера на на серверной стороне, в вызов скрипта EQP_anmDetector.sqf, в качестве параметров передаётся сам объект триггер и список тел thisList.

Так вот, в вызванном скрипте отсутствует определение этих переданных параметров

params[_anomaly, _units];

С большой долей вероятности не только в этом скрипте.


Сообщение отредактировал SteelRat: 08 June 2016 - 17:27

  • 0

#7 OFFLINE   koriaba

koriaba

    Мл.сержант

  • Пользователи
  • 111 сообщений
  • Откуда:Kemerovo

Отправлено 09 June 2016 - 08:11

Hmm!

 

Видимо мой хороший знакомый выложил не очень корректный вариант)

 

В файле EQP_anmDetector.sqf отсутствует начальное определение переданных в код значений переменных.

 

С большой долей вероятности не только в этом скрипте.

 

Приветствую, SteelRat)

А не подскажете, где взять корректный вариант?), ибо в скриптах я не силен, так, только чуток поковырять могу)

я и поставил его потому как увидел в шапке:

 

/* Attention particle animation and this code is copyrighted , it can be used freely only with the mod Exile. Do not modify! No modifications in their use!
Author animation olke 2014-2015 , script code the SteelRat & olke 2016 */


да, а аномалии никак не реагируют... это же не от детектора зависит?


может как-то можно до olke достучаться?

очень уж охота поюзать данный квест, прямо навязчивая идея)

 

SteelRat

возможно у Вас где-нибудь завалялся этот квест? не кинете мне в P.M.?


Сообщение отредактировал koriaba: 09 June 2016 - 17:40

  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 09 June 2016 - 20:00

 

да, а аномалии никак не реагируют... это же не от детектора зависит?

А им не чем реагировать, я же отписал, нужно определить передаваемые в скрипт EQP_anmDetector.sqf данные.

params[_anomaly, _units];

то есть, привести начало скрипта к такому виду

/* Attention particle animation and this code is copyrighted , it can be used freely only with the mod Exile. Do not modify! No modifications in their use!
Author animation olke 2014-2015 , script code the SteelRat & olke 2016 */

params["_anomaly", "_units"];
private["_detector", "_questItem"];

...

это не сложно.

 

Аномалии должны начать реагировать.

А там, кто его знает, какие ещё косяки). Дело в том, что автор в качестве основы использовал Exile. Что доставило мне достаточно хлопот, ибо реализуя квест нужно было ещё постараться не поломать сам Exile, который и сам безбожно срёт в логи ошибками. Как результат, после очередной непонятки почему сломалось что то я забил, не на квест, а на Exile), ну и получилось что  и на квест). Я не помню на сколько корректно работала последняя реализованная версия.

 

Я попытаюсь достучаться до владельца).


  • 1

#9 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 09 June 2016 - 20:15

 

очень уж охота поюзать данный квест, прямо навязчивая идея)

 

По сути ни чего особенного.

Пойди не знаю куда, и найди Петровича, Петрович посылает, принеси мне это, вот тебе фенечка. Нашёл, принёс Петровичу, получи плюшку, Петрович посылает ... к Робиновичу).

 

По своей сути, реализация больше представляет из себя прототип.

Я было начал реализацию квестовой системы, не зависимой от модификаций, позже переключился на другое, а сейчас я какое то время не занимаюсь Армой, на сколько затянутся каникулы трудно сказать.


Сообщение отредактировал SteelRat: 09 June 2016 - 20:18

  • 0

#10 OFFLINE   koriaba

koriaba

    Мл.сержант

  • Пользователи
  • 111 сообщений
  • Откуда:Kemerovo

Отправлено 09 June 2016 - 20:26

ясно...но спасибо за ответ)

буду пробовать


  • 0

#11 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 сообщений
  • Откуда:Novosibirsk

Отправлено 10 June 2016 - 15:31

Раз тема интересна, буду оживлять. Сейчас есть идея превратить все это в отдельный мод с квестами... (включая модели персонажей и техники). Работаю над этим. 


  • 0

#12 OFFLINE   koriaba

koriaba

    Мл.сержант

  • Пользователи
  • 111 сообщений
  • Откуда:Kemerovo

Отправлено 10 June 2016 - 16:41

Раз тема интересна, буду оживлять. Сейчас есть идея превратить все это в отдельный мод с квестами... (включая модели персонажей и техники). Работаю над этим. 

было бы круто, а то ботов струлять поднадоело)

помнится в Народной Солянке здорово всего Архара напридумывал..


  • 0

#13 OFFLINE   koriaba

koriaba

    Мл.сержант

  • Пользователи
  • 111 сообщений
  • Откуда:Kemerovo

Отправлено 10 June 2016 - 17:14

 

 

очень уж охота поюзать данный квест, прямо навязчивая идея)

 

По сути ни чего особенного.

Пойди не знаю куда, и найди Петровича, Петрович посылает, принеси мне это, вот тебе фенечка. Нашёл, принёс Петровичу, получи плюшку, Петрович посылает ... к Робиновичу).

 

дык все квесты так устроены)), поди туда, не знаю куда, принеси то...и так далее

я не квестер, но очень уж на Эксайле это необычно, заинтриговало, понятно, что "на одну ходку", до выполнения, но интересно.

 

спасибо за params[_anomaly, _units];

вроде задышало), но боты убили, не понял что изучил), играю без админки, потому что играю)

в аномалию Грави пришлось залезть, чтобы изучить, как-то это неправильно вроде... или костюм какой-то надо еще, или чтобы рядом срабатывал квест.

 

с удовольствием продолжу тестить)


  • 0

#14 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 11 June 2016 - 01:53

 

в аномалию Грави пришлось залезть, чтобы изучить, как-то это неправильно вроде...

 

Без мин детектора не стоит соваться в аномалию, мин детектор это деактиватор аномалии. А может косяк где).

 

ЗЫ

https://arma3.ru/for...3-full/?p=66039


Сообщение отредактировал SteelRat: 11 June 2016 - 02:08

  • 0

#15 OFFLINE   koriaba

koriaba

    Мл.сержант

  • Пользователи
  • 111 сообщений
  • Откуда:Kemerovo

Отправлено 14 June 2016 - 21:53

да не, косяков особых нет, за исключением... я бы всю историю переделал, не в скриптах, а саму Историю поиска, поинтересней бы, по-литературней..)

а так все работает, нормально на разок-другой


новичков удивляет)


нигде такого у буржуев не видел на серверах.


  • 0

#16 OFFLINE   vitacite

vitacite

    Ефрейтор

  • Пользователи
  • 98 сообщений
  • Откуда:Novosibirsk

Отправлено 16 June 2016 - 14:37

они поставить не могут ;) поэтому и не видел.


  • 0




Яндекс.Метрика