Hello all, I'm trying to install I am running into issues with undefined variables everywhere. I have followed the instructions to a T but still. Now I did ask for help in the topic but I would also like to learn so I figured I'd ask here. Anyways here is the full sqf that I am using.
VehicleKeyChanger.sqf
/***********************************/ /* Vehicle Key Changer v1.4 */ /* Written by OtterNas3 */ /* January, 11, 2014 */ /* Last update: 06/15/2014 */ /***********************************/ /* Setup the private variables */ private ["_magazinesPlayer","_max","_j","_actionArray","_targetVehicle","_targetVehicleID","_targetVehicleUID","_playerKeys","_playerKeysDisplayName","_targetVehicleKeyName","_itemKeyName","_targetVehicleClassname","_targetVehiclePos","_targetVehicleDir","_Price","_claimingPrice","_timeout"]; /* Remove the Action Menu entry */ player removeAction s_player_copyToKey; s_player_copyToKey = 0; player removeAction s_player_claimVehicle; s_player_claimVehicle = 0; /* Get the array and setup the variables */ _actionArray = _this select 3; _targetVehicle = _actionArray select 0; _targetVehicleID = _targetVehicle getVariable ["ObjectID","0"]; _targetVehicleUID = _targetVehicle getVariable ["ObjectUID","0"]; /* Check if the Vehicle is in the Database, if false exit */ if (_targetVehicleID == "0" && _targetVehicleUID == "0") exitWith {cutText ["Sorry but\nthis Vehicle does not support\nKeychange/Claiming!","PLAIN",0];s_player_copyToKey = -1;s_player_claimVehicle = -1;}; /* Setup more variables */ _playerKeys = _actionArray select 1; _playerKeysDisplayName = _actionArray select 3; _targetVehicleKeyName = _actionArray select 4; _itemKeyName = _actionArray select 5; _Price = _actionArray select 6; _claimingPrice = _actionArray select 7; _targetVehicleClassname = typeOf _targetVehicle; _targetVehiclePos = getPosATL _targetVehicle; _targetVehicleDir = getDir _targetVehicle; /* Just in case it is a just bought vehicle and does not yet have a ObjectUID variable set */ if (_targetVehicleUID == "0") then { _targetVehicleUID = ""; { _x = _x * 10; if ( _x < 0 ) then { _x = _x * -10 }; _targetVehicleUID = _targetVehicleUID + str(round(_x)); } forEach _targetVehiclePos; _targetVehicleUID = _targetVehicleUID + str(round(_targetVehicleDir + time)); _targetVehicle setVariable["ObjectUID",_targetVehicleUID,true]; }; /* Setup the Key Names list to select from */ keyNameList = []; for "_i" from 0 to (count _playerKeysDisplayName) -1 do { keyNameList set [(count keyNameList), _playerKeysDisplayName select _i]; }; /* Setup the Key Numbers list to select from */ keyNumberList = []; for "_i" from 0 to (count _playerKeys) -1 do { keyNumberList set [(count keyNumberList), _playerKeys select _i]; }; /* Resetting menu variables*/ keyNameSelect = ""; exitscript = true; snext = false; /* Creating the menu */ copyMenu = { private ["_keyMenu","_keyArray"]; _keyMenu = [["",true], ["Select the new Key:", [-1], "", -5, [["expression", ""]], "1", "0"]]; for "_i" from (_this select 0) to (_this select 1) do { _keyArray = [format['%1', keyNameList select (_i)], [_i - (_this select 0) + 2], "", -5, [["expression", format ["keyNameSelect = keyNameList select %1; keyNumberSelect = keyNumberList select %1", _i]]], "1", "1"]; _keyMenu set [_i + 2, _keyArray]; }; _keyMenu set [(_this select 1) + 2, ["", [-1], "", -5, [["expression", ""]], "1", "0"]]; if (count keyNameList > (_this select 1)) then { _keyMenu set [(_this select 1) + 3, ["Next", [12], "", -5, [["expression", "snext = true;"]], "1", "1"]]; } else { _keyMenu set [(_this select 1) + 3, ["", [-1], "", -5, [["expression", ""]], "1", "0"]]; }; _keyMenu set [(_this select 1) + 4, ["Exit", [13], "", -5, [["expression", "keyNameSelect = 'exitscript';"]], "1", "1"]]; showCommandingMenu "#USER:_keyMenu"; }; /* Wait for the player to select a Key from the list */ _j = 0; _max = 10; if (_max > 9) then {_max = 10;}; while {keyNameSelect == ""} do { [_j, (_j + _max) min (count keyNameList)] call copyMenu; _j = _j + _max; waitUntil {keyNameSelect != "" || snext}; snext = false; }; /* Player selected a Key, lets make the Vehicle update call */ if (keyNameSelect != "exitscript") then { /* Check again for the needed price or claiming price and remove em from the players inventory */ _magazinesPlayer = magazines player; if (_Price != "0") then { /* Player still has the costs in hi inventory */ if (_Price in _magazinesPlayer) then { [player, _Price, 1] call BIS_fnc_invRemove; systemChat (format["Keychange costs a %1, thanks for your Payment!", _Price]); /* Player doesn't have the costs anymore, tried to trick the system? */ } else { systemChat (format["Keychange costs a %1, you had it and tried to trick the system - Keychange for this Vehicle disabled!", _Price]); /* This disables the Keychange ability for this vehicle JUST for this Player */ /* However he can relog and try again but it is a little punishment for trying to trick it */ _targetVehicle setVariable ["VKC_disabled", 1]; s_player_copyToKey = -1; s_player_claimVehicle = -1; breakOut "exit"; }; }; if (_claimingPrice != "0") then { /* Player still has the costs in hi inventory */ if (_claimingPrice in _magazinesPlayer) then { [player, _claimingPrice, 1] call BIS_fnc_invRemove; systemChat (format["Claiming Vehicle costs a %1, thanks for your Payment!", _claimingPrice]); /* Player doesn't have the costs anymore, tried to trick the system? */ } else { systemChat (format["Claiming Vehicle costs a %1, you had it and tried to trick the system - Claiming for this Vehicle disabled!", Price]); /* This disables the Claiming ability for this vehicle JUST for this Player */ /* However he can relog and try again but it is a little punishment for trying to trick it */ _targetVehicle setVariable ["VKC_claiming_disabled", 1]; s_player_copyToKey = -1; s_player_claimVehicle = -1; breakOut "exit"; }; }; /* We got the Money lets do our Job */ /* Lock the vehicle */ _targetVehicle setVehicleLock "LOCKED"; /* The super duper OneForAllAnimation... */ player playActionNow "Medic"; /* Remove the Key from the Toolbelt of the player and put it in the Backpack - No Backpack and the Key gets lost */ if (_itemKeyName != "0") then { if (!isNull (unitBackpack player)) then { [player, _itemKeyName, 1] call BIS_fnc_invRemove; (unitBackpack (vehicle player)) addWeaponCargoGlobal [_itemKeyName, 1]; systemChat (format["%1 has been moved to your Backpack", _targetVehicleKeyName]); }; }; /* This calls the custom update function which we put it in server_updateObject.sqf */ PVDZE_veh_Update = [_targetVehicle, "vehiclekey", player, _targetVehicleClassname, keyNumberSelect, keyNameSelect, _targetVehicleID, _targetVehicleUID]; publicVariableServer "PVDZE_veh_Update"; /* Wait for success or timeout */ _timeout = 20; while {_timeout > 0 && isNil "PVDZE_vkc_Success"} do { if (_Price != "0") then { cutText["~~ Performing Keychange ~~\n~~ Please wait ~~","PLAIN",0.5]; }; if (_claimingPrice != "0") then { cutText["~~ Performing Claim ~~\n~~ Please wait ~~","PLAIN",0.5]; }; sleep 1; _timeout = _timeout - 1; }; /* Inform the player about the success and tell him to check the Key */ if (!isNil "PVDZE_vkc_Success") then { if (_Price != "0") then { cutText["~~ Vehicle Keychange - SUCCESS ~~","PLAIN",1]; systemChat (format["Changed Vehicle Key to %1", keyNameSelect]); systemChat (format["Please check Vehicle function with %1 before you throw away %2!", keyNameSelect, _targetVehicleKeyName]); }; if (_claimingPrice != "0") then { cutText["~~ Vehicle Claiming - SUCCESS ~~","PLAIN",1]; systemChat (format["You claimed this Vehicle with: %1", keyNameSelect]); }; PVDZE_vkc_Success = nil; /* This updates the Vehicle as it is now, position, gear, damage, fuel */ /* Should prevent the "backporting" some dudes reported. */ /* Just fyi i never had that but just in case... */ [nil,nil,nil,_targetVehicle] execVM "\z\addons\dayz_code\actions\forcesave.sqf"; /* Something went wrong, inform the player and refund the costs */ } else { if (_Price != "0") then { cutText["~~ Vehicle Keychange - FAIL ~~","PLAIN",1]; systemChat (format["Sorry something went wrong", keyNameSelect]); systemChat (format["Please try again. If it keeps failing, please contact a Admin!", keyNameSelect, _targetVehicleKeyName]); [player,_Price] call BIS_fnc_invAdd; systemChat (format["Refunded %1",_Price]); }; if (_claimingPrice != "0") then { cutText["~~ Vehicle Claiming - FAIL ~~","PLAIN",1]; systemChat ("Sorry something went wrong"); systemChat ("Please try again. If it keeps failing, please contact a Admin!"); [player,_claimingPrice] call BIS_fnc_invAdd; systemChat (format["Refunded %1",_claimingPrice]); }; }; }; /* Reset the action menu variables for a new run */ s_player_copyToKey = -1; s_player_claimVehicle = -1; /**************************************/ /* That's it, hope you enjoy this Mod */ /* */ /* Yours sincerly, */ /* Otter */ /**************************************/
And VehicleKeyChanger_init.sqf
/***********************************/ /* Vehicle Key Changer v1.4 */ /* Written by OtterNas3 */ /* January, 11, 2014 */ /* Last update: 06/15/2014 */ /***********************************/ ///////////////////////////////////////////////// ///////////////////////////////////////////////// // Edit these settings to fit your needs/likes // ///////////////////////////////////////////////// ///////////////////////////////////////////////// /// Claim Vehicles that does not yet need Key /// ///////// 0 = Not allowed | 1 = Allowed ///////// vkc_claiming = 1; ///////////////////////////////////////////////// //////// Claim Vehicles costs this Item ///////// /// Any Item can be used here, some examples: /// //// ItemTinBar, ItemSilverBar, ItemGoldBar, //// ////// ItemSilverBar10oz, ItemGoldBar10oz, ////// ///// ItemBriefcase20oz, ItemBriefcase100oz ///// //////// set to "0" to disable the costs //////// vkc_claimingPrice = "ItemGoldBar10oz"; ///////////////////////////////////////////////// ////////// Change Key costs this Item// ///////// ////////////// see above examples /////////////// //////// set to "0" to disable the costs //////// vkc_Price = "ItemSilverBar"; ///////////////////////////////////////////////// /////// Need KeyKit to use this function //////// ////////// 0 = Not needed | 1 = Needed ////////// vkc_needKeykit = 1; ///////////////////////////////////////////////// ///////////////////////////////////////////////// /////////////// DONT EDIT BELOW ! /////////////// ///////////////////////////////////////////////// ON_fnc_vkcReset = { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; player removeAction s_player_copyToKey; s_player_copyToKey = -1; lastKeyChangeCursorTarget = [objNull,objNull]; vkc_cTarget = objNull; }; /* Wait for player full ingame so we can access the action-menu */ waitUntil {!isNil "dayz_animalCheck"}; /* Initial Reset */ [] call ON_fnc_vkcReset; /* Start the loop check */ while{true} do { sleep 3; if ((vehicle player) == player) then { if (speed player <= 1) then { if (!isNull cursorTarget) then { _cursorTarget = cursorTarget; if ((_cursorTarget isKindOf "Motorcycle" || _cursorTarget isKindOf "Car" || _cursorTarget isKindOf "Air" || _cursorTarget isKindOf "Ship")) then { if ((_cursorTarget distance player) <= 10) then { if (!isEngineOn _cursorTarget) then { vkc_carKey = _cursorTarget getVariable ["CharacterID","0"]; if (vkc_claiming == 1) then { if (vkc_carKey == "0") then { if ((lastKeyChangeCursorTarget select 0) != _cursorTarget) then { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; lastKeyChangeCursorTarget set [0,_cursorTarget]; vkc_cTarget = lastKeyChangeCursorTarget select 0; }; if (vkc_cTarget getVariable ["VKC_claming_disabled", 0] == 0) then { vkc_magazinesPlayer = magazines player; vkc_itemsPlayer = items player; if (("ItemKeyKit" in vkc_itemsPlayer || vkc_needKeykit == 0) && ((vkc_claimingPrice == "0" || vkc_claimingPrice in vkc_magazinesPlayer))) then { vkc_objectID = vkc_cTarget getVariable ["ObjectID","0"]; vkc_objectUID = vkc_cTarget getVariable ["ObjectUID","0"]; if (!(vkc_objectID == "0" && vkc_objectUID == "0")) then { vkc_key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"]; vkc_temp_keys = []; vkc_temp_keysDisplayName = []; vkc_temp_keysDisplayNameParse = []; { if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in vkc_key_colors) then { vkc_ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid"); vkc_keyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName"); vkc_temp_keysDisplayName set [count vkc_temp_keysDisplayName,vkc_keyName]; vkc_temp_keys set [count vkc_temp_keys,str(vkc_ownerKeyId)]; }; } forEach vkc_itemsPlayer; if ((count vkc_temp_keys) > 0) then { if (s_player_claimVehicle < 0) then { s_player_claimVehicle = player addAction [("<t color='#00FFFF'>" + ("Claim Vehicle") + "</t>"),"custom\VehicleKeyChanger\VehicleKeyChanger.sqf",[vkc_cTarget,vkc_temp_keys,"0",vkc_temp_keysDisplayName,"0","0","0", vkc_claimingPrice],-1002,false,false,"",""]; }; } else { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; }; } else { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; }; } else { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; }; } else { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; }; } else { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; }; } else { player removeAction s_player_claimVehicle; s_player_claimVehicle = -1; }; if (vkc_carKey != "0") then { if ((lastKeyChangeCursorTarget select 1) != _cursorTarget) then { player removeAction s_player_copyToKey; s_player_copyToKey = -1; lastKeyChangeCursorTarget set [1,_cursorTarget]; vkc_cTarget = lastKeyChangeCursorTarget select 1; }; if (vkc_cTarget getVariable ["VKC_disabled",0] == 0) then { vkc_magazinesPlayer = magazines player; vkc_itemsPlayer = items player; if (("ItemKeyKit" in vkc_itemsPlayer || vkc_needKeykit == 0) && (vkc_Price == "0" || vkc_Price in vkc_magazinesPlayer)) then { vkc_objectID = vkc_cTarget getVariable ["ObjectID","0"]; vkc_objectUID = vkc_cTarget getVariable ["ObjectUID","0"]; if (!(vkc_objectID == "0" && vkc_objectUID == "0")) then { vkc_key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"]; vkc_temp_keys = []; vkc_temp_keysDisplayName = []; vkc_temp_keysDisplayNameParse = []; vkc_temp_keysParse = []; { if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in vkc_key_colors) then { vkc_ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid"); vkc_keyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName"); vkc_temp_keysDisplayName set [count vkc_temp_keysDisplayName,vkc_keyName]; vkc_temp_keysDisplayNameParse set [vkc_ownerKeyId,vkc_keyName]; vkc_temp_keys set [count vkc_temp_keys,str(vkc_ownerKeyId)]; vkc_temp_keysParse set [vkc_ownerKeyId, _x]; }; } forEach vkc_itemsPlayer; vkc_hasKey = vkc_carKey in vkc_temp_keys; if (vkc_hasKey && (count vkc_temp_keys) > 1) then { vkc_carKeyName = (vkc_temp_keysDisplayNameParse select (parseNumber vkc_carKey)); vkc_targetVehicleKey = (vkc_temp_keysParse select (parseNumber vkc_carKey)); vkc_temp_keys = vkc_temp_keys - [vkc_carKey]; vkc_temp_keysDisplayName = vkc_temp_keysDisplayName - [vkc_carKeyName]; if (s_player_copyToKey < 0) then { s_player_copyToKey = player addAction [("<t color=""#0000FF"">" + ("Change Vehicle Key") + "</t>"),"custom\VehicleKeyChanger\VehicleKeyChanger.sqf",[vkc_cTarget, vkc_temp_keys, vkc_carKey, vkc_temp_keysDisplayName, vkc_carKeyName, vkc_targetVehicleKey, vkc_Price, "0"],-1002,false,false,"",""]; }; } else { player removeAction s_player_copyToKey; s_player_copyToKey = -1; }; } else { player removeAction s_player_copyToKey; s_player_copyToKey = -1; }; } else { player removeAction s_player_copyToKey; s_player_copyToKey = -1; }; } else { player removeAction s_player_copyToKey; s_player_copyToKey = -1; }; } else { player removeAction s_player_copyToKey; s_player_copyToKey = -1; }; } else { [] call ON_fnc_vkcReset; }; } else { [] call ON_fnc_vkcReset; }; } else { [] call ON_fnc_vkcReset; }; } else { [] call ON_fnc_vkcReset; }; } else { [] call ON_fnc_vkcReset; }; } else { [] call ON_fnc_vkcReset; }; };
Here is my init.sqf which I've added the execvm to where the OP states to put it.
dayz_antihack = 0; dayz_REsec = 0; startLoadingScreen ["","RscDisplayLoadCustom"]; cutText ["","BLACK OUT"]; enableSaving [false, false]; //REALLY IMPORTANT VALUES dayZ_instance = 24; //The instance dayzHiveRequest = []; initialized = false; dayz_previousID = 0; //disable greeting menu player setVariable ["BIS_noCoreConversations", true]; //disable radio messages to be heard and shown in the left lower corner of the screen enableRadio false; // May prevent "how are you civillian?" messages from NPC enableSentences false; DZEdebug = true; // DayZ Epochconfig spawnShoremode = 1; // Default = 1 (on shore) spawnArea= 1500; // Default = 1500 // MaxVehicleLimit = 75; // Default = 50 MaxDynamicDebris = 200; // Default = 100 dayz_MapArea = 18000; // Default = 10000 dayz_minpos = -1000; dayz_maxpos = 26000; dayz_paraSpawn = false; dayz_sellDistance_vehicle = 10; dayz_sellDistance_boat = 30; dayz_sellDistance_air = 40; DZE_StaticConstructionCount = 1; dayz_maxAnimals = 5; // Default: 8 dayz_tameDogs = true; DynamicVehicleDamageLow = 10; // Default: 0 DynamicVehicleDamageHigh = 100; // Default: 100 //Plot 4 life DZE_APlotforLife = true; DZE_PlotOwnership = false; DZE_modularBuild = false; //loadout DefaultMagazines = ["ItemBandage","ItemBandage","17Rnd_9x19_glock17","17Rnd_9x19_glock17","ItemMorphine","ItemPainkiller","ItemWaterbottleBoiled","FoodSteakCooked"]; DefaultWeapons = ["glock17_EP1","ItemToolbox","ItemHatchet_DZE","ItemMap","ItemRadio"]; DefaultBackpack = "DZ_TerminalPack_EP1"; DZE_ForceNameTags = true; DZE_BuildOnRoads = false; // Default: False EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions call compile preprocessFileLineNumbers "custom\A_Plot_for_Life\init\variables.sqf"; //Initilize the Variables (IMPORTANT: Must happen very early) progressLoadingScreen 0.1; call compile preprocessFileLineNumbers "custom\A_Plot_for_Life\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\A_Plot_for_Life\init\compiles.sqf"; //Compile regular functions progressLoadingScreen 0.5; call compile preprocessFileLineNumbers "server_traders.sqf"; //Compile trader configs progressLoadingScreen 1.0; "filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic"; if (isServer) then { //Compile vehicle configs call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_24.Napf\dynamic_vehicle.sqf"; // Add trader citys _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_24.Napf\mission.sqf"; _serverMonitor = [] execVM "custom\system\server_monitor.sqf"; }; if (!isDedicated) then { //Conduct map operations 0 fadeSound 0; waitUntil {!isNil "dayz_loadScreenMsg"}; dayz_loadScreenMsg = (localize "STR_AUTHENTICATING"); [] execVM 'Safezone.sqf'; //Run the player monitor _id = player addEventHandler ["Respawn", {_id = [] spawn player_death;}]; _playerMonitor = [] execVM "\z\addons\dayz_code\system\player_monitor.sqf"; _nil = [] execVM "custom\VehicleKeyChanger\VehicleKeyChanger_init.sqf"; execVM "custom\gui\dzgm\init.sqf"; //Lights //[false,12] execVM "\z\addons\dayz_code\compile\local_lights_init.sqf"; }; //Start Dynamic Weather execVM "\z\addons\dayz_code\external\DynamicWeatherEffects.sqf"; #include "\z\addons\dayz_code\system\BIS_Effects\init.sqf"
And here's my server_updateobject.sqf which is in it's default position.
/* [_object,_type] spawn server_updateObject; */ /* Additional */ /***********************************/ /* Vehicle Key Changer v1.4 */ /* Written by OtterNas3 */ /* January, 11, 2014 */ /* Last update: 06/15/2014 */ /***********************************/ private ["_object","_type","_objectID","_uid","_lastUpdate","_needUpdate","_object_position","_object_inventory","_object_damage","_isNotOk","_parachuteWest","_firstTime","_object_killed","_object_repair","_isbuildable","_object_vehicleKey","_activatingPlayer","_vehicleClassname","_toKey","_toKeyName","_vehicle_ID","_vehicle_UID"]; _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 = [ round(direction _object), _position ]; _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_inventory = { private["_inventory","_previous","_key"]; _isNormal = true; if (typeOf (_object) == "Plastic_Pole_EP1_DZ") then{ _isNormal = false; _inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item }; if (typeOf (_object)in DZE_DoorsLocked) then{ _isNormal = false; _inventory = _object getVariable ["doorfriends", []]; //We're replacing the inventory with UIDs for this item }; if(_isNormal)then { _inventory = [ getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object ]; }; _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]; }; _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]; }; _object_vehicleKey = { private ["_hit","_selection","_fuel","_gotcha","_retry","_vehicleID","_key","_result","_outcome","_player","_class","_newKey","_newKeyName","_oldVehicleID","_oldVehicleUID","_hitpoints","_damage","_array","_inventory","_vehicleUID","_position","_dir","_worldspace"]; /* Setting up variables */ _player = _this select 0; _class = _this select 1; _newKey = _this select 2; _newKeyName = _this select 3; _oldVehicleID = _this select 4; _oldVehicleUID = _this select 5; /* Get Damage of the Vehicle */ _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]; } forEach _hitpoints; /* Get the Fuel of the Vehicle */ _fuel = 0; if (_object isKindOf "AllVehicles") then { _fuel = fuel _object; }; /* Get the Inventory of the Vehicle */ _inventory = [ getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object ]; /* Get the position of the Vehicle */ _position = getPosASL _object; if !(surfaceIsWater _position) then { _position = ASLToATL _position; }; _dir = getDir _object; _worldspace = [_dir,_position]; /* Delete the current Database entry */ [_oldVehicleID,_oldVehicleUID,_player] call server_deleteObj; sleep 1; /* Generate a new UID */ _vehicleUID = _worldspace call dayz_objectUID3; /* Write the new Database entry and LOG the action*/ _key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, _damage , _newKey, _worldspace, _inventory, _array, _fuel,_vehicleUID]; _key call server_hiveWrite; diag_log ("HIVE: WRITE: VEHICLE KEY CHANGER: "+ str(_key)); diag_log format["HIVE: WRITE: VEHICLE KEY CHANGER: Vehicle:%1 NewKey:%2 BY %3(%4)", _object, _newKeyName, (name _player), (getPlayerUID _player)]; /* Get the ObjectID of the entry in the Database */ _retry = 0; _gotcha = false; while {!_gotcha && _retry < 10} do { sleep 1; /* Send the request */ _key = format["CHILD:388:%1:",_vehicleUID]; diag_log ("HIVE: READ: VEHICLE KEY CHANGER: "+ str(_key)); _result = _key call server_hiveReadWrite; _outcome = _result select 0; /* We got a answer */ if (_outcome == "PASS") then { _vehicleID = _result select 1; /* Compare with old ObjectID to check if it not was deleted yet */ if (_oldVehicleID == _vehicleID) then { /* Not good lets give it another try */ _gotcha = false; _retry = _retry + 1; if (_retry > 8) then { PVDZE_vkc_Success = false; (owner _player) publicVariableClient "PVDZE_vkc_Success"; }; } else { /* GOTCHA! */ diag_log("CUSTOM: VEHICLE KEY CHANGER: Selected " + str(_vehicleID)); _gotcha = true; _retry = 11; _object setVariable ["VKC_disabled", 1,true]; _object setVariable ["VKC_claiming_disabled", 1,true]; [_object] spawn { private ["_veh"]; _veh = _this select 0; sleep 30; _veh setVariable ["VKC_disabled", 0,true]; _veh setVariable ["VKC_claiming_disabled", 0,true]; }; PVDZE_vkc_Success = true; (owner _player) publicVariableClient "PVDZE_vkc_Success"; /* Lock the Vehicle */ _object setVehicleLock "locked"; /* Save the ObjectID and ObjectUID to the vehicles variable and make it public */ _object setVariable ["ObjectID", _vehicleID, true]; _object setVariable ["ObjectUID", _vehicleUID, true]; /* Set the lastUpdate time to current */ _object setVariable ["lastUpdate",time,true]; /* Set the CharacterID to the new Key so we can access it! */ _object setVariable ["CharacterID", _newKey, true]; /* Some other variables you might need for disallow lift/tow/cargo locked Vehicles and such */ /* Uncomment if you use this */ /* R3F Arty and LOG block lift/tow/cargo locked vehicles*/ _object setVariable ["R3F_LOG_disabled",true,true]; /* =BTC= Logistic block lift locked vehicles*/ _object setVariable ["BTC_Cannot_Lift",true,true]; }; } else { /* Something went wrong on the request give it another try */ diag_log("CUSTOM: VEHICLE KEY CHANGER: trying again to get id for: " + str(_vehicleUID)); _gotcha = false; _retry = _retry + 1; }; }; }; // 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; }; case "vehiclekey": { _activatingPlayer = _this select 2; _vehicleClassname = _this select 3; _toKey = _this select 4; _toKeyName = _this select 5; _vehicle_ID = _this select 6; _vehicle_UID = _this select 7; [_activatingPlayer, _vehicleClassname, _toKey, _toKeyName, _vehicle_ID, _vehicle_UID] call _object_vehicleKey;; }; };
I'm completely at a loss as to what could be going wrong... Everyone else in the topic seems to have no issues but there was a few others who had my problem but nobody replied to them. The only thing I could think of is the variables aren't being defined early enough?? If that's the case I'd love to learn how to fix this type of issue. I want to understand! Thanks for any time anyone puts into this to help me out!
EDIT:
Also here are the errors I was getting derp
Error in expression <= -1; }; } else { player removeAction s_player_claimKey; s_player_claimKey = -> Error position: <s_player_claimKey; s_player_claimKey = -> Error Undefined variable in expression: s_player_claimkey File mpmissions\__CUR_MP.Napf\custom\VehicleKeyChanger\VehicleKeyChanger_init.sqf, line 154
if (vkc_claimKey == 1 && vkc_ownerID == "0" && vkc_cursorTarget g> Error position: <vkc_ownerID == "0" && vkc_cursorTarget g> Error Undefined variable in expression: vkc_ownerid File mpmissions\__CUR_MP.Napf\custom\VehicleKeyChanger\VehicleKeyChanger_init.sqf, line 56