Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
GhostDZ

[Гайд] Plot4Life + SnapPro + BuiltVectors все в одном

Рекомендованные сообщения

Всем хорошим людям добрый день.

 

Предисловие:

Очень давно я удалил этот гайд с этого сайта. ВОт решил восстановить.

Скрипты P4L, SnapPro и BuiltVectors обновились, теперь собрать их вместе сложнее чем раньше но все еще возможно.

 

Это более старая но проверенная временем версия которая содержит солянку из Plot4Life, SnapPro, BuiltVectors и Admin Build.

 

1. Качаем архив прикрепленный к теме.

2. Папку custom забрасываем в корень миссии

3. Открываем файл init.sqf и после:

call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; //Compile regular functions

 

 

вставьте:

call compile preprocessFileLineNumbers "custom\compiles1.sqf";  

ну или если вы прошаренный пользователь, можете перенести все значения из моего файла в свой кастомный compiles.

Прошу обратить внимание на тот момент что если у вас в миссии уже есть такие файлы то их нужно совместить, тут вам поможет плагин compare для Notepad++.

4. Все в том же init.sqf ниже:

DZE_BuildOnRoads

Вставьте:

DZE_noRotate = []; //То что нельзя вращать. Ex: DZE_noRotate = ["VaultStorageLocked"]
DZE_curPitch = 45; //Стартовый угол наклона. Доступны только эти цифры1, 5, 45, 90.
WG_adminBuild = ["","","",""]; //Админские SteamID

5. Идем в server_functions.sqf и находим там:

dayz_objectUID2 = {
тут весь код функции
};

заменяем всю функцию на:

dayz_objectUID2 = {
	private["_position","_dir","_key"];
	if((count _this) == 2) then{
		_dir = _this select 0;
		_key = "";
		_position = _this select 1;
		{
			_x = _x * 10;
			if ( _x < 0 ) then { _x = _x * -10 };
			_key = _key + str(round(_x));
		} count _position;
		_key = _key + str(round(_dir));
	}else{
		if((count _this) == 3) then{
					if(typename (_this select 2) == "ARRAY")then{
							_vector = _this select 2;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
										_key = "";
										_position = _this select 1;
										{
											_x = _x * 10;
											if ( _x < 0 ) then { _x = _x * -10 };
											_key = _key + str(round(_x));
										} count _position;
										
										_vecCnt = 0;
										{
											_set = _x;
											{
												_vecCnt = _vecCnt + (round (_x * 100))
												
											} foreach _set;
											
										} foreach _vector;
										if(_vecCnt < 0)then{
											_vecCnt = ((_vecCnt * -1) * 3);
										};
										_key = _key + str(_vecCnt);	
								}else{
									_dir = _this select 0;
									_key = "";
									_position = _this select 1;
									{
										_x = _x * 10;
										if ( _x < 0 ) then { _x = _x * -10 };
										_key = _key + str(round(_x));
									} count _position;
									_key = _key + str(round(_dir));
								};
							}else{
								_dir = _this select 0;
								_key = "";
								_position = _this select 1;
								{
									_x = _x * 10;
									if ( _x < 0 ) then { _x = _x * -10 };
									_key = _key + str(round(_x));
								} count _position;
								_key = _key + str(round(_dir));
							};
						
					}else{
						_dir = _this select 0;
						_key = "";
						_position = _this select 1;
						{
							_x = _x * 10;
							if ( _x < 0 ) then { _x = _x * -10 };
							_key = _key + str(round(_x));
						} count _position;
						_key = _key + str(round(_dir));
					};
		}else{
			if((count _this) == 4) then{
					if(typename (_this select 3) == "ARRAY")then{
						_vector = _this select 3;
						if(count _vector == 2)then{
							if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
										_key = "";
										_position = _this select 1;
										{
											_x = _x * 10;
											if ( _x < 0 ) then { _x = _x * -10 };
											_key = _key + str(round(_x));
										} count _position;
										
										_vecCnt = 0;
										{
											_set = _x;
											{
												_vecCnt = _vecCnt + (round (_x * 100))
												
											} foreach _set;
											
										} foreach _vector;
										if(_vecCnt < 0)then{
											_vecCnt = ((_vecCnt * -1) * 3);
										};
										_key = _key + str(_vecCnt);	
							}else{
								_dir = _this select 0;
								_key = "";
								_position = _this select 1;
								{
									_x = _x * 10;
									if ( _x < 0 ) then { _x = _x * -10 };
									_key = _key + str(round(_x));
								} count _position;
								_key = _key + str(round(_dir));
							};
						}else{
							_dir = _this select 0;
							_key = "";
							_position = _this select 1;
							{
								_x = _x * 10;
								if ( _x < 0 ) then { _x = _x * -10 };
								_key = _key + str(round(_x));
							} count _position;
							_key = _key + str(round(_dir));
						};
					}else{
						if(typename (_this select 2) == "ARRAY")then{
							_vector = _this select 2;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
											_key = "";
											_position = _this select 1;
											{
												_x = _x * 10;
												if ( _x < 0 ) then { _x = _x * -10 };
												_key = _key + str(round(_x));
											} count _position;
											
											_vecCnt = 0;
											{
												_set = _x;
												{
													_vecCnt = _vecCnt + (round (_x * 100))
													
												} foreach _set;
												
											} foreach _vector;
											if(_vecCnt < 0)then{
												_vecCnt = ((_vecCnt * -1) * 3);
											};
											_key = _key + str(_vecCnt);	
								}else{
									_dir = _this select 0;
									_key = "";
									_position = _this select 1;
									{
										_x = _x * 10;
										if ( _x < 0 ) then { _x = _x * -10 };
										_key = _key + str(round(_x));
									} count _position;
									_key = _key + str(round(_dir));
								};
							}else{
								_dir = _this select 0;
								_key = "";
								_position = _this select 1;
								{
									_x = _x * 10;
									if ( _x < 0 ) then { _x = _x * -10 };
									_key = _key + str(round(_x));
								} count _position;
								_key = _key + str(round(_dir));
							};
						}else{
							_dir = _this select 0;
							_key = "";
							_position = _this select 1;
							{
								_x = _x * 10;
								if ( _x < 0 ) then { _x = _x * -10 };
								_key = _key + str(round(_x));
							} count _position;
							_key = _key + str(round(_dir));
						};
					};
			}else{
				_dir = _this select 0;
				_key = "";
				_position = _this select 1;
				{
					_x = _x * 10;
					if ( _x < 0 ) then { _x = _x * -10 };
					_key = _key + str(round(_x));
				} count _position;
				_key = _key + str(round(_dir));
			};
		};
		
	};
	_key
};

6. Идем в server_monitor.sqf и находим там:

// # NOW SPAWN OBJECTS #

тут много кода

// # END SPAWN OBJECTS # 

все что между этими строками заменяем на:

	// # NOW SPAWN OBJECTS #
	_totalvehicles = 0;
	{
		_idKey = 		_x select 1;
		_type =			_x select 2;
		_ownerID = 		_x select 3;

		_worldspace = 	_x select 4;
		_intentory =	_x select 5;
		_hitPoints =	_x select 6;
		_fuel =			_x select 7;
		_damage = 		_x select 8;
		
		_dir = 0;

		
		_pos = [0,0,0];
		_wsDone = false;
		if (count _worldspace >= 2) then
		{
			if ((typeName (_worldspace select 0)) == "STRING") then {
				_worldspace set [0, call compile (_worldspace select 0)];
				_worldspace set [1, call compile (_worldspace select 1)];
			};
			_dir = _worldspace select 0;
			if (count (_worldspace select 1) == 3) then {
				_pos = _worldspace select 1;
				_wsDone = true;
			}
		};	
		
		if (!_wsDone) then {
			if (count _worldspace >= 1) then { _dir = _worldspace select 0; };
			_pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos;
			if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; };
			diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
		};
		
		_vector = [[0,0,0],[0,0,0]];
		_vecExists = false;
		_ownerPUID = "0";
		if (count _worldspace >= 3) then{
			if(count _worldspace == 3) then{
					if(typename (_worldspace select 2) == "STRING")then{
						_ownerPUID = _worldspace select 2;
					}else{
						 if(typename (_worldspace select 2) == "ARRAY")then{
							_vector = _worldspace select 2;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
									_vecExists = true;
								};
							};
						};					
					};
					
			}else{
				//Was not 3 elements, so check if 4 or more
				if(count _worldspace == 4) then{
					if(typename (_worldspace select 3) == "STRING")then{
						_ownerPUID = _worldspace select 3;
					}else{
						if(typename (_worldspace select 2) == "STRING")then{
							_ownerPUID = _worldspace select 2;
						};
					};
			
			
					if(typename (_worldspace select 2) == "ARRAY")then{
						_vector = _worldspace select 2;
						if(count _vector == 2)then{
							if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
								_vecExists = true;
							};
						};
					}else{
						if(typename (_worldspace select 3) == "ARRAY")then{
							_vector = _worldspace select 3;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
									_vecExists = true;
								};
							};
						};
					};
					
				}else{
					//More than 3 or 4 elements found
					//Might add a search for the vector, ownerPUID will equal 0
				};
			};
		};
		   	   
		// diag_log format["Server_monitor: [ObjectID = %1]  [ClassID = %2] [_ownerPUID = %3]", _idKey, _type, _ownerPUID];
		
		if (_damage < 1) then {
			//diag_log format["OBJ: %1 - %2", _idKey,_type];
			
			//Create it
			_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
			_object setVariable ["lastUpdate",time];
			_object setVariable ["ObjectID", _idKey, true];

			_object setVariable ["OwnerPUID", _ownerPUID, true];
			_lockable = 0;
			if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
				_lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable");
			};

			// fix for leading zero issues on safe codes after restart
			if (_lockable == 4) then {
				_codeCount = (count (toArray _ownerID));
				if(_codeCount == 3) then {
					_ownerID = format["0%1", _ownerID];
				};
				if(_codeCount == 2) then {
					_ownerID = format["00%1", _ownerID];
				};
				if(_codeCount == 1) then {
					_ownerID = format["000%1", _ownerID];
				};
			};

			if (_lockable == 3) then {
				_codeCount = (count (toArray _ownerID));
				if(_codeCount == 2) then {
					_ownerID = format["0%1", _ownerID];
				};
				if(_codeCount == 1) then {
					_ownerID = format["00%1", _ownerID];
				};
			};

			_object setVariable ["CharacterID", _ownerID, true];
			
			clearWeaponCargoGlobal  _object;
			clearMagazineCargoGlobal  _object;
			// _object setVehicleAmmo DZE_vehicleAmmo;
			
			_object setdir _dir;
			
			if(_vecExists)then{
				_object setVectorDirAndUp _vector;
			};
			
			_object setposATL _pos;
			_object setDamage _damage;
			
			if ((typeOf _object) in dayz_allowedObjects) then {
				if (DZE_GodModeBase) then {
					_object addEventHandler ["HandleDamage", {false}];
				} else {
					_object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}];
				};
				// Test disabling simulation server side on buildables only.
				_object enableSimulation false;
				// used for inplace upgrades && lock/unlock of safe
				_object setVariable ["OEMPos", _pos, true];
				
			};

			if (count _intentory > 0) then {
			
			    /*ZSC		
				if( count (_intentory) > 3)then{
				_object setVariable ["bankMoney", _intentory select 3, true];
				}else{
				_object setVariable ["bankMoney", 0, true];
				};				
				ZSC*/

				if (_type in DZE_LockedStorage) then {
					// Fill variables with loot
					_object setVariable ["WeaponCargo", (_intentory select 0),true];
					_object setVariable ["MagazineCargo", (_intentory select 1),true];
					_object setVariable ["BackpackCargo", (_intentory select 2),true];
				} else {

					//Add weapons
					_objWpnTypes = (_intentory select 0) select 0;
					_objWpnQty = (_intentory select 0) select 1;
					_countr = 0;					
					{
						if(_x in (DZE_REPLACE_WEAPONS select 0)) then {
							_x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);
						};
						_isOK = 	isClass(configFile >> "CfgWeapons" >> _x);
						if (_isOK) then {
							_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes; 
				
					//Add Magazines
					_objWpnTypes = (_intentory select 1) select 0;
					_objWpnQty = (_intentory select 1) select 1;
					_countr = 0;
					{
						if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow
						if (_x == "ItemTent") then { _x = "ItemTentOld" };
						_isOK = 	isClass(configFile >> "CfgMagazines" >> _x);
						if (_isOK) then {
							_object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes;

					//Add Backpacks
					_objWpnTypes = (_intentory select 2) select 0;
					_objWpnQty = (_intentory select 2) select 1;
					_countr = 0;
					{
						_isOK = 	isClass(configFile >> "CfgVehicles" >> _x);
						if (_isOK) then {
							_object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes;
				};
			};	
			
			if (_object isKindOf "AllVehicles") then {
				{
					_selection = _x select 0;
					_dam = _x select 1;
					if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
					[_object,_selection,_dam] call object_setFixServer;
				} count _hitpoints;
				
				_object setFuel _fuel;
				if (!((typeOf _object) in dayz_allowedObjects)) then {
					
					//_object setvelocity [0,0,1];
					_object call fnc_veh_ResetEH;		
					
					if(_ownerID != "0" && !(_object isKindOf "Bicycle")) then {
						_object setvehiclelock "locked";
					};
					
					_totalvehicles = _totalvehicles + 1;

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

			//Monitor the object
			PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
		};
	} count (_BuildingQueue + _objectQueue);
	// # END SPAWN OBJECTS # 

7. Идем в description.ext и в самый низ:

#include "custom\snap_pro\snappoints.hpp"

 

Все установка и настройка закончены, можно ставить ЭТО

BuildVectorsAdminP4lV3.zip

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


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





А какая версия Plot4Life?

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


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

А какая версия Plot4Life?

история умалчивает, но точно не 2.35 и выше

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


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

Ругается на не объявленную переменную _OwnerPUID, возможно у некоторых объявлена переменная _OwnerID, вместо _OwnerPUID

Изменено пользователем SpiritWolf (история изменений)

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


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

Кстати, плот почему-то после рестарта пропадает и в инвентаре появляется, как будто его откатывает назад. Как пофиксить?

Изменено пользователем SpiritWolf (история изменений)

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


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

Плот и хранилища (локбоксы и сейфы) не записываются в БД.

В консоли это показывается. CHILD 308 cannot execute

Изменено пользователем SpiritWolf (история изменений)

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


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

Плот и хранилища (локбоксы и сейфы) не записываются в БД.

В консоли это показывается. CHILD 308 cannot execute

где-то у вас косяк в установке.

логи давайте, может поможем

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


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

где-то у вас косяк в установке.

логи давайте, может поможем

Вопрос решен. Эти системки конфликтовали с ультимовкими. Пришлось вырезать.

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


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

Всем хорошим людям добрый день.

 

Предисловие:

Очень давно я удалил этот гайд с этого сайта. ВОт решил восстановить.

Скрипты P4L, SnapPro и BuiltVectors обновились, теперь собрать их вместе сложнее чем раньше но все еще возможно.

 

Это более старая но проверенная временем версия которая содержит солянку из Plot4Life, SnapPro, BuiltVectors и Admin Build.

 

1. Качаем архив прикрепленный к теме.

2. Папку custom забрасываем в корень миссии

3. Открываем файл init.sqf и после:

call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; //Compile regular functions

 

 

вставьте:

call compile preprocessFileLineNumbers "custom\compiles1.sqf";  

ну или если вы прошаренный пользователь, можете перенести все значения из моего файла в свой кастомный compiles.

Прошу обратить внимание на тот момент что если у вас в миссии уже есть такие файлы то их нужно совместить, тут вам поможет плагин compare для Notepad++.

4. Все в том же init.sqf ниже:

DZE_BuildOnRoads

Вставьте:

DZE_noRotate = []; //То что нельзя вращать. Ex: DZE_noRotate = ["VaultStorageLocked"]
DZE_curPitch = 45; //Стартовый угол наклона. Доступны только эти цифры1, 5, 45, 90.
WG_adminBuild = ["","","",""]; //Админские SteamID

5. Идем в server_functions.sqf и находим там:

dayz_objectUID2 = {
тут весь код функции
};

заменяем всю функцию на:

dayz_objectUID2 = {
	private["_position","_dir","_key"];
	if((count _this) == 2) then{
		_dir = _this select 0;
		_key = "";
		_position = _this select 1;
		{
			_x = _x * 10;
			if ( _x < 0 ) then { _x = _x * -10 };
			_key = _key + str(round(_x));
		} count _position;
		_key = _key + str(round(_dir));
	}else{
		if((count _this) == 3) then{
					if(typename (_this select 2) == "ARRAY")then{
							_vector = _this select 2;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
										_key = "";
										_position = _this select 1;
										{
											_x = _x * 10;
											if ( _x < 0 ) then { _x = _x * -10 };
											_key = _key + str(round(_x));
										} count _position;
										
										_vecCnt = 0;
										{
											_set = _x;
											{
												_vecCnt = _vecCnt + (round (_x * 100))
												
											} foreach _set;
											
										} foreach _vector;
										if(_vecCnt < 0)then{
											_vecCnt = ((_vecCnt * -1) * 3);
										};
										_key = _key + str(_vecCnt);	
								}else{
									_dir = _this select 0;
									_key = "";
									_position = _this select 1;
									{
										_x = _x * 10;
										if ( _x < 0 ) then { _x = _x * -10 };
										_key = _key + str(round(_x));
									} count _position;
									_key = _key + str(round(_dir));
								};
							}else{
								_dir = _this select 0;
								_key = "";
								_position = _this select 1;
								{
									_x = _x * 10;
									if ( _x < 0 ) then { _x = _x * -10 };
									_key = _key + str(round(_x));
								} count _position;
								_key = _key + str(round(_dir));
							};
						
					}else{
						_dir = _this select 0;
						_key = "";
						_position = _this select 1;
						{
							_x = _x * 10;
							if ( _x < 0 ) then { _x = _x * -10 };
							_key = _key + str(round(_x));
						} count _position;
						_key = _key + str(round(_dir));
					};
		}else{
			if((count _this) == 4) then{
					if(typename (_this select 3) == "ARRAY")then{
						_vector = _this select 3;
						if(count _vector == 2)then{
							if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
										_key = "";
										_position = _this select 1;
										{
											_x = _x * 10;
											if ( _x < 0 ) then { _x = _x * -10 };
											_key = _key + str(round(_x));
										} count _position;
										
										_vecCnt = 0;
										{
											_set = _x;
											{
												_vecCnt = _vecCnt + (round (_x * 100))
												
											} foreach _set;
											
										} foreach _vector;
										if(_vecCnt < 0)then{
											_vecCnt = ((_vecCnt * -1) * 3);
										};
										_key = _key + str(_vecCnt);	
							}else{
								_dir = _this select 0;
								_key = "";
								_position = _this select 1;
								{
									_x = _x * 10;
									if ( _x < 0 ) then { _x = _x * -10 };
									_key = _key + str(round(_x));
								} count _position;
								_key = _key + str(round(_dir));
							};
						}else{
							_dir = _this select 0;
							_key = "";
							_position = _this select 1;
							{
								_x = _x * 10;
								if ( _x < 0 ) then { _x = _x * -10 };
								_key = _key + str(round(_x));
							} count _position;
							_key = _key + str(round(_dir));
						};
					}else{
						if(typename (_this select 2) == "ARRAY")then{
							_vector = _this select 2;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
											_key = "";
											_position = _this select 1;
											{
												_x = _x * 10;
												if ( _x < 0 ) then { _x = _x * -10 };
												_key = _key + str(round(_x));
											} count _position;
											
											_vecCnt = 0;
											{
												_set = _x;
												{
													_vecCnt = _vecCnt + (round (_x * 100))
													
												} foreach _set;
												
											} foreach _vector;
											if(_vecCnt < 0)then{
												_vecCnt = ((_vecCnt * -1) * 3);
											};
											_key = _key + str(_vecCnt);	
								}else{
									_dir = _this select 0;
									_key = "";
									_position = _this select 1;
									{
										_x = _x * 10;
										if ( _x < 0 ) then { _x = _x * -10 };
										_key = _key + str(round(_x));
									} count _position;
									_key = _key + str(round(_dir));
								};
							}else{
								_dir = _this select 0;
								_key = "";
								_position = _this select 1;
								{
									_x = _x * 10;
									if ( _x < 0 ) then { _x = _x * -10 };
									_key = _key + str(round(_x));
								} count _position;
								_key = _key + str(round(_dir));
							};
						}else{
							_dir = _this select 0;
							_key = "";
							_position = _this select 1;
							{
								_x = _x * 10;
								if ( _x < 0 ) then { _x = _x * -10 };
								_key = _key + str(round(_x));
							} count _position;
							_key = _key + str(round(_dir));
						};
					};
			}else{
				_dir = _this select 0;
				_key = "";
				_position = _this select 1;
				{
					_x = _x * 10;
					if ( _x < 0 ) then { _x = _x * -10 };
					_key = _key + str(round(_x));
				} count _position;
				_key = _key + str(round(_dir));
			};
		};
		
	};
	_key
};

6. Идем в server_monitor.sqf и находим там:

// # NOW SPAWN OBJECTS #

тут много кода

// # END SPAWN OBJECTS # 

все что между этими строками заменяем на:

	// # NOW SPAWN OBJECTS #
	_totalvehicles = 0;
	{
		_idKey = 		_x select 1;
		_type =			_x select 2;
		_ownerID = 		_x select 3;

		_worldspace = 	_x select 4;
		_intentory =	_x select 5;
		_hitPoints =	_x select 6;
		_fuel =			_x select 7;
		_damage = 		_x select 8;
		
		_dir = 0;

		
		_pos = [0,0,0];
		_wsDone = false;
		if (count _worldspace >= 2) then
		{
			if ((typeName (_worldspace select 0)) == "STRING") then {
				_worldspace set [0, call compile (_worldspace select 0)];
				_worldspace set [1, call compile (_worldspace select 1)];
			};
			_dir = _worldspace select 0;
			if (count (_worldspace select 1) == 3) then {
				_pos = _worldspace select 1;
				_wsDone = true;
			}
		};	
		
		if (!_wsDone) then {
			if (count _worldspace >= 1) then { _dir = _worldspace select 0; };
			_pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos;
			if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; };
			diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
		};
		
		_vector = [[0,0,0],[0,0,0]];
		_vecExists = false;
		_ownerPUID = "0";
		if (count _worldspace >= 3) then{
			if(count _worldspace == 3) then{
					if(typename (_worldspace select 2) == "STRING")then{
						_ownerPUID = _worldspace select 2;
					}else{
						 if(typename (_worldspace select 2) == "ARRAY")then{
							_vector = _worldspace select 2;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
									_vecExists = true;
								};
							};
						};					
					};
					
			}else{
				//Was not 3 elements, so check if 4 or more
				if(count _worldspace == 4) then{
					if(typename (_worldspace select 3) == "STRING")then{
						_ownerPUID = _worldspace select 3;
					}else{
						if(typename (_worldspace select 2) == "STRING")then{
							_ownerPUID = _worldspace select 2;
						};
					};
			
			
					if(typename (_worldspace select 2) == "ARRAY")then{
						_vector = _worldspace select 2;
						if(count _vector == 2)then{
							if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
								_vecExists = true;
							};
						};
					}else{
						if(typename (_worldspace select 3) == "ARRAY")then{
							_vector = _worldspace select 3;
							if(count _vector == 2)then{
								if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
									_vecExists = true;
								};
							};
						};
					};
					
				}else{
					//More than 3 or 4 elements found
					//Might add a search for the vector, ownerPUID will equal 0
				};
			};
		};
		   	   
		// diag_log format["Server_monitor: [ObjectID = %1]  [ClassID = %2] [_ownerPUID = %3]", _idKey, _type, _ownerPUID];
		
		if (_damage < 1) then {
			//diag_log format["OBJ: %1 - %2", _idKey,_type];
			
			//Create it
			_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
			_object setVariable ["lastUpdate",time];
			_object setVariable ["ObjectID", _idKey, true];

			_object setVariable ["OwnerPUID", _ownerPUID, true];
			_lockable = 0;
			if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
				_lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable");
			};

			// fix for leading zero issues on safe codes after restart
			if (_lockable == 4) then {
				_codeCount = (count (toArray _ownerID));
				if(_codeCount == 3) then {
					_ownerID = format["0%1", _ownerID];
				};
				if(_codeCount == 2) then {
					_ownerID = format["00%1", _ownerID];
				};
				if(_codeCount == 1) then {
					_ownerID = format["000%1", _ownerID];
				};
			};

			if (_lockable == 3) then {
				_codeCount = (count (toArray _ownerID));
				if(_codeCount == 2) then {
					_ownerID = format["0%1", _ownerID];
				};
				if(_codeCount == 1) then {
					_ownerID = format["00%1", _ownerID];
				};
			};

			_object setVariable ["CharacterID", _ownerID, true];
			
			clearWeaponCargoGlobal  _object;
			clearMagazineCargoGlobal  _object;
			// _object setVehicleAmmo DZE_vehicleAmmo;
			
			_object setdir _dir;
			
			if(_vecExists)then{
				_object setVectorDirAndUp _vector;
			};
			
			_object setposATL _pos;
			_object setDamage _damage;
			
			if ((typeOf _object) in dayz_allowedObjects) then {
				if (DZE_GodModeBase) then {
					_object addEventHandler ["HandleDamage", {false}];
				} else {
					_object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}];
				};
				// Test disabling simulation server side on buildables only.
				_object enableSimulation false;
				// used for inplace upgrades && lock/unlock of safe
				_object setVariable ["OEMPos", _pos, true];
				
			};

			if (count _intentory > 0) then {
			
			    /*ZSC		
				if( count (_intentory) > 3)then{
				_object setVariable ["bankMoney", _intentory select 3, true];
				}else{
				_object setVariable ["bankMoney", 0, true];
				};				
				ZSC*/

				if (_type in DZE_LockedStorage) then {
					// Fill variables with loot
					_object setVariable ["WeaponCargo", (_intentory select 0),true];
					_object setVariable ["MagazineCargo", (_intentory select 1),true];
					_object setVariable ["BackpackCargo", (_intentory select 2),true];
				} else {

					//Add weapons
					_objWpnTypes = (_intentory select 0) select 0;
					_objWpnQty = (_intentory select 0) select 1;
					_countr = 0;					
					{
						if(_x in (DZE_REPLACE_WEAPONS select 0)) then {
							_x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);
						};
						_isOK = 	isClass(configFile >> "CfgWeapons" >> _x);
						if (_isOK) then {
							_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes; 
				
					//Add Magazines
					_objWpnTypes = (_intentory select 1) select 0;
					_objWpnQty = (_intentory select 1) select 1;
					_countr = 0;
					{
						if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow
						if (_x == "ItemTent") then { _x = "ItemTentOld" };
						_isOK = 	isClass(configFile >> "CfgMagazines" >> _x);
						if (_isOK) then {
							_object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes;

					//Add Backpacks
					_objWpnTypes = (_intentory select 2) select 0;
					_objWpnQty = (_intentory select 2) select 1;
					_countr = 0;
					{
						_isOK = 	isClass(configFile >> "CfgVehicles" >> _x);
						if (_isOK) then {
							_object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes;
				};
			};	
			
			if (_object isKindOf "AllVehicles") then {
				{
					_selection = _x select 0;
					_dam = _x select 1;
					if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
					[_object,_selection,_dam] call object_setFixServer;
				} count _hitpoints;
				
				_object setFuel _fuel;
				if (!((typeOf _object) in dayz_allowedObjects)) then {
					
					//_object setvelocity [0,0,1];
					_object call fnc_veh_ResetEH;		
					
					if(_ownerID != "0" && !(_object isKindOf "Bicycle")) then {
						_object setvehiclelock "locked";
					};
					
					_totalvehicles = _totalvehicles + 1;

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

			//Monitor the object
			PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
		};
	} count (_BuildingQueue + _objectQueue);
	// # END SPAWN OBJECTS # 

7. Идем в description.ext и в самый низ:

#include "custom\snap_pro\snappoints.hpp"

 

Все установка и настройка закончены, можно ставить ЭТО

ставить эТО это что??? вобще такое дополнение?? тогда почему его нет в туторе?

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


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

ставить эТО это что??? вобще такое дополнение?? тогда почему его нет в туторе?

Как бы всё понятно вроде, не? Это чтобы после рестарта постройки не сдвигались.

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


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

Добрый день! 

Помогите разобраться, а точнее подскажите что копать и куда глядеть. Проблема следующая: после установки данного чуда все прекрасно работает кроме сейфов. Устанавливаешь сейф, все нормально ставиться в бд он записывается. При наведении появляется меню открыть сейф, но при нажатии ничего не происходит=(

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

Вот собственно код обеспечивающий эту процедуру

//Allow owner to unlock vault
	if((_typeOfCursorTarget in DZE_LockableStorage) && _characterID  != "0" && (player distance _cursorTarget < 3)) then {
		if (s_player_unlockvault < 0) then {
			if(_typeOfCursorTarget in DZE_LockedStorage) then {
				if(_characterID == dayz_combination || _ownerID == _playerUID) then {
					_combi = player addAction [format["Открыть %1",_text], "\z\addons\dayz_code\actions\vault_unlock.sqf",_cursorTarget, 0, false, true, "",""];
					s_player_combi set [count s_player_combi,_combi];
				} else {
					_combi = player addAction [format["Разблокировать %1",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
					s_player_combi set [count s_player_combi,_combi];
				};
				s_player_unlockvault = 1;
			} else {
				if(_characterID != dayz_combination && _ownerID != _playerUID) then {
					_combi = player addAction ["Ввести код заново", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
					s_player_combi set [count s_player_combi,_combi];
					s_player_unlockvault = 1;
				};
			};
		};
	} else {
		{player removeAction _x} count s_player_combi;s_player_combi = [];
		s_player_unlockvault = -1;
	};

 Может чего пропусти при объединении fn_selfActions.sqf. 

Буду благодарен за помощь.  

Изменено пользователем vodkaman (история изменений)

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


Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, vodkaman сказал:

Добрый день! 

Помогите разобраться, а точнее подскажите что копать и куда глядеть. Проблема следующая: после установки данного чуда все прекрасно работает кроме сейфов. Устанавливаешь сейф, все нормально ставиться в бд он записывается. При наведении появляется меню открыть сейф, но при нажатии ничего не происходит=(

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

Вот собственно код обеспечивающий эту процедуру


//Allow owner to unlock vault
	if((_typeOfCursorTarget in DZE_LockableStorage) && _characterID  != "0" && (player distance _cursorTarget < 3)) then {
		if (s_player_unlockvault < 0) then {
			if(_typeOfCursorTarget in DZE_LockedStorage) then {
				if(_characterID == dayz_combination || _ownerID == _playerUID) then {
					_combi = player addAction [format["Открыть %1",_text], "\z\addons\dayz_code\actions\vault_unlock.sqf",_cursorTarget, 0, false, true, "",""];
					s_player_combi set [count s_player_combi,_combi];
				} else {
					_combi = player addAction [format["Разблокировать %1",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
					s_player_combi set [count s_player_combi,_combi];
				};
				s_player_unlockvault = 1;
			} else {
				if(_characterID != dayz_combination && _ownerID != _playerUID) then {
					_combi = player addAction ["Ввести код заново", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
					s_player_combi set [count s_player_combi,_combi];
					s_player_unlockvault = 1;
				};
			};
		};
	} else {
		{player removeAction _x} count s_player_combi;s_player_combi = [];
		s_player_unlockvault = -1;
	};

 Может чего пропусти при объединении fn_selfActions.sqf. 

Буду благодарен за помощь.  

Все разобрался. Посмотрел клиентский лог, а в нем ошибка. Видимо при слиянии кастомных fn_selfActions.sqf поставил лишнюю запятую перед объявлением _characterID. 

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


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

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

Error in expression <isBuildAdmin = (getPlayerUID player) in WG_adminBuild;
_vehicle = vehicle playe>
  Error position: <WG_adminBuild;
_vehicle = vehicle playe>
  Error Undefined variable in expression: wg_adminbuild
File mpmissions\__CUR_MP.Napf\custom\snap_pro\player_build.sqf, line 49
Error in expression < false;
_counter = 0;
while {_isOk && !_isBuildAdmin} do {
[10,10] call dayz_H>
  Error position: <_isBuildAdmin} do {
[10,10] call dayz_H>
  Error Undefined variable in expression: _isbuildadmin
File mpmissions\__CUR_MP.Napf\custom\snap_pro\player_build.sqf, line 628
Error in expression <sOk = false;
_proceed = true;
};
};
if (_isBuildAdmin) then {
_isOk = false;
_pr>
  Error position: <_isBuildAdmin) then {
_isOk = false;
_pr>
  Error Undefined variable in expression: _isbuildadmin
File mpmissions\__CUR_MP.Napf\custom\snap_pro\player_build.sqf, line 680
Error in expression <isBuildAdmin = (getPlayerUID player) in WG_adminBuild;
_vehicle = vehicle playe>
  Error position: <WG_adminBuild;
_vehicle = vehicle playe>
  Error Undefined variable in expression: wg_adminbuild
File mpmissions\__CUR_MP.Napf\custom\snap_pro\player_build.sqf, line 49
Error in expression < false;
_counter = 0;
while {_isOk && !_isBuildAdmin} do {
[10,10] call dayz_H>
  Error position: <_isBuildAdmin} do {
[10,10] call dayz_H>
  Error Undefined variable in expression: _isbuildadmin
File mpmissions\__CUR_MP.Napf\custom\snap_pro\player_build.sqf, line 628
Error in expression <sOk = false;
_proceed = true;
};
};
if (_isBuildAdmin) then {
_isOk = false;
_pr>
  Error position: <_isBuildAdmin) then {
_isOk = false;
_pr>
  Error Undefined variable in expression: _isbuildadmin
File mpmissions\__CUR_MP.Napf\custom\snap_pro\player_build.sqf, line 680

 

Изменено пользователем TheFirstNoob (история изменений)

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


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

sanekxxz Не определена переменная wg_adminbuild

В миссии в файл init.sqf добавь wg_adminbuild = ["1111","22222"]; // вместо цифр вставить UID админов или оставить пустые скобки

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


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

Этот PL4 на голую сборку и то с косяками устанавливается :D, всё установилось кроме Plota: 

11:46:56 File z\addons\dayz_server\init\server_functions.sqf, line 250
11:46:57 "PUBLISH: Attempt 2cbff040# 982804: m1151_m2_gpk.p3d"
11:46:58 "PUBLISH: Created UH60M_EP1_DZE with ID "127434364959128""
11:47:01 "PUBLISH: Created MH6J_DZ with ID "1291461048382160""
11:47:02 "PUBLISH: Attempt 2cbfd0c0# 982805: mmt.p3d"
11:47:02 "HIVE: WRITE: "CHILD:308:24:MMT_Civ:0:0:[130,[12528.5,5365.35,-0.0235138]]:[]:[]:0:125285536542130:""
11:47:02 Error in expression <imit = _random select 1;

_qty = {_x == _vehicle} count serverVehicleCounter;


>
11:47:02   Error position: <_vehicle} count serverVehicleCounter;


>
11:47:02   Error Undefined variable in expression: _vehicle
11:47:02 File z\addons\dayz_server\init\server_functions.sqf, line 250
11:47:02 Error in expression <imit = _random select 1;

_qty = {_x == _vehicle} count serverVehicleCounter;


>
11:47:02   Error position: <_vehicle} count serverVehicleCounter;


>
11:47:02   Error Undefined variable in expression: _vehicle
11:47:02 File z\addons\dayz_server\init\server_functions.sqf, line 250
11:47:02 Error in expression <unt serverVehicleCounter;


if (_qty <= _velimit) exitWith {};

_lastIndex = (>
11:47:02   Error position: <_velimit) exitWith {};

_lastIndex = (>
11:47:02   Error Undefined variable in expression: _velimit
11:47:02 File z\addons\dayz_server\init\server_functions.sqf, line 253

Изменено пользователем sanekxxz (история изменений)

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: BorizzK
      Давайте все что касается камер обсуждать в этой теме.
       
      Камеры бывают
      freedebugcamera
      dayzspectator
      staticcamera
       
      Взято из примера:
       
      Cоздание свободной камеры игроку (player - обьект игрока типа PlayerBase)
      GetGame().SelectSpectator(player.GetIdentity(), "freedebugcamera", player.GetPosition()); Уничтожение камеры c возвратом фокуса камеры обратно к персонажу
      PlayerBase pBody = player; GetGame().SelectPlayer(player.GetIdentity(), pBody);  
      Тут мне не ясен нюанс
      Зачем было загонять обьект игрока в переменную pBody и использовать эту переменную в SelectPlayer, когда проще
      GetGame().SelectPlayer(player.GetIdentity(), player);
       
      И еще хотелось бы понять
      как получить координаты положения камеры на сервере когда она  создана и переместилась
    • Автор: Tamirlan
      Народ помогите! У меня проблема! В один момент все персонажи (игроки), когда залетают на остров одеты не в свою одежду и у всех в рюкзаках пустые пластиковые бутылки! не знаю вообще как это исправить! SOS! Есть подозрение что что то произошло с базой данных! но не уверен! Может кто сталкивался с такой проблемой? Как решали... не будьте равнодушными пожалуйста помогите... (началось с того что один из игроков покупал пластиковые бутылки и не заметил что купил слишком много что у него они стали вываливаться и появляться на земле (в рюкзаке место закончилось)) в момент покупки бутылок говорит что что то на секунду подвисло и после этого все кто залетает в игру стали появляться в его одежде и с бутылками. Это было вчера. Сегодня кто то купил одежду сантаклауса и теперь все появляются в одежде санты. Причем если корректно  выйти из миссии и после зайти на последнюю точку подключения все ок. А если выбрать любой город то все как я описывал выше. Плиз помогите решить этот полтергейст!) 
    • Автор: Sovest2
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Подготовка
      Для начала нам понадобится подключить кастомный player_death.sqf в compiles.sqf
      Делается это следующим образом:
      В compiles.sqf заменить строку 
      player_death = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_death.sqf"; на
      player_death = compile preprocessFileLineNumbers "*ВАШ ПУТЬ*\player_death.sqf";  
      Если у вас стоит инфистар,то необходимо заменить строку в AH.sqf
      _death = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\player_death.sqf'; на
      _death = compile preprocessFileLineNumbers '*ВАШ ПУТЬ*\player_death.sqf';  
      В вашем кастомном player_death.sqf необходимо заменить 
      _array = _this; if (count _array > 0) then { _source = _array select 0; _method = _array select 1; if ((!isNull _source) && (_source != player)) then { _canHitFree = player getVariable ["freeTarget",false]; _isBandit = (player getVariable["humanity",0]) <= -2000; _punishment = _canHitFree || _isBandit; //if u are bandit || start first - player will not recieve humanity drop _humanityHit = 0; if (!_punishment) then { //i'm "not guilty" - kill me && be punished _myKills = ((player getVariable ["humanKills",0]) / 30) * 1000; _humanityHit = -(2000 - _myKills); _kills = _source getVariable ["humanKills",0]; _source setVariable ["humanKills",(_kills + 1),true]; PVDZE_send = [_source,"Humanity",[_source,_humanityHit,300]]; publicVariableServer "PVDZE_send"; } else { //i'm "guilty" - kill me as bandit _killsV = _source getVariable ["banditKills",0]; _source setVariable ["banditKills",(_killsV + 1),true]; }; }; _body setVariable ["deathType",_method,true]; }; на
      _array = _this; if (count _array > 0) then { _source = _array select 0; _method = _array select 1; if ((!isNull _source) && (_source != player)) then { [player,_source]execVM "*ВАШ ПУТЬ*\humanityChange.sqf"; [player,_source]execVM "*ВАШ ПУТЬ*\kill_msg_send.sqf"; }; _body setVariable ["deathType",_method,true]; }; Отображение ника убийцы(Kill message)
       
      Создаем файл и закидываем в миссию файл kill_msg_send.sqf
      С содержанием
      private ["_victim","_killer","_vehicle","_weapon","_pic"]; _victim = _this select 0; _killer = _this select 1; _killerName = name _killer; _victimName = name _victim; _vehicle = typeOf (vehicle _killer); _weapon = currentWeapon _killer; if ((getText (configFile >> "CfgVehicles" >> _vehicle >> "vehicleClass")) in ["CarW","Car","CarD","Armored","Ship","Support","Air","ArmouredW","ArmouredD","SupportWoodland_ACR","AllVehicles"]) then { _pic = gettext(configFile >> 'CfgVehicles' >> _vehicle >> 'picture'); } else { _pic = gettext(configFile >> 'cfgWeapons' >> _weapon >> 'picture'); }; _kill_txt = format ["<t align='left' size='0.5'>%1 </t>",_victimName]; _kill_txt = _kill_txt + format ["<img size='1.0' align='left' image='%1'/>",_pic]; _kill_txt = _kill_txt + format ["<t align='left' size='0.5'> %1 </t>",_killerName]; PVDZE_send = [player,"kill_message",[_kill_txt]]; publicVariableServer "PVDZE_send";  
      Далее,нам необходимо отредактировать файл server_sendToClient.sqf ,которой находится в директории сервера
      И добавить после
      case "tagFriendly": { PVDZE_plr_FriendRQ = _arraytosend; _owner publicVariableClient "PVDZE_plr_FriendRQ"; }; Это
      case "kill_message": { custom_kill_message_show = _arraytosend; publicVariable "custom_kill_message_show"; }; Теперь необходимо создать файл kill_msg_show.sqf в папке с вашей миссией
      с содержимым
      private ["_pos","_i"]; arr_kill = ["","","","","",""]; fnc_kill_message = { private ["_finaltxt"]; _finaltxt = _this select 0; for[{_i = 0},{(_i<6)},{_i = _i +1}] do { if((arr_kill select _i) == "") then { arr_kill set [_i,_finaltxt]; [_i] execVM "*ВАШ ПУТЬ*\kill_msg_delete.sqf"; _i = count(arr_kill); }; }; }; "custom_kill_message_show" addPublicVariableEventHandler {(_this select 1) call fnc_kill_message;}; while {true} do { _pos = 0.01; _layout = 1001; { [_x,[safezoneX + 0.01 * safezoneW,2.0],[safezoneY + _pos * safezoneH,0.3],5,0.5,0,_layout] spawn BIS_fnc_dynamicText; _pos = _pos + 0.021; _layout = _layout + 1; } ForEach arr_kill; sleep 1; }; Создать файл kill_msg_delete.sqf с 
      private["_pos"]; _pos = _this select 0; sleep 10; arr_kill set [_pos,""];  
      И вставить в init.sqf после строки
      _playerMonitor = [] execVM "custom\player_monitor.sqf"; строку
      execVM "*ВАШ ПУТЬ*\kill_msg_show.sqf"; Осталось только добавить
      custom_kill_message_show В первую строку файла publicvariable.txt
       
      Все,отображение ника убийцы готово!
       
       
      Изменение человечности за убийство Бандита\Героя
      создать файл humanityChange.sqf с содержимым
      private ["_victim","_killer","_myKills","_humanity","_killerHumanity","_isKillerBandit","_isBandit","_humanityHit","_kills","_killerGunner"]; _victim = _this select 0; _killer = _this select 1; _humanity = _victim getVariable["humanity",0]; _killerHumanity = _killer getVariable["humanity",0]; _isKillerBandit = (_killerHumanity) < 0 ; _isBandit = (_humanity) < 0; _humanityHit = 0; _myKills = 0; _killerVehicle = vehicle _killer; if(((!_isBandit) && _isKillerBandit) || (_isBandit && (!_isKillerBandit))) then { _myKills = round((_humanity) / 10); }; if(!_isBandit) then { _myKills = (_myKills + 200); _kills = _killer getVariable ["humanKills",0]; _killer setVariable ["humanKills",(_kills + 1),true]; } else { _myKills = (_myKills - 200); _kills = _killer getVariable ["banditKills",0]; _killer setVariable ["banditKills",(_kills + 1),true]; }; _killerGunner = gunner _killerVehicle; if(!isNil"_sourceGunner") then { _killer = _killerGunner; }; _humanityHit = _myKills * (-1); PVDZE_send = [_killer,"Humanity",[_killer,_humanityHit,300]]; publicVariableServer "PVDZE_send"; Изменение Человечности готово!
       
      Плюсы Всего этого:
      Отображение ника убийцы теперь работает всегда и корректно.(Если убивают с техники или с одного выстрела).
    • Автор: snacksize
      Добрый вечер, мб кто сталкивался с такой проблемой Установил SnapProP4LVector Не работает улучшение у админов.К примеру ставлю стенку , хочу улучшить, а с меня требуют ресурсы. Хотя в первый запуск работало все в один клик и не нужны были ресурсы

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: dima3659
      Доброе время суток.Подскажите как можно аккуратно  и правильно убрать с карты все трейд зоны и торговцев 
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.