Jump to content

striker

Member
  • Posts

    132
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by striker

  1. Sorry to ask again, but is there a way to integrate this with Plot For Life v2.33 and Snap 1.41 (The dual download one).  I have these working well, along with a merged coin system.  

     

    Is there a step by step guide to install vectors, or possibly a way to merge everything together?

     

    Ill probably release a step by step guide soon. That way it will be easy to integrate and update without being depended on the other mods.

     

    striker

  2. Hey 0verHeaT,

     

    You need to do a little fix.

     

    Change this

    	if (((typeName(_worldspace select 2)) == "STRING") and ((typeName(_worldspace select 3)) == "STRING")) then {
    		_colour = _worldspace select 2;
    		_colour2 = _worldspace select 3;
    					
    		if (_colour != "0") then {
    			_object setVariable ["Colour",_colour,true];
    			_clrinit = format ["#(argb,8,8,3)color(%1)",_colour];
    			_object setVehicleInit "this setObjectTexture [0,"+str _clrinit+"];";
    		};
    		if (_colour2 != "0") then {			
    			_object setVariable ["Colour2",_colour2,true];
    			_clrinit2 = format ["#(argb,8,8,3)color(%1)",_colour2];
    			_object setVehicleInit "this setObjectTexture [1,"+str _clrinit2+"];";
    		};
    	};
    

    To

    if(count _worldspace >= 4) then{	
            if (((typeName(_worldspace select 2)) == "STRING") and ((typeName(_worldspace select 3)) == "STRING")) then {
    		_colour = _worldspace select 2;
    		_colour2 = _worldspace select 3;
    					
    		if (_colour != "0") then {
    			_object setVariable ["Colour",_colour,true];
    			_clrinit = format ["#(argb,8,8,3)color(%1)",_colour];
    			_object setVehicleInit "this setObjectTexture [0,"+str _clrinit+"];";
    		};
    		if (_colour2 != "0") then {			
    			_object setVariable ["Colour2",_colour2,true];
    			_clrinit2 = format ["#(argb,8,8,3)color(%1)",_colour2];
    			_object setVehicleInit "this setObjectTexture [1,"+str _clrinit2+"];";
    		};
    	};
    };
    

    This prevents the Error Zero divisor from being spammed into the RPT. The worldspace array is a default two elements. Without this check, you are checking out of bounds of the array causing the error.

     

    Anyway, LOVE THE SCRIPT  :)

     

    striker

     

     

    P.S. If you add a third color, change >= 4 to >= 5

  3. I just installed Plot For Life v2.33 with Snap Pro v1.4.1

    now I would like to add your vectors and admin build. however RimBlock has updated his version  8 hours ago, maybe the modular player build. whatever that is

    Turn on Snap Build Pro and the modular player build framework.  

    DZE_modularBuild = true;

     

     

    anyways. Im kinda afraid to add your great addition to it now that his files has changed.

    could you take alook at his new version and see if there is anything  we need to add to yours...

     

    I have your vector on my overpoch napf server and it works great. my player loves it..(yes player, singular)

    however I dont use plot4life so this is not an issue.

     

    I am starting another server and of course your vector is an essential addon.

     

    I have files working on his new version, however, it will be useless until epoch 1.0.5.2. Modular build will be in that update.

     

    striker

  4. Hey ABLGDayZ,

     

    I love what you have done with the menus, however, there are some issues I want to address.

    1. When a user goes into a sub category, they lose the option to toggle snap build (which could annoy some people).
    2. When the user selects a option, it brings them back to the same menu, just not the option they selected (prevents users from being able to use the option rapidly).

    If you could find a way to keep the snap build toggle option on each of the sub menus and keep the option the user selected, I will definitely add it in!  :)

     

    striker

     

    P.S. addAction has a option hideOnUse which if set to false will keep the option the user used on the screen.

  5.  

    Removed this and suddenly yay, it works, I don't have admin build.

     

    while {_isOk && !_isBuildAdmin} do {
     
    [10,10] call dayz_HungerThirst;
    player playActionNow "Medic";

     

     

    Hey,

     

    But you do have AdminBuild using my P4L files  ;)

     

    If you are using P4L files and did not include 

    WG_adminBuild = ["","","",""]; //Fill with player UID's
    

    that is likely what caused the error (Sorry for not making that clear in the instructions).

     

     

    So, if you don't want to use admin build just put 

    WG_adminBuild = []; //Fill with player UID's
    

    in the init.sqf by the other variables.

     

    If you did include that array, i'm not sure what would be causing that error.

     

    striker

  6. Hi all.

    I can see from other posts that others have the same problem but there has not been any replies that I could find with a working solution.

    My problem is this message in the console after implementing this script:

     

    Error in expression 9:22:53 Error position: 9:22:53 Error select: Type String, expected Array,Config entry9:22:53 File z\addons\dayz_server\system\server_monitor.sqf, line 256

     

    The server stops loading at this point and cannot be joined.

     

    My server host is vilayer.com and I have successfully added other scripts so I know the file structure of this host pretty well.

     

    First I tried to merge a few scripts including the newest Build Vectors (updated for 1.4.1) and this was the only error in the console.

    Next I removed all scripts on the server by reinstalling the folder containing the server.pbo and mission.pbo files (vilayer has their own function to do this).

     

    Then I tried to install the newest Build Vectors including plot for life, admin build and precise basebuilding. Same error.

    Then I reinstalled the folders again and installed Build Vectors including plot for life and admin build without precise basebuilding. Same error.

    Then I tried without plot for life and admin build - with and without precise basebuilding. Still the same error.

     

    I am getting better at scripting fast but still not very good and I simply can't figure out what the problem is.

    Of course the console says "Type String, expected Array" but I have no idea what to do with this.

     

    When reading through the posts about this script I also saw that some people have posted their working server_monitor.sqf. And by using diffmerge I can conclude that my file is identical.

    Pretty frustrating.

     

    Earlier I actually had this script working on my server along with other scripts. I was not so long ago and I think the Build Vectors then was updated for Snap 1.4 and not 1.4.1. I am not sure if I remember the versions correctly, but I can conclude, when comparing the older working script's server_monitor.sqf with this new one, that there have been serveral changes made. 

    Sadly changes that apperently breaks the script on my server. 

     

    I would absolute LOVE for someone to help me fix the newest script but alternatively I could also use the script version before the newest. But I do not know where to find that now.

     

     

    Thank you so much for reading all this and apologies for my language. My native tongue is not English.

    That error seems to be caused by Plot Management. I came to this conclusion because it uses the inventory as a string and not array (to some extent) which would cause that error (if not reconfigured correctly). If you are using Plot Management, go to this link (https://github.com/DevZupa/PlotManagement/blob/master/P4L_Epoch.md) and follow step 5, 7, & 8. (link is for P4L, I'm sure you could find the non P4L instructions)

    That is the only logical reason such an error would occur. My script does not deal with the inventory field.

    striker

    P.S. This is assuming your using Plot Management

  7. Adding this to my init.sqf does nothing for the items in the "no rotate" list. They still are able to be rotated.

     

    The biggest issue right now is player rotating ladders horizontally and glitching through cinder walls...

    DZE_noRotate = ["ItemVault","ItemWoodStairs","ItemLockbox","ItemWoodStairsSupport","ItemWoodLadder","30m_plot_kit","workbench_kit"]; //Objects that cannot be rotated. Ex: DZE_noRotate = ["VaultStorageLocked"]
    
    

    I also tried with the "built" classnames in the database and it didn't work (i.e. "VaultStorageLocked")

     

    In these two sections in player_build.sqf:

    	if !(_classname in DZE_noRotate) then{
    		s_player_setVectorsReset = player addaction ["Reset","custom\snap_pro\player_vectorChange.sqf","reset"];
    		s_player_setVectorsForward = player addaction ["Pitch Forward","custom\snap_pro\player_vectorChange.sqf","forward"];
    		s_player_setVectorsBack = player addaction ["Pitch Back","custom\snap_pro\player_vectorChange.sqf","back"];
    		s_player_setVectorsLeft = player addaction ["Bank Left","custom\snap_pro\player_vectorChange.sqf","left"];
    		s_player_setVectorsRight = player addaction ["Bank Right","custom\snap_pro\player_vectorChange.sqf","right"];
    		s_player_setVectors1 = player addaction ["Increment by 1 degree","custom\snap_pro\player_vectorChange.sqf","1"];
    		s_player_setVectors5 = player addaction ["Increment by 5 degrees","custom\snap_pro\player_vectorChange.sqf","5"];
    		s_player_setVectors45 = player addaction ["Increment by 45 degrees","custom\snap_pro\player_vectorChange.sqf","45"];
    		s_player_setVectors90 = player addaction ["Increment by 90 degrees","custom\snap_pro\player_vectorChange.sqf","90"];
    	};
    
    
    	if !(_classname in DZE_noRotate) then{
    		player removeAction s_player_setVectorsReset;
    		player removeAction s_player_setVectorsForward;
    		player removeAction s_player_setVectorsBack;
    		player removeAction s_player_setVectorsLeft;
    		player removeAction s_player_setVectorsRight;
    		player removeAction s_player_setVectors1;
    		player removeAction s_player_setVectors5;
    		player removeAction s_player_setVectors45;
    		player removeAction s_player_setVectors90;
    	};	
    

    Change _classname to _classnametmp. (Use the built classnames)

     

    The issue is it is checking the ghost preview classname to the no rotate array.

     

    Slight error I over looked!

     

    Sorry!

    striker

  8. striker could you please look at my files :(

     

    Here is a video on what's wrong : Here

     

    Here are my files that relate to this script : Here

     

    Logs : Here

     

    Just in case if you missed it when I press upgrade it then keeps saying Already in progress when I do anything else

     

    I know I have different Directory Scripts\Base_Snapping but there pointing to the right direction 

     

    When I put your files into my server, it said it could not find the fn_selfActions.sqf script, If your using your own, make sure that it points to the correct files in PlotForLifev2 folder. Use my fn_selfActions.sqf for reference.

     

    striker

  9. Is it possible to deactivate the ghost preview or will it break the addon??

    My Dudes wanna see the object with normal structures.....

     

    DECO1919,

     

    Comment out these two sections if you don't want ghost preview

     

    First:

    	// if ghost preview available use that instead
    	if (_ghost != "") then {
    		_classname = _ghost;
    	}; 

    Second:

                    _buildOffset = [0,0,0];
    		_vUp = _vector select 1;
    		switch (_classname) do {
    			case "MetalFloor_DZ": { _buildOffset = [(_vUp select 0) * .148, (_vUp select 1) * .148,0]; };
    		};
    		
    		_location = [
    			(_location select 0) - (_buildOffset select 0),
    			(_location select 1) - (_buildOffset select 1),
    			(_location select 2) - (_buildOffset select 2)
    		];
    
  10. the normal one (i  hope - i download the first version you uploaded and later the second download spawnt =) ) - i restored to othe old version... thats sad =( i was so happy about the update.

    i discoverd that all walls, floors etc disapears after the update

     

    boneau,

     

    Did you follow all the instructions? You didn't skip any correct? Also, did you use all my files? You didn't diff merge any of them?

     

    striker 

  11. Hey, 

    get this error message:

    Error count: Undefined variable in expression: _buildingqueue

    2:24:16 File z\addons\dayz_server\system\server_monitor.sqf, line 337

     

    Normal setup without admin / P4L

     

    Here is my complete server_monitor.sqf, try it and see if it works correctly.

    private ["_nul","_result","_pos","_wsDone","_dir","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_key","_vehLimit","_hiveResponse","_objectCount","_codeCount","_data","_status","_val","_traderid","_retrader","_traderData","_id","_lockable","_debugMarkerPosition","_vehicle_0","_bQty","_vQty","_BuildingQueue","_objectQueue","_superkey","_shutdown","_res","_hiveLoaded"];
    
    dayz_versionNo = 		getText(configFile >> "CfgMods" >> "DayZ" >> "version");
    dayz_hiveVersionNo = 	getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");
    
    _hiveLoaded = false;
    
    waitUntil{initialized}; //means all the functions are now defined
    
    diag_log "HIVE: Starting";
    
    waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player)
    	
    // Custom Configs
    if(isnil "MaxVehicleLimit") then {
    	MaxVehicleLimit = 50;
    };
    
    if(isnil "MaxDynamicDebris") then {
    	MaxDynamicDebris = 100;
    };
    if(isnil "MaxAmmoBoxes") then {
    	MaxAmmoBoxes = 3;
    };
    if(isnil "MaxMineVeins") then {
    	MaxMineVeins = 50;
    };
    // Custon Configs End
    
    if (isServer && isNil "sm_done") then {
    
    	serverVehicleCounter = [];
    	_hiveResponse = [];
    
    	for "_i" from 1 to 5 do {
    		diag_log "HIVE: trying to get objects";
    		_key = format["CHILD:302:%1:", dayZ_instance];
    		_hiveResponse = _key call server_hiveReadWrite;  
    		if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then {
    			if ((_hiveResponse select 1) == "Instance already initialized") then {
    				_superkey = profileNamespace getVariable "SUPERKEY";
    				_shutdown = format["CHILD:400:%1:", _superkey];
    				_res = _shutdown call server_hiveReadWrite;
    				diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res));
    			} else {
    				diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse));
    			
    			};
    			_hiveResponse = ["",0];
    		} 
    		else {
    			diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" );
    			_i = 99; // break
    		};
    	};
    	
    	_BuildingQueue = [];
    	_objectQueue = [];
    	
    	if ((_hiveResponse select 0) == "ObjectStreamStart") then {
    	
    		// save superkey
    		profileNamespace setVariable ["SUPERKEY",(_hiveResponse select 2)];
    		
    		_hiveLoaded = true;
    	
    		diag_log ("HIVE: Commence Object Streaming...");
    		_key = format["CHILD:302:%1:", dayZ_instance];
    		_objectCount = _hiveResponse select 1;
    		_bQty = 0;
    		_vQty = 0;
    		for "_i" from 1 to _objectCount do {
    			_hiveResponse = _key call server_hiveReadWriteLarge;
    			//diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]);
    			if ((_hiveResponse select 2) isKindOf "ModularItems") then {
    				_BuildingQueue set [_bQty,_hiveResponse];
    				_bQty = _bQty + 1;
    			} else {
    				_objectQueue set [_vQty,_hiveResponse];
    				_vQty = _vQty + 1;
    			};
    		};
    		diag_log ("HIVE: got " + str(_bQty) + " Epoch Objects and " + str(_vQty) + " Vehicles");
    	};
    	// # 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 {
    				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 #  
    
    	// preload server traders menu data into cache
    	if !(DZE_ConfigTrader) then {
    		{
    			// get tids
    			_traderData = call compile format["menu_%1;",_x];
    			if(!isNil "_traderData") then {
    				{
    					_traderid = _x select 1;
    
    					_retrader = [];
    
    					_key = format["CHILD:399:%1:",_traderid];
    					_data = "HiveEXT" callExtension _key;
    
    					//diag_log "HIVE: Request sent";
    			
    					//Process result
    					_result = call compile format ["%1",_data];
    					_status = _result select 0;
    			
    					if (_status == "ObjectStreamStart") then {
    						_val = _result select 1;
    						//Stream Objects
    						//diag_log ("HIVE: Commence Menu Streaming...");
    						call compile format["ServerTcache_%1 = [];",_traderid];
    						for "_i" from 1 to _val do {
    							_data = "HiveEXT" callExtension _key;
    							_result = call compile format ["%1",_data];
    							call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result];
    							_retrader set [count _retrader,_result];
    						};
    						//diag_log ("HIVE: Streamed " + str(_val) + " objects");
    					};
    
    				} forEach (_traderData select 0);
    			};
    		} forEach serverTraders;
    	};
    
    	if (_hiveLoaded) then {
    		//  spawn_vehicles
    		_vehLimit = MaxVehicleLimit - _totalvehicles;
    		if(_vehLimit > 0) then {
    			diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
    			for "_x" from 1 to _vehLimit do {
    				[] spawn spawn_vehicles;
    			};
    		} else {
    			diag_log "HIVE: Vehicle Spawn limit reached!";
    		};
    	};
    	
    	//  spawn_roadblocks
    	diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
    	for "_x" from 1 to MaxDynamicDebris do {
    		[] spawn spawn_roadblocks;
    	};
    	//  spawn_ammosupply at server start 1% of roadblocks
    	diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
    	for "_x" from 1 to MaxAmmoBoxes do {
    		[] spawn spawn_ammosupply;
    	};
    	// call spawning mining veins
    	diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
    	for "_x" from 1 to MaxMineVeins do {
    		[] spawn spawn_mineveins;
    	};
    
    	if(isnil "dayz_MapArea") then {
    		dayz_MapArea = 10000;
    	};
    	if(isnil "HeliCrashArea") then {
    		HeliCrashArea = dayz_MapArea / 2;
    	};
    	if(isnil "OldHeliCrash") then {
    		OldHeliCrash = false;
    	};
    
    	// [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire]
    	if(OldHeliCrash) then {
    		_nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite;
    	};
    	if (isDedicated) then {
    		// Epoch Events
    		_id = [] spawn server_spawnEvents;
    		// server cleanup
    		[] spawn {
    			private ["_id"];
    			sleep 200; //Sleep Lootcleanup, don't need directly cleanup on startup + fix some performance issues on serverstart
    			waitUntil {!isNil "server_spawnCleanAnimals"};
    			_id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm";
    		};
    
    		// spawn debug box
    		_debugMarkerPosition = getMarkerPos "respawn_west";
    		_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1];
    		_vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
    		_vehicle_0 setPos _debugMarkerPosition;
    		_vehicle_0 setVariable ["ObjectID","1",true];
    
    		// max number of spawn markers
    		if(isnil "spawnMarkerCount") then {
    			spawnMarkerCount = 10;
    		};
    		actualSpawnMarkerCount = 0;
    		// count valid spawn marker positions
    		for "_i" from 0 to spawnMarkerCount do {
    			if (!([(getMarkerPos format["spawn%1", _i]), [0,0,0]] call BIS_fnc_areEqual)) then {
    				actualSpawnMarkerCount = actualSpawnMarkerCount + 1;
    			} else {
    				// exit since we did not find any further markers
    				_i = spawnMarkerCount + 99;
    			};
    			
    		};
    		diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount];
    		
    		endLoadingScreen;
    	};
    
    	allowConnection = true;	
    	sm_done = true;
    	publicVariable "sm_done";
    };
    
    

  12.  

    Hello, I have a bug. when you connect to the server pishshet just such a mistake

    ErrorMessage: File mpmissions\DayZ_Epoch_11.Chernarus\custom\snap_pro\snappoints.hpp, line 397: .SnapBuilding: Member already defined.
    

     

     

    This is my snappoints.hpp

     

    /*-----------------------------------------------------------*/
    // Created by Raymix
    // Last update - August 21 2014
    /*-----------------------------------------------------------*/
    
    
    class SnapBuilding {
    //Barriers whitelist
    class Barrier {
    snapTo[] = {
    "Land_HBarrier5_DZ",
    "Land_HBarrier3_DZ",
    "Land_HBarrier1_DZ",
    "Sandbag1_DZ",
    "BagFenceRound_DZ",
    "Fort_RazorWire"
    };
    radius = 5;
    };
    //snap points
    class Land_HBarrier5Preview: Barrier{ //fix for broken offsets in ghost
    points[] = {
    {0,0,0,"Pivot"},
    {0,-0.75,0.1,"Back"},
    {0,0.75,0.1,"Front"},
    {-2.85,0,0.1,"Left"},
    {2.85,0,0.1,"Right"},
    {0,0,0.9,"Top"}
    };
    };
    class Land_HBarrier5_DZ: Land_HBarrier5Preview {
    points[] = {
    {0,0,0,"Pivot"},
    {0,-0.75,0,"Back"},
    {0,0.75,0,"Front"},
    {-2.85,0,0,"Left"},
    {2.85,0,0,"Right"},
    {0,0,0.9,"Top"}
    };
    };
    
    class Land_HBarrier3ePreview: Barrier { //whitelist inheritance
    points[] = {
    {0,0,0,"Pivot"},
    {0,-0.75,0,"Back"},
    {0,0.75,0,"Front"},
    {-1.7,0,0,"Left"},
    {1.7,0,0,"Right"},
    {0,0,0.9,"Top"}
    };
    };
    class Land_HBarrier3_DZ: Land_HBarrier3ePreview{}; //point inheritance
    
    class Land_HBarrier1Preview: Barrier {
    points[] = {
    {0,0,0,"Pivot"},
    {0,-0.75,0,"Back"},
    {0,0.75,0,"Front"},
    {-0.6,0,0,"Left"},
    {0.6,0,0,"Right"},
    {0,0,0.9,"Top"}
    };
    };
    class Land_HBarrier1_DZ: Land_HBarrier1Preview{};
    
    class Fort_RazorWirePreview: Barrier {
    points[] = {
    {0,0,0,"Pivot"},
    {0,-0.95,-0.3,"Back"},
    {0,0.95,-0.3,"Front"},
    {-4.1,0,-0.3,"Left"},
    {4.1,0,-0.3,"Right"},
    {0,0,1,"Top"}
    };
    };
    class Fort_RazorWire: Fort_RazorWirePreview {};
    
    class Sandbag1_DZ: Barrier {
    points[] = {
    {0,0,0,"Pivot"},
    {-1.5,0,0,"Left"},
    {1.5,0,0,"Right"},
    {0,0,0.4,"Top"}
    };
    };
    
    class BagFenceRound_DZ: Barrier {
    points[] = {
    {0,0,0,"Pivot"},
    {-1.295,0.38,0,"Left"},
    {1.295,0.38,0,"Right"},
    {0,0,0.4,"Top"}
    };
    };
    
    //Snapping whitelists for Floors, walls and stairs
    class FloorsWallsStairs {
    snapTo[] = {
    "WoodFloorQuarter_DZ",
    "WoodFloorHalf_DZ",
    "WoodFloor_DZ",
    "WoodStairs_DZ",
    "WoodStairsSans_DZ",
    "WoodSmallWallDoor_DZ",
    "WoodSmallWall_DZ",
    "WoodSmallWallWin_DZ",
    "Land_DZE_WoodDoor",
    "Land_DZE_WoodDoorLocked",
    "WoodLargeWall_DZ",
    "Land_DZE_LargeWoodDoor",
    "WoodLargeWallWin_DZ",
    "WoodLargeWallDoor_DZ",
    "Land_DZE_GarageWoodDoor",
    "Land_DZE_GarageWoodDoorLocked",
    "Land_DZE_LargeWoodDoorLocked",
    "WoodSmallWallThird_DZ",
    "CinderWall_DZ",
    "CinderWallDoorway_DZ",
    "CinderWallDoorLocked_DZ",
    "CinderWallDoor_DZ",
    "CinderWallSmallDoorway_DZ",
    "CinderWallDoorSmallLocked_DZ",
    "CinderWallHalf_DZ",
    "CinderWallDoorSmall_DZ",
    "MetalFloor_DZ"
    };
    radius = 7;
    };
    
    class WoodFloorQuarter_Preview_DZ: FloorsWallsStairs { //fix for broken offsets in ghost
    points[] = {
    {0,0,0,"Pivot"},
    {0,-1.23,0,"Back"},
    {0,1.23,0,"Front"},
    {-1.24,0,0,"Left"},
    {1.24,0,0,"Right"}
    };
    };
    
    class WoodFloorQuarter_DZ: FloorsWallsStairs {
    points[] = {
    {0,0,0,"Pivot"},
    {0,-1.23,0.137726,"Back"},
    {0,1.23,0.137726,"Front"},
    {-1.24,0,0.137726,"Left"},
    {1.24,0,0.137726,"Right"}
    };
    };
    
    class WoodFloorHalf_Preview_DZ: FloorsWallsStairs { //fix for broken offsets in ghost
    points[] = {
    {0,0,0,"Pivot"},
    {0,-2.34,0,"Back"},
    {0,2.34,0,"Front"},
    {-1.25,0,0,"Left"},
    {1.25,0,0,"Right"}
    };
    };
    class WoodFloorHalf_DZ: FloorsWallsStairs{
    points[] = {
    {0,0,0,"Pivot"},
    {0,-2.34,0.1407,"Back"},
    {0,2.34,0.1407,"Front"},
    {-1.25,0,0.1407,"Left"},
    {1.25,0,0.1407,"Right"}
    };
    };
    
    class WoodFloor_Preview_DZ: FloorsWallsStairs {
    points[] = {
    {0,0,0,"Pivot"},
    {0,-2.33,0.130,"Back"},
    {0,2.33,0.130,"Front"},
    {-2.495,0,0.130,"Left"},
    {2.495,0,0.130,"Right"}
    };
    radius = 10;
    };
    class WoodFloor_DZ: WoodFloor_Preview_DZ{};
    
    class Stairs_DZE: FloorsWallsStairs {
    points[] = {
    {0,0,0,"Pivot"},
    {1.56055,-0.78,1.5,"Back"},
    {1.56055,0.78,1.5,"Front"},
    {1.73926,0.05,2.9,"Top"},
    {-1.73926,0.05,0,"Bottom"}
    };
    };
    class WoodStairs_DZ: Stairs_DZE {};
    class WoodStairs_Preview_DZ: Stairs_DZE {};
    class WoodStairsSans_Preview_DZ: Stairs_DZE {};
    class WoodStairsSans_DZ: Stairs_DZE {};
    
    class WoodSmall_DZE: FloorsWallsStairs { // Small wood walls
    points[] = {
    {0,0,0,"Pivot"},
    {-2.285, 0, 1.5,"Left"},
    {2.285, 0, 1.5,"Right"},
    {0, 0, 3,"Top"}
    };
    };
    class WoodSmallWallDoor_Preview_DZ: WoodSmall_DZE {};
    class WoodSmallWall_Preview_DZ: WoodSmall_DZE {};
    class WoodSmallWallWin_Preview_DZ: WoodSmall_DZE {};
    class WoodSmallWallDoor_DZ: WoodSmall_DZE {};
    class WoodSmallWall_DZ: WoodSmall_DZE {};
    class WoodSmallWallWin_DZ: WoodSmall_DZE {};
    class Land_DZE_WoodDoor: WoodSmall_DZE {};
    class Land_DZE_WoodDoorLocked: WoodSmall_DZE {};
    class WoodDoor_Preview_DZ: WoodSmall_DZE{};
    
    class WoodLarge_DZE: FloorsWallsStairs { //Large wood walls
    points[] = {
    {0,0,0,"Pivot"},
    {-2.45, 0, 1.5,"Left"},
    {2.45, 0, 1.5,"Right"},
    {0, 0, 3,"Top"}
    };
    };
    class WoodLargeWall_Preview_DZ: WoodLarge_DZE {};
    class WoodLargeWallWin_Preview_DZ: WoodLarge_DZE {};
    class WoodLargeWallDoor_Preview_DZ: WoodLarge_DZE {};
    class WoodSmallWallThird_Preview_DZ: WoodLarge_DZE {
    points[] = {
    {0,0,0,"Pivot"},
    {-2.445, 0, 1.5,"Left"},
    {2.445, 0, 1.5,"Right"},
    {0, 0, 1.17,"Top"}
    };
    };
    class WoodSmallWallThird_DZ: WoodSmallWallThird_Preview_DZ{};
    class WoodLargeWall_DZ: WoodLarge_DZE {};
    class Land_DZE_LargeWoodDoor: WoodLarge_DZE {};
    class WoodLargeWallWin_DZ: WoodLarge_DZE {};
    class WoodLargeWallDoor_DZ: WoodLarge_DZE {};
    class Land_DZE_GarageWoodDoor: WoodLarge_DZE {};
    class GarageWoodDoor_Preview_DZ: WoodLarge_DZE {};
    class Land_DZE_GarageWoodDoorLocked: WoodLarge_DZE {};
    class Land_DZE_LargeWoodDoorLocked: WoodLarge_DZE {};
    class LargeWoodDoor_Preview_DZ: WoodLarge_DZE {};
    
    class Cinder_DZE: FloorsWallsStairs { //All cinder walls and doors
    points[] = {
    {0,0,0,"Pivot"},
    {-2.752, 0, 1.5,"Left"},
    {2.752, 0, 1.5,"Right"},
    {0, 0, 3.37042,"Top"}
    };
    radius = 10;
    };
    class CinderWall_Preview_DZ: Cinder_DZE {};
    class CinderWallDoorway_Preview_DZ: Cinder_DZE {};
    class CinderWallSmallDoorway_Preview_DZ: Cinder_DZE {};
    class CinderWallHalf_Preview_DZ: Cinder_DZE {
    points[] = {
    {0,0,0,"Pivot"},
    {-2.752, 0, 1.5,"Left"},
    {2.752, 0, 1.5,"Right"},
    {0, 0, 1.5,"Top"}
    };
    };
    class CinderWall_DZ: Cinder_DZE {};
    class CinderWallDoorway_DZ: Cinder_DZE {};
    class CinderWallDoorLocked_DZ: Cinder_DZE {};
    class CinderWallDoor_DZ: Cinder_DZE {};
    class CinderWallSmallDoorway_DZ: Cinder_DZE {};
    class CinderWallDoorSmallLocked_DZ: Cinder_DZE {};
    class CinderWallHalf_DZ: Cinder_DZE {
    points[] = {
    {0,0,0,"Pivot"},
    {-2.752, 0, 1.5,"Left"},
    {2.752, 0, 1.5,"Right"},
    {0, 0, 1.5,"Top"}
    };
    };
    class CinderWallDoorSmall_DZ: Cinder_DZE {};
    
    class MetalFloor_Preview_DZ: FloorsWallsStairs { //fix for broken offsets in ghost
    points[] = {
    {0,0,0.011,"Pivot"},
    {0, -2.64, 0.009,"Back"},
    {0, 2.64, 0.009,"Front"},
    {-2.64, 0, 0.009,"Left"},
    {2.64, 0, 0.009,"Right"}
    };
    radius = 12;
    };
    class MetalFloor_DZ: FloorsWallsStairs{
    points[] = {
    {0,0,0,"Pivot"},
    {0, -2.64, 0.15,"Back"},
    {0, 2.64, 0.15,"Front"},
    {-2.64, 0, 0.15,"Left"},
    {2.64, 0, 0.15,"Right"}
    };
    radius = 12;
    };
    
    
    //Non essential Items that only snap to themselves, do whitelist inheritance if you want these to snap
    class WoodCrate_DZ {
    snapTo[] = {
    "WoodCrate_DZ"
    };
    radius = 5;
    points[] = {
    {0,0,0,"Pivot"},
    {0,-0.47,0,"Back"},
    {0,0.47,0,"Front"},
    {-0.47,0,0,"Left"},
    {0.47,0,0,"Right"},
    {0,0,0.47,"Top"}
    };
    };
    
    class MetalPanel_DZ {
    snapTo[] = {
    "MetalPanel_DZ"
    };
    radius = 5;
    points[] = {
    {0,0,0,"Pivot"},
    {-1.5,0,0,"Left"},
    {1.5,0,0,"Right"}
    };
    };
    
    class MetalGate_DZ {
    snapTo[] = {
    "MetalGate_DZ"
    };
    radius = 5;
    points[] = {
    {0,0,0,"Pivot"},
    {-4.1,0,0,"Left"}
    };
    };
    
    class StickFence_DZ {
    snapTo[] = {
    "StickFence_DZ"
    };
    radius = 10;
    points[] = {
    {0,0,0,"Pivot"},
    {-2.95,0,0.3,"Left"},
    {2.95,0,0.3,"Right"}
    };
    };
    
    class Fence_corrugated_DZ {
    snapTo[] = {
    "Fence_corrugated_DZ"
    };
    radius = 10;
    points[] = {
    {0,0,0,"Pivot"},
    {-1.95,0,0.88,"Left"},
    {1.95,0,0.88,"Right"}
    };
    };
    
    class WoodRamp_Preview_DZ {
    snapTo[] = {
    "WoodRamp_DZ"
    };
    radius = 7;
    points[] = {
    {0,0,0,"Pivot"},
    {0.65,-1.7,1.2,"Back"},
    {0.65,1.5,1.2,"Front"},
    {3.34,-0.115,2.82,"Top"}
    };
    };
    class WoodRamp_DZ: WoodRamp_Preview_DZ{};
    
    class WoodLadder_Preview_DZ {
    snapTo[] = {
    "WoodLadder_DZ"
    };
    radius = 5;
    points[] = {
    {0,0,0,"Pivot"},
    {-0.4,0,1.725,"Left"},
    {0.4,0,1.725,"Right"}
    };
    };
    class WoodLadder_DZ: WoodLadder_Preview_DZ{};
    
    class VaultStorageLocked {
    snapTo[] = {
    "VaultStorageLocked",
    "VaultStorage"
    };
    radius = 5;
    points[] = {
    {0,0,0,"Pivot"},
    {0,0.284,0.615,"Back"},
    {0,0,1.23,"Top"},
    {-0.362,0,0.615,"Left"},
    {0.362,0,0.615,"Right"}
    };
    
    };
    class VaultStorage: VaultStorageLocked {};
    };

×
×
  • Create New...