Jump to content

[Release] 2.1 Plot Management - UPDATED Object Counter


Zupa

Recommended Posts

So I've recently moved my server over to a dedicated box and we're just noticing a bit of a problem For some reason, the plot management is not showing that objects need to be maintained. However, the bases are still decaying and being removed.

Here is the database query I use
UPDATE `Object_DATA` SET `Damage`=0.11 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') )

UPDATE `Object_DATA` SET `Damage`=0.11 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') )

I noticed my HiveExt.ini had to cleanup commented out.

;CleanupPlacedAfterDays = 14

I also have


DZE_DamageBeforeMaint = 0.11;

in my init.sqf but still no option to maintain. I checked the objects in the database and they definitely should have a maintenance option.

I haven't made any changes to plot management that Im aware of and I never had this issues on my old server.

Any help would be huge thanks!

Link to comment
Share on other sites

Are you sure it has taken damage so that it can be maintained otherwise it will show as 0 parts in range (normally shows after 3 days )

are you able to see and use other feature like add friends to plot (If not check infistar and white list IDD)

Try to maintain without plot management just to see the cuz of it 

 

Link to comment
Share on other sites

9 hours ago, Akku14 said:

Are you sure it has taken damage so that it can be maintained otherwise it will show as 0 parts in range (normally shows after 3 days )

are you able to see and use other feature like add friends to plot (If not check infistar and white list IDD)

Try to maintain without plot management just to see the cuz of it 

 

Yes it seems that my database events aren't running.. they're scheduled to run but just aren't. Any ideas? I can run them manually as queries but they scheduled events aren't running.

Link to comment
Share on other sites

5 hours ago, DangerRuss said:

Yes it seems that my database events aren't running.. they're scheduled to run but just aren't. Any ideas? I can run them manually as queries but they scheduled events aren't running.

Just copy the event 

/* Set Damage on all other objects */
UPDATE `Object_DATA`
SET `Damage`=0.2
WHERE `ObjectUID` <> 0
AND `CharacterID` <> 0
AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY)
AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') );

Run it as SQl query  restart server and see if does sets the damage make correction in events then 

Link to comment
Share on other sites

Script is working fine. But since the install, players do not get the "check wallet" option on dead players/ ai. 

I'm using the Zupa SC with Souls 2.0 found here http://epochmod.com/forum/topic/17675-release-single-currency-souls-20-with-fixes-all-in-one-and-more-v05/

I installed Plot for Life from here : http://epochmod.com/forum/topic/11042-release-a-plot-for-life-v25-keep-your-buildables-on-death-take-plot-ownership/

I do not see any errors in the server .rpt, in the client.rpt I am finding

Error in expression <;
call PlotGetFriends;
["preview"] call MaintainPlot;
call PlotObjects;
>
  Error position: <MaintainPlot;
call PlotObjects;
>
  Error Undefined variable in expression: maintainplot
File mpmissions\__CUR_MP.Chernarus\plotManagement\initPlotManagement.sqf, line 4

 

Any Ideas what could have caused that to disappear?

Link to comment
Share on other sites

9 hours ago, Daddy Kropp said:

Script is working fine. But since the install, players do not get the "check wallet" option on dead players/ ai. 

I'm using the Zupa SC with Souls 2.0 found here http://epochmod.com/forum/topic/17675-release-single-currency-souls-20-with-fixes-all-in-one-and-more-v05/

I installed Plot for Life from here : http://epochmod.com/forum/topic/11042-release-a-plot-for-life-v25-keep-your-buildables-on-death-take-plot-ownership/

I do not see any errors in the server .rpt, in the client.rpt I am finding

Error in expression <;
call PlotGetFriends;
["preview"] call MaintainPlot;
call PlotObjects;
>
  Error position: <MaintainPlot;
call PlotObjects;
>
  Error Undefined variable in expression: maintainplot
File mpmissions\__CUR_MP.Chernarus\plotManagement\initPlotManagement.sqf, line 4

 

Any Ideas what could have caused that to disappear?

 

The function is never 'MaintainPlot' defined.  Check if it excists in your compiles i think? ( been too long to know by head where it is compiled).

ABout the wallet. That means you deleted it out of the fn_selfactions file and should readd it. Compare the files to see where it went away.

Link to comment
Share on other sites

3 hours ago, V1ruz said:

Getting a Resource plotmanagement not found can't seem to figure out why. only getting it on the menu when i click on it. doesn't show friends or anything.

 

 

 

you didn't add the define file call to description.ext or haven't put the file in properly

Link to comment
Share on other sites

  • 5 weeks later...

*****FOR PLAYERS WITH ISSUES ABOUT INSTALL GUIDE*************

 

***NON Plot4 life***

**IF YOU DONT HAVE CUSTOM COMPILES-VARIABLES-FN_SELFACTIONS.sqf

Spoiler

First you will need a custom compiles.sqf, fn_selfactions.sqf, and variables.sqf. i u dont have it. create a folder called "custom" in ServerRoot\mpmissions\yourinstance\   then goes to @Dayz_Epoch\addons\dayz_code\init\ and copy & paste to your "custom" folder the sqf called compiles.sqf and variables.sqf

now go to @Dayz_Epoch\addons\dayz_code\compiles\ and do the same for fn_selfactions.sqf

Well, we need call this customs files trough init,sqf   find variables.sqf and compiles.sqf and replace the paths for this line in blue, and add the fn_selfactions.sqf call.

Spoiler

//Load in compiled functions
call compile preprocessFileLineNumbers "custom\variables.sqf";                //Initilize the Variables (IMPORTANT: Must happen very early)
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf";                //Initilize the publicVariable event handlers
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf";    //Functions used by CLIENT for medical
progressLoadingScreen 0.4;
call compile preprocessFileLineNumbers "custom\compiles.sqf";    //Compile regular functions
/*ZSC*/    
call compile preprocessFileLineNumbers "ZSC\gold\ZSCinit.sqf";
/*ZSC*/            
call compile preprocessFileLineNumbers "overwrites\click_actions\init.sqf";
progressLoadingScreen 0.5;
call compile preprocessFileLineNumbers "server_traders_cherno_11.sqf";                //Compile trader configs
call compile preprocessFileLineNumbers "admintools\config.sqf"; // Epoch admin Tools config file
call compile preprocessFileLineNumbers "admintools\variables.sqf"; // Epoch admin Tools variables
call compile preprocessFileLineNumbers "logistic\init.sqf";// TOW Y LIFT
progressLoadingScreen 1.0;

fnc_usec_selfActions = compile preprocessFileLineNumbers "custom\fn_selfActions.sqf";

**Once you have it, u need go to your custom compiles.sqf find and delte the fn_Selfactions.sqf call.

 

*Steps 1 & 2 same as zupa´s guide.

Spoiler

STEP 1 (Copying Files)

First, unpack your mission file.
Now copy the "plotManagement" folder to your mission directory.

STEP 2 (Modifying description.ext)
At the bottom, add


#include "plotManagement\defines.hpp"
#include "plotManagement\plotManagement.hpp"

Note If you already have a custom defines.hpp don't use ours.

*STEP 3:

into  compiles.sqf:
Add lines in blue bellow : if (!isDedicated) then {

Spoiler

if (!isDedicated) then {

   /*Plot*/
    PlotGetFriends      = compile preprocessFileLineNumbers "plotManagement\plotGetFriends.sqf";
    PlotNearbyHumans    = compile preprocessFileLineNumbers "plotManagement\plotNearbyHumans.sqf";
    PlotAddFriend       = compile preprocessFileLineNumbers "plotManagement\plotAddFriend.sqf";
    PlotRemoveFriend    = compile preprocessFileLineNumbers "plotManagement\plotRemoveFriend.sqf";
    MaintainPlot        = compile preprocessFileLineNumbers "plotManagement\maintain_area.sqf";
    PlotPreview            = compile preprocessFileLineNumbers "plotManagement\plotToggleMarkers.sqf";
    PlotObjects         = compile preprocessFileLineNumbers "plotManagement\plotObjects.sqf"; // NEW
    /*Plot End*/

*Step 4: same as zupa´s guide.

Spoiler

STEP 4 (Modifying variables.sqf)
After


//Player self-action handles
dayz_resetSelfActions = {

Add


s_player_plotManagement = -1;

*Step 5 A & B  same as Zupa´s guide:

Spoiler

STEP 5 (Modifying fn_selfActions.sqf)
5 A
Find


if (s_player_maintain_area < 0) then {

Above that, add


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'>Manage Plot</t>", "plotManagement\initPlotManagement.sqf", [], 5, false];
    };
};

5 B
Find


} else {
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

Replace that with


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

*Step 5-C //Out of the Zupa´s Guide. (taked from a post of @ElDubya) //this is for players who have problems to remove modulars.
Find

Spoiler

//Allow owners to delete modulars if(_isModular && (dayz_characterID == _ownerID)) then { if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then { _player_deleteBuild = true; }; }; //Allow owners to delete modular doors without locks if(_isModularDoor && (dayz_characterID == _ownerID)) then { if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then { _player_deleteBuild = true; }; };

Replace with :

Spoiler

///Allow owners to delete modulars
if(_isModular) then {
        if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
            _findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], DZE_PlotPole select 0];
            _IsNearPlot = count (_findNearestPoles);
            _fuid  = [];
            _allowed = [];
            if(_IsNearPlot > 0)then{
                _thePlot = _findNearestPoles select 0;
                _owner =  _thePlot getVariable ["CharacterID","010"];
                _friends = _thePlot getVariable ["plotfriends", []];
                {
                  _friendUID = _x select 0;
                  _fuid  =  _fuid  + [_friendUID];
                } forEach _friends;
                _allowed = [_owner];    
                _allowed = [_owner] +  _fuid;   
                if (_owner == dayz_characterID || (getPlayerUID player) in _allowed) then {  // // If u want that the object also belongs to someone on the plotpole.
                    _player_deleteBuild = true;
                };                  
            }else{
                if(_owner == dayz_characterID)then{
                    _player_deleteBuild = true;
                };
            };                                        
        };
};
//Allow owners to delete modular doors without locks
if(_isModularDoor) then {
        if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {         
            _findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], DZE_PlotPole select 0];
            _IsNearPlot = count (_findNearestPoles);
            _fuid  = [];
            _allowed = [];
            if(_IsNearPlot > 0)then{
                _thePlot = _findNearestPoles select 0;
                _owner =  _thePlot getVariable ["CharacterID","010"];
                _friends = _thePlot getVariable ["plotfriends", []];
                {
                  _friendUID = _x select 0;
                  _fuid  =  _fuid  + [_friendUID];
                } forEach _friends;
                _allowed = [_owner];    
                _allowed = [_owner] +  _fuid;   
                if (_owner == dayz_characterID || (getPlayerUID player) in _allowed) then { //  // If u want that the object also belongs to someone on the plotpole.
                    _player_deleteBuild = true;
                };                  
            }else{
                if(_owner == dayz_characterID)then{
                    _player_deleteBuild = true;
                };
            };                              
        };      
};

***Note: if u wanna remove the default maintain in red...  delete this part.

Spoiler

if (s_player_maintain_area < 0) then {
              s_player_maintain_area = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTAREA"], "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];
             s_player_maintain_area_preview = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTPREV"], "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
         };

**Step 5 D: same as zupa´s guide.

Spoiler

5 D
Find


} else {
    //Engineering

After that, add


player removeAction s_player_plotManagement;
s_player_plotManagement = -1;

**Step 5 E. (out of Zupa´s guide)

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

Spoiler

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

 

**Step 6 As Zupa´s guide.

Spoiler

STEP 6 (Modifying remove.sqf)

NO CHANGES NEEDED, the effect has been realised in 5 C. RESTORE TO THE NORMAL REMOVES.SQF

**STEP 7 as Zupa´s say:

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-

*STEP 8 A as zupa´s guide but: (_intentory must be _inventory) // (just copy and paste i change it for you)

Spoiler

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", _inventory, true];
};

*STEP -8 B as Zupa´s guide but: (_intentory must be _inventory) // (just copy and paste i change it for you)

 

Spoiler

Find


if (count _intentory > 0) then {

Replace that with


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

 

*****Change all words called intentory by inventory into server_monitor.sqf

**NOTE: Take care about server_monitor.sqf  some others mods uses it outside from dayz_server.pbo  if ure not shure.. go to your init.sqf and find:

Spoiler

_serverMonitor =     [] execVM "\z\addons\dayz_server\system\server_monitor.sqf"; // thats means you have your server_monitor into your dayz_server.pbo

_serverMonitor =     [] execVM "custom\system\server_monitor.sqf";  // means you have server_monitor out of dayz_server.pbo

** and remember repack the pbo if u have into.

**STEP 9: As Zupa´s guide:

Spoiler

STEP 9 Again, this is in your dayz_server.pbo (Modifying server_updateObject.sqf)
Find


_inventory = [
getWeaponCargo _object,
getMagazineCargo _object,
getBackpackCargo _object
];

Replace that with


if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then{
    _inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item
} else {
    _inventory = [
    getWeaponCargo _object,
    getMagazineCargo _object,
    getBackpackCargo _object
    ];
};

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

**if u have problems with objet counter then  (taked from @BigEgg post)

open plotObjects.sqf  located in plotManagement folder and.

replace:

_range = DZE_PlotPole select 0;
_count = count ((getPosATL player) nearObjects ["All",_range]);

for

_range = DZE_PlotPole select 0;
_cptarget = player;
_objectClasses = DZE_maintainClasses;
_objects = nearestObjects [_cptarget, _objectClasses, _range];
 
_objectsnearcount = count _objects;
_count = _objectsnearcount;

 

***in your custom variables.sqf  you can find and change:

if(isNil "DZE_DamageBeforeMaint") then {
    DZE_DamageBeforeMaint = 0.9;
};

for

if(isNil "DZE_DamageBeforeMaint") then {
    DZE_DamageBeforeMaint = 0.1; //or 0 to get maintain option all time.
};

 

***into your serverroot/instance_11.chernarus or other/  find and open your HiveExt.ini

change this line:

Spoiler

CleanupPlacedAfterDays = -1   // remove the , at start of the line. and place -1

**and remember sql damageonage events.

Link to comment
Share on other sites

19 hours ago, juandayz said:

_inventory = [ getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object ];

i can´t find this line in my server_updateObject.sqf.

and if i try to place it inside it just gives me an error in my RPT.

Also it only shows as humans nearb only me and the id´s don´t get saved into db.

thanks in advance

Link to comment
Share on other sites

48 minutes ago, Cherdenko said:

i can´t find this line in my server_updateObject.sqf.

and if i try to place it inside it just gives me an error in my RPT.

Also it only shows as humans nearb only me and the id´s don´t get saved into db.

thanks in advance

Spoiler

_object_inventory = {
    private["_inventory","_previous","_key"];

        if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then{
    _inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item

} else {
        _inventory = [
            getWeaponCargo _object,
            getMagazineCargo _object,
            getBackpackCargo _object

            /*ZSC*/
            , _object getVariable["bankMoney",0]
            /*ZSC*/

        ];
        };

find this lines around Line 65.

*in red: original lines from server_updateobjet.sqf

*in blue: plotmanagement lines.

*Orange: ZSC lines.

Link to comment
Share on other sites

5 hours ago, juandayz said:
  Hide contents

_object_inventory = {
    private["_inventory","_previous","_key"];

        if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then{
    _inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item

} else {
        _inventory = [
            getWeaponCargo _object,
            getMagazineCargo _object,
            getBackpackCargo _object

            /*ZSC*/
            , _object getVariable["bankMoney",0]
            /*ZSC*/

        ];
        };

find this lines around Line 65.

*in red: original lines from server_updateobjet.sqf

*in blue: plotmanagement lines.

*Orange: ZSC lines.

Nothing of that is in my sqf file

not even:

        _inventory = [
            getWeaponCargo _object,
            getMagazineCargo _object,
            getBackpackCargo _object
]

 

Below is my server_updateObject.sqf

Spoiler

^

/*
[_object,_type] spawn server_updateObject;
*/
private ["_object","_type","_objectID","_uid","_lastUpdate","_needUpdate","_object_position","_object_inventory","_object_damage","_isNotOk","_parachuteWest","_firstTime","_object_killed","_object_repair","_isbuildable"];

_object =     _this select 0;

if(isNull(_object)) exitWith {
    diag_log format["Skipping Null Object: %1", _object];
};

_type =     _this select 1;
_parachuteWest = ((typeOf _object == "ParachuteWest") || (typeOf _object == "ParachuteC"));
_isbuildable = (typeOf _object) in dayz_allowedObjects;
_isNotOk = false;
_firstTime = false;

_objectID =    _object getVariable ["ObjectID","0"];
_uid =         _object getVariable ["ObjectUID","0"];


if ((typeName _objectID != "string") || (typeName _uid != "string")) then
{
    diag_log(format["Non-string Object: ID %1 UID %2", _objectID, _uid]);
    //force fail
    _objectID = "0";
    _uid = "0";
};
if (!_parachuteWest && !(locked _object)) then {
    if (_objectID == "0" && _uid == "0") then
    {
        _object_position = getPosATL _object;
        _isNotOk = true;
    };
};


// do not update if buildable && not ok
if (_isNotOk && _isbuildable) exitWith {  };

// delete if still not ok
if (_isNotOk) exitWith { deleteVehicle _object; diag_log(format["Deleting object %1 with invalid ID at pos [%2,%3,%4]",typeOf _object,_object_position select 0,_object_position select 1, _object_position select 2]); };


_lastUpdate = _object getVariable ["lastUpdate",time];
_needUpdate = _object in needUpdate_objects;

// TODO ----------------------
_object_position = {
    private["_position","_worldspace","_fuel","_key"];
        _position = getPosATL _object;
    _worldspace = [getDir _object, _position] call AN_fnc_formatWorldspace;
        _fuel = 0;
        if (_object isKindOf "AllVehicles") then {
            _fuel = fuel _object;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
};

_object_position = {
    private["_position","_worldspace","_fuel","_key","_colour","_colour2"];
        _position = getPosATL _object;
        if (_object isKindOf "AllVehicles") then {
            _colour = _object getVariable ["Colour","0"];
            _colour2 = _object getVariable ["Colour2","0"];
            _worldspace = [
                round(direction _object),
                _position,
                _colour,
                _colour2
            ];
            _fuel = fuel _object;
        } else {
            _worldspace = [
                round(direction _object),
                _position
            ];
            _fuel = 0;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    };

_object_damage = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
        _hitpoints = _object call vehicle_getHitpoints;
        _damage = damage _object;
        _array = [];
        {
            _hit = [_object,_x] call object_getHit;
            _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
            if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
            _object setHit ["_selection", _hit];
        } count _hitpoints;
    
        _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
    };

_object_killed = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
    _hitpoints = _object call vehicle_getHitpoints;
    //_damage = damage _object;
    _damage = 1;
    _array = [];
    {
        _hit = [_object,_x] call object_getHit;
        _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
        if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
        _hit = 1;
        _object setHit ["_selection", _hit];
    } count _hitpoints;
    
    if (_objectID == "0") then {
        _key = format["CHILD:306:%1:%2:%3:",_uid,_array,_damage];
    } else {
        _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
    };
    //diag_log ("HIVE: WRITE: "+ str(_key));
    _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
    if ((count _this) > 2) then {
        _killer = _this select 2;
        _charID = _object getVariable ['CharacterID','0'];
        _objID     = _object getVariable['ObjectID','0'];
        _objUID    = _object getVariable['ObjectUID','0'];
        _worldSpace = getPosATL _object;
        if (getPlayerUID _killer != "") then {
            _name = if (alive _killer) then { name _killer; } else { format["OBJECT %1", _killer]; };
            diag_log format["Vehicle killed: Vehicle %1 (TYPE: %2), CharacterID: %3, ObjectID: %4, ObjectUID: %5, Position: %6, Killer: %7 (UID: %8)", _object, (typeOf _object), _charID, _objID, _objUID, _worldSpace, _name, (getPlayerUID _killer)];
        } else {
            diag_log format["Vehicle killed: Vehicle %1 (TYPE: %2), CharacterID: %3, ObjectID: %4, ObjectUID: %5, Position: %6", _object, (typeOf _object), _charID, _objID, _objUID, _worldSpace];
        };
    };
};

_object_repair = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
    _hitpoints = _object call vehicle_getHitpoints;
    _damage = damage _object;
    _array = [];
    {
        _hit = [_object,_x] call object_getHit;
        _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
        if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
        _object setHit ["_selection", _hit];
    } count _hitpoints;
    
    _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
    //diag_log ("HIVE: WRITE: "+ str(_key));
    _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
};

// TODO ----------------------

_object setVariable ["lastUpdate",time,true];
switch (_type) do {
    case "all": {
        call _object_position;
        call _object_inventory;
        call _object_damage;
        };
    case "position": {
        if (!(_object in needUpdate_objects)) then {
            //diag_log format["DEBUG Position: Added to NeedUpdate=%1",_object];
            needUpdate_objects set [count needUpdate_objects, _object];
        };
    };
    case "gear": {
        call _object_inventory;
            };
    case "damage": {
        if ( (time - _lastUpdate) > 5) then {
            call _object_damage;
        } else {
            if (!(_object in needUpdate_objects)) then {
                //diag_log format["DEBUG Damage: Added to NeedUpdate=%1",_object];
                needUpdate_objects set [count needUpdate_objects, _object];
            };
        };
    };
    case "killed": {
        call _object_killed;
    };
    case "repair": {
        call _object_damage;
    };
};

 

 

Link to comment
Share on other sites

14 minutes ago, Cherdenko said:

Nothing of that is in my sqf file

not even:

        _inventory = [
            getWeaponCargo _object,
            getMagazineCargo _object,
            getBackpackCargo _object
]

 

Below is my server_updateObject.sqf

  Hide contents

^

/*
[_object,_type] spawn server_updateObject;
*/
private ["_object","_type","_objectID","_uid","_lastUpdate","_needUpdate","_object_position","_object_inventory","_object_damage","_isNotOk","_parachuteWest","_firstTime","_object_killed","_object_repair","_isbuildable"];

_object =     _this select 0;

if(isNull(_object)) exitWith {
    diag_log format["Skipping Null Object: %1", _object];
};

_type =     _this select 1;
_parachuteWest = ((typeOf _object == "ParachuteWest") || (typeOf _object == "ParachuteC"));
_isbuildable = (typeOf _object) in dayz_allowedObjects;
_isNotOk = false;
_firstTime = false;

_objectID =    _object getVariable ["ObjectID","0"];
_uid =         _object getVariable ["ObjectUID","0"];


if ((typeName _objectID != "string") || (typeName _uid != "string")) then
{
    diag_log(format["Non-string Object: ID %1 UID %2", _objectID, _uid]);
    //force fail
    _objectID = "0";
    _uid = "0";
};
if (!_parachuteWest && !(locked _object)) then {
    if (_objectID == "0" && _uid == "0") then
    {
        _object_position = getPosATL _object;
        _isNotOk = true;
    };
};


// do not update if buildable && not ok
if (_isNotOk && _isbuildable) exitWith {  };

// delete if still not ok
if (_isNotOk) exitWith { deleteVehicle _object; diag_log(format["Deleting object %1 with invalid ID at pos [%2,%3,%4]",typeOf _object,_object_position select 0,_object_position select 1, _object_position select 2]); };


_lastUpdate = _object getVariable ["lastUpdate",time];
_needUpdate = _object in needUpdate_objects;

// TODO ----------------------
_object_position = {
    private["_position","_worldspace","_fuel","_key"];
        _position = getPosATL _object;
    _worldspace = [getDir _object, _position] call AN_fnc_formatWorldspace;
        _fuel = 0;
        if (_object isKindOf "AllVehicles") then {
            _fuel = fuel _object;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
};

_object_position = {
    private["_position","_worldspace","_fuel","_key","_colour","_colour2"];
        _position = getPosATL _object;
        if (_object isKindOf "AllVehicles") then {
            _colour = _object getVariable ["Colour","0"];
            _colour2 = _object getVariable ["Colour2","0"];
            _worldspace = [
                round(direction _object),
                _position,
                _colour,
                _colour2
            ];
            _fuel = fuel _object;
        } else {
            _worldspace = [
                round(direction _object),
                _position
            ];
            _fuel = 0;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    };

_object_damage = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
        _hitpoints = _object call vehicle_getHitpoints;
        _damage = damage _object;
        _array = [];
        {
            _hit = [_object,_x] call object_getHit;
            _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
            if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
            _object setHit ["_selection", _hit];
        } count _hitpoints;
    
        _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
    };

_object_killed = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
    _hitpoints = _object call vehicle_getHitpoints;
    //_damage = damage _object;
    _damage = 1;
    _array = [];
    {
        _hit = [_object,_x] call object_getHit;
        _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
        if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
        _hit = 1;
        _object setHit ["_selection", _hit];
    } count _hitpoints;
    
    if (_objectID == "0") then {
        _key = format["CHILD:306:%1:%2:%3:",_uid,_array,_damage];
    } else {
        _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
    };
    //diag_log ("HIVE: WRITE: "+ str(_key));
    _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
    if ((count _this) > 2) then {
        _killer = _this select 2;
        _charID = _object getVariable ['CharacterID','0'];
        _objID     = _object getVariable['ObjectID','0'];
        _objUID    = _object getVariable['ObjectUID','0'];
        _worldSpace = getPosATL _object;
        if (getPlayerUID _killer != "") then {
            _name = if (alive _killer) then { name _killer; } else { format["OBJECT %1", _killer]; };
            diag_log format["Vehicle killed: Vehicle %1 (TYPE: %2), CharacterID: %3, ObjectID: %4, ObjectUID: %5, Position: %6, Killer: %7 (UID: %8)", _object, (typeOf _object), _charID, _objID, _objUID, _worldSpace, _name, (getPlayerUID _killer)];
        } else {
            diag_log format["Vehicle killed: Vehicle %1 (TYPE: %2), CharacterID: %3, ObjectID: %4, ObjectUID: %5, Position: %6", _object, (typeOf _object), _charID, _objID, _objUID, _worldSpace];
        };
    };
};

_object_repair = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
    _hitpoints = _object call vehicle_getHitpoints;
    _damage = damage _object;
    _array = [];
    {
        _hit = [_object,_x] call object_getHit;
        _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
        if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
        _object setHit ["_selection", _hit];
    } count _hitpoints;
    
    _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
    //diag_log ("HIVE: WRITE: "+ str(_key));
    _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
};

// TODO ----------------------

_object setVariable ["lastUpdate",time,true];
switch (_type) do {
    case "all": {
        call _object_position;
        call _object_inventory;
        call _object_damage;
        };
    case "position": {
        if (!(_object in needUpdate_objects)) then {
            //diag_log format["DEBUG Position: Added to NeedUpdate=%1",_object];
            needUpdate_objects set [count needUpdate_objects, _object];
        };
    };
    case "gear": {
        call _object_inventory;
            };
    case "damage": {
        if ( (time - _lastUpdate) > 5) then {
            call _object_damage;
        } else {
            if (!(_object in needUpdate_objects)) then {
                //diag_log format["DEBUG Damage: Added to NeedUpdate=%1",_object];
                needUpdate_objects set [count needUpdate_objects, _object];
            };
        };
    };
    case "killed": {
        call _object_killed;
    };
    case "repair": {
        call _object_damage;
    };
};

 

 

yep is very diferent of mine....    are u taken this updateObjets.sqf from other mod?

well see this lines in red are the whole code for your updateobjets.sqf... (black lines are your lines)

Spoiler

_object_position = {
    private["_position","_worldspace","_fuel","_key","_colour","_colour2"];
        _position = getPosATL _object;
        if (_object isKindOf "AllVehicles") then {
            _colour = _object getVariable ["Colour","0"];
            _colour2 = _object getVariable ["Colour2","0"];
            _worldspace = [
                round(direction _object),
                _position,
                _colour,
                _colour2
            ];
            _fuel = fuel _object;
        } else {
            _worldspace = [
                round(direction _object),
                _position
            ];
            _fuel = 0;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    };

    
_object_inventory = {
    private["_inventory","_previous","_key"];
if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then{
    _inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item
} else {
        _inventory = [
            getWeaponCargo _object,
            getMagazineCargo _object,
            getBackpackCargo _object
            /*ZSC*/
            , _object getVariable["bankMoney",0]
//remove it if u dont have coins
            /*ZSC*/
        ];
        };
        _previous = str(_object getVariable["lastInventory",[]]);
        if (str(_inventory) != _previous) then {
            _object setVariable["lastInventory",_inventory];
            if (_objectID == "0") then {
                _key = format["CHILD:309:%1:%2:",_uid,_inventory];
            } else {
                _key = format["CHILD:303:%1:%2:",_objectID,_inventory];
            };
            //diag_log ("HIVE: WRITE: "+ str(_key));
            _key call server_hiveWrite;
        };
};

_object_damage = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
        _hitpoints = _object call vehicle_getHitpoints;
        _damage = damage _object;
        _array = [];
        {
            _hit = [_object,_x] call object_getHit;
            _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
            if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
            _object setHit ["_selection", _hit];
        } count _hitpoints;
    
        _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    _object setVariable ["needUpdate",false,true];
    };

@Cherdenko

Link to comment
Share on other sites

Just now, juandayz said:

yep is very diferent of mine....    are u taken this updateObjets.sqf from other mod?

well see this lines in red are the whole code for your updateobjets.sqf... (black lines are your lines)

  Hide contents

// TODO ----------------------
_object_position = {
    private["_position","_worldspace","_fuel","_key"];
        _position = getPosATL _object;
    _worldspace = [getDir _object, _position] call AN_fnc_formatWorldspace;
        _fuel = 0;
        if (_object isKindOf "AllVehicles") then {
            _fuel = fuel _object;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
};

_object_position = {
    private["_position","_worldspace","_fuel","_key","_colour","_colour2"];
        _position = getPosATL _object;
        if (_object isKindOf "AllVehicles") then {
            _colour = _object getVariable ["Colour","0"];
            _colour2 = _object getVariable ["Colour2","0"];
            _worldspace = [
                round(direction _object),
                _position,
                _colour,
                _colour2
            ];
            _fuel = fuel _object;
        } else {
            _worldspace = [
                round(direction _object),
                _position
            ];
            _fuel = 0;
        };
        _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
        //diag_log ("HIVE: WRITE: "+ str(_key));
        _key call server_hiveWrite;
    };

_object_damage = {
    private["_hitpoints","_array","_hit","_selection","_key","_damage"];
        _hitpoints = _object call vehicle_getHitpoints;
        _damage = damage _object;
        _array = [];
        {

 

im using the one which was with the soul hive version of single currency

Link to comment
Share on other sites

  • 4 weeks later...

HI,

juanda

juandayz helped me a lot today and for that I am thankful - to try to get this to work. Even setup a sample server and added the mod.

On reboot the Friends list does not save to the DB. My understanding is is suppose to save you UID to the variables in the sql. When i look in the SQL nothing is written to the plot pole's inventory.

I spent two days looking at this. even try to put my UID in the inventory of a plot pole but not working. Was unsure the format it needed to be in.

 

Maybe I need to enable something on my database to allow it to work?

 

There does not seem to be any logs in the RPT etc to indicate the issue.

Note i am on a dedicated server.

Thanks in advance.

 

(If i can not get this sorted just going to give up and not build the rest of the server).

 

Link to comment
Share on other sites

  • 5 weeks later...

Hi,

I have just tried installing this but in these 2 instructions the 'nearObjects ["All",20]' and '_theCost = _count *1;'  weren't in the files suggested here.

Anyone got any ideas please ?

Thanks,

Nick

 

in player_build.sqf 

 

look in a IF for:

 

nearObjects ["All",30]

change that to

 

nearObjects ["All",DZE_PlotPole select 0]

To change maintani price ( for default very obvious in maintain_area.sqf). for single currency

change the 1 to any price you want per object.

 

_theCost = _count * 1;

For example

 

_theCost = _count * 150; // 150 coins per object.
Link to comment
Share on other sites

_theCost = _count * 1;

@snipercymraeg

you will find it in:

\MPMissions\DayZ_Epoch_11.Chernarus\plotManagement\maintainarea.sqf

 

the maths here are:

_theCost = _count * 150;

example:

Total price to maintain =  Total objets amount in plot area * Price in Coins

 $7.500 50 objets in plot * $150

 $15.000 100 objets in plot * $150

 $22.500 150 objets in plot * $150

 

 

And about player_build.sqf  if u have plot 4 life this have a diferent name if my memory its no bad :D .. something like player modulars....

any way try it:

open your plotObjets.sqf and replace the whole file for it:

Spoiler

private ["_newWealth","_missing","_missingQty","_proceed","_itemIn","_countIn","_target","_objectClasses","_range","_objects","_requirements","_count","_cost","_option"];
disableSerialization;

_range = DZE_PlotPole select 0;
_cptarget = player;
_objectClasses = DZE_maintainClasses;
_objects = nearestObjects [_cptarget, _objectClasses, _range];
 
_objectsnearcount = count _objects;
_count = _objectsnearcount;

_colour = "#ffffff";

if(_count / DZE_BuildingLimit * 100 < 40)then{
_colour = "#00ff00";
};
if(_count / DZE_BuildingLimit * 100 > 75)then{
_colour = "#ff0000";
};

_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7014);
_result =  format["<t color='%3'>%1 / %2</t>" , _count, DZE_BuildingLimit,_colour];
_ctrl ctrlSetStructuredText parseText _result;    

 

this fix the bad count of objets in the plot area

Link to comment
Share on other sites

  • 4 weeks later...

Running with this A_Plot_for_Life not having any issue apart from not being able to build on a friends plot and vice versa. Which files or where can I check for fixing this? If you need any lines or more information. Let me know

 

Using Epoch 1.0.5.1 and Arma 2 131129

Mods: "-mod=@DayzOverwatch;@DayZ_Epoch"

 

 

Link to comment
Share on other sites

  • 2 weeks later...

hello friends I'm trying to deploy this mod however the option to manage plot appears not am I putting wrong?

my fnselfaction

// ---------------------------------------Maintain Area Start------------------------------------
    if (_canDo && (speed player <= 1) && (cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {
    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'>Manage Plot</t>", "plotManagement\initPlotManagement.sqf", [], 5, false];
    };
};
	if (s_player_maintain_area < 0) then {
    	s_player_maintain_area = player addAction ["<t color=""#ffffff"">Maintain Area</t>", "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];
    	s_player_maintain_area_preview = player addAction ["<t color=""#ccffffff"">Maintain Area Preview</t>", "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
    };
    } else {
    player removeAction s_player_plotManagement;
    s_player_plotManagement = -1;
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};
// ---------------------------------------Maintain Area End------------------------------------

http://ap.imagensbrasil.org/image/p4dO5v

Link to comment
Share on other sites

8 hours ago, WagnerMello said:

hello friends I'm trying to deploy this mod however the option to manage plot appears not am I putting wrong?

my fnselfaction


// ---------------------------------------Maintain Area Start------------------------------------
    if (_canDo && (speed player <= 1) && (cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {
    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'>Manage Plot</t>", "plotManagement\initPlotManagement.sqf", [], 5, false];
    };
};
	if (s_player_maintain_area < 0) then {
    	s_player_maintain_area = player addAction ["<t color=""#ffffff"">Maintain Area</t>", "\z\addons\dayz_code\actions\maintain_area.sqf", "maintain", 5, false];
    	s_player_maintain_area_preview = player addAction ["<t color=""#ccffffff"">Maintain Area Preview</t>", "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
    };
    } else {
    player removeAction s_player_plotManagement;
    s_player_plotManagement = -1;
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};
// ---------------------------------------Maintain Area End------------------------------------

http://ap.imagensbrasil.org/image/p4dO5v

are u using a custom selfactions?

are u using Coins? take care sometimes ... your selfaction is taken from this mod

ZSCConfig.sqf

Spoiler

 // if TRUE: Overwrites yours fn_selfactions.sqf with default 1 + edits. | IF False: Change content yourself @ step D
ZSC_Overwrite_SelfActions = false;

 

your edit in selfaction seem be right... compare with mine:

Spoiler

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {
    
    if (s_player_workshop < 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_workshop = player addAction ["<t color='#66CCFF'>CRAFT-WORKSHOP</t>", "custom\scripts\workshop\createworkshop.sqf", [], 5, false];
    };
    };

    
    
    
    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_workshop;
    s_player_workshop = -1;

    player removeAction s_player_plotManagement;
    s_player_plotManagement = -1;

    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

 

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