Doker

Автоудаление техники из торговых зон

39 сообщений в этой теме

Распаковываем файл dayz_server.pbo

 

Создаём файл с названием server_deleteObjInsafezone.sqf с таким содержимым:

_obj = _this select 0;

if (!isServer) exitWith {diag_log "Server_DeleteObjInsafezone.sqf - ERROR: NOT SERVER?"};

//\\\\\\\\\\\\\\\\\\\\ Setup Area ////////////////////\\

//vehicle types to Check for
_delVeh = ["Air","Landvehicle","Ship","Tank"];

//Action to take when vehicle is detected in a [VEHICLE CLEANUP ZONE]
//0 Delete vehicles ingame but keep in database. NOTE: This will stack vehicles in database if not cleaned propper
//1 Tp vehicles outside [VEHICLE CLEANUP ZONE] ("radius" + 50 meter to 4x "radius" from VEHICLE CLEANUP ZONE pos eg: if radius is 100 vehicles are moved 150-400 meter away)
//2 Tp vehicles to a position within 125m of _safespot (remember to set a position below)
//3 will delete vehicles completly from database
_Action = 1;

//if _Action = 2 then enter the position you desire here (default is by grozovoy pass around 022010)
_safespot = [2283.19,14255,0];
//how large radius to spread them in this area in meters (default 125m)
_radius = 125;

//damaged above this amoun, vehicle is deleted (set to 1 to only delete completely destroyed vehicles)
_dam = 0.90;

//if true will delete vehicles matching array below by default
_delbikmot = true;
//if above is true will delete these by default
_defdelar = ["Bicycle","Motorcycle","CSJ_GyroC","CSJ_GyroCover","CSJ_GyroP"];//,"ATV_Base_EP1"

//set to true, to unlock vehicles by default when TP'ed
_unlock = true;

//log text, this is what you want to look for in the logs, if you need to know something about a moved vehicle
_txt = "[VEHICLE CLEANUP ZONE]";

//Update vehicles to the hive, and make sure they are not moved each restart?
_updateHIVE = true;

//VEHICLE CLEANUP ZONE's/areas switch choosing the map name for cleanup location purposes
if(isNil "HALV_VEHICLE_CLEANUPZONES")then{
	diag_log format["%1: selecting world to cleanup ...",_txt];
	_WorldName = toLower format ["%1", worldName];
	switch (_WorldName)do {
//NAPF
		case "napf":{
//			diag_log format["%2: Cleanup zones for napf selected! (check: %1)",_WorldName,_txt]; //logging if right worldname was selected, if uncommented
			HALV_VEHICLE_CLEANUPZONES = [
			//position					//radius	//cityname/text
			[[8246.3184,15485.867,0],	125,		"Trader City Lenzburg"],
			[[15506.952,13229.368,0],	125,		"Trader city Emmen"],
			[[12399.751,5074.5273,0],	125,		"Trader City Schratten"],
			[[10398.626,8279.4619,0],	125,		"Bandit Vendor"],
			[[5149.9814,4864.1191,0],	125,		"Hero Vendor"],
			[[2122.7954,7807.9878,0],	100,		"West Wholesaler"],
			[[5379.0342,16103.187,0],	100,		"North Wholesaler"],
			[[6772.8877,16983.27,0],	100,		"Nordic Boats"],
			[[16839.973,5264.0566,0],	100,		"Pauls Boats"],
			[[15128.379,16421.879,0],	100,		"AWOLs Airfield"]
			];
		};
//chernarus
		case "chernarus":{
//			diag_log format["%2: Cleanup zones for chernarus selected! (check: %1)",_WorldName,_txt]; //logging if right worldname was selected, if uncommented
			HALV_VEHICLE_CLEANUPZONES = [
			//position					radius		cityname/text
			[[6325.6772,7807.7412,0],	125,		"Trader City Stary"],
			[[4063.4226,11664.19,0],	125,		"Trader City Bash"],
			[[11447.472,11364.504,0],	125,		"Trader City Klen"],
			[[1606.6443,7803.5156,0],	125,		"Bandit Camp"],
			[[12944.227,12766.889,0],	125,		"Hero Camp"],
			[[13441.16,5429.3013,0],	100,		"Wholesaler East"],
			[[4510.7773,10774.518,0],	100,		"Aircraft Dealer"],
			[[7989.3354,2900.9946,0],	100,		"Boat Dealer South"],
			[[13532.614,6355.9497,0],	100,		"Boat Dealer East"],
			[[4361.4937,2259.9526,0],	100,		"Wholesaler South"]
			];
		};
//tavi
		case "tavi":{
//			diag_log format["%2: Cleanup zones for tavi selected! (check: %1)",_WorldName,_txt]; //logging if right worldname was selected, if uncommented
			HALV_VEHICLE_CLEANUPZONES = [
			//position					//radius	//cityname/text
			[[11698.81,15210.121,0],	75,			"Trader City Lyepestok"],
			[[15309.663,9278.4912,0],	75,			"Trader City Sabina"],
			[[5538.7354,8762.2695,0],	75,			"Trader City Bilgrad"],
			[[7376.6084,4296.5879,0],	75,			"Trader City Branibor"],
			[[10948.426,654.90265,0],	75,			"Bandit Vendor"],
			[[15587.822,16394.049,0],	75,			"Hero Vendor"],
			[[16555.732,10159.68,0],	75,			"Aircraft Dealer"],
			[[6815.0776,8534.1504,0],	75,			"Aircraft Dealer 2"],
			[[4066.3528,7265.0024,0],	75,			"Misc. Vendor"],
			[[17497.631,7159.0879,0],	75,			"Misc. Vendor 2"],
			[[17332.115,12930.239,0],	75,			"Boat Dealer"],
			[[10570.494,16772.477,0],	75,			"Boat Dealer 2"],
			[[10698.463,5983.665,0],	75,			"Boat Dealer 3"],
			[[5419.2437,9503.5479,0],	75,			"Boat Dealer 4"],
			[[13342.758,8611.9932,0],	75,			"Wholesaler"],
			[[9859.4209,7471.5684,0],	75,			"Wholesaler"] // <-- no comma for last entry
			];
		};
/*
//myworldname
		case "myworldnameinlowercase":{
//			diag_log format["%2: Cleanup zones for myworldnameinlowercase selected! (check: %1)",_WorldName,_txt]; //logging if right worldname was selected, if uncommented
			HALV_VEHICLE_CLEANUPZONES = [
			//position					//radius	//cityname/text
			[[7839.60,8414.73,381.33],	150,		"my custom zone marker"],
			[[7839.60,8414.73,381.33],	75,			"my custom location"] // <-- no comma for last entry
			];
		};
*/
//default
		default{
			diag_log format["%2: Cleanup zones for %1 not availible ...",_WorldName,_txt]; //logging if right worldname was selected, if uncommented
			HALV_VEHICLE_CLEANUPZONES = [
			//position	//radius	//cityname/text
			[[0,0,0],	1,			"DEBUG"]
			];
		};
	};
};
//\\\\\\\\\\\\\\\\\\\\  End Setup Area ////////////////////\\

/////////////// dont touch anything below this line unless you know what you are doing \\\\\\\\\\\\\\\

_possiblematch = false;
{if(_obj isKindOf _x)then{_possiblematch=true;};}forEach _delVeh;
if(_possiblematch)then{
	{
	_Spos = _x select 0;
	_Rad = _x select 1;
	_name = _x select 2;
	_radats = _Rad+50;
	_radx4 = _Rad+_Rad+_Rad+_Rad;
		if(_obj distance _Spos < _Rad)then{
			_defdel		= false;
			_typeOf		= typeOf _obj;
			_pos		= getpos _obj;
			_mags		= getmagazinecargo _obj;
			_weaps		= getweaponcargo _obj;
			_packs		= getbackpackcargo _obj;
			_objID		= _obj getVariable["ObjectID","0"];
			_objUID		= _obj getVariable["ObjectUID","0"];
			_objname	= (gettext (configFile >> 'CfgVehicles' >> _typeOf >> 'displayName'));
			diag_log format["%1: %2 (%3) by %4 @%5 %6 [ID:%7,UID:%8] Cargo: [%9,%10,%11]",_txt,_typeOf,_objname,_name,mapgridposition _pos,_pos,_objID,_objUID,_weaps,_mags,_packs];
			if(_delbikmot)then{{if(_obj isKindOf _x)then{_defdel = true};}forEach _defdelar;};
			if(_defdel)then{_Action=3;diag_log format["%2: %1 is Model to delete by default!",_typeOf,_txt];};
			if(getDammage _obj > _dam)then{_Action=3;diag_log format["%2: %1 too damaged",_typeOf,_txt];};
			if(_unlock and !_defdel and (locked _obj))then{_obj setVehicleLock "UNLOCKED";_obj setVariable ["R3F_LOG_disabled",false,true];diag_log format["%2: %1 Un-Locked",_typeOf,_txt];};
			switch(_Action)do{
				case 0:{deleteVehicle _obj;diag_log format["%2: %1 Deleted, but remains in DB (Dont forget to clean this up)",_typeOf,_txt];};
				case 1:{
					_newPos = [_Spos, _radats, _radx4, 10, 0, 2000, 0] call BIS_fnc_findSafePos;
					_obj setpos _newPos;
					//update to HIVE?
					if(_updateHIVE)then{
					private["_position","_worldspace","_fuel","_key"];
						_position = getPosATL _obj;
						_worldspace = [
							round(direction _obj),
							_position
						]; 
						_fuel = fuel _obj;
						_key = format["CHILD:305:%1:%2:%3:",_objID,_worldspace,_fuel];
						diag_log ("HIVE: WRITE: "+ str(_key));
						_key call server_hiveWrite;
					};
					diag_log format["%6: %5 TP from %1 %2 to %3 %4",_pos,mapgridposition _pos,_newPos,mapgridposition _newPos,_typeOf,_txt];
				};
				case 2:{
					_newPos = [_safespot, 0, _radius, 10, 0, 2000, 0] call BIS_fnc_findSafePos;
					_obj setpos _newPos;
					//update to HIVE?
					if(_updateHIVE)then{
					private["_position","_worldspace","_fuel","_key"];
						_position = getPosATL _obj;
						_worldspace = [
							round(direction _obj),
							_position
						];
						_fuel = fuel _obj;
						_key = format["CHILD:305:%1:%2:%3:",_objID,_worldspace,_fuel];
						diag_log ("HIVE: WRITE: "+ str(_key));
						_key call server_hiveWrite;
					};
					diag_log format["%6: %5 TP from %1 %2 to %3 %4",_pos,mapgridposition _pos,_newPos,mapgridposition _newPos,_typeOf,_txt];
				};
				default{_msg = format["%2: %1",_typeOf,_txt];deleteVehicle _obj;[_objID,_objUID,_msg] call server_deleteObj;};
			};
		};
	}forEach HALV_VEHICLE_CLEANUPZONES;
};

и кидаем его по пути: dayz_server >>>> compile

 

 

Далее открываем файл server_monitor.sqf и ищем такие строки:

// total each vehicle
                    serverVehicleCounter set [count serverVehicleCounter,_type];
                };

 

Нашли?

Молодцы!

Если нет то с вами что то не так!

 

Идём дальше: после этих строк добавляем эту строчку:

[_object] execVM "\z\addons\dayz_server\compile\Server_DeleteObjInsafezone.sqf";

 

Что бы получилось вот так:

  serverVehicleCounter set [count serverVehicleCounter,_type];
                };
                [_object] execVM "\z\addons\dayz_server\compile\Server_DeleteObjInsafezone.sqf";

 

Запаковываем наш dayz_server.pbo и вуаля! Техника сама будет удалятся! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


Время на удаление техники можно выставить? И сколько сейчас стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Время на удаление техники можно выставить? И сколько сейчас стоит?

после каждого рестарта удаляется

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

кстати а какая техника будет удаляться? если только велы и гиры, то как сделать чтоб удалялась вся?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Техника не удаляется из базы данных,а смещается в разные стороны от сейф зон и становится открытой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Техника не удаляется из базы данных,а смещается в разные стороны от сейф зон и становится открытой.

 

//Action to take when vehicle is detected in a [VEHICLE CLEANUP ZONE] //0 Delete vehicles ingame but keep in database. NOTE: This will stack vehicles in database if not cleaned propper //1 Tp vehicles outside [VEHICLE CLEANUP ZONE] ("radius" + 50 meter to 4x "radius" from VEHICLE CLEANUP ZONE pos eg: if radius is 100 vehicles are moved 150-400 meter away) //2 Tp vehicles to a position within 125m of _safespot (remember to set a position below) //3 will delete vehicles completly from database _Action = 1;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не пойму почему поставил одни координаты зоны куда выкидывать технику, а кидает ее в другое место...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не пойму почему поставил одни координаты зоны куда выкидывать технику, а кидает ее в другое место...

Скорее всего неверно написали координаты или криво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скорее всего неверно написали координаты или криво.

координаты списал из дебагмонитора ([14600.4, 286.95, 107.84]), такое впечатление что кинул посредине карты

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

координаты списал из дебагмонитора ([14600.4, 286.95, 107.84]), такое впечатление что кинул посредине карты

Высота 107? У вас техника в небе чтоль?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Высота 107? У вас техника в небе чтоль?

) почти, платформа в воздухе, по жпс высота 16

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

) почти, платформа в воздухе, по жпс высота 16

Ну судя по вашим координатам получается как. По х - 14600.4. По y - 286.95. По z - 107.

 

Собственно точка переноса техники у вас в если я правильно понимаю в правом верхнем углу.

 

Скорее всего Инфистар врет. Ну бред какой-то. 107 высота.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну судя по вашим координатам получается как. По х - 14600.4. По y - 286.95. По z - 107.

 

Собственно точка переноса техники у вас в если я правильно понимаю в правом верхнем углу.

 

Скорее всего Инфистар врет. Ну бред какой-то. 107 высота.

нет, карта напф, точка. снизу, справа, над морем

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: Loker
      При покупке/продаже техники валюту за технику снимает/начисляет, но сама техника не появляется. 
      В логе возникает следующая ошибка: 
      15:04:28 "Server_PublishVehicle2 error: CLIENT AUTH KEY INCORRECT OR UNRECOGNIZED. PV ARRAY: [[323,[4037.27,11673.5,0.00289917]],"Ural_TK_CIV_EP1",false,"ItemKeyRed1798",B 1-1-B:1 (Player) REMOTE,""]" Как я понял новая проверка в версии мода 1.0.6.2 не может считать какой-то ключ пользователя. Может кто сталкивался с такой ошибкой. Буду рад любому совету. Заранее спасибо.
    • Автор: Akie
      Проблема вот в чем, просто выкидывает из техники через короткое время после залезания в нее и не важно на ходу или нет, на каком месте в ней ты сидишь, просто пофигу, выкидывает и всё, в логах и на сервере, и на клиенте чисто подскажите куда копать пожалуйста
    • Автор: Jdinovich
      Добрый день,кто подскажет как сделать так,чтобы в виртуальном гараже каждый рестарт спавнилась техника,но продавать ее нельзя было бы. Будет выглядеть на сервере как"покупка техники на месяц. Респавн каждый рестарт,даже если техника не уничтожена" надеюсь понятно объяснил?))
    • Автор: docent
      куплю скрипт на пониженную передачу для гусеничной техники ARMA 3  EXILE с сообщениями exiletost
    • Автор: CPUblackman
      Всем доброго времени суток, назрел вопрос который сам решить не в состоянии. В общем понадобился скрипт на спавн техники с записью в БД, решил переделать под это дело скрипт из инфика или ваи, ни то ни другое результатов не дало, техника спавнится, в БД её нет. Я уверен что сотворил сказочную ересь, но где именно в упор не вижу. Скрипт исполняется с сервера, так что в чём проблема не понимаю и прошу помощи.


       
      _veh     = "M1A1" createVehicle position player;
      _veh setVariable ["ObjectID","1",true];
      _keyid = ceil(random(12500));
      _veh setVariable ["CharacterID",str(_keyid),true];
            _class = typeOf _veh;
                  _characterID     = _veh getVariable ["CharacterID", "0"];
                  _worldspace        = [getDir _veh, getPosATL _veh];
                  _hitpoints         = _veh call vehicle_getHitpoints;
                  _damage         = damage _veh;
                  _array             = [];
                  {
                      _hit = [_veh,_x] call object_getHit;
                      _selection = getText (configFile >> "CfgVehicles" >> (typeOf _veh) >> "HitPoints" >> _x >> "name");
                      if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
                  } count _hitpoints;
                  _inventory     = [
                      getWeaponCargo _veh,
                      getMagazineCargo _veh,
                      getBackpackCargo _veh
                  ];
                  _fuel     = fuel _veh;
                  _uid     = _worldspace call dayz_objectUID2;
                  
                  _key     = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance,_class,_damage,_characterID,_worldspace,_inventory,_array,_fuel,_uid];
                  _key call server_hiveWrite;
                  
                  [_veh,_uid,_fuel,_damage,_array,_characterID,_class] spawn {
                  
      private ["_veh","_uid","_fuel","_damage","_array","_characterID","_done","_retry","_key","_result","_outcome","_oid","_class","_res"];
                      _veh         = _this select 0;
                      _uid             = _this select 1;
                      _fuel             = _this select 2;
                      _damage         = _this select 3;
                      _array             = _this select 4;
                      _characterID    = _this select 5;
                      _class             = _this select 6;
                      _done             = false;
                      //ЧЁТО СТРАННОЕ
      while {!_done} do {
      _key         = format["CHILD:388:%1:",_uid];
                              _result     = _key call server_hiveReadWrite;
                              _outcome     = _result select 0;
                              waitUntil {!isNil "_outcome"};
                              if(_outcome == "PASS") then {
                                  _oid = _result select 1;
                                  _veh setVariable ["ObjectID", _oid, true];
                                  _done  = true;
                              } else {
                                  _done = false;
                              };
                          };
                          sleep 0.2;
                          _veh setVariable ["lastUpdate",time];
                      };