Jump to content

[Release] 2.1 Plot Management - UPDATED Object Counter


Zupa

Recommended Posts

Are you also having the problem of not being able to upgrade and remove? But you and friends are able to build? I have this too :/ and am running p4l 2.35, snap and vector

 

 

NO i dont have any issues. once people add themselves and their friends to the plot pole then they can build upgrade down grade and everything. .

Link to comment
Share on other sites

Are you also having the problem of not being able to upgrade and remove? But you and friends are able to build? I have this too :/ and am running p4l 2.35, snap and vector

 

I posted those so you can use them and see if they help your problem.. I am not having any issues at all with any of these scripts. I have all he scripts on my server working as they are supposed to.

Link to comment
Share on other sites

yes everything working after restart buildables are normaly on server BUT players who i add into plot pole before restart ,after restart missing 

 

You can send me your server files if you don´t have problem with it(because it´s your job) so if i can give it a try ,i try add single currecny or something 

it´s on you

Link to comment
Share on other sites

I Have mine set up on a cherno and namalsk mods include. customized action menu with  spawnbike, bloodbag, combine currency, flip vehicle, and traumatic suicide. Right click toolbox to spawn bike and PBX, upgrade to motorcycle, mozzie, little bird, 4 seater little bird and then the armed little bird. The evac chopper, Plot4life, set viewdistance, with binoculars and range finders, GEM crafting, Build Vectors, Craft IEDs and Grenades, Group Management, Snap Pro, Vehicle Finder, Vehicle Claim, Vehicle Key Master, Walking Zombies, Take Clothing, WAI mission system with all missions customized for the maps, 3 other mission systems. Door management, Elevators, Paint vehicles, Plot Management, DZAI, R3F tow and lift. Trade from vehicles and backpacks, working vending machines, infistar safe zones, Vehicles god within safe zones for online users, Antihotwire kit area for public parking lot, service stations with refuel, reammo, and repair. and on the cherno server i have ESS spawn select with just the spawn select. trying to go through and distinguish the similarities and compare would be impossible.

 

If i were you I would go install the plot4life with the snappro and vectors.(best script by the way) with the precise base building and then work from there.. I might not have this problem with the plot poles not saving people because i Have plot for life. you never know. and people on your server prob would love the additions. 

Link to comment
Share on other sites

I posted those so you can use them and see if they help your problem.. I am not having any issues at all with any of these scripts. I have all he scripts on my server working as they are supposed to.

Thanks, so far so good just need to check it over a little more and readd the indestructible part.

Link to comment
Share on other sites

So im having an issue and i need some help. After death players cannot build even tho they are added to the plotpole. They can access the plotpole and use the plot management gui but cannot build

 

I cannot seem to figure out what the issue is.

Here is my player_build.sqf

/*
DayZ Base Building
Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].
*/
private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"];

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

// disallow building if too many objects are found within 30m
if((count ((getPosATL player) nearObjects ["All",DZE_PlotPole select 0])) >= DZE_BuildingLimit) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"];};

_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_isWater = dayz_isSwimming;
_cancel = false;
_reason = "";
_canBuildOnPlot = false;

_vehicle = vehicle player;
_inVehicle = (_vehicle != player);

DZE_Q = false;
DZE_Z = false;

DZE_Q_alt = false;
DZE_Z_alt = false;

DZE_Q_ctrl = false;
DZE_Z_ctrl = false;

DZE_5 = false;
DZE_4 = false;
DZE_6 = false;

DZE_cancelBuilding = false;

call gear_ui_init;
closeDialog 1;

if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];};
if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];};
if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];};
if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];};

_item = _this;

// Need Near Requirements
_abort = false;
_reason = "";

_needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby");

{
switch(_x) do{
case "fire":
{
_distance = 3;
_isNear = {inflamed _x} count (getPosATL player nearObjects _distance);
if(_isNear == 0) then {
_abort = true;
_reason = "fire";
};
};
case "workshop":
{
_distance = 3;
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
if(_isNear == 0) then {
_abort = true;
_reason = "workshop";
};
};
case "fueltank":
{
_distance = 30;
_isNear = count (nearestObjects [player, dayz_fuelsources, _distance]);
if(_isNear == 0) then {
_abort = true;
_reason = "fuel tank";
};
};
};
} forEach _needNear;


if(_abort) exitWith {
cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"];
DZE_ActionInProgress = false;
};

_classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create");
_classnametmp = _classname;
_require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require");
_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview");

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

_requireplot = DZE_requireplot;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then {
_requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot");
};

_isAllowedUnderGround = 1;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then {
_isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground");
};

_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset");
if((count _offset) <= 0) then {
_offset = [0,1.5,0];
};

_isPole = (_classname == "Plastic_Pole_EP1_DZ");
_isLandFireDZ = (_classname == "Land_Fire_DZ");

_distance = DZE_PlotPole select 0;
_needText = localize "str_epoch_player_246";

if(_isPole) then {
_distance = DZE_PlotPole select 1;
};

// 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);

// If item is plot pole && another one exists within 45m
if(_isPole && _IsNearPlot > 0) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; };

if(_IsNearPlot == 0) then {

// Allow building of plot
if(_requireplot == 0 || _isLandFireDZ) then {
_canBuildOnPlot = true;
};

} else {
// Since there are plots nearby we check for ownership && then for friend status

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

// _message
if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"]; };

_missing = "";
_hasrequireditem = true;
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); };
} count _require;

_hasbuilditem = _this in magazines player;
if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; };

if (!_hasrequireditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; };
if (_hasrequireditem) then {

_location = [0,0,0];
_isOk = true;

// get inital players position
_location1 = getPosATL player;
_dir = getDir player;

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

_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

_object attachTo [player,_offset];

_position = getPosATL _object;

cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"];

_objHDiff = 0;

while {_isOk} do {

_zheightchanged = false;
_zheightdirection = "";
_rotate = false;

if (DZE_Q) then {
DZE_Q = false;
_zheightdirection = "up";
_zheightchanged = true;
};
if (DZE_Z) then {
DZE_Z = false;
_zheightdirection = "down";
_zheightchanged = true;
};
if (DZE_Q_alt) then {
DZE_Q_alt = false;
_zheightdirection = "up_alt";
_zheightchanged = true;
};
if (DZE_Z_alt) then {
DZE_Z_alt = false;
_zheightdirection = "down_alt";
_zheightchanged = true;
};
if (DZE_Q_ctrl) then {
DZE_Q_ctrl = false;
_zheightdirection = "up_ctrl";
_zheightchanged = true;
};
if (DZE_Z_ctrl) then {
DZE_Z_ctrl = false;
_zheightdirection = "down_ctrl";
_zheightchanged = true;
};
if (DZE_4) then {
_rotate = true;
DZE_4 = false;
_dir = 180;
};
if (DZE_6) then {
_rotate = true;
DZE_6 = false;
_dir = 0;
};

if(_rotate) then {
_object setDir _dir;
_object setPosATL _position;
//diag_log format["DEBUG Rotate BUILDING POS: %1", _position];
};

if(_zheightchanged) then {
detach _object;

_position = getPosATL _object;

if(_zheightdirection == "up") then {
_position set [2,((_position select 2)+0.1)];
_objHDiff = _objHDiff + 0.1;
};
if(_zheightdirection == "down") then {
_position set [2,((_position select 2)-0.1)];
_objHDiff = _objHDiff - 0.1;
};

if(_zheightdirection == "up_alt") then {
_position set [2,((_position select 2)+1)];
_objHDiff = _objHDiff + 1;
};
if(_zheightdirection == "down_alt") then {
_position set [2,((_position select 2)-1)];
_objHDiff = _objHDiff - 1;
};

if(_zheightdirection == "up_ctrl") then {
_position set [2,((_position select 2)+0.01)];
_objHDiff = _objHDiff + 0.01;
};
if(_zheightdirection == "down_ctrl") then {
_position set [2,((_position select 2)-0.01)];
_objHDiff = _objHDiff - 0.01;
};

_object setDir (getDir _object);

if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then {
_position set [2,0];
};

_object setPosATL _position;

//diag_log format["DEBUG Change BUILDING POS: %1", _position];

_object attachTo [player];

};

sleep 0.5;

_location2 = getPosATL player;

if(DZE_5) exitWith {
_isOk = false;
detach _object;
_dir = getDir _object;
_position = getPosATL _object;
//diag_log format["DEBUG BUILDING POS: %1", _position];
deleteVehicle _object;
};

if(_location1 distance _location2 > 5) exitWith {
_isOk = false;
_cancel = true;
_reason = "You've moved to far away from where you started building (within 5 meters)";
detach _object;
deleteVehicle _object;
};

if(abs(_objHDiff) > 5) exitWith {
_isOk = false;
_cancel = true;
_reason = "Cannot move up || down more than 5 meters";
detach _object;
deleteVehicle _object;
};

if (player getVariable["combattimeout", 0] >= time) exitWith {
_isOk = false;
_cancel = true;
_reason = (localize "str_epoch_player_43");
detach _object;
deleteVehicle _object;
};

if (DZE_cancelBuilding) exitWith {
_isOk = false;
_cancel = true;
_reason = "Cancelled building.";
detach _object;
deleteVehicle _object;
};
};

//No building on roads unless toggled
if (!DZE_BuildOnRoads) then {
if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; };
};

// No building in trader zones
if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; };

if(!_cancel) then {

_classname = _classnametmp;

// Start Build
_tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

_tmpbuilt setdir _dir;

// Get position based on object
_location = _position;

if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then {
_location set [2,0];
};

_tmpbuilt setPosATL _location;


cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"];

_limit = 3;

if (DZE_StaticConstructionCount > 0) then {
_limit = DZE_StaticConstructionCount;
}
else {
if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then {
_limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount");
};
};

_isOk = true;
_proceed = false;
_counter = 0;

while {_isOk} do {

[10,10] call dayz_HungerThirst;
player playActionNow "Medic";

_dis=20;
_sfx = "repair";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;

r_interrupt = false;
r_doLoop = true;
_started = false;
_finished = false;

while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started && !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt || (player getVariable["combattimeout", 0] >= time)) then {
r_doLoop = false;
};
if (DZE_cancelBuilding) exitWith {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;


if(!_finished) exitWith {
_isOk = false;
_proceed = false;
};

if(_finished) then {
_counter = _counter + 1;
};

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

if(_counter == _limit) exitWith {
_isOk = false;
_proceed = true;
};

};

if (_proceed) then {

_num_removed = ([player,_item] call BIS_fnc_invRemove);
if(_num_removed == 1) then {

cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];

if (_isPole) then {
[] spawn player_plotPreview;
};

_tmpbuilt setVariable ["OEMPos",_location,true];

if(_lockable > 1) then {

_combinationDisplay = "";

switch (_lockable) do {

case 2: { // 2 lockbox
_combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue
_combination_2 = floor(random 10);
_combination_3 = floor(random 10);
_combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];
dayz_combination = _combination;
if (_combination_1 == 100) then {
_combination_1_Display = "Red";
};
if (_combination_1 == 101) then {
_combination_1_Display = "Green";
};
if (_combination_1 == 102) then {
_combination_1_Display = "Blue";
};
_combinationDisplay = format["%1%2%3",_combination_1_Display,_combination_2,_combination_3];
};

case 3: { // 3 combolock
_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];
dayz_combination = _combination;
_combinationDisplay = _combination;
};

case 4: { // 4 safe
_combination_1 = floor(random 10);
_combination_2 = floor(random 10);
_combination_3 = floor(random 10);
_combination_4 = floor(random 10);
_combination = format["%1%2%3%4",_combination_1,_combination_2,_combination_3,_combination_4];
dayz_combination = _combination;
_combinationDisplay = _combination;
};
};

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


PVDZE_obj_Publish = [_combination,_tmpbuilt,[_dir,_location],_classname];
publicVariableServer "PVDZE_obj_Publish";

cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5];


} else {
_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],_classname];
publicVariableServer "PVDZE_obj_Publish";
};
};
} else {
deleteVehicle _tmpbuilt;
cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"];
};

} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};

deleteVehicle _tmpbuilt;

cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"];
};

} else {
cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"];

};
};

DZE_ActionInProgress = false;
Link to comment
Share on other sites


OMG my finger is tired now.. lol jk. you should edit this post before hand and put it in spoiler form and put it in the code form as well trying to look at it like this just hurts the eyes. I will look after the edit.. thanks. 

Sorry about your finger mate :D

 i have changed it so you can download i from dropbox thx for your effort

https://www.dropbox.com/s/xw8vy084zi8h2lu/fn_selfActions.sqf?dl=0

Link to comment
Share on other sites

OMG my finger is tired now.. lol jk. you should edit this post before hand and put it in spoiler form and put it in the code form as well trying to look at it like this just hurts the eyes. I will look after the edit.. thanks. 

 

 

tThanks for the edit I will go through and see if i can find anything.

 

 

 

 

Do you have any RPT errors?

Link to comment
Share on other sites

OK not sure if this would have caused the error but you had something repeated in the Self actions.

	//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 ["ownerPUID","010"];
						_friends = _thePlot getVariable ["plotfriends", []];
						{
						_friendUID = _x select 0;
						_fuid  =  _fuid  + [_friendUID];
						} forEach _friends;
						_allowed = [_owner];    
						_allowed = [_owner] +  _fuid;   
							if ( _playerUID in _allowed && _ownerID in _allowed) then {
							_player_deleteBuild = true;
						};                  
						}else{
						if(_ownerID == _playerUID)then{
							_player_deleteBuild = true;
						};
					};                              
				};      
		};	

try deleting it and see if that fixes the issue. 

Link to comment
Share on other sites

so i try to check client side rpt log and i found some errors :

 

Error in expression <ds", []];
_fuid = [];
{
_friendUID = _x select 0;
_fuid = _fuid + [_friendUID];
>
  Error position: <select 0;
_fuid = _fuid + [_friendUID];
>
  Error select: Type Number, expected Array,Config entry
File mpmissions\__CUR_MP.Tavi\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 220
Error in expression <plotManagement < 0) then {
_adminList = adminlist; 
_owner = _cursorTarget getVa>
  Error position: <adminlist; 
_owner = _cursorTarget getVa>
  Error Undefined variable in expression: adminlist
File mpmissions\__CUR_MP.Tavi\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 215
Link to comment
Share on other sites

replace your line with the admin list to this

 

 

_adminList = ["123456789101112"]; // Add admins here if you admins to able to manage all plotpoles  -------put your GUID in there so you as a admin can manage all plot pole. 

 

 

yours looks like this

 

_adminList = adminlist; // Add admins here if you admins to able to manage all plotpoles ----might be whats causing issue. 

Link to comment
Share on other sites

so problems still there client rpt :

Error in expression <ds", []];
_fuid = [];
{
_friendUID = _x select 0;
_fuid = _fuid + [_friendUID];
>
  Error position: <select 0;
_fuid = _fuid + [_friendUID];
>
  Error select: Type Number, expected Array,Config entry
File mpmissions\__CUR_MP.Tavi\Custom\A_Plot_for_Life\Compile\fn_selfActions.sqf, line 219
 
i saw that after server restart ,menu for safes appears but after 30 - 60 seconds dissapear and never appear until next restart 
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...