diff --git a/Exile.Altis/Custom/ammoSave/Bones_fnc_getVehicleLoadout.sqf b/Exile.Altis/Custom/ammoSave/Bones_fnc_getVehicleLoadout.sqf new file mode 100644 index 0000000..dc6c7e3 --- /dev/null +++ b/Exile.Altis/Custom/ammoSave/Bones_fnc_getVehicleLoadout.sqf @@ -0,0 +1,80 @@ +/* +© 2015 Zenix Gaming Ops +Developed by Rod-Serling +Co-Developed by Vishpala + +All rights reserved. + +Function: + AVS_fnc_getVehicleLoadout - Gets the current loadout of the vehicle. + +Usage: + _vehicle call AVS_fnc_getVehicleLoadout; + +Return Value: + Loadout of the vehicle in the format: + [ + [_turretPath, [_magazineClassName, _totalAmmo], [_magazineClassName2, _totalAmmo]], + [_turretPath2, [_magazineClassName3, _totalAmmo], [_magazineClassName4, _totalAmmo]], + ] + +Notes: + The return value will only specify a single magazine class name for each magazine class in a turret. For example, an armed offroad will return: + [ + [[0], ["100Rnd_127x99_mag_Tracer_Yellow", 400]] + ]; +*/ +private ["_currentLoadout", "_magClass", "_turretPath", "_ammoCount", "_inserted", "_magInserted", "_magData"]; +_OK = params +[ + ["_vehicle", objNull, [objNull]] +]; + +if (!_OK) exitWith +{ + diag_log format ["AVS Error: Calling AVS_fnc_getVehicleLoadout with invalid parameters: %1",_this]; +}; + +_currentLoadout = []; +{ // forEach magazinesAllTurrets _vehicle; + // [[,,,,],...] + _magClass = _x select 0; + _turretPath = _x select 1; + _ammoCount = _x select 2; + + _inserted = false; + { // forEach _currentLoadout + // Check if we have this _turretPath in _currentLoadout + if ((_x select 0) isEqualTo _turretPath) then + { + // _turretPath found in _currentLoadout + // Now check if we have this _magClass in this _turretPath yet. + _magInserted = false; + for "_i" from 1 to ((count _x) - 1) do + { + _magData = _x select _i; + + if ((_magData select 0) isEqualTo _magClass) then + { + // _magClass found, add the ammo to it. + _magData set [1, ((_magData select 1) + _ammoCount)]; + _magInserted = true; + }; + }; + if (!_magInserted) then + { + // _magClass not found, push it as a new element. + _x pushBack [_magClass, _ammoCount]; + }; + _inserted = true; + }; + } forEach _currentLoadout; + + if (!_inserted) then + { + // _turretPath not found in _currentLoadout, push it as a new element. + _currentLoadout pushBack [_turretPath, [_magClass, _ammoCount]]; + }; +} forEach magazinesAllTurrets _vehicle; + +_currentLoadout \ No newline at end of file diff --git a/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_insert.sqf b/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_insert.sqf new file mode 100644 index 0000000..f4f24ec --- /dev/null +++ b/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_insert.sqf @@ -0,0 +1,43 @@ +/** + * ExileServer_object_vehicle_database_insert + * + * Exile Mod + * www.exilemod.com + * © 2015 Exile Mod Team + * + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + */ + +private["_vehicleObject","_position","_vectorDirection","_vectorUp","_data","_extDB2Message","_vehicleID"]; +_vehicleObject = _this; +_position = getPosATL _vehicleObject; +_vectorDirection = vectorDir _vehicleObject; +_vectorUp = vectorUp _vehicleObject; +_data = +[ + typeOf _vehicleObject, + _vehicleObject getVariable ["ExileOwnerUID", ""], + locked _vehicleObject, + _position select 0, + _position select 1, + _position select 2, + _vectorDirection select 0, + _vectorDirection select 1, + _vectorDirection select 2, + _vectorUp select 0, + _vectorUp select 1, + _vectorUp select 2, + _vehicleObject getVariable ["ExileAccessCode",""] +]; +_currentLoadout = _vehicleObject call Bones_fnc_getVehicleLoadout; + +_extDB2Message = ["setVehicleAmmo", [_currentLoadout, _vehicleID]] call ExileServer_util_extDB2_createMessage; +_extDB2Message call ExileServer_system_database_query_insertSingle; + +_extDB2Message = ["insertVehicle", _data] call ExileServer_util_extDB2_createMessage; +_vehicleID = _extDB2Message call ExileServer_system_database_query_insertSingle; +_vehicleObject setVariable["ExileDatabaseID", _vehicleID]; +_vehicleObject setVariable["ExileIsPersistent", true]; +_vehicleID + diff --git a/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_load.sqf b/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_load.sqf new file mode 100644 index 0000000..8920766 --- /dev/null +++ b/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_load.sqf @@ -0,0 +1,126 @@ +/** + * ExileServer_object_vehicle_database_load + * + * Exile Mod + * www.exilemod.com + * © 2015 Exile Mod Team + * + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + */ + +private["_vehicleID","_data","_position","_vectorDirection","_vectorUp","_pinCode","_texture","_vehicleObject","_lock","_unlockInSafeZonesAfterRestart","_isLocked","_hitpoints","_cargoContainers"]; +_vehicleID = _this; +_data = format ["loadVehicle:%1", _vehicleID] call ExileServer_system_database_query_selectSingle; +_position = [_data select 8, _data select 9, _data select 10]; +_vectorDirection = [_data select 11, _data select 12, _data select 13]; +_vectorUp = [_data select 14, _data select 15, _data select 16]; +//Bones Side Vehicle Check +if ((_vectorUp select 2) == 0) then {_vectorUp set [2,1]}; +//end custom +_pinCode = _data select 20; +_texture = _data select 21; +_vehicleObject = [(_data select 1), _position, [_vectorDirection, _vectorUp], true,_pinCode] call ExileServer_object_vehicle_createPersistentVehicle; +_vehicleObject setVariable ["ExileDatabaseID", _vehicleID]; +_vehicleObject setVariable ["ExileOwnerUID", (_data select 3)]; +_vehicleObject setVariable ["ExileMoney", (_data select 23), true]; +_lock = (_data select 4); + +_query = format["getVehicleAmmo:%1", _vehicleID]; +_data1 = (_result select 1) select 0; +_savedMagazines = _data1 select 0; + +_vehicle setVehicleAmmoDef 0; + +if (typeName _savedMagazines isEqualTo "ARRAY") then +{ + if (typeName (_savedMagazines select 0) isEqualTo "ARRAY") then + { + { + _turretPath = _x select 0; + + for "_i" from (count _x - 1) to 1 step -1 do + { + _magData = _x select _i; + _magClass = _magData select 0; + _ammoCount = _magData select 1; + + _maxMagAmmo = (configFile >> "CfgMagazines" >> _magClass >> "count") call BIS_fnc_getCfgData; + _numMags = ceil (_ammoCount / _maxMagAmmo); + + while {_numMags > 1} do + { + _vehicle addMagazineTurret [_magClass, _turretPath]; + _numMags = _numMags - 1; + _ammoCount = _ammoCount - _maxMagAmmo; + }; + _vehicle setMagazineTurretAmmo [_magClass, _ammoCount, _turretPath]; + }; + } forEach _savedMagazines; + }; +} +else +{ + diag_log format["AMMO ERROR - INVALID MAGAZINE SAVED IN DATABASE: %1", _savedMagazines]; + diag_log format["AMMO ERROR - Magazines should be saved an array. Blank entries should be: [] Verify your database."]; +}; + +_unlockInSafeZonesAfterRestart = (getNumber (configFile >> "CfgSettings" >> "VehicleSpawn" >> "unlockInSafeZonesAfterRestart")) isEqualTo 1; +_isLocked = (_lock isEqualTo -1); +if (_isLocked) then +{ + if (_unlockInSafeZonesAfterRestart) then + { + if (_position call ExileClient_util_world_isInTraderZone) then + { + _isLocked = false; + }; + }; +}; +if (_isLocked) then +{ + _vehicleObject setVariable ["ExileIsLocked", -1]; + _vehicleObject lock 2; + _vehicleObject enableRopeAttach false; +} +else +{ + _vehicleObject setVariable ["ExileIsLocked", 0]; + _vehicleObject lock 0; + _vehicleObject enableRopeAttach true; +}; +_vehicleObject setFuel (_data select 5); +_vehicleObject setDamage (_data select 6); +_hitpoints = _data select 7; +if ((typeName _hitpoints) isEqualTo "ARRAY") then +{ + { + _vehicleObject setHitPointDamage [_x select 0, _x select 1]; + } + forEach _hitpoints; +}; +[_vehicleObject, (_data select 17)] call ExileServer_util_fill_fillItems; +[_vehicleObject, (_data select 18)] call ExileServer_util_fill_fillMagazines; +[_vehicleObject, (_data select 19)] call ExileServer_util_fill_fillWeapons; +_cargoContainers = format ["loadVehicleContainer:%1", _vehicleID] call ExileServer_system_database_query_selectSingle; +if ((typeName _cargoContainers) isEqualTo "ARRAY") then +{ + if !(_cargoContainers isEqualTo []) then + { + [_vehicleObject, (_cargoContainers select 0)] call ExileServer_util_fill_fillContainers; + }; +}; +if !(_texture isEqualTo "") then +{ + { + _vehicleObject setObjectTextureGlobal [_forEachIndex, _texture select _forEachIndex]; + } + forEach _texture; +}; +_vehicleObject enableSimulationGlobal false; +_vehicleObject call ExileServer_system_simulationMonitor_addVehicle; +if (_vehicleObject call ExileClient_util_world_isInTraderZone) then +{ + _vehicleObject allowDamage false; +}; +_vehicleObject \ No newline at end of file diff --git a/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_update.sqf b/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_update.sqf new file mode 100644 index 0000000..6350daa --- /dev/null +++ b/Exile.Altis/Custom/ammoSave/ExileServer_object_vehicle_database_update.sqf @@ -0,0 +1,60 @@ +/** + * ExileServer_object_vehicle_database_update + * + * Exile Mod + * www.exilemod.com + * © 2015 Exile Mod Team + * + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + */ + +private["_vehicleObject","_vehicleID","_position","_vectorDirection","_vectorUp","_availableHitpoints","_vehicleHitpoints","_data","_extDB2Message","_currentLoadout", "_magClass", "_turretPath", "_ammoCount", "_inserted", "_magInserted", "_magData"]; +_vehicleObject = _this; +_vehicleID = _vehicleObject getVariable ["ExileDatabaseID", -1]; +if (_vehicleID > -1) then +{ + _position = getPosATL _vehicleObject; + _vectorDirection = vectorDir _vehicleObject; + _vectorUp = vectorUp _vehicleObject; + _availableHitpoints = getAllHitPointsDamage _vehicleObject; + _vehicleHitpoints = []; + if!(_availableHitpoints isEqualTo [])then + { + { + _vehicleHitpoints pushBack [_x ,_vehicleObject getHitPointDamage _x]; + } + forEach (_availableHitpoints select 0); + }; + _data = + [ + _vehicleObject getVariable ["ExileIsLocked",-1], + fuel _vehicleObject, + damage _vehicleObject, + _vehicleHitpoints, + _position select 0, + _position select 1, + _position select 2, + _vectorDirection select 0, + _vectorDirection select 1, + _vectorDirection select 2, + _vectorUp select 0, + _vectorUp select 1, + _vectorUp select 2, + _vehicleObject call ExileServer_util_getItemCargo, + magazinesAmmoCargo _vehicleObject, + weaponsItemsCargo _vehicleObject, + _vehicleObject call ExileServer_util_getObjectContainerCargo, + _vehicleObject getVariable ["ExileMoney", 0], + _vehicleID + ]; + + _extDB2Message = ["updateVehicle", _data] call ExileServer_util_extDB2_createMessage; + _extDB2Message call ExileServer_system_database_query_fireAndForget; + + _currentLoadout = _vehicle call Bones_fnc_getVehicleLoadout; + + _extDB2Message = ["setVehicleAmmo", [_currentLoadout, _vehicleID]] call ExileServer_util_extDB2_createMessage; + _extDB2Message call ExileServer_system_database_query_fireAndForget; +}; +true \ No newline at end of file diff --git a/ExtDB2 Replacement/exile.ini b/ExtDB2 Replacement/exile.ini new file mode 100644 index 0000000..692292d --- /dev/null +++ b/ExtDB2 Replacement/exile.ini @@ -0,0 +1,704 @@ +[Default] +Version = 12 +Number of Inputs = 0 +Sanitize Input Value Check = false +Sanitize Output Value Check = false +Prepared Statement Cache = true +Return InsertID = false +Strip = true +Strip Chars Action = STRIP +Strip Chars = \/\|;{}<>\' +Strip Custom Chars = \/\|;{}<>\' + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Account related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[isKnownAccount] +SQL1_1 = SELECT CASE WHEN EXISTS(SELECT uid FROM account WHERE uid = ?) THEN 'true' ELSE 'false' END +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[createAccount] +SQL1_1 = INSERT INTO account SET uid = ?, name = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[startAccountSession] +SQL1_1 = UPDATE account SET name = ?, last_connect_at = NOW(), total_connections = total_connections + 1 WHERE uid = ? +Number Of Inputs = 2 +SQL1_INPUTS = 2,1 + +[endAccountSession] +SQL1_1 = UPDATE account SET last_disconnect_at = NOW() WHERE uid = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[getAccountStats] +SQL1_1 = SELECT score, kills, deaths, clan_id, locker FROM account WHERE uid = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2,3,4,5 + +[addAccountKill] +SQL1_1 = UPDATE account SET kills = kills + 1 WHERE uid = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[addAccountDeath] +SQL1_1 = UPDATE account SET deaths = deaths + 1 WHERE uid = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[getAccountScore] +SQL1_1 = SELECT score FROM account WHERE uid = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[setAccountScore] +SQL1_1 = UPDATE account SET score = ? WHERE uid = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[modifyAccountScore] +SQL1_1 = UPDATE account SET score = score + ? WHERE uid = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateLocker] +SQL1_1 = UPDATE account SET locker = ? WHERE uid = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[getLocker] +SQL1_1 = SELECT locker FROM account WHERE uid = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Player related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[hasAlivePlayer] +SQL1_1 = SELECT CASE WHEN EXISTS(SELECT account_uid FROM player WHERE account_uid = ? AND damage < 1) THEN 'true' ELSE 'false' END +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[createPlayer] +SQL1_1 = INSERT INTO player SET account_uid = ?, name = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +Return InsertID = true + +[insertPlayerHistory] +SQL1_1 = INSERT INTO player_history SET account_uid = ?, name = ?, position_x = ?, position_y = ?, position_z = ? +Number Of Inputs = 5 +SQL1_INPUTS = 1,2,3,4,5 + +[deletePlayer] +SQL1_1 = DELETE FROM player WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[loadPlayer] +SQL1_1 = SELECT p.id, +SQL1_2 = p.name, +SQL1_3 = p.account_uid, +SQL1_4 = p.damage, +SQL1_5 = p.hunger, +SQL1_6 = p.thirst, +SQL1_7 = p.alcohol, +SQL1_8 = p.oxygen_remaining, +SQL1_9 = p.bleeding_remaining, +SQL1_10 = p.hitpoints, +SQL1_11 = p.direction, +SQL1_12 = p.position_x, +SQL1_13 = p.position_y, +SQL1_14 = p.position_z, +SQL1_15 = p.assigned_items, +SQL1_16 = p.backpack, +SQL1_17 = p.backpack_items, +SQL1_18 = p.backpack_magazines, +SQL1_19 = p.backpack_weapons, +SQL1_20 = p.current_weapon, +SQL1_21 = p.goggles, +SQL1_22 = p.handgun_items, +SQL1_23 = p.handgun_weapon, +SQL1_24 = p.headgear, +SQL1_25 = p.binocular, +SQL1_26 = p.loaded_magazines, +SQL1_27 = p.primary_weapon, +SQL1_28 = p.primary_weapon_items, +SQL1_29 = p.secondary_weapon, +SQL1_30 = p.secondary_weapon_items, +SQL1_31 = p.uniform, +SQL1_32 = p.uniform_items, +SQL1_33 = p.uniform_magazines, +SQL1_34 = p.uniform_weapons, +SQL1_35 = p.vest, +SQL1_36 = p.vest_items, +SQL1_37 = p.vest_magazines, +SQL1_38 = p.vest_weapons, +SQL1_39 = p.money, +SQL1_40 = a.score, +SQL1_41 = a.kills, +SQL1_42 = a.deaths, +SQL1_43 = c.id, +SQL1_44 = c.name, +SQL1_45 = p.temperature, +SQL1_46 = p.wetness, +SQL1_47 = a.locker +SQL1_48 = FROM player p +SQL1_49 = INNER JOIN account a +SQL1_50 = ON a.uid = p.account_uid +SQL1_51 = LEFT JOIN clan c +SQL1_52 = ON c.id = a.clan_id +SQL1_53 = WHERE p.account_uid = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2-STRING,3-STRING,4,5,6,7,8,9,10,11,12,13,14,15,16-STRING,17,18,19,20-STRING,21-STRING,22,23-STRING,24-STRING,25-STRING,26,27-STRING,28,29-STRING,30,31-STRING,32,33,34,35-STRING,36,37,38,39,40,41,42,43,44-STRING,45,46,47 + +[updatePlayer] +SQL1_1 = UPDATE player SET +SQL1_2 = name = ?, +SQL1_3 = damage = ?, +SQL1_4 = hunger = ?, +SQL1_5 = thirst = ?, +SQL1_6 = alcohol = ?, +SQL1_7 = oxygen_remaining = ?, +SQL1_8 = bleeding_remaining = ?, +SQL1_9 = hitpoints = ?, +SQL1_10 = direction = ?, +SQL1_11 = position_x = ?, +SQL1_12 = position_y = ?, +SQL1_13 = position_z = ?, +SQL1_14 = assigned_items = ?, +SQL1_15 = backpack = ?, +SQL1_16 = backpack_items = ?, +SQL1_17 = backpack_magazines = ?, +SQL1_18 = backpack_weapons = ?, +SQL1_19 = current_weapon = ?, +SQL1_20 = goggles = ?, +SQL1_21 = handgun_items = ?, +SQL1_22 = handgun_weapon = ?, +SQL1_23 = headgear = ?, +SQL1_24 = binocular = ?, +SQL1_25 = loaded_magazines = ?, +SQL1_26 = primary_weapon = ?, +SQL1_27 = primary_weapon_items = ?, +SQL1_28 = secondary_weapon = ?, +SQL1_29 = secondary_weapon_items = ?, +SQL1_30 = uniform = ?, +SQL1_31 = uniform_items = ?, +SQL1_32 = uniform_magazines = ?, +SQL1_33 = uniform_weapons = ?, +SQL1_34 = vest = ?, +SQL1_35 = vest_items = ?, +SQL1_36 = vest_magazines = ?, +SQL1_37 = vest_weapons = ?, +SQL1_38 = temperature = ?, +SQL1_39 = wetness = ? +SQL1_40 = WHERE id = ? +Number Of Inputs = 39 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Vehicle related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[insertVehicle] +SQL1_1 = INSERT INTO vehicle SET +SQL1_2 = class = ?, +SQL1_3 = account_uid = ?, +SQL1_4 = is_locked = ?, +SQL1_5 = position_x = ?, +SQL1_6 = position_y = ?, +SQL1_7 = position_z = ?, +SQL1_8 = direction_x = ?, +SQL1_9 = direction_y = ?, +SQL1_10 = direction_z = ?, +SQL1_11 = up_x = ?, +SQL1_12 = up_y = ?, +SQL1_13 = up_z = ?, +SQL1_14 = pin_code = ? +Number of Inputs = 13 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13 +Return InsertID = true + +[deleteVehicle] +SQL1_1 = DELETE FROM vehicle WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[loadVehicleIdPage] +SQL1_1 = SELECT id FROM vehicle WHERE deleted_at IS NULL LIMIT ?,? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +OUTPUT = 1 + +[loadVehicle] +SQL1_1 = SELECT id,class,spawned_at,account_uid,is_locked,fuel,damage,hitpoints,position_x,position_y,position_z,direction_x,direction_y,direction_z,up_x,up_y,up_z,cargo_items,cargo_magazines,cargo_weapons,pin_code,vehicle_texture,deleted_at,money FROM vehicle WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2-STRING,3-STRING,4-STRING,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21-STRING,22,23,24 + +[loadVehicleContainer] +SQL1_1 = SELECT cargo_container FROM vehicle WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[updateVehicle] +SQL1_1 = UPDATE vehicle SET +SQL1_2 = is_locked = ?, +SQL1_3 = fuel = ?, +SQL1_4 = damage = ?, +SQL1_5 = hitpoints = ?, +SQL1_6 = position_x = ?, +SQL1_7 = position_y = ?, +SQL1_8 = position_z = ?, +SQL1_9 = direction_x = ?, +SQL1_10 = direction_y = ?, +SQL1_11 = direction_z = ?, +SQL1_12 = up_x = ?, +SQL1_13 = up_y = ?, +SQL1_14 = up_z = ?, +SQL1_15 = cargo_items = ?, +SQL1_16 = cargo_magazines = ?, +SQL1_17 = cargo_weapons = ?, +SQL1_18 = cargo_container = ?, +SQL1_19 = money = ? +SQL1_20 = WHERE id = ? +Number of Inputs = 19 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 + +[updateVehicleSkin] +SQL1_1 = UPDATE vehicle SET vehicle_texture = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[vehicleSetPinCode] +SQL1_1 = UPDATE vehicle SET pin_code = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[getVehicleAmmo] +SQL1_1 = SELECT ammo FROM vehicle WHERE id = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[setVehicleAmmo] +SQL1_1= UPDATE vehicle SET ammo = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Construction related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[insertConstruction] +SQL1_1 = INSERT INTO construction SET +SQL1_2 = class = ?, +SQL1_3 = account_uid = ?, +SQL1_4 = position_x = ?, +SQL1_5 = position_y = ?, +SQL1_6 = position_z = ?, +SQL1_7 = direction_x = ?, +SQL1_8 = direction_y = ?, +SQL1_9 = direction_z = ?, +SQL1_10 = up_x = ?, +SQL1_11 = up_y = ?, +SQL1_12 = up_z = ?, +SQL1_13 = territory_id = $CUSTOM_1$ +Number of Inputs = 11 +Number of Custom Inputs = 1 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11 +Return InsertID = true + +[deleteConstruction] +SQL1_1 = DELETE FROM construction WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[loadConstructionIdPage] +SQL1_1 = SELECT id FROM construction WHERE deleted_at IS NULL LIMIT ?,? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +OUTPUT = 1 + +[loadConstruction] +SQL1_1 = SELECT id,class,account_uid,spawned_at,position_x,position_y,position_z,direction_x,direction_y,direction_z,up_x,up_y,up_z,is_locked,pin_code,territory_id,deleted_at,damage FROM construction WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2-STRING,3-STRING,4-STRING,5,6,7,8,9,10,11,12,13,14,15-STRING,16,17,18 + +[countConstruction] +SQL1_1 = SELECT COUNT(*) FROM construction +Number Of Inputs = 0 +OUTPUT = 1 + +[constructionSetPinCode] +SQL1_1 = UPDATE construction SET pin_code= ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[upgradeObject] +SQL1_1 = UPDATE construction SET class=? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[addDoorLock] +SQL1_1 = UPDATE construction SET pin_code = ?,is_locked = -1 WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateLock] +SQL1_1 = UPDATE construction SET is_locked = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateConstructionTerritoryIDs] +SQL1_1 = UPDATE construction SET territory_id = ? WHERE id IN(?) +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateDamage] +SQL1_1 = UPDATE construction SET damage = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Containers related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[insertContainer] +SQL1_1 = INSERT INTO container SET +SQL1_2 = class = ?, +SQL1_3 = account_uid = ?, +SQL1_4 = position_x = ?, +SQL1_5 = position_y = ?, +SQL1_6 = position_z = ?, +SQL1_7 = direction_x = ?, +SQL1_8 = direction_y = ?, +SQL1_9 = direction_z = ?, +SQL1_10 = up_x = ?, +SQL1_11 = up_y = ?, +SQL1_12 = up_z = ?, +SQL1_13 = cargo_items = ?, +SQL1_14 = cargo_magazines = ?, +SQL1_15 = cargo_weapons = ?, +SQL1_16 = cargo_container = ?, +SQL1_17 = money = ?, +SQL1_18 = pin_code = ?, +SQL1_19 = territory_id = $CUSTOM_1$ +Number of Inputs = 17 +Number of Custom Inputs = 1 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 +Return InsertID = true + +[deleteContainer] +SQL1_1 = DELETE FROM container WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[loadContainerIdPage] +SQL1_1 = SELECT id FROM container WHERE deleted_at IS NULL LIMIT ?,? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +OUTPUT = 1 + +[loadContainer] +SQL1_1 = SELECT id,class,account_uid,is_locked,position_x,position_y,position_z,direction_x,direction_y,direction_z,up_x,up_y,up_z,cargo_items,cargo_magazines,cargo_weapons,pin_code,territory_id,abandoned,deleted_at,money FROM container WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2-STRING,3-STRING,4,5,6,7,8,9,10,11,12,13,14,15,16,17-STRING,18,19-STRING,20,21 + +[loadContainerCargo] +SQL1_1 = SELECT cargo_container FROM container WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[updateContainer] +SQL1_1 = UPDATE container SET +SQL1_2 = is_locked = ?, +SQL1_3 = position_x = ?, +SQL1_4 = position_y = ?, +SQL1_5 = position_z = ?, +SQL1_6 = direction_x = ?, +SQL1_7 = direction_y = ?, +SQL1_8 = direction_z = ?, +SQL1_9 = up_x = ?, +SQL1_10 = up_y = ?, +SQL1_11 = up_z = ?, +SQL1_12 = cargo_items = ?, +SQL1_13 = cargo_magazines = ?, +SQL1_14 = cargo_weapons = ?, +SQL1_15 = cargo_container = ?, +SQL1_16 = territory_id = $CUSTOM_1$, +SQL1_17 = money = ? +SQL1_18 = WHERE id = ? +Number of Inputs = 16 +Number of Custom Inputs = 1 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 + +[containerSetPinCode] +SQL1_1 = UPDATE container SET pin_code= ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateContainerTerritoryIDs] +SQL1_1 = UPDATE container SET territory_id = ? WHERE id IN(?) +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Clan related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[createClan] +SQL1_1 = INSERT INTO clan SET leader_uid = ?, name = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +Return InsertID = true + +[setAccountClanLink] +SQL1_1 = UPDATE account SET clan_id = ? WHERE uid = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[unLinkClanLink] +SQL1_1 = UPDATE account SET clan_id = NULL WHERE uid = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[updateClanLeader] +SQL1_1 = UPDATE clan SET leader_uid = ? WHERE id = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[deleteClan] +SQL1_1 = DELETE FROM clan WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[loadClansIdPage] +SQL1_1 = SELECT id FROM clan LIMIT ?,? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +OUTPUT = 1 + +[getClanInfo] +SQL1_1 = SELECT name,leader_uid FROM clan WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1-STRING,2-STRING + +[getClanMembers] +SQL1_1 = SELECT uid,name FROM account WHERE clan_id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1-STRING,2-STRING + +[getClanMarkers] +SQL1_1 = SELECT id,markerType,positionArr,color,icon,iconSize,label,labelSize FROM clan_map_marker WHERE clan_id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2,3,4,5-STRING,6,7-STRING,8 + +[addMarker] +SQL1_1 = INSERT INTO clan_map_marker SET clan_id = ?, markerType = 0, positionArr = ?, color = ?, icon = ?, iconSize = ?, label = ?, labelSize = ? +Number Of Inputs = 7 +SQL1_INPUTS = 1,2,3,4,5,6,7 +Return InsertID = true + +[addPoly] +SQL1_1 = INSERT INTO clan_map_marker SET clan_id = ?, markerType = 1, positionArr = ?, color = ? +Number Of Inputs = 3 +SQL1_INPUTS = 1,2,3 +Return InsertID = true + +[deleteMarker] +SQL1_1 = DELETE FROM clan_map_marker WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Territory related queries +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[createTerritory] +SQL1_1 = INSERT INTO territory SET owner_uid = ?, name = ?, position_x = ? , position_y = ? , position_z = ?, radius = ? , level = ? , flag_texture = ? , flag_stolen = ? , flag_stolen_by_uid =$CUSTOM_1$ , build_rights = ? , moderators = ? +Number Of Inputs = 11 +Number Of Custom Inputs = 1 +SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11 +Return InsertID = true + +[loadTerriotryIdPage] +SQL1_1 = SELECT id FROM territory WHERE deleted_at IS NULL LIMIT ?,? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 +OUTPUT = 1 + +[loadTerritory] +SQL1_1 = SET @connector = ?; +SQL2_1 = SELECT id,owner_uid,name,position_x,position_y,position_z,radius, level,flag_texture,flag_stolen,flag_stolen_by_uid,last_paid_at,build_rights,moderators,deleted_at,(SELECT COUNT(*)FROM construction c WHERE c.territory_id = @connector) FROM territory WHERE id = @connector +Number Of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1,2-STRING,3-STRING,4,5,6,7,8,9-STRING,10,11-STRING,12-DateTime_ISO8601,13,14,15,16 + +[setTerritoryLevel] +SQL1_1 = UPDATE territory SET level = ? WHERE id = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[setTerritorySize] +SQL1_1 = UPDATE territory SET radius = ? WHERE id = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateTerritoryBuildRights] +SQL1_1 = UPDATE territory SET build_rights = ? WHERE id = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[updateTerritoryModerators] +SQL1_1 = UPDATE territory SET moderators = ? WHERE id = ? +Number Of Inputs = 2 +SQL1_INPUTS = 1,2 + +[maintainTerritory] +SQL1_1 = UPDATE territory SET last_paid_at = NOW(),xm8_protectionmoney_notified = 0 WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[deleteTerritory] +SQL1_1 = DELETE FROM territory WHERE id = ? +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[flagStolen] +SQL1_1 = UPDATE territory SET flag_stolen = 1, flag_stolen_by_uid = ?, flag_stolen_at = NOW() WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[flagRestore] +SQL1_1 = UPDATE territory SET flag_stolen = 0, flag_stolen_by_uid = NULL, flag_stolen_at = NULL WHERE id = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Garbage Collector +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; Marks for deletion containers outside territories that were not accessed within ? days +[markDeleteOldContainers] +SQL1_1 = UPDATE container SET deleted_at = NOW() WHERE last_updated_at < DATE_SUB(NOW(), INTERVAL ? DAY) AND territory_id IS NULL +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Removes containers outside territories that were not accessed within ? days +[deleteOldContainers] +SQL1_1 = DELETE FROM container WHERE deleted_at < DATE_SUB(NOW(), INTERVAL ? DAY) AND territory_id IS NULL +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Marks contructions outside territories deleted after ? days +[markDeleteOldConstructions] +SQL1_1 = UPDATE construction SET deleted_at = NOW() WHERE last_updated_at < DATE_SUB(NOW(), INTERVAL ? DAY) AND territory_id IS NULL +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Removes contructions outside territories after ? days +[deleteOldConstructions] +SQL1_1 = DELETE FROM construction WHERE deleted_at < DATE_SUB(NOW(), INTERVAL ? DAY) AND territory_id IS NULL +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Marks for deletion vehicles that were not used within ? days +[markDeleteOldVehicles] +SQL1_1 = UPDATE vehicle SET deleted_at = NOW() WHERE last_updated_at < DATE_SUB(NOW(), INTERVAL ? DAY) +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Removes vehicles that were not used within ? days +[deleteOldVehicles] +SQL1_1 = DELETE FROM vehicle WHERE deleted_at < DATE_SUB(NOW(), INTERVAL ? DAY) +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Marks territories (and all containers/constructions) that were not paid within ? days as deleted +[markDeleteUnpaidTerritories] +SQL1_1 = UPDATE territory SET deleted_at = NOW() WHERE last_paid_at < DATE_SUB(NOW(), INTERVAL ? DAY) +SQl2_1 = UPDATE construction SET deleted_at = (select deleted_at from territory where territory.id=construction.territory_id and territory.deleted_at IS NOT NULL) +SQL3_1 = UPDATE container SET deleted_at = (select deleted_at from territory where territory.id=container.territory_id and territory.deleted_at IS NOT NULL) +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Removes territories (and all containers/constructions) that were not paid within ? days +[deleteUnpaidTerritories] +SQL1_1 = DELETE FROM territory WHERE deleted_at < DATE_SUB(NOW(), INTERVAL ? DAY) +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[addAbandonedSafes] +SQL1_1 = UPDATE container SET abandoned = NOW(), pin_code = '0000' WHERE last_updated_at < DATE_SUB(NOW(), INTERVAL ? DAY) AND class = "Exile_Container_Safe" AND territory_id IS NULL +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +[deleteBaseFlagStolen] +SQL1_1 = DELETE FROM territory WHERE flag_stolen_at < DATE_SUB(NOW(), INTERVAL ? DAY) +Number Of Inputs = 1 +SQL1_INPUTS = 1 + +; Unlock doors and mark safes as abandoned if flag stolen for X days +[setAbandonedUnlocked] +SQL1_1 = UPDATE container SET abandoned = NOW(), pin_code = '0000' WHERE (SELECT flag_stolen_at from territory WHERE territory.id=container.territory_id AND territory.flag_stolen_at < DATE_SUB(NOW(), INTERVAL ? DAY)); +SQL2_1 = UPDATE construction SET pin_code = '0000' WHERE (SELECT flag_stolen_at from territory WHERE territory.id = construction.territory_id AND territory.flag_stolen_at < DATE_SUB(NOW(), INTERVAL ? DAY)) AND pin_code != '000000' +Number Of Inputs = 1 +SQL1_INPUTS = 1 +SQL2_INPUTS = 1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Moneh moneh moneh +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[setPlayerMoney] +SQL1_1 = UPDATE player SET money = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[getPlayerMoney] +SQL1_1 = SELECT money FROM player WHERE id = ? +Number of Inputs = 1 +SQL1_INPUTS = 1 +OUTPUT = 1 + +[setContainerMoney] +SQL1_1 = UPDATE container SET money = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +[setVehicleMoney] +SQL1_1 = UPDATE vehicle SET money = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; XM8 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[getAllNotifTerritory] +SQL1_1 = SELECT id FROM territory WHERE last_paid_at < DATE_SUB(NOW(), INTERVAL ? - 1 DAY) and xm8_protectionmoney_notified = 0 +Number of Inputs = 1 +SQL1_INPUTS = 1 + +[setTerritoryNotified] +SQL1_1 = UPDATE territory SET xm8_protectionmoney_notified = ? WHERE id = ? +Number of Inputs = 2 +SQL1_INPUTS = 1,2 \ No newline at end of file