Jump to content

[Release] - A Plot for life v2.5. Keep your buildables on death. Take plot ownership


Recommended Posts

No One has answer on mine ?? nothing .. not where to point me to resolving this above post

That custom folder will do nothing where it is. I haven`t looked at the install guide lately, but I'd guess that the contents of the server folder should get packed up inside the server pbo. Perhaps have a read through the installation again.

 

Checking your RPT for errors is usually a good place to start.

Link to comment
Share on other sites

That custom folder will do nothing where it is. I haven`t looked at the install guide lately, but I'd guess that the contents of the server folder should get packed up inside the server pbo. Perhaps have a read through the installation again.

 

Checking your RPT for errors is usually a good place to start.

 

If you read my post u would see , no RPT errors .. and I have tried the custom folder, in the root where the @folders are as the instructions say, as well in the server pbo, 

Link to comment
Share on other sites

Hey there,

 

Thanks for this awesome mod, but I got some issues...  There is no scroll down option to tag friendly, and no option to remove modular builds (remove plotpole works). I have tested a lot that was written here, but nothing works..

 

Could someone please help me?

 

greetings

Link to comment
Share on other sites

If you read my post u would see , no RPT errors .. and I have tried the custom folder, in the root where the @folders are as the instructions say, as well in the server pbo, 

I see what you're saying, but if you've installed as per the instructions, you have to make sure the relevant files are called correctly.

 

When I put P4L on, I already had a pretty custom server, so I manually merged the server files with my existing ones inside the pbo. This involves comparing the server monitor, compiles etc to ensure everything is referenced correctly, then packed everything up in the server pbo.

 

If your RPT shows no errors and it's stuck on wait for host, I'd assume that means the server isn't starting correctly.

Link to comment
Share on other sites

If you read my post u would see , no RPT errors .. and I have tried the custom folder, in the root where the @folders are as the instructions say, as well in the server pbo, 

 

post your client and server rpt files via a pastebin link or in spoiler tags please.

 

It would be most helpful if you clear the old log files on the client and server and then start the server and try to connect from the client and after the failure post the files.  That way it will be easier to see what is going on.

 

The server side files can either be put in the server.pbo file if the links to them are pointing to the server.pbo or they can go in a directory in the ARMA server root folder (where the @Epoch folder is) as long as the links to them point to that location. 

 

The server can source files from subdirectories in the server folder (excluding one called "scripts" or something like that) so you can put the server files in a folder of your choosing if you want but the links in the init.sqf need to point to wherever you have placed those files.

 

Merging mods can also be problematic especially if the mods are not reguarly maintained or updated.  To my knowledge both vector building and Plot management have not yet been updated to A Plot for Life v2.5 so I am currently recommending that you should use A Plot for Life v2.35 if you are going to use them.

Link to comment
Share on other sites

Hey there,

 

Thanks for this awesome mod, but I got some issues...  There is no scroll down option to tag friendly, and no option to remove modular builds (remove plotpole works). I have tested a lot that was written here, but nothing works..

 

Could someone please help me?

 

greetings

 

You will need to look through your client and server RPT files to see what errors you are getting.

 

Starting ARMA with the -showscripterrors on the startup line will report script errors to the clients screen for any that affect the client as well as log them to the RPT files.

 

If you have some script errors then we can probably point you in the right direction to try and help you find the issue.

Link to comment
Share on other sites

I see what you're saying, but if you've installed as per the instructions, you have to make sure the relevant files are called correctly.

 

When I put P4L on, I already had a pretty custom server, so I manually merged the server files with my existing ones inside the pbo. This involves comparing the server monitor, compiles etc to ensure everything is referenced correctly, then packed everything up in the server pbo.

 

If your RPT shows no errors and it's stuck on wait for host, I'd assume that means the server isn't starting correctly.

You are correct .. I figured that out was getting waiting for bank, but didnt do it before I attempted P4L .. Im confused I do believe on what to do with the files in the server folder.. most things I can make work but P4L always kicks my ass lol.. Its cool that u dont have to dig up ur plot pole .. every time u die .. but at the same time ..it makes em work more to keep it lol

Link to comment
Share on other sites

I could manage to tag friendly and to remove modular.. I still got some issues:

 

undefinied variable in player_build_plotcheck.sqf line 58 _nearestpole when building anything

 

this is my player_build_plotcheckt.sqf - any ideas?

 

if(!DZE_ActionInProgress) exitWith {};

//Check if nearby plotpoles exists
private ["_passArray","_isPole","_needText","_distance","_findNearestPoles","_findNearestPole","_IsNearPlot","_requireplot","_isLandFireDZ","_canBuildOnPlot","_nearestPole","_ownerID","_friendlies", "_playerUID","_plotcheck"];

//defines
_isPole = _this select 0;
_requireplot = _this select 1;
_isLandFireDZ = _this select 2;

_needText = localize "str_epoch_player_246"; //text for when requirements not met
_canBuildOnPlot = false;
_nearestPole = objNull;
_ownerID = 0;
_friendlies = [];

_plotcheck = [player, _isPole] call FNC_find_plots;
_distance = _plotcheck select 0;
_IsNearPlot = _plotcheck select 1;
_nearestPole = _plotcheck select 2;

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

if(_IsNearPlot == 0) then {

// Allow building of plotpole or items not requiring a plot pole
if(!(_requireplot) || _isLandFireDZ) then {
_canBuildOnPlot = true;
};

} else {
// check nearby plots ownership && then for friend status
_nearestPole = _findNearestPole select 0;

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

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

// check if friendly to owner
if(_playerUID == _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;
};
};

};
_passArray = [_IsNearPlot,_nearestPole,_ownerID,_friendlies,_distance]; //create new array and pass it to caller <---------------error in this line

// End script if item is plot pole and another one exists within defined radius
if(_isPole && _IsNearPlot > 0) exitWith {
DZE_ActionInProgress = false;
cutText [(format [localize "str_epoch_player_44", DZE_PlotPole select 1]) , "PLAIN DOWN"];
_passArray
};

if(!_canBuildOnPlot) exitWith { //end script if requirements were not met
DZE_ActionInProgress = false;
cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"];
_passArray
};
_passArray //[int,Obj,int,array]

Link to comment
Share on other sites

 

Ok so from that it seems the ownerID is being populated with the characterID of the player who built the object and not the SteamID.  As the object in the DB seems to have the SteamID it seems the information is saving correctly.

 

I would therefore suspect either the server_monitor is not populating the ownerUID variable on the object correctly or the fn_selfactions.sqf file is not getting the objectUID varaible from the object and populating the _objectID correctly.

 

Have a look in the fn_selfactions.sqf file and try to find the line which should be something like

_ownerID =

You can also make sure the following lines appear in the server_monitor.sqf file

_ownerPUID = _worldspace select 2;

and down a bit more in the same file.

_object setVariable ["OwnerPUID", _ownerPUID, true];

Hmm in my selfactions there's alot of "_ownerID =" do you mean this line? Its the 1st one I searched for, I can list them all if needed.

	_traderType = _typeOfCursorTarget;
	_ownerID = _cursorTarget getVariable ["CharacterID","0"]; <<----This one?
	_isAnimal = _cursorTarget isKindOf "Animal";

As for the server monitor stuff, I have both those lines yeah.

Link to comment
Share on other sites

Hmm in my selfactions there's alot of "_ownerID =" do you mean this line? Its the 1st one I searched for, I can list them all if needed.

_traderType = _typeOfCursorTarget;	_ownerID = _cursorTarget getVariable ["CharacterID","0"]; <<----This one?	_isAnimal = _cursorTarget isKindOf "Animal";
As for the server monitor stuff, I have both those lines yeah.
Yes, that is where it is set.

It is being set with the CharacterID. You need to change CharacterID to ownerUID

Give that a go

Link to comment
Share on other sites

I could manage to tag friendly and to remove modular.. I still got some issues:

 

undefinied variable in player_build_plotcheck.sqf line 58 _nearestpole when building anything

 

this is my player_build_plotcheckt.sqf - any ideas?

Please use spoiler tags for big posts of code or log files (spoiler) (/spoiler) change the () to [] for them to work.

FNC _find _ plots is a new function which supplies the earnest plot pole. Make sure you have it and that it is correct try linked in your compiles.sqf

What version of A Plot for Life are you using. Older versions had a bug where nothing is returned which undefines the variable and gives this error.

Link to comment
Share on other sites

You are correct .. I figured that out was getting waiting for bank, but didnt do it before I attempted P4L .. Im confused I do believe on what to do with the files in the server folder.. most things I can make work but P4L always kicks my ass lol.. Its cool that u dont have to dig up ur plot pole .. every time u die .. but at the same time ..it makes em work more to keep it lol

A Plot for Life is not really very complicated but it does small touches to lots of files so there are lots of chances to miss a ; or } or something else 2 hen merging.

If it gets I to the core Epoch build then all of that will go away for people.

Link to comment
Share on other sites

Please use spoiler tags for big posts of code or log files (spoiler) (/spoiler) change the () to [] for them to work.

FNC _find _ plots is a new function which supplies the earnest plot pole. Make sure you have it and that it is correct try linked in your compiles.sqf

What version of A Plot for Life are you using. Older versions had a bug where nothing is returned which undefines the variable and gives this error.

Spoiler tags done - sorry for that.

 

Using the newest version. I guess I got some issues after installing plotmanagment (https://github.com/DevZupa/PlotManagement/blob/master/P4L_Epoch.md)

 

Something with this instruction, since player_build.sqf is not used I had to modify player_build_plotcheck.sqf

 

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;

};

 

I know this is not the right thread so never mind, your script is awesome ! 

Link to comment
Share on other sites

Ok, done.

 

{

_dir = _worldspace select 0;
if (count (_worldspace select 1) == 3) then >
12:23:20 Error position: <count (_worldspace select 1) == 3) then >
12:23:20 Error count: Type String, expected Array,Config entry
12:23:20 File custom\system\server_monitor.sqf, line 105

 

 

this is my server monitor:

 

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","_ownerPUID"];
 
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 {   //<----------------------this is the line 105
_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));
};
 
// Realign characterID to OwnerPUID - need to force save though.
 
if (DZE_APlotforLife) then {
if (count _worldspace < 3) then
{
_worldspace set [count _worldspace, "0"];
};
_ownerPUID = _worldspace select 2;
} else {
_ownerPUID = _ownerID;
};
 
// diag_log format["Server_monitor: [ObjectID = %1]  [ClassID = %2] [_ownerPUID = %3]", _idKey, _type, _ownerPUID];
 
if (_damage < 1) then {
//diag_log format["OBJ: %1 - %2", _idKey,_type];
 
//Create it
_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
_object setVariable ["lastUpdate",time];
_object setVariable ["ObjectID", _idKey, true];
 
if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then {
_object setVariable ["plotfriends", _intentory, true];
};
_object setVariable ["OwnerPUID", _ownerPUID, true];
 
_lockable = 0;
if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
_lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable");
};
 
// fix for leading zero issues on safe codes after restart
if (_lockable == 4) then {
_codeCount = (count (toArray _ownerID));
if(_codeCount == 3) then {
_ownerID = format["0%1", _ownerID];
};
if(_codeCount == 2) then {
_ownerID = format["00%1", _ownerID];
};
if(_codeCount == 1) then {
_ownerID = format["000%1", _ownerID];
};
};
 
if (_lockable == 3) then {
_codeCount = (count (toArray _ownerID));
if(_codeCount == 2) then {
_ownerID = format["0%1", _ownerID];
};
if(_codeCount == 1) then {
_ownerID = format["00%1", _ownerID];
};
};
 
_object setVariable ["CharacterID", _ownerID, true];
 
clearWeaponCargoGlobal  _object;
clearMagazineCargoGlobal  _object;
// _object setVehicleAmmo DZE_vehicleAmmo;
 
_object setdir _dir;
_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];
};
} forEach (_BuildingQueue + _objectQueue);
// # END SPAWN OBJECTS #
 
// preload server traders menu data into cache
if !(DZE_ConfigTrader) then {
{
// get tids
_traderData = call compile format["menu_%1;",_x];
if(!isNil "_traderData") then {
{
_traderid = _x select 1;
 
_retrader = [];
 
_key = format["CHILD:399:%1:",_traderid];
_data = "HiveEXT" callExtension _key;
 
//diag_log "HIVE: Request sent";
 
//Process result
_result = call compile format ["%1",_data];
_status = _result select 0;
 
if (_status == "ObjectStreamStart") then {
_val = _result select 1;
//Stream Objects
//diag_log ("HIVE: Commence Menu Streaming...");
call compile format["ServerTcache_%1 = [];",_traderid];
for "_i" from 1 to _val do {
_data = "HiveEXT" callExtension _key;
_result = call compile format ["%1",_data];
call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result];
_retrader set [count _retrader,_result];
};
//diag_log ("HIVE: Streamed " + str(_val) + " objects");
};
 
} forEach (_traderData select 0);
};
} forEach serverTraders;
};
 
if (_hiveLoaded) then {
//  spawn_vehicles
_vehLimit = MaxVehicleLimit - _totalvehicles;
if(_vehLimit > 0) then {
diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
for "_x" from 1 to _vehLimit do {
[] spawn spawn_vehicles;
};
} else {
diag_log "HIVE: Vehicle Spawn limit reached!";
};
};
 
//  spawn_roadblocks
diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
for "_x" from 1 to MaxDynamicDebris do {
[] spawn spawn_roadblocks;
};
//  spawn_ammosupply at server start 1% of roadblocks
diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
for "_x" from 1 to MaxAmmoBoxes do {
[] spawn spawn_ammosupply;
};
// call spawning mining veins
diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
for "_x" from 1 to MaxMineVeins do {
[] spawn spawn_mineveins;
};
 
if(isnil "dayz_MapArea") then {
dayz_MapArea = 10000;
};
if(isnil "HeliCrashArea") then {
HeliCrashArea = dayz_MapArea / 2;
};
if(isnil "OldHeliCrash") then {
OldHeliCrash = false;
};
 
// [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire]
if(OldHeliCrash) then {
_nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite;
};
if (isDedicated) then {
// Epoch Events
_id = [] spawn server_spawnEvents;
// server cleanup
[] spawn {
private ["_id"];
sleep 200; //Sleep Lootcleanup, don't need directly cleanup on startup + fix some performance issues on serverstart
waitUntil {!isNil "server_spawnCleanAnimals"};
_id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm";
};
 
// spawn debug box
_debugMarkerPosition = getMarkerPos "respawn_west";
_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1];
_vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
_vehicle_0 setPos _debugMarkerPosition;
_vehicle_0 setVariable ["ObjectID","1",true];
 
// max number of spawn markers
if(isnil "spawnMarkerCount") then {
spawnMarkerCount = 10;
};
actualSpawnMarkerCount = 0;
// count valid spawn marker positions
for "_i" from 0 to spawnMarkerCount do {
if (!([(getMarkerPos format["spawn%1", _i]), [0,0,0]] call BIS_fnc_areEqual)) then {
actualSpawnMarkerCount = actualSpawnMarkerCount + 1;
} else {
// exit since we did not find any further markers
_i = spawnMarkerCount + 99;
};
 
};
diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount];
 
endLoadingScreen;
};
 
ExecVM "\z\addons\dayz_server\WAI\init.sqf";
[] ExecVM "\z\addons\dayz_server\DZMS\DZMSInit.sqf";
[] call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZAI\init\dzai_initserver.sqf";
 
allowConnection = true;
sm_done = true;
publicVariable "sm_done";
};

 
and sync error :(
 
"ERROR: Cannot Sync Character Pangea as no characterID" - stuck in authenticate screen 
 
/edit
 
copied 
 

if ((typeName (_worldspace select 0)) == "STRING") then {
_worldspace set [0, call compile (_worldspace select 0)];
_worldspace set [1, call compile (_worldspace select 1)];
};

 
from the 2.5 server monitor that it looks like this:
 

if (count _worldspace >= 2) then
{
 
if ((typeName (_worldspace select 0)) == "STRING") then {
_worldspace set [0, call compile (_worldspace select 0)];
_worldspace set [1, call compile (_worldspace select 1)];
};
 
_dir = _worldspace select 0;
if (count (_worldspace select 1) == 3) then {
_pos = _worldspace select 1;
_wsDone = true;
}
};

 
Error gone, sync error fixed with zubas fix ()
 
still got some client errors (the one i posted before with _friends) but I'm testing and will update. (_friends fixed by putting it in the private ["...","..."...] section)
 
puuh, im really done today :D :D
 
got some client errors:
 
fn_selfaction undefinied variable 
 
line 7 _temp_keys
line 357 _player_deleteBuild
line 413 _player_lockUnlock_crtl
line 472 _player_flipveh
line 595 _cursortarget
lini 898 _isDog
 
and scroll menu is fucked.. it "saves" the last scroll menu options and if I'm running away I still got the last options...
 
this is my selfaction.sql:
 

scriptName "Functions\misc\fn_selfActions.sqf";
/***********************************************************
ADD ACTIONS FOR SELF
- Function
- [] call fnc_usec_selfActions;
************************************************************/
private ["_isWreckBuilding","_temp_keys","_magazinesPlayer","_isPZombie","_vehicle","_inVehicle","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_Unlock","_lock","_buy","_dogHandle","_lieDown","_warn","_hastinitem","_allowedDistance","_menu","_menu1","_humanity_logic","_low_high","_cancel","_metals_trader","_traderMenu","_isWreck","_isRemovable","_isDisallowRepair","_rawmeat","_humanity","_speed","_dog","_hasbottleitem","_isAir","_isShip","_playersNear","_findNearestGens","_findNearestGen","_IsNearRunningGen","_cursorTarget","_isnewstorage","_itemsPlayer","_ownerKeyId","_typeOfCursorTarget","_hasKey","_oldOwner","_combi","_key_colors","_player_deletebuild","_player_flipveh","_player_lockUnlock_crtl","_player_butcher","_player_studybody","_player_cook","_player_boil","_hasFuelBarrelE","_hasHotwireKit","_player_SurrenderedGear","_isSurrendered","_isModular","_isModularDoor","_ownerKeyName","_temp_keys_names","_hasAttached","_allowTow","_liftHeli","_found","_posL","_posC","_height","_liftHelis","_attached","_playerUID","_characterID","_plotDistance","_PlotsNear","_classname","_isowner","_friends","_friendlies"];
 
if (DZE_ActionInProgress) exitWith {}; // Do not allow if any script is running.
 
_vehicle = vehicle player;
_isPZombie = player isKindOf "PZombie_VB";
_inVehicle = (_vehicle != player);
 
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
 
_nearLight = nearestObject [player,"LitObject"];
_canPickLight = false;
if (!isNull _nearLight) then {
if (_nearLight distance player < 4) then {
_canPickLight = isNull (_nearLight getVariable ["owner",objNull]);
};
};
 
//Grab Flare
if (_canPickLight && !dayz_hasLight && !_isPZombie) then {
if (s_player_grabflare < 0) then {
_text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");
s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""];
s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true, "", ""];
};
} else {
player removeAction s_player_grabflare;
player removeAction s_player_removeflare;
s_player_grabflare = -1;
s_player_removeflare = -1;
};
 
if (DZE_HeliLift) then {
_hasAttached = _vehicle getVariable["hasAttached",false];
if(_inVehicle && (_vehicle isKindOf "Air") && ((([_vehicle] call FNC_getPos) select 2) < 30) && (speed _vehicle < 5) && (typeName _hasAttached == "OBJECT")) then {
if (s_player_heli_detach < 0) then {
dayz_myLiftVehicle = _vehicle;
s_player_heli_detach = dayz_myLiftVehicle addAction ["Detach Vehicle","\z\addons\dayz_code\actions\player_heliDetach.sqf",[dayz_myLiftVehicle,_hasAttached],2,false,true,"",""];
};
} else {
dayz_myLiftVehicle removeAction s_player_heli_detach;
s_player_heli_detach = -1;
};
};
 
if(DZE_HaloJump) then {
if(_inVehicle && (_vehicle isKindOf "Air") && ((([_vehicle] call FNC_getPos) select 2) > 400)) then {
if (s_halo_action < 0) then {
DZE_myHaloVehicle = _vehicle;
s_halo_action = DZE_myHaloVehicle addAction [localize "STR_EPOCH_ACTIONS_HALO","\z\addons\dayz_code\actions\halo_jump.sqf",[],2,false,true,"",""];
};
} else {
DZE_myHaloVehicle removeAction s_halo_action;
s_halo_action = -1;
};
};
 
if (!DZE_ForceNameTagsOff) then {
if (s_player_showname < 0 && !_isPZombie) then {
if (DZE_ForceNameTags) then {
s_player_showname = 1;
player setVariable["DZE_display_name",true,true];
} else {
s_player_showname = player addAction [localize "STR_EPOCH_ACTIONS_NAMEYES", "\z\addons\dayz_code\actions\display_name.sqf",true, 0, true, false, "",""];
s_player_showname1 = player addAction [localize "STR_EPOCH_ACTIONS_NAMENO", "\z\addons\dayz_code\actions\display_name.sqf",false, 0, true, false, "",""];
};
};
};
 
if(_isPZombie) then {
if (s_player_callzombies < 0) then {
s_player_callzombies = player addAction [localize "STR_EPOCH_ACTIONS_RAISEHORDE", "\z\addons\dayz_code\actions\call_zombies.sqf",player, 5, true, false, "",""];
};
if (DZE_PZATTACK) then {
call pz_attack;
DZE_PZATTACK = false;
};
if (s_player_pzombiesvision < 0) then {
s_player_pzombiesvision = player addAction [localize "STR_EPOCH_ACTIONS_NIGHTVIS", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"];
};
if (!isNull cursorTarget && (player distance cursorTarget < 3)) then { //Has some kind of target
_isAnimal = cursorTarget isKindOf "Animal";
_isZombie = cursorTarget isKindOf "zZombie_base";
_isHarvested = cursorTarget getVariable["meatHarvested",false];
_isMan = cursorTarget isKindOf "Man";
// Pzombie Gut human corpse || animal
if (!alive cursorTarget && (_isAnimal || _isMan) && !_isZombie && !_isHarvested) then {
if (s_player_pzombiesfeed < 0) then {
s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",cursorTarget, 3, true, false, "",""];
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
} else {
player removeAction s_player_pzombiesfeed;
s_player_pzombiesfeed = -1;
};
};
 
// Increase distance only if AIR || SHIP
_allowedDistance = 4;
_isAir = cursorTarget isKindOf "Air";
_isShip = cursorTarget isKindOf "Ship";
if(_isAir || _isShip) then {
_allowedDistance = 8;
};
 
if (!isNull cursorTarget && !_inVehicle && !_isPZombie && (player distance cursorTarget < _allowedDistance) && _canDo) then { //Has some kind of target
 
// set cursortarget to variable
_cursorTarget = cursorTarget;
 
// get typeof cursortarget once
_typeOfCursorTarget = typeOf _cursorTarget;
 
// hintsilent _typeOfCursorTarget;
 
_isVehicle = _cursorTarget isKindOf "AllVehicles";
_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"];
_isnewstorage = _typeOfCursorTarget in DZE_isNewStorage;
 
// get items && magazines only once
_magazinesPlayer = magazines player;
 
//boiled Water
_hasbottleitem = "ItemWaterbottle" in _magazinesPlayer;
_hastinitem = false;
{
if (_x in _magazinesPlayer) then {
_hastinitem = true;
};
} count boil_tin_cans;
_hasFuelE = "ItemJerrycanEmpty" in _magazinesPlayer;
_hasFuelBarrelE = "ItemFuelBarrelEmpty" in _magazinesPlayer;
_hasHotwireKit = "ItemHotwireKit" in _magazinesPlayer;
 
_itemsPlayer = items player;
 
_temp_keys = [];
_temp_keys_names = [];
// find available keys
_key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];
{
if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in _key_colors) then {
_ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid");
_ownerKeyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName");
_temp_keys_names set [_ownerKeyId,_ownerKeyName];
_temp_keys set [count _temp_keys,str(_ownerKeyId)];
};
} count _itemsPlayer;
 
_hasKnife = "ItemKnife" in _itemsPlayer;
_hasToolbox = "ItemToolbox" in _itemsPlayer;
 
if (DZE_APlotforLife) then {
_playerUID = [player] call FNC_GetPlayerUID;
}else{
_playerUID = dayz_characterID;
};
 
_isMan = _cursorTarget isKindOf "Man";
_traderType = _typeOfCursorTarget;
_ownerID = _cursorTarget getVariable ["ownerPUID","0"];
_characterID = _cursorTarget getVariable ["CharacterID","0"];
_isAnimal = _cursorTarget isKindOf "Animal";
_isDog =  (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin");
_isZombie = _cursorTarget isKindOf "zZombie_base";
_isDestructable = _cursorTarget isKindOf "BuiltItems";
_isWreck = _typeOfCursorTarget in DZE_isWreck;
_isWreckBuilding = _typeOfCursorTarget in DZE_isWreckBuilding;
_isModular = _cursorTarget isKindOf "ModularItems";
_isModularDoor = _typeOfCursorTarget in ["Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","CinderWallDoor_DZ","CinderWallDoorSmall_DZ"];
 
_isRemovable = _typeOfCursorTarget in DZE_isRemovable;
_isDisallowRepair = _typeOfCursorTarget in ["M240Nest_DZ"];
 
_isTent = _cursorTarget isKindOf "TentStorage";
 
_isAlive = alive _cursorTarget;
 
_text = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName");
 
_rawmeat = meatraw;
_hasRawMeat = false;
{
if (_x in _magazinesPlayer) then {
_hasRawMeat = true;
};
} count _rawmeat; 
 
_isFuel = false;
if (_hasFuelE || _hasFuelBarrelE) then {
{
if(_cursorTarget isKindOf _x) exitWith {_isFuel = true;};
} count dayz_fuelsources;
};
 
// diag_log ("OWNERID = " + _ownerID + " CHARID = " + dayz_characterID + " " + str(_ownerID == dayz_characterID));
 
// logic vars
_player_flipveh = false;
_player_deleteBuild = false;
_player_lockUnlock_crtl = fals;
 
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 ["ownerPUID","0"];
_friends = _cursorTarget getVariable ["plotfriends", []];
_fuid = [];
{
_friendUID = _x select 0;
_fuid = _fuid + [_friendUID];
} forEach _friends;
_allowed = [_owner];    
_allowed = [_owner] + _adminList + _fuid;
if((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 [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];
};
 
_plotDistance = (DZE_PlotPole select 0);
_PlotsmarkersNear = count (nearestObjects [_cursorTarget, ["Land_coneLight"], _PlotDistance]);
 
if (s_player_plot_boundary_on < 0) then {
If (_PlotsmarkersNear == 0 ) then{
s_player_plot_boundary_on = player addAction ["Show plot boundary", "Custom\A_Plot_for_Life\Action\object_showPlotRadius.sqf", "", 1, false];
};
};
if (s_player_plot_boundary_off < 0) then {
If (_PlotsmarkersNear > 0 ) then{
s_player_plot_boundary_off = player addAction ["Remove plot boundary", "Custom\A_Plot_for_Life\Action\object_removePlotRadius.sqf", "", 1, false];
};
};
if (s_player_plot_take_ownership < 0) then {
if (DZE_PlotOwnership) then {
_isowner = [player, _cursorTarget] call FNC_check_owner;
If (( _isowner select 0 )) then{
s_player_plot_take_ownership = player addAction ["Take plot items ownership", "Custom\A_Plot_for_Life\Action\plot_take_ownership.sqf", "", 1, 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;
player removeAction s_player_plot_boundary_on;
s_player_plot_boundary_on = -1;
player removeAction s_player_plot_boundary_off;
s_player_plot_boundary_off = -1;
player removeAction s_player_plot_take_ownership;
s_player_plot_take_ownership = -1;
};
 
// CURSOR TARGET ALIVE
if(_isAlive) then {
 
//Allow player to delete objects
if(_isDestructable || _isWreck || _isRemovable || _isWreckBuilding) then {
if(_hasToolbox && "ItemCrowbar" in _itemsPlayer) then {
_player_deleteBuild = true;
};
};
 
//Allow owners to delete modulars
 
///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 ["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;
};
};                  
            };
    };
//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;
};
};
            };      
    };
};
// CURSOR TARGET VEHICLE
if(_isVehicle) then {
 
//flip vehicle small vehicles by your self && all other vehicles with help nearby
if (!(canmove _cursorTarget) && (player distance _cursorTarget >= 2) && (count (crew _cursorTarget))== 0 && ((vectorUp _cursorTarget) select 2) < 0.5) then {
_playersNear = {isPlayer _x} count (player nearEntities ["CAManBase", 6]);
if(_isVehicletype || (_playersNear >= 2)) then {
_player_flipveh = true;
};
};
 
 
if(!_isMan && _characterID != "0" && !(_cursorTarget isKindOf "Bicycle")) then {
_player_lockUnlock_crtl = true;
};
 
};
 
};
 
if(_player_deleteBuild) then {
if (s_player_deleteBuild < 0) then {
s_player_deleteBuild = player addAction [format[localize "str_actions_delete",_text], "Custom\A_Plot_for_Life\Action\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
};
 
if (DZE_HeliLift) then {
_liftHeli = objNull;
_found = false;
 
_allowTow = false;
if ((count (crew _cursorTarget)) == 0) then {
{
if(!_allowTow) then {
_allowTow = _cursorTarget isKindOf _x;
};
} count DZE_HeliAllowToTow;
};
 
//diag_log format["CREW: %1 ALLOW: %2",(count (crew _cursorTarget)),_allowTow];
 
if (_allowTow) then {
_liftHelis = nearestObjects [player, DZE_HeliAllowTowFrom, 15];
{
if(!_found) then {
_posL = [_x] call FNC_getPos;
_posC = [_cursorTarget] call FNC_getPos;
_height = (_posL select 2) - (_posC select 2);
_hasAttached = _x getVariable["hasAttached",false];
if(_height < 15 && _height > 5 && (typeName _hasAttached != "OBJECT")) then {
if(((abs((_posL select 0) - (_posC select 0))) < 10) && ((abs((_posL select 1) - (_posC select 1))) < 10)) then {
_liftHeli = _x;
_found = true;
};
};
};
} count _liftHelis;
};
 
//diag_log format["HELI: %1 TARGET: %2",_found,_cursorTarget];
 
_attached = _cursorTarget getVariable["attached",false];
if(_found && _allowTow && _canDo && !locked _cursorTarget && !_isPZombie && (typeName _attached != "OBJECT")) then {
if (s_player_heli_lift < 0) then {
s_player_heli_lift = player addAction ["Attach to Heli", "\z\addons\dayz_code\actions\player_heliLift.sqf",[_liftHeli,_cursorTarget], -10, false, true, "",""];
};
} else {
player removeAction s_player_heli_lift;
s_player_heli_lift = -1;
};
};
 
// Allow Owner to lock && unlock vehicle  
if(_player_lockUnlock_crtl) then {
if (s_player_lockUnlock_crtl < 0) then {
_hasKey = _characterID in _temp_keys;
_oldOwner = (_characterID == dayz_playerUID);
if(locked _cursorTarget) then {
if(_hasKey || _oldOwner) then {
_Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (parseNumber _characterID))], 2, true, true, "", ""];
s_player_lockunlock set [count s_player_lockunlock,_Unlock];
s_player_lockUnlock_crtl = 1;
} else {
if(_hasHotwireKit) then {
_Unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true, "", ""];
} else {
_Unlock = player addAction [format["<t color=#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED], "",_cursorTarget, 2, true, true, "", ""];
};
s_player_lockunlock set [count s_player_lockunlock,_Unlock];
s_player_lockUnlock_crtl = 1;
};
} else {
if(_hasKey || _oldOwner) then {
_lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true, "", ""];
s_player_lockunlock set [count s_player_lockunlock,_lock];
s_player_lockUnlock_crtl = 1;
};
};
};
 
} else {
{player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;
};
 
if(DZE_AllowForceSave) then {
//Allow player to force save
if((_isVehicle || _isTent) && !_isMan) then {
if (s_player_forceSave < 0) then {
s_player_forceSave = player addAction [format[localize "str_actions_save",_text], "\z\addons\dayz_code\actions\forcesave.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_forceSave;
s_player_forceSave = -1;
};
};
 
 
 
If(DZE_AllowCargoCheck) then {
if((_isVehicle || _isTent || _isnewstorage) && _isAlive && !_isMan && !locked _cursorTarget) then {
if (s_player_checkGear < 0) then {
s_player_checkGear = player addAction [localize "STR_EPOCH_PLAYER_CARGO", "\z\addons\dayz_code\actions\cargocheck.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_checkGear;
s_player_checkGear = -1;
};
};
 
 
//flip vehicle small vehicles by your self && all other vehicles with help nearby
if(_player_flipveh) then {
if (s_player_flipveh  < 0) then {
s_player_flipveh = player addAction [format[localize "str_actions_flipveh",_text], "\z\addons\dayz_code\actions\player_flipvehicle.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_flipveh;
s_player_flipveh = -1;
}; 
 
//Allow player to fill jerrycan
if((_hasFuelE || _hasFuelBarrelE) && _isFuel) then {
if (s_player_fillfuel < 0) then {
s_player_fillfuel = player addAction [localize "str_actions_self_10", "\z\addons\dayz_code\actions\jerry_fill.sqf",[], 1, false, true, "", ""];
};
} else {
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
};
 
// logic vars for addactions
_player_butcher = false;
_player_studybody = false;
_player_SurrenderedGear = false;
 
// CURSOR TARGET NOT ALIVE
if (!_isAlive) then {
 
// Gut animal/zed
if((_isAnimal || _isZombie) && _hasKnife) then {
_isHarvested = _cursorTarget getVariable["meatHarvested",false];
if (!_isHarvested) then {
_player_butcher = true;
};
};
 
// Study body
if (_isMan && !_isZombie && !_isAnimal) then {
_player_studybody = true;
}
} else {
// unit alive
 
// gear access on surrendered player
if(_isMan && !_isZombie && !_isAnimal) then {
_isSurrendered = _cursorTarget getVariable ["DZE_Surrendered",false];
if (_isSurrendered) then {
_player_SurrenderedGear = true;
};
};
};
 
 
// Human Gut animal || zombie
if (_player_butcher) then {
if (s_player_butcher < 0) then {
if(_isZombie) then {
s_player_butcher = player addAction [localize "STR_EPOCH_ACTIONS_GUTZOM", "\z\addons\dayz_code\actions\gather_zparts.sqf",_cursorTarget, 0, true, true, "", ""];
} else {
s_player_butcher = player addAction [localize "str_actions_self_04", "\z\addons\dayz_code\actions\gather_meat.sqf",_cursorTarget, 3, true, true, "", ""];
};
};
} else {
player removeAction s_player_butcher;
s_player_butcher = -1;
};
 
// Study Body
if (_player_studybody) then {
if (s_player_studybody < 0) then {
s_player_studybody = player addAction [localize "str_action_studybody", "\z\addons\dayz_code\actions\study_body.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_studybody;
s_player_studybody = -1;
};
 
// logic vars
_player_cook = false;
_player_boil = false;
 
// CURSOR TARGET IS FIRE
if (inflamed _cursorTarget) then {
 
//Fireplace Actions check
if (_hasRawMeat) then {
_player_cook = true;
};
 
// Boil water
if (_hasbottleitem && _hastinitem) then {
_player_boil = true;
};
};
 
if (_player_SurrenderedGear) then {
if (s_player_SurrenderedGear < 0) then {
s_player_SurrenderedGear = player addAction [localize "STR_EPOCH_ACTIONS_GEAR", "\z\addons\dayz_code\actions\surrender_gear.sqf",_cursorTarget, 1, true, true, "", ""];
};
} else {
player removeAction s_player_SurrenderedGear;
s_player_SurrenderedGear = -1;
};
 
//Fireplace Actions check
if (_player_cook) then {
if (s_player_cook < 0) then {
s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true, "", ""];
};
} else {
player removeAction s_player_cook;
s_player_cook = -1;
};
 
// Boil water
if (_player_boil) then {
if (s_player_boil < 0) then {
s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true, "", ""];
};
} else {
player removeAction s_player_boil;
s_player_boil = -1;
};
 
if(_cursorTarget == dayz_hasFire) then {
if ((s_player_fireout < 0) && !(inflamed _cursorTarget) && (player distance _cursorTarget < 3)) then {
s_player_fireout = player addAction [localize "str_actions_self_06", "\z\addons\dayz_code\actions\fire_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_fireout;
s_player_fireout = -1;
};
 
//Packing my tent
if(_isTent && (player distance _cursorTarget < 3)) then {
if (_ownerID == _playerUID) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
if(("ItemJerrycan" in _magazinesPlayer) && ("ItemMatchbox_DZE" in weapons player)) then {
if (s_player_packtent < 0) then {
s_player_packtent = player addAction [localize "STR_EPOCH_ACTIONS_DESTROYTENT", "Custom\A_Plot_for_Life\Action\remove.sqf",_cursorTarget, 1, true, true, "", ""];
};
};
};
} else {
player removeAction s_player_packtent;
s_player_packtent = -1;
};
 
//Allow owner to unlock vault
if((_typeOfCursorTarget in DZE_LockableStorage) && _characterID != "0" && (player distance _cursorTarget < 3)) then {
if (s_player_unlockvault < 0) then {
if(_typeOfCursorTarget in DZE_LockedStorage) then {
if(_characterID == dayz_combination || _ownerID == _playerUID) then {
_combi = player addAction [format[localize "STR_EPOCH_ACTIONS_OPEN",_text], "\z\addons\dayz_code\actions\vault_unlock.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
} else {
_combi = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
};
s_player_unlockvault = 1;
} else {
if(_characterID != dayz_combination && _ownerID != _playerUID) then {
_combi = player addAction [localize "STR_EPOCH_ACTIONS_RECOMBO", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true, "",""];
s_player_combi set [count s_player_combi,_combi];
s_player_unlockvault = 1;
};
};
};
} else {
{player removeAction _x} count s_player_combi;s_player_combi = [];
s_player_unlockvault = -1;
};
 
//Allow owner to pack vault
if(_typeOfCursorTarget in DZE_UnLockedStorage && _characterID != "0" && (player distance _cursorTarget < 3)) then {
 
if (s_player_lockvault < 0) then {
if(_characterID == dayz_combination || _ownerID == dayz_playerUID) then {
s_player_lockvault = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true, "",""];
};
};
if (s_player_packvault < 0 && (_characterID == dayz_combination || _ownerID == dayz_playerUID)) then {
s_player_packvault = player addAction [format["<t color=#ff0000'>%1</t>",(format[localize "STR_EPOCH_ACTIONS_PACK",_text])], "\z\addons\dayz_code\actions\vault_pack.sqf",_cursorTarget, 0, false, true, "","];
};
} else {
player removeAction s_player_packvault;
s_player_packvault = -1;
player removeAction s_player_lockvault;
s_player_lockvault = -1;
};
 
 
 
    //Player Deaths
if(_typeOfCursorTarget == "Info_Board_EP1") then {
if (s_player_information < 0) then {
s_player_information = player addAction [localize "STR_EPOCH_ACTIONS_MURDERS", "\z\addons\dayz_code\actions\list_playerDeaths.sqf",[], 7, false, true, "",""];
};
} else {
player removeAction s_player_information;
s_player_information = -1;
};
 
//Fuel Pump
if(_typeOfCursorTarget in dayz_fuelpumparray) then {
if (s_player_fuelauto < 0) then {
 
// check if Generator_DZ is running within 30 meters
_findNearestGens = nearestObjects [player, ["Generator_DZ"], 30];
_findNearestGen = [];
{
if (alive _x && (_x getVariable ["GeneratorRunning", false])) then {
_findNearestGen set [(count _findNearestGen),_x];
};
} count _findNearestGens;
_IsNearRunningGen = count (_findNearestGen);
 
// show that pump needs power if no generator nearby.
if(_IsNearRunningGen > 0) then {
s_player_fuelauto = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true, "",""];
} else {
s_player_fuelauto = player addAction [format["<t color=#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_NEEDPOWER], "",[], 0, false, true, "",""];
};
};
} else {
player removeAction s_player_fuelauto;
s_player_fuelauto = -1;
};
 
//Fuel Pump on truck
if(_typeOfCursorTarget in DZE_fueltruckarray && alive _cursorTarget) then {
if (s_player_fuelauto2 < 0) then {
// show that fuel truck pump needs power.
if(isEngineOn _cursorTarget) then {
s_player_fuelauto2 = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_fuelauto2 = player addAction [format["<t color=#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_NEEDPOWER], "",[], 0, false, true, "",""];
};
};
} else {
player removeAction s_player_fuelauto2;
s_player_fuelauto2 = -1;
};
 
// inplace upgrade tool
if ((_cursorTarget isKindOf "ModularItems") || (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") || (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
if ((s_player_lastTarget select 0) != _cursorTarget) then {
if (s_player_upgrade_build > 0) then {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
};
if (s_player_upgrade_build < 0) then {
// s_player_lastTarget = _cursorTarget;
s_player_lastTarget set [0,_cursorTarget];
s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_UPGRADE",_text], "Custom\A_Plot_for_Life\Action\player_upgrade.sqf",_cursorTarget, -1, false, true, "",""];
};
} else {
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
 
// downgrade system
if((_isDestructable || _cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" || _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base") && (DZE_Lock_Door == _characterID)) then {
if ((s_player_lastTarget select 1) != _cursorTarget) then {
if (s_player_downgrade_build > 0) then {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
};
 
if (s_player_downgrade_build < 0) then {
s_player_lastTarget set [1,_cursorTarget];
s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "Custom\A_Plot_for_Life\Action\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true, "",""];
};
} else {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
 
// inplace maintenance tool
if((_cursorTarget isKindOf "ModularItems" || _cursorTarget isKindOf "DZE_Housebase" || _typeOfCursorTarget == "LightPole_DZ") && (damage _cursorTarget >= DZE_DamageBeforeMaint)) then {
if ((s_player_lastTarget select 2) != _cursorTarget) then {
if (s_player_maint_build > 0) then {
player removeAction s_player_maint_build;
s_player_maint_build = -1;
};
};
 
if (s_player_maint_build < 0) then {
s_player_lastTarget set [2,_cursorTarget];
s_player_maint_build = player addAction [format[localize "STR_EPOCH_ACTIONS_MAINTAIN",_text], "\z\addons\dayz_code\actions\player_buildingMaint.sqf",_cursorTarget, -2, false, true, "",""];
};
} else {
player removeAction s_player_maint_build;
s_player_maint_build = -1;
};
 
 
//Start Generator
if(_cursorTarget isKindOf "Generator_DZ") then {
if (s_player_fillgen < 0) then {
 
// check if not running 
if((_cursorTarget getVariable ["GeneratorRunning", false])) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR1", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
// check if not filled && player has jerry.
if((_cursorTarget getVariable ["GeneratorFilled", false])) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR2", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
} else {
if("ItemJerrycan" in _magazinesPlayer) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR3", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true, "",""];
};
};
};
};
} else {
player removeAction s_player_fillgen;
s_player_fillgen = -1;
};
 
//Towing with tow truck
/*
if(_typeOfCursorTarget == "TOW_DZE") then {
if (s_player_towing < 0) then {
if(!(_cursorTarget getVariable ["DZEinTow", false])) then {
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true, "",""];
};
};
} else {
player removeAction s_player_towing;
s_player_towing = -1;
};
*/
 
 
    //Sleep
if(_isTent && _ownerID == _playerUID) then {
if ((s_player_sleep < 0) && (player distance _cursorTarget < 3)) then {
s_player_sleep = player addAction [localize "str_actions_self_sleep", "\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_sleep;
s_player_sleep = -1;
};
 
//Repairing Vehicles
if ((dayz_myCursorTarget != _cursorTarget) && _isVehicle && !_isMan && _hasToolbox && (damage _cursorTarget < 1) && !_isDisallowRepair) then {
if (s_player_repair_crtl < 0) then {
dayz_myCursorTarget = _cursorTarget;
_menu = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_REPAIRV", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
_menu1 = dayz_myCursorTarget addAction [localize "STR_EPOCH_PLAYER_SALVAGEV", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false, "",""];
s_player_repairActions set [count s_player_repairActions,_menu];
s_player_repairActions set [count s_player_repairActions,_menu1];
s_player_repair_crtl = 1;
} else {
{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
};
};
 
// All Traders
if (_isMan && !_isPZombie && _traderType in serverTraders) then {
 
if (s_player_parts_crtl < 0) then {
 
// get humanity
_humanity = player getVariable ["humanity",0];
_traderMenu = call compile format["menu_%1;",_traderType];
 
// diag_log ("TRADER = " + str(_traderMenu));
 
_low_high = "low";
_humanity_logic = false;
if((_traderMenu select 2) == "friendly") then {
_humanity_logic = (_humanity < -5000);
};
if((_traderMenu select 2) == "hostile") then {
_low_high = "high";
_humanity_logic = (_humanity > -5000);
};
if((_traderMenu select 2) == "hero") then {
_humanity_logic = (_humanity < 5000);
};
if(_humanity_logic) then {
_cancel = player addAction [format[localize "STR_EPOCH_ACTIONS_HUMANITY",_low_high], "\z\addons\dayz_code\actions\trade_cancel.sqf",["na"], 0, true, false, "",""];
s_player_parts set [count s_player_parts,_cancel];
} else {
 
// Static Menu
{
//diag_log format["DEBUG TRADER: %1", _x];
_buy = player addAction [format["Trade %1 %2 for %3 %4",(_x select 3),(_x select 5),(_x select 2),(_x select 6)], "\z\addons\dayz_code\actions\trade_items_wo_db.sqf",[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4),(_x select 5),(_x select 6)], (_x select 7), true, true, "",""];
s_player_parts set [count s_player_parts,_buy];
 
} count (_traderMenu select 1);
// Database menu
_buy = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\show_dialog.sqf",(_traderMenu select 0), 999, true, false, "",""];
s_player_parts set [count s_player_parts,_buy];
 
};
s_player_parts_crtl = 1;
 
};
} else {
{player removeAction _x} count s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
};
 
 
if(dayz_tameDogs) then {
 
//Dog
if (_isDog && _isAlive && (_hasRawMeat) && _characterID == "0" && player getVariable ["dogID", 0] == 0) then {
if (s_player_tamedog < 0) then {
s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\tame_dog.sqf", _cursorTarget, 1, false, true, "", ""];
};
} else {
player removeAction s_player_tamedog;
s_player_tamedog = -1;
};
if (_isDog && _characterID == dayz_characterID && _isAlive) then {
_dogHandle = player getVariable ["dogID", 0];
if (s_player_feeddog < 0 && _hasRawMeat) then {
s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true,"",""];
};
if (s_player_waterdog < 0 && "ItemWaterbottle" in _magazinesPlayer) then {
s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true,"",""];
};
if (s_player_staydog < 0) then {
_lieDown = _dogHandle getFSMVariable "_actionLieDown";
if (_lieDown) then { _text = "str_actions_liedog"; } else { _text = "str_actions_sitdog"; };
s_player_staydog = player addAction [localize _text,"\z\addons\dayz_code\actions\dog\stay.sqf", _dogHandle, 5, false, true,"",""];
};
if (s_player_trackdog < 0) then {
s_player_trackdog = player addAction [localize "str_actions_trackdog","\z\addons\dayz_code\actions\dog\track.sqf", _dogHandle, 4, false, true,"",""];
};
if (s_player_barkdog < 0) then {
s_player_barkdog = player addAction [localize "str_actions_barkdog","\z\addons\dayz_code\actions\dog\speak.sqf", _cursorTarget, 3, false, true,"",""];
};
if (s_player_warndog < 0) then {
_warn = _dogHandle getFSMVariable "_watchDog";
if (_warn) then { _text = (localize "str_epoch_player_247"); _warn = false; } else { _text = (localize "str_epoch_player_248"); _warn = true; };
s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true,"",""];
};
if (s_player_followdog < 0) then {
s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true,"",""];
};
} else {
player removeAction s_player_feeddog;
s_player_feeddog = -1;
player removeAction s_player_waterdog;
s_player_waterdog = -1;
player removeAction s_player_staydog;
s_player_staydog = -1;
player removeAction s_player_trackdog;
s_player_trackdog = -1;
player removeAction s_player_barkdog;
s_player_barkdog = -1;
player removeAction s_player_warndog;
s_player_warndog = -1;
player removeAction s_player_followdog;
s_player_followdog = -1;
};
} else {
//Engineering
player removeAction s_player_plotManagement;
s_player_plotManagement = -1;
 
{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
s_player_repair_crtl = -1;
 
{player removeAction _x} count s_player_combi;s_player_combi = [];
 
dayz_myCursorTarget = objNull;
s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
 
{player removeAction _x} count s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
 
{player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;
 
player removeAction s_player_checkGear;
s_player_checkGear = -1;
 
player removeAction s_player_SurrenderedGear;
s_player_SurrenderedGear = -1;
 
//Others
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
player removeAction s_player_plot_boundary_on;
s_player_plot_boundary_on = -1;
player removeAction s_player_plot_boundary_off;
s_player_plot_boundary_off = -1;
player removeAction s_player_plot_take_ownership;
s_player_plot_take_ownership = -1;
player removeAction s_player_forceSave;
s_player_forceSave = -1;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
player removeAction s_player_sleep;
s_player_sleep = -1;
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
player removeAction s_player_butcher;
s_player_butcher = -1;
player removeAction s_player_cook;
s_player_cook = -1;
player removeAction s_player_boil;
s_player_boil = -1;
player removeAction s_player_fireout;
s_player_fireout = -1;
player removeAction s_player_packtent;
s_player_packtent = -1;
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
player removeAction s_player_studybody;
s_player_studybody = -1;
 
//Dog
player removeAction s_player_tamedog;
s_player_tamedog = -1;
player removeAction s_player_feeddog;
s_player_feeddog = -1;
player removeAction s_player_waterdog;
s_player_waterdog = -1;
player removeAction s_player_staydog;
s_player_staydog = -1;
player removeAction s_player_trackdog;
s_player_trackdog = -1;
player removeAction s_player_barkdog;
s_player_barkdog = -1;
player removeAction s_player_warndog;
s_player_warndog = -1;
player removeAction s_player_followdog;
s_player_followdog = -1;
    
    // vault
player removeAction s_player_unlockvault;
s_player_unlockvault = -1;
player removeAction s_player_packvault;
s_player_packvault = -1;
player removeAction s_player_lockvault;
s_player_lockvault = -1;
 
player removeAction s_player_information;
s_player_information = -1;
player removeAction s_player_fillgen;
s_player_fillgen = -1;
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
player removeAction s_player_maint_build;
s_player_maint_build = -1;
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
player removeAction s_player_towing;
s_player_towing = -1;
player removeAction s_player_fuelauto;
s_player_fuelauto = -1;
player removeAction s_player_fuelauto2;
s_player_fuelauto2 = -1;
};
 
 
 
//Dog actions on player self
_dogHandle = player getVariable ["dogID", 0];
if (_dogHandle > 0) then {
_dog = _dogHandle getFSMVariable "_dog";
_characterID = "0";
if (!isNull cursorTarget) then { _characterID = cursorTarget getVariable ["CharacterID","0"]; };
if (_canDo && !_inVehicle && alive _dog && _characterID != dayz_characterID) then {
if (s_player_movedog < 0) then {
s_player_movedog = player addAction [localize "str_actions_movedog", "\z\addons\dayz_code\actions\dog\move.sqf", player getVariable ["dogID", 0], 1, false, true, "", ""];
};
if (s_player_speeddog < 0) then {
_text = (localize "str_epoch_player_249");
_speed = 0;
if (_dog getVariable ["currentSpeed",1] == 0) then { _speed = 1; _text = (localize "str_epoch_player_250"); };
s_player_speeddog = player addAction [format[localize "str_actions_speeddog", _text], "\z\addons\dayz_code\actions\dog\speed.sqf",[player getVariable ["dogID", 0],_speed], 0, false, true, "", ""];
};
if (s_player_calldog < 0) then {
s_player_calldog = player addAction [localize "str_actions_calldog", "\z\addons\dayz_code\actions\dog\follow.sqf", [player getVariable ["dogID", 0], true], 2, false, true, "", ""];
};
};
} else {
player removeAction s_player_movedog;
s_player_movedog = -1;
player removeAction s_player_speeddog;
s_player_speeddog = -1;
player removeAction s_player_calldog;
s_player_calldog = -1;
};

 
Link to comment
Share on other sites

Check where those variables are defined in the fn_selfactions as they are not getting set for some reason.

They are, but nvm, i managed to install 2.5 + plotmanagment.. user have to add themselves as plotfriends, but everything besides works.. will update asap

Link to comment
Share on other sites

Ok, I followed the directions and have this installed on my brand new server. The server starts up and people can get in the lobby without issue. After clicking join though they keep trying to connect until the server puts them back in the lobby due to timeout.....any ideas?....No errors in log either

Link to comment
Share on other sites

Post your client and server rpt files via a pastebin link or in spoiler tags please (use spoiler tags for big posts of code or log files (spoiler) (/spoiler) change the () to [] for them to work).

 

It would be most helpful if you clear the old log files on the client and server and then start the server and try to connect from the client and after the failure post the files. That way it will be easier to see what is going on.

 

Starting ARMA with the -showscripterrors on the startup line will report script errors to the clients screen for any that affect the client as well as log them to the RPT files.

Link to comment
Share on other sites

Finally got this working as intended, what a PITA merging can be.

 

However, "take ownership" option is not coming up at plot poles. Maintain, maintain preview and remove do work as intended. Restarted the server and still no option for taking ownership, everything built after adding this do have owner ID in database. Help?

 

Edit: toggle plot radius doesnt work either. The heck?

Link to comment
Share on other sites

Does this work without the snap build pro? I already have a snap build mod installed and it would be a pain to have to remove and install a new one (plus chances are I would have to wipe the database)

 

 

If anyone can help would be appreciated!

 

You should just be able to overwrite the snap build files and make sure the compiles.sqf is pointing to their location.  The only ones you will need to merge (depending on any other mods you may have installed) will be player_build and / or modular_build (1 or more files) depending on other mods you have installed.

 

Personally I would just install my mod and change the snap build files with any changes required by other mods (should be very small) and it should work fine.  You cna then remove any old snap build files that are no longer required.

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