Jump to content

[Release] 2.1 Plot Management - UPDATED Object Counter


Zupa

Recommended Posts

Should I also change in private also_intentory? (server_monitor.sqf)

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"];

 

Link to comment
Share on other sites

14 minutes ago, GamerTV said:

Should I also change in private also_intentory? (server_monitor.sqf)


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"];

 

into private and everywhere.  

just open your note++  choose  "Search------->Replace".

"Find What: _intentory" 

"Replace with: _inventory" 

thers almost 14 words to change

Link to comment
Share on other sites

3 hours ago, juandayz said:
4 hours ago, GamerTV said:

Should I also change in private also_intentory? (server_monitor.sqf)



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"];

 

into private and everywhere.  

just open your note++  choose  "Search------->Replace".

"Find What: _intentory" 

"Replace with: _inventory" 

thers almost 14 words to change

THX !!! you are the best

Link to comment
Share on other sites

Hey guys. I'm not very good at coding. Is there a way to automatically add the owner to the plot pole? To somehow have "call PlotAddFriend;" after placing the plot pole or something? I can't find where the code is that says "you have placed a 30m plot pole" but i figured i could copy that file to my mpmissioncache and add "add PlotAddFriend;" to it or something. Maybe this is a weird way to do it. Any suggestions to auto add the owner?

My other Idea was to use the PlayerBuild.sqf that is already in Snap_Pro folder and maybe do 

// check if friendly to owner
	if(dayz_characterID == _ownerID) then {  //Keep ownership
		// owner can build anything within his plot except other plots
		if(!_isPole) then {
			_canBuildOnPlot = true;
			call PlotAddFriend;
		};

Would that work maybe?

Link to comment
Share on other sites

7 hours ago, Brody said:

and 6 to

 

step 6 do not need chhanges... for step 7 you need go back to step 5. see:

Zupa´s say : "Remember to change the paths to any files you've moved to your mission folder!"

thats means you need copy from  @Dayz_Epoch\addons\dayz_code\actions\ this files:

Spoiler

player_upgrade.sqf

player_buildingDowngrade.sqf

player_build.sqf"// if ure using snap pro. u already have it. modify this file from snap_pro folder.

 

onces you make this copy and paste into for example : MPMISSIONS\YOUR INSTANCE\plotManagement\

go to your Custom fn_selfActions.sqf and find :

 

Spoiler

player_buildingDowngrade.sqf

&

player_build.sqf

 


to change paths like  lines in blue:

Spoiler

s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "plotManagement\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];

s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "plotManagement\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];

 

for player_build.sqf   if u have snap pro, you have this call in your CUSTOM compiles.sqf

player_build =              compile preprocessFileLineNumbers "custom\snap_pro\player_build.sqf";
 
 

***if u dont have snap pro, then copy and paste a player_build from  @Dayz_Epoch\addons\dayz_code\actions\ in "plotManagement" folder and into your custom compiles.sqf paste this lines in blue.

Spoiler

 player_sleep =                 compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf";
    player_antiWall =            compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf";
    player_deathBoard =            compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf";
    player_build =              compile preprocessFileLineNumbers "plotManagement\player_build.sqf";
    
   

now u can do it the step 7

Spoiler

STEP 7 (Modifying player_build.sqf, player_upgrade.sqf, and player_buildingDowngrade.sqf)
ALL THREE OF THESE FILES NEED THE SAME EDIT, MAKE SURE YOU DO ALL FILES!!!!
Find


_friendlies     = player getVariable ["friendlyTo",[]];
// check if friendly to owner
if(_ownerID in _friendlies) then {
    _canBuildOnPlot = true;
};

Replace that with


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

**for step 7: this chnges goes into the recent copied and pasted files. for this example the files are located into plotManagement folder-

Link to comment
Share on other sites

11 hours ago, juandayz said:

step 6 do not need chhanges... for step 7 you need go back to step 5. see:

Zupa´s say : "Remember to change the paths to any files you've moved to your mission folder!"

thats means you need copy from  @Dayz_Epoch\addons\dayz_code\actions\ this files:

  Hide contents

player_upgrade.sqf

player_buildingDowngrade.sqf

player_build.sqf"// if ure using snap pro. u already have it. modify this file from snap_pro folder.

 

onces you make this copy and paste into for example : MPMISSIONS\YOUR INSTANCE\plotManagement\

go to your Custom fn_selfActions.sqf and find :

 

  Hide contents

player_buildingDowngrade.sqf

&

player_build.sqf

 


to change paths like  lines in blue:

  Hide contents

s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "plotManagement\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];

s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "plotManagement\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];

 

for player_build.sqf   if u have snap pro, you have this call in your CUSTOM compiles.sqf


player_build =              compile preprocessFileLineNumbers "custom\snap_pro\player_build.sqf";
 
 

***if u dont have snap pro, then copy and paste a player_build from  @Dayz_Epoch\addons\dayz_code\actions\ in "plotManagement" folder and into your custom compiles.sqf paste this lines in blue.

  Hide contents

 player_sleep =                 compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf";
    player_antiWall =            compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf";
    player_deathBoard =            compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf";
    player_build =              compile preprocessFileLineNumbers "plotManagement\player_build.sqf";
    
   

now u can do it the step 7

  Hide contents

STEP 7 (Modifying player_build.sqf, player_upgrade.sqf, and player_buildingDowngrade.sqf)
ALL THREE OF THESE FILES NEED THE SAME EDIT, MAKE SURE YOU DO ALL FILES!!!!
Find



_friendlies     = player getVariable ["friendlyTo",[]];
// check if friendly to owner
if(_ownerID in _friendlies) then {
    _canBuildOnPlot = true;
};

Replace that with



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

**for step 7: this chnges goes into the recent copied and pasted files. for this example the files are located into plotManagement folder-

thank you very much man 

Link to comment
Share on other sites

1 hour ago, Brody said:

i have done everything that i needed to do but i dont get the blue  "manage plot" option i dont know why 

 

 

check step 8 in this guide. also take a look on steps 2,3 &4

Spoiler

 

for blue sroll option you need a custom fn selfactions.sqf and this part allow the option:

if (s_player_plotManagement < 0) then {
    _adminList = ["0152"]; // Add admins here if you admins to able to manage all plotpoles
    _owner = _cursorTarget getVariable ["CharacterID","0"];
    _friends = _cursorTarget getVariable ["plotfriends", []];
    _fuid = [];
    {
    _friendUID = _x select 0;
    _fuid = _fuid + [_friendUID];
    } forEach _friends;
    _allowed = [_owner];    
    _allowed = [_owner] + _adminList + _fuid;
    if(_owner == dayz_characterID || (getPlayerUID player) in _allowed)then{            
    s_player_plotManagement = player addAction ["<t color='#0059FF'>PLOT-MANAGE</t>", "plotManagement\initPlotManagement.sqf", [], 5, false];
    };
};

		 
	} else {
    player removeAction s_player_plotManagement;
    s_player_plotManagement = -1;
    };                            

 

Link to comment
Share on other sites

Hey, guys. I`ve install this mod, but have same problems... I can spawn, always kick to the lobby. RPT:
 

_dir = _worldspace select 0;
if (count (_worldspace select 1) == 3) then > 
5:46:18 Error position: <count (_worldspace select 1) == 3) then > 
5:46:18 Error count: Type String, expected Array,Config entry 
5:46:18 File z\addons\dayz_server\system\server_monitor.sqf, line 105 
5:46:30 "infiSTAR.de - Player-Log: DrTauren(76561198024876010) - 0h 00min | ******ADMIN******" 
5:46:49 "infiSTAR.de PlayerConnected: ["76561198024876010","DrTauren"]" 
5:46:49 "infiSTAR.de PlayerConnected: ["","__SERVER__"]" 
5:49:02 "infiSTAR.de PlayerDisconnected: _uid: 76561198024876010 _name: DrTauren" 
5:49:02 "get: STRING (76561198024876010), sent: STRING (76561198024876010)" 
5:49:02 "DISCONNECT: DrTauren (76561198024876010) Object: B 1-1-A:1 (DrTauren) REMOTE, _characterID: 0 at loc [-7244.94,19534.5,0]" 
5:49:02 "ERROR: Cannot Sync Character DrTauren as no characterID" 
5:49:02 Client: Remote object 2:9 not found 
5:49:02 Client: Remote object 2:10 not found 
5:49:02 Client: Remote object 2:11 not found 
5:49:02 Warning: Cleanup player - person 2:0 not found

Help me pls :dry:

Link to comment
Share on other sites

11 hours ago, DrTauren said:

Hey, guys. I`ve install this mod, but have same problems... I can spawn, always kick to the lobby. RPT:
 


_dir = _worldspace select 0;
if (count (_worldspace select 1) == 3) then > 
5:46:18 Error position: <count (_worldspace select 1) == 3) then > 
5:46:18 Error count: Type String, expected Array,Config entry 
5:46:18 File z\addons\dayz_server\system\server_monitor.sqf, line 105 
5:46:30 "infiSTAR.de - Player-Log: DrTauren(76561198024876010) - 0h 00min | ******ADMIN******" 
5:46:49 "infiSTAR.de PlayerConnected: ["76561198024876010","DrTauren"]" 
5:46:49 "infiSTAR.de PlayerConnected: ["","__SERVER__"]" 
5:49:02 "infiSTAR.de PlayerDisconnected: _uid: 76561198024876010 _name: DrTauren" 
5:49:02 "get: STRING (76561198024876010), sent: STRING (76561198024876010)" 
5:49:02 "DISCONNECT: DrTauren (76561198024876010) Object: B 1-1-A:1 (DrTauren) REMOTE, _characterID: 0 at loc [-7244.94,19534.5,0]" 
5:49:02 "ERROR: Cannot Sync Character DrTauren as no characterID" 
5:49:02 Client: Remote object 2:9 not found 
5:49:02 Client: Remote object 2:10 not found 
5:49:02 Client: Remote object 2:11 not found 
5:49:02 Warning: Cleanup player - person 2:0 not found

Help me pls :dry:

you have something wrong in

5:46:18 File z\addons\dayz_server\system\server_monitor.sqf, line 105

 

maybe this line?

5:46:18 Error position: <count (_worldspace select 1) == 3) then > 
Link to comment
Share on other sites

5 hours ago, juandayz said:

you have something wrong in


5:46:18 File z\addons\dayz_server\system\server_monitor.sqf, line 105

 

maybe this line?


5:46:18 Error position: <count (_worldspace select 1) == 3) then > 

 

5 hours ago, juandayz said:

you have something wrong in


5:46:18 File z\addons\dayz_server\system\server_monitor.sqf, line 105

 

maybe this line?


5:46:18 Error position: <count (_worldspace select 1) == 3) then > 

Yeah, u right. But what wrong with this code? It`s clear EPOCH with Infi. When i setup Plot Management - this bug begins. I dont know what to do with it. Sry for my bad english

Link to comment
Share on other sites

3 minutes ago, DrTauren said:

 

Yeah, u right. But what wrong with this code? It`s clear EPOCH with Infi. When i setup Plot Management - this bug begins. I dont know what to do with it. Sry for my bad english

the only change in server_monitor used for plotmanagement is:

STEP 8 This one is in your dayz_server.pbo (Modifying server_monitor.sqf)
8 A
Find

_object setVariable ["ObjectID", _idKey, true];

After that, add

if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then {
_object setVariable ["plotfriends", _intentory, true];
};

8 B
Find

if (count _intentory > 0) then {

Replace that with

if ((count _intentory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ")) then {

 

 

check all of this.. and remember all _intentory variables must be _inventory

Link to comment
Share on other sites

18 minutes ago, juandayz said:

the only change in server_monitor used for plotmanagement is:

STEP 8 This one is in your dayz_server.pbo (Modifying server_monitor.sqf)
8 A
Find


_object setVariable ["ObjectID", _idKey, true];

After that, add


if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then {
_object setVariable ["plotfriends", _intentory, true];
};

8 B
Find


if (count _intentory > 0) then {

Replace that with


if ((count _intentory > 0) && !(typeOf( _object) == "Plastic_Pole_EP1_DZ")) then {

 

 

check all of this.. and remember all _intentory variables must be _inventory

All codes like in guide, man. It`s all right. I dont understand what wrong with tgat

Link to comment
Share on other sites

@DrTauren replace your server_monitor.sqf with this and try:

Spoiler

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

    allowConnection = true;    
    sm_done = true;
    publicVariable "sm_done";
};

 

 

Link to comment
Share on other sites

On 11/21/2016 at 2:28 PM, looter809 said:

Hey guys. I'm not very good at coding. Is there a way to automatically add the owner to the plot pole? To somehow have "call PlotAddFriend;" after placing the plot pole or something? I can't find where the code is that says "you have placed a 30m plot pole" but i figured i could copy that file to my mpmissioncache and add "add PlotAddFriend;" to it or something. Maybe this is a weird way to do it. Any suggestions to auto add the owner?

My other Idea was to use the PlayerBuild.sqf that is already in Snap_Pro folder and maybe do 


// check if friendly to owner
	if(dayz_characterID == _ownerID) then {  //Keep ownership
		// owner can build anything within his plot except other plots
		if(!_isPole) then {
			_canBuildOnPlot = true;
			call PlotAddFriend;
		};

Would that work maybe?

 
 

I haven't tested this, just threw it together. Basically, just PlotAddFriend modified to add the builder to the plot.

 

Add this to the private array at the top of player_build.sqf (I used the default player_build.sqf from snap pro files)

,"_nearPlots", "_selectedPlot", "_onPlot", "_uidPlayer", "_playerName"

Then, find this line (the position of this may need to change - please test): 

cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"];

And add this under it:

if (_classname == "Plastic_Pole_EP1_DZ") then {
	_nearPlots = nearestObjects [player, ["Plastic_Pole_EP1_DZ"],15];
	_selectedPlot = _nearPlots select 0;
	_onPlot = _selectedPlot getVariable ["plotfriends",[]];
	_uidPlayer = getPlayerUID player;
	_playerName = name player;
	_onPlot = _onPlot  + [[_uidPlayer,_playerName]];
	_selectedPlot setVariable ["plotfriends", _onPlot, true];
	PVDZE_veh_Update = [_selectedPlot,"gear"];
	publicVariableServer "PVDZE_veh_Update";
	if (isServer) then {
		PVDZE_veh_Update call server_updateObject;
	};
};

Let me know if it works. Like I said though, I use plot 4 life so haven't tested this. If it does add you to the plot after you build it, restart and see if you stay on it. :)

Link to comment
Share on other sites

Just now, looter809 said:

@BigEgg Hey, thanks for getting back to me and helping a brother out. Tested it. Was very excited to see it automatically put my name on the friends list, but as you suspected after a restart the name was no longer there.

Okay - let me adjust the position of it. Will repost the new location shortly.

Link to comment
Share on other sites

1 minute ago, looter809 said:

Fastest response time ever! Alrighty, sounds good.

Try finding this code (around line 667):

_tmpbuilt setVariable ["CharacterID",dayz_characterID,true];

// fire?
if(_tmpbuilt isKindOf "Land_Fire_DZ") then {
	_tmpbuilt spawn player_fireMonitor;
} else {
	PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_vector],_classname];
	publicVariableServer "PVDZE_obj_Publish";
};

and replace all of that with:

_tmpbuilt setVariable ["CharacterID",dayz_characterID,true];

					if (_tmpbuilt isKindof "Plastic_Pole_EP1_DZ") then {
						PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_vector],_classname];
						publicVariableServer "PVDZE_obj_Publish";
						_nearPlots = nearestObjects [player, ["Plastic_Pole_EP1_DZ"],15];
						_selectedPlot = _nearPlots select 0;
						_onPlot = _selectedPlot getVariable ["plotfriends",[]];
						_uidPlayer = getPlayerUID player;
						_playerName = name player;
						_onPlot = _onPlot  + [[_uidPlayer,_playerName]];
						_selectedPlot setVariable ["plotfriends", _onPlot, true];
						PVDZE_veh_Update = [_selectedPlot,"gear"];
						publicVariableServer "PVDZE_veh_Update";
						if (isServer) then {
							PVDZE_veh_Update call server_updateObject;
						};
					} else {
						if(_tmpbuilt isKindOf "Land_Fire_DZ") then {
							_tmpbuilt spawn player_fireMonitor;
						} else {
							PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_vector],_classname];
							publicVariableServer "PVDZE_obj_Publish";
						};
					};

 

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...