Jump to content

[Release] 3.0 Door Management - No More Codes


Zupa

Recommended Posts

Ok.. not sure if anyone has noticed this.. also it could relate to some pictures I've seen while skimming through the 17 pages to see if someone has noticed this..

 

So when our players build a door / garage door etc.. and upgrade with a lock everything is good, sql Db updates with there Id and Name and they can manage it

 

BUT

 

If a player "crafts" a door way and upgrades it with a lock while its still in their inventory and then places it down ( the door comes with a lock on it ) the door does not have the players name or ID in the DB inventory to be managed..

 

Do I just have a old version, messed it up, forgot something or am I the first to notice this?

 

Draftkid Out!

Bump?

Link to comment
Share on other sites

Finally ive made progress on merging and getting p4l snap pro vector and door\plot management working, just 2 errors i run into that i need help with.

 

1. Door management "access" list resets after server restart

 

2. plot management's list does save, but the building rights is determined by if the player is tagged friendly with the owner.

 

Will gladly share server\mission files if anyone can offer assistance.

Link to comment
Share on other sites

I've tried to look through all the posts...either skimmed by it or it isn't asked.

 

I'm new to the scripting...just trying to help out the other scripters on our server.

 

I've go the DM installed and works great.  Tested it out on test server with some players.  The only thing is, how can only the "owner" manage the doors and not the "friends" on the list?  How can I prevent Owner from adding Player1 and then Player1 adding Player2?

 

I apologize if this has been asked before.

 

*Added*

 

If I only want the owner (or admin) to only have access to the manage door, do I have to edit the initDoorManagement.sqf file?  Or is it one of the variables file?  Like I said, I new to this.

 

TIA!

 

Simple Man

Link to comment
Share on other sites

I've tried to look through all the posts...either skimmed by it or it isn't asked.

 

I'm new to the scripting...just trying to help out the other scripters on our server.

 

I've go the DM installed and works great.  Tested it out on test server with some players.  The only thing is, how can only the "owner" manage the doors and not the "friends" on the list?  How can I prevent Owner from adding Player1 and then Player1 adding Player2?

 

I apologize if this has been asked before.

 

*Added*

 

If I only want the owner (or admin) to only have access to the manage door, do I have to edit the initDoorManagement.sqf file?  Or is it one of the variables file?  Like I said, I new to this.

 

TIA!

 

Simple Man

 

Bump  :)

Link to comment
Share on other sites

Alright...not going to worry about who can manage the doors, but I do have an error now.  I've put the script it.  I can start the server and test out the script.  If I reboot the server and try again, no one can join.

 

In the server error log, this is what I get:

23:23:33 Error in expression < _countr)];
};
_countr = _countr + 1;
} count _objWpnTypes; 


_objWpnTypes = (_>
23:23:33   Error position: <count _objWpnTypes; 


_objWpnTypes = (_>
23:23:33   Error count: Type String, expected Array
23:23:33 File mpmissions\__cur_mp.Chernarus\custom\server_monitor.sqf, line 222

According to the first thread, there are some stuff that needs to be added to this file.  I did that (believe misspelling in the example:  _intentory instead of _inventory).

 

Here is the area:  Starting line is 205 (comment of what it was) and the last line is 227.  Sorry, dont' know how to add line# in.

			//if ((count _inventory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ")) then {
			if ((count _inventory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ") && !(typeOf( _object) in  DZE_DoorsLocked)) then {	
				if (_type in DZE_LockedStorage) then {
					// Fill variables with loot
					_object setVariable ["WeaponCargo", (_inventory select 0),true];
					_object setVariable ["MagazineCargo", (_inventory select 1),true];
					_object setVariable ["BackpackCargo", (_inventory select 2),true];
				} else {

					//Add weapons
					_objWpnTypes = (_inventory select 0) select 0;
					_objWpnQty = (_inventory 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; 

Any ideas why?

 

Simple

Link to comment
Share on other sites

Alright...not going to worry about who can manage the doors, but I do have an error now.  I've put the script it.  I can start the server and test out the script.  If I reboot the server and try again, no one can join.

 

In the server error log, this is what I get:

23:23:33 Error in expression < _countr)];
};
_countr = _countr + 1;
} count _objWpnTypes; 


_objWpnTypes = (_>
23:23:33   Error position: <count _objWpnTypes; 


_objWpnTypes = (_>
23:23:33   Error count: Type String, expected Array
23:23:33 File mpmissions\__cur_mp.Chernarus\custom\server_monitor.sqf, line 222

According to the first thread, there are some stuff that needs to be added to this file.  I did that (believe misspelling in the example:  _intentory instead of _inventory).

 

Here is the area:  Starting line is 205 (comment of what it was) and the last line is 227.  Sorry, dont' know how to add line# in.

			//if ((count _inventory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ")) then {
			if ((count _inventory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ") && !(typeOf( _object) in  DZE_DoorsLocked)) then {	
				if (_type in DZE_LockedStorage) then {
					// Fill variables with loot
					_object setVariable ["WeaponCargo", (_inventory select 0),true];
					_object setVariable ["MagazineCargo", (_inventory select 1),true];
					_object setVariable ["BackpackCargo", (_inventory select 2),true];
				} else {

					//Add weapons
					_objWpnTypes = (_inventory select 0) select 0;
					_objWpnQty = (_inventory 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; 

Any ideas why?

 

Simple

 

Last attempt to see if I can get this working.  I did follow another post in this thread to try and resolve the issue, but still not having any luck.  I did google part of the error message and have seen others have this error...but not so much with this particular script.

 

Like I said before, first time loading script in server starts up fine.  If I add someone to the door and then restart the server, this is when the error appears.

 

There were 36 rows in object_data table that had the same ObjectUID.  I deleted those records but still didn't load.

 

Anyone have any idea?  I would really appreciate any help, if possible.

 

Simple

Link to comment
Share on other sites

So this is not working for server which do not use Plot for Life?

 

 

Entered codes to multiple doors and got "Eye Scan Failed" everytime, is there a fix? Im not using plot 4 life.

 

From page one, very first post.

 

First release ONLY for Plot 4 Life users. 

Link to comment
Share on other sites

Right-o. Works fine BUT safes are empty after restart. Rolling back server to previous iteration with everything else but door management and they work fine. The moment I add door management to the server, safes work as they should until restart and boom empty. Their contents do save to database but opening a safe after restart wipes it.

 

Any ideas where I should look?

 

Edit: dug a bit. In server_monitor.sqf, if I change (_inventory select 1) and (_inventory select 2) to zero in example below, safes work correctly but door management breaks.

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

//Add weapons
Link to comment
Share on other sites

  • 2 weeks later...

Getting this error after installing door management. Let me know what files you'd like to see!

 

This is my RPT File
 

Version 1.63.125548
Item STR_EQUIP_NAME_41 listed twice
Item STR_EQUIP_DESC_41 listed twice
Updating base class ->NonStrategic, by Ca\config.bin/CfgVehicles/HouseBase/
Updating base class ->HouseBase, by Ca\config.bin/CfgVehicles/Ruins/
Updating base class ->DestructionEffects, by Ca\config.bin/CfgVehicles/House/DestructionEffects/
Updating base class ->FlagCarrierCore, by ca\ca_pmc\config.bin/CfgVehicles/FlagCarrier/
Updating base class ->VehicleMagazine, by ca\weapons\config.bin/CfgMagazines/14Rnd_FFAR/
Updating base class ->PistolCore, by ca\weapons\config.bin/cfgWeapons/Pistol/
Updating base class ->LauncherCore, by ca\weapons\config.bin/cfgWeapons/RocketPods/
Updating base class ->RocketPods, by ca\weapons\config.bin/cfgWeapons/FFARLauncher/
Updating base class ->Default, by ca\weapons\config.bin/cfgWeapons/ItemCore/
Updating base class ->Citizen, by ca\characters2\config.bin/CfgVehicles/Citizen1/
Updating base class ->SkodaBase, by ca\wheeled\config.bin/CfgVehicles/car_sedan/
Updating base class ->UH60_Base, by ca\air\config.bin/CfgVehicles/MH60S/
Updating base class ->House, by ca\misc3\config.bin/CfgVehicles/Land_Fire/
Updating base class ->House, by ca\misc3\config.bin/CfgVehicles/Land_A_tent/
Updating base class ->Camp_base, by ca\misc3\config.bin/CfgVehicles/ACamp/
Updating base class ->Car, by ca\wheeled2\lada\config.bin/CfgVehicles/Lada_base/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lamp_Small_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lamp_Street1_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lamp_Street2_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lampa_Ind_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_PowLines_Conc2L_EP1/
Updating base class StreetLamp_BaseMediumOrange->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_sidl/
Updating base class StreetLamp_BaseMediumOrange->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_sidl_2/
Updating base class StreetLamp_BaseMediumOrange->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_sidl_3/
Updating base class StreetLamp_BaseWeakYellow->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_ind/
Updating base class StreetLamp_BaseWeakYellow->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_ind_zebr/
Updating base class RscStandardDisplay->, by z\addons\dayz_code\config.bin/RscDisplayStart/
Updating base class RscShortcutButton->RscShortcutButtonMain, by z\addons\dayz_code\config.bin/RscDisplayMain/controls/CA_Exit/
Updating base class RscText->, by z\addons\dayz_code\config.bin/RscTitles/Default/
Updating base class zZombie_Base->zZombie_new_Base, by z\addons\dayz_code\config.bin/CfgVehicles/z_villager1/
Updating base class zZombie_Base->zZombie_new_Base, by z\addons\dayz_code\config.bin/CfgVehicles/z_worker1/
Updating base class Soldier_Crew_PMC->Soldier_Bodyguard_M4_PMC, by z\addons\dayz_code\config.bin/CfgVehicles/SurvivorW2_DZ/
Updating base class HighCommand->Logic, by z\addons\dayz_code\config.bin/CfgVehicles/HighCommandSubordinate/
Updating base class ->ViewOptics, by z\addons\dayz_code\config.bin/CfgVehicles/Mi17_base/Turrets/MainTurret/ViewOptics/
Updating base class HouseBase->, by z\addons\dayz_code\config.bin/CfgVehicles/House/
Updating base class NonStrategic->BuiltItems, by z\addons\dayz_code\config.bin/CfgVehicles/Fort_RazorWire/
Updating base class MeleeHatchet->MeleeWeapon, by z\addons\dayz_code\config.bin/CfgWeapons/MeleeCrowbar/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/29Rnd_30mm_AGS30/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/48Rnd_40mm_MK19/
Updating base class 4000Rnd_762x51_M134->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/2000Rnd_762x51_M134/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/100Rnd_127x99_M2/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/50Rnd_127x107_DSHKM/
Updating base class Hatchet_Swing->Melee_Swing, by z\addons\dayz_code\config.bin/CfgMagazines/crowbar_swing/
Updating base class CA_Magazine->Melee_Swing, by z\addons\dayz_code\config.bin/CfgMagazines/Hatchet_Swing/
Updating base class Land_HouseV_1I2->House, by zero_buildings\config.cpp/CfgVehicles/Land_HouseV_1L2/
Updating base class Land_HouseV_1I2->House, by zero_buildings\config.cpp/CfgVehicles/Land_HouseV_3I3/
Updating base class ->Plane, by ca\air2\mv22\config.bin/CfgVehicles/MV22/
Updating base class ViewOptics->, by ca\air2\uh1y\config.bin/CfgVehicles/UH1_Base/Turrets/MainTurret/ViewOptics/
Updating base class ->HouseBase, by ca\misc_e\config.bin/CfgVehicles/House/
Updating base class ->Land_CamoNet_EAST, by ca\misc_e\config.bin/CfgVehicles/Land_CamoNet_EAST_EP1/
Updating base class ->Land_CamoNetB_EAST, by ca\misc_e\config.bin/CfgVehicles/Land_CamoNetB_EAST_EP1/
Updating base class ->Sign_1L_Noentry, by ca\misc_e\config.bin/CfgVehicles/Sign_1L_Noentry_EP1/
Updating base class ->Sign_circle, by ca\misc_e\config.bin/CfgVehicles/Helper_Base_EP1/
Updating base class ->Rifle, by ca\weapons_baf\config.bin/cfgWeapons/BAF_AS50_scoped/
Updating base class ->Rifle, by ca\weapons_e\config.bin/cfgWeapons/M60A4_EP1/
Updating base class ->M249, by ca\weapons_e\config.bin/cfgWeapons/M249_EP1/
Updating base class ->M249, by ca\weapons_e\config.bin/cfgWeapons/M249_m145_EP1/
Updating base class ->m107, by ca\weapons_e\m107\config.bin/CfgWeapons/m107_TWS_EP1/
Updating base class ->M240, by ca\weapons_e\m240\config.bin/CfgWeapons/m240_scoped_EP1/
Updating base class ->V3S_Base, by ca\wheeled_e\v3s\config.bin/CfgVehicles/V3S_Base_EP1/
Updating base class ->V3S_Base_EP1, by ca\wheeled_e\v3s\config.bin/CfgVehicles/V3S_Refuel_TK_GUE_EP1/
Updating base class House->DZE_OpenHouse, by warehouse\config.bin/CfgVehicles/Land_Ind_Pec_03/
Updating base class ->C130J_base, by ca\air_e\config.bin/CfgVehicles/C130J_US_EP1/
Updating base class ->Helicopter, by ca\air_e\ah6j\config.bin/CfgVehicles/AH6_Base_EP1/
Updating base class ->Plane, by ca\air_e\an2\config.bin/CfgVehicles/An2_Base_EP1/
Updating base class ->CH47_base_EP1, by ca\air_e\ch47\config.bin/CfgVehicles/CH_47F_EP1/
Updating base class ViewOptics->, by ca\air_e\uh1h\config.bin/CfgVehicles/UH1H_base/Turrets/MainTurret/ViewOptics/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_Crew_PMC/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_TL_PMC/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_Bodyguard_M4_PMC/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_Bodyguard_AA12_PMC/
Updating base class ->BAF_Soldier_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_W/
Updating base class ->BAF_Soldier_L_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_L_W/
Updating base class ->BAF_Soldier_Officer_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_Officer_W/
Updating base class ->BAF_Soldier_SniperH_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_SniperH_W/
Updating base class ->M113Ambul_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113Ambul_UN_EP1/
Updating base class ->M113_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113_UN_EP1/
Updating base class ->M113Ambul_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113Ambul_TK_EP1/
Updating base class ->M113_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113_TK_EP1/
Updating base class ->Helicopter, by ca\air_d_baf\config.bin/CfgVehicles/BAF_Merlin_HC3_D/
Obsolete class Animations defined in bin\config.bin/RscCompass/
Obsolete class Animations defined in bin\config.bin/RscWatch/
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:12 Server error: Player without identity Austin (id 1910424861)
 9:22:19 Strange convex component81 in zero_buildings\models\housev_3i3_i.p3d:geometryFire
 9:22:23 Strange convex component288 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component289 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component290 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component291 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component292 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component293 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component294 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component295 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component296 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component297 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component298 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component299 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component300 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component301 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component302 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component303 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component304 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component305 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component306 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component307 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component308 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component309 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component310 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component311 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component312 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component313 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component314 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component315 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component316 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component317 in warehouse\models\warehouse.p3d:geometry
 9:22:23 Strange convex component252 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component253 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component254 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component255 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component256 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component257 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component258 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component259 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component260 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component261 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component262 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component263 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component264 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component265 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component266 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component267 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component268 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component269 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component270 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component271 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component272 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component273 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component274 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component275 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component276 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component277 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component278 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component279 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component280 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component281 in warehouse\models\warehouse.p3d:geometryFire
 9:22:23 Strange convex component249 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component250 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component251 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component252 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component253 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component254 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component255 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component256 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component257 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component258 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component259 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component260 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component261 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component262 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component263 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component264 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component265 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component266 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component267 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component268 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component269 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component270 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component271 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component272 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component273 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component274 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component275 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component276 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component277 in warehouse\models\warehouse.p3d:geometryView
 9:22:23 Strange convex component278 in warehouse\models\warehouse.p3d:geometryView
 9:22:28 Warning: looped for animation: ca\anims\characters\data\anim\sdr\mov\erc\wlk\non\non\amovpercmwlksnonwnondf.rtm differs (looped now 0)! MoveName: amovpercmstpsnonwnondnon_amovpercmstpsraswpstdnon
 9:22:29 Warning: looped for animation: ca\anims\characters\data\anim\sdr\mov\erc\wlk\non\non\amovpercmwlksnonwnondf.rtm differs (looped now 1)! MoveName: amovpercmrunsnonwbindf_rfl
 9:22:29 "DayZ Epoch: PRELOAD Functions\init [[<No group>:0 (FunctionsManager)],any]"
 9:22:29 "DayZ Epoch: MPframework inited"
 9:22:33 Strange convex component93 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component94 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component95 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component96 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component99 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component100 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component101 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component102 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component103 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component104 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component105 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component106 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component107 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component108 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component109 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component110 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component111 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component112 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component113 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component114 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component115 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component116 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component117 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component118 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component119 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component120 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component121 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component122 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component123 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component124 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component125 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component126 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component127 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component128 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component129 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component130 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component131 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component132 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component133 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:33 Strange convex component134 in zero_buildings\models\mil_house_i.p3d:geometryView
 9:22:59 "Res3tting B!S effects..."
 9:22:59 "HIVE: Starting"
 9:22:59 "HIVE: trying to get objects"
 9:23:00 "HIVE: found 330 objects"
 9:23:00 "HIVE: Commence Object Streaming..."
 9:23:00 "HIVE: got 143 Epoch Objects and 187 Vehicles"
 9:23:01 Warning: z\addons\dayz_communityassets\models\compass.p3d:0 Error while trying to generate ST for points: 863, 853, 852
 9:23:02 No speaker given for Tyler Hutchinson
 9:23:09 UH1Y_DZE: ObsTurret - unknown animation source ObsTurret
 9:23:09 UH1Y_DZE: ObsGun - unknown animation source ObsGun
 9:23:09 AH6X_DZ: FLIR_turret - unknown animation source FLIR_turret
 9:23:09 AH6X_DZ: FLIR_gun - unknown animation source FLIR_gun
 9:23:11 Error in expression <n {
_object setVariable ["doorfriends", _intentory, true];
};
_object setVariabl>
 9:23:11   Error position: <_intentory, true];
};
_object setVariabl>
 9:23:11   Error Undefined variable in expression: _intentory
 9:23:11 File custom\system\server_monitor.sqf, line 140
 9:23:12 Error in expression <n {
_object setVariable ["doorfriends", _intentory, true];
};
_object setVariabl>
 9:23:12   Error position: <_intentory, true];
};
_object setVariabl>
 9:23:12   Error Undefined variable in expression: _intentory
 9:23:12 File custom\system\server_monitor.sqf, line 140

 

This is my server monitor

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
		{
			_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));
		};
		

		if (_damage < 1) then {
			//diag_log format["OBJ: %1 - %2", _idKey,_type];
			
			//Create it
			_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
            if (typeOf (_object) in  DZE_DoorsLocked) then {
                _object setVariable ["doorfriends", _intentory, true];
            };
			_object setVariable ["lastUpdate",time];
			_object setVariable ["ObjectID", _idKey, true];
            if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then {
            _object setVariable ["plotfriends", _intentory, 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;
			_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) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ") && !(typeOf( _object) in  DZE_DoorsLocked)) 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;
	};
ExecVM "\z\addons\dayz_server\WAI\init.sqf";
[] call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZAI\init\dzai_initserver.sqf";
	allowConnection = true;	
	sm_done = true;
	publicVariable "sm_done";
};

 

Where should I go?

 

Mods list

-Plot4Life

-SnapPro

-doorManagement

-plotManagement

-Enhanced Spawn Select

 

After a long time, I get this - 

 

2yzgcvq.jpg

Link to comment
Share on other sites

Ok.. not sure if anyone has noticed this.. also it could relate to some pictures I've seen while skimming through the 17 pages to see if someone has noticed this..

 

So when our players build a door / garage door etc.. and upgrade with a lock everything is good, sql Db updates with there Id and Name and they can manage it

 

BUT

 

If a player "crafts" a door way and upgrades it with a lock while its still in their inventory and then places it down ( the door comes with a lock on it ) the door does not have the players name or ID in the DB inventory to be managed..

 

Do I just have a old version, messed it up, forgot something or am I the first to notice this?

 

Draftkid Out!

I have this problem as well. Did you figure it out? 

Link to comment
Share on other sites

  • 2 weeks later...

Zupa,

 

I'm using Plot Management and your new 3.0 Coin Currency system which works great by the way.  I currently do not have Plot4Life implemented.   I'm have a little trouble with the Door Management script though.   Everything upgrades and I get the blue "Manage Door" menu but EYE SCAN fails like the door doesn't have an owner.  I have myself added to the Plot Management friends list.  If I try to "Manage Door" it states "You do not have rights to this manage" message.  Now, I specifically made sure under the player_upgrade.sqf to add the strip of code which is shown below along with being called inside my compiles file.  Any help would be greatly appreciated  :/

 

 

string calling within my compiles.sqf

player_upgrade =	compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_upgrade.sqf";

dayz_code\actions\player_upgrade.sqf

/*
	DayZ Base Building Upgrades
	Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].
*/
private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1","_combination_2","_combination_3","_combination","_objectCharacterID","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_distance","_needText","_findNearestPoles","_findNearestPole","_IsNearPlot"];

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_52") , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;

player removeAction s_player_upgrade_build;
s_player_upgrade_build = 1;


_distance = 30;
_needText = localize "str_epoch_player_246";

// check for near plot
_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance];
_findNearestPole = [];

{
	if (alive _x) then {
		_findNearestPole set [(count _findNearestPole),_x];
	};
} count _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

_canBuildOnPlot = false;

if(_IsNearPlot == 0) then {
	_canBuildOnPlot = true;
} else {
	
	// check nearby plots ownership && then for friend status
	_nearestPole = _findNearestPole select 0;

	// Find owner 
	_ownerID = _nearestPole getVariable["CharacterID","0"];

	// diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID];

	// check if friendly to owner
	if(dayz_characterID == _ownerID) then {
		_canBuildOnPlot = true;		
	} else {
	
		_friendlies = _nearestPole getVariable ["plotfriends",[]];
		_fuid  = [];
{
      _friendUID = _x select 0;
      _fuid  =  _fuid  + [_friendUID];
} forEach _friendlies;
_builder  = getPlayerUID player;
// check if friendly to owner
if(_builder in _fuid) then {
    _canBuildOnPlot = true;
};


	};
};

// exit if not allowed due to plot pole
if(!_canBuildOnPlot) exitWith {  DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_157"),_needText,_distance] , "PLAIN DOWN"]; };

// get cursortarget from addaction
_obj = _this select 3;

// Find objectID
_objectID 	= _obj getVariable ["ObjectID","0"];

// Find objectUID
_objectUID	= _obj getVariable ["ObjectUID","0"];

if(_objectID == "0" && _objectUID == "0") exitWith {DZE_ActionInProgress = false; s_player_upgrade_build = -1; cutText [(localize "str_epoch_player_50"), "PLAIN DOWN"];};

// Get classname
_classname = typeOf _obj;

// Find display name
_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");

// Find next upgrade
_upgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "upgradeBuilding");

if ((count _upgrade) > 0) then {

	_newclassname = _upgrade select 0;

	_lockable = 0;
	if(isNumber (configFile >> "CfgVehicles" >> _newclassname >> "lockable")) then {
		_lockable = getNumber(configFile >> "CfgVehicles" >> _newclassname >> "lockable");
	};

	_requirements = _upgrade select 1;
	
	_missingQty = 0;
	_missing = "";
	
	_proceed = true;
	{
		_itemIn = _x select 0;
		_countIn = _x select 1;
		_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
		if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
	} forEach _requirements;
	
	if (_proceed) then {
		[1,1] call dayz_HungerThirst;
		player playActionNow "Medic";
		[player,20,true,(getPosATL player)] spawn player_alertZombies;
	
		_temp_removed_array = [];
		_removed_total = 0;
		_tobe_removed_total = 0;
		
		{
			_removed = 0;
			_itemIn = _x select 0;
			_countIn = _x select 1;
			// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
			_tobe_removed_total = _tobe_removed_total + _countIn;

			{					
				if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
					_num_removed = ([player,_x] call BIS_fnc_invRemove);
					_removed = _removed + _num_removed;
					_removed_total = _removed_total + _num_removed;
					if(_num_removed >= 1) then {
						_temp_removed_array set [count _temp_removed_array,_x];
					};
				};
		
			} forEach magazines player;

		} forEach _requirements;

		// all parts removed proceed
		if (_tobe_removed_total == _removed_total) then {
			
			// Get position
			_location	= _obj getVariable["OEMPos",(getposATL _obj)];

			// Get direction
			_dir = getDir _obj;

			// Current charID
			_objectCharacterID 	= _obj getVariable ["CharacterID","0"];

			_classname = _newclassname;
			
			// Create new object 
			_object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"];

			// Set direction
			_object setDir _dir;

			// Set location
			_object setPosATL _location;

			if (_lockable == 3) then {

				_combination_1 = floor(random 10);
				_combination_2 = floor(random 10);
				_combination_3 = floor(random 10);
				_combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];
				
				_objectCharacterID = _combination;
				
				cutText [format[(localize "str_epoch_player_158"),_combination,_text], "PLAIN DOWN", 5];
			} else {	
				cutText [format[(localize "str_epoch_player_159"),_text], "PLAIN DOWN", 5];
			};

			PVDZE_obj_Swap = [_objectCharacterID,_object,[_dir,_location],_classname,_obj,player];
			publicVariableServer "PVDZE_obj_Swap";

			player reveal _object;
			
	//Door Management
		_friendUID = getPlayerUID player;
		_friendName = name  player;
		_friends = [[_friendUID,_friendName]] ; 


		_object setVariable ["doorfriends", _friends, true];
		PVDZE_veh_Update = [_object,"gear"];
		publicVariableServer "PVDZE_veh_Update";
		PVDZE_veh_Update call server_updateObject;
	//Door Management End
			
		} else {
		
			{player addMagazine _x;} count _temp_removed_array;
			cutText [format[(localize "str_epoch_player_145"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];
		
		};
	} else {
		_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
		cutText [format[(localize "str_epoch_player_146"),_missingQty, _textMissing], "PLAIN DOWN"];
	};

} else {
	cutText [(localize "str_epoch_player_82"), "PLAIN DOWN"];
};

DZE_ActionInProgress = false;
s_player_upgrade_build = -1;
Link to comment
Share on other sites

Any update on the allowed players list not saving over restart - issue? Allthough technically they are saved, I can see the names saved in the database but the eyescan proceeds to fail for them (not the owner). 
using p4l 2.5 if that matters =/

Link to comment
Share on other sites

 

Zupa,

 

I'm using Plot Management and your new 3.0 Coin Currency system which works great by the way.  I currently do not have Plot4Life implemented.   I'm have a little trouble with the Door Management script though.   Everything upgrades and I get the blue "Manage Door" menu but EYE SCAN fails like the door doesn't have an owner.  I have myself added to the Plot Management friends list.  If I try to "Manage Door" it states "You do not have rights to this manage" message.  Now, I specifically made sure under the player_upgrade.sqf to add the strip of code which is shown below along with being called inside my compiles file.  Any help would be greatly appreciated  :/

 

First page, first post.

 

First release ONLY for Plot 4 Life users.

Link to comment
Share on other sites

Getting this error after installing door management. Let me know what files you'd like to see!

 

This is my RPT File

 

Fixed it for you : 

 

private ["_nul","_result","_pos","_wsDone","_dir","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_inventory","_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;
_inventory = _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
{
_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));
};
 
 
if (_damage < 1) then {
//diag_log format["OBJ: %1 - %2", _idKey,_type];
 
//Create it
_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
            if (typeOf (_object) in  DZE_DoorsLocked) then {
                _object setVariable ["doorfriends", _inventory, true];
            };
_object setVariable ["lastUpdate",time];
_object setVariable ["ObjectID", _idKey, true];
            if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then {
            _object setVariable ["plotfriends", _inventory, 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;
_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 _inventory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ") && !(typeOf( _object) in  DZE_DoorsLocked)) then {
if (_type in DZE_LockedStorage) then {
// Fill variables with loot
_object setVariable ["WeaponCargo", (_inventory select 0),true];
_object setVariable ["MagazineCargo", (_inventory select 1),true];
_object setVariable ["BackpackCargo", (_inventory select 2),true];
} else {
 
//Add weapons
_objWpnTypes = (_inventory select 0) select 0;
_objWpnQty = (_inventory 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 = (_inventory select 1) select 0;
_objWpnQty = (_inventory 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 = (_inventory select 2) select 0;
_objWpnQty = (_inventory 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;
};
execVM "\z\addons\dayz_server\WAI\init.sqf";
execVM "\z\addons\dayz_server\DZAI\init\dzai_initserver.sqf";
allowConnection = true; 
sm_done = true;
publicVariable "sm_done";
};

Link to comment
Share on other sites

First page, first post.

 

First release ONLY for Plot 4 Life users.

ElDubya,

If you noticed the last portion of the tutorial states "VERY IMPORTANT FOR NON P4L USERS" which from my understanding means it will work for non P4L servers. The code they provided for us non P4L users specifically is supposed to provide an OwnerID to the owner that upgrades the door, thus giving that owner access to the Manage Door feature. That is where I'm having trouble..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...