%1",_names];
+_dealer setVariable ["sellers",[],true];
+life_action_inUse = false;
diff --git a/Altis_Life.Altis/core/cop/fn_radar.sqf b/Altis_Life.Altis/core/cop/fn_radar.sqf
index 1c6657b9b..844a65e2b 100644
--- a/Altis_Life.Altis/core/cop/fn_radar.sqf
+++ b/Altis_Life.Altis/core/cop/fn_radar.sqf
@@ -1,23 +1,22 @@
-/*
- File: fn_radar.sqf
- Author: Silly Aussie kid named Jaydon
-
- Description:
- Looks like weird but radar?
-*/
-if !(playerSide isEqualTo west) exitWith {};
-private ["_speed","_vehicle"];
-_vehicle = cursorObject;
-_speed = round speed _vehicle;
-
-if ((_vehicle isKindOf "Car") && (currentWeapon player) isEqualTo "hgun_P07_snds_F") then {
- switch (true) do {
- case (_speed > 33 && _speed <= 80): {
- hint parseText format ["" +(localize "STR_Cop_Radar")+ " " +(localize "STR_Cop_VehSpeed"),round _speed];
- };
-
- case (_speed > 80): {
- hint parseText format ["" +(localize "STR_Cop_Radar")+ " " +(localize "STR_Cop_VehSpeed"),round _speed];
- };
- };
-};
+/*
+ File: fn_radar.sqf
+ Author: Silly Aussie kid named Jaydon
+
+ Description:
+ Radar
+*/
+
+if !(playerSide isEqualTo west) exitWith {};
+
+private _vehicle = cursorObject;
+if (_vehicle isKindOf "Car" && {currentWeapon player isEqualTo "hgun_P07_snds_F"}) then {
+ private _speed = round speed _vehicle;
+
+ if (_speed > 80) then {
+ hint parseText format ["" + (localize "STR_Cop_Radar")+ " " + (localize "STR_Cop_VehSpeed"), _speed];
+ } else {
+ if (_speed > 33) then {
+ hint parseText format ["" + (localize "STR_Cop_Radar")+ " " + (localize "STR_Cop_VehSpeed"), _speed];
+ };
+ };
+};
diff --git a/Altis_Life.Altis/core/cop/fn_repairDoor.sqf b/Altis_Life.Altis/core/cop/fn_repairDoor.sqf
index ec858acbb..a8b20febb 100644
--- a/Altis_Life.Altis/core/cop/fn_repairDoor.sqf
+++ b/Altis_Life.Altis/core/cop/fn_repairDoor.sqf
@@ -6,43 +6,55 @@
Description:
Re-locks the door mainly for the federal reserve structures.
*/
-private ["_building","_doors","_door","_cP","_cpRate","_ui","_title","_titleText","_locked"];
-_building = param [0,objNull,[objNull]];
+
+params [
+ ["_building", objNull, [objNull]]
+];
+
if (isNull _building) exitWith {};
-if (!(_building isKindOf "House_F")) exitWith {hint localize "STR_ISTR_Bolt_NotNear";};
+if !(_building isKindOf "House_F") exitWith {
+ hint localize "STR_ISTR_Bolt_NotNear";
+};
-_doors = 1;
+private _doors = 1;
_doors = FETCH_CONFIG2(getNumber,"CfgVehicles",(typeOf _building),"NumberOfDoors");
-_door = 0;
+private _door = 0;
+
//Find the nearest door
for "_i" from 1 to _doors do {
- _selPos = _building selectionPosition format ["Door_%1_trigger",_i];
- _worldSpace = _building modelToWorld _selPos;
- if (player distance _worldSpace < 5) exitWith {_door = _i;};
+ private _selPos = _building selectionPosition format ["Door_%1_trigger",_i];
+ private _worldSpace = _building modelToWorld _selPos;
+ if (player distance _worldSpace < 5) exitWith {
+ _door = _i;
+ };
};
-if (_door isEqualTo 0) exitWith {hint localize "STR_Cop_NotaDoor"}; //Not near a door to be broken into.
-_doorN = _building getVariable [format ["bis_disabled_Door_%1",_door],0];
-if (_doorN isEqualTo 1) exitWith {hint localize "STR_House_FedDoor_Locked"};
+if (_door isEqualTo 0) exitWith {
+ hint localize "STR_Cop_NotaDoor"
+}; //Not near a door to be broken into.
+private _doorN = _building getVariable [format ["bis_disabled_Door_%1",_door],0];
+if (_doorN isEqualTo 1) exitWith {
+ hint localize "STR_House_FedDoor_Locked"
+};
life_action_inUse = true;
closeDialog 0;
//Setup the progress bar
disableSerialization;
-_title = localize "STR_Cop_RepairingDoor";
+private _title = localize "STR_Cop_RepairingDoor";
"progressBar" cutRsc ["life_progress","PLAIN"];
-_ui = uiNamespace getVariable "life_progress";
-_progressBar = _ui displayCtrl 38201;
-_titleText = _ui displayCtrl 38202;
+private _ui = uiNamespace getVariable "life_progress";
+private _progressBar = _ui displayCtrl 38201;
+private _titleText = _ui displayCtrl 38202;
_titleText ctrlSetText format ["%2 (1%1)...","%",_title];
_progressBar progressSetPosition 0.01;
-_cP = 0.01;
+private _cP = 0.01;
-switch (typeOf _building) do {
- case "Land_Dome_Big_F": {_cpRate = 0.008;};
+private _cpRate = switch (typeOf _building) do {
+ case "Land_Dome_Big_F": {0.008};
case "Land_Medevac_house_V1_F";
- case "Land_Research_house_V1_F": {_cpRate = 0.005;};
- default {_cpRate = 0.08;}
+ case "Land_Research_house_V1_F": {0.005};
+ default {0.08};
};
for "_i" from 0 to 1 step 0 do {
@@ -59,23 +71,31 @@ for "_i" from 0 to 1 step 0 do {
_cP = _cP + _cpRate;
_progressBar progressSetPosition _cP;
_titleText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_title];
- if (_cP >= 1 || !alive player) exitWith {};
+ if (_cP >= 1 || {!alive player}) exitWith {};
if (life_interrupted) exitWith {};
};
//Kill the UI display and check for various states
"progressBar" cutText ["","PLAIN"];
player playActionNow "stop";
-if (!alive player) exitWith {life_action_inUse = false;};
-if (life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_NOTF_ActionCancel","PLAIN"]; life_action_inUse = false;};
+
life_action_inUse = false;
+if (!alive player) exitWith {};
+
+if (life_interrupted) exitWith {
+ life_interrupted = false;
+ titleText[localize "STR_NOTF_ActionCancel","PLAIN"];
+};
+
_building animateSource [format ["Door_%1_source", _door], 0];
_building setVariable [format ["bis_disabled_Door_%1",_door],1,true]; //Lock the door.
-_locked = true;
+private _locked = true;
for "_i" from 1 to _doors do {
- if ((_building getVariable [format ["bis_disabled_Door_%1",_i],0]) isEqualTo 0) exitWith {_locked = false};
+ if (_building getVariable [format ["bis_disabled_Door_%1",_i],0] isEqualTo 0) exitWith {
+ _locked = false
+ };
};
if (_locked) then {
diff --git a/Altis_Life.Altis/core/cop/fn_restrain.sqf b/Altis_Life.Altis/core/cop/fn_restrain.sqf
index 655b8bc3a..2d67079b5 100644
--- a/Altis_Life.Altis/core/cop/fn_restrain.sqf
+++ b/Altis_Life.Altis/core/cop/fn_restrain.sqf
@@ -1,94 +1,101 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_restrain.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Restrains the client.
-*/
-private ["_cop","_player","_vehicle"];
-_cop = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_player = player;
-_vehicle = vehicle player;
-if (isNull _cop) exitWith {};
-
-//Monitor excessive restrainment
-[] spawn {
- private "_time";
- for "_i" from 0 to 1 step 0 do {
- _time = time;
- waitUntil {(time - _time) > (5 * 60)};
-
- if (!(player getVariable ["restrained",false])) exitWith {};
- if (!([west,getPos player,30] call life_fnc_nearUnits) && (player getVariable ["restrained",false]) && isNull objectParent player) exitWith {
- player setVariable ["restrained",false,true];
- player setVariable ["Escorting",false,true];
- player setVariable ["transporting",false,true];
- detach player;
- titleText[localize "STR_Cop_ExcessiveRestrain","PLAIN"];
- };
- };
-};
-
-titleText[format [localize "STR_Cop_Restrained",_cop getVariable ["realname",name _cop]],"PLAIN"];
-
-life_disable_getIn = true;
-life_disable_getOut = false;
-
-while {player getVariable "restrained"} do {
- if (isNull objectParent player) then {
- player playMove "AmovPercMstpSnonWnonDnon_Ease";
- };
-
- _state = vehicle player;
- waitUntil {animationState player != "AmovPercMstpSnonWnonDnon_Ease" || !(player getVariable "restrained") || vehicle player != _state};
-
- if (!alive player) exitWith {
- player setVariable ["restrained",false,true];
- player setVariable ["Escorting",false,true];
- player setVariable ["transporting",false,true];
- detach _player;
- };
-
- if (!alive _cop) then {
- player setVariable ["Escorting",false,true];
- detach player;
- };
-
- if (!(isNull objectParent player) && life_disable_getIn) then {
- player action["eject",vehicle player];
- };
-
- if (!(isNull objectParent player) && !(vehicle player isEqualTo _vehicle)) then {
- _vehicle = vehicle player;
- };
-
- if (isNull objectParent player && life_disable_getOut) then {
- player moveInCargo _vehicle;
- };
-
- if (!(isNull objectParent player) && life_disable_getOut && (driver (vehicle player) isEqualTo player)) then {
- player action["eject",vehicle player];
- player moveInCargo _vehicle;
- };
-
- if (!(isNull objectParent player) && life_disable_getOut) then {
- _turrets = [[-1]] + allTurrets _vehicle;
- {
- if (_vehicle turretUnit [_x select 0] isEqualTo player) then {
- player action["eject",vehicle player];
- sleep 1;
- player moveInCargo _vehicle;
- };
- }forEach _turrets;
- };
-};
-
-//disableUserInput false;
-
-if (alive player) then {
- player switchMove "AmovPercMstpSlowWrflDnon_SaluteIn";
- player setVariable ["Escorting",false,true];
- player setVariable ["transporting",false,true];
- detach player;
-};
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_restrain.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Restrains the client.
+*/
+
+params [
+ ["_cop", objNull, [objNull]]
+];
+
+private _vehicle = vehicle player;
+if (isNull _cop) exitWith {};
+
+//Monitor excessive restrainment
+[] spawn {
+ private "_time";
+ for "_i" from 0 to 1 step 0 do {
+ _time = time;
+ waitUntil {time - _time > (5 * 60)};
+
+ if !(player getVariable ["restrained",false]) exitWith {};
+ if (!([west,getPos player,30] call life_fnc_nearUnits) && {player getVariable ["restrained",false]} && {isNull objectParent player}) exitWith {
+ player setVariable ["restrained",false,true];
+ player setVariable ["Escorting",false,true];
+ player setVariable ["transporting",false,true];
+ detach player;
+ titleText[localize "STR_Cop_ExcessiveRestrain","PLAIN"];
+ };
+ };
+};
+
+titleText[format [localize "STR_Cop_Restrained", _cop getVariable ["realname",name _cop]], "PLAIN"];
+
+life_disable_getIn = true;
+life_disable_getOut = false;
+
+while {player getVariable ["restrained", false]} do {
+ if (isNull objectParent player) then {
+ player playMove "AmovPercMstpSnonWnonDnon_Ease";
+ };
+
+ private _state = vehicle player;
+ waitUntil {
+ animationState player != "AmovPercMstpSnonWnonDnon_Ease" ||
+ {!(player getVariable ["restrained", false])} ||
+ {vehicle player != _state}
+ };
+
+ if (!alive player) exitWith {
+ player setVariable ["restrained",false,true];
+ player setVariable ["Escorting",false,true];
+ player setVariable ["transporting",false,true];
+ detach player;
+ };
+
+ if (!alive _cop) then {
+ player setVariable ["Escorting",false,true];
+ detach player;
+ };
+
+ if (!(isNull objectParent player) && {life_disable_getIn}) then {
+ player action["eject",vehicle player];
+ };
+
+ if (!(isNull objectParent player) && {!(vehicle player isEqualTo _vehicle)}) then {
+ _vehicle = vehicle player;
+ };
+
+ if (isNull objectParent player && {life_disable_getOut}) then {
+ player moveInCargo _vehicle;
+ };
+
+ if (!(isNull objectParent player) && {life_disable_getOut} && {driver (vehicle player) isEqualTo player}) then {
+ player action["eject",vehicle player];
+ player moveInCargo _vehicle;
+ };
+
+ if (!(isNull objectParent player) && {life_disable_getOut}) then {
+ _turrets = [[-1]] + allTurrets _vehicle;
+ {
+ if (_vehicle turretUnit [_x select 0] isEqualTo player) then {
+ player action["eject",vehicle player];
+ sleep 1;
+ player moveInCargo _vehicle;
+ };
+ true
+ } count _turrets;
+ };
+};
+
+//disableUserInput false;
+
+if (alive player) then {
+ player switchMove "AmovPercMstpSlowWrflDnon_SaluteIn";
+ player setVariable ["Escorting",false,true];
+ player setVariable ["transporting",false,true];
+ detach player;
+};
diff --git a/Altis_Life.Altis/core/cop/fn_searchClient.sqf b/Altis_Life.Altis/core/cop/fn_searchClient.sqf
index afb51eae6..0ca0d898f 100644
--- a/Altis_Life.Altis/core/cop/fn_searchClient.sqf
+++ b/Altis_Life.Altis/core/cop/fn_searchClient.sqf
@@ -6,24 +6,26 @@
Description:
Searches the player and he returns information back to the player.
*/
-private ["_inv","_val","_var","_robber"];
+
params [
["_cop",objNull,[objNull]]
];
+
if (isNull _cop) exitWith {};
-_inv = [];
-_robber = false;
+private _inv = [];
+private _robber = false;
//Illegal items
{
- _var = configName(_x);
- _val = ITEM_VALUE(_var);
+ private _var = configName(_x);
+ private _val = ITEM_VALUE(_var);
if (_val > 0) then {
_inv pushBack [_var,_val];
[false,_var,_val] call life_fnc_handleInv;
};
-} forEach ("getNumber(_x >> 'illegal') isEqualTo 1" configClasses (missionConfigFile >> "VirtualItems"));
+ true
+} count ("getNumber(_x >> 'illegal') isEqualTo 1" configClasses (missionConfigFile >> "VirtualItems"));
if (!life_use_atm) then {
CASH = 0;
diff --git a/Altis_Life.Altis/core/cop/fn_seizeClient.sqf b/Altis_Life.Altis/core/cop/fn_seizeClient.sqf
index e4d850b51..d7c3fe902 100644
--- a/Altis_Life.Altis/core/cop/fn_seizeClient.sqf
+++ b/Altis_Life.Altis/core/cop/fn_seizeClient.sqf
@@ -6,45 +6,56 @@
Description:
Removes the players weapons client side
*/
-private ["_exempt","_uniform","_vest","_headgear"];
-_exempt = LIFE_SETTINGS(getArray,"seize_exempt");
-_headgear = LIFE_SETTINGS(getArray,"seize_headgear");
-_vest = LIFE_SETTINGS(getArray,"seize_vest");
-_uniform = LIFE_SETTINGS(getArray,"seize_uniform");
+
+private _exempt = LIFE_SETTINGS(getArray,"seize_exempt");
+private _headgear = LIFE_SETTINGS(getArray,"seize_headgear");
+private _vest = LIFE_SETTINGS(getArray,"seize_vest");
+private _uniform = LIFE_SETTINGS(getArray,"seize_uniform");
{
- if (!(_x in _exempt)) then {
+ if !(_x in _exempt) then {
player removeWeapon _x;
};
-} forEach weapons player;
+ true
+} count weapons player;
{
- if (!(_x in _exempt)) then {
+ if !(_x in _exempt) then {
player removeItemFromUniform _x;
};
-} forEach uniformItems player;
+ true
+} count uniformItems player;
{
- if (!(_x in _exempt)) then {
+ if !(_x in _exempt) then {
player removeItemFromVest _x;
};
-} forEach vestItems player;
+ true
+} count vestItems player;
{
- if (!(_x in _exempt)) then {
+ if !(_x in _exempt) then {
player removeItemFromBackpack _x;
};
-} forEach backpackItems player;
+ true
+} count backpackItems player;
{
- if (!(_x in _exempt)) then {
- player removeMagazine _x;
+ if !(_x in _exempt) then {
+ player removeMagazine _x;
};
-} forEach magazines player;
-
-if (uniform player in _uniform) then {removeUniform player;};
-if (vest player in _vest) then {removeVest player;};
-if (headgear player in _headgear) then {removeHeadgear player;};
+ true
+} count magazines player;
+
+if (uniform player in _uniform) then {
+ removeUniform player;
+};
+if (vest player in _vest) then {
+ removeVest player;
+};
+if (headgear player in _headgear) then {
+ removeHeadgear player;
+};
[] call SOCK_fnc_updateRequest;
titleText[localize "STR_NOTF_SeizeIllegals","PLAIN"];
diff --git a/Altis_Life.Altis/core/cop/fn_sirenLights.sqf b/Altis_Life.Altis/core/cop/fn_sirenLights.sqf
index fbe4f4940..e6dae3721 100644
--- a/Altis_Life.Altis/core/cop/fn_sirenLights.sqf
+++ b/Altis_Life.Altis/core/cop/fn_sirenLights.sqf
@@ -4,26 +4,20 @@
Author: Bryan "Tonic" Boardwine
Description:
- Lets play a game! Can you guess what it does? I have faith in you, if you can't
- then you have failed me and therefor I lose all faith in humanity.. No pressure.
+ Toggles siren lights
*/
+
params [
["_vehicle",objNull,[objNull]]
];
-if (isNull _vehicle) exitWith {}; //Bad entry!
-if !(typeOf _vehicle in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) exitWith {}; //Last chance check to prevent something from defying humanity and creating a monster.
-private _trueorfalse = _vehicle getVariable ["lights",false];
+if (isNull _vehicle) exitWith {};
+if !(typeOf _vehicle in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) exitWith {};
+
+private _lightsOn = _vehicle getVariable ["lights",false];
-if (_trueorfalse) then {
- _vehicle setVariable ["lights",false,true];
- if !(isNil {(_vehicle getVariable "lightsJIP")}) then {
- private _jip = _vehicle getVariable "lightsJIP";
- _vehicle setVariable ["lightsJIP",nil,true];
- remoteExec ["",_jip]; //remove from JIP queue
- };
-} else {
- _vehicle setVariable ["lights",true,true];
- private _jip = [_vehicle,0.22] remoteExec ["life_fnc_copLights",RCLIENT,true];
- _vehicle setVariable ["lightsJIP",_jip,true];
+if (!_lightsOn) then {
+ [_vehicle,0.22] remoteExec ["life_fnc_copLights",RCLIENT];
};
+
+_vehicle setVariable ["lights", !_lightsOn, true];
\ No newline at end of file
diff --git a/Altis_Life.Altis/core/cop/fn_spikeStripEffect.sqf b/Altis_Life.Altis/core/cop/fn_spikeStripEffect.sqf
index 16a811648..e797fbde2 100644
--- a/Altis_Life.Altis/core/cop/fn_spikeStripEffect.sqf
+++ b/Altis_Life.Altis/core/cop/fn_spikeStripEffect.sqf
@@ -1,14 +1,16 @@
-/*
- File: fn_spikeStripEffect.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Doesn't work without the server-side effect but shifted part of it clientside
- so code can easily be changed. Ultimately it just pops the tires.
-*/
-private ["_vehicle"];
-_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _vehicle) exitWith {}; //Bad vehicle type
-
-_vehicle setHitPointDamage["HitLFWheel",1];
-_vehicle setHitPointDamage["HitRFWheel",1];
+/*
+ File: fn_spikeStripEffect.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Pops the vehicles tyres - required due to the local arguments for setHitPointDamage being local.
+*/
+
+params [
+ ["_vehicle",objNull,[objNull]]
+];
+
+if (isNull _vehicle) exitWith {};
+
+_vehicle setHitPointDamage ["HitLFWheel",1];
+_vehicle setHitPointDamage ["HitRFWheel",1];
diff --git a/Altis_Life.Altis/core/cop/fn_ticketGive.sqf b/Altis_Life.Altis/core/cop/fn_ticketGive.sqf
index 1fe0d7768..be8ef5193 100644
--- a/Altis_Life.Altis/core/cop/fn_ticketGive.sqf
+++ b/Altis_Life.Altis/core/cop/fn_ticketGive.sqf
@@ -1,19 +1,29 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_ticketGive.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Gives a ticket to the targeted player.
-*/
-if (isNil "life_ticket_unit") exitWith {hint localize "STR_Cop_TicketNil"};
-if (isNull life_ticket_unit) exitWith {hint localize "STR_Cop_TicketExist"};
-
-private _val = ctrlText 2652;
-
-if (!([_val] call TON_fnc_isnumber)) exitWith {hint localize "STR_Cop_TicketNum"};
-if ((parseNumber _val) > 200000) exitWith {hint localize "STR_Cop_TicketOver100"};
-
-[0,"STR_Cop_TicketGive",true,[profileName,[(parseNumber _val)] call life_fnc_numberText,life_ticket_unit getVariable ["realname",name life_ticket_unit]]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
-[player,(parseNumber _val)] remoteExec ["life_fnc_ticketPrompt",life_ticket_unit];
-closeDialog 0;
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_ticketGive.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Gives a ticket to the targeted player.
+*/
+
+if (isNil "life_ticket_unit") exitWith {
+ hint localize "STR_Cop_TicketNil"
+};
+
+if (isNull life_ticket_unit) exitWith {
+ hint localize "STR_Cop_TicketExist"
+};
+
+private _val = ctrlText 2652;
+private _parsedVal = parseNumber _val;
+
+if !([_val] call life_util_fnc_isNumber) exitWith {hint localize "STR_Cop_TicketNum"};
+
+if (_parsedVal > 200000) exitWith {
+ hint localize "STR_Cop_TicketOver100"
+};
+
+[0,"STR_Cop_TicketGive", true, [profileName, [_parsedVal] call life_fnc_numberText, life_ticket_unit getVariable ["realname", name life_ticket_unit]]] remoteExecCall ["life_fnc_broadcast", RCLIENT];
+[player, _parsedVal] remoteExecCall ["life_fnc_ticketPrompt", life_ticket_unit];
+closeDialog 0;
diff --git a/Altis_Life.Altis/core/cop/fn_ticketPaid.sqf b/Altis_Life.Altis/core/cop/fn_ticketPaid.sqf
index 714413c30..cbe500c49 100644
--- a/Altis_Life.Altis/core/cop/fn_ticketPaid.sqf
+++ b/Altis_Life.Altis/core/cop/fn_ticketPaid.sqf
@@ -1,18 +1,20 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_ticketPaid.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Verifies that the ticket was paid.
-*/
-params [
- ["_value",5,[0]],
- ["_unit",objNull,[objNull]],
- ["_cop",objNull,[objNull]]
-];
-if (isNull _unit || {!(_unit isEqualTo life_ticket_unit)}) exitWith {}; //NO
-if (isNull _cop || {!(_cop isEqualTo player)}) exitWith {}; //Double NO
-
-BANK = BANK + _value;
-[1] call SOCK_fnc_updatePartial;
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_ticketPaid.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Verifies that the ticket was paid.
+*/
+
+params [
+ ["_value", 5, [0]],
+ ["_unit", objNull, [objNull]]
+];
+
+if (isNull _unit || {!(_unit isEqualTo life_ticket_unit)}) exitWith {};
+private _name = _unit getVariable ["realname",name _unit];
+
+hint format [localize "STR_Cop_Ticket_PaidNOTF_2",_name];
+BANK = BANK + _value;
+[1] call SOCK_fnc_updatePartial;
diff --git a/Altis_Life.Altis/core/cop/fn_ticketPay.sqf b/Altis_Life.Altis/core/cop/fn_ticketPay.sqf
index 90e6fc963..4625a3b29 100644
--- a/Altis_Life.Altis/core/cop/fn_ticketPay.sqf
+++ b/Altis_Life.Altis/core/cop/fn_ticketPay.sqf
@@ -1,47 +1,47 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_ticketPay.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Pays the ticket.
-*/
-if (isNil "life_ticket_val" || isNil "life_ticket_cop") exitWith {};
-if (CASH < life_ticket_val) exitWith {
- if (BANK < life_ticket_val) exitWith {
- hint localize "STR_Cop_Ticket_NotEnough";
- [1,"STR_Cop_Ticket_NotEnoughNOTF",true,[profileName]] remoteExecCall ["life_fnc_broadcast",life_ticket_cop];
- closeDialog 0;
- };
-
- hint format [localize "STR_Cop_Ticket_Paid",[life_ticket_val] call life_fnc_numberText];
- BANK = BANK - life_ticket_val;
- [1] call SOCK_fnc_updatePartial;
- life_ticket_paid = true;
-
- [0,"STR_Cop_Ticket_PaidNOTF",true,[profileName,[life_ticket_val] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",west];
- [1,"STR_Cop_Ticket_PaidNOTF_2",true,[profileName]] remoteExecCall ["life_fnc_broadcast",life_ticket_cop];
- [life_ticket_val,player,life_ticket_cop] remoteExecCall ["life_fnc_ticketPaid",life_ticket_cop];
-
- if (life_HC_isActive) then {
- [getPlayerUID player] remoteExecCall ["HC_fnc_wantedRemove",HC_Life];
- } else {
- [getPlayerUID player] remoteExecCall ["life_fnc_wantedRemove",RSERV];
- };
- closeDialog 0;
-};
-
-CASH = CASH - life_ticket_val;
-[0] call SOCK_fnc_updatePartial;
-life_ticket_paid = true;
-
-if (life_HC_isActive) then {
- [getPlayerUID player] remoteExecCall ["HC_fnc_wantedRemove",HC_Life];
-} else {
- [getPlayerUID player] remoteExecCall ["life_fnc_wantedRemove",RSERV];
-};
-
-[0,"STR_Cop_Ticket_PaidNOTF",true,[profileName,[life_ticket_val] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",west];
-closeDialog 0;
-[1,"STR_Cop_Ticket_PaidNOTF_2",true,[profileName]] remoteExecCall ["life_fnc_broadcast",life_ticket_cop];
-[life_ticket_val,player,life_ticket_cop] remoteExecCall ["life_fnc_ticketPaid",life_ticket_cop];
\ No newline at end of file
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_ticketPay.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Pays the ticket.
+*/
+
+if (isNil "life_ticket_val" || {isNil "life_ticket_cop"}) exitWith {};
+if (CASH < life_ticket_val) exitWith {
+ if (BANK < life_ticket_val) exitWith {
+ hint localize "STR_Cop_Ticket_NotEnough";
+ [1,"STR_Cop_Ticket_NotEnoughNOTF", true, [profileName]] remoteExecCall ["life_fnc_broadcast", life_ticket_cop];
+ closeDialog 0;
+ };
+
+ hint format [localize "STR_Cop_Ticket_Paid", [life_ticket_val] call life_fnc_numberText];
+ BANK = BANK - life_ticket_val;
+ [1] call SOCK_fnc_updatePartial;
+ life_ticket_paid = true;
+
+ [0, "STR_Cop_Ticket_PaidNOTF", true, [profileName, [life_ticket_val] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast", west];
+ [1, "STR_Cop_Ticket_PaidNOTF_2", true, [profileName]] remoteExecCall ["life_fnc_broadcast", life_ticket_cop];
+ [life_ticket_val, player, life_ticket_cop] remoteExecCall ["life_fnc_ticketPaid", life_ticket_cop];
+
+ if (life_HC_isActive) then {
+ [getPlayerUID player] remoteExecCall ["HC_fnc_wantedRemove",HC_Life];
+ } else {
+ [getPlayerUID player] remoteExecCall ["life_fnc_wantedRemove",RSERV];
+ };
+ closeDialog 0;
+};
+
+CASH = CASH - life_ticket_val;
+[0] call SOCK_fnc_updatePartial;
+life_ticket_paid = true;
+
+if (life_HC_isActive) then {
+ [getPlayerUID player] remoteExecCall ["HC_fnc_wantedRemove", HC_Life];
+} else {
+ [getPlayerUID player] remoteExecCall ["life_fnc_wantedRemove", RSERV];
+};
+
+[0, "STR_Cop_Ticket_PaidNOTF", true, [profileName, [life_ticket_val] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast", west];
+closeDialog 0;
+[life_ticket_val, player] remoteExecCall ["life_fnc_ticketPaid", life_ticket_cop];
diff --git a/Altis_Life.Altis/core/cop/fn_ticketPrompt.sqf b/Altis_Life.Altis/core/cop/fn_ticketPrompt.sqf
index e976f51b7..1a9bff783 100644
--- a/Altis_Life.Altis/core/cop/fn_ticketPrompt.sqf
+++ b/Altis_Life.Altis/core/cop/fn_ticketPrompt.sqf
@@ -1,31 +1,33 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_ticketPrompt
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Prompts the player that he is being ticketed.
-*/
-private ["_cop","_val"];
-if (!isNull (findDisplay 2600)) exitWith {}; //Already at the ticket menu, block for abuse?
-_cop = _this select 0;
-if (isNull _cop) exitWith {};
-_val = _this select 1;
-
-createDialog "life_ticket_pay";
-disableSerialization;
-waitUntil {!isNull (findDisplay 2600)};
-
-life_ticket_paid = false;
-life_ticket_val = _val;
-life_ticket_cop = _cop;
-CONTROL(2600,2601) ctrlSetStructuredText parseText format ["" +(localize "STR_Cop_Ticket_GUI_Given"),_cop getVariable ["realname",name _cop],_val];
-
-[] spawn {
- disableSerialization;
- waitUntil {life_ticket_paid || (isNull (findDisplay 2600))};
- if (isNull (findDisplay 2600) && !life_ticket_paid) then {
- [0,"STR_Cop_Ticket_Refuse",true,[profileName]] remoteExecCall ["life_fnc_broadcast",west];
- [1,"STR_Cop_Ticket_Refuse",true,[profileName]] remoteExecCall ["life_fnc_broadcast",life_ticket_cop];
- };
-};
\ No newline at end of file
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_ticketPrompt
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Prompts the player that he is being ticketed.
+*/
+
+if (!isNull (findDisplay 2600)) exitWith {};
+
+params [
+ ["_cop", objNull, [objNull]],
+ ["_val", -1, [0]]
+];
+
+if (isNull _cop || {_val isEqualTo -1}) exitWith {};
+
+createDialog "life_ticket_pay";
+
+life_ticket_paid = false;
+life_ticket_val = _val;
+life_ticket_cop = _cop;
+
+CONTROL(2600,2601) ctrlSetStructuredText parseText format ["" + (localize "STR_Cop_Ticket_GUI_Given"), _cop getVariable ["realname",name _cop], _val];
+
+[] spawn {
+ waitUntil {life_ticket_paid || {isNull (findDisplay 2600)}};
+ if (isNull (findDisplay 2600) && {!life_ticket_paid}) then {
+ [0, "STR_Cop_Ticket_Refuse", true, [profileName]] remoteExecCall ["life_fnc_broadcast", west];
+ [1, "STR_Cop_Ticket_Refuse", true, [profileName]] remoteExecCall ["life_fnc_broadcast", life_ticket_cop];
+ };
+};
diff --git a/Altis_Life.Altis/core/cop/fn_vehInvSearch.sqf b/Altis_Life.Altis/core/cop/fn_vehInvSearch.sqf
index aaf4b08d5..a27e5b86f 100644
--- a/Altis_Life.Altis/core/cop/fn_vehInvSearch.sqf
+++ b/Altis_Life.Altis/core/cop/fn_vehInvSearch.sqf
@@ -1,41 +1,43 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_vehInvSearch.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Searches the vehicle for illegal items.
-*/
-private ["_vehicle","_vehicleInfo","_value","_list"];
-_vehicle = cursorObject;
-_list = ["Air","Ship","LandVehicle"];
-if (isNull _vehicle || {!(KINDOF_ARRAY(_vehicle,_list))}) exitWith {};
-
-_vehicleInfo = _vehicle getVariable ["Trunk",[]];
-if (count _vehicleInfo isEqualTo 0) exitWith {hint localize "STR_Cop_VehEmpty"};
-
-_value = 0;
-_illegalValue = 0;
-{
- _var = _x select 0;
- _val = _x select 1;
- _isIllegalItem = M_CONFIG(getNumber,"VirtualItems",_var,"illegal");
- if (_isIllegalItem isEqualTo 1 ) then{
- _illegalPrice = M_CONFIG(getNumber,"VirtualItems",_var,"sellPrice");
- if (!isNull (missionConfigFile >> "VirtualItems" >> _var >> "processedItem")) then {
- _illegalItemProcessed = M_CONFIG(getText,"VirtualItems",_var,"processedItem");
- _illegalPrice = M_CONFIG(getNumber,"VirtualItems",_illegalItemProcessed,"sellPrice");
- };
-
- _illegalValue = _illegalValue + (round(_val * _illegalPrice / 2));
- };
-} forEach (_vehicleInfo select 0);
-_value = _illegalValue;
-if (_value > 0) then {
- [0,"STR_NOTF_VehContraband",true,[[_value] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
- BANK = BANK + _value;
- [1] call SOCK_fnc_updatePartial;
- _vehicle setVariable ["Trunk",[[],0],true];
-} else {
- hint localize "STR_Cop_NoIllegalVeh";
-};
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_vehInvSearch.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Searches the vehicle for illegal items.
+*/
+
+private _vehicle = cursorObject;
+private _typeList = ["Air","Ship","LandVehicle"];
+
+if (isNull _vehicle || {!(KINDOF_ARRAY(_vehicle, _typeList))}) exitWith {};
+
+private _vehicleInfo = _vehicle getVariable ["Trunk",[]];
+if (_vehicleInfo isEqualTo []) exitWith {hint localize "STR_Cop_VehEmpty"};
+_vehicleInfo params ["_items"];
+
+private _value = 0;
+private _illegalValue = 0;
+{
+ _x params ["_var", "_val"];
+ private _isIllegalItem = M_CONFIG(getNumber,"VirtualItems",_var,"illegal");
+ if (_isIllegalItem isEqualTo 1) then {
+ private _illegalPrice = M_CONFIG(getNumber,"VirtualItems",_var,"sellPrice");
+ if !(isNull (missionConfigFile >> "VirtualItems" >> _var >> "processedItem")) then {
+ private _illegalItemProcessed = M_CONFIG(getText,"VirtualItems",_var,"processedItem");
+ _illegalPrice = M_CONFIG(getNumber,"VirtualItems",_illegalItemProcessed,"sellPrice");
+ };
+
+ _illegalValue = _illegalValue + round(_val * _illegalPrice / 2);
+ };
+ true
+} count _items;
+
+if (_illegalValue > 0) then {
+ [0, "STR_NOTF_VehContraband", true, [[_illegalValue] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast", RCLIENT];
+ BANK = BANK + _illegalValue;
+ [1] call SOCK_fnc_updatePartial;
+ _vehicle setVariable ["Trunk", [[],0], true];
+} else {
+ hint localize "STR_Cop_NoIllegalVeh";
+};
diff --git a/Altis_Life.Altis/core/cop/fn_wantedGrab.sqf b/Altis_Life.Altis/core/cop/fn_wantedGrab.sqf
index deaa3587c..f8c1a7841 100644
--- a/Altis_Life.Altis/core/cop/fn_wantedGrab.sqf
+++ b/Altis_Life.Altis/core/cop/fn_wantedGrab.sqf
@@ -6,16 +6,18 @@
Description:
Prepare the array to query the crimes.
*/
-private ["_display","_tab","_criminal"];
+
disableSerialization;
-_display = findDisplay 2400;
-_tab = _display displayCtrl 2402;
-_criminal = lbData[2401,(lbCurSel 2401)];
+
+private _display = findDisplay 2400;
+private _tab = _display displayCtrl 2402;
+private _criminal = lbData[2401,(lbCurSel 2401)];
_criminal = call compile format ["%1", _criminal];
+
if (isNil "_criminal") exitWith {};
if (life_HC_isActive) then {
- [player,_criminal] remoteExec ["HC_fnc_wantedCrimes",HC_Life];
+ [player,_criminal] remoteExec ["HC_fnc_wantedCrimes", HC_Life];
} else {
- [player,_criminal] remoteExec ["life_fnc_wantedCrimes",RSERV];
+ [player,_criminal] remoteExec ["life_fnc_wantedCrimes", RSERV];
};
diff --git a/Altis_Life.Altis/core/fn_initCiv.sqf b/Altis_Life.Altis/core/fn_initCiv.sqf
index fa922a0ee..3d8ef9e55 100644
--- a/Altis_Life.Altis/core/fn_initCiv.sqf
+++ b/Altis_Life.Altis/core/fn_initCiv.sqf
@@ -8,7 +8,7 @@
*/
private _altisArray = ["Land_i_Shop_01_V1_F","Land_i_Shop_01_V2_F","Land_i_Shop_01_V3_F","Land_i_Shop_02_V1_F","Land_i_Shop_02_V2_F","Land_i_Shop_02_V3_F"];
private _tanoaArray = ["Land_House_Small_01_F"];
-private _spawnBuildings = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+private _spawnBuildings = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
civ_spawn_1 = nearestObjects[getMarkerPos "civ_spawn_1", _spawnBuildings,350];
civ_spawn_2 = nearestObjects[getMarkerPos "civ_spawn_2", _spawnBuildings,350];
diff --git a/Altis_Life.Altis/core/fn_setupEVH.sqf b/Altis_Life.Altis/core/fn_setupEVH.sqf
index 67707de38..ace441f9a 100644
--- a/Altis_Life.Altis/core/fn_setupEVH.sqf
+++ b/Altis_Life.Altis/core/fn_setupEVH.sqf
@@ -14,4 +14,9 @@ player addEventHandler ["InventoryClosed", {_this call life_fnc_inventoryClosed}
player addEventHandler ["InventoryOpened", {_this call life_fnc_inventoryOpened}];
player addEventHandler ["HandleRating", {0}];
+player addEventHandler ["GetInMan", {_this call life_fnc_getInMan}];
+player addEventHandler ["GetOutMan", {_this call life_fnc_getOutMan}];
+
addMissionEventHandler ["Map", {_this call life_fnc_checkMap}];
+
+[missionNamespace,"OnGameInterrupt",{_this call life_fnc_onGameInterrupt}] call BIS_fnc_addScriptedEventHandler;
diff --git a/Altis_Life.Altis/core/fn_setupStationService.sqf b/Altis_Life.Altis/core/fn_setupStationService.sqf
index 6512588b8..ff4d2fd23 100644
--- a/Altis_Life.Altis/core/fn_setupStationService.sqf
+++ b/Altis_Life.Altis/core/fn_setupStationService.sqf
@@ -150,7 +150,7 @@ private _tanoaPositions = [
[11637.2,13052.8,-0.228891]
];
-private _stationPositions = [[["Altis", _altisPositions], ["Tanoa", _tanoaPositions]]] call TON_fnc_terrainSort;
+private _stationPositions = [[["Altis", _altisPositions], ["Tanoa", _tanoaPositions]]] call life_util_fnc_terrainSort;
{
private _pump = nearestObjects [_x,["Land_fs_feed_F","Land_FuelStation_01_pump_F","Land_FuelStation_02_pump_F"],5] select 0;
diff --git a/Altis_Life.Altis/core/fn_survival.sqf b/Altis_Life.Altis/core/fn_survival.sqf
index 0b207e985..cb39a1f33 100644
--- a/Altis_Life.Altis/core/fn_survival.sqf
+++ b/Altis_Life.Altis/core/fn_survival.sqf
@@ -46,19 +46,37 @@ _fnc_water = {
};
};
+private _fnc_paycheck = {
+ if (alive player) then {
+ private _paycheck = call life_paycheck;
+ if (player distance (getMarkerPos "fed_reserve") < 120 && playerSide isEqualTo west) then {
+ systemChat format [localize "STR_ReceivedPay",[_paycheck + 1500] call life_fnc_numberText];
+ BANK = BANK + _paycheck + 1500;
+ } else {
+ BANK = BANK + _paycheck;
+ systemChat format [localize "STR_ReceivedPay",[_paycheck] call life_fnc_numberText];
+ };
+ } else {
+ systemChat localize "STR_MissedPay";
+ };
+ systemChat format [localize "STR_FSM_Paycheck",(getNumber(missionConfigFile >> "Life_Settings" >> "paycheck_period"))];
+};
+
//Setup the time-based variables.
_foodTime = time;
_waterTime = time;
+private _paycheckTime = time;
+private _paycheckPeriod = (getNumber(missionConfigFile >> "Life_Settings" >> "paycheck_period")) * 60;
_walkDis = 0;
_bp = "";
_lastPos = visiblePosition player;
_lastPos = (_lastPos select 0) + (_lastPos select 1);
-_lastState = vehicle player;
for "_i" from 0 to 1 step 0 do {
/* Thirst / Hunger adjustment that is time based */
if ((time - _waterTime) > 600 && {!life_god}) then {[] call _fnc_water; _waterTime = time;};
if ((time - _foodTime) > 850 && {!life_god}) then {[] call _fnc_food; _foodTime = time;};
+ if ((time - _paycheckTime) > _paycheckPeriod) then {[] call _fnc_paycheck; _paycheckTime = time};
/* Adjustment of carrying capacity based on backpack changes */
if (backpack player isEqualTo "") then {
@@ -71,12 +89,6 @@ for "_i" from 0 to 1 step 0 do {
};
};
- /* Check if the player's state changed? */
- if (!(vehicle player isEqualTo _lastState) || {!alive player}) then {
- [] call life_fnc_updateViewDistance;
- _lastState = vehicle player;
- };
-
/* Check if the weight has changed and the player is carrying to much */
if (life_carryWeight > life_maxWeight && {!isForcedWalk player} && {!life_god}) then {
player forceWalk true;
diff --git a/Altis_Life.Altis/core/fsm/client.fsm b/Altis_Life.Altis/core/fsm/client.fsm
deleted file mode 100644
index f064b1b8f..000000000
--- a/Altis_Life.Altis/core/fsm/client.fsm
+++ /dev/null
@@ -1,94 +0,0 @@
-/*%FSM*/
-/*%FSM*/
-/*
-item0[] = {"Main_Init",0,250,-40.348839,-141.279068,49.651161,-91.279068,0.000000,"Main Init"};
-item1[] = {"true",8,218,-39.994308,-65.712906,50.005692,-15.712896,0.000000,"true"};
-item2[] = {"Split",2,4346,-39.994308,10.874098,50.005707,60.874100,0.000000,"Split"};
-item3[] = {"Time_to_pay_",4,218,-168.727005,-14.470595,-78.726974,35.529457,0.000000,"Time to pay?"};
-link0[] = {0,1};
-link1[] = {1,2};
-link2[] = {2,3};
-link3[] = {3,2};
-globals[] = {0.000000,0,0,0,0,640,480,1,26,6316128,1,-456.200378,358.065338,379.837494,-151.171021,1032,673,1};
-window[] = {0,-1,-1,-1,-1,893,75,1515,75,1,1050};
-*//*%FSM*/
-class FSM
-{
- fsmName = "Life Client FSM";
- class States
- {
- /*%FSM*/
- class Main_Init
- {
- name = "Main_Init";
- init = /*%FSM*/"private [""_lastcheck"",""_food"",""_water"",""_lastsync""];" \n
- "_lastcheck = time;" \n
- "_food = time;" \n
- "_water = time;" \n
- "_lastsync = time;"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class true
- {
- priority = 0.000000;
- to="Split";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"true"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Split
- {
- name = "Split";
- init = /*%FSM*/"systemChat format [localize ""STR_FSM_Paycheck"",(getNumber(missionConfigFile >> ""Life_Settings"" >> ""paycheck_period""))];"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class Time_to_pay_
- {
- priority = 0.000000;
- to="Split";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"(time - _lastcheck) > ((getNumber(missionConfigFile >> ""Life_Settings"" >> ""paycheck_period"")) * 60)"/*%FSM*/;
- action=/*%FSM*/"if (!alive player) then {" \n
- " systemChat localize ""STR_FSM_MissedPay"";" \n
- "} else {" \n
- " if (player distance (getMarkerPos ""fed_reserve"") < 120 && playerSide isEqualTo west) then {" \n
- " systemChat format [localize ""STR_FSM_ReceivedPay"",[(call life_paycheck) + 1500] call life_fnc_numberText];" \n
- " life_atmbank = life_atmbank + (call life_paycheck) + 1500;" \n
- " } else {" \n
- " life_atmbank = life_atmbank + (call life_paycheck);" \n
- " systemChat format [localize ""STR_FSM_ReceivedPay"",[(call life_paycheck)] call life_fnc_numberText];" \n
- " };" \n
- "};" \n
- "" \n
- "_lastcheck = time;" \n
- "" \n
- "//Group clean (Local)" \n
- "{" \n
- " if (local _x && {(units _x isEqualTo [])}) then {" \n
- " deleteGroup _x;" \n
- " };" \n
- "} forEach allGroups;" \n
- "" \n
- "" \n
- ""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- };
- initState="Main_Init";
- finalStates[] =
- {
- };
-};
-/*%FSM*/
diff --git a/Altis_Life.Altis/core/fsm/timeModule.fsm b/Altis_Life.Altis/core/fsm/timeModule.fsm
deleted file mode 100644
index 06e46776d..000000000
--- a/Altis_Life.Altis/core/fsm/timeModule.fsm
+++ /dev/null
@@ -1,108 +0,0 @@
-/*%FSM*/
-/*%FSM*/
-/*
-item0[] = {"Init",0,250,375.000000,0.000000,475.000000,50.000000,0.000000,"Init"};
-item1[] = {"isServer",4,218,375.000000,75.000000,475.000000,125.000000,0.000000,"isServer"};
-item2[] = {"Apply_Time_Multi",2,250,375.000000,150.000000,475.000000,200.000000,0.000000,"Apply Time" \n "Multiplier"};
-item3[] = {"Opposite_Sunstat",4,4314,500.000000,200.000000,600.000000,250.000000,0.000000,"Opposite" \n "Sunstate"};
-item4[] = {"",7,210,421.000000,221.000000,429.000000,229.000000,0.000000,""};
-item5[] = {"",7,210,546.000000,171.000000,554.000000,179.000000,0.000000,""};
-item6[] = {"Linear_Multiplie",4,218,250.000000,150.000000,350.000000,200.000000,1.000000,"Linear" \n "Multiplier"};
-item7[] = {"Exit",1,250,125.000000,150.000000,225.000000,200.000000,0.000000,"Exit"};
-link0[] = {0,1};
-link1[] = {1,2};
-link2[] = {2,4};
-link3[] = {2,6};
-link4[] = {3,5};
-link5[] = {4,3};
-link6[] = {5,2};
-link7[] = {6,7};
-globals[] = {25.000000,1,0,0,0,640,480,1,10,6316128,1,-179.640472,752.478394,458.482788,-385.274109,1403,1270,1};
-window[] = {2,-1,-1,-1,-1,1020,260,1700,260,3,1421};
-*//*%FSM*/
-class FSM
-{
- fsmName = "timeModules.fsm : Altis Life";
- class States
- {
- /*%FSM*/
- class Init
- {
- name = "Init";
- init = /*%FSM*/"private [""_skipDay"", ""_skipNight"", ""_method"", ""_fastNight"", ""_sunState""];" \n
- "_skipDay = [_this,0,8,[0]] call BIS_fnc_param;" \n
- "_fastNight = [_this,1,false,[true]] call BIS_fnc_param;" \n
- "_skipNight = [_this,2,12,[0]] call BIS_fnc_param;"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class isServer
- {
- priority = 0.000000;
- to="Apply_Time_Multi";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"isServer"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Apply_Time_Multi
- {
- name = "Apply_Time_Multi";
- init = /*%FSM*/"if (_fastNight && {sunOrMoon isEqualTo 0}) then {" \n
- " setTimeMultiplier _skipNight;" \n
- "} else {" \n
- " setTimeMultiplier _skipDay;" \n
- "};" \n
- "" \n
- "private ""_sunState"";" \n
- "_sunState = sunOrMoon;"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class Linear_Multiplie
- {
- priority = 1.000000;
- to="Exit";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"!_fastNight"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- /*%FSM*/
- class Opposite_Sunstat
- {
- priority = 0.000000;
- to="Apply_Time_Multi";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"sunOrMoon isEqualTo 1 - _sunState"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Exit
- {
- name = "Exit";
- init = /*%FSM*/""/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- };
- };
- /*%FSM*/
- };
- initState="Init";
- finalStates[] =
- {
- "Exit",
- };
-};
-/*%FSM*/
diff --git a/Altis_Life.Altis/core/functions/fn_actionKeyHandler.sqf b/Altis_Life.Altis/core/functions/fn_actionKeyHandler.sqf
index 467288252..a5b528656 100644
--- a/Altis_Life.Altis/core/functions/fn_actionKeyHandler.sqf
+++ b/Altis_Life.Altis/core/functions/fn_actionKeyHandler.sqf
@@ -1,124 +1,114 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_actionKeyHandler.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Master action key handler, handles requests for picking up various items and
- interacting with other players (Cops = Cop Menu for unrestrain,escort,stop escort, arrest (if near cop hq), etc).
-*/
-private ["_curObject","_isWater","_CrateModelNames","_crate","_fish","_animal","_whatIsIt","_handle"];
-_curObject = cursorObject;
-if (life_action_inUse) exitWith {}; //Action is in use, exit to prevent spamming.
-if (life_interrupted) exitWith {life_interrupted = false;};
-_isWater = surfaceIsWater (visiblePositionASL player);
-
-if (playerSide isEqualTo west && {player getVariable ["isEscorting",false]}) exitWith {
- [] call life_fnc_copInteractionMenu;
-};
-
-if (LIFE_SETTINGS(getNumber,"global_ATM") isEqualTo 1) then{
- //Check if the player is near an ATM.
- if ((call life_fnc_nearATM) && {!dialog}) exitWith {
- [] call life_fnc_atmMenu;
- };
-};
-
-if (isNull _curObject) exitWith {
- if (_isWater) then {
- _fish = (nearestObjects[player,(LIFE_SETTINGS(getArray,"animaltypes_fish")),3]) select 0;
- if (!isNil "_fish") then {
- if (!alive _fish) then {
- [_fish] call life_fnc_catchFish;
- };
- };
- } else {
- _animal = (nearestObjects[player,(LIFE_SETTINGS(getArray,"animaltypes_hunting")),3]) select 0;
- if (!isNil "_animal") then {
- if (!alive _animal) then {
- [_animal] call life_fnc_gutAnimal;
- };
- } else {
- private "_handle";
- if (playerSide isEqualTo civilian && !life_action_gathering) then {
- _whatIsIt = [] call life_fnc_whereAmI;
- if (life_action_gathering) exitWith {}; //Action is in use, exit to prevent spamming.
- switch (_whatIsIt) do {
- case "mine" : { _handle = [] spawn life_fnc_mine };
- default { _handle = [] spawn life_fnc_gather };
- };
- life_action_gathering = true;
- waitUntil {scriptDone _handle};
- life_action_gathering = false;
- };
- };
- };
-};
-
-if ((_curObject isKindOf "B_supplyCrate_F" || _curObject isKindOf "Box_IND_Grenades_F") && {player distance _curObject < 3} ) exitWith {
- if (alive _curObject) then {
- [_curObject] call life_fnc_containerMenu;
- };
-};
-
-private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
-private _altisArray = [16019.5,16952.9,0];
-private _tanoaArray = [11074.2,11501.5,0.00137329];
-private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
-
-if (_curObject isKindOf "House_F" && {player distance _curObject < 12} || ((nearestObject [_pos,"Land_Dome_Big_F"]) isEqualTo _curObject || (nearestObject [_pos,_vaultHouse]) isEqualTo _curObject)) exitWith {
- [_curObject] call life_fnc_houseMenu;
-};
-
-if (dialog) exitWith {}; //Don't bother when a dialog is open.
-if !(isNull objectParent player) exitWith {}; //He's in a vehicle, cancel!
-life_action_inUse = true;
-
-//Temp fail safe.
-[] spawn {
- sleep 60;
- life_action_inUse = false;
-};
-
-//Check if it's a dead body.
-if (_curObject isKindOf "CAManBase" && {!alive _curObject}) exitWith {
- //Hotfix code by ins0
- if ((playerSide isEqualTo west && {(LIFE_SETTINGS(getNumber,"revive_cops") isEqualTo 1)}) || {(playerSide isEqualTo civilian && {(LIFE_SETTINGS(getNumber,"revive_civ") isEqualTo 1)})} || {(playerSide isEqualTo east && {(LIFE_SETTINGS(getNumber,"revive_east") isEqualTo 1)})} || {playerSide isEqualTo independent}) then {
- if (life_inv_defibrillator > 0) then {
- [_curObject] call life_fnc_revivePlayer;
- };
- };
-};
-
-//If target is a player then check if we can use the cop menu.
-if (isPlayer _curObject && _curObject isKindOf "CAManBase") then {
- if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then {
- [_curObject] call life_fnc_copInteractionMenu;
- };
-} else {
- //OK, it wasn't a player so what is it?
- private ["_isVehicle","_miscItems","_money","_list"];
-
- _list = ["landVehicle","Ship","Air"];
- _isVehicle = if (KINDOF_ARRAY(_curObject,_list)) then {true} else {false};
- _miscItems = ["Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F","Land_Suitcase_F"];
-
- //It's a vehicle! open the vehicle interaction key!
- if (_isVehicle) then {
- if (!dialog) then {
- if (player distance _curObject < ((boundingBox _curObject select 1) select 0)+2 && (!(player getVariable ["restrained",false])) && (!(player getVariable ["playerSurrender",false])) && !life_isknocked && !life_istazed) then {
- [_curObject] call life_fnc_vInteractionMenu;
- };
- };
- } else {
- //OK, it wasn't a vehicle so let's see what else it could be?
- if ((typeOf _curObject) in _miscItems) then {
- [_curObject,player,false] remoteExecCall ["TON_fnc_pickupAction",RSERV];
- } else {
- //It wasn't a misc item so is it money?
- if ((typeOf _curObject) isEqualTo "Land_Money_F" && {!(_curObject getVariable ["inUse",false])}) then {
- [_curObject,player,true] remoteExecCall ["TON_fnc_pickupAction",RSERV];
- };
- };
- };
-};
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_actionKeyHandler.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Master action key handler, handles requests for picking up various items and
+ interacting with other players (Cops = Cop Menu for unrestrain,escort,stop escort, arrest (if near cop hq), etc).
+*/
+private _curObject = cursorObject;
+if (life_action_inUse) exitWith {}; //Action is in use, exit to prevent spamming.
+if (life_interrupted) exitWith {life_interrupted = false;};
+private _isWater = surfaceIsWater (visiblePositionASL player);
+
+if (playerSide isEqualTo west && {player getVariable ["isEscorting",false]}) exitWith {
+ [] call life_fnc_copInteractionMenu;
+};
+
+if (LIFE_SETTINGS(getNumber,"global_ATM") isEqualTo 1) then{
+ //Check if the player is near an ATM.
+ if ((call life_fnc_nearATM) && {!dialog}) exitWith {
+ [] call life_fnc_atmMenu;
+ };
+};
+
+if (isNull _curObject) exitWith {
+ if (_isWater) then {
+ (nearestObjects[player,(LIFE_SETTINGS(getArray,"animaltypes_fish")),3]) params [["_fish", objNull]];
+ if !(alive _fish) then { //alive also checks for objNull
+ [_fish] call life_fnc_catchFish;
+ };
+ } else {
+ (nearestObjects[player,(LIFE_SETTINGS(getArray,"animaltypes_hunting")),3]) params [["_animal", objNull]];
+ if !(isNull _animal) then {
+ if !(alive _animal) then {
+ [_animal] call life_fnc_gutAnimal;
+ };
+ } else {
+ if (playerSide isEqualTo civilian && !life_action_inUse) then {
+ private _whatIsIt = [] call life_fnc_whereAmI;
+ switch _whatIsIt do {
+ case "mine": {[] spawn life_fnc_mine};
+ default {[] spawn life_fnc_gather};
+ };
+ };
+ };
+ };
+};
+
+if ((_curObject isKindOf "B_supplyCrate_F" || _curObject isKindOf "Box_IND_Grenades_F") && {player distance _curObject < 3}) exitWith {
+ if (alive _curObject) then {
+ [_curObject] call life_fnc_containerMenu;
+ };
+};
+
+private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call life_util_fnc_terrainSort;
+private _altisArray = [16019.5,16952.9,0];
+private _tanoaArray = [11074.2,11501.5,0.00137329];
+private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
+
+if (_curObject isKindOf "House_F" && {player distance _curObject < 12} || ((nearestObject [_pos,"Land_Dome_Big_F"]) isEqualTo _curObject || (nearestObject [_pos,_vaultHouse]) isEqualTo _curObject)) exitWith {
+ [_curObject] call life_fnc_houseMenu;
+};
+
+if (dialog) exitWith {}; //Don't bother when a dialog is open.
+if !(isNull objectParent player) exitWith {}; //He's in a vehicle, cancel!
+life_action_inUse = true;
+
+//Temp fail safe.
+[] spawn {
+ sleep 60;
+ life_action_inUse = false;
+};
+
+//Check if it's a dead body.
+if (_curObject isKindOf "CAManBase" && {!alive _curObject}) exitWith {
+ //Hotfix code by ins0
+ if ((playerSide isEqualTo west && {(LIFE_SETTINGS(getNumber,"revive_cops") isEqualTo 1)}) || {(playerSide isEqualTo civilian && {(LIFE_SETTINGS(getNumber,"revive_civ") isEqualTo 1)})} || {(playerSide isEqualTo east && {(LIFE_SETTINGS(getNumber,"revive_east") isEqualTo 1)})} || {playerSide isEqualTo independent}) then {
+ if (life_inv_defibrillator > 0) then {
+ [_curObject] call life_fnc_revivePlayer;
+ };
+ };
+};
+
+//If target is a player then check if we can use the cop menu.
+if (isPlayer _curObject && _curObject isKindOf "CAManBase") then {
+ if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then {
+ [_curObject] call life_fnc_copInteractionMenu;
+ };
+//OK, it wasn't a player so what is it?
+} else {
+ private _list = ["landVehicle","Ship","Air"];
+ private _isVehicle = if (KINDOF_ARRAY(_curObject,_list)) then {true} else {false};
+ private _miscItems = ["Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F","Land_Suitcase_F"];
+
+ //It's a vehicle! open the vehicle interaction key!
+ if (_isVehicle) then {
+ if (!dialog) then {
+ if (player distance _curObject < ((boundingBox _curObject select 1) select 0)+2 && (!(player getVariable ["restrained",false])) && (!(player getVariable ["playerSurrender",false])) && !life_isknocked && !life_istazed) then {
+ [_curObject] call life_fnc_vInteractionMenu;
+ };
+ };
+ } else {
+ //OK, it wasn't a vehicle so let's see what else it could be?
+ if ((typeOf _curObject) in _miscItems) then {
+ [_curObject,player,false] remoteExecCall ["TON_fnc_pickupAction",RSERV];
+ } else {
+ //It wasn't a misc item so is it money?
+ if ((typeOf _curObject) isEqualTo "Land_Money_F" && {!(_curObject getVariable ["inUse",false])}) then {
+ [_curObject,player,true] remoteExecCall ["TON_fnc_pickupAction",RSERV];
+ };
+ };
+ };
+};
diff --git a/Altis_Life.Altis/core/functions/fn_escInterupt.sqf b/Altis_Life.Altis/core/functions/fn_escInterupt.sqf
deleted file mode 100644
index d7bf904ad..000000000
--- a/Altis_Life.Altis/core/functions/fn_escInterupt.sqf
+++ /dev/null
@@ -1,69 +0,0 @@
-#include "..\..\script_macros.hpp"
-
-/*
- File: fn_escInterupt.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Monitors when the ESC menu is pulled up and blocks off
- certain controls when conditions meet.
-*/
-disableSerialization;
-
-private _escSync = {
- disableSerialization;
- private _abortButton = CONTROL(49,104);
- private _abortTime = LIFE_SETTINGS(getNumber,"escapeMenu_timer");
- private _timeStamp = time + _abortTime;
-
- waitUntil {
- _abortButton ctrlSetText format [localize "STR_NOTF_AbortESC",[(_timeStamp - time),"SS.MS"] call BIS_fnc_secondsToString];
- _abortButton ctrlCommit 0;
- if (dialog && {isNull (findDisplay 7300)}) then {closeDialog 0};
-
- round(_timeStamp - time) <= 0 || {isNull (findDisplay 49)}
- };
-
- _abortButton ctrlSetText localize "STR_DISP_INT_ABORT";
- _abortButton ctrlCommit 0;
- _abortButton ctrlEnable true;
-};
-
-private _canUseControls = {
- (playerSide isEqualTo west) || {!((player getVariable ["restrained",false]) || {player getVariable ["Escorting",false]} || {player getVariable ["transporting",false]} || {life_is_arrested} || {life_istazed} || {life_isknocked})}
-};
-
-for "_i" from 0 to 1 step 0 do {
- waitUntil {!isNull (findDisplay 49)};
- private _abortButton = CONTROL(49,104);
- _abortButton buttonSetAction "call SOCK_fnc_updateRequest; [player] remoteExec [""TON_fnc_cleanupRequest"",2];";
- private _respawnButton = CONTROL(49,1010);
- private _fieldManual = CONTROL(49,122);
- private _saveButton = CONTROL(49,103);
- _saveButton ctrlSetText "";
-
- //Extras
- if (LIFE_SETTINGS(getNumber,"escapeMenu_displayExtras") isEqualTo 1) then {
- private _topButton = CONTROL(49,2);
- _topButton ctrlEnable false;
- _topButton ctrlSetText format ["%1",LIFE_SETTINGS(getText,"escapeMenu_displayText")];
- _saveButton ctrlEnable false;
- _saveButton ctrlSetText format ["Player UID: %1",getPlayerUID player];
- };
-
- //Block off our buttons first.
- _abortButton ctrlEnable false;
- _fieldManual ctrlEnable false; //Never re-enable, blocks an old script executor.
- _fieldManual ctrlShow false;
-
- if (call _canUseControls) then {
- [] spawn _escSync;
- } else {
- _respawnButton ctrlEnable false;
- };
-
- waitUntil {isNull (findDisplay 49) || {!alive player}};
- if (!isNull (findDisplay 49) && {!alive player}) then {
- (findDisplay 49) closeDisplay 2;
- };
-};
diff --git a/Altis_Life.Altis/core/functions/fn_getInMan.sqf b/Altis_Life.Altis/core/functions/fn_getInMan.sqf
new file mode 100644
index 000000000..21a212461
--- /dev/null
+++ b/Altis_Life.Altis/core/functions/fn_getInMan.sqf
@@ -0,0 +1,16 @@
+/*
+ File: fn_getInMan.sqf
+ Author: blackfisch
+
+ Description:
+ Handles player entering a vehicle.
+*/
+params [
+ ["_unit", objNull, [objNull]],
+ ["_role", "", [""]],
+ ["_vehicle", objNull, [objNull]],
+ ["_turret", [], [[]]]
+];
+
+//update view distance settings
+[] call life_fnc_updateViewDistance;
diff --git a/Altis_Life.Altis/core/functions/fn_getOutMan.sqf b/Altis_Life.Altis/core/functions/fn_getOutMan.sqf
new file mode 100644
index 000000000..f498fabde
--- /dev/null
+++ b/Altis_Life.Altis/core/functions/fn_getOutMan.sqf
@@ -0,0 +1,16 @@
+/*
+ File: fn_getOutMan.sqf
+ Author: blackfisch
+
+ Description:
+ Handles player leaving a vehicle.
+*/
+params [
+ ["_unit", objNull, [objNull]],
+ ["_role", "", [""]],
+ ["_vehicle", objNull, [objNull]],
+ ["_turret", [], [[]]]
+];
+
+//update view distance settings
+[] call life_fnc_updateViewDistance;
diff --git a/Altis_Life.Altis/core/functions/fn_hudSetup.sqf b/Altis_Life.Altis/core/functions/fn_hudSetup.sqf
deleted file mode 100644
index 7510277e2..000000000
--- a/Altis_Life.Altis/core/functions/fn_hudSetup.sqf
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_hudSetup.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Setups the hud for the player?
-*/
-disableSerialization;
-
-cutRsc ["playerHUD", "PLAIN", 2, false];
-[] call life_fnc_hudUpdate;
-
-[] spawn
-{
- private ["_dam"];
- for "_i" from 0 to 1 step 0 do {
- _dam = damage player;
- waitUntil {!((damage player) isEqualTo _dam)};
- [] call life_fnc_hudUpdate;
- };
-};
diff --git a/Altis_Life.Altis/core/functions/fn_hudUpdate.sqf b/Altis_Life.Altis/core/functions/fn_hudUpdate.sqf
index 1590b2547..03b1e50d9 100644
--- a/Altis_Life.Altis/core/functions/fn_hudUpdate.sqf
+++ b/Altis_Life.Altis/core/functions/fn_hudUpdate.sqf
@@ -8,7 +8,9 @@
*/
disableSerialization;
-if (isNull LIFEdisplay) then {[] call life_fnc_hudSetup;};
+if (isNull LIFEdisplay) then {
+ cutRsc ["playerHUD", "PLAIN", 2, false];
+};
LIFEctrl(2200) progressSetPosition (life_hunger / 100);
LIFEctrl(2201) progressSetPosition (1 - (damage player));
LIFEctrl(2202) progressSetPosition (life_thirst / 100);
diff --git a/Altis_Life.Altis/core/functions/fn_inventoryOpened.sqf b/Altis_Life.Altis/core/functions/fn_inventoryOpened.sqf
index c715c2d00..49b84d84b 100644
--- a/Altis_Life.Altis/core/functions/fn_inventoryOpened.sqf
+++ b/Altis_Life.Altis/core/functions/fn_inventoryOpened.sqf
@@ -46,3 +46,11 @@ private _list = ["LandVehicle", "Ship", "Air"];
true breakOut "main";
};
} count [_container, _secContainer];
+
+[] spawn {
+ private _startTime = time;
+ waitUntil {!(isNull (findDisplay 49)) || time > (_startTime + 2.5)};
+ if !(isNull (findDisplay 49)) then {
+ (findDisplay 49) closeDisplay 2; //close Esc dialog
+ };
+};
\ No newline at end of file
diff --git a/Altis_Life.Altis/core/functions/fn_onGameInterrupt.sqf b/Altis_Life.Altis/core/functions/fn_onGameInterrupt.sqf
new file mode 100644
index 000000000..7506a4368
--- /dev/null
+++ b/Altis_Life.Altis/core/functions/fn_onGameInterrupt.sqf
@@ -0,0 +1,47 @@
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_onGameInterrupt.sqf
+ Author: DomT602
+ Description: Handles game interuptions - ie when esc menu is opened.
+*/
+params [
+ ["_display",displayNull,[displayNull]]
+];
+
+private _abortButton = _display displayCtrl 104;
+private _respawnButton = _display displayCtrl 1010;
+private _fieldManual = _display displayCtrl 122;
+private _saveButton = _display displayCtrl 103;
+private _topButton = _display displayCtrl 2;
+
+_abortButton ctrlEnable false;
+_abortButton buttonSetAction "call SOCK_fnc_updateRequest; [player] remoteExec [""TON_fnc_cleanupRequest"",2];";
+_fieldManual ctrlEnable false;
+_saveButton ctrlEnable false;
+
+if (LIFE_SETTINGS(getNumber,"escapeMenu_displayExtras") isEqualTo 1) then {
+ _topButton ctrlEnable false;
+ _topButton ctrlSetText (LIFE_SETTINGS(getText,"escapeMenu_displayText"));
+ _saveButton ctrlSetText format ["Player UID: %1",getPlayerUID player];
+};
+
+private _conditions = playerSide isEqualTo west || {!((player getVariable ["restrained",false]) || {player getVariable ["Escorting",false]} || {player getVariable ["transporting",false]} || {life_is_arrested} || {life_istazed} || {life_isknocked})};
+if (_conditions) then {
+ [_display,_abortButton] spawn {
+ params ["_display","_abortButton"];
+ private _abortTime = LIFE_SETTINGS(getNumber,"escapeMenu_timer");
+ private _timeStamp = time + _abortTime;
+
+ waitUntil {
+ _abortButton ctrlSetText format [localize "STR_NOTF_AbortESC",[(_timeStamp - time),"SS.MS"] call BIS_fnc_secondsToString];
+ if (dialog && {isNull (findDisplay 7300)}) then {closeDialog 0};
+
+ (_timeStamp - time) <= 0 || {isNull _display || {!alive player}}
+ };
+ if (!alive player) exitWith {};
+ _abortButton ctrlSetText localize "STR_DISP_INT_ABORT";
+ _abortButton ctrlEnable true;
+ };
+} else {
+ _respawnButton ctrlEnable false;
+};
\ No newline at end of file
diff --git a/Altis_Life.Altis/core/functions/fn_playerTags.sqf b/Altis_Life.Altis/core/functions/fn_playerTags.sqf
index bc8bc4134..9dd15ef7b 100644
--- a/Altis_Life.Altis/core/functions/fn_playerTags.sqf
+++ b/Altis_Life.Altis/core/functions/fn_playerTags.sqf
@@ -6,8 +6,6 @@
Description:
Adds the tags above other players heads when close and have visible range.
*/
-if (!life_settings_tagson) exitWith {};
-private ["_ui","_units","_masks"];
#define iconID 78000
#define scale 0.8
@@ -15,16 +13,16 @@ if (visibleMap || {!alive player} || {dialog}) exitWith {
500 cutText["","PLAIN"];
};
-_ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull];
+private _ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull];
if (isNull _ui) then {
500 cutRsc["Life_HUD_nameTags","PLAIN"];
_ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull];
};
-_units = nearestObjects[(visiblePosition player),["CAManBase","Land_Pallet_MilBoxes_F","Land_Sink_F"],50];
+private _units = nearestObjects[(visiblePosition player),["CAManBase","Land_Pallet_MilBoxes_F","Land_Sink_F"],50];
_units = _units - [player];
-_masks = LIFE_SETTINGS(getArray,"clothing_masks");
+private _masks = LIFE_SETTINGS(getArray,"clothing_masks");
private _index = -1;
{
diff --git a/Altis_Life.Altis/core/functions/fn_receiveMoney.sqf b/Altis_Life.Altis/core/functions/fn_receiveMoney.sqf
index 68954f5c4..d9b8d968a 100644
--- a/Altis_Life.Altis/core/functions/fn_receiveMoney.sqf
+++ b/Altis_Life.Altis/core/functions/fn_receiveMoney.sqf
@@ -15,7 +15,7 @@ params [
if (isNull _unit || isNull _from || _val isEqualTo "") exitWith {};
if !(player isEqualTo _unit) exitWith {};
-if (!([_val] call TON_fnc_isnumber)) exitWith {};
+if (!([_val] call life_util_fnc_isNumber)) exitWith {};
if (_unit == _from) exitWith {}; //Bad boy, trying to exploit his way to riches.
hint format [localize "STR_NOTF_GivenMoney",_from getVariable ["realname",name _from],[(parseNumber (_val))] call life_fnc_numberText];
diff --git a/Altis_Life.Altis/core/functions/fn_revealObjects.sqf b/Altis_Life.Altis/core/functions/fn_revealObjects.sqf
index 075dfa6e5..d3f36315a 100644
--- a/Altis_Life.Altis/core/functions/fn_revealObjects.sqf
+++ b/Altis_Life.Altis/core/functions/fn_revealObjects.sqf
@@ -8,8 +8,6 @@
Can be taxing on low-end systems or AMD CPU users.
*/
-if (!life_settings_revealObjects) exitWith {};
-
private _objects = nearestObjects[visiblePositionASL player, ["Land_CargoBox_V1_F","Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F","Land_Money_F","Land_Suitcase_F","CAManBase"], 15];
{
player reveal _x;
diff --git a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf
index 2a6b38e32..d7f6b2859 100644
--- a/Altis_Life.Altis/core/functions/fn_startLoadout.sqf
+++ b/Altis_Life.Altis/core/functions/fn_startLoadout.sqf
@@ -1,37 +1,37 @@
-#include "..\..\script_macros.hpp"
-/*
- File: fn_startLoadout.sqf
- Author: Casperento
-
- Description:
- Loads a custom loadout on player when he got a new life
-*/
-private _side = call {
- if (playerSide isEqualTo civilian) exitWith {"civ"};
- if (playerSide isEqualTo west) exitWith {"cop"};
- if (playerSide isEqualTo independent) exitWith {"med"};
- if (playerSide isEqualTo east) exitWith {"east"};
-};
-
-if (_side isEqualTo "civ") then {
- if (life_is_arrested) exitWith {
- player setUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_arrested");
- };
-
- private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random");
- if (getNumber(missionConfigFile >> "Loadouts" >> "civilian_randomClothing") isEqualTo 1) then {
- private _arr = getArray(missionConfigFile >> "Loadouts" >> "civRandomClothing");
- (_civLoadout select 3) set [0, selectRandom _arr];
- };
- player setUnitLoadout _civLoadout;
-} else {
- private _level = call {
- if (_side isEqualTo "cop") exitWith {FETCH_CONST(life_coplevel)};
- if (_side isEqualTo "med") exitWith {FETCH_CONST(life_mediclevel)};
- if (_side isEqualTo "east") exitWith {0};
- };
- player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, _level]);
-};
-
-[] call life_fnc_playerSkins;
-[] call life_fnc_saveGear;
+#include "..\..\script_macros.hpp"
+/*
+ File: fn_startLoadout.sqf
+ Author: Casperento
+
+ Description:
+ Loads a custom loadout on player when he got a new life
+*/
+private _side = call {
+ if (playerSide isEqualTo civilian) exitWith {"civ"};
+ if (playerSide isEqualTo west) exitWith {"cop"};
+ if (playerSide isEqualTo independent) exitWith {"med"};
+ if (playerSide isEqualTo east) exitWith {"east"};
+};
+
+if (_side isEqualTo "civ") then {
+ if (life_is_arrested) exitWith {
+ player setUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_arrested");
+ };
+
+ private _civLoadout = getUnitLoadout (missionConfigFile >> "Loadouts" >> "civ_level_random");
+ if (getNumber(missionConfigFile >> "Loadouts" >> "civilian_randomClothing") isEqualTo 1) then {
+ private _arr = getArray(missionConfigFile >> "Loadouts" >> "civRandomClothing");
+ (_civLoadout select 3) set [0, selectRandom _arr];
+ };
+ player setUnitLoadout _civLoadout;
+} else {
+ private _level = call {
+ if (_side isEqualTo "cop") exitWith {FETCH_CONST(life_coplevel)};
+ if (_side isEqualTo "med") exitWith {FETCH_CONST(life_mediclevel)};
+ if (_side isEqualTo "east") exitWith {0};
+ };
+ player setUnitLoadout (missionConfigFile >> "Loadouts" >> format["%1_level_%2", _side, _level]);
+};
+
+[] call life_fnc_playerSkins;
+[] call life_fnc_saveGear;
diff --git a/Altis_Life.Altis/core/functions/fn_stripDownPlayer.sqf b/Altis_Life.Altis/core/functions/fn_stripDownPlayer.sqf
index a34d06814..dacb3058b 100644
--- a/Altis_Life.Altis/core/functions/fn_stripDownPlayer.sqf
+++ b/Altis_Life.Altis/core/functions/fn_stripDownPlayer.sqf
@@ -4,8 +4,14 @@
Description: Strip the player down
*/
+
removeAllWeapons player;
-{player removeMagazine _x;} forEach (magazines player);
+
+{
+ player removeMagazine _x;
+ true
+} count (magazines player);
+
removeUniform player;
removeVest player;
removeBackpack player;
@@ -15,8 +21,9 @@ removeHeadGear player;
{
player unassignItem _x;
player removeItem _x;
-} forEach (assignedItems player);
+ true
+} count (assignedItems player);
-if (hmd player != "") then {
+if !(hmd player isEqualTo "") then {
player unlinkItem (hmd player);
};
\ No newline at end of file
diff --git a/Altis_Life.Altis/core/functions/network/fn_corpse.sqf b/Altis_Life.Altis/core/functions/network/fn_corpse.sqf
index d1a0ede5c..b4cc626bb 100644
--- a/Altis_Life.Altis/core/functions/network/fn_corpse.sqf
+++ b/Altis_Life.Altis/core/functions/network/fn_corpse.sqf
@@ -5,9 +5,11 @@
Description:
Hides dead bodies.
*/
-private ["_corpse"];
-_corpse = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_corpse", objNull, [objNull]]
+];
+
if (isNull _corpse) exitWith {};
-if (alive _corpse) exitWith {}; //Stop script kiddies.
-deleteVehicle _corpse;
\ No newline at end of file
+deleteVehicle _corpse;
diff --git a/Altis_Life.Altis/core/functions/network/fn_jumpFnc.sqf b/Altis_Life.Altis/core/functions/network/fn_jumpFnc.sqf
index db1815771..7252f29c2 100644
--- a/Altis_Life.Altis/core/functions/network/fn_jumpFnc.sqf
+++ b/Altis_Life.Altis/core/functions/network/fn_jumpFnc.sqf
@@ -1,36 +1,38 @@
-/*
- File: fn_jumpFnc.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Makes the target jump.
-*/
-private ["_unit","_vel","_dir","_v1","_v2","_anim","_oldpos"];
-_unit = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_oldpos = getPosATL _unit;
-
-if (isNull _unit) exitWith {}; //Bad data
-
-if (animationState _unit == "AovrPercMrunSrasWrflDf") exitWith {};
-
-if (local _unit) then {
- _v1 = 3.82;
- _v2 = .4;
- _dir = direction player;
- _vel = velocity _unit;
- _unit setVelocity[(_vel select 0)+(sin _dir*_v2),(_vel select 1)+(cos _dir*_v2),(_vel select 2)+_v1];
-};
-
-_anim = animationState _unit;
-_unit switchMove "AovrPercMrunSrasWrflDf";
-
-if (local _unit) then {
- waitUntil {
- if ((getPos _unit select 2) > 4) then {
- _unit setposATL _oldpos;
- _unit setVelocity [0, 0, 0];
- };
- animationState _unit != "AovrPercMrunSrasWrflDf"
- };
- _unit switchMove _anim;
-};
+/*
+ File: fn_jumpFnc.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Makes the target jump.
+*/
+
+params [
+ ["_unit", objNull, [objNull]]
+];
+
+if (isNull _unit) exitWith {};
+if (animationState _unit == "AovrPercMrunSrasWrflDf") exitWith {};
+
+private _oldPos = getPosATL _unit;
+
+if (local _unit) then {
+ private _v1 = 3.82;
+ private _v2 = .4;
+ private _dir = direction _unit;
+ (velocity _unit) params ["_xVel","_yVel","_zVel"];
+ _unit setVelocity [_xVel + (sin _dir*_v2), _yVel + (cos _dir*_v2), _zVel + _v1];
+};
+
+private _anim = animationState _unit;
+_unit switchMove "AovrPercMrunSrasWrflDf";
+
+if (local _unit) then {
+ waitUntil {
+ if ((getPos _unit select 2) > 4) then {
+ _unit setPosATL _oldPos;
+ _unit setVelocity [0, 0, 0];
+ };
+ animationState _unit != "AovrPercMrunSrasWrflDf"
+ };
+ _unit switchMove _anim;
+};
diff --git a/Altis_Life.Altis/core/functions/network/fn_setFuel.sqf b/Altis_Life.Altis/core/functions/network/fn_setFuel.sqf
index 09bbbdc4f..5aa2c68f9 100644
--- a/Altis_Life.Altis/core/functions/network/fn_setFuel.sqf
+++ b/Altis_Life.Altis/core/functions/network/fn_setFuel.sqf
@@ -4,4 +4,12 @@
Description: Used to set fuel levels in vehicles. (Ex. Service Chopper)
*/
-(_this select 0) setFuel (_this select 1);
\ No newline at end of file
+
+params [
+ ["_object", objNull, [objNull]],
+ ["_value", 1, [0]]
+];
+
+if (isNull _object) exitWith {};
+
+_object setFuel _value;
diff --git a/Altis_Life.Altis/core/functions/network/fn_soundDevice.sqf b/Altis_Life.Altis/core/functions/network/fn_soundDevice.sqf
index 49bc84dae..6d4bafbd1 100644
--- a/Altis_Life.Altis/core/functions/network/fn_soundDevice.sqf
+++ b/Altis_Life.Altis/core/functions/network/fn_soundDevice.sqf
@@ -5,12 +5,16 @@
Description:
Plays a device sound for mining (Mainly Tempest device).
*/
-if (isNull _this) exitWith {};
-if (player distance _this > 2500) exitWith {}; //Don't run it... They're to far out..
+params [
+ ["_vehicle", objNull, [objNull]]
+];
+
+if (isNull _vehicle) exitWith {};
+if (player distance _vehicle > 2500) exitWith {};
for "_i" from 0 to 1 step 0 do {
- if (isNull _this || !alive _this) exitWith {};
- if (isNil {_this getVariable "mining"}) exitWith {};
- _this say3D ["Device_disassembled_loop",150,1];
+ if !(alive _vehicle) exitWith {};
+ if (isNil {_vehicle getVariable "mining"}) exitWith {};
+ _vehicle say3D ["Device_disassembled_loop",150,1];
sleep 28.6;
};
diff --git a/Altis_Life.Altis/core/gangs/fn_clientGangKick.sqf b/Altis_Life.Altis/core/gangs/fn_clientGangKick.sqf
new file mode 100644
index 000000000..92d2cefb4
--- /dev/null
+++ b/Altis_Life.Altis/core/gangs/fn_clientGangKick.sqf
@@ -0,0 +1,10 @@
+/*
+ File: fn_clientGangKick.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description: handles being kicked out of a gang
+*/
+
+life_my_gang = grpNull;
+[player] joinSilent (createGroup civilian);
+hint localize "STR_GNOTF_KickOutGang";
diff --git a/Altis_Life.Altis/core/gangs/fn_clientGangLeader.sqf b/Altis_Life.Altis/core/gangs/fn_clientGangLeader.sqf
new file mode 100644
index 000000000..c952885fe
--- /dev/null
+++ b/Altis_Life.Altis/core/gangs/fn_clientGangLeader.sqf
@@ -0,0 +1,18 @@
+/*
+ File: fn_clientGangLeader.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description: appoints player as gang leader
+*/
+params [
+ ["_unit", objNull, [objNull]],
+ ["_group", grpNull, [grpNull]]
+];
+
+_unit setRank "COLONEL";
+
+if !(local _group) exitWith {};
+_group selectLeader _unit;
+
+if !(_unit isEqualTo player) exitWith {};
+hint localize "STR_GNOTF_GaveTransfer";
diff --git a/Altis_Life.Altis/core/gangs/fn_clientGangLeft.sqf b/Altis_Life.Altis/core/gangs/fn_clientGangLeft.sqf
new file mode 100644
index 000000000..6fff2479d
--- /dev/null
+++ b/Altis_Life.Altis/core/gangs/fn_clientGangLeft.sqf
@@ -0,0 +1,10 @@
+/*
+ File: fn_clientGangLeft.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description: leaves the group
+*/
+
+life_my_gang = grpNull;
+[player] joinSilent (createGroup civilian);
+hint localize "STR_GNOTF_LeaveGang";
diff --git a/Altis_Life.Altis/core/gangs/fn_gangCreated.sqf b/Altis_Life.Altis/core/gangs/fn_gangCreated.sqf
index ac5746c87..c40485775 100644
--- a/Altis_Life.Altis/core/gangs/fn_gangCreated.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_gangCreated.sqf
@@ -6,7 +6,6 @@
Description:
Tells the player that the gang is created and throws him into it.
*/
-private "_group";
life_action_gangInUse = nil;
if (BANK < (LIFE_SETTINGS(getNumber,"gang_price"))) exitWith {
@@ -17,4 +16,4 @@ if (BANK < (LIFE_SETTINGS(getNumber,"gang_price"))) exitWith {
BANK = BANK - LIFE_SETTINGS(getNumber,"gang_price");
[1] call SOCK_fnc_updatePartial;
-hint format [localize "STR_GNOTF_CreateSuccess",(group player) getVariable "gang_name",[(LIFE_SETTINGS(getNumber,"gang_price"))] call life_fnc_numberText];
\ No newline at end of file
+hint format [localize "STR_GNOTF_CreateSuccess",(group player) getVariable "gang_name",[(LIFE_SETTINGS(getNumber,"gang_price"))] call life_fnc_numberText];
diff --git a/Altis_Life.Altis/core/gangs/fn_gangDisband.sqf b/Altis_Life.Altis/core/gangs/fn_gangDisband.sqf
index 9d8590689..4d871bdf1 100644
--- a/Altis_Life.Altis/core/gangs/fn_gangDisband.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_gangDisband.sqf
@@ -7,8 +7,7 @@
Prompts the user about disbanding the gang and if the user accepts the gang will be
disbanded and removed from the database.
*/
-private "_action";
-_action = [
+private _action = [
localize "STR_GNOTF_DisbandWarn",
localize "STR_Gang_Disband_Gang",
localize "STR_Global_Yes",
@@ -26,4 +25,4 @@ if (_action) then {
} else {
hint localize "STR_GNOTF_DisbandGangCanc";
-};
\ No newline at end of file
+};
diff --git a/Altis_Life.Altis/core/gangs/fn_gangDisbanded.sqf b/Altis_Life.Altis/core/gangs/fn_gangDisbanded.sqf
index 5dfef7638..1c0024485 100644
--- a/Altis_Life.Altis/core/gangs/fn_gangDisbanded.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_gangDisbanded.sqf
@@ -5,14 +5,12 @@
Description:
Notifies members that the gang has been disbanded.
*/
-private "_group";
-_group = param [0,grpNull,[grpNull]];
+private _group = param [0,grpNull,[grpNull]];
if (isNull _group) exitWith {}; //Fail horn please.
if (!isNull (findDisplay 2620)) then {closeDialog 2620};
hint localize "STR_GNOTF_DisbandWarn_2";
-[player] joinSilent (createGroup civilian);
-if (units _group isEqualTo []) then {
- deleteGroup _group;
-};
+private _newGroup = createGroup civilian;
+[player] joinSilent _newGroup;
+_newGroup deleteGroupWhenEmpty true;
diff --git a/Altis_Life.Altis/core/gangs/fn_gangKick.sqf b/Altis_Life.Altis/core/gangs/fn_gangKick.sqf
index 63ef0b7a1..0638ff357 100644
--- a/Altis_Life.Altis/core/gangs/fn_gangKick.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_gangKick.sqf
@@ -23,7 +23,7 @@ if (!(_members isEqualType [])) exitWith {};
_members = _members - [_unitID];
group player setVariable ["gang_members",_members,true];
-[_unit,group player] remoteExec ["TON_fnc_clientGangKick",_unit]; //Boot that bitch!
+remoteExecCall ["life_fnc_clientGangKick",_unit];
if (life_HC_isActive) then {
[4,group player] remoteExec ["HC_fnc_updateGang",HC_Life]; //Update the database.
diff --git a/Altis_Life.Altis/core/gangs/fn_gangLeave.sqf b/Altis_Life.Altis/core/gangs/fn_gangLeave.sqf
index 9c7e727ba..3d6ae9e43 100644
--- a/Altis_Life.Altis/core/gangs/fn_gangLeave.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_gangLeave.sqf
@@ -17,7 +17,7 @@ if (!(_members isEqualType [])) exitWith {};
_members = _members - [_unitID];
group player setVariable ["gang_members",_members,true];
-[player,group player] remoteExec ["TON_fnc_clientGangLeft",player];
+call life_fnc_clientGangLeft;
if (life_HC_isActive) then {
[4,group player] remoteExec ["HC_fnc_updateGang",HC_Life]; //Update the database.
diff --git a/Altis_Life.Altis/core/gangs/fn_gangNewLeader.sqf b/Altis_Life.Altis/core/gangs/fn_gangNewLeader.sqf
index d484cd744..cf1a85266 100644
--- a/Altis_Life.Altis/core/gangs/fn_gangNewLeader.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_gangNewLeader.sqf
@@ -25,16 +25,15 @@ _action = [
if (_action) then {
_unitID = getPlayerUID _unit;
if (_unitID isEqualTo "") exitWith {hint localize "STR_GNOTF_badUID";}; //Unlikely?
- group player setVariable ["gang_owner",_unitID,true];
- group player selectLeader _unit;
- [_unit,group player] remoteExec ["TON_fnc_clientGangLeader",_unit]; //Boot that bitch!
+ private _group = group player;
+ _group setVariable ["gang_owner",_unitID,true];
+ [_unit, _group] remoteExecCall ["life_fnc_clientGangLeader", _group, _group];
if (life_HC_isActive) then {
[3,group player] remoteExec ["HC_fnc_updateGang",HC_Life]; //Update the database.
} else {
[3,group player] remoteExec ["TON_fnc_updateGang",RSERV]; //Update the database.
};
-
} else {
hint localize "STR_GNOTF_TransferCancel";
};
diff --git a/Altis_Life.Altis/core/gangs/fn_initGang.sqf b/Altis_Life.Altis/core/gangs/fn_initGang.sqf
index 0d559756e..f7d036d7f 100644
--- a/Altis_Life.Altis/core/gangs/fn_initGang.sqf
+++ b/Altis_Life.Altis/core/gangs/fn_initGang.sqf
@@ -29,11 +29,11 @@ _exitLoop = false;
if (!isNil "_group") then {
[player] join _group;
if ((life_gangData select 1) isEqualTo getPlayerUID player) then {
- _group selectLeader player;
- [player,_group] remoteExecCall ["TON_fnc_clientGangLeader",(units _group)];
+ [_unit, _group] remoteExecCall ["life_fnc_clientGangLeader", _group, _group];
};
} else {
_group = group player;
+ _group deleteGroupWhenEmpty true;
_group setVariable ["gang_id",(life_gangData select 0),true];
_group setVariable ["gang_owner",(life_gangData select 1),true];
_group setVariable ["gang_name",(life_gangData select 2),true];
diff --git a/Altis_Life.Altis/core/housing/fn_houseMenu.sqf b/Altis_Life.Altis/core/housing/fn_houseMenu.sqf
index d1b51cb15..c197d05f5 100644
--- a/Altis_Life.Altis/core/housing/fn_houseMenu.sqf
+++ b/Altis_Life.Altis/core/housing/fn_houseMenu.sqf
@@ -46,10 +46,10 @@ if (_curTarget in life_hideoutBuildings) exitWith {
if (_curTarget isKindOf "House_F" && playerSide isEqualTo west) exitWith {
- private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
+ private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call life_util_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
- private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+ private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
if ((nearestObject [_pos,"Land_Dome_Big_F"]) isEqualTo _curTarget || (nearestObject [_pos,_vaultHouse]) isEqualTo _curTarget) then {
diff --git a/Altis_Life.Altis/core/housing/fn_sellHouse.sqf b/Altis_Life.Altis/core/housing/fn_sellHouse.sqf
index 11f240a6c..b4c23752f 100644
--- a/Altis_Life.Altis/core/housing/fn_sellHouse.sqf
+++ b/Altis_Life.Altis/core/housing/fn_sellHouse.sqf
@@ -58,7 +58,7 @@ if (_action) then {
life_vehicles deleteAt _index;
};
- _index = [str(getPosATL _house),life_houses] call TON_fnc_index;
+ _index = [str(getPosATL _house),life_houses] call life_util_fnc_index;
if !(_index isEqualTo -1) then {
life_houses deleteAt _index;
};
diff --git a/Altis_Life.Altis/core/init.sqf b/Altis_Life.Altis/core/init.sqf
index 82cc02cf9..72c1e26e7 100644
--- a/Altis_Life.Altis/core/init.sqf
+++ b/Altis_Life.Altis/core/init.sqf
@@ -44,8 +44,6 @@ diag_log "[Life Client] Server loading completed ";
waitUntil {life_session_completed};
0 cutText[localize "STR_Init_ClientFinish","BLACK FADED",99999999];
-[] spawn life_fnc_escInterupt;
-
switch (playerSide) do {
case west: {
life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_cop");
@@ -54,6 +52,7 @@ switch (playerSide) do {
case civilian: {
life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_civ");
[] call life_fnc_initCiv;
+ (group player) deleteGroupWhenEmpty true;
};
case independent: {
life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_med");
@@ -69,27 +68,20 @@ player setVariable ["playerSurrender", false, true];
player setVariable ["realname", profileName, true];
diag_log "[Life Client] Past Settings Init";
-[] execFSM "core\fsm\client.fsm";
-diag_log "[Life Client] Executing client.fsm";
(findDisplay 46) displayAddEventHandler ["KeyDown", "_this call life_fnc_keyHandler"];
[player, life_settings_enableSidechannel, playerSide] remoteExecCall ["TON_fnc_manageSC", RSERV];
-[] call life_fnc_hudSetup;
[] spawn life_fnc_survival;
0 cutText ["","BLACK IN"];
-[] spawn {
- for "_i" from 0 to 1 step 0 do {
- waitUntil {(!isNull (findDisplay 49)) && {(!isNull (findDisplay 602))}}; // Check if Inventory and ESC dialogs are open
- (findDisplay 49) closeDisplay 2; // Close ESC dialog
- (findDisplay 602) closeDisplay 2; // Close Inventory dialog
- };
+if (profileNamespace getVariable ["life_settings_revealObjects",true]) then {
+ LIFE_ID_PlayerTags = addMissionEventHandler ["EachFrame", life_fnc_playerTags];
+};
+if (profileNamespace getVariable ["life_settings_revealObjects",true]) then {
+ LIFE_ID_RevealObjects = addMissionEventHandler ["EachFrame", life_fnc_revealObjects];
};
-
-addMissionEventHandler ["EachFrame", life_fnc_playerTags];
-addMissionEventHandler ["EachFrame", life_fnc_revealObjects];
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 0) then {player enableFatigue false;};
if (LIFE_SETTINGS(getNumber,"pump_service") isEqualTo 1) then {
@@ -120,6 +112,8 @@ if (life_HC_isActive) then {
[getPlayerUID player, player getVariable ["realname", name player]] remoteExec ["life_fnc_wantedProfUpdate", RSERV];
};
+[] call life_fnc_hudUpdate;
+
diag_log "----------------------------------------------------------------------------------------------------";
diag_log format [" End of Altis Life Client Init :: Total Execution Time %1 seconds ",(diag_tickTime - _timeStamp)];
diag_log "----------------------------------------------------------------------------------------------------";
diff --git a/Altis_Life.Altis/core/items/fn_blastingCharge.sqf b/Altis_Life.Altis/core/items/fn_blastingCharge.sqf
index 1119108f1..f33fb6ed9 100644
--- a/Altis_Life.Altis/core/items/fn_blastingCharge.sqf
+++ b/Altis_Life.Altis/core/items/fn_blastingCharge.sqf
@@ -17,10 +17,10 @@ if (west countSide playableUnits < (LIFE_SETTINGS(getNumber,"minimum_cops"))) ex
hint format [localize "STR_Civ_NotEnoughCops",(LIFE_SETTINGS(getNumber,"minimum_cops"))];
};
-private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
+private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call life_util_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
-private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
if ((nearestObject [_pos,_vaultHouse]) getVariable ["locked",true]) exitWith {hint localize "STR_ISTR_Blast_Exploit"};
if (!([false,"blastingcharge",1] call life_fnc_handleInv)) exitWith {}; //Error?
diff --git a/Altis_Life.Altis/core/items/fn_boltcutter.sqf b/Altis_Life.Altis/core/items/fn_boltcutter.sqf
index 255d3ad6a..e46ab0fd7 100644
--- a/Altis_Life.Altis/core/items/fn_boltcutter.sqf
+++ b/Altis_Life.Altis/core/items/fn_boltcutter.sqf
@@ -9,10 +9,10 @@
private ["_building","_door","_doors","_cpRate","_title","_progressBar","_titleText","_cp","_ui"];
_building = param [0,objNull,[objNull]];
-private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
+private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call life_util_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
-private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
if (isNull _building) exitWith {};
if (!(_building isKindOf "House_F")) exitWith {hint localize "STR_ISTR_Bolt_NotNear";};
diff --git a/Altis_Life.Altis/core/pmenu/fn_clientMessage.sqf b/Altis_Life.Altis/core/pmenu/fn_clientMessage.sqf
new file mode 100644
index 000000000..6d2948755
--- /dev/null
+++ b/Altis_Life.Altis/core/pmenu/fn_clientMessage.sqf
@@ -0,0 +1,75 @@
+/*
+ File: fn_clientMessage.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ displays a received message
+*/
+params [
+ ["_msg", "", [""]],
+ ["_from", "", [""]],
+ ["_type", "", [""]],
+ ["_loc", "Unknown", [""]]
+];
+
+if (_from isEqualTo "" || {_msg isEqualTo ""}) exitWith {};
+private _message = "";
+
+switch (toLower _type) do {
+ case "cop" : {
+ if !(playerSide isEqualTo west) exitWith {};
+ _message = format ["--- 911 DISPATCH FROM %1: %2",_from,_msg];
+
+ hint parseText format ["New Dispatch
To: All Officers From: %1 Coords: %2
Message: %3",_from,_loc,_msg];
+
+ ["PoliceDispatch",[format ["A New Police Report From: %1",_from]]] call bis_fnc_showNotification;
+ };
+
+ case "med": {
+ if !(playerSide isEqualTo independent) exitWith {};
+
+ _message = format ["!!! EMS REQUEST: %1",_msg];
+ hint parseText format ["EMS Request
To: You From: %1 Coords: %2
Message: %3",_from,_loc,_msg];
+
+ ["TextMessage",[format ["EMS Request from %1",_from]]] call bis_fnc_showNotification;
+ };
+
+ case "admin" : {
+ if ((call life_adminlevel) < 1) exitWith {};
+ _message = format ["!!! ADMIN REQUEST FROM %1: %2",_from,_msg];
+
+ hint parseText format ["Admin Request
To: Admins From: %1 Coords: %2
Message: %3",_from,_loc,_msg];
+
+ ["AdminDispatch",[format ["%1 Has Requested An Admin!",_from]]] call bis_fnc_showNotification;
+ };
+
+ case "adminall" : {
+ _message = format ["!!! ADMIN MESSAGE: %1",_msg];
+ _admin = format ["Sent by admin: %1", _from];
+ hint parseText format ["Admin Message
To: You From: An Admin
Message: %1",_msg];
+
+ ["AdminMessage",["You Have Received A Message From An Admin!"]] call bis_fnc_showNotification;
+ if ((call life_adminlevel) > 0) then {systemChat _admin;};
+ };
+
+ case "admintoplayer": {
+ _message = format ["!!!ADMIN MESSAGE: %1",_msg];
+
+ hint parseText format ["Admin Message
To: All Players From: The Admins
Message: %1",_msg];
+
+ ["AdminMessage",["You Have Received A Message From An Admin!"]] call bis_fnc_showNotification;
+ if ((call life_adminlevel) > 0) then {
+ private _admin = format ["Sent by admin: %1", _from];
+ systemChat _admin;
+ };
+ };
+
+ default {
+ _message = format [">>>MESSAGE FROM %1: %2",_from,_msg];
+ hint parseText format ["New Message
To: You From: %1
Message: %2",_from,_msg];
+
+ ["TextMessage",[format ["You Received A New Private Message From %1",_from]]] call bis_fnc_showNotification;
+ };
+};
+
+systemChat _message;
diff --git a/Altis_Life.Altis/core/pmenu/fn_giveItem.sqf b/Altis_Life.Altis/core/pmenu/fn_giveItem.sqf
index 3b5746677..2ddfa9e31 100644
--- a/Altis_Life.Altis/core/pmenu/fn_giveItem.sqf
+++ b/Altis_Life.Altis/core/pmenu/fn_giveItem.sqf
@@ -34,7 +34,7 @@ call {
private _item = lbData [2005, lbCurSel 2005];
- if !([_value] call TON_fnc_isnumber) exitWith {
+ if !([_value] call life_util_fnc_isNumber) exitWith {
hint localize "STR_NOTF_notNumberFormat";
};
if (parseNumber _value <= 0) exitWith {
diff --git a/Altis_Life.Altis/core/pmenu/fn_giveMoney.sqf b/Altis_Life.Altis/core/pmenu/fn_giveMoney.sqf
index 5e5fce9ab..ef8f1ed86 100644
--- a/Altis_Life.Altis/core/pmenu/fn_giveMoney.sqf
+++ b/Altis_Life.Altis/core/pmenu/fn_giveMoney.sqf
@@ -18,7 +18,7 @@ if (isNull _unit) exitWith {ctrlShow[2001,true];};
//A series of checks *ugh*
if (!life_use_atm) exitWith {hint localize "STR_NOTF_recentlyRobbedBank";ctrlShow[2001,true];};
-if (!([_amount] call TON_fnc_isnumber)) exitWith {hint localize "STR_NOTF_notNumberFormat";ctrlShow[2001,true];};
+if (!([_amount] call life_util_fnc_isNumber)) exitWith {hint localize "STR_NOTF_notNumberFormat";ctrlShow[2001,true];};
if (parseNumber(_amount) <= 0) exitWith {hint localize "STR_NOTF_enterAmount";ctrlShow[2001,true];};
if (parseNumber(_amount) > CASH) exitWith {hint localize "STR_NOTF_notEnoughtToGive";ctrlShow[2001,true];};
if (isNull _unit) exitWith {ctrlShow[2001,true];};
diff --git a/Altis_Life.Altis/core/pmenu/fn_keyGive.sqf b/Altis_Life.Altis/core/pmenu/fn_keyGive.sqf
index 599a24b5c..daaf9c05a 100644
--- a/Altis_Life.Altis/core/pmenu/fn_keyGive.sqf
+++ b/Altis_Life.Altis/core/pmenu/fn_keyGive.sqf
@@ -28,11 +28,11 @@ if (_unit == player) exitWith {};
_uid = getPlayerUID _unit;
_owners = _vehicle getVariable "vehicle_info_owners";
-_index = [_uid,_owners] call TON_fnc_index;
+_index = [_uid,_owners] call life_util_fnc_index;
if (_index isEqualTo -1) then {
_owners pushBack [_uid,_unit getVariable ["realname",name _unit]];
_vehicle setVariable ["vehicle_info_owners",_owners,true];
};
hint format [localize "STR_NOTF_givenKeysTo",_unit getVariable ["realname",name _unit],typeOf _vehicle];
-[_vehicle,_unit,profileName] remoteExecCAll ["TON_fnc_clientGetKey",_unit];
+[_vehicle,profileName] remoteExecCall ["TON_fnc_clientGetKey",_unit];
diff --git a/Altis_Life.Altis/core/pmenu/fn_removeItem.sqf b/Altis_Life.Altis/core/pmenu/fn_removeItem.sqf
index fd6571b5d..c2b539c78 100644
--- a/Altis_Life.Altis/core/pmenu/fn_removeItem.sqf
+++ b/Altis_Life.Altis/core/pmenu/fn_removeItem.sqf
@@ -13,7 +13,7 @@ _data = lbData[2005,(lbCurSel 2005)];
_value = ctrlText 2010;
if (_data isEqualTo "") exitWith {hint localize "STR_NOTF_didNotSelectToRemove";};
-if (!([_value] call TON_fnc_isnumber)) exitWith {hint localize "STR_NOTF_notNumberFormat";};
+if (!([_value] call life_util_fnc_isNumber)) exitWith {hint localize "STR_NOTF_notNumberFormat";};
if (parseNumber(_value) <= 0) exitWith {hint localize "STR_NOTF_enterAmountRemove";};
if (ITEM_ILLEGAL(_data) isEqualTo 1 && ([west,visiblePosition player,100] call life_fnc_nearUnits)) exitWith {titleText[localize "STR_NOTF_illegalItemCannotDispose","PLAIN"]};
if !(isNull objectParent player) exitWith {titleText[localize "STR_NOTF_cannotRemoveInVeh","PLAIN"]};
diff --git a/Altis_Life.Altis/core/pmenu/fn_s_onCheckedChange.sqf b/Altis_Life.Altis/core/pmenu/fn_s_onCheckedChange.sqf
index 3a3269fce..dfbce176f 100644
--- a/Altis_Life.Altis/core/pmenu/fn_s_onCheckedChange.sqf
+++ b/Altis_Life.Altis/core/pmenu/fn_s_onCheckedChange.sqf
@@ -6,30 +6,30 @@
Description:
Switching it up and making it prettier..
*/
-private ["_option","_state"];
-_option = _this select 0;
-_state = _this select 1;
+params [
+ ["_option","",[""]],
+ ["_state",0,[0]]
+];
+if (_option isEqualTo "") exitWith {};
-switch (_option) do {
+switch _option do {
case "tags": {
if (_state isEqualTo 1) then {
- life_settings_tagson = true;
profileNamespace setVariable ["life_settings_tagson",true];
+ LIFE_ID_PlayerTags = addMissionEventHandler ["EachFrame", life_fnc_playerTags];
} else {
- life_settings_tagson = false;
profileNamespace setVariable ["life_settings_tagson",false];
+ removeMissionEventHandler ["EachFrame",LIFE_ID_PlayerTags];
};
};
case "objects": {
if (_state isEqualTo 1) then {
- life_settings_revealObjects = true;
profileNamespace setVariable ["life_settings_revealObjects",true];
- LIFE_ID_RevealObjects = ["LIFE_RevealObjects","onEachFrame","life_fnc_revealObjects"] call BIS_fnc_addStackedEventHandler;
+ LIFE_ID_RevealObjects = addMissionEventHandler ["EachFrame", life_fnc_revealObjects];
} else {
- life_settings_revealObjects = false;
profileNamespace setVariable ["life_settings_revealObjects",false];
- [LIFE_ID_RevealObjects,"onEachFrame"] call BIS_fnc_removeStackedEventHandler;
+ removeMissionEventHandler ["EachFrame",LIFE_ID_RevealObjects];
};
};
diff --git a/Altis_Life.Altis/core/pmenu/fn_sendMessage.sqf b/Altis_Life.Altis/core/pmenu/fn_sendMessage.sqf
new file mode 100644
index 000000000..a55c38a3f
--- /dev/null
+++ b/Altis_Life.Altis/core/pmenu/fn_sendMessage.sqf
@@ -0,0 +1,77 @@
+#define CLIENTS -2
+/*
+ File: fn_sendMessage.sqf
+ Author: blackfisch
+
+ Description: send message to target
+*/
+params [
+ ["_ehParams", [], [[]]],
+ ["_target", "player", [""]]
+];
+_ehParams params [
+ ["_control", controlNull, [controlNull]]
+];
+
+_control ctrlEnable false;
+
+if (_target isEqualTo "cop" && {(west countSide allPlayers) isEqualTo 0}) exitWith {
+ hint localize "STR_CELLMSG_NoCops";
+ _control ctrlEnable true;
+};
+
+if (_target isEqualTo "med" && {(independent countSide allPlayers) isEqualTo 0}) exitWith {
+ hint localize "STR_CELLMSG_NoMedics";
+ _control ctrlEnable true;
+};
+
+private _to = call compile format ["%1",(lbData[3004,(lbCurSel 3004)])];
+if ((_target in ["adminToPlayer", "player"]) && {isNil "_to" || {isNull _to}}) exitWith {
+ _control ctrlEnable true;
+};
+
+private _msg = ctrlText 3003;
+if (_msg isEqualTo "") exitWith {
+ hint localize "STR_CELLMSG_EnterMSG";
+ _control ctrlEnable true;
+};
+
+private _maxLength = getNumber(missionConfigFile >> "Life_Settings" >> "message_maxlength");
+if (_maxLength > -1 && {(count _msg) > _maxLength}) exitWith {
+ hint localize "STR_CELLMSG_LIMITEXCEEDED";
+ _control ctrlEnable true;
+};
+
+private _remoteTarget = CLIENTS;
+private _confirmMessage = (switch (toLower _target) do {
+ case "cop": {
+ _remoteTarget = west;
+ "STR_CELLMSG_ToPolice";
+ };
+ case "med": {
+ _remoteTarget = independent;
+ "STR_CELLMSG_ToEMS";
+ };
+ case "admin": {
+ "STR_CELLMSG_ToAdmin";
+ };
+ case "adminall": {
+ "STR_CELLMSG_AdminToAll";
+ };
+ case "admintoplayer": {
+ _remoteTarget = _to;
+ "STR_CELLMSG_AdminToPerson";
+ };
+ default {
+ _remoteTarget = _to;
+ "STR_CELLMSG_ToPerson";
+ };
+});
+
+private _sender = player getVariable ["realName", profileName];
+[_msg,_sender,_target, mapGridPosition player] remoteExecCall ["life_fnc_clientMessage",_remoteTarget];
+call life_fnc_cellphone;
+
+private _toName = (if (isNil "_to" || {isNull _to}) then {"ERROR"} else {_to getVariable ["realname", name _to]});
+hint format [localize _confirmMessage,_toName,_msg];
+_control ctrlEnable true;
diff --git a/Altis_Life.Altis/core/pmenu/fn_settingsMenu.sqf b/Altis_Life.Altis/core/pmenu/fn_settingsMenu.sqf
index 912b308ee..96d988b81 100644
--- a/Altis_Life.Altis/core/pmenu/fn_settingsMenu.sqf
+++ b/Altis_Life.Altis/core/pmenu/fn_settingsMenu.sqf
@@ -24,14 +24,12 @@ ctrlSetText[2922, format ["%1", life_settings_viewDistanceAir]];
} forEach [[2901,life_settings_viewDistanceFoot],[2911,life_settings_viewDistanceCar],[2921,life_settings_viewDistanceAir]];
-if (isNil "life_settings_revealObjects") then {
+if (isNil "life_settings_enableNewsBroadcast") then {
life_settings_enableNewsBroadcast = profileNamespace setVariable ["life_enableNewsBroadcast",true];
life_settings_enableSidechannel = profileNamespace setVariable ["life_enableSidechannel",true];
- life_settings_tagson = profileNamespace setVariable ["life_settings_tagson",true];
- life_settings_revealObjects = profileNamespace setVariable ["life_settings_revealObjects",true];
};
CONTROL(2900,2971) cbSetChecked life_settings_enableSidechannel;
CONTROL(2900,2973) cbSetChecked life_settings_enableNewsBroadcast;
-CONTROL(2900,2970) cbSetChecked life_settings_tagson;
-CONTROL(2900,2972) cbSetChecked life_settings_revealObjects;
+CONTROL(2900,2970) cbSetChecked (profileNamespace getVariable ["life_settings_tagson",true]);
+CONTROL(2900,2972) cbSetChecked (profileNamespace getVariable ["life_settings_revealObjects",true]);
diff --git a/Altis_Life.Altis/core/session/fn_requestReceived.sqf b/Altis_Life.Altis/core/session/fn_requestReceived.sqf
old mode 100644
new mode 100755
index 08e7b211d..8a349d3c0
--- a/Altis_Life.Altis/core/session/fn_requestReceived.sqf
+++ b/Altis_Life.Altis/core/session/fn_requestReceived.sqf
@@ -8,6 +8,7 @@
sort through the information, validate it and if all valid
set the client up.
*/
+
private _count = count _this;
life_session_tries = life_session_tries + 1;
if (life_session_completed) exitWith {}; //Why did this get executed when the client already initialized? Fucking arma...
@@ -32,8 +33,8 @@ if (!isServer && (!isNil "life_adminlevel" || !isNil "life_coplevel" || !isNil "
};
//Parse basic player information.
-CASH = parseNumber (_this select 2);
-BANK = parseNumber (_this select 3);
+CASH = _this select 2;
+BANK = _this select 3;
CONST(life_adminlevel,(_this select 4));
if (LIFE_SETTINGS(getNumber,"donor_level") isEqualTo 1) then {
CONST(life_donorlevel,(_this select 5));
@@ -42,7 +43,7 @@ if (LIFE_SETTINGS(getNumber,"donor_level") isEqualTo 1) then {
};
//Loop through licenses
-if (count (_this select 6) > 0) then {
+if !((_this select 6) isEqualTo []) then {
{missionNamespace setVariable [(_x select 0),(_x select 1)];} forEach (_this select 6);
};
@@ -86,7 +87,7 @@ switch (playerSide) do {
} forEach life_houses;
life_gangData = _this select (_count - 2);
- if !(count life_gangData isEqualTo 0) then {
+ if !(life_gangData isEqualTo []) then {
[] spawn life_fnc_initGang;
};
[] spawn life_fnc_initHouses;
@@ -104,9 +105,9 @@ switch (playerSide) do {
};
life_gear = _this select 8;
-call life_fnc_loadGear;
+[true] call life_fnc_loadGear;
-if (count (_this select (_count - 1)) > 0) then {
+if !((_this select (_count - 1)) isEqualTo []) then {
{life_vehicles pushBack _x;} forEach (_this select (_count - 1));
};
diff --git a/Altis_Life.Altis/core/shops/fn_vehicleShopLBChange.sqf b/Altis_Life.Altis/core/shops/fn_vehicleShopLBChange.sqf
index c25d06063..948362f6f 100644
--- a/Altis_Life.Altis/core/shops/fn_vehicleShopLBChange.sqf
+++ b/Altis_Life.Altis/core/shops/fn_vehicleShopLBChange.sqf
@@ -92,7 +92,7 @@ _numberindexcolorarray = [];
for "_i" from 0 to (count(_colorArray) - 1) do {
_numberindexcolorarray pushBack _i;
};
-_indexrandom = _numberindexcolorarray call BIS_fnc_selectRandom;
+_indexrandom = selectRandom _numberindexcolorarray;
_ctrl lbSetCurSel _indexrandom;
if (_className in (LIFE_SETTINGS(getArray,"vehicleShop_rentalOnly"))) then {
diff --git a/Altis_Life.Altis/core/shops/fn_virt_buy.sqf b/Altis_Life.Altis/core/shops/fn_virt_buy.sqf
index 4ce9415fd..9f4fc0a69 100644
--- a/Altis_Life.Altis/core/shops/fn_virt_buy.sqf
+++ b/Altis_Life.Altis/core/shops/fn_virt_buy.sqf
@@ -11,14 +11,14 @@ if ((lbCurSel 2401) isEqualTo -1) exitWith {hint localize "STR_Shop_Virt_Nothing
_type = lbData[2401,(lbCurSel 2401)];
_price = lbValue[2401,(lbCurSel 2401)];
_amount = ctrlText 2404;
-if (!([_amount] call TON_fnc_isnumber)) exitWith {hint localize "STR_Shop_Virt_NoNum";};
+if (!([_amount] call life_util_fnc_isNumber)) exitWith {hint localize "STR_Shop_Virt_NoNum";};
_diff = [_type,parseNumber(_amount),life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
_amount = parseNumber(_amount);
if (_diff <= 0) exitWith {hint localize "STR_NOTF_NoSpace"};
_amount = _diff;
private _altisArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];
private _tanoaArray = ["Land_School_01_F","Land_Warehouse_03_F","Land_House_Small_02_F"];
-private _hideoutObjs = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+private _hideoutObjs = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
_hideout = (nearestObjects[getPosATL player,_hideoutObjs,25]) select 0;
if ((_price * _amount) > CASH && {!isNil "_hideout" && {!isNil {group player getVariable "gang_bank"}} && {(group player getVariable "gang_bank") <= _price * _amount}}) exitWith {hint localize "STR_NOTF_NotEnoughMoney"};
if ((time - life_action_delay) < 0.2) exitWith {hint localize "STR_NOTF_ActionDelay";};
diff --git a/Altis_Life.Altis/core/shops/fn_virt_sell.sqf b/Altis_Life.Altis/core/shops/fn_virt_sell.sqf
index 90270991e..83ebacf80 100644
--- a/Altis_Life.Altis/core/shops/fn_virt_sell.sqf
+++ b/Altis_Life.Altis/core/shops/fn_virt_sell.sqf
@@ -13,7 +13,7 @@ _price = M_CONFIG(getNumber,"VirtualItems",_type,"sellPrice");
if (_price isEqualTo -1) exitWith {};
_amount = ctrlText 2405;
-if (!([_amount] call TON_fnc_isnumber)) exitWith {hint localize "STR_Shop_Virt_NoNum";};
+if (!([_amount] call life_util_fnc_isNumber)) exitWith {hint localize "STR_Shop_Virt_NoNum";};
_amount = parseNumber (_amount);
if (_amount > (ITEM_VALUE(_type))) exitWith {hint localize "STR_Shop_Virt_NotEnough"};
if ((time - life_action_delay) < 0.2) exitWith {hint localize "STR_NOTF_ActionDelay";};
@@ -31,7 +31,7 @@ if ([false,_type,_amount] call life_fnc_handleInv) then {
if (life_shop_type isEqualTo "drugdealer") then {
private ["_array","_ind","_val"];
_array = life_shop_npc getVariable ["sellers",[]];
- _ind = [getPlayerUID player,_array] call TON_fnc_index;
+ _ind = [getPlayerUID player,_array] call life_util_fnc_index;
if (!(_ind isEqualTo -1)) then {
_val = ((_array select _ind) select 2);
_val = _val + _price;
diff --git a/Altis_Life.Altis/core/shops/fn_weaponShopBuySell.sqf b/Altis_Life.Altis/core/shops/fn_weaponShopBuySell.sqf
index abbfb7b66..d8b4f286c 100644
--- a/Altis_Life.Altis/core/shops/fn_weaponShopBuySell.sqf
+++ b/Altis_Life.Altis/core/shops/fn_weaponShopBuySell.sqf
@@ -31,7 +31,7 @@ if ((uiNamespace getVariable ["Weapon_Shop_Filter",0]) isEqualTo 1) then {
} else {
private _altisArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];
private _tanoaArray = ["Land_School_01_F","Land_Warehouse_03_F","Land_House_Small_02_F"];
- private _hideoutObjs = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+ private _hideoutObjs = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
private _hideout = (nearestObjects[getPosATL player,_hideoutObjs,25]) select 0;
if (!isNil "_hideout" && {!isNil {group player getVariable "gang_bank"}} && {(group player getVariable "gang_bank") >= _price}) then {
_action = [
diff --git a/Altis_Life.Altis/core/shops/fn_weaponShopFilter.sqf b/Altis_Life.Altis/core/shops/fn_weaponShopFilter.sqf
index ac0de74a5..21138a86d 100644
--- a/Altis_Life.Altis/core/shops/fn_weaponShopFilter.sqf
+++ b/Altis_Life.Altis/core/shops/fn_weaponShopFilter.sqf
@@ -133,7 +133,7 @@ if ((uiNamespace getVariable ["Weapon_Magazine",0]) isEqualTo 1 || {(uiNamespace
_y = _x;
{
if (!(_x in _listedItems) && _x != "") then {
- _iS = [_x,_y] call TON_fnc_index;
+ _iS = [_x,_y] call life_util_fnc_index;
if !(_iS isEqualTo -1) then {
_z = _y select _iS;
if (!((_z select 3) isEqualTo -1)) then {
diff --git a/Altis_Life.Altis/core/shops/fn_weaponShopSelection.sqf b/Altis_Life.Altis/core/shops/fn_weaponShopSelection.sqf
index 065894710..fafdb6f96 100644
--- a/Altis_Life.Altis/core/shops/fn_weaponShopSelection.sqf
+++ b/Altis_Life.Altis/core/shops/fn_weaponShopSelection.sqf
@@ -20,7 +20,7 @@ if ((uiNamespace getVariable ["Weapon_Shop_Filter",0]) isEqualTo 1) then {
_itemArray = M_CONFIG(getArray,"WeaponShops",_shop,"items");
_itemArray append M_CONFIG(getArray,"WeaponShops",_shop,"mags");
_itemArray append M_CONFIG(getArray,"WeaponShops",_shop,"accs");
- _item = [_item,_itemArray] call TON_fnc_index;
+ _item = [_item,_itemArray] call life_util_fnc_index;
_price = ((_itemArray select _item) select 3);
_priceTag ctrlSetStructuredText parseText format ["Price: $%1",[(_price)] call life_fnc_numberText];
_control lbSetValue[_index,_price];
diff --git a/Altis_Life.Altis/core/utils/fn_index.sqf b/Altis_Life.Altis/core/utils/fn_index.sqf
new file mode 100644
index 000000000..9e79f271a
--- /dev/null
+++ b/Altis_Life.Altis/core/utils/fn_index.sqf
@@ -0,0 +1,12 @@
+/*
+ File: fn_index.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description: return index of _item in _stack
+*/
+params [
+ "_item",
+ ["_stack",[],[[]]]
+];
+
+_stack findIf {_item in _x};
diff --git a/Altis_Life.Altis/core/utils/fn_isNumber.sqf b/Altis_Life.Altis/core/utils/fn_isNumber.sqf
new file mode 100644
index 000000000..215649cdf
--- /dev/null
+++ b/Altis_Life.Altis/core/utils/fn_isNumber.sqf
@@ -0,0 +1,13 @@
+/*
+ File: fn_isNumber.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description: determines whether or not a string represents a valid number
+*/
+params [
+ ["_string","",[""]]
+];
+if (_string isEqualTo "") exitWith {false};
+private _array = _string splitString "";
+
+(_array findIf {!(_x in ["0","1","2","3","4","5","6","7","8","9"])}) isEqualTo -1;
diff --git a/Altis_Life.Altis/core/utils/fn_playerQuery.sqf b/Altis_Life.Altis/core/utils/fn_playerQuery.sqf
new file mode 100644
index 000000000..3a234bc32
--- /dev/null
+++ b/Altis_Life.Altis/core/utils/fn_playerQuery.sqf
@@ -0,0 +1,10 @@
+/*
+ File: fn_playerQuery.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ pass local variables to admin
+*/
+if (!isRemoteExecuted) exitWith {};
+
+[life_atmbank,life_cash,owner player,player,profileNameSteam,getPlayerUID player,playerSide] remoteExecCall ["life_fnc_adminInfo",remoteExecutedOwner];
diff --git a/life_server/Functions/Systems/fn_terrainSort.sqf b/Altis_Life.Altis/core/utils/fn_terrainSort.sqf
similarity index 100%
rename from life_server/Functions/Systems/fn_terrainSort.sqf
rename to Altis_Life.Altis/core/utils/fn_terrainSort.sqf
diff --git a/Altis_Life.Altis/core/vehicle/fn_clientGetKey.sqf b/Altis_Life.Altis/core/vehicle/fn_clientGetKey.sqf
new file mode 100644
index 000000000..16737225f
--- /dev/null
+++ b/Altis_Life.Altis/core/vehicle/fn_clientGetKey.sqf
@@ -0,0 +1,17 @@
+/*
+ File: fn_clientGetKey.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description: adds key to keychain and displays a message
+*/
+params [
+ ["_vehicle", objNull, [objNull]],
+ ["_from", "", [""]]
+];
+
+if (_vehicle in life_vehicles) exitWith {};
+
+private _name = getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName");
+hint format [localize "STR_NOTF_gaveKeysFrom",_from,_name];
+life_vehicles pushBack _vehicle;
+[getPlayerUID player,playerSide,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",2];
diff --git a/Altis_Life.Altis/core/vehicle/fn_deviceMine.sqf b/Altis_Life.Altis/core/vehicle/fn_deviceMine.sqf
index 834e627c0..fd6f6a209 100644
--- a/Altis_Life.Altis/core/vehicle/fn_deviceMine.sqf
+++ b/Altis_Life.Altis/core/vehicle/fn_deviceMine.sqf
@@ -126,7 +126,7 @@ for "_i" from 0 to 1 step 0 do {
_vehicle_data = _vehicle getVariable ["Trunk",[[],0]];
_inv = +(_vehicle_data select 0);
_space = (_vehicle_data select 1);
- _itemIndex = [_resource,_inv] call TON_fnc_index;
+ _itemIndex = [_resource,_inv] call life_util_fnc_index;
_weight = [_vehicle] call life_fnc_vehicleWeight;
_random = 10 + round((random(10)));
_sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; // Get a sum base of the remaining weight..
diff --git a/Altis_Life.Altis/core/vehicle/fn_vehStoreItem.sqf b/Altis_Life.Altis/core/vehicle/fn_vehStoreItem.sqf
index 93a77f875..5a11359e5 100644
--- a/Altis_Life.Altis/core/vehicle/fn_vehStoreItem.sqf
+++ b/Altis_Life.Altis/core/vehicle/fn_vehStoreItem.sqf
@@ -14,7 +14,7 @@ if ((life_trunk_vehicle getVariable ["trunk_in_use_by",player]) != player) exitW
_ctrl = ctrlSelData(3503);
_num = ctrlText 3506;
-if (!([_num] call TON_fnc_isnumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
+if (!([_num] call life_util_fnc_isNumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
_num = parseNumber(_num);
if (_num < 1) exitWith {hint localize "STR_MISC_Under1";};
@@ -27,7 +27,7 @@ _inv = _veh_data select 0;
if (_ctrl == "goldbar" && {!(life_trunk_vehicle isKindOf "LandVehicle")}) exitWith {hint localize "STR_NOTF_canOnlyStoreInLandVeh";};
if (_ctrl == "money") then {
- _index = [_ctrl,_inv] call TON_fnc_index;
+ _index = [_ctrl,_inv] call life_util_fnc_index;
if (CASH < _num) exitWith {hint localize "STR_NOTF_notEnoughCashToStoreInVeh";};
if (_index isEqualTo -1) then {
_inv pushBack [_ctrl,_num];
@@ -44,7 +44,7 @@ if (_ctrl == "money") then {
if (((_totalWeight select 1) + _itemWeight) > (_totalWeight select 0)) exitWith {hint localize "STR_NOTF_VehicleFullOrInsufCap";};
if (!([false,_ctrl,_num] call life_fnc_handleInv)) exitWith {hint localize "STR_CouldNotRemoveItemsToPutInVeh";};
- _index = [_ctrl,_inv] call TON_fnc_index;
+ _index = [_ctrl,_inv] call life_util_fnc_index;
if (_index isEqualTo -1) then {
_inv pushBack [_ctrl,_num];
} else {
diff --git a/Altis_Life.Altis/core/vehicle/fn_vehTakeItem.sqf b/Altis_Life.Altis/core/vehicle/fn_vehTakeItem.sqf
index 6c0fb418d..4c0fb3f1c 100644
--- a/Altis_Life.Altis/core/vehicle/fn_vehTakeItem.sqf
+++ b/Altis_Life.Altis/core/vehicle/fn_vehTakeItem.sqf
@@ -17,11 +17,11 @@ if ((life_trunk_vehicle getVariable ["trunk_in_use_by",player]) != player) exitW
if ((lbCurSel 3502) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection";};
_ctrl = ctrlSelData(3502);
_num = ctrlText 3505;
-if (!([_num] call TON_fnc_isnumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
+if (!([_num] call life_util_fnc_isNumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
_num = parseNumber(_num);
if (_num < 1) exitWith {hint localize "STR_MISC_Under1";};
-_index = [_ctrl,((life_trunk_vehicle getVariable "Trunk") select 0)] call TON_fnc_index;
+_index = [_ctrl,((life_trunk_vehicle getVariable "Trunk") select 0)] call life_util_fnc_index;
_data = (life_trunk_vehicle getVariable "Trunk") select 0;
_old = life_trunk_vehicle getVariable "Trunk";
if (_index isEqualTo -1) exitWith {};
diff --git a/Altis_Life.Altis/dialog/cell_phone.hpp b/Altis_Life.Altis/dialog/cell_phone.hpp
index f761b3082..6c238b398 100644
--- a/Altis_Life.Altis/dialog/cell_phone.hpp
+++ b/Altis_Life.Altis/dialog/cell_phone.hpp
@@ -60,7 +60,7 @@ class Life_cell_phone {
idc = 3015;
text = "$STR_CELL_TextMSGBtn";
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
- onButtonClick = "[] call TON_fnc_cell_textmsg";
+ onButtonClick = "[_this, 'player'] call life_fnc_sendMessage";
x = 0.11;
y = 0.35;
w = 0.2;
@@ -79,7 +79,7 @@ class Life_cell_phone {
idc = 3016;
text = "$STR_CELL_TextPolice";
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
- onButtonClick = "[] call TON_fnc_cell_textcop";
+ onButtonClick = "[_this, 'cop'] call life_fnc_sendMessage";
x = 0.32;
y = 0.35;
w = 0.2;
@@ -90,7 +90,7 @@ class Life_cell_phone {
idc = 3017;
text = "$STR_CELL_TextAdmins";
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
- onButtonClick = "[] call TON_fnc_cell_textadmin";
+ onButtonClick = "[_this, 'admin'] call life_fnc_sendMessage";
x = 0.53;
y = 0.35;
w = 0.2;
@@ -101,7 +101,7 @@ class Life_cell_phone {
idc = 3020;
text = "$STR_CELL_AdminMsg";
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
- onButtonClick = "[] call TON_fnc_cell_adminmsg";
+ onButtonClick = "[_this, 'adminToPlayer'] call life_fnc_sendMessage";
x = 0.32;
y = 0.4;
w = 0.2;
@@ -112,7 +112,7 @@ class Life_cell_phone {
idc = 3021;
text = "$STR_CELL_AdminMSGAll";
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
- onButtonClick = "[] call TON_fnc_cell_adminmsgall";
+ onButtonClick = "[_this, 'adminAll'] call life_fnc_sendMessage";
x = 0.53;
y = 0.4;
w = 0.2;
@@ -123,7 +123,7 @@ class Life_cell_phone {
idc = 3022;
text = "$STR_CELL_EMSRequest";
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
- onButtonClick = "[] call TON_fnc_cell_emsrequest";
+ onButtonClick = "[_this, 'med'] call life_fnc_sendMessage";
x = 0.11;
y = 0.45;
w = 0.2;
@@ -140,4 +140,4 @@ class Life_cell_phone {
h = (1 / 25);
};
};
-};
\ No newline at end of file
+};
diff --git a/Altis_Life.Altis/dialog/function/fn_bankDeposit.sqf b/Altis_Life.Altis/dialog/function/fn_bankDeposit.sqf
index ee09479ee..e8f584aac 100644
--- a/Altis_Life.Altis/dialog/function/fn_bankDeposit.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_bankDeposit.sqf
@@ -12,7 +12,7 @@ _value = parseNumber(ctrlText 2702);
//Series of stupid checks
if (_value > 999999) exitWith {hint localize "STR_ATM_GreaterThan";};
if (_value < 0) exitWith {};
-if (!([str(_value)] call TON_fnc_isnumber)) exitWith {hint localize "STR_ATM_notnumeric"};
+if (!([str(_value)] call life_util_fnc_isNumber)) exitWith {hint localize "STR_ATM_notnumeric"};
if (_value > CASH) exitWith {hint localize "STR_ATM_NotEnoughCash"};
CASH = CASH - _value;
diff --git a/Altis_Life.Altis/dialog/function/fn_bankTransfer.sqf b/Altis_Life.Altis/dialog/function/fn_bankTransfer.sqf
index ceed20547..1b3bdfd6c 100644
--- a/Altis_Life.Altis/dialog/function/fn_bankTransfer.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_bankTransfer.sqf
@@ -14,7 +14,7 @@ if ((lbCurSel 2703) isEqualTo -1) exitWith {hint localize "STR_ATM_NoneSelected"
if (isNil "_unit") exitWith {hint localize "STR_ATM_DoesntExist"};
if (_value > 999999) exitWith {hint localize "STR_ATM_TransferMax";};
if (_value < 0) exitWith {};
-if (!([str(_value)] call TON_fnc_isnumber)) exitWith {hint localize "STR_ATM_notnumeric"};
+if (!([str(_value)] call life_util_fnc_isNumber)) exitWith {hint localize "STR_ATM_notnumeric"};
if (_value > BANK) exitWith {hint localize "STR_ATM_NotEnoughFunds"};
_tax = _value * LIFE_SETTINGS(getNumber,"bank_transferTax");
if ((_value + _tax) > BANK) exitWith {hint format [localize "STR_ATM_SentMoneyFail",_value,_tax]};
diff --git a/Altis_Life.Altis/dialog/function/fn_bankWithdraw.sqf b/Altis_Life.Altis/dialog/function/fn_bankWithdraw.sqf
index a49cf4201..cf653d2c0 100644
--- a/Altis_Life.Altis/dialog/function/fn_bankWithdraw.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_bankWithdraw.sqf
@@ -10,7 +10,7 @@ private ["_value"];
_value = parseNumber(ctrlText 2702);
if (_value > 999999) exitWith {hint localize "STR_ATM_WithdrawMax";};
if (_value < 0) exitWith {};
-if (!([str(_value)] call TON_fnc_isnumber)) exitWith {hint localize "STR_ATM_notnumeric"};
+if (!([str(_value)] call life_util_fnc_isNumber)) exitWith {hint localize "STR_ATM_notnumeric"};
if (_value > BANK) exitWith {hint localize "STR_ATM_NotEnoughFunds"};
if (_value < 100 && BANK > 20000000) exitWith {hint localize "STR_ATM_WithdrawMin"}; //Temp fix for something.
diff --git a/Altis_Life.Altis/dialog/function/fn_safeStore.sqf b/Altis_Life.Altis/dialog/function/fn_safeStore.sqf
index b94035c54..df2709c99 100644
--- a/Altis_Life.Altis/dialog/function/fn_safeStore.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_safeStore.sqf
@@ -12,7 +12,7 @@ _ctrl = CONTROL_DATA(3503);
_num = ctrlText 3506;
//Error checks
-if (!([_num] call TON_fnc_isnumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
+if (!([_num] call life_util_fnc_isNumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
_num = parseNumber(_num);
if (_num < 1) exitWith {hint localize "STR_Cop_VaultUnder1";};
if (!(_ctrl isEqualTo "goldBar")) exitWith {hint localize "STR_Cop_OnlyGold"};
diff --git a/Altis_Life.Altis/dialog/function/fn_safeTake.sqf b/Altis_Life.Altis/dialog/function/fn_safeTake.sqf
index 6b1596160..fe6b3c0dd 100644
--- a/Altis_Life.Altis/dialog/function/fn_safeTake.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_safeTake.sqf
@@ -15,7 +15,7 @@ _num = ctrlText 3505;
_safeInfo = life_safeObj getVariable ["safe",0];
//Error checks
-if (!([_num] call TON_fnc_isnumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
+if (!([_num] call life_util_fnc_isNumber)) exitWith {hint localize "STR_MISC_WrongNumFormat";};
_num = parseNumber(_num);
if (_num < 1) exitWith {hint localize "STR_Cop_VaultUnder1";};
if (!(_ctrl isEqualTo "goldBar")) exitWith {hint localize "STR_Cop_OnlyGold"};
diff --git a/Altis_Life.Altis/dialog/function/fn_sellGarage.sqf b/Altis_Life.Altis/dialog/function/fn_sellGarage.sqf
index f291d1192..c078be048 100644
--- a/Altis_Life.Altis/dialog/function/fn_sellGarage.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_sellGarage.sqf
@@ -46,6 +46,16 @@ _sellPrice = _purchasePrice * _multiplier;
if (!(_sellPrice isEqualType 0) || _sellPrice < 1) then {_sellPrice = 500;};
+closeDialog 0;
+private _action = [
+ format[localize "STR_Garage_SellWarn", getText(configFile >> "CfgVehicles" >> _vehicle >> "displayName"), [_sellPrice] call life_fnc_numberText],
+ localize "STR_Garage_SellWarnTitle",
+ localize "STR_Global_Yes",
+ localize "STR_Global_No"
+] call BIS_fnc_guiMessage;
+
+if !(_action) exitWith {};
+
if (life_HC_isActive) then {
[_vid,_pid,_sellPrice,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleDelete",HC_Life];
} else {
@@ -66,4 +76,4 @@ if (LIFE_SETTINGS(getNumber,"player_advancedLog") isEqualTo 1) then {
};
life_action_delay = time;
-closeDialog 0;
\ No newline at end of file
+closeDialog 0;
diff --git a/Altis_Life.Altis/dialog/function/fn_spawnConfirm.sqf b/Altis_Life.Altis/dialog/function/fn_spawnConfirm.sqf
index 9f6dc95d7..603f50fcb 100644
--- a/Altis_Life.Altis/dialog/function/fn_spawnConfirm.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_spawnConfirm.sqf
@@ -17,7 +17,7 @@ if (life_spawn_point isEqualTo []) then {
if (isNil {(call compile format ["%1",_sp select 0])}) then {
player setPos (getMarkerPos (_sp select 0));
} else {
- _spawnPos = (call compile format ["%1",_sp select 0]) call BIS_fnc_selectRandom;
+ _spawnPos = selectRandom (call compile format ["%1",_sp select 0]);
_spawnPos = _spawnPos buildingPos 0;
player setPos _spawnPos;
};
@@ -39,13 +39,13 @@ if (life_spawn_point isEqualTo []) then {
};
{_bPos = _bPos - [(_house buildingPos _x)];} forEach (_house getVariable ["slots",[]]);
- _pos = _bPos call BIS_fnc_selectRandom;
+ _pos = selectRandom _bPos;
player setPosATL _pos;
} else {
player setPos (getMarkerPos (life_spawn_point select 0));
};
} else {
- _spawnPos = (call compile format ["%1", life_spawn_point select 0]) call BIS_fnc_selectRandom;
+ _spawnPos = selectRandom (call compile format ["%1", life_spawn_point select 0]);
_spawnPos = _spawnPos buildingPos 0;
player setPos _spawnPos;
};
@@ -60,4 +60,3 @@ if (life_firstSpawn) then {
[] call life_fnc_welcomeNotification;
};
[] call life_fnc_playerSkins;
-[] call life_fnc_hudSetup;
diff --git a/Altis_Life.Altis/dialog/function/fn_useGangBank.sqf b/Altis_Life.Altis/dialog/function/fn_useGangBank.sqf
index eace99c7b..cdcac3051 100644
--- a/Altis_Life.Altis/dialog/function/fn_useGangBank.sqf
+++ b/Altis_Life.Altis/dialog/function/fn_useGangBank.sqf
@@ -18,7 +18,7 @@ if ((time - life_action_delay) < 0.5) exitWith {hint localize "STR_NOTF_ActionDe
if (isNil {(group player) getVariable "gang_name"}) exitWith {hint localize "STR_ATM_NotInGang"}; // Checks if player isn't in a gang
if (_value > 999999) exitWith {hint localize "STR_ATM_WithdrawMax";};
if (_value < 1) exitWith {};
-if (!([str(_value)] call TON_fnc_isnumber)) exitWith {hint localize "STR_ATM_notnumeric"};
+if (!([str(_value)] call life_util_fnc_isNumber)) exitWith {hint localize "STR_ATM_notnumeric"};
if (_deposit && _value > CASH) exitWith {hint localize "STR_ATM_NotEnoughCash"};
if (!_deposit && _value > _gFund) exitWith {hint localize "STR_ATM_NotEnoughFundsG"};
diff --git a/Altis_Life.Altis/dialog/impound.hpp b/Altis_Life.Altis/dialog/impound.hpp
index 6fcc8691a..fd58e4beb 100644
--- a/Altis_Life.Altis/dialog/impound.hpp
+++ b/Altis_Life.Altis/dialog/impound.hpp
@@ -76,7 +76,7 @@ class Life_impound_menu {
class SellCar: Life_RscButtonMenu {
idc = -1;
text = "$STR_Global_Sell";
- onButtonClick = "[] call life_fnc_sellGarage; closeDialog 0;";
+ onButtonClick = "closeDialog 0; [] spawn life_fnc_sellGarage;";
x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
y = 0.9 - (1 / 25);
w = (6.25 / 40);
@@ -126,4 +126,4 @@ class Life_impound_menu {
h = (1 / 15);
};
};
-};
\ No newline at end of file
+};
diff --git a/Altis_Life.Altis/icons/ico_mail.paa b/Altis_Life.Altis/icons/ico_mail.paa
deleted file mode 100644
index 7ff088d75..000000000
Binary files a/Altis_Life.Altis/icons/ico_mail.paa and /dev/null differ
diff --git a/Altis_Life.Altis/icons/ico_map.paa b/Altis_Life.Altis/icons/ico_map.paa
deleted file mode 100644
index 159af9cc1..000000000
Binary files a/Altis_Life.Altis/icons/ico_map.paa and /dev/null differ
diff --git a/Altis_Life.Altis/icons/ico_settings.paa b/Altis_Life.Altis/icons/ico_settings.paa
deleted file mode 100644
index 28769cfcd..000000000
Binary files a/Altis_Life.Altis/icons/ico_settings.paa and /dev/null differ
diff --git a/Altis_Life.Altis/icons/ico_speech.paa b/Altis_Life.Altis/icons/ico_speech.paa
deleted file mode 100644
index 7a42d86be..000000000
Binary files a/Altis_Life.Altis/icons/ico_speech.paa and /dev/null differ
diff --git a/Altis_Life.Altis/stringtable.xml b/Altis_Life.Altis/stringtable.xml
index e5795e5b1..ece51c246 100644
--- a/Altis_Life.Altis/stringtable.xml
+++ b/Altis_Life.Altis/stringtable.xml
@@ -1,13394 +1,13478 @@
-
-
-
-
- Setting up client, please wait...
-
- Configurando cliente. Por favor espere...
-
- Einrichten des Clients, bitte warten...
- Caricamento dati, attendi...
- Configuration du client. Patientez s'il vous plait...
- Configurando o cliente. Por favor, aguarde...
-
- 配置客户端,请稍等...
-
-
- Waiting for the server to be ready...
-
- Esperando a que el servidor esté listo...
-
- Warten, bis der Server bereit ist...
- Caricamento Server, attendi...
- En attente du chargement du serveur...
- Esperando o servidor estar pronto...
-
- 等待服务器准备就绪...
-
-
- extDB failed to load, please contact an administrator.
-
- extDB no se pudo cargar, por favor contacte a un administrador.
-
- extDB konnte nicht geladen werden, wenden Sie sich bitte an einen Administrator.
- C'è stato un'errore con extDB, perfavore contatta un amministratore.
- extDB ne s'est pas lancé correctement. Veuillez contacter un administrateur.
- O extDB falhou ao carregar, por favor, contacte um administrador.
-
- 数据加载失败,请联系管理员。
-
-
- Finishing client setup procedure...
-
- Finalizando configuración del cliente...
-
- Finalisation de la procédure de configuration du client...
- Fertigstellen der Client-Einrichtungs-Prozedur...
- Completando procedura d'inizializzazione
- Terminando o processo de configuração do cliente...
-
- 完成客户端设置程序...
-
-
-
-
- Bruce's Outback Outfits
- Bruceovy Outback Oblečení
- Vêtements de Bruce
- Tienda de Ropa
-
- Loja de Roupas
- Sklep odzieżowy
- Emporio di Bruce
- Bruce's Outback Outfits
- 服装商店
-
-
- Altis Police Department Shop
- Altis policejní oddělení Shop
- Vêtements policiers
- Tienda del Departamento de Policía
-
- Loja de Roupas Policiais
- Sklep Policyjny
- Dipartimento della Polizia di Altis
- Altis Polizei Department Geschäft
- 警局商店
-
-
- Mohammed's Jihadi Shop
- Mohamedův džihád Shop
- Vêtements rebelle
- Tienda Jihadi de Mohamed
- Negozio della Jihad di Mohammed
-
- Loja de Roupas Rebeldes
- Sklep samobójców AKBAR
- Mohammed's Ausrüstungen
- 叛军商店
-
-
- Steve's Diving Shop
- Steve je potápění obchod
- Vêtements de plongée de Steve
- Tienda de Buceo
- Negozio Sub di Steve
-
- Steve's Taucherausrüstung
- Loja de equipamentos para Mergulho
- Sklep dla nurków
- 潜水商店
-
-
- Billy Joe's Clothing
- Billy Joe oblečení
- Tienda de Ropa de Billy Joe
-
- Billy Joe's Bekleidung
- Emporio di Billy
- Vêtements de tir
- Loja de Roupa do Billy Joe
- Billy Joe Odzież
- 服装商店
-
-
- Billy Joe's Firearms
- Billy Joe Střelné zbraně
- Tienda de Armas de Billy Joe
-
- Billy Joe's Schusswaffen
- Armeria di Billy Joe
- Armurerie de Billy Joe
- Loja de Armas do Billy Joe
- Broń palna Billy Joe
- 武器商店
-
-
- Bobby's Kart-Racing Outfits
- Billy Joe Střelné zbraně
- Vêtements de kart
- Tienda de Trajes de Carreras
- Vestiario da Pilota
-
- Bobby's Gokart Rennbekleidung
- Loja de equipamentos para Kart
- Sklep Kartingowy
- 卡丁车赛车服
-
-
- Altis Market
- Altis Market
- Mercado de Altis
-
- Altis Markt
- Mercato
- Marché d'Altis
- Mercado
- Market Altis
- 市场
-
-
- Rebel Market
- Rebel Market
- Mercado Rebelde
-
- Rebellen Markt
- Mercato Ribelle
- Marché Rebelle
- Mercado Rebelde
- Market Rebeliantów
- 叛军市场
-
-
- Gang Market
- gang Market
- Mercado Pandillero
-
- Gang Markt
- Mercato Gang
- Marché de Gang
- Mercado da Gangue
- Market Gangu
- 帮派市场
-
-
- Gang Clothing
- gang Oblečení
- Ropa Pandillera
-
- Gang Kleidung
- Gang Abbigliamento
- Vêtements de Gang
- Roupa Gangue
- Gang Odzież
- 帮派服装
-
-
- Wong's Food Cart
- Wongova Food košík
- Kiosko de Wong
-
- Wong's Spezialitäten
- Alimentari
- Restaurant de Wong
- Praça de Alimentação
- Przysmaki Wonga
- 食品商
-
-
- Gyro's Coffee
- gyros Coffee
- Cafetería de Gyro
-
- Gyro's Café
- Caffè
- Café de Gyro
- Café do Gyro
- Kawiarnia
- 咖啡店
-
-
- Tonic's Narcotics
- Tonic je narkotika
- Narcotraficante
-
- Drogendealer
- Spacciatore
- Dealeur de Drogue
- Traficante
- Sprzedawca 'Trawy'
- 非法药品贸易商
-
-
- Oil Trader
- olej Trader
- Comerciante de Petroleo
-
- Ölhändler
- Vendita Petrolio
- Acheteur de Pétrole
- Comprador de Petróleo
- Skup Ropy
- 石油贸易商
-
-
- Local Fish Market
- Místní Fish Market
- Mercado Local del Pescado
-
- Fischmarkt
- Pescivendolo
- Marché de Poissons
- Mercado de Peixes
- Sklep Rybny
- 海产品市场
-
-
- Glass Trader
- sklo Trader
- Comerciante de Vidrio
-
- Glashändler
- Vendita Vetro
- Acheteur de Verre
- Comprador de Vidro
- Skup Szkła
- 玻璃贸易商
-
-
- Altis Industrial Trader
- Altis Industrial Trader
- Comerciante Industrial
-
- Altis Industriehandel
- Vendita materiali industriali
- Acheteur de minerais
- Comprador de Material Indústrial
- Skup materiałów przemysłowych
- 铁/铜贸易
-
-
- APD Item Shop
- APD Item Shop
- Equipamiento Policial
-
- APD Ausrüstung
- Negozio Polizia
- Equipement policier
- Equipamentos da Polícia
- Zbrojownia Policji
- 警察物品店
-
-
- Juan's Cement Laying
- Juanovo Cement Pokládka
- Fabrica de Cemento de Juan
-
- Juan's Zementleger
- Vendita Cemento
- Acheteur de Ciment
- Comprador de Cimento
- Wytwórnia cementu
- 水泥贸易商
-
-
- Cash 4 Gold
- Peněžní 4 Gold
- Comprador de Oro
-
- Goldhändler
- Vendita Oro
- Acheteur d'Or
- Comprador de Ouro
- Skup złota
- 黄金贸易商
-
-
- Diamond Dealer
- Diamond Dealer
- Comerciante de Diamantes
-
- Juwelier
- Gioielleria
- Acheteur de Diamant
- Comprador de Diamante
- Skup Diamentów
- 钻石贸易商
-
-
- Salt Trader
- sůl Trader
- Comerciante de Sal
-
- Salzhändler
- Vendita Sale
- Acheteur de Sel
- Comprador de Sal
- Skup soli
- 食盐贸易商
-
-
- Fuel Station Coffee
- Palivo Coffee Station
- Café de la Station service
- Cafeteria de Gasolinera
- Stazione di Servizio
-
- Tankstellen Café
- Loja de Conveniência
- Caffe OLLEN
- 加油站咖啡店
-
-
-
-
- Close
- Zavřít
- Cerrar
-
- Schließen
- Fermer
- Chiudi
- Fechar
- Zamknij
- 关闭
-
-
- Sell
- Prodat
- Vender
-
- Verkaufen
- Vendre
- Vendi
- Vender
- Sprzedaj
- 出售
-
-
- Buy
- Koupit
- Comprar
-
- Kaufen
- Acheter
- Compra
- Comprar
- Kup
- 购买
-
-
- Magazines
- časopisy
- Chargeurs
- Cargadores
- Caricatori
- Magazyny
-
- Munições
- Magazine
- 弹药
-
-
- Accessories
- Příslušenství
- Accessoires
- Accesorios
- Accessori
- Akcesoria
-
- Acessórios
- Zubehör
- 附件
-
-
- Weapons
- Zbraně
- Armes
- Armas
- Armi
- Broń
-
- Armas
- Bewaffnung
- 武器
-
-
- Give
- Dát
- Dar
-
- Geben
- Donner
- Dai
- Dar
- Daj
- 给予
-
-
- Use
- Použití
- Usar
-
- Benutzen
- Utiliser
- Usa
- Usar
- Użyj
- 使用
-
-
- Remove
- Odstranit
- Remover
-
- Entfernen
- Supprimer
- Rimuovi
- Remover
- Usuń
- 删除
-
-
- Settings
- Nastavení
- Configuración
-
- Einstellungen
- Paramètres
- Impostazioni
- Configurar
- Opcje
- 设置
-
-
- Rent
- Nájemné
- Rentar
-
- Mieten
- Louer
- Affitta
- Alugar
- Wynajmij
- 租赁
-
-
- Retrieve
- získat
- Recuperar
-
- Ausparken
- Récupérer
- Ritira
- Recuperar
- Odzyskaj
- 取回
-
-
- You did not select anything.
- Nevybrali jste nic.
- No seleccionastes algo.
-
- Du hast nichts ausgewählt.
- Vous n'avez rien sélectionné.
- Non hai selezionato nulla.
- Você não selecionou nada.
- Niczego nie zaznaczyłeś.
- 你没有选择任何东西。
-
-
- Yes
- Ano
- Si
-
- Ja
- Oui
- Si
- Sim
- Tak
- 是
-
-
- No
- Ne
- No
-
- Nein
- Non
- No
- Não
- Nie
- 否
-
-
- Cancel
- Zrušit
- Cancelar
-
- Abbrechen
- Annuler
- Annulla
- Cancelar
- Anuluj
- 取消
-
-
-
-
- Admin Menu
- Nabídka admin
- Menu de Admin
-
- Admin Menü
- Menu Admin
- Menu Admin
- Menu Admin
- Admin Menu
- 管理菜单
-
-
- Put the amount you want to compensate:
- Vložte částku, kterou chcete kompenzovat:
- Entrez le montant à rembourser
- Pon la cantidad que quieres compensar:
- Inserire l'importo da rimborsare:
-
- Trage den Wert für die Entschädigung ein:
- Coloque a quantidade que você quer compensar:
- Wprowadź wartość rekompensaty
- 输入赔偿金额:
-
-
- Get ID
- Získat ID
- Ver ID
-
- ID abfragen
- Obtenir ID
- Vedi ID
- Obter ID
- ID gracza
- 获取 ID
-
-
- Spectate
- spectate
- Observar
- Osserva
-
- Zuschauen
- Regarder
- Observar
- Obserwuj
- 观看
-
-
- Teleport
- Teleport
- Teleport
- Teleport
-
- Teleport
- Téléporter
- Teleportar
- Teleport
- 传送
-
-
- TP Here
- TP Zde
- TP Aquí
- TP Qui
-
- TP Hier
- TP Ici
- TP Aqui
- Do Mnie
- 传送到这儿
-
-
- You cannot teleport the player here because they are inside of a vehicle.
- Nelze teleportovat přehrávač zde proto, že jsou uvnitř vozidla.
- Vous ne pouvez pas TP le joueur ici, car il est actuellement dans un véhicule.
- No puedes teletransportar a este jugador aquí, porque está dentro de un vehículo.
- Il giocatore non può essere teletrasportato perché in un veicolo.
- Nie można teleportować gracza tutaj, ponieważ są one wewnątrz pojazdu.
- Você não pode se teletransportar o jogador aqui, porque ele esta dentro de um veículo.
- Вы не можете телепортировать игрока здесь, потому что они находятся внутри автомобиля.
- Du kannst den Spieler nicht hierher teleportieren, weil dieser im Inneren eines Fahrzeugs sitzt.
- 你不能将玩家传送到这里,因为他们在车内。
-
-
- Debug
- Ladit
- Debug
- Debug
-
- Debug
- Debug
- Depuração
- Debug
- 清除BUG
-
-
- Comp
- Comp
- Comp
- Comp
-
- Entschädigen
- Compenser
- Compensar
- Comp
- 赔偿金
-
-
- GodMode
- Božský mód
- Modo Dios
- GodMode
-
- Gott-Mod
- God
- Modo Deus
- GodMode
- 上帝模式
-
-
- Freeze
- Zmrazit
- Congelar
- Congelare
-
- Einfrieren
- Freeze
- Congelar
- Zamroź
- 冻结
-
-
- Markers
- markery
- Marcadores
- Indicatori
-
- Spieler Markierungen
- Marqueurs
- Marcações
- Markery
- 标记
-
-
-
-
- Querying...
- Dotazování ...
- Buscando...
-
- Abfrage läuft...
- Interrogation...
- Ricerca...
- Pesquisando...
- Wyszukuję...
- 查询...
-
-
- Searching Database for vehicles...
- Vyhledávání databáze pro vozidla ...
- Buscando Vehiculo en la Base de Datos
-
- Durchsuche Garage nach Fahrzeugen...
- Recherche des véhicules dans le garage...
- Ricerca di veicoli nel Database...
- Buscando por veículo na base de dados...
- Szukam pojazdu w bazie danych...
- 从数据库中搜索载具...
-
-
- You are already querying a player.
- Již jste dotazování přehrávač.
- Ya estan buscando a un jugador.
-
- Du fragst bereits einen Spieler ab.
- Vous êtes déjà en train d'interroger ce joueur.
- Stai già ispezionando un giocatore.
- Você já está buscando por um jogador.
- Przeszukujesz gracza
- 你已经在查询玩家了。
-
-
- Player no longer exists?
- Hráč neexistuje?
- El jugador ya no existe?
-
- Spieler existiert nicht mehr?
- Le joueur ne semble pas exister.
- Il giocatore non esiste più
- Jogador não existe mais?
- Gracz już nie istnieje?
- 玩家不存在?
-
-
- You are about to give yourself $%1 to compensate to another player <br/><br/>You must give this cash to the person you are compensating manually.
- Chystáte se dát si $%1 kompenzovat jinému hráči <br/><br/> Musíte dát tuto hotovost na osoby, které jsou kompenzačním ručně.
- Estas a punto de darte $%1 para compensar a otro jugador<br/><br/> Debes darle el dinero a la persona manualmente.
- Stai per donarti €%1 per rimborsare un altro giocatore <br/><br/> Dovrai donare il denaro manualmente.
-
- Du bist dabei dir selbst $%1 zu geben, um einen anderen Spieler zu entschädigen.<br/><br/>Gib das Geld dann an den Spieler weiter.
- Vous êtes sur le point de vous donner $%1 pour rembourser un autre joueur <br/><br/> Merci de le lui donner manuellement.
- Você está prestes a dar para você mesmo R$%1 para compensar outro jogador <br/><br/>Você deve dar este dinheiro para a pessoa que você está compensando manualmente.
- Właśnie przydzieliłeś sobie $%1 w celu rekompensaty graczowi <br/><br/>Musisz przekazać te środki osobiście osobie poszkodowanej.
- 你将获得赔偿金 $%1,小心别输入错误了 <br/><br/>你只能手动操作把这笔钱给玩家。
-
-
- You have added $%1 to your account.
- Přidali jste $%1 se ke svému účtu.
- Has agregado $%1 a tu cuenta.
- €%1 ti sono stati accreditati.
-
- Dir wurden $%1 auf deinem Bankkonto gutgeschrieben.
- Vous avez ajouté $%1 à votre compte
- Você adicionou R$%1 em sua conta.
- Przekazałeś na konto $%1
- 你已将 $%1 添加到你的账户上 。
-
-
- You can not go above $999,999
- Nemůžete jít nad $ 999999
- No te puedes dar más de $999,999
- Non puoi superare i €999.999
-
- Maximaler Wert $999,999!
- Vous ne pouvez pas aller au-dessus $999,999 !
- Você não pode ir além de $999,999!
- Nie można obracać kwotami wyższymi niż $999,999!
- 你不能处理超过 $999,999 的资金
-
-
- Please type in the amount to compensate.
- Prosím, zadejte částku, která má kompenzovat.
- Por favor pon la cantidad a compensar.
- Si prega di inserire l'importo da rimborsare.
-
- Bitte Entschädigungsbetrag eingeben.
- S'il vous plaît entrez le montant pour compenser.
- Por favor, insira a quantidade para compensar.
- Wprowadź kwotę rekompensaty
- 请输入赔偿金额。
-
-
- You have disabled %1's input.
- Jste zakázali vstup %1 je.
- Has deshabilitado los controles de %1
- Hai disattivato l'input di %1.
-
- Du hast %1 eingefroren. Er kann sich nicht mehr bewegen.
- Vous avez désactivé les contrôles de %1.
- Você desabilitou as entradas de %1.
- Zablokowałeś grę gracza $%1
- 您被禁止 %1 秒输入。
-
-
- You have enabled %1's input.
- Jste povolili vstup %1 je.
- Has habilitado los controles de %1
- Hai riabilitato l'input di %1.
-
- Du hast %1 wieder aufgetaut.
- Vous avez activé les contrôles de %1.
- Você habilitou as entradas de %1.
- Odblokowałeś grę gracza $%1
- 你被允许 %1 秒输入。
-
-
- You can't do that dumbass.
- Můžete to udělat blbec.
- No puedes hacer eso, pendejo
- Impossibile.
-
- Das geht gerade nicht.
- Vous ne pouvez pas le faire sur vous-même.
- Você não pode fazer isso, idiota.
- Tak nie można!
- 你不可以这样做。
-
-
- Your Admin Level is not high enough.
- Váš správce úroveň není dostatečně vysoká.
- No tienes suficiente nivel de Admin.
- Il tuo livello amministratore non soddisfa i requisiti.
-
- Dein Admin Level ist nicht hoch genug.
- Votre niveau admin n'est pas suffisamment élevé.
- Seu nível de Admin não é alto o bastante.
- Nie masz wystarczających uprawnień, za niski poziom administracyjny
- 您的管理等级不够高。
-
-
- Player Markers Disabled.
- Hráč Markers pro invalidy.
- Marqueurs désactivés
- Marcadores de Jugadores Deshabilitados
- Indicatori Giocatori Disabilitati.
-
- Spieler Markierungen deaktiviert.
- Marcações dos jogadores desabilitada.
- Markery 'OFF' graczy Wyłączone
- 禁用玩家标记。
-
-
- Player Markers Enabled.
- Hráč Markers Povoleno.
- Marqueurs activés
- Marcadores de Jugadores habilitados.
- Indicatori Giocatori Abilitati.
-
- Spieler Markierungen aktiviert.
- Marcações dos jogadores habilitada.
- Markery 'ON' graczy Włączone
- 启用玩家标记。
-
-
- God mode enabled
- nesmrtelnost povolen
- Mode Dieu activé
- Modo Dios habilitado
- Godmode abilitata
- God mode włączony
- Modo Deus ativado
- Режим бога включен
- Gott-Modus aktiviert.
- 启用上帝模式
-
-
- God mode disabled
- nesmrtelnost zakázán
- Mode Dieu désactivé
- Modo Dios deshabilitado
- Godmode disabilitata
- God mode wyłączony
- Modo Deus desativado
- Режим бога отключен
- Gott-Modus deaktiviert.
- 禁用上帝模式
-
-
- Action Cancelled
- akce byla zrušena
- Acción Cancelada
-
- Aktion abgebrochen.
- Action annulée
- Azione Annullata
- Ação Cancelada
- Anulowano akcję
- 操作取消
-
-
- Commander/Tactical View Disabled
- Commander/Tactical View Disabled
- Commander/Tactical View Disabled
- Commander/Tactical View Disabled
- Commander/Vue tactique désactivée
- Befehlshaber-Übersicht deaktiviert.
- Commander/Tactical View Disabled
- Commander/Tactical View Disabled
- Commander/Tactical View Disabled
- 指挥官/战术视图被禁用
-
-
- Hit spacebar to place the container.
- Hit mezerníku na místo Kontejner.
- Appuyez sur espace pour placer le conteneur.
- Aprieta la barra de espacio para colocar el Contenedor.
- Premi barra spaziatrice per posizionare il contenitore.
- Hit spacji, aby umieścić pojemnik.
- Pressione a barra de espaço para colocar.
- Хит пробел, чтобы поместить контейнер.
- Drücke die Leertaste, um den Container zu platzieren.
- 按空格键放置物品。
-
-
- Placement of container has been aborted.
- Placement of container has been aborted.
- Placement of container has been aborted.
- Placement of container has been aborted.
- Placement of container has been aborted.
- Placement of container has been aborted.
- Placement of container has been aborted.
- Placement of container has been aborted.
- Die Platzierung des Containers wurde abgebrochen.
- 物品放置已被中止.
-
-
- Your faction is not allowed to chop vehicles!
- Váš frakce není povoleno sekat vozidla!
- Votre faction ne peut pas vendre les véhicules !
- Tu facción no tiene permitido usar esta tienda!
- La tua fazione non può rubare veicoli!
- Twoja frakcja nie może posiekać pojazdy!
-
- Sua facção não têm direito de usar essa loja
- Deiner Fraktion ist es nicht erlaubt, Fahrzeuge bei dem Schrotthändler zu verkaufen!
- 你的帮派不允许出售这载具!
-
-
- A pickaxe is required
- Je vyžadován krumpáč
- Requieres un pico
-
- Hier benötigst du eine Spitzhacke!
- Vous avez besoin d'une pioche.
- Devi possedere un piccone!
- A picareta é necessária
- Wymagana jest kilof
- 你需要一把镐
-
-
- You are restrained
- Ty jsou omezeny
- Estas retenido
-
- Wie willst du mit gefesselten Händen sammeln?
- Vous êtes menotté.
- Sei stato ammanettato
- Você está algemado
- Ty skrępowaniem
- 你被限制
-
-
- You can't do this while you surrender
- Můžete to udělat, když se vzdáš
- No puedes hacer esto mientras te estas rindiendo
-
- Mit erhobenen Händen kannst du nichts sammeln!
- Vous ne pouvez pas faire cela tant que vous avez les mains sur la tête.
- Non puoi effettuare questa azione mentre tieni le mani in alto
- Você não pode fazer isso enquanto você se entrega
- Nie można tego zrobić, gdy się poddasz
- 你投降时不能这么做
-
-
- You can't gather this resource with this vehicle!
- Nemůžete shromáždit tento prostředek s tímto vozidlem!
- No puedes recolectar este recurso con este vehiculo!
-
- Du kannst diese Ressource nicht mit diesem Fahrzeug abbauen!
- Vous ne pouvez pas récolter cette ressource avec ce véhicule.
- Non puoi raccogliere questa risorsa con questo veicolo !
- Voce não pode colher este recurso com este veiculo!
- You can't gather this resource with this vehicle!
- 你不能用这载具收集这个资源!
-
-
- You have no business using this.
- Nemáš podnikání pomocí tohoto.
- Vous n'avez pas le niveau pour utiliser la console.
- No tienes permiso de usar esto.
- Non hai il permesso di farlo.
- Nie masz działalność z wykorzystaniem tego produktu.
- Você não tem nenhum negócio usando isto.
- У вас нет бизнеса с помощью этого.
- Du hast hier nichts verloren!
- 您无权这样做。
-
-
- Admin %1 has opened the debug console.
- Admin %1 otevřel ladění konzoli.
- Administrateur %1 a ouvert la console de debug.
- Administrador %1 ha abierto la consola de depuración.
- Admin %1 ha aperto la console di debug.
- Administrator %1 otworzył konsoli debugowania.
- Administrador %1 abriu o console de depuração.
- Администратор %1 открыл консоль отладки.
- Admin %1 hat die Debug-Konsole geöffnet.
- 管理员 %1 已打开调试控制台。
-
-
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- You cannot drop keys to a vehicle which is locked and you are inside of.
- Du kannst den Schlüssel nicht wegschmeißen, weil das Auto verschlossen ist und du drin sitzt.
- 你不能把钥匙掉在一辆锁着的车里,你就在车里面。
-
-
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- Emergency lights are not set for this vehicle.
- 此车辆没有设置应急灯。
-
-
-
-
- Bank Account Management
- Vedení bankovního účtu
- Cuenta Bancaria
-
- Bankkonto verwalten
- Gestion du Compte Bancaire
- Gestione Bancaria
- Conta Bancária
- Bankomat Altis
- 银行账户管理
-
-
- Withdraw
- ustoupit
- Retirar
-
- Abheben
- Retirer
- Preleva
- Sacar
- Wypłać
- 取款
-
-
- Deposit
- Vklad
- Depositar
-
- Einzahlen
- Déposer
- Deposita
- Depositar
- Deopozyt
- 存款
-
-
- Withdraw: Gang
- Odstoupit: Gang
- Retirer: Gang
- Retirar: Pandilla
-
- Sacar: gangue
- Ritira: Gang
- Wycofaj: Gang
- Abheben: Gang
- 取款:帮派
-
-
- Deposit: Gang
- Záloha: Gang
- Déposer: Gang
- Depositar: Pandilla
-
- Depositar: Gangue
- Deposita: Gang
- Depozyt: Gang
- Einzahlen: Gang
- 存款: 帮派
-
-
- Transfer
- Převod
- Transferir
-
- Überweisen
- Transférer
- Trasferisci
- Transferir
- Przelew
- 转账
-
-
- You can't deposit more then $999,999 at a time
- Nemůžete vložit více než 999.999 $ najednou
- No puedes depositar mas de $999,999 a la vez
-
- Du kannst nicht mehr als $999,999 gleichzeitig einzahlen.
- Vous ne pouvez pas déposer plus de $999,999.
- Non puoi depositare più di €999,999 alla volta
- Você não pode transferir mais de R$999.999 em uma transação
- Możesz jednorazowo zdeponować nie więcej niż $999,999
- 您一次不能存入超过 $999,999
-
-
- The amount entered isn't a numeric value.
- Uvedená částka není číselná hodnota.
- No escribistes un valor numérico.
-
- Die eingegebene Zahl ist keine richtige Zahl.
- La valeur entrée n'est pas un nombre.
- Il valore inserito non è numerico.
- O valor digitado não é um número.
- Wprwadzona wartość nie jest liczbą
- 输入的金额不是数值。
-
-
- You need to select someone to transfer to
- Je třeba vybrat někoho převést na
- Debes seleccionar a quien transferirle el dinero
-
- Du hast niemanden für die Überweisung ausgewählt.
- Sélectionnez une personne pour le transfert.
- Devi selezionare qualcuno a cui trasferire l'importo
- Você tem que selecionar para quem deseja transferir
- Musisz wybrać odbiorcę przelewu
- 您需要选择某人来转账
-
-
- The player selected doesn't seem to exist?
- Hráč vybraný Nezdá se, že neexistuje?
- Le joueur sélectionné ne semble pas exister
- El jugador que seleccionastes no existe?
-
- Der Spieler scheint nicht zu existieren?
- Sembra che il giocatore selezionato non esista
- O jogador selecionado parece não existir!
- Wybrany gracz wydaje się nie występować w grze
- 选定的玩家似乎不存在?
-
-
- You can't transfer more then $999,999
- Nemůžete přenést více než 999.999 $
- No puedes transferir más de $999,999
-
- Du kannst nicht mehr als $999,999 überweisen!
- Vous ne pouvez pas transférer plus de $999,999.
- Non puoi trasferire più di €999.000 alla volta
- Você pode trasferir no máximo R$999.999.
- Możesz jednorazowo przelać nie więcej niż $999,999
- 你转账不能超过 $999,999
-
-
- You don't have that much in your bank account!
- Nemusíte to hodně na váš bankovní účet!
- No tienes tanto dinero en tu cuenta de banco!
-
- Du hast nicht so viel Geld auf deinem Bankkonto!
- Vous n'avez pas autant dans votre compte en banque !
- Non hai fondi sufficienti nel tuo conto in banca!
- Você não tem todo esse dinhero na sua conta bancária
- Nie masz tyle środków na koncie!
- 你的银行账户里没有那么多钱!
-
-
- You don't have that much in your gang bank account!
- Nemusíte to hodně ve svém gang bankovní účet!
- No hay tanto dinero en la cuenta de tu pandilla!
- Il conto della gang non ha abbastanza denaro!
- Nie ma tego dużo na koncie bankowym gang!
-
- Vous n'avez pas autant sur le compte de votre gang !
- Você não tem todo esse dinhero na sua gangue!
- Ihr habt nicht genügend Geld auf dem Gangkonto!
- 你的帮派银行账户里没有那么多钱!
-
-
- You do not have enough money in your bank account, to transfer $%1 you will need $%2 as a tax fee.
- Nemáte dostatek peněz na váš bankovní účet, převést $%1 budete potřebovat $%2 jako daňový poplatek.
- No tienes el dinero suficiente, para transferir $%1 necesitaras $%2 para pagar como cuota.
-
- Du hast nicht genug Geld auf deinem Bankkonto, es kostet $%2 um $%1 zu überweisen.
- Vous n'avez pas assez d'argent dans votre compte bancaire, pour transférer $%1 vous devez payer $%2 de taxes.
- Non hai fondi sufficienti nel tuo conto in banca, per trasferire €%1 necessiti di €%2 per pagare la tassa di trasferimento.
- Você não tem dinheiro suficiente na sua conta bancária. Para trasferir R$%1 você irá pagar R$%2 de taxa
- Nie masz wystarczająco dużo środków na końcie, do przelewu $%1 będziesz potrzebował jeszcze $%2 na opłatę
- 你的银行账户里没有足够的钱, 要转账 $%1 你需要支付 $%2 作为手续费.
-
-
- You have transfered $%1 to %2.\n\nA tax fee of $%3 was taken for the wire transfer.
- Jste přenesli $%1 do %2. \n\nA daňový poplatek ve výši $%3 byla pořízena na bankovním převodem.
- Has transferido $%1 a $%2 \n\nUna cuota de $%3 fue tomada de tu cuenta.
-
- Du hast $%1 an %2 überwiesen.\n\nEine Gebühr von $%3 wurde verrechnet.
- Vous avez transféré $%1 à %2.\n\nA Une taxe de $%3 vous a été prélevée pendant le transfert.
- Hai trasferito €%1 a %2.\n\nSono stati trattenuti €%3 di tassa per il trasferimento.
- Você trasferiu R$%1 para %2.\n\nA taxa de trasferência foi de: R$%3.
- Przelałeś $%1 do %2.\n\nA opłata $%3 pobrana przez WIRE TRANSFER
- 你已转账 $%1 给 %2。\n\n手续费 $%3 已从你的账户扣除。
-
-
- %1 has wire transferred $%2 to you.
-
- %1 ha transferido $%2 a tu cuenta.
-
- %1 hat dir $%2 überwiesen.
- %1 vous a fait un virement de $%2.
- %1 ha effettuato un bonifico sul tuo conto di €%2
- %1 transferiu $%2 para a tua conta.
-
- %1 通过电汇将 $%2 转账给你。
-
-
- You can't withdraw more then $999,999
- Nemůžete zrušit více než 999.999 $
- No puedes retirar más de $999,999
-
- Du kannst nicht mehr als $999,999 abheben.
- Vous ne pouvez pas retirer plus de $999,999.
- Non puoi prelevare più di €999.000 in una volta
- Você pode sacar no máximo R$999.999
- Możesz jednorazowo pobrać maks $999,999
- 你不能取款大于 $999,999
-
-
- You can't withdraw less then $100
- Nemůžete odvolat méně než 100 $
- No puedes retirar menos de $100
-
- Du kannst nicht weniger als $100 abheben.
- Vous ne pouvez pas retirer moins de $100.
- Non puoi prelevare meno di €100
- Você não pode sacar menos de $100.
- Nie możesz pobrać mniej niż $100
- 你不能取款小于 $100
-
-
- You have withdrawn $%1 from your bank account
- Jste staženy $%1 z vašeho bankovního účtu
- Has retirado $%1 de tu cuenta bancaria
-
- Du hast $%1 von deinem Bankkonto abgehoben.
- Vous avez retiré $%1 de votre compte en banque.
- Hai prelevato €%1 dal tuo conto in banca
- Você sacou R$%1 de sua conta bancária.
- Pobrałeś z konta kwotę $%1
- 你已从你的银行账户取走 $%1
-
-
- You have withdrawn $%1 from your gang.
- Jste staženy $%1 z naší bandy
- Has retirado $%1 de tu pandilla
- Hai ritirato €%1 dal nostro gruppo.
- Masz %1 $ wycofane z naszego gangu.
-
- Vous avez retiré $%1 de votre gang.
- Você sacou R$%1 da sua gangue
- Du hast $%1 vom Gangkonto abgehoben.
- 你已从你的帮派账户取走 $%1 .
-
-
- Someone is already trying to withdraw from your gang.
- Někdo se již snaží ustoupit od svého gangu.
- Quelqu'un est déjà en train de retirer de l'argent de votre gang.
- Alguien ya esta tratando de retirar dinero de tu pandilla.
- Qualcuno sta già cercando di ritirare del denaro dal fondo gang.
- Ktoś już próbował wycofać się ze swojego gangu.
-
- Alguém já está tentando sacar da sua gangue.
- Jemand versucht bereits, Geld vom Gangkonto abzuheben.
- 有人从你的帮派账户中取款.
-
-
- You do not have that much cash on you.
- Nemáte tolik peněz na vás.
- No tienes tanto dinero contigo.
-
- Du hast nicht so viel Geld bei dir.
- Vous n'avez pas autant d'argent sur vous.
- Non hai abbastanza denaro con te.
- Você não tem todo esse dinheiro.
- Nie masz przy sobie tyle pieniędzy
- 你身上没有那么多现金.
-
-
- You have deposited $%1 into your bank account
- Máte uloženy $%1 na váš bankovní účet
- Has depositado $%1 en tu cuenta de banco.
-
- Du hast $%1 auf dein Bankkonto überwiesen.
- Vous avez déposé $%1 dans votre compte en banque.
- Hai despositato €%1 nel tuo conto bancario
- Você depositou R$%1 na sua conta bancária
- Zdeponowałeś na koncie bankowym $%1
- 你已将 $%1 存入到你的银行账户
-
-
- You have deposited $%1 into your gang's bank account.
- Máte uloženy $%1 na bankovní účet svého gangu.
- Has depositado $%1 en la cuenta de tu pandilla.
-
- Du hast $%1 auf das Gangkonto überwiesen.
- Vous avez déposé $%1 sur le compte en banque de votre gang.
- Hai despositato €%1 nei fondi della tua gang.
- Você depositou R$%1 na conta da sua gangue.
- Zdeponowałeś na koncie gangu kwotę $%1.
- 你已将 $%1 存入到你的帮派账户.
-
-
- Someone is already trying to deposit into your gang's bank account.
- Někdo se již snaží vložit na bankovní účet svého gangu.
- Quelqu'un est déjà en train de déposer dans le compte bancaire de votre gang.
- Alguien ya esta tratando de depositar en la cuenta de banco de tu pandilla.
- Qualcuno sta già cercando di depositare del denaro nel conto della Gang.
- Ktoś jest już stara się o wpłatę na rachunek bankowy swojego gangu.
-
- Alguém já está tentando depositar na conta da sua gangue.
- Jemand versucht bereits Geld auf das Gangkonto einzuzahlen.
- 有人存款到你的帮派银行账户.
-
-
- You are not in a Gang!
- Nejste v gangu!
- Vous n'êtes pas dans une bande!
- ¡No estás en una pandilla!
- Non sei in un Gang!
- Nie jesteś w gangu!
- Você não está em uma gangue!
- Du bist nicht in einer Gang!
- 你没有在帮派里!
-
-
-
-
- Altis Mobile
- Altis Mobile
- Celular
-
- Altis Mobilfunk
- Altis Mobile
- Cellulare Altis
- Celular
- Telefon
- 手机
-
-
- Message To Send:
- Zpráv pro odeslání:
- Mensaje a Enviar:
-
- Deine Nachricht:
- SMS à Envoyer :
- Messaggio da inviare:
- Mensagem à enviar:
- Treść wiadomości
- 发送信息:
-
-
- Text Message:
- Textová zpráva:
- Mensaje:
-
- Nachricht:
- Message Texte :
- Msg Giocatore:
- Mensagem:
- Do: Gracz
- 发短信:
-
-
- Text Police
- Text Police
- Msg Policía
-
- An die Polizei
- Police
- Msg Polizia
- Polícia
- Do: Policja
- 发短信给警察
-
-
- Text Admins
- textové Administrátoři
- Msg Admin
-
- An die Admins
- Requête Admin
- Msg Admin
- Msg Admins
- Do: Admin
- 发短信给管理
-
-
- Admin Message
- admin Message
- Msg de Admin
-
- Admin-Nachricht
- Message Admin
- Admin Msg
- Admin Msg
- AdmGracz
- 管理员信息
-
-
- Admin Msg All
- Admin zpráva Vše
- Admin Msg All
-
- Admin-Nachricht an alle
- Admin MSG ALL
- Admin Msg
- Admin Msg All
- SMS do Wszyscy
- 管理员全服信息
-
-
- Request EMS
- žádost o EMS
- Pedir Médico
-
- An die Sanitäter
- SAMU
- Msg medici
- Chamar SAMU
- MEDYK
- 发短信给医疗
-
-
-
-
- You must enter a message to send!
- You must enter a message to send!
- You must enter a message to send!
- You must enter a message to send!
- Du musst eine Nachricht eingeben!
- Vous devez entrer un message à envoyer!
- You must enter a message to send!
- You must enter a message to send!
- You must enter a message to send!
- 您必须输入要发送的消息!
-
-
- Your message cannot exceed 400 characters!
- Your message cannot exceed 400 characters!
- Your message cannot exceed 400 characters!
- Your message cannot exceed 400 characters!
- Deine Nachricht darf maximal 400 Zeichen enthalten!!
- Votre message ne peut pas excéder 400 caractères !
- Your message cannot exceed 400 characters!
- Your message cannot exceed 400 characters!
- Your message cannot exceed 400 characters!
- 您的信息不能超过400个字符!
-
-
- You must select a player you are sending the text to!
- You must select a player you are sending the text to!
- You must select a player you are sending the text to!
- You must select a player you are sending the text to!
- Du musst einen Spieler auswählen!
- Vous devez sélectionner un joueur à qui envoyer le message !
- You must select a player you are sending the text to!
- You must select a player you are sending the text to!
- You must select a player you are sending the text to!
- 当你发送信息时必须选择一个玩家!
-
-
- You have sent a message to all EMS Units.
- You have sent a message to all EMS Units.
- You have sent a message to all EMS Units.
- You have sent a message to all EMS Units.
- Du hast eine Nachricht an alle Sanitäter gesendet.
- Vous avez envoyé un message à tous les EMS.
- You have sent a message to all EMS Units.
- You have sent a message to all EMS Units.
- You have sent a message to all EMS Units.
- 你已经向所有医护人员发送了消息.
-
-
- You sent %1 a message: %2
- You sent %1 a message: %2
- You sent %1 a message: %2
- You sent %1 a message: %2
- Du sendest %1 eine Nachricht: %2
- Vous avez envoyé à %1 le message : %2
- You sent %1 a message: %2
- You sent %1 a message: %2
- You sent %1 a message: %2
- 你向 %1 发送了信息: %2
-
-
- You are not an admin!
- You are not an admin!
- You are not an admin!
- You are not an admin!
- Du bist kein Admin!
- Vous n'êtes pas un admin !
- You are not an admin!
- You are not an admin!
- You are not an admin!
- 你不是管理员!
-
-
- Admin Message Sent To: %1 - Message: %2
- Admin Message Sent To: %1 - Message: %2
- Admin Message Sent To: %1 - Message: %2
- Admin Message Sent To: %1 - Message: %2
- Admin Nachricht Gesendet an: %1 - Nachricht: %2
- Message admin envoyé à %1 - Message : %2
- Admin Message Sent To: %1 - Message: %2
- Admin Message Sent To: %1 - Message: %2
- Admin Message Sent To: %1 - Message: %2
- 管理员消息发送给: %1 - 信息: %2
-
-
- Admin Message Sent To All: %1
- Admin Message Sent To All: %1
- Admin Message Sent To All: %1
- Admin Message Sent To All: %1
- Admin Nachricht Gesendet an Alle: %1
- Message admin envoyé à tous les joueurs : %1
- Admin Message Sent To All: %1
- Admin Message Sent To All: %1
- Admin Message Sent To All: %1
- 管理员发送信息到全体: %1
-
-
-
-
- Local Chop Shop
- Místní Chop Shop
- Desguazadero
-
- Schrotthändler
- Revendeur de véhicules volés
- Ricettatore
- Desmanche
- Dziupla
- 销赃盗窃的载具
-
-
-
-
- Gang Management
- gang Vedení
- Administración de Pandilla
-
- Gangübersicht
- Gestion du Gang
- Gestione Gang
- Gerenciar Gangue
- Gang Menu
- 帮派管理
-
-
- Gang Management - Current Gangs
- Gang Management - Současné Gangs
- Administracion de Pandilla - Pandillas Actuales
-
- Gangübersicht - Aktuelle Gangs
- Gestion de Gangs - Liste des Gangs Actuels
- Gestione Gang - Gang Attuali
- Gerenciar Gangue - Gangue atual
- Gang - zarządzaj
- 帮派管理-当前帮派
-
-
- Join
- Připojit
- Unirse
-
- Beitreten
- Rejoindre
- Unisciti
- Entrar
- Dołącz
- 加入
-
-
- Leave
- Dovolená
- Salir
-
- Verlassen
- Quitter
- Abbandona
- Sair
- Opuść
- 退出
-
-
- Upgrade Slots
- upgradem Slots
- Aumentar Slots
-
- Anzahl erhöhen
- Augmenter Slots
- Aumenta Posti
- Aumentar o número de Slots
- Powiększ gang
- 升级人数
-
-
- Kick
- Kop
- Expulsar
-
- Kicken
- Virer
- Espelli
- Expulsar
- Wykop
- 踢出
-
-
- Set Leader
- Set Leader
- Hacer Líder
-
- Neuer Anführer
- Passer Chef
- Imposta Capo
- Passar Liderança
- Ustaw lidera
- 设置管理者
-
-
- To create a gang it costs $%1
- Chcete-li vytvořit gang stojí $%1
- Cuesta $%1 para crear una pandilla
-
- Le prix de création d'un gang est de %1$
- Eine Gang zu erstellen kostet $%1.
- Creare una gang costa $%1
- Criar uma Gangue custa R$%1
- Koszt ustanowienia gangu to $%1
- 创建一个帮派的成本 $%1
-
-
- Create
- Vytvořit
- Crear
-
- Erstellen
- Créer
- Crea
- Criar
- Stwórz
- 创建
-
-
- Your Gang Name
- Váš Gang Jméno
- Nombre de tu Pandilla
-
- Dein Gangname
- Nom du Gang
- Nome della tua Gang
- Nome da Gangue
- Nazwa gangu
- 输入你要创建的帮派名字
-
-
- Invite Player
- Pozvat Player
- Invitar Jugador
-
- Spieler einladen
- Inviter joueur
- Invita Giocatore
- Convidar Jogador
- Zaproś
- 邀请玩家
-
-
- Disband Gang
- rozpustit Gang
- Deshacer Pandilla
-
- Gang auflösen
- Dissoudre Gang
- Sciogli Gang
- Desfazer Gangue
- Opuść gang
- 解散帮派
-
-
- Gang Invitation
- gang Pozvánka
- Invitación de Pandilla
-
- Gangeinladung
- Invitation de Gang
- Invito Gang
- Convite para Gangue
- Zaproszenie do gangu
- 帮派邀请
-
-
- Transfer Gang Leadership
- Přeneste Gang Vedení
- Transferir Liderazgo de Pandilla
-
- Gangführung übertragen
- Transfert du chef du Gang
- Trasferisci Comando
- Transferir Liderança
- Przekaż kierowanie gangiem
- 移交帮派管理
-
-
- Upgrade Maximum Allowed Gang Members
- Inovovat Maximální povolená Gang Členové
- Aumentar Cantidad Máxima de Miembros de la Pandilla
-
- Maximale Anzahl an Mitgliedern erhöhen
- Augmentation du nombre de membre total
- Aumenta numero massimo membri della Gang
- Atualizar limite máximo de membros
- Zwiększ maksymalną liczbę członków gangu
- 升级帮派成员人数
-
-
-
-
- You must create a gang first before capturing it!
- You must create a gang first before capturing it!
- Debes crear una pandilla antes de capturar este escondite!
-
- Du musst erst in einer Gang sein, um das Versteck einnehmen zu können!
- Vous devez créer un gang avant de le capturer !
- Devi creare una gang prima di catturarla!
- Você precisa criar uma gangue antes de tentar capturar!
- Przed przechwyceniem musisz stworzyć gang
- 您必须先创建一个帮派然后才能建立帮派据点!
-
-
- Your gang already has control over this hideout!
- Naše parta už má kontrolu nad tímto úkrytu!
- Tu Pandilla ya tiene control de este escondite!
-
- Deine Gang hat bereits die Kontrolle über dieses Versteck!
- Votre gang a déjà le contrôle de cette planque !
- La tua Gang ha già il controllo di questo Covo
- Sua gangue já tem controle sobre esse esconderijo!
- Twój gang aktualnie kontroluje tę kryjówkę !
- 你的帮派已经控制了这个帮派据点!
-
-
- Only one person shall capture at once!
- Pouze jedna osoba musí být schopná zachytit najednou!
- Solo una persona puede capturar a la vez!
-
- Nur eine Person kann das Versteck einnehmen!
- Une seule personne à la fois peut capturer la cachette !
- Può conquistare solo una persona alla volta!
- Somente uma pessoa pode capturar!
- Przejmowanie powinna przeprowadzić na raz tylko jedna osoba
- 每次只能抓捕帮派据点的一个人!
-
-
- This hideout is controlled by %1.<br/><br/>Are you sure you want to take over their gang area?
- Tento úkryt je řízen %1.<br/><br/>Opravdu chcete převzít svůj gang prostor?
- Este escondite esta controlado por %1.<br/><br/>Estas seguro que quieres tomarlo?
-
- Das Versteck wird durch %1 kontrolliert.<br/><br/>Bist du sicher, dass du ihr Ganggebiet übernehmen möchtest?
- Cette planque est contrôlée par %1.<br/><br/>Etes-vous sûr que vous voulez prendre leur cachette ?
- Questo Covo è controllato da %1.<br/><br/>Sicuro di voler prendere il controllo della loro area?
- Esse esconderijo é controlado por %1.<br/><br/>Você tem certeza que deseja tomar essa área?
- Ta kryjówka jest kontrolowana przez %1.<br/><br/>Jesteś pewny że chcesz przjąć ten rejon.
- 帮派据点由 %1 控制.<br/><br/>你确定要接管他们的帮派吗?
-
-
- Hideout is currently under control...
- Hideout is currently under control...
- Escondite bajo control...
-
- Versteck ist derzeit unter Kontrolle...
- La planque est actuellement sous contrôle...
- Il Covo è già sotto controllo...
- Esconderijo sobre controle....
- Kryjówka pod kontrolą ...
- 帮派据点正在控制...
-
-
- Capturing cancelled
- zachycení zrušen
- Toma de Control Cancelada
-
- Einnehmen abgebrochen.
- Capture annulée
- Cattura annullata
- Ação concelada
- Przejmowanie anulowane
- 帮派据点控制取消
-
-
- Capturing Hideout
- zachycení Hideout
- Capturando el Escondite
-
- Versteck einnehmen
- Capture de la planque
- Catturando il Covo
- Capturando Esconderijo
- Przejmowanie kryjówki
- 控制的帮派据点
-
-
- Hideout has been captured.
- Úkryt byl zajat.
- La cachette a été capturée.
- Escondite ha sido capturado.
- Hideout è stato catturato.
- Hideout został schwytany.
- Hideout foi capturado.
- Хайдеаут был захвачен в плен.
- Versteck wurde eingenommen.
- 帮派据点已被控制。
-
-
- %1 and his gang: %2 - have taken control of a local hideout!
- %1 a jeho gang: %2 - vzali kontrolu místního úkrytu!
- %1 y su pandilla: %2 - han tomado control de un Escondite!
-
- %1 und seine Gang: %2 - haben die Kontrolle über ein lokales Versteck übernommen!
- %1 et son gang: %2 ont pris le contrôle d'une cachette !
- %1 e la sua Gang: %2 - hanno preso il controllo di un Covo!
- %1 e sua gangue: %2 - agora têm o controle de um esconderijo!
- %1 i jego gang: %2 - przejął kontrolę nad kryjówką!
- %1 和他的帮派: %2 - 已经控制了一个帮派据点!
-
-
- You can't have a gang name longer then 32 characters.
- Nemůžete mít název gang delší než 32 znaků.
- El nombre de tu Pandilla no puede tener mas de 32 caracteres.
-
- Dein Gangname kann nicht länger als 32 Zeichen sein.
- Vous ne pouvez pas avoir un nom de gang de plus de 32 caractères.
- %1 e la sua Gang: %2 - hanno preso il controllo di un Covo!
- O nome de sua gangue não pode ter mais de 32 caracteres.
- Nazwa gangu może posiadać maksymalnie 32 znaki
- 你的帮派名称超过32个字符。
-
-
- You have invalid characters in your gang name. It can only consist of Numbers and letters with an underscore
- Máte neplatné znaky v názvu vaší gangu. To se může skládat pouze z číslic a písmen s podtržítkem
- El nombre de tu pandilla solo puede consistir de: "Numeros, Letras y guion bajo"
-
- Du hast ein ungültiges Zeichen in deinem Gangnamen. Der Name darf nur aus Zahlen und Buchstaben sowie einem Unterstrich bestehen!
- Vous avez des caractères non valides dans le nom de votre gang. Il ne peut être constitué que de chiffres et de lettres.
- Hai inserito caratteri non validi nel nome della Gang. Puoi inserire solo numeri e lettere con un underscore
- O nome da sua gangue tem caracteres inválidos. O nome so pode conter caracteres e números separados por underline
- Masz nieprawidłowe znaki w nazwie gangu - tylko litery i cyfry oraz podkreślnik
- 你的帮派名称中有无效字符,它只能由下划线、数字和字母组成
-
-
- You do not have enough money in your bank account.\n\nYou lack: $%1
- Nemáte dostatek peněz na váš bankovní účet \ ne vy balení:. $%1
- No tienes suficiente dinero en tu cuenta.\n\nTe falta: $%1
-
- Du hast nicht genug Geld auf deinem Bankkonto.\n\nDir fehlen: $%1
- Vous n'avez pas assez d'argent dans votre compte en banque.\n\nIl vous manque: $%1
- Non hai abbastanza fondi nel tuo conto in banca.\n\nTi mancano: $%1
- Você não tem dinheiro suficiente na sua conta bancária.\n\nFaltam: R$%1
- Nie masz tyle pieniędzy na koncie.\n\nYou brakuje: $%1
- 你的银行账户里没有足够的钱.\n\n你缺少: $%1
-
-
- You have created the gang %1 for $%2
- Vytvořili jste gangu %1 pro $%2
- Has creado la Pandilla %1 por $%2
-
- Du hast die Gang: %1 für $%2 erstellt.
- Vous avez créé le gang %1 pour $%2.
- Hai creato la Gang %1 al costo di $%2
- Você criou a gangue %1 por R$%2
- Stworzyłeś gang %1 za $%2
- 你创造帮派 %1 花费了 $%2
-
-
- You are about to disband the gang, by disbanding the gang it will be removed from the database and the group will be dropped. <br/><br/>Are you sure you want to disband the group? You will not be refunded the price for creating it.
- Chystáte se rozpustit gang, tím, že rozpustí gang bude odstraněna z databáze a skupina bude vynechána. < br / > < br / > Opravdu chcete rozpustit skupinu? Budete nevrací cenu za jeho vytvoření.
- Estas a punto de desmantelar la Pandilla, si prosiges la Pandilla se borrara de la base de datos. <br/><br/>Estas seguro de querer desmantelarla? Cualquier dinero invertido no sera devuelto.
-
- Du bist dabei die Gang aufzulösen. Durch Auflösung der Gang wird diese aus der Datenbank entfernt. <br/><br/>Bist du sicher, dass du die Gang auflösen willst? Du erhältst die Kosten für die Erstellung nicht zurück.
- Vous vous apprêtez à dissoudre le gang. En démantelant le gang, il sera supprimé de la base de données et le groupe sera supprimé. <br/><br/>Etes-vous sûr de vouloir dissoudre le groupe? Vous ne serez pas remboursé du prix de sa création.
- Stai per sciogliere la Gang, facendolo sarà rimossa dal Database e il gruppo verrà cancellato. <br/><br/>Sei sicuro di voler sciogliere il gruppo? Non verrai rimborsato dei fondi spesi per crearlo.
- Você vai desfazer a sua gangue, ela será apagada do banco de dados. <br/><br/>Você tem certeza que quer desfazer a gangue? Você não será reembolsado.
- Chcesz rozwiązać gang, po jego rozwiązaniu zostanie on usunięty z bazy danych i cała grupa zostanie rozwiązana. <br/><br/>Naprawdę chcesz rozwiązać grupę? Nie dostaniesz zwrotu środków za przeznaczonych na stworzenie gangu.
- 你要解散帮派,帮派将从数据库中删除. <br/><br/>你确定你想解散帮派? 不会退还你创建帮派的花费.
-
-
- Disbanding the gang...
- Rozpuštění gang ...
- Desmantelando la Pandilla...
-
- Gang wird aufgelöst...
- Démantèlement du gang...
- Sciogliendo la Gang...
- Desfazendo a gangue...
- Rozwiąż gang
- 解散帮派...
-
-
- Disbanding cancelled
- rozpuštění zrušen
- Desmantelamiento Cancelado
-
- Auflösung abgebrochen.
- Démantèlement annulé
- Scioglimento annullato
- Desfazer gangue cancelado
- Rozwiązywanie gangu anulowane
- 解散取消
-
-
- The leader has disbanded the gang.
- Vůdce se rozpustil gang.
- El lider ha desmantelado la Pandilla.
-
- Der Anführer hat die Gang aufgelöst.
- Le chef a démantelé le gang.
- Il Capo ha sciolto la Gang
- O lider desfez a gangue.
- Szef rozwiązał gang
- 老大解散了帮派。
-
-
- %1 has invited you to a gang called %2<br/>If you accept the invitation you will be a part of their gang and will have access to the gang funds and controlled gang hideouts.
- %1 vás pozval na party s názvem %2<br/>Pokud přijmete pozvání budete součástí jejich gangu a budou mít přístup ke gangu fondů a řízených gangů úkrytů.
- %1 te ha invitado a una Pandilla llamada %2<br/>Si aceptas seras parte de su pandilla, compartiras el banco de la pandilla y controlaras sus escondites.
-
- %1 hat dich zu der Gang: %2 eingeladen. <br/> Wenn Du die Einladung annimmst, wirst du ein Teil der Gang und bekommst Zugang zu dem Gangkonto und kontrollierten Verstecken.
- %1 vous a invité dans un gang appelé %2<br/>Si vous acceptez l'invitation, vous serez dans leur gang et aurez accès à des fonds de gangs et des planques de gangs contrôlées.
- %1 ti ha invitato nella Gang: %2<br/>Se vuoi accettarai l'invito entrerai a far parte della loro Gang ed avrai accesso ai loro fondi e ai loro Covi.
- %1 convidou você para a gangue %2<br/>Se você aceitar terá acesso aos recursos da gangue e os esconderijos controlados pela mesma.
- %1 zaprosił cię do gangu o nazwie %2<br/>Jeżeli zaakceptujesz zaproszenie będziesz członkiem gangu i uzyskasz dostęp do funduszy gangu oraz jego kryjówek
- %1 邀请你加入一个叫做 %2 的帮派<br/>如果你接受了这个邀请,你将成为他们的帮派成员,并且可以获得帮派资金和使用帮派控制的帮派据点。
-
-
- You are about to invite %1 to your gang, if they accept the invite they will have access to the gang's funds.
- Chystáte se pozvat%1 na svůj gang, pokud přijmou pozvání budou mít přístup k finančním prostředkům gangu.
- Estas a putno de invitar a %1 a tu pandilla, si aceptan tendran aceso al banco de tu Pandilla.
-
- Du bist dabei %1 in deine Gang einzuladen. Wenn die Einladung angenommen wird, hat der Spieler Zugang zu den Gangbesitztümern.
- Vous êtes sur le point d'inviter %1 dans votre gang, s'il accepte l'invitation, il aura accès aux fonds du gang.
- Stai per invitare %1 nella tua Gang, se accetterà l'invito avrà accesso ai fondi della Gang.
- Você está prestes a convidar %1 para a gangue, ele terá acesso aos recursos da gangue.
- Właśnie zaprosiłeś %1 do gangu, jeśli zaakceptuje zaproszenie będzie miał dostęp do funduszy gangu.
- 您将邀请 %1 加入您的帮派,如果他接受邀请,他将有权使用帮派的资金。
-
-
- You need to select a person to invite!
- Musíte vybrat osobu vyzvat!
- Tiense que selecionar a quien invitar!
-
- Du musst einen Spieler zum Einladen auswählen!
- Vous devez sélectionner une personne à inviter !
- Devi selezionare una persona da invitare!
- Você tem que selecionar um jogador para convidar!
- Musisz zaznaczyć osobę aby ją zaprosić
- 你需要选择一个人来邀请他!
-
-
- You have sent a invite to your gang to %1
- Jste adresoval zvou na svůj gang do %1
- Has invitado a %1 a tu Pandilla
-
- Du hast eine Einladung in diese Gang an %1 gesendet.
- Vous avez envoyé une invitation à rejoindre votre gang à %1
- Hai mandato l'invito alla tua Gang a %1
- Você enviou um convite para %1 se juntar a sua gangue
- Wysłałeś zaproszenie do twojego gangu do %1
- 你已经给 %1 发送了一个加入你帮派的邀请
-
-
- Invitation Cancelled
- Pozvánka byla zrušena
- Invitación Cancelada
-
- Einladung abgebrochen.
- Invitation annulée
- Invito Annullato
- Convite Cancelado
- Zaproszenie anulowane
- 取消邀请
-
-
- You cannot kick yourself!
- Nemůžete kopat sami!
- No te puedes expulsar a ti mismo!
-
- Du kannst dich nicht selbst kicken!
- Vous ne pouvez pas vous éjecter vous-même !
- Non puoi espellerti da solo!
- Você não pode kickar você mesmo!
- Nie możesz sam się wykopać!
- 你不能踢出自己!
-
-
- Your gang has reached its maximum allowed slots, please upgrade your gangs slot limit.
- Váš gang dosáhla svého maxima dovoleno sloty, proveďte upgrade hranice slotu vašeho gangu.
- Tu Pandilla ha llegado a su máxima capacidad, aumenta los slots para seguir invitando.
-
- Deine Gang hat die maximale Anzahl an Mitgliedern erreicht, bitte erhöhe das Limit deiner Gang.
- Votre gang a atteint le nombre de membre maximum, veuillez augmenter cette limite.
- la tua Gang ha raggiungo il numero massimo di posti consentiti, aumentane il limite.
- Sua gangue está lotada, você deve aumentar o número máximo de jogadores.
- Twój gang osiągnął maksymalną pojemność, powiększ swój gang!
- 你的帮派成员数已经达到了允许的最大范围, 请升级你的帮派成员数.
-
-
- You need to select a person to kick!
- Musíte vybrat osobu kopat!
- Tienes que seleccionar a quien expulsar!
-
- Du musst einen Spieler auswählen, um ihn kicken zu können!
- Vous devez choisir une personne à virer !
- Devi selezionare una persona da espellere!
- Você tem que selecionar um jogador para kickar!
- Musisz zaznaczyć osobę do wykopania
- 你需要选择一个人来踢出!
-
-
- You cannot leave the gang without appointing a new leader first!
- Nemůžete opustit gang, aniž by o jmenování nového vůdce první!
- No puedes salir de la Pandilla sin apuntar a un nuevo líder!
-
- Du kannst die Gang nicht verlassen, ohne vorher einen neuen Anführer zu ernennen!
- Vous ne pouvez pas quitter le gang sans passer le lead à quelqu'un !
- Non puoi abbandonare la Gang prima di aver selezionato un nuovo Capo!
- Você não pode sair da gangue sem transferir a liderança antes!
- Nie możesz opuścić gangu bez przekazania komuś szefostwa nad gangiem
- 没有任命新的老大,你不能离开这个帮派!
-
-
- You have quit the gang.
- You have quit the gang.
- You have quit the gang.
- You have quit the gang.
- Du hast die Gang verlassen.
- Vous avez quitté le gang.
- You have quit the gang.
- You have quit the gang.
- You have quit the gang.
- 你已经退出了帮派.
-
-
- You are about to transfer leadership over to %1 <br/>By transferring leadership you will no longer be in control of the gang unless ownership is transferred back.
- Chystáte se přenést vedoucí přes %1 <br/>Převedením vedení už nebude mít kontrolu nad gangu, pokud je vlastnictví převedeno zpět.
- Estas a punto de transferir liderazgo a %1 <br/>Al transferir liderazgo no tendrás control de la Pandilla.
-
- Du bist dabei, die Gangführung an %1 zu übertragen<br/>Durch die Übertragung der Gangführung hast du keine Kontrolle mehr über die Gang.
- Vous allez transférer le commandement à %1 <br/>En transférant le commandement, vous ne serez plus le chef du gang.
- Stai per traferire il comando a %1 <br/>Facendolo non avrai più il controllo della Gang fino a quando non ti verrà restituito il comando.
- Você vai transferir a liderança da gangue para %1 <br/>Você não será mais o lider, a não ser que a liderança seja transferida novamente.
- Przekazałeś kierowanie gangiem %1 <br/>W związku z tym nie będzesz od tej chwili kontroli nad gangiem chyba, że kierowownictwo zostanie ci powierzone ponownie.
- 你将要把老大的位置移交给 %1 <br/>老大的位置移交后,你将不能再控制这个帮派,除非有人将帮派老大位置还给你.
-
-
- Transfer of leadership cancelled.
- Převod vedení zrušen.
- Transferencia de liderazgo cancelada.
-
- Übertragung der Gangführung abgebrochen.
- Transfert du commandement annulé.
- Trasferimento del comando annullato.
- Transferencia de liderança cancelada.
- Przkazanie kierownictwa anulowane.
- 取消帮派老大的移交。
-
-
- You are already the leader!
- Již jste vůdce!
- Tu ya eres el líder!
-
- Du bist bereits der Anführer!
- Vous êtes déjà chef !
- Sei già il Capo!
- Você já está na liderança!
- Jesteś już liderem!
- 你已经是帮派老大了!
-
-
- You need to select a person first!
- Je třeba vybrat prvního člověka!
- Tienes que seleccionar a alguien primero!
-
- Du musst erst einen Spieler auswählen!
- Vous devez choisir une personne !
- Devi selezionare una persona!
- Você tem que selecionar um jogador antes!
- Musisz najpierw zaznaczyć osobę!
- 你需要先选一个人!
-
-
- You have been made the new leader.
- You have been made the new leader.
- You have been made the new leader.
- You have been made the new leader.
- Du wurdest zum neuen Anführer ernannt.
- Vous êtes le nouveau leader.
- You have been made the new leader.
- You have been made the new leader.
- You have been made the new leader.
- 你被选为新的帮派老大.
-
-
- You are about to upgrade the maximum members allowed for your gang.
- Chystáte se aktualizovat maximální povolené členy pro svůj gang.
- Estas a punto de aumentar la capacidad de tu Pandilla.
-
- Du bist dabei, die maximale Anzahl an Mitgliedern zu erhöhen.
- Vous êtes sur le point de mettre à niveau la limite de membre maximum pour votre gang.
- Stai aumentando il numero massimo di membri consentiti all'interno della tua Gang
- Você vai atualizar o limite de membros da gangue.
- Chcesz zwiększyć maksymalną ilość członków w gangu.
- 您将升级您的帮派所允许的最大成员数.
-
-
- Current Max: %1
- Proud Max: %1
- Límite Corriente: %1
-
- Aktuelles Maximum: %1
- Max actuel: %1
- Attuali Max: %1
- Número máximo atual: %1
- Aktualnie Max: %1
- 目前的最大值: %1
-
-
- Upgraded Max: %2
- Modernizované Max: %2
- Nuevo Límite: %2
-
- Maximum erhöhen: %2
- Après mise à niveau : %2
- Aumento Max: %2
- Novo número máximo: %2
- Po ulepszeniu Max: %2
- 升级最大值: %2
-
-
- Price:
- Cena:
- Precio:
-
- Preis:
- Prix :
- Costo:
- Preço:
- Koszt:
- 价钱:
-
-
- You do not have enough money in your bank account to upgrade the gangs maximum member limit.
- Nemáte dostatek peněz na modernizaci gangů maximální limit člena svého bankovního účtu.
- No tienes suficiente dinero como para mejorar la capacidad de tu pandilla.
-
- Du hast nicht genug Geld auf deinem Bankkonto, um das Mitgliederlimit deiner Gang zu erhöhen.
- Vous n'avez pas assez d'argent dans votre compte en banque pour mettre à niveau la limite de membre maximale.
- Non hai abbastanza fondi nel tuo conto in banca per aumentare il limite massimo di membri.
- Você não dinheiro suficiente para aumentar o limite da gangue.
- Nie posiadasz wystarczającej ilości środków na koncie aby powiększyć gang
- 您的银行帐户没有足够的钱升级帮派最大成员限制。
-
-
- Current:
- Aktuální
- Corriente:
-
- Aktuell:
- Actuel :
- Attuale:
- Atual:
- Aktualny:
- 最近的:
-
-
- Lacking:
- postrádat
- Falta:
-
- Fehlend:
- Manquant :
- Mancanza:
- Faltando:
- Brakuje:
- 缺少:
-
-
- You have upgraded from %1 to %2 maximum slots for <t color='#8cff9b'>$%3</t>
- Provedli jste upgrade z%1 do%2 Maximální sloty pro < k color = "# 8cff9b '> $%3 < / >
- Has aumentado de %1 a %2 slots <t color='#8cff9b'>$%3</t>
-
- Du hast für <t color='#8cff9b'>$%3</t> die Anzahl von %1 auf %2 Mitgliedern erhöht.
- Vous avez mis à niveau le nombre maximal de membres de %1 à %2 pour <t color='#8cff9b'>$%3</t>
- Hai aumentato i posti massimi da %1 a %2 per <t color='#8cff9b'>$%3</t>
- Limite de membros atualizado de %1 para %2 por <t color='#8cff9b'>R$%3</t>
- Zwiększyłeś ilość możliwych członków gangu z %1 do %2 for <t color='#8cff9b'>$%3</t>
- 你已经从 %1 升级到 %2 最大成员数 <t color='#8cff9b'>$%3</t>
-
-
- Upgrade cancelled.
- Upgrade zrušena.
- Mejora Cancelada.
-
- Erhöhung abgebrochen.
- Mise à jour annulée.
- Aumento annullato.
- Cancelar Upgrade.
- Ulepszanie anulowane.
- 升级取消。
-
-
- Funds:
- fondy
- Fondos:
-
- Geld:
- Fonds :
- Fondi
- Recursos:
- Środki:
- 基金:
-
-
- (Gang Leader)
- (Gang Leader)
- (Lider de Pandilla)
-
- (Gangführung)
- (Chef de Gang)
- (Capo Gang)
- (Lider da Gangue)
- (Szef gangu)
- (帮派老大)
-
-
- You are already in a gang.
- Jste již v gangu.
- Ya estas en una pandilla.
-
- Du befindest dich bereits in einer Gang.
- Vous êtes déjà dans un gang.
- Sei già in una banda.
- Você já está em uma gangue.
- Jesteś już w gangu.
- 你已经在帮派中了。
-
-
- Bad UID?
- Bad UID?
- Mauvais UID ?
- Bad UID?
- Bad UID?
- Bad UID?
- Bad UID?
- Bad UID?
- Bad UID?
- 错误的UID?
-
-
- This player is already in a gang.
- Tento hráč je již v gangu.
- Ce joueur est déjà dans un gang.
- Este jugador ya está en una pandilla.
- Questo giocatore è già in una banda.
- Ten gracz jest już w gangu.
- Este jogador já está em uma gangue.
- Этот игрок уже в банде.
- Dieser Spieler ist bereits in einer Gang.
- 这个玩家已经在帮派中了。
-
-
- You have been kicked out of the gang.
- You have been kicked out of the gang.
- Vous avez été éjecté de votre gang.
- You have been kicked out of the gang.
- You have been kicked out of the gang.
- You have been kicked out of the gang.
- You have been kicked out of the gang.
- You have been kicked out of the gang.
- Du wurdest aus der Gang gekickt.
- 你被踢出了帮派。
-
-
-
-
- This garage has already been bought!
-
-
-
- Diese Garage wurde bereits gekauft!
- Ce garage a déjà été acheté !
-
-
-
- 这个仓库已经被购买了!
-
-
- You are not the owner of this house!
-
-
-
- Vous n'êtes pas le propriétaire de cette maison !
- Du bist nicht der Eigentümer dieses Hauses!
-
-
-
- 你不是这所建筑的主人!
-
-
- This garage is available for <t color='#8cff9b'>$%1</t><br/>
-
-
-
- Diese Garage steht dir für <t color='#8cff9b'>$%1</t><br/>zur Verfügung!
- Ce garage est disponible pour <t color='#8cff9b'>$%1</t><br/>
-
-
-
- 这个仓库花费 <t color='#8cff9b'>$%1</t><br/>
-
-
- This building is a Gang Hideout!
-
-
-
- Dieses Gebäude ist ein Gangversteck!
- Ce bâtiment est une cachette de gang !
-
-
-
- 这个建筑是一个帮派据点!
-
-
- Are you sure you want to sell your garage? It will sell for: <t color='#8cff9b'>$%1</t>
-
-
-
- Bist du sicher, dass du diese Garage verkaufen willst? Sie wird verkauft für: <t color='#8cff9b'>$%1</t>
- Êtes-vous sûr de vouloir vendre votre garage ? Vous le vendrez pour : <t color='#8cff9b'>$%1</t>
-
-
-
- 你确定要卖掉你的仓库吗? 它将售出: <t color='#8cff9b'>$%1</t>
-
-
- Sell Garage
-
-
-
- Vendre le garage
- Garage verkaufen
-
-
-
- 出售仓库
-
-
- Purchase Garage
-
-
-
- Acheter ce garage
- Garage kaufen
-
-
-
- 购买仓库
-
-
- You do not own a garage here!
-
-
-
- Du besitzt hier keine Garage!
- Vous ne possédez pas de garage ici !
-
-
-
- 你在这里没有仓库!
-
-
- Vehicle Garage
- Garáž Vehicle
- Garaje de Vehículos
-
- Fahrzeug Garage
- Garage de Véhicules
- Garage Veicoli
- Garagem de Veículos
- Garaż
- 载具仓库
-
-
- Get Vehicle
- Získat vozidlo
- Obtener Vehículo
-
- Ausparken
- Récupérer
- Ritira Veicolo
- Pegar Veículo
- Wyciągnij pojazd:
- 获取载具
-
-
- Sell Vehicle
- Navrhujeme Vehicle
- Vender Vehículo
-
- Fahrzeug verkaufen
- Vendre
- Vendi Veicolo
- Vender Veículo
- Sprzedaj pojazd
- 出售载具
-
-
- Sell Price
- Navrhujeme Cena
- Precio de Venta
-
- Verkaufspreis
- Prix de vente
- Prezzo di vendita
- Preço de Venda
- Cena sprzedaży
- 出售价格
-
-
- Storage Fee
- skladného
- Cuota de Guardado
-
- Parkgebühr
- Frais de Stockage
- Costo ritiro
- Taxa de Armazenamento
- Opłata parkingowa
- 保管费
-
-
- No vehicles found in garage.
- Žádná vozidla nalezený v garáži.
- No se encontraron vehículos en el Garaje.
-
- Keine Fahrzeuge in der Garage gefunden.
- Aucun véhicule trouvé dans le garage.
- Non hai veicoli nel Garage.
- Nenhum veiculo encontrado na garagem.
- Nie znaleziono pojazdów w garażu
- 仓库内没有载具。
-
-
- You don't have $%1 in your bank account
- Nemáte $%1 z vašeho bankovního účtu
- No tienes $%1 en tu cuenta de Banco
-
- Du hast keine $%1 auf deinem Bankkonto.
- Vous n'avez pas %1$ sur ton compte en banque.
- Non hai $%1 nel tuo conto in banca
- Você não tem R$%1 na sua conta bancária
- Nie masz %1 na koncie bankowym:
- 你的银行账户里没有 $%1
-
-
- Spawning vehicle please wait...
- Plodit vozidlo čekejte prosím ...
- Creando vehículo, por favor espera...
-
- Fahrzeug wird bereitgestellt, bitte warten...
- Mise en place du Véhicule, merci de patienter...
- Creazione veicolo attendere...
- Obtendo veiculo, aguarde por favor...
- Wyciągam pojazd, proszę czekać ...
- 正在提取载具请稍候...
-
-
- Sorry but %1 was classified as a destroyed vehicle and was sent to the scrap yard.
- Je nám líto, ale%1 byl klasifikován jako zničené vozidlo a byl poslán na šrotiště.
- Lo siento, pero %1 fue clasificado como destruido y fue mandado al basurero.
-
- Entschuldigung, aber dein %1 wurde zerstört und auf den Schrottplatz geschickt.
- Désolé, mais votre %1 a été détruit et vendu à la casse.
- Purtroppo %1 è stato classificato come veicolo distrutto ed è stato mandato allo sfascio.
- O veículo %1 foi mandado para o ferro velho pois foi classificado como destroido.
- Przepraszamy ale %1 został sklasyfikowany jako zniszczony i został odesłany na złom.
- 对不起 %1 被认定为损坏的载具并送往废弃场。
-
-
- Sorry but %1 is already active somewhere in the world and cannot be spawned.
- Je nám líto, ale%1 je již aktivní někde ve světě a nemůže být třel.
- Lo siento, pero %1 esta activo en alguna parte del mundo y no puede aparecer.
-
- Entschuldigung, aber dein %1 ist bereits ausgeparkt worden und kann darum nicht bereitgestellt werden.
- Désolé, mais votre %1 a déjà été sorti du garage.
- Purtroppo %1 è già presente nella mappa e non può essere ricreato
- O veículo %1 já está presente no mapa e não pode ser retirado novamente
- Przepraszamy ale %1 jest aktywny gdzieś na mapie i nie może zostać wyciągnięty.
- 对不起,%1 被归类为毁坏的载具,并被送到废弃场。
-
-
- There is already a vehicle on the spawn point. You will be refunded the cost of getting yours out.
- K dispozici je již vozidlo na spawn bodu. Ty budou vráceny náklady dostat se ven.
- Ya hay un vehículo en el punto de Spawn, se te reembolsara el costo de sacar el vehículo.
-
- Es steht ein Fahrzeug auf dem Spawnpunkt. Die Kosten für das Bereitstellen werden dir erstattet.
- Il y a déjà un véhicule sur le point de spawn. Le coût de sortie du véhicule vous a été remboursé.
- C'è già un veicolo nel punto di creazione. Verrai rimborsato della spesa appena effettuata.
- Existe um outro veiculo na area de spawn. Você será reembolsado.
- W strefie parkowania znajduje się już pojazd. Środki za parkowanie zostaną zwrócone.
- 载具重生点已经被另一辆载具占据。你的花费将会返还。
-
-
- You sold that vehicle for $%1
- Ty jsi prodal toto vozidlo za $%1
- Vendiste el vehículo por $%1
-
- Du verkaufst dein Fahrzeug für $%1.
- Vous avez vendu ce véhicule pour $%1.
- Hai venduto il veicolo per $%1
- Você vendeu um veículo por R$%1
- Sprzedałeś pojazd za %1
- 你以 $%1 的价格出售了这辆载具
-
-
- That vehicle is a rental and cannot be stored in your garage.
- Že vozidlo je půjčovna a nemohou být uloženy ve vaší garáži.
- Este vehículo es rentado y no puede ser guardado.
-
- Mietwagen können nicht in der Garage geparkt werden.
- Ce véhicule est une location et ne peut pas être stocké dans votre garage.
- Il veicolo è in affitto e non può essere depositato in garage.
- Esse veículo é alugado e não pode ser armazenado na garagem.
- Pojazd wynajęty, nie możesz go schować w garażu.
- 载具是租赁的,不能存放在你的仓库里。
-
-
- That vehicle doesn't belong to you therefor you cannot store it in your garage.
- Co vozidlo nepatří k vám proto jej nelze ukládat ve vaší garáži.
- Este vehículo no es tuyo! Asi que no lo puedes guardar.
-
- Das Fahrzeug gehört nicht dir und kann deshalb nicht in der Garage geparkt werden.
- Ce véhicule ne vous appartient pas, vous ne pouvez pas le stocker dans votre garage.
- Il veicolo non ti appartiene e quindi non puoi depositarlo nel tuo garage.
- Você não é o proprietário desse veiculo, logo não poderá guarda-lo na garagem.
- Pojazd nie należy do ciebie nie możesz go schować w garażu. Ale zawsze możesz podjechać do dziupli!
- 载具不属于你,所以你不能把它存放在仓库里。
-
-
- The vehicle has been stored in your garage.
- Vozidlo bylo uložené v garáži.
- Has guardado el vehículo en el garaje.
-
- Das Fahrzeug wurde in die Garage eingeparkt.
- Le véhicule a été entreposé dans le garage.
- Il veicolo è stato depositato nel tuo garage.
- O veículo foi guardado na sua garagem.
- Pojazd został zaparkowany.
- 载具已存放在你的仓库里.
-
-
- Your vehicle is ready!
- Vaše vozidlo je připraven!
- Tu vehículo esta listo!
-
- Dein Fahrzeug steht bereit!
- Votre véhicule est prêt.
- Il tuo veicolo è pronto
- O seu veículo está pronto
- Pojazd jest gotowy
- 你的载具准备好了!
-
-
- The server is trying to store the vehicle...
- Tento server se pokouší uložit vozidlo ...
- El servidor esta tratando de guardar el vehículo...
-
- Der Server versucht, das Fahrzeug einzuparken...
- Le serveur tente de stocker le véhicule...
- Il server sta cercando di depositare il veicolo...
- O servidor está guardando o veiculo...
- Serwer próbuje schować pojazd w garażu ...
- 服务器正试图存储载具...
-
-
- The selection had a error...
- Volba obsahuje chybu ...
- Huvo un error en la selección...
-
- Die Auswahl hat einen Fehler...
- La sélection a une erreur...
- La selezione ha avuto un errore...
- Erro ao selecionar....
- Ten wybór powoduje błąd
- 选择有错误...
-
-
- There isn't a vehicle near the NPC.
- Není vozidla v blízkosti NPC.
- No hay un vehículo cerca del NPC.
-
- Es befindet sich kein Fahrzeug in der Nähe des NPC.
- Il n'y a pas de véhicule près du PNJ.
- Non c'è alcun veicolo vicino all'NPC.
- Não existe um veículo proximo ao NPC
- Nie ma pojazdu w pobliżu NPC
- NPC附近没有载具。
-
-
-
-
- Key Chain - Current List of Keys
- Klíčenka - Aktuální seznam klíčů
- Llavero - Lista de llaves
-
- Schlüsselbund - Aktuelle Liste
- Porte-clés - Liste actuelle des clés
- Portachiavi - Lista delle Chiavi
- Chaves - Atual Lista de Chaves
- Lista kluczyków
- 钥匙 - 当前列表
-
-
- Drop Key
- Drop Key
- Tirar llave
-
- Wegwerfen
- Jeter Clef
- Abbandona Chiave
- Remover Chave
- Wyrzuć klucz
- 丢弃钥匙
-
-
- Give Key
- dát klíč
- Dar Llave
-
- Geben
- Donner Clef
- Dai Chiave
- Dar Chave
- Daj klucz
- 给予钥匙
-
-
-
-
- Player Menu
- Nabídka přehrávače
- Menu de Jugador
-
- Spieler Menü
- Menu du Joueur
- Menu Giocatore
- Menu Jogador
- Menu gracza
- 玩家菜单
-
-
- Current Items
- Aktuální položky
- Objetos Actuales
-
- Aktuelle Gegenstände
- Items Actuels
- Oggetti Attuali
- Items Atuais
- Aktualne wyposażenie:
- 当前物品
-
-
- Licenses
- licencí
- Licencias
-
- Lizenzen
- Licences
- Licenze
- Licenças
- Licencje
- 许可证
-
-
- Money Stats
- peníze Statistiky
- Dinero
-
- Geld Statistik
- Stats Monétaires
- Statistiche Fondi
- Dinheiro
- Twoje środki
- 资产统计
-
-
- My Gang
- My Gang
- Mi Pandilla
-
- Meine Gang
- Mon Gang
- Mia Gang
- Gangue
- Gang
- 我的帮派
-
-
- Wanted List
- seznamu hledaných
- Lista de Busqueda
-
- Fahndungsliste
- Interpol
- Lista Ricercati
- Lista de Foragidos
- Poszukiwani
- 通缉名单
-
-
- Cell Phone
- Mobilní telefon
- Celular
-
- Telefon
- Téléphone
- Cellulare
- Celular
- Telefon
- 短消息
-
-
- Key Chain
- Klíčenka
- Llavero
-
- Schlüssel
- Porte-clés
- Portachiavi
- Chaves
- Klucze
- 钥匙
-
-
- Admin Menu
- Nabídka admin
- Menu Admin
-
- Admin Menü
- Menu Admin
- Menu Admin
- Menu Admin
- Admin Menu
- 管理菜单
-
-
- Sync Data
- synchronizace dat
- Sincronizar
-
- Speichern
- Sync Data
- Salva Dati
- Sincronizar Dados
- Synchronizuj
- 同步数据
-
-
-
-
- Settings Menu
- Nabídka Nastavení
- Configuración
-
- Einstellungen
- Menu Paramètres
- Menu Impostazioni
- Configurações
- Ustawienia:
- 设置菜单
-
-
- On Foot:
- Pěšky:
- A Pie:
-
- Zu Fuß:
- A pied :
- A piedi:
- A Pé:
- Na nogach:
- 步行:
-
-
- In Car:
- V autě:
- En Carro:
-
- Im Auto:
- En voiture :
- Auto:
- No Carro:
- W aucie:
- 载具:
-
-
- In Air:
- Ve vzduchu:
- En Aire:
-
- Im Himmel:
- Air
- Aria:
- No Ar:
- W powietrzu:
- 空中:
-
-
- View distance while on foot
- Pohled vzdálenost, zatímco na nohy
- Distancia de vista a pie
-
- Sichtweite zu Fuß
- Distance de vue à pied
- Distanza visiva a piedi
- Visualizar distância enquanto a pé
- Widoczność gdy na nogach
- 视距
-
-
- View distance while in a land vehicle
- Pohled vzdálenost, zatímco v pozemního vozidla
- Distancia de vista en vehiculo terrestre
-
- Sichtweite in Landfahrzeugen
- Distance de vue en véhicule terrestre
- Distanza visiva su veicolo di terra
- Visualizar distância enquanto em veículos terrestres
- Widoczność gdy w aucie
- 在陆地载具中观察距离
-
-
- View distance while in a air vehicle
- Pohled vzdálenost, zatímco ve vzduchu vozidle
- Distancia de vista en vehiculo aéreo
-
- Sichtweite in Luftfahrzeugen
- Distance de vue en véhicule aérien
- Distanza visiva su velivolo
- Visualisar distância enquanto em veículos aéreos
- Widoczność gdy w powietrzu
- 在飞行器上观察距离
-
-
- Player Tags
- přehrávač Tags
- Marcador de Jugadores
-
- Spielernamen
- Tags Joueurs
- Tag Giocatore
- Tags de Jogadores
- Tagi graczy
- 玩家标签
-
-
- Tags ON
- značky na
- Tags ON
-
- Namen AN
- Tags ON
- Tags ON
- Tags ON
- Tagi ON
- 启用标签
-
-
- Tags OFF
- Štítky OFF
- Tags OFF
-
- Namen AUS
- Tags OFF
- Tags OFF
- Tags OFF
- Tagi OFF
- 关闭标签
-
-
- Sidechat Switch
- Sidechat Spínač
- Canal Side
- Habilitar Sidechat
- Interruttore Sidechat
- Sidechat Przełącznik
-
- Habilitar Sidechat
- Sidechat umschalten
- 聊天框开关
-
-
- Reveal Nearest Objects
- Reveal Nejbližší objekty
- Révéler les objets les plus proches
- Revelar Objetos Cercanos
- Rivela oggetti più vicini
- Odsłonić Najbliższa Przedmioty
-
- Mostrar Objetos Próximos
- Nahe Objekte anzeigen
- 显示最近的物体
-
-
- Broadcast Switch
-
- Interrupteur de Transmission
- Habilitar Transmisiones
-
-
-
- Habilitar Transmissões
- Broadcast umschalten
- 广播开关
-
-
- Sidechat OFF
- Sidechat OFF
- Sidechat OFF
-
- Sidechat AUS
- Canal camp OFF
- Chat fazione OFF
- Sidechat OFF
- Czat strony OFF
- 聊天关闭
-
-
- Sidechat ON
- Boční Chat ON
- Sidechat OFF
-
- Sidechat AN
- Canal camp ON
- Chat fazione ON
- Sidechat ON
- Czat strony ON
- 聊天开启
-
-
-
-
- Shop Inventory
- Obchod Zásoby
- Inventario de Tienda
-
- Ladeninventar
- Boutique
- Inventario Negozio
- Loja de Inventário
- Oferta sklepu
- 店铺库存
-
-
- Your Inventory
- Váš Inventory
- Tu Inventario
-
- Eigenes Inventar
- Votre Inventaire
- Inventario Personale
- Seu Inventário
- Twoje wyposażenie
- 你的库存
-
-
- Buy Item
- Koupit Item
- Comprar
-
- Kaufen
- Acheter Objet
- Compra Oggetto
- Comprar Item
- Kup objekt
- 买东西
-
-
- Sell Item
- Navrhujeme Item
- Vender
-
- Verkaufen
- Vendre Objet
- Vendi Oggetto
- Vender Item
- Sprzedaj obiekt
- 卖东西
-
-
-
-
- Spawn Selection
- potěr Selection
- Selección de Spawn
-
- Aufwachpunkt Auswahl
- Sélection du Spawn
- Selezione Spawn
- Locais para Começar
- Wybierz punkt odrodzenia
- 选择重生点
-
-
- Spawn
- Potěr
- Spawn
-
- Aufwachen
- Spawn
- Spawn
- Começar
- Odradzanie
- 重生
-
-
- Current Spawn Point
- Aktuální potěr Point
- Punto de Spawn Actual
-
- Aktueller Aufwachpunkt
- Point de Spawn Actuel
- Punto di Spawn corrente
- Ponto de início Atual
- Aktualny punkt odrodzenia
- 目前的重生点
-
-
- You have spawned at
- Jste třel
- Has aparecido en
-
- Du bist aufgewacht in
- Tu as spawn à
- Ti trovi a
- Você irá começar em
- Odrodziłeś się w
- 你重生了
-
-
-
-
- Give Ticket
- Dejte Ticket
- Dar Tiquete
-
- Ticket geben
- Verbaliser
- Dai Multa
- Dar Multa
- Wystaw mandat
- 开据罚单
-
-
- Pay Ticket
- Pay vstupenek
- Pagar Tiquete
-
- Ticket bezahlen
- Payer l'amende
- Paga Multa
- Pagar Multa
- Zapłać mandat
- 支付罚款
-
-
- Refuse Ticket
- odmítnout Ticket
- Denegar Tiquete
-
- Ticket ablehnen
- Refuser l'amende
- Rifiuta Multa
- Recusar Multa
- Odmów przyjęcia mandatu
- 拒绝缴款
-
-
-
-
- Trunk Inventory
- kufr Inventory
- Inventario del Vehículo
-
- Kofferraum
- Coffre
- Inventario Veicolo
- Inventário do Veículo
- Zawartość
- 库存清单
-
-
- Player Inventory
- hráč Inventory
- Inventario del Jugador
-
- Spielerinventar
- Inventaire Joueur
- Inventario Giocatore
- Inventário do Jogador
- Wyposażenie gracza
- 玩家清单
-
-
- Take
- Vzít
- Sacar
-
- Nehmen
- Récupérer
- Prendi
- Pegar
- Weź
- 取出
-
-
- Store
- Obchod
- Guardar
-
- Lagern
- Déposer
- Deposita
- Depositar
- Schowaj
- 存储
-
-
-
-
- APD Wanted List
- LAPD seznamu hledaných
- Lista de Busqueda
-
- Fahndungsliste
- Interpol
- Lista Ricercati
- Lista APD Poszukiwane
- Lista de Procurados
- 通缉名单
-
-
- Pardon
- Pardon
- Perdonar
-
- Erlassen
- Pardonner
- Perdona
- Pardon
- Perdão
- 赦免
-
-
- Add
- Přidat
- Ajouter
- Agregar
- Aggiungere
- Dodaj
-
- Adicionar
- Hinzufügen
- 添加
-
-
- Wanted People
- chtěl, aby lidé
- Personnes recherchées
- Gente Buscada
- La gente voleva
- Ludzie chcieli
-
- Pessoas Procuradas
- Gesuchte Personen
- 通缉犯
-
-
- Citizens
- občané
- Citoyens
- Ciudadanos
- cittadini
- Obywatele
-
- Cidadãos
- Bürger
- 公民
-
-
- Crimes
- Zločiny
- Crimes
- Crimenes
- crimini
- Zbrodnie
-
- Crimes
- Verbrechen
- 罪犯
-
-
- %1 has been added to the wanted list.
- %1 byl přidán do seznamu hledaných.
- %1 a été ajouté à la liste des personnes recherchées.
- %1 ha sido agregado a la Lista de Busqueda.
- %1 è stato aggiunto alla lista dei ricercati.
- %1 został dodany do listy pożądanego.
-
- %1 foi adicionado a lista de procurados.
- %1 wurde zur Fahndungsliste hinzugefügt.
- %1 已添加到通缉名单.
-
-
- %1 count(s) of %2
- Počet%1 (y) z %2
- %1 chef (s) de %2
- %1 cuenta(s) de %2
- %1 count (s) del %2
- %1 count (ów) z %2
-
- %1 contagem(s) de %2
- %1 Vergehen: %2
- %1 违法(次数) %2
-
-
- Current Bounty Price: $%1
- Aktuální Bounty Cena: $ %1
- Prix de la prime: $%1
- Recompensa Actual: $%1
- Corrente Bounty Prezzo: $%1
- Aktualny Bounty Cena: $%1
-
- Atual recompensa: R$%1
- Aktuelle Prämie: $%1
- 目前的赏金: $%1
-
-
-
-
- Salema
- Salema
- Salema
-
- Sardine
- Saumon
- Salmone
- Salema
- Salema
- 加州异鳍石鲈
-
-
- Ornate
- Vyšperkovaný
- Ornate
-
- Kaiserfisch
- Doré
- Orata
- Ornamentado
- Dorada
- 橙带蝴蝶鱼
-
-
- Mackerel
- Makrela
- Verdel
-
- Makrele
- Maquereau
- Sgombro
- Cavalinha
- Makrela
- 鲭鱼
-
-
- Tuna
- Tuňák
- Atún
-
- Thunfisch
- Thon
- Tonno
- Atum
- Tuńczyk
- 金枪鱼
-
-
- Mullet
- cípal
- Lisas
-
- Meerbarbe
- Mullet
- Triglia
- Tainha
- Cefal
- 梭鱼
-
-
- Cat Shark
- Cat žralok
- Pez Gato
-
- Katzenhai
- Poisson Chat
- Squalo
- Tubarão Gato
- Rekin
- 鲨鱼
-
-
- Rabbit
- Králičí
- Conejo
-
- Hase
- Lapin
- Coniglio
- Coelho
- Zając
- 兔子
-
-
- Chicken
- Kuře
- Gallina
-
- Hühnchen
- Poulet
- Pollo
- Frango
- Kurczak
- 雏鸡
-
-
- Rooster
- Kohout
- Gallo
-
- Hähnchen
- Coq
- gallo
- galo
- kogut
- 公鸡
-
-
- Goat
- Koza
- Cabra
-
- Ziege
- Chèvre
- Capra
- Cabra
- Koza
- 山羊
-
-
- Sheep
- Ovce
- Obeja
-
- Schaf
- Mouton
- pecora
- ovelha
- Owca
- 绵羊
-
-
- Turtle
- Želva
- Tortuga
-
- Schildkröte
- Tortue
- Tartaruga
- Tartaruga
- żółw
- 乌龟
-
-
-
-
- You do not have $%1 for a %2
- Nemáte $%1 pro%2
- No tienes $%1 para una %2
-
- Du hast keine $%1 für einen %2.
- Vous n'avez pas %1$ pour cet élément : %2
- Non hai $%1 per $2
- Você não tem R$%1 para %2
- Nie masz $%1 na %2
- 你没有 $%1 支付 %2
-
-
- You bought a %1 for $%2
- Koupil sis%1 pro $ %2
- Comprastes una %1 por $%2
-
- Du hast einen %1 für $%2 gekauft.
- Vous avez acheté : %1 pour %2$
- Hai comprato un %1 per $%2
- Você comprou %1 por R$%2
- Kupiłeś %1 za $%2
- 你购买 %1 花费 $%2
-
-
- %1 was arrested by %2
- %1 byl zatčen%2
- %1 fue arrestado por %2
-
- %1 wurde von %2 verhaftet.
- %1 a été arrêté par %2
- %1 è stato arrestato da %2
- %1 foi preso por %2
- %1 został aresztowany przez %2
- %1 被 %2 逮捕
-
-
- You caught a %1
- chytil jste%1
- Atrapastes un %1
-
- Du hast einen %1 gefangen.
- Vous avez attrapé un %1
- Hai pescato %1
- Você pegou %1
- Złapałeś %1
- 你逮捕了 %1
-
-
- Gutting %1
- Kuchání%1
- Eviscerando %1
-
- %1 ausnehmen
- Eviscération de %1
- eviscerazione %1
- evisceração %1
- Patroszenie %1
- 去除 %1 的内脏
-
-
- You have collected some raw %1 meat
- Nasbíráte nějaké syrové maso %1
- Has recolectado carne cruda de %1
-
- Du hast rohes %1 Fleisch erhalten.
- Vous avez récolté quelques morceaux de %1 cru
- You have collected some raw %1 meat
- You have collected some raw %1 meat
- You have collected some raw %1 meat
- 你已经从 %1 收集生肉
-
-
- You have taken some turtle meat
- Jste si vzali nějaké želví maso
- Has tomado carne de tortuga.
-
- Du hast etwas Schildkrötenfleisch bekommen.
- Vous avez récupéré un peu de viande de tortue
- Hai raccolto della carne di tartaruga
- Você pegou carne de tartaruga
- Wziąłeś trochę mięsa żółwia
- 你吃了一些海龟肉
-
-
- You have earned $%1
- Jste získali $%1
- Has ganado $%1
-
- Du hast $%1 verdient.
- Vous avez gagné %1$
- Hai guadagnato $%1
- Você ganhou R$%1
- Otrzymałeś $%1
- 你赚了 $%1
-
-
- Dropping fishing net...
- Pád rybářská síť ...
- Tirando red de pesca...
-
- Fischernetz auswerfen...
- Déploiement du filet de pêche...
- Posizionando la rete da pesca...
- Jogando rede de pesca...
- Rzucam sieć...
- 撒下鱼网...
-
-
- Didn't catch any fish...
- Nezachytil žádnou rybu ...
- No atrapastes peces...
-
- Keinen Fisch gefangen...
- Vous n'avez pas réussi à attraper de poisson...
- Non hai pescato nulla...
- A rede voltou vazia...
- Nic nie złapałeś...
- 没有捕到任何鱼...
-
-
- Fishing net pulled up.
- Rybářská síť vytáhl nahoru.
- Recogistes la red.
-
- Fischernetz eingeholt.
- Le filet de pêche a été entièrement relevé.
- Rete da pesca recuperata.
- A rede de pesca foi recolhida
- Sieć wciągnięta.
- 拉起渔网。
-
-
- Your inventory space is full.
- Váš inventář prostor je plný.
- No tienes espacio en tu inventorio.
-
- Dein Inventar ist voll.
- Vous n'avez plus de place dans votre inventaire.
- Il tuo inventario è pieno.
- Seu inventário está cheio
- Nie masz więcej miejsca.
- 您的库存空间已满。
-
-
- Gathering %1...
- Sběr%1 ...
- Recolectando %1...
-
- Sammle %1...
- Ramassage de %1...
- Raccogliendo %1
- Coletando %1...
- Zbierasz %1
- 采集 %1...
-
-
- You have sold a %1 for $%2
- Jste prodal%1 pro $ %2
- Has vendido un %1 por $%2
-
- Du hast einen %1 für $%2 verschrottet.
- Vous avez vendu un(e) %1 pour $%2
- Hai venduto un %1 per %2$
- Você vendeu %1 por R$%2
- Sprzedałeś %1 za $%2
- 你卖掉 %1 赚了 $%2
-
-
- You have picked %1 %2
- Jste si vybrali% %1 2
- Has recogido %1 %2
-
- Du hast %1 %2 aufgenommen.
- Vous avez ramassé : %1 %2
- Hai trovato %1 %2
- Você pegou %1 %2
- Podniosłeś %1 %2
- 你采集了 %1 个 %2
-
-
- You have collected some %1
- Jste nasbírali řadu%1
- Has recolectado %1
-
- Du hast etwas %1 gesammelt.
- Vous avez récolté %1
- Hai raccolto %1
- Você coletou %1
- Wziąłeś %1
- 你采集了一些 %1
-
-
- You are to deliver this package to %1.
- Jste doručit tento balíček %1
- Debes llevar este paquete a %1
-
- Du musst dieses Paket bei %1 abliefern.
- Vous avez livré ce paquet à %1
- Devi consegnare questo pacco al %1
- Você deverá entregar esse pacote para %1
- Dostarcz tę przesyłkę do %1
- 你要递送这个包裹到 %1。
-
-
- Deliver this package to %1.
- Doručit tento balíček %1
- LLeva el paquete a: %1
-
- Liefere dieses Paket bei %1 ab.
- Livrer ce paquet à %1.
- Consegna questo pacco al %1
- Entregue esse pacote para %1
- Dostarcz przesyłkę do %1
- 把这个包裹送到 %1。
-
-
- You failed to deliver the package because you died.
- Nepodařilo se vám doručit balíček, protože jsi zemřela.
- Fallastes la misión, porque moristes.
-
- Da du gestorben bist, hast du es nicht geschafft das Paket abzuliefern.
- Vous êtes mort, livraison annulée.
- Compra Oggetto
- Você falhou na tarefa de entrega pois você morreu.
- Nie dostarczyłeś przesyłki z uwagi na to że zmarłeś.
- 因为你死了,所以你没能投递包裹。
-
-
- You do not have $%1 to be healed
- Nemáte $%1, aby se léčil
- No tienes $%1 para ser curado
-
- Du hast keine $%1, um behandelt zu werden.
- Vous n'avez pas $%1 pour être soigné.
- Non hai $%1 per essere curato
- Você não tem R$%1 para ser curado
- Nie masz $%1 na leczenie
- 你没有 $%1 治疗费
-
-
- You do not need to be healed!
- Nemusíte být uzdraven!
- Vous êtes déjà en pleine forme !
- Usted no necesita ser curado!
- Non è necessario essere guarito!
- Nie trzeba się wyleczyć!
- Você não precisa ser curado!
- Вам не нужно быть исцелены!
- Du brauchst keine Behandlung!
- 你不需要治疗!
-
-
- Spend $%1 to be fully healed?
- Útrata $%1 musí být zcela vyléčit?
- Donner $%1 pour être complètement guéri ?
- Gastar $%1 para ser curado por completo?
- Spendere $%1 di essere completamente guarito?
- Wydać $%1 w pełni uzdrowiony?
- Gastar US $%1 para ser totalmente curado?
- Потратит $%1, чтобы быть полностью зажила?
- Willst du dich für $%1 vollständig behandeln lassen?
- 花费 $%1 痊愈?
-
-
- Doctor
- Doktor
- Docteur
- Médico
- Medico
- Lekarz
- Médico
- Врач
- Arzt
- 医疗人员
-
-
- Please stay still
- Prosím, zůstat v klidu
- Por favor, no te muevas
-
- Bitte bewege dich nicht!
- Ne bougez pas
- Attendi pazientemente
- Fique parado por favor
- Proszę się nie ruszać
- 请不要动
-
-
- You need to be within 5m while the doctor is healing you
- Musíte být v rámci 5m, zatímco lékař vás hojení
- Debes estar a 5m mientras que te curan.
-
- Du musst in der Nähe vom Arzt bleiben, damit er dich behandeln kann.
- Vous devez être à moins de 5m du médecin pendant qu'il vous soigne.
- Devi restare entro 5m dal dottore per essere curato
- Você tem que estar a 5m para o médico curá-lo
- Musisz być w pobliżu doktora gdy ten cię leczy - ok 5m
- 医疗人员在治疗你的时候,你必须在5米以内
-
-
- You are now fully healed.
- Ty jsou nyní plně uzdravil.
- Estas curado!
-
- Du wurdest behandelt.
- Vous êtes completement soigné.
- Sei stato curato completamente.
- Sua saúde está perfeita
- Zostałeś wyleczony
- 你现在痊愈了。
-
-
- %1 your %2 is being impounded by the police.
- %1 Váš%2 je zabaveno policií.
- %1 tu %2 esta siendo embargado por la policía.
-
- %1 dein %2 wird von der Polizei beschlagnahmt!
- %1, votre %2 est en train d'être envoyé à la fourrière par la police.
- %1 il tuo %2 sta per essere sequestrato dalla Polizia.
- %1 seu %2 está sendo apreendido pela Polícia
- %1 twój %2 jest usuwany przez Policję
- %1 的 %2 正在被警察扣留。
-
-
- Impounding Vehicle
- vzdouvání Vehicle
- Embargando Vehículo
-
- Fahrzeug wird beschlagnahmt
- Mise en fourrière
- Sequestro Veicolo in corso
- Apreendendo veículo
- Usuwam pojazd
- 扣留载具
-
-
- Impounding has been cancelled.
- Zabavení byla zrušena.
- Embargo cancelado.
-
- Beschlagnahmung abgebrochen.
- Mise en fourrière annulée.
- Il sequestro è stato annullato.
- Ação de apreender foi cancelada
- Przerwano usuwanie pojazdu
- 扣留已被取消.
-
-
- You have impounded a %1\n\nYou have received $%2 for cleaning up the streets!
- Jste zabaveno a %1 \n\n jste obdržel $%2 pro čištění ulic!
- Has embargado un %1\n\nHas recibido $%2 por limpiar las calles!
-
- Du hast einen %1 beschlagnahmt\n\nDu hast $%2 für das Aufräumen der Straßen bekommen!
- Vous avez mis en fourrière un(e) %1\n\nVous avez reçu $%2.
- Hai sequestrato un %1\n\nHai ricevuto $%2 per aver mantenuto l'ordine nelle strade!
- Você apreendeu %1\n\nVocê recebeu R$%2 por deixar as ruas mais seguras!
- Usunąłeś %1\n\n Otrzymujesz $%2 za oczyszczanie mapy
- 你扣留了 %1\n\你收到了 $%2 扣留费!
-
-
- %1 has impounded %2's %3
- %1 byl odtažen% %2 3 je
- %1 a embargado el %3 de %2
-
- %1 hat %2's %3 beschlagnahmt.
- %1 a mis en fourrière le %3 de %2.
- %1 ha sequestrato il %2 di %3
- %1 apreendeu %3 de %2
- %1 usunął %2's %3
- %1 扣留了 %2 的 %3
-
-
- You paid $%1 for impounding your own %2.
- Zaplatil jste $%1 pro vzdouvání vlastní %2.
- Vous avez payé $%1 pour la mise en fourrière de votre propre %2.
- Has pagado $%2 para embargar tu propio %1.
- Hai pagato $%1 per sequestro la propria %2.
- Zapłaciłeś $%1 do zatrzymywania własną %2.
-
- Du hast $%1 bezahlt, weil du dein eigenen %2 beschlagnahmt hast.
- Você pagou R$%1 para guardar seu próprio %2.
- 你支付 $%1 取出了被扣留的 %2.
-
-
- Abort available in %1
- Přerušit k dispozici v %1
- Aborto disponible en %1
-
- Déconnexion disponible dans %1
- Abbruch möglich in %1.
- Abbandona disponibile in %1
- Abortar disponível em %1
- Możesz przerwać za %1
- 距离下线时间 %1
-
-
- This vehicle is already mining
- Toto vozidlo je již dobývání
- Este Vehículo ya esta minando
-
- Dieses Fahrzeug ist bereits am Abbauen.
- Ce véhicule est déjà en train de miner
- Questo veicolo sta già estraendo risorse
- Esse veículo já está minerando
- Pojazd jest w trakcie wydobycia surowców
- 载具已经在开采了
-
-
- The vehicle is full
- Vozidlo je plná
- El vehículo esta lleno!
-
- Das Fahrzeug ist voll.
- Le véhicule est plein.
- Il veicolo è pieno
- O veículo está cheio.
- Pojazd jest pełny
- 载具库存已满
-
-
- You are not near a resource field
- Nejste v blízkosti oblasti zdrojů
- No estas cerca de un campo de recursos.
-
- Du bist nicht in der Nähe eines Ressourcenfeldes.
- Vous n'êtes pas à proximité d'un champ de ressources.
- Non sei vicino ad un campo risorse
- Você não está próximo ao recurso
- Nie jesteś w pobliżu pola surowców
- 你不在资源区域附近
-
-
- You cannot turn the vehicle on when mining
- Nemůžete otočit vozidlo o tom, kdy výtěžek
- No puedes girar el vehículo mientras esta minando
-
- Du kannst das Fahrzeug nicht starten, solange es am Abbauen ist.
- Le moteur doit être arrêté pour que le véhicule puisse miner
- Non puoi accendere il veicolo mentre estrae risorse
- Você não pode ligar o veículo enquanto minera
- Nie możesz poruszać pojazdem w trakcie wydobycia.
- 开采时不能打开载具
-
-
- The Device is mining...
- Zařízení je důlní ...
- El Dispositivo esta minando...
-
- Das Fahrzeug baut ab...
- Le véhicule est en train de miner...
- Il veicolo sta estrando risorse...
- A máquina está minerando...
- Trwa wydobycie...
- 设备正在开采...
-
-
- Completed cycle, the device has mined %1 %2
- Dokončena cyklus, přístroj se těžil% %1 2
- Ciclo completado el dispositivo ha minado %1 %2
-
- Sammeln beendet, das Fahrzeug hat %1 %2 abgebaut.
- Cycle terminé, le véhicule a miné %1 %2
- Ciclo completato, il veicolo ha raccolto %1 %2
- Ciclo completo, a máquina minerou %1 %2
- Urządzenie wydobyło %1 %2
- 完成一个开采周期,设备已开采 %1 %2
-
-
- Vehicle is out of fuel
- Vozidlo je mimo pohonné hmoty
- El vehículo no tiene gasolina.
-
- Das Fahrzeug hat keinen Treibstoff mehr.
- Le véhicule n'a plus de carburant.
- Il veicolo è senza carburante
- O veículo está sem combustível
- Brak paliwa w pojezdzie
- 载具燃料不足
-
-
- You have packed up the spike strip.
- Jste sbalil spike proužek.
- Has agarrado la Barrera de Clavos.
-
- Du hast das Nagelband eingepackt.
- Vous avez récupéré la herse.
- Hai raccolto una striscia chiodata.
- Você recolheu o tapete de espinhos.
- Kolczatka zwinięta
- 你铺设了钉刺带。
-
-
- %1 has been placed in evidence, you have received $%2 as a reward.
- %1 byl umístěn v důkazu, jste obdrželi $%2 jako odměnu.
- %1 ha sido colocado en evidencias, has recibido $%2 como recompensa.
-
- %1 hat Beweise hinterlassen, als Belohnung erhälst du $%2.
- Vous avez mis sous scellé la drogue de %1, vous avez reçu $%2 comme récompense.
- E' stata trovata della merce illegale: %1, hai ricevuto $%2 come ricompensa.
- %1 foi pego como evidência, você recebeu R$%2 como recompensa.
- %1 umieszczony w dowodach, otrzymujesz w nagrodę $%2
- %1 已经被送入监狱,你已经收到了 $%2 作为奖励.
-
-
- You have picked up $%1
- Jste zvedl $%1
- Has recogido $%1
-
- Du hast $%1 aufgehoben.
- Vous avez ramassé $%1
- Hai raccolto $%1
- Você pegou R$%1
- Podniosłeś $%1
- 你捡到了 $%1
-
-
- You must wait at least 3 minutes in jail before paying a bail.
- Musíte počkat nejméně 3 minuty ve vězení předtím, než platit kauci.
- Debes esperar un minimo de 3 minutos en la cárcel antes de poder pagar la fianza.
-
- Du musst mindestens 3 Minuten lang im Gefängnis bleiben, bevor du die Kaution beantragen kannst.
- Vous devez attendre au moins 3 minutes en prison avant de pouvoir payer votre caution.
- Devi aspettare almeno 3 minuti in prigione prima di poter pagare la cauzione.
- Você precisa esperar pelo menos 3 minutos antes de poder pagar fiança.
- Musisz poczekać conajmniej 3 minuty w więzieniu zanim zapłacisz kaucję.
- 在保释之前,你必须至少在监狱里呆3分钟。
-
-
- You do not have $%1 in your bank account to pay bail.
- Nemáte $%1 z vašeho bankovního účtu platit kauci.
- No tienes $%1 en tu cuenta de banco para pagar la fianza!
-
- Du hast keine $%1 auf deinem Bankkonto, um die Kaution zu bezahlen.
- Vous n'avez pas $%1 dans votre compte en banque pour payer la caution.
- Non hai $%1 nel tuo conto in banca per poter pagare la cauzione.
- Você não tem R$%1 em sua conta bancária para pagar a fiança.
- Nie masz $%1 na koncie aby zapłacić kaucję.
- 你的银行账户没有 $%1 的金额。
-
-
- %1 has posted bail!
- %1 byl vyslán na kauci!
- %1 a pagado la fianza!
-
- %1 hat die Kaution bezahlt!
- %1 a payé sa caution !
- %1 ha pagato la cauzione!
- %1 pagou a fiança!
- %1 wpłacił kaucję!
- %1 已保释!
-
-
- There isn't a vehicle nearby...
- Není vozidlo v blízkosti ...
- No hay un vehículo cerca...
-
- Es ist kein Fahrzeug in der Nähe...
- Il n'y a pas de véhicule à proximité...
- Non c'è alcun veicolo qui vicino...
- Não existe um veículo por perto...
- W pobliżu nie ma pojazdu...
- 附近没有载具...
-
-
- You can't chop a vehicle while a player is near!
- Nemůžeš sekat vozidla, zatímco hráč je blízko!
- Vous ne pouvez pas vendre un véhicule alors que son propriétaire est à proximité !
- No puedes vender este vehículo mientras hay un jugador cerca!
- Non si può rubare un veicolo mentre un giocatore è vicino!
- Nie można posiekać pojazd podczas gdy gracz jest w pobliżu!
-
- Você não pode usar o desmanche enquanto um jogador está próximo!
- Du kannst kein Fahrzeug beim Schrotthändler verschrotten, während ein Spieler in der Nähe ist!
- 当玩家靠近时,你不能盗窃载具!
-
-
- %1 was restrained by %2
- %1 byl omezen%2
- %1 fue retenido por %2
-
- %1 wurde von %2 festgenommen
- %1 a été menotté par %2
- %1 è stato ammanettato da %2
- %1 foi imobilizado por %2
- %1 został skuty przez %2
- %1 被 %2 约束
-
-
- Searching...
- Hledám ...
- Buscando...
-
- Durchsuche...
- Recherche...
- Ricerca...
- Revistando...
- Szukam...
- 搜查...
-
-
- Couldn't search the vehicle
- Nemohli vyhledávat na vozidlo
- No se pudo buscar el vehículo.
-
- Das Fahrzeug konnte nicht durchsucht werden!
- Impossible de fouiller le véhicule.
- Impossibile ispezionare il veicolo
- Você não pode revistar o veículo
- Nie można przeszukać pojazdu
- 不能搜查载具
-
-
- Your illegal items have been put into evidence.
- Vaše nelegálních položky byly uvedeny do důkazy.
- Tus objetos ilegales fueron confiscados.
-
- Deine illegalen Gegenstände wurden als Beweismittel eingezogen.
- Vos objets illégaux ont été mis sous scellé.
- I tuoi articoli illegali sono stati messi sotto sequestro.
- Seus itens ilegais foram postos em evidência.
- Twoje nielegalne pozycje zostały wprowadzone do dowodów.
- 你的非法物品被查获。
-
-
- This vehicle has no information, it was probably spawned in through cheats. \n\nDeleting vehicle.
- Toto vozidlo nemá žádné informace, to bylo pravděpodobně třel dovnitř podvodníky. \ In \ Odstranění vozidla.
- Este vehículo no tiene informacion, posiblemente fue creado atravez de Cheats \n\nBorrando vehículo.
-
- Über das Fahrzeug gibt es keine Informationen, es wurde vermutlich durch Cheats gespawnt. \n\nLösche das Fahrzeug.
- Ce véhicule ne dispose d'aucune information, il a probablement été créé par un hackeur. \n\ Suppression du véhicule.
- Il veicolo è privo di identificativi, probabilmente è stato creato mediante cheat. \n\nCancellazione veicolo.
- Esse veículo não tem informações, é provável que ele tenha sido criado por um cheater.\n\nDeletando veículo.
- Pojazd bez informacji servera, prawdopodobnie umieszczony przez hakera \n\n usuwam pojazd.
- 这载具没有任何信息, 它可能是通过作弊产生的. \n\n删除载具。
-
-
- You are already doing an action. Please wait for it to end.
- Ty jsou již dělá akci. Počkejte prosím, až to skončí.
- Ya estas haciendo una acción, espera a que termine.
-
- Du führst bereits eine Aktion aus. Bitte warte, bis diese beendet ist.
- Vous faites déjà une action. Merci d'attendre la fin de celle-ci.
- Stai già compiendo un'azione, attendi che finisca.
- Você já está executando uma ação. Por favor espere até que ela acabe.
- Aktualnie wykonujesz jakąś akcję poczekaj aż skończysz.
- 你已经在行动了.请等待结束.
-
-
- %1 was unrestrained by %2
- %1 byl živelný%2
- %1 fue soltado por %2
-
- %1 wurde von %2 freigelassen.
- %1 a été démenotté par %2.
- %2 ha tolto le manette a %1
- %1 foi liberado por %2
- %1 został rozkuty przez %2
- %1 摆脱了 %2 的约束
-
-
- %1 has robbed %2 for $%3
- %1 oloupil%2 na $ %3
- %1 le ha robado $%3 a %2
-
- %1 hat $%3 von %2 geraubt.
- %1 a volé %2 pour $%3.
- %1 ha rapinato %2 di $%3
- %1 roubou R$%3 de %2
- %1 obrabował $%2 na $%3
- %1 抢劫了 %2 金钱 $%3
-
-
- %1 doesn't have any money.
- %1 nemá žádné peníze.
- %1 No tiene dinero.
-
- %1 hat kein Geld.
- %1 n'a pas d'argent.
- %1 non ha alcun soldo.
- %1 não tem nenhum dinheiro.
- %1 nie ma pieniędzy.
- %1 身无分文。
-
-
- %1 was tazed by %2
- %1 byl tased%2
- %1 fue paralizado por %2
-
- %1 wurde von %2 getazert.
- %1 a été tazé par %2.
- %1 è stato taserato da %2
- %1 foi eletrocutado por %2
- %1 został potraktowany paralizatorem przez %2
- %1 被 %2 约束
-
-
- A vehicle was searched and has $%1 worth of drugs / contraband.
- Vozidlo byl prohledán a má $%1 v hodnotě drog / kontrabandu.
- Un vehículo fue buscado y se econtro $%1 en drogas / contrabando.
-
- Ein Fahrzeug wurde durchsucht und es wurden Drogen / Schmuggelware im Wert von $%1 gefunden.
- Un véhicule venant d'être fouillé avait $%1 de drogue / contrebande.
- Un veicolo è stato ispezionato e sono stati sequestrati $%1 in materiale illegale.
- O veículo foi revistado e tem R$%1 em drogas ou contrabandos
- Podczas przeszukania znalezono narkotyki/kontrabandę o wartości $%1
- 搜查载具查获价值 $%1 的毒品/违禁品。
-
-
- A container of house was searched and has $%1 worth of drugs / contraband.
- Kontejner domu byl prohledán a má $%1 v hodnotě drog / kontrabandu.
- Un contenedor fue buscado y se econtro $%1 en drogas / contrabando.
-
- Ein Container im Haus wurde durchsucht und es wurden Drogen / Schmuggelware im Wert von $%1 gefunden.
- Un conteneur de maison venant d'être fouillé avait $%1 de drogue / contrebande.
- Un veicolo è stato ispezionato e sono stati sequestrati $%1 in materiale illegale.
- O veículo foi revistado e tem R$%1 em drogas ou contrabandos
- Podczas przeszukania znalezono narkotyki/kontrabandę o wartości $%1
- 搜查房子存储箱查获价值 $%1 的毒品/违禁品.
-
-
- You have been pulled out of the vehicle.
- Byli jste vytáhl z vozu.
- Te han sacado del vehículo
-
- Du wurdest aus dem Fahrzeug gezogen.
- Vous avez sorti les personnes du véhicule.
- Sei stato estratto dal veicolo
- Você foi retirado do veículo
- Zostałeś wyciągnięty z pojazdu
- 你从车里被拖出来了。
-
-
- %1 has gave you %2 %3.
- %1 vám již dal% %2 3.
- %1 te ha dado %2 %3
-
- %1 hat dir %2 %3 gegeben.
- %1 vous a donné %2 %3.
- %1 ti ha dato %2 %3
- %1 lhe deu %2 %3
- %1 dał ci %2 %3
- %1 给了你 %2 %3.
-
-
- %1 has given you $%2.
- %1 vám dal $ %2.
- %1 te ha dado $%2
-
- %1 hat dir $%2 gegeben.
- %1 vous a donné $%2.
- %1 ti ha dato $%2
- %1 lhe deu R$%2
- %1 dał ci $%2
- %1 给了你 $%2.
-
-
- Sending information to server please wait.....
- Odesílání informací serveru čekejte prosím ...
- Mandando información, por favor espere...
-
- Sende Informationen an den Server, bitte warten.....
- Envoi d'informations au serveur, patientez s'il vous plait...
- Invio delle informazioni al server, attendere prego......
- Enviando informações para o servidor, seja paciente.....
- Przesyłam informacje na server poczekaj ....
- 发送信息到服务器,请稍候.....
-
-
- An action is already being processed...
- Akce je již zpracován ...
- Una acción ya esta siendo procesada...
-
- Es wird bereits eine Aktion ausgeführt...
- Une action est déjà en cours de traitement...
- Un'azione è già in corso...
- Você já está realizando um ação...
- Akcja jest w trakcie wykonywania...
- 正在处理操作...
-
-
- You're doing it too fast!
- Děláte to příliš rychle!
- Moins vite entre chaque action !
- Lo estas haciendo muy rapido!
- Lo stai facendo troppo veloce!
-
- Du bist ganz aus der Puste! Warte ein paar Sekunden!
- Você está fazendo isso muito rápido!
- Za szybko zwolnij !
- 你做得太快了!
-
-
- You don't have enough space for that amount!
- Nemáte dostatek prostoru pro tuto částku!
- No tienes suficiente espacio para eso!
-
- Du hast für diese Menge nicht genug Platz!
- Vous n'avez pas assez de place pour cette quantité !
- Non hai abbastanza spazio per quel quantitativo!
- Você não tem espaço suficiente para guardar o item
- Nie masz tyle miejsca!
- 你没有足够的空间存放物品!
-
-
- You don't have that much money!
- Nemáte tolik peněz!
- No tienes tanto dinero!
-
- Du hast nicht so viel Geld!
- Vous n'avez pas assez d'argent !
- Non hai tutti quei soldi!
- Você não tem todo esse dinheiro!
- Nie masz tyle pieniędzy!
- 你没有那么多钱!
-
-
- You are not a cop.
- Ty nejsi polda.
- No eres policía.
-
- Du bist kein Polizist.
- Vous n'êtes pas policier.
- Non sei un poliziotto.
- Você não é um Policial.
- Nie jesteś policjantem
- 你不是警察。
-
-
- You don't have enough room for that item.
- Nemáte dostatek prostoru pro danou položku.
- No tienes el espacio suficiente.
-
- Du hast nicht genug Platz für den Gegenstand.
- Vous n'avez pas assez de place.
- Non hai abbastanza spazio per quell'oggetto.
- Você não tem espaço suficiente no seu inventário.
- Nie masz wystarczająco miejsca na tą rzecz.
- 你没有足够的空间存放这个物品。
-
-
- You need $%1 to process without a license!
- Musíte $%1 bez povolení ke zpracování!
- Necesitas $%1 par procesar sin una licencia!
- È necessario $%1 a processo senza patente!
-
- Du benötigst $%1, um ohne Lizenz verarbeiten zu können!
- Vous devez payer $%1 pour traiter sans licence !
- Você precisa de R$%1 para processar sem uma licença!
- Potrzebujesz $%1 w celu przetworzenia bez licencji
- 你未取得许可需要支付 $%1 才能加工!
-
-
- You don't have enough items!
- Ty nemají dostatek položku!
- No tienes suficientes objetos!
- Non disponi di abbastanza materiale grezzo!
- Nie masz wystarczająco dużo rzeczy!
-
- Vous n'avez pas assez d'items !
- Você não tem itens suficientes!
- Du hast nicht genug Materialien!
- 你没有足够的物品!
-
-
- You have processed your item(s)!
- Jste zpracujeme vaši položku (y)!
- Has procesado tus objeto(s)
-
- Vous avez traité vos objet(s) !
- Hai processato i tuoi oggetti!
- Przetworzeniu swój przedmiot (y)!
- Você processou seu(s) item(s)
- Du hast deine Materialien verarbeitet!
- 你已经加工了你的物品!
-
-
- You can't rapidly use action keys!
- Nemůžete rychle využít akčních kláves!
- No puedes usar Keys de Acciones tan rápido!
-
- Die Aktionstaste kann nicht so schnell hintereinander genutzt werden!
- Vous ne pouvez pas utiliser rapidement les touches d'action !
- Non puoi riusare così rapidamente il tasto azione!
- Você não pode usar a tecla de ação repetidamente!
- Za szybko używasz przycisku akcji!
- 你不能快速点击按键!
-
-
- You do not have enough funds in your bank account.
- Nemáte dostatek prostředků na váš bankovní účet.
- No tienes tanto dinero en tu cuenta de banco.
-
- Du hast nicht genug Geld auf deinem Bankkonto.
- Vous n'avez pas assez de fonds dans votre compte en banque.
- Non hai abbastanza fondi nel tuo conto in banca.
- Você não tem todo esse dinheiro em sua conta bancária.
- Nie masz wystarczających środków w banku.
- 你的银行账户里没有足够的资金。
-
-
- Couldn't add it to your inventory.
- Nemohl ji přidat do svého inventáře.
- No se pudo agregar a tu inventario.
-
- Es konnte nichts zu deinem Inventar hinzugefügt werden.
- Impossible d'ajouter cela à votre inventaire.
- Non puoi aggiungerlo al tuo inventario.
- Não foi possível adicionar o item ao seu inventário
- Nie można dodać tego do twojego wyposażenia
- 无法将其添加到你的库存中。
-
-
- You haven't eaten anything in awhile, You should find something to eat soon!
- Jste nejedli nic za čas, byste měli najít něco k jídlu brzy!
- No has comido nada en un largo rato. Deberías buscar algo de comer!
-
- Du hast schon eine Weile nichts mehr gegessen! Du solltest langsam etwas zum Essen suchen!
- Vous n'avez rien mangé depuis un certain temps, vous devriez trouver quelque chose à manger !
- E' da tempo che non mangi qualcosa, dovresti trovare qualcosa da mettere sotto i denti in fretta!
- Você não come a bastante tempo. Ache algo para comer logo!.
- Zaczynasz być głodny, poszukaj czegoś do jedzenia!
- 你有一阵子没吃东西了,你应该马上找点吃的!
-
-
- You are starting to starve, you need to find something to eat otherwise you will die.
- Můžete se začínají hladovět, budete muset najít něco k jídlu jinak zemřete.
- Te esta dando mucha, mucha hambre. Come algo o moriras!
-
- Du hast Hunger! Du solltest schnell etwas essen oder du wirst verhungern.
- Vous commencez à mourir de faim, vous devez trouver quelque chose à manger, ou vous mourrez.
- Ti stai indebolendo, devi trovare qualcosa da mangiare o morirai.
- Você está começando a ficar famindo. Se você não comer irá morrer de fome.
- Długo nie jadłeś, zjedz coś lub zginiesz z głodu.
- 你感觉饿了,你需要找点东西吃,否则你会死的。
-
-
- You are now starving to death, you will die very soon if you don't eat something.
- Nyní jste hladoví k smrti, zemřete velmi brzy, pokud nemáte něco jíst.
- Estas a punto de morir de hambre, busca comida rápido!
-
- Du bist am Verhungern! Du wirst sterben, wenn du nichts zum Essen findest!
- Vous êtes en train de mourir de faim, vous allez mourir très bientôt si vous ne mangez pas quelque chose.
- Stai perdendo le forze, se non mangi qualcosa in fretta morirai.
- Você está morrendo de fome, coma algo ou irá morrer.
- Zaczynasz słabnąć z głodu zjedz coś lub zginiesz !!!
- 你现在很饿,如果你不吃东西,很快就会死的。
-
-
- You have starved to death.
- Jste hladem.
- Te has muerto de hambre.
-
- Du bist verhungert!
- Vous êtes mort de faim.
- Sei morto per la fame.
- Você morreu de fome
- Wygłodziłeś się na śmierć.
- 你饿死了。
-
-
- You haven't drank anything in awhile, You should find something to drink soon.
- Nemáte pil nic za čas, byste měli najít něco k pití brzy.
- No has tomado nada en un largo rato. Deberías buscar algo de tomar!
-
- Du hast schon eine Weile nichts mehr getrunken! Du solltest langsam etwas zum Trinken suchen!
- Vous n'avez rien bu depuis un certain temps, vous devriez trouver quelque chose à boire !
- E' da parecchio tempo che non bevi qualcosa, dovresti trovare qualcosa da bere.
- Você não bebe nada a bastante tempo. Ache algo para beber logo.
- Zaczynasz być spragniony, powinienieś poszukać czegoś do picia.
- 你有一阵子没喝水了,你应该马上找点喝的。
-
-
- You haven't drank anything in along time, you should find something to drink soon or you'll start to die from dehydration.
- Vy jste nic pil na delší dobu, měli byste si najít něco k pití hned, nebo budete začnou umírat z dehydratace.
- Te esta dando mucha, mucha sed. Toma algo o moriras!
-
- Du hast Durst! Du solltest schnell etwas trinken oder du wirst verdursten!
- Vous commencez à mourir de soif, vous allez mourir de soif si vous ne buvez pas.
- E' troppo tempo che non bevi qualcosa, dovresti trovare qualcosa da bere o comincerai a disitratarti.
- Você está ficando desidratado. Se não beber algo poderá morrer.
- Długo nic nie piłeś, napij się czegoś bo możesz zginąć z pragnienia.
- 你在一段时间内没有喝水,你要尽快找到喝的,否则你会开始脱水而死。
-
-
- You are now suffering from severe dehydration find something to drink quickly!
- Nyní trpí těžkou dehydratací najít něco k pití rychle!
- Estas a punto de morir de desidratación, busca algo de tomar rapido!
-
- Du bist am Verdursten! Du wirst sterben, wenn du nichts zum Trinken findest!
- Vous êtes en train de mourir de soif, vous allez mourir très bientôt si vous ne buvez pas.
- Stai soffrendo per una grave deidratazione, trova velocemente qualcosa da bere o morirai!
- Você está sofrendo de desidratação. Beba algo ou irá morrer!
- Zaczynasz słabnąć z pragnienia, wypij coś inaczej zginiesz!!!
- 你现在正严重脱水,快找点喝的!
-
-
- You have died from dehydration.
- Jsi zemřel na dehydrataci.
- Has muerto de desidratación.
-
- Du bist verdurstet!
- Vous êtes mort de soif.
- Sei morto per disidratazione.
- Você morreu desidratado.
- Umarłeś z uwagi na odwodnienie organizmu
- 你死于脱水.
-
-
- You are over carrying your max weight! You will not be able to run or move fast till you drop some items!
- Překročili jste přenášení maximální váhu! Nebudete moci spustit nebo přesunout rychle, dokud se kapka některé položky!
- Estas cargando tu peso máximo! No puedes correr o moverte rapido hasta que botes algunos objetos!
-
- Du trägst zu viel bei dir! Du bist nicht in der Lage, zu rennen oder dich schnell zu bewegen, bis du einige Gegenstände abgelegt hast!
- Vous êtes surchargé, vous ne pouvez plus courir ou bouger rapidement à moins de lacher quelques objets !
- Stai trasportando oltre il tuo carico massimo! Non riuscirai a correre fino a quando non ti libererai di qualche oggetto!
- Você está carregando muito peso. Você não irá conseguir correr ou se mover rapidamente.
- Niesiesz maksymalny ciężar, nie będziesz mógł biegać ani szybko chodzić dopuki nie wyrzucisz jakiejś rzeczy
- 你超过了最大负重!除非你丢弃一些物品,否则你不能跑或跑得很快!
-
-
- <t color='#FF0000'><t size='2'>Vehicle Info</t></t><br/><t color='#FFD700'><t size='1.5'>Owners</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Informace o vozidle</t></t><br/><t color='#FFD700'><t size='1.5'>Majitelé</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Info de Vehículo</t></t><br/><t color='#FFD700'><t size='1.5'>Dueños</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Vehicle Info</t></t><br/><t color='#FFD700'><t size='1.5'>Owners</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Fahrzeuginfo</t></t><br/><t color='#FFD700'><t size='1.5'>Besitzer</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Info du véhicule</t></t><br/><t color='#FFD700'><t size='1.5'>Propriétaires</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Vehicle Info</t></t><br/><t color='#FFD700'><t size='1.5'>Owners</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Info do Veículo</t></t><br/><t color='#FFD700'><t size='1.5'>Donos</t></t><br/> %1
- <t color='#FF0000'><t size='2'>Informacja o pojeździe</t></t><br/><t color='#FFD700'><t size='1.5'>Właściciel</t></t><br/> %1
- <t color='#FF0000'><t size='2'>载具信息</t></t><br/><t color='#FFD700'><t size='1.5'>车主</t></t><br/> %1
-
-
- Cannot search that person.
- Nelze vyhledávat tuto osobu.
- No puedes buscar a esa persona.
-
- Diese Person kann nicht durchsucht werden!
- Vous ne pouvez pas fouiller cette personne.
- Impossibile perquisire quella persona.
- Essa pessoa não pode ser revistada.
- Nie możesz przeszukać tej osoby
- 无法搜查此人。
-
-
- You couldn't effectively seize any items. Try again.
- Dalo by se efektivně využily všech položek. Zkus to znovu.
- Vous n'avez pas pu saisir les objets. Réessayez.
- No pudistes efectivamente, confiscar algun objeto. Prueba de nuevo.
- Impossibile perquisire la persona in maniera esaustiva. Riprova.
- Nie można skutecznie wykorzystać żadnych przedmiotów. Spróbuj ponownie.
-
- Você não pode apreender nenhum item, efetivamente. Tente de novo.
- Es konnten nicht alle Gegenstände beschlagnahmt werden. Versuche es noch einmal.
- 并非所有物品你都能没收。再试一次。
-
-
- Repairing %1
- Dalo by se efektivně využily všech položek. Zkus to znovu....
- Reparando %1
-
- Wird repariert %1...
- Réparation de %1
- Riparando %1
- Reparando %1
- Naprawiam %1
- 修复 %1
-
-
- You can't do that from inside the vehicle!
- Můžete to udělat zevnitř vozu!
- Vous ne pouvez pas faire ceci à l'intérieur du véhicule !
- No puedes hacer eso desde adentro del vehículo!
- Non si può fare dall'interno del veicolo!
-
- Du kannst das nicht tun während du in einem Fahrzeug sitzt!
- Você não pode fazer isso de dentro do veículo!
- Nie możesz tego wykonać z wntrza pojazdu!
- 你在载具内不能维修!
-
-
- You have repaired that vehicle.
- Jste opravil, že vozidlo.
- >Has reparado el vehículo.
-
- Du hast dieses Fahrzeug repariert.
- Vous avez réparé ce véhicule.
- Hai riparato il veicolo.
- Você reparou esse veículo.
- Naprawiłeś pojazd
- 你修好了载具。
-
-
- You have mined %2 %1(s).
- Jste shromáždili %2 %1(y).
- Vous avez recueilli %2 %1(s).
- Has recolectado %2 %1(s).
- Hai raccolto %2 unità di %1.
-
- Du hast %2 %1 abgebaut.
- Você colheu %2 %1(s).
- Zebrałeś %2 %1 (s).
- 你开采了 %2 个 %1。
-
-
- You have gathered %2 %1(s).
- Jste shromáždili %2 %1(y).
- Vous avez recueilli %2 %1(s).
- Has recolectado %2 %1(s).
- Hai raccolto %2 unità di %1.
-
- Du hast %2 %1 gesammelt.
- Você colheu %2 %1(s).
- Zebrałeś %2 %1 (s).
- 你采集了 %2 个 %1。
-
-
- You can't gather from inside a car!
- Nemůžete sbírat zevnitř vozu!
- Vous ne pouvez pas ramasser à l'intérieur d'une voiture !
- No puedes recolectar desde adentro de un vehículo!
- Non si può raccogliere da dentro una macchina!
-
- Wie soll das von hier aus gehen? Du sitzt in einem Fahrzeug!
- Você não pode colher de dentro do carro!
- Nie możesz zbierać z wnętrza samochodu
- 你不能从车里搜集!
-
-
- You are not allowed to loot dead bodies.
- Ty jsou není dovoleno kořist mrtvoly.
- Vous n'êtes pas autorisé à piller des cadavres.
- No puedes buscar cuerpos muertos.
- Non è consentito a saccheggiare cadaveri.
-
- Du darfst keine Leichen durchsuchen!
- Você não está liberado para lootiar corpos mortos
- Nie możesz przeszukiwać martwych ciał
- 你不能抢劫尸体。
-
-
- You have been frozen by an administrator.
- Vy byly zmrazeny správcem.
- Vous avez été gelé par un administrateur.
- Un admin te ha congelado!
- Sei stato congelato da un amministratore.
-
- Du wurdest von einem Admin eingefroren.
- Você foi congelado por um administrador
- Zostałeś zamrożony przez administratora
- 你被管理员冻结了。
-
-
- You have teleported to your selected position.
- Jste teleported do vašeho zvolené poloze.
- Vous avez été téléporté à la position sélectionnée.
- Te has teletransportado a la posisción seleccionada.
- Ti sei teletrasportaato alla posizione selezionata.
- Masz teleportowany do wybranej pozycji.
-
- Você foi teleportado para a posição que você selecionou
- Du hast dich zu deiner gewünschten Position teleportiert.
- 你已传送到选择的位置。
-
-
- You have been unfrozen by an administrator.
- Byli jste zmrzlá správcem.
- Vous avez été dégelé par un administrateur.
- Un admin te ha descongelado!
- Sei stato scongelato da un amministratore.
-
- Ein Admin hat dich wieder aufgetaut.
- Você foi descongelado por um administrador
- Zostałeś odmrożony przez administratora
- 你已被管理员解冻。
-
-
- No one was selected!
- Nikdo byl vybrán!
- Personne n'a été sélectionné !
- Nadie fue seleccionado!
- Nessuno è stato selezionato!
- Nikt nie został wybrany!
- Ninguém foi selecionado!
- Никто не был выбран!
- Niemand wurde ausgewählt!
- 没有选中玩家!
-
-
- You didn't select an item you wanted to give.
- Nevybrali jste položku, kterou chtěl dát.
- Vous n'avez pas sélectionné l'objet que vous vouliez donner.
- No ha seleccionado el objeto que quiere dar.
- non è stato selezionato un elemento che si voleva dare.
- Nie wybrano element, który chciał dać.
- Você não selecionou um item que você queria dar.
- Вы не выбрали пункт, который вы хотели дать.
- Du hast keinen Gegenstand ausgewählt, um diesen weitergeben zu können.
- 你没有选择你想给的东西。
-
-
- You didn't enter an actual number format.
- Nezadal jste skutečný formát čísla.
- Vous n'avez pas saisi un format de nombre réel.
- No ha especificado un formato de número real.
- Non hai inserito un formato di numero reale.
- Nie wprowadzono rzeczywisty format liczb.
- Você não inseriu um formato número real.
- Вы не ввели фактический формат числа.
- Du hast keine echte Zahl eingegeben.
- 你没有输入正确的数字格式。
-
-
- You need to enter an actual amount you want to give.
- Musíte zadat skutečnou částku, kterou chcete dát.
- Vous devez entrer un montant réel que vous voulez donner.
- Es necesario introducir una cantidad real que se desea dar.
- È necessario immettere un importo effettivo si vuole dare.
- Musisz podać rzeczywistą kwotę, którą chcesz dać.
- É necessário introduzir uma quantidade real que você quer dar.
- Вам необходимо ввести фактическую сумму, которую вы хотите дать.
- Du musst einen tatsächlichen Wert eingeben, um diesen weitergeben zu können.
- 你需要输入你想要给的正确金额。
-
-
- You need to enter an actual amount you want to remove.
- Musíte zadat skutečnou částku, kterou chcete odebrat.
- Vous devez entrer un montant réel que vous souhaitez supprimer.
- Es necesario introducir una cantidad real que se desea eliminar.
- È necessario immettere un importo effettivo che si desidera rimuovere.
- Musisz podać rzeczywistą kwotę, którą chcesz usunąć.
- É necessário introduzir uma quantidade real que você deseja remover.
- Вам необходимо ввести фактическую сумму, которую вы хотите удалить.
- Du musst einen tatsächlichen Wert eigeben, um diese löschen zu können.
- 你需要输入你想要删除的正确金额。
-
-
- The selected player is not within range.
- Zvolená Hráč není v dosahu.
- Le joueur sélectionné est hors de portée.
- El jugador seleccionado no está dentro del rango.
- Il giocatore selezionato non è nel raggio d'azione.
- Wybrany gracz nie jest w zasięgu.
- O jogador selecionado não está dentro do alcance.
- Выбранный игрок не находится в пределах диапазона.
- Der ausgewählte Spieler ist nicht in Reichweite.
- 选定的玩家不在有效范围内。
-
-
- Couldn't give that much of that item, maybe you don't have that amount?
- Nemohl dát, že velká část této položky, možná nemáte tuto částku?
- Impossible de donner cet objet, peut-être que vous n'en n'avez pas autant ?
- No se pudo dar a que gran parte de ese elemento, tal vez usted no tiene esa cantidad?
- Impossibile dare quella quantità di oggetti.
- nie mógł dać, że wiele z tego elementu, może nie masz tej kwoty?
- não poderia dar que muito desse item, talvez você não tem essa quantia?
- Не могу дать, что большая часть этого пункта, может быть, у вас нет этой суммы?
- Du konntest nicht so eine große Menge von diesem Gegenstand weitergeben. Hast du vielleicht nicht genug davon?
- 不能给那么多的东西,也许你没有那么多?
-
-
- You gave %1 %2 %3.
- Ty jsi dal %1 %2 %3.
- Vous avez donné %1 %2 %3.
- Diste %1 %2 %3.
- Hai dato %1 %2 %3.
- Daliście %1 %2 %3.
- você deu %1 %2 %3.
- Ты дал %1 %2 %3.
- Du hast %1 %2 %3 gegeben.
- 你给了 %1 %2 %3。
-
-
- You don't have that much to give!
- Nemusíte to hodně dát!
- Vous n'avez pas autant à donner !
- Usted no tiene mucho para dar!
- Non hai abbastanza oggetti da dare!
- Nie ma tego dużo dać!
- Você não tem muito para dar!
- Вы не так много, чтобы дать!
- Du hast nicht so eine große Menge von diesem Gegenstand!
- 你没有这么多去给别人!
-
-
- You gave $%1 to %2.
- Dal jsi $%1 do %2.
- Vous avez donné $%1 à %2.
- Usted le dio $%1 a %2.
- Hai dato $%1 a %2.
- Dałeś $%1 do %2.
- Você deu $%1 para %2.
- Вы дали $%1 %2.
- Du hast $%1 %2 gegeben.
- 你将 $%1 给了 %2。
-
-
- You recently robbed the bank! You can't give money away just yet.
- Nedávno jste vyloupil banku! Nemůžete dávat peníze pryč jen zatím.
- Vous avez récemment volé la banque! Vous ne pouvez pas donner de l'argent pour l'instant.
- Recientemente has robado el banco! No se puede dar dinero por el momento.
- Recentemente hai rapinato la banca! Non puoi ancora depositare i soldi nel tuo conto bancario.
- Niedawno obrabował bank! Nie można dać pieniądze w błoto jeszcze.
- Recentemente, você roubou o banco! Você não pode dar dinheiro fora ainda.
- Вы недавно ограбили банк! Вы не можете отдавать деньги только пока.
- Du hast kürzlich die Bank ausgeraubt! Du kannst deswegen kein Geld weitergeben.
- 你最近抢劫了银行!你还不能现在把钱给出去。
-
-
- No data selected.
- vybrány žádné údaje.
- Aucune donnée sélectionnée.
- No hay datos seleccionados.
- Non ci sono dati selezionati.
- Nie wybrano danych.
- Não há dados selecionado.
- Нет выбранных данных.
- Keine Daten ausgewählt.
- 没有选择数据。
-
-
- You did not select a vehicle.
- Nevybrali jste vozidlo.
- Vous n'avez pas sélectionné de véhicule.
- No ha seleccionado un vehículo.
- Non hai selezionato un veicolo.
- Nie wybrano pojazdu.
- Você não selecionou um veículo.
- Вы не выбрали автомобиль.
- Du hast kein Fahrzeug ausgewählt.
- 你没有选择载具。
-
-
- You do not own any vehicles.
- Nevlastníte žádná vozidla.
- Vous ne possédez pas de véhicules.
- Usted no posee ningún vehículo.
- Non possedete tutti i veicoli.
- Nie posiada żadnych pojazdów.
- Você não possui quaisquer veículos.
- Вы не являетесь владельцем каких-либо транспортных средств.
- Du besitzt keine Fahrzeuge.
- 你没有任何载具。
-
-
- You did not select a player.
- Nevybrali jste si přehrávač.
- Vous n'avez pas sélectionné de joueur.
- No ha seleccionado un jugador.
- Non hai selezionato un giocatore.
- Nie wybrano odtwarzacza.
- Você não selecionou um jogador.
- Вы не выбрали игрока.
- Du hast keinen Spieler ausgewählt.
- 你没有选择玩家。
-
-
- You have given %1 keys to your %2.
- Dali jste %1 klíče ke svému %2.
- Vous avez donné les clés de votre %2 à %1.
- Usted ha dado %1 llaves de su %2.
- Hai dato a %1 chiavi della vostra %2.
- Dałeś %1 klucze do %2.
- Você tem dado %1 chaves de sua %2.
- Вы дали %1 ключи от %2.
- Du hast %1 die Schlüssel zu deinem %2 gegeben.
- 你将 %2 的钥匙给了 %1。
-
-
- %1 has gave you keys for a %2.
- %1 has gave you keys for a %2.
- %1 a vous a donné les clés de %2.
- %1 has gave you keys for a %2.
- %1 has gave you keys for a %2.
- %1 has gave you keys for a %2.
- %1 has gave you keys for a %2.
- %1 has gave you keys for a %2.
- %1 hat dir die Schlüssel zum %2 gegeben.
- %1 给了你一把 %2 的钥匙。
-
-
- You cannot remove the keys to your house!
- Nemůžete odstranit klíče od domu!
- Vous ne pouvez pas supprimer les clés de votre maison !
- No se puede quitar las llaves de su casa!
- Non è possibile rimuovere le chiavi a casa tua!
- Nie można usunąć klucze do swojego domu!
- Você não pode remover as chaves de sua casa!
- Вы не можете удалить ключи к вашему дому!
- Du kannst die Schlüssel zu diesem Haus nicht wegwerfen!
- 你不能丢弃你家的钥匙!
-
-
- You did not select anything to remove.
- Nevybrali jste nic odstranit.
- Vous avez rien sélectionné à supprimer.
- No ha seleccionado nada que quitar.
- Non hai selezionato niente da rimuovere.
- Nie zrobił nic, aby usunąć wybrać.
- Você não selecionou nada para remover.
- Вы ничего удалить не выбрать.
- Du hast nichts zum Entsorgen ausgewählt.
- 你没有选择要删除的任何东西。
-
-
- Could not remove that much of that item. Maybe you do not have that amount?
- Nepodařilo se odstranit, že velká část této položky. Možná, že nemáte tuto částku?
- Impossible d'en supprimer autant. Peut-être que vous ne disposez pas de ce montant ?
- No se pudo eliminar que gran parte de ese elemento. Tal vez usted no tiene esa cantidad?
- Impossibile rimuovere quel quantitativo di oggetti.
- Nie można usunąć, że wiele z tego elementu. Może nie masz tej kwoty?
- Não foi possível remover que muito desse item. Talvez você não tem essa quantia?
- Не удалось удалить, что большая часть этого элемента. Может быть, у вас нет этой суммы?
- Du konntest nicht so eine große Menge von diesem Gegenstand entsorgen. Hast du vielleicht nicht so viele davon?
- 不能丢弃大部分东西。也许你没有那么多数额?
-
-
- You have successfully removed %1 %2 from your inventory.
- Úspěšně jste odstraněny %1 %2 z vašeho inventáře.
- Vous avez réussi à retirer %1 %2 de votre inventaire.
- Has eliminado correctamente %1 %2 de su inventario.
- Hai rimosso con successo %1 %2 dal tuo inventario.
- Pomyślnie usunięto %1 %2 z inwentarza.
- Você removeu com êxito %1 %2 do seu inventário.
- Вы успешно удалены %1 %2 из инвентаря.
- Du hast erfolgreich %1 %2 aus deinem Inventar entsorgt.
- 你已成功地从库存删除 %1 %2。
-
-
- Something went wrong; the menu will not open?
- Něco se pokazilo; nabídka neotevře?
- Quelque chose s'est mal déroulé; le menu ne s'ouvre pas ?
- Algo salió mal; el menú no se abre?
- Qualcosa è andato storto; il menu non si apre?
- Coś poszło nie tak; menu nie otworzy?
- Algo deu errado; o menu não vai abrir?
- Что-то пошло не так; меню не откроется?
- Etwas ist schief gelaufen. Das Menü konnte nicht geöffnet werden.
- 出错了;菜单不能打开?
-
-
- Config does not exist?
- Config neexistuje?
- Config n'existe pas ?
- Config no existe?
- Config non esiste?
- Konfiguracja nie istnieje?
- O configuração não existe?
- Config не существует?
- Einstellung nicht vorhanden?
- 配置不存在?
-
-
- You cannot store that in anything but a land vehicle!
- Nelze uložit, že v ničem jiném než pozemní vozidla!
- Vous pouvez stocker cet objet seulement dans les véhicules terrestres !
- No se puede almacenar en cualquier cosa menos que un vehículo terrestre!
- Non è possibile depositare questa risorsa in un veicolo che non sia terrestre!
- Nie można zapisać, że w nic poza pojazdem lądowym!
- Você não pode armazenar isso em qualquer coisa, mas um veículo de terra!
- Вы не можете хранить, что ничего, кроме наземного транспортного средства!
- Du kannst das nur in einem Landfahrzeug lagern!
- 除了陆地载具,你不能储存它!
-
-
- You don't have that much cash on you to store in the vehicle!
- Nemáte tolik peněz na vás uložit do vozidla!
- Vous ne disposez pas d'autant d'argent sur vous pour stocker dans le véhicule !
- Usted no tiene esa cantidad de dinero en efectivo para almacenar en el vehículo!
- Non hai abbastanza denaro con te da mettere nel veicolo!
- Nie ma tego dużo gotówki na ciebie do przechowywania w pojeździe!
- Você não tem que muito dinheiro em você para armazenar no veículo!
- У вас не так много наличных денег на вас, чтобы хранить в автомобиле!
- Du hast nicht genug Geld bei dir, um die eingegeben Menge in das Fahrzeug zu lagern!
- 你没有那么多现金可以存放在载具里!
-
-
- The vehicle is either full or cannot hold that much.
- Vozidlo je buď plný nebo nemůže myslet si, že mnoho.
- Le véhicule est plein ou ne peut pas en contenir autant.
- El vehículo está llena o no puede contener tanta.
- Il veicolo è pieno o non può tenere quel quantitativo.
- Pojazd jest albo w pełnym lub nie można uznać, że dużo.
- O veículo está cheio ou não pode segurar muito.
- Транспортное средство либо полностью или не может держать так много.
- Das Fahrzeug ist entweder voll oder kann nicht so viel halten.
- 这载具要么是满的,要么就是装不下那么多。
-
-
- Couldn't remove the items from your inventory to put in the vehicle.
- Vozidlo je buď plný nebo nemůže myslet si, že mnoho.
- Le véhicule est déjà plein ou ne peut pas stocker d'avantage d'objets.
- El vehículo está llena o no puede contener tanta.
- Impossibile rimuovere quel quantitativo di oggetti dal tuo inventario per metterlo nel veicolo.
- Pojazd jest albo w pełnym lub nie można uznać, że dużo.
- O veículo está cheio ou não pode segurar muito.
- Транспортное средство либо полностью или не может держать так много.
- Das Fahrzeug ist entweder voll oder hat nicht so viel Platz.
- 无法从你的库存中取出物品放入车内。
-
-
- This is an illegal item and cops are near by. You cannot dispose of the evidence.
- To je ilegální položky a policajti jsou v blízkosti. Nemůžete zbavit důkazů.
- Ceci est un objet illégal et les policiers sont à proximité. Vous ne pouvez pas le jeter.
- Este es un artículo ilegal y policías están cerca. No se puede disponer de las pruebas.
- Non puoi liberarti di questo oggetto dato che è una prova evidente.
- Jest to nielegalne element i policjanci są w pobliżu. Nie można pozbyć się dowodów.
- Este é um item ilegal e policiais estão nas proximidades. Você não pode dispor das provas.
- Это незаконный пункт и полицейские находятся поблизости. Вы не можете избавиться от доказательств.
- Dies ist ein illegaler Gegenstand und Polizisten sind in der Nähe. Du kannst die Beweise nicht einfach so entsorgen.
- 这是非法物品,警察就在附近。你不能把它扔掉。
-
-
- You cannot remove an item when you are in a vehicle.
- Nemůžete-li odebrat položku, když jste ve vozidle.
- Vous ne pouvez pas supprimer un objet lorsque vous êtes dans un véhicule.
- No se puede eliminar un elemento cuando se está en un vehículo.
- Non è possibile rimuovere un elemento quando si è in un veicolo.
- Nie można usunąć element, kiedy jesteś w pojeździe.
- Você não pode remover um item quando você está em um veículo.
- Вы не можете удалить элемент, когда вы находитесь в автомобиле.
- Du kannst keinen Gegenstand entsorgen, wenn du in einem Fahrzeug sitzt.
- 当你在车内时,无法扔掉物品。
-
-
- You are now spectating %1.\n\nPress F10 to stop spectating.
- Nyní diváck é%1.\n\nStisknutím klávesy F10 k zastavení divácké.
- Vous êtes maintenant spectateur %1.\n\nAppuyez sur F10 pour arrêter le mode spectateur.
- Ahora está como espectador de %1.\n\nPulse F10 para salir de modo espectador.
- Si è ora spectating %1.\n\nPremere F10 per smettere di spettatori.
- Grasz teraz spectating %1.\n\nNaciśnij klawisz F10, aby zatrzymać spectating.
- Você agora está como espectador %1.\n\nPressione F10 para sair.
- Теперь вы spectating %1.\n\nНажмите F10, чтобы остановить spectating.
- Du beobachtest nun %1.\n\nDrücke F10, um das Beobachten zu beenden.
- 你现在正在观看 %1.\n\n 按F10停止观看.
-
-
- You have stopped spectating.
- Přestali jste divácké úlohy.
- Vous avez arrêté spectating.
- Usted ha dejado de ser espectador.
- Hai smesso di spettatori.
- Zatrzymaniu widzem.
- Você parou espectador.
- Вы остановили spectating.
- Du hast das Beobachten beendet.
- 你已经停止了观看。
-
-
- You have teleported %1 to your location.
- Jste teleported %1 do vaší polohy.
- Vous avez téléporté %1 à votre emplacement.
- Usted ha teletransportado %1 a su ubicación.
- Hai teletrasportato %1 alla vostra posizione.
- Masz teleportował %1 na swoim miejscu.
- Você teletransportou %1 para a sua localização.
- Вы телепортированы %1 к вашему положению.
- Du hast %1 zu deiner Position teleportiert.
- 传送 %1 到你的位置。
-
-
- <t color='#ADFF2F'>ATM</t>
- <t color='#ADFF2F'>Bankomat</t>
- <t color='#ADFF2F'>DAB</t>
- <t color='#ADFF2F'>ATM</t>
- <t color='#ADFF2F'>ATM</t>
- <t color='#ADFF2F'>Bankomat</t>
- <t color='#ADFF2F'>Caixa Eletrônico</t>
- <t color='#ADFF2F'>Банкомат</t>
- <t color='#ADFF2F'>Geldautomat</t>
- <t color='#ADFF2F'>自动取款机</t>
-
-
- Capture Gang Hideout
- Zachyťte Gang skrýš
- Capturer la cachette de gang
- Capturar Escondite
- Cattura Banda Nascondiglio
- Przechwytywanie Banda Kryjówka
- Capturar Esconderijo de Gangue
- Захват шайка укрытие
- Gangversteck einnehmen
- 占领帮派藏身处
-
-
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- An empty array was passed to fn_levelCheck.sqf
- Ein leeres Feld wurde an fn_levelCheck.sqf übergeben.
- 一个空字段传递给fn_levelCheck.sqf
-
-
-
-
- News Station Broadcast
-
- Anuncio de la Estación de Noticias
-
- Nachrichtensender
- Annonce d'informations
-
- Estação de Transmissão de Notícias
-
- 新闻广播
-
-
- Channel 7 News Station
-
- Estación del Canal de Noticias 7
-
- Chaine d'infos Numéro 7
- Kanal 7 Nachrichtensender
-
- Estação de Notícias do Canal 7
-
- 7频道新闻台
-
-
- Message Heading:
-
- Título del Mensaje
-
- Titre de l'annonce :
- Nachrichtenüberschrift:
-
- Titulo da Mensagem:
-
- 消息标题:
-
-
- Message Content:
-
- Contenido del Anuncio
-
- Contenu de l'annonce:
- Nachrichteninhalt:
-
- Conteúdo da Mensagem:
-
- 消息内容:
-
-
- Broadcast Message
-
- Transmitir Anuncio
-
- Diffusion de l'annonce
- Nachricht übertragen
-
- Transmitir Anúncio
-
- 广播消息
-
-
- Broadcast Cost: %1<br />Next Broadcast Available: %2
-
- Costo de Transmisión: %1<br />Siguiente Transmisión Disponible en: %2
-
- Übertragungskosten: %1<br />Nächste Übertragung möglich in: %2
- Coût de Transmission : %1<br />Prochaine Transmission Disponible dans : %2.
-
- Custo de Trasnmissão: %1<br />Próxima transmissão disponível em: %2
-
- 广播费用: %1<br />下一个广播可用于: %2
-
-
- The header cannot be over %1 characters
-
- El título no puede tener mas de %1 caracteres
-
- L'en-tête ne peut pas dépasser %1 caractères
- Die Überschrift darf nicht über %1 Zeichen lang sein.
-
- O cabeçalho não pode ter mais que %1 caracteres
-
- 标题不能超过 %1 个字符
-
-
- You've entered an unsupported character!
-
- Has introducido un carácter inválido
-
- Vous avez entré un caractère non pris en charge !
- Du hast ein nicht ungültiges Zeichen eingegeben!
-
- Você inseriu um caractere inválido
-
- 你输入了一个不支持的字符!
-
-
- Now
-
- Ahora
-
- Jetzt
- Maintenant
-
- Agora
-
- 现在
-
-
- You need $%1 to send a broadcast!
-
- Necesitas %1 para transmitir un anuncio!
-
- Vous avez besoin de $%1 pour envoyer une diffusion !
- Du benötigst $%1, eine Nachricht senden zu können!
-
- Você precisa de $%1 para enviar uma transmissão!
-
- 你需要支付 $%1 才能发送广播!
-
-
- <t size='2'>%1</t><br />Broadcasted by: %2
-
- <t size='2'>%1</t><br />Transmitido por: %2
-
- <t size='2'>%1</t><br />Diffusé par : %2
- <t size='2'>%1</t><br />Gesendet von: %2
-
- <t size='2'>%1</t><br />Transmitido por: %2
-
- <t size='2'>%1</t><br />广播发送者: %2
-
-
-
-
- You have been arrested, wait your time out. If you attempt to respawn or reconnect your time will increase!
- Jste byli zatčeni, počkejte si na čas ven. Pokud se pokusíte respawn nebo připojit váš čas zvýší!
- Te han arrestado. Si tratas de matarte o te desconectas se incrementara tu estadía en la cárcel!
-
- Du wurdest verhaftet. Sitze deine Zeit ab. Wenn du versuchst neu aufzuwachen oder die Verbindung zu trennen, verlängert sich deine Zeit!
- Vous avez été arrêté, attendez que votre peine soit terminée. Si vous tentez de respawn ou reconnectez, le temps sera augmenté !
- Sei stato arrestato, sconta la tua pena. Se cercherai di rinascere o di riconnetterti il tuo tempo aumenterà!
- Você foi preso, cumpra sua pena. Se você tentar renascer ou reconectar seu tempo na cadeia irá aumentar!
- Zostałeś aresztowany, poczekaj na koniec kary. Jeśli się rozłączysz albo odrodzisz twoja kara zostanie powiększona
- 你被捕了,耐心坐牢吧。如果你试图重生或重新连接坐牢时间会增加!
-
-
- For being arrested you have lost the following licenses if you own them\n\nFirearms License\nRebel License
- Za byl zatčen jste ztratili tyto licence, pokud je vlastní \ žádný zbrojní pas \ jRebel licence
- Por ser arrestado se te han quitado estas licencias (si las tienes)\n\nL. de Armas \nL. Rebelde
-
- Bei der Verhaftung hast du folgende Lizenzen verloren, sofern du sie besessen hast:\n\nWaffenschein\nRebellenausbildung.
- Après emprisonnement, vous avez perdu les licences suivantes si vous les aviez\n\nPermis de port d'arme\n LicenceRebelle
- A causa del tuo arresto hai perso le seguenti licenze, se le possedevi\n\nPorto d'armi\nLicenza Ribelle
- Você perdeu as seguintes licenças por ter sido preso\n\nPorte de Armas\n\nTreinamento Rebelde
- Z uwagi na aresztowanie straciłeś następujące licencje jeśli je posiadałeś \n\nPozwolenie na broń \nTrening Rebelianta
- 你如果被捕了,会失去\n\n枪支许可证\n叛军许可证
-
-
- %1 has escaped from jail!
- %1 utekl z vězení!
- %1 se ha escapado de la cárcel!
-
- %1 ist aus dem Gefängnis ausgebrochen!
- %1 s'est échappé de prison !
- %1 è scappato dalla prigione!
- %1 escapou da prisão
- %1 uciekł z więzienia!
- %1 越狱了!
-
-
- You have escaped from jail, you still retain your previous crimes and now have a count of escaping jail.
- Jste utekl z vězení, si stále zachovávají své předchozí zločiny a nyní mají počet uniknout vězení.
- Te has escapado de la cárcel, retienes tus crimenes anteriores más un crimen de escapado de la cárcel.
-
- Vous vous êtes échappé de prison, vous conserver toujours vos crimes précédents et les autorités sont au courant de votre évasion.
- Du bist aus dem Gefängnis ausgebrochen! Die Polizei sucht jetzt nach dir, wegen deiner früheren Verbrechen und dem Gefängnisausbruch.
- Sei scappato di prigione, rimarrai ricercato per i crimini da te commessi in precedenza e in aggiunta per essere scappato di prigione.
- Você escapou da prisão, agora você é procurado por esse crime e todos os outros que havia cometido anteriormente
- Uciekłeś z więzienia, dalej jesteś ścigany za poprzednie przestępstwa i dodatkowo za ucieczkę.
- 你已经从监狱逃跑了,你仍然保留着你以前的罪行,现在算是越狱。
-
-
- You have served your time in jail and have been released.
- Sloužil jste svůj čas ve vězení a byli propuštěni.
- Has pasado el tiempo en la cárcel y has sido liberado.
-
- Du hast deine Zeit im Gefängnis abgesessen.
- Vous avez purgé votre peine, vous êtes désormais libre.
- Hai scontato la tua pena in prigione e sei stato rilasciato.
- Você pagou pelo seus crimes e foi libertado.
- Odbyłeś swoją karę zostałeś zwolniony z więzienia.
- 你已经在监狱服完刑,并被释放。
-
-
- Time Remaining:
- Zbývající čas:
- Tiempo Restante:
-
- Verbleibende Zeit:
- Temps restant :
- Tempo rimanente:
- Tempo Restante:
- Pozostały czas kary:
- 剩余时间:
-
-
- Can pay bail:
- Může zaplatit kauci:
- Puedes pagar la fianza en:
-
- Kann Kaution zahlen:
- Peut payer la caution :
- Puoi pagare la cauzione:
- Pode pagar fiança:
- Możesz wpłacić kaucję
- 可以支付保释金:
-
-
- Bail Price:
- Bail Cena:
- Precio de Fianza:
-
- Kaution:
- Prix de la caution :
- Costo cauzione:
- Preço da fiança:
- Wartość kaucji:
- 保释金额:
-
-
- You have paid your bail and are now free.
- Jste zaplatili kauci a nyní jsou zdarma.
- Has pagado tu fianza y has sido liberado.
-
- Du hast deine Kaution bezahlt und bist nun frei.
- Vous avez payé votre caution, vous êtes désormais libre.
- Hai pagato la cauzione e sei libero.
- Você pagou a fiança e agora está livre.
- Zapłaciłeś kaucję jesteś wolny.
- 你已经支付了保释金,现在自由了.
-
-
-
-
- %1 has knocked you out.
- %1 zaklepal vás.
- %1 te a noqueado.
-
- %1 hat dich niedergeschlagen.
- %1 vous a assommé.
- %1 ti ha colpito stordendoti.
- %1 nocauteou você.
- zostałeś ogłuszony przez %1
- %1 把你击倒了。
-
-
- You have lost all your motor vehicle licenses for vehicular manslaughter.
- Jste ztratili všechny své licence motorových vozidel pro dopravní zabití.
- Has perdido todas tus licencias de vehículos de motor por homicidio vehicular.
-
- Du hast alle deine Führerscheine durch fahrlässige Tötung mit einem Fahrzeug verloren.
- Vous avez perdu tous vos permis véhicule pour avoir écrasé quelqu'un.
- Hai perso tutte le tue licenze di guida a causa di un omicidio stradale.
- Você não perdeu suas licenças de motorista por atropelamento.
- Straciłeś wszystkie uprawnienia na pojazdy z uwagi na ciągłe zabijanie ludzi pojazdami.
- 你因载具过失杀人被吊销了所有机动载具驾驶许可证。
-
-
- You have lost your firearms license for manslaughter.
- Jste ztratili zbrojního průkazu za zabití.
- Has perdido tu licencia de armas por homicidio.
-
- Du hast deinen Waffenschein wegen Mordes verloren.
- Vous avez perdu votre permis d'armes à feu pour homicide involontaire.
- Hai perso il tuo Porto d'Armi a causa di un omicidio
- Você perdeu suas licenças de porte de arma por cometer homicídio.
- Straciłeś pozwolenie na broń z uwagi na zabijanie ludzi z broni palnej
- 你因过失杀人而丧失了枪支许可证。
-
-
- They didn't have any cash...
- Oni neměli žádnou hotovost ...
- No tenian dinero...
-
- Er hatte kein Geld...
- Il n'a pas d'argent...
- Non hai soldi...
- Eles não tinham nenhum dinheiro..
- Nie posiadają żadnych pieniędzy ...
- 他们没有现金...
-
-
- You stole $%1
- Ukradl jsi $%1
- Robastes $%1
-
- Du hast $%1 geraubt.
- Vous avez volé $%1
- Hai rubato $%1
- Você roubou R$%1
- Ukradłeś %1
- 你偷了 $%1
-
-
- The safe is empty!
- Bezpečné je prázdný!
- La caja esta vacía!
-
- Der Tresor ist leer!
- Le coffre est vide !
- La cassaforte è vuota!
- O Cofre está vazio!
- Sejf jest pusty!
- 保险箱是空的!
-
-
- Someone is already accessing the safe..
- Někdo je již přístup k bezpečné ..
- Alguien ya esta entrando en la caja..
-
- Jemand greift bereits auf diesen Tresor zu.
- Quelqu'un accède déjà au coffre...
- Qualcuno sta già interagendo con la cassaforte..
- Alguem já está acessando o cofre.
- Ktoś właśnie włamuje się do sejfu!
- 有人已经进入保险箱了。
-
-
- There needs to be %1 or more cops online to continue.
- Musí existovat%1 nebo více policajtů on-line pokračovat.
- Necesita haber %1 o mas policías para continuar.
-
- Es müssen %1 oder mehr Polizisten online sein, um fortfahren zu können.
- Il faut au minimum %1 policiers pour continuer.
- Servono almeno %1 poliziotti online per continuare.
- É necessário ter %1 ou mais policiais online para continuar.
- Potrzeba conajmniej %1 policjantów aby kontynuować
- 需要有 %1 或更多的警察才能继续。
-
-
- Safe Inventory
- Safe Inventory
- Inventario de la Caja
-
- Tresorinventar
- Coffre
- Inventario cassaforte
- Cofre
- Wyposażenie sejfu
- 保险箱库存
-
-
- You need to select an item!
- Je třeba vybrat položku!
- Debes selecionar un objeto!
-
- Du musst einen Gegenstand auswählen!
- Vous devez sélectionner un objet !
- Devi selezionare un oggetto!
- Você precisa selecionar um item!
- Musisz coś wybrać
- 您需要选择一个物品!
-
-
- There isn't %1 gold bar(s) in the safe!
- Není %1 zlatá bar (y) v bezpečí!
- No hay %1 barra(s) de oro en la caja!
-
- Es sind keine %1 Goldbarren im Tresor!
- Il n'y a pas %1 lingot(s) d'or dans le coffre !
- Nella cassaforte non ci sono %1 lingotti d'oro
- Não existe %1 barra(s) de ouro no cofre!
- W sejfie nie ma % sztab złota!
- 金库里没有 %1 金条!
-
-
-
-
- Couldn't open the ticketing interface
- Nemohl otevřít jízdenek rozhraní
- No se pudo abrir el menu de tiquetes!
-
- Der Bußgeldkatalog konnte nicht geöffnet werden!
- Impossible d'ouvrir l'interface des amendes
- Impossibile aprire l'interfaccia per le multe
- Não foi possível abrir o bloco de multa
- Nie potrafię otworzyć interfejsu mandatów
- 无法打开罚款界面
-
-
- Ticketing %1
- Jízdenek%1
- Dando Tiquete a %1
-
- Verrechne %1
- Verbalisation de %1
- Multando %1
- Multando %1
- Mandat dla %1
- 开据罚单给 %1
-
-
- %2 got back a blacklisted vehicle near %1.
- %2 dostat zpět na černou listinu vozidlo nedaleko %1.
- %2 a récupéré un véhicule blacklisté près de %1.
- %2 volver un vehículo en la lista negra cerca de %1.
- %2 ha ritirato un veicolo blacklistato vicino %1.
- %2 wrócić do czarnej listy pojazd pobliżu %1.
- %2 retirou um veículo que se encontra na lista negra, perto de %1.
- %2 получить обратно в черный список автомобиль возле %1.
- %2 hat ein gesuchtes Fahrzeug nahe %1 ausgeparkt.
- %2 在 %1 附近找回了被列入黑名单的载具。
-
-
- Person to ticket is nil
- Osoba, která má lístku je nulová
- La persona a quien tiquetear es nulo
-
- Die Person, für das das Ticket vorgesehen war, ist verschwunden.
- La personne à verbaliser n'existe pas.
- La persona da multare è nil
- Jogador a ser multado é nulo
- Osoba do ukarania mandatem to "nil"
- 被罚款的玩家为“无”
-
-
- Person to ticket doesn't exist.
- Osoba, která má letenku neexistuje.
- La perosna a quien tiquetear no existe.
-
- Die Person, für das Ticket, gibt es nicht.
- La personne à verbaliser est inexistante.
- La persona da multare non esiste.
- Jogador a ser multado não existe.
- Nie ma osoby ukaranej mandatem - nie istnieje
- 被罚款的玩家不存在。
-
-
- You didn't enter actual number.
- Jste nezadali skutečný počet.
- No escribistes un numero real.
-
- Du hast keine echte Zahl eingegeben.
- Vous n'avez pas saisi de nombre.
- Non hai inserito un numero correttamente.
- Você não digitou um número válido
- Wybrałeś zły numer
- 你没有输入正确的数字.
-
-
- Tickets can not be more than $200,000!
- Vstupenky nemůže být více než 200.000 $!
- Los tiquetes no pueden ser mas de $200,000!
-
- Strafzettel können nicht mehr als $200.000 betragen!
- Les amendes ne peuvent pas dépasser plus de $200,000 !
- La multa non può essere più di $200.000!
- A multa não pode ser maior que R$200.000!
- Mandat nie może być wyższy niż $200.000!
- 罚单不能超过 $200,000!
-
-
- %1 gave a ticket of $%2 to %3
- %1 dal lístek na $% %2 3
- %1 le dio un tiquete de $%2 a %3
-
- %1 hat %3 einen Strafzettel über $%2 ausgestellt.
- %1 a mis une contravention de $%2 à %3.
- %1 ha dato una multa di $%2 a %3
- %1 deu uma multa de R$%2 para %3
- %1 Wystawił mandat w wysokości %2 dla %3
- %1 开据金额 $%2 的罚单给 %3
-
-
- You don't have enough money in your bank account or on you to pay the ticket.
- Nemáte dostatek peněz na váš bankovní účet, nebo na vás zaplatit letenku.
- No tienes suficiente dinero para pagar el tiquete.
-
- Du hast nicht genug Geld auf deinem Bankkonto, um den Strafzettel bezahlen zu können.
- Vous n'avez pas assez d'argent dans votre compte en banque ou sur vous pour payer l'amende.
- Non hai fondi sufficienti nel tuo conto in banca per pagare la multa.
- Você não possui dinheiro suficiente na sua conta bancária ou na sua mão para pagar o bilhete.
- Nie masz środków na koncie aby zapłacić mandat.
- 你的银行帐户中没有足够的钱来支付罚金。
-
-
- %1 couldn't pay the ticket due to not having enough money.
- %1 nemohl zaplatit letenku z důvodu nemají dostatek peněz.
- %1 No puedo pagar el tiquete porque no tiene suficiente dinero.
-
- %1 konnte den Strafzettel nicht bezahlen, weil er nicht genug Geld hat.
- %1 ne pouvait pas payer la contravention car il n'avait pas assez d'argent.
- %1 non può pagare la multa perchè non ha sufficienti fondi nel suo conto in banca.
- %1 não pode pagar a multa pois não tem dinheiro suficiente.
- %1 nie może zapłacić mandatu bo nie ma tylu środków na koncie
- %1 由于没有足够的钱,无法支付罚金。
-
-
- You have paid the ticket of $%1
- Jste zaplatili letenku ve výši $%1
- Has pagado el tiquete de $%1
-
- Du hast den Strafzettel von $%1 bezahlt.
- Vous avez payé l'amende de $%1
- Hai pagato la multa di $%1
- Você pagou a multa de R$%1
- Zapłaciłeś mandat w wysokości $%1
- 你已经支付了 $%1 的罚金
-
-
- %1 paid the ticket of $%2
- %1 zaplatil letenku ve výši $ %2
- %1 a pagado el tiquete de $%2
-
- %1 zahlte einen Strafzettel von $%2.
- %1 payé la contravention de $%2
- %1 ha pagato la multa di $%2
- %1 pagou a multa de R$%2
- %1 zapłacił mandat w wyskości $%2
- %1 支付了 $%2 的罚金
-
-
- %1 paid the ticket.
- %1 zaplatil jízdenku.
- %1 pago el tiquete.
-
- %1 hat den Strafzettel bezahlt.
- %1 payé la contravention.
- %1 ha pagato la multa.
- %1 pagou a multa.
- %1 zapłacił mandat.
- %1 支付了罚金。
-
-
- %1 has given you a ticket for $%2
- %1 vám dal lístek za $ %2
- %1 te ha dado un tiquete de $%2
-
- %1 hat dir einen Strafzettel über $%2 gegeben.
- %1 vous a donné une amende de $%2
- %1 ti ha dato una multa di $%2
- %1 lhe aplicou uma multa de R$%2
- %1 dał ci mandat w wysokości $%2
- %1 给你开了一张 $%2 的罚单
-
-
- %1 refused to pay the ticket.
- %1 odmítl zaplatit letenku.
- >%1 no aceptó pagar el tiquete.
-
- %1 weigert sich, den Strafzettel zu bezahlen.
- %1 a refusé de payer l'amende.
- %1 si è rifiutato di pagare la multa.
- %1 se recusou a pagar a multa.
- %1 odmówił zapłaty mandatu.
- %1 拒绝支付罚金。
-
-
- You have collected a bounty of $%1 for arresting a criminal.
- Nasbíráte kvantum $%1 pro aretaci zločince.
- Has recolectado la recompensa de $%1 por arrestar a un criminal.
-
- Du hast ein Prämie von $%1 für die Festnahme eines Verbrechers bekommen.
- Vous avez reçu une prime de $%1 pour avoir arrêté un criminel.
- Hai ricevuto il pagamento di una taglia di $%1 per aver arrestato un criminale ricercato.
- Você ganhou uma recompensa de R$%1 por prender um criminoso.
- Otrzymujesz nagrodę w wysokości $%1 za aresztowanie poszukiwanego kryminalisty.
- 你捉拿罪犯获得 %1 赏金。
-
-
- You have collected a bounty of $%1 for killing a wanted criminal, if you had arrested him you would of received $%2.
- Nasbíráte kvantum $%1 za zabití hledaného zločince, pokud jste ho zatkli byste přijímaného $%2.
- Has recolectado la recompensa de $%1 por matar a un criminal, si lo hubieras arrestado hubieses conseguido $%2.
-
- Du hast ein Prämie von $%1 für das Töten eines gesuchten Verbrechers erhalten, für seine Festnahme hättest du $%2 bekommen.
- Vous avez reçu une prime de $%1 pour le meurtre d'un criminel recherché, si vous l'aviez arrêté, vous auriez reçu $%2.
- Hai ricevuto il pagamento di una taglia di $%1 per aver ucciso un criminale ricercato, se lo avessi arrestato avresti ricevuto $%2.
- Você ganhou uma recompensa de $%1 por matar um criminoso procurado, se você tivesse o prendido ganharia R$%2.
- Otrzymujesz nagrodę w wysokości $%1 za zabicie poszukiwanego kryminalisty, w przypadku gdybyś go aresztował otrzymałbyć $%2.
- 你杀害被通缉的罪犯获得 %1 赏金,如果你逮捕了他,你就会获得 $%2 赏金。
-
-
- %1 has $%2 worth of contraband on them.
- %1 má $%2 v hodnotě kontrabandu na nich.
- %1 tiene $%2 en contrabando con el.
-
- %1 hatte Schmuggelware im Wert von $%2 bei sich.
- %1 a $%2 de contrebande sur lui.
- %1 ha $%2 in materiali illegali con se.
- %1 tem R$%1 em contrabando.
- %1 miał przy sobie kontrabandę o wartości $%2.
- %1 有价值 $%2 的非法物品。
-
-
- Illegal Items
- nelegální položky
- Objetos Ilegales
-
- Illegale Gegenstände
- Objets illégaux
- Oggetti Illegali
- Items Ilegais
- Nielegalne przedmioty / kontrabanda
- 非法物品
-
-
- %1 was identified as the bank robber!
- %1 byl identifikován jako bankovního lupiče!
- %1 fue identificado como el ladrón del banco!
-
- %1 wurde als Bankräuber identifiziert!
- %1 a été identifié comme un braqueur de banque !
- %1 è stato identificato come il rapinatore della banca!
- %1 foi identificado como ladrão de banco!
- %1 zidentyfikowany jako kasairz rabujący banki!
- %1 被认定为银行抢劫犯!
-
-
- No illegal items
- Žádné ilegální položek
- No objetos ilegales
-
- Keine illegalen Gegenstände.
- Aucun objet illégal
- Nessun oggetto illegale
- Sem items ilegais
- Brak kontrabandy i nielegalnych przedmiotów
- 没有非法物品
-
-
- You are not near a door!
- Nejste u dveří!
- No estas cerca de una puerta!
-
- Du bist nicht in der Nähe einer Tür!
- Vous n'êtes pas près d'une porte !
- Non sei vicno ad una porta!
- Você não está perto de uma porta!
- Nie jesteś przy drzwiach
- 你不在门附近!
-
-
- You need to enable Picture in Picture (PiP) through your video settings to use this!
- Je nutné povolit obraz v obraze (PIP) pomocí nastavení videa použít tento!
- Debes habilitar la opcion de "Picture in Picture"(PiP) En tus opciones de video para usar esto!
-
- Du musst "Bild in Bild" (PiP) in deinen Video-Einstellungen aktivieren, um dies nutzen zu können!
- Vous devez activer le "Picture in Picture" (PiP) dans vos paramètres vidéo pour utilser ceci !
- Devi attivare Picture in Picture (PiP) nelle tue impostazioni video per usare questa funzione!
- Você precisa habilitar o Picture in Picture (PiP), através das suas configurações de vídeo para usar esta opção!
- Musisz włączyć Obraz w obrazie (PiP) w ustawieniach graficznych aby tego używać!
- 您需要通过视频设置启用画中画(PiP)才能使用此功能!
-
-
- Licenses:
- licencí
- Licencias:
-
- Lizenzen:
- Licences :
- Licenze:
- Licenças:
- Licencje:
- 许可证:
-
-
- No Licenses
- žádné licence
- No Licencias
-
- Keine Lizenzen!
- Aucune licence
- Nessuna Licenza
- Sem Licenças
- Brak licencji
- 没有许可证
-
-
- Nothing illegal in this vehicle
- Nic nezákonného v tomto vozidle
- Nada ilegal en este vehículo
-
- Nichts Illegales in diesem Fahrzeug.
- Rien d'illégal dans ce véhicule
- Niente di illegale nel veicolo
- Nada ilegal dentro do veículo
- Nie znaleziono niczego nielegalnego w pojeździe
- 这载具没有非法物品
-
-
- Nothing illegal in this container.
- Nic nezákonného v tomto kontejneru
- Nada ilegal en este contenedor
- Nulla di illegale in questo contenitore
- Nic nielegalnego w tym pojemniku.
-
- Nada ilegal dentro do container
- Rien d'illégal dans ce conteneur
- Nichts Illegales in diesem Container.
- 这个库存没有非法物品。
-
-
- This vehicle is empty
- Toto vozidlo je prázdná
- Este vehículo esta limpio
-
- Dieses Fahrzeug ist leer.
- Ce véhicule est vide
- Questo veicolo è vuoto
- Esse veículo está vazio
- Pojazd jest pusty
- 这载具是空的
-
-
- This container is empty
- Tento zásobník je prázdný
- Ce conteneur est vide
- Este contenedor esta vacío
- Questo contenitore è vuoto
- Ten pojemnik jest pusty
- Este recipiente está vazio
- Этот контейнер пуст
- Dieser Container ist leer.
- 这个库存是空的
-
-
- $%1 from the Federal Reserve robbery was returned from the robber being killed.
- $%1 z Federálního rezervního systému loupeže byla vrácena ze lupič byl zabit.
- $%1 de la Reserva Federal fue devuelto, ya que mataron al ladrón.
-
- $%1 wurden in die Zentralbank zurückgebracht, weil der Bankräuber gestorben ist.
- $%1 du vol de la Banque Fédérale ont été récupérés sur le braqueur, qui vient d'être tué.
- $%1 della rapina alla Riserva Federale sono stati recuperati dal rapinatore ucciso.
- R$%1 que foi roubado da Reserva Federal retornou a ela após a morte do ladrão.
- $%1 z kradzieży w Banku zostało zwrócone po zabiciu włamywacza.
- 由于抢劫犯被杀死,联邦储备被抢的 $%1 被归还。
-
-
- Repairing vault...
- Oprava klenby ...
- Reparando bóveda...
-
- Tresor wird repariert...
- Réparation du coffre...
- Riparando il Caveau
- Reparando Cofre...
- Naprawiam skarbiec...
- 修理金库...
-
-
- The vault is now fixed and re-secured.
- Klenba je nyní pevně stanovena a re-zabezpečeny.
- La bóveda esta reparada y segura.
-
- Der Tresor wurde repariert.
- Le coffre est de nouveau sécurisé.
- Il Caveau è stato riparato e messo in sicurezza.
- O Cofre foi consertado e está seguro.
- Skarbiec jest naprawiony i zabezpieczony.
- 金库现在已修复并重新加固。
-
-
- The vault is already locked?
- Klenba je již uzamčen?
- La bóveda ya esta cerrada?
-
- Ist der Tresor abgeschlossen?
- Le coffre est déjà fermé?
- Il Caveau è già bloccato?
- O Cofre está trancado?
- Skarbiec jest zablokowany?
- 金库已经锁好了?
-
-
- You can't enter anything below 1!
- Nemůžete nic zadávat menší než 1!
- No puede poner nada menor que 1!
-
- Du kannst nichts unter 1 eingeben!
- Vous ne pouvez pas prendre moins de 1 objet !
- Non puoi selezionare nulla sotto l'1!
- Não é permitido usar valores abaixo de 1!
- Nie możesz wprowadzić niczego poniżej 1!
- 你不能输入少于1的任何物品!
-
-
- You can't store anything but gold bars in the safe.
- Nemůžete ukládat nic jiného než zlaté pruty v trezoru.
- Solo puedes guardar barras de oro en la bóveda.
-
- Du kannst nur Goldbarren in den Tresor legen.
- Vous ne pouvez rien stocker à part des lingots d'or dans le coffre.
- Nella cassaforte puoi depositare solo lingotti d'oro.
- Você só pode guardar Barras de Ouro no cofre.
- Nie możesz składować niczego poza sztabami złota w sejfie.
- 保险箱除了金条外,你不能存放其它物品。
-
-
- You don't have %1 gold bar(s)
- Nemáte%1 zlatá tyč (y)
- No tienes %1 barra(s) de oro
-
- Du hast keine %1 Goldbarren!
- Vous n'avez pas %1 lingot(s) d'or
- Non hai %1 lingotti d'oro
- Você não tem %1 Barra(s) de Ouro
- Nie masz %1 sztab(y) złota
- 你没有 %1 根金条
-
-
- Couldn't remove the item(s) from your inventory to put in the safe.
- Nepodařilo se odstranit položky) z inventáře dát do trezoru.
- No se pudieron mover las objetos de tu inventario a la caja.
-
- Es konnten keine Gegenstände von deinem Inventar in den Tresor gelegt werden.
- Vous ne pouvez pas supprimer les items de votre inventaire pour les mettre dans le coffre.
- Non è stato possibile rimuovere gli oggetti dal tuo inventario per metterli nella cassaforte.
- Não foi possível mover o item do inventário para o cofre.
- Nie można usunąć rzeczy z twojego wyposażenia aby włożyć je do sejfu
- 无法从你的库存中取出物品放在保险箱里。
-
-
- Couldn't search %1
- Nemohl hledání%1
- No se pudo buscar a %1
-
- %1 konnte nicht durchsucht werden.
- Impossible de fouiller %1
- Impossibile ispezionare %1
- Não foi possível buscar por %1
- Nie można przeszukać %1
- 无法搜索 %1
-
-
- Repairing Door...
- Oprava dveří ...
- Reparando Puerta...
-
- Tür wird repariert...
- Réparation de la porte...
- Riparando la porta...
- Reparando a porta....
- Naprawiam drzwi...
- 修理门...
-
-
- No Licenses<br/>
- Žádné Licence < br / >
- No Licencias<br/>
-
- Keine Lizenzen!<br/>
- Aucune licence<br/>
- Nessuna Licenza<br/>
- Você não tem licença<br/>
- Brak licencji<br/>
- 没有许可证<br/>
-
-
- No one has sold to this dealer recently.
- Nikdo se prodalo tohoto prodejce nedávno.
- Nadie le ha vendido a este comerciante recientemente.
-
- Niemand hat kürzlich an diesem Dealer etwas verkauft.
- Personne n'est venu vendre quelque chose ici récemment.
- Non è stato visto nessuno vendere a questo spacciatore di recente.
- Ninguém vendeu para esse negociante recentemente
- Nikt nie sprzedawał ostatnio u dilera.
- 最近没有人出售物品给这个经销商。
-
-
- The following people have been selling to this dealer recently.
- Následující lidé byli prodeji tohoto prodejce nedávno.
- Las siguientes personas le han estado vendiendo a este comerciante recientemente.
-
- Folgende Personen haben kürzlich an diesem Dealer etwas verkauft:
- Les personnes suivantes sont venues vendre quelque chose récemment.
- Le seguenti persone sono state viste vendere a questo spacciatore.
- Os seguintes jogadores venderam para esse negociante recentemente.
- Ostatnio u dilera sprzedawali następujący ludzie.
- 以下人员最近一直在向这个经销商销售物品。
-
-
- Radar
- Radar
- Radar
-
- Radar
- Radar
- Autovelox
- Radar
- Radar
- 测速雷达
-
-
- Vehicle Speed %1 km/h
- Rychlost vozidla%1 km / h
- Velocidad %1 km/h
-
- Geschwindigkeit: %1 km/h!
- Vitesse du véhicule %1 km/h
- Velocità veicolo %1 km/h
- Velocidade do Veículo %1 km/h
- Prędkość pojazdu %1 km/h
- 载具速度 %1 km/h
-
-
- You have been released automatically for excessive restrainment time
- Byli jste automaticky uvolněn pro nadměrnou restrainment čas
- Has sido liberado automáticamente por tiempo excesivo de estar retenido.
-
- Du wurdest automatisch freigelassen, da die maximale Verhaftungszeit überschritten wurde.
- Vous avez été démenotté automatiquement pour un menottage excessivement long
- Sei stato automaticamente liberato per essere rimasto ammanettato troppo tempo
- Você foi solto automaticamente, devido ao tempo limite ter expirado.
- Zostałeś automatycznie rozkuty z uwagi na długi upływ czasu od skucia.
- 由于约束时间过长你已经被自动释放
-
-
- You have been restrained by %1
- Byli jste omezeni%1
- Has sido retenido por %1
-
- Du wurdest von %1 festgenommen.
- Vous avez été menotté par %1
- %1 ti ha messo le manette
- Você foi imobilizado por %1
- Zostałeś rozkuty przez %1
- 你被 %1 约束了
-
-
- Who do you think you are?
- Kdo si myslíš že jsi?
- Qui pensez-vous être?
- ¿Quién te crees que eres?
- Chi ti credi di essere?
- Za kogo Ty się masz?
- Quem você pensa que é?
- Кто ты, по-твоему, такой?
- Was glaubst du wer du bist?
- 你以为你是谁?
-
-
- You must select a perp.
- Je třeba vybrat pachatele.
- Vous devez sélectionner une personne.
- Debe seleccionar un asesino.
- È necessario selezionare un criminale.
- Musisz wybrać perp.
- Você deve selecionar um criminoso.
- Вы должны выбрать преступника.
- Du musst einen Verbrecher auswählen.
- 你必须选择一个罪犯。
-
-
- You must select a crime.
- Je třeba vybrat trestného činu.
- Vous devez sélectionner un crime.
- Debe seleccionar un crimen.
- È necessario selezionare un crimine.
- Musisz wybrać przestępstwa.
- Você deve selecionar um crime.
- Вы должны выбрать преступление.
- Du musst ein Verbrechen auswählen.
- 你必须选择一种犯罪行为。
-
-
- Failed to fetch crimes.
- Nepodařilo se načíst trestných činů.
- Impossible de récupérer les crimes.
- No se pudieron obtener los crímenes.
- Impossibile recuperare i crimini.
- Nie udało się pobrać przestępstw.
- Falha ao buscar crimes.
- Не удалось получить преступления.
- Die Verbrechen konnten nicht heruntergeladen werden.
- 无法搜索犯罪记录。
-
-
-
-
- You tried to give %1 %2 %3 but they couldn't hold that so it was returned.
- Pokusili jste se dát% %1 %2 3, ale nemohli si myslí, že tak to bylo se vrátil.
- Le tratastes de dar %1 %2 %3 pero no tenian espacio asi que se te devolvió.
-
- Du wolltest %1 %2 %3 geben, aber er hat keinen Platz in seinem Inventar und hat es darum zurückgegeben.
- Vous avez essayé de donner %1 %2 %3 mais il n'a pas assez de place et vous a tout redonné.
- Hai provato a dare a %1 %2 unità di %3 ma non poteva trasportarlo quindi ti sono state restituite restituite.
- Você tentou dar %1 %2 %3, mas não conseguiu segurar e por isso que foi devolvido.
- Próbowałeś dać %1 %2 %3 lecz gracz nie mógł tego unieść, przedmioty zostały zwrócone.
- 你试着给 %1 %2 %3 但他们不能持有,所以物品被归还。
-
-
- %1 returned %2 %3 because they couldn't hold that amount.
- %1 vrátila% %2 3, protože oni nemohli držet tuto částku.
- %1 devolvió %2 %3 porque no tenian espacio.
-
- %1 hat %2 %3 zurückgegeben, weil er nicht so viel tragen kann.
- %1 vous a redonné %2 %3 parce qu'il ne pouvait pas en prendre autant.
- %1 ha restituito %2 %3 perchè non poteva trasportare quella quantità
- %1 retornou %2 %3 porque não conseguiu segurar essa quantidade.
- %1 zwrócił %2 %3 ponieważ nie mógł tego unieść
- %1 返还 %2 %3 因为他们拿不出这笔钱。
-
-
- %1 has gave you %2 but you can only hold %3 so %4 was returned back.
- %1 vám již dal%2, ale můžete mít pouze% %3 4 tak byla vrácena zpět.
- %1 te a dado %2, pero solo puedes cargar %3 asi que %4 fue devuelto.
-
- %1 hat dir %2 gegeben, du kannst aber nur %3 tragen, also hast du %4 zurückgegeben.
- %1 vous a donné %2 mais vous ne pouvez en prendre que %3 donc %4 a été redonné.
- %1 ti ha dato %2 ma puoi portare solo %3 quindi %4 unità sono state restituite.
- %1 retornou %2 %3 porque não conseguiu segurar essa quantidade.
- %1 dał ci %2 lecz możesz unieść tylko %3, w związku z tym zwróciłeś %4.
- %1 已经给了你 %2 但你只能持有 %3 所以 %4 被退回.
-
-
- Do you want to add this item to your weapon or inventory? If you add it to your weapon your current existing attachment will be lost!
- Chcete přidat tuto položku do zbraně nebo inventáře? Pokud si jej přidat do svého zbraň váš současný stávající příloha bude ztraceno!
- Quieres agregar este Objeto/Arma a tu inventario? Si lo agregas a tu arma tu accesorio actual se perdera!
-
- Möchtest du den Aufsatz zu deiner Waffe oder deinem Inventar hinzufügen? Wenn du es zur Waffe hinzufügst, geht der vorhandene Aufsatz verloren!
- Voulez-vous ajouter cet objet à votre arme ou le mettre dans votre inventaire? Si vous l'ajoutez à votre arme, votre accessoire actuel sera perdu!
- Vuoi aggiungere questo oggetto alla tua arma o all'inventario? Se lo aggiungerai all'arma verrà rimosso l'eventuale accessorio già presente su di essa!
- Você quer adicionar este item à sua arma ou inventário? Se você adicioná-lo à sua arma seu item atual existente será perdida!
- Chcesz dodać tę rzecz do broni lub wyposażenia? Jeśli to zrobisz twoje aktualne wyposażenie broni zostanie zmienione na nowo zakupione i przepadnie!
- 你想把这个物品添加到你的武器或库存中吗?如果你把它添加到你的武器,你当前的现有附件将会丢失!
-
-
- Attachment slot taken!
- Attachment slot vzít!
- Slot de accesorio tomado!
-
- Aufsatz Platz belegt!
- Accessoire déjà présent!
- Slot Accessorio preso!
- Slot de acessório utilizado!
- Podjąłeś slot
- 附件插槽!
-
-
- Weapon
- Zbraň
- Arma
-
- Waffe
- Armes
- Arma
- Armas
- Broń
- 武器
-
-
- Inventory
- Inventář
- Inventario
-
- Inventar
- Inventaire
- Inventario
- Inventário
- Wyposażenie
- 库存
-
-
- You are not allowed to look into someone's backpack!
- Nejste dovoleno dívat se do něčí batohu!
- No tienes permiso de ver dentro de las mochilas de los demas!
-
- Du bist nicht berechtigt, in fremde Rucksäcke zu schauen!
- Vous n'êtes pas autorisé à regarder dans le sac à dos de quelqu'un!
- Non sei autorizzato a guardare negli zaini altrui!
- Você não é liberado para olhar a mochila dos outros!
- Nie możesz zaglądać do czyichś plecaków!
- 你不允许看别人的背包!
-
-
- You are not allowed to access this vehicle while its locked.
- Nemáte povolen přístup k toto vozidlo zatímco jeho uzamčen.
- No tienes permiso de accesar este vehículo mientras esta cerrado.
-
- Du bist nicht berechtigt, auf dieses Fahrzeug zuzugreifen, während es abgeschlossen ist.
- Vous n'êtes pas autorisé à accéder à ce véhicule tant qu'il est verrouillé.
- Non ti è permesso l'accesso a questo veicolo mentre è bloccato.
- Você não pode acessar o veiculo enquanto ele estiver trancado.
- Nie masz dostępu do pojazdu gdy ten jest zamknięty
- 你不能在锁门的情况下进入载具。
-
-
- This vehicle's trunk is in use, only one person can use it at a time.
- kmen toto vozidlo je v provozu, může jen jedna osoba ji použít najednou.
- El maletero de este vehículo solo puede ser usado por una persona a la vez.
-
- Der Kofferraum dieses Fahrzeuges wird bereits benutzt, nur eine Person kann auf ihn zugreifen.
- Le coffre de ce véhicule est en cours d'utilisation, une seule personne peut l'utiliser à la fois.
- L'inventario di questo veicolo è in uso, può essere usato solo da una persona alla volta.
- A mala desse veículo está em uso, somente uma pessoa pode acessá-la de cada vez.
- Bagażnik pojazdu jest w użyciu, na raz może korzystać z niego tylko jedna osoba.
- 这载具的存储箱正在使用中,一次只能一个人使用它。
-
-
- Failed Creating Dialog
- Nepodařilo Vytvoření dialog
- Falló la creación del dialogo
-
- Erstellen des Dialogs gescheitert!
- Échec à la création de dialogue
- Creazione dialogo fallito
- Falha ao criar Diálogo
- Nie udało się nawiązać kontaktu
- 创建对话框失败
-
-
- You have unlocked your vehicle.
- Jste odemkli své vozidlo.
- Has abierto tu vehículo
-
- Du hast dein Fahrzeug aufgeschlossen.
- Vous avez déverrouillé votre véhicule.
- Hai sbloccato il tuo veicolo.
- Você destrancou o veículo.
- Odblokowałeś pojazd
- 你已经解锁了你的载具。
-
-
- You have locked your vehicle.
- Jste zamkli své vozidlo.
- Has cerrado tu vehículo.
-
- Du hast dein Fahrzeug abgeschlossen.
- Vous avez verrouillé votre véhicule.
- Hai bloccato il tuo veicolo
- Você trancou o veículo.
- Zablokowałeś pojazd
- 你已经锁好你的车了。
-
-
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- This can only be done by the last driver of this vehicle.
- 这只能由该车辆的最后一个驾驶员完成。
-
-
- Sirens On
- Na sirény
- Sirenas Prendidas
-
- Sirene AN
- Sirènes On
- Sirene accese
- Sirene Ligada
- Syrena włączona
- 开启警笛
-
-
- Sirens Off
- sirény Off
- Sirenas Apagadas
-
- Sirene AUS
- Sirènes Off
- Sirene spente
- Sirene Desligada
- Syrena wyłączona
- 关闭警笛
-
-
- You need to install storage containers to have storing capabilities!
- Je třeba nainstalovat kontejnery skladovací mít skladovací kapacity!
- Debes instalar contenedores para tener capabilidades de almacenamiento!
-
- Du musst dir Container kaufen, um etwas einlagern zu können!
- Vous devez installer des conteneurs de stockage pour disposer de capacité de stockage!
- Devi posizionare dei contenitori per aver la possibilità di depositare qualcosa!
- Você tem que instalar caixas para poder guardar items!
- Musisz zainstalować pojemniki aby uzyskać możliwość składowania rzeczy
- 你需要安装存储容器才能具有存储功能!
-
-
- This vehicle isn't capable of storing virtual items.
- Toto vozidlo není schopné uchovávat virtuální položky.
- Este vehiculo no puede guardar objetos virtuales.
-
- Dieses Fahrzeug kann keine virtuellen Gegenstände lagern.
- Ce véhicule n'est pas en mesure de stocker des objets virtuels.
- Questo veicolo non è in grado di trasportare oggetti virtuali.
- Esse veículo não pode armazenar items virtuais.
- Ten pojazd nie przechowuje wirtualnych przedmiotów
- 此载具无法存储虚拟物品。
-
-
- Weight:
- Hmotnost:
- Peso:
-
- Gewicht:
- Poids:
- Peso:
- Peso:
- Waga:
- 重量:
-
-
- House Storage
- dům Storage
- Inventario de la casa
-
- Lagerplatz des Hauses
- Conteneur de stockage
- Inventario Casa
- Cavalos de Força:
- Domowa skrzynka
- 房子存储
-
-
- Vehicle Trunk
- vozidlo Trunk
- Maletero de Vehículo
-
- Kofferraum
- Coffre du véhicule
- Inventario veicolo
- Capacidade da mala:
- Bagażnik pojazdu
- 载具存储箱
-
-
- The vehicle either doesn't exist or is destroyed.
- Vozidlo buď neexistuje, nebo je zničena.
- El vehículo no existe o fue destruido.
-
- Le véhicule n'existe pas ou a été détruit.
- Entweder existiert das Fahrzeug nicht oder es wurde zerstört.
- Il veicolo non esiste o è stato distrutto.
- Veículo não existe ou está destruido.
- Pojazd nie istnieje lub jest zniszczony
- 载具要么不存在要么被毁坏。
-
-
- Invalid number format
- Neplatný formát number
- Formato de numero inválido
-
- Ungültiges Zahlenformat!
- Format de nombre invalide
- Formato numerico non valido
- Formato de número inválido.
- Niepoprawny format liczby
- 数字格式无效
-
-
- You can't enter anything below 1!
- Nemůžete nic zadávat menší než 1!
- No puedes poner nada menos que 1!
-
- Du kannst nichts unter 1 eingeben!
- Vous ne pouvez pas prendre moins d'1 objet !
- Non puoi inserire nulla al di sotto di 1!
- Você não pode digitar nada abaixo de 1!
- Nie możesz wprowadzić niczego poniżej 1!
- 你不能输入少于1的任何物品!
-
-
- The vehicle doesn't have that many of that item.
- Vozidlo nemá že mnohé z této položky.
- El vehículo no tiene tantos de ese objeto.
-
- Das Fahrzeug hat nicht so viele dieser Gegenstände.
- Le véhicule ne contient pas autant de cet objet.
- Il veicolo non contiene così tanti oggetti.
- O veículo não tem essa quantidade de items.
- Pojazd nie posiada takiej ilości rzeczy.
- 载具没有那么多的物品。
-
-
- Your sound was set to normal mode!
- Váš zvuk byl nastaven do normálního režimu!
- Votre son a été augmenté!
- Tu sonido fue puesto en modo normal!
- Il vostro sound è stato impostato in modalità normale!
-
- Die Lautstärke ist wieder normal!
- Seu som voltou ao normal!
- Dzwięk został ustawiony w tryb normalny!
- 你的声音被设置为正常模式!
-
-
- Your sound was set to fade mode!
- Váš zvuk byl nastaven do režimu slábnout!
- Votre son a été diminué!
- Tu sonido fue puesto en modo bajo!
- Il vostro sound è stato impostato in modalità a svanire!
-
- Deine Lautstärke wurde in den "Fade-Mode" geändert!
- Seu som está abafado.
- Dzwięk został ustawiony w tryb wyciszony!
- 你的声音被设置为静音模式!
-
-
- An RPG game mode developed by Tonic.
- Mód RPG hra vyvinutá Tonic.
- Un mode de jeu de RPG développé par Tonic.
- Un modo de juego de rol desarrollado por Tonic.
- Una modalità di gioco RPG sviluppato da Tonic.
- Tryb gry RPG stworzona przez Tonic.
- Um modo de jogo RPG desenvolvido pela Tonic.
- Режим RPG игра, разработанная компанией Tonic.
- Ein RPG-Modus entwickelt von Tonic.
- 由Tonic开发的RPG游戏模式。
-
-
-
-
- Error saving container, couldn't locate house?
- Chyba při ukládání kontejner, nemohl najít dům?
- Error al salvar contenedor, no se pudo encontrar la casa?
-
- Fehler beim Speichern der Container: Es konnte kein Haus gefunden werden.
- Erreur lors de la sauvegarde des conteneurs, impossible de localiser la maison.
- Errore nel salvataggio del contenitore, impossibile trovare la cas a?
- Erro ao salvar a caixa, não foi possível encontrar a casa.
- Błąd w zapisywaniu pojemnika, nie można zlokalizować domu.
- 保存库存错误,找不到房子?
-
-
- You are not allowed to access this storage container without the owner opening it.
- Nemáte povolen přístup k tomuto skladovacího kontejneru, aniž by majitel otevření.
- No tienes permiso de acceder este contenedor, sin el dueño haberlo abierto.
-
- Du bist nicht berechtigt, auf diesen Container zuzugreifen, ohne dass der Besitzer ihn aufgeschlossen hat.
- Vous n'êtes pas autorisé à accéder à ce conteneur de stockage sans que le propriétaire ne l'ouvre.
- Non sei autorizzato ad accedere a questo contentitore senza il permesso del proprietario.
- Você so pode acessar a caixa se o dono deixar ela aberta.
- Nie masz dostępu do pojemnika dopóki właściciel go nie otworzy.
- 除非所有者打开此库存,否则不允许访问该库存。
-
-
- There are no houses near you.
- Nejsou žádné domy u vás.
- No hay casas cerca de ti.
- Non ci sono case vicino a voi.
- Brak domy w pobliżu ciebie.
-
- Il n'y a aucune maison près de vous.
- Não há casas perto de você.
- Es gibt keine Häuser in deiner Nähe.
- 你在附近没有房子。
-
-
- The storage box is over the stairs!
- Úložný box je u konce schodů!
- Le conteneur est dans les escaliers!
- La caja de almacenamiento está sobre las escaleras!
- Il contenitore è sopra le scale!
- Schowek jest na schodach!
- A caixa de armazenamento é sobre as escadas!
- Ящик для хранения находится над лестницей!
- Der Container ist über die Treppe!
- 存储箱在楼梯上!
-
-
- You are not the owner of the house.
- Nejste vlastníkem domu.
- No eres el dueño de la casa.
- Non sei il proprietario della casa.
- Nie jesteś właścicielem domu.
-
- Vous n'êtes pas le propriétaire de la maison.
- Você não é o dono da casa.
- Du bist nicht der Eigentümer des Hauses.
- 你不是房子的主人。
-
-
- You have unlocked the door.
- Jste odemkl dveře.
- Has abierto la puerta.
-
- Du hast die Tür aufgeschlossen.
- Vous avez ouvert la porte.
- Hai sbloccato la porta.
- Você destrancou a porta.
- Odblokowałeś drzwi.
- 你打开了门。
-
-
- You have locked the door.
- Jste zamkli dveře.
- Has cerrado con llave la puerta.
-
- Du hast die Tür abgeschlossen.
- Vous avez fermé à clé la porte.
- Hai bloccato la porta.
- Você trancou a porta.
- Zablokowałeś drzwi.
- 你锁上了门。
-
-
- You are not near a door!
- Nejste u dveří!
- No estas cerca de una puerta!
-
- Keine Tür in der Nähe!
- Vous n'êtes pas près d'une porte!
- Non sei vicino ad una porta!
- Você não está perto de uma porta!
- Nie jesteś przy drzwiach!
- 你不在门附近!
-
-
- This house was recently sold and is still processing in the database.
- Tento dům byl nedávno prodán a je stále zpracovává v databázi.
- Esta casa fue vendida recientemente y esta procesando datos.
-
- Dieses Haus wurde vor Kurzem verkauft.
- Cette maison a été récemment vendue et est en cours de traitement dans la base de données.
- Questa casa è stata venduta di recente ed il database la sta ancora processando.
- Essa casa já foi vendida, estamos processando a ordem de compra
- Ten dom został ostatnio sprzedany i trwa jego przetwarzanie w bazie danych.
- 这套房子最近已售出,目前仍在数据库中处理。
-
-
- You do not have a home owners license!
- Nemáte majitelům licenci doma!
- No tienes licencia mobiliaria!
-
- Du hast keine Eigentumsurkunde!
- Vous n'avez pas le permis de propriétaires de maison!
- Non hai la licenza per il possesso delle case!
- Você não tem um Registro Civil para comprar casas!
- Nie masz licencji zarządcy nieruchomości!
- 你没有房产许可证!
-
-
- You can only own %1 houses at a time.
- Můžete vlastnit pouze%1 domy najednou.
- Solo puedes ser dueño de %1 casas a la vez.
-
- Du darfst nur %1 Häuser zugleich besitzen.
- Vous ne pouvez posséder que %1 maisons à la fois.
- Puoi possedere solo %1 case
- Você só pode ter %1 casa(s)!
- Możesz posiadać maksymalnie %1 domów.
- 你一次只能拥有 %1 套房子。
-
-
- You do not have enough money!
- Nemáte dost peněz!
- No tienes suficiente dinero!
-
- Du hast nicht genug Geld!
- Vous n'avez pas assez d'argent!
- Non hai fondi a sufficienza!
- Você não tem todo esse dinheiro!
- Nie masz tyle pieniędzy!
- 你没有足够的钱!
-
-
- This house is available for <t color='#8cff9b'>$%1</t><br/>It supports up to %2 storage containers
- Tento dům je k dispozici pro <t color='#8cff9b'>$%1</t><br/> Podporuje až %2 skladovací kontejnery
- Esta casa esta disponible por <t color='#8cff9b'>$%1</t><br/>Soporta hasta %2 contenedores
-
- Dieses Haus kostet <t color='#8cff9b'>$%1</t><br/>. Es unterstützt %2 Container.
- Cette maison est disponible pour <t color='#8cff9b'>$%1</t><br/> Il prend en charge jusqu'à %2 conteneurs de stockage
- Questa casa è disponibile per <t color='#8cff9b'>$%1</t><br/>Può supportare fino a %2 contenitori
- Essa casa está disponível por <t color='#8cff9b'>R$%1</t><br/>Ela suporta até %2 caixa(s)
- Ten dom jest dostępny za <t color='#8cff9b'>$%1</t><br/>Ma %2 miejsca na pojemniki do przechowywania wyposażenia
- 这所房子可以住 <t color='#8cff9b'>$%1</t><br/>它最多支持 %2 个存储箱
-
-
- Purchase House
- nákup domu
- Comprar Casa
-
- Haus kaufen
- Acheter la Maison
- Compra Casa
- Comprar Casa
- Kup dom!
- 购买房子
-
-
- This house doesn't belong to anyone.
- Tento dům nepatří nikomu.
- Esta casa no tiene dueño.
-
- Dieses Haus gehört niemandem.
- Cette maison n'appartient à personne.
- Questa casa non appartiene a nessuno.
- Essa casa não tem dono.
- Ten dom nie ma właściciela.
- 这套房子不属于任何人。
-
-
- This person is not online there for you cannot raid their house!
- Tato osoba není on-line proto nelze nájezd svůj dům!
- No puedes asaltar esta casa, porque el dueño no esta en linea!
-
- Der Hausbesitzer ist nicht online, daher kannst du sein Haus nicht durchsuchen!
- Cette personne n'est pas sur l'île, vous ne pouvez pas perquisitionner cette maison!
- Questa persona non è online quindi non puoi perquisire la sua casa!
- O dono da casa não está online, você não pode vasculhar a casa!
- Osoba nie jest na serwerze, nie możesz przeszukać domu.
- 房子主人不在线,你不能搜查房子!
-
-
- The door is already unlocked!
- Dveře jsou již odemčené!
- La puerta ya esta abierta!
-
- Die Tür ist bereits offen!
- La porte est déjà débloqué!
- La porta è già sbloccata!
- A porta está destrancada!
- Drzwi są już odblokowane!
- 门已经解锁了!
-
-
- The door is already locked!
- Dveře jsou již zamčené!
- La porte est déjà fermée!
- La puerta ya esta cerrada con llave!
- La porta è già chiusa a chiave!
-
- Die Tür ist bereits verriegelt!
- Esta porta já está trancada!
- Drzwi są już zablokowane!
- 门已经锁好了!
-
-
- Breaking lock on door
- Lámání zámek na dveřích
- Rompiendo la cerradura de la puerta.
-
- Türschloss wird aufgebrochen...
- En train de casser la serrure
- Sbloccando la porta
- Quebrando a fechadura da porta
- Wyłamuje zablokowane drzwi...
- 撬开门锁
-
-
- %1 your house is being raided by the cops!
- %1 vašeho domu je vpadl policajti!
- %1 tu casa esta siendo asaltada por los policías!
-
- %1 dein Haus wird von der Polizei durchsucht!
- %1, votre maison est perquisitionnée par les policiers !
- %1 la Polizia si sta introducendo in casa tua!
- %1 Sua casa está sendo vasculhada pela Policia!
- %1 twój dom jest kontrolowany przez policję!
- %1 的房子被警察搜查了!
-
-
- House Owner
- Majitel domu
- Dueño de la casa
-
- Hauseigentümer
- Propriétaire
- Proprietario Casa
- Proprietário
- Właściciel domu
- 房子主人
-
-
- There is nothing in this house.
- Není nic v tomto domě.
- Esta casa esta vacía.
-
- Es gibt nichts in diesem Haus.
- Il n'y a rien dans cette maison
- In questa casa non c'è nulla.
- Essa casa está vazia.
- Nie znaleziono niczego nielegalnego.
- 房子里什么也没有。
-
-
- Searching House...
- Vyhledávání dům ...
- Buscando Casa...
-
- Haus wird durchsucht...
- Perquisition de la Maison...
- Perquisendo la Casa...
- Vasculhando a casa...
- Przeszukuję dom...
- 搜索房子...
-
-
- You went too far away from the house!
- Jste zašel příliš daleko od domu!
- Te alejastes mucho de la casa!
-
- Du hast dich zu weit vom Haus entfernt!
- Vous vous êtes trop éloigné de la maison!
- Sei andato troppo distante dalla casa!
- Você está muito distante da casa!
- Jesteś za daleko od domu!
- 你离房子太远了!
-
-
- A house was raided and had $%1 worth of drugs / contraband.
- Dům byl vpadl a měl $%1 v hodnotě drog / kontrabandu.
- Una casa fue asaltada y se econtraron $%1 en drogas / contrabando.
-
- Ein Haus wurde durchsucht und es wurden Drogen / Schmuggelware im Wert von $% gefunden.
- Une maison a été perquisitionné et avait $%1 de drogue / contrebande.
- Una casa è stata perquisita e sono stati trovati $%1 in materiali illegali.
- A casa assaltada tem R$%1 em drogas ou contrabandos.
- Podczas przeszukania domu znaleziono kontrabandę o wartości $%1.
- 一所房子被搜查,查获价值 $%1 的毒品/违禁品。
-
-
- Nothing illegal in this house.
- Nic nezákonného v tomto domě.
- Nada ilegal en esta casa.
-
- Nichts Illegales in diesem Haus.
- Rien d'illégal dans cette maison
- Questa casa non contiene nulla d'illegale.
- Nada ilegal nessa casa.
- Nie znaleziono niczego nielegalnego.
- 这房子没有违法物品。
-
-
- House storage unlocked
- Dům skladování odemkl
- Inventario de la casa abierto
-
- Lagerplatz des Hauses aufgeschlossen.
- Stockage de la maison déverrouillé
- Contenitori della casa sbloccati
- Armário da casa destrancado
- Pojemnik odblokowany
- 房子存储箱解锁
-
-
- House storage locked
- Dům skladování zamčené
- Inventario de la casa cerrado con llave
-
- Lagerplatz des Hauses abgeschlossen.
- Stockage de Maison verrouillé
- Contenitori della casa bloccati
- Armário da casa trancado
- Pojemnik zablokowany
- 房子存储箱锁定
-
-
- Locking up house please wait...
- Zamykání domu čekejte prosím ...
- La casa se esta cerrando con llave, por favor espere...
-
- Haus wird abgeschlosen, bitte warten...
- Fermeture de la maison, veuillez patienter...
- Bloccando la casa, attendere prego...
- Trancando a casa, aguarde...
- Blokuję zamykam dom proszę czekać...
- 房子锁定中请稍等...
-
-
- House has been locked up.
- Dům byl zamčený.
- La maison a été verrouillée.
- La casa se a cerrado con llave.
-
- Haus wurde abgeschlossen.
- La casa è stata bloccata.
- Sua casa foi trancada!
- Dom został zablokowany / zamknięty!
- 房子被锁定。
-
-
- Are you sure you want to sell your house? It will sell for: <t color='#8cff9b'>$%1</t>
- Jste si jisti, že chcete prodat svůj dům? To se bude prodávat za: <t color='#8cff9b'>$%1</t>
- Estas seguro de que quieres vender tu casa? Se vendera por: <t color='#8cff9b'>$%1</t>
-
- Bist Du sicher, dass du dein Haus verkaufen möchtest? Du würdest dafür <t color='#8cff9b'>$%1</t> bekommen.
- Etes-vous sûr de vouloir vendre votre maison? Elle se vendra pour: <t color='#8cff9b'>$%1</t>
- Sei sicuro di voler vendere la tua casa? La venderai per: <t color='#8cff9b'>$%1</t>
- Você tem certeza que deseja vender a casa? O valor de venda é: <t color='#8cff9b'>R$%1</t>
- Jesteś pewny że chcesz sprzedać dom za <t color='#8cff9b'>$%1</t>
- 你确定要卖掉你的房子吗?出售价格:<t color='#8cff9b'>$%1</t>
-
-
- Are you sure you want to remove it?
- Jsou si jisti, že jej chcete odstranit?
- Estas seguro de que lo quieres remover?
- Sei sicuro di voler rimuovere esso?
- Czy na pewno chcesz go usunąć?
-
- Etes-vous sûr de vouloir supprimer le conteneur ?
- Você tem certeza que quer remover isso?
- Bist du sicher, dass du den Container entfernen möchtest?
- 你确定要删除存储箱吗?
-
-
- This house is already owned even though you shouldn't be seeing this hint...
- Tento dům je již ve vlastnictví i když by nemělo být vidět tuto radu ...
- Cette maison a déjà un propriétaire, même si vous ne devriez pas voir ce message ...
- Esta casa es de propiedad ya pesar de que no debería estar viendo esta pista ...
- Questa casa è già di proprietà, anche se non si dovrebbe essere visto questo suggerimento ...
- Ten dom jest już własnością, nawet jeśli nie należy widzieć tę wskazówkę ...
- Esta casa já é de propriedade mesmo que você não deveria estar vendo essa dica ...
- Этот дом уже находится в собственности, даже если вы не должны видеть эту подсказку ...
- Dieses Haus befindet sich bereits in deinem Besitz. Diesen Hinweis solltest du eigentlich gar nicht sehen...
- 尽管你不该看到这个提示,但这所房子已经有房主了...
-
-
- There is no owner for this house.
- Neexistuje žádný majitel tohoto domu.
- Il n'y a pas le propriétaire de cette maison.
- No hay ningún propietario de esta casa.
- Non vi è alcun proprietario per questa casa.
- Nie ma właściciel tego domu.
- Não há proprietário para esta casa.
- Там нет владельца для этого дома.
- Es gibt keinen Eigentümer für dieses Haus.
- 这房子没有主人.
-
-
-
-
- Food
- Jídlo
- Faim
- Comida
- Cibo
- Jedzenie
-
- Hunger
- Comida
- 食物
-
-
- Health
- Zdraví
- Vie
- Vida
- Salute
- Zdrowie
-
- Gesundheit
- Vida
- 健康
-
-
- Water
- Voda
- Soif
- Agua
- acqua
- Woda
-
- Durst
- Água
- 水
-
-
-
-
- There isn't a chopper on the helipad!
- Není vrtulník na přistávací plocha pro vrtulník!
- No hay un helicóptero en el Helipad.
-
- Es ist kein Helikopter auf dem Landeplatz!
- Il n'y a pas d'hélicoptère sur l'héliport
- Non c'è alcun elicottero sulla piazzola d'atterraggio
- Não existe uma aeronave no heliponto!
- W pobliżu nie ma helikoptera!
- 直升机停机坪上没有直升机!
-
-
- You need $1,000 to service your chopper
- Musíte $ 1,000 servisních kontrol vrtulník
- Necesitas $1,000 para reparar el helicóptero.
-
- Du benötigst $1,000, um deinen Helikopter zu warten.
- Vous avez besoin de $1000 pour entretien de votre hélicoptère
- Necessiti di $1.000 per fare manutenzione al tuo elicottero
- Você precisa de R$1.000 para reparar a sua aeronave
- Potrzebujesz $1000 aby serwisować helikopter
- 你需要 $1,000 来维修你的直升机
-
-
- Servicing Chopper [%1]...
- Servis Chopper [%1] ...
- Reparando Helicóptero [%1]...
-
- Helikopter wird gewartet [%1]...
- Entretien [%1]...
- Manutenendo Elicottero [%1]...
- Reparando aeronave [%1]...
- Serwisuję helikopter [%1]...
- 维修直升机 [%1]...
-
-
- The vehicle is no longer alive or on the helipad!
- Vozidlo je již nežije nebo na přistávací plocha pro vrtulník!
- El vehiculo no esta vivo o en el helipad!
-
- Das Fahrzeug wurde zerstört oder befindest sich nicht mehr auf dem Helikopterlandeplatz!
- L'hélicoptère est détruit ou n'est plus sur l'héliport!
- Il veicolo non è più attivo sulla piazzola d'atterraggio!
- "A aeronave não está mais disponível no heliponto!
- Pojazd nie jest dłużej dostępny na lądowisku
- 载具不再存在或停在停机坪上!
-
-
- Your chopper is now repaired and refuelled.
- Váš vrtulník není opraveno a tankovat.
- Tu helicóptero esta reparado y lleno de combustible.
-
- Der Helikopter ist nun repariert und aufgetankt.
- Votre hélicoptère est maintenant réparé et ravitaillé
- L'elicottero è stato riparato e rifornito di carburante.
- Sua aeronave está reparada e com o tanque cheio!
- Helikopter został naprawiony i natankowany
- 你的直升机现在已经修好并加满油。
-
-
-
-
- Marijuana leaf
- marihuana list
- Cannabis
-
- Kannabis
- Cannabis
- Cannabis
- Maconha não Processada
- Konopie
- 大麻叶
-
-
- Apple
- Jablko
- Manzana
-
- Apfel
- Pomme
- Mela
- Maçã
- Jabłko
- 苹果
-
-
- Apples
- jablka
- Manzanas
-
- Äpfel
- Pommes
- Mele
- Maçãs
- Jabłka
- 很多苹果
-
-
- Heroin
- Heroin
- Heroina
-
- Heroin
- Heroïne
- Eroina
- Heroína
- Heroina
- 海洛因
-
-
- Oil
- Olej
- Petróleo
-
- Öl
- Pétrole
- Olio
- Petróleo
- Benzyna
- 石油
-
-
- Peach
- Broskev
- Melocotón
-
- Pfirsich
- Pêche
- Pesca
- Pêssego
- Brzoskwinia
- 桃子
-
-
- Peaches
- broskve
- Melocotones
-
- Pfirsiche
- Pêches
- Pesche
- Pêssegos
- Brzoskwinie
- 很多桃子
-
-
- Crude Oil
- Ropa
- Petróleo Crudo
-
- Unverarbeitetes Öl
- Pétrole non raffiné
- Olio non processato
- Petróleo não Refinado
- Ropa naftowa
- 原油
-
-
- Processed Oil
- Zpracovaný olej
- Petróleo Procesado
-
- Verarbeitetes Öl
- Pétrole raffiné
- Olio processato
- Petróleo Refinado
- Olej napędowy
- 成品油
-
-
- Opium Poppy
- Mák setý
- Planta del Opio
-
- Unverarbeitetes Heroin
- Graine de pavot
- Eroina non processata
- Heroína não Processada
- Heroina nieoczyszczona
- 罂粟
-
-
- Heroin
- Heroin
- Heroina
-
- Verarbeitetes Heroin
- Héroïne
- Eroina processata
- Heroína Processada
- Heroina oczyszczona
- 海洛因
-
-
- Pot
- Hrnec
- Marihuana
-
- Marihuana
- Marijuana
- Marijuana
- Maconha Processada
- Marihuana
- 大麻
-
-
- Raw Rabbit
- Raw Rabbit
- Carne de Conejo
-
- Rohes Hasenfleisch
- Viande de Lapin
- Carne di coniglio
- Carne de Coelho
- Mięso zająca
- 生兔肉
-
-
- Grilled Rabbit
- grilované Rabbit
- Conejo Asado
-
- Gegrilltes Hasenfleisch
- Lapin grillé
- Carne di coniglio alla griglia
- Carne de coelho grelhado
- Grilowany zając
- 烤兔肉
-
-
- Raw Salema
- Raw Salema
- Salema Crudo
-
- Rohe Sardine
- Filet de Saupe
- Carne di Salmone
- Peixe Salema
- Mięso salemy
- 生沙丁鱼肉
-
-
- Grilled Salema
- Grilované Salema
- Salema Cocinado
-
- Gegrillte Sardine
- Sardine grillée
- Sardine alla griglia
- Sardinha Grelhada
- Grilowana Salema
- 烤沙丁鱼肉
-
-
- Raw Ornate
- Raw Ozdobený
- Ornate Crudo
-
- Roher Kaiserfisch
- Filet d'Ornate
- Carne di Orata
- Carne Francesa
- Mięso Ornata
- 生梭鱼肉
-
-
- Grilled Ornate
- grilované Ozdobený
- Ornate Cocinado
-
- Gegrillter Kaiserfisch
- Doré grillé
- Angelfish alla griglia
- Angelfish Grelhado
- Grilowany Ornat
- 烤梭鱼肉
-
-
- Raw Mackerel
- Raw Makrela
- Verdel Crudo
-
- Rohe Makrele
- Filet de Maquereau
- Carne di Sgombro
- Peixe Cavalinha
- Mięso Makreli
- 生鲭鱼肉
-
-
- Grilled Mackerel
- grilované makrely
- Verdel Cocinado
-
- Gegrillte Makrele
- Maquereau grillé
- Sgombro alla griglia
- Cavalinha Grelhada
- Grilowana Makrela
- 烤鲭鱼肉
-
-
- Raw Tuna
- syrového tuňáka
- Atún Crudo
-
- Roher Thunfisch
- Filet de Thon
- Carne di Tonno
- Peixe Tuna
- Mięso Tuńczyka
- 生金枪鱼肉
-
-
- Grilled Tuna
- grilované Tuna
- Atún Cocinado
-
- Gegrillter Thunfisch
- Thon grillé
- tonno alla griglia
- Atum Grelhado
- Grilowany Tuńczyk
- 烤金枪鱼肉
-
-
- Raw Mullet
- Raw Mullet
- Lisa Cruda
-
- Rohe Meerbarbe
- Filet de Mulet
- Carne di Triglia
- Peixe Mullet
- Mięso Cefala
- 生鲻鱼肉
-
-
- Fried Mullet
- Fried Mullet
- Lisa Cocinada
-
- Frittierte Meerbarbe
- Rouget frits
- Triglia fritta
- Mullet Fritado
- Grilowany Cefal
- 油炸鲻鱼肉
-
-
- Raw Catshark
- Raw máčka
- Pez Gato Crudo
-
- Roher Katzenhai
- Filet de Poisson Chat
- Carne di Squalo
- Tubarão Gato
- Mięso Rekina
- 生鲨鱼肉
-
-
- Fried Catshark
- Fried máčka
- Pez Gato Cocinado
-
- Frittierter Katzenhai
- Poisson-chat frit
- profondo palombo fritti
- Tubarão Gato Frito
- Grilowany Rekin
- 油炸鲨鱼肉
-
-
- Raw Turtle
- Raw Turtle
- Carne de Tortuga
-
- Rohes Schildkrötenfleisch
- Viande de Tortue
- Carne di Tartaruga
- Carne de Tartaruga
- Mięso Żółwia
- 生海龟肉
-
-
- Turtle Soup
- Turtle Soup
- Sopa de Tortuga
-
- Schildkrötensuppe
- Soupe à la Tortue
- Zuppa di Tartaruga
- Sopa de Tartaruga
- Zupa z żółwia
- 海龟肉汤
-
-
- Raw Chicken
- Raw Chicken
- Carne de Pollo
-
- Poulet cru
- Rohes Hühnchenfleisch
- pollo crudo
- Galinha Crua
- Surowy Kurczak
- 生鸡肉
-
-
- Deep Fried Chicken
- Smažené kuře
- Pollo Frito
-
- Schwarz Frittiertes Hühnchen
- Poulet frit
- Nero Fried Chicken
- Frango Frito
- Smażony Kurczak
- 炸鸡肉
-
-
- Raw Rooster
- Raw Kohout
- Carne de Gallo
-
- Coq cru
- Rohes Hähnchenfleisch
- Rooster Raw
- Galo Cru
- Surowy Kogut
- 生公鸡肉
-
-
- Grilled Rooster
- grilované Kohout
- Gallo Asado
-
- Gegrilltes Hähnchen
- Coq grillé
- cazzo alla griglia
- Galo Grelhado
- Grilowany Kogut
- 烤鸡肉
-
-
- Raw Goat
- Raw Kozí
- Carne de Cabra
-
- Rohes Ziegenfleisch
- Chèvre crue
- Carne di capra Raw
- Carne de Cabra Crua
- Surowa Koza
- 生山羊肉
-
-
- Grilled Goat
- grilovaný kozí
- Cabra Asada
-
- Gegrilltes Ziegenfleisch
- Chèvre grillée
- Carne di capra alla griglia
- Carne de Cabra Grelhada
- Grilowana Koza
- 烤山羊肉
-
-
- Raw Sheep
- Raw Ovce
- Carne de Obeja
-
- Rohes Schafsfleisch
- Mouton cru
- Carne di pecora grezza
- Carne de Ovelha Crua
- Surowa Owca
- 生绵羊肉
-
-
- Grilled Sheep
- grilované Ovce
- Obeja Asada
-
- Gegrilltes Schafsfleisch
- Mouton grillé
- Mutton alla griglia
- Mutton Grelhado
- Grilowana Owca
- 烤全羊肉
-
-
- Fishing Pole
- Rybářský prut
- Palo de Pesca
-
- Angel
- Canne à pêche
- Canna da pesca
- Vara de Pescar
- Wędka
- 钓鱼竿
-
-
- Water Bottle
- Láhev na vodu
- Botella de Agua
-
- Wasserflasche
- Bouteille d'eau
- Bottiglia d'acqua
- Garrafa d'água
- Butelka wody
- 瓶装水
-
-
- Coffee
- Káva
- Café
-
- Kaffee
- Café
- Caffè
- Café
- Kawa
- 咖啡
-
-
- Donuts
- koblihy
- Donas
-
- Donuts
- Donuts
- Ciambelle
- Rosquinha
- Pączki
- 甜甜圈
-
-
- Empty Fuel Canister
- Prázdný palivo může
- Bidón de Combustible Vacío
-
- Leerer Benzinkanister
- Jerrican Vide
- Tanica di carburante vuota
- Tanque de Gasolina Vazio
- Pusty kanister
- 空汽油桶
-
-
- Full Fuel Canister
- Plná palivo může
- Bidón de Combustible Lleno
-
- Gefüllter Benzinkanister
- Jerrican de Carburant
- Tanica di carburante piena
- Tanque de Gasolina Cheio
- Pełny Kanister
- 满汽油桶
-
-
- Defibrillator
- defibrilátor
- Desfibrilador
-
- Defibrillator
- Défibrillateur
- defibrillatore
- Desfibrilador
- defibrylator
- 心脏除颤器
-
-
- Toolkit
- Toolkit
- Kit de Herramientas
-
- Werkzeugkit
- Boîte à outils
- kit di strumenti
- conjunto de ferramentas
- zestaw narzędzi
- 维修包
-
-
- Pickaxe
- Krumpáč
- Pico
-
- Spitzhacke
- Pioche
- Piccone
- Picareta
- Kilof
- 镐子
-
-
- Copper Ore
- Měděná ruda
- Cobre
-
- Kupfererz
- Minerai de Cuivre
- Minerale di Rame
- Pepita de Cobre
- Ruda miedzi
- 铜矿石
-
-
- Iron Ore
- Železná Ruda
- Hierro
-
- Eisenerz
- Minerai de Fer
- Minerale di Ferro
- Pepita de Ferro
- Ruda żelaza
- 铁矿石
-
-
- Iron Ingot
- Železná cihla
- Lingote de Hierro
-
- Eisenbarren
- Lingot de Fer
- Lingotto di ferro
- Barra de Ferro
- Sztabka żelaza
- 铁锭
-
-
- Copper Ingot
- měď ingotů
- Lingote de Cobre
-
- Kupferbarren
- Lingot de cuivre
- Lingotto di Rame
- Barra de Cobre
- Sztabka miedzi
- 铜锭
-
-
- Sand
- Písek
- Arena
-
- Sand
- Sable
- Sabbia
- Areia
- Piasek
- 沙子
-
-
- Salt
- Sůl
- Sal
-
- Salz
- Sel
- Sale
- Sal
- Sól kopana
- 盐矿
-
-
- Refined Salt
- rafinovaný Salt
- Sal Refinada
-
- Raffiniertes Salz
- Sel traité
- Sale raffinato
- Sal Refinado
- Sól rafinowana
- 食盐
-
-
- Glass
- Sklo
- Vidrio
-
- Glas
- Verre
- Vetro
- Vidro
- Szkło
- 玻璃
-
-
- Polished Diamond
- leštěný Diamond
- Diamante Pulido
-
- Geschliffene Diamanten
- Diamant Taillé
- Diamante tagliato
- Diamante Lapidado
- Diament szlifowany
- 钻石抛光
-
-
- Uncut Diamond
- Uncut Diamond
- Diamante Bruto
-
- Ungeschliffene Diamanten
- Diamant Brut
- Diamante grezzo
- Diamante Bruto
- Diament surowy
- 未切割钻石
-
-
- Tactical Bacon
- Tactical Bacon
- Tocino
-
- Taktischer Speck
- Bacon tactique
- Carne secca
- Bacon Tático
- Posiłek taktyczny
- 战术培根
-
-
- RedGull
- RedGull
- RedGull
- RedGull
- RedGull
- RedGull
- RedGull
- RedGull
- RedGull
- 红牛
-
-
- Lockpick
- Šperhák
- Ganzúa
-
- Dietrich
- Outil de crochetage
- Grimaldello
- Chave Mestra
- Wytrych
- 开锁工具
-
-
- Rock
- Skála
- Piedra
-
- Stein
- Pierre
- Roccia
- Pedra
- Skała
- 矿石
-
-
- Cement Bag
- cement Bag
- Bolsa de Cemento
-
- Zement Sack
- Sac de ciment
- Sacco di Cemento
- Saco de Cimento
- Worek cementu
- 水泥
-
-
- Gold Bar
- Gold Bar
- Barra de Oro
-
- Goldbarren
- Lingot d'or
- Lingotto d'Oro
- Barra de Ouro
- Sztabka złota
- 金条
-
-
- Blasting Charge
- Trhací Charge
- Carga Explosiva
-
- Sprengladung
- Charge de dynamite
- Carica Esplosiva
- Explosivo
- Ładunek wybuchowy
- 爆破装置
-
-
- Bolt Cutter
- Bolt Cutter
- Cizalla
-
- Bolzenschneider
- Outils de serrurier
- Tronchese
- Alicate
- Nożyce do kłódek
- 螺栓切割机
-
-
- Bomb Defuse Kit
- Bomby zneškodnit Kit
- Kit para Desarmar Bombas
-
- Bombenentschärfungskit
- Outils de désamorçage
- Attrezzi per il disinnesco
- Kit anti-bomba
- Zestaw saperski
- 爆破拆除工具
-
-
- Small Storage Box
- Malá přihrádka
- Contenedor Pequeño
-
- Kleine Lagerbox
- Petit Conteneur de stockage
- Contenitore piccolo
- Caixa Pequena
- Mały pojemnik
- 小储物箱
-
-
- Large Storage Box
- Velký úložný box
- Contenedor Grande
-
- Große Lagerbox
- Grand Conteneur de stockage
- Contenitore grande
- Caixa Grande
- Duży pojemnik
- 大储物箱
-
-
- Coca Leaf
- Coca Leaf
- Hoja de Coca
-
- Unverarbeitetes Kokain
- Feuille de Coca
- Cocaina non processata
- Cocaína não Refinada
- Nieoczyszczona kokaina
- 古柯叶
-
-
- Coke
- Koks
- Cocaína
-
- Verarbeitetes Kokain
- Cocaïne
- Cocaina processata
- Cocaína Refinada
- Oczyszczona kokaina
- 可卡因
-
-
- Spike Strip
- Spike Strip
- Barrera de Clavos
-
- Nagelband
- Herse
- Striscia Chiodata
- Tapete de Espinhos
- Kolczatka drogowa
- 钉刺带
-
-
-
-
- Driver License
- Řidičský průkaz
- Licencia de Conducir
-
- Führerschein
- Permis de Conduire
- Licenza di Guida
- Licença de Motorista
- Prawo jazdy
- 小车驾驶证
-
-
- Pilot License
- pilotní licence
- Licencia de Piloto
-
- Pilotenschein
- Licence de Pilote
- Licenza da Pilota
- Licença de Piloto
- Licencja Pilota
- 飞行员证
-
-
- Heroin Training
- heroin Training
- Entrenamiento de Heroina
-
- Heroinausbildung
- Transformation d'Héroïne
- Processo Eroina
- Treinamento de Heroina
- Wytwarzanie Heroiny
- 海洛因加工证
-
-
- Oil Processing
- Zpracování olej
- Procesamiento de Petroleo
-
- Ölverarbeitung
- Raffinage du pétrole
- Processo Olio
- Refinamento de Petróleo
- Rafinacja ropy naftowej
- 石油提炼证
-
-
- Diving License
- potápěčské licence
- Licencia de Buceo
-
- Taucherschein
- Permis de Plongée
- Licenza di Pesca
- Licença de Mergulho
- Licencja Nurka
- 潜水证
-
-
- Boating License
- Vodácký licence
- Licencia de Botes
-
- Bootsschein
- Permis Bateau
- Licenza Nautica
- Licença de Barco
- Patent Motorowodny
- 海员证
-
-
- Firearm License
- zbrojní průkaz
- Licencia de Armas
-
- Waffenschein
- Permis de Port d'Arme
- Porto d'Armi
- Licença de Porte de Armas
- Pozwolenie na broń
- 持枪证
-
-
- Coast Guard License
- Pobřežní stráž licence
- Licencia de Guardia Costera
-
- Küstenwachenausbildung
- Garde-Côtes
- Licenza Guardia Costiera
- Licença da Guarda Costeira
- Trening straż przybrzeżna
- 海岸警卫队证
-
-
- Rebel Training
- Rebel Training
- Entrenamiento Rebelde
-
- Rebellenausbildung
- Entraînement rebelle
- Licenza da Ribelle
- Treinamento Rebelde
- Trening rebelianta
- 叛军训练
-
-
- Truck License
- Truck licence
- Licencia de Camiones
-
- LKW-Führerschein
- Permis Poids Lourds
- Licenza Camion
- Licença de Caminhão
- Prawo jazdy - ciężarówki
- 货车驾驶证
-
-
- Diamond Processing
- Diamond Processing
- Procesamiento de Diamantes
-
- Diamantenverarbeitung
- Taillage des Diamants
- Processo Diamanti
- Lapidação de Diamante
- Szlifierz diamentów
- 钻石加工厂
-
-
- Copper Processing
- Zpracování měď
- Procesamiento de Cobre
-
- Kupferverarbeitung
- Fonte du Cuivre
- Processo Rame
- Processamento de Cobre
- Wytapianie miedzi
- 铜矿加工
-
-
- Iron Processing
- Zpracování Iron
- Procesamiento de Hierro
-
- Eisenverarbeitung
- Fonte du Fer
- Processo Ferro
- Processamento de Ferro
- Wytapianie żelaza
- 铁矿加工
-
-
- Sand Processing
- Zpracování písek
- Procesamiento de Arena
-
- Sandverarbeitung
- Traitement du Sable
- Processo Sabbia
- Processamento de Areia
- Hutnik szkła z piasku
- 玻璃制造证
-
-
- Salt Processing
- sůl Processing
- Procesamiento de Sal
-
- Salzverarbeitung
- Traitement du Sel
- Processo Sale
- Processamento de Sal
- Warzenie soli
- 食盐制造证
-
-
- Cocaine Training
- kokain Training
- Entrenamiento de Cocaína
-
- Kokainausbildung
- Transformation de la Cocaïne
- Processo Cocaina
- Treinamento de Cocaína
- Oczyszczanie kokainy
- 可卡因加工证
-
-
- Marijuana Training
- Marihuana Training
- Entrenamiento de Marihuana
-
- Marihuanaausbildung
- Traitement du Cannabis
- Processo Marijuana
- Treinamento de Maconha
- Suszenie konopi
- 大麻加工证
-
-
- Cement Mixing License
- Cement Mixing licence
- Licencia para Mezclar Cemento
-
- Zementmisch-Lizenz
- Fabrication du Ciment
- Processo Cemento
- Licença de Cimento
- Wytwórca cementu
- 水泥制造证
-
-
- Medical Marijuana License
- Medical Marihuana Licence
- Licencia de Marihuana Medicinal
-
- Medizinisches Marijuana-Lizenz
- Licence de Cannabis Médical
- Medical Marijuana Licenza
- Licença Medical Marijuana
- Medical Marijuana Licencji
- 医用大麻许可证
-
-
- Home Owners License
- Home Majitelé licence
- Licencia Mobiliaria
-
- Eigentumsurkunde
- Droit de Propriété
- Licenza possesso Casa
- Licença de Casas
- Zarządca nieruchomości
- 房产证
-
-
-
-
- This can only be used on a vault.
- To lze použít pouze v trezoru.
- Esto solo se puede usar en una bóveda.
-
- Dies kann nur an einem Tresor benutzt werden.
- Cela ne peut être utilisé que sur un coffre-fort.
- Può essere usata solo sulla cassaforte.
- Isso só pode ser usado em um cofre.
- Możesz tego użyć na skarbcu.
- 这只能用于金库。
-
-
- There is already a charge placed on this vault.
- Existuje již náboj umístěn na tomto trezoru.
- Ya hay un explosivo puesto en esta bóveda
-
- Es gibt bereits eine Sprengladung am Tresor.
- Une charge de dynamite est déjà placé sur ce coffre.
- C'è già una carica piazzata sulla cassaforte.
- Já existe uma carga colocada sobre esse cofre.
- Już założono ładunek wybuchowy na skarbcu.
- 这座金库已经安装爆破装置。
-
-
- The vault is already opened.
- Klenba je již otevřen.
- La bóveda ya esta abierta.
-
- Der Tresor ist bereits offen.
- Le coffre est déjà ouvert.
- La cassaforte è già aperta.
- O cofre está aberto.
- Skarbiec jest już otwarty.
- 金库已经打开了.
-
-
- A blasting charge has been placed on the federal reserves vault, You have till the clock runs out to disarm the charge!
- S rozbuškami náboj byl umístěn na federální rezervy trezoru, jste až do hodiny vyčerpá odzbrojit náboj!
- Una carga explosiva ha sido puesta en la bóveda de la reserva federal, tienes hasta que se acabe el tiempo para desarmar el explosivo!
-
- Eine Sprengladung wurde am Safe angebracht. Du hast Zeit, bis die Uhr abläuft, um die Ladung zu entschärfen!
- Une charge de dynamite a été placée sur le coffre de la réserve fédérale. Vous avez jusqu'au temps imparti pour désarmorcer la charge !
- Una carica esplosiva è stata piazzata sulla cassaforte della Riserva Federale, puoi cercare di disinnescarla prima che scada il tempo!
- O explosivo foi colocado no cofre , você tem até o tempo acabar para desarmar o explosivo.
- Ładunek wybuchowy został założony na skarbcu rezerw federalnych, musisz rozbroić ładunek nim wybuchnie!
- 金库里已经安装了爆破装置,你必须有足够的时间解除爆破装置!
-
-
- The timer is ticking! Keep the cops away from the vault!
- Časovač je tikání! Udržujte policajty od trezoru!
- El tiempo esta corriendo, manten alejados a los policías!
-
- Der Timer läuft! Halte die Polizei von Safe fern!
- La minuterie est lancée! Gardez la police loin de la bombe !
- Il tempo sta scorrendo! Tieni la polizia lontana dalla cassaforte!
- O tempo está passando! Mantenha os policiais longe do cofre
- Zegar tyka! Trzymaj policję z dala od skarbca!
- 计时器开始计时!请远离爆破点!
-
-
- The charge has been disarmed!
- Náboj byl odzbrojen!
- El explosivo ha sido desarmado!
-
- Die Sprengladung wurde entschärft!
- La charge a été désamorcée !
- La carica esplosiva è stata disinnescata!
- O explosivo foi desarmado!
- Ładunek wybuchowy rozbrojony!
- 爆破装置被解除!
-
-
- The vault is now opened
- Klenba je nyní otevřena
- La bóveda esta abierta
-
- Der Tresor ist jetzt offen!
- Le coffre est maintenant ouvert
- La cassaforte è stata aperta
- O cofre está aberto.
- Skarbiec otwarty
- 金库现在已经打开了
-
-
- You must open the container before placing the charge!
- Je nutné otevřít nádobu před umístěním nabíječku!
- Vous devez ouvrir le conteneur avant de placer le chargeur !
- Debes abrir el contenedor antes de poner el explosivo!
- È necessario aprire il contenitore prima di mettere il caricabatterie!
- Musisz otworzyć pojemnik przed wprowadzeniem opłat!
-
- Você deve abrir o container antes de colocar o explosivo!
- Du musst den Container öffnen, bevor du die Ladung platzieren kannst!
- 安装爆破装置前你必须打开金库大门!
-
-
- You are not looking at a house door.
- Nejste při pohledu na dveře domu.
- No estas viendo a la puerta de una casa.
-
- Du siehst keine Haustür an.
- Vous n'êtes pas en face de la porte.
- Non sei girato verso la porta di una casa.
- Você não esta olhando para a porta.
- Nie patrzysz w stronę drzwi.
- 你需要靠近门才能使用。
-
-
- !!!!! SOMEONE IS BREAKING INTO THE FEDERAL RESERVE !!!!!!
- !!!!! Někdo vloupání do Federálního rezervního systému !!!!!!
- !!!!! LA RESERVA FEDERAL ESTA SIENDO ASALTADA !!!!!!
-
- !!!!! JEMAND BRICHT IN DIE ZENTRALBANK EIN !!!!!!
- !!!!! QUELQU'UN TENTE DE S'INTRODUIRE DANS LA RÉSERVE FÉDÉRALE !!!!!!
- !!!!!! QUALCUNO STA CERCANDO DI INTRODURSI NELLA RISERVA FEDERALE !!!!!!
- !!!!! A RESERVA FEDERAL ESTÁ SENDO ROUBADA !!!!!!
- !!!!!! KTOŚ SIĘ WŁAMUJE DO BANKU REZERW FEDERALNYCH !!!!!
- !!!!! 有人闯进金库 !!!!!!
-
-
- %1 was seen breaking into a house.
- %1 byl viděn vloupání do domu.
- %1 ha sido visto entrando a una casa.
-
- %1 wurde beim Einbruch in ein Haus gesehen.
- %1 a été vu rentrant dans une maison par effraction.
- %1 è stato visto fare irruzione in una casa.
- %1 foi visto invadindo sua casa.
- %1 był widziany jak włamywał się do domu.
- %1 闯入一所房子。
-
-
- Cutting lock on door
- Řezání zámek na dveřích
- Cortando la cerradura de la puerta
-
- Schloss wird aufgebrochen...
- Crochetage de la serrure
- Tranciando i blocchi sulla porta
- Quebrando o cadeado da porta
- Przecinam zabezpieczenia domu
- 门锁被撬
-
-
- You must open the outside doors before opening it!
- Je nutné otevřít venkovní dveře před otevřením!
- Vous devez ouvrir les portes extérieures avant de l'ouvrir !
- Debes abrir las puertas de afuera antes de abrir esta!
- È necessario aprire le porte esterne prima di aprirlo!
- Musisz otworzyć zewnętrzne drzwi przed otwarciem!
-
- Você deve abrir as portas externas antes de abrir essa!
- Du musst die Außentüren öffnen, bevor du weitermachen kannst!
- 打开门前你必须先打开外面的门!
-
-
- You are not looking at a vault.
- Nejste při pohledu na klenbu.
- Vous ne regardez pas le coffre.
- No estas apuntando a la bóveda.
- Non cercate in un caveau.
- Nie jesteś patrząc na sklepieniu.
- Você não está olhando para um cofre.
- Вы не смотрите на хранилище.
- Du siehst keinen Tresor an.
- 你不是金库看守。
-
-
- There is no charge on the vault?
- Neexistuje žádný poplatek na klenbě?
- No hay un explosivo en la bobeda?
-
- Es gibt keine Sprengladung am Tresor?
- Il n'y a pas de dynamite sur le coffre ?
- Non c'è alcuna carica esplosiva sulla cassaforte
- Não há nenhum explosivo no cofre.
- Nie ma ładunku na skarbcu?
- 爆破装置安装在了金库里?
-
-
- Defusing charge...
- Zneškodňovat náboj ...
- Desarmando Explosivo...
-
- Sprengladung wird entschärft...
- Désamorçage de la charge...
- Disinnescando la carica esplosiva...
- Desarmando o explosivo...
- Rozbrajam ładunek...
- 拆除爆破装置...
-
-
- The charge has been defused
- Obvinění byla zneškodněna
- El explosivo ha sido desarmado
-
- Die Sprengladung wurde entschärft.
- La charge a été désamorcée
- La carica esplosiva è stata disinnescata
- O explosivo foi desarmado
- Ładunek został rozbrojony
- 爆破装置已被拆除
-
-
- You need to look at the vehicle you want to refuel!
- Musíte se podívat na vozidla, které chcete natankovat!
- Debes mirar a el vehiculo que quieres llenar de combustible!
-
- Du musst das Fahrzeug ansehen, das du auftanken möchtest!
- Vous avez besoin de regarder le véhicule dont vous voulez faire le plein !
- Devi essere girato verso il veicolo che vuoi rifornire!
- Você precisa estar olhando para o veículo que deseja abastecer!
- Musisz spojrzeć w kierunku pojazdu który chcesz zatankować!
- 你要看看你的载具是否加满了油!
-
-
- You need to be closer to the vehicle!
- Musíte být blíže k vozidlu!
- Debes estar más cerca del vehiculo!
-
- Du musst näher am Fahrzeug sein!
- Vous devez être plus proche du véhicule !
- Devi stare più vicino al veicolo!
- Você precisa estar mais perto do veículo!
- Musisz być bliżej pojazdu!
- 你需要离载具近一点!
-
-
- Refuelling Fuel Canister
- Tankování paliva kanystr
- Ravitaillement en carburant de la citerne
- Llenando Bidón de Combustible
- Rifornimento carburante scatola metallica
- Tankowanie paliwa Kanister
- O reabastecimento de combustível vasilha
- Дозаправка топлива канистра
- Benzinkanister befüllen
- 加注汽油桶
-
-
- Fuel Station Pump
- Čerpací stanice čerpadla
- Pompe à essence
- Estación de bombeo de combustible
- Pompa Stazione di rifornimento
- Paliwo przepompowni
- Bomba de Combustível Station
- Топливная Насосная станция
- Zapfsäule
- 燃料加油站
-
-
- Spend $%1 to refuel your Empty Fuel Canister?
- Utratit $%1 natankovat vaše prázdné palivové kanystr?
- Dépenser $%1 pour faire le plein de votre réservoir ?
- Gastar $%1 para llenar el Bidón de Combustible?
- Spendere $%1 per rifornire di carburante la vostra scatola metallica del combustibile vuoto?
- Wydać $%1 zatankować swój pustego zasobnika paliwa?
- Gastar R$%1 para reabastecer a sua vasilha de combustível vazio?
- Потратить $%1 для дозаправки ваш Пусто баллон с горючим?
- Willst du deinen leeren Kraftstoffkanister für $%1 befüllen?
- 花费 $%1 加满你的空汽油桶?
-
-
- You must be closer to the fuel pump!
- Musíte být blíže k palivovému čerpadlu!
- Vous devez être plus proche de la pompe à carburant !
- Debe estar más cerca de la bomba de combustible!
- È necessario essere più vicino alla pompa del carburante!
- Você deve estar mais perto da bomba de combustível!
- Você deve estar mais perto da bomba de combustível!
- Вы должны быть ближе к топливному насосу!
- Du musst dich näher an der Zapfsäule befinden!
- 你必须靠近加油机!
-
-
- You have successfully refuelled the Fuel Canister!
- Úspěšně jste tankovat palivový kanystr!
- Vous avez ravitaillé avec succès le réservoir d'essence !
- Usted ha llenado con exito el Bidón de Combustible!
- Hai rifornimento con successo il canestro del combustibile!
- Pomyślnie zatankowany kanistra paliwa!
- Você reabastecido com sucesso a vasilha de combustível!
- Вы успешно заправились на баллон с горючим!
- Der Benzinkanister wurde befüllt!
- 你已加满汽油桶!
-
-
- Refuelling %1
- Doplňování paliva %1
- Llenado el Bidón %1
-
- Wird befüllt %1...
- Ravitaillement en cours de %1
- Rifornendo %1
- Abastecendo %1
- Tankuję %1
- 补充油量 %1
-
-
- You have refuelled that %1
- Jsi natankoval, že produkt %1
- Has llenado el %1
-
- Du hast deinen %1 befüllt.
- Vous avez ravitaillé %1
- Hai rifornito di carburante un %1
- Você abasteceu %1
- Zatankowałeś %1
- 你要补充油量 %1
-
-
- This vehicle is already in your key-chain.
- Toto vozidlo je již ve vaší klíčenky.
- Esta vehiculo ya esta en tu llavero.
-
- Du hast diesen Fahrzeugschlüssel bereits an deinem Schlüsselbund.
- Ce véhicule est déjà dans votre porte-clé.
- Possiedi già le chiavi di questo veicolo.
- Você já tem a chave desse veículo.
- Masz już klucze do tego pojazdu.
- 你已经获得载具钥匙。
-
-
- Lock-picking %1
- Lockpicking %1
- Abriendo Cerradura %1
-
- Wird aufgebrochen %1...
- Crochetage de %1
- Scassinando %1
- Arrombando %1
- Włamujesz się do %1
- 撬锁 %1
-
-
- You got to far away from the target.
- Dostal jsi příliš daleko od cíle.
- Le alejastes mucho del objeto.
-
- Du hast dich zu weit vom Ziel entfernt.
- Vous êtes trop loin de la cible.
- Sei andato troppo lontano dall'obiettivo
- Voçê está muito longe do seu alvo.
- Jesteś za daleko od celu.
- 你必须远离目标。
-
-
- You now have keys to this vehicle.
- Nyní máte klíče k tomuto vozidlu.
- Ahora tienes las llaves para este vehiculo.
-
- Du hast nun einen Schlüssel zu diesem Fahrzeug.
- Vous avez maintenant les clés de ce véhicule
- Sei ora in possesso delle chiavi di questo veicolo.
- Agora você tem as chaves do veiculo.
- Masz teraz klucze do tego pojazdu
- 你现在获得了载具钥匙。
-
-
- The lockpick broke.
- Paklíč zlomil.
- La ganzua se rompió.
-
- Der Dietrich ist abgebrochen.
- L'outil de crochetage s'est cassé
- Il grimaldello si è rotto.
- A Chave Mestra quebrou.
- Wytrych się złamał.
- 撬锁工具坏了。
-
-
- %1 was seen trying to lockpick a car.
- %1 byl viděn snaží lockpick auto.
- %1 ha sido visto tratando de abrir un carro.
-
- %1 wurde beim Aufbrechen eines Auto erwischt.
- %1 a été vu essayant de crocheter une voiture
- %1 è stato visto provare a scassinare un veicolo.
- %1 foi visto usando uma Chave Mestra em um carro.
- %1 był widziany jak próbował włamać się do samochodu.
- %1 试图撬开一辆载具的门锁。
-
-
- You are not near a mine!
- Nejste v blízkosti dolu!
- No estas cerca de una mina!
-
- Du bist nicht in der Nähe einer Mine!
- Vous n'êtes pas près d'une mine!
- Non ti trovi vicino ad una cava!
- Você não está próximo de uma mina!
- Nie jesteś blisko kopalni!
- 你不在矿场附近!
-
-
- You can't mine from inside a car!
- Nemůžete dolovat z vnitřku vozu!
- No puedes minar desde adentro de un vehiculo!
-
- Du kannst nicht in deinem Auto abbauen!
- Vous ne pouvez pas miner à l'intérieur d'une voiture!
- Non puoi minare da dentro un veicolo!
- Você não pode minerar dentro do carro!
- Nie możesz wydobywać z samochodu!
- 你不能从车里面采集!
-
-
- You have mined %2 %1
- Jste těžil% %2 1
- Has minado %2 %1
-
- Du hast %2 %1 abgebaut.
- Vous avez miné %2 %1
- Hai minato %2 %1
- Você minerou %2 %1
- Wydobyłeś %2 %1
- 你开采 %2 %1
-
-
- Place Spike Strip
- Umístěte Spike Strip
- Poner Barrera de Clavos
-
- Nagelband platzieren
- Placer la herse
- Posa striscie chiodate
- Tapete de Espinhos armado.
- Rozłóż kolczatkę
- 放置钉刺带
-
-
- Pack up Spike Strip
- Sbalit Spike Strip
- Guardar Barrera de Clavos
-
- Nagelband zusammenpacken
- Ranger la herse
- Recupera striscie chiodate
- Pegar Tapete de Espinhos.
- Zwiń kolczatkę
- 收起钉刺带
-
-
- You need to be inside your house to place this.
- Musíte být uvnitř svého domu na místo toto.
- Debes estar dentro de tu casa para poner eso.
-
- Du musst in deinem Haus sein, um dies platzieren zu können.
- Vous devez être à l'interieur de votre maison pour placer ceci
- Devi essere all'interno della tua casa per posizionarlo.
- Você precisa estar dentro da sua casa para colocar isso!
- Musisz być wewnątrz własnego domu aby to umieścić.
- 你需要在你的房子里放置这个。
-
-
- You cannot place any more storage containers in your house.
- Nelze umístit žádné další skladovací kontejnery ve vašem domě.
- No puedes poner mas contenedores en tu casa.
-
- Es können keine weiteren Container in dein Haus gestellt werden.
- Vous ne pouvez pas placer d'autres conteneurs dans votre maison.
- Non puoi installare altri contenitori in casa tua.
- Você não pode colocar mais caixas dentro da sua casa.
- Nie masz więcej miejsca na pojemniki w tym domu.
- 你不能在你的房子里放更多的储藏存储箱。
-
-
- No more free storage spaces in your house.
- Žádné další volné skladové prostory v domě.
- No hay más espacio de almacenamiento en tu casa.
-
- Es gibt in deinem Haus keinen freien Lagerplatz mehr.
- Il n'y a plus d'espace libre dans votre maison.
- I contenitori in casa tua hanno finito lo spazio disponibile.
- Não ha mais espaços para guardar itens em sua casa.
- Brak wolnych miejsc na pojemniki w domu.
- 你的房子没有空闲的储藏空间。
-
-
- You need to select an item first!
- Je třeba vybrat položku na prvním místě!
- Debes seleccionar un objeto primero!
-
- Du musst zuerst einen Gegenstand auswählen!
- Vous devez sélectionner un objet !
- Devi prima selezionare un oggetto!
- Você precisa selecionar um item primeiro!
- Zaznacz najpier rzecz.
- 你需要选择一个物品!
-
-
- You can now run farther for 3 minutes
- Nyní můžete spustit další 3 minuty
- Ahora puedes correr mas por 3 minutos
-
- Vous pouvez courir pendant 3 minutes
- Du kannst jetzt für 3 Minuten weiter laufen.
- Puoi ora correre per 3 minuti consecutivi
- Você agora pode correr por 3 minutos
- Możesz przez 3 minuty biec bez wysiłku
- 你现在可以跑3分钟
-
-
- You already have a Spike Strip active in deployment
- Ty už mají Spike Strip aktivní při nasazení
- Ya tienes una Barrera de Clavos activada
-
- Du platzierst bereits ein Nagelband!
- Vous avez déjà une herse en train d'être deployée
- Hai già una striscia chiodata piazzata
- Você já tem um Tapete de Espinhos ativo
- Aktualnie masz rozłożoną kolczatkę
- 你已经部署了一个钉刺带。
-
-
- You can't refuel the vehicle while in it!
- Nemůžete natankovat z vozidla, když v něm!
- No puedes llenar tu vehiculo mientras estas adentro de él!
-
- Du kannst ein Fahrzeug nicht betanken während du dich darin befindest!
- Vous ne pouvez pas faire le plein du véhicule tout en étant à l'intérieur !
- Non puoi rifornire il veicolo di benzina mentre ci sei dentro!
- Você não pode abastecer o veículo enquanto dentro dele!
- Nie możesz zatankować pojazdu gdy w nim jesteś!
- 你不能在车里加油!
-
-
- This item isn't usable.
- Tato položka není použitelný.
- Este objeto no es utilizable.
-
- Dieser Gegenstand ist nicht benutzbar.
- Cet objet n'est pas utilisable.
- Questo oggetto è inutilizzabile.
- Esse item não é usável.
- Nie można użyć tej rzeczy.
- 这个物品不能使用。
-
-
-
-
- Processing Oil
- zpracování ropy
- Procesando Petróleo
-
- Öl wird verarbeitet...
- Raffinage de Pétrole
- Raffinando il Petrolio
- Processando Petróleo
- Rafinacja ropy
- 加工石油
-
-
- Cutting Diamonds
- řezání diamantů
- Cortando Diamantes
-
- Diamanten werden geschliffen...
- Taillage de diamant
- Rifinendo diamanti
- Lapidando Diamante
- Szlif diamentów
- 切割钻石
-
-
- Processing Opium
- zpracování Opium
- Procesando Opio
-
- Heroin wird verarbeitet...
- Traitement d'Héroïne
- Processando Eroina
- Processando Heroína
- Oczyszczanie heroiny
- 加工海洛因
-
-
- Casting Copper Ingots
- Casting měděných ingotů
- Fundiendo Lingotes de Cobre
-
- Fonte du Cuivre
- Kupfer wird verarbeitet...
- Processando in lingotti di Rame
- Processando Cobre
- Wytop miedzi
- 铸造铜锭
-
-
- Casting Iron Ingots
- Litiny ingoty
- Fundiendo Lingotes de Hierro
-
- Fonte du Fer
- Eisen wird verarbeitet...
- Processando Ferro
- Processando Ferro
- Wytop żelaza
- 铸造铁锭
-
-
- Processing Sand
- zpracování Písek
- Procesando Arena
-
- Sand wird verarbeitet...
- Fonte du Sable
- Processando Sabbia
- Processando Areia
- Topienie piasku
- 制作玻璃
-
-
- Processing Salt
- zpracování Salt
- Procesando Sal
-
- Salz wird verarbeitet...
- Traitement du Sel
- Processando Sale
- Refinando Sal
- Warzenie soli
- 制造食盐
-
-
- Processing Coca Leaves
- Zpracování listů koky
- Procesando Hojas de Coca
-
- Kokain wird verarbeitet...
- Traitement de Cocaïne
- Processando Cocaina
- Processando Cocaína
- Oczyszczanie kokainy
- 加工可卡因
-
-
- Processing Marijuana
- zpracování Marihuana
- Procesando Marihuana
-
- Marihuana wird verarbeitet...
- Traitement de Marijuana
- Processando Marijuana
- Processando Maconha
- Suszenie marihuany
- 加工大麻
-
-
- Mixing Cement
- Míchání Cement
- Mezclando Cemento
-
- Zement wird gemischt...
- Mélange de ciment
- Processando Cemento
- Misturando Cimento
- Mielenie cementu
- 制造水泥
-
-
- You need to stay within 10m to process.
- Musíte zůstat v rozmezí 10 m zpracovat.
- Debes estar a menos de 10m para procesar.
-
- Du musst innerhalb von 10m bleiben, um verarbeiten zu können.
- Vous devez rester à 10m pour traiter vos objets.
- Devi stare entro 10m per processare.
- Você precisa ficar a menos de 10m para processar.
- Musisz być w odległości 10 m aby przetwarzanie się odbyło.
- 您需要保持10米以内的距离。
-
-
- You have no inventory space to process your materials.
- Nemáš zásob prostor ke zpracování vašich materiálů.
- Vous n'avez pas de place pour traiter vos matériaux.
- Usted no tiene espacio en el inventario para procesar sus materiales.
- Non hai spazio nell'inventario per elaborare i materiali.
- Nie masz miejsca na przetwarzanie swoich zapasów materiałów.
- Você não tem espaço no inventário para processar seus materiais.
- У вас нет места инвентаря для обработки ваших материалов.
- Du hast keinen Platz im Inventar, um die Materialien zu verarbeiten.
- 你没有库存空间来处理你的物品。
-
-
- Only part of your materials could be processed due to reaching your maximum weight.
- Pouze část svých materiálů by mohla být zpracována z důvodu dosažení maximální váhu.
- Seule une partie de votre matériel pourrait être traité en raison de l'atteinte de votre poids maximum.
- Sólo una parte de los materiales se han podido procesar debido a alcanzar tu peso máximo.
- Solo una parte del tuo materiali possono essere trattati a causa di raggiungere il vostro peso massimo.
- Tylko część swoich materiałów może być przetwarzane ze względu na osiągnięcie maksymalnej wadze.
- Apenas uma parte de seus materiais puderam ser processados, devido o peso máximo ter sido atingido.
- Только часть ваших материалов может быть обработан из-за достижения вашего максимального веса.
- Nur ein Teil der Materialien konnte verarbeitet werden, sonst würde das maximale Gewicht erreicht werden.
- 只有部分材料可以加工,已达到你的最大重量。
-
-
- You need $%1 to process without a license!
- Musíte $%1 bez povolení ke zpracování!
- Necesitas $%1 para procesar sin licencia!
-
- Du brauchst $%1, um ohne eine Lizenz verarbeiten zu können!
- Vous avez besoin de $%1 pour traiter sans licence !
- Hai bisogno di $%1 per processare senza la dovuta licenza!
- Você precisa de R$%1 para processar sem licença!
- Musisz mieć $%1 aby przetworzyć bez odpowiedniej licencji
- 你没有加工许可所以需要 $%1 加工!
-
-
- You have processed %1 into %2
- Máte zpracovaný %1 do %2
- Has procesado %1 a %2
-
- Du hast %1 in %2 verarbeitet.
- Vous avez traité %1 en %2
- Hai processato %1 in %2
- Você trasformou %1 em %2
- Przetworzyłeś %1 na %2
- 你将 %1 加工为 %2
-
-
- You have processed %1 into %2 for $%3
- Máte zpracovaný %1 do %2 na $%3
- Has procesado %1 a %2 por $%3
-
- Du hast %1 für $%3 in %2 verarbeitet.
- Vous avez traité %1 en %2 pour $%3
- Hai processato %1 in %2 al costo di $%3
- Você trasformou %1 em %2 por R$%3
- Przetworzyłeś %1 na % za $%3
- 你将 %1 加工为 %2 花费 $%3
-
-
-
-
- Medics Online: %1
- Zdravotníci Online: %1
- Médicos en línea: %1
-
- Sanitäter online: %1
- Médecin en ligne : %1
- Medici Online: %1
- Médicos Online: %1
- Medycy Online: %1
- 在线的医疗人员:%1
-
-
- Medics Nearby: %1
- Zdravotníci v blízkosti:%1
- Médicos Cerca: %1
-
- Sanitäter in der Nähe: %1
- Médecin à proximité : %1
- Medici Vicini: %1
- Médicos por perto: %1
- Medycy w pobliżu: %1
- 附近的医疗人员:%1
-
-
- %1 is requesting EMS Revive.
- %1 požaduje EMS oživit.
- %1 esta pidiendo servicio médico.
-
- %1 benötigt medizinische Hilfe.
- %1 demande de l'aide du SAMU.
- %1 sta richiedendo l'intervento medico.
- %1 requisitou o resgate do SAMU
- %1 prosi o pomoc medyczną.
- %1 要求医疗救治。
-
-
- Respawn Available in: %1
- Respawn K dispozici v:%1
- Puedes reaparecer en: %1
-
- Réapparition disponible dans: %1
- Aufwachen verfügbar in: %1
- Respawn disponibile in: %1
- Respawn Disponível em: %1
- Odrodzenie możliwe za: %1
- 重生在: %1
-
-
- You can now respawn
- Nyní lze respawn
- Ya puedes reaparecer
-
- Du kannst jetzt aufwachen!
- Vous pouvez désormais réapparaître
- Puoi ora fare respawn
- Você pode dar respawn
- Możesz się odrodzić
- 现在你可以重生
-
-
- %1 has revived you and a fee of $%2 was taken from your bank account for their services.
- %1 oživil vy a poplatek ve výši $%2 byl převzat z bankovního účtu za své služby.
- %1 te a revivido y una cuota de $%2 a sido tomada de tu cuenta por sus servicios.
-
- %1 hat dich wiederbelebt und dafür eine Gebühr von $%2 von deinem Bankkonto eingezogen.
- %1 vous a réanimé, des frais de $%2 ont été transférés depuis votre compte en banque sur celui du médecin.
- %1 ti ha rianimato e sono stati prelevati $%2 dal tuo conto in banca per pagare la prestazione.
- %1 reviveu você e uma taxa de R$%2 foi cobrada da sua conta bancária para os serviços prestados.
- %1 pobrał opłatę w wysokości $%2 za reanimację i przywrócenie funkcji życiowych.
- %1 已经将你救治,从你的银行账户收取 $%2 的服务费。
-
-
- Someone else is already reviving this person
- Někdo jiný již užívají tuto osobu
- Alguien ya esta reviviendo a esta persona
-
- Jemand anderes belebt diese Person bereits wieder.
- Quelqu'un d'autre s'occupe déjà de cette personne
- Qualcun'altro sta già provando a rianimare questa persona
- Outro médico já está revivendo esse jogador
- Ktoś inny aktualnie reanimuje tę osobę
- 其他人已经在救治这个人了
-
-
- Reviving %1
- Oživení %1
- Reviviendo %1
-
- Wird wiederbelebt %1...
- Réanimation de %1
- Rianimando %1
- Revivendo %1
- Reanimacja %1
- 救治 %1
-
-
- This person either respawned or was already revived.
- Tato osoba buď respawned nebo již byl přijat.
- Esta persona ya reapareció o fue revivida.
-
- Cette personne a peut-être fait réapparition ou a déjà été réanimée.
- Diese Person ist entweder aufgewacht oder wurde bereits wiederbelebt.
- Questa persona è stata già rianimata o ha fatto respawn.
- Esse jogador já deu respawn ou já foi reanimado.
- Ta osoba wcześniej się odrodziła lub została reanimowana.
- 这个人重生或已经复活了。
-
-
- You have revived %1 and received $%2 for your services.
- Obdrželi jste %1 a získal $%2 za vaše služby.
- Has revivido a %1 y recivido $%2 por tus servicios.
-
- Du hast %1 wiederbelebt und $%2 für deine Dienste erhalten.
- Vous avez réanimé %1, vous avez reçu $%2 pour votre aide
- Hai rianimato %1 e hai ricevuto $%2 per la tua prestazione.
- Você reviveu %1 e recebeu R$%2 pelo seus serviços prestados.
- Reanimowałeś %1 i za uratowanie życia otrzymałeś $%2.
- 你已经救治了 %1 并得到 $%2 的服务费用。
-
-
- You got to far away from the body.
- Dostal jsi příliš daleko od těla.
- Te alejastes mucho del cuerpo.
-
- Du bist zu weit vom Körper entfernt.
- Vous êtes trop loin du corps.
- Sei andato troppo distante dal corpo.
- Você está muito distante do corpo.
- Jesteś za daleko od ciała.
- 你离尸体太远。
-
-
-
-
- The robbery has failed due to unknown reasons
- Lupič selhalo kvůli neznámých důvodů
- El robo fallo por razones desconocidas
-
- Der Raub ist aus unbekannten Gründen fehlgeschlagen.
- Le vol de la réserve fédérale a échoué pour des raisons inconnues
- La rapina è fallita per cause sconosciute
- O roubo falhou por uma causa desconhecida.
- Napad się nie udał z niewiadomych powodów.
- 由于不明原因,抢劫失败了。
-
-
- $%1 was stolen from the robbery on the federal reserve
- $%1 byl ukraden z loupeže na federální rezervy
- $%1 fue robado de la reserva federal
-
- $%1 wurden von den Räubern aus der Zentralbank gestohlen.
- $%1 a été volé à la réserve fédérale.
- $%1 sono stati rubati durante la rapina alla banca
- R$%1 foi roubado da Reserva Federal.
- $%1 ukradziono z Rezerwy Federalnej
- $%1 从联邦储备银行中被抢劫
-
-
- This vault is already being robbed by someone else
- Tato klenba je již okraden někým jiným
- La bóveda ya esta siendo robada por alguien mas
-
- Ce coffre est déjà en train d'être pillé par quelqu'un d'autre.
- Der Tresor wird bereits von jemand anderem ausgeraubt.
- Questo Caveau sta venendo rapinando da qualcun'altro
- Esse cofre já está sendo roubado por outro jogador.
- Skarbiec jest aktualnie rabowany przez inną osobę.
- 这个金库已经被别人抢劫了
-
-
- This vault was already robbed recently
- Tato klenba byla již nedávno okraden
- La bóveda fue robada muy recientemente
-
- Der Tresor wurde bereits vor Kurzem ausgeraubt.
- Ce coffre a déjà été pillé récemment
- Questo Caveau è stato svaligiato di recente
- Esse cofre já foi assaltado recentemente.
- Skarbiec został niedawno zrabowany
- 这个金库最近被抢了
-
-
-
-
- Garage
- Garáž
- Garaje
-
- Garage
- Garage
- Garage
- Garagem
- Garaż
- 载具仓库
-
-
- Your Vehicles
- Vaše Vozidla
- Tus vehículos
-
- Deine Fahrzeuge
- Vos véhicules
- I tuoi Veicoli
- Seus Veículos
- Twój pojazd
- 你的载具
-
-
- Vehicle Information
- Informace o vozidle
- Información de Vehículos
-
- Fahrzeuginformationen
- Carte grise du vehicule
- Informazioni Veicolo
- Informações do Veículo
- Informacja o pojeździe
- 载具信息
-
-
- Automatically reveals nearest objects within 15m, turn this setting off if you are experiencing performance issues.
- Automaticky odhaluje nejbližší objektů v rámci 15m, toto nastavení vypnete, pokud jste se setkali s problémy s výkonem.
- Automáticamente revela los objetos más cercanos dentro de 15m, apaga esta opción si estas teniendo problemas de performación.
-
- Zeigt automatisch nächstgelegene Objekte innerhalb von 15m an, deaktiviere es, wenn du Leistungprobleme hast.
- Révèle automatiquement les objets les plus proches au sein de 15m, désactiver ce paramètre si vous rencontrez des problèmes de performance.
- Rivela automaticamente gli oggettivi vicini entro 15m, disattiva quest'impostazione se riscontri dei problemi di perfomance di sistema.
- Revela objetos à 15m, desabilite essa opção se está tendo problemas de performance.
- Automatycznie wykrywa najbliższe obiekty w promieniu 15m, wyłącz tę opcję jeśli masz problemy z wydajnością
- 自动显示1500米以内的最近对象,如果你遇到性能问题,请将此设置关闭。
-
-
- Switch side-channel mode, turn this off if you don't want to talk with players from your side.
- Přepnout do režimu side-channel, tuto funkci vypnout, pokud nechcete mluvit s hráči z vaší strany.
- Activer le canal camp, désactiver cette fonction si vous ne voulez pas parler avec des joueurs de la même faction que vous.
- Habilita/Deshabilita el SideChannel, apaga esto si no quieres hablar con jugador de tu lado.
- Interruttore modalità side-channel, disattivare questa funzione se non si vuole parlare con i giocatori da parte vostra.
- Przełącznik trybu side-channel, to wyłączyć, jeśli nie chce rozmawiać z graczami z boku.
-
- Habilita/Desabilita o side-channel, desabilite caso você não queira conversar com os jogadores da sua facção.
- Sidechat umschalten. Ausschalten, wenn du nicht mit Spielern deiner Fraktion sprechen möchtest.
- 切换侧通道模式,如果你不想和你身边的玩家交谈,关掉这个频道。
-
-
- Switch player's broadcast mode, turn this off if you don't want to see any broadcast from other players.
-
- Activer/Désactiver les annonces. Désactivez ceci si vous ne voulez voir aucune annonce d'autres joueurs.
- Habilitar/Deshabilitar transmisiones, deshabilita esto si no quieres ver transmisiones de otros jugadores.
-
-
-
- Habilita/Desabilita as transmissões dos jogadores, desabilite caso você não queira ver as transmissões dos outros jogadores.
- Broadcast umschalten. Ausschalten, wenn du keine Broadcasts von anderen Spielern erhalten möchtest.
- 切换玩家的广播模式,如果你不想看到其他玩家的广播,就关掉它。
-
-
- Controls whether or not players will have name tags above their head.
- Přepnout do režimu side-channel, tuto funkci vypnout, pokud nechcete mluvit s hráči z vaší strany.
- Controla si los jugadores tienen nombres (tags) sobre sus cabezas.
-
- Contrôler si les joueurs auront ou non leurs noms au dessus de leur tête
- Namensschilder umschalten. Ausschalten, wenn du keine Namensschilder über den Spielerköpfen sehen möchtest.
- Controlla la visualizzazione delle tags sopra la testa dei giocatori
- Controla se os jogadores terão os nomes em suas cabeças.
- Kontroluje czy gracze będą mieli nad głowami swoje Tagi z nazwą
- 控制球员是否有名字标签在他们的头上方。
-
-
- Shop Stock
- Obchod Sklad
- Inventario de la Tienda
-
- Lagerbestand
- Boutique
- Stock Negozio
- Estoque
- Sklep oferta
- 商店库存
-
-
-
-
- Player Interaction Menu
- Hráč Interakce Menu
- Menu de Interacción de Jugadores
-
- Spielerinteraktionsmenü
- Menu d'interaction du Joueur
- Menu d'interazione Giocatore
- Menu de Interação do Jogador
- Menu Interakcji
- 玩家互动菜单
-
-
- Put in vehicle
- Vložíme do vozidla
- Poner en vehículo
-
- Ins Fahrzeug setzen
- Embarquer
- Metti nel Veicolo
- Colocar no Veículo
- Włóż do pojazdu
- 押上载具
-
-
- Un-Restrain
- živelný
- Quitar Esposas
-
- Freilassen
- Démenotter
- Togli Manette
- Soltar
- Rozkuj
- 解开手铐
-
-
- Check Licenses
- Zkontrolujte licence
- Revisar Licencias
-
- Lizenzen überprüfen
- Vérifier Licences
- Controlla Licenze
- Verificar Licenças
- Sprawdź licencje
- 检查许可证
-
-
- Search Player
- Hledat hráče
- Buscar Jugadores
-
- Spieler durchsuchen
- Fouiller Joueur
- Ricerca Giocatore
- Revistar Jogador
- Przeszukaj
- 搜身
-
-
- Stop Escorting
- Zastavit doprovázet
- Parar de Escoltar
-
- Eskortieren stoppen
- Arrêter Escorte
- Ferma Scorta
- Parar de Escoltar
- Przestań eskortować
- 停止押送
-
-
- Escort Player
- Escort Player
- Escoltar Jugador
-
- Spieler eskortieren
- Escorter Joueur
- Scorta Giocatore
- Escoltar Jogador
- Eskortuj
- 押送
-
-
- Ticket Player
- Ticket Player
- Dar Tiquete
-
- Strafzettel ausstellen
- Amende Joueur
- Multa Giocatore
- Multar Jogador
- Wystaw mandat
- 开据罚单
-
-
- Seize Weapons
- zabavili zbraně
- Confiscar Armas
-
- Waffen beschlagnahmen
- Saisir les armes
- cogliere Armi
- Apreender Armas
- Chwytaj broń
- 没收武器
-
-
- Send to jail
- Poslat do vězení
- Encarcelar
-
- Ins Gefängnis stecken
- Envoyer en prison
- Arresta
- Enviar p/ Prisão
- Do więzienia
- 送进监狱
-
-
- Repair Door
- oprava dveří
- Reparar Puerta
-
- Tür reparieren
- Réparer la porte
- Ripara porta
- Consertar Porta
- Napraw drzwi
- 检修门
-
-
- Open / Close
- Otevřít zavřít
- Abrir / Cerrar
-
- Öffnen / Schließen
- Ouvrir / Fermer
- Apri / Chiudi
- Abrir / Fechar
- Otwórz / Zamknij
- 打开/关闭
-
-
- Break down door
- Rozebrat dveře
- Romper Puerta
-
- Tür aufbrechen
- Forcer la porte
- Sfonda Porta
- Quebrar Porta
- Wyważ drzwi
- 打破门
-
-
- Garage
-
-
-
- Garage
- Garage
-
-
-
- 车库
-
-
- You can buy a garage at this house for $%1. You must first purchase the house!
-
-
-
- Du könntest eine Garage an diesem Haus für $%1 kaufen. Du müsstest aber zuerst das Haus kaufen!
- Vous pouvez acheter un garage dans cette maison pour $%1. Vous devez d'abord acheter la maison !
-
-
-
- 你可以在这所房子里买一个 $%1 的仓库。你必须先买房子!
-
-
- Search house
- Vyhledávání dům
- Buscar casa
-
- Haus durchsuchen
- Fouiller la maison
- Cerca Casa
- Vasculhar a Casa
- Przeszukaj dom
- 搜索房子
-
-
- Lock up house
- Zamknout dům
- Cerrar la casa con llave
-
- Haus abschliessen
- Fermer la maison
- Chiudi Casa
- Trancar a Casa
- Zamknij dom
- 锁上房子
-
-
- Buy House
- Koupit dům
- Comprar casa
-
- Haus kaufen
- Acheter la maison
- Compra Casa
- Comprar a Casa
- Kup dom
- 买房子
-
-
- Buy House Garage
-
-
-
- Garage kaufen
- Acheter le Garage de cette Maison
-
-
-
- 买房子的仓库
-
-
- Sell Garage
- Navrhujeme Garáž
- Vender Garaje
-
- Garage verkaufen
- Vendre le garage
- Vendi Garage
- Vender Garagem
- Sprzedaj garaż
- 出售仓库
-
-
- Remove Container
- Nádobu
- Remover Contenedor
- rimuovere Container
- Wyjąć pojemnik
-
- Supprimer le conteneur
- Remover Caixa
- Container entfernen
- 删除存储箱
-
-
- Garage
- Garáž
- Garaje
-
- Garage
- Garage
- Garage
- Garagem
- Garaż
- 仓库
-
-
- Store Vehicle
- Store Vehicle
- Guardar Vehiculo
-
- Fahrzeug parken
- Ranger le véhicule
- Parcheggia Veicolo
- Guardar Veículo
- Zaparkuj pojazd
- 载具商店
-
-
- Sell House
- prodat dům
- Vender Casa
-
- Haus verkaufen
- Vendre la maison
- Vendi Casa
- Vender Casa
- Sprzedaj dom
- 卖房子
-
-
- Unlock Storage
- odemknout úložiště
- Abrir Almacenamiento
-
- Lagerplatz aufschliessen
- Déverrouiller l'inventaire
- Sblocca contenitori
- Destrancar Caixa
- Odblokuj pojemnik
- 解锁存储
-
-
- Lock Storage
- zámek Storage
- Cerrar Almacenamiento con Llave
-
- Lagerplatz abschliessen
- Verrouiller l'inventaire
- Blocca contenitori
- Trancar Caixa
- Zablokuj pojemnik
- 锁定存储
-
-
- Turn Lights Off
- Blinkrů Off
- Apagar Luces
-
- Licht ausschalten
- Lumières éteintes
- Spegni luci
- Ligar as Luzes
- Włącz światło
- 把灯关掉
-
-
- Turn Lights On
- Turn zapnutá světla
- Prender Luces
-
- Licht anschalten
- Lumières allumées
- Accendi luci
- Apagar as Luzes
- Wyłącz światło
- 把灯打开
-
-
-
-
- Vehicle Interaction Menu
- Interakce vozidel Menu
- Menu de interacción de Vehículo
-
- Fahrzeuginteraktionsmenü
- Menu Interaction du Véhicule
- Menu d'interazione Veicolo
- Menu do Veículo
- Menu Interakcji pojazdu
- 载具交互菜单
-
-
- Unflip Vehicle
- Unflip Vehicle
- Dar la Vuelta al Vehículo
-
- Fahrzeug umdrehen
- Retourner Véhicule
- Raddrizza veicolo
- Desvirar Veículo
- Ustaw pojazd
- 翻转载具
-
-
- Get In Vehicle
-
-
-
- Monter dans le véhicule
- Gehe ins Fahrzeug
-
-
-
- 进入载具
-
-
- Push Boat
- tlačit loď
- Empujar Bote
-
- Boot schieben
- Pousser bateau
- Spingi Barca
- Empurrar Barco
- Popchnij
- 推船
-
-
- Repair Vehicle
- opravy vozidel
- Reparar Vehículo
-
- Fahrzeug reparieren
- Réparer Véhicule
- Ripara Veicolo
- Consertar Veículo
- Napraw
- 修理载具
-
-
- Registration
- Registrace
- Registración
-
- Eigentümer
- Enregistrement
- Registrazione
- Registro
- Zarejestruj
- 登记信息
-
-
- Search Vehicle
- Vyhledávání Vehicle
- Buscar Vehículo
-
- Fahrzeug durchsuchen
- Fouiller Véhicule
- Cerca Veicolo
- Vasculhar Veículo
- Przeszukaj pojazd
- 搜查载具
-
-
- Search Container
- Vyhledávání Container
- Buscar Contenedor
- Ricerca Container
- Szukaj Kontener
-
- Fouiller le conteneur
- Vasculhar Container
- Container durchsuchen
- 搜索容器
-
-
- Pullout Players
- Pull Out Hráči
- Sacar Jugadores
-
- Aus Fahrzeug ziehen
- Sortir les passagers
- Estrai Giocatore
- Retirar Jogadores
- Wyciągnij graczy
- 从载具拉出玩家
-
-
- Impound Vehicle
- úschovy Vehicle
- Confiscar Vehículo
-
- Fahrzeug beschlagnahmen
- Mise en fourrière
- Sequestra Veicolo
- Apreender Veículo
- Usunń pojazd
- 扣押载具
-
-
- Mine from device
- Mine ze zařízení
- Minar desde dispositivo
-
- Vom Fahrzeug abbauen
- Dispositif de minage
- Piazza mine dal veicolo
- Minerar
- Uruchom wydobycie
- 矿山设备
-
-
- Store your vehicle
- Ukládat vaše vozidlo
- Guardar tu Vehículo
- Conservare il veicolo
- Przechowuj swój pojazd
-
- Ranger votre véhicule
- Guardar seu veículo
- Fahrzeug einparken
- 存储你的载具
-
-
- Store
- Obchod
- Guardar
- Negozio
- Sklep
-
- Ranger
- Guardar
- Fahrzeughändler
- 商场
-
-
- Clean
- Čistý
- Limpiar
- Pulito
- Czysty
-
- Nettoyer
- Limpar
- Reinigen
- 清洁
-
-
- This vehicle is NPC protected.
- Toto vozidlo je chráněno NPC.
- Ce véhicule est protégé par un PNJ.
- Este vehículo esta protegido.
- Questo veicolo è protetto NPC.
- Pojazd ten jest chroniony NPC.
-
- Esse veículo está protegido.
- Dieses Fahrzeug ist NPC-geschützt.
- 这载具是NPC保护的。
-
-
-
-
- Sending request to server for player information UID [%1]
- Odesílání požadavku na server pro informační hráč UID [%1]
- Pidiendo informacion del UID de [%1] del server
-
- Frage Spieler Informationen zu UID [%1] ab...
- Envoi de la requête au serveur pour obtenir des informations lecteur UID [%1]
- Invio richiesta al server per le informazioni del giocatore UID [%1]
- Obtendo informações do UID [%1] no servidor
- Wysyłam żądanie do serwera po informację o fraczu UID [%1]
- 发送请求到服务器玩家信息UID [%1]
-
-
- The server didn't find any player information matching your UID, attempting to add player to system.
- Server nenašel žádné informace hráče nalezen.Chcete UID, pokusu o přidání hráče do systému.
- No se encontro ninguna información con tu UID, se esta creando un nuevo jugador.
-
- Der Server hat keine Spieler Informationen zu deiner UID gefunden, versuche Spieler ins System hinzuzufügen...
- Le serveur n'a pas trouvé toutes les informations de lecteur correspondant à votre UID, tentative d'ajout du joueur dans le système.
- Il server non ha trovato alcuna informazione sul giocatore con il tuo UID, tentativo di aggiunta del giocatore al sistema.
- O servidor não encontrou nenhuma informação correspondente ao seu UID, tentando adicionar jogador ao sistema.
- Serwer nie odnalazł informacji zgodnych z UID, dodaję gracza do bazy danych.
- 服务器没有找到任何玩家信息匹配你的UID,试图添加播放器系统。
-
-
- There was an error in trying to setup your client.
- Došlo k chybě při pokusu o nastavení vašeho klienta.
- Hubo un error en tratando de preparar tu cliente.
-
- Es gab einen Fehler beim Versuch, deinen Clienten einzurichten!
- Il y avait une erreur en essayant de configurer votre client.
- C'è stato qualche errore nel cercare di inizializzare il tuo client
- Ocorreu um erro ao tentar configurar o seu cliente.
- Wystąpił błąd w trakcie ustawiania klienta
- 试图设置客户机时出错。
-
-
- Received request from server... Validating...
- Obdržení požadavku ze serveru ... Ověřování ...
- Pedido del server recibido... Validando...
-
- >Empfange Daten vom Server... Überprüfe...
- Demande reçue du serveur... Validation...
- Ricevuta richiesta dal server... Convalida...
- Pedido recebido do servidor... Validando...
- Otrzymano żądanie serwera ... sprawdzam
- 接收来自服务器的请求...验证...
-
-
- You have already used the sync option, you can only use this feature once every 5 minutes.
- Již jste použili možnosti synchronizace, můžete použít pouze tuto funkci jednou za 5 minut.
- Ya has usado la función de sincronización, solo la puedes usar una vez cada 5 minutos.
-
- Du hast bereits deine Daten gespeichert, diese Funktion kann nur einmal alle 5 Minuten verwendet werden.
- Vous avez déjà utilisé l'option de synchronisation, vous ne pouvez utiliser cette fonction une fois toutes les 5 minutes.
- Hai già utilizzato la funzione di salva dati, puoi usare quest'opzione solo una volta ogni 5 minuti.
- Você já usou a opção de sincronização, você só pode usar esse recurso uma vez a cada 5 minutos.
- Użyłeś niedawno opcji synchronizacji, możesz jej używać maksymalnie co 5 minut.
- 你已经使用了同步数据,你只能每隔5分钟使用一次这个功能。
-
-
- Syncing player information to the server.\n\nPlease wait up to 20 seconds before leaving.
- Synchronizace informace o hráčích na serveru. \ O \ Prosím, vyčkejte až 20 sekund před odjezdem.
- Se esta sinconizando tu información con el server.\n\nPor favor espera 20 segundos antes de salir del server.
-
- Speichere deine Spieler-Informationen auf dem Server. \n\nBitte warte bis zu 20 Sekunden vor dem Verlassen.
- Synchronisation des informations de joueur sur le serveur.\n\nS'il vous plaît, veuillez attendre 20 secondes avant de vous déconnecter.
- Salvando le informazioni giocatore sul server.\n\nAttendere fino a 20 secondi prima di abbandonare.
- Sincronizando informação do jogador com o servidor.\n\n Por favor aguarde 20 segundos antes de sair.
- Synchronizuję informację z serwere, .\n\nProszę poczekać ok 20 sekund przed opuszczeniem serwera
- 同步玩家数据到服务器。\n\n请等待20秒后再下线。
-
-
-
-
- Because you robbed the bank you can't use the ATM for %1 minutes.
- Protože jste vyloupil banku nelze použít bankomat pro%1 minut.
- Porque robastes el banco no puedes usar el ATM por %1 minutos.
-
- Da du die Zentralbank ausgeraubt hast, kannst du für %1 Minuten keinen Bankomaten benutzen.
- Vous avez pillé la banque, vous ne pouvez pas utiliser de DAB pendant %1 minutes.
- Avendo appena rapinato la banca non puoi utilizzare il Bancomat per %1 minuti.
- Você não pode usar o ATM por %1 minuto(s), pois você assaltou o banco.
- Z uwagi na to że okradłeś bank nie możesz korzystać z bankomatu przez najbliższe %1 minut.
- 因为你抢了银行,你不能在 %1 分钟内使用自动取款机。
-
-
- You didn't choose the clothes you wanted to buy.
- Vy nevybral oblečení, které chtěl koupit.
- No elegistes lo que quieres comprar.
-
- Du hast die Kleidung, die du kaufen wolltest, nicht ausgewählt.
- Vous n'avez pas choisi les vêtements que vous vouliez acheter.
- Non hai selezionato i vestiti che vuoi comprare.
- Você não selecionou a roupa que deseja comprar.
- Nie wybrałeś ubrań które chcesz kupić.
- 你没有选择你想买的衣服。
-
-
- Sorry sir, you don't have enough money to buy those clothes.
- Je nám líto, pane, nemáte dost peněz na nákup ty šaty.
- No tienes suficiente dinero.
-
- Entschuldigung, du hast nicht genug Geld, um diese Kleidung zu kaufen.
- Désolé monsieur, vous n'avez pas assez d'argent pour acheter ces vêtements.
- Spiacente ma non hai fondi a sufficienza per comprare questi vestiti.
- Desculpe senhor, você não tem dinheiro para pagar. Volte sempre.
- Przepraszam, ale nie masz tyle pieniędzy aby kupić to ubranie.
- 对不起,你没有足够的钱去买那些衣服。
-
-
- Total:
- Celkový:
- Total:
-
- Gesamt:
- Total :
- Totale:
- Total:
- Razem:
- 总额:
-
-
- No Selection
- žádný výběr
- No Seleccionastes
-
- Keine Auswahl!
- Aucune Sélection
- Nessuna Selezione
- Nada Selecionado
- Nie wybrano
- 没有选择
-
-
- No Display
- Ne Displej
- No Display
-
- Keine Anzeige!
- Pas d'affichage
- No Display
- Sem exibir
- Brak widoku
- 没有显示
-
-
- There are no vehicles near to sell.
- Nejsou žádné vozy blízko k prodeji.
- No hay Vehículos cercanos para vender.
-
- Es ist keine Fahrzeug zum Verkaufen in der Nähe.
- Il n'y a pas de véhicules à proximité à vendre
- Nelle vicinanze non ci sono veicoli da vendere.
- Não existem veículos para serem vendidos.
- W pobliżu nie ma pojazdu do sprzedania.
- 附近没有载具出售。
-
-
- There was a problem opening the chop shop menu.
- Tam bylo otevření nabídky kotleta obchod problém.
- Hubo un problema abriendo el menu de la tienda.
-
- Es gab ein Problem beim Öffnen des Schrotthändler Menüs.
- Il y a eu un problème en ouvrant le menu de revente de véhicule.
- C'è stato un problema aprendo il menu del ricettatore
- Ocorreu um problema abrindo o menu, tente novamente.
- Powstał problem przy otwieraniu menu dziupli
- 打开黑车店菜单有问题。
-
-
- Selling vehicle please wait...
- Prodejní vozidlo čekejte prosím ...
- Vendiendo vehículo, por favor espera...
-
- Verschrotte Fahrzeug, bitte warten...
- Vente du véhicule, veuillez patienter...
- Vendendo il veicolo, attendere prego...
- Vendendo o veiculo, aguarde....
- Sprzedaję pojazd proszę czekać ...
- 出售载具请稍候...
-
-
- You need to be a civilian to use this store!
- Musíte být civilní použít tento obchod!
- Necesitas ser un civil para usar esta tienda!
-
- Du musst ein Zivilist sein, um dieses Geschäft nutzen zu können!
- Vous devez être un civil pour utiliser ce magasin !
- Devi essere un civile per utilizzare questo negozio!
- Você tem que ser um cívil para user essa loja!
- Musisz być cywilem aby móc kupować w tym sklepie!
- 你需要成为平民才能使用这家商店!
-
-
- You need to be a cop to use this store!
- Musíte být policista použít tento obchod!
- Necesitas ser policía para usar esta tienda!
-
- Du musst ein Polizist sein, um dieses Geschäft nutzen zu können!
- Vous devez être policier pour utiliser ce magasin !
- Devi essere un poliziotto per utilizzare questo negozio!
- Você tem que ser um policial para usar essa loja!
- Musisz być policjantem aby kupować w tym sklepie!
- 你需要当警察来使用这家商店!
-
-
- You don't have rebel training yet!
- Nemáte rebelů výcvik ještě!
- No tienes Entrenamiento Rebelde!
-
- Du hast keine Rebellenausbildung absolviert!
- Vous n'avez pas encore d'entraînement rebelle !
- Devi essere ribelle per poter utilizzare questo negozio!
- Você não tem Treinamento Rebelde!
- Nie posiadasz treningu rebelianta!
- 你还没有进行叛军训练!
-
-
- You need a Diving license to use this shop!
- Potřebujete licenci potápění použít tento obchod!
- Necesitas una licencia de buceo para usar esta tienda!
-
- Du benötigst einen Taucherschein, um dieses Tauchergeschäft nutzen zu können!
- Vous devez avoir votre diplôme de plongée pour utiliser ce magasin !
- Ti serve la licenza di pesca per usare questo negozio!
- Você precisa de uma Licença de Mergulho para usar essa loja!
- Nie posiadasz licencji nurka aby kupować w tym sklepie!
- 你需要一张潜水执照才能使用这家商店!
-
-
- You need a %1 to buy from this shop!
- Potřebujete %1 koupit od tomto obchodě!
- Necesitas un %1 para comprar algo de esta tienda!
-
- Du benötigst eine %1, um dieses Geschäft nutzen zu können!
- Vous avez besoin de %1 pour acheter dans ce magasin !
- Hai bisogno di %1 per comprare da questo negozio!
- Você precisa de %1 para comprar nessa loja!
- Potrzebujesz %1 by kupować w tym sklepie!
- 你需要从这家商店买 %1!
-
-
- Clothing
- Oblečení
- Ropa
-
- Kleidung
- Tenues
- Abiti
- Roupas
- Odzież
- 服装
-
-
- Hats
- klobouky
- Sombreros
-
- Kopfbedeckungen
- Chapeaux
- Copricapi
- Chapéus
- Czapki
- 帽子
-
-
- Glasses
- Brýle
- Lentes
-
- Brillen
- Lunettes
- Occhiali
- Óculos
- Okulary
- 眼镜
-
-
- Vests
- vesty
- Chalecos
-
- Westen
- Gilets
- Vesti
- Coletes
- Kamizelki
- 背心
-
-
- Backpack
- Batoh
- Mochillas
-
- Rucksack
- Sacs à dos
- Zaini
- Mochilas
- Plecaki
- 背包
-
-
- There is currently a car there.
- Tam je v současné době auto.
- Actualmente hay un carro ahi.
-
- Es steht bereits ein Fahrzeug dort.
- Il y a actuellement une voiture.
- C'è già un veicolo qui.
- Há um veiculo atualmente no respawn.
- Aktualnie jest tam samochód.
- 目前有一载具在那里。
-
-
- You do not have enough money on you or in your bank to get your car back.
- Nemáte dostatek peněz na vás nebo ve vaší bance, aby si své auto zpátky.
- No tienes suficiente dinero para recuperar tu carro.
-
- Du hast nicht genug Geld bei dir oder auf dem Bankkonto, um dein Auto auslösen zukönnen.
- Vous n'avez pas assez d'argent sur vous ou dans votre compte en banque pour récupérer votre voiture.
- Non hai abbastanza fondi con te o nel tuo conto in banca per poter ritirare il tuo veicolo.
- Você não tem dinheiro suficiente em sua conta bancária para obter seu veiculo.
- Nie masz tyle pieniędzy na koncie aby wyciągnąć samochód.
- 你没有足够的钱在银行或你的身上。
-
-
- You have unimpounded your %1 for $%3
- Jste unimpounded svůj %1 na $%3
- Has desembargado tu %1 por $%3
-
- Du hast deinen %1 für $%3 ausgelöst.
- Vous avez sorti votre %1 pour $%3
- Hai ritirato dal sequestro il tuo %1 al costo di $%3
- Você liberou %1 for R$%3
- Przywróciłeś swój %1 za $%3
- 你为 %1 花费 $%3
-
-
- You did not pick a vehicle!
- Vy nevybral vozidlo!
- No has selecionado un vehículo!
-
- Du hast kein Fahrzeug ausgewählt!
- Vous n'avez pas choisi de véhicule !
- Non hai selezionato un veicolo!
- Você não conseguiu roubar o veiculo!
- Nie wybrałeś pojazdu!
- 你没有选择一载具!
-
-
- You do not have enough cash to purchase this vehicle.\n\nAmount Lacking: $%1
- Nemáte dostatek peněz na koupi tohoto vozidla \n\nAmount Postrádat: $%1
- No tienes suficiente dinero para comprar este vehículo.\n\nFalta: $%1
-
- Du hast nicht genug Geld, um das Fahrzeug zu kaufen.\n\nFehlender Betrag: $%1
- Vous n'avez pas assez d'argent pour acheter ce véhicule \n\nArgent Manquant: $%1
- Non hai fondi sufficienti per comprare questo veicolo.\n\nTi mancano: $%1
- Você não tem dinheiro suficiente para comprar esse veiculo.\n\nFaltam: R$%1
- Nie masz tyle pieniędzy by kupić ten pojazd.\n\nBrakuje: $%1
- 你没有足够的现金购买这载具。\n\n缺少资金: $%1
-
-
- You do not have the required license and/or level!
- Nemáte požadovanou licenci!
- No tienes la licencia requerida!
-
- Du besitzt den benötigten Führerschein / Rang nicht!
- Vous n'avez pas la licence requise !
- Non hai la licenza richiesta per l'acquisto!
- Você não tem a licença necessária!
- Nie posiadasz odpowiedniej licencji!
- 你没有所需的许可证和/或级别!
-
-
- There is a vehicle currently blocking the spawn point
- Tam je vozidlo v současné době blokuje potěr bod
- Hay un vehículo bloqueando el punto de Spawn.
-
- Ein Fahrzeug blockiert gerade den Spawnpunkt.
- Il y a actuellement un véhicule qui bloque le point de spawn
- C'è già un veicolo che blocca la zona di spawn
- Existe um veiculo bloquenado a area de respaw
- Inny pojazd blokuje miejsce odrodzenia pojazdów
- 目前有一载具挡住了生成点。
-
-
- You bought a %1 for $%2
- Koupil sis %1 pro $%2
- Comprastes %1 por $%2
-
- Du kaufst eine(n) %1 für $%2.
- Vous avez acheté un %1 pour $%2
- Hai comprato un %1 al costo di $%2
- Você comprou %1 por R$%2
- Kupiłeś %1 za $%2
- 你买了一个 %1 花费 $%2
-
-
- You rented a %1 for $%2
- Pronajali jste si %1 za $%2
- Alquiló un %1 por $%2
- Вы арендовали %1 за $%2
- Sie haben %1 für $%2 gemietet
- Vous avez loué un %1 pour $%2
- Hai noleggiato un %1 per $%2
- Você alugou um %1 por $%2
- Wypożyczyłeś %1 za $%2
- 您以 $%2 的价格租了一个 %1
-
-
- Rental Price:
- Pronájem Cena:
- Precio de Renta:
-
- Mietpreis:
- Prix de location :
- Costo Noleggio:
- Alugar:
- Wypożyczenie:
- 租赁价格:
-
-
- Ownership Price:
- Vlastnictví Cena:
- Precio de Compra:
-
- Kaufpreis:
- Prix d'achat :
- Costo Acquisto:
- Comprar:
- Kupno:
- 所有权价格:
-
-
- Max Speed:
- Maximální rychlost:
- Máxima Velocidad:
-
- Max. Geschwindigkeit:
- Vitesse Max :
- Velocità Max:
- Velocidade Máxima:
- Prędkość:
- 最大速度:
-
-
- Horse Power:
- Koňská síla:
- Caballos de Fuerza:
-
- Pferdestärken:
- Puissance en chevaux :
- Cavalli:
- Cavalos de Força:
- Moc:
- 马力:
-
-
- Passenger Seats:
- Sedadla pro cestující:
- Asientos de Pasajeros:
-
- Passagierplätze:
- Sièges passager :
- Sedili passeggeri:
- Assentos:
- Ilość miejsc:
- 乘客座位:
-
-
- Trunk Capacity:
- Zavazadlový prostor Kapacita:
- Capacidad de Maletero:
-
- Kofferraumgröße:
- Capacité du coffre :
- Capacità Inventario:
- Capacidade do Inventário:
- Pojemność bagażnika:
- 后备箱容积:
-
-
- Fuel Capacity:
- Palivo Kapacita:
- >Capacidad de Combustible:
-
- Tankgröße:
- Capacité du réservoir :
- Capacità Serbatoio:
- Capacidade do Reservatório:
- Pojemność baku:
- 燃料容量:
-
-
- Armor Rating:
- Armor Hodnocení:
- Clasificación de Armadura:
-
- Panzerungsbewertung:
- Blindage :
- Resistenza:
- Resistência:
- Pancerz
- 护甲值:
-
-
- Retrieval Price:
- Retrieval Cena:
- Precio de Recuperación:
-
- Einstellpreis:
- Prix de sortie :
- Costo di ritiro:
- Preço para Recuperar:
- Koszt wyciągnięcia:
- 检索价格:
-
-
- Sell Price:
- Prodejní cena:
- Precio de Venta:
-
- Verkaufspreis:
- Prix de vente :
- Costo di vendita:
- Preço de Venda
- Cena sprzedaży:
- 出售价格:
-
-
- Color:
- Barva:
- Color:
-
- Farbe:
- Couleur :
- Colore:
- Cor:
- Kolor
- 颜色:
-
-
- You are not allowed to use this shop!
- Ty jsou není dovoleno používat tento obchod!
- No tienes permiso de usar esta tienda!
-
- Du bist nicht befugt, dieses Geschäft zu benutzen!
- Vous n'êtes pas autorisé à utiliser cette boutique !
- Non sei autorizzato ad usare questo negozio!
- Você não está autorizado a utilizar essa loja!
- Nie jesteś uprawniony do używania tego sklepu!
- 不许你使用这家商店!
-
-
- You need to select an item to buy.
- Je třeba vybrat položku, kterou chcete koupit.
- Debes selecionar un objeto para comprar.
-
- Du musst einen Gegenstand auswählen, um ihn zu kaufen.
- Vous devez sélectionner un objet pour l'acheter.
- Seleziona un oggetto per poterlo comprare.
- Você precisa selecionar um item para comprar.
- Musisz zaznaczyć co chcesz kupić.
- 你需要选择要购买的物品。
-
-
- You didn't enter an actual number
- Nezadal jste skutečný počet
- No metistes un numero real
-
- Du hast keine echte Zahl eingegeben.
- Vous n'avez pas saisi un nombre réel
- Non hai inserito correttamente un numero
- Você não digitou um número válido.
- Nie podałeś aktualnego numeru
- 你没有输入一个正确的数字
-
-
- You don't have that many items to sell!
- Nemusíte, že mnoho položek k prodeji!
- No tienes tantos objetos!
-
- Du hast nicht so viele Gegenstände zum Verkaufen!
- Vous n'avez pas autant d'objets à vendre !
- Non hai tutti quegli oggetti da vendere!
- Você não tem todos esse items para vender
- Nie masz tak dużo rzeczy do sprzedania!
- 你没有那么多物品可以出售!
-
-
- The gang has enough funds to pay for this, would you like to pay with the gangs funds or your own?
- Gang má dostatek finančních prostředků na zaplacení za to, byste chtěli platit fondů bandy nebo sami?
- Tu pandilla tiene suficiente dinero para pagar esto, quieres pagar con ese dinero o el tuyo?
-
- Die Gang hat genügend Geld, um dafür zu zahlen. Willst du mit dem Geld der Gang oder deinem Eigenem bezahlen?
- Le gang a suffisamment de fonds pour payer pour cela, voulez-vous payer avec les fonds de gangs ou avec votre propre argent ?
- La Gang ha fondi a sufficienza per pagare questo oggetto, vuoi usare i fondi della Gang o i tuoi personali?
- A Gangue tem dinheiro suficiente para pagar por isso, você gostaria de usar o dinheiro da Gangue?
- Gang posiada wystarczającą ilość środków aby za to zapłacić, chcesz zapłacić za to środkami gangu, czy własnymi?
- 帮派有足够的钱来支付这笔钱,你愿意用帮派的钱还是自己的钱?
-
-
- Gang Funds:
- Gang fondy:
- Fondos de Pandilla:
-
- Geld der Gang:
- Fonds du gang :
- Fondi Gang:
- Fundos da Gangue:
- Środki gangu:
- 帮派资金:
-
-
- Your Cash:
- Váš Cash:
- Tu dinero:
-
- Bargeld:
- Votre argent :
- Tuoi Fondi:
- Seu Dinheiro:
- Twoje środki:
- 你的现金:
-
-
- Pay with cash or gang funds
- Platit v hotovosti nebo gangů fondů
- Pagar con tu dinero o el de tu pandilla?
-
- Mit Bargeld oder Geld der Gang bezahlen?
- Payez avec votre argent ou avec les fonds du gang
- Paga con i tuoi contanti o con i fondi della Gang
- Pagar com a sua conta ou a da Gangue
- Zapłać gotówką albo środkami gangu
- 用现金或帮派基金支付
-
-
- Gang Funds
- Gang fondy
- Fondos de la Pandilla
-
- Geld der Gang
- Fonds du gang :
- Fondi Gang
- Gangue
- Środki gangu
- 帮派资金
-
-
- Your Cash
- Váš Cash
- Tu dinero
-
- Bargeld:
- Votre argent
- Tuoi Fondi
- Seu
- Twoje środki
- 你的现金
-
-
- You bought %1 %2 for $%3 with the gangs funds
- Koupili jste% %1 %2 za $ 3 s fondy gangů
- Comprastes %1 %2 por $%3 con el dinero de la pandilla
-
- Du kaufst %1 %2 für $%3 mit dem Geld der Gang
- Vous avez acheté %1 %2 pour $%3 avec les fonds gangs
- Hai comprato %1 %2 al costo di $%3 con i fondi della Gang
- Você comprou %1 %2 por R$%3 com o dinheiro da gangue
- Kupiłeś %1 %2 za $%3 ze środków gangu
- 你购买 %1 %2 花费 $%3 帮派基金
-
-
- You bought %1 %2 for $%3
- Koupili jste% %1 2 na $ %3
- Comprastes %1 %2 por $%3
-
- Du hast %1 %2 für $%3 gekauft.
- Vous avez acheté %1 %2 pour $%3
- Hai comprato %1 %2 al costo di $%3
- Voce comprou %1 %2 por R$%3
- Kupiłeś %1 %2 za $%3
- 你购买 %1 %2 花费 $%3
-
-
- You sold %1 %2 for $%3
- Prodali jste% %1 2 na $ %3
- Vendistes %1 %2 por $%3
-
- Du hast %1 %2 für $%3 verkauft.
- Vous avez vendu %1 %2 pour $%3
- Hai venduto %1 %2 al prezzo di $%3
- Você vendeu %1 %2 por R$%3
- Sprzedałeś %1 %2 za $%3
- 你出售 %1 %2 得到 $%3
-
-
- You need to select an item to buy/sell.
- Je třeba vybrat položku na buy / sell.
- Necesitas seleccionar un objetar para vender/comprar.
-
- Du musst einen Gegenstand auswählen, um ihn zu kaufen / zu verkaufen.
- Vous devez sélectionner un objet à acheter/vendre.
- Devi selezionare un oggetto per comprare/vendere.
- Selecione um item para comprar ou vender.
- Musisz wybrać rzecz którą chcesz kupić/sprzedać
- 你需要选择一个物品来购买/出售。
-
-
- You sold a %1 for <t color='#8cff9b'>$%2</t>
- prodával jsi %1 pro <t color='#8cff9b'>$%2</t>
- Vendistes un %1 por <t color='#8cff9b'>$%2</t>
-
- Du hast eine %1 für <t color='#8cff9b'>$%2</t> verkauft.
- Vous avez vendu un %1 pour <t color='#8cff9b'>$%2</t>
- Hai venduto un %1 al prezzo di <t color='#8cff9b'>$%2</t>
- Você vendeu %1 por <t color='#8cff9b'>R$%2</t>
- Sprzedałeś %1 za <t color='#8cff9b'>$%2</t>
- 你出售 %1 得到 <t color='#8cff9b'>$%2</t>
-
-
- You bought a %1 for <t color='#8cff9b'>$%2</t> with the gangs funds.
- Koupil sis %1 pro <t color='#8cff9b'>$%2</t> s peněžními prostředky gangů.
- Comprastes un %1 por <t color='#8cff9b'>$%2</t> con los fondos de tu pandilla.
-
- Du hast mit dem Geld der Gang eine %1 für <t color='#8cff9b'>$%2</t> gekauft.
- Vous avez acheté un %1 pour <t color='#8cff9b'>$%2</t> avec les fonds du gang.
- Hai comprato un %1 al costo di <t color='#8cff9b'>$%2</t> con i fondi della Gang.
- Você comprou %1 por <t color='#8cff9b'>R$%2</t> com o dinheiro da gangue.
- Kupiłeś %1 za <t color='#8cff9b'>$%2</t> ze środków gangu.
- 你购买 %1 花费 <t color='#8cff9b'>$%2</t> 黑帮基金。
-
-
- You bought a %1 for <t color='#8cff9b'>$%2</t>
- Koupil sis %1 pro <t color='#8cff9b'>$%2</t>
- Comprastes un %1 por <t color='#8cff9b'>$%2</t>
-
- Du hast eine %1 für <t color='#8cff9b'>$%2</t> gekauft.
- Vous avez acheté un %1 pour <t color='#8cff9b'>$%2</t>
- Hai comprato un %1 al costo di <t color='#8cff9b'>$%2</t>
- Você comprou %1 por <t color='#8cff9b'>R$%2</t>
- Kupiłeś %1 za <t color='#8cff9b'>$%2</t>
- 你购买 %1 花费 <t color='#8cff9b'>$%2</t>
-
-
- Shop Inventory
- Obchod Zásoby
- Inventario de la Tienda
-
- Ladeninventar
- Inventaire de la boutique
- Inventario Negozio
- Loja de Inventário
- Wyposażenie sklepu
- 店铺库存
-
-
- Your Inventory
- Váš Inventory
- Tu inventario
-
- Dein Inventar
- Votre inventaire
- Inventario Personale
- Seu Inventário
- Twoje wyposażenie
- 你的库存
-
-
-
-
- You will receive your next paycheck in %1 minutes.
- Obdržíte svůj další výplatní pásku v %1 minut.
- Recibiras tu siguiente pago en %1 minutos
-
- Du erhältst deinen nächsten Gehaltsscheck in %1 Minuten.
- Vous recevrez votre prochaine paye dans %1 minutes.
- Riceverai il tuo prossimo stipendio in %1 minuti.
- Você irá receber seu próximo pagamento em %1 minuto(s).
- Otrzymasz kolejną wypłatę w ciągu %1 minut.
- 你将在 %1 分钟后收到你的下一张薪水支票。
-
-
- You have missed a paycheck because you were dead.
- Jste vynechal výplatu, protože jste byli mrtví.
- Te has perdido un pago por estar muerto.
-
- Du erhältst kein Gehaltsscheck, da du gestorben bist.
- Vous n'avez pas reçu votre paye en raison de votre mort.
- Hai perso uno stipendio .
- Você não recebeu seu pagamento pois estava morto.
- Ominęła cię wypłata ponieważ byłeś martwy.
- 因为你死了,你错过了薪水。
-
-
- You have received a paycheck of $%1.
- Dostali jste výplatu ve výši $ %1.
- Has recibido un pago de $%1
-
- Du hast deinen Gehaltscheck in Höhe von $%1 erhalten.
- Vous avez reçu votre paye de $%1.
- Hai ricevuto uno stipendio di $%1.
- Você recebeu seu pagamento de R$%1.
- Otrzymałeś wypłatę w kwocie $%1.
- 你收到了一张 $%1 的薪水支票。
-
-
-
-
- Refuel Fuel Canister
- Tankovat paliva kanystr
- Ravitailler le bidon en carburant
- Llenar Bidón de Combustible
- Fare rifornimento di carburante scatola metallica
- Tankowanie paliwa Canister
- Reabastecer de combustível vasilha
- Заправить баллон с горючим
- Benzinkanister befüllen
- 给汽油桶加油
-
-
- Refuel Vehicle
- tankovací Vehicle
- Llenar Vehículo
- Fare rifornimento di veicoli
- Tankowanie samochodów
-
- Reabastecer Veículo
- Ravitailler en essence le véhicule
- Fahrzeug auftanken
- 给车加油
-
-
- Price per Liter: $%1
- Cena za litr: $ %1
- Precio por Litro: $%1
- Prezzo al litro: $%1
- Cena za litr: $%1
-
- Preço por Litro : R$%1
- Prix au Litre : $%1
- Preis pro Liter: $%1
- 每升价格:$%1
-
-
- Current Fuel Amount:
- Aktuální výše Palivo:
- Quantité de carburant actuelle :
- Actual cantidad de combustible:
- Quantità corrente di benzina:
- Aktualny Ilość paliwa:
-
- Quantidade Atual de Combustível:
- Aktuelle Kraftstoffmenge:
- 当前燃料量:
-
-
- Select a vehicle
- Vyberte si vůz
- Selecciona un Vehículo
- Selezionare un veicolo
- Wybierz pojazd
-
- Selecione um veículo
- Sélectionner un vehicule
- Wähle ein Fahrzeug:
- 选择载具
-
-
- The vehicle is too far or you are in!
- Vozidlo je příliš daleko, nebo jste se!
- El Vehículo esta muy lejos o tu estas adentro!
- Il veicolo è troppo lontano o vi sei all'interno!
- Pojazd jest zbyt daleko lub jesteś w!
-
- O veículo está muito longe ou você está nele!
- Le véhicule est peut-etre trop loin, ou tu es dedans !
- Das Fahrzeug ist zu weit entfernt oder du sitzt noch drin!
- 载具太远了,或者你在载具里!
-
-
- The vehicle is full!
- Vozidlo je plná!
- El Vehículo esta lleno!
- Il veicolo è pieno!
- Pojazd jest pełna!
-
- O veículo está cheio!
- Le véhicule est plein !
- Das Fahrzeug ist voll!
- 载具已满!
-
-
-
-
- Drop Fishing Net
- Drop rybářská síť
- Tirar Red de Pesca
-
- Fischernetz auswerfen
- Lancer le filet de pêche
- Drop Fishing Net
- Jogar Rede de Pesca
- Zarzuć sieć
- 放下渔网
-
-
- Rob Person
- Rob Pearson
- Robar Persona
-
- Person ausrauben
- Voler la personne
- Deruba
- Roubar Jogador
- Obrabuj osobę
- 抢劫此人
-
-
-
-
- Fish Market
- Rybí trh
- Marché aux poissons
- Mercado de Pescado
-
- Fischmarkt
- Peixaria
- Sklep rybny
- Pescivendolo
- 海产品市场
-
-
- Hospital
- Nemocnice
- Hôpital
- Hospital
-
- Krankenhaus
- Hospital
- Szpital
- Ospedale
- 医院
-
-
- Police Station
- Policejní stanice
- Poste de police
- Estación de Policia
-
- Polizei Revier
- Estação Policial
- Posterunek policji
- Questura
- 警察分局
-
-
- Police Air HQ
- Police Air HQ
- Base aérienne de la Police
- Cuartel Aéreo Policial
- QG Aereo Polizia
-
- Polizei HQ Flughafen
- QG Aéreo Policial
- Baza lotnicza policji
- 警察航空总部
-
-
- Iron Mine
- Železný důl
- Mine de fer
- Mina de Hierro
-
- Eisenmine
- Mina de Ferro
- Kopalnia miedzi
- Miniera di ferro
- 铁矿
-
-
- Salt Mine
- Solný důl
- Mine de sel
- Mina de Sal
-
- Salzmine
- Mina de Sal
- Kopalnia soli
- Salina
- 盐矿
-
-
- Salt Processing
- sůl Processing
- Traitement de sel
- Procesador de Sal
-
- Salzverarbeitung
- Processador de Sal
- Warzelnia soli
- Processo del sale
- 食盐制造厂
-
-
- Altis Corrections
- Altis Opravy
- Prison d'Altis
- Prisión de Altis
-
- Altis Bundesgefängnis
- Prisão de Altis
- Więzienie Altis
- Penitenziario di Altis
- 监狱
-
-
- Tanoa Corrections
- Tanoa Opravy
- Prison de Tanoa
- Prisión de Tanoa
-
- Tanoa Bundesgefängnis
- Prisão de Tanoa
- Więzienie Tanoa
- Penitenziario di Tanoa
- Tanoa更正
-
-
- Police HQ
- Police HQ
- QG de la police
- Comisaria de Policía
- QG Polizia
-
- Polizei HQ
- QG Policial
- KG Policji Altis
- 警察总部
-
-
- Coast Guard
- pobřežní hlídka
- Garde-côte
- Guardia Costera
-
- Küstenwache
- Guarda Costeira
- Straż przybrzeżna
- Guardia Costiera
- 海岸警卫队
-
-
- Rebel Outpost
- Rebel Outpost
- Avant-Poste Rebelle
- Base Rebelde
- Avamposto Ribelle
-
- Rebellen Außenposten
- Base Rebelde
- Baza rebeliantów
- 叛军前哨
-
-
- Air Shop
- Air Shop
- Concessionnaire aérien
- Tienda Aérea
- Negozio Aereo
-
- Luftfahrzeug Händler
- Loja Aérea
- Sklep lotniczy
- 空中载具商店
-
-
- Truck Shop
- Truck Shop
- Vendeur de camion
- Tienda de Camiones
-
- LKW Händler
- Loja de Caminhões
- Salon ciężarówek
- Concessionaria Camion
- 卡车商店
-
-
- Oil Processing
- Zpracování olej
- Traitement du Pétrole
- Procesador de Petróleo
-
- Öl Verarbeiter
- Processador de Petróleo
- Rafineria ropy naftowej
- Raffineria di Petrolio
- 石油加工
-
-
- Iron Processing
- Zpracování Iron
- Traitement du Fer
- Procesador de Hierro
- Processo del ferro
-
- Eisenschmelze
- Processador de Ferro
- Huta żelaza
- 铁矿加工
-
-
- Sand Mine
- písek Mine
- Mine de Sable
- Mina de Arena
- Miniera di sabbia
-
- Sand Mine
- Mina de Areia
- Kopalnia piasku
- 采沙场
-
-
- Chop Shop
- Chop Shop
- Revendeur de véhicules volés
- Desguace Clandestino
- Ricettatore
-
- Schrotthändler
- Desmanche
- Dziupla
- 黑车店
-
-
- Cocaine Processing
- Zpracování kokain
- Traitement de Cocaïne
- Procesador de Cocaína
- Trattamento cocaina
-
- Kokain Verarbeiter
- Processador de Cocaína
- Oczyszczanie kokainy
- 可卡因加工点
-
-
- Copper Mine
- měděný důl
- Mine de Cuivre
- Mina de Cobre
- Miniera di rame
-
- Kupfermine
- Mina de Cobre
- Kopalnia miedzi
- 铜矿
-
-
- ATM
- bankomat
- DAB
- ATM
- ATM
-
- Geldautomat
- Caixa Eletrônico
- Bankomat
- 自动取款机
-
-
- Local Bank
- místní bankovní
- Banque locale
- Banco Local
- Banca locale
-
- Zentralbank
- Banco Local
- Bank Altis
- 银行
-
-
- Car Shop
- Auto Shop
- Concessionnaire
- Tienda de Coches
- Concessionario d `auto
-
- Autohändler
- Loja de Carros
- Salon samochodowy
- 小汽车店
-
-
- Hospital/Clinic
- Nemocnice / Klinika
- Clinique
- Hospital/Clínica
- Ospedale / Clinica
-
- Krankenhaus
- Hospital/Clínica
- Klinika Altis
- 医院/诊所
-
-
- Diamond Mine
- Diamond Mine
- Mine de diamant
- Mina de Diamantes
- Miniera di diamanti
-
- Diamanten Mine
- Mina de Diamante
- Kopalnia diamentów
- 钻石矿场
-
-
- General Store
- Obchod se smíšeným zbožím
- Magasin général
- Tienda General
- Strumenti Generali
-
- Supermarkt
- Loja de Equipamentos
- Sklep techniczny
- 物品商店
-
-
- Civilian Shops
- civilní Obchody
- Magasins civils
- Tiendas Civiles
- Negozi civili
-
- Geschäft für Zivilisten
- Lojas Civis
- Sklepy dla cywilów
- 平民商店
-
-
- Boat Shop
- Lodní Shop
- Concessionnaire de bateaux
- Tienda de Barcos
- Concessionaria Nautica
-
- Boots Händler
- Loja de Barcos
- Sklep z łodziami
- 船舶商店
-
-
- Bruce's Outback Outfits
- Bruceovy Outback Oblečení
- Vêtements de Bruce
- Tienda de Ropa
- Outfit di Bruce
-
- Loja de Roupas
- Sklep odzieżowy
- Bruce's Outback Outfits
- 服装店
-
-
- Apple Field
- Apple Field
- Champs de Pommes
- Campo de Manzanas
- Campo di Mele
-
- Apfel Plantage
- Campo de Maçãs
- Sad jabłkowy
- 苹果树林
-
-
- Peaches Field
- broskve Field
- Champs de Pêches
- Campo de Melocotones
- Campo di Pesche
-
- Pfirsich Plantage
- Campo de Pêras
- Sad brzoskwiniowy
- 桃树林
-
-
- Market
- Trh
- Marché
- Mercado
- Mercato
-
- Markt
- Mercado
- Market spożywczy
- 市场
-
-
- Air Service Station
- Stanice Air Service
- Réparateur Aérien
- Estación de Servicio Aéreo
- Stazione Servizio Aereo
-
- Werkstatt für Luftfahrzeuge
- Estação de Serviços Aéreos
- Serwis lotniczy
- 航空服务站
-
-
- Channel 7 News
- Channel 7 News
- Chaine d'infos Numéro 7
- Canal de Noticias 7
- Notiziario di Altis
-
- Kanal 7 Nachrichtensender
- Canal de Notícias 7
- Maszt nadawczy
- 新闻广播电台
-
-
- DMV
- DMV
- Magasin de licences
- Registro de Licencias
-
- Zulassungstelle
- Loja de Licenças
- Urząd licencyjny
- Licenze
- 许可证办理
-
-
- Delivery Missions
- Dodací mise
- Missions de livraison
- Misiones de Entrega
-
- Kurier Mission
- Missões de Entrega
- Misje kurierskie
- Missioni Postali
- 快递任务
-
-
- Deliver Package
- doručit balíček
- Livrer le paquet
- Entregar Paquete
-
- Paket ausliefern
- Entregar Pacote
- Dostarcz przesyłkę
- Consegna il pacco
- 完成快递任务
-
-
- Get Delivery Mission
- Získat Delivery mise
- Obtenir Mission de livraison
- Empezar Misión de Entrega
-
- Starte Kurier Mission
- Pegar Missão de Entrega
- Pobierz przesyłkę do dostarczenia
- Ottieni una missione postale
- 得到快递任务
-
-
- Diving Shop
- Potápění Shop
- Boutique de plongée
- Tienda de Buceo
-
- Steve's Taucherausrüstung
- Loja de Mergulho
- Akcesoria do nurkowania
- Negozio da Sub
- 潜水店
-
-
- Drug Dealer
- Drug prodejce
- Dealeur de drogue
- Narcotraficante
-
- Drogendealer
- Traficante
- Diler narkotyków
- Spacciatore
- 毒贩
-
-
- Diamond Processing
- Diamond Processing
- Traitement du diamant
- Procesador de Diamante
-
- Diamantenschleifer
- Processador de Diamante
- Szlifierz diamentów
- Processo diamanti
- 钻石加工
-
-
- Oil Field
- Ropné poles
- Champ de Pétrole
- Campo de Petróleo
-
- Öl Felder
- Campo de Petróleo
- Szyb naftowy
- Giacimento di Petrolio
- 油田
-
-
- Marijuana Field
- Marihuana Field
- Champ de Marijuana
- Campo de Marihuana
-
- Marihuana Plantage
- Campo de Maconha
- Pole marihuany
- Campo di Marijuana
- 大麻产地
-
-
- Marijuana Processing
- Zpracování marihuana
- Traitement de la Marijuana
- Procesador de Marihuana
-
- Marihuana Verarbeitung
- Processador de Maconha
- Suszarnia marihuany
- Trattamento Marijuana
- 大麻加工
-
-
- Boat Spawn
- Lodní potěr
- Port
- Spawn de Barcos
-
- Boot Spawn
- Spawn de Barcos
- Przystań
- Consegna Barche
- 码头
-
-
- Copper Processing
- Zpracování měď
- Traitement du cuivre
- Procesador de Cobre
-
- Kupferschmelze
- Processador de Cobre
- Huta miedzi
- Processo Rame
- 铜矿加工
-
-
- Coca Field
- Coca Field
- Champ de Cocaïne
- Campo de Cocaína
-
- Kokain Plantage
- Campo de Cocaína
- Pole kokainy
- Campo di Cocaina
- 可卡因树林
-
-
- Oil Trader
- olej Trader
- Vendeur de pétrole
- Comerciante de Petróleo
-
- Öl Händler
- Comprador de Petróleo
- Skup benzyny
- Vendita Olio
- 石油贸易商
-
-
- Salt Trader
- sůl Trader
- Vendeur de sel
- Comerciante de Sal
-
- Salz Händler
- Comprador de Sal
- Skup soli
- Vendita Sale
- 食盐贸易商
-
-
- Diamond Trader
- Diamond Trader
- Vendeur de diamant
- Comerciante de Diamantes
-
- Juwelier
- Comprador de Diamante
- Skup diamentów
- Vendita Diamanti
- 钻石贸易商
-
-
- Glass Trader
- sklo Trader
- Vendeur de verre
- Comerciante de Vidrio
-
- Glasbläserei
- Comprador de Vidro
- Skup szkła
- Vendita del Vetro
- 玻璃贸易商
-
-
- Iron / Copper Trader
- Žehlička / Měď Trader
- Vendeur de minerais
- Comerciante de Hierro / Cobre
-
- Industriehandel
- Comprador de Ferro e Cobre
- Skup metali
- Vendita del Ferro/Rame
- 铁/铜交易商
-
-
- Sand Processing
- Zpracování písek
- Traitement du sable
- Procesador de Arena
-
- Sand Verarbeiter
- Processador de Areia
- Huta szkła
- Processo Sabbia
- 玻璃制造厂
-
-
- Gun Store
- Gun Store
- Armurerie
- Tienda de Armas
-
- Waffengeschäft
- Loja de Armas
- Sklep z bronią
- Armeria
- 武器商店
-
-
- Opium Poppy Field
- Opium Poppy Field
- Champ d'héroïne
- Campo de Opio
- Opium Poppy Field
-
- Heroin Plantage
- Campo de Heroína
- Pole heroiny
- 罂粟产地
-
-
- Heroin Processing
- Zpracování heroin
- Traitement d'héroïne
- Procesador de Heroina
- Processing eroina
-
- Heroin Verarbeitung
- Processador de Heroína
- Oczyszczanie heroiny
- 海洛因加工点
-
-
- Garage
- Garáž
- Garage
- Garaje
- Box auto
-
- Garage
- Garagem
- Garaż
- 载具仓库
-
-
- Federal Reserve
- federální rezervní systém
- Banque fédérale
- Reserva Federal
-
- Zentralbank
- Reserva Federal
- Bank Rezerw Federalnych
- Banca Federale
- 金库
-
-
- Highway Patrol Outpost
- Dálniční hlídka Outpost
- Avant-poste de Police
- Puesto de Patrulla de Carretera
-
- Mautstation
- Base da Polícia Rodoviária
- Posterunek policji drogowej
- Checkpoint di polizia
- 公路巡逻队
-
-
- Rock Quarry
- kamenolomu
- Mine de pierres
- Mina de Piedra
-
- Steinbruch
- Pedreira
- Kamieniołom
- Cava di Roccia
- 采矿石场
-
-
- Rock Processing
- rock Processing
- Traitement de pierres
- Procesador de Piedra
-
- Stein Verarbeitung
- Processador de Pedra
- Wytwórnia cementu z kamienia
- Processo Roccia
- 水泥制造厂
-
-
- Cement Trader
- cement Trader
- Vendeur de ciments
- Comerciante de Cemento
-
- Zement Händler
- Comprador de Cimento
- Skup cementu
- Vendita del Cemento
- 水泥贸易商
-
-
- Turtle Poaching
- Turtle pytláctví
- Réserve protégée de tortues
- Caza de Tortugas
- Bracconaggio di Tartarughe
-
- Wilderei für Schildkröten
- Área de Tartarugas
- Strefa występowania żółwi morskich
- 海龟捕猎区
-
-
- Turtle Dealer
- Turtle prodejce
- Dealeur de Tortues
- Traficante de Tortugas
-
- Schildkröten Händler
- Comprador de Tartarugas
- Skup żółwi
- Vendita Tartarughe
- 海龟走私商
-
-
- Go-Kart Shop
- Go-Kart Shop
- Concessionnaire de karts
- Tienda de Go-Kart
-
- Bobby's Gokarthandel
- Loja de Karts
- Sklep z GoKartami
- Parco Go-Kart
- 卡丁车店
-
-
- Gold Bars Buyer
- Gold Bary kupujícího
- Acheteur d'Or
- Comprador de Oro
-
- Goldhändler
- Comprador de Barras de Ouro
- Skup złota
- Gioielliere
- 金条买家
-
-
- Gang Hideout 1
- Gang Hideout 1
- Cachette 1
- Escondite de Pandillas 1
-
- Gang Versteck 1
- Esconderijo de Gangs 1
- Kryjówka gangu 1
- Covo Gang 1
- 帮派据点1
-
-
- Gang Hideout 2
- Gang Hideout 2
- Cachette 2
- Escondite de Pandillas 2
-
- Gang Versteck 2
- Esconderijo de Gangs 2
- Kryjówka gangu 2
- Covo Gang 2
- 帮派据点2
-
-
- Gang Hideout 3
- Gang Hideout 3
- Cachette 3
- Escondite de Pandillas 3
-
- Gang Versteck 3
- Esconderijo de Gangs 3
- Kryjówka gangu 3
- Covo Gang 3
- 帮派据点3
-
-
- Hunting Grounds
- honební revír
- Terrain de chasse
- Zona de Caza
-
- Jagdgebiet
- Área de Caça
- Strefa polowań
- Riserva di Caccia
- 狩猎场
-
-
- Rebel Clothing Shop
- Rebel Oblečení Shop
- Vêtements rebelle
- Tienda de Ropa Rebelde
- Rebel negozio di abbigliamento
-
- Rebellen Kleidungsgeschäft
- Loja de Roupas Rebeldes
- Magazyn rebelianta
- 叛军服装店
-
-
- Rebel Weapon Shop
- Rebel obchodu se zbraněmi
- Armurerie rebelle
- Tienda de Armas Rebeldes
-
- Rebellen Waffenhändler
- Loja de Armas Rebeldes
- Zbrojownia rebelianta
- Armeria della Guerriglia
- 叛军武器店
-
-
- Helicopter Shop
- vrtulník Shop
- Concessionnaire aérien
- Tienda de Helicópteros
- Elicottero negozio
-
- Helikopter Händler
- Loja de Helicópteros
- Sklep lotniczy
- 飞行载具店
-
-
- Fuel Station Store
- Palivo Store Station
- Cafet' de Station
- Tienda de Gasolinera
- Stazione di rifornimento Conservare
-
- Tankstelle
- Loja de Conveniência
- Sklep OLLEN
- 加油站商店
-
-
- Rebel Market
- Rebel Market
- Marché Rebelle
- Mercado Rebelde
- mercato Rebel
-
- Rebellen Markt
- Mercado Rebelde
- Market rebelianta
- 叛军市场
-
-
- Question Dealer
- Otázka prodejce
- Questionner le dealer
- Informante
-
- Informant
- Perguntar ao Traficante
- Przesłuchaj dilera
- Minaccia Spacciatore
- 询问经销商
-
-
- Service Helicopter
- Service Vrtulník
- Service d'hélicoptère
- Helicóptero de Servicio
-
- Helikopter Werkstatt
- Serviço Aéreo
- Serwisuj pojazd lotniczy
- Servizio Aereo
- 维修直升机
-
-
- Clothing Store
- Obchod s oblečením
- Vêtements
- Tienda de Ropa
-
- Kleidungsgeschäft
- Loja de Roupas
- Sklep odzieżowy
- Vestiario
- 服装店
-
-
- Medical Assistance
- lékařská pomoc
- Assistance médicale
- Asistencia Médica
-
- Medizinischer Ersthelfer
- Assistência Médica
- Pomoc medyczna
- Assistenza Medica
- 医疗救助
-
-
- Store vehicle in Garage
- Skladovat vozidlo v garáži
- Ranger le véhicule dans le garage
- Guardar vehículo en el Garaje
-
- Fahrzeug in Garage einparken
- Guardar veículo na Garagem
- Umieść pojazd w garażu
- Deposita veicolo in garage
- 将载具存放在仓库
-
-
- Cop Item Shop
- Cop Item Shop
- Magasin de la Police
- Tienda de Objetos de Policía
- Strumenti
-
- Polizei Ausrüstung
- Loja de Items da Polícia
- Zaopatrzenie
- 警察物品商店
-
-
- Cop Clothing Shop
- Cop Oblečení Shop
- Vêtements de policier
- Tienda de Ropa de Policía
- Uniformi
-
- Polizei Uniformen
- Loja de Roupas da Polícia
- Umundurowanie
- 警察服装店
-
-
- Cop Weapon Shop
- Cop obchodu se zbraněmi
- Armurerie de Police
- Tienda de Armas de Policía
- Armeria da Agenti
-
- Polizei Waffengeschäft
- Loja de Armas da Polícia
- Broń policji
- 警察武器店
-
-
- Patrol Officer Weapon Shop
- Policistou obchodu se zbraněmi
- Armurerie d'officier
- Tienda de Armas de Oficial de Patrulla
- Armeria da Pattuglia
-
- Loja de Armas de Patrulha
- Broń patrolowa
- Streifenpolizist Waffengeschäft
- 巡警武器商店
-
-
- Sergeant Weapon Shop
- Seržant obchodu se zbraněmi
- Armurerie de sergent
- Tienda de Armas de Oficial de Sargento
- Armeria dei Sergenti
-
- Lojas de Armas de Sargento
- Broń sierżanta
- Sergeant Waffengeschäft
- 警长武器商店
-
-
- Vehicle Shop
- Shop Vehicle
- Concessionnaire de véhicule
- Tienda de Vehículos
- di veicoli
-
- Autohändler
- Loja de Carros
- Pojazdy - sklep
- 载具商店
-
-
- Process Sand
- proces Písek
- Traiter le sable
- Procesar Arena
-
- Verarbeite Sand
- Processar Areia
- Przetop piasek na szkło
- Lavorazione Sabbia
- 把沙子制造成玻璃
-
-
- Process Rock
- proces rock
- Traiter la pierre
- Procesar Piedra
-
- Verarbeite Stein
- Processar Pedra
- Zmiel skały na cement
- Processo Roccia
- 把矿石制造成水泥
-
-
- Wong's Food Cart
- Křídla Food košík
- Magasin de Wong
- Kiosko de Wong
- Wong Food Cart
-
- Wong's Spezialitäten
- Boteco do Wongs
- Bar u Wonga
- 食品商人
-
-
- Open Vault
- otevřená Vault
- Ouvrir coffre
- Abrir Bóveda
- Apri Cassaforte
-
- Geöffneter Tresor
- Abrir Cofre
- Otwórz skarbiec
- 打开金库
-
-
- Fix Vault
- Fix Vault
- Réparer coffre
- Reparar Bóveda
-
- Tresor reparieren
- Consertar Cofre
- Napraw skarbiec
- Ripara Cassaforte
- 修复金库
-
-
- Federal Reserve - Front Entrance
- Federální rezervní systém - přední vchod
- Banque fédérale - Entrée avant
- Reserva Federal - Entrada Principal
- Riserva Federale - Entrata Frontale
-
- Zentralbank - Haupteingang
- Reserva Federal - Entrada Frontal
- Rezerwa federalna - wejście główne
- 金库-前门
-
-
- Federal Reserve - Side Entrance
- Federální rezervní systém - Boční vchod
- Banque fédérale - Entrée latérale
- Reserva Federal - Entrada Lateral
- Riserva Federale - Ingresso laterale
-
- Zentralbank - Seiteneingang
- Reserva Federal - Entrada Lateral
- Rezerwa federalna - wejście boczne
- 金库-侧门
-
-
- Federal Reserve - Back Entrance
- Federální rezervní systém - zadní vchod
- Banque fédérale - Entrée Arrière
- Reserva Federal - Entrada Trasera
- Riserva Federale - Ingresso sul Retro
-
- Zentralbank - Hintereingang
- Reserva Federal - Entrada Traseira
- Rezerwa federalna - wejście tylne
- 金库-后门
-
-
- Federal Reserve - Vault View
- Federální rezervní systém - Vault View
- Banque fédérale - Voir Coffre
- Reserva Federal - Vista a la Bóveda
- Riserva Federale - Vista della Cassaforte
-
- Zentralbank - Tresor
- Reserva Federal - Visão do Cofre
- Rezerwa federalna - skarbiec
- 金库-保险箱
-
-
- Turn Off Display
- Vypnout displej
- Désactiver l'affichage
- Apagar el Display
- Disattivare la visualizzazione
-
- Bildschirm ausschalten
- Desligar Monitor
- Wyłącz wyświetlacz
- 关闭显示
-
-
- Armament
- Vyzbrojení
- Armement
- Armamento
- Armamento
-
- Rüstkammer
- Armamento
- Zbrojownia gangu
- 武器装备
-
-
- EMS Item Shop
- EMS Item Shop
- Magasin de médecin
- Tienda de Objetos de Médico
- Strumenti EMS
-
- Sanitäter Ausrüstung
- Loja de Items Médicos
- Wyposażenie medyczne
- 医疗物品店
-
-
- EMS Clothing Shop
- EMS Oblečení Shop
- Uniformes du SAMU
- Tienda de Ropa de Médico
- Uniformi EMS
-
- Sanitäter Kleidungsgeschäft
- EMS Roupa Loja
- Sklep odzieżowy EMS
- 医疗服装店
-
-
- Helicopter Garage
- vrtulník Garáž
- Garage d'hélicoptère
- Garaje de Helicóptero
- Garage d'Elicotteri
-
- Helikopter Hangar
- Garagem Aérea
- Hangar lotniczy
- 直升机库
-
-
- Car Garage
- Car Garage
- Garage de voitures
- Garaje de Coches
-
- Fahrzeug Garage
- Garagem de Carros
- Hangar lotniczy
- Garage Automobili
- 载具仓库
-
-
- Pay Bail
- Pay Bail
- Payer la caution
- Pagar Fianza
-
- Zahle Kaution
- Pagar Fiança
- Zapłać kaucję
- Paga cauzione
- 支付保释金
-
-
-
-
- Remove Uniform
- Remove Uniform
- Remove Uniform
- Remove Uniform
- Entferne Kleidung
- Retirer uniforme
- Remove Uniform
- Remove Uniform
- Remove Uniform
- 删除制服
-
-
- Remove Hat
- Remove Hat
- Remove Hat
- Remove Hat
- Entferne Kopfbedeckung
- Retirer chapeau
- Remove Hat
- Remove Hat
- Remove Hat
- 删除帽子
-
-
- Remove Glasses
- Remove Glasses
- Remove Glasses
- Remove Glasses
- Entferne Brille
- Retirer lunettes
- Remove Glasses
- Remove Glasses
- Remove Glasses
- 删除眼镜
-
-
- Remove Vest
- Remove Vest
- Remove Vest
- Remove Vest
- Entferne Weste
- Retirer gilet
- Remove Vest
- Remove Vest
- Remove Vest
- 删除背心
-
-
- Remove Backpack
- Remove Backpack
- Remove Backpack
- Remove Backpack
- Entferne Rucksack
- Retirer sac
- Remove Backpack
- Remove Backpack
- Remove Backpack
- 删除背包
-
-
- Casual Wears
- Casual Wears
- Casual Wears
- Casual Wears
- Büro Kleidung
- Casual Wears
- Casual Wears
- Casual Wears
- Casual Wears
- 休闲装
-
-
- Hat and Bandana
- Hat and Bandana
- Hat and Bandana
- Hat and Bandana
- Mütze und Kopftuch
- Chapeau et bandana
- Hat and Bandana
- Hat and Bandana
- Hat and Bandana
- 帽子和头巾
-
-
- Cop Uniform
- Cop Uniform
- Cop Uniform
- Cop Uniform
- Polizei Uniform
- Uniforme de service
- Cop Uniform
- Cop Uniform
- Cop Uniform
- 警察制服
-
-
- EMS Uniform
- EMS Uniform
- EMS Uniform
- EMS Uniform
- Sanitäter Uniform
- Uniforme du SAMU
- EMS Uniform
- EMS Uniform
- EMS Uniform
- 医疗制服
-
-
- EMS Backpack
- EMS Backpack
- EMS Backpack
- EMS Backpack
- Sanitäter Rucksack
- Sac à dos SAMU
- EMS Backpack
- EMS Backpack
- EMS Backpack
- 医疗背包
-
-
- Flashbang
- Flashbang
- Flashbang
- Flashbang
- Blendgranate
- Flashbang
- Flashbang
- Flashbang
- Flashbang
- 闪光弹
-
-
- Stun Pistol
- Stun Pistol
- Stun Pistol
- Stun Pistol
- Betäubungs-Pistole
- Taser
- Stun Pistol
- Stun Pistol
- Stun Pistol
- 眩晕手枪
-
-
- Taser Rifle
- Taser Rifle
- Taser Rifle
- Taser Rifle
- Betäubungs-Gewehr
- Fusil taser
- Taser Rifle
- Taser Rifle
- Taser Rifle
- 泰瑟步枪
-
-
- Taser Rifle Magazine
- Taser Rifle Magazine
- Taser Rifle Magazine
- Taser Rifle Magazine
- Betäubungs-Gewehr-Magazine
- Chargeurs de fléchettes électriques
- Taser Rifle Magazine
- Taser Rifle Magazine
- Taser Rifle Magazine
- 泰瑟步枪弹匣
-
-
- Northern Rebel Base
- Northern Rebel Base
- Northern Rebel Base
- Northern Rebel Base
- Nord Rebellen Basis
- Base rebelle Nord
- Northern Rebel Base
- Northern Rebel Base
- Northern Rebel Base
- 北部叛军基地
-
-
- Southern Rebel Base
- Southern Rebel Base
- Southern Rebel Base
- Southern Rebel Base
- Süd Rebellen Basis
- Base rebelle Sud
- Southern Rebel Base
- Southern Rebel Base
- Southern Rebel Base
- 南部叛军基地
-
-
- Eastern Rebel Base
- Eastern Rebel Base
- Eastern Rebel Base
- Eastern Rebel Base
- Ost Rebellen Basis
- Base rebelle Est
- Eastern Rebel Base
- Eastern Rebel Base
- Eastern Rebel Base
- 东部叛军基地
-
-
- North Western Rebel Base
- North Western Rebel Base
- North Western Rebel Base
- North Western Rebel Base
- Nord-West Rebellen Basis
- Base rebelle Nord-Ouest
- North Western Rebel Base
- North Western Rebel Base
- North Western Rebel Base
- 西北叛军基地
-
-
- North Eastern Rebel Base
- North Eastern Rebel Base
- North Eastern Rebel Base
- North Eastern Rebel Base
- Nord-Ost Rebellen Basis
- Base rebelle Nord-Est
- North Eastern Rebel Base
- North Eastern Rebel Base
- North Eastern Rebel Base
- 东北叛军基地
-
-
- Kavala Hospital
- Kavala Hospital
- Kavala Hospital
- Kavala Hospital
- Kavala Krankenhaus
- Hôpital de Kavala
- Kavala Hospital
- Kavala Hospital
- Kavala Hospital
- Kavala医院
-
-
- Athira Regional
- Athira Regional
- Athira Regional
- Athira Regional
- Athira Krankenhaus
- Hôpital d'Athira
- Athira Regional
- Athira Regional
- Athira Regional
- Athira地区
-
-
- Pyrgos Hospital
- Pyrgos Hospital
- Pyrgos Hospital
- Pyrgos Hospital
- Pyrgos Krankenhaus
- Hôpital de Pyrgos
- Pyrgos Hospital
- Pyrgos Hospital
- Pyrgos Hospital
- Pyrgos医院
-
-
- South East Hospital
- South East Hospital
- South East Hospital
- South East Hospital
- Süd-Ost Krankenhaus
- Hôpital du Sud-Est
- South East Hospital
- South East Hospital
- South East Hospital
- 东南医院
-
-
- Tanouka Regional
- Tanouka Regional
- Tanouka Regional
- Tanouka Regional
- Tanouka Krankenhaus
- Hôpital de Tanouka
- Tanouka Regional
- Tanouka Regional
- Tanouka Regional
- Tanouka地区
-
-
- North East Airport Hospital
- North East Airport Hospital
- North East Airport Hospital
- North East Airport Hospital
- Nord-Ost Flughafen Krankenhaus
- Hôpital de l'aéroport
- North East Airport Hospital
- North East Airport Hospital
- North East Airport Hospital
- 东北机场医院
-
-
- North Airport HQ
- North Airport HQ
- North Airport HQ
- North Airport HQ
- Nord Flughafen HQ
- Base aérienne nord
- North Airport HQ
- North Airport HQ
- North Airport HQ
- 北部机场总部
-
-
- South Western Airport HQ
- South Western Airport HQ
- South Western Airport HQ
- South Western Airport HQ
- Süd-Westliche HQ Flughafen
- Base aérienne sud-ouest
- South Western Airport HQ
- South Western Airport HQ
- South Western Airport HQ
- 西南机场总部
-
-
-
-
- Vehicular Manslaughter
- dopravní zabití
- Vol de véhicule
- Homicidio Vehicular
- Omicidio colposo veicolare
- Kołowego Manslaughter
-
- Atropelamento
- Fahrlässige Tötung
- 载具撞人
-
-
- Manslaughter
- Zabití
- Homicide involontaire
- Homicidio
- Omicidio colposo
- Zabójstwo
-
- Homicidio Involuntario
- Totschlag
- 过失杀人
-
-
- Escaping Jail
- Jak uniknout vězení
- Evasion de prison
- Escaparse de la Cárcel
- Fuga dalla prigione
- Uciekając Jail
-
- Fuga da Prisão
- Ausbruch
- 逃离监狱
-
-
- Attempted Auto Theft
- Pokusili Theft Auto
- Tentative de vol de véhicule
- Atentado: Robo de Vehículo
- Tentativo di furto d'auto
- Próba Theft Auto
-
- Tentativa de Roubo de Veiculo
- Versuchter Autodiebstahl
- 企图盗窃载具
-
-
- Use of illegal explosives
- Používání nelegálních výbušnin
- Utilisation d'explosifs illégaux
- Uso de Explosivos Ilegales
- Uso di esplosivi illegali
- Używanie nielegalnych materiałów wybuchowych
-
- Uso de explosivos ilegais
- Verwendung von illegalen Sprengstoff
- 使用非法爆炸物
-
-
- Robbery
- Loupež
- Vol
- Robo
- Rapina
- Rozbój
-
- Roubo
- Raub
- 抢劫
-
-
- Kidnapping
- Únos
- Enlèvement
- Secuestro
- Rapimento
- Porwanie
-
- Sequestro
- Entführung
- 绑架
-
-
- Attempted Kidnapping
- pokus o únos
- Tentative de kidnapping
- Atentado: Secuestro
-
- Tentativa de Sequestro
- Versuchte Entführung
- Tentativo di rapimento
- Próba porwania
- 绑架未遂
-
-
- Public Intoxication
- veřejné Intoxikace
- Intoxication publique
- Intoxicación Pública
-
- Uso de Droga em Publico
- Öffentlicher Drogenmissbrauch
- Uso di stupefacenti in pubblico
- Upojenie publiczny
- 公共场合使用非法药品
-
-
- Grand Theft
- velká loupež
- Vol de voiture
- Robo Mayor
- grande furto
- Wielka kradzież
-
- Grande Roubo
- Auto Diebstahl
- 盗窃
-
-
- Petty Theft
- Petty Theft
- Petit vol
- Robo Menor
- piccoli furti
- Drobnych kradzieży
-
- Pequeno Roubo
- Kleiner Diebstahl
- 小偷小摸
-
-
- Hit and run
- Zavinit nehodu a ujet
- Délit de fuite
- Pega y Corre
- Mordi e fuggi
- Uderz i uciekaj
-
- Fugir de Batida
- Fahrerflucht
- 交通肇事后逃逸
-
-
- Drug Possession
- držení drog
- Possession de drogue
- Posesión de Drogas
- possesso di droga
- Posiadanie narkotyków
-
- Posse de Droga
- Drogenbesitz
- 持有毒品
-
-
- Intent to distribute
- Intent distribuovat
- Intention de distribuer
- Intención de Distribuir
-
- Tentativa de Trafico
- Versuchter Drogenhandel
- Tentativo di spaccio
- Zamiarem dystrybucji
- 意图散布
-
-
- Drug Trafficking
- Obchodování s drogami
- Trafic de drogue
- Tráfico de Drogas
-
- Trafico de Drogas
- Drogenhandel
- Vendita di droga
- Handel narkotykami
- 贩毒
-
-
- Burglary
- loupež
- Cambriolage
- Robo de Casa
- furto con scasso
- Włamanie
-
- Arrombamento
- Einbruch
- 盗窃
-
-
- Tax Evasion
- Daňový únik
- Évasion fiscale
- Evadir Impuestos
-
- Evasão Fiscal
- Steuerhinterziehung
- Evasione delle tasse
- Unikanie podatków
- 逃税
-
-
- Terrorism
- Terorismus
- Terrorisme
- Terrorismo
-
- Terrorismo
- Terrorismus
- Terrorismo
- Terroryzm
- 恐怖主义
-
-
- Unlicensed Hunting
- Volně prodejné Hunting
- Chasse sans licence
- Caza sin Licencia
-
- Caça sem Licença
- Jagen ohne Jagdschein
- Caccia senza licenza
- Polowanie nielicencjonowane
- 无证狩猎
-
-
- Organ Theft
- Organ Krádež
- Vol d'organes
- Robo de Organos
- organo furto
- Narząd kradzieżą
-
- Roubo de Orgãos
- Organ Diebstahl
- 盗窃公共财物
-
-
- Attempted Organ Theft
- Pokus o krádež Organ
- Tentative de vol d'organes
- Atentado: Robo de Organos
- Tentativo furto di organi
- Próba kradzieży narządów
-
- Tentativa de Roubo de Orgãos
- Versuchter Organ Diebstahl
- 盗窃公共财物未遂
-
-
- Driving without license
- Jízda bez povolení
- Conducir sin Licencia
-
- Absence du permis de conduire
- Dirigir sem Licença
- Fahren ohne Führerschein
- Guida senza patente
- Jazda bez licencji
- 无证驾驶
-
-
- Driving on the wrong side of the road
- Jízda v špatným směrem do ulice
- Conducir en el lado incorrecto de la calle
-
- Conduite sur le mauvais côté de la route
- Dirigindo no sentido contrario
- Guida Contromano
- Jazda po niewłaściwej stronie drogi
- Fahren in die falsche Richtung der Straße
- 在错误的道路上驾驶
-
-
- Not respecting the signalizations
- Nerespektování signalizací
- No respetar las señales
-
- Non respect des signalisations
- Não respeitar as sinalizações
- Nicht unter Beachtung der Signalisierungen
- Mancato rispetto dei segnali stradali
- Nie przestrzegając sygnalizacji czy
- 不遵守交通灯号
-
-
- Speeding
- rychlá jízda
- Exceso de Velocidad
-
- Excès de vitesse
- Excesso de Velocidade
- Geschwindigkeitsüberschreitung
- Eccesso di velocità
- Przyśpieszenie
- 超速
-
-
- No headlight in the night
- No světel v noci
- Manejar sin luces en la noche
-
- Absence de phare la nuit
- Farois Apagados Durante a Noite
- Fahren ohne Licht
- Luci spente durante la notte
- Brak świateł w nocy
- 夜间不开车灯
-
-
- Driving kart without helmet
- Hnací motokáru bez helmy
- Manejar un Kart sin casco
-
- Non-port du casque en Kart
- Dirigindo Kart Sem Capacete
- Fahren ohne Helm
- Guida di Kart senza casco
- Jazda bez kasku gokarta
- 驾驶卡丁车不戴安全头盔
-
-
- Badly parked vehicle
- Špatně zaparkované vozidlo
- Vehículo mal estacionado
-
- Véhicule mal garé
- Veículo Mal Estacionado
- Parksünder
- Veicolo mal parcheggiato
- Źle zaparkowany samochód
- 乱停放载具
-
-
- Rebel vehicle (Not armed)
- Rebel vozidla (není ozbrojený)
- Vehículo Rebelde (No Armado)
-
- Véhicule rebel non armé
- Veículo Rebelde(Não Armado)
- Rebellen Fahrzeug (nicht bewaffnet)
- Veicolo blindato(Non armato)
- Rebel pojeździe (nie czuwa)
- 叛军载具(无武装)
-
-
- Grand Theft (Civilian Vehicle)
- Grand Theft (Civilian Vehicle)
- Robo Mayor (Vehículo Civil)
-
- Vol de véhicule civil
- Roubo de Veículo (Veículo Civil)
- Schwerer Diebstahl (Zivilfahrzeug)
- Furto di veicolo (Civile)
- Grand Theft (Cywilny Vehicle)
- 盗窃载具(民用载具)
-
-
- Grand Theft (Military Vehicle)
- Grand Theft (Military Vehicle)
- Robo Mayor (Vehículo Militar)
-
- Vol de véhicule militaire
- Roubo de Veículo(Militar)
- Schwerer Diebstahl (Dienstfahrzeug)
- Furto di veicolo militare
- Grand Theft (pojazd wojskowy)
- 盗窃载具(军用载具)
-
-
- Armored Vehicle
- obrněné vozidlo
- Vehículo Blindado
-
- Véhicules blindés
- Veículo Armado
- Panzerfahrzeug
- Veicolo D'assalto
- Opancerzony pojazd
- 装甲载具
-
-
- Flying over the city without authorization
- Létání nad městem bez povolení
- Volar sobre la ciudad sin autorización
-
- Survol de ville sans autorisation
- Sobrevoando sobre a cidade sem autorização
- Fliegen über die Stadt ohne Genehmigung
- Guida di velivolo su città abitata senza autorizzazione
- Latające nad miastem bez zezwolenia
- 未经授权飞越城市
-
-
- Closing the street without authorization
- Uzavření ulici bez povolení
- Cerrar las calles sin autorización
-
- Interdiction de se poser sans autorisation
- Fechar Rua Sem Autorização
- Absperren der Straße ohne Genehmigung
- Impedimento del traffico senza permesso
- Zamknięcie ulicy bez zezwolenia
- 擅自堵塞街道
-
-
- Open carry in city (Legal Weapon)
- open carry ve městě (právní Weapon)
- Cargar Arma Abiertamente en la Ciudad (Arma Legal)
- Aprire il trasporto in città (Arma Legale)
- Otwarty Carry w mieście (prawny Weapon)
-
- Arme légale visible en ville
- Portar em Cidades(Arma Legal)
- Offenes Tragen einer legalen Waffe in der Stadt
- 公开携带武器进入城市(合法武器)
-
-
- Rebel weapon
- Rebel zbraň
- Arma Rebelde
-
- Armes rebelles
- Arma Rebelde
- Rebellen Waffe
- Arma Ribelle
- Rebel bronią
- 叛军武器
-
-
- Illegal clothing
- Nelegální oblečení
- Ropa Ilegal
- abbigliamento illegale
- Nielegalna odzież
-
- Vêtements illégaux
- Roupas Ilegais
- Illegale Kleidung
- 非法服装
-
-
- Hiding face (Mask)
- Schovává tvář (Mask)
- Ocultar su Cara (Máscara)
- Nascondere faccia (Mask)
- Ukrywając twarz (maska)
-
- Cacher son visage
- Esconder o Rosto(Mascara)
- Verstecken des Gesichts (Maske)
- 隐藏面部(面具)
-
-
- Refuses to cooperate
- Odmítá spolupracovat
- Reusa a Cooperar
- Si rifiuta di collaborare
- Odmawia współpracy
-
- Refus d'obtempérer
- Recusou-se a Cooperar
- Behinderung der Staatsgewalt
- 拒绝合作
-
-
- Hit and run
- Zavinit nehodu a ujet
- Golpea y Corre
- Mordi e fuggi
- Uderz i uciekaj
-
- Délit de fuite
- Bater e Fugir
- Fahrerflucht
- 交通肇事逃逸
-
-
- Insulting a civilian
- Urážky civilní
- Insultar a un Civil
-
- Insulte envers un civil
- Insulto a Civil
- Beleidigung
- Insulto a civile
- Obrażanie cywilem
- 侮辱平民
-
-
- Insulting a soldier
- Urážky vojáka
- Insultar a un Soldado
-
- Insulte envers un militaire
- Insulto as Autoridades
- Beamtenbeleidigung
- Insulto a pubblico ufficiale
- Znieważenie żołnierza
- 侮辱士兵
-
-
- Drug dealing
- Urážky vojáka...
- Venta de Drogas
-
- Trafique de drogue
- Trafico de Drogas
- Drogenhandel
- Traffico di droga
- Handel narkotykami
- 毒品交易
-
-
- Federal Reserve breaking
- Federální rezervní systém lámání
- Entrar a la Reserva Federal
-
- Intrusion dans la réserve fédérale
- Invasão a Reserva Federal
- Bankeinbruch
- Rapina alla Riserva Federale
- Rezerwa Federalna łamanie
- 非法打开金库
-
-
- Killing of a civilian
- Zabíjení civilní
- Homicidio de un Civil
- Uccisione di un civile
- Zabójstwo cywilnej
-
- Meurtre d'un civil
- Matou um Civil
- Töten eines Zivilen
- 杀害平民
-
-
- Killing of a soldier
- Zabití vojáka
- Homicidio de un Soldado
-
- Meurtre d'un militaire
- Matou um Policial
- Töten eines Beamten
- Omicidio di un agente
- Zabijając żołnierza
- 杀害士兵
-
-
-
-
- Gas Storage
- Gas Storage
- Stockage de gaz
- Almacenamiento de Combustible
- Stoccaggio di Gas
- Magazynów gazu
-
- Treibstofflager
- Posto de Combustível
- 燃料储存
-
-
- Supply
- Zásobování
- Ravitailler
- Suministro
- Fornitura
- Dostawa
-
- Liefern
- Abastecer
- 供应
-
-
- Store
- Obchod
- Déposer
- Guardar
- Negozio
- Sklep
-
- Lagern
- Guardar
- 商场
-
-
- Stop
- Stop
- Arrêter
- Parar
- Stop
- Zatrzymać
-
- Stoppen
- Parar
- 停止
-
-
- Tanker is already in use.
- Tankery je již používán.
- Le camion citerne est déjà en cours d'utilisation.
- El Camión Cisterna ya esta siendo usado.
- La cisterna è già in uso.
- Cysterna jest już w użyciu.
-
- Tankwagen wird bereits benutzt.
- Os tanques já estão em uso.
- 油轮已投入使用。
-
-
- Gas station is in use.
- Čerpací stanice je v provozu.
- La station-service est en cours de fonctionnement.
- La estación ya se esta usando.
- La stazione di benzina è già in uso.
- Stacja benzynowa jest w użyciu.
-
- Tankstelle wird bereits beliefert.
- O posto já está sendo usado.
- 加油站在使用中。
-
-
- Tanker is empty.
- Tankery je prázdný.
- Le camion citerne est vide.
- El Camión cisterna esta vacío.
- La cisterna è vuota.
- Cysterna jest pusta.
-
- Treibstofftank ist leer.
- Os tanques estão vazios.
- 油轮是空的。
-
-
- Tankers is full.
- Tankery je plná.
- Réservoir plein.
- El Camión cisterna esta lleno.
- La cisterna è piena.
- Zbiornikowce jest pełna.
-
- Treibstofftank ist voll.
- Os tanques estão cheios.
- 油轮已满。
-
-
- Gas station has enough fuel.
- Čerpací stanice má dostatek paliva.
- La station service a suffisamment de carburant.
- La estación tiene suficiente gasolina.
- Il distributore ha abbastanza benzina.
- Stacja benzynowa ma wystarczającą ilość paliwa.
-
- Tankstelle hat genug Treibstoff.
- O posto tem combustível suficiente.
- 加油站有足够的燃料。
-
-
- This gas station is supplied through a pipeline.
- Tento Čerpací stanice se dodává potrubím.
- Cette station service est fournie par un pipeline
- Esta estación es suministrada por una tubería.
- Questa stazione di gas è alimentata attraverso una tubatura.
- Ta stacja gaz jest dostarczany rurociągiem.
-
- Diese Tankstelle wird über eine Pipeline versorgt.
- Esse posto é abastecido através de uma mangueira.
- 这个加油站通过管道供给。
-
-
- Discontinued operation.
- Ukončená činnost.
- Activité abandonnée.
- Operación discontinuada.
- Incarico Incompleto.
- Działalność zaniechana.
-
- Vorgang abgebrochen.
- Operação descontinuada.
- 停止运营。
-
-
- Your share is $%1.
- Váš podíl $%1.
- Votre part est de $%1.
- Tu ganancia es $%1.
- La vostra quota è di $%1.
- Twój udział jest $%1.
-
- Dein Anteil beträgt $%1.
- A sua parte é de R$%1.
- 你的份额为 $%1.
-
-
-
-
- Mission Failed
- Mise selhala
- Mission échouée
- Misión fallida
- Missione fallita
- Misja nie powiodła się
- Missão fracassada
- Миссия провалена
- Mission fehlgeschlagen.
- 任务失败
-
-
- You are not white-listed to use this slot.
- Mise selhala
- Vous n'êtes pas white-listé.
- No tienes permiso de usar este slot.
- Missione fallita
- Misja nie powiodła się
- Missão fracassada
- Миссия провалена
- Nicht auf der Whitelist.
- 你不是白名单不能使用这个栏位。
-
-
- You are not allowed to use this slot because you do not have the appropriate permissions. Try another slot.
- Ty jsou není dovoleno používat tento slot, protože nemáte příslušná oprávnění. Zkuste použít jiný slot.
- Vous n'êtes pas autorisé à utiliser cet emplacement parce que vous ne disposez pas des autorisations appropriées. Essayez un autre emplacement.
- No puede usar este slot porque no tiene los permisos requeridos. Por favor trate con otro slot.
- Non è consentito usare questo slot, perché non si dispone delle autorizzazioni appropriate. Prova un altro slot.
- Nie wolno korzystać z tego gniazda, ponieważ nie masz odpowiednich uprawnień. Spróbuj użyć innego gniazda.
- Você não tem permissão para usar esse slot, porque você não tem as permissões apropriadas. Tente outro slot.
- Вы не можете использовать этот слот, потому что у вас нет соответствующих разрешений. Попробуйте использовать другой слот.
- Du bist nicht auf der Whitelist, deswegen kannst du diesen Platz nicht verwenden. Versuche es auf einen anderen Platz.
- 你不允许使用此栏位,因为你没有适当的权限。尝试另一个栏位。
-
-
-
-
- Mission Failed
- Mise selhala
- Mission échouée
- Misión fallida
- Missione fallita
- Misja nie powiodła się
- Missão fracassada
- Миссия провалена
- Mission fehlgeschlagen
- 任务失败
-
-
- You are blacklisted from cops.
- Ty jsou na černé listině z policajtů.
- Vous êtes sur blacklisté de la police.
- Usted está en la lista negra de policías.
- Stai lista nera da poliziotti.
- Jesteś na czarnej liście od policjantów.
- Você está na lista negra de policiais.
- Вы в черном списке от ментов.
- Du bist von Polizisten auf die schwarze Liste gesetzt worden.
- 你被警察列入黑名单。
-
-
- You are not allowed to be a cop due to previous actions and the admins have removed you from being a cop.
- Ty jsou nesmí být policajt vzhledem k předcházejícími akcemi a administrátoři vám odstraní z bytí policista.
- Vous avez été blacklisté de la police en raisons d'actions précédentes allant à l'encontre des règles. Vous ne pouvez plus devenir policier.
- No tiene permiso a ser policía por acciones anteriores. Los administradores han bloqueado su acceso.
- Non è consentito fare il poliziotto a causa di azioni precedenti e gli amministratori di aver rimosso da essere un poliziotto.
- Nie mogą być policjantem z powodu wcześniejszych działań oraz administratorzy usunęli cię od bycia policjantem.
- Você não tem permissão para ser um policial devido a ações anteriores e os admins ter removido-lo de ser um policial.
- Вы не можете быть полицейским в связи с предыдущими действиями и админы удалили вас от того, чтобы быть полицейским.
- Du bist aufgrund früherer Aktion, kein Polizist mehr. Du wurdest von den Admins aus der Polizei entfernt.
- 由于以前的行为,你不再是警察,警局已将你从警队中开除。
-
-
-
-
- The SpyGlass sees you!
- Dalekohled tě vidí!
- SpyGlass vous voit !
- El SpyGlass te ve!
- Il cannocchiale si vede!
- Lunetę widzi!
- O SpyGlass te vê!
- SpyGlass видит, что вы!
- SpyGlass sieht dich!
- SpyGlass正在检测你!
-
-
- You were detected by the SpyGlass.
- Vy byly detekovány dalekohled.
- Vous avez été détecté par SpyGlass.
- Fue detectado por el SpyGlass.
- Lei è stato rilevato dal SpyGlass.
- Ty zostały wykryte przez lunetę.
- Você foi detectado pelo SpyGlass.
- Вы были обнаружены с помощью SpyGlass.
- Du wurdest von SpyGlass erkannt.
- 你被SpyGlass检测。
-
-
- You were detected for cheating and have been reported to the server. Enjoy your day.
- Vy byly detekovány za podvádění a byly zaznamenány na server. Užijte si svůj den.
- Vous avez été détecté pour triche et avez été signalé au serveur. Profitez de votre journée.
- Fue detectada por hacer trampas y se le ha informado al servidor. Disfruta tu día.
- Lei è stato rilevato per truffa e sono stati segnalati per il server. Buona giornata.
- Ty wykryto oszustwo i zostały zgłoszone do serwera. Miłego dnia.
- Está foram detectados por engano e têm sido relatados para o servidor. Aproveite seu dia.
- Вы были обнаружены для мошенничества и было сообщено на сервер. Удачного дня.
- >Du wurdest wegen Betrug erkannt und an den Server gemeldet. Genieße deinen Tag.
- 你被发现作弊,并已报告给服务器。珍惜你的生活吧。
-
-
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-FLAG: %1 : %2 : %3
- SPYGLASS-ERKENNUNG: %1 : %2 : %3
- SPYGLASS-标记: %1 : %2 : %3
-
-
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Betrüger Erkannt</t><br/<br/>Name: %1<br/>Erkennung: %2
- <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>作弊者被标记</t><br/<br/>姓名:%1<br/>发现:%2
-
-
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
- %1 wurde beobachtet durch SPY-GLASS. Er/Sie hatte versucht auf das Befehlsmenü:\n\n %2\n\n zuzugreifen, diese ist dem System aber nicht bekannt. BITTE BEACHTE! Er/Sie betrügt deshalb nicht, aber SPY-GLASS fand es trotzdem relevant es zu melden.
- %1 被SPY-GLASS检测, 他/她试图访问命令菜单:\n\n %2\n\n 并且系统不知道命令菜单。请注意他/她可能不会作弊,但SPY-GLASS发现了它的报告相关。
-
-
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 is not allowed TYPE: %2 NS: MN
- Variable: %1 ist nicht erlaubt. TYPE: %2 NS: MN
- 变量:不允许: %1 类型: %2 NS: MN
-
-
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 is not allowed TYPE: %2 NS: UI
- Variable: %1 ist nicht erlaubt. TYPE: %2 NS: UI
- 变量:不允许: %1 类型: %2 NS: UI
-
-
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
- ||SPY-GLASS Beobachtung|| Name: %1 | UID: %2 | Grund: %3
- ||SPY-GLASS 观察|| 姓名:%1 | UID:%2 | 原因:%3
-
-
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable set before client initialized: %1
- Variable gesetzt bevor Client initialisiert: %1
- 客户端初始化之前的变量集:%1
-
-
-
-
- EMS Requested
- EMS Požadované
- Medecin demandé
- Medico Solicitado
- EMS richiesto
- EMS Zamówiony
- EMS solicitada
- EMS Запрошенный
- Sanitäter benachrichtigt
- EMS要求
-
-
- Delivery Job Accepted
- Dodávka Job Accepted
- Mission de livraison acceptée
- Misión de Entrega Aceptada
- Incarico Postale accettato
- Dostawa Praca Zaakceptowany
- Entrega aceitado Job
- Доставка Работа Принято
- Lieferauftrag angenommen
- 接受交货工作
-
-
- Delivery Job Failed
- Nepodařilo dodávka Job
- Mission de livraison échouée
- Misión de Entrega Fallada
- Incarico Postale Fallito
- Dostawa Praca Failed
- Falha de entrega Job
- Доставка Работа Ошибка
- Lieferauftrag fehlgeschlagen
- 交货工作失败
-
-
- Delivery Job Completed
- Dokončena dodávka Job
- Mission de livraison réussie
- Misión de Entrega Completada
- Incarico Postale Completato
- Dostawa Praca Zakończony
- Concluída a entrega Job
- Доставка Работа Завершено
- Lieferauftrag abgeschlossen
- 交货工作已完成
-
-
- Received A Text Message
- Přijetí textové zprávy
- SMS reçu
- Recibió un mensaje de texto
- Hai ricevuto un messaggio di testo
- Otrzymał wiadomość tekstową
- Recebeu uma mensagem de texto
- Получено текстовое сообщение
- Erhielt eine Textnachricht
- 收到短信
-
-
- 911 Dispatch Center
- 911 Dispatch Center
- 911 Dispatch Centre
- 911 Centro de Despacho
- 911 Centro Richieste
- 911 Dispatch Center
- 911 Centro de Despacho
- 911 диспетчерский центр
- 110 Dispatch Zentrum
- 911调度中心
-
-
- Admin Dispatch Center
- Admin Dispatch Center
- Message Administrateur
- Centro de Despacho de Administradores
- Admin centro di spedizione
- Administrator Dispatch Center
- Administrador Centro de Despacho
- Администратор диспетчерский центр
- Admin Verteilzentrum
- 管理调度中心
-
-
- Admin Message
-
-
-
- Admin Nachricht
-
- Message Admin
-
-
- 管理员信息
-
-
-
-
- Civ Plane
-
- Avion civil
-
-
-
-
-
- Zivilflugzeug
- 民用飞机
-
-
- Police HQ
-
- QG de Police
-
-
-
-
-
- Polizei HQ
- 警察总部
-
-
- Police Store
-
- Magasin de la police
-
-
-
-
-
- Polizei Ausrüstung
- 警察商店
-
-
- Police Car
-
- Concessionnaire de police
-
-
-
-
-
- Dienstfahrzeuge
- 警车
-
-
- Police Heli
-
- Héliport de police
-
-
-
-
-
- Polizei Helikopter
- 警用直升机
-
-
- Police Boat
-
- Vendeur de bateaux de police
-
-
-
-
-
- Polizei Boote
- 警察船舶
-
-
- Rebel Car
-
- Concessionnaire rebelle
-
-
-
-
-
- Rebellen Fahrzeuge
- 叛军载具
-
-
- Rebel Heli
-
- Héliport rebelle
-
-
-
-
-
- Rebellen Helikopter
- 叛军直升机
-
-
- Police HQ
-
- QG de Police
-
-
-
-
-
- Polizei HQ
- 警察总部
-
-
-
-
- arrested %1
- zadržen %1
- a arrêté %1
- arrestó a %1
-
-
- prendeu %1
- арестовано %1
- hat %1 verhaftet
- 逮捕 %1
-
-
- %1 - %2 arrested %3
- %1 - %2 %3 zatčen
- %1 - %2 a arrêté %3
- %1 - %2 arrestó a %3
-
-
- %1 - %2 prendeu %3
- %1 - %2 %3 арестовано
- %1 - %2 hat %3 verhaftet.
- %1 - %2 逮捕 %3
-
-
- picked up %1 %2
- vyzvednout %1 %2
- a ramassé %1 %2
- recogió %1 %2
-
-
- pegou %1 %2
- поднял %1 %2
- hat $%1 $%2 aufgehoben.
- 拿起 %1 %2
-
-
- %1 - %2 picked up %3 %4
- %1 - %2 vyzvednout%3 %4
- %1 - %2 a ramassé %3 %4
- %1 - %2 recogió %3 %4
-
-
- %1 - %2 pegou %3 %4
- взял $%1 от земли. Банковский баланс: $%2 на руку Баланс: $%3
- %1 - %2 hat %3 %4 aufgehoben.
- %1 - %2 捡起 %3 %4
-
-
- picked up $%1 from the ground. Bank Balance: $%2 On Hand Balance: $%3
- zvedl $%1 ze země. Banka Zůstatek: $%2 po zralé úvaze rukou: $%3
- a récupéré $%1 par terre. Argent en banque : $%2 - Cash : $%3
- recogió $%1 del suelo. Saldo Bancario: $%2 Saldo en Efectivo: $%3
-
-
- pegou R$%1 do chão. Quantia no Banco: R$%2 Quantia na Mão: R$%3
- взял $%1 от земли. Банковский баланс: $%2 на руку Баланс: $%3
- hat $%1 vom Boden aufgehoben. Bankkonto: $%2 Bargeld: $%3
- 从地上捡起 $%1。银行存款余额:$%2 手上余额:$%3
-
-
- %1 - %2 picked up $%3 from the ground. Bank Balance: $%4 On Hand Balance $%5
- %1 - %2 vyzvednout $%3 ze země. Banka Zůstatek: $%4 po ruce Balance $%5
- %1 - %2 a récupéré $%3 par terre. Argent en banque : $%4 Cash : $%5
- %1 - %2 recogió $%3 del suelo. Saldo Bancario: $%4 Saldo en Efectivo: $%5
-
-
- %1 - %2 pegou R$%3 do chão. Quantia no Banco: R$%4 Quantia na mão: R$%5
- %1 - %2 взял $%3 от земли. Банковский баланс: $%4 На Hand Баланс $%5
- %1 - %2 hat $%3 vom Boden aufgehoben. Bankkonto: $%4 Bargeld: $%5
- %1 - %2 从地上捡起 $%3。银行存款余额:$%4 手上余额 $%5
-
-
- robbed $%1 from %2. Bank Balance: $%3 On Hand Balance: $%4
- oloupen $%1 z %2. Banka Zůstatek: $%3 po zralé úvaze rukou: $%4
- a volé $%1 de %2. Argent en banque : $%4 Cash : $%4
- robó $%1 de $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
-
-
- roubou R$%1 de %2. Quantia no Banco: R$%3 Quantia na Mão: R$%4
- ограбил $%1 из %2. Банковский баланс: $%3 на руку Баланс: $%4
- hat $%1 von $%2 geraubt. Bankkonto: $%3 Bargeld: $%4
- 从 %2 抢劫 $%1。银行存款余额:$%3 手上余额:$%4
-
-
- %1 - %2 robbed $%3 from %4. Bank Balance: $%5 On Hand Balance: $%6
- %1 - %2 okraden $%3 z %4. Banka Zůstatek: $%5 po zralé úvaze rukou: $%6
- %1 - %2 a volé $%3 de %4. Argent en banque : $%5. Cash : $%6
- %1 - %2 robó $%3 de $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
-
-
- %1 - %2 roubou R$%3 de %4. Quantia no Banco: R$%5 Quantia na Mão: R$%6
- %1 - %2 ограбил $%3 от %4. Банковский баланс: $%5 на руку Баланс: $%6
- %1 - %2 hat $%3 von %4 geraubt. Bankkonto: $%5 Bargeld: $%6
- %1 - %2 抢走了%4 $%3。银行存款余额:$%5 手上余额:$%6
-
-
- created a gang named: %1 for $%2
- Vytvořili gang s názvem: %1 za $%2
- a créé un gang nommé : %1 pour $%2
- creó una pandilla llamada: %1 por $%2
-
-
- criou uma gangue chamada: %1 por R$%2
- создали банду под названием: %1 за $%2
- hat eine Gang mit dem Namen: $1 für $%2 erstellt.
- 创建一个名为:%1 的帮派 花费 $%2
-
-
- %1 - %2 created a gang named: %3 for $%4
- %1 - %2 vytvořili gang s názvem: %3 za $%4
- %1 - %2 a créé un gang nommé : %3 pour $%4
- %1 - %2 creó una pandilla llamada: %3 por $%4
-
-
- %1 - %2 criou uma gangue chamada: %3 por R$%4
- %1 - %2 создали банду под названием: %3 за $%4
- %1 - %2 hat eine Gang mit dem Namen: %3 für $%4 erstellt.
- %1 - %2 创建一个名为:%3 的帮派 花费 $%4
-
-
- bought a house for $%1. Bank Balance: $%2 On Hand Cash: $%3
- koupil dům za $%1. Banka Zůstatek: $%2 On Hand Cash: $%3
- a acheté une maison pour $%1. Argent en banque : $%2 Cash : $%3
- compró una casa por $%1. Saldo Bancario: $%2 Saldo en Efectivo: $%3
-
-
- comprou uma casa por R$%1. Quantia no Banco: R$%2 Quantia na Mão: R$%3
- купил дом за $%1. Банковский баланс: $%2 на руках наличные деньги: $%3
- hat sich ein Haus für $%1 gekauft. Bankkonto: $%2 Bargeld: $%3
- 买了一所房子花费 $%。 银行存款余额: $%2 手头现金: $%3
-
-
- %1 - %2 bought a house for $%3. Bank Balance: $%4 On Hand Cash: $%5
- %1 - %2 koupil dům za $%3. Banka Zůstatek: $%4 On Hand Cash: $%5
- %1 - %2 a acheté une maison pour $%3. Argent en banque : $%4 Cash : $%5
- %1 - %2 compró una casa por $%3. Saldo Bancario: $%4 Saldo en Efectivo: $%5
-
-
- %1 - %2 comprou uma casa por R$%3. Quantia no Banco: R$%4 Quantia na Mão: R$%5
- %1 - %2 купил дом за $%3. Банковский баланс: $%4 на руках наличные деньги: $%5
- %1 - %2 hat sich ein Haus für $%3 gekauft. Bankkonto: $%4 Bargeld: $%5
- %1 - %2 买了一所房子花费 $%3。银行存款余额:$%4 手头现金:$%5
-
-
- sold a house for $%1. Bank Balance: $%2
- prodal dům za $%1. Banka Zůstatek: $%2
- a vendu une maison pour $%1. Argent en banque : $%2
- vendió una casa por $%1. Saldo Bancario: $%2
-
-
- vendeu uma casa por R$%1. Quantia no Banco: R$%2
- продал дом за $%1. Банковский баланс: $%2
- hat sein Haus für $%1 verkauft. Bankkonto: $%2
- 卖掉房子得到 $%1。银行存款余额:$%2
-
-
- %1 - %2 sold a house for $%3. Bank Balance: $%4
- %1 - %2 prodal dům za $%3. Banka Zůstatek: $%4
- %1 - %2 a vendu une maison pour $%3. Argent en banque : $%4
- %1 - %2 vendió una casa por $%3. Saldo Bancario: $%4
-
-
- %1 - %2 vendeu uma casa por R$%3. Quantia no Banco: R$%4
- %1 - %2 продал дом за $%3. Банковский баланс: $%4
- %1 - %2 hat sich ein Haus für $%3 verkauft. Bankkonto: $%4
- %1 - %2 卖掉房子得到 $%3。银行存款余额: $%4
-
-
- chopped vehicle %1 for $%2 On Hand Cash(pre-chop): $%3
- nasekané vozidlo %1 nebo $%2 na ruce hotovosti (pre-CHOP): $%3
- a mis en pièces le véhicule %1 pour $%2. Cash (avant la vente) : $%3
- vendió el vehiculo %1 en el desguace por $%2. Saldo en Efectivo(antes de la venta): $%3
-
-
- desmanchou um %1 por R$%2 Quantia na Mão (antes do desmanche): R$%3
- нарезанного машина %1 или $%2 на руках Cash (предварительно отбивной): $%3
- hat das Fahrzeug %1 für $%2 beim Schrotthändler verschrottet. Bargeld(vor Schrott): $%3
- 出售盗窃到的载具 %1 赚取 $%2 手头现金(预付):$%3
-
-
- %1 - %2 chopped vehicle %3 for $%4 On Hand Cash(pre-chop): $%5
- %1 - %2 nasekané vozidla %3 za $%4 po ruce hotovosti (před-kotleta): $%5
- %1 - %2 a revendu le véhicule %3 pour $%4. Cash (avant la vente) : $%5
- %1 - %2 vendió el vehiculo %3 en el desguace por $%4. Saldo en Efectivo(antes de la venta): $%5
-
-
- %1 - %2 desmanchou um %3 por R$%4 Quantia na Mão(antes do desmanche): R$%5
- %1 - %2 нарезанной автомобиля %3 за $%4 на руку Cash (предварительно отбивной): $%5
- %1 - %2 hat das Fahrzeug %3 für $%4 beim Schrotthändler verschrottet. Bargeld(vor Schrott): $%6
- %1 - %2 出售盗窃到的载具 %3 赚取 $%4 手头现金(预付):$%5
-
-
- bought vehicle %1 for $%2. On Hand Cash: $%3 Bank Balance: $%4
- koupil vozidla %1 nebo $%2. On Hand Cash: $%3 bankovní konto: $%4
- a acheté le véhicule %1 pour $%2. Cash : $%3 Argent en banque : $%4
- compró el vehiculo %1 por $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
-
-
- comprou um %1 por R$%2. Quantia na Mão: R$%3 Quantia no Banco: R$%4
- купил автомобиль %1 или $%2. На Hand Cash: $%3 банка Баланс: $%4
- hat sich das Fahrzeug %1 für $%2 gekauft. Bargeld: $%3 Bankkonto: $%4
- 购买载具 %1 花费 $%2。 手头现金:$%3 银行存款余额:$%4
-
-
- %1 - %2 bought vehicle %3 for $%4. On Hand Cash: $%5 Bank Balance $%6
- %1 - %2 koupilo vozidla %3 za $%4. On Hand Cash: $%5 bankovní konto $%6
- %1 - %2 a acheté le véhicule %3 pour $%4. Cash $%5 Argent en banque : $%6
- %1 - %2 compró el vehiculo %3 por $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
-
-
- %1 - %2 comprou um %3 por R$%4. Quantia na Mão: R$%5 Quantia no Banco: R$%6
- %1 - %2 купил автомобиль за $%3 %4. На Hand наличных: $%5 баланса банка $%6
- %1 - %2 hat sich das Fahrzeug %3 für $%4 gekauft. Bargeld: $%5 Bankkonto: $%6
- %1 - %2 购买载具 %3 花费 $%4。 手头现金:$%5 银行存款余额 $%6
-
-
- sold vehicle %1 for $%2. Bank Balance: $%3 On Hand Balance: $%4
- prodával vozidla %1 pro $%2. Banka Zůstatek: $%3 po zralé úvaze rukou: $%4
- a vendu le véhicule %1 pour $%2. Argent en banque : $%3 Cash : $%4
- vendió el vehiculo %1 por $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
-
-
- vendeu um %1 por R$%2. Quantia no Banco: R$%3 Quantia na Mão: R$%4
- продается автомобиль %1 за $%2. Банковский баланс: $%3 на руку Баланс: $%4
- hat das Fahrzeug %1 für $%2 verkauft. Bankkonto: $%3 Bargeld: $%4
- 出售载具 %1 获得 $%2。 银行存款余额:$%3 手上现金:$%4
-
-
- %1 - %2 sold vehicle %3 for $%4. Bank Balance: $%5 On Hand Balance: $%6
- %1 - %2 prodával vozidla %3 za $%4. Banka Zůstatek: $%5 po zralé úvaze rukou: $%6
- %1 - %2 a vendu le véhicule %3 pour $%4. Argent en banque : $%5 Cash : $%6
- %1 - %2 vendió el vehiculo %3 por $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
-
-
- %1 - %2 vendeu um %3 por R$%4. Quantia no Banco: R$%5 Quantia na Mão: R$%6
- %1 - %2 продал автомобиль за $%3 %4. Банковский баланс: $%5 на руку Баланс: $%6
- %1 - %2 hat das Fahrzeug %3 für %4 verkauft. Bankkonto: $%5 Bargeld: $%6
- %1 - %2 出售载具 %3 获得 $%4。银行存款余额:$%5 手上现金:$%6
-
-
- withdrew $%1 from their gang bank. Gang Bank Balance: $%2 Bank Balance: $%3 On Hand Balance: $%4
- stáhl $%1 z jejich gangu banky. Gang bankovní konto: $%2 bankovní konto: $%3 po zralé úvaze rukou: $%4
- a retiré $%1 du compte bancaire du Gang. Solde bancaire du Gang : $%2 Argent en banque(perso) : $%3 Cash : $%4
- sacó $%1 de la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%2 Saldo Bancario: $%3 Saldo en Efectivo: $%4
-
-
- sacou R$%1 no banco da sua gangue. Quantia no Banco da Gangue: R$%2 Quantia no Banco: R$%3 Quantia na Mão: R$%4
- снял $%1 от их банды банка. Gang Bank Баланс: $%2 банка Баланс: $%3 на руку Баланс: $%4
- hat $%1 vom Gangkonto abgehoben. Gangkonto: $%2 Bankkonto: $%3 Bargeld: $%4
- 从他们的帮派银行账户取出 $%1。帮派银行余额:$%2 银行存款余额:$%3 手上现金:$%4
-
-
- %1 - %2 withdrew $%3 from their gang bank. Gang Bank Balance: $%4 Bank Balance: $%5 On Hand Balance: $%6
- %1 - %2 stáhl $%3 z jejich gangu banky. Gang bankovní konto: $%4 bankovní konto: $%5 po zralé úvaze rukou: $%6
- %1 - %2 a retiré $%3 du compte bancaire du Gang. Solde bancaire du Gang : $%4 Argent en banque(perso) : $%5 Cash : $%6
- %1 - %2 sacó $%3 de la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%4 Saldo Bancario: $%5 Saldo en Efectivo: $%6
-
-
- %1 - %2 sacou R$%3 no banco da sua gangue. Quantia no Banco da Gangue: R$%4 Quantia no Banco: R$%5 Quantia na Mão: R$%6
- %1 - %2 отозвала $%3 из их банды банка. Gang Bank Баланс: $%4 банка Баланс: $%5 на руку Баланс: $%6
- %1 - %2 hat $%3 vom Bankkonto abgehoben. Gangkonto: $%4 Bankkonto: $%5 Bargeld: $%6
- %1 - %2 从他们的帮派银行账户取出 $%3。帮派银行余额:$%4 银行存款余额:$%5 手上现金:$%6
-
-
- deposited $%1 into their gang bank. Gang Bank Balance: $%2 Bank Balance: $%3 On Hand Balance: $%4
- uložen $%1 do svého gangu banky. Gang bankovní konto: $%2 bankovní konto: $%3 po zralé úvaze rukou: $%4
- a déposé $%1 sur compte bancaire du Gang. Solde bancaire du Gang : $%2 Argent en banque(perso) : $%3 Cash : $%4
- depositó $%1 a la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%2 Saldo Bancario: $%3 Saldo en Efectivo: $%4
-
-
- depositou R$%1 no banco da sua gangue. Quantia no Banco da Gangue: R$%2 Quantia no Banco: R$%3 Quantia na Mão: R$%4
- депозит в размере $%1 в их банде банка. Gang Bank Баланс: $%2 банка Баланс: $%3 на руку Баланс: $%4
- hat $%1 auf sein Gangkonto eingezahlt. Gangkonto: $%2 Bankkonto: $%3 Bargeld: $%4
- 将 $%1 存进他们的帮派银行账户。帮派银行余额:$%2 银行存款余额:$%3 手上现金:$%4
-
-
- %1 - %2 deposited $%3 into their gang bank. Gang Bank Balance: $%4 Bank Balance: $%5 On Hand Balance: $%6
- %1 - %2 uloženy $%3 do jejich gangu banky. Gang bankovní konto: $%4 bankovní konto: $%5 po zralé úvaze rukou: $%6
- %1 - %2 a déposé $%3 sur compte bancaire du Gang. Solde bancaire du Gang : $%4 Argent en banque(perso) : $%5 Cash : $%6
- %1 - %2 depositó $%3 a la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%4 Saldo Bancario: $%5 Saldo en Efectivo: $%6
-
-
- %1 - %2 depositou R$%3 no banco da sua gangue. Quantia no Banco da Gangue: R$%4 Quantia no Banco: R$%5 Quantia na Mão: R$%6
- %1 - %2 депозит в размере $%3 в их банде банка. Gang Bank Баланс: $%4 банка Баланс: $%5 на руку Баланс: $%6
- %1 - %2 hat $%3 auf sein Gangkonto überwiesen. Gangkonto: $%4 Bankkonto: $%5 Bargeld: $%6
- %1 - %2 将 $%3 存进他们的帮派银行账户。帮派银行余额:$%4 银行存款余额:$%5 手上现金:$%6
-
-
- withdrew $%1 from their bank. Bank Balance: $%2 On Hand Balance: $%3
- stáhl $%1 z jejich banky. Banka Zůstatek: $%2 po zralé úvaze rukou: $%3
- a retiré $%1 de sa banque. Argent en banque : $%2 Cash : $%3
- sacó $%1 de su cuenta de banco. Saldo Bancario: $%2 Saldo en Efectivo: $%3
-
-
- sacou R$%1 do seu banco. Quantia no Banco: R$%2 Quantia na Mão: R$%3
- снял $%1 от своего банка. Банковский баланс: $%2 на руку Баланс: $%3
- hat $%1 von seinem Bankkonto abgehoben. Bankkonto: $%2 Bargeld: $%3
- 从他们的帮派银行账户取出 $%1。银行存款余额:$%2 手上现金:$%3
-
-
- %1 - %2 withdrew $%3 from their bank. Bank Balance: $%4 On Hand Balance: $%5
- %1 - %2 stáhl $%3 od své banky. Banka Zůstatek: $%4 po zralé úvaze rukou: $%5
- %1 - %2 a retiré $%3 de sa banque. Argent en banque : $%4 Cash : $%5
- %1 - %2 sacó $%3 de su cuenta de banco. Saldo Bancario: $%4 Saldo en Efectivo: $%5
-
-
- %1 - %2 sacou R$%3 do seu banco. Quantia no Banco: R$%4 Quantia na Mão: R$%5
- %1 - %2 отозвала $%3 из своего банка. Банковский баланс: $%4 на руку Баланс: $%5
- %1 - %2 hat $%3 von seinem Bankkonto abgehoben. Bankkonto: $%4 Bargeld: $%5
- %1 - %2 从他们银行账户取出 $%3。银行存款余额:$%4 手上现金:$%5
-
-
- transferred $%1 to %2. Bank Balance: $%3 On Hand Balance: $%4
- přestoupil $%1 do %2. Banka Zůstatek: $%3 po zralé úvaze rukou: $%4
- a transféré $%1 à %2. Argent en banque : $%3 Cash : $%4
- transferió $%1 a $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
-
-
- transferiu R$%1 para %2. Quantia no Banco: R$%3 Quantia na Mão: R$%4
- перечислил $%1 %2. Банковский баланс: $%3 на руку Баланс: $%4
- hat %2 $%1 überwiesen. Bankkonto: $%3 Bargeld: $%4
- 转帐 $%1 给 %2。银行存款余额:$%3 手上现金:$%4
-
-
- %1 - %2 transferred $%3 to %4. Bank Balance: $%5 On Hand Balance: $%6
- %1 - %2 převedena $%3 až %4. Banka Zůstatek: $%5 po zralé úvaze rukou: $%6
- %1 - %2 a transféré $%3 à %4. Argent en banque : $%5 Cash : $%6
- %1 - %2 transferió $%3 a $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
-
-
- %1 - %2 transferiu R$%3 para %4. Quantia no Banco: R$%5 Quantia na Mão: R$%6
- %1 -%2 перевели $%3 до %4. Банковский баланс: $%5 на руку Баланс: $%6
- %1 - %2 hat %4 $%3 überwiesen. Bankkonto: $%5 Bargeld: $%6
- %1 - %2 转帐 $%3 给 %4。银行存款余额:$%5 手上现金:$%6
-
-
- deposited $%1 into their bank. Bank Balance: $%2 On Hand Balance: $%3
- uložen $%1 do své banky. Banka Zůstatek: $%2 po zralé úvaze rukou: $%3
- a déposé $%1 dans son compte. Argent en banque $%2 Cash : $%3
- depositó $%1 a su cuenta de banco. Saldo Bancario: $%2 Saldo en Efectivo: $%3
-
-
- depositou R$%1 no seu banco. Quantia no Banco: R$%2 Quantia na Mão: R$%3
- депозит в размере $%1 в их банке. Банковский баланс: $%2 на руку Баланс: $%3
- hat $%1 auf sein Bankkonto eingezahlt. Bankkonto: $%2 Bargeld: $%3
- 将 $%1 存进他们的银行账户。银行存款余额:$%2 手上现金:$%3
-
-
- %1 - %2 deposited $%3 into their bank. Bank Balance: $%4 On Hand Balance: $%5
- %1 - %2 uloženy $%3 do své banky. Banka Zůstatek: $%4 po zralé úvaze rukou: $%5
- %1 - %2 a déposé $%3 dans son compte. Argent en banque : $%4 Cash : $%5
- %1 - %2 depositó $%3 a su cuenta de banco. Saldo Bancario: $%4 Saldo en Efectivo: $%5
-
-
- %1 - %2 depositou R$%3 no seu banco. Quantia no Banco: R$%4 Quantia na Mão: R$%5
- %1 - %2 депозит в размере $%3 в свой банк. Банковский баланс: $%4 на руку Баланс: $%5
- %1 - %2 hat $%3 auf sein Bankkonto eingezahlt. Bankkonto: $%4 Bargeld: $%5
- %1 - %2 将 $%3 存进他们的银行账户。银行存款余额:$%4 手上现金:$%5
-
-
-
\ No newline at end of file
+
+
+
+
+ Setting up client, please wait...
+
+ Configurando cliente. Por favor espere...
+
+ Einrichten des Clients, bitte warten...
+ Caricamento dati, attendi...
+ Configuration du client. Patientez s'il vous plait...
+ Configurando o cliente. Por favor, aguarde...
+
+ 配置客户端,请稍等...
+
+
+ Waiting for the server to be ready...
+
+ Esperando a que el servidor esté listo...
+
+ Warten, bis der Server bereit ist...
+ Caricamento Server, attendi...
+ En attente du chargement du serveur...
+ Esperando o servidor estar pronto...
+
+ 等待服务器准备就绪...
+
+
+ extDB failed to load, please contact an administrator.
+
+ extDB no se pudo cargar, por favor contacte a un administrador.
+
+ extDB konnte nicht geladen werden, wenden Sie sich bitte an einen Administrator.
+ C'è stato un'errore con extDB, perfavore contatta un amministratore.
+ extDB ne s'est pas lancé correctement. Veuillez contacter un administrateur.
+ O extDB falhou ao carregar, por favor, contacte um administrador.
+
+ 数据加载失败,请联系管理员。
+
+
+ Finishing client setup procedure...
+
+ Finalizando configuración del cliente...
+
+ Finalisation de la procédure de configuration du client...
+ Fertigstellen der Client-Einrichtungs-Prozedur...
+ Completando procedura d'inizializzazione
+ Terminando o processo de configuração do cliente...
+
+ 完成客户端设置程序...
+
+
+
+
+ Bruce's Outback Outfits
+ Bruceovy Outback Oblečení
+ Vêtements de Bruce
+ Tienda de Ropa
+
+ Loja de Roupas
+ Sklep odzieżowy
+ Emporio di Bruce
+ Bruce's Outback Outfits
+ 服装商店
+
+
+ Altis Police Department Shop
+ Altis policejní oddělení Shop
+ Vêtements policiers
+ Tienda del Departamento de Policía
+
+ Loja de Roupas Policiais
+ Sklep Policyjny
+ Dipartimento della Polizia di Altis
+ Altis Polizei Department Geschäft
+ 警局商店
+
+
+ Mohammed's Jihadi Shop
+ Mohamedův džihád Shop
+ Vêtements rebelle
+ Tienda Jihadi de Mohamed
+ Negozio della Jihad di Mohammed
+
+ Loja de Roupas Rebeldes
+ Sklep samobójców AKBAR
+ Mohammed's Ausrüstungen
+ 叛军商店
+
+
+ Steve's Diving Shop
+ Steve je potápění obchod
+ Vêtements de plongée de Steve
+ Tienda de Buceo
+ Negozio Sub di Steve
+
+ Steve's Taucherausrüstung
+ Loja de equipamentos para Mergulho
+ Sklep dla nurków
+ 潜水商店
+
+
+ Billy Joe's Clothing
+ Billy Joe oblečení
+ Tienda de Ropa de Billy Joe
+
+ Billy Joe's Bekleidung
+ Emporio di Billy
+ Vêtements de tir
+ Loja de Roupa do Billy Joe
+ Billy Joe Odzież
+ 服装商店
+
+
+ Billy Joe's Firearms
+ Billy Joe Střelné zbraně
+ Tienda de Armas de Billy Joe
+
+ Billy Joe's Schusswaffen
+ Armeria di Billy Joe
+ Armurerie de Billy Joe
+ Loja de Armas do Billy Joe
+ Broń palna Billy Joe
+ 武器商店
+
+
+ Bobby's Kart-Racing Outfits
+ Billy Joe Střelné zbraně
+ Vêtements de kart
+ Tienda de Trajes de Carreras
+ Vestiario da Pilota
+
+ Bobby's Gokart Rennbekleidung
+ Loja de equipamentos para Kart
+ Sklep Kartingowy
+ 卡丁车赛车服
+
+
+ Altis Market
+ Altis Market
+ Mercado de Altis
+
+ Altis Markt
+ Mercato
+ Marché d'Altis
+ Mercado
+ Market Altis
+ 市场
+
+
+ Rebel Market
+ Rebel Market
+ Mercado Rebelde
+
+ Rebellen Markt
+ Mercato Ribelle
+ Marché Rebelle
+ Mercado Rebelde
+ Market Rebeliantów
+ 叛军市场
+
+
+ Gang Market
+ gang Market
+ Mercado Pandillero
+
+ Gang Markt
+ Mercato Gang
+ Marché de Gang
+ Mercado da Gangue
+ Market Gangu
+ 帮派市场
+
+
+ Gang Clothing
+ gang Oblečení
+ Ropa Pandillera
+
+ Gang Kleidung
+ Gang Abbigliamento
+ Vêtements de Gang
+ Roupa Gangue
+ Gang Odzież
+ 帮派服装
+
+
+ Wong's Food Cart
+ Wongova Food košík
+ Kiosko de Wong
+
+ Wong's Spezialitäten
+ Alimentari
+ Restaurant de Wong
+ Praça de Alimentação
+ Przysmaki Wonga
+ 食品商
+
+
+ Gyro's Coffee
+ gyros Coffee
+ Cafetería de Gyro
+
+ Gyro's Café
+ Caffè
+ Café de Gyro
+ Café do Gyro
+ Kawiarnia
+ 咖啡店
+
+
+ Tonic's Narcotics
+ Tonic je narkotika
+ Narcotraficante
+
+ Drogendealer
+ Spacciatore
+ Dealeur de Drogue
+ Traficante
+ Sprzedawca 'Trawy'
+ 非法药品贸易商
+
+
+ Oil Trader
+ olej Trader
+ Comerciante de Petroleo
+
+ Ölhändler
+ Vendita Petrolio
+ Acheteur de Pétrole
+ Comprador de Petróleo
+ Skup Ropy
+ 石油贸易商
+
+
+ Local Fish Market
+ Místní Fish Market
+ Mercado Local del Pescado
+
+ Fischmarkt
+ Pescivendolo
+ Marché de Poissons
+ Mercado de Peixes
+ Sklep Rybny
+ 海产品市场
+
+
+ Glass Trader
+ sklo Trader
+ Comerciante de Vidrio
+
+ Glashändler
+ Vendita Vetro
+ Acheteur de Verre
+ Comprador de Vidro
+ Skup Szkła
+ 玻璃贸易商
+
+
+ Altis Industrial Trader
+ Altis Industrial Trader
+ Comerciante Industrial
+
+ Altis Industriehandel
+ Vendita materiali industriali
+ Acheteur de minerais
+ Comprador de Material Indústrial
+ Skup materiałów przemysłowych
+ 铁/铜贸易
+
+
+ APD Item Shop
+ APD Item Shop
+ Equipamiento Policial
+
+ APD Ausrüstung
+ Negozio Polizia
+ Equipement policier
+ Equipamentos da Polícia
+ Zbrojownia Policji
+ 警察物品店
+
+
+ Juan's Cement Laying
+ Juanovo Cement Pokládka
+ Fabrica de Cemento de Juan
+
+ Juan's Zementleger
+ Vendita Cemento
+ Acheteur de Ciment
+ Comprador de Cimento
+ Wytwórnia cementu
+ 水泥贸易商
+
+
+ Cash 4 Gold
+ Peněžní 4 Gold
+ Comprador de Oro
+
+ Goldhändler
+ Vendita Oro
+ Acheteur d'Or
+ Comprador de Ouro
+ Skup złota
+ 黄金贸易商
+
+
+ Diamond Dealer
+ Diamond Dealer
+ Comerciante de Diamantes
+
+ Juwelier
+ Gioielleria
+ Acheteur de Diamant
+ Comprador de Diamante
+ Skup Diamentów
+ 钻石贸易商
+
+
+ Salt Trader
+ sůl Trader
+ Comerciante de Sal
+
+ Salzhändler
+ Vendita Sale
+ Acheteur de Sel
+ Comprador de Sal
+ Skup soli
+ 食盐贸易商
+
+
+ Fuel Station Coffee
+ Palivo Coffee Station
+ Café de la Station service
+ Cafeteria de Gasolinera
+ Stazione di Servizio
+
+ Tankstellen Café
+ Loja de Conveniência
+ Caffe OLLEN
+ 加油站咖啡店
+
+
+
+
+ Close
+ Zavřít
+ Cerrar
+
+ Schließen
+ Fermer
+ Chiudi
+ Fechar
+ Zamknij
+ 关闭
+
+
+ Sell
+ Prodat
+ Vender
+
+ Verkaufen
+ Vendre
+ Vendi
+ Vender
+ Sprzedaj
+ 出售
+
+
+ Buy
+ Koupit
+ Comprar
+
+ Kaufen
+ Acheter
+ Compra
+ Comprar
+ Kup
+ 购买
+
+
+ Magazines
+ časopisy
+ Chargeurs
+ Cargadores
+ Caricatori
+ Magazyny
+
+ Munições
+ Magazine
+ 弹药
+
+
+ Accessories
+ Příslušenství
+ Accessoires
+ Accesorios
+ Accessori
+ Akcesoria
+
+ Acessórios
+ Zubehör
+ 附件
+
+
+ Weapons
+ Zbraně
+ Armes
+ Armas
+ Armi
+ Broń
+
+ Armas
+ Bewaffnung
+ 武器
+
+
+ Give
+ Dát
+ Dar
+
+ Geben
+ Donner
+ Dai
+ Dar
+ Daj
+ 给予
+
+
+ Use
+ Použití
+ Usar
+
+ Benutzen
+ Utiliser
+ Usa
+ Usar
+ Użyj
+ 使用
+
+
+ Remove
+ Odstranit
+ Remover
+
+ Entfernen
+ Supprimer
+ Rimuovi
+ Remover
+ Usuń
+ 删除
+
+
+ Settings
+ Nastavení
+ Configuración
+
+ Einstellungen
+ Paramètres
+ Impostazioni
+ Configurar
+ Opcje
+ 设置
+
+
+ Rent
+ Nájemné
+ Rentar
+
+ Mieten
+ Louer
+ Affitta
+ Alugar
+ Wynajmij
+ 租赁
+
+
+ Retrieve
+ získat
+ Recuperar
+
+ Ausparken
+ Récupérer
+ Ritira
+ Recuperar
+ Odzyskaj
+ 取回
+
+
+ You did not select anything.
+ Nevybrali jste nic.
+ No seleccionastes algo.
+
+ Du hast nichts ausgewählt.
+ Vous n'avez rien sélectionné.
+ Non hai selezionato nulla.
+ Você não selecionou nada.
+ Niczego nie zaznaczyłeś.
+ 你没有选择任何东西。
+
+
+ Yes
+ Ano
+ Si
+
+ Ja
+ Oui
+ Si
+ Sim
+ Tak
+ 是
+
+
+ No
+ Ne
+ No
+
+ Nein
+ Non
+ No
+ Não
+ Nie
+ 否
+
+
+ Cancel
+ Zrušit
+ Cancelar
+
+ Abbrechen
+ Annuler
+ Annulla
+ Cancelar
+ Anuluj
+ 取消
+
+
+
+
+ Admin Menu
+ Nabídka admin
+ Menu de Admin
+
+ Admin Menü
+ Menu Admin
+ Menu Admin
+ Menu Admin
+ Admin Menu
+ 管理菜单
+
+
+ Put the amount you want to compensate:
+ Vložte částku, kterou chcete kompenzovat:
+ Entrez le montant à rembourser
+ Pon la cantidad que quieres compensar:
+ Inserire l'importo da rimborsare:
+
+ Trage den Wert für die Entschädigung ein:
+ Coloque a quantidade que você quer compensar:
+ Wprowadź wartość rekompensaty
+ 输入赔偿金额:
+
+
+ Get ID
+ Získat ID
+ Ver ID
+
+ ID abfragen
+ Obtenir ID
+ Vedi ID
+ Obter ID
+ ID gracza
+ 获取 ID
+
+
+ Spectate
+ spectate
+ Observar
+ Osserva
+
+ Zuschauen
+ Regarder
+ Observar
+ Obserwuj
+ 观看
+
+
+ Teleport
+ Teleport
+ Teleport
+ Teleport
+
+ Teleport
+ Téléporter
+ Teleportar
+ Teleport
+ 传送
+
+
+ TP Here
+ TP Zde
+ TP Aquí
+ TP Qui
+
+ TP Hier
+ TP Ici
+ TP Aqui
+ Do Mnie
+ 传送到这儿
+
+
+ You cannot teleport the player here because they are inside of a vehicle.
+ Nelze teleportovat přehrávač zde proto, že jsou uvnitř vozidla.
+ Vous ne pouvez pas TP le joueur ici, car il est actuellement dans un véhicule.
+ No puedes teletransportar a este jugador aquí, porque está dentro de un vehículo.
+ Il giocatore non può essere teletrasportato perché in un veicolo.
+ Nie można teleportować gracza tutaj, ponieważ są one wewnątrz pojazdu.
+ Você não pode se teletransportar o jogador aqui, porque ele esta dentro de um veículo.
+ Вы не можете телепортировать игрока здесь, потому что они находятся внутри автомобиля.
+ Du kannst den Spieler nicht hierher teleportieren, weil dieser im Inneren eines Fahrzeugs sitzt.
+ 你不能将玩家传送到这里,因为他们在车内。
+
+
+ Debug
+ Ladit
+ Debug
+ Debug
+
+ Debug
+ Debug
+ Depuração
+ Debug
+ 清除BUG
+
+
+ Comp
+ Comp
+ Comp
+ Comp
+
+ Entschädigen
+ Compenser
+ Compensar
+ Comp
+ 赔偿金
+
+
+ GodMode
+ Božský mód
+ Modo Dios
+ GodMode
+
+ Gott-Mod
+ God
+ Modo Deus
+ GodMode
+ 上帝模式
+
+
+ Freeze
+ Zmrazit
+ Congelar
+ Congelare
+
+ Einfrieren
+ Freeze
+ Congelar
+ Zamroź
+ 冻结
+
+
+ Markers
+ markery
+ Marcadores
+ Indicatori
+
+ Spieler Markierungen
+ Marqueurs
+ Marcações
+ Markery
+ 标记
+
+
+
+
+ Querying...
+ Dotazování ...
+ Buscando...
+
+ Abfrage läuft...
+ Interrogation...
+ Ricerca...
+ Pesquisando...
+ Wyszukuję...
+ 查询...
+
+
+ Searching Database for vehicles...
+ Vyhledávání databáze pro vozidla ...
+ Buscando Vehiculo en la Base de Datos
+
+ Durchsuche Garage nach Fahrzeugen...
+ Recherche des véhicules dans le garage...
+ Ricerca di veicoli nel Database...
+ Buscando por veículo na base de dados...
+ Szukam pojazdu w bazie danych...
+ 从数据库中搜索载具...
+
+
+ You are already querying a player.
+ Již jste dotazování přehrávač.
+ Ya estan buscando a un jugador.
+
+ Du fragst bereits einen Spieler ab.
+ Vous êtes déjà en train d'interroger ce joueur.
+ Stai già ispezionando un giocatore.
+ Você já está buscando por um jogador.
+ Przeszukujesz gracza
+ 你已经在查询玩家了。
+
+
+ Player no longer exists?
+ Hráč neexistuje?
+ El jugador ya no existe?
+
+ Spieler existiert nicht mehr?
+ Le joueur ne semble pas exister.
+ Il giocatore non esiste più
+ Jogador não existe mais?
+ Gracz już nie istnieje?
+ 玩家不存在?
+
+
+ You are about to give yourself $%1 to compensate to another player <br/><br/>You must give this cash to the person you are compensating manually.
+ Chystáte se dát si $%1 kompenzovat jinému hráči <br/><br/> Musíte dát tuto hotovost na osoby, které jsou kompenzačním ručně.
+ Estas a punto de darte $%1 para compensar a otro jugador<br/><br/> Debes darle el dinero a la persona manualmente.
+ Stai per donarti €%1 per rimborsare un altro giocatore <br/><br/> Dovrai donare il denaro manualmente.
+
+ Du bist dabei dir selbst $%1 zu geben, um einen anderen Spieler zu entschädigen.<br/><br/>Gib das Geld dann an den Spieler weiter.
+ Vous êtes sur le point de vous donner $%1 pour rembourser un autre joueur <br/><br/> Merci de le lui donner manuellement.
+ Você está prestes a dar para você mesmo R$%1 para compensar outro jogador <br/><br/>Você deve dar este dinheiro para a pessoa que você está compensando manualmente.
+ Właśnie przydzieliłeś sobie $%1 w celu rekompensaty graczowi <br/><br/>Musisz przekazać te środki osobiście osobie poszkodowanej.
+ 你将获得赔偿金 $%1,小心别输入错误了 <br/><br/>你只能手动操作把这笔钱给玩家。
+
+
+ You have added $%1 to your account.
+ Přidali jste $%1 se ke svému účtu.
+ Has agregado $%1 a tu cuenta.
+ €%1 ti sono stati accreditati.
+
+ Dir wurden $%1 auf deinem Bankkonto gutgeschrieben.
+ Vous avez ajouté $%1 à votre compte
+ Você adicionou R$%1 em sua conta.
+ Przekazałeś na konto $%1
+ 你已将 $%1 添加到你的账户上 。
+
+
+ You can not go above $999,999
+ Nemůžete jít nad $ 999999
+ No te puedes dar más de $999,999
+ Non puoi superare i €999.999
+
+ Maximaler Wert $999,999!
+ Vous ne pouvez pas aller au-dessus $999,999 !
+ Você não pode ir além de $999,999!
+ Nie można obracać kwotami wyższymi niż $999,999!
+ 你不能处理超过 $999,999 的资金
+
+
+ Please type in the amount to compensate.
+ Prosím, zadejte částku, která má kompenzovat.
+ Por favor pon la cantidad a compensar.
+ Si prega di inserire l'importo da rimborsare.
+
+ Bitte Entschädigungsbetrag eingeben.
+ S'il vous plaît entrez le montant pour compenser.
+ Por favor, insira a quantidade para compensar.
+ Wprowadź kwotę rekompensaty
+ 请输入赔偿金额。
+
+
+ You have disabled %1's input.
+ Jste zakázali vstup %1 je.
+ Has deshabilitado los controles de %1
+ Hai disattivato l'input di %1.
+
+ Du hast %1 eingefroren. Er kann sich nicht mehr bewegen.
+ Vous avez désactivé les contrôles de %1.
+ Você desabilitou as entradas de %1.
+ Zablokowałeś grę gracza $%1
+ 您被禁止 %1 秒输入。
+
+
+ You have enabled %1's input.
+ Jste povolili vstup %1 je.
+ Has habilitado los controles de %1
+ Hai riabilitato l'input di %1.
+
+ Du hast %1 wieder aufgetaut.
+ Vous avez activé les contrôles de %1.
+ Você habilitou as entradas de %1.
+ Odblokowałeś grę gracza $%1
+ 你被允许 %1 秒输入。
+
+
+ You can't do that dumbass.
+ Můžete to udělat blbec.
+ No puedes hacer eso, pendejo
+ Impossibile.
+
+ Das geht gerade nicht.
+ Vous ne pouvez pas le faire sur vous-même.
+ Você não pode fazer isso, idiota.
+ Tak nie można!
+ 你不可以这样做。
+
+
+ Your Admin Level is not high enough.
+ Váš správce úroveň není dostatečně vysoká.
+ No tienes suficiente nivel de Admin.
+ Il tuo livello amministratore non soddisfa i requisiti.
+
+ Dein Admin Level ist nicht hoch genug.
+ Votre niveau admin n'est pas suffisamment élevé.
+ Seu nível de Admin não é alto o bastante.
+ Nie masz wystarczających uprawnień, za niski poziom administracyjny
+ 您的管理等级不够高。
+
+
+ Player Markers Disabled.
+ Hráč Markers pro invalidy.
+ Marqueurs désactivés
+ Marcadores de Jugadores Deshabilitados
+ Indicatori Giocatori Disabilitati.
+
+ Spieler Markierungen deaktiviert.
+ Marcações dos jogadores desabilitada.
+ Markery 'OFF' graczy Wyłączone
+ 禁用玩家标记。
+
+
+ Player Markers Enabled.
+ Hráč Markers Povoleno.
+ Marqueurs activés
+ Marcadores de Jugadores habilitados.
+ Indicatori Giocatori Abilitati.
+
+ Spieler Markierungen aktiviert.
+ Marcações dos jogadores habilitada.
+ Markery 'ON' graczy Włączone
+ 启用玩家标记。
+
+
+ God mode enabled
+ nesmrtelnost povolen
+ Mode Dieu activé
+ Modo Dios habilitado
+ Godmode abilitata
+ God mode włączony
+ Modo Deus ativado
+ Режим бога включен
+ Gott-Modus aktiviert.
+ 启用上帝模式
+
+
+ God mode disabled
+ nesmrtelnost zakázán
+ Mode Dieu désactivé
+ Modo Dios deshabilitado
+ Godmode disabilitata
+ God mode wyłączony
+ Modo Deus desativado
+ Режим бога отключен
+ Gott-Modus deaktiviert.
+ 禁用上帝模式
+
+
+ Action Cancelled
+ akce byla zrušena
+ Acción Cancelada
+
+ Aktion abgebrochen.
+ Action annulée
+ Azione Annullata
+ Ação Cancelada
+ Anulowano akcję
+ 操作取消
+
+
+ Commander/Tactical View Disabled
+ Commander/Tactical View Disabled
+ Commander/Tactical View Disabled
+ Commander/Tactical View Disabled
+ Commander/Vue tactique désactivée
+ Befehlshaber-Übersicht deaktiviert.
+ Commander/Tactical View Disabled
+ Commander/Tactical View Disabled
+ Commander/Tactical View Disabled
+ 指挥官/战术视图被禁用
+
+
+ Hit spacebar to place the container.
+ Hit mezerníku na místo Kontejner.
+ Appuyez sur espace pour placer le conteneur.
+ Aprieta la barra de espacio para colocar el Contenedor.
+ Premi barra spaziatrice per posizionare il contenitore.
+ Hit spacji, aby umieścić pojemnik.
+ Pressione a barra de espaço para colocar.
+ Хит пробел, чтобы поместить контейнер.
+ Drücke die Leertaste, um den Container zu platzieren.
+ 按空格键放置物品。
+
+
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Placement of container has been aborted.
+ Die Platzierung des Containers wurde abgebrochen.
+ 物品放置已被中止.
+
+
+ Your faction is not allowed to chop vehicles!
+ Váš frakce není povoleno sekat vozidla!
+ Votre faction ne peut pas vendre les véhicules !
+ Tu facción no tiene permitido usar esta tienda!
+ La tua fazione non può rubare veicoli!
+ Twoja frakcja nie może posiekać pojazdy!
+
+ Sua facção não têm direito de usar essa loja
+ Deiner Fraktion ist es nicht erlaubt, Fahrzeuge bei dem Schrotthändler zu verkaufen!
+ 你的帮派不允许出售这载具!
+
+
+ A pickaxe is required
+ Je vyžadován krumpáč
+ Requieres un pico
+
+ Hier benötigst du eine Spitzhacke!
+ Vous avez besoin d'une pioche.
+ Devi possedere un piccone!
+ A picareta é necessária
+ Wymagana jest kilof
+ 你需要一把镐
+
+
+ You are restrained
+ Ty jsou omezeny
+ Estas retenido
+
+ Wie willst du mit gefesselten Händen sammeln?
+ Vous êtes menotté.
+ Sei stato ammanettato
+ Você está algemado
+ Ty skrępowaniem
+ 你被限制
+
+
+ You can't do this while you surrender
+ Můžete to udělat, když se vzdáš
+ No puedes hacer esto mientras te estas rindiendo
+
+ Mit erhobenen Händen kannst du nichts sammeln!
+ Vous ne pouvez pas faire cela tant que vous avez les mains sur la tête.
+ Non puoi effettuare questa azione mentre tieni le mani in alto
+ Você não pode fazer isso enquanto você se entrega
+ Nie można tego zrobić, gdy się poddasz
+ 你投降时不能这么做
+
+
+ You can't gather this resource with this vehicle!
+ Nemůžete shromáždit tento prostředek s tímto vozidlem!
+ No puedes recolectar este recurso con este vehiculo!
+
+ Du kannst diese Ressource nicht mit diesem Fahrzeug abbauen!
+ Vous ne pouvez pas récolter cette ressource avec ce véhicule.
+ Non puoi raccogliere questa risorsa con questo veicolo !
+ Voce não pode colher este recurso com este veiculo!
+ You can't gather this resource with this vehicle!
+ 你不能用这载具收集这个资源!
+
+
+ You have no business using this.
+ Nemáš podnikání pomocí tohoto.
+ Vous n'avez pas le niveau pour utiliser la console.
+ No tienes permiso de usar esto.
+ Non hai il permesso di farlo.
+ Nie masz działalność z wykorzystaniem tego produktu.
+ Você não tem nenhum negócio usando isto.
+ У вас нет бизнеса с помощью этого.
+ Du hast hier nichts verloren!
+ 您无权这样做。
+
+
+ Admin %1 has opened the debug console.
+ Admin %1 otevřel ladění konzoli.
+ Administrateur %1 a ouvert la console de debug.
+ Administrador %1 ha abierto la consola de depuración.
+ Admin %1 ha aperto la console di debug.
+ Administrator %1 otworzył konsoli debugowania.
+ Administrador %1 abriu o console de depuração.
+ Администратор %1 открыл консоль отладки.
+ Admin %1 hat die Debug-Konsole geöffnet.
+ 管理员 %1 已打开调试控制台。
+
+
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ You cannot drop keys to a vehicle which is locked and you are inside of.
+ Du kannst den Schlüssel nicht wegschmeißen, weil das Auto verschlossen ist und du drin sitzt.
+ 你不能把钥匙掉在一辆锁着的车里,你就在车里面。
+
+
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ Emergency lights are not set for this vehicle.
+ 此车辆没有设置应急灯。
+
+
+
+
+ Bank Account Management
+ Vedení bankovního účtu
+ Cuenta Bancaria
+
+ Bankkonto verwalten
+ Gestion du Compte Bancaire
+ Gestione Bancaria
+ Conta Bancária
+ Bankomat Altis
+ 银行账户管理
+
+
+ Withdraw
+ ustoupit
+ Retirar
+
+ Abheben
+ Retirer
+ Preleva
+ Sacar
+ Wypłać
+ 取款
+
+
+ Deposit
+ Vklad
+ Depositar
+
+ Einzahlen
+ Déposer
+ Deposita
+ Depositar
+ Deopozyt
+ 存款
+
+
+ Withdraw: Gang
+ Odstoupit: Gang
+ Retirer: Gang
+ Retirar: Pandilla
+
+ Sacar: gangue
+ Ritira: Gang
+ Wycofaj: Gang
+ Abheben: Gang
+ 取款:帮派
+
+
+ Deposit: Gang
+ Záloha: Gang
+ Déposer: Gang
+ Depositar: Pandilla
+
+ Depositar: Gangue
+ Deposita: Gang
+ Depozyt: Gang
+ Einzahlen: Gang
+ 存款: 帮派
+
+
+ Transfer
+ Převod
+ Transferir
+
+ Überweisen
+ Transférer
+ Trasferisci
+ Transferir
+ Przelew
+ 转账
+
+
+ You can't deposit more then $999,999 at a time
+ Nemůžete vložit více než 999.999 $ najednou
+ No puedes depositar mas de $999,999 a la vez
+
+ Du kannst nicht mehr als $999,999 gleichzeitig einzahlen.
+ Vous ne pouvez pas déposer plus de $999,999.
+ Non puoi depositare più di €999,999 alla volta
+ Você não pode transferir mais de R$999.999 em uma transação
+ Możesz jednorazowo zdeponować nie więcej niż $999,999
+ 您一次不能存入超过 $999,999
+
+
+ The amount entered isn't a numeric value.
+ Uvedená částka není číselná hodnota.
+ No escribistes un valor numérico.
+
+ Die eingegebene Zahl ist keine richtige Zahl.
+ La valeur entrée n'est pas un nombre.
+ Il valore inserito non è numerico.
+ O valor digitado não é um número.
+ Wprwadzona wartość nie jest liczbą
+ 输入的金额不是数值。
+
+
+ You need to select someone to transfer to
+ Je třeba vybrat někoho převést na
+ Debes seleccionar a quien transferirle el dinero
+
+ Du hast niemanden für die Überweisung ausgewählt.
+ Sélectionnez une personne pour le transfert.
+ Devi selezionare qualcuno a cui trasferire l'importo
+ Você tem que selecionar para quem deseja transferir
+ Musisz wybrać odbiorcę przelewu
+ 您需要选择某人来转账
+
+
+ The player selected doesn't seem to exist?
+ Hráč vybraný Nezdá se, že neexistuje?
+ Le joueur sélectionné ne semble pas exister
+ El jugador que seleccionastes no existe?
+
+ Der Spieler scheint nicht zu existieren?
+ Sembra che il giocatore selezionato non esista
+ O jogador selecionado parece não existir!
+ Wybrany gracz wydaje się nie występować w grze
+ 选定的玩家似乎不存在?
+
+
+ You can't transfer more then $999,999
+ Nemůžete přenést více než 999.999 $
+ No puedes transferir más de $999,999
+
+ Du kannst nicht mehr als $999,999 überweisen!
+ Vous ne pouvez pas transférer plus de $999,999.
+ Non puoi trasferire più di €999.000 alla volta
+ Você pode trasferir no máximo R$999.999.
+ Możesz jednorazowo przelać nie więcej niż $999,999
+ 你转账不能超过 $999,999
+
+
+ You don't have that much in your bank account!
+ Nemusíte to hodně na váš bankovní účet!
+ No tienes tanto dinero en tu cuenta de banco!
+
+ Du hast nicht so viel Geld auf deinem Bankkonto!
+ Vous n'avez pas autant dans votre compte en banque !
+ Non hai fondi sufficienti nel tuo conto in banca!
+ Você não tem todo esse dinhero na sua conta bancária
+ Nie masz tyle środków na koncie!
+ 你的银行账户里没有那么多钱!
+
+
+ You don't have that much in your gang bank account!
+ Nemusíte to hodně ve svém gang bankovní účet!
+ No hay tanto dinero en la cuenta de tu pandilla!
+ Il conto della gang non ha abbastanza denaro!
+ Nie ma tego dużo na koncie bankowym gang!
+
+ Vous n'avez pas autant sur le compte de votre gang !
+ Você não tem todo esse dinhero na sua gangue!
+ Ihr habt nicht genügend Geld auf dem Gangkonto!
+ 你的帮派银行账户里没有那么多钱!
+
+
+ You do not have enough money in your bank account, to transfer $%1 you will need $%2 as a tax fee.
+ Nemáte dostatek peněz na váš bankovní účet, převést $%1 budete potřebovat $%2 jako daňový poplatek.
+ No tienes el dinero suficiente, para transferir $%1 necesitaras $%2 para pagar como cuota.
+
+ Du hast nicht genug Geld auf deinem Bankkonto, es kostet $%2 um $%1 zu überweisen.
+ Vous n'avez pas assez d'argent dans votre compte bancaire, pour transférer $%1 vous devez payer $%2 de taxes.
+ Non hai fondi sufficienti nel tuo conto in banca, per trasferire €%1 necessiti di €%2 per pagare la tassa di trasferimento.
+ Você não tem dinheiro suficiente na sua conta bancária. Para trasferir R$%1 você irá pagar R$%2 de taxa
+ Nie masz wystarczająco dużo środków na końcie, do przelewu $%1 będziesz potrzebował jeszcze $%2 na opłatę
+ 你的银行账户里没有足够的钱, 要转账 $%1 你需要支付 $%2 作为手续费.
+
+
+ You have transfered $%1 to %2.\n\nA tax fee of $%3 was taken for the wire transfer.
+ Jste přenesli $%1 do %2. \n\nA daňový poplatek ve výši $%3 byla pořízena na bankovním převodem.
+ Has transferido $%1 a $%2 \n\nUna cuota de $%3 fue tomada de tu cuenta.
+
+ Du hast $%1 an %2 überwiesen.\n\nEine Gebühr von $%3 wurde verrechnet.
+ Vous avez transféré $%1 à %2.\n\nA Une taxe de $%3 vous a été prélevée pendant le transfert.
+ Hai trasferito €%1 a %2.\n\nSono stati trattenuti €%3 di tassa per il trasferimento.
+ Você trasferiu R$%1 para %2.\n\nA taxa de trasferência foi de: R$%3.
+ Przelałeś $%1 do %2.\n\nA opłata $%3 pobrana przez WIRE TRANSFER
+ 你已转账 $%1 给 %2。\n\n手续费 $%3 已从你的账户扣除。
+
+
+ %1 has wire transferred $%2 to you.
+
+ %1 ha transferido $%2 a tu cuenta.
+
+ %1 hat dir $%2 überwiesen.
+ %1 vous a fait un virement de $%2.
+ %1 ha effettuato un bonifico sul tuo conto di €%2
+ %1 transferiu $%2 para a tua conta.
+
+ %1 通过电汇将 $%2 转账给你。
+
+
+ You can't withdraw more then $999,999
+ Nemůžete zrušit více než 999.999 $
+ No puedes retirar más de $999,999
+
+ Du kannst nicht mehr als $999,999 abheben.
+ Vous ne pouvez pas retirer plus de $999,999.
+ Non puoi prelevare più di €999.000 in una volta
+ Você pode sacar no máximo R$999.999
+ Możesz jednorazowo pobrać maks $999,999
+ 你不能取款大于 $999,999
+
+
+ You can't withdraw less then $100
+ Nemůžete odvolat méně než 100 $
+ No puedes retirar menos de $100
+
+ Du kannst nicht weniger als $100 abheben.
+ Vous ne pouvez pas retirer moins de $100.
+ Non puoi prelevare meno di €100
+ Você não pode sacar menos de $100.
+ Nie możesz pobrać mniej niż $100
+ 你不能取款小于 $100
+
+
+ You have withdrawn $%1 from your bank account
+ Jste staženy $%1 z vašeho bankovního účtu
+ Has retirado $%1 de tu cuenta bancaria
+
+ Du hast $%1 von deinem Bankkonto abgehoben.
+ Vous avez retiré $%1 de votre compte en banque.
+ Hai prelevato €%1 dal tuo conto in banca
+ Você sacou R$%1 de sua conta bancária.
+ Pobrałeś z konta kwotę $%1
+ 你已从你的银行账户取走 $%1
+
+
+ You have withdrawn $%1 from your gang.
+ Jste staženy $%1 z naší bandy
+ Has retirado $%1 de tu pandilla
+ Hai ritirato €%1 dal nostro gruppo.
+ Masz %1 $ wycofane z naszego gangu.
+
+ Vous avez retiré $%1 de votre gang.
+ Você sacou R$%1 da sua gangue
+ Du hast $%1 vom Gangkonto abgehoben.
+ 你已从你的帮派账户取走 $%1 .
+
+
+ Someone is already trying to withdraw from your gang.
+ Někdo se již snaží ustoupit od svého gangu.
+ Quelqu'un est déjà en train de retirer de l'argent de votre gang.
+ Alguien ya esta tratando de retirar dinero de tu pandilla.
+ Qualcuno sta già cercando di ritirare del denaro dal fondo gang.
+ Ktoś już próbował wycofać się ze swojego gangu.
+
+ Alguém já está tentando sacar da sua gangue.
+ Jemand versucht bereits, Geld vom Gangkonto abzuheben.
+ 有人从你的帮派账户中取款.
+
+
+ You do not have that much cash on you.
+ Nemáte tolik peněz na vás.
+ No tienes tanto dinero contigo.
+
+ Du hast nicht so viel Geld bei dir.
+ Vous n'avez pas autant d'argent sur vous.
+ Non hai abbastanza denaro con te.
+ Você não tem todo esse dinheiro.
+ Nie masz przy sobie tyle pieniędzy
+ 你身上没有那么多现金.
+
+
+ You have deposited $%1 into your bank account
+ Máte uloženy $%1 na váš bankovní účet
+ Has depositado $%1 en tu cuenta de banco.
+
+ Du hast $%1 auf dein Bankkonto überwiesen.
+ Vous avez déposé $%1 dans votre compte en banque.
+ Hai despositato €%1 nel tuo conto bancario
+ Você depositou R$%1 na sua conta bancária
+ Zdeponowałeś na koncie bankowym $%1
+ 你已将 $%1 存入到你的银行账户
+
+
+ You have deposited $%1 into your gang's bank account.
+ Máte uloženy $%1 na bankovní účet svého gangu.
+ Has depositado $%1 en la cuenta de tu pandilla.
+
+ Du hast $%1 auf das Gangkonto überwiesen.
+ Vous avez déposé $%1 sur le compte en banque de votre gang.
+ Hai despositato €%1 nei fondi della tua gang.
+ Você depositou R$%1 na conta da sua gangue.
+ Zdeponowałeś na koncie gangu kwotę $%1.
+ 你已将 $%1 存入到你的帮派账户.
+
+
+ Someone is already trying to deposit into your gang's bank account.
+ Někdo se již snaží vložit na bankovní účet svého gangu.
+ Quelqu'un est déjà en train de déposer dans le compte bancaire de votre gang.
+ Alguien ya esta tratando de depositar en la cuenta de banco de tu pandilla.
+ Qualcuno sta già cercando di depositare del denaro nel conto della Gang.
+ Ktoś jest już stara się o wpłatę na rachunek bankowy swojego gangu.
+
+ Alguém já está tentando depositar na conta da sua gangue.
+ Jemand versucht bereits Geld auf das Gangkonto einzuzahlen.
+ 有人存款到你的帮派银行账户.
+
+
+ You are not in a Gang!
+ Nejste v gangu!
+ Vous n'êtes pas dans une bande!
+ ¡No estás en una pandilla!
+ Non sei in un Gang!
+ Nie jesteś w gangu!
+ Você não está em uma gangue!
+ Du bist nicht in einer Gang!
+ 你没有在帮派里!
+
+
+
+
+ Altis Mobile
+ Altis Mobile
+ Celular
+
+ Altis Mobilfunk
+ Altis Mobile
+ Cellulare Altis
+ Celular
+ Telefon
+ 手机
+
+
+ Message To Send:
+ Zpráv pro odeslání:
+ Mensaje a Enviar:
+
+ Deine Nachricht:
+ SMS à Envoyer :
+ Messaggio da inviare:
+ Mensagem à enviar:
+ Treść wiadomości
+ 发送信息:
+
+
+ Text Message:
+ Textová zpráva:
+ Mensaje:
+
+ Nachricht:
+ Message Texte :
+ Msg Giocatore:
+ Mensagem:
+ Do: Gracz
+ 发短信:
+
+
+ Text Police
+ Text Police
+ Msg Policía
+
+ An die Polizei
+ Police
+ Msg Polizia
+ Polícia
+ Do: Policja
+ 发短信给警察
+
+
+ Text Admins
+ textové Administrátoři
+ Msg Admin
+
+ An die Admins
+ Requête Admin
+ Msg Admin
+ Msg Admins
+ Do: Admin
+ 发短信给管理
+
+
+ Admin Message
+ admin Message
+ Msg de Admin
+
+ Admin-Nachricht
+ Message Admin
+ Admin Msg
+ Admin Msg
+ AdmGracz
+ 管理员信息
+
+
+ Admin Msg All
+ Admin zpráva Vše
+ Admin Msg All
+
+ Admin-Nachricht an alle
+ Admin MSG ALL
+ Admin Msg
+ Admin Msg All
+ SMS do Wszyscy
+ 管理员全服信息
+
+
+ Request EMS
+ žádost o EMS
+ Pedir Médico
+
+ An die Sanitäter
+ SAMU
+ Msg medici
+ Chamar SAMU
+ MEDYK
+ 发短信给医疗
+
+
+
+
+ You must enter a message to send!
+ You must enter a message to send!
+ You must enter a message to send!
+ You must enter a message to send!
+ Du musst eine Nachricht eingeben!
+ Vous devez entrer un message à envoyer!
+ You must enter a message to send!
+ You must enter a message to send!
+ You must enter a message to send!
+ 您必须输入要发送的消息!
+
+
+ Your message cannot exceed 400 characters!
+ Your message cannot exceed 400 characters!
+ Your message cannot exceed 400 characters!
+ Your message cannot exceed 400 characters!
+ Deine Nachricht darf maximal 400 Zeichen enthalten!!
+ Votre message ne peut pas excéder 400 caractères !
+ Your message cannot exceed 400 characters!
+ Your message cannot exceed 400 characters!
+ Your message cannot exceed 400 characters!
+ 您的信息不能超过400个字符!
+
+
+ You must select a player you are sending the text to!
+ You must select a player you are sending the text to!
+ You must select a player you are sending the text to!
+ You must select a player you are sending the text to!
+ Du musst einen Spieler auswählen!
+ Vous devez sélectionner un joueur à qui envoyer le message !
+ You must select a player you are sending the text to!
+ You must select a player you are sending the text to!
+ You must select a player you are sending the text to!
+ 当你发送信息时必须选择一个玩家!
+
+
+ You have sent a message to all EMS Units.
+ You have sent a message to all EMS Units.
+ You have sent a message to all EMS Units.
+ You have sent a message to all EMS Units.
+ Du hast eine Nachricht an alle Sanitäter gesendet.
+ Vous avez envoyé un message à tous les EMS.
+ You have sent a message to all EMS Units.
+ You have sent a message to all EMS Units.
+ You have sent a message to all EMS Units.
+ 你已经向所有医护人员发送了消息.
+
+
+ You have sent a message to all Police Units.
+ You have sent a message to all Police Units.
+ You have sent a message to all Police Units.
+ You have sent a message to all Police Units.
+ Du hast eine Nachricht an alle Polizisten gesendet.
+ Vous avez envoyé un message à tous les Police.
+ You have sent a message to all Police Units.
+ You have sent a message to all Police Units.
+ You have sent a message to all Police Units.
+
+
+
+ You have sent a message to all Admins.
+ You have sent a message to all Admins.
+ You have sent a message to all Admins.
+ You have sent a message to all Admins.
+ Du hast eine Nachricht an alle Admins gesendet.
+ Vous avez envoyé un message à tous les Admins.
+ You have sent a message to all Admins.
+ You have sent a message to all Admins.
+ You have sent a message to all Admins.
+
+
+
+ You sent %1 a message: %2
+ You sent %1 a message: %2
+ You sent %1 a message: %2
+ You sent %1 a message: %2
+ Du sendest %1 eine Nachricht: %2
+ Vous avez envoyé à %1 le message : %2
+ You sent %1 a message: %2
+ You sent %1 a message: %2
+ You sent %1 a message: %2
+ 你向 %1 发送了信息: %2
+
+
+ You are not an admin!
+ You are not an admin!
+ You are not an admin!
+ You are not an admin!
+ Du bist kein Admin!
+ Vous n'êtes pas un admin !
+ You are not an admin!
+ You are not an admin!
+ You are not an admin!
+ 你不是管理员!
+
+
+ Admin Message Sent To: %1 - Message: %2
+ Admin Message Sent To: %1 - Message: %2
+ Admin Message Sent To: %1 - Message: %2
+ Admin Message Sent To: %1 - Message: %2
+ Admin Nachricht Gesendet an: %1 - Nachricht: %2
+ Message admin envoyé à %1 - Message : %2
+ Admin Message Sent To: %1 - Message: %2
+ Admin Message Sent To: %1 - Message: %2
+ Admin Message Sent To: %1 - Message: %2
+ 管理员消息发送给: %1 - 信息: %2
+
+
+ Admin Message Sent To All: %2
+ Admin Message Sent To All: %2
+ Admin Message Sent To All: %2
+ Admin Message Sent To All: %2
+ Admin Nachricht Gesendet an Alle: %2
+ Message admin envoyé à tous les joueurs : %2
+ Admin Message Sent To All: %2
+ Admin Message Sent To All: %2
+ Admin Message Sent To All: %2
+ 管理员发送信息到全体: %2
+
+
+ There are currently no police units available!
+ Momentálně nejsou k dispozici žádné policejní jednotky!
+ ¡Actualmente no hay unidades de policía disponibles!
+ В настоящее время нет полицейских подразделений!
+ Aktuell stehen keine Polizeieinheiten zur Verfügung!
+ Il n'y a actuellement aucune unité de police disponible!
+ Al momento non ci sono unità di polizia disponibili!
+ Actualmente não há unidades policiais disponíveis!
+ Obecnie nie ma żadnych jednostek policyjnych!
+ 目前没有警用单位!
+
+
+ There are currently no EMS units available!
+ Momentálně nejsou k dispozici žádné jednotky EMS!
+ Actualmente no hay unidades de EMS disponibles!
+ В настоящее время нет доступных модулей EMS!
+ Aktuell stehen keine Sanitäter zur Verfügung!
+ Il n'y a actuellement aucune unité EMS disponible !
+ Attualmente non ci sono unità EMS disponibili!
+ Não existem actualmente unidades EMS disponíveis!
+ Obecnie nie ma dostępnych jednostek EMS!
+ 目前没有特快专递单位!
+
+
+
+
+ Local Chop Shop
+ Místní Chop Shop
+ Desguazadero
+
+ Schrotthändler
+ Revendeur de véhicules volés
+ Ricettatore
+ Desmanche
+ Dziupla
+ 销赃盗窃的载具
+
+
+
+
+ Gang Management
+ gang Vedení
+ Administración de Pandilla
+
+ Gangübersicht
+ Gestion du Gang
+ Gestione Gang
+ Gerenciar Gangue
+ Gang Menu
+ 帮派管理
+
+
+ Gang Management - Current Gangs
+ Gang Management - Současné Gangs
+ Administracion de Pandilla - Pandillas Actuales
+
+ Gangübersicht - Aktuelle Gangs
+ Gestion de Gangs - Liste des Gangs Actuels
+ Gestione Gang - Gang Attuali
+ Gerenciar Gangue - Gangue atual
+ Gang - zarządzaj
+ 帮派管理-当前帮派
+
+
+ Join
+ Připojit
+ Unirse
+
+ Beitreten
+ Rejoindre
+ Unisciti
+ Entrar
+ Dołącz
+ 加入
+
+
+ Leave
+ Dovolená
+ Salir
+
+ Verlassen
+ Quitter
+ Abbandona
+ Sair
+ Opuść
+ 退出
+
+
+ Upgrade Slots
+ upgradem Slots
+ Aumentar Slots
+
+ Anzahl erhöhen
+ Augmenter Slots
+ Aumenta Posti
+ Aumentar o número de Slots
+ Powiększ gang
+ 升级人数
+
+
+ Kick
+ Kop
+ Expulsar
+
+ Kicken
+ Virer
+ Espelli
+ Expulsar
+ Wykop
+ 踢出
+
+
+ Set Leader
+ Set Leader
+ Hacer Líder
+
+ Neuer Anführer
+ Passer Chef
+ Imposta Capo
+ Passar Liderança
+ Ustaw lidera
+ 设置管理者
+
+
+ To create a gang it costs $%1
+ Chcete-li vytvořit gang stojí $%1
+ Cuesta $%1 para crear una pandilla
+
+ Le prix de création d'un gang est de %1$
+ Eine Gang zu erstellen kostet $%1.
+ Creare una gang costa $%1
+ Criar uma Gangue custa R$%1
+ Koszt ustanowienia gangu to $%1
+ 创建一个帮派的成本 $%1
+
+
+ Create
+ Vytvořit
+ Crear
+
+ Erstellen
+ Créer
+ Crea
+ Criar
+ Stwórz
+ 创建
+
+
+ Your Gang Name
+ Váš Gang Jméno
+ Nombre de tu Pandilla
+
+ Dein Gangname
+ Nom du Gang
+ Nome della tua Gang
+ Nome da Gangue
+ Nazwa gangu
+ 输入你要创建的帮派名字
+
+
+ Invite Player
+ Pozvat Player
+ Invitar Jugador
+
+ Spieler einladen
+ Inviter joueur
+ Invita Giocatore
+ Convidar Jogador
+ Zaproś
+ 邀请玩家
+
+
+ Disband Gang
+ rozpustit Gang
+ Deshacer Pandilla
+
+ Gang auflösen
+ Dissoudre Gang
+ Sciogli Gang
+ Desfazer Gangue
+ Opuść gang
+ 解散帮派
+
+
+ Gang Invitation
+ gang Pozvánka
+ Invitación de Pandilla
+
+ Gangeinladung
+ Invitation de Gang
+ Invito Gang
+ Convite para Gangue
+ Zaproszenie do gangu
+ 帮派邀请
+
+
+ Transfer Gang Leadership
+ Přeneste Gang Vedení
+ Transferir Liderazgo de Pandilla
+
+ Gangführung übertragen
+ Transfert du chef du Gang
+ Trasferisci Comando
+ Transferir Liderança
+ Przekaż kierowanie gangiem
+ 移交帮派管理
+
+
+ Upgrade Maximum Allowed Gang Members
+ Inovovat Maximální povolená Gang Členové
+ Aumentar Cantidad Máxima de Miembros de la Pandilla
+
+ Maximale Anzahl an Mitgliedern erhöhen
+ Augmentation du nombre de membre total
+ Aumenta numero massimo membri della Gang
+ Atualizar limite máximo de membros
+ Zwiększ maksymalną liczbę członków gangu
+ 升级帮派成员人数
+
+
+
+
+ You must create a gang first before capturing it!
+ You must create a gang first before capturing it!
+ Debes crear una pandilla antes de capturar este escondite!
+
+ Du musst erst in einer Gang sein, um das Versteck einnehmen zu können!
+ Vous devez créer un gang avant de le capturer !
+ Devi creare una gang prima di catturarla!
+ Você precisa criar uma gangue antes de tentar capturar!
+ Przed przechwyceniem musisz stworzyć gang
+ 您必须先创建一个帮派然后才能建立帮派据点!
+
+
+ Your gang already has control over this hideout!
+ Naše parta už má kontrolu nad tímto úkrytu!
+ Tu Pandilla ya tiene control de este escondite!
+
+ Deine Gang hat bereits die Kontrolle über dieses Versteck!
+ Votre gang a déjà le contrôle de cette planque !
+ La tua Gang ha già il controllo di questo Covo
+ Sua gangue já tem controle sobre esse esconderijo!
+ Twój gang aktualnie kontroluje tę kryjówkę !
+ 你的帮派已经控制了这个帮派据点!
+
+
+ Only one person shall capture at once!
+ Pouze jedna osoba musí být schopná zachytit najednou!
+ Solo una persona puede capturar a la vez!
+
+ Nur eine Person kann das Versteck einnehmen!
+ Une seule personne à la fois peut capturer la cachette !
+ Può conquistare solo una persona alla volta!
+ Somente uma pessoa pode capturar!
+ Przejmowanie powinna przeprowadzić na raz tylko jedna osoba
+ 每次只能抓捕帮派据点的一个人!
+
+
+ This hideout is controlled by %1.<br/><br/>Are you sure you want to take over their gang area?
+ Tento úkryt je řízen %1.<br/><br/>Opravdu chcete převzít svůj gang prostor?
+ Este escondite esta controlado por %1.<br/><br/>Estas seguro que quieres tomarlo?
+
+ Das Versteck wird durch %1 kontrolliert.<br/><br/>Bist du sicher, dass du ihr Ganggebiet übernehmen möchtest?
+ Cette planque est contrôlée par %1.<br/><br/>Etes-vous sûr que vous voulez prendre leur cachette ?
+ Questo Covo è controllato da %1.<br/><br/>Sicuro di voler prendere il controllo della loro area?
+ Esse esconderijo é controlado por %1.<br/><br/>Você tem certeza que deseja tomar essa área?
+ Ta kryjówka jest kontrolowana przez %1.<br/><br/>Jesteś pewny że chcesz przjąć ten rejon.
+ 帮派据点由 %1 控制.<br/><br/>你确定要接管他们的帮派吗?
+
+
+ Hideout is currently under control...
+ Hideout is currently under control...
+ Escondite bajo control...
+
+ Versteck ist derzeit unter Kontrolle...
+ La planque est actuellement sous contrôle...
+ Il Covo è già sotto controllo...
+ Esconderijo sobre controle....
+ Kryjówka pod kontrolą ...
+ 帮派据点正在控制...
+
+
+ Capturing cancelled
+ zachycení zrušen
+ Toma de Control Cancelada
+
+ Einnehmen abgebrochen.
+ Capture annulée
+ Cattura annullata
+ Ação concelada
+ Przejmowanie anulowane
+ 帮派据点控制取消
+
+
+ Capturing Hideout
+ zachycení Hideout
+ Capturando el Escondite
+
+ Versteck einnehmen
+ Capture de la planque
+ Catturando il Covo
+ Capturando Esconderijo
+ Przejmowanie kryjówki
+ 控制的帮派据点
+
+
+ Hideout has been captured.
+ Úkryt byl zajat.
+ La cachette a été capturée.
+ Escondite ha sido capturado.
+ Hideout è stato catturato.
+ Hideout został schwytany.
+ Hideout foi capturado.
+ Хайдеаут был захвачен в плен.
+ Versteck wurde eingenommen.
+ 帮派据点已被控制。
+
+
+ %1 and his gang: %2 - have taken control of a local hideout!
+ %1 a jeho gang: %2 - vzali kontrolu místního úkrytu!
+ %1 y su pandilla: %2 - han tomado control de un Escondite!
+
+ %1 und seine Gang: %2 - haben die Kontrolle über ein lokales Versteck übernommen!
+ %1 et son gang: %2 ont pris le contrôle d'une cachette !
+ %1 e la sua Gang: %2 - hanno preso il controllo di un Covo!
+ %1 e sua gangue: %2 - agora têm o controle de um esconderijo!
+ %1 i jego gang: %2 - przejął kontrolę nad kryjówką!
+ %1 和他的帮派: %2 - 已经控制了一个帮派据点!
+
+
+ You can't have a gang name longer then 32 characters.
+ Nemůžete mít název gang delší než 32 znaků.
+ El nombre de tu Pandilla no puede tener mas de 32 caracteres.
+
+ Dein Gangname kann nicht länger als 32 Zeichen sein.
+ Vous ne pouvez pas avoir un nom de gang de plus de 32 caractères.
+ %1 e la sua Gang: %2 - hanno preso il controllo di un Covo!
+ O nome de sua gangue não pode ter mais de 32 caracteres.
+ Nazwa gangu może posiadać maksymalnie 32 znaki
+ 你的帮派名称超过32个字符。
+
+
+ You have invalid characters in your gang name. It can only consist of Numbers and letters with an underscore
+ Máte neplatné znaky v názvu vaší gangu. To se může skládat pouze z číslic a písmen s podtržítkem
+ El nombre de tu pandilla solo puede consistir de: "Numeros, Letras y guion bajo"
+
+ Du hast ein ungültiges Zeichen in deinem Gangnamen. Der Name darf nur aus Zahlen und Buchstaben sowie einem Unterstrich bestehen!
+ Vous avez des caractères non valides dans le nom de votre gang. Il ne peut être constitué que de chiffres et de lettres.
+ Hai inserito caratteri non validi nel nome della Gang. Puoi inserire solo numeri e lettere con un underscore
+ O nome da sua gangue tem caracteres inválidos. O nome so pode conter caracteres e números separados por underline
+ Masz nieprawidłowe znaki w nazwie gangu - tylko litery i cyfry oraz podkreślnik
+ 你的帮派名称中有无效字符,它只能由下划线、数字和字母组成
+
+
+ You do not have enough money in your bank account.\n\nYou lack: $%1
+ Nemáte dostatek peněz na váš bankovní účet \ ne vy balení:. $%1
+ No tienes suficiente dinero en tu cuenta.\n\nTe falta: $%1
+
+ Du hast nicht genug Geld auf deinem Bankkonto.\n\nDir fehlen: $%1
+ Vous n'avez pas assez d'argent dans votre compte en banque.\n\nIl vous manque: $%1
+ Non hai abbastanza fondi nel tuo conto in banca.\n\nTi mancano: $%1
+ Você não tem dinheiro suficiente na sua conta bancária.\n\nFaltam: R$%1
+ Nie masz tyle pieniędzy na koncie.\n\nYou brakuje: $%1
+ 你的银行账户里没有足够的钱.\n\n你缺少: $%1
+
+
+ You have created the gang %1 for $%2
+ Vytvořili jste gangu %1 pro $%2
+ Has creado la Pandilla %1 por $%2
+
+ Du hast die Gang: %1 für $%2 erstellt.
+ Vous avez créé le gang %1 pour $%2.
+ Hai creato la Gang %1 al costo di $%2
+ Você criou a gangue %1 por R$%2
+ Stworzyłeś gang %1 za $%2
+ 你创造帮派 %1 花费了 $%2
+
+
+ You are about to disband the gang, by disbanding the gang it will be removed from the database and the group will be dropped. <br/><br/>Are you sure you want to disband the group? You will not be refunded the price for creating it.
+ Chystáte se rozpustit gang, tím, že rozpustí gang bude odstraněna z databáze a skupina bude vynechána. < br / > < br / > Opravdu chcete rozpustit skupinu? Budete nevrací cenu za jeho vytvoření.
+ Estas a punto de desmantelar la Pandilla, si prosiges la Pandilla se borrara de la base de datos. <br/><br/>Estas seguro de querer desmantelarla? Cualquier dinero invertido no sera devuelto.
+
+ Du bist dabei die Gang aufzulösen. Durch Auflösung der Gang wird diese aus der Datenbank entfernt. <br/><br/>Bist du sicher, dass du die Gang auflösen willst? Du erhältst die Kosten für die Erstellung nicht zurück.
+ Vous vous apprêtez à dissoudre le gang. En démantelant le gang, il sera supprimé de la base de données et le groupe sera supprimé. <br/><br/>Etes-vous sûr de vouloir dissoudre le groupe? Vous ne serez pas remboursé du prix de sa création.
+ Stai per sciogliere la Gang, facendolo sarà rimossa dal Database e il gruppo verrà cancellato. <br/><br/>Sei sicuro di voler sciogliere il gruppo? Non verrai rimborsato dei fondi spesi per crearlo.
+ Você vai desfazer a sua gangue, ela será apagada do banco de dados. <br/><br/>Você tem certeza que quer desfazer a gangue? Você não será reembolsado.
+ Chcesz rozwiązać gang, po jego rozwiązaniu zostanie on usunięty z bazy danych i cała grupa zostanie rozwiązana. <br/><br/>Naprawdę chcesz rozwiązać grupę? Nie dostaniesz zwrotu środków za przeznaczonych na stworzenie gangu.
+ 你要解散帮派,帮派将从数据库中删除. <br/><br/>你确定你想解散帮派? 不会退还你创建帮派的花费.
+
+
+ Disbanding the gang...
+ Rozpuštění gang ...
+ Desmantelando la Pandilla...
+
+ Gang wird aufgelöst...
+ Démantèlement du gang...
+ Sciogliendo la Gang...
+ Desfazendo a gangue...
+ Rozwiąż gang
+ 解散帮派...
+
+
+ Disbanding cancelled
+ rozpuštění zrušen
+ Desmantelamiento Cancelado
+
+ Auflösung abgebrochen.
+ Démantèlement annulé
+ Scioglimento annullato
+ Desfazer gangue cancelado
+ Rozwiązywanie gangu anulowane
+ 解散取消
+
+
+ The leader has disbanded the gang.
+ Vůdce se rozpustil gang.
+ El lider ha desmantelado la Pandilla.
+
+ Der Anführer hat die Gang aufgelöst.
+ Le chef a démantelé le gang.
+ Il Capo ha sciolto la Gang
+ O lider desfez a gangue.
+ Szef rozwiązał gang
+ 老大解散了帮派。
+
+
+ %1 has invited you to a gang called %2<br/>If you accept the invitation you will be a part of their gang and will have access to the gang funds and controlled gang hideouts.
+ %1 vás pozval na party s názvem %2<br/>Pokud přijmete pozvání budete součástí jejich gangu a budou mít přístup ke gangu fondů a řízených gangů úkrytů.
+ %1 te ha invitado a una Pandilla llamada %2<br/>Si aceptas seras parte de su pandilla, compartiras el banco de la pandilla y controlaras sus escondites.
+
+ %1 hat dich zu der Gang: %2 eingeladen. <br/> Wenn Du die Einladung annimmst, wirst du ein Teil der Gang und bekommst Zugang zu dem Gangkonto und kontrollierten Verstecken.
+ %1 vous a invité dans un gang appelé %2<br/>Si vous acceptez l'invitation, vous serez dans leur gang et aurez accès à des fonds de gangs et des planques de gangs contrôlées.
+ %1 ti ha invitato nella Gang: %2<br/>Se vuoi accettarai l'invito entrerai a far parte della loro Gang ed avrai accesso ai loro fondi e ai loro Covi.
+ %1 convidou você para a gangue %2<br/>Se você aceitar terá acesso aos recursos da gangue e os esconderijos controlados pela mesma.
+ %1 zaprosił cię do gangu o nazwie %2<br/>Jeżeli zaakceptujesz zaproszenie będziesz członkiem gangu i uzyskasz dostęp do funduszy gangu oraz jego kryjówek
+ %1 邀请你加入一个叫做 %2 的帮派<br/>如果你接受了这个邀请,你将成为他们的帮派成员,并且可以获得帮派资金和使用帮派控制的帮派据点。
+
+
+ You are about to invite %1 to your gang, if they accept the invite they will have access to the gang's funds.
+ Chystáte se pozvat%1 na svůj gang, pokud přijmou pozvání budou mít přístup k finančním prostředkům gangu.
+ Estas a putno de invitar a %1 a tu pandilla, si aceptan tendran aceso al banco de tu Pandilla.
+
+ Du bist dabei %1 in deine Gang einzuladen. Wenn die Einladung angenommen wird, hat der Spieler Zugang zu den Gangbesitztümern.
+ Vous êtes sur le point d'inviter %1 dans votre gang, s'il accepte l'invitation, il aura accès aux fonds du gang.
+ Stai per invitare %1 nella tua Gang, se accetterà l'invito avrà accesso ai fondi della Gang.
+ Você está prestes a convidar %1 para a gangue, ele terá acesso aos recursos da gangue.
+ Właśnie zaprosiłeś %1 do gangu, jeśli zaakceptuje zaproszenie będzie miał dostęp do funduszy gangu.
+ 您将邀请 %1 加入您的帮派,如果他接受邀请,他将有权使用帮派的资金。
+
+
+ You need to select a person to invite!
+ Musíte vybrat osobu vyzvat!
+ Tiense que selecionar a quien invitar!
+
+ Du musst einen Spieler zum Einladen auswählen!
+ Vous devez sélectionner une personne à inviter !
+ Devi selezionare una persona da invitare!
+ Você tem que selecionar um jogador para convidar!
+ Musisz zaznaczyć osobę aby ją zaprosić
+ 你需要选择一个人来邀请他!
+
+
+ You have sent a invite to your gang to %1
+ Jste adresoval zvou na svůj gang do %1
+ Has invitado a %1 a tu Pandilla
+
+ Du hast eine Einladung in diese Gang an %1 gesendet.
+ Vous avez envoyé une invitation à rejoindre votre gang à %1
+ Hai mandato l'invito alla tua Gang a %1
+ Você enviou um convite para %1 se juntar a sua gangue
+ Wysłałeś zaproszenie do twojego gangu do %1
+ 你已经给 %1 发送了一个加入你帮派的邀请
+
+
+ Invitation Cancelled
+ Pozvánka byla zrušena
+ Invitación Cancelada
+
+ Einladung abgebrochen.
+ Invitation annulée
+ Invito Annullato
+ Convite Cancelado
+ Zaproszenie anulowane
+ 取消邀请
+
+
+ You cannot kick yourself!
+ Nemůžete kopat sami!
+ No te puedes expulsar a ti mismo!
+
+ Du kannst dich nicht selbst kicken!
+ Vous ne pouvez pas vous éjecter vous-même !
+ Non puoi espellerti da solo!
+ Você não pode kickar você mesmo!
+ Nie możesz sam się wykopać!
+ 你不能踢出自己!
+
+
+ Your gang has reached its maximum allowed slots, please upgrade your gangs slot limit.
+ Váš gang dosáhla svého maxima dovoleno sloty, proveďte upgrade hranice slotu vašeho gangu.
+ Tu Pandilla ha llegado a su máxima capacidad, aumenta los slots para seguir invitando.
+
+ Deine Gang hat die maximale Anzahl an Mitgliedern erreicht, bitte erhöhe das Limit deiner Gang.
+ Votre gang a atteint le nombre de membre maximum, veuillez augmenter cette limite.
+ la tua Gang ha raggiungo il numero massimo di posti consentiti, aumentane il limite.
+ Sua gangue está lotada, você deve aumentar o número máximo de jogadores.
+ Twój gang osiągnął maksymalną pojemność, powiększ swój gang!
+ 你的帮派成员数已经达到了允许的最大范围, 请升级你的帮派成员数.
+
+
+ You need to select a person to kick!
+ Musíte vybrat osobu kopat!
+ Tienes que seleccionar a quien expulsar!
+
+ Du musst einen Spieler auswählen, um ihn kicken zu können!
+ Vous devez choisir une personne à virer !
+ Devi selezionare una persona da espellere!
+ Você tem que selecionar um jogador para kickar!
+ Musisz zaznaczyć osobę do wykopania
+ 你需要选择一个人来踢出!
+
+
+ You cannot leave the gang without appointing a new leader first!
+ Nemůžete opustit gang, aniž by o jmenování nového vůdce první!
+ No puedes salir de la Pandilla sin apuntar a un nuevo líder!
+
+ Du kannst die Gang nicht verlassen, ohne vorher einen neuen Anführer zu ernennen!
+ Vous ne pouvez pas quitter le gang sans passer le lead à quelqu'un !
+ Non puoi abbandonare la Gang prima di aver selezionato un nuovo Capo!
+ Você não pode sair da gangue sem transferir a liderança antes!
+ Nie możesz opuścić gangu bez przekazania komuś szefostwa nad gangiem
+ 没有任命新的老大,你不能离开这个帮派!
+
+
+ You have quit the gang.
+ You have quit the gang.
+ You have quit the gang.
+ You have quit the gang.
+ Du hast die Gang verlassen.
+ Vous avez quitté le gang.
+ You have quit the gang.
+ You have quit the gang.
+ You have quit the gang.
+ 你已经退出了帮派.
+
+
+ You are about to transfer leadership over to %1 <br/>By transferring leadership you will no longer be in control of the gang unless ownership is transferred back.
+ Chystáte se přenést vedoucí přes %1 <br/>Převedením vedení už nebude mít kontrolu nad gangu, pokud je vlastnictví převedeno zpět.
+ Estas a punto de transferir liderazgo a %1 <br/>Al transferir liderazgo no tendrás control de la Pandilla.
+
+ Du bist dabei, die Gangführung an %1 zu übertragen<br/>Durch die Übertragung der Gangführung hast du keine Kontrolle mehr über die Gang.
+ Vous allez transférer le commandement à %1 <br/>En transférant le commandement, vous ne serez plus le chef du gang.
+ Stai per traferire il comando a %1 <br/>Facendolo non avrai più il controllo della Gang fino a quando non ti verrà restituito il comando.
+ Você vai transferir a liderança da gangue para %1 <br/>Você não será mais o lider, a não ser que a liderança seja transferida novamente.
+ Przekazałeś kierowanie gangiem %1 <br/>W związku z tym nie będzesz od tej chwili kontroli nad gangiem chyba, że kierowownictwo zostanie ci powierzone ponownie.
+ 你将要把老大的位置移交给 %1 <br/>老大的位置移交后,你将不能再控制这个帮派,除非有人将帮派老大位置还给你.
+
+
+ Transfer of leadership cancelled.
+ Převod vedení zrušen.
+ Transferencia de liderazgo cancelada.
+
+ Übertragung der Gangführung abgebrochen.
+ Transfert du commandement annulé.
+ Trasferimento del comando annullato.
+ Transferencia de liderança cancelada.
+ Przkazanie kierownictwa anulowane.
+ 取消帮派老大的移交。
+
+
+ You are already the leader!
+ Již jste vůdce!
+ Tu ya eres el líder!
+
+ Du bist bereits der Anführer!
+ Vous êtes déjà chef !
+ Sei già il Capo!
+ Você já está na liderança!
+ Jesteś już liderem!
+ 你已经是帮派老大了!
+
+
+ You need to select a person first!
+ Je třeba vybrat prvního člověka!
+ Tienes que seleccionar a alguien primero!
+
+ Du musst erst einen Spieler auswählen!
+ Vous devez choisir une personne !
+ Devi selezionare una persona!
+ Você tem que selecionar um jogador antes!
+ Musisz najpierw zaznaczyć osobę!
+ 你需要先选一个人!
+
+
+ You have been made the new leader.
+ You have been made the new leader.
+ You have been made the new leader.
+ You have been made the new leader.
+ Du wurdest zum neuen Anführer ernannt.
+ Vous êtes le nouveau leader.
+ You have been made the new leader.
+ You have been made the new leader.
+ You have been made the new leader.
+ 你被选为新的帮派老大.
+
+
+ You are about to upgrade the maximum members allowed for your gang.
+ Chystáte se aktualizovat maximální povolené členy pro svůj gang.
+ Estas a punto de aumentar la capacidad de tu Pandilla.
+
+ Du bist dabei, die maximale Anzahl an Mitgliedern zu erhöhen.
+ Vous êtes sur le point de mettre à niveau la limite de membre maximum pour votre gang.
+ Stai aumentando il numero massimo di membri consentiti all'interno della tua Gang
+ Você vai atualizar o limite de membros da gangue.
+ Chcesz zwiększyć maksymalną ilość członków w gangu.
+ 您将升级您的帮派所允许的最大成员数.
+
+
+ Current Max: %1
+ Proud Max: %1
+ Límite Corriente: %1
+
+ Aktuelles Maximum: %1
+ Max actuel: %1
+ Attuali Max: %1
+ Número máximo atual: %1
+ Aktualnie Max: %1
+ 目前的最大值: %1
+
+
+ Upgraded Max: %2
+ Modernizované Max: %2
+ Nuevo Límite: %2
+
+ Maximum erhöhen: %2
+ Après mise à niveau : %2
+ Aumento Max: %2
+ Novo número máximo: %2
+ Po ulepszeniu Max: %2
+ 升级最大值: %2
+
+
+ Price:
+ Cena:
+ Precio:
+
+ Preis:
+ Prix :
+ Costo:
+ Preço:
+ Koszt:
+ 价钱:
+
+
+ You do not have enough money in your bank account to upgrade the gangs maximum member limit.
+ Nemáte dostatek peněz na modernizaci gangů maximální limit člena svého bankovního účtu.
+ No tienes suficiente dinero como para mejorar la capacidad de tu pandilla.
+
+ Du hast nicht genug Geld auf deinem Bankkonto, um das Mitgliederlimit deiner Gang zu erhöhen.
+ Vous n'avez pas assez d'argent dans votre compte en banque pour mettre à niveau la limite de membre maximale.
+ Non hai abbastanza fondi nel tuo conto in banca per aumentare il limite massimo di membri.
+ Você não dinheiro suficiente para aumentar o limite da gangue.
+ Nie posiadasz wystarczającej ilości środków na koncie aby powiększyć gang
+ 您的银行帐户没有足够的钱升级帮派最大成员限制。
+
+
+ Current:
+ Aktuální
+ Corriente:
+
+ Aktuell:
+ Actuel :
+ Attuale:
+ Atual:
+ Aktualny:
+ 最近的:
+
+
+ Lacking:
+ postrádat
+ Falta:
+
+ Fehlend:
+ Manquant :
+ Mancanza:
+ Faltando:
+ Brakuje:
+ 缺少:
+
+
+ You have upgraded from %1 to %2 maximum slots for <t color='#8cff9b'>$%3</t>
+ Provedli jste upgrade z%1 do%2 Maximální sloty pro < k color = "# 8cff9b '> $%3 < / >
+ Has aumentado de %1 a %2 slots <t color='#8cff9b'>$%3</t>
+
+ Du hast für <t color='#8cff9b'>$%3</t> die Anzahl von %1 auf %2 Mitgliedern erhöht.
+ Vous avez mis à niveau le nombre maximal de membres de %1 à %2 pour <t color='#8cff9b'>$%3</t>
+ Hai aumentato i posti massimi da %1 a %2 per <t color='#8cff9b'>$%3</t>
+ Limite de membros atualizado de %1 para %2 por <t color='#8cff9b'>R$%3</t>
+ Zwiększyłeś ilość możliwych członków gangu z %1 do %2 for <t color='#8cff9b'>$%3</t>
+ 你已经从 %1 升级到 %2 最大成员数 <t color='#8cff9b'>$%3</t>
+
+
+ Upgrade cancelled.
+ Upgrade zrušena.
+ Mejora Cancelada.
+
+ Erhöhung abgebrochen.
+ Mise à jour annulée.
+ Aumento annullato.
+ Cancelar Upgrade.
+ Ulepszanie anulowane.
+ 升级取消。
+
+
+ Funds:
+ fondy
+ Fondos:
+
+ Geld:
+ Fonds :
+ Fondi
+ Recursos:
+ Środki:
+ 基金:
+
+
+ (Gang Leader)
+ (Gang Leader)
+ (Lider de Pandilla)
+
+ (Gangführung)
+ (Chef de Gang)
+ (Capo Gang)
+ (Lider da Gangue)
+ (Szef gangu)
+ (帮派老大)
+
+
+ You are already in a gang.
+ Jste již v gangu.
+ Ya estas en una pandilla.
+
+ Du befindest dich bereits in einer Gang.
+ Vous êtes déjà dans un gang.
+ Sei già in una banda.
+ Você já está em uma gangue.
+ Jesteś już w gangu.
+ 你已经在帮派中了。
+
+
+ Bad UID?
+ Bad UID?
+ Mauvais UID ?
+ Bad UID?
+ Bad UID?
+ Bad UID?
+ Bad UID?
+ Bad UID?
+ Bad UID?
+ 错误的UID?
+
+
+ This player is already in a gang.
+ Tento hráč je již v gangu.
+ Ce joueur est déjà dans un gang.
+ Este jugador ya está en una pandilla.
+ Questo giocatore è già in una banda.
+ Ten gracz jest już w gangu.
+ Este jogador já está em uma gangue.
+ Этот игрок уже в банде.
+ Dieser Spieler ist bereits in einer Gang.
+ 这个玩家已经在帮派中了。
+
+
+ You have been kicked out of the gang.
+ You have been kicked out of the gang.
+ Vous avez été éjecté de votre gang.
+ You have been kicked out of the gang.
+ You have been kicked out of the gang.
+ You have been kicked out of the gang.
+ You have been kicked out of the gang.
+ You have been kicked out of the gang.
+ Du wurdest aus der Gang gekickt.
+ 你被踢出了帮派。
+
+
+
+
+ This garage has already been bought!
+
+
+
+ Diese Garage wurde bereits gekauft!
+ Ce garage a déjà été acheté !
+
+
+
+ 这个仓库已经被购买了!
+
+
+ You are not the owner of this house!
+
+
+
+ Vous n'êtes pas le propriétaire de cette maison !
+ Du bist nicht der Eigentümer dieses Hauses!
+
+
+
+ 你不是这所建筑的主人!
+
+
+ This garage is available for <t color='#8cff9b'>$%1</t><br/>
+
+
+
+ Diese Garage steht dir für <t color='#8cff9b'>$%1</t><br/>zur Verfügung!
+ Ce garage est disponible pour <t color='#8cff9b'>$%1</t><br/>
+
+
+
+ 这个仓库花费 <t color='#8cff9b'>$%1</t><br/>
+
+
+ This building is a Gang Hideout!
+
+
+
+ Dieses Gebäude ist ein Gangversteck!
+ Ce bâtiment est une cachette de gang !
+
+
+
+ 这个建筑是一个帮派据点!
+
+
+ Are you sure you want to sell your garage? It will sell for: <t color='#8cff9b'>$%1</t>
+
+
+
+ Bist du sicher, dass du diese Garage verkaufen willst? Sie wird verkauft für: <t color='#8cff9b'>$%1</t>
+ Êtes-vous sûr de vouloir vendre votre garage ? Vous le vendrez pour : <t color='#8cff9b'>$%1</t>
+
+
+
+ 你确定要卖掉你的仓库吗? 它将售出: <t color='#8cff9b'>$%1</t>
+
+
+ Sell Garage
+
+
+
+ Vendre le garage
+ Garage verkaufen
+
+
+
+ 出售仓库
+
+
+ Purchase Garage
+
+
+
+ Acheter ce garage
+ Garage kaufen
+
+
+
+ 购买仓库
+
+
+ You do not own a garage here!
+
+
+
+ Du besitzt hier keine Garage!
+ Vous ne possédez pas de garage ici !
+
+
+
+ 你在这里没有仓库!
+
+
+ Vehicle Garage
+ Garáž Vehicle
+ Garaje de Vehículos
+
+ Fahrzeug Garage
+ Garage de Véhicules
+ Garage Veicoli
+ Garagem de Veículos
+ Garaż
+ 载具仓库
+
+
+ Get Vehicle
+ Získat vozidlo
+ Obtener Vehículo
+
+ Ausparken
+ Récupérer
+ Ritira Veicolo
+ Pegar Veículo
+ Wyciągnij pojazd:
+ 获取载具
+
+
+ Sell Vehicle
+ Navrhujeme Vehicle
+ Vender Vehículo
+
+ Fahrzeug verkaufen
+ Vendre
+ Vendi Veicolo
+ Vender Veículo
+ Sprzedaj pojazd
+ 出售载具
+
+
+ Sell Price
+ Navrhujeme Cena
+ Precio de Venta
+
+ Verkaufspreis
+ Prix de vente
+ Prezzo di vendita
+ Preço de Venda
+ Cena sprzedaży
+ 出售价格
+
+
+ Storage Fee
+ skladného
+ Cuota de Guardado
+
+ Parkgebühr
+ Frais de Stockage
+ Costo ritiro
+ Taxa de Armazenamento
+ Opłata parkingowa
+ 保管费
+
+
+ No vehicles found in garage.
+ Žádná vozidla nalezený v garáži.
+ No se encontraron vehículos en el Garaje.
+
+ Keine Fahrzeuge in der Garage gefunden.
+ Aucun véhicule trouvé dans le garage.
+ Non hai veicoli nel Garage.
+ Nenhum veiculo encontrado na garagem.
+ Nie znaleziono pojazdów w garażu
+ 仓库内没有载具。
+
+
+ You don't have $%1 in your bank account
+ Nemáte $%1 z vašeho bankovního účtu
+ No tienes $%1 en tu cuenta de Banco
+
+ Du hast keine $%1 auf deinem Bankkonto.
+ Vous n'avez pas %1$ sur ton compte en banque.
+ Non hai $%1 nel tuo conto in banca
+ Você não tem R$%1 na sua conta bancária
+ Nie masz %1 na koncie bankowym:
+ 你的银行账户里没有 $%1
+
+
+ Spawning vehicle please wait...
+ Plodit vozidlo čekejte prosím ...
+ Creando vehículo, por favor espera...
+
+ Fahrzeug wird bereitgestellt, bitte warten...
+ Mise en place du Véhicule, merci de patienter...
+ Creazione veicolo attendere...
+ Obtendo veiculo, aguarde por favor...
+ Wyciągam pojazd, proszę czekać ...
+ 正在提取载具请稍候...
+
+
+ Sorry but %1 was classified as a destroyed vehicle and was sent to the scrap yard.
+ Je nám líto, ale%1 byl klasifikován jako zničené vozidlo a byl poslán na šrotiště.
+ Lo siento, pero %1 fue clasificado como destruido y fue mandado al basurero.
+
+ Entschuldigung, aber dein %1 wurde zerstört und auf den Schrottplatz geschickt.
+ Désolé, mais votre %1 a été détruit et vendu à la casse.
+ Purtroppo %1 è stato classificato come veicolo distrutto ed è stato mandato allo sfascio.
+ O veículo %1 foi mandado para o ferro velho pois foi classificado como destroido.
+ Przepraszamy ale %1 został sklasyfikowany jako zniszczony i został odesłany na złom.
+ 对不起 %1 被认定为损坏的载具并送往废弃场。
+
+
+ Sorry but %1 is already active somewhere in the world and cannot be spawned.
+ Je nám líto, ale%1 je již aktivní někde ve světě a nemůže být třel.
+ Lo siento, pero %1 esta activo en alguna parte del mundo y no puede aparecer.
+
+ Entschuldigung, aber dein %1 ist bereits ausgeparkt worden und kann darum nicht bereitgestellt werden.
+ Désolé, mais votre %1 a déjà été sorti du garage.
+ Purtroppo %1 è già presente nella mappa e non può essere ricreato
+ O veículo %1 já está presente no mapa e não pode ser retirado novamente
+ Przepraszamy ale %1 jest aktywny gdzieś na mapie i nie może zostać wyciągnięty.
+ 对不起,%1 被归类为毁坏的载具,并被送到废弃场。
+
+
+ There is already a vehicle on the spawn point. You will be refunded the cost of getting yours out.
+ K dispozici je již vozidlo na spawn bodu. Ty budou vráceny náklady dostat se ven.
+ Ya hay un vehículo en el punto de Spawn, se te reembolsara el costo de sacar el vehículo.
+
+ Es steht ein Fahrzeug auf dem Spawnpunkt. Die Kosten für das Bereitstellen werden dir erstattet.
+ Il y a déjà un véhicule sur le point de spawn. Le coût de sortie du véhicule vous a été remboursé.
+ C'è già un veicolo nel punto di creazione. Verrai rimborsato della spesa appena effettuata.
+ Existe um outro veiculo na area de spawn. Você será reembolsado.
+ W strefie parkowania znajduje się już pojazd. Środki za parkowanie zostaną zwrócone.
+ 载具重生点已经被另一辆载具占据。你的花费将会返还。
+
+
+ You sold that vehicle for $%1
+ Ty jsi prodal toto vozidlo za $%1
+ Vendiste el vehículo por $%1
+
+ Du verkaufst dein Fahrzeug für $%1.
+ Vous avez vendu ce véhicule pour $%1.
+ Hai venduto il veicolo per $%1
+ Você vendeu um veículo por R$%1
+ Sprzedałeś pojazd za %1
+ 你以 $%1 的价格出售了这辆载具
+
+
+ That vehicle is a rental and cannot be stored in your garage.
+ Že vozidlo je půjčovna a nemohou být uloženy ve vaší garáži.
+ Este vehículo es rentado y no puede ser guardado.
+
+ Mietwagen können nicht in der Garage geparkt werden.
+ Ce véhicule est une location et ne peut pas être stocké dans votre garage.
+ Il veicolo è in affitto e non può essere depositato in garage.
+ Esse veículo é alugado e não pode ser armazenado na garagem.
+ Pojazd wynajęty, nie możesz go schować w garażu.
+ 载具是租赁的,不能存放在你的仓库里。
+
+
+ Thank you for returning the rental vehicle.
+ Děkujeme za vrácení zapůjčeného vozidla.
+ Gracias por devolver el vehículo de alquiler.
+ Спасибо, что вернул автомобиль в аренду.
+ Vielen Dank für die Rückgabe des Mietwagens.
+ Nous vous remercions de nous avoir rendu le véhicule de location.
+ Grazie per aver restituito il veicolo a noleggio.
+ Obrigado por devolver o veículo alugado.
+ Dziękuję za zwrot wypożyczonego pojazdu.
+ 感谢您归还租车。
+
+
+ That vehicle doesn't belong to you therefor you cannot store it in your garage.
+ Co vozidlo nepatří k vám proto jej nelze ukládat ve vaší garáži.
+ Este vehículo no es tuyo! Asi que no lo puedes guardar.
+
+ Das Fahrzeug gehört nicht dir und kann deshalb nicht in der Garage geparkt werden.
+ Ce véhicule ne vous appartient pas, vous ne pouvez pas le stocker dans votre garage.
+ Il veicolo non ti appartiene e quindi non puoi depositarlo nel tuo garage.
+ Você não é o proprietário desse veiculo, logo não poderá guarda-lo na garagem.
+ Pojazd nie należy do ciebie nie możesz go schować w garażu. Ale zawsze możesz podjechać do dziupli!
+ 载具不属于你,所以你不能把它存放在仓库里。
+
+
+ The vehicle has been stored in your garage.
+ Vozidlo bylo uložené v garáži.
+ Has guardado el vehículo en el garaje.
+
+ Das Fahrzeug wurde in die Garage eingeparkt.
+ Le véhicule a été entreposé dans le garage.
+ Il veicolo è stato depositato nel tuo garage.
+ O veículo foi guardado na sua garagem.
+ Pojazd został zaparkowany.
+ 载具已存放在你的仓库里.
+
+
+ Your vehicle is ready!
+ Vaše vozidlo je připraven!
+ Tu vehículo esta listo!
+
+ Dein Fahrzeug steht bereit!
+ Votre véhicule est prêt.
+ Il tuo veicolo è pronto
+ O seu veículo está pronto
+ Pojazd jest gotowy
+ 你的载具准备好了!
+
+
+ The server is trying to store the vehicle...
+ Tento server se pokouší uložit vozidlo ...
+ El servidor esta tratando de guardar el vehículo...
+
+ Der Server versucht, das Fahrzeug einzuparken...
+ Le serveur tente de stocker le véhicule...
+ Il server sta cercando di depositare il veicolo...
+ O servidor está guardando o veiculo...
+ Serwer próbuje schować pojazd w garażu ...
+ 服务器正试图存储载具...
+
+
+ The selection had a error...
+ Volba obsahuje chybu ...
+ Huvo un error en la selección...
+
+ Die Auswahl hat einen Fehler...
+ La sélection a une erreur...
+ La selezione ha avuto un errore...
+ Erro ao selecionar....
+ Ten wybór powoduje błąd
+ 选择有错误...
+
+
+ There isn't a vehicle near the NPC.
+ Není vozidla v blízkosti NPC.
+ No hay un vehículo cerca del NPC.
+
+ Es befindet sich kein Fahrzeug in der Nähe des NPC.
+ Il n'y a pas de véhicule près du PNJ.
+ Non c'è alcun veicolo vicino all'NPC.
+ Não existe um veículo proximo ao NPC
+ Nie ma pojazdu w pobliżu NPC
+ NPC附近没有载具。
+
+
+ Are you sure you want to sell your %1 for $%2?
+ Opravdu chcete prodat svůj %1 za $%2?
+ ¿Estás seguro de que quieres vender tu %1 por $%2?
+ Вы уверены, что хотите продать свой %1 за $%2?
+ Bist du sicher, dass du deine(n) %1 für $%2 verkaufen möchtest?
+ Êtes-vous sûr de vouloir vendre votre %1 pour $%2 ?
+ Siete sicuri di voler vendere la vostra %1 per $%2?
+ Tem a certeza que quer vender a sua %1 por $%2?
+ Jesteś pewien, że chcesz sprzedać swój %1 za $%2?
+ 你确定要把你的%1卖给%2?
+
+
+ Sell vehicle
+ Prodat vozidlo
+ Vender el vehículo
+ Продать автомобиль
+ Fahrzeug verkaufen
+ Vendre un véhicule
+ Vendere il veicolo
+ Vender veículo
+ Sprzedaj pojazd
+ 出售车辆
+
+
+
+
+ Key Chain - Current List of Keys
+ Klíčenka - Aktuální seznam klíčů
+ Llavero - Lista de llaves
+
+ Schlüsselbund - Aktuelle Liste
+ Porte-clés - Liste actuelle des clés
+ Portachiavi - Lista delle Chiavi
+ Chaves - Atual Lista de Chaves
+ Lista kluczyków
+ 钥匙 - 当前列表
+
+
+ Drop Key
+ Drop Key
+ Tirar llave
+
+ Wegwerfen
+ Jeter Clef
+ Abbandona Chiave
+ Remover Chave
+ Wyrzuć klucz
+ 丢弃钥匙
+
+
+ Give Key
+ dát klíč
+ Dar Llave
+
+ Geben
+ Donner Clef
+ Dai Chiave
+ Dar Chave
+ Daj klucz
+ 给予钥匙
+
+
+
+
+ Player Menu
+ Nabídka přehrávače
+ Menu de Jugador
+
+ Spieler Menü
+ Menu du Joueur
+ Menu Giocatore
+ Menu Jogador
+ Menu gracza
+ 玩家菜单
+
+
+ Current Items
+ Aktuální položky
+ Objetos Actuales
+
+ Aktuelle Gegenstände
+ Items Actuels
+ Oggetti Attuali
+ Items Atuais
+ Aktualne wyposażenie:
+ 当前物品
+
+
+ Licenses
+ licencí
+ Licencias
+
+ Lizenzen
+ Licences
+ Licenze
+ Licenças
+ Licencje
+ 许可证
+
+
+ Money Stats
+ peníze Statistiky
+ Dinero
+
+ Geld Statistik
+ Stats Monétaires
+ Statistiche Fondi
+ Dinheiro
+ Twoje środki
+ 资产统计
+
+
+ My Gang
+ My Gang
+ Mi Pandilla
+
+ Meine Gang
+ Mon Gang
+ Mia Gang
+ Gangue
+ Gang
+ 我的帮派
+
+
+ Wanted List
+ seznamu hledaných
+ Lista de Busqueda
+
+ Fahndungsliste
+ Interpol
+ Lista Ricercati
+ Lista de Foragidos
+ Poszukiwani
+ 通缉名单
+
+
+ Cell Phone
+ Mobilní telefon
+ Celular
+
+ Telefon
+ Téléphone
+ Cellulare
+ Celular
+ Telefon
+ 短消息
+
+
+ Key Chain
+ Klíčenka
+ Llavero
+
+ Schlüssel
+ Porte-clés
+ Portachiavi
+ Chaves
+ Klucze
+ 钥匙
+
+
+ Admin Menu
+ Nabídka admin
+ Menu Admin
+
+ Admin Menü
+ Menu Admin
+ Menu Admin
+ Menu Admin
+ Admin Menu
+ 管理菜单
+
+
+ Sync Data
+ synchronizace dat
+ Sincronizar
+
+ Speichern
+ Sync Data
+ Salva Dati
+ Sincronizar Dados
+ Synchronizuj
+ 同步数据
+
+
+
+
+ Settings Menu
+ Nabídka Nastavení
+ Configuración
+
+ Einstellungen
+ Menu Paramètres
+ Menu Impostazioni
+ Configurações
+ Ustawienia:
+ 设置菜单
+
+
+ On Foot:
+ Pěšky:
+ A Pie:
+
+ Zu Fuß:
+ A pied :
+ A piedi:
+ A Pé:
+ Na nogach:
+ 步行:
+
+
+ In Car:
+ V autě:
+ En Carro:
+
+ Im Auto:
+ En voiture :
+ Auto:
+ No Carro:
+ W aucie:
+ 载具:
+
+
+ In Air:
+ Ve vzduchu:
+ En Aire:
+
+ Im Himmel:
+ Air
+ Aria:
+ No Ar:
+ W powietrzu:
+ 空中:
+
+
+ View distance while on foot
+ Pohled vzdálenost, zatímco na nohy
+ Distancia de vista a pie
+
+ Sichtweite zu Fuß
+ Distance de vue à pied
+ Distanza visiva a piedi
+ Visualizar distância enquanto a pé
+ Widoczność gdy na nogach
+ 视距
+
+
+ View distance while in a land vehicle
+ Pohled vzdálenost, zatímco v pozemního vozidla
+ Distancia de vista en vehiculo terrestre
+
+ Sichtweite in Landfahrzeugen
+ Distance de vue en véhicule terrestre
+ Distanza visiva su veicolo di terra
+ Visualizar distância enquanto em veículos terrestres
+ Widoczność gdy w aucie
+ 在陆地载具中观察距离
+
+
+ View distance while in a air vehicle
+ Pohled vzdálenost, zatímco ve vzduchu vozidle
+ Distancia de vista en vehiculo aéreo
+
+ Sichtweite in Luftfahrzeugen
+ Distance de vue en véhicule aérien
+ Distanza visiva su velivolo
+ Visualisar distância enquanto em veículos aéreos
+ Widoczność gdy w powietrzu
+ 在飞行器上观察距离
+
+
+ Player Tags
+ přehrávač Tags
+ Marcador de Jugadores
+
+ Spielernamen
+ Tags Joueurs
+ Tag Giocatore
+ Tags de Jogadores
+ Tagi graczy
+ 玩家标签
+
+
+ Tags ON
+ značky na
+ Tags ON
+
+ Namen AN
+ Tags ON
+ Tags ON
+ Tags ON
+ Tagi ON
+ 启用标签
+
+
+ Tags OFF
+ Štítky OFF
+ Tags OFF
+
+ Namen AUS
+ Tags OFF
+ Tags OFF
+ Tags OFF
+ Tagi OFF
+ 关闭标签
+
+
+ Sidechat Switch
+ Sidechat Spínač
+ Canal Side
+ Habilitar Sidechat
+ Interruttore Sidechat
+ Sidechat Przełącznik
+
+ Habilitar Sidechat
+ Sidechat umschalten
+ 聊天框开关
+
+
+ Reveal Nearest Objects
+ Reveal Nejbližší objekty
+ Révéler les objets les plus proches
+ Revelar Objetos Cercanos
+ Rivela oggetti più vicini
+ Odsłonić Najbliższa Przedmioty
+
+ Mostrar Objetos Próximos
+ Nahe Objekte anzeigen
+ 显示最近的物体
+
+
+ Broadcast Switch
+
+ Interrupteur de Transmission
+ Habilitar Transmisiones
+
+
+
+ Habilitar Transmissões
+ Broadcast umschalten
+ 广播开关
+
+
+ Sidechat OFF
+ Sidechat OFF
+ Sidechat OFF
+
+ Sidechat AUS
+ Canal camp OFF
+ Chat fazione OFF
+ Sidechat OFF
+ Czat strony OFF
+ 聊天关闭
+
+
+ Sidechat ON
+ Boční Chat ON
+ Sidechat OFF
+
+ Sidechat AN
+ Canal camp ON
+ Chat fazione ON
+ Sidechat ON
+ Czat strony ON
+ 聊天开启
+
+
+
+
+ Shop Inventory
+ Obchod Zásoby
+ Inventario de Tienda
+
+ Ladeninventar
+ Boutique
+ Inventario Negozio
+ Loja de Inventário
+ Oferta sklepu
+ 店铺库存
+
+
+ Your Inventory
+ Váš Inventory
+ Tu Inventario
+
+ Eigenes Inventar
+ Votre Inventaire
+ Inventario Personale
+ Seu Inventário
+ Twoje wyposażenie
+ 你的库存
+
+
+ Buy Item
+ Koupit Item
+ Comprar
+
+ Kaufen
+ Acheter Objet
+ Compra Oggetto
+ Comprar Item
+ Kup objekt
+ 买东西
+
+
+ Sell Item
+ Navrhujeme Item
+ Vender
+
+ Verkaufen
+ Vendre Objet
+ Vendi Oggetto
+ Vender Item
+ Sprzedaj obiekt
+ 卖东西
+
+
+
+
+ Spawn Selection
+ potěr Selection
+ Selección de Spawn
+
+ Aufwachpunkt Auswahl
+ Sélection du Spawn
+ Selezione Spawn
+ Locais para Começar
+ Wybierz punkt odrodzenia
+ 选择重生点
+
+
+ Spawn
+ Potěr
+ Spawn
+
+ Aufwachen
+ Spawn
+ Spawn
+ Começar
+ Odradzanie
+ 重生
+
+
+ Current Spawn Point
+ Aktuální potěr Point
+ Punto de Spawn Actual
+
+ Aktueller Aufwachpunkt
+ Point de Spawn Actuel
+ Punto di Spawn corrente
+ Ponto de início Atual
+ Aktualny punkt odrodzenia
+ 目前的重生点
+
+
+ You have spawned at
+ Jste třel
+ Has aparecido en
+
+ Du bist aufgewacht in
+ Tu as spawn à
+ Ti trovi a
+ Você irá começar em
+ Odrodziłeś się w
+ 你重生了
+
+
+
+
+ Give Ticket
+ Dejte Ticket
+ Dar Tiquete
+
+ Ticket geben
+ Verbaliser
+ Dai Multa
+ Dar Multa
+ Wystaw mandat
+ 开据罚单
+
+
+ Pay Ticket
+ Pay vstupenek
+ Pagar Tiquete
+
+ Ticket bezahlen
+ Payer l'amende
+ Paga Multa
+ Pagar Multa
+ Zapłać mandat
+ 支付罚款
+
+
+ Refuse Ticket
+ odmítnout Ticket
+ Denegar Tiquete
+
+ Ticket ablehnen
+ Refuser l'amende
+ Rifiuta Multa
+ Recusar Multa
+ Odmów przyjęcia mandatu
+ 拒绝缴款
+
+
+
+
+ Trunk Inventory
+ kufr Inventory
+ Inventario del Vehículo
+
+ Kofferraum
+ Coffre
+ Inventario Veicolo
+ Inventário do Veículo
+ Zawartość
+ 库存清单
+
+
+ Player Inventory
+ hráč Inventory
+ Inventario del Jugador
+
+ Spielerinventar
+ Inventaire Joueur
+ Inventario Giocatore
+ Inventário do Jogador
+ Wyposażenie gracza
+ 玩家清单
+
+
+ Take
+ Vzít
+ Sacar
+
+ Nehmen
+ Récupérer
+ Prendi
+ Pegar
+ Weź
+ 取出
+
+
+ Store
+ Obchod
+ Guardar
+
+ Lagern
+ Déposer
+ Deposita
+ Depositar
+ Schowaj
+ 存储
+
+
+
+
+ APD Wanted List
+ LAPD seznamu hledaných
+ Lista de Busqueda
+
+ Fahndungsliste
+ Interpol
+ Lista Ricercati
+ Lista APD Poszukiwane
+ Lista de Procurados
+ 通缉名单
+
+
+ Pardon
+ Pardon
+ Perdonar
+
+ Erlassen
+ Pardonner
+ Perdona
+ Pardon
+ Perdão
+ 赦免
+
+
+ Add
+ Přidat
+ Ajouter
+ Agregar
+ Aggiungere
+ Dodaj
+
+ Adicionar
+ Hinzufügen
+ 添加
+
+
+ Wanted People
+ chtěl, aby lidé
+ Personnes recherchées
+ Gente Buscada
+ La gente voleva
+ Ludzie chcieli
+
+ Pessoas Procuradas
+ Gesuchte Personen
+ 通缉犯
+
+
+ Citizens
+ občané
+ Citoyens
+ Ciudadanos
+ cittadini
+ Obywatele
+
+ Cidadãos
+ Bürger
+ 公民
+
+
+ Crimes
+ Zločiny
+ Crimes
+ Crimenes
+ crimini
+ Zbrodnie
+
+ Crimes
+ Verbrechen
+ 罪犯
+
+
+ %1 has been added to the wanted list.
+ %1 byl přidán do seznamu hledaných.
+ %1 a été ajouté à la liste des personnes recherchées.
+ %1 ha sido agregado a la Lista de Busqueda.
+ %1 è stato aggiunto alla lista dei ricercati.
+ %1 został dodany do listy pożądanego.
+
+ %1 foi adicionado a lista de procurados.
+ %1 wurde zur Fahndungsliste hinzugefügt.
+ %1 已添加到通缉名单.
+
+
+ %1 count(s) of %2
+ Počet%1 (y) z %2
+ %1 chef (s) de %2
+ %1 cuenta(s) de %2
+ %1 count (s) del %2
+ %1 count (ów) z %2
+
+ %1 contagem(s) de %2
+ %1 Vergehen: %2
+ %1 违法(次数) %2
+
+
+ Current Bounty Price: $%1
+ Aktuální Bounty Cena: $ %1
+ Prix de la prime: $%1
+ Recompensa Actual: $%1
+ Corrente Bounty Prezzo: $%1
+ Aktualny Bounty Cena: $%1
+
+ Atual recompensa: R$%1
+ Aktuelle Prämie: $%1
+ 目前的赏金: $%1
+
+
+
+
+ Salema
+ Salema
+ Salema
+
+ Sardine
+ Saumon
+ Salmone
+ Salema
+ Salema
+ 加州异鳍石鲈
+
+
+ Ornate
+ Vyšperkovaný
+ Ornate
+
+ Kaiserfisch
+ Doré
+ Orata
+ Ornamentado
+ Dorada
+ 橙带蝴蝶鱼
+
+
+ Mackerel
+ Makrela
+ Verdel
+
+ Makrele
+ Maquereau
+ Sgombro
+ Cavalinha
+ Makrela
+ 鲭鱼
+
+
+ Tuna
+ Tuňák
+ Atún
+
+ Thunfisch
+ Thon
+ Tonno
+ Atum
+ Tuńczyk
+ 金枪鱼
+
+
+ Mullet
+ cípal
+ Lisas
+
+ Meerbarbe
+ Mullet
+ Triglia
+ Tainha
+ Cefal
+ 梭鱼
+
+
+ Cat Shark
+ Cat žralok
+ Pez Gato
+
+ Katzenhai
+ Poisson Chat
+ Squalo
+ Tubarão Gato
+ Rekin
+ 鲨鱼
+
+
+ Rabbit
+ Králičí
+ Conejo
+
+ Hase
+ Lapin
+ Coniglio
+ Coelho
+ Zając
+ 兔子
+
+
+ Chicken
+ Kuře
+ Gallina
+
+ Hühnchen
+ Poulet
+ Pollo
+ Frango
+ Kurczak
+ 雏鸡
+
+
+ Rooster
+ Kohout
+ Gallo
+
+ Hähnchen
+ Coq
+ gallo
+ galo
+ kogut
+ 公鸡
+
+
+ Goat
+ Koza
+ Cabra
+
+ Ziege
+ Chèvre
+ Capra
+ Cabra
+ Koza
+ 山羊
+
+
+ Sheep
+ Ovce
+ Obeja
+
+ Schaf
+ Mouton
+ pecora
+ ovelha
+ Owca
+ 绵羊
+
+
+ Turtle
+ Želva
+ Tortuga
+
+ Schildkröte
+ Tortue
+ Tartaruga
+ Tartaruga
+ żółw
+ 乌龟
+
+
+
+
+ You do not have $%1 for a %2
+ Nemáte $%1 pro%2
+ No tienes $%1 para una %2
+
+ Du hast keine $%1 für einen %2.
+ Vous n'avez pas %1$ pour cet élément : %2
+ Non hai $%1 per $2
+ Você não tem R$%1 para %2
+ Nie masz $%1 na %2
+ 你没有 $%1 支付 %2
+
+
+ You bought a %1 for $%2
+ Koupil sis%1 pro $ %2
+ Comprastes una %1 por $%2
+
+ Du hast einen %1 für $%2 gekauft.
+ Vous avez acheté : %1 pour %2$
+ Hai comprato un %1 per $%2
+ Você comprou %1 por R$%2
+ Kupiłeś %1 za $%2
+ 你购买 %1 花费 $%2
+
+
+ %1 was arrested by %2
+ %1 byl zatčen%2
+ %1 fue arrestado por %2
+
+ %1 wurde von %2 verhaftet.
+ %1 a été arrêté par %2
+ %1 è stato arrestato da %2
+ %1 foi preso por %2
+ %1 został aresztowany przez %2
+ %1 被 %2 逮捕
+
+
+ You caught a %1
+ chytil jste%1
+ Atrapastes un %1
+
+ Du hast einen %1 gefangen.
+ Vous avez attrapé un %1
+ Hai pescato %1
+ Você pegou %1
+ Złapałeś %1
+ 你逮捕了 %1
+
+
+ Gutting %1
+ Kuchání%1
+ Eviscerando %1
+
+ %1 ausnehmen
+ Eviscération de %1
+ eviscerazione %1
+ evisceração %1
+ Patroszenie %1
+ 去除 %1 的内脏
+
+
+ You have collected some raw %1 meat
+ Nasbíráte nějaké syrové maso %1
+ Has recolectado carne cruda de %1
+
+ Du hast rohes %1 Fleisch erhalten.
+ Vous avez récolté quelques morceaux de %1 cru
+ You have collected some raw %1 meat
+ You have collected some raw %1 meat
+ You have collected some raw %1 meat
+ 你已经从 %1 收集生肉
+
+
+ You have taken some turtle meat
+ Jste si vzali nějaké želví maso
+ Has tomado carne de tortuga.
+
+ Du hast etwas Schildkrötenfleisch bekommen.
+ Vous avez récupéré un peu de viande de tortue
+ Hai raccolto della carne di tartaruga
+ Você pegou carne de tartaruga
+ Wziąłeś trochę mięsa żółwia
+ 你吃了一些海龟肉
+
+
+ You have earned $%1
+ Jste získali $%1
+ Has ganado $%1
+
+ Du hast $%1 verdient.
+ Vous avez gagné %1$
+ Hai guadagnato $%1
+ Você ganhou R$%1
+ Otrzymałeś $%1
+ 你赚了 $%1
+
+
+ Dropping fishing net...
+ Pád rybářská síť ...
+ Tirando red de pesca...
+
+ Fischernetz auswerfen...
+ Déploiement du filet de pêche...
+ Posizionando la rete da pesca...
+ Jogando rede de pesca...
+ Rzucam sieć...
+ 撒下鱼网...
+
+
+ Didn't catch any fish...
+ Nezachytil žádnou rybu ...
+ No atrapastes peces...
+
+ Keinen Fisch gefangen...
+ Vous n'avez pas réussi à attraper de poisson...
+ Non hai pescato nulla...
+ A rede voltou vazia...
+ Nic nie złapałeś...
+ 没有捕到任何鱼...
+
+
+ Fishing net pulled up.
+ Rybářská síť vytáhl nahoru.
+ Recogistes la red.
+
+ Fischernetz eingeholt.
+ Le filet de pêche a été entièrement relevé.
+ Rete da pesca recuperata.
+ A rede de pesca foi recolhida
+ Sieć wciągnięta.
+ 拉起渔网。
+
+
+ Your inventory space is full.
+ Váš inventář prostor je plný.
+ No tienes espacio en tu inventorio.
+
+ Dein Inventar ist voll.
+ Vous n'avez plus de place dans votre inventaire.
+ Il tuo inventario è pieno.
+ Seu inventário está cheio
+ Nie masz więcej miejsca.
+ 您的库存空间已满。
+
+
+ Gathering %1...
+ Sběr%1 ...
+ Recolectando %1...
+
+ Sammle %1...
+ Ramassage de %1...
+ Raccogliendo %1
+ Coletando %1...
+ Zbierasz %1
+ 采集 %1...
+
+
+ You have sold a %1 for $%2
+ Jste prodal%1 pro $ %2
+ Has vendido un %1 por $%2
+
+ Du hast einen %1 für $%2 verschrottet.
+ Vous avez vendu un(e) %1 pour $%2
+ Hai venduto un %1 per %2$
+ Você vendeu %1 por R$%2
+ Sprzedałeś %1 za $%2
+ 你卖掉 %1 赚了 $%2
+
+
+ You have picked %1 %2
+ Jste si vybrali% %1 2
+ Has recogido %1 %2
+
+ Du hast %1 %2 aufgenommen.
+ Vous avez ramassé : %1 %2
+ Hai trovato %1 %2
+ Você pegou %1 %2
+ Podniosłeś %1 %2
+ 你采集了 %1 个 %2
+
+
+ You have collected some %1
+ Jste nasbírali řadu%1
+ Has recolectado %1
+
+ Du hast etwas %1 gesammelt.
+ Vous avez récolté %1
+ Hai raccolto %1
+ Você coletou %1
+ Wziąłeś %1
+ 你采集了一些 %1
+
+
+ You are to deliver this package to %1.
+ Jste doručit tento balíček %1
+ Debes llevar este paquete a %1
+
+ Du musst dieses Paket bei %1 abliefern.
+ Vous avez livré ce paquet à %1
+ Devi consegnare questo pacco al %1
+ Você deverá entregar esse pacote para %1
+ Dostarcz tę przesyłkę do %1
+ 你要递送这个包裹到 %1。
+
+
+ Deliver this package to %1.
+ Doručit tento balíček %1
+ LLeva el paquete a: %1
+
+ Liefere dieses Paket bei %1 ab.
+ Livrer ce paquet à %1.
+ Consegna questo pacco al %1
+ Entregue esse pacote para %1
+ Dostarcz przesyłkę do %1
+ 把这个包裹送到 %1。
+
+
+ You failed to deliver the package because you died.
+ Nepodařilo se vám doručit balíček, protože jsi zemřela.
+ Fallastes la misión, porque moristes.
+
+ Da du gestorben bist, hast du es nicht geschafft das Paket abzuliefern.
+ Vous êtes mort, livraison annulée.
+ Compra Oggetto
+ Você falhou na tarefa de entrega pois você morreu.
+ Nie dostarczyłeś przesyłki z uwagi na to że zmarłeś.
+ 因为你死了,所以你没能投递包裹。
+
+
+ You do not have $%1 to be healed
+ Nemáte $%1, aby se léčil
+ No tienes $%1 para ser curado
+
+ Du hast keine $%1, um behandelt zu werden.
+ Vous n'avez pas $%1 pour être soigné.
+ Non hai $%1 per essere curato
+ Você não tem R$%1 para ser curado
+ Nie masz $%1 na leczenie
+ 你没有 $%1 治疗费
+
+
+ You do not need to be healed!
+ Nemusíte být uzdraven!
+ Vous êtes déjà en pleine forme !
+ Usted no necesita ser curado!
+ Non è necessario essere guarito!
+ Nie trzeba się wyleczyć!
+ Você não precisa ser curado!
+ Вам не нужно быть исцелены!
+ Du brauchst keine Behandlung!
+ 你不需要治疗!
+
+
+ Spend $%1 to be fully healed?
+ Útrata $%1 musí být zcela vyléčit?
+ Donner $%1 pour être complètement guéri ?
+ Gastar $%1 para ser curado por completo?
+ Spendere $%1 di essere completamente guarito?
+ Wydać $%1 w pełni uzdrowiony?
+ Gastar US $%1 para ser totalmente curado?
+ Потратит $%1, чтобы быть полностью зажила?
+ Willst du dich für $%1 vollständig behandeln lassen?
+ 花费 $%1 痊愈?
+
+
+ Doctor
+ Doktor
+ Docteur
+ Médico
+ Medico
+ Lekarz
+ Médico
+ Врач
+ Arzt
+ 医疗人员
+
+
+ Please stay still
+ Prosím, zůstat v klidu
+ Por favor, no te muevas
+
+ Bitte bewege dich nicht!
+ Ne bougez pas
+ Attendi pazientemente
+ Fique parado por favor
+ Proszę się nie ruszać
+ 请不要动
+
+
+ You need to be within 5m while the doctor is healing you
+ Musíte být v rámci 5m, zatímco lékař vás hojení
+ Debes estar a 5m mientras que te curan.
+
+ Du musst in der Nähe vom Arzt bleiben, damit er dich behandeln kann.
+ Vous devez être à moins de 5m du médecin pendant qu'il vous soigne.
+ Devi restare entro 5m dal dottore per essere curato
+ Você tem que estar a 5m para o médico curá-lo
+ Musisz być w pobliżu doktora gdy ten cię leczy - ok 5m
+ 医疗人员在治疗你的时候,你必须在5米以内
+
+
+ You are now fully healed.
+ Ty jsou nyní plně uzdravil.
+ Estas curado!
+
+ Du wurdest behandelt.
+ Vous êtes completement soigné.
+ Sei stato curato completamente.
+ Sua saúde está perfeita
+ Zostałeś wyleczony
+ 你现在痊愈了。
+
+
+ %1 your %2 is being impounded by the police.
+ %1 Váš%2 je zabaveno policií.
+ %1 tu %2 esta siendo embargado por la policía.
+
+ %1 dein %2 wird von der Polizei beschlagnahmt!
+ %1, votre %2 est en train d'être envoyé à la fourrière par la police.
+ %1 il tuo %2 sta per essere sequestrato dalla Polizia.
+ %1 seu %2 está sendo apreendido pela Polícia
+ %1 twój %2 jest usuwany przez Policję
+ %1 的 %2 正在被警察扣留。
+
+
+ Impounding Vehicle
+ vzdouvání Vehicle
+ Embargando Vehículo
+
+ Fahrzeug wird beschlagnahmt
+ Mise en fourrière
+ Sequestro Veicolo in corso
+ Apreendendo veículo
+ Usuwam pojazd
+ 扣留载具
+
+
+ Impounding has been cancelled.
+ Zabavení byla zrušena.
+ Embargo cancelado.
+
+ Beschlagnahmung abgebrochen.
+ Mise en fourrière annulée.
+ Il sequestro è stato annullato.
+ Ação de apreender foi cancelada
+ Przerwano usuwanie pojazdu
+ 扣留已被取消.
+
+
+ You have impounded a %1\n\nYou have received $%2 for cleaning up the streets!
+ Jste zabaveno a %1 \n\n jste obdržel $%2 pro čištění ulic!
+ Has embargado un %1\n\nHas recibido $%2 por limpiar las calles!
+
+ Du hast einen %1 beschlagnahmt\n\nDu hast $%2 für das Aufräumen der Straßen bekommen!
+ Vous avez mis en fourrière un(e) %1\n\nVous avez reçu $%2.
+ Hai sequestrato un %1\n\nHai ricevuto $%2 per aver mantenuto l'ordine nelle strade!
+ Você apreendeu %1\n\nVocê recebeu R$%2 por deixar as ruas mais seguras!
+ Usunąłeś %1\n\n Otrzymujesz $%2 za oczyszczanie mapy
+ 你扣留了 %1\n\你收到了 $%2 扣留费!
+
+
+ %1 has impounded %2's %3
+ %1 byl odtažen% %2 3 je
+ %1 a embargado el %3 de %2
+
+ %1 hat %2's %3 beschlagnahmt.
+ %1 a mis en fourrière le %3 de %2.
+ %1 ha sequestrato il %2 di %3
+ %1 apreendeu %3 de %2
+ %1 usunął %2's %3
+ %1 扣留了 %2 的 %3
+
+
+ You paid $%1 for impounding your own %2.
+ Zaplatil jste $%1 pro vzdouvání vlastní %2.
+ Vous avez payé $%1 pour la mise en fourrière de votre propre %2.
+ Has pagado $%2 para embargar tu propio %1.
+ Hai pagato $%1 per sequestro la propria %2.
+ Zapłaciłeś $%1 do zatrzymywania własną %2.
+
+ Du hast $%1 bezahlt, weil du dein eigenen %2 beschlagnahmt hast.
+ Você pagou R$%1 para guardar seu próprio %2.
+ 你支付 $%1 取出了被扣留的 %2.
+
+
+ Abort available in %1
+ Přerušit k dispozici v %1
+ Aborto disponible en %1
+
+ Déconnexion disponible dans %1
+ Abbruch möglich in %1.
+ Abbandona disponibile in %1
+ Abortar disponível em %1
+ Możesz przerwać za %1
+ 距离下线时间 %1
+
+
+ This vehicle is already mining
+ Toto vozidlo je již dobývání
+ Este Vehículo ya esta minando
+
+ Dieses Fahrzeug ist bereits am Abbauen.
+ Ce véhicule est déjà en train de miner
+ Questo veicolo sta già estraendo risorse
+ Esse veículo já está minerando
+ Pojazd jest w trakcie wydobycia surowców
+ 载具已经在开采了
+
+
+ The vehicle is full
+ Vozidlo je plná
+ El vehículo esta lleno!
+
+ Das Fahrzeug ist voll.
+ Le véhicule est plein.
+ Il veicolo è pieno
+ O veículo está cheio.
+ Pojazd jest pełny
+ 载具库存已满
+
+
+ You are not near a resource field
+ Nejste v blízkosti oblasti zdrojů
+ No estas cerca de un campo de recursos.
+
+ Du bist nicht in der Nähe eines Ressourcenfeldes.
+ Vous n'êtes pas à proximité d'un champ de ressources.
+ Non sei vicino ad un campo risorse
+ Você não está próximo ao recurso
+ Nie jesteś w pobliżu pola surowców
+ 你不在资源区域附近
+
+
+ You cannot turn the vehicle on when mining
+ Nemůžete otočit vozidlo o tom, kdy výtěžek
+ No puedes girar el vehículo mientras esta minando
+
+ Du kannst das Fahrzeug nicht starten, solange es am Abbauen ist.
+ Le moteur doit être arrêté pour que le véhicule puisse miner
+ Non puoi accendere il veicolo mentre estrae risorse
+ Você não pode ligar o veículo enquanto minera
+ Nie możesz poruszać pojazdem w trakcie wydobycia.
+ 开采时不能打开载具
+
+
+ The Device is mining...
+ Zařízení je důlní ...
+ El Dispositivo esta minando...
+
+ Das Fahrzeug baut ab...
+ Le véhicule est en train de miner...
+ Il veicolo sta estrando risorse...
+ A máquina está minerando...
+ Trwa wydobycie...
+ 设备正在开采...
+
+
+ Completed cycle, the device has mined %1 %2
+ Dokončena cyklus, přístroj se těžil% %1 2
+ Ciclo completado el dispositivo ha minado %1 %2
+
+ Sammeln beendet, das Fahrzeug hat %1 %2 abgebaut.
+ Cycle terminé, le véhicule a miné %1 %2
+ Ciclo completato, il veicolo ha raccolto %1 %2
+ Ciclo completo, a máquina minerou %1 %2
+ Urządzenie wydobyło %1 %2
+ 完成一个开采周期,设备已开采 %1 %2
+
+
+ Vehicle is out of fuel
+ Vozidlo je mimo pohonné hmoty
+ El vehículo no tiene gasolina.
+
+ Das Fahrzeug hat keinen Treibstoff mehr.
+ Le véhicule n'a plus de carburant.
+ Il veicolo è senza carburante
+ O veículo está sem combustível
+ Brak paliwa w pojezdzie
+ 载具燃料不足
+
+
+ You have packed up the spike strip.
+ Jste sbalil spike proužek.
+ Has agarrado la Barrera de Clavos.
+
+ Du hast das Nagelband eingepackt.
+ Vous avez récupéré la herse.
+ Hai raccolto una striscia chiodata.
+ Você recolheu o tapete de espinhos.
+ Kolczatka zwinięta
+ 你铺设了钉刺带。
+
+
+ %1 has been placed in evidence, you have received $%2 as a reward.
+ %1 byl umístěn v důkazu, jste obdrželi $%2 jako odměnu.
+ %1 ha sido colocado en evidencias, has recibido $%2 como recompensa.
+
+ %1 hat Beweise hinterlassen, als Belohnung erhälst du $%2.
+ Vous avez mis sous scellé la drogue de %1, vous avez reçu $%2 comme récompense.
+ E' stata trovata della merce illegale: %1, hai ricevuto $%2 come ricompensa.
+ %1 foi pego como evidência, você recebeu R$%2 como recompensa.
+ %1 umieszczony w dowodach, otrzymujesz w nagrodę $%2
+ %1 已经被送入监狱,你已经收到了 $%2 作为奖励.
+
+
+ You have picked up $%1
+ Jste zvedl $%1
+ Has recogido $%1
+
+ Du hast $%1 aufgehoben.
+ Vous avez ramassé $%1
+ Hai raccolto $%1
+ Você pegou R$%1
+ Podniosłeś $%1
+ 你捡到了 $%1
+
+
+ You must wait at least 3 minutes in jail before paying a bail.
+ Musíte počkat nejméně 3 minuty ve vězení předtím, než platit kauci.
+ Debes esperar un minimo de 3 minutos en la cárcel antes de poder pagar la fianza.
+
+ Du musst mindestens 3 Minuten lang im Gefängnis bleiben, bevor du die Kaution beantragen kannst.
+ Vous devez attendre au moins 3 minutes en prison avant de pouvoir payer votre caution.
+ Devi aspettare almeno 3 minuti in prigione prima di poter pagare la cauzione.
+ Você precisa esperar pelo menos 3 minutos antes de poder pagar fiança.
+ Musisz poczekać conajmniej 3 minuty w więzieniu zanim zapłacisz kaucję.
+ 在保释之前,你必须至少在监狱里呆3分钟。
+
+
+ You do not have $%1 in your bank account to pay bail.
+ Nemáte $%1 z vašeho bankovního účtu platit kauci.
+ No tienes $%1 en tu cuenta de banco para pagar la fianza!
+
+ Du hast keine $%1 auf deinem Bankkonto, um die Kaution zu bezahlen.
+ Vous n'avez pas $%1 dans votre compte en banque pour payer la caution.
+ Non hai $%1 nel tuo conto in banca per poter pagare la cauzione.
+ Você não tem R$%1 em sua conta bancária para pagar a fiança.
+ Nie masz $%1 na koncie aby zapłacić kaucję.
+ 你的银行账户没有 $%1 的金额。
+
+
+ %1 has posted bail!
+ %1 byl vyslán na kauci!
+ %1 a pagado la fianza!
+
+ %1 hat die Kaution bezahlt!
+ %1 a payé sa caution !
+ %1 ha pagato la cauzione!
+ %1 pagou a fiança!
+ %1 wpłacił kaucję!
+ %1 已保释!
+
+
+ There isn't a vehicle nearby...
+ Není vozidlo v blízkosti ...
+ No hay un vehículo cerca...
+
+ Es ist kein Fahrzeug in der Nähe...
+ Il n'y a pas de véhicule à proximité...
+ Non c'è alcun veicolo qui vicino...
+ Não existe um veículo por perto...
+ W pobliżu nie ma pojazdu...
+ 附近没有载具...
+
+
+ You can't chop a vehicle while a player is near!
+ Nemůžeš sekat vozidla, zatímco hráč je blízko!
+ Vous ne pouvez pas vendre un véhicule alors que son propriétaire est à proximité !
+ No puedes vender este vehículo mientras hay un jugador cerca!
+ Non si può rubare un veicolo mentre un giocatore è vicino!
+ Nie można posiekać pojazd podczas gdy gracz jest w pobliżu!
+
+ Você não pode usar o desmanche enquanto um jogador está próximo!
+ Du kannst kein Fahrzeug beim Schrotthändler verschrotten, während ein Spieler in der Nähe ist!
+ 当玩家靠近时,你不能盗窃载具!
+
+
+ %1 was restrained by %2
+ %1 byl omezen%2
+ %1 fue retenido por %2
+
+ %1 wurde von %2 festgenommen
+ %1 a été menotté par %2
+ %1 è stato ammanettato da %2
+ %1 foi imobilizado por %2
+ %1 został skuty przez %2
+ %1 被 %2 约束
+
+
+ Searching...
+ Hledám ...
+ Buscando...
+
+ Durchsuche...
+ Recherche...
+ Ricerca...
+ Revistando...
+ Szukam...
+ 搜查...
+
+
+ Couldn't search the vehicle
+ Nemohli vyhledávat na vozidlo
+ No se pudo buscar el vehículo.
+
+ Das Fahrzeug konnte nicht durchsucht werden!
+ Impossible de fouiller le véhicule.
+ Impossibile ispezionare il veicolo
+ Você não pode revistar o veículo
+ Nie można przeszukać pojazdu
+ 不能搜查载具
+
+
+ Your illegal items have been put into evidence.
+ Vaše nelegálních položky byly uvedeny do důkazy.
+ Tus objetos ilegales fueron confiscados.
+
+ Deine illegalen Gegenstände wurden als Beweismittel eingezogen.
+ Vos objets illégaux ont été mis sous scellé.
+ I tuoi articoli illegali sono stati messi sotto sequestro.
+ Seus itens ilegais foram postos em evidência.
+ Twoje nielegalne pozycje zostały wprowadzone do dowodów.
+ 你的非法物品被查获。
+
+
+ This vehicle has no information, it was probably spawned in through cheats. \n\nDeleting vehicle.
+ Toto vozidlo nemá žádné informace, to bylo pravděpodobně třel dovnitř podvodníky. \ In \ Odstranění vozidla.
+ Este vehículo no tiene informacion, posiblemente fue creado atravez de Cheats \n\nBorrando vehículo.
+
+ Über das Fahrzeug gibt es keine Informationen, es wurde vermutlich durch Cheats gespawnt. \n\nLösche das Fahrzeug.
+ Ce véhicule ne dispose d'aucune information, il a probablement été créé par un hackeur. \n\ Suppression du véhicule.
+ Il veicolo è privo di identificativi, probabilmente è stato creato mediante cheat. \n\nCancellazione veicolo.
+ Esse veículo não tem informações, é provável que ele tenha sido criado por um cheater.\n\nDeletando veículo.
+ Pojazd bez informacji servera, prawdopodobnie umieszczony przez hakera \n\n usuwam pojazd.
+ 这载具没有任何信息, 它可能是通过作弊产生的. \n\n删除载具。
+
+
+ You are already doing an action. Please wait for it to end.
+ Ty jsou již dělá akci. Počkejte prosím, až to skončí.
+ Ya estas haciendo una acción, espera a que termine.
+
+ Du führst bereits eine Aktion aus. Bitte warte, bis diese beendet ist.
+ Vous faites déjà une action. Merci d'attendre la fin de celle-ci.
+ Stai già compiendo un'azione, attendi che finisca.
+ Você já está executando uma ação. Por favor espere até que ela acabe.
+ Aktualnie wykonujesz jakąś akcję poczekaj aż skończysz.
+ 你已经在行动了.请等待结束.
+
+
+ %1 was unrestrained by %2
+ %1 byl živelný%2
+ %1 fue soltado por %2
+
+ %1 wurde von %2 freigelassen.
+ %1 a été démenotté par %2.
+ %2 ha tolto le manette a %1
+ %1 foi liberado por %2
+ %1 został rozkuty przez %2
+ %1 摆脱了 %2 的约束
+
+
+ %1 has robbed %2 for $%3
+ %1 oloupil%2 na $ %3
+ %1 le ha robado $%3 a %2
+
+ %1 hat $%3 von %2 geraubt.
+ %1 a volé %2 pour $%3.
+ %1 ha rapinato %2 di $%3
+ %1 roubou R$%3 de %2
+ %1 obrabował $%2 na $%3
+ %1 抢劫了 %2 金钱 $%3
+
+
+ %1 doesn't have any money.
+ %1 nemá žádné peníze.
+ %1 No tiene dinero.
+
+ %1 hat kein Geld.
+ %1 n'a pas d'argent.
+ %1 non ha alcun soldo.
+ %1 não tem nenhum dinheiro.
+ %1 nie ma pieniędzy.
+ %1 身无分文。
+
+
+ %1 was tazed by %2
+ %1 byl tased%2
+ %1 fue paralizado por %2
+
+ %1 wurde von %2 getazert.
+ %1 a été tazé par %2.
+ %1 è stato taserato da %2
+ %1 foi eletrocutado por %2
+ %1 został potraktowany paralizatorem przez %2
+ %1 被 %2 约束
+
+
+ A vehicle was searched and has $%1 worth of drugs / contraband.
+ Vozidlo byl prohledán a má $%1 v hodnotě drog / kontrabandu.
+ Un vehículo fue buscado y se econtro $%1 en drogas / contrabando.
+
+ Ein Fahrzeug wurde durchsucht und es wurden Drogen / Schmuggelware im Wert von $%1 gefunden.
+ Un véhicule venant d'être fouillé avait $%1 de drogue / contrebande.
+ Un veicolo è stato ispezionato e sono stati sequestrati $%1 in materiale illegale.
+ O veículo foi revistado e tem R$%1 em drogas ou contrabandos
+ Podczas przeszukania znalezono narkotyki/kontrabandę o wartości $%1
+ 搜查载具查获价值 $%1 的毒品/违禁品。
+
+
+ A container of house was searched and has $%1 worth of drugs / contraband.
+ Kontejner domu byl prohledán a má $%1 v hodnotě drog / kontrabandu.
+ Un contenedor fue buscado y se econtro $%1 en drogas / contrabando.
+
+ Ein Container im Haus wurde durchsucht und es wurden Drogen / Schmuggelware im Wert von $%1 gefunden.
+ Un conteneur de maison venant d'être fouillé avait $%1 de drogue / contrebande.
+ Un veicolo è stato ispezionato e sono stati sequestrati $%1 in materiale illegale.
+ O veículo foi revistado e tem R$%1 em drogas ou contrabandos
+ Podczas przeszukania znalezono narkotyki/kontrabandę o wartości $%1
+ 搜查房子存储箱查获价值 $%1 的毒品/违禁品.
+
+
+ You have been pulled out of the vehicle.
+ Byli jste vytáhl z vozu.
+ Te han sacado del vehículo
+
+ Du wurdest aus dem Fahrzeug gezogen.
+ Vous avez sorti les personnes du véhicule.
+ Sei stato estratto dal veicolo
+ Você foi retirado do veículo
+ Zostałeś wyciągnięty z pojazdu
+ 你从车里被拖出来了。
+
+
+ %1 has gave you %2 %3.
+ %1 vám již dal% %2 3.
+ %1 te ha dado %2 %3
+
+ %1 hat dir %2 %3 gegeben.
+ %1 vous a donné %2 %3.
+ %1 ti ha dato %2 %3
+ %1 lhe deu %2 %3
+ %1 dał ci %2 %3
+ %1 给了你 %2 %3.
+
+
+ %1 has given you $%2.
+ %1 vám dal $ %2.
+ %1 te ha dado $%2
+
+ %1 hat dir $%2 gegeben.
+ %1 vous a donné $%2.
+ %1 ti ha dato $%2
+ %1 lhe deu R$%2
+ %1 dał ci $%2
+ %1 给了你 $%2.
+
+
+ Sending information to server please wait.....
+ Odesílání informací serveru čekejte prosím ...
+ Mandando información, por favor espere...
+
+ Sende Informationen an den Server, bitte warten.....
+ Envoi d'informations au serveur, patientez s'il vous plait...
+ Invio delle informazioni al server, attendere prego......
+ Enviando informações para o servidor, seja paciente.....
+ Przesyłam informacje na server poczekaj ....
+ 发送信息到服务器,请稍候.....
+
+
+ An action is already being processed...
+ Akce je již zpracován ...
+ Una acción ya esta siendo procesada...
+
+ Es wird bereits eine Aktion ausgeführt...
+ Une action est déjà en cours de traitement...
+ Un'azione è già in corso...
+ Você já está realizando um ação...
+ Akcja jest w trakcie wykonywania...
+ 正在处理操作...
+
+
+ You're doing it too fast!
+ Děláte to příliš rychle!
+ Moins vite entre chaque action !
+ Lo estas haciendo muy rapido!
+ Lo stai facendo troppo veloce!
+
+ Du bist ganz aus der Puste! Warte ein paar Sekunden!
+ Você está fazendo isso muito rápido!
+ Za szybko zwolnij !
+ 你做得太快了!
+
+
+ You don't have enough space for that amount!
+ Nemáte dostatek prostoru pro tuto částku!
+ No tienes suficiente espacio para eso!
+
+ Du hast für diese Menge nicht genug Platz!
+ Vous n'avez pas assez de place pour cette quantité !
+ Non hai abbastanza spazio per quel quantitativo!
+ Você não tem espaço suficiente para guardar o item
+ Nie masz tyle miejsca!
+ 你没有足够的空间存放物品!
+
+
+ You don't have that much money!
+ Nemáte tolik peněz!
+ No tienes tanto dinero!
+
+ Du hast nicht so viel Geld!
+ Vous n'avez pas assez d'argent !
+ Non hai tutti quei soldi!
+ Você não tem todo esse dinheiro!
+ Nie masz tyle pieniędzy!
+ 你没有那么多钱!
+
+
+ You are not a cop.
+ Ty nejsi polda.
+ No eres policía.
+
+ Du bist kein Polizist.
+ Vous n'êtes pas policier.
+ Non sei un poliziotto.
+ Você não é um Policial.
+ Nie jesteś policjantem
+ 你不是警察。
+
+
+ You don't have enough room for that item.
+ Nemáte dostatek prostoru pro danou položku.
+ No tienes el espacio suficiente.
+
+ Du hast nicht genug Platz für den Gegenstand.
+ Vous n'avez pas assez de place.
+ Non hai abbastanza spazio per quell'oggetto.
+ Você não tem espaço suficiente no seu inventário.
+ Nie masz wystarczająco miejsca na tą rzecz.
+ 你没有足够的空间存放这个物品。
+
+
+ You need $%1 to process without a license!
+ Musíte $%1 bez povolení ke zpracování!
+ Necesitas $%1 par procesar sin una licencia!
+ È necessario $%1 a processo senza patente!
+
+ Du benötigst $%1, um ohne Lizenz verarbeiten zu können!
+ Vous devez payer $%1 pour traiter sans licence !
+ Você precisa de R$%1 para processar sem uma licença!
+ Potrzebujesz $%1 w celu przetworzenia bez licencji
+ 你未取得许可需要支付 $%1 才能加工!
+
+
+ You don't have enough items!
+ Ty nemají dostatek položku!
+ No tienes suficientes objetos!
+ Non disponi di abbastanza materiale grezzo!
+ Nie masz wystarczająco dużo rzeczy!
+
+ Vous n'avez pas assez d'items !
+ Você não tem itens suficientes!
+ Du hast nicht genug Materialien!
+ 你没有足够的物品!
+
+
+ You have processed your item(s)!
+ Jste zpracujeme vaši položku (y)!
+ Has procesado tus objeto(s)
+
+ Vous avez traité vos objet(s) !
+ Hai processato i tuoi oggetti!
+ Przetworzeniu swój przedmiot (y)!
+ Você processou seu(s) item(s)
+ Du hast deine Materialien verarbeitet!
+ 你已经加工了你的物品!
+
+
+ You can't rapidly use action keys!
+ Nemůžete rychle využít akčních kláves!
+ No puedes usar Keys de Acciones tan rápido!
+
+ Die Aktionstaste kann nicht so schnell hintereinander genutzt werden!
+ Vous ne pouvez pas utiliser rapidement les touches d'action !
+ Non puoi riusare così rapidamente il tasto azione!
+ Você não pode usar a tecla de ação repetidamente!
+ Za szybko używasz przycisku akcji!
+ 你不能快速点击按键!
+
+
+ You do not have enough funds in your bank account.
+ Nemáte dostatek prostředků na váš bankovní účet.
+ No tienes tanto dinero en tu cuenta de banco.
+
+ Du hast nicht genug Geld auf deinem Bankkonto.
+ Vous n'avez pas assez de fonds dans votre compte en banque.
+ Non hai abbastanza fondi nel tuo conto in banca.
+ Você não tem todo esse dinheiro em sua conta bancária.
+ Nie masz wystarczających środków w banku.
+ 你的银行账户里没有足够的资金。
+
+
+ Couldn't add it to your inventory.
+ Nemohl ji přidat do svého inventáře.
+ No se pudo agregar a tu inventario.
+
+ Es konnte nichts zu deinem Inventar hinzugefügt werden.
+ Impossible d'ajouter cela à votre inventaire.
+ Non puoi aggiungerlo al tuo inventario.
+ Não foi possível adicionar o item ao seu inventário
+ Nie można dodać tego do twojego wyposażenia
+ 无法将其添加到你的库存中。
+
+
+ You haven't eaten anything in awhile, You should find something to eat soon!
+ Jste nejedli nic za čas, byste měli najít něco k jídlu brzy!
+ No has comido nada en un largo rato. Deberías buscar algo de comer!
+
+ Du hast schon eine Weile nichts mehr gegessen! Du solltest langsam etwas zum Essen suchen!
+ Vous n'avez rien mangé depuis un certain temps, vous devriez trouver quelque chose à manger !
+ E' da tempo che non mangi qualcosa, dovresti trovare qualcosa da mettere sotto i denti in fretta!
+ Você não come a bastante tempo. Ache algo para comer logo!.
+ Zaczynasz być głodny, poszukaj czegoś do jedzenia!
+ 你有一阵子没吃东西了,你应该马上找点吃的!
+
+
+ You are starting to starve, you need to find something to eat otherwise you will die.
+ Můžete se začínají hladovět, budete muset najít něco k jídlu jinak zemřete.
+ Te esta dando mucha, mucha hambre. Come algo o moriras!
+
+ Du hast Hunger! Du solltest schnell etwas essen oder du wirst verhungern.
+ Vous commencez à mourir de faim, vous devez trouver quelque chose à manger, ou vous mourrez.
+ Ti stai indebolendo, devi trovare qualcosa da mangiare o morirai.
+ Você está começando a ficar famindo. Se você não comer irá morrer de fome.
+ Długo nie jadłeś, zjedz coś lub zginiesz z głodu.
+ 你感觉饿了,你需要找点东西吃,否则你会死的。
+
+
+ You are now starving to death, you will die very soon if you don't eat something.
+ Nyní jste hladoví k smrti, zemřete velmi brzy, pokud nemáte něco jíst.
+ Estas a punto de morir de hambre, busca comida rápido!
+
+ Du bist am Verhungern! Du wirst sterben, wenn du nichts zum Essen findest!
+ Vous êtes en train de mourir de faim, vous allez mourir très bientôt si vous ne mangez pas quelque chose.
+ Stai perdendo le forze, se non mangi qualcosa in fretta morirai.
+ Você está morrendo de fome, coma algo ou irá morrer.
+ Zaczynasz słabnąć z głodu zjedz coś lub zginiesz !!!
+ 你现在很饿,如果你不吃东西,很快就会死的。
+
+
+ You have starved to death.
+ Jste hladem.
+ Te has muerto de hambre.
+
+ Du bist verhungert!
+ Vous êtes mort de faim.
+ Sei morto per la fame.
+ Você morreu de fome
+ Wygłodziłeś się na śmierć.
+ 你饿死了。
+
+
+ You haven't drank anything in awhile, You should find something to drink soon.
+ Nemáte pil nic za čas, byste měli najít něco k pití brzy.
+ No has tomado nada en un largo rato. Deberías buscar algo de tomar!
+
+ Du hast schon eine Weile nichts mehr getrunken! Du solltest langsam etwas zum Trinken suchen!
+ Vous n'avez rien bu depuis un certain temps, vous devriez trouver quelque chose à boire !
+ E' da parecchio tempo che non bevi qualcosa, dovresti trovare qualcosa da bere.
+ Você não bebe nada a bastante tempo. Ache algo para beber logo.
+ Zaczynasz być spragniony, powinienieś poszukać czegoś do picia.
+ 你有一阵子没喝水了,你应该马上找点喝的。
+
+
+ You haven't drank anything in along time, you should find something to drink soon or you'll start to die from dehydration.
+ Vy jste nic pil na delší dobu, měli byste si najít něco k pití hned, nebo budete začnou umírat z dehydratace.
+ Te esta dando mucha, mucha sed. Toma algo o moriras!
+
+ Du hast Durst! Du solltest schnell etwas trinken oder du wirst verdursten!
+ Vous commencez à mourir de soif, vous allez mourir de soif si vous ne buvez pas.
+ E' troppo tempo che non bevi qualcosa, dovresti trovare qualcosa da bere o comincerai a disitratarti.
+ Você está ficando desidratado. Se não beber algo poderá morrer.
+ Długo nic nie piłeś, napij się czegoś bo możesz zginąć z pragnienia.
+ 你在一段时间内没有喝水,你要尽快找到喝的,否则你会开始脱水而死。
+
+
+ You are now suffering from severe dehydration find something to drink quickly!
+ Nyní trpí těžkou dehydratací najít něco k pití rychle!
+ Estas a punto de morir de desidratación, busca algo de tomar rapido!
+
+ Du bist am Verdursten! Du wirst sterben, wenn du nichts zum Trinken findest!
+ Vous êtes en train de mourir de soif, vous allez mourir très bientôt si vous ne buvez pas.
+ Stai soffrendo per una grave deidratazione, trova velocemente qualcosa da bere o morirai!
+ Você está sofrendo de desidratação. Beba algo ou irá morrer!
+ Zaczynasz słabnąć z pragnienia, wypij coś inaczej zginiesz!!!
+ 你现在正严重脱水,快找点喝的!
+
+
+ You have died from dehydration.
+ Jsi zemřel na dehydrataci.
+ Has muerto de desidratación.
+
+ Du bist verdurstet!
+ Vous êtes mort de soif.
+ Sei morto per disidratazione.
+ Você morreu desidratado.
+ Umarłeś z uwagi na odwodnienie organizmu
+ 你死于脱水.
+
+
+ You are over carrying your max weight! You will not be able to run or move fast till you drop some items!
+ Překročili jste přenášení maximální váhu! Nebudete moci spustit nebo přesunout rychle, dokud se kapka některé položky!
+ Estas cargando tu peso máximo! No puedes correr o moverte rapido hasta que botes algunos objetos!
+
+ Du trägst zu viel bei dir! Du bist nicht in der Lage, zu rennen oder dich schnell zu bewegen, bis du einige Gegenstände abgelegt hast!
+ Vous êtes surchargé, vous ne pouvez plus courir ou bouger rapidement à moins de lacher quelques objets !
+ Stai trasportando oltre il tuo carico massimo! Non riuscirai a correre fino a quando non ti libererai di qualche oggetto!
+ Você está carregando muito peso. Você não irá conseguir correr ou se mover rapidamente.
+ Niesiesz maksymalny ciężar, nie będziesz mógł biegać ani szybko chodzić dopuki nie wyrzucisz jakiejś rzeczy
+ 你超过了最大负重!除非你丢弃一些物品,否则你不能跑或跑得很快!
+
+
+ <t color='#FF0000'><t size='2'>Vehicle Info</t></t><br/><t color='#FFD700'><t size='1.5'>Owners</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Informace o vozidle</t></t><br/><t color='#FFD700'><t size='1.5'>Majitelé</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Info de Vehículo</t></t><br/><t color='#FFD700'><t size='1.5'>Dueños</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Vehicle Info</t></t><br/><t color='#FFD700'><t size='1.5'>Owners</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Fahrzeuginfo</t></t><br/><t color='#FFD700'><t size='1.5'>Besitzer</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Info du véhicule</t></t><br/><t color='#FFD700'><t size='1.5'>Propriétaires</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Vehicle Info</t></t><br/><t color='#FFD700'><t size='1.5'>Owners</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Info do Veículo</t></t><br/><t color='#FFD700'><t size='1.5'>Donos</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>Informacja o pojeździe</t></t><br/><t color='#FFD700'><t size='1.5'>Właściciel</t></t><br/> %1
+ <t color='#FF0000'><t size='2'>载具信息</t></t><br/><t color='#FFD700'><t size='1.5'>车主</t></t><br/> %1
+
+
+ Cannot search that person.
+ Nelze vyhledávat tuto osobu.
+ No puedes buscar a esa persona.
+
+ Diese Person kann nicht durchsucht werden!
+ Vous ne pouvez pas fouiller cette personne.
+ Impossibile perquisire quella persona.
+ Essa pessoa não pode ser revistada.
+ Nie możesz przeszukać tej osoby
+ 无法搜查此人。
+
+
+ You couldn't effectively seize any items. Try again.
+ Dalo by se efektivně využily všech položek. Zkus to znovu.
+ Vous n'avez pas pu saisir les objets. Réessayez.
+ No pudistes efectivamente, confiscar algun objeto. Prueba de nuevo.
+ Impossibile perquisire la persona in maniera esaustiva. Riprova.
+ Nie można skutecznie wykorzystać żadnych przedmiotów. Spróbuj ponownie.
+
+ Você não pode apreender nenhum item, efetivamente. Tente de novo.
+ Es konnten nicht alle Gegenstände beschlagnahmt werden. Versuche es noch einmal.
+ 并非所有物品你都能没收。再试一次。
+
+
+ Repairing %1
+ Dalo by se efektivně využily všech položek. Zkus to znovu....
+ Reparando %1
+
+ Wird repariert %1...
+ Réparation de %1
+ Riparando %1
+ Reparando %1
+ Naprawiam %1
+ 修复 %1
+
+
+ You can't do that from inside the vehicle!
+ Můžete to udělat zevnitř vozu!
+ Vous ne pouvez pas faire ceci à l'intérieur du véhicule !
+ No puedes hacer eso desde adentro del vehículo!
+ Non si può fare dall'interno del veicolo!
+
+ Du kannst das nicht tun während du in einem Fahrzeug sitzt!
+ Você não pode fazer isso de dentro do veículo!
+ Nie możesz tego wykonać z wntrza pojazdu!
+ 你在载具内不能维修!
+
+
+ You have repaired that vehicle.
+ Jste opravil, že vozidlo.
+ >Has reparado el vehículo.
+
+ Du hast dieses Fahrzeug repariert.
+ Vous avez réparé ce véhicule.
+ Hai riparato il veicolo.
+ Você reparou esse veículo.
+ Naprawiłeś pojazd
+ 你修好了载具。
+
+
+ You have mined %2 %1(s).
+ Jste shromáždili %2 %1(y).
+ Vous avez recueilli %2 %1(s).
+ Has recolectado %2 %1(s).
+ Hai raccolto %2 unità di %1.
+
+ Du hast %2 %1 abgebaut.
+ Você colheu %2 %1(s).
+ Zebrałeś %2 %1 (s).
+ 你开采了 %2 个 %1。
+
+
+ You have gathered %2 %1(s).
+ Jste shromáždili %2 %1(y).
+ Vous avez recueilli %2 %1(s).
+ Has recolectado %2 %1(s).
+ Hai raccolto %2 unità di %1.
+
+ Du hast %2 %1 gesammelt.
+ Você colheu %2 %1(s).
+ Zebrałeś %2 %1 (s).
+ 你采集了 %2 个 %1。
+
+
+ You can't gather from inside a car!
+ Nemůžete sbírat zevnitř vozu!
+ Vous ne pouvez pas ramasser à l'intérieur d'une voiture !
+ No puedes recolectar desde adentro de un vehículo!
+ Non si può raccogliere da dentro una macchina!
+
+ Wie soll das von hier aus gehen? Du sitzt in einem Fahrzeug!
+ Você não pode colher de dentro do carro!
+ Nie możesz zbierać z wnętrza samochodu
+ 你不能从车里搜集!
+
+
+ You are not allowed to loot dead bodies.
+ Ty jsou není dovoleno kořist mrtvoly.
+ Vous n'êtes pas autorisé à piller des cadavres.
+ No puedes buscar cuerpos muertos.
+ Non è consentito a saccheggiare cadaveri.
+
+ Du darfst keine Leichen durchsuchen!
+ Você não está liberado para lootiar corpos mortos
+ Nie możesz przeszukiwać martwych ciał
+ 你不能抢劫尸体。
+
+
+ You have been frozen by an administrator.
+ Vy byly zmrazeny správcem.
+ Vous avez été gelé par un administrateur.
+ Un admin te ha congelado!
+ Sei stato congelato da un amministratore.
+
+ Du wurdest von einem Admin eingefroren.
+ Você foi congelado por um administrador
+ Zostałeś zamrożony przez administratora
+ 你被管理员冻结了。
+
+
+ You have teleported to your selected position.
+ Jste teleported do vašeho zvolené poloze.
+ Vous avez été téléporté à la position sélectionnée.
+ Te has teletransportado a la posisción seleccionada.
+ Ti sei teletrasportaato alla posizione selezionata.
+ Masz teleportowany do wybranej pozycji.
+
+ Você foi teleportado para a posição que você selecionou
+ Du hast dich zu deiner gewünschten Position teleportiert.
+ 你已传送到选择的位置。
+
+
+ You have been unfrozen by an administrator.
+ Byli jste zmrzlá správcem.
+ Vous avez été dégelé par un administrateur.
+ Un admin te ha descongelado!
+ Sei stato scongelato da un amministratore.
+
+ Ein Admin hat dich wieder aufgetaut.
+ Você foi descongelado por um administrador
+ Zostałeś odmrożony przez administratora
+ 你已被管理员解冻。
+
+
+ No one was selected!
+ Nikdo byl vybrán!
+ Personne n'a été sélectionné !
+ Nadie fue seleccionado!
+ Nessuno è stato selezionato!
+ Nikt nie został wybrany!
+ Ninguém foi selecionado!
+ Никто не был выбран!
+ Niemand wurde ausgewählt!
+ 没有选中玩家!
+
+
+ You didn't select an item you wanted to give.
+ Nevybrali jste položku, kterou chtěl dát.
+ Vous n'avez pas sélectionné l'objet que vous vouliez donner.
+ No ha seleccionado el objeto que quiere dar.
+ non è stato selezionato un elemento che si voleva dare.
+ Nie wybrano element, który chciał dać.
+ Você não selecionou um item que você queria dar.
+ Вы не выбрали пункт, который вы хотели дать.
+ Du hast keinen Gegenstand ausgewählt, um diesen weitergeben zu können.
+ 你没有选择你想给的东西。
+
+
+ You didn't enter an actual number format.
+ Nezadal jste skutečný formát čísla.
+ Vous n'avez pas saisi un format de nombre réel.
+ No ha especificado un formato de número real.
+ Non hai inserito un formato di numero reale.
+ Nie wprowadzono rzeczywisty format liczb.
+ Você não inseriu um formato número real.
+ Вы не ввели фактический формат числа.
+ Du hast keine echte Zahl eingegeben.
+ 你没有输入正确的数字格式。
+
+
+ You need to enter an actual amount you want to give.
+ Musíte zadat skutečnou částku, kterou chcete dát.
+ Vous devez entrer un montant réel que vous voulez donner.
+ Es necesario introducir una cantidad real que se desea dar.
+ È necessario immettere un importo effettivo si vuole dare.
+ Musisz podać rzeczywistą kwotę, którą chcesz dać.
+ É necessário introduzir uma quantidade real que você quer dar.
+ Вам необходимо ввести фактическую сумму, которую вы хотите дать.
+ Du musst einen tatsächlichen Wert eingeben, um diesen weitergeben zu können.
+ 你需要输入你想要给的正确金额。
+
+
+ You need to enter an actual amount you want to remove.
+ Musíte zadat skutečnou částku, kterou chcete odebrat.
+ Vous devez entrer un montant réel que vous souhaitez supprimer.
+ Es necesario introducir una cantidad real que se desea eliminar.
+ È necessario immettere un importo effettivo che si desidera rimuovere.
+ Musisz podać rzeczywistą kwotę, którą chcesz usunąć.
+ É necessário introduzir uma quantidade real que você deseja remover.
+ Вам необходимо ввести фактическую сумму, которую вы хотите удалить.
+ Du musst einen tatsächlichen Wert eigeben, um diese löschen zu können.
+ 你需要输入你想要删除的正确金额。
+
+
+ The selected player is not within range.
+ Zvolená Hráč není v dosahu.
+ Le joueur sélectionné est hors de portée.
+ El jugador seleccionado no está dentro del rango.
+ Il giocatore selezionato non è nel raggio d'azione.
+ Wybrany gracz nie jest w zasięgu.
+ O jogador selecionado não está dentro do alcance.
+ Выбранный игрок не находится в пределах диапазона.
+ Der ausgewählte Spieler ist nicht in Reichweite.
+ 选定的玩家不在有效范围内。
+
+
+ Couldn't give that much of that item, maybe you don't have that amount?
+ Nemohl dát, že velká část této položky, možná nemáte tuto částku?
+ Impossible de donner cet objet, peut-être que vous n'en n'avez pas autant ?
+ No se pudo dar a que gran parte de ese elemento, tal vez usted no tiene esa cantidad?
+ Impossibile dare quella quantità di oggetti.
+ nie mógł dać, że wiele z tego elementu, może nie masz tej kwoty?
+ não poderia dar que muito desse item, talvez você não tem essa quantia?
+ Не могу дать, что большая часть этого пункта, может быть, у вас нет этой суммы?
+ Du konntest nicht so eine große Menge von diesem Gegenstand weitergeben. Hast du vielleicht nicht genug davon?
+ 不能给那么多的东西,也许你没有那么多?
+
+
+ You gave %1 %2 %3.
+ Ty jsi dal %1 %2 %3.
+ Vous avez donné %1 %2 %3.
+ Diste %1 %2 %3.
+ Hai dato %1 %2 %3.
+ Daliście %1 %2 %3.
+ você deu %1 %2 %3.
+ Ты дал %1 %2 %3.
+ Du hast %1 %2 %3 gegeben.
+ 你给了 %1 %2 %3。
+
+
+ You don't have that much to give!
+ Nemusíte to hodně dát!
+ Vous n'avez pas autant à donner !
+ Usted no tiene mucho para dar!
+ Non hai abbastanza oggetti da dare!
+ Nie ma tego dużo dać!
+ Você não tem muito para dar!
+ Вы не так много, чтобы дать!
+ Du hast nicht so eine große Menge von diesem Gegenstand!
+ 你没有这么多去给别人!
+
+
+ You gave $%1 to %2.
+ Dal jsi $%1 do %2.
+ Vous avez donné $%1 à %2.
+ Usted le dio $%1 a %2.
+ Hai dato $%1 a %2.
+ Dałeś $%1 do %2.
+ Você deu $%1 para %2.
+ Вы дали $%1 %2.
+ Du hast $%1 %2 gegeben.
+ 你将 $%1 给了 %2。
+
+
+ You recently robbed the bank! You can't give money away just yet.
+ Nedávno jste vyloupil banku! Nemůžete dávat peníze pryč jen zatím.
+ Vous avez récemment volé la banque! Vous ne pouvez pas donner de l'argent pour l'instant.
+ Recientemente has robado el banco! No se puede dar dinero por el momento.
+ Recentemente hai rapinato la banca! Non puoi ancora depositare i soldi nel tuo conto bancario.
+ Niedawno obrabował bank! Nie można dać pieniądze w błoto jeszcze.
+ Recentemente, você roubou o banco! Você não pode dar dinheiro fora ainda.
+ Вы недавно ограбили банк! Вы не можете отдавать деньги только пока.
+ Du hast kürzlich die Bank ausgeraubt! Du kannst deswegen kein Geld weitergeben.
+ 你最近抢劫了银行!你还不能现在把钱给出去。
+
+
+ No data selected.
+ vybrány žádné údaje.
+ Aucune donnée sélectionnée.
+ No hay datos seleccionados.
+ Non ci sono dati selezionati.
+ Nie wybrano danych.
+ Não há dados selecionado.
+ Нет выбранных данных.
+ Keine Daten ausgewählt.
+ 没有选择数据。
+
+
+ You did not select a vehicle.
+ Nevybrali jste vozidlo.
+ Vous n'avez pas sélectionné de véhicule.
+ No ha seleccionado un vehículo.
+ Non hai selezionato un veicolo.
+ Nie wybrano pojazdu.
+ Você não selecionou um veículo.
+ Вы не выбрали автомобиль.
+ Du hast kein Fahrzeug ausgewählt.
+ 你没有选择载具。
+
+
+ You do not own any vehicles.
+ Nevlastníte žádná vozidla.
+ Vous ne possédez pas de véhicules.
+ Usted no posee ningún vehículo.
+ Non possedete tutti i veicoli.
+ Nie posiada żadnych pojazdów.
+ Você não possui quaisquer veículos.
+ Вы не являетесь владельцем каких-либо транспортных средств.
+ Du besitzt keine Fahrzeuge.
+ 你没有任何载具。
+
+
+ You did not select a player.
+ Nevybrali jste si přehrávač.
+ Vous n'avez pas sélectionné de joueur.
+ No ha seleccionado un jugador.
+ Non hai selezionato un giocatore.
+ Nie wybrano odtwarzacza.
+ Você não selecionou um jogador.
+ Вы не выбрали игрока.
+ Du hast keinen Spieler ausgewählt.
+ 你没有选择玩家。
+
+
+ You have given %1 keys to your %2.
+ Dali jste %1 klíče ke svému %2.
+ Vous avez donné les clés de votre %2 à %1.
+ Usted ha dado %1 llaves de su %2.
+ Hai dato a %1 chiavi della vostra %2.
+ Dałeś %1 klucze do %2.
+ Você tem dado %1 chaves de sua %2.
+ Вы дали %1 ключи от %2.
+ Du hast %1 die Schlüssel zu deinem %2 gegeben.
+ 你将 %2 的钥匙给了 %1。
+
+
+ %1 has gave you keys for a %2.
+ %1 has gave you keys for a %2.
+ %1 a vous a donné les clés de %2.
+ %1 has gave you keys for a %2.
+ %1 has gave you keys for a %2.
+ %1 has gave you keys for a %2.
+ %1 has gave you keys for a %2.
+ %1 has gave you keys for a %2.
+ %1 hat dir die Schlüssel zum %2 gegeben.
+ %1 给了你一把 %2 的钥匙。
+
+
+ You cannot remove the keys to your house!
+ Nemůžete odstranit klíče od domu!
+ Vous ne pouvez pas supprimer les clés de votre maison !
+ No se puede quitar las llaves de su casa!
+ Non è possibile rimuovere le chiavi a casa tua!
+ Nie można usunąć klucze do swojego domu!
+ Você não pode remover as chaves de sua casa!
+ Вы не можете удалить ключи к вашему дому!
+ Du kannst die Schlüssel zu diesem Haus nicht wegwerfen!
+ 你不能丢弃你家的钥匙!
+
+
+ You did not select anything to remove.
+ Nevybrali jste nic odstranit.
+ Vous avez rien sélectionné à supprimer.
+ No ha seleccionado nada que quitar.
+ Non hai selezionato niente da rimuovere.
+ Nie zrobił nic, aby usunąć wybrać.
+ Você não selecionou nada para remover.
+ Вы ничего удалить не выбрать.
+ Du hast nichts zum Entsorgen ausgewählt.
+ 你没有选择要删除的任何东西。
+
+
+ Could not remove that much of that item. Maybe you do not have that amount?
+ Nepodařilo se odstranit, že velká část této položky. Možná, že nemáte tuto částku?
+ Impossible d'en supprimer autant. Peut-être que vous ne disposez pas de ce montant ?
+ No se pudo eliminar que gran parte de ese elemento. Tal vez usted no tiene esa cantidad?
+ Impossibile rimuovere quel quantitativo di oggetti.
+ Nie można usunąć, że wiele z tego elementu. Może nie masz tej kwoty?
+ Não foi possível remover que muito desse item. Talvez você não tem essa quantia?
+ Не удалось удалить, что большая часть этого элемента. Может быть, у вас нет этой суммы?
+ Du konntest nicht so eine große Menge von diesem Gegenstand entsorgen. Hast du vielleicht nicht so viele davon?
+ 不能丢弃大部分东西。也许你没有那么多数额?
+
+
+ You have successfully removed %1 %2 from your inventory.
+ Úspěšně jste odstraněny %1 %2 z vašeho inventáře.
+ Vous avez réussi à retirer %1 %2 de votre inventaire.
+ Has eliminado correctamente %1 %2 de su inventario.
+ Hai rimosso con successo %1 %2 dal tuo inventario.
+ Pomyślnie usunięto %1 %2 z inwentarza.
+ Você removeu com êxito %1 %2 do seu inventário.
+ Вы успешно удалены %1 %2 из инвентаря.
+ Du hast erfolgreich %1 %2 aus deinem Inventar entsorgt.
+ 你已成功地从库存删除 %1 %2。
+
+
+ Something went wrong; the menu will not open?
+ Něco se pokazilo; nabídka neotevře?
+ Quelque chose s'est mal déroulé; le menu ne s'ouvre pas ?
+ Algo salió mal; el menú no se abre?
+ Qualcosa è andato storto; il menu non si apre?
+ Coś poszło nie tak; menu nie otworzy?
+ Algo deu errado; o menu não vai abrir?
+ Что-то пошло не так; меню не откроется?
+ Etwas ist schief gelaufen. Das Menü konnte nicht geöffnet werden.
+ 出错了;菜单不能打开?
+
+
+ Config does not exist?
+ Config neexistuje?
+ Config n'existe pas ?
+ Config no existe?
+ Config non esiste?
+ Konfiguracja nie istnieje?
+ O configuração não existe?
+ Config не существует?
+ Einstellung nicht vorhanden?
+ 配置不存在?
+
+
+ You cannot store that in anything but a land vehicle!
+ Nelze uložit, že v ničem jiném než pozemní vozidla!
+ Vous pouvez stocker cet objet seulement dans les véhicules terrestres !
+ No se puede almacenar en cualquier cosa menos que un vehículo terrestre!
+ Non è possibile depositare questa risorsa in un veicolo che non sia terrestre!
+ Nie można zapisać, że w nic poza pojazdem lądowym!
+ Você não pode armazenar isso em qualquer coisa, mas um veículo de terra!
+ Вы не можете хранить, что ничего, кроме наземного транспортного средства!
+ Du kannst das nur in einem Landfahrzeug lagern!
+ 除了陆地载具,你不能储存它!
+
+
+ You don't have that much cash on you to store in the vehicle!
+ Nemáte tolik peněz na vás uložit do vozidla!
+ Vous ne disposez pas d'autant d'argent sur vous pour stocker dans le véhicule !
+ Usted no tiene esa cantidad de dinero en efectivo para almacenar en el vehículo!
+ Non hai abbastanza denaro con te da mettere nel veicolo!
+ Nie ma tego dużo gotówki na ciebie do przechowywania w pojeździe!
+ Você não tem que muito dinheiro em você para armazenar no veículo!
+ У вас не так много наличных денег на вас, чтобы хранить в автомобиле!
+ Du hast nicht genug Geld bei dir, um die eingegeben Menge in das Fahrzeug zu lagern!
+ 你没有那么多现金可以存放在载具里!
+
+
+ The vehicle is either full or cannot hold that much.
+ Vozidlo je buď plný nebo nemůže myslet si, že mnoho.
+ Le véhicule est plein ou ne peut pas en contenir autant.
+ El vehículo está llena o no puede contener tanta.
+ Il veicolo è pieno o non può tenere quel quantitativo.
+ Pojazd jest albo w pełnym lub nie można uznać, że dużo.
+ O veículo está cheio ou não pode segurar muito.
+ Транспортное средство либо полностью или не может держать так много.
+ Das Fahrzeug ist entweder voll oder kann nicht so viel halten.
+ 这载具要么是满的,要么就是装不下那么多。
+
+
+ Couldn't remove the items from your inventory to put in the vehicle.
+ Vozidlo je buď plný nebo nemůže myslet si, že mnoho.
+ Le véhicule est déjà plein ou ne peut pas stocker d'avantage d'objets.
+ El vehículo está llena o no puede contener tanta.
+ Impossibile rimuovere quel quantitativo di oggetti dal tuo inventario per metterlo nel veicolo.
+ Pojazd jest albo w pełnym lub nie można uznać, że dużo.
+ O veículo está cheio ou não pode segurar muito.
+ Транспортное средство либо полностью или не может держать так много.
+ Das Fahrzeug ist entweder voll oder hat nicht so viel Platz.
+ 无法从你的库存中取出物品放入车内。
+
+
+ This is an illegal item and cops are near by. You cannot dispose of the evidence.
+ To je ilegální položky a policajti jsou v blízkosti. Nemůžete zbavit důkazů.
+ Ceci est un objet illégal et les policiers sont à proximité. Vous ne pouvez pas le jeter.
+ Este es un artículo ilegal y policías están cerca. No se puede disponer de las pruebas.
+ Non puoi liberarti di questo oggetto dato che è una prova evidente.
+ Jest to nielegalne element i policjanci są w pobliżu. Nie można pozbyć się dowodów.
+ Este é um item ilegal e policiais estão nas proximidades. Você não pode dispor das provas.
+ Это незаконный пункт и полицейские находятся поблизости. Вы не можете избавиться от доказательств.
+ Dies ist ein illegaler Gegenstand und Polizisten sind in der Nähe. Du kannst die Beweise nicht einfach so entsorgen.
+ 这是非法物品,警察就在附近。你不能把它扔掉。
+
+
+ You cannot remove an item when you are in a vehicle.
+ Nemůžete-li odebrat položku, když jste ve vozidle.
+ Vous ne pouvez pas supprimer un objet lorsque vous êtes dans un véhicule.
+ No se puede eliminar un elemento cuando se está en un vehículo.
+ Non è possibile rimuovere un elemento quando si è in un veicolo.
+ Nie można usunąć element, kiedy jesteś w pojeździe.
+ Você não pode remover um item quando você está em um veículo.
+ Вы не можете удалить элемент, когда вы находитесь в автомобиле.
+ Du kannst keinen Gegenstand entsorgen, wenn du in einem Fahrzeug sitzt.
+ 当你在车内时,无法扔掉物品。
+
+
+ You are now spectating %1.\n\nPress F10 to stop spectating.
+ Nyní diváck é%1.\n\nStisknutím klávesy F10 k zastavení divácké.
+ Vous êtes maintenant spectateur %1.\n\nAppuyez sur F10 pour arrêter le mode spectateur.
+ Ahora está como espectador de %1.\n\nPulse F10 para salir de modo espectador.
+ Si è ora spectating %1.\n\nPremere F10 per smettere di spettatori.
+ Grasz teraz spectating %1.\n\nNaciśnij klawisz F10, aby zatrzymać spectating.
+ Você agora está como espectador %1.\n\nPressione F10 para sair.
+ Теперь вы spectating %1.\n\nНажмите F10, чтобы остановить spectating.
+ Du beobachtest nun %1.\n\nDrücke F10, um das Beobachten zu beenden.
+ 你现在正在观看 %1.\n\n 按F10停止观看.
+
+
+ You have stopped spectating.
+ Přestali jste divácké úlohy.
+ Vous avez arrêté spectating.
+ Usted ha dejado de ser espectador.
+ Hai smesso di spettatori.
+ Zatrzymaniu widzem.
+ Você parou espectador.
+ Вы остановили spectating.
+ Du hast das Beobachten beendet.
+ 你已经停止了观看。
+
+
+ You have teleported %1 to your location.
+ Jste teleported %1 do vaší polohy.
+ Vous avez téléporté %1 à votre emplacement.
+ Usted ha teletransportado %1 a su ubicación.
+ Hai teletrasportato %1 alla vostra posizione.
+ Masz teleportował %1 na swoim miejscu.
+ Você teletransportou %1 para a sua localização.
+ Вы телепортированы %1 к вашему положению.
+ Du hast %1 zu deiner Position teleportiert.
+ 传送 %1 到你的位置。
+
+
+ <t color='#ADFF2F'>ATM</t>
+ <t color='#ADFF2F'>Bankomat</t>
+ <t color='#ADFF2F'>DAB</t>
+ <t color='#ADFF2F'>ATM</t>
+ <t color='#ADFF2F'>ATM</t>
+ <t color='#ADFF2F'>Bankomat</t>
+ <t color='#ADFF2F'>Caixa Eletrônico</t>
+ <t color='#ADFF2F'>Банкомат</t>
+ <t color='#ADFF2F'>Geldautomat</t>
+ <t color='#ADFF2F'>自动取款机</t>
+
+
+ Capture Gang Hideout
+ Zachyťte Gang skrýš
+ Capturer la cachette de gang
+ Capturar Escondite
+ Cattura Banda Nascondiglio
+ Przechwytywanie Banda Kryjówka
+ Capturar Esconderijo de Gangue
+ Захват шайка укрытие
+ Gangversteck einnehmen
+ 占领帮派藏身处
+
+
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ An empty array was passed to fn_levelCheck.sqf
+ Ein leeres Feld wurde an fn_levelCheck.sqf übergeben.
+ 一个空字段传递给fn_levelCheck.sqf
+
+
+
+
+ News Station Broadcast
+
+ Anuncio de la Estación de Noticias
+
+ Nachrichtensender
+ Annonce d'informations
+
+ Estação de Transmissão de Notícias
+
+ 新闻广播
+
+
+ Channel 7 News Station
+
+ Estación del Canal de Noticias 7
+
+ Chaine d'infos Numéro 7
+ Kanal 7 Nachrichtensender
+
+ Estação de Notícias do Canal 7
+
+ 7频道新闻台
+
+
+ Message Heading:
+
+ Título del Mensaje
+
+ Titre de l'annonce :
+ Nachrichtenüberschrift:
+
+ Titulo da Mensagem:
+
+ 消息标题:
+
+
+ Message Content:
+
+ Contenido del Anuncio
+
+ Contenu de l'annonce:
+ Nachrichteninhalt:
+
+ Conteúdo da Mensagem:
+
+ 消息内容:
+
+
+ Broadcast Message
+
+ Transmitir Anuncio
+
+ Diffusion de l'annonce
+ Nachricht übertragen
+
+ Transmitir Anúncio
+
+ 广播消息
+
+
+ Broadcast Cost: %1<br />Next Broadcast Available: %2
+
+ Costo de Transmisión: %1<br />Siguiente Transmisión Disponible en: %2
+
+ Übertragungskosten: %1<br />Nächste Übertragung möglich in: %2
+ Coût de Transmission : %1<br />Prochaine Transmission Disponible dans : %2.
+
+ Custo de Trasnmissão: %1<br />Próxima transmissão disponível em: %2
+
+ 广播费用: %1<br />下一个广播可用于: %2
+
+
+ The header cannot be over %1 characters
+
+ El título no puede tener mas de %1 caracteres
+
+ L'en-tête ne peut pas dépasser %1 caractères
+ Die Überschrift darf nicht über %1 Zeichen lang sein.
+
+ O cabeçalho não pode ter mais que %1 caracteres
+
+ 标题不能超过 %1 个字符
+
+
+ You've entered an unsupported character!
+
+ Has introducido un carácter inválido
+
+ Vous avez entré un caractère non pris en charge !
+ Du hast ein nicht ungültiges Zeichen eingegeben!
+
+ Você inseriu um caractere inválido
+
+ 你输入了一个不支持的字符!
+
+
+ Now
+
+ Ahora
+
+ Jetzt
+ Maintenant
+
+ Agora
+
+ 现在
+
+
+ You need $%1 to send a broadcast!
+
+ Necesitas %1 para transmitir un anuncio!
+
+ Vous avez besoin de $%1 pour envoyer une diffusion !
+ Du benötigst $%1, eine Nachricht senden zu können!
+
+ Você precisa de $%1 para enviar uma transmissão!
+
+ 你需要支付 $%1 才能发送广播!
+
+
+ <t size='2'>%1</t><br />Broadcasted by: %2
+
+ <t size='2'>%1</t><br />Transmitido por: %2
+
+ <t size='2'>%1</t><br />Diffusé par : %2
+ <t size='2'>%1</t><br />Gesendet von: %2
+
+ <t size='2'>%1</t><br />Transmitido por: %2
+
+ <t size='2'>%1</t><br />广播发送者: %2
+
+
+
+
+ You have been arrested, wait your time out. If you attempt to respawn or reconnect your time will increase!
+ Jste byli zatčeni, počkejte si na čas ven. Pokud se pokusíte respawn nebo připojit váš čas zvýší!
+ Te han arrestado. Si tratas de matarte o te desconectas se incrementara tu estadía en la cárcel!
+
+ Du wurdest verhaftet. Sitze deine Zeit ab. Wenn du versuchst neu aufzuwachen oder die Verbindung zu trennen, verlängert sich deine Zeit!
+ Vous avez été arrêté, attendez que votre peine soit terminée. Si vous tentez de respawn ou reconnectez, le temps sera augmenté !
+ Sei stato arrestato, sconta la tua pena. Se cercherai di rinascere o di riconnetterti il tuo tempo aumenterà!
+ Você foi preso, cumpra sua pena. Se você tentar renascer ou reconectar seu tempo na cadeia irá aumentar!
+ Zostałeś aresztowany, poczekaj na koniec kary. Jeśli się rozłączysz albo odrodzisz twoja kara zostanie powiększona
+ 你被捕了,耐心坐牢吧。如果你试图重生或重新连接坐牢时间会增加!
+
+
+ For being arrested you have lost the following licenses if you own them\n\nFirearms License\nRebel License
+ Za byl zatčen jste ztratili tyto licence, pokud je vlastní \ žádný zbrojní pas \ jRebel licence
+ Por ser arrestado se te han quitado estas licencias (si las tienes)\n\nL. de Armas \nL. Rebelde
+
+ Bei der Verhaftung hast du folgende Lizenzen verloren, sofern du sie besessen hast:\n\nWaffenschein\nRebellenausbildung.
+ Après emprisonnement, vous avez perdu les licences suivantes si vous les aviez\n\nPermis de port d'arme\n LicenceRebelle
+ A causa del tuo arresto hai perso le seguenti licenze, se le possedevi\n\nPorto d'armi\nLicenza Ribelle
+ Você perdeu as seguintes licenças por ter sido preso\n\nPorte de Armas\n\nTreinamento Rebelde
+ Z uwagi na aresztowanie straciłeś następujące licencje jeśli je posiadałeś \n\nPozwolenie na broń \nTrening Rebelianta
+ 你如果被捕了,会失去\n\n枪支许可证\n叛军许可证
+
+
+ %1 has escaped from jail!
+ %1 utekl z vězení!
+ %1 se ha escapado de la cárcel!
+
+ %1 ist aus dem Gefängnis ausgebrochen!
+ %1 s'est échappé de prison !
+ %1 è scappato dalla prigione!
+ %1 escapou da prisão
+ %1 uciekł z więzienia!
+ %1 越狱了!
+
+
+ You have escaped from jail, you still retain your previous crimes and now have a count of escaping jail.
+ Jste utekl z vězení, si stále zachovávají své předchozí zločiny a nyní mají počet uniknout vězení.
+ Te has escapado de la cárcel, retienes tus crimenes anteriores más un crimen de escapado de la cárcel.
+
+ Vous vous êtes échappé de prison, vous conserver toujours vos crimes précédents et les autorités sont au courant de votre évasion.
+ Du bist aus dem Gefängnis ausgebrochen! Die Polizei sucht jetzt nach dir, wegen deiner früheren Verbrechen und dem Gefängnisausbruch.
+ Sei scappato di prigione, rimarrai ricercato per i crimini da te commessi in precedenza e in aggiunta per essere scappato di prigione.
+ Você escapou da prisão, agora você é procurado por esse crime e todos os outros que havia cometido anteriormente
+ Uciekłeś z więzienia, dalej jesteś ścigany za poprzednie przestępstwa i dodatkowo za ucieczkę.
+ 你已经从监狱逃跑了,你仍然保留着你以前的罪行,现在算是越狱。
+
+
+ You have served your time in jail and have been released.
+ Sloužil jste svůj čas ve vězení a byli propuštěni.
+ Has pasado el tiempo en la cárcel y has sido liberado.
+
+ Du hast deine Zeit im Gefängnis abgesessen.
+ Vous avez purgé votre peine, vous êtes désormais libre.
+ Hai scontato la tua pena in prigione e sei stato rilasciato.
+ Você pagou pelo seus crimes e foi libertado.
+ Odbyłeś swoją karę zostałeś zwolniony z więzienia.
+ 你已经在监狱服完刑,并被释放。
+
+
+ Time Remaining:
+ Zbývající čas:
+ Tiempo Restante:
+
+ Verbleibende Zeit:
+ Temps restant :
+ Tempo rimanente:
+ Tempo Restante:
+ Pozostały czas kary:
+ 剩余时间:
+
+
+ Can pay bail:
+ Může zaplatit kauci:
+ Puedes pagar la fianza en:
+
+ Kann Kaution zahlen:
+ Peut payer la caution :
+ Puoi pagare la cauzione:
+ Pode pagar fiança:
+ Możesz wpłacić kaucję
+ 可以支付保释金:
+
+
+ Bail Price:
+ Bail Cena:
+ Precio de Fianza:
+
+ Kaution:
+ Prix de la caution :
+ Costo cauzione:
+ Preço da fiança:
+ Wartość kaucji:
+ 保释金额:
+
+
+ You have paid your bail and are now free.
+ Jste zaplatili kauci a nyní jsou zdarma.
+ Has pagado tu fianza y has sido liberado.
+
+ Du hast deine Kaution bezahlt und bist nun frei.
+ Vous avez payé votre caution, vous êtes désormais libre.
+ Hai pagato la cauzione e sei libero.
+ Você pagou a fiança e agora está livre.
+ Zapłaciłeś kaucję jesteś wolny.
+ 你已经支付了保释金,现在自由了.
+
+
+
+
+ %1 has knocked you out.
+ %1 zaklepal vás.
+ %1 te a noqueado.
+
+ %1 hat dich niedergeschlagen.
+ %1 vous a assommé.
+ %1 ti ha colpito stordendoti.
+ %1 nocauteou você.
+ zostałeś ogłuszony przez %1
+ %1 把你击倒了。
+
+
+ You have lost all your motor vehicle licenses for vehicular manslaughter.
+ Jste ztratili všechny své licence motorových vozidel pro dopravní zabití.
+ Has perdido todas tus licencias de vehículos de motor por homicidio vehicular.
+
+ Du hast alle deine Führerscheine durch fahrlässige Tötung mit einem Fahrzeug verloren.
+ Vous avez perdu tous vos permis véhicule pour avoir écrasé quelqu'un.
+ Hai perso tutte le tue licenze di guida a causa di un omicidio stradale.
+ Você não perdeu suas licenças de motorista por atropelamento.
+ Straciłeś wszystkie uprawnienia na pojazdy z uwagi na ciągłe zabijanie ludzi pojazdami.
+ 你因载具过失杀人被吊销了所有机动载具驾驶许可证。
+
+
+ You have lost your firearms license for manslaughter.
+ Jste ztratili zbrojního průkazu za zabití.
+ Has perdido tu licencia de armas por homicidio.
+
+ Du hast deinen Waffenschein wegen Mordes verloren.
+ Vous avez perdu votre permis d'armes à feu pour homicide involontaire.
+ Hai perso il tuo Porto d'Armi a causa di un omicidio
+ Você perdeu suas licenças de porte de arma por cometer homicídio.
+ Straciłeś pozwolenie na broń z uwagi na zabijanie ludzi z broni palnej
+ 你因过失杀人而丧失了枪支许可证。
+
+
+ They didn't have any cash...
+ Oni neměli žádnou hotovost ...
+ No tenian dinero...
+
+ Er hatte kein Geld...
+ Il n'a pas d'argent...
+ Non hai soldi...
+ Eles não tinham nenhum dinheiro..
+ Nie posiadają żadnych pieniędzy ...
+ 他们没有现金...
+
+
+ You stole $%1
+ Ukradl jsi $%1
+ Robastes $%1
+
+ Du hast $%1 geraubt.
+ Vous avez volé $%1
+ Hai rubato $%1
+ Você roubou R$%1
+ Ukradłeś %1
+ 你偷了 $%1
+
+
+ The safe is empty!
+ Bezpečné je prázdný!
+ La caja esta vacía!
+
+ Der Tresor ist leer!
+ Le coffre est vide !
+ La cassaforte è vuota!
+ O Cofre está vazio!
+ Sejf jest pusty!
+ 保险箱是空的!
+
+
+ Someone is already accessing the safe..
+ Někdo je již přístup k bezpečné ..
+ Alguien ya esta entrando en la caja..
+
+ Jemand greift bereits auf diesen Tresor zu.
+ Quelqu'un accède déjà au coffre...
+ Qualcuno sta già interagendo con la cassaforte..
+ Alguem já está acessando o cofre.
+ Ktoś właśnie włamuje się do sejfu!
+ 有人已经进入保险箱了。
+
+
+ There needs to be %1 or more cops online to continue.
+ Musí existovat%1 nebo více policajtů on-line pokračovat.
+ Necesita haber %1 o mas policías para continuar.
+
+ Es müssen %1 oder mehr Polizisten online sein, um fortfahren zu können.
+ Il faut au minimum %1 policiers pour continuer.
+ Servono almeno %1 poliziotti online per continuare.
+ É necessário ter %1 ou mais policiais online para continuar.
+ Potrzeba conajmniej %1 policjantów aby kontynuować
+ 需要有 %1 或更多的警察才能继续。
+
+
+ Safe Inventory
+ Safe Inventory
+ Inventario de la Caja
+
+ Tresorinventar
+ Coffre
+ Inventario cassaforte
+ Cofre
+ Wyposażenie sejfu
+ 保险箱库存
+
+
+ You need to select an item!
+ Je třeba vybrat položku!
+ Debes selecionar un objeto!
+
+ Du musst einen Gegenstand auswählen!
+ Vous devez sélectionner un objet !
+ Devi selezionare un oggetto!
+ Você precisa selecionar um item!
+ Musisz coś wybrać
+ 您需要选择一个物品!
+
+
+ There isn't %1 gold bar(s) in the safe!
+ Není %1 zlatá bar (y) v bezpečí!
+ No hay %1 barra(s) de oro en la caja!
+
+ Es sind keine %1 Goldbarren im Tresor!
+ Il n'y a pas %1 lingot(s) d'or dans le coffre !
+ Nella cassaforte non ci sono %1 lingotti d'oro
+ Não existe %1 barra(s) de ouro no cofre!
+ W sejfie nie ma % sztab złota!
+ 金库里没有 %1 金条!
+
+
+
+
+ Couldn't open the ticketing interface
+ Nemohl otevřít jízdenek rozhraní
+ No se pudo abrir el menu de tiquetes!
+
+ Der Bußgeldkatalog konnte nicht geöffnet werden!
+ Impossible d'ouvrir l'interface des amendes
+ Impossibile aprire l'interfaccia per le multe
+ Não foi possível abrir o bloco de multa
+ Nie potrafię otworzyć interfejsu mandatów
+ 无法打开罚款界面
+
+
+ Ticketing %1
+ Jízdenek%1
+ Dando Tiquete a %1
+
+ Verrechne %1
+ Verbalisation de %1
+ Multando %1
+ Multando %1
+ Mandat dla %1
+ 开据罚单给 %1
+
+
+ %2 got back a blacklisted vehicle near %1.
+ %2 dostat zpět na černou listinu vozidlo nedaleko %1.
+ %2 a récupéré un véhicule blacklisté près de %1.
+ %2 volver un vehículo en la lista negra cerca de %1.
+ %2 ha ritirato un veicolo blacklistato vicino %1.
+ %2 wrócić do czarnej listy pojazd pobliżu %1.
+ %2 retirou um veículo que se encontra na lista negra, perto de %1.
+ %2 получить обратно в черный список автомобиль возле %1.
+ %2 hat ein gesuchtes Fahrzeug nahe %1 ausgeparkt.
+ %2 在 %1 附近找回了被列入黑名单的载具。
+
+
+ Person to ticket is nil
+ Osoba, která má lístku je nulová
+ La persona a quien tiquetear es nulo
+
+ Die Person, für das das Ticket vorgesehen war, ist verschwunden.
+ La personne à verbaliser n'existe pas.
+ La persona da multare è nil
+ Jogador a ser multado é nulo
+ Osoba do ukarania mandatem to "nil"
+ 被罚款的玩家为“无”
+
+
+ Person to ticket doesn't exist.
+ Osoba, která má letenku neexistuje.
+ La perosna a quien tiquetear no existe.
+
+ Die Person, für das Ticket, gibt es nicht.
+ La personne à verbaliser est inexistante.
+ La persona da multare non esiste.
+ Jogador a ser multado não existe.
+ Nie ma osoby ukaranej mandatem - nie istnieje
+ 被罚款的玩家不存在。
+
+
+ You didn't enter actual number.
+ Jste nezadali skutečný počet.
+ No escribistes un numero real.
+
+ Du hast keine echte Zahl eingegeben.
+ Vous n'avez pas saisi de nombre.
+ Non hai inserito un numero correttamente.
+ Você não digitou um número válido
+ Wybrałeś zły numer
+ 你没有输入正确的数字.
+
+
+ Tickets can not be more than $200,000!
+ Vstupenky nemůže být více než 200.000 $!
+ Los tiquetes no pueden ser mas de $200,000!
+
+ Strafzettel können nicht mehr als $200.000 betragen!
+ Les amendes ne peuvent pas dépasser plus de $200,000 !
+ La multa non può essere più di $200.000!
+ A multa não pode ser maior que R$200.000!
+ Mandat nie może być wyższy niż $200.000!
+ 罚单不能超过 $200,000!
+
+
+ %1 gave a ticket of $%2 to %3
+ %1 dal lístek na $% %2 3
+ %1 le dio un tiquete de $%2 a %3
+
+ %1 hat %3 einen Strafzettel über $%2 ausgestellt.
+ %1 a mis une contravention de $%2 à %3.
+ %1 ha dato una multa di $%2 a %3
+ %1 deu uma multa de R$%2 para %3
+ %1 Wystawił mandat w wysokości %2 dla %3
+ %1 开据金额 $%2 的罚单给 %3
+
+
+ You don't have enough money in your bank account or on you to pay the ticket.
+ Nemáte dostatek peněz na váš bankovní účet, nebo na vás zaplatit letenku.
+ No tienes suficiente dinero para pagar el tiquete.
+
+ Du hast nicht genug Geld auf deinem Bankkonto, um den Strafzettel bezahlen zu können.
+ Vous n'avez pas assez d'argent dans votre compte en banque ou sur vous pour payer l'amende.
+ Non hai fondi sufficienti nel tuo conto in banca per pagare la multa.
+ Você não possui dinheiro suficiente na sua conta bancária ou na sua mão para pagar o bilhete.
+ Nie masz środków na koncie aby zapłacić mandat.
+ 你的银行帐户中没有足够的钱来支付罚金。
+
+
+ %1 couldn't pay the ticket due to not having enough money.
+ %1 nemohl zaplatit letenku z důvodu nemají dostatek peněz.
+ %1 No puedo pagar el tiquete porque no tiene suficiente dinero.
+
+ %1 konnte den Strafzettel nicht bezahlen, weil er nicht genug Geld hat.
+ %1 ne pouvait pas payer la contravention car il n'avait pas assez d'argent.
+ %1 non può pagare la multa perchè non ha sufficienti fondi nel suo conto in banca.
+ %1 não pode pagar a multa pois não tem dinheiro suficiente.
+ %1 nie może zapłacić mandatu bo nie ma tylu środków na koncie
+ %1 由于没有足够的钱,无法支付罚金。
+
+
+ You have paid the ticket of $%1
+ Jste zaplatili letenku ve výši $%1
+ Has pagado el tiquete de $%1
+
+ Du hast den Strafzettel von $%1 bezahlt.
+ Vous avez payé l'amende de $%1
+ Hai pagato la multa di $%1
+ Você pagou a multa de R$%1
+ Zapłaciłeś mandat w wysokości $%1
+ 你已经支付了 $%1 的罚金
+
+
+ %1 paid the ticket of $%2
+ %1 zaplatil letenku ve výši $ %2
+ %1 a pagado el tiquete de $%2
+
+ %1 zahlte einen Strafzettel von $%2.
+ %1 payé la contravention de $%2
+ %1 ha pagato la multa di $%2
+ %1 pagou a multa de R$%2
+ %1 zapłacił mandat w wyskości $%2
+ %1 支付了 $%2 的罚金
+
+
+ %1 paid the ticket.
+ %1 zaplatil jízdenku.
+ %1 pago el tiquete.
+
+ %1 hat den Strafzettel bezahlt.
+ %1 payé la contravention.
+ %1 ha pagato la multa.
+ %1 pagou a multa.
+ %1 zapłacił mandat.
+ %1 支付了罚金。
+
+
+ %1 has given you a ticket for $%2
+ %1 vám dal lístek za $ %2
+ %1 te ha dado un tiquete de $%2
+
+ %1 hat dir einen Strafzettel über $%2 gegeben.
+ %1 vous a donné une amende de $%2
+ %1 ti ha dato una multa di $%2
+ %1 lhe aplicou uma multa de R$%2
+ %1 dał ci mandat w wysokości $%2
+ %1 给你开了一张 $%2 的罚单
+
+
+ %1 refused to pay the ticket.
+ %1 odmítl zaplatit letenku.
+ >%1 no aceptó pagar el tiquete.
+
+ %1 weigert sich, den Strafzettel zu bezahlen.
+ %1 a refusé de payer l'amende.
+ %1 si è rifiutato di pagare la multa.
+ %1 se recusou a pagar a multa.
+ %1 odmówił zapłaty mandatu.
+ %1 拒绝支付罚金。
+
+
+ You have collected a bounty of $%1 for arresting a criminal.
+ Nasbíráte kvantum $%1 pro aretaci zločince.
+ Has recolectado la recompensa de $%1 por arrestar a un criminal.
+
+ Du hast ein Prämie von $%1 für die Festnahme eines Verbrechers bekommen.
+ Vous avez reçu une prime de $%1 pour avoir arrêté un criminel.
+ Hai ricevuto il pagamento di una taglia di $%1 per aver arrestato un criminale ricercato.
+ Você ganhou uma recompensa de R$%1 por prender um criminoso.
+ Otrzymujesz nagrodę w wysokości $%1 za aresztowanie poszukiwanego kryminalisty.
+ 你捉拿罪犯获得 %1 赏金。
+
+
+ You have collected a bounty of $%1 for killing a wanted criminal, if you had arrested him you would of received $%2.
+ Nasbíráte kvantum $%1 za zabití hledaného zločince, pokud jste ho zatkli byste přijímaného $%2.
+ Has recolectado la recompensa de $%1 por matar a un criminal, si lo hubieras arrestado hubieses conseguido $%2.
+
+ Du hast ein Prämie von $%1 für das Töten eines gesuchten Verbrechers erhalten, für seine Festnahme hättest du $%2 bekommen.
+ Vous avez reçu une prime de $%1 pour le meurtre d'un criminel recherché, si vous l'aviez arrêté, vous auriez reçu $%2.
+ Hai ricevuto il pagamento di una taglia di $%1 per aver ucciso un criminale ricercato, se lo avessi arrestato avresti ricevuto $%2.
+ Você ganhou uma recompensa de $%1 por matar um criminoso procurado, se você tivesse o prendido ganharia R$%2.
+ Otrzymujesz nagrodę w wysokości $%1 za zabicie poszukiwanego kryminalisty, w przypadku gdybyś go aresztował otrzymałbyć $%2.
+ 你杀害被通缉的罪犯获得 %1 赏金,如果你逮捕了他,你就会获得 $%2 赏金。
+
+
+ %1 has $%2 worth of contraband on them.
+ %1 má $%2 v hodnotě kontrabandu na nich.
+ %1 tiene $%2 en contrabando con el.
+
+ %1 hatte Schmuggelware im Wert von $%2 bei sich.
+ %1 a $%2 de contrebande sur lui.
+ %1 ha $%2 in materiali illegali con se.
+ %1 tem R$%1 em contrabando.
+ %1 miał przy sobie kontrabandę o wartości $%2.
+ %1 有价值 $%2 的非法物品。
+
+
+ Illegal Items
+ nelegální položky
+ Objetos Ilegales
+
+ Illegale Gegenstände
+ Objets illégaux
+ Oggetti Illegali
+ Items Ilegais
+ Nielegalne przedmioty / kontrabanda
+ 非法物品
+
+
+ %1 was identified as the bank robber!
+ %1 byl identifikován jako bankovního lupiče!
+ %1 fue identificado como el ladrón del banco!
+
+ %1 wurde als Bankräuber identifiziert!
+ %1 a été identifié comme un braqueur de banque !
+ %1 è stato identificato come il rapinatore della banca!
+ %1 foi identificado como ladrão de banco!
+ %1 zidentyfikowany jako kasairz rabujący banki!
+ %1 被认定为银行抢劫犯!
+
+
+ No illegal items
+ Žádné ilegální položek
+ No objetos ilegales
+
+ Keine illegalen Gegenstände.
+ Aucun objet illégal
+ Nessun oggetto illegale
+ Sem items ilegais
+ Brak kontrabandy i nielegalnych przedmiotów
+ 没有非法物品
+
+
+ You are not near a door!
+ Nejste u dveří!
+ No estas cerca de una puerta!
+
+ Du bist nicht in der Nähe einer Tür!
+ Vous n'êtes pas près d'une porte !
+ Non sei vicno ad una porta!
+ Você não está perto de uma porta!
+ Nie jesteś przy drzwiach
+ 你不在门附近!
+
+
+ You need to enable Picture in Picture (PiP) through your video settings to use this!
+ Je nutné povolit obraz v obraze (PIP) pomocí nastavení videa použít tento!
+ Debes habilitar la opcion de "Picture in Picture"(PiP) En tus opciones de video para usar esto!
+
+ Du musst "Bild in Bild" (PiP) in deinen Video-Einstellungen aktivieren, um dies nutzen zu können!
+ Vous devez activer le "Picture in Picture" (PiP) dans vos paramètres vidéo pour utilser ceci !
+ Devi attivare Picture in Picture (PiP) nelle tue impostazioni video per usare questa funzione!
+ Você precisa habilitar o Picture in Picture (PiP), através das suas configurações de vídeo para usar esta opção!
+ Musisz włączyć Obraz w obrazie (PiP) w ustawieniach graficznych aby tego używać!
+ 您需要通过视频设置启用画中画(PiP)才能使用此功能!
+
+
+ Licenses:
+ licencí
+ Licencias:
+
+ Lizenzen:
+ Licences :
+ Licenze:
+ Licenças:
+ Licencje:
+ 许可证:
+
+
+ No Licenses
+ žádné licence
+ No Licencias
+
+ Keine Lizenzen!
+ Aucune licence
+ Nessuna Licenza
+ Sem Licenças
+ Brak licencji
+ 没有许可证
+
+
+ Nothing illegal in this vehicle
+ Nic nezákonného v tomto vozidle
+ Nada ilegal en este vehículo
+
+ Nichts Illegales in diesem Fahrzeug.
+ Rien d'illégal dans ce véhicule
+ Niente di illegale nel veicolo
+ Nada ilegal dentro do veículo
+ Nie znaleziono niczego nielegalnego w pojeździe
+ 这载具没有非法物品
+
+
+ Nothing illegal in this container.
+ Nic nezákonného v tomto kontejneru
+ Nada ilegal en este contenedor
+ Nulla di illegale in questo contenitore
+ Nic nielegalnego w tym pojemniku.
+
+ Nada ilegal dentro do container
+ Rien d'illégal dans ce conteneur
+ Nichts Illegales in diesem Container.
+ 这个库存没有非法物品。
+
+
+ This vehicle is empty
+ Toto vozidlo je prázdná
+ Este vehículo esta limpio
+
+ Dieses Fahrzeug ist leer.
+ Ce véhicule est vide
+ Questo veicolo è vuoto
+ Esse veículo está vazio
+ Pojazd jest pusty
+ 这载具是空的
+
+
+ This container is empty
+ Tento zásobník je prázdný
+ Ce conteneur est vide
+ Este contenedor esta vacío
+ Questo contenitore è vuoto
+ Ten pojemnik jest pusty
+ Este recipiente está vazio
+ Этот контейнер пуст
+ Dieser Container ist leer.
+ 这个库存是空的
+
+
+ $%1 from the Federal Reserve robbery was returned from the robber being killed.
+ $%1 z Federálního rezervního systému loupeže byla vrácena ze lupič byl zabit.
+ $%1 de la Reserva Federal fue devuelto, ya que mataron al ladrón.
+
+ $%1 wurden in die Zentralbank zurückgebracht, weil der Bankräuber gestorben ist.
+ $%1 du vol de la Banque Fédérale ont été récupérés sur le braqueur, qui vient d'être tué.
+ $%1 della rapina alla Riserva Federale sono stati recuperati dal rapinatore ucciso.
+ R$%1 que foi roubado da Reserva Federal retornou a ela após a morte do ladrão.
+ $%1 z kradzieży w Banku zostało zwrócone po zabiciu włamywacza.
+ 由于抢劫犯被杀死,联邦储备被抢的 $%1 被归还。
+
+
+ Repairing vault...
+ Oprava klenby ...
+ Reparando bóveda...
+
+ Tresor wird repariert...
+ Réparation du coffre...
+ Riparando il Caveau
+ Reparando Cofre...
+ Naprawiam skarbiec...
+ 修理金库...
+
+
+ The vault is now fixed and re-secured.
+ Klenba je nyní pevně stanovena a re-zabezpečeny.
+ La bóveda esta reparada y segura.
+
+ Der Tresor wurde repariert.
+ Le coffre est de nouveau sécurisé.
+ Il Caveau è stato riparato e messo in sicurezza.
+ O Cofre foi consertado e está seguro.
+ Skarbiec jest naprawiony i zabezpieczony.
+ 金库现在已修复并重新加固。
+
+
+ The vault is already locked?
+ Klenba je již uzamčen?
+ La bóveda ya esta cerrada?
+
+ Ist der Tresor abgeschlossen?
+ Le coffre est déjà fermé?
+ Il Caveau è già bloccato?
+ O Cofre está trancado?
+ Skarbiec jest zablokowany?
+ 金库已经锁好了?
+
+
+ You can't enter anything below 1!
+ Nemůžete nic zadávat menší než 1!
+ No puede poner nada menor que 1!
+
+ Du kannst nichts unter 1 eingeben!
+ Vous ne pouvez pas prendre moins de 1 objet !
+ Non puoi selezionare nulla sotto l'1!
+ Não é permitido usar valores abaixo de 1!
+ Nie możesz wprowadzić niczego poniżej 1!
+ 你不能输入少于1的任何物品!
+
+
+ You can't store anything but gold bars in the safe.
+ Nemůžete ukládat nic jiného než zlaté pruty v trezoru.
+ Solo puedes guardar barras de oro en la bóveda.
+
+ Du kannst nur Goldbarren in den Tresor legen.
+ Vous ne pouvez rien stocker à part des lingots d'or dans le coffre.
+ Nella cassaforte puoi depositare solo lingotti d'oro.
+ Você só pode guardar Barras de Ouro no cofre.
+ Nie możesz składować niczego poza sztabami złota w sejfie.
+ 保险箱除了金条外,你不能存放其它物品。
+
+
+ You don't have %1 gold bar(s)
+ Nemáte%1 zlatá tyč (y)
+ No tienes %1 barra(s) de oro
+
+ Du hast keine %1 Goldbarren!
+ Vous n'avez pas %1 lingot(s) d'or
+ Non hai %1 lingotti d'oro
+ Você não tem %1 Barra(s) de Ouro
+ Nie masz %1 sztab(y) złota
+ 你没有 %1 根金条
+
+
+ Couldn't remove the item(s) from your inventory to put in the safe.
+ Nepodařilo se odstranit položky) z inventáře dát do trezoru.
+ No se pudieron mover las objetos de tu inventario a la caja.
+
+ Es konnten keine Gegenstände von deinem Inventar in den Tresor gelegt werden.
+ Vous ne pouvez pas supprimer les items de votre inventaire pour les mettre dans le coffre.
+ Non è stato possibile rimuovere gli oggetti dal tuo inventario per metterli nella cassaforte.
+ Não foi possível mover o item do inventário para o cofre.
+ Nie można usunąć rzeczy z twojego wyposażenia aby włożyć je do sejfu
+ 无法从你的库存中取出物品放在保险箱里。
+
+
+ Couldn't search %1
+ Nemohl hledání%1
+ No se pudo buscar a %1
+
+ %1 konnte nicht durchsucht werden.
+ Impossible de fouiller %1
+ Impossibile ispezionare %1
+ Não foi possível buscar por %1
+ Nie można przeszukać %1
+ 无法搜索 %1
+
+
+ Repairing Door...
+ Oprava dveří ...
+ Reparando Puerta...
+
+ Tür wird repariert...
+ Réparation de la porte...
+ Riparando la porta...
+ Reparando a porta....
+ Naprawiam drzwi...
+ 修理门...
+
+
+ No Licenses<br/>
+ Žádné Licence < br / >
+ No Licencias<br/>
+
+ Keine Lizenzen!<br/>
+ Aucune licence<br/>
+ Nessuna Licenza<br/>
+ Você não tem licença<br/>
+ Brak licencji<br/>
+ 没有许可证<br/>
+
+
+ No one has sold to this dealer recently.
+ Nikdo se prodalo tohoto prodejce nedávno.
+ Nadie le ha vendido a este comerciante recientemente.
+
+ Niemand hat kürzlich an diesem Dealer etwas verkauft.
+ Personne n'est venu vendre quelque chose ici récemment.
+ Non è stato visto nessuno vendere a questo spacciatore di recente.
+ Ninguém vendeu para esse negociante recentemente
+ Nikt nie sprzedawał ostatnio u dilera.
+ 最近没有人出售物品给这个经销商。
+
+
+ The following people have been selling to this dealer recently.
+ Následující lidé byli prodeji tohoto prodejce nedávno.
+ Las siguientes personas le han estado vendiendo a este comerciante recientemente.
+
+ Folgende Personen haben kürzlich an diesem Dealer etwas verkauft:
+ Les personnes suivantes sont venues vendre quelque chose récemment.
+ Le seguenti persone sono state viste vendere a questo spacciatore.
+ Os seguintes jogadores venderam para esse negociante recentemente.
+ Ostatnio u dilera sprzedawali następujący ludzie.
+ 以下人员最近一直在向这个经销商销售物品。
+
+
+ Radar
+ Radar
+ Radar
+
+ Radar
+ Radar
+ Autovelox
+ Radar
+ Radar
+ 测速雷达
+
+
+ Vehicle Speed %1 km/h
+ Rychlost vozidla%1 km / h
+ Velocidad %1 km/h
+
+ Geschwindigkeit: %1 km/h!
+ Vitesse du véhicule %1 km/h
+ Velocità veicolo %1 km/h
+ Velocidade do Veículo %1 km/h
+ Prędkość pojazdu %1 km/h
+ 载具速度 %1 km/h
+
+
+ You have been released automatically for excessive restrainment time
+ Byli jste automaticky uvolněn pro nadměrnou restrainment čas
+ Has sido liberado automáticamente por tiempo excesivo de estar retenido.
+
+ Du wurdest automatisch freigelassen, da die maximale Verhaftungszeit überschritten wurde.
+ Vous avez été démenotté automatiquement pour un menottage excessivement long
+ Sei stato automaticamente liberato per essere rimasto ammanettato troppo tempo
+ Você foi solto automaticamente, devido ao tempo limite ter expirado.
+ Zostałeś automatycznie rozkuty z uwagi na długi upływ czasu od skucia.
+ 由于约束时间过长你已经被自动释放
+
+
+ You have been restrained by %1
+ Byli jste omezeni%1
+ Has sido retenido por %1
+
+ Du wurdest von %1 festgenommen.
+ Vous avez été menotté par %1
+ %1 ti ha messo le manette
+ Você foi imobilizado por %1
+ Zostałeś rozkuty przez %1
+ 你被 %1 约束了
+
+
+ Who do you think you are?
+ Kdo si myslíš že jsi?
+ Qui pensez-vous être?
+ ¿Quién te crees que eres?
+ Chi ti credi di essere?
+ Za kogo Ty się masz?
+ Quem você pensa que é?
+ Кто ты, по-твоему, такой?
+ Was glaubst du wer du bist?
+ 你以为你是谁?
+
+
+ You must select a perp.
+ Je třeba vybrat pachatele.
+ Vous devez sélectionner une personne.
+ Debe seleccionar un asesino.
+ È necessario selezionare un criminale.
+ Musisz wybrać perp.
+ Você deve selecionar um criminoso.
+ Вы должны выбрать преступника.
+ Du musst einen Verbrecher auswählen.
+ 你必须选择一个罪犯。
+
+
+ You must select a crime.
+ Je třeba vybrat trestného činu.
+ Vous devez sélectionner un crime.
+ Debe seleccionar un crimen.
+ È necessario selezionare un crimine.
+ Musisz wybrać przestępstwa.
+ Você deve selecionar um crime.
+ Вы должны выбрать преступление.
+ Du musst ein Verbrechen auswählen.
+ 你必须选择一种犯罪行为。
+
+
+ Failed to fetch crimes.
+ Nepodařilo se načíst trestných činů.
+ Impossible de récupérer les crimes.
+ No se pudieron obtener los crímenes.
+ Impossibile recuperare i crimini.
+ Nie udało się pobrać przestępstw.
+ Falha ao buscar crimes.
+ Не удалось получить преступления.
+ Die Verbrechen konnten nicht heruntergeladen werden.
+ 无法搜索犯罪记录。
+
+
+
+
+ You tried to give %1 %2 %3 but they couldn't hold that so it was returned.
+ Pokusili jste se dát% %1 %2 3, ale nemohli si myslí, že tak to bylo se vrátil.
+ Le tratastes de dar %1 %2 %3 pero no tenian espacio asi que se te devolvió.
+
+ Du wolltest %1 %2 %3 geben, aber er hat keinen Platz in seinem Inventar und hat es darum zurückgegeben.
+ Vous avez essayé de donner %1 %2 %3 mais il n'a pas assez de place et vous a tout redonné.
+ Hai provato a dare a %1 %2 unità di %3 ma non poteva trasportarlo quindi ti sono state restituite restituite.
+ Você tentou dar %1 %2 %3, mas não conseguiu segurar e por isso que foi devolvido.
+ Próbowałeś dać %1 %2 %3 lecz gracz nie mógł tego unieść, przedmioty zostały zwrócone.
+ 你试着给 %1 %2 %3 但他们不能持有,所以物品被归还。
+
+
+ %1 returned %2 %3 because they couldn't hold that amount.
+ %1 vrátila% %2 3, protože oni nemohli držet tuto částku.
+ %1 devolvió %2 %3 porque no tenian espacio.
+
+ %1 hat %2 %3 zurückgegeben, weil er nicht so viel tragen kann.
+ %1 vous a redonné %2 %3 parce qu'il ne pouvait pas en prendre autant.
+ %1 ha restituito %2 %3 perchè non poteva trasportare quella quantità
+ %1 retornou %2 %3 porque não conseguiu segurar essa quantidade.
+ %1 zwrócił %2 %3 ponieważ nie mógł tego unieść
+ %1 返还 %2 %3 因为他们拿不出这笔钱。
+
+
+ %1 has gave you %2 but you can only hold %3 so %4 was returned back.
+ %1 vám již dal%2, ale můžete mít pouze% %3 4 tak byla vrácena zpět.
+ %1 te a dado %2, pero solo puedes cargar %3 asi que %4 fue devuelto.
+
+ %1 hat dir %2 gegeben, du kannst aber nur %3 tragen, also hast du %4 zurückgegeben.
+ %1 vous a donné %2 mais vous ne pouvez en prendre que %3 donc %4 a été redonné.
+ %1 ti ha dato %2 ma puoi portare solo %3 quindi %4 unità sono state restituite.
+ %1 retornou %2 %3 porque não conseguiu segurar essa quantidade.
+ %1 dał ci %2 lecz możesz unieść tylko %3, w związku z tym zwróciłeś %4.
+ %1 已经给了你 %2 但你只能持有 %3 所以 %4 被退回.
+
+
+ Do you want to add this item to your weapon or inventory? If you add it to your weapon your current existing attachment will be lost!
+ Chcete přidat tuto položku do zbraně nebo inventáře? Pokud si jej přidat do svého zbraň váš současný stávající příloha bude ztraceno!
+ Quieres agregar este Objeto/Arma a tu inventario? Si lo agregas a tu arma tu accesorio actual se perdera!
+
+ Möchtest du den Aufsatz zu deiner Waffe oder deinem Inventar hinzufügen? Wenn du es zur Waffe hinzufügst, geht der vorhandene Aufsatz verloren!
+ Voulez-vous ajouter cet objet à votre arme ou le mettre dans votre inventaire? Si vous l'ajoutez à votre arme, votre accessoire actuel sera perdu!
+ Vuoi aggiungere questo oggetto alla tua arma o all'inventario? Se lo aggiungerai all'arma verrà rimosso l'eventuale accessorio già presente su di essa!
+ Você quer adicionar este item à sua arma ou inventário? Se você adicioná-lo à sua arma seu item atual existente será perdida!
+ Chcesz dodać tę rzecz do broni lub wyposażenia? Jeśli to zrobisz twoje aktualne wyposażenie broni zostanie zmienione na nowo zakupione i przepadnie!
+ 你想把这个物品添加到你的武器或库存中吗?如果你把它添加到你的武器,你当前的现有附件将会丢失!
+
+
+ Attachment slot taken!
+ Attachment slot vzít!
+ Slot de accesorio tomado!
+
+ Aufsatz Platz belegt!
+ Accessoire déjà présent!
+ Slot Accessorio preso!
+ Slot de acessório utilizado!
+ Podjąłeś slot
+ 附件插槽!
+
+
+ Weapon
+ Zbraň
+ Arma
+
+ Waffe
+ Armes
+ Arma
+ Armas
+ Broń
+ 武器
+
+
+ Inventory
+ Inventář
+ Inventario
+
+ Inventar
+ Inventaire
+ Inventario
+ Inventário
+ Wyposażenie
+ 库存
+
+
+ You are not allowed to look into someone's backpack!
+ Nejste dovoleno dívat se do něčí batohu!
+ No tienes permiso de ver dentro de las mochilas de los demas!
+
+ Du bist nicht berechtigt, in fremde Rucksäcke zu schauen!
+ Vous n'êtes pas autorisé à regarder dans le sac à dos de quelqu'un!
+ Non sei autorizzato a guardare negli zaini altrui!
+ Você não é liberado para olhar a mochila dos outros!
+ Nie możesz zaglądać do czyichś plecaków!
+ 你不允许看别人的背包!
+
+
+ You are not allowed to access this vehicle while its locked.
+ Nemáte povolen přístup k toto vozidlo zatímco jeho uzamčen.
+ No tienes permiso de accesar este vehículo mientras esta cerrado.
+
+ Du bist nicht berechtigt, auf dieses Fahrzeug zuzugreifen, während es abgeschlossen ist.
+ Vous n'êtes pas autorisé à accéder à ce véhicule tant qu'il est verrouillé.
+ Non ti è permesso l'accesso a questo veicolo mentre è bloccato.
+ Você não pode acessar o veiculo enquanto ele estiver trancado.
+ Nie masz dostępu do pojazdu gdy ten jest zamknięty
+ 你不能在锁门的情况下进入载具。
+
+
+ This vehicle's trunk is in use, only one person can use it at a time.
+ kmen toto vozidlo je v provozu, může jen jedna osoba ji použít najednou.
+ El maletero de este vehículo solo puede ser usado por una persona a la vez.
+
+ Der Kofferraum dieses Fahrzeuges wird bereits benutzt, nur eine Person kann auf ihn zugreifen.
+ Le coffre de ce véhicule est en cours d'utilisation, une seule personne peut l'utiliser à la fois.
+ L'inventario di questo veicolo è in uso, può essere usato solo da una persona alla volta.
+ A mala desse veículo está em uso, somente uma pessoa pode acessá-la de cada vez.
+ Bagażnik pojazdu jest w użyciu, na raz może korzystać z niego tylko jedna osoba.
+ 这载具的存储箱正在使用中,一次只能一个人使用它。
+
+
+ Failed Creating Dialog
+ Nepodařilo Vytvoření dialog
+ Falló la creación del dialogo
+
+ Erstellen des Dialogs gescheitert!
+ Échec à la création de dialogue
+ Creazione dialogo fallito
+ Falha ao criar Diálogo
+ Nie udało się nawiązać kontaktu
+ 创建对话框失败
+
+
+ You have unlocked your vehicle.
+ Jste odemkli své vozidlo.
+ Has abierto tu vehículo
+
+ Du hast dein Fahrzeug aufgeschlossen.
+ Vous avez déverrouillé votre véhicule.
+ Hai sbloccato il tuo veicolo.
+ Você destrancou o veículo.
+ Odblokowałeś pojazd
+ 你已经解锁了你的载具。
+
+
+ You have locked your vehicle.
+ Jste zamkli své vozidlo.
+ Has cerrado tu vehículo.
+
+ Du hast dein Fahrzeug abgeschlossen.
+ Vous avez verrouillé votre véhicule.
+ Hai bloccato il tuo veicolo
+ Você trancou o veículo.
+ Zablokowałeś pojazd
+ 你已经锁好你的车了。
+
+
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ This can only be done by the last driver of this vehicle.
+ 这只能由该车辆的最后一个驾驶员完成。
+
+
+ Sirens On
+ Na sirény
+ Sirenas Prendidas
+
+ Sirene AN
+ Sirènes On
+ Sirene accese
+ Sirene Ligada
+ Syrena włączona
+ 开启警笛
+
+
+ Sirens Off
+ sirény Off
+ Sirenas Apagadas
+
+ Sirene AUS
+ Sirènes Off
+ Sirene spente
+ Sirene Desligada
+ Syrena wyłączona
+ 关闭警笛
+
+
+ You need to install storage containers to have storing capabilities!
+ Je třeba nainstalovat kontejnery skladovací mít skladovací kapacity!
+ Debes instalar contenedores para tener capabilidades de almacenamiento!
+
+ Du musst dir Container kaufen, um etwas einlagern zu können!
+ Vous devez installer des conteneurs de stockage pour disposer de capacité de stockage!
+ Devi posizionare dei contenitori per aver la possibilità di depositare qualcosa!
+ Você tem que instalar caixas para poder guardar items!
+ Musisz zainstalować pojemniki aby uzyskać możliwość składowania rzeczy
+ 你需要安装存储容器才能具有存储功能!
+
+
+ This vehicle isn't capable of storing virtual items.
+ Toto vozidlo není schopné uchovávat virtuální položky.
+ Este vehiculo no puede guardar objetos virtuales.
+
+ Dieses Fahrzeug kann keine virtuellen Gegenstände lagern.
+ Ce véhicule n'est pas en mesure de stocker des objets virtuels.
+ Questo veicolo non è in grado di trasportare oggetti virtuali.
+ Esse veículo não pode armazenar items virtuais.
+ Ten pojazd nie przechowuje wirtualnych przedmiotów
+ 此载具无法存储虚拟物品。
+
+
+ Weight:
+ Hmotnost:
+ Peso:
+
+ Gewicht:
+ Poids:
+ Peso:
+ Peso:
+ Waga:
+ 重量:
+
+
+ House Storage
+ dům Storage
+ Inventario de la casa
+
+ Lagerplatz des Hauses
+ Conteneur de stockage
+ Inventario Casa
+ Cavalos de Força:
+ Domowa skrzynka
+ 房子存储
+
+
+ Vehicle Trunk
+ vozidlo Trunk
+ Maletero de Vehículo
+
+ Kofferraum
+ Coffre du véhicule
+ Inventario veicolo
+ Capacidade da mala:
+ Bagażnik pojazdu
+ 载具存储箱
+
+
+ The vehicle either doesn't exist or is destroyed.
+ Vozidlo buď neexistuje, nebo je zničena.
+ El vehículo no existe o fue destruido.
+
+ Le véhicule n'existe pas ou a été détruit.
+ Entweder existiert das Fahrzeug nicht oder es wurde zerstört.
+ Il veicolo non esiste o è stato distrutto.
+ Veículo não existe ou está destruido.
+ Pojazd nie istnieje lub jest zniszczony
+ 载具要么不存在要么被毁坏。
+
+
+ Invalid number format
+ Neplatný formát number
+ Formato de numero inválido
+
+ Ungültiges Zahlenformat!
+ Format de nombre invalide
+ Formato numerico non valido
+ Formato de número inválido.
+ Niepoprawny format liczby
+ 数字格式无效
+
+
+ You can't enter anything below 1!
+ Nemůžete nic zadávat menší než 1!
+ No puedes poner nada menos que 1!
+
+ Du kannst nichts unter 1 eingeben!
+ Vous ne pouvez pas prendre moins d'1 objet !
+ Non puoi inserire nulla al di sotto di 1!
+ Você não pode digitar nada abaixo de 1!
+ Nie możesz wprowadzić niczego poniżej 1!
+ 你不能输入少于1的任何物品!
+
+
+ The vehicle doesn't have that many of that item.
+ Vozidlo nemá že mnohé z této položky.
+ El vehículo no tiene tantos de ese objeto.
+
+ Das Fahrzeug hat nicht so viele dieser Gegenstände.
+ Le véhicule ne contient pas autant de cet objet.
+ Il veicolo non contiene così tanti oggetti.
+ O veículo não tem essa quantidade de items.
+ Pojazd nie posiada takiej ilości rzeczy.
+ 载具没有那么多的物品。
+
+
+ Your sound was set to normal mode!
+ Váš zvuk byl nastaven do normálního režimu!
+ Votre son a été augmenté!
+ Tu sonido fue puesto en modo normal!
+ Il vostro sound è stato impostato in modalità normale!
+
+ Die Lautstärke ist wieder normal!
+ Seu som voltou ao normal!
+ Dzwięk został ustawiony w tryb normalny!
+ 你的声音被设置为正常模式!
+
+
+ Your sound was set to fade mode!
+ Váš zvuk byl nastaven do režimu slábnout!
+ Votre son a été diminué!
+ Tu sonido fue puesto en modo bajo!
+ Il vostro sound è stato impostato in modalità a svanire!
+
+ Deine Lautstärke wurde in den "Fade-Mode" geändert!
+ Seu som está abafado.
+ Dzwięk został ustawiony w tryb wyciszony!
+ 你的声音被设置为静音模式!
+
+
+ An RPG game mode developed by Tonic.
+ Mód RPG hra vyvinutá Tonic.
+ Un mode de jeu de RPG développé par Tonic.
+ Un modo de juego de rol desarrollado por Tonic.
+ Una modalità di gioco RPG sviluppato da Tonic.
+ Tryb gry RPG stworzona przez Tonic.
+ Um modo de jogo RPG desenvolvido pela Tonic.
+ Режим RPG игра, разработанная компанией Tonic.
+ Ein RPG-Modus entwickelt von Tonic.
+ 由Tonic开发的RPG游戏模式。
+
+
+
+
+ Error saving container, couldn't locate house?
+ Chyba při ukládání kontejner, nemohl najít dům?
+ Error al salvar contenedor, no se pudo encontrar la casa?
+
+ Fehler beim Speichern der Container: Es konnte kein Haus gefunden werden.
+ Erreur lors de la sauvegarde des conteneurs, impossible de localiser la maison.
+ Errore nel salvataggio del contenitore, impossibile trovare la cas a?
+ Erro ao salvar a caixa, não foi possível encontrar a casa.
+ Błąd w zapisywaniu pojemnika, nie można zlokalizować domu.
+ 保存库存错误,找不到房子?
+
+
+ You are not allowed to access this storage container without the owner opening it.
+ Nemáte povolen přístup k tomuto skladovacího kontejneru, aniž by majitel otevření.
+ No tienes permiso de acceder este contenedor, sin el dueño haberlo abierto.
+
+ Du bist nicht berechtigt, auf diesen Container zuzugreifen, ohne dass der Besitzer ihn aufgeschlossen hat.
+ Vous n'êtes pas autorisé à accéder à ce conteneur de stockage sans que le propriétaire ne l'ouvre.
+ Non sei autorizzato ad accedere a questo contentitore senza il permesso del proprietario.
+ Você so pode acessar a caixa se o dono deixar ela aberta.
+ Nie masz dostępu do pojemnika dopóki właściciel go nie otworzy.
+ 除非所有者打开此库存,否则不允许访问该库存。
+
+
+ There are no houses near you.
+ Nejsou žádné domy u vás.
+ No hay casas cerca de ti.
+ Non ci sono case vicino a voi.
+ Brak domy w pobliżu ciebie.
+
+ Il n'y a aucune maison près de vous.
+ Não há casas perto de você.
+ Es gibt keine Häuser in deiner Nähe.
+ 你在附近没有房子。
+
+
+ The storage box is over the stairs!
+ Úložný box je u konce schodů!
+ Le conteneur est dans les escaliers!
+ La caja de almacenamiento está sobre las escaleras!
+ Il contenitore è sopra le scale!
+ Schowek jest na schodach!
+ A caixa de armazenamento é sobre as escadas!
+ Ящик для хранения находится над лестницей!
+ Der Container ist über die Treppe!
+ 存储箱在楼梯上!
+
+
+ You are not the owner of the house.
+ Nejste vlastníkem domu.
+ No eres el dueño de la casa.
+ Non sei il proprietario della casa.
+ Nie jesteś właścicielem domu.
+
+ Vous n'êtes pas le propriétaire de la maison.
+ Você não é o dono da casa.
+ Du bist nicht der Eigentümer des Hauses.
+ 你不是房子的主人。
+
+
+ You have unlocked the door.
+ Jste odemkl dveře.
+ Has abierto la puerta.
+
+ Du hast die Tür aufgeschlossen.
+ Vous avez ouvert la porte.
+ Hai sbloccato la porta.
+ Você destrancou a porta.
+ Odblokowałeś drzwi.
+ 你打开了门。
+
+
+ You have locked the door.
+ Jste zamkli dveře.
+ Has cerrado con llave la puerta.
+
+ Du hast die Tür abgeschlossen.
+ Vous avez fermé à clé la porte.
+ Hai bloccato la porta.
+ Você trancou a porta.
+ Zablokowałeś drzwi.
+ 你锁上了门。
+
+
+ You are not near a door!
+ Nejste u dveří!
+ No estas cerca de una puerta!
+
+ Keine Tür in der Nähe!
+ Vous n'êtes pas près d'une porte!
+ Non sei vicino ad una porta!
+ Você não está perto de uma porta!
+ Nie jesteś przy drzwiach!
+ 你不在门附近!
+
+
+ This house was recently sold and is still processing in the database.
+ Tento dům byl nedávno prodán a je stále zpracovává v databázi.
+ Esta casa fue vendida recientemente y esta procesando datos.
+
+ Dieses Haus wurde vor Kurzem verkauft.
+ Cette maison a été récemment vendue et est en cours de traitement dans la base de données.
+ Questa casa è stata venduta di recente ed il database la sta ancora processando.
+ Essa casa já foi vendida, estamos processando a ordem de compra
+ Ten dom został ostatnio sprzedany i trwa jego przetwarzanie w bazie danych.
+ 这套房子最近已售出,目前仍在数据库中处理。
+
+
+ You do not have a home owners license!
+ Nemáte majitelům licenci doma!
+ No tienes licencia mobiliaria!
+
+ Du hast keine Eigentumsurkunde!
+ Vous n'avez pas le permis de propriétaires de maison!
+ Non hai la licenza per il possesso delle case!
+ Você não tem um Registro Civil para comprar casas!
+ Nie masz licencji zarządcy nieruchomości!
+ 你没有房产许可证!
+
+
+ You can only own %1 houses at a time.
+ Můžete vlastnit pouze%1 domy najednou.
+ Solo puedes ser dueño de %1 casas a la vez.
+
+ Du darfst nur %1 Häuser zugleich besitzen.
+ Vous ne pouvez posséder que %1 maisons à la fois.
+ Puoi possedere solo %1 case
+ Você só pode ter %1 casa(s)!
+ Możesz posiadać maksymalnie %1 domów.
+ 你一次只能拥有 %1 套房子。
+
+
+ You do not have enough money!
+ Nemáte dost peněz!
+ No tienes suficiente dinero!
+
+ Du hast nicht genug Geld!
+ Vous n'avez pas assez d'argent!
+ Non hai fondi a sufficienza!
+ Você não tem todo esse dinheiro!
+ Nie masz tyle pieniędzy!
+ 你没有足够的钱!
+
+
+ This house is available for <t color='#8cff9b'>$%1</t><br/>It supports up to %2 storage containers
+ Tento dům je k dispozici pro <t color='#8cff9b'>$%1</t><br/> Podporuje až %2 skladovací kontejnery
+ Esta casa esta disponible por <t color='#8cff9b'>$%1</t><br/>Soporta hasta %2 contenedores
+
+ Dieses Haus kostet <t color='#8cff9b'>$%1</t><br/>. Es unterstützt %2 Container.
+ Cette maison est disponible pour <t color='#8cff9b'>$%1</t><br/> Il prend en charge jusqu'à %2 conteneurs de stockage
+ Questa casa è disponibile per <t color='#8cff9b'>$%1</t><br/>Può supportare fino a %2 contenitori
+ Essa casa está disponível por <t color='#8cff9b'>R$%1</t><br/>Ela suporta até %2 caixa(s)
+ Ten dom jest dostępny za <t color='#8cff9b'>$%1</t><br/>Ma %2 miejsca na pojemniki do przechowywania wyposażenia
+ 这所房子可以住 <t color='#8cff9b'>$%1</t><br/>它最多支持 %2 个存储箱
+
+
+ Purchase House
+ nákup domu
+ Comprar Casa
+
+ Haus kaufen
+ Acheter la Maison
+ Compra Casa
+ Comprar Casa
+ Kup dom!
+ 购买房子
+
+
+ This house doesn't belong to anyone.
+ Tento dům nepatří nikomu.
+ Esta casa no tiene dueño.
+
+ Dieses Haus gehört niemandem.
+ Cette maison n'appartient à personne.
+ Questa casa non appartiene a nessuno.
+ Essa casa não tem dono.
+ Ten dom nie ma właściciela.
+ 这套房子不属于任何人。
+
+
+ This person is not online there for you cannot raid their house!
+ Tato osoba není on-line proto nelze nájezd svůj dům!
+ No puedes asaltar esta casa, porque el dueño no esta en linea!
+
+ Der Hausbesitzer ist nicht online, daher kannst du sein Haus nicht durchsuchen!
+ Cette personne n'est pas sur l'île, vous ne pouvez pas perquisitionner cette maison!
+ Questa persona non è online quindi non puoi perquisire la sua casa!
+ O dono da casa não está online, você não pode vasculhar a casa!
+ Osoba nie jest na serwerze, nie możesz przeszukać domu.
+ 房子主人不在线,你不能搜查房子!
+
+
+ The door is already unlocked!
+ Dveře jsou již odemčené!
+ La puerta ya esta abierta!
+
+ Die Tür ist bereits offen!
+ La porte est déjà débloqué!
+ La porta è già sbloccata!
+ A porta está destrancada!
+ Drzwi są już odblokowane!
+ 门已经解锁了!
+
+
+ The door is already locked!
+ Dveře jsou již zamčené!
+ La porte est déjà fermée!
+ La puerta ya esta cerrada con llave!
+ La porta è già chiusa a chiave!
+
+ Die Tür ist bereits verriegelt!
+ Esta porta já está trancada!
+ Drzwi są już zablokowane!
+ 门已经锁好了!
+
+
+ Breaking lock on door
+ Lámání zámek na dveřích
+ Rompiendo la cerradura de la puerta.
+
+ Türschloss wird aufgebrochen...
+ En train de casser la serrure
+ Sbloccando la porta
+ Quebrando a fechadura da porta
+ Wyłamuje zablokowane drzwi...
+ 撬开门锁
+
+
+ %1 your house is being raided by the cops!
+ %1 vašeho domu je vpadl policajti!
+ %1 tu casa esta siendo asaltada por los policías!
+
+ %1 dein Haus wird von der Polizei durchsucht!
+ %1, votre maison est perquisitionnée par les policiers !
+ %1 la Polizia si sta introducendo in casa tua!
+ %1 Sua casa está sendo vasculhada pela Policia!
+ %1 twój dom jest kontrolowany przez policję!
+ %1 的房子被警察搜查了!
+
+
+ House Owner
+ Majitel domu
+ Dueño de la casa
+
+ Hauseigentümer
+ Propriétaire
+ Proprietario Casa
+ Proprietário
+ Właściciel domu
+ 房子主人
+
+
+ There is nothing in this house.
+ Není nic v tomto domě.
+ Esta casa esta vacía.
+
+ Es gibt nichts in diesem Haus.
+ Il n'y a rien dans cette maison
+ In questa casa non c'è nulla.
+ Essa casa está vazia.
+ Nie znaleziono niczego nielegalnego.
+ 房子里什么也没有。
+
+
+ Searching House...
+ Vyhledávání dům ...
+ Buscando Casa...
+
+ Haus wird durchsucht...
+ Perquisition de la Maison...
+ Perquisendo la Casa...
+ Vasculhando a casa...
+ Przeszukuję dom...
+ 搜索房子...
+
+
+ You went too far away from the house!
+ Jste zašel příliš daleko od domu!
+ Te alejastes mucho de la casa!
+
+ Du hast dich zu weit vom Haus entfernt!
+ Vous vous êtes trop éloigné de la maison!
+ Sei andato troppo distante dalla casa!
+ Você está muito distante da casa!
+ Jesteś za daleko od domu!
+ 你离房子太远了!
+
+
+ A house was raided and had $%1 worth of drugs / contraband.
+ Dům byl vpadl a měl $%1 v hodnotě drog / kontrabandu.
+ Una casa fue asaltada y se econtraron $%1 en drogas / contrabando.
+
+ Ein Haus wurde durchsucht und es wurden Drogen / Schmuggelware im Wert von $% gefunden.
+ Une maison a été perquisitionné et avait $%1 de drogue / contrebande.
+ Una casa è stata perquisita e sono stati trovati $%1 in materiali illegali.
+ A casa assaltada tem R$%1 em drogas ou contrabandos.
+ Podczas przeszukania domu znaleziono kontrabandę o wartości $%1.
+ 一所房子被搜查,查获价值 $%1 的毒品/违禁品。
+
+
+ Nothing illegal in this house.
+ Nic nezákonného v tomto domě.
+ Nada ilegal en esta casa.
+
+ Nichts Illegales in diesem Haus.
+ Rien d'illégal dans cette maison
+ Questa casa non contiene nulla d'illegale.
+ Nada ilegal nessa casa.
+ Nie znaleziono niczego nielegalnego.
+ 这房子没有违法物品。
+
+
+ House storage unlocked
+ Dům skladování odemkl
+ Inventario de la casa abierto
+
+ Lagerplatz des Hauses aufgeschlossen.
+ Stockage de la maison déverrouillé
+ Contenitori della casa sbloccati
+ Armário da casa destrancado
+ Pojemnik odblokowany
+ 房子存储箱解锁
+
+
+ House storage locked
+ Dům skladování zamčené
+ Inventario de la casa cerrado con llave
+
+ Lagerplatz des Hauses abgeschlossen.
+ Stockage de Maison verrouillé
+ Contenitori della casa bloccati
+ Armário da casa trancado
+ Pojemnik zablokowany
+ 房子存储箱锁定
+
+
+ Locking up house please wait...
+ Zamykání domu čekejte prosím ...
+ La casa se esta cerrando con llave, por favor espere...
+
+ Haus wird abgeschlosen, bitte warten...
+ Fermeture de la maison, veuillez patienter...
+ Bloccando la casa, attendere prego...
+ Trancando a casa, aguarde...
+ Blokuję zamykam dom proszę czekać...
+ 房子锁定中请稍等...
+
+
+ House has been locked up.
+ Dům byl zamčený.
+ La maison a été verrouillée.
+ La casa se a cerrado con llave.
+
+ Haus wurde abgeschlossen.
+ La casa è stata bloccata.
+ Sua casa foi trancada!
+ Dom został zablokowany / zamknięty!
+ 房子被锁定。
+
+
+ Are you sure you want to sell your house? It will sell for: <t color='#8cff9b'>$%1</t>
+ Jste si jisti, že chcete prodat svůj dům? To se bude prodávat za: <t color='#8cff9b'>$%1</t>
+ Estas seguro de que quieres vender tu casa? Se vendera por: <t color='#8cff9b'>$%1</t>
+
+ Bist Du sicher, dass du dein Haus verkaufen möchtest? Du würdest dafür <t color='#8cff9b'>$%1</t> bekommen.
+ Etes-vous sûr de vouloir vendre votre maison? Elle se vendra pour: <t color='#8cff9b'>$%1</t>
+ Sei sicuro di voler vendere la tua casa? La venderai per: <t color='#8cff9b'>$%1</t>
+ Você tem certeza que deseja vender a casa? O valor de venda é: <t color='#8cff9b'>R$%1</t>
+ Jesteś pewny że chcesz sprzedać dom za <t color='#8cff9b'>$%1</t>
+ 你确定要卖掉你的房子吗?出售价格:<t color='#8cff9b'>$%1</t>
+
+
+ Are you sure you want to remove it?
+ Jsou si jisti, že jej chcete odstranit?
+ Estas seguro de que lo quieres remover?
+ Sei sicuro di voler rimuovere esso?
+ Czy na pewno chcesz go usunąć?
+
+ Etes-vous sûr de vouloir supprimer le conteneur ?
+ Você tem certeza que quer remover isso?
+ Bist du sicher, dass du den Container entfernen möchtest?
+ 你确定要删除存储箱吗?
+
+
+ This house is already owned even though you shouldn't be seeing this hint...
+ Tento dům je již ve vlastnictví i když by nemělo být vidět tuto radu ...
+ Cette maison a déjà un propriétaire, même si vous ne devriez pas voir ce message ...
+ Esta casa es de propiedad ya pesar de que no debería estar viendo esta pista ...
+ Questa casa è già di proprietà, anche se non si dovrebbe essere visto questo suggerimento ...
+ Ten dom jest już własnością, nawet jeśli nie należy widzieć tę wskazówkę ...
+ Esta casa já é de propriedade mesmo que você não deveria estar vendo essa dica ...
+ Этот дом уже находится в собственности, даже если вы не должны видеть эту подсказку ...
+ Dieses Haus befindet sich bereits in deinem Besitz. Diesen Hinweis solltest du eigentlich gar nicht sehen...
+ 尽管你不该看到这个提示,但这所房子已经有房主了...
+
+
+ There is no owner for this house.
+ Neexistuje žádný majitel tohoto domu.
+ Il n'y a pas le propriétaire de cette maison.
+ No hay ningún propietario de esta casa.
+ Non vi è alcun proprietario per questa casa.
+ Nie ma właściciel tego domu.
+ Não há proprietário para esta casa.
+ Там нет владельца для этого дома.
+ Es gibt keinen Eigentümer für dieses Haus.
+ 这房子没有主人.
+
+
+
+
+ Food
+ Jídlo
+ Faim
+ Comida
+ Cibo
+ Jedzenie
+
+ Hunger
+ Comida
+ 食物
+
+
+ Health
+ Zdraví
+ Vie
+ Vida
+ Salute
+ Zdrowie
+
+ Gesundheit
+ Vida
+ 健康
+
+
+ Water
+ Voda
+ Soif
+ Agua
+ acqua
+ Woda
+
+ Durst
+ Água
+ 水
+
+
+
+
+ There isn't a chopper on the helipad!
+ Není vrtulník na přistávací plocha pro vrtulník!
+ No hay un helicóptero en el Helipad.
+
+ Es ist kein Helikopter auf dem Landeplatz!
+ Il n'y a pas d'hélicoptère sur l'héliport
+ Non c'è alcun elicottero sulla piazzola d'atterraggio
+ Não existe uma aeronave no heliponto!
+ W pobliżu nie ma helikoptera!
+ 直升机停机坪上没有直升机!
+
+
+ You need $%1 to service your chopper
+ Musíte $%1 servisních kontrol vrtulník
+ Necesitas $%1 para reparar el helicóptero.
+
+ Du benötigst $%1, um deinen Helikopter zu warten.
+ Vous avez besoin de $%1 pour entretien de votre hélicoptère
+ Necessiti di $%1 per fare manutenzione al tuo elicottero
+ Você precisa de R$%1 para reparar a sua aeronave
+ Potrzebujesz $%1 aby serwisować helikopter
+ 你需要 $%1 来维修你的直升机
+
+
+ Servicing Chopper [%1]...
+ Servis Chopper [%1] ...
+ Reparando Helicóptero [%1]...
+
+ Helikopter wird gewartet [%1]...
+ Entretien [%1]...
+ Manutenendo Elicottero [%1]...
+ Reparando aeronave [%1]...
+ Serwisuję helikopter [%1]...
+ 维修直升机 [%1]...
+
+
+ The vehicle is no longer alive or on the helipad!
+ Vozidlo je již nežije nebo na přistávací plocha pro vrtulník!
+ El vehiculo no esta vivo o en el helipad!
+
+ Das Fahrzeug wurde zerstört oder befindest sich nicht mehr auf dem Helikopterlandeplatz!
+ L'hélicoptère est détruit ou n'est plus sur l'héliport!
+ Il veicolo non è più attivo sulla piazzola d'atterraggio!
+ "A aeronave não está mais disponível no heliponto!
+ Pojazd nie jest dłużej dostępny na lądowisku
+ 载具不再存在或停在停机坪上!
+
+
+ Your chopper is now repaired and refuelled.
+ Váš vrtulník není opraveno a tankovat.
+ Tu helicóptero esta reparado y lleno de combustible.
+
+ Der Helikopter ist nun repariert und aufgetankt.
+ Votre hélicoptère est maintenant réparé et ravitaillé
+ L'elicottero è stato riparato e rifornito di carburante.
+ Sua aeronave está reparada e com o tanque cheio!
+ Helikopter został naprawiony i natankowany
+ 你的直升机现在已经修好并加满油。
+
+
+
+
+ Marijuana leaf
+ marihuana list
+ Cannabis
+
+ Kannabis
+ Cannabis
+ Cannabis
+ Maconha não Processada
+ Konopie
+ 大麻叶
+
+
+ Apple
+ Jablko
+ Manzana
+
+ Apfel
+ Pomme
+ Mela
+ Maçã
+ Jabłko
+ 苹果
+
+
+ Apples
+ jablka
+ Manzanas
+
+ Äpfel
+ Pommes
+ Mele
+ Maçãs
+ Jabłka
+ 很多苹果
+
+
+ Heroin
+ Heroin
+ Heroina
+
+ Heroin
+ Heroïne
+ Eroina
+ Heroína
+ Heroina
+ 海洛因
+
+
+ Oil
+ Olej
+ Petróleo
+
+ Öl
+ Pétrole
+ Olio
+ Petróleo
+ Benzyna
+ 石油
+
+
+ Peach
+ Broskev
+ Melocotón
+
+ Pfirsich
+ Pêche
+ Pesca
+ Pêssego
+ Brzoskwinia
+ 桃子
+
+
+ Peaches
+ broskve
+ Melocotones
+
+ Pfirsiche
+ Pêches
+ Pesche
+ Pêssegos
+ Brzoskwinie
+ 很多桃子
+
+
+ Crude Oil
+ Ropa
+ Petróleo Crudo
+
+ Unverarbeitetes Öl
+ Pétrole non raffiné
+ Olio non processato
+ Petróleo não Refinado
+ Ropa naftowa
+ 原油
+
+
+ Processed Oil
+ Zpracovaný olej
+ Petróleo Procesado
+
+ Verarbeitetes Öl
+ Pétrole raffiné
+ Olio processato
+ Petróleo Refinado
+ Olej napędowy
+ 成品油
+
+
+ Opium Poppy
+ Mák setý
+ Planta del Opio
+
+ Unverarbeitetes Heroin
+ Graine de pavot
+ Eroina non processata
+ Heroína não Processada
+ Heroina nieoczyszczona
+ 罂粟
+
+
+ Heroin
+ Heroin
+ Heroina
+
+ Verarbeitetes Heroin
+ Héroïne
+ Eroina processata
+ Heroína Processada
+ Heroina oczyszczona
+ 海洛因
+
+
+ Pot
+ Hrnec
+ Marihuana
+
+ Marihuana
+ Marijuana
+ Marijuana
+ Maconha Processada
+ Marihuana
+ 大麻
+
+
+ Raw Rabbit
+ Raw Rabbit
+ Carne de Conejo
+
+ Rohes Hasenfleisch
+ Viande de Lapin
+ Carne di coniglio
+ Carne de Coelho
+ Mięso zająca
+ 生兔肉
+
+
+ Grilled Rabbit
+ grilované Rabbit
+ Conejo Asado
+
+ Gegrilltes Hasenfleisch
+ Lapin grillé
+ Carne di coniglio alla griglia
+ Carne de coelho grelhado
+ Grilowany zając
+ 烤兔肉
+
+
+ Raw Salema
+ Raw Salema
+ Salema Crudo
+
+ Rohe Sardine
+ Filet de Saupe
+ Carne di Salmone
+ Peixe Salema
+ Mięso salemy
+ 生沙丁鱼肉
+
+
+ Grilled Salema
+ Grilované Salema
+ Salema Cocinado
+
+ Gegrillte Sardine
+ Sardine grillée
+ Sardine alla griglia
+ Sardinha Grelhada
+ Grilowana Salema
+ 烤沙丁鱼肉
+
+
+ Raw Ornate
+ Raw Ozdobený
+ Ornate Crudo
+
+ Roher Kaiserfisch
+ Filet d'Ornate
+ Carne di Orata
+ Carne Francesa
+ Mięso Ornata
+ 生梭鱼肉
+
+
+ Grilled Ornate
+ grilované Ozdobený
+ Ornate Cocinado
+
+ Gegrillter Kaiserfisch
+ Doré grillé
+ Angelfish alla griglia
+ Angelfish Grelhado
+ Grilowany Ornat
+ 烤梭鱼肉
+
+
+ Raw Mackerel
+ Raw Makrela
+ Verdel Crudo
+
+ Rohe Makrele
+ Filet de Maquereau
+ Carne di Sgombro
+ Peixe Cavalinha
+ Mięso Makreli
+ 生鲭鱼肉
+
+
+ Grilled Mackerel
+ grilované makrely
+ Verdel Cocinado
+
+ Gegrillte Makrele
+ Maquereau grillé
+ Sgombro alla griglia
+ Cavalinha Grelhada
+ Grilowana Makrela
+ 烤鲭鱼肉
+
+
+ Raw Tuna
+ syrového tuňáka
+ Atún Crudo
+
+ Roher Thunfisch
+ Filet de Thon
+ Carne di Tonno
+ Peixe Tuna
+ Mięso Tuńczyka
+ 生金枪鱼肉
+
+
+ Grilled Tuna
+ grilované Tuna
+ Atún Cocinado
+
+ Gegrillter Thunfisch
+ Thon grillé
+ tonno alla griglia
+ Atum Grelhado
+ Grilowany Tuńczyk
+ 烤金枪鱼肉
+
+
+ Raw Mullet
+ Raw Mullet
+ Lisa Cruda
+
+ Rohe Meerbarbe
+ Filet de Mulet
+ Carne di Triglia
+ Peixe Mullet
+ Mięso Cefala
+ 生鲻鱼肉
+
+
+ Fried Mullet
+ Fried Mullet
+ Lisa Cocinada
+
+ Frittierte Meerbarbe
+ Rouget frits
+ Triglia fritta
+ Mullet Fritado
+ Grilowany Cefal
+ 油炸鲻鱼肉
+
+
+ Raw Catshark
+ Raw máčka
+ Pez Gato Crudo
+
+ Roher Katzenhai
+ Filet de Poisson Chat
+ Carne di Squalo
+ Tubarão Gato
+ Mięso Rekina
+ 生鲨鱼肉
+
+
+ Fried Catshark
+ Fried máčka
+ Pez Gato Cocinado
+
+ Frittierter Katzenhai
+ Poisson-chat frit
+ profondo palombo fritti
+ Tubarão Gato Frito
+ Grilowany Rekin
+ 油炸鲨鱼肉
+
+
+ Raw Turtle
+ Raw Turtle
+ Carne de Tortuga
+
+ Rohes Schildkrötenfleisch
+ Viande de Tortue
+ Carne di Tartaruga
+ Carne de Tartaruga
+ Mięso Żółwia
+ 生海龟肉
+
+
+ Turtle Soup
+ Turtle Soup
+ Sopa de Tortuga
+
+ Schildkrötensuppe
+ Soupe à la Tortue
+ Zuppa di Tartaruga
+ Sopa de Tartaruga
+ Zupa z żółwia
+ 海龟肉汤
+
+
+ Raw Chicken
+ Raw Chicken
+ Carne de Pollo
+
+ Poulet cru
+ Rohes Hühnchenfleisch
+ pollo crudo
+ Galinha Crua
+ Surowy Kurczak
+ 生鸡肉
+
+
+ Deep Fried Chicken
+ Smažené kuře
+ Pollo Frito
+
+ Schwarz Frittiertes Hühnchen
+ Poulet frit
+ Nero Fried Chicken
+ Frango Frito
+ Smażony Kurczak
+ 炸鸡肉
+
+
+ Raw Rooster
+ Raw Kohout
+ Carne de Gallo
+
+ Coq cru
+ Rohes Hähnchenfleisch
+ Rooster Raw
+ Galo Cru
+ Surowy Kogut
+ 生公鸡肉
+
+
+ Grilled Rooster
+ grilované Kohout
+ Gallo Asado
+
+ Gegrilltes Hähnchen
+ Coq grillé
+ cazzo alla griglia
+ Galo Grelhado
+ Grilowany Kogut
+ 烤鸡肉
+
+
+ Raw Goat
+ Raw Kozí
+ Carne de Cabra
+
+ Rohes Ziegenfleisch
+ Chèvre crue
+ Carne di capra Raw
+ Carne de Cabra Crua
+ Surowa Koza
+ 生山羊肉
+
+
+ Grilled Goat
+ grilovaný kozí
+ Cabra Asada
+
+ Gegrilltes Ziegenfleisch
+ Chèvre grillée
+ Carne di capra alla griglia
+ Carne de Cabra Grelhada
+ Grilowana Koza
+ 烤山羊肉
+
+
+ Raw Sheep
+ Raw Ovce
+ Carne de Obeja
+
+ Rohes Schafsfleisch
+ Mouton cru
+ Carne di pecora grezza
+ Carne de Ovelha Crua
+ Surowa Owca
+ 生绵羊肉
+
+
+ Grilled Sheep
+ grilované Ovce
+ Obeja Asada
+
+ Gegrilltes Schafsfleisch
+ Mouton grillé
+ Mutton alla griglia
+ Mutton Grelhado
+ Grilowana Owca
+ 烤全羊肉
+
+
+ Fishing Pole
+ Rybářský prut
+ Palo de Pesca
+
+ Angel
+ Canne à pêche
+ Canna da pesca
+ Vara de Pescar
+ Wędka
+ 钓鱼竿
+
+
+ Water Bottle
+ Láhev na vodu
+ Botella de Agua
+
+ Wasserflasche
+ Bouteille d'eau
+ Bottiglia d'acqua
+ Garrafa d'água
+ Butelka wody
+ 瓶装水
+
+
+ Coffee
+ Káva
+ Café
+
+ Kaffee
+ Café
+ Caffè
+ Café
+ Kawa
+ 咖啡
+
+
+ Donuts
+ koblihy
+ Donas
+
+ Donuts
+ Donuts
+ Ciambelle
+ Rosquinha
+ Pączki
+ 甜甜圈
+
+
+ Empty Fuel Canister
+ Prázdný palivo může
+ Bidón de Combustible Vacío
+
+ Leerer Benzinkanister
+ Jerrican Vide
+ Tanica di carburante vuota
+ Tanque de Gasolina Vazio
+ Pusty kanister
+ 空汽油桶
+
+
+ Full Fuel Canister
+ Plná palivo může
+ Bidón de Combustible Lleno
+
+ Gefüllter Benzinkanister
+ Jerrican de Carburant
+ Tanica di carburante piena
+ Tanque de Gasolina Cheio
+ Pełny Kanister
+ 满汽油桶
+
+
+ Defibrillator
+ defibrilátor
+ Desfibrilador
+
+ Defibrillator
+ Défibrillateur
+ defibrillatore
+ Desfibrilador
+ defibrylator
+ 心脏除颤器
+
+
+ Toolkit
+ Toolkit
+ Kit de Herramientas
+
+ Werkzeugkit
+ Boîte à outils
+ kit di strumenti
+ conjunto de ferramentas
+ zestaw narzędzi
+ 维修包
+
+
+ Pickaxe
+ Krumpáč
+ Pico
+
+ Spitzhacke
+ Pioche
+ Piccone
+ Picareta
+ Kilof
+ 镐子
+
+
+ Copper Ore
+ Měděná ruda
+ Cobre
+
+ Kupfererz
+ Minerai de Cuivre
+ Minerale di Rame
+ Pepita de Cobre
+ Ruda miedzi
+ 铜矿石
+
+
+ Iron Ore
+ Železná Ruda
+ Hierro
+
+ Eisenerz
+ Minerai de Fer
+ Minerale di Ferro
+ Pepita de Ferro
+ Ruda żelaza
+ 铁矿石
+
+
+ Iron Ingot
+ Železná cihla
+ Lingote de Hierro
+
+ Eisenbarren
+ Lingot de Fer
+ Lingotto di ferro
+ Barra de Ferro
+ Sztabka żelaza
+ 铁锭
+
+
+ Copper Ingot
+ měď ingotů
+ Lingote de Cobre
+
+ Kupferbarren
+ Lingot de cuivre
+ Lingotto di Rame
+ Barra de Cobre
+ Sztabka miedzi
+ 铜锭
+
+
+ Sand
+ Písek
+ Arena
+
+ Sand
+ Sable
+ Sabbia
+ Areia
+ Piasek
+ 沙子
+
+
+ Salt
+ Sůl
+ Sal
+
+ Salz
+ Sel
+ Sale
+ Sal
+ Sól kopana
+ 盐矿
+
+
+ Refined Salt
+ rafinovaný Salt
+ Sal Refinada
+
+ Raffiniertes Salz
+ Sel traité
+ Sale raffinato
+ Sal Refinado
+ Sól rafinowana
+ 食盐
+
+
+ Glass
+ Sklo
+ Vidrio
+
+ Glas
+ Verre
+ Vetro
+ Vidro
+ Szkło
+ 玻璃
+
+
+ Polished Diamond
+ leštěný Diamond
+ Diamante Pulido
+
+ Geschliffene Diamanten
+ Diamant Taillé
+ Diamante tagliato
+ Diamante Lapidado
+ Diament szlifowany
+ 钻石抛光
+
+
+ Uncut Diamond
+ Uncut Diamond
+ Diamante Bruto
+
+ Ungeschliffene Diamanten
+ Diamant Brut
+ Diamante grezzo
+ Diamante Bruto
+ Diament surowy
+ 未切割钻石
+
+
+ Tactical Bacon
+ Tactical Bacon
+ Tocino
+
+ Taktischer Speck
+ Bacon tactique
+ Carne secca
+ Bacon Tático
+ Posiłek taktyczny
+ 战术培根
+
+
+ RedGull
+ RedGull
+ RedGull
+ RedGull
+ RedGull
+ RedGull
+ RedGull
+ RedGull
+ RedGull
+ 红牛
+
+
+ Lockpick
+ Šperhák
+ Ganzúa
+
+ Dietrich
+ Outil de crochetage
+ Grimaldello
+ Chave Mestra
+ Wytrych
+ 开锁工具
+
+
+ Rock
+ Skála
+ Piedra
+
+ Stein
+ Pierre
+ Roccia
+ Pedra
+ Skała
+ 矿石
+
+
+ Cement Bag
+ cement Bag
+ Bolsa de Cemento
+
+ Zement Sack
+ Sac de ciment
+ Sacco di Cemento
+ Saco de Cimento
+ Worek cementu
+ 水泥
+
+
+ Gold Bar
+ Gold Bar
+ Barra de Oro
+
+ Goldbarren
+ Lingot d'or
+ Lingotto d'Oro
+ Barra de Ouro
+ Sztabka złota
+ 金条
+
+
+ Blasting Charge
+ Trhací Charge
+ Carga Explosiva
+
+ Sprengladung
+ Charge de dynamite
+ Carica Esplosiva
+ Explosivo
+ Ładunek wybuchowy
+ 爆破装置
+
+
+ Bolt Cutter
+ Bolt Cutter
+ Cizalla
+
+ Bolzenschneider
+ Outils de serrurier
+ Tronchese
+ Alicate
+ Nożyce do kłódek
+ 螺栓切割机
+
+
+ Bomb Defuse Kit
+ Bomby zneškodnit Kit
+ Kit para Desarmar Bombas
+
+ Bombenentschärfungskit
+ Outils de désamorçage
+ Attrezzi per il disinnesco
+ Kit anti-bomba
+ Zestaw saperski
+ 爆破拆除工具
+
+
+ Small Storage Box
+ Malá přihrádka
+ Contenedor Pequeño
+
+ Kleine Lagerbox
+ Petit Conteneur de stockage
+ Contenitore piccolo
+ Caixa Pequena
+ Mały pojemnik
+ 小储物箱
+
+
+ Large Storage Box
+ Velký úložný box
+ Contenedor Grande
+
+ Große Lagerbox
+ Grand Conteneur de stockage
+ Contenitore grande
+ Caixa Grande
+ Duży pojemnik
+ 大储物箱
+
+
+ Coca Leaf
+ Coca Leaf
+ Hoja de Coca
+
+ Unverarbeitetes Kokain
+ Feuille de Coca
+ Cocaina non processata
+ Cocaína não Refinada
+ Nieoczyszczona kokaina
+ 古柯叶
+
+
+ Coke
+ Koks
+ Cocaína
+
+ Verarbeitetes Kokain
+ Cocaïne
+ Cocaina processata
+ Cocaína Refinada
+ Oczyszczona kokaina
+ 可卡因
+
+
+ Spike Strip
+ Spike Strip
+ Barrera de Clavos
+
+ Nagelband
+ Herse
+ Striscia Chiodata
+ Tapete de Espinhos
+ Kolczatka drogowa
+ 钉刺带
+
+
+
+
+ Driver License
+ Řidičský průkaz
+ Licencia de Conducir
+
+ Führerschein
+ Permis de Conduire
+ Licenza di Guida
+ Licença de Motorista
+ Prawo jazdy
+ 小车驾驶证
+
+
+ Pilot License
+ pilotní licence
+ Licencia de Piloto
+
+ Pilotenschein
+ Licence de Pilote
+ Licenza da Pilota
+ Licença de Piloto
+ Licencja Pilota
+ 飞行员证
+
+
+ Heroin Training
+ heroin Training
+ Entrenamiento de Heroina
+
+ Heroinausbildung
+ Transformation d'Héroïne
+ Processo Eroina
+ Treinamento de Heroina
+ Wytwarzanie Heroiny
+ 海洛因加工证
+
+
+ Oil Processing
+ Zpracování olej
+ Procesamiento de Petroleo
+
+ Ölverarbeitung
+ Raffinage du pétrole
+ Processo Olio
+ Refinamento de Petróleo
+ Rafinacja ropy naftowej
+ 石油提炼证
+
+
+ Diving License
+ potápěčské licence
+ Licencia de Buceo
+
+ Taucherschein
+ Permis de Plongée
+ Licenza di Pesca
+ Licença de Mergulho
+ Licencja Nurka
+ 潜水证
+
+
+ Boating License
+ Vodácký licence
+ Licencia de Botes
+
+ Bootsschein
+ Permis Bateau
+ Licenza Nautica
+ Licença de Barco
+ Patent Motorowodny
+ 海员证
+
+
+ Firearm License
+ zbrojní průkaz
+ Licencia de Armas
+
+ Waffenschein
+ Permis de Port d'Arme
+ Porto d'Armi
+ Licença de Porte de Armas
+ Pozwolenie na broń
+ 持枪证
+
+
+ Coast Guard License
+ Pobřežní stráž licence
+ Licencia de Guardia Costera
+
+ Küstenwachenausbildung
+ Garde-Côtes
+ Licenza Guardia Costiera
+ Licença da Guarda Costeira
+ Trening straż przybrzeżna
+ 海岸警卫队证
+
+
+ Rebel Training
+ Rebel Training
+ Entrenamiento Rebelde
+
+ Rebellenausbildung
+ Entraînement rebelle
+ Licenza da Ribelle
+ Treinamento Rebelde
+ Trening rebelianta
+ 叛军训练
+
+
+ Truck License
+ Truck licence
+ Licencia de Camiones
+
+ LKW-Führerschein
+ Permis Poids Lourds
+ Licenza Camion
+ Licença de Caminhão
+ Prawo jazdy - ciężarówki
+ 货车驾驶证
+
+
+ Diamond Processing
+ Diamond Processing
+ Procesamiento de Diamantes
+
+ Diamantenverarbeitung
+ Taillage des Diamants
+ Processo Diamanti
+ Lapidação de Diamante
+ Szlifierz diamentów
+ 钻石加工厂
+
+
+ Copper Processing
+ Zpracování měď
+ Procesamiento de Cobre
+
+ Kupferverarbeitung
+ Fonte du Cuivre
+ Processo Rame
+ Processamento de Cobre
+ Wytapianie miedzi
+ 铜矿加工
+
+
+ Iron Processing
+ Zpracování Iron
+ Procesamiento de Hierro
+
+ Eisenverarbeitung
+ Fonte du Fer
+ Processo Ferro
+ Processamento de Ferro
+ Wytapianie żelaza
+ 铁矿加工
+
+
+ Sand Processing
+ Zpracování písek
+ Procesamiento de Arena
+
+ Sandverarbeitung
+ Traitement du Sable
+ Processo Sabbia
+ Processamento de Areia
+ Hutnik szkła z piasku
+ 玻璃制造证
+
+
+ Salt Processing
+ sůl Processing
+ Procesamiento de Sal
+
+ Salzverarbeitung
+ Traitement du Sel
+ Processo Sale
+ Processamento de Sal
+ Warzenie soli
+ 食盐制造证
+
+
+ Cocaine Training
+ kokain Training
+ Entrenamiento de Cocaína
+
+ Kokainausbildung
+ Transformation de la Cocaïne
+ Processo Cocaina
+ Treinamento de Cocaína
+ Oczyszczanie kokainy
+ 可卡因加工证
+
+
+ Marijuana Training
+ Marihuana Training
+ Entrenamiento de Marihuana
+
+ Marihuanaausbildung
+ Traitement du Cannabis
+ Processo Marijuana
+ Treinamento de Maconha
+ Suszenie konopi
+ 大麻加工证
+
+
+ Cement Mixing License
+ Cement Mixing licence
+ Licencia para Mezclar Cemento
+
+ Zementmisch-Lizenz
+ Fabrication du Ciment
+ Processo Cemento
+ Licença de Cimento
+ Wytwórca cementu
+ 水泥制造证
+
+
+ Medical Marijuana License
+ Medical Marihuana Licence
+ Licencia de Marihuana Medicinal
+
+ Medizinisches Marijuana-Lizenz
+ Licence de Cannabis Médical
+ Medical Marijuana Licenza
+ Licença Medical Marijuana
+ Medical Marijuana Licencji
+ 医用大麻许可证
+
+
+ Home Owners License
+ Home Majitelé licence
+ Licencia Mobiliaria
+
+ Eigentumsurkunde
+ Droit de Propriété
+ Licenza possesso Casa
+ Licença de Casas
+ Zarządca nieruchomości
+ 房产证
+
+
+
+
+ This can only be used on a vault.
+ To lze použít pouze v trezoru.
+ Esto solo se puede usar en una bóveda.
+
+ Dies kann nur an einem Tresor benutzt werden.
+ Cela ne peut être utilisé que sur un coffre-fort.
+ Può essere usata solo sulla cassaforte.
+ Isso só pode ser usado em um cofre.
+ Możesz tego użyć na skarbcu.
+ 这只能用于金库。
+
+
+ There is already a charge placed on this vault.
+ Existuje již náboj umístěn na tomto trezoru.
+ Ya hay un explosivo puesto en esta bóveda
+
+ Es gibt bereits eine Sprengladung am Tresor.
+ Une charge de dynamite est déjà placé sur ce coffre.
+ C'è già una carica piazzata sulla cassaforte.
+ Já existe uma carga colocada sobre esse cofre.
+ Już założono ładunek wybuchowy na skarbcu.
+ 这座金库已经安装爆破装置。
+
+
+ The vault is already opened.
+ Klenba je již otevřen.
+ La bóveda ya esta abierta.
+
+ Der Tresor ist bereits offen.
+ Le coffre est déjà ouvert.
+ La cassaforte è già aperta.
+ O cofre está aberto.
+ Skarbiec jest już otwarty.
+ 金库已经打开了.
+
+
+ A blasting charge has been placed on the federal reserves vault, You have till the clock runs out to disarm the charge!
+ S rozbuškami náboj byl umístěn na federální rezervy trezoru, jste až do hodiny vyčerpá odzbrojit náboj!
+ Una carga explosiva ha sido puesta en la bóveda de la reserva federal, tienes hasta que se acabe el tiempo para desarmar el explosivo!
+
+ Eine Sprengladung wurde am Safe angebracht. Du hast Zeit, bis die Uhr abläuft, um die Ladung zu entschärfen!
+ Une charge de dynamite a été placée sur le coffre de la réserve fédérale. Vous avez jusqu'au temps imparti pour désarmorcer la charge !
+ Una carica esplosiva è stata piazzata sulla cassaforte della Riserva Federale, puoi cercare di disinnescarla prima che scada il tempo!
+ O explosivo foi colocado no cofre , você tem até o tempo acabar para desarmar o explosivo.
+ Ładunek wybuchowy został założony na skarbcu rezerw federalnych, musisz rozbroić ładunek nim wybuchnie!
+ 金库里已经安装了爆破装置,你必须有足够的时间解除爆破装置!
+
+
+ The timer is ticking! Keep the cops away from the vault!
+ Časovač je tikání! Udržujte policajty od trezoru!
+ El tiempo esta corriendo, manten alejados a los policías!
+
+ Der Timer läuft! Halte die Polizei von Safe fern!
+ La minuterie est lancée! Gardez la police loin de la bombe !
+ Il tempo sta scorrendo! Tieni la polizia lontana dalla cassaforte!
+ O tempo está passando! Mantenha os policiais longe do cofre
+ Zegar tyka! Trzymaj policję z dala od skarbca!
+ 计时器开始计时!请远离爆破点!
+
+
+ The charge has been disarmed!
+ Náboj byl odzbrojen!
+ El explosivo ha sido desarmado!
+
+ Die Sprengladung wurde entschärft!
+ La charge a été désamorcée !
+ La carica esplosiva è stata disinnescata!
+ O explosivo foi desarmado!
+ Ładunek wybuchowy rozbrojony!
+ 爆破装置被解除!
+
+
+ The vault is now opened
+ Klenba je nyní otevřena
+ La bóveda esta abierta
+
+ Der Tresor ist jetzt offen!
+ Le coffre est maintenant ouvert
+ La cassaforte è stata aperta
+ O cofre está aberto.
+ Skarbiec otwarty
+ 金库现在已经打开了
+
+
+ You must open the container before placing the charge!
+ Je nutné otevřít nádobu před umístěním nabíječku!
+ Vous devez ouvrir le conteneur avant de placer le chargeur !
+ Debes abrir el contenedor antes de poner el explosivo!
+ È necessario aprire il contenitore prima di mettere il caricabatterie!
+ Musisz otworzyć pojemnik przed wprowadzeniem opłat!
+
+ Você deve abrir o container antes de colocar o explosivo!
+ Du musst den Container öffnen, bevor du die Ladung platzieren kannst!
+ 安装爆破装置前你必须打开金库大门!
+
+
+ You are not looking at a house door.
+ Nejste při pohledu na dveře domu.
+ No estas viendo a la puerta de una casa.
+
+ Du siehst keine Haustür an.
+ Vous n'êtes pas en face de la porte.
+ Non sei girato verso la porta di una casa.
+ Você não esta olhando para a porta.
+ Nie patrzysz w stronę drzwi.
+ 你需要靠近门才能使用。
+
+
+ !!!!! SOMEONE IS BREAKING INTO THE FEDERAL RESERVE !!!!!!
+ !!!!! Někdo vloupání do Federálního rezervního systému !!!!!!
+ !!!!! LA RESERVA FEDERAL ESTA SIENDO ASALTADA !!!!!!
+
+ !!!!! JEMAND BRICHT IN DIE ZENTRALBANK EIN !!!!!!
+ !!!!! QUELQU'UN TENTE DE S'INTRODUIRE DANS LA RÉSERVE FÉDÉRALE !!!!!!
+ !!!!!! QUALCUNO STA CERCANDO DI INTRODURSI NELLA RISERVA FEDERALE !!!!!!
+ !!!!! A RESERVA FEDERAL ESTÁ SENDO ROUBADA !!!!!!
+ !!!!!! KTOŚ SIĘ WŁAMUJE DO BANKU REZERW FEDERALNYCH !!!!!
+ !!!!! 有人闯进金库 !!!!!!
+
+
+ %1 was seen breaking into a house.
+ %1 byl viděn vloupání do domu.
+ %1 ha sido visto entrando a una casa.
+
+ %1 wurde beim Einbruch in ein Haus gesehen.
+ %1 a été vu rentrant dans une maison par effraction.
+ %1 è stato visto fare irruzione in una casa.
+ %1 foi visto invadindo sua casa.
+ %1 był widziany jak włamywał się do domu.
+ %1 闯入一所房子。
+
+
+ Cutting lock on door
+ Řezání zámek na dveřích
+ Cortando la cerradura de la puerta
+
+ Schloss wird aufgebrochen...
+ Crochetage de la serrure
+ Tranciando i blocchi sulla porta
+ Quebrando o cadeado da porta
+ Przecinam zabezpieczenia domu
+ 门锁被撬
+
+
+ You must open the outside doors before opening it!
+ Je nutné otevřít venkovní dveře před otevřením!
+ Vous devez ouvrir les portes extérieures avant de l'ouvrir !
+ Debes abrir las puertas de afuera antes de abrir esta!
+ È necessario aprire le porte esterne prima di aprirlo!
+ Musisz otworzyć zewnętrzne drzwi przed otwarciem!
+
+ Você deve abrir as portas externas antes de abrir essa!
+ Du musst die Außentüren öffnen, bevor du weitermachen kannst!
+ 打开门前你必须先打开外面的门!
+
+
+ You are not looking at a vault.
+ Nejste při pohledu na klenbu.
+ Vous ne regardez pas le coffre.
+ No estas apuntando a la bóveda.
+ Non cercate in un caveau.
+ Nie jesteś patrząc na sklepieniu.
+ Você não está olhando para um cofre.
+ Вы не смотрите на хранилище.
+ Du siehst keinen Tresor an.
+ 你不是金库看守。
+
+
+ There is no charge on the vault?
+ Neexistuje žádný poplatek na klenbě?
+ No hay un explosivo en la bobeda?
+
+ Es gibt keine Sprengladung am Tresor?
+ Il n'y a pas de dynamite sur le coffre ?
+ Non c'è alcuna carica esplosiva sulla cassaforte
+ Não há nenhum explosivo no cofre.
+ Nie ma ładunku na skarbcu?
+ 爆破装置安装在了金库里?
+
+
+ Defusing charge...
+ Zneškodňovat náboj ...
+ Desarmando Explosivo...
+
+ Sprengladung wird entschärft...
+ Désamorçage de la charge...
+ Disinnescando la carica esplosiva...
+ Desarmando o explosivo...
+ Rozbrajam ładunek...
+ 拆除爆破装置...
+
+
+ The charge has been defused
+ Obvinění byla zneškodněna
+ El explosivo ha sido desarmado
+
+ Die Sprengladung wurde entschärft.
+ La charge a été désamorcée
+ La carica esplosiva è stata disinnescata
+ O explosivo foi desarmado
+ Ładunek został rozbrojony
+ 爆破装置已被拆除
+
+
+ You need to look at the vehicle you want to refuel!
+ Musíte se podívat na vozidla, které chcete natankovat!
+ Debes mirar a el vehiculo que quieres llenar de combustible!
+
+ Du musst das Fahrzeug ansehen, das du auftanken möchtest!
+ Vous avez besoin de regarder le véhicule dont vous voulez faire le plein !
+ Devi essere girato verso il veicolo che vuoi rifornire!
+ Você precisa estar olhando para o veículo que deseja abastecer!
+ Musisz spojrzeć w kierunku pojazdu który chcesz zatankować!
+ 你要看看你的载具是否加满了油!
+
+
+ You need to be closer to the vehicle!
+ Musíte být blíže k vozidlu!
+ Debes estar más cerca del vehiculo!
+
+ Du musst näher am Fahrzeug sein!
+ Vous devez être plus proche du véhicule !
+ Devi stare più vicino al veicolo!
+ Você precisa estar mais perto do veículo!
+ Musisz być bliżej pojazdu!
+ 你需要离载具近一点!
+
+
+ Refuelling Fuel Canister
+ Tankování paliva kanystr
+ Ravitaillement en carburant de la citerne
+ Llenando Bidón de Combustible
+ Rifornimento carburante scatola metallica
+ Tankowanie paliwa Kanister
+ O reabastecimento de combustível vasilha
+ Дозаправка топлива канистра
+ Benzinkanister befüllen
+ 加注汽油桶
+
+
+ Fuel Station Pump
+ Čerpací stanice čerpadla
+ Pompe à essence
+ Estación de bombeo de combustible
+ Pompa Stazione di rifornimento
+ Paliwo przepompowni
+ Bomba de Combustível Station
+ Топливная Насосная станция
+ Zapfsäule
+ 燃料加油站
+
+
+ Spend $%1 to refuel your Empty Fuel Canister?
+ Utratit $%1 natankovat vaše prázdné palivové kanystr?
+ Dépenser $%1 pour faire le plein de votre réservoir ?
+ Gastar $%1 para llenar el Bidón de Combustible?
+ Spendere $%1 per rifornire di carburante la vostra scatola metallica del combustibile vuoto?
+ Wydać $%1 zatankować swój pustego zasobnika paliwa?
+ Gastar R$%1 para reabastecer a sua vasilha de combustível vazio?
+ Потратить $%1 для дозаправки ваш Пусто баллон с горючим?
+ Willst du deinen leeren Kraftstoffkanister für $%1 befüllen?
+ 花费 $%1 加满你的空汽油桶?
+
+
+ You must be closer to the fuel pump!
+ Musíte být blíže k palivovému čerpadlu!
+ Vous devez être plus proche de la pompe à carburant !
+ Debe estar más cerca de la bomba de combustible!
+ È necessario essere più vicino alla pompa del carburante!
+ Você deve estar mais perto da bomba de combustível!
+ Você deve estar mais perto da bomba de combustível!
+ Вы должны быть ближе к топливному насосу!
+ Du musst dich näher an der Zapfsäule befinden!
+ 你必须靠近加油机!
+
+
+ You have successfully refuelled the Fuel Canister!
+ Úspěšně jste tankovat palivový kanystr!
+ Vous avez ravitaillé avec succès le réservoir d'essence !
+ Usted ha llenado con exito el Bidón de Combustible!
+ Hai rifornimento con successo il canestro del combustibile!
+ Pomyślnie zatankowany kanistra paliwa!
+ Você reabastecido com sucesso a vasilha de combustível!
+ Вы успешно заправились на баллон с горючим!
+ Der Benzinkanister wurde befüllt!
+ 你已加满汽油桶!
+
+
+ Refuelling %1
+ Doplňování paliva %1
+ Llenado el Bidón %1
+
+ Wird befüllt %1...
+ Ravitaillement en cours de %1
+ Rifornendo %1
+ Abastecendo %1
+ Tankuję %1
+ 补充油量 %1
+
+
+ You have refuelled that %1
+ Jsi natankoval, že produkt %1
+ Has llenado el %1
+
+ Du hast deinen %1 befüllt.
+ Vous avez ravitaillé %1
+ Hai rifornito di carburante un %1
+ Você abasteceu %1
+ Zatankowałeś %1
+ 你要补充油量 %1
+
+
+ This vehicle is already in your key-chain.
+ Toto vozidlo je již ve vaší klíčenky.
+ Esta vehiculo ya esta en tu llavero.
+
+ Du hast diesen Fahrzeugschlüssel bereits an deinem Schlüsselbund.
+ Ce véhicule est déjà dans votre porte-clé.
+ Possiedi già le chiavi di questo veicolo.
+ Você já tem a chave desse veículo.
+ Masz już klucze do tego pojazdu.
+ 你已经获得载具钥匙。
+
+
+ Lock-picking %1
+ Lockpicking %1
+ Abriendo Cerradura %1
+
+ Wird aufgebrochen %1...
+ Crochetage de %1
+ Scassinando %1
+ Arrombando %1
+ Włamujesz się do %1
+ 撬锁 %1
+
+
+ You got to far away from the target.
+ Dostal jsi příliš daleko od cíle.
+ Le alejastes mucho del objeto.
+
+ Du hast dich zu weit vom Ziel entfernt.
+ Vous êtes trop loin de la cible.
+ Sei andato troppo lontano dall'obiettivo
+ Voçê está muito longe do seu alvo.
+ Jesteś za daleko od celu.
+ 你必须远离目标。
+
+
+ You now have keys to this vehicle.
+ Nyní máte klíče k tomuto vozidlu.
+ Ahora tienes las llaves para este vehiculo.
+
+ Du hast nun einen Schlüssel zu diesem Fahrzeug.
+ Vous avez maintenant les clés de ce véhicule
+ Sei ora in possesso delle chiavi di questo veicolo.
+ Agora você tem as chaves do veiculo.
+ Masz teraz klucze do tego pojazdu
+ 你现在获得了载具钥匙。
+
+
+ The lockpick broke.
+ Paklíč zlomil.
+ La ganzua se rompió.
+
+ Der Dietrich ist abgebrochen.
+ L'outil de crochetage s'est cassé
+ Il grimaldello si è rotto.
+ A Chave Mestra quebrou.
+ Wytrych się złamał.
+ 撬锁工具坏了。
+
+
+ %1 was seen trying to lockpick a car.
+ %1 byl viděn snaží lockpick auto.
+ %1 ha sido visto tratando de abrir un carro.
+
+ %1 wurde beim Aufbrechen eines Auto erwischt.
+ %1 a été vu essayant de crocheter une voiture
+ %1 è stato visto provare a scassinare un veicolo.
+ %1 foi visto usando uma Chave Mestra em um carro.
+ %1 był widziany jak próbował włamać się do samochodu.
+ %1 试图撬开一辆载具的门锁。
+
+
+ You are not near a mine!
+ Nejste v blízkosti dolu!
+ No estas cerca de una mina!
+
+ Du bist nicht in der Nähe einer Mine!
+ Vous n'êtes pas près d'une mine!
+ Non ti trovi vicino ad una cava!
+ Você não está próximo de uma mina!
+ Nie jesteś blisko kopalni!
+ 你不在矿场附近!
+
+
+ You can't mine from inside a car!
+ Nemůžete dolovat z vnitřku vozu!
+ No puedes minar desde adentro de un vehiculo!
+
+ Du kannst nicht in deinem Auto abbauen!
+ Vous ne pouvez pas miner à l'intérieur d'une voiture!
+ Non puoi minare da dentro un veicolo!
+ Você não pode minerar dentro do carro!
+ Nie możesz wydobywać z samochodu!
+ 你不能从车里面采集!
+
+
+ You have mined %2 %1
+ Jste těžil% %2 1
+ Has minado %2 %1
+
+ Du hast %2 %1 abgebaut.
+ Vous avez miné %2 %1
+ Hai minato %2 %1
+ Você minerou %2 %1
+ Wydobyłeś %2 %1
+ 你开采 %2 %1
+
+
+ Place Spike Strip
+ Umístěte Spike Strip
+ Poner Barrera de Clavos
+
+ Nagelband platzieren
+ Placer la herse
+ Posa striscie chiodate
+ Tapete de Espinhos armado.
+ Rozłóż kolczatkę
+ 放置钉刺带
+
+
+ Pack up Spike Strip
+ Sbalit Spike Strip
+ Guardar Barrera de Clavos
+
+ Nagelband zusammenpacken
+ Ranger la herse
+ Recupera striscie chiodate
+ Pegar Tapete de Espinhos.
+ Zwiń kolczatkę
+ 收起钉刺带
+
+
+ You need to be inside your house to place this.
+ Musíte být uvnitř svého domu na místo toto.
+ Debes estar dentro de tu casa para poner eso.
+
+ Du musst in deinem Haus sein, um dies platzieren zu können.
+ Vous devez être à l'interieur de votre maison pour placer ceci
+ Devi essere all'interno della tua casa per posizionarlo.
+ Você precisa estar dentro da sua casa para colocar isso!
+ Musisz być wewnątrz własnego domu aby to umieścić.
+ 你需要在你的房子里放置这个。
+
+
+ You cannot place any more storage containers in your house.
+ Nelze umístit žádné další skladovací kontejnery ve vašem domě.
+ No puedes poner mas contenedores en tu casa.
+
+ Es können keine weiteren Container in dein Haus gestellt werden.
+ Vous ne pouvez pas placer d'autres conteneurs dans votre maison.
+ Non puoi installare altri contenitori in casa tua.
+ Você não pode colocar mais caixas dentro da sua casa.
+ Nie masz więcej miejsca na pojemniki w tym domu.
+ 你不能在你的房子里放更多的储藏存储箱。
+
+
+ No more free storage spaces in your house.
+ Žádné další volné skladové prostory v domě.
+ No hay más espacio de almacenamiento en tu casa.
+
+ Es gibt in deinem Haus keinen freien Lagerplatz mehr.
+ Il n'y a plus d'espace libre dans votre maison.
+ I contenitori in casa tua hanno finito lo spazio disponibile.
+ Não ha mais espaços para guardar itens em sua casa.
+ Brak wolnych miejsc na pojemniki w domu.
+ 你的房子没有空闲的储藏空间。
+
+
+ You need to select an item first!
+ Je třeba vybrat položku na prvním místě!
+ Debes seleccionar un objeto primero!
+
+ Du musst zuerst einen Gegenstand auswählen!
+ Vous devez sélectionner un objet !
+ Devi prima selezionare un oggetto!
+ Você precisa selecionar um item primeiro!
+ Zaznacz najpier rzecz.
+ 你需要选择一个物品!
+
+
+ You can now run farther for 3 minutes
+ Nyní můžete spustit další 3 minuty
+ Ahora puedes correr mas por 3 minutos
+
+ Vous pouvez courir pendant 3 minutes
+ Du kannst jetzt für 3 Minuten weiter laufen.
+ Puoi ora correre per 3 minuti consecutivi
+ Você agora pode correr por 3 minutos
+ Możesz przez 3 minuty biec bez wysiłku
+ 你现在可以跑3分钟
+
+
+ You already have a Spike Strip active in deployment
+ Ty už mají Spike Strip aktivní při nasazení
+ Ya tienes una Barrera de Clavos activada
+
+ Du platzierst bereits ein Nagelband!
+ Vous avez déjà une herse en train d'être deployée
+ Hai già una striscia chiodata piazzata
+ Você já tem um Tapete de Espinhos ativo
+ Aktualnie masz rozłożoną kolczatkę
+ 你已经部署了一个钉刺带。
+
+
+ You can't refuel the vehicle while in it!
+ Nemůžete natankovat z vozidla, když v něm!
+ No puedes llenar tu vehiculo mientras estas adentro de él!
+
+ Du kannst ein Fahrzeug nicht betanken während du dich darin befindest!
+ Vous ne pouvez pas faire le plein du véhicule tout en étant à l'intérieur !
+ Non puoi rifornire il veicolo di benzina mentre ci sei dentro!
+ Você não pode abastecer o veículo enquanto dentro dele!
+ Nie możesz zatankować pojazdu gdy w nim jesteś!
+ 你不能在车里加油!
+
+
+ This item isn't usable.
+ Tato položka není použitelný.
+ Este objeto no es utilizable.
+
+ Dieser Gegenstand ist nicht benutzbar.
+ Cet objet n'est pas utilisable.
+ Questo oggetto è inutilizzabile.
+ Esse item não é usável.
+ Nie można użyć tej rzeczy.
+ 这个物品不能使用。
+
+
+
+
+ Processing Oil
+ zpracování ropy
+ Procesando Petróleo
+
+ Öl wird verarbeitet...
+ Raffinage de Pétrole
+ Raffinando il Petrolio
+ Processando Petróleo
+ Rafinacja ropy
+ 加工石油
+
+
+ Cutting Diamonds
+ řezání diamantů
+ Cortando Diamantes
+
+ Diamanten werden geschliffen...
+ Taillage de diamant
+ Rifinendo diamanti
+ Lapidando Diamante
+ Szlif diamentów
+ 切割钻石
+
+
+ Processing Opium
+ zpracování Opium
+ Procesando Opio
+
+ Heroin wird verarbeitet...
+ Traitement d'Héroïne
+ Processando Eroina
+ Processando Heroína
+ Oczyszczanie heroiny
+ 加工海洛因
+
+
+ Casting Copper Ingots
+ Casting měděných ingotů
+ Fundiendo Lingotes de Cobre
+
+ Fonte du Cuivre
+ Kupfer wird verarbeitet...
+ Processando in lingotti di Rame
+ Processando Cobre
+ Wytop miedzi
+ 铸造铜锭
+
+
+ Casting Iron Ingots
+ Litiny ingoty
+ Fundiendo Lingotes de Hierro
+
+ Fonte du Fer
+ Eisen wird verarbeitet...
+ Processando Ferro
+ Processando Ferro
+ Wytop żelaza
+ 铸造铁锭
+
+
+ Processing Sand
+ zpracování Písek
+ Procesando Arena
+
+ Sand wird verarbeitet...
+ Fonte du Sable
+ Processando Sabbia
+ Processando Areia
+ Topienie piasku
+ 制作玻璃
+
+
+ Processing Salt
+ zpracování Salt
+ Procesando Sal
+
+ Salz wird verarbeitet...
+ Traitement du Sel
+ Processando Sale
+ Refinando Sal
+ Warzenie soli
+ 制造食盐
+
+
+ Processing Coca Leaves
+ Zpracování listů koky
+ Procesando Hojas de Coca
+
+ Kokain wird verarbeitet...
+ Traitement de Cocaïne
+ Processando Cocaina
+ Processando Cocaína
+ Oczyszczanie kokainy
+ 加工可卡因
+
+
+ Processing Marijuana
+ zpracování Marihuana
+ Procesando Marihuana
+
+ Marihuana wird verarbeitet...
+ Traitement de Marijuana
+ Processando Marijuana
+ Processando Maconha
+ Suszenie marihuany
+ 加工大麻
+
+
+ Mixing Cement
+ Míchání Cement
+ Mezclando Cemento
+
+ Zement wird gemischt...
+ Mélange de ciment
+ Processando Cemento
+ Misturando Cimento
+ Mielenie cementu
+ 制造水泥
+
+
+ You need to stay within 10m to process.
+ Musíte zůstat v rozmezí 10 m zpracovat.
+ Debes estar a menos de 10m para procesar.
+
+ Du musst innerhalb von 10m bleiben, um verarbeiten zu können.
+ Vous devez rester à 10m pour traiter vos objets.
+ Devi stare entro 10m per processare.
+ Você precisa ficar a menos de 10m para processar.
+ Musisz być w odległości 10 m aby przetwarzanie się odbyło.
+ 您需要保持10米以内的距离。
+
+
+ You have no inventory space to process your materials.
+ Nemáš zásob prostor ke zpracování vašich materiálů.
+ Vous n'avez pas de place pour traiter vos matériaux.
+ Usted no tiene espacio en el inventario para procesar sus materiales.
+ Non hai spazio nell'inventario per elaborare i materiali.
+ Nie masz miejsca na przetwarzanie swoich zapasów materiałów.
+ Você não tem espaço no inventário para processar seus materiais.
+ У вас нет места инвентаря для обработки ваших материалов.
+ Du hast keinen Platz im Inventar, um die Materialien zu verarbeiten.
+ 你没有库存空间来处理你的物品。
+
+
+ Only part of your materials could be processed due to reaching your maximum weight.
+ Pouze část svých materiálů by mohla být zpracována z důvodu dosažení maximální váhu.
+ Seule une partie de votre matériel pourrait être traité en raison de l'atteinte de votre poids maximum.
+ Sólo una parte de los materiales se han podido procesar debido a alcanzar tu peso máximo.
+ Solo una parte del tuo materiali possono essere trattati a causa di raggiungere il vostro peso massimo.
+ Tylko część swoich materiałów może być przetwarzane ze względu na osiągnięcie maksymalnej wadze.
+ Apenas uma parte de seus materiais puderam ser processados, devido o peso máximo ter sido atingido.
+ Только часть ваших материалов может быть обработан из-за достижения вашего максимального веса.
+ Nur ein Teil der Materialien konnte verarbeitet werden, sonst würde das maximale Gewicht erreicht werden.
+ 只有部分材料可以加工,已达到你的最大重量。
+
+
+ You need $%1 to process without a license!
+ Musíte $%1 bez povolení ke zpracování!
+ Necesitas $%1 para procesar sin licencia!
+
+ Du brauchst $%1, um ohne eine Lizenz verarbeiten zu können!
+ Vous avez besoin de $%1 pour traiter sans licence !
+ Hai bisogno di $%1 per processare senza la dovuta licenza!
+ Você precisa de R$%1 para processar sem licença!
+ Musisz mieć $%1 aby przetworzyć bez odpowiedniej licencji
+ 你没有加工许可所以需要 $%1 加工!
+
+
+ You have processed %1 into %2
+ Máte zpracovaný %1 do %2
+ Has procesado %1 a %2
+
+ Du hast %1 in %2 verarbeitet.
+ Vous avez traité %1 en %2
+ Hai processato %1 in %2
+ Você trasformou %1 em %2
+ Przetworzyłeś %1 na %2
+ 你将 %1 加工为 %2
+
+
+ You have processed %1 into %2 for $%3
+ Máte zpracovaný %1 do %2 na $%3
+ Has procesado %1 a %2 por $%3
+
+ Du hast %1 für $%3 in %2 verarbeitet.
+ Vous avez traité %1 en %2 pour $%3
+ Hai processato %1 in %2 al costo di $%3
+ Você trasformou %1 em %2 por R$%3
+ Przetworzyłeś %1 na % za $%3
+ 你将 %1 加工为 %2 花费 $%3
+
+
+
+
+ Medics Online: %1
+ Zdravotníci Online: %1
+ Médicos en línea: %1
+
+ Sanitäter online: %1
+ Médecin en ligne : %1
+ Medici Online: %1
+ Médicos Online: %1
+ Medycy Online: %1
+ 在线的医疗人员:%1
+
+
+ Medics Nearby: %1
+ Zdravotníci v blízkosti:%1
+ Médicos Cerca: %1
+
+ Sanitäter in der Nähe: %1
+ Médecin à proximité : %1
+ Medici Vicini: %1
+ Médicos por perto: %1
+ Medycy w pobliżu: %1
+ 附近的医疗人员:%1
+
+
+ %1 is requesting EMS Revive.
+ %1 požaduje EMS oživit.
+ %1 esta pidiendo servicio médico.
+
+ %1 benötigt medizinische Hilfe.
+ %1 demande de l'aide du SAMU.
+ %1 sta richiedendo l'intervento medico.
+ %1 requisitou o resgate do SAMU
+ %1 prosi o pomoc medyczną.
+ %1 要求医疗救治。
+
+
+ Respawn Available in: %1
+ Respawn K dispozici v:%1
+ Puedes reaparecer en: %1
+
+ Réapparition disponible dans: %1
+ Aufwachen verfügbar in: %1
+ Respawn disponibile in: %1
+ Respawn Disponível em: %1
+ Odrodzenie możliwe za: %1
+ 重生在: %1
+
+
+ You can now respawn
+ Nyní lze respawn
+ Ya puedes reaparecer
+
+ Du kannst jetzt aufwachen!
+ Vous pouvez désormais réapparaître
+ Puoi ora fare respawn
+ Você pode dar respawn
+ Możesz się odrodzić
+ 现在你可以重生
+
+
+ %1 has revived you and a fee of $%2 was taken from your bank account for their services.
+ %1 oživil vy a poplatek ve výši $%2 byl převzat z bankovního účtu za své služby.
+ %1 te a revivido y una cuota de $%2 a sido tomada de tu cuenta por sus servicios.
+
+ %1 hat dich wiederbelebt und dafür eine Gebühr von $%2 von deinem Bankkonto eingezogen.
+ %1 vous a réanimé, des frais de $%2 ont été transférés depuis votre compte en banque sur celui du médecin.
+ %1 ti ha rianimato e sono stati prelevati $%2 dal tuo conto in banca per pagare la prestazione.
+ %1 reviveu você e uma taxa de R$%2 foi cobrada da sua conta bancária para os serviços prestados.
+ %1 pobrał opłatę w wysokości $%2 za reanimację i przywrócenie funkcji życiowych.
+ %1 已经将你救治,从你的银行账户收取 $%2 的服务费。
+
+
+ Someone else is already reviving this person
+ Někdo jiný již užívají tuto osobu
+ Alguien ya esta reviviendo a esta persona
+
+ Jemand anderes belebt diese Person bereits wieder.
+ Quelqu'un d'autre s'occupe déjà de cette personne
+ Qualcun'altro sta già provando a rianimare questa persona
+ Outro médico já está revivendo esse jogador
+ Ktoś inny aktualnie reanimuje tę osobę
+ 其他人已经在救治这个人了
+
+
+ Reviving %1
+ Oživení %1
+ Reviviendo %1
+
+ Wird wiederbelebt %1...
+ Réanimation de %1
+ Rianimando %1
+ Revivendo %1
+ Reanimacja %1
+ 救治 %1
+
+
+ This person either respawned or was already revived.
+ Tato osoba buď respawned nebo již byl přijat.
+ Esta persona ya reapareció o fue revivida.
+
+ Cette personne a peut-être fait réapparition ou a déjà été réanimée.
+ Diese Person ist entweder aufgewacht oder wurde bereits wiederbelebt.
+ Questa persona è stata già rianimata o ha fatto respawn.
+ Esse jogador já deu respawn ou já foi reanimado.
+ Ta osoba wcześniej się odrodziła lub została reanimowana.
+ 这个人重生或已经复活了。
+
+
+ You have revived %1 and received $%2 for your services.
+ Obdrželi jste %1 a získal $%2 za vaše služby.
+ Has revivido a %1 y recivido $%2 por tus servicios.
+
+ Du hast %1 wiederbelebt und $%2 für deine Dienste erhalten.
+ Vous avez réanimé %1, vous avez reçu $%2 pour votre aide
+ Hai rianimato %1 e hai ricevuto $%2 per la tua prestazione.
+ Você reviveu %1 e recebeu R$%2 pelo seus serviços prestados.
+ Reanimowałeś %1 i za uratowanie życia otrzymałeś $%2.
+ 你已经救治了 %1 并得到 $%2 的服务费用。
+
+
+ You got to far away from the body.
+ Dostal jsi příliš daleko od těla.
+ Te alejastes mucho del cuerpo.
+
+ Du bist zu weit vom Körper entfernt.
+ Vous êtes trop loin du corps.
+ Sei andato troppo distante dal corpo.
+ Você está muito distante do corpo.
+ Jesteś za daleko od ciała.
+ 你离尸体太远。
+
+
+
+
+ The robbery has failed due to unknown reasons
+ Lupič selhalo kvůli neznámých důvodů
+ El robo fallo por razones desconocidas
+
+ Der Raub ist aus unbekannten Gründen fehlgeschlagen.
+ Le vol de la réserve fédérale a échoué pour des raisons inconnues
+ La rapina è fallita per cause sconosciute
+ O roubo falhou por uma causa desconhecida.
+ Napad się nie udał z niewiadomych powodów.
+ 由于不明原因,抢劫失败了。
+
+
+ $%1 was stolen from the robbery on the federal reserve
+ $%1 byl ukraden z loupeže na federální rezervy
+ $%1 fue robado de la reserva federal
+
+ $%1 wurden von den Räubern aus der Zentralbank gestohlen.
+ $%1 a été volé à la réserve fédérale.
+ $%1 sono stati rubati durante la rapina alla banca
+ R$%1 foi roubado da Reserva Federal.
+ $%1 ukradziono z Rezerwy Federalnej
+ $%1 从联邦储备银行中被抢劫
+
+
+ This vault is already being robbed by someone else
+ Tato klenba je již okraden někým jiným
+ La bóveda ya esta siendo robada por alguien mas
+
+ Ce coffre est déjà en train d'être pillé par quelqu'un d'autre.
+ Der Tresor wird bereits von jemand anderem ausgeraubt.
+ Questo Caveau sta venendo rapinando da qualcun'altro
+ Esse cofre já está sendo roubado por outro jogador.
+ Skarbiec jest aktualnie rabowany przez inną osobę.
+ 这个金库已经被别人抢劫了
+
+
+ This vault was already robbed recently
+ Tato klenba byla již nedávno okraden
+ La bóveda fue robada muy recientemente
+
+ Der Tresor wurde bereits vor Kurzem ausgeraubt.
+ Ce coffre a déjà été pillé récemment
+ Questo Caveau è stato svaligiato di recente
+ Esse cofre já foi assaltado recentemente.
+ Skarbiec został niedawno zrabowany
+ 这个金库最近被抢了
+
+
+
+
+ Garage
+ Garáž
+ Garaje
+
+ Garage
+ Garage
+ Garage
+ Garagem
+ Garaż
+ 载具仓库
+
+
+ Your Vehicles
+ Vaše Vozidla
+ Tus vehículos
+
+ Deine Fahrzeuge
+ Vos véhicules
+ I tuoi Veicoli
+ Seus Veículos
+ Twój pojazd
+ 你的载具
+
+
+ Vehicle Information
+ Informace o vozidle
+ Información de Vehículos
+
+ Fahrzeuginformationen
+ Carte grise du vehicule
+ Informazioni Veicolo
+ Informações do Veículo
+ Informacja o pojeździe
+ 载具信息
+
+
+ Automatically reveals nearest objects within 15m, turn this setting off if you are experiencing performance issues.
+ Automaticky odhaluje nejbližší objektů v rámci 15m, toto nastavení vypnete, pokud jste se setkali s problémy s výkonem.
+ Automáticamente revela los objetos más cercanos dentro de 15m, apaga esta opción si estas teniendo problemas de performación.
+
+ Zeigt automatisch nächstgelegene Objekte innerhalb von 15m an, deaktiviere es, wenn du Leistungprobleme hast.
+ Révèle automatiquement les objets les plus proches au sein de 15m, désactiver ce paramètre si vous rencontrez des problèmes de performance.
+ Rivela automaticamente gli oggettivi vicini entro 15m, disattiva quest'impostazione se riscontri dei problemi di perfomance di sistema.
+ Revela objetos à 15m, desabilite essa opção se está tendo problemas de performance.
+ Automatycznie wykrywa najbliższe obiekty w promieniu 15m, wyłącz tę opcję jeśli masz problemy z wydajnością
+ 自动显示1500米以内的最近对象,如果你遇到性能问题,请将此设置关闭。
+
+
+ Switch side-channel mode, turn this off if you don't want to talk with players from your side.
+ Přepnout do režimu side-channel, tuto funkci vypnout, pokud nechcete mluvit s hráči z vaší strany.
+ Activer le canal camp, désactiver cette fonction si vous ne voulez pas parler avec des joueurs de la même faction que vous.
+ Habilita/Deshabilita el SideChannel, apaga esto si no quieres hablar con jugador de tu lado.
+ Interruttore modalità side-channel, disattivare questa funzione se non si vuole parlare con i giocatori da parte vostra.
+ Przełącznik trybu side-channel, to wyłączyć, jeśli nie chce rozmawiać z graczami z boku.
+
+ Habilita/Desabilita o side-channel, desabilite caso você não queira conversar com os jogadores da sua facção.
+ Sidechat umschalten. Ausschalten, wenn du nicht mit Spielern deiner Fraktion sprechen möchtest.
+ 切换侧通道模式,如果你不想和你身边的玩家交谈,关掉这个频道。
+
+
+ Switch player's broadcast mode, turn this off if you don't want to see any broadcast from other players.
+
+ Activer/Désactiver les annonces. Désactivez ceci si vous ne voulez voir aucune annonce d'autres joueurs.
+ Habilitar/Deshabilitar transmisiones, deshabilita esto si no quieres ver transmisiones de otros jugadores.
+
+
+
+ Habilita/Desabilita as transmissões dos jogadores, desabilite caso você não queira ver as transmissões dos outros jogadores.
+ Broadcast umschalten. Ausschalten, wenn du keine Broadcasts von anderen Spielern erhalten möchtest.
+ 切换玩家的广播模式,如果你不想看到其他玩家的广播,就关掉它。
+
+
+ Controls whether or not players will have name tags above their head.
+ Přepnout do režimu side-channel, tuto funkci vypnout, pokud nechcete mluvit s hráči z vaší strany.
+ Controla si los jugadores tienen nombres (tags) sobre sus cabezas.
+
+ Contrôler si les joueurs auront ou non leurs noms au dessus de leur tête
+ Namensschilder umschalten. Ausschalten, wenn du keine Namensschilder über den Spielerköpfen sehen möchtest.
+ Controlla la visualizzazione delle tags sopra la testa dei giocatori
+ Controla se os jogadores terão os nomes em suas cabeças.
+ Kontroluje czy gracze będą mieli nad głowami swoje Tagi z nazwą
+ 控制球员是否有名字标签在他们的头上方。
+
+
+ Shop Stock
+ Obchod Sklad
+ Inventario de la Tienda
+
+ Lagerbestand
+ Boutique
+ Stock Negozio
+ Estoque
+ Sklep oferta
+ 商店库存
+
+
+
+
+ Player Interaction Menu
+ Hráč Interakce Menu
+ Menu de Interacción de Jugadores
+
+ Spielerinteraktionsmenü
+ Menu d'interaction du Joueur
+ Menu d'interazione Giocatore
+ Menu de Interação do Jogador
+ Menu Interakcji
+ 玩家互动菜单
+
+
+ Put in vehicle
+ Vložíme do vozidla
+ Poner en vehículo
+
+ Ins Fahrzeug setzen
+ Embarquer
+ Metti nel Veicolo
+ Colocar no Veículo
+ Włóż do pojazdu
+ 押上载具
+
+
+ Un-Restrain
+ živelný
+ Quitar Esposas
+
+ Freilassen
+ Démenotter
+ Togli Manette
+ Soltar
+ Rozkuj
+ 解开手铐
+
+
+ Check Licenses
+ Zkontrolujte licence
+ Revisar Licencias
+
+ Lizenzen überprüfen
+ Vérifier Licences
+ Controlla Licenze
+ Verificar Licenças
+ Sprawdź licencje
+ 检查许可证
+
+
+ Search Player
+ Hledat hráče
+ Buscar Jugadores
+
+ Spieler durchsuchen
+ Fouiller Joueur
+ Ricerca Giocatore
+ Revistar Jogador
+ Przeszukaj
+ 搜身
+
+
+ Stop Escorting
+ Zastavit doprovázet
+ Parar de Escoltar
+
+ Eskortieren stoppen
+ Arrêter Escorte
+ Ferma Scorta
+ Parar de Escoltar
+ Przestań eskortować
+ 停止押送
+
+
+ Escort Player
+ Escort Player
+ Escoltar Jugador
+
+ Spieler eskortieren
+ Escorter Joueur
+ Scorta Giocatore
+ Escoltar Jogador
+ Eskortuj
+ 押送
+
+
+ Ticket Player
+ Ticket Player
+ Dar Tiquete
+
+ Strafzettel ausstellen
+ Amende Joueur
+ Multa Giocatore
+ Multar Jogador
+ Wystaw mandat
+ 开据罚单
+
+
+ Seize Weapons
+ zabavili zbraně
+ Confiscar Armas
+
+ Waffen beschlagnahmen
+ Saisir les armes
+ cogliere Armi
+ Apreender Armas
+ Chwytaj broń
+ 没收武器
+
+
+ Send to jail
+ Poslat do vězení
+ Encarcelar
+
+ Ins Gefängnis stecken
+ Envoyer en prison
+ Arresta
+ Enviar p/ Prisão
+ Do więzienia
+ 送进监狱
+
+
+ Repair Door
+ oprava dveří
+ Reparar Puerta
+
+ Tür reparieren
+ Réparer la porte
+ Ripara porta
+ Consertar Porta
+ Napraw drzwi
+ 检修门
+
+
+ Open / Close
+ Otevřít zavřít
+ Abrir / Cerrar
+
+ Öffnen / Schließen
+ Ouvrir / Fermer
+ Apri / Chiudi
+ Abrir / Fechar
+ Otwórz / Zamknij
+ 打开/关闭
+
+
+ Break down door
+ Rozebrat dveře
+ Romper Puerta
+
+ Tür aufbrechen
+ Forcer la porte
+ Sfonda Porta
+ Quebrar Porta
+ Wyważ drzwi
+ 打破门
+
+
+ Garage
+
+
+
+ Garage
+ Garage
+
+
+
+ 车库
+
+
+ You can buy a garage at this house for $%1. You must first purchase the house!
+
+
+
+ Du könntest eine Garage an diesem Haus für $%1 kaufen. Du müsstest aber zuerst das Haus kaufen!
+ Vous pouvez acheter un garage dans cette maison pour $%1. Vous devez d'abord acheter la maison !
+
+
+
+ 你可以在这所房子里买一个 $%1 的仓库。你必须先买房子!
+
+
+ Search house
+ Vyhledávání dům
+ Buscar casa
+
+ Haus durchsuchen
+ Fouiller la maison
+ Cerca Casa
+ Vasculhar a Casa
+ Przeszukaj dom
+ 搜索房子
+
+
+ Lock up house
+ Zamknout dům
+ Cerrar la casa con llave
+
+ Haus abschliessen
+ Fermer la maison
+ Chiudi Casa
+ Trancar a Casa
+ Zamknij dom
+ 锁上房子
+
+
+ Buy House
+ Koupit dům
+ Comprar casa
+
+ Haus kaufen
+ Acheter la maison
+ Compra Casa
+ Comprar a Casa
+ Kup dom
+ 买房子
+
+
+ Buy House Garage
+
+
+
+ Garage kaufen
+ Acheter le Garage de cette Maison
+
+
+
+ 买房子的仓库
+
+
+ Sell Garage
+ Navrhujeme Garáž
+ Vender Garaje
+
+ Garage verkaufen
+ Vendre le garage
+ Vendi Garage
+ Vender Garagem
+ Sprzedaj garaż
+ 出售仓库
+
+
+ Remove Container
+ Nádobu
+ Remover Contenedor
+ rimuovere Container
+ Wyjąć pojemnik
+
+ Supprimer le conteneur
+ Remover Caixa
+ Container entfernen
+ 删除存储箱
+
+
+ Garage
+ Garáž
+ Garaje
+
+ Garage
+ Garage
+ Garage
+ Garagem
+ Garaż
+ 仓库
+
+
+ Store Vehicle
+ Store Vehicle
+ Guardar Vehiculo
+
+ Fahrzeug parken
+ Ranger le véhicule
+ Parcheggia Veicolo
+ Guardar Veículo
+ Zaparkuj pojazd
+ 载具商店
+
+
+ Sell House
+ prodat dům
+ Vender Casa
+
+ Haus verkaufen
+ Vendre la maison
+ Vendi Casa
+ Vender Casa
+ Sprzedaj dom
+ 卖房子
+
+
+ Unlock Storage
+ odemknout úložiště
+ Abrir Almacenamiento
+
+ Lagerplatz aufschliessen
+ Déverrouiller l'inventaire
+ Sblocca contenitori
+ Destrancar Caixa
+ Odblokuj pojemnik
+ 解锁存储
+
+
+ Lock Storage
+ zámek Storage
+ Cerrar Almacenamiento con Llave
+
+ Lagerplatz abschliessen
+ Verrouiller l'inventaire
+ Blocca contenitori
+ Trancar Caixa
+ Zablokuj pojemnik
+ 锁定存储
+
+
+ Turn Lights Off
+ Blinkrů Off
+ Apagar Luces
+
+ Licht ausschalten
+ Lumières éteintes
+ Spegni luci
+ Ligar as Luzes
+ Włącz światło
+ 把灯关掉
+
+
+ Turn Lights On
+ Turn zapnutá světla
+ Prender Luces
+
+ Licht anschalten
+ Lumières allumées
+ Accendi luci
+ Apagar as Luzes
+ Wyłącz światło
+ 把灯打开
+
+
+
+
+ Vehicle Interaction Menu
+ Interakce vozidel Menu
+ Menu de interacción de Vehículo
+
+ Fahrzeuginteraktionsmenü
+ Menu Interaction du Véhicule
+ Menu d'interazione Veicolo
+ Menu do Veículo
+ Menu Interakcji pojazdu
+ 载具交互菜单
+
+
+ Unflip Vehicle
+ Unflip Vehicle
+ Dar la Vuelta al Vehículo
+
+ Fahrzeug umdrehen
+ Retourner Véhicule
+ Raddrizza veicolo
+ Desvirar Veículo
+ Ustaw pojazd
+ 翻转载具
+
+
+ Get In Vehicle
+
+
+
+ Monter dans le véhicule
+ Gehe ins Fahrzeug
+
+
+
+ 进入载具
+
+
+ Push Boat
+ tlačit loď
+ Empujar Bote
+
+ Boot schieben
+ Pousser bateau
+ Spingi Barca
+ Empurrar Barco
+ Popchnij
+ 推船
+
+
+ Repair Vehicle
+ opravy vozidel
+ Reparar Vehículo
+
+ Fahrzeug reparieren
+ Réparer Véhicule
+ Ripara Veicolo
+ Consertar Veículo
+ Napraw
+ 修理载具
+
+
+ Registration
+ Registrace
+ Registración
+
+ Eigentümer
+ Enregistrement
+ Registrazione
+ Registro
+ Zarejestruj
+ 登记信息
+
+
+ Search Vehicle
+ Vyhledávání Vehicle
+ Buscar Vehículo
+
+ Fahrzeug durchsuchen
+ Fouiller Véhicule
+ Cerca Veicolo
+ Vasculhar Veículo
+ Przeszukaj pojazd
+ 搜查载具
+
+
+ Search Container
+ Vyhledávání Container
+ Buscar Contenedor
+ Ricerca Container
+ Szukaj Kontener
+
+ Fouiller le conteneur
+ Vasculhar Container
+ Container durchsuchen
+ 搜索容器
+
+
+ Pullout Players
+ Pull Out Hráči
+ Sacar Jugadores
+
+ Aus Fahrzeug ziehen
+ Sortir les passagers
+ Estrai Giocatore
+ Retirar Jogadores
+ Wyciągnij graczy
+ 从载具拉出玩家
+
+
+ Impound Vehicle
+ úschovy Vehicle
+ Confiscar Vehículo
+
+ Fahrzeug beschlagnahmen
+ Mise en fourrière
+ Sequestra Veicolo
+ Apreender Veículo
+ Usunń pojazd
+ 扣押载具
+
+
+ Mine from device
+ Mine ze zařízení
+ Minar desde dispositivo
+
+ Vom Fahrzeug abbauen
+ Dispositif de minage
+ Piazza mine dal veicolo
+ Minerar
+ Uruchom wydobycie
+ 矿山设备
+
+
+ Store your vehicle
+ Ukládat vaše vozidlo
+ Guardar tu Vehículo
+ Conservare il veicolo
+ Przechowuj swój pojazd
+
+ Ranger votre véhicule
+ Guardar seu veículo
+ Fahrzeug einparken
+ 存储你的载具
+
+
+ Store
+ Obchod
+ Guardar
+ Negozio
+ Sklep
+
+ Ranger
+ Guardar
+ Fahrzeughändler
+ 商场
+
+
+ Clean
+ Čistý
+ Limpiar
+ Pulito
+ Czysty
+
+ Nettoyer
+ Limpar
+ Reinigen
+ 清洁
+
+
+ This vehicle is NPC protected.
+ Toto vozidlo je chráněno NPC.
+ Ce véhicule est protégé par un PNJ.
+ Este vehículo esta protegido.
+ Questo veicolo è protetto NPC.
+ Pojazd ten jest chroniony NPC.
+
+ Esse veículo está protegido.
+ Dieses Fahrzeug ist NPC-geschützt.
+ 这载具是NPC保护的。
+
+
+
+
+ Sending request to server for player information UID [%1]
+ Odesílání požadavku na server pro informační hráč UID [%1]
+ Pidiendo informacion del UID de [%1] del server
+
+ Frage Spieler Informationen zu UID [%1] ab...
+ Envoi de la requête au serveur pour obtenir des informations lecteur UID [%1]
+ Invio richiesta al server per le informazioni del giocatore UID [%1]
+ Obtendo informações do UID [%1] no servidor
+ Wysyłam żądanie do serwera po informację o fraczu UID [%1]
+ 发送请求到服务器玩家信息UID [%1]
+
+
+ The server didn't find any player information matching your UID, attempting to add player to system.
+ Server nenašel žádné informace hráče nalezen.Chcete UID, pokusu o přidání hráče do systému.
+ No se encontro ninguna información con tu UID, se esta creando un nuevo jugador.
+
+ Der Server hat keine Spieler Informationen zu deiner UID gefunden, versuche Spieler ins System hinzuzufügen...
+ Le serveur n'a pas trouvé toutes les informations de lecteur correspondant à votre UID, tentative d'ajout du joueur dans le système.
+ Il server non ha trovato alcuna informazione sul giocatore con il tuo UID, tentativo di aggiunta del giocatore al sistema.
+ O servidor não encontrou nenhuma informação correspondente ao seu UID, tentando adicionar jogador ao sistema.
+ Serwer nie odnalazł informacji zgodnych z UID, dodaję gracza do bazy danych.
+ 服务器没有找到任何玩家信息匹配你的UID,试图添加播放器系统。
+
+
+ There was an error in trying to setup your client.
+ Došlo k chybě při pokusu o nastavení vašeho klienta.
+ Hubo un error en tratando de preparar tu cliente.
+
+ Es gab einen Fehler beim Versuch, deinen Clienten einzurichten!
+ Il y avait une erreur en essayant de configurer votre client.
+ C'è stato qualche errore nel cercare di inizializzare il tuo client
+ Ocorreu um erro ao tentar configurar o seu cliente.
+ Wystąpił błąd w trakcie ustawiania klienta
+ 试图设置客户机时出错。
+
+
+ Received request from server... Validating...
+ Obdržení požadavku ze serveru ... Ověřování ...
+ Pedido del server recibido... Validando...
+
+ >Empfange Daten vom Server... Überprüfe...
+ Demande reçue du serveur... Validation...
+ Ricevuta richiesta dal server... Convalida...
+ Pedido recebido do servidor... Validando...
+ Otrzymano żądanie serwera ... sprawdzam
+ 接收来自服务器的请求...验证...
+
+
+ You have already used the sync option, you can only use this feature once every 5 minutes.
+ Již jste použili možnosti synchronizace, můžete použít pouze tuto funkci jednou za 5 minut.
+ Ya has usado la función de sincronización, solo la puedes usar una vez cada 5 minutos.
+
+ Du hast bereits deine Daten gespeichert, diese Funktion kann nur einmal alle 5 Minuten verwendet werden.
+ Vous avez déjà utilisé l'option de synchronisation, vous ne pouvez utiliser cette fonction une fois toutes les 5 minutes.
+ Hai già utilizzato la funzione di salva dati, puoi usare quest'opzione solo una volta ogni 5 minuti.
+ Você já usou a opção de sincronização, você só pode usar esse recurso uma vez a cada 5 minutos.
+ Użyłeś niedawno opcji synchronizacji, możesz jej używać maksymalnie co 5 minut.
+ 你已经使用了同步数据,你只能每隔5分钟使用一次这个功能。
+
+
+ Syncing player information to the server.\n\nPlease wait up to 20 seconds before leaving.
+ Synchronizace informace o hráčích na serveru. \ O \ Prosím, vyčkejte až 20 sekund před odjezdem.
+ Se esta sinconizando tu información con el server.\n\nPor favor espera 20 segundos antes de salir del server.
+
+ Speichere deine Spieler-Informationen auf dem Server. \n\nBitte warte bis zu 20 Sekunden vor dem Verlassen.
+ Synchronisation des informations de joueur sur le serveur.\n\nS'il vous plaît, veuillez attendre 20 secondes avant de vous déconnecter.
+ Salvando le informazioni giocatore sul server.\n\nAttendere fino a 20 secondi prima di abbandonare.
+ Sincronizando informação do jogador com o servidor.\n\n Por favor aguarde 20 segundos antes de sair.
+ Synchronizuję informację z serwere, .\n\nProszę poczekać ok 20 sekund przed opuszczeniem serwera
+ 同步玩家数据到服务器。\n\n请等待20秒后再下线。
+
+
+
+
+ Because you robbed the bank you can't use the ATM for %1 minutes.
+ Protože jste vyloupil banku nelze použít bankomat pro%1 minut.
+ Porque robastes el banco no puedes usar el ATM por %1 minutos.
+
+ Da du die Zentralbank ausgeraubt hast, kannst du für %1 Minuten keinen Bankomaten benutzen.
+ Vous avez pillé la banque, vous ne pouvez pas utiliser de DAB pendant %1 minutes.
+ Avendo appena rapinato la banca non puoi utilizzare il Bancomat per %1 minuti.
+ Você não pode usar o ATM por %1 minuto(s), pois você assaltou o banco.
+ Z uwagi na to że okradłeś bank nie możesz korzystać z bankomatu przez najbliższe %1 minut.
+ 因为你抢了银行,你不能在 %1 分钟内使用自动取款机。
+
+
+ You didn't choose the clothes you wanted to buy.
+ Vy nevybral oblečení, které chtěl koupit.
+ No elegistes lo que quieres comprar.
+
+ Du hast die Kleidung, die du kaufen wolltest, nicht ausgewählt.
+ Vous n'avez pas choisi les vêtements que vous vouliez acheter.
+ Non hai selezionato i vestiti che vuoi comprare.
+ Você não selecionou a roupa que deseja comprar.
+ Nie wybrałeś ubrań które chcesz kupić.
+ 你没有选择你想买的衣服。
+
+
+ Sorry sir, you don't have enough money to buy those clothes.
+ Je nám líto, pane, nemáte dost peněz na nákup ty šaty.
+ No tienes suficiente dinero.
+
+ Entschuldigung, du hast nicht genug Geld, um diese Kleidung zu kaufen.
+ Désolé monsieur, vous n'avez pas assez d'argent pour acheter ces vêtements.
+ Spiacente ma non hai fondi a sufficienza per comprare questi vestiti.
+ Desculpe senhor, você não tem dinheiro para pagar. Volte sempre.
+ Przepraszam, ale nie masz tyle pieniędzy aby kupić to ubranie.
+ 对不起,你没有足够的钱去买那些衣服。
+
+
+ Total:
+ Celkový:
+ Total:
+
+ Gesamt:
+ Total :
+ Totale:
+ Total:
+ Razem:
+ 总额:
+
+
+ No Selection
+ žádný výběr
+ No Seleccionastes
+
+ Keine Auswahl!
+ Aucune Sélection
+ Nessuna Selezione
+ Nada Selecionado
+ Nie wybrano
+ 没有选择
+
+
+ No Display
+ Ne Displej
+ No Display
+
+ Keine Anzeige!
+ Pas d'affichage
+ No Display
+ Sem exibir
+ Brak widoku
+ 没有显示
+
+
+ There are no vehicles near to sell.
+ Nejsou žádné vozy blízko k prodeji.
+ No hay Vehículos cercanos para vender.
+
+ Es ist keine Fahrzeug zum Verkaufen in der Nähe.
+ Il n'y a pas de véhicules à proximité à vendre
+ Nelle vicinanze non ci sono veicoli da vendere.
+ Não existem veículos para serem vendidos.
+ W pobliżu nie ma pojazdu do sprzedania.
+ 附近没有载具出售。
+
+
+ There was a problem opening the chop shop menu.
+ Tam bylo otevření nabídky kotleta obchod problém.
+ Hubo un problema abriendo el menu de la tienda.
+
+ Es gab ein Problem beim Öffnen des Schrotthändler Menüs.
+ Il y a eu un problème en ouvrant le menu de revente de véhicule.
+ C'è stato un problema aprendo il menu del ricettatore
+ Ocorreu um problema abrindo o menu, tente novamente.
+ Powstał problem przy otwieraniu menu dziupli
+ 打开黑车店菜单有问题。
+
+
+ Selling vehicle please wait...
+ Prodejní vozidlo čekejte prosím ...
+ Vendiendo vehículo, por favor espera...
+
+ Verschrotte Fahrzeug, bitte warten...
+ Vente du véhicule, veuillez patienter...
+ Vendendo il veicolo, attendere prego...
+ Vendendo o veiculo, aguarde....
+ Sprzedaję pojazd proszę czekać ...
+ 出售载具请稍候...
+
+
+ You need to be a civilian to use this store!
+ Musíte být civilní použít tento obchod!
+ Necesitas ser un civil para usar esta tienda!
+
+ Du musst ein Zivilist sein, um dieses Geschäft nutzen zu können!
+ Vous devez être un civil pour utiliser ce magasin !
+ Devi essere un civile per utilizzare questo negozio!
+ Você tem que ser um cívil para user essa loja!
+ Musisz być cywilem aby móc kupować w tym sklepie!
+ 你需要成为平民才能使用这家商店!
+
+
+ You need to be a cop to use this store!
+ Musíte být policista použít tento obchod!
+ Necesitas ser policía para usar esta tienda!
+
+ Du musst ein Polizist sein, um dieses Geschäft nutzen zu können!
+ Vous devez être policier pour utiliser ce magasin !
+ Devi essere un poliziotto per utilizzare questo negozio!
+ Você tem que ser um policial para usar essa loja!
+ Musisz być policjantem aby kupować w tym sklepie!
+ 你需要当警察来使用这家商店!
+
+
+ You don't have rebel training yet!
+ Nemáte rebelů výcvik ještě!
+ No tienes Entrenamiento Rebelde!
+
+ Du hast keine Rebellenausbildung absolviert!
+ Vous n'avez pas encore d'entraînement rebelle !
+ Devi essere ribelle per poter utilizzare questo negozio!
+ Você não tem Treinamento Rebelde!
+ Nie posiadasz treningu rebelianta!
+ 你还没有进行叛军训练!
+
+
+ You need a Diving license to use this shop!
+ Potřebujete licenci potápění použít tento obchod!
+ Necesitas una licencia de buceo para usar esta tienda!
+
+ Du benötigst einen Taucherschein, um dieses Tauchergeschäft nutzen zu können!
+ Vous devez avoir votre diplôme de plongée pour utiliser ce magasin !
+ Ti serve la licenza di pesca per usare questo negozio!
+ Você precisa de uma Licença de Mergulho para usar essa loja!
+ Nie posiadasz licencji nurka aby kupować w tym sklepie!
+ 你需要一张潜水执照才能使用这家商店!
+
+
+ You need a %1 to buy from this shop!
+ Potřebujete %1 koupit od tomto obchodě!
+ Necesitas un %1 para comprar algo de esta tienda!
+
+ Du benötigst eine %1, um dieses Geschäft nutzen zu können!
+ Vous avez besoin de %1 pour acheter dans ce magasin !
+ Hai bisogno di %1 per comprare da questo negozio!
+ Você precisa de %1 para comprar nessa loja!
+ Potrzebujesz %1 by kupować w tym sklepie!
+ 你需要从这家商店买 %1!
+
+
+ Clothing
+ Oblečení
+ Ropa
+
+ Kleidung
+ Tenues
+ Abiti
+ Roupas
+ Odzież
+ 服装
+
+
+ Hats
+ klobouky
+ Sombreros
+
+ Kopfbedeckungen
+ Chapeaux
+ Copricapi
+ Chapéus
+ Czapki
+ 帽子
+
+
+ Glasses
+ Brýle
+ Lentes
+
+ Brillen
+ Lunettes
+ Occhiali
+ Óculos
+ Okulary
+ 眼镜
+
+
+ Vests
+ vesty
+ Chalecos
+
+ Westen
+ Gilets
+ Vesti
+ Coletes
+ Kamizelki
+ 背心
+
+
+ Backpack
+ Batoh
+ Mochillas
+
+ Rucksack
+ Sacs à dos
+ Zaini
+ Mochilas
+ Plecaki
+ 背包
+
+
+ There is currently a car there.
+ Tam je v současné době auto.
+ Actualmente hay un carro ahi.
+
+ Es steht bereits ein Fahrzeug dort.
+ Il y a actuellement une voiture.
+ C'è già un veicolo qui.
+ Há um veiculo atualmente no respawn.
+ Aktualnie jest tam samochód.
+ 目前有一载具在那里。
+
+
+ You do not have enough money on you or in your bank to get your car back.
+ Nemáte dostatek peněz na vás nebo ve vaší bance, aby si své auto zpátky.
+ No tienes suficiente dinero para recuperar tu carro.
+
+ Du hast nicht genug Geld bei dir oder auf dem Bankkonto, um dein Auto auslösen zukönnen.
+ Vous n'avez pas assez d'argent sur vous ou dans votre compte en banque pour récupérer votre voiture.
+ Non hai abbastanza fondi con te o nel tuo conto in banca per poter ritirare il tuo veicolo.
+ Você não tem dinheiro suficiente em sua conta bancária para obter seu veiculo.
+ Nie masz tyle pieniędzy na koncie aby wyciągnąć samochód.
+ 你没有足够的钱在银行或你的身上。
+
+
+ You have unimpounded your %1 for $%3
+ Jste unimpounded svůj %1 na $%3
+ Has desembargado tu %1 por $%3
+
+ Du hast deinen %1 für $%3 ausgelöst.
+ Vous avez sorti votre %1 pour $%3
+ Hai ritirato dal sequestro il tuo %1 al costo di $%3
+ Você liberou %1 for R$%3
+ Przywróciłeś swój %1 za $%3
+ 你为 %1 花费 $%3
+
+
+ You did not pick a vehicle!
+ Vy nevybral vozidlo!
+ No has selecionado un vehículo!
+
+ Du hast kein Fahrzeug ausgewählt!
+ Vous n'avez pas choisi de véhicule !
+ Non hai selezionato un veicolo!
+ Você não conseguiu roubar o veiculo!
+ Nie wybrałeś pojazdu!
+ 你没有选择一载具!
+
+
+ You do not have enough cash to purchase this vehicle.\n\nAmount Lacking: $%1
+ Nemáte dostatek peněz na koupi tohoto vozidla \n\nAmount Postrádat: $%1
+ No tienes suficiente dinero para comprar este vehículo.\n\nFalta: $%1
+
+ Du hast nicht genug Geld, um das Fahrzeug zu kaufen.\n\nFehlender Betrag: $%1
+ Vous n'avez pas assez d'argent pour acheter ce véhicule \n\nArgent Manquant: $%1
+ Non hai fondi sufficienti per comprare questo veicolo.\n\nTi mancano: $%1
+ Você não tem dinheiro suficiente para comprar esse veiculo.\n\nFaltam: R$%1
+ Nie masz tyle pieniędzy by kupić ten pojazd.\n\nBrakuje: $%1
+ 你没有足够的现金购买这载具。\n\n缺少资金: $%1
+
+
+ You do not have the required license and/or level!
+ Nemáte požadovanou licenci!
+ No tienes la licencia requerida!
+
+ Du besitzt den benötigten Führerschein / Rang nicht!
+ Vous n'avez pas la licence requise !
+ Non hai la licenza richiesta per l'acquisto!
+ Você não tem a licença necessária!
+ Nie posiadasz odpowiedniej licencji!
+ 你没有所需的许可证和/或级别!
+
+
+ There is a vehicle currently blocking the spawn point
+ Tam je vozidlo v současné době blokuje potěr bod
+ Hay un vehículo bloqueando el punto de Spawn.
+
+ Ein Fahrzeug blockiert gerade den Spawnpunkt.
+ Il y a actuellement un véhicule qui bloque le point de spawn
+ C'è già un veicolo che blocca la zona di spawn
+ Existe um veiculo bloquenado a area de respaw
+ Inny pojazd blokuje miejsce odrodzenia pojazdów
+ 目前有一载具挡住了生成点。
+
+
+ You bought a %1 for $%2
+ Koupil sis %1 pro $%2
+ Comprastes %1 por $%2
+
+ Du kaufst eine(n) %1 für $%2.
+ Vous avez acheté un %1 pour $%2
+ Hai comprato un %1 al costo di $%2
+ Você comprou %1 por R$%2
+ Kupiłeś %1 za $%2
+ 你买了一个 %1 花费 $%2
+
+
+ You rented a %1 for $%2
+ Pronajali jste si %1 za $%2
+ Alquiló un %1 por $%2
+ Вы арендовали %1 за $%2
+ Sie haben %1 für $%2 gemietet
+ Vous avez loué un %1 pour $%2
+ Hai noleggiato un %1 per $%2
+ Você alugou um %1 por $%2
+ Wypożyczyłeś %1 za $%2
+ 您以 $%2 的价格租了一个 %1
+
+
+ Rental Price:
+ Pronájem Cena:
+ Precio de Renta:
+
+ Mietpreis:
+ Prix de location :
+ Costo Noleggio:
+ Alugar:
+ Wypożyczenie:
+ 租赁价格:
+
+
+ Ownership Price:
+ Vlastnictví Cena:
+ Precio de Compra:
+
+ Kaufpreis:
+ Prix d'achat :
+ Costo Acquisto:
+ Comprar:
+ Kupno:
+ 所有权价格:
+
+
+ Max Speed:
+ Maximální rychlost:
+ Máxima Velocidad:
+
+ Max. Geschwindigkeit:
+ Vitesse Max :
+ Velocità Max:
+ Velocidade Máxima:
+ Prędkość:
+ 最大速度:
+
+
+ Horse Power:
+ Koňská síla:
+ Caballos de Fuerza:
+
+ Pferdestärken:
+ Puissance en chevaux :
+ Cavalli:
+ Cavalos de Força:
+ Moc:
+ 马力:
+
+
+ Passenger Seats:
+ Sedadla pro cestující:
+ Asientos de Pasajeros:
+
+ Passagierplätze:
+ Sièges passager :
+ Sedili passeggeri:
+ Assentos:
+ Ilość miejsc:
+ 乘客座位:
+
+
+ Trunk Capacity:
+ Zavazadlový prostor Kapacita:
+ Capacidad de Maletero:
+
+ Kofferraumgröße:
+ Capacité du coffre :
+ Capacità Inventario:
+ Capacidade do Inventário:
+ Pojemność bagażnika:
+ 后备箱容积:
+
+
+ Fuel Capacity:
+ Palivo Kapacita:
+ >Capacidad de Combustible:
+
+ Tankgröße:
+ Capacité du réservoir :
+ Capacità Serbatoio:
+ Capacidade do Reservatório:
+ Pojemność baku:
+ 燃料容量:
+
+
+ Armor Rating:
+ Armor Hodnocení:
+ Clasificación de Armadura:
+
+ Panzerungsbewertung:
+ Blindage :
+ Resistenza:
+ Resistência:
+ Pancerz
+ 护甲值:
+
+
+ Retrieval Price:
+ Retrieval Cena:
+ Precio de Recuperación:
+
+ Einstellpreis:
+ Prix de sortie :
+ Costo di ritiro:
+ Preço para Recuperar:
+ Koszt wyciągnięcia:
+ 检索价格:
+
+
+ Sell Price:
+ Prodejní cena:
+ Precio de Venta:
+
+ Verkaufspreis:
+ Prix de vente :
+ Costo di vendita:
+ Preço de Venda
+ Cena sprzedaży:
+ 出售价格:
+
+
+ Color:
+ Barva:
+ Color:
+
+ Farbe:
+ Couleur :
+ Colore:
+ Cor:
+ Kolor
+ 颜色:
+
+
+ You are not allowed to use this shop!
+ Ty jsou není dovoleno používat tento obchod!
+ No tienes permiso de usar esta tienda!
+
+ Du bist nicht befugt, dieses Geschäft zu benutzen!
+ Vous n'êtes pas autorisé à utiliser cette boutique !
+ Non sei autorizzato ad usare questo negozio!
+ Você não está autorizado a utilizar essa loja!
+ Nie jesteś uprawniony do używania tego sklepu!
+ 不许你使用这家商店!
+
+
+ You need to select an item to buy.
+ Je třeba vybrat položku, kterou chcete koupit.
+ Debes selecionar un objeto para comprar.
+
+ Du musst einen Gegenstand auswählen, um ihn zu kaufen.
+ Vous devez sélectionner un objet pour l'acheter.
+ Seleziona un oggetto per poterlo comprare.
+ Você precisa selecionar um item para comprar.
+ Musisz zaznaczyć co chcesz kupić.
+ 你需要选择要购买的物品。
+
+
+ You didn't enter an actual number
+ Nezadal jste skutečný počet
+ No metistes un numero real
+
+ Du hast keine echte Zahl eingegeben.
+ Vous n'avez pas saisi un nombre réel
+ Non hai inserito correttamente un numero
+ Você não digitou um número válido.
+ Nie podałeś aktualnego numeru
+ 你没有输入一个正确的数字
+
+
+ You don't have that many items to sell!
+ Nemusíte, že mnoho položek k prodeji!
+ No tienes tantos objetos!
+
+ Du hast nicht so viele Gegenstände zum Verkaufen!
+ Vous n'avez pas autant d'objets à vendre !
+ Non hai tutti quegli oggetti da vendere!
+ Você não tem todos esse items para vender
+ Nie masz tak dużo rzeczy do sprzedania!
+ 你没有那么多物品可以出售!
+
+
+ The gang has enough funds to pay for this, would you like to pay with the gangs funds or your own?
+ Gang má dostatek finančních prostředků na zaplacení za to, byste chtěli platit fondů bandy nebo sami?
+ Tu pandilla tiene suficiente dinero para pagar esto, quieres pagar con ese dinero o el tuyo?
+
+ Die Gang hat genügend Geld, um dafür zu zahlen. Willst du mit dem Geld der Gang oder deinem Eigenem bezahlen?
+ Le gang a suffisamment de fonds pour payer pour cela, voulez-vous payer avec les fonds de gangs ou avec votre propre argent ?
+ La Gang ha fondi a sufficienza per pagare questo oggetto, vuoi usare i fondi della Gang o i tuoi personali?
+ A Gangue tem dinheiro suficiente para pagar por isso, você gostaria de usar o dinheiro da Gangue?
+ Gang posiada wystarczającą ilość środków aby za to zapłacić, chcesz zapłacić za to środkami gangu, czy własnymi?
+ 帮派有足够的钱来支付这笔钱,你愿意用帮派的钱还是自己的钱?
+
+
+ Gang Funds:
+ Gang fondy:
+ Fondos de Pandilla:
+
+ Geld der Gang:
+ Fonds du gang :
+ Fondi Gang:
+ Fundos da Gangue:
+ Środki gangu:
+ 帮派资金:
+
+
+ Your Cash:
+ Váš Cash:
+ Tu dinero:
+
+ Bargeld:
+ Votre argent :
+ Tuoi Fondi:
+ Seu Dinheiro:
+ Twoje środki:
+ 你的现金:
+
+
+ Pay with cash or gang funds
+ Platit v hotovosti nebo gangů fondů
+ Pagar con tu dinero o el de tu pandilla?
+
+ Mit Bargeld oder Geld der Gang bezahlen?
+ Payez avec votre argent ou avec les fonds du gang
+ Paga con i tuoi contanti o con i fondi della Gang
+ Pagar com a sua conta ou a da Gangue
+ Zapłać gotówką albo środkami gangu
+ 用现金或帮派基金支付
+
+
+ Gang Funds
+ Gang fondy
+ Fondos de la Pandilla
+
+ Geld der Gang
+ Fonds du gang :
+ Fondi Gang
+ Gangue
+ Środki gangu
+ 帮派资金
+
+
+ Your Cash
+ Váš Cash
+ Tu dinero
+
+ Bargeld:
+ Votre argent
+ Tuoi Fondi
+ Seu
+ Twoje środki
+ 你的现金
+
+
+ You bought %1 %2 for $%3 with the gangs funds
+ Koupili jste% %1 %2 za $ 3 s fondy gangů
+ Comprastes %1 %2 por $%3 con el dinero de la pandilla
+
+ Du kaufst %1 %2 für $%3 mit dem Geld der Gang
+ Vous avez acheté %1 %2 pour $%3 avec les fonds gangs
+ Hai comprato %1 %2 al costo di $%3 con i fondi della Gang
+ Você comprou %1 %2 por R$%3 com o dinheiro da gangue
+ Kupiłeś %1 %2 za $%3 ze środków gangu
+ 你购买 %1 %2 花费 $%3 帮派基金
+
+
+ You bought %1 %2 for $%3
+ Koupili jste% %1 2 na $ %3
+ Comprastes %1 %2 por $%3
+
+ Du hast %1 %2 für $%3 gekauft.
+ Vous avez acheté %1 %2 pour $%3
+ Hai comprato %1 %2 al costo di $%3
+ Voce comprou %1 %2 por R$%3
+ Kupiłeś %1 %2 za $%3
+ 你购买 %1 %2 花费 $%3
+
+
+ You sold %1 %2 for $%3
+ Prodali jste% %1 2 na $ %3
+ Vendistes %1 %2 por $%3
+
+ Du hast %1 %2 für $%3 verkauft.
+ Vous avez vendu %1 %2 pour $%3
+ Hai venduto %1 %2 al prezzo di $%3
+ Você vendeu %1 %2 por R$%3
+ Sprzedałeś %1 %2 za $%3
+ 你出售 %1 %2 得到 $%3
+
+
+ You need to select an item to buy/sell.
+ Je třeba vybrat položku na buy / sell.
+ Necesitas seleccionar un objetar para vender/comprar.
+
+ Du musst einen Gegenstand auswählen, um ihn zu kaufen / zu verkaufen.
+ Vous devez sélectionner un objet à acheter/vendre.
+ Devi selezionare un oggetto per comprare/vendere.
+ Selecione um item para comprar ou vender.
+ Musisz wybrać rzecz którą chcesz kupić/sprzedać
+ 你需要选择一个物品来购买/出售。
+
+
+ You sold a %1 for <t color='#8cff9b'>$%2</t>
+ prodával jsi %1 pro <t color='#8cff9b'>$%2</t>
+ Vendistes un %1 por <t color='#8cff9b'>$%2</t>
+
+ Du hast eine %1 für <t color='#8cff9b'>$%2</t> verkauft.
+ Vous avez vendu un %1 pour <t color='#8cff9b'>$%2</t>
+ Hai venduto un %1 al prezzo di <t color='#8cff9b'>$%2</t>
+ Você vendeu %1 por <t color='#8cff9b'>R$%2</t>
+ Sprzedałeś %1 za <t color='#8cff9b'>$%2</t>
+ 你出售 %1 得到 <t color='#8cff9b'>$%2</t>
+
+
+ You bought a %1 for <t color='#8cff9b'>$%2</t> with the gangs funds.
+ Koupil sis %1 pro <t color='#8cff9b'>$%2</t> s peněžními prostředky gangů.
+ Comprastes un %1 por <t color='#8cff9b'>$%2</t> con los fondos de tu pandilla.
+
+ Du hast mit dem Geld der Gang eine %1 für <t color='#8cff9b'>$%2</t> gekauft.
+ Vous avez acheté un %1 pour <t color='#8cff9b'>$%2</t> avec les fonds du gang.
+ Hai comprato un %1 al costo di <t color='#8cff9b'>$%2</t> con i fondi della Gang.
+ Você comprou %1 por <t color='#8cff9b'>R$%2</t> com o dinheiro da gangue.
+ Kupiłeś %1 za <t color='#8cff9b'>$%2</t> ze środków gangu.
+ 你购买 %1 花费 <t color='#8cff9b'>$%2</t> 黑帮基金。
+
+
+ You bought a %1 for <t color='#8cff9b'>$%2</t>
+ Koupil sis %1 pro <t color='#8cff9b'>$%2</t>
+ Comprastes un %1 por <t color='#8cff9b'>$%2</t>
+
+ Du hast eine %1 für <t color='#8cff9b'>$%2</t> gekauft.
+ Vous avez acheté un %1 pour <t color='#8cff9b'>$%2</t>
+ Hai comprato un %1 al costo di <t color='#8cff9b'>$%2</t>
+ Você comprou %1 por <t color='#8cff9b'>R$%2</t>
+ Kupiłeś %1 za <t color='#8cff9b'>$%2</t>
+ 你购买 %1 花费 <t color='#8cff9b'>$%2</t>
+
+
+ Shop Inventory
+ Obchod Zásoby
+ Inventario de la Tienda
+
+ Ladeninventar
+ Inventaire de la boutique
+ Inventario Negozio
+ Loja de Inventário
+ Wyposażenie sklepu
+ 店铺库存
+
+
+ Your Inventory
+ Váš Inventory
+ Tu inventario
+
+ Dein Inventar
+ Votre inventaire
+ Inventario Personale
+ Seu Inventário
+ Twoje wyposażenie
+ 你的库存
+
+
+
+
+ You will receive your next paycheck in %1 minutes.
+ Obdržíte svůj další výplatní pásku v %1 minut.
+ Recibiras tu siguiente pago en %1 minutos
+
+ Du erhältst deinen nächsten Gehaltsscheck in %1 Minuten.
+ Vous recevrez votre prochaine paye dans %1 minutes.
+ Riceverai il tuo prossimo stipendio in %1 minuti.
+ Você irá receber seu próximo pagamento em %1 minuto(s).
+ Otrzymasz kolejną wypłatę w ciągu %1 minut.
+ 你将在 %1 分钟后收到你的下一张薪水支票。
+
+
+ You have missed a paycheck because you were dead.
+ Jste vynechal výplatu, protože jste byli mrtví.
+ Te has perdido un pago por estar muerto.
+
+ Du erhältst kein Gehaltsscheck, da du gestorben bist.
+ Vous n'avez pas reçu votre paye en raison de votre mort.
+ Hai perso uno stipendio .
+ Você não recebeu seu pagamento pois estava morto.
+ Ominęła cię wypłata ponieważ byłeś martwy.
+ 因为你死了,你错过了薪水。
+
+
+ You have received a paycheck of $%1.
+ Dostali jste výplatu ve výši $ %1.
+ Has recibido un pago de $%1
+
+ Du hast deinen Gehaltscheck in Höhe von $%1 erhalten.
+ Vous avez reçu votre paye de $%1.
+ Hai ricevuto uno stipendio di $%1.
+ Você recebeu seu pagamento de R$%1.
+ Otrzymałeś wypłatę w kwocie $%1.
+ 你收到了一张 $%1 的薪水支票。
+
+
+
+
+ Refuel Fuel Canister
+ Tankovat paliva kanystr
+ Ravitailler le bidon en carburant
+ Llenar Bidón de Combustible
+ Fare rifornimento di carburante scatola metallica
+ Tankowanie paliwa Canister
+ Reabastecer de combustível vasilha
+ Заправить баллон с горючим
+ Benzinkanister befüllen
+ 给汽油桶加油
+
+
+ Refuel Vehicle
+ tankovací Vehicle
+ Llenar Vehículo
+ Fare rifornimento di veicoli
+ Tankowanie samochodów
+
+ Reabastecer Veículo
+ Ravitailler en essence le véhicule
+ Fahrzeug auftanken
+ 给车加油
+
+
+ Price per Liter: $%1
+ Cena za litr: $ %1
+ Precio por Litro: $%1
+ Prezzo al litro: $%1
+ Cena za litr: $%1
+
+ Preço por Litro : R$%1
+ Prix au Litre : $%1
+ Preis pro Liter: $%1
+ 每升价格:$%1
+
+
+ Current Fuel Amount:
+ Aktuální výše Palivo:
+ Quantité de carburant actuelle :
+ Actual cantidad de combustible:
+ Quantità corrente di benzina:
+ Aktualny Ilość paliwa:
+
+ Quantidade Atual de Combustível:
+ Aktuelle Kraftstoffmenge:
+ 当前燃料量:
+
+
+ Select a vehicle
+ Vyberte si vůz
+ Selecciona un Vehículo
+ Selezionare un veicolo
+ Wybierz pojazd
+
+ Selecione um veículo
+ Sélectionner un vehicule
+ Wähle ein Fahrzeug:
+ 选择载具
+
+
+ The vehicle is too far or you are in!
+ Vozidlo je příliš daleko, nebo jste se!
+ El Vehículo esta muy lejos o tu estas adentro!
+ Il veicolo è troppo lontano o vi sei all'interno!
+ Pojazd jest zbyt daleko lub jesteś w!
+
+ O veículo está muito longe ou você está nele!
+ Le véhicule est peut-etre trop loin, ou tu es dedans !
+ Das Fahrzeug ist zu weit entfernt oder du sitzt noch drin!
+ 载具太远了,或者你在载具里!
+
+
+ The vehicle is full!
+ Vozidlo je plná!
+ El Vehículo esta lleno!
+ Il veicolo è pieno!
+ Pojazd jest pełna!
+
+ O veículo está cheio!
+ Le véhicule est plein !
+ Das Fahrzeug ist voll!
+ 载具已满!
+
+
+
+
+ Drop Fishing Net
+ Drop rybářská síť
+ Tirar Red de Pesca
+
+ Fischernetz auswerfen
+ Lancer le filet de pêche
+ Drop Fishing Net
+ Jogar Rede de Pesca
+ Zarzuć sieć
+ 放下渔网
+
+
+ Rob Person
+ Rob Pearson
+ Robar Persona
+
+ Person ausrauben
+ Voler la personne
+ Deruba
+ Roubar Jogador
+ Obrabuj osobę
+ 抢劫此人
+
+
+
+
+ Fish Market
+ Rybí trh
+ Marché aux poissons
+ Mercado de Pescado
+
+ Fischmarkt
+ Peixaria
+ Sklep rybny
+ Pescivendolo
+ 海产品市场
+
+
+ Hospital
+ Nemocnice
+ Hôpital
+ Hospital
+
+ Krankenhaus
+ Hospital
+ Szpital
+ Ospedale
+ 医院
+
+
+ Police Station
+ Policejní stanice
+ Poste de police
+ Estación de Policia
+
+ Polizei Revier
+ Estação Policial
+ Posterunek policji
+ Questura
+ 警察分局
+
+
+ Police Air HQ
+ Police Air HQ
+ Base aérienne de la Police
+ Cuartel Aéreo Policial
+ QG Aereo Polizia
+
+ Polizei HQ Flughafen
+ QG Aéreo Policial
+ Baza lotnicza policji
+ 警察航空总部
+
+
+ Iron Mine
+ Železný důl
+ Mine de fer
+ Mina de Hierro
+
+ Eisenmine
+ Mina de Ferro
+ Kopalnia miedzi
+ Miniera di ferro
+ 铁矿
+
+
+ Salt Mine
+ Solný důl
+ Mine de sel
+ Mina de Sal
+
+ Salzmine
+ Mina de Sal
+ Kopalnia soli
+ Salina
+ 盐矿
+
+
+ Salt Processing
+ sůl Processing
+ Traitement de sel
+ Procesador de Sal
+
+ Salzverarbeitung
+ Processador de Sal
+ Warzelnia soli
+ Processo del sale
+ 食盐制造厂
+
+
+ Altis Corrections
+ Altis Opravy
+ Prison d'Altis
+ Prisión de Altis
+
+ Altis Bundesgefängnis
+ Prisão de Altis
+ Więzienie Altis
+ Penitenziario di Altis
+ 监狱
+
+
+ Tanoa Corrections
+ Tanoa Opravy
+ Prison de Tanoa
+ Prisión de Tanoa
+
+ Tanoa Bundesgefängnis
+ Prisão de Tanoa
+ Więzienie Tanoa
+ Penitenziario di Tanoa
+ Tanoa更正
+
+
+ Police HQ
+ Police HQ
+ QG de la police
+ Comisaria de Policía
+ QG Polizia
+
+ Polizei HQ
+ QG Policial
+ KG Policji Altis
+ 警察总部
+
+
+ Coast Guard
+ pobřežní hlídka
+ Garde-côte
+ Guardia Costera
+
+ Küstenwache
+ Guarda Costeira
+ Straż przybrzeżna
+ Guardia Costiera
+ 海岸警卫队
+
+
+ Rebel Outpost
+ Rebel Outpost
+ Avant-Poste Rebelle
+ Base Rebelde
+ Avamposto Ribelle
+
+ Rebellen Außenposten
+ Base Rebelde
+ Baza rebeliantów
+ 叛军前哨
+
+
+ Air Shop
+ Air Shop
+ Concessionnaire aérien
+ Tienda Aérea
+ Negozio Aereo
+
+ Luftfahrzeug Händler
+ Loja Aérea
+ Sklep lotniczy
+ 空中载具商店
+
+
+ Truck Shop
+ Truck Shop
+ Vendeur de camion
+ Tienda de Camiones
+
+ LKW Händler
+ Loja de Caminhões
+ Salon ciężarówek
+ Concessionaria Camion
+ 卡车商店
+
+
+ Oil Processing
+ Zpracování olej
+ Traitement du Pétrole
+ Procesador de Petróleo
+
+ Öl Verarbeiter
+ Processador de Petróleo
+ Rafineria ropy naftowej
+ Raffineria di Petrolio
+ 石油加工
+
+
+ Iron Processing
+ Zpracování Iron
+ Traitement du Fer
+ Procesador de Hierro
+ Processo del ferro
+
+ Eisenschmelze
+ Processador de Ferro
+ Huta żelaza
+ 铁矿加工
+
+
+ Sand Mine
+ písek Mine
+ Mine de Sable
+ Mina de Arena
+ Miniera di sabbia
+
+ Sand Mine
+ Mina de Areia
+ Kopalnia piasku
+ 采沙场
+
+
+ Chop Shop
+ Chop Shop
+ Revendeur de véhicules volés
+ Desguace Clandestino
+ Ricettatore
+
+ Schrotthändler
+ Desmanche
+ Dziupla
+ 黑车店
+
+
+ Cocaine Processing
+ Zpracování kokain
+ Traitement de Cocaïne
+ Procesador de Cocaína
+ Trattamento cocaina
+
+ Kokain Verarbeiter
+ Processador de Cocaína
+ Oczyszczanie kokainy
+ 可卡因加工点
+
+
+ Copper Mine
+ měděný důl
+ Mine de Cuivre
+ Mina de Cobre
+ Miniera di rame
+
+ Kupfermine
+ Mina de Cobre
+ Kopalnia miedzi
+ 铜矿
+
+
+ ATM
+ bankomat
+ DAB
+ ATM
+ ATM
+
+ Geldautomat
+ Caixa Eletrônico
+ Bankomat
+ 自动取款机
+
+
+ Local Bank
+ místní bankovní
+ Banque locale
+ Banco Local
+ Banca locale
+
+ Zentralbank
+ Banco Local
+ Bank Altis
+ 银行
+
+
+ Car Shop
+ Auto Shop
+ Concessionnaire
+ Tienda de Coches
+ Concessionario d `auto
+
+ Autohändler
+ Loja de Carros
+ Salon samochodowy
+ 小汽车店
+
+
+ Hospital/Clinic
+ Nemocnice / Klinika
+ Clinique
+ Hospital/Clínica
+ Ospedale / Clinica
+
+ Krankenhaus
+ Hospital/Clínica
+ Klinika Altis
+ 医院/诊所
+
+
+ Diamond Mine
+ Diamond Mine
+ Mine de diamant
+ Mina de Diamantes
+ Miniera di diamanti
+
+ Diamanten Mine
+ Mina de Diamante
+ Kopalnia diamentów
+ 钻石矿场
+
+
+ General Store
+ Obchod se smíšeným zbožím
+ Magasin général
+ Tienda General
+ Strumenti Generali
+
+ Supermarkt
+ Loja de Equipamentos
+ Sklep techniczny
+ 物品商店
+
+
+ Civilian Shops
+ civilní Obchody
+ Magasins civils
+ Tiendas Civiles
+ Negozi civili
+
+ Geschäft für Zivilisten
+ Lojas Civis
+ Sklepy dla cywilów
+ 平民商店
+
+
+ Boat Shop
+ Lodní Shop
+ Concessionnaire de bateaux
+ Tienda de Barcos
+ Concessionaria Nautica
+
+ Boots Händler
+ Loja de Barcos
+ Sklep z łodziami
+ 船舶商店
+
+
+ Bruce's Outback Outfits
+ Bruceovy Outback Oblečení
+ Vêtements de Bruce
+ Tienda de Ropa
+ Outfit di Bruce
+
+ Loja de Roupas
+ Sklep odzieżowy
+ Bruce's Outback Outfits
+ 服装店
+
+
+ Apple Field
+ Apple Field
+ Champs de Pommes
+ Campo de Manzanas
+ Campo di Mele
+
+ Apfel Plantage
+ Campo de Maçãs
+ Sad jabłkowy
+ 苹果树林
+
+
+ Peaches Field
+ broskve Field
+ Champs de Pêches
+ Campo de Melocotones
+ Campo di Pesche
+
+ Pfirsich Plantage
+ Campo de Pêras
+ Sad brzoskwiniowy
+ 桃树林
+
+
+ Market
+ Trh
+ Marché
+ Mercado
+ Mercato
+
+ Markt
+ Mercado
+ Market spożywczy
+ 市场
+
+
+ Air Service Station
+ Stanice Air Service
+ Réparateur Aérien
+ Estación de Servicio Aéreo
+ Stazione Servizio Aereo
+
+ Werkstatt für Luftfahrzeuge
+ Estação de Serviços Aéreos
+ Serwis lotniczy
+ 航空服务站
+
+
+ Channel 7 News
+ Channel 7 News
+ Chaine d'infos Numéro 7
+ Canal de Noticias 7
+ Notiziario di Altis
+
+ Kanal 7 Nachrichtensender
+ Canal de Notícias 7
+ Maszt nadawczy
+ 新闻广播电台
+
+
+ DMV
+ DMV
+ Magasin de licences
+ Registro de Licencias
+
+ Zulassungstelle
+ Loja de Licenças
+ Urząd licencyjny
+ Licenze
+ 许可证办理
+
+
+ Delivery Missions
+ Dodací mise
+ Missions de livraison
+ Misiones de Entrega
+
+ Kurier Mission
+ Missões de Entrega
+ Misje kurierskie
+ Missioni Postali
+ 快递任务
+
+
+ Deliver Package
+ doručit balíček
+ Livrer le paquet
+ Entregar Paquete
+
+ Paket ausliefern
+ Entregar Pacote
+ Dostarcz przesyłkę
+ Consegna il pacco
+ 完成快递任务
+
+
+ Get Delivery Mission
+ Získat Delivery mise
+ Obtenir Mission de livraison
+ Empezar Misión de Entrega
+
+ Starte Kurier Mission
+ Pegar Missão de Entrega
+ Pobierz przesyłkę do dostarczenia
+ Ottieni una missione postale
+ 得到快递任务
+
+
+ Diving Shop
+ Potápění Shop
+ Boutique de plongée
+ Tienda de Buceo
+
+ Steve's Taucherausrüstung
+ Loja de Mergulho
+ Akcesoria do nurkowania
+ Negozio da Sub
+ 潜水店
+
+
+ Drug Dealer
+ Drug prodejce
+ Dealeur de drogue
+ Narcotraficante
+
+ Drogendealer
+ Traficante
+ Diler narkotyków
+ Spacciatore
+ 毒贩
+
+
+ Diamond Processing
+ Diamond Processing
+ Traitement du diamant
+ Procesador de Diamante
+
+ Diamantenschleifer
+ Processador de Diamante
+ Szlifierz diamentów
+ Processo diamanti
+ 钻石加工
+
+
+ Oil Field
+ Ropné poles
+ Champ de Pétrole
+ Campo de Petróleo
+
+ Öl Felder
+ Campo de Petróleo
+ Szyb naftowy
+ Giacimento di Petrolio
+ 油田
+
+
+ Marijuana Field
+ Marihuana Field
+ Champ de Marijuana
+ Campo de Marihuana
+
+ Marihuana Plantage
+ Campo de Maconha
+ Pole marihuany
+ Campo di Marijuana
+ 大麻产地
+
+
+ Marijuana Processing
+ Zpracování marihuana
+ Traitement de la Marijuana
+ Procesador de Marihuana
+
+ Marihuana Verarbeitung
+ Processador de Maconha
+ Suszarnia marihuany
+ Trattamento Marijuana
+ 大麻加工
+
+
+ Boat Spawn
+ Lodní potěr
+ Port
+ Spawn de Barcos
+
+ Boot Spawn
+ Spawn de Barcos
+ Przystań
+ Consegna Barche
+ 码头
+
+
+ Copper Processing
+ Zpracování měď
+ Traitement du cuivre
+ Procesador de Cobre
+
+ Kupferschmelze
+ Processador de Cobre
+ Huta miedzi
+ Processo Rame
+ 铜矿加工
+
+
+ Coca Field
+ Coca Field
+ Champ de Cocaïne
+ Campo de Cocaína
+
+ Kokain Plantage
+ Campo de Cocaína
+ Pole kokainy
+ Campo di Cocaina
+ 可卡因树林
+
+
+ Oil Trader
+ olej Trader
+ Vendeur de pétrole
+ Comerciante de Petróleo
+
+ Öl Händler
+ Comprador de Petróleo
+ Skup benzyny
+ Vendita Olio
+ 石油贸易商
+
+
+ Salt Trader
+ sůl Trader
+ Vendeur de sel
+ Comerciante de Sal
+
+ Salz Händler
+ Comprador de Sal
+ Skup soli
+ Vendita Sale
+ 食盐贸易商
+
+
+ Diamond Trader
+ Diamond Trader
+ Vendeur de diamant
+ Comerciante de Diamantes
+
+ Juwelier
+ Comprador de Diamante
+ Skup diamentów
+ Vendita Diamanti
+ 钻石贸易商
+
+
+ Glass Trader
+ sklo Trader
+ Vendeur de verre
+ Comerciante de Vidrio
+
+ Glasbläserei
+ Comprador de Vidro
+ Skup szkła
+ Vendita del Vetro
+ 玻璃贸易商
+
+
+ Iron / Copper Trader
+ Žehlička / Měď Trader
+ Vendeur de minerais
+ Comerciante de Hierro / Cobre
+
+ Industriehandel
+ Comprador de Ferro e Cobre
+ Skup metali
+ Vendita del Ferro/Rame
+ 铁/铜交易商
+
+
+ Sand Processing
+ Zpracování písek
+ Traitement du sable
+ Procesador de Arena
+
+ Sand Verarbeiter
+ Processador de Areia
+ Huta szkła
+ Processo Sabbia
+ 玻璃制造厂
+
+
+ Gun Store
+ Gun Store
+ Armurerie
+ Tienda de Armas
+
+ Waffengeschäft
+ Loja de Armas
+ Sklep z bronią
+ Armeria
+ 武器商店
+
+
+ Opium Poppy Field
+ Opium Poppy Field
+ Champ d'héroïne
+ Campo de Opio
+ Opium Poppy Field
+
+ Heroin Plantage
+ Campo de Heroína
+ Pole heroiny
+ 罂粟产地
+
+
+ Heroin Processing
+ Zpracování heroin
+ Traitement d'héroïne
+ Procesador de Heroina
+ Processing eroina
+
+ Heroin Verarbeitung
+ Processador de Heroína
+ Oczyszczanie heroiny
+ 海洛因加工点
+
+
+ Garage
+ Garáž
+ Garage
+ Garaje
+ Box auto
+
+ Garage
+ Garagem
+ Garaż
+ 载具仓库
+
+
+ Federal Reserve
+ federální rezervní systém
+ Banque fédérale
+ Reserva Federal
+
+ Zentralbank
+ Reserva Federal
+ Bank Rezerw Federalnych
+ Banca Federale
+ 金库
+
+
+ Highway Patrol Outpost
+ Dálniční hlídka Outpost
+ Avant-poste de Police
+ Puesto de Patrulla de Carretera
+
+ Mautstation
+ Base da Polícia Rodoviária
+ Posterunek policji drogowej
+ Checkpoint di polizia
+ 公路巡逻队
+
+
+ Rock Quarry
+ kamenolomu
+ Mine de pierres
+ Mina de Piedra
+
+ Steinbruch
+ Pedreira
+ Kamieniołom
+ Cava di Roccia
+ 采矿石场
+
+
+ Rock Processing
+ rock Processing
+ Traitement de pierres
+ Procesador de Piedra
+
+ Stein Verarbeitung
+ Processador de Pedra
+ Wytwórnia cementu z kamienia
+ Processo Roccia
+ 水泥制造厂
+
+
+ Cement Trader
+ cement Trader
+ Vendeur de ciments
+ Comerciante de Cemento
+
+ Zement Händler
+ Comprador de Cimento
+ Skup cementu
+ Vendita del Cemento
+ 水泥贸易商
+
+
+ Turtle Poaching
+ Turtle pytláctví
+ Réserve protégée de tortues
+ Caza de Tortugas
+ Bracconaggio di Tartarughe
+
+ Wilderei für Schildkröten
+ Área de Tartarugas
+ Strefa występowania żółwi morskich
+ 海龟捕猎区
+
+
+ Turtle Dealer
+ Turtle prodejce
+ Dealeur de Tortues
+ Traficante de Tortugas
+
+ Schildkröten Händler
+ Comprador de Tartarugas
+ Skup żółwi
+ Vendita Tartarughe
+ 海龟走私商
+
+
+ Go-Kart Shop
+ Go-Kart Shop
+ Concessionnaire de karts
+ Tienda de Go-Kart
+
+ Bobby's Gokarthandel
+ Loja de Karts
+ Sklep z GoKartami
+ Parco Go-Kart
+ 卡丁车店
+
+
+ Gold Bars Buyer
+ Gold Bary kupujícího
+ Acheteur d'Or
+ Comprador de Oro
+
+ Goldhändler
+ Comprador de Barras de Ouro
+ Skup złota
+ Gioielliere
+ 金条买家
+
+
+ Gang Hideout 1
+ Gang Hideout 1
+ Cachette 1
+ Escondite de Pandillas 1
+
+ Gang Versteck 1
+ Esconderijo de Gangs 1
+ Kryjówka gangu 1
+ Covo Gang 1
+ 帮派据点1
+
+
+ Gang Hideout 2
+ Gang Hideout 2
+ Cachette 2
+ Escondite de Pandillas 2
+
+ Gang Versteck 2
+ Esconderijo de Gangs 2
+ Kryjówka gangu 2
+ Covo Gang 2
+ 帮派据点2
+
+
+ Gang Hideout 3
+ Gang Hideout 3
+ Cachette 3
+ Escondite de Pandillas 3
+
+ Gang Versteck 3
+ Esconderijo de Gangs 3
+ Kryjówka gangu 3
+ Covo Gang 3
+ 帮派据点3
+
+
+ Hunting Grounds
+ honební revír
+ Terrain de chasse
+ Zona de Caza
+
+ Jagdgebiet
+ Área de Caça
+ Strefa polowań
+ Riserva di Caccia
+ 狩猎场
+
+
+ Rebel Clothing Shop
+ Rebel Oblečení Shop
+ Vêtements rebelle
+ Tienda de Ropa Rebelde
+ Rebel negozio di abbigliamento
+
+ Rebellen Kleidungsgeschäft
+ Loja de Roupas Rebeldes
+ Magazyn rebelianta
+ 叛军服装店
+
+
+ Rebel Weapon Shop
+ Rebel obchodu se zbraněmi
+ Armurerie rebelle
+ Tienda de Armas Rebeldes
+
+ Rebellen Waffenhändler
+ Loja de Armas Rebeldes
+ Zbrojownia rebelianta
+ Armeria della Guerriglia
+ 叛军武器店
+
+
+ Helicopter Shop
+ vrtulník Shop
+ Concessionnaire aérien
+ Tienda de Helicópteros
+ Elicottero negozio
+
+ Helikopter Händler
+ Loja de Helicópteros
+ Sklep lotniczy
+ 飞行载具店
+
+
+ Fuel Station Store
+ Palivo Store Station
+ Cafet' de Station
+ Tienda de Gasolinera
+ Stazione di rifornimento Conservare
+
+ Tankstelle
+ Loja de Conveniência
+ Sklep OLLEN
+ 加油站商店
+
+
+ Rebel Market
+ Rebel Market
+ Marché Rebelle
+ Mercado Rebelde
+ mercato Rebel
+
+ Rebellen Markt
+ Mercado Rebelde
+ Market rebelianta
+ 叛军市场
+
+
+ Question Dealer
+ Otázka prodejce
+ Questionner le dealer
+ Informante
+
+ Informant
+ Perguntar ao Traficante
+ Przesłuchaj dilera
+ Minaccia Spacciatore
+ 询问经销商
+
+
+ Service Helicopter
+ Service Vrtulník
+ Service d'hélicoptère
+ Helicóptero de Servicio
+
+ Helikopter Werkstatt
+ Serviço Aéreo
+ Serwisuj pojazd lotniczy
+ Servizio Aereo
+ 维修直升机
+
+
+ Clothing Store
+ Obchod s oblečením
+ Vêtements
+ Tienda de Ropa
+
+ Kleidungsgeschäft
+ Loja de Roupas
+ Sklep odzieżowy
+ Vestiario
+ 服装店
+
+
+ Medical Assistance
+ lékařská pomoc
+ Assistance médicale
+ Asistencia Médica
+
+ Medizinischer Ersthelfer
+ Assistência Médica
+ Pomoc medyczna
+ Assistenza Medica
+ 医疗救助
+
+
+ Store vehicle in Garage
+ Skladovat vozidlo v garáži
+ Ranger le véhicule dans le garage
+ Guardar vehículo en el Garaje
+
+ Fahrzeug in Garage einparken
+ Guardar veículo na Garagem
+ Umieść pojazd w garażu
+ Deposita veicolo in garage
+ 将载具存放在仓库
+
+
+ Cop Item Shop
+ Cop Item Shop
+ Magasin de la Police
+ Tienda de Objetos de Policía
+ Strumenti
+
+ Polizei Ausrüstung
+ Loja de Items da Polícia
+ Zaopatrzenie
+ 警察物品商店
+
+
+ Cop Clothing Shop
+ Cop Oblečení Shop
+ Vêtements de policier
+ Tienda de Ropa de Policía
+ Uniformi
+
+ Polizei Uniformen
+ Loja de Roupas da Polícia
+ Umundurowanie
+ 警察服装店
+
+
+ Cop Weapon Shop
+ Cop obchodu se zbraněmi
+ Armurerie de Police
+ Tienda de Armas de Policía
+ Armeria da Agenti
+
+ Polizei Waffengeschäft
+ Loja de Armas da Polícia
+ Broń policji
+ 警察武器店
+
+
+ Patrol Officer Weapon Shop
+ Policistou obchodu se zbraněmi
+ Armurerie d'officier
+ Tienda de Armas de Oficial de Patrulla
+ Armeria da Pattuglia
+
+ Loja de Armas de Patrulha
+ Broń patrolowa
+ Streifenpolizist Waffengeschäft
+ 巡警武器商店
+
+
+ Sergeant Weapon Shop
+ Seržant obchodu se zbraněmi
+ Armurerie de sergent
+ Tienda de Armas de Oficial de Sargento
+ Armeria dei Sergenti
+
+ Lojas de Armas de Sargento
+ Broń sierżanta
+ Sergeant Waffengeschäft
+ 警长武器商店
+
+
+ Vehicle Shop
+ Shop Vehicle
+ Concessionnaire de véhicule
+ Tienda de Vehículos
+ di veicoli
+
+ Autohändler
+ Loja de Carros
+ Pojazdy - sklep
+ 载具商店
+
+
+ Process Sand
+ proces Písek
+ Traiter le sable
+ Procesar Arena
+
+ Verarbeite Sand
+ Processar Areia
+ Przetop piasek na szkło
+ Lavorazione Sabbia
+ 把沙子制造成玻璃
+
+
+ Process Rock
+ proces rock
+ Traiter la pierre
+ Procesar Piedra
+
+ Verarbeite Stein
+ Processar Pedra
+ Zmiel skały na cement
+ Processo Roccia
+ 把矿石制造成水泥
+
+
+ Wong's Food Cart
+ Křídla Food košík
+ Magasin de Wong
+ Kiosko de Wong
+ Wong Food Cart
+
+ Wong's Spezialitäten
+ Boteco do Wongs
+ Bar u Wonga
+ 食品商人
+
+
+ Open Vault
+ otevřená Vault
+ Ouvrir coffre
+ Abrir Bóveda
+ Apri Cassaforte
+
+ Geöffneter Tresor
+ Abrir Cofre
+ Otwórz skarbiec
+ 打开金库
+
+
+ Fix Vault
+ Fix Vault
+ Réparer coffre
+ Reparar Bóveda
+
+ Tresor reparieren
+ Consertar Cofre
+ Napraw skarbiec
+ Ripara Cassaforte
+ 修复金库
+
+
+ Federal Reserve - Front Entrance
+ Federální rezervní systém - přední vchod
+ Banque fédérale - Entrée avant
+ Reserva Federal - Entrada Principal
+ Riserva Federale - Entrata Frontale
+
+ Zentralbank - Haupteingang
+ Reserva Federal - Entrada Frontal
+ Rezerwa federalna - wejście główne
+ 金库-前门
+
+
+ Federal Reserve - Side Entrance
+ Federální rezervní systém - Boční vchod
+ Banque fédérale - Entrée latérale
+ Reserva Federal - Entrada Lateral
+ Riserva Federale - Ingresso laterale
+
+ Zentralbank - Seiteneingang
+ Reserva Federal - Entrada Lateral
+ Rezerwa federalna - wejście boczne
+ 金库-侧门
+
+
+ Federal Reserve - Back Entrance
+ Federální rezervní systém - zadní vchod
+ Banque fédérale - Entrée Arrière
+ Reserva Federal - Entrada Trasera
+ Riserva Federale - Ingresso sul Retro
+
+ Zentralbank - Hintereingang
+ Reserva Federal - Entrada Traseira
+ Rezerwa federalna - wejście tylne
+ 金库-后门
+
+
+ Federal Reserve - Vault View
+ Federální rezervní systém - Vault View
+ Banque fédérale - Voir Coffre
+ Reserva Federal - Vista a la Bóveda
+ Riserva Federale - Vista della Cassaforte
+
+ Zentralbank - Tresor
+ Reserva Federal - Visão do Cofre
+ Rezerwa federalna - skarbiec
+ 金库-保险箱
+
+
+ Turn Off Display
+ Vypnout displej
+ Désactiver l'affichage
+ Apagar el Display
+ Disattivare la visualizzazione
+
+ Bildschirm ausschalten
+ Desligar Monitor
+ Wyłącz wyświetlacz
+ 关闭显示
+
+
+ Armament
+ Vyzbrojení
+ Armement
+ Armamento
+ Armamento
+
+ Rüstkammer
+ Armamento
+ Zbrojownia gangu
+ 武器装备
+
+
+ EMS Item Shop
+ EMS Item Shop
+ Magasin de médecin
+ Tienda de Objetos de Médico
+ Strumenti EMS
+
+ Sanitäter Ausrüstung
+ Loja de Items Médicos
+ Wyposażenie medyczne
+ 医疗物品店
+
+
+ EMS Clothing Shop
+ EMS Oblečení Shop
+ Uniformes du SAMU
+ Tienda de Ropa de Médico
+ Uniformi EMS
+
+ Sanitäter Kleidungsgeschäft
+ EMS Roupa Loja
+ Sklep odzieżowy EMS
+ 医疗服装店
+
+
+ Helicopter Garage
+ vrtulník Garáž
+ Garage d'hélicoptère
+ Garaje de Helicóptero
+ Garage d'Elicotteri
+
+ Helikopter Hangar
+ Garagem Aérea
+ Hangar lotniczy
+ 直升机库
+
+
+ Car Garage
+ Car Garage
+ Garage de voitures
+ Garaje de Coches
+
+ Fahrzeug Garage
+ Garagem de Carros
+ Hangar lotniczy
+ Garage Automobili
+ 载具仓库
+
+
+ Pay Bail
+ Pay Bail
+ Payer la caution
+ Pagar Fianza
+
+ Zahle Kaution
+ Pagar Fiança
+ Zapłać kaucję
+ Paga cauzione
+ 支付保释金
+
+
+
+
+ Remove Uniform
+ Remove Uniform
+ Remove Uniform
+ Remove Uniform
+ Entferne Kleidung
+ Retirer uniforme
+ Remove Uniform
+ Remove Uniform
+ Remove Uniform
+ 删除制服
+
+
+ Remove Hat
+ Remove Hat
+ Remove Hat
+ Remove Hat
+ Entferne Kopfbedeckung
+ Retirer chapeau
+ Remove Hat
+ Remove Hat
+ Remove Hat
+ 删除帽子
+
+
+ Remove Glasses
+ Remove Glasses
+ Remove Glasses
+ Remove Glasses
+ Entferne Brille
+ Retirer lunettes
+ Remove Glasses
+ Remove Glasses
+ Remove Glasses
+ 删除眼镜
+
+
+ Remove Vest
+ Remove Vest
+ Remove Vest
+ Remove Vest
+ Entferne Weste
+ Retirer gilet
+ Remove Vest
+ Remove Vest
+ Remove Vest
+ 删除背心
+
+
+ Remove Backpack
+ Remove Backpack
+ Remove Backpack
+ Remove Backpack
+ Entferne Rucksack
+ Retirer sac
+ Remove Backpack
+ Remove Backpack
+ Remove Backpack
+ 删除背包
+
+
+ Casual Wears
+ Casual Wears
+ Casual Wears
+ Casual Wears
+ Büro Kleidung
+ Casual Wears
+ Casual Wears
+ Casual Wears
+ Casual Wears
+ 休闲装
+
+
+ Hat and Bandana
+ Hat and Bandana
+ Hat and Bandana
+ Hat and Bandana
+ Mütze und Kopftuch
+ Chapeau et bandana
+ Hat and Bandana
+ Hat and Bandana
+ Hat and Bandana
+ 帽子和头巾
+
+
+ Cop Uniform
+ Cop Uniform
+ Cop Uniform
+ Cop Uniform
+ Polizei Uniform
+ Uniforme de service
+ Cop Uniform
+ Cop Uniform
+ Cop Uniform
+ 警察制服
+
+
+ EMS Uniform
+ EMS Uniform
+ EMS Uniform
+ EMS Uniform
+ Sanitäter Uniform
+ Uniforme du SAMU
+ EMS Uniform
+ EMS Uniform
+ EMS Uniform
+ 医疗制服
+
+
+ EMS Backpack
+ EMS Backpack
+ EMS Backpack
+ EMS Backpack
+ Sanitäter Rucksack
+ Sac à dos SAMU
+ EMS Backpack
+ EMS Backpack
+ EMS Backpack
+ 医疗背包
+
+
+ Flashbang
+ Flashbang
+ Flashbang
+ Flashbang
+ Blendgranate
+ Flashbang
+ Flashbang
+ Flashbang
+ Flashbang
+ 闪光弹
+
+
+ Stun Pistol
+ Stun Pistol
+ Stun Pistol
+ Stun Pistol
+ Betäubungs-Pistole
+ Taser
+ Stun Pistol
+ Stun Pistol
+ Stun Pistol
+ 眩晕手枪
+
+
+ Taser Rifle
+ Taser Rifle
+ Taser Rifle
+ Taser Rifle
+ Betäubungs-Gewehr
+ Fusil taser
+ Taser Rifle
+ Taser Rifle
+ Taser Rifle
+ 泰瑟步枪
+
+
+ Taser Rifle Magazine
+ Taser Rifle Magazine
+ Taser Rifle Magazine
+ Taser Rifle Magazine
+ Betäubungs-Gewehr-Magazine
+ Chargeurs de fléchettes électriques
+ Taser Rifle Magazine
+ Taser Rifle Magazine
+ Taser Rifle Magazine
+ 泰瑟步枪弹匣
+
+
+ Northern Rebel Base
+ Northern Rebel Base
+ Northern Rebel Base
+ Northern Rebel Base
+ Nord Rebellen Basis
+ Base rebelle Nord
+ Northern Rebel Base
+ Northern Rebel Base
+ Northern Rebel Base
+ 北部叛军基地
+
+
+ Southern Rebel Base
+ Southern Rebel Base
+ Southern Rebel Base
+ Southern Rebel Base
+ Süd Rebellen Basis
+ Base rebelle Sud
+ Southern Rebel Base
+ Southern Rebel Base
+ Southern Rebel Base
+ 南部叛军基地
+
+
+ Eastern Rebel Base
+ Eastern Rebel Base
+ Eastern Rebel Base
+ Eastern Rebel Base
+ Ost Rebellen Basis
+ Base rebelle Est
+ Eastern Rebel Base
+ Eastern Rebel Base
+ Eastern Rebel Base
+ 东部叛军基地
+
+
+ North Western Rebel Base
+ North Western Rebel Base
+ North Western Rebel Base
+ North Western Rebel Base
+ Nord-West Rebellen Basis
+ Base rebelle Nord-Ouest
+ North Western Rebel Base
+ North Western Rebel Base
+ North Western Rebel Base
+ 西北叛军基地
+
+
+ North Eastern Rebel Base
+ North Eastern Rebel Base
+ North Eastern Rebel Base
+ North Eastern Rebel Base
+ Nord-Ost Rebellen Basis
+ Base rebelle Nord-Est
+ North Eastern Rebel Base
+ North Eastern Rebel Base
+ North Eastern Rebel Base
+ 东北叛军基地
+
+
+ Kavala Hospital
+ Kavala Hospital
+ Kavala Hospital
+ Kavala Hospital
+ Kavala Krankenhaus
+ Hôpital de Kavala
+ Kavala Hospital
+ Kavala Hospital
+ Kavala Hospital
+ Kavala医院
+
+
+ Athira Regional
+ Athira Regional
+ Athira Regional
+ Athira Regional
+ Athira Krankenhaus
+ Hôpital d'Athira
+ Athira Regional
+ Athira Regional
+ Athira Regional
+ Athira地区
+
+
+ Pyrgos Hospital
+ Pyrgos Hospital
+ Pyrgos Hospital
+ Pyrgos Hospital
+ Pyrgos Krankenhaus
+ Hôpital de Pyrgos
+ Pyrgos Hospital
+ Pyrgos Hospital
+ Pyrgos Hospital
+ Pyrgos医院
+
+
+ South East Hospital
+ South East Hospital
+ South East Hospital
+ South East Hospital
+ Süd-Ost Krankenhaus
+ Hôpital du Sud-Est
+ South East Hospital
+ South East Hospital
+ South East Hospital
+ 东南医院
+
+
+ Tanouka Regional
+ Tanouka Regional
+ Tanouka Regional
+ Tanouka Regional
+ Tanouka Krankenhaus
+ Hôpital de Tanouka
+ Tanouka Regional
+ Tanouka Regional
+ Tanouka Regional
+ Tanouka地区
+
+
+ North East Airport Hospital
+ North East Airport Hospital
+ North East Airport Hospital
+ North East Airport Hospital
+ Nord-Ost Flughafen Krankenhaus
+ Hôpital de l'aéroport
+ North East Airport Hospital
+ North East Airport Hospital
+ North East Airport Hospital
+ 东北机场医院
+
+
+ North Airport HQ
+ North Airport HQ
+ North Airport HQ
+ North Airport HQ
+ Nord Flughafen HQ
+ Base aérienne nord
+ North Airport HQ
+ North Airport HQ
+ North Airport HQ
+ 北部机场总部
+
+
+ South Western Airport HQ
+ South Western Airport HQ
+ South Western Airport HQ
+ South Western Airport HQ
+ Süd-Westliche HQ Flughafen
+ Base aérienne sud-ouest
+ South Western Airport HQ
+ South Western Airport HQ
+ South Western Airport HQ
+ 西南机场总部
+
+
+
+
+ Vehicular Manslaughter
+ dopravní zabití
+ Vol de véhicule
+ Homicidio Vehicular
+ Omicidio colposo veicolare
+ Kołowego Manslaughter
+
+ Atropelamento
+ Fahrlässige Tötung
+ 载具撞人
+
+
+ Manslaughter
+ Zabití
+ Homicide involontaire
+ Homicidio
+ Omicidio colposo
+ Zabójstwo
+
+ Homicidio Involuntario
+ Totschlag
+ 过失杀人
+
+
+ Escaping Jail
+ Jak uniknout vězení
+ Evasion de prison
+ Escaparse de la Cárcel
+ Fuga dalla prigione
+ Uciekając Jail
+
+ Fuga da Prisão
+ Ausbruch
+ 逃离监狱
+
+
+ Attempted Auto Theft
+ Pokusili Theft Auto
+ Tentative de vol de véhicule
+ Atentado: Robo de Vehículo
+ Tentativo di furto d'auto
+ Próba Theft Auto
+
+ Tentativa de Roubo de Veiculo
+ Versuchter Autodiebstahl
+ 企图盗窃载具
+
+
+ Use of illegal explosives
+ Používání nelegálních výbušnin
+ Utilisation d'explosifs illégaux
+ Uso de Explosivos Ilegales
+ Uso di esplosivi illegali
+ Używanie nielegalnych materiałów wybuchowych
+
+ Uso de explosivos ilegais
+ Verwendung von illegalen Sprengstoff
+ 使用非法爆炸物
+
+
+ Robbery
+ Loupež
+ Vol
+ Robo
+ Rapina
+ Rozbój
+
+ Roubo
+ Raub
+ 抢劫
+
+
+ Kidnapping
+ Únos
+ Enlèvement
+ Secuestro
+ Rapimento
+ Porwanie
+
+ Sequestro
+ Entführung
+ 绑架
+
+
+ Attempted Kidnapping
+ pokus o únos
+ Tentative de kidnapping
+ Atentado: Secuestro
+
+ Tentativa de Sequestro
+ Versuchte Entführung
+ Tentativo di rapimento
+ Próba porwania
+ 绑架未遂
+
+
+ Public Intoxication
+ veřejné Intoxikace
+ Intoxication publique
+ Intoxicación Pública
+
+ Uso de Droga em Publico
+ Öffentlicher Drogenmissbrauch
+ Uso di stupefacenti in pubblico
+ Upojenie publiczny
+ 公共场合使用非法药品
+
+
+ Grand Theft
+ velká loupež
+ Vol de voiture
+ Robo Mayor
+ grande furto
+ Wielka kradzież
+
+ Grande Roubo
+ Auto Diebstahl
+ 盗窃
+
+
+ Petty Theft
+ Petty Theft
+ Petit vol
+ Robo Menor
+ piccoli furti
+ Drobnych kradzieży
+
+ Pequeno Roubo
+ Kleiner Diebstahl
+ 小偷小摸
+
+
+ Hit and run
+ Zavinit nehodu a ujet
+ Délit de fuite
+ Pega y Corre
+ Mordi e fuggi
+ Uderz i uciekaj
+
+ Fugir de Batida
+ Fahrerflucht
+ 交通肇事后逃逸
+
+
+ Drug Possession
+ držení drog
+ Possession de drogue
+ Posesión de Drogas
+ possesso di droga
+ Posiadanie narkotyków
+
+ Posse de Droga
+ Drogenbesitz
+ 持有毒品
+
+
+ Intent to distribute
+ Intent distribuovat
+ Intention de distribuer
+ Intención de Distribuir
+
+ Tentativa de Trafico
+ Versuchter Drogenhandel
+ Tentativo di spaccio
+ Zamiarem dystrybucji
+ 意图散布
+
+
+ Drug Trafficking
+ Obchodování s drogami
+ Trafic de drogue
+ Tráfico de Drogas
+
+ Trafico de Drogas
+ Drogenhandel
+ Vendita di droga
+ Handel narkotykami
+ 贩毒
+
+
+ Burglary
+ loupež
+ Cambriolage
+ Robo de Casa
+ furto con scasso
+ Włamanie
+
+ Arrombamento
+ Einbruch
+ 盗窃
+
+
+ Tax Evasion
+ Daňový únik
+ Évasion fiscale
+ Evadir Impuestos
+
+ Evasão Fiscal
+ Steuerhinterziehung
+ Evasione delle tasse
+ Unikanie podatków
+ 逃税
+
+
+ Terrorism
+ Terorismus
+ Terrorisme
+ Terrorismo
+
+ Terrorismo
+ Terrorismus
+ Terrorismo
+ Terroryzm
+ 恐怖主义
+
+
+ Unlicensed Hunting
+ Volně prodejné Hunting
+ Chasse sans licence
+ Caza sin Licencia
+
+ Caça sem Licença
+ Jagen ohne Jagdschein
+ Caccia senza licenza
+ Polowanie nielicencjonowane
+ 无证狩猎
+
+
+ Organ Theft
+ Organ Krádež
+ Vol d'organes
+ Robo de Organos
+ organo furto
+ Narząd kradzieżą
+
+ Roubo de Orgãos
+ Organ Diebstahl
+ 盗窃公共财物
+
+
+ Attempted Organ Theft
+ Pokus o krádež Organ
+ Tentative de vol d'organes
+ Atentado: Robo de Organos
+ Tentativo furto di organi
+ Próba kradzieży narządów
+
+ Tentativa de Roubo de Orgãos
+ Versuchter Organ Diebstahl
+ 盗窃公共财物未遂
+
+
+ Driving without license
+ Jízda bez povolení
+ Conducir sin Licencia
+
+ Absence du permis de conduire
+ Dirigir sem Licença
+ Fahren ohne Führerschein
+ Guida senza patente
+ Jazda bez licencji
+ 无证驾驶
+
+
+ Driving on the wrong side of the road
+ Jízda v špatným směrem do ulice
+ Conducir en el lado incorrecto de la calle
+
+ Conduite sur le mauvais côté de la route
+ Dirigindo no sentido contrario
+ Guida Contromano
+ Jazda po niewłaściwej stronie drogi
+ Fahren in die falsche Richtung der Straße
+ 在错误的道路上驾驶
+
+
+ Not respecting the signalizations
+ Nerespektování signalizací
+ No respetar las señales
+
+ Non respect des signalisations
+ Não respeitar as sinalizações
+ Nicht unter Beachtung der Signalisierungen
+ Mancato rispetto dei segnali stradali
+ Nie przestrzegając sygnalizacji czy
+ 不遵守交通灯号
+
+
+ Speeding
+ rychlá jízda
+ Exceso de Velocidad
+
+ Excès de vitesse
+ Excesso de Velocidade
+ Geschwindigkeitsüberschreitung
+ Eccesso di velocità
+ Przyśpieszenie
+ 超速
+
+
+ No headlight in the night
+ No světel v noci
+ Manejar sin luces en la noche
+
+ Absence de phare la nuit
+ Farois Apagados Durante a Noite
+ Fahren ohne Licht
+ Luci spente durante la notte
+ Brak świateł w nocy
+ 夜间不开车灯
+
+
+ Driving kart without helmet
+ Hnací motokáru bez helmy
+ Manejar un Kart sin casco
+
+ Non-port du casque en Kart
+ Dirigindo Kart Sem Capacete
+ Fahren ohne Helm
+ Guida di Kart senza casco
+ Jazda bez kasku gokarta
+ 驾驶卡丁车不戴安全头盔
+
+
+ Badly parked vehicle
+ Špatně zaparkované vozidlo
+ Vehículo mal estacionado
+
+ Véhicule mal garé
+ Veículo Mal Estacionado
+ Parksünder
+ Veicolo mal parcheggiato
+ Źle zaparkowany samochód
+ 乱停放载具
+
+
+ Rebel vehicle (Not armed)
+ Rebel vozidla (není ozbrojený)
+ Vehículo Rebelde (No Armado)
+
+ Véhicule rebel non armé
+ Veículo Rebelde(Não Armado)
+ Rebellen Fahrzeug (nicht bewaffnet)
+ Veicolo blindato(Non armato)
+ Rebel pojeździe (nie czuwa)
+ 叛军载具(无武装)
+
+
+ Grand Theft (Civilian Vehicle)
+ Grand Theft (Civilian Vehicle)
+ Robo Mayor (Vehículo Civil)
+
+ Vol de véhicule civil
+ Roubo de Veículo (Veículo Civil)
+ Schwerer Diebstahl (Zivilfahrzeug)
+ Furto di veicolo (Civile)
+ Grand Theft (Cywilny Vehicle)
+ 盗窃载具(民用载具)
+
+
+ Grand Theft (Military Vehicle)
+ Grand Theft (Military Vehicle)
+ Robo Mayor (Vehículo Militar)
+
+ Vol de véhicule militaire
+ Roubo de Veículo(Militar)
+ Schwerer Diebstahl (Dienstfahrzeug)
+ Furto di veicolo militare
+ Grand Theft (pojazd wojskowy)
+ 盗窃载具(军用载具)
+
+
+ Armored Vehicle
+ obrněné vozidlo
+ Vehículo Blindado
+
+ Véhicules blindés
+ Veículo Armado
+ Panzerfahrzeug
+ Veicolo D'assalto
+ Opancerzony pojazd
+ 装甲载具
+
+
+ Flying over the city without authorization
+ Létání nad městem bez povolení
+ Volar sobre la ciudad sin autorización
+
+ Survol de ville sans autorisation
+ Sobrevoando sobre a cidade sem autorização
+ Fliegen über die Stadt ohne Genehmigung
+ Guida di velivolo su città abitata senza autorizzazione
+ Latające nad miastem bez zezwolenia
+ 未经授权飞越城市
+
+
+ Closing the street without authorization
+ Uzavření ulici bez povolení
+ Cerrar las calles sin autorización
+
+ Interdiction de se poser sans autorisation
+ Fechar Rua Sem Autorização
+ Absperren der Straße ohne Genehmigung
+ Impedimento del traffico senza permesso
+ Zamknięcie ulicy bez zezwolenia
+ 擅自堵塞街道
+
+
+ Open carry in city (Legal Weapon)
+ open carry ve městě (právní Weapon)
+ Cargar Arma Abiertamente en la Ciudad (Arma Legal)
+ Aprire il trasporto in città (Arma Legale)
+ Otwarty Carry w mieście (prawny Weapon)
+
+ Arme légale visible en ville
+ Portar em Cidades(Arma Legal)
+ Offenes Tragen einer legalen Waffe in der Stadt
+ 公开携带武器进入城市(合法武器)
+
+
+ Rebel weapon
+ Rebel zbraň
+ Arma Rebelde
+
+ Armes rebelles
+ Arma Rebelde
+ Rebellen Waffe
+ Arma Ribelle
+ Rebel bronią
+ 叛军武器
+
+
+ Illegal clothing
+ Nelegální oblečení
+ Ropa Ilegal
+ abbigliamento illegale
+ Nielegalna odzież
+
+ Vêtements illégaux
+ Roupas Ilegais
+ Illegale Kleidung
+ 非法服装
+
+
+ Hiding face (Mask)
+ Schovává tvář (Mask)
+ Ocultar su Cara (Máscara)
+ Nascondere faccia (Mask)
+ Ukrywając twarz (maska)
+
+ Cacher son visage
+ Esconder o Rosto(Mascara)
+ Verstecken des Gesichts (Maske)
+ 隐藏面部(面具)
+
+
+ Refuses to cooperate
+ Odmítá spolupracovat
+ Reusa a Cooperar
+ Si rifiuta di collaborare
+ Odmawia współpracy
+
+ Refus d'obtempérer
+ Recusou-se a Cooperar
+ Behinderung der Staatsgewalt
+ 拒绝合作
+
+
+ Hit and run
+ Zavinit nehodu a ujet
+ Golpea y Corre
+ Mordi e fuggi
+ Uderz i uciekaj
+
+ Délit de fuite
+ Bater e Fugir
+ Fahrerflucht
+ 交通肇事逃逸
+
+
+ Insulting a civilian
+ Urážky civilní
+ Insultar a un Civil
+
+ Insulte envers un civil
+ Insulto a Civil
+ Beleidigung
+ Insulto a civile
+ Obrażanie cywilem
+ 侮辱平民
+
+
+ Insulting a soldier
+ Urážky vojáka
+ Insultar a un Soldado
+
+ Insulte envers un militaire
+ Insulto as Autoridades
+ Beamtenbeleidigung
+ Insulto a pubblico ufficiale
+ Znieważenie żołnierza
+ 侮辱士兵
+
+
+ Drug dealing
+ Urážky vojáka...
+ Venta de Drogas
+
+ Trafique de drogue
+ Trafico de Drogas
+ Drogenhandel
+ Traffico di droga
+ Handel narkotykami
+ 毒品交易
+
+
+ Federal Reserve breaking
+ Federální rezervní systém lámání
+ Entrar a la Reserva Federal
+
+ Intrusion dans la réserve fédérale
+ Invasão a Reserva Federal
+ Bankeinbruch
+ Rapina alla Riserva Federale
+ Rezerwa Federalna łamanie
+ 非法打开金库
+
+
+ Killing of a civilian
+ Zabíjení civilní
+ Homicidio de un Civil
+ Uccisione di un civile
+ Zabójstwo cywilnej
+
+ Meurtre d'un civil
+ Matou um Civil
+ Töten eines Zivilen
+ 杀害平民
+
+
+ Killing of a soldier
+ Zabití vojáka
+ Homicidio de un Soldado
+
+ Meurtre d'un militaire
+ Matou um Policial
+ Töten eines Beamten
+ Omicidio di un agente
+ Zabijając żołnierza
+ 杀害士兵
+
+
+
+
+ Gas Storage
+ Gas Storage
+ Stockage de gaz
+ Almacenamiento de Combustible
+ Stoccaggio di Gas
+ Magazynów gazu
+
+ Treibstofflager
+ Posto de Combustível
+ 燃料储存
+
+
+ Supply
+ Zásobování
+ Ravitailler
+ Suministro
+ Fornitura
+ Dostawa
+
+ Liefern
+ Abastecer
+ 供应
+
+
+ Store
+ Obchod
+ Déposer
+ Guardar
+ Negozio
+ Sklep
+
+ Lagern
+ Guardar
+ 商场
+
+
+ Stop
+ Stop
+ Arrêter
+ Parar
+ Stop
+ Zatrzymać
+
+ Stoppen
+ Parar
+ 停止
+
+
+ Tanker is already in use.
+ Tankery je již používán.
+ Le camion citerne est déjà en cours d'utilisation.
+ El Camión Cisterna ya esta siendo usado.
+ La cisterna è già in uso.
+ Cysterna jest już w użyciu.
+
+ Tankwagen wird bereits benutzt.
+ Os tanques já estão em uso.
+ 油轮已投入使用。
+
+
+ Gas station is in use.
+ Čerpací stanice je v provozu.
+ La station-service est en cours de fonctionnement.
+ La estación ya se esta usando.
+ La stazione di benzina è già in uso.
+ Stacja benzynowa jest w użyciu.
+
+ Tankstelle wird bereits beliefert.
+ O posto já está sendo usado.
+ 加油站在使用中。
+
+
+ Tanker is empty.
+ Tankery je prázdný.
+ Le camion citerne est vide.
+ El Camión cisterna esta vacío.
+ La cisterna è vuota.
+ Cysterna jest pusta.
+
+ Treibstofftank ist leer.
+ Os tanques estão vazios.
+ 油轮是空的。
+
+
+ Tankers is full.
+ Tankery je plná.
+ Réservoir plein.
+ El Camión cisterna esta lleno.
+ La cisterna è piena.
+ Zbiornikowce jest pełna.
+
+ Treibstofftank ist voll.
+ Os tanques estão cheios.
+ 油轮已满。
+
+
+ Gas station has enough fuel.
+ Čerpací stanice má dostatek paliva.
+ La station service a suffisamment de carburant.
+ La estación tiene suficiente gasolina.
+ Il distributore ha abbastanza benzina.
+ Stacja benzynowa ma wystarczającą ilość paliwa.
+
+ Tankstelle hat genug Treibstoff.
+ O posto tem combustível suficiente.
+ 加油站有足够的燃料。
+
+
+ This gas station is supplied through a pipeline.
+ Tento Čerpací stanice se dodává potrubím.
+ Cette station service est fournie par un pipeline
+ Esta estación es suministrada por una tubería.
+ Questa stazione di gas è alimentata attraverso una tubatura.
+ Ta stacja gaz jest dostarczany rurociągiem.
+
+ Diese Tankstelle wird über eine Pipeline versorgt.
+ Esse posto é abastecido através de uma mangueira.
+ 这个加油站通过管道供给。
+
+
+ Discontinued operation.
+ Ukončená činnost.
+ Activité abandonnée.
+ Operación discontinuada.
+ Incarico Incompleto.
+ Działalność zaniechana.
+
+ Vorgang abgebrochen.
+ Operação descontinuada.
+ 停止运营。
+
+
+ Your share is $%1.
+ Váš podíl $%1.
+ Votre part est de $%1.
+ Tu ganancia es $%1.
+ La vostra quota è di $%1.
+ Twój udział jest $%1.
+
+ Dein Anteil beträgt $%1.
+ A sua parte é de R$%1.
+ 你的份额为 $%1.
+
+
+
+
+ Mission Failed
+ Mise selhala
+ Mission échouée
+ Misión fallida
+ Missione fallita
+ Misja nie powiodła się
+ Missão fracassada
+ Миссия провалена
+ Mission fehlgeschlagen.
+ 任务失败
+
+
+ You are not white-listed to use this slot.
+ Mise selhala
+ Vous n'êtes pas white-listé.
+ No tienes permiso de usar este slot.
+ Missione fallita
+ Misja nie powiodła się
+ Missão fracassada
+ Миссия провалена
+ Nicht auf der Whitelist.
+ 你不是白名单不能使用这个栏位。
+
+
+ You are not allowed to use this slot because you do not have the appropriate permissions. Try another slot.
+ Ty jsou není dovoleno používat tento slot, protože nemáte příslušná oprávnění. Zkuste použít jiný slot.
+ Vous n'êtes pas autorisé à utiliser cet emplacement parce que vous ne disposez pas des autorisations appropriées. Essayez un autre emplacement.
+ No puede usar este slot porque no tiene los permisos requeridos. Por favor trate con otro slot.
+ Non è consentito usare questo slot, perché non si dispone delle autorizzazioni appropriate. Prova un altro slot.
+ Nie wolno korzystać z tego gniazda, ponieważ nie masz odpowiednich uprawnień. Spróbuj użyć innego gniazda.
+ Você não tem permissão para usar esse slot, porque você não tem as permissões apropriadas. Tente outro slot.
+ Вы не можете использовать этот слот, потому что у вас нет соответствующих разрешений. Попробуйте использовать другой слот.
+ Du bist nicht auf der Whitelist, deswegen kannst du diesen Platz nicht verwenden. Versuche es auf einen anderen Platz.
+ 你不允许使用此栏位,因为你没有适当的权限。尝试另一个栏位。
+
+
+
+
+ Mission Failed
+ Mise selhala
+ Mission échouée
+ Misión fallida
+ Missione fallita
+ Misja nie powiodła się
+ Missão fracassada
+ Миссия провалена
+ Mission fehlgeschlagen
+ 任务失败
+
+
+ You are blacklisted from cops.
+ Ty jsou na černé listině z policajtů.
+ Vous êtes sur blacklisté de la police.
+ Usted está en la lista negra de policías.
+ Stai lista nera da poliziotti.
+ Jesteś na czarnej liście od policjantów.
+ Você está na lista negra de policiais.
+ Вы в черном списке от ментов.
+ Du bist von Polizisten auf die schwarze Liste gesetzt worden.
+ 你被警察列入黑名单。
+
+
+ You are not allowed to be a cop due to previous actions and the admins have removed you from being a cop.
+ Ty jsou nesmí být policajt vzhledem k předcházejícími akcemi a administrátoři vám odstraní z bytí policista.
+ Vous avez été blacklisté de la police en raisons d'actions précédentes allant à l'encontre des règles. Vous ne pouvez plus devenir policier.
+ No tiene permiso a ser policía por acciones anteriores. Los administradores han bloqueado su acceso.
+ Non è consentito fare il poliziotto a causa di azioni precedenti e gli amministratori di aver rimosso da essere un poliziotto.
+ Nie mogą być policjantem z powodu wcześniejszych działań oraz administratorzy usunęli cię od bycia policjantem.
+ Você não tem permissão para ser um policial devido a ações anteriores e os admins ter removido-lo de ser um policial.
+ Вы не можете быть полицейским в связи с предыдущими действиями и админы удалили вас от того, чтобы быть полицейским.
+ Du bist aufgrund früherer Aktion, kein Polizist mehr. Du wurdest von den Admins aus der Polizei entfernt.
+ 由于以前的行为,你不再是警察,警局已将你从警队中开除。
+
+
+
+
+ The SpyGlass sees you!
+ Dalekohled tě vidí!
+ SpyGlass vous voit !
+ El SpyGlass te ve!
+ Il cannocchiale si vede!
+ Lunetę widzi!
+ O SpyGlass te vê!
+ SpyGlass видит, что вы!
+ SpyGlass sieht dich!
+ SpyGlass正在检测你!
+
+
+ You were detected by the SpyGlass.
+ Vy byly detekovány dalekohled.
+ Vous avez été détecté par SpyGlass.
+ Fue detectado por el SpyGlass.
+ Lei è stato rilevato dal SpyGlass.
+ Ty zostały wykryte przez lunetę.
+ Você foi detectado pelo SpyGlass.
+ Вы были обнаружены с помощью SpyGlass.
+ Du wurdest von SpyGlass erkannt.
+ 你被SpyGlass检测。
+
+
+ You were detected for cheating and have been reported to the server. Enjoy your day.
+ Vy byly detekovány za podvádění a byly zaznamenány na server. Užijte si svůj den.
+ Vous avez été détecté pour triche et avez été signalé au serveur. Profitez de votre journée.
+ Fue detectada por hacer trampas y se le ha informado al servidor. Disfruta tu día.
+ Lei è stato rilevato per truffa e sono stati segnalati per il server. Buona giornata.
+ Ty wykryto oszustwo i zostały zgłoszone do serwera. Miłego dnia.
+ Está foram detectados por engano e têm sido relatados para o servidor. Aproveite seu dia.
+ Вы были обнаружены для мошенничества и было сообщено на сервер. Удачного дня.
+ >Du wurdest wegen Betrug erkannt und an den Server gemeldet. Genieße deinen Tag.
+ 你被发现作弊,并已报告给服务器。珍惜你的生活吧。
+
+
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-FLAG: %1 : %2 : %3
+ SPYGLASS-ERKENNUNG: %1 : %2 : %3
+ SPYGLASS-标记: %1 : %2 : %3
+
+
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/<br/>Name: %1<br/>Detection: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Betrüger Erkannt</t><br/<br/>Name: %1<br/>Erkennung: %2
+ <t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>作弊者被标记</t><br/<br/>姓名:%1<br/>发现:%2
+
+
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 was observed by SPY-GLASS, he/she was trying to access commanding menu:\n\n %2\n\n and that commanding-menu is not known to the system. PLEASE NOTE he/she may not be cheating but the SPY-GLASS found it relevant to report in.
+ %1 wurde beobachtet durch SPY-GLASS. Er/Sie hatte versucht auf das Befehlsmenü:\n\n %2\n\n zuzugreifen, diese ist dem System aber nicht bekannt. BITTE BEACHTE! Er/Sie betrügt deshalb nicht, aber SPY-GLASS fand es trotzdem relevant es zu melden.
+ %1 被SPY-GLASS检测, 他/她试图访问命令菜单:\n\n %2\n\n 并且系统不知道命令菜单。请注意他/她可能不会作弊,但SPY-GLASS发现了它的报告相关。
+
+
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 is not allowed TYPE: %2 NS: MN
+ Variable: %1 ist nicht erlaubt. TYPE: %2 NS: MN
+ 变量:不允许: %1 类型: %2 NS: MN
+
+
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 is not allowed TYPE: %2 NS: UI
+ Variable: %1 ist nicht erlaubt. TYPE: %2 NS: UI
+ 变量:不允许: %1 类型: %2 NS: UI
+
+
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3
+ ||SPY-GLASS Beobachtung|| Name: %1 | UID: %2 | Grund: %3
+ ||SPY-GLASS 观察|| 姓名:%1 | UID:%2 | 原因:%3
+
+
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable set before client initialized: %1
+ Variable gesetzt bevor Client initialisiert: %1
+ 客户端初始化之前的变量集:%1
+
+
+
+
+ EMS Requested
+ EMS Požadované
+ Medecin demandé
+ Medico Solicitado
+ EMS richiesto
+ EMS Zamówiony
+ EMS solicitada
+ EMS Запрошенный
+ Sanitäter benachrichtigt
+ EMS要求
+
+
+ Delivery Job Accepted
+ Dodávka Job Accepted
+ Mission de livraison acceptée
+ Misión de Entrega Aceptada
+ Incarico Postale accettato
+ Dostawa Praca Zaakceptowany
+ Entrega aceitado Job
+ Доставка Работа Принято
+ Lieferauftrag angenommen
+ 接受交货工作
+
+
+ Delivery Job Failed
+ Nepodařilo dodávka Job
+ Mission de livraison échouée
+ Misión de Entrega Fallada
+ Incarico Postale Fallito
+ Dostawa Praca Failed
+ Falha de entrega Job
+ Доставка Работа Ошибка
+ Lieferauftrag fehlgeschlagen
+ 交货工作失败
+
+
+ Delivery Job Completed
+ Dokončena dodávka Job
+ Mission de livraison réussie
+ Misión de Entrega Completada
+ Incarico Postale Completato
+ Dostawa Praca Zakończony
+ Concluída a entrega Job
+ Доставка Работа Завершено
+ Lieferauftrag abgeschlossen
+ 交货工作已完成
+
+
+ Received A Text Message
+ Přijetí textové zprávy
+ SMS reçu
+ Recibió un mensaje de texto
+ Hai ricevuto un messaggio di testo
+ Otrzymał wiadomość tekstową
+ Recebeu uma mensagem de texto
+ Получено текстовое сообщение
+ Erhielt eine Textnachricht
+ 收到短信
+
+
+ 911 Dispatch Center
+ 911 Dispatch Center
+ 911 Dispatch Centre
+ 911 Centro de Despacho
+ 911 Centro Richieste
+ 911 Dispatch Center
+ 911 Centro de Despacho
+ 911 диспетчерский центр
+ 110 Dispatch Zentrum
+ 911调度中心
+
+
+ Admin Dispatch Center
+ Admin Dispatch Center
+ Message Administrateur
+ Centro de Despacho de Administradores
+ Admin centro di spedizione
+ Administrator Dispatch Center
+ Administrador Centro de Despacho
+ Администратор диспетчерский центр
+ Admin Verteilzentrum
+ 管理调度中心
+
+
+ Admin Message
+
+
+
+ Admin Nachricht
+
+ Message Admin
+
+
+ 管理员信息
+
+
+
+
+ Civ Plane
+
+ Avion civil
+
+
+
+
+
+ Zivilflugzeug
+ 民用飞机
+
+
+ Police HQ
+
+ QG de Police
+
+
+
+
+
+ Polizei HQ
+ 警察总部
+
+
+ Police Store
+
+ Magasin de la police
+
+
+
+
+
+ Polizei Ausrüstung
+ 警察商店
+
+
+ Police Car
+
+ Concessionnaire de police
+
+
+
+
+
+ Dienstfahrzeuge
+ 警车
+
+
+ Police Heli
+
+ Héliport de police
+
+
+
+
+
+ Polizei Helikopter
+ 警用直升机
+
+
+ Police Boat
+
+ Vendeur de bateaux de police
+
+
+
+
+
+ Polizei Boote
+ 警察船舶
+
+
+ Rebel Car
+
+ Concessionnaire rebelle
+
+
+
+
+
+ Rebellen Fahrzeuge
+ 叛军载具
+
+
+ Rebel Heli
+
+ Héliport rebelle
+
+
+
+
+
+ Rebellen Helikopter
+ 叛军直升机
+
+
+ Police HQ
+
+ QG de Police
+
+
+
+
+
+ Polizei HQ
+ 警察总部
+
+
+
+
+ arrested %1
+ zadržen %1
+ a arrêté %1
+ arrestó a %1
+
+
+ prendeu %1
+ арестовано %1
+ hat %1 verhaftet
+ 逮捕 %1
+
+
+ %1 - %2 arrested %3
+ %1 - %2 %3 zatčen
+ %1 - %2 a arrêté %3
+ %1 - %2 arrestó a %3
+
+
+ %1 - %2 prendeu %3
+ %1 - %2 %3 арестовано
+ %1 - %2 hat %3 verhaftet.
+ %1 - %2 逮捕 %3
+
+
+ picked up %1 %2
+ vyzvednout %1 %2
+ a ramassé %1 %2
+ recogió %1 %2
+
+
+ pegou %1 %2
+ поднял %1 %2
+ hat $%1 $%2 aufgehoben.
+ 拿起 %1 %2
+
+
+ %1 - %2 picked up %3 %4
+ %1 - %2 vyzvednout%3 %4
+ %1 - %2 a ramassé %3 %4
+ %1 - %2 recogió %3 %4
+
+
+ %1 - %2 pegou %3 %4
+ взял $%1 от земли. Банковский баланс: $%2 на руку Баланс: $%3
+ %1 - %2 hat %3 %4 aufgehoben.
+ %1 - %2 捡起 %3 %4
+
+
+ picked up $%1 from the ground. Bank Balance: $%2 On Hand Balance: $%3
+ zvedl $%1 ze země. Banka Zůstatek: $%2 po zralé úvaze rukou: $%3
+ a récupéré $%1 par terre. Argent en banque : $%2 - Cash : $%3
+ recogió $%1 del suelo. Saldo Bancario: $%2 Saldo en Efectivo: $%3
+
+
+ pegou R$%1 do chão. Quantia no Banco: R$%2 Quantia na Mão: R$%3
+ взял $%1 от земли. Банковский баланс: $%2 на руку Баланс: $%3
+ hat $%1 vom Boden aufgehoben. Bankkonto: $%2 Bargeld: $%3
+ 从地上捡起 $%1。银行存款余额:$%2 手上余额:$%3
+
+
+ %1 - %2 picked up $%3 from the ground. Bank Balance: $%4 On Hand Balance $%5
+ %1 - %2 vyzvednout $%3 ze země. Banka Zůstatek: $%4 po ruce Balance $%5
+ %1 - %2 a récupéré $%3 par terre. Argent en banque : $%4 Cash : $%5
+ %1 - %2 recogió $%3 del suelo. Saldo Bancario: $%4 Saldo en Efectivo: $%5
+
+
+ %1 - %2 pegou R$%3 do chão. Quantia no Banco: R$%4 Quantia na mão: R$%5
+ %1 - %2 взял $%3 от земли. Банковский баланс: $%4 На Hand Баланс $%5
+ %1 - %2 hat $%3 vom Boden aufgehoben. Bankkonto: $%4 Bargeld: $%5
+ %1 - %2 从地上捡起 $%3。银行存款余额:$%4 手上余额 $%5
+
+
+ robbed $%1 from %2. Bank Balance: $%3 On Hand Balance: $%4
+ oloupen $%1 z %2. Banka Zůstatek: $%3 po zralé úvaze rukou: $%4
+ a volé $%1 de %2. Argent en banque : $%4 Cash : $%4
+ robó $%1 de $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
+
+
+ roubou R$%1 de %2. Quantia no Banco: R$%3 Quantia na Mão: R$%4
+ ограбил $%1 из %2. Банковский баланс: $%3 на руку Баланс: $%4
+ hat $%1 von $%2 geraubt. Bankkonto: $%3 Bargeld: $%4
+ 从 %2 抢劫 $%1。银行存款余额:$%3 手上余额:$%4
+
+
+ %1 - %2 robbed $%3 from %4. Bank Balance: $%5 On Hand Balance: $%6
+ %1 - %2 okraden $%3 z %4. Banka Zůstatek: $%5 po zralé úvaze rukou: $%6
+ %1 - %2 a volé $%3 de %4. Argent en banque : $%5. Cash : $%6
+ %1 - %2 robó $%3 de $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
+
+
+ %1 - %2 roubou R$%3 de %4. Quantia no Banco: R$%5 Quantia na Mão: R$%6
+ %1 - %2 ограбил $%3 от %4. Банковский баланс: $%5 на руку Баланс: $%6
+ %1 - %2 hat $%3 von %4 geraubt. Bankkonto: $%5 Bargeld: $%6
+ %1 - %2 抢走了%4 $%3。银行存款余额:$%5 手上余额:$%6
+
+
+ created a gang named: %1 for $%2
+ Vytvořili gang s názvem: %1 za $%2
+ a créé un gang nommé : %1 pour $%2
+ creó una pandilla llamada: %1 por $%2
+
+
+ criou uma gangue chamada: %1 por R$%2
+ создали банду под названием: %1 за $%2
+ hat eine Gang mit dem Namen: $1 für $%2 erstellt.
+ 创建一个名为:%1 的帮派 花费 $%2
+
+
+ %1 - %2 created a gang named: %3 for $%4
+ %1 - %2 vytvořili gang s názvem: %3 za $%4
+ %1 - %2 a créé un gang nommé : %3 pour $%4
+ %1 - %2 creó una pandilla llamada: %3 por $%4
+
+
+ %1 - %2 criou uma gangue chamada: %3 por R$%4
+ %1 - %2 создали банду под названием: %3 за $%4
+ %1 - %2 hat eine Gang mit dem Namen: %3 für $%4 erstellt.
+ %1 - %2 创建一个名为:%3 的帮派 花费 $%4
+
+
+ bought a house for $%1. Bank Balance: $%2 On Hand Cash: $%3
+ koupil dům za $%1. Banka Zůstatek: $%2 On Hand Cash: $%3
+ a acheté une maison pour $%1. Argent en banque : $%2 Cash : $%3
+ compró una casa por $%1. Saldo Bancario: $%2 Saldo en Efectivo: $%3
+
+
+ comprou uma casa por R$%1. Quantia no Banco: R$%2 Quantia na Mão: R$%3
+ купил дом за $%1. Банковский баланс: $%2 на руках наличные деньги: $%3
+ hat sich ein Haus für $%1 gekauft. Bankkonto: $%2 Bargeld: $%3
+ 买了一所房子花费 $%。 银行存款余额: $%2 手头现金: $%3
+
+
+ %1 - %2 bought a house for $%3. Bank Balance: $%4 On Hand Cash: $%5
+ %1 - %2 koupil dům za $%3. Banka Zůstatek: $%4 On Hand Cash: $%5
+ %1 - %2 a acheté une maison pour $%3. Argent en banque : $%4 Cash : $%5
+ %1 - %2 compró una casa por $%3. Saldo Bancario: $%4 Saldo en Efectivo: $%5
+
+
+ %1 - %2 comprou uma casa por R$%3. Quantia no Banco: R$%4 Quantia na Mão: R$%5
+ %1 - %2 купил дом за $%3. Банковский баланс: $%4 на руках наличные деньги: $%5
+ %1 - %2 hat sich ein Haus für $%3 gekauft. Bankkonto: $%4 Bargeld: $%5
+ %1 - %2 买了一所房子花费 $%3。银行存款余额:$%4 手头现金:$%5
+
+
+ sold a house for $%1. Bank Balance: $%2
+ prodal dům za $%1. Banka Zůstatek: $%2
+ a vendu une maison pour $%1. Argent en banque : $%2
+ vendió una casa por $%1. Saldo Bancario: $%2
+
+
+ vendeu uma casa por R$%1. Quantia no Banco: R$%2
+ продал дом за $%1. Банковский баланс: $%2
+ hat sein Haus für $%1 verkauft. Bankkonto: $%2
+ 卖掉房子得到 $%1。银行存款余额:$%2
+
+
+ %1 - %2 sold a house for $%3. Bank Balance: $%4
+ %1 - %2 prodal dům za $%3. Banka Zůstatek: $%4
+ %1 - %2 a vendu une maison pour $%3. Argent en banque : $%4
+ %1 - %2 vendió una casa por $%3. Saldo Bancario: $%4
+
+
+ %1 - %2 vendeu uma casa por R$%3. Quantia no Banco: R$%4
+ %1 - %2 продал дом за $%3. Банковский баланс: $%4
+ %1 - %2 hat sich ein Haus für $%3 verkauft. Bankkonto: $%4
+ %1 - %2 卖掉房子得到 $%3。银行存款余额: $%4
+
+
+ chopped vehicle %1 for $%2 On Hand Cash(pre-chop): $%3
+ nasekané vozidlo %1 nebo $%2 na ruce hotovosti (pre-CHOP): $%3
+ a mis en pièces le véhicule %1 pour $%2. Cash (avant la vente) : $%3
+ vendió el vehiculo %1 en el desguace por $%2. Saldo en Efectivo(antes de la venta): $%3
+
+
+ desmanchou um %1 por R$%2 Quantia na Mão (antes do desmanche): R$%3
+ нарезанного машина %1 или $%2 на руках Cash (предварительно отбивной): $%3
+ hat das Fahrzeug %1 für $%2 beim Schrotthändler verschrottet. Bargeld(vor Schrott): $%3
+ 出售盗窃到的载具 %1 赚取 $%2 手头现金(预付):$%3
+
+
+ %1 - %2 chopped vehicle %3 for $%4 On Hand Cash(pre-chop): $%5
+ %1 - %2 nasekané vozidla %3 za $%4 po ruce hotovosti (před-kotleta): $%5
+ %1 - %2 a revendu le véhicule %3 pour $%4. Cash (avant la vente) : $%5
+ %1 - %2 vendió el vehiculo %3 en el desguace por $%4. Saldo en Efectivo(antes de la venta): $%5
+
+
+ %1 - %2 desmanchou um %3 por R$%4 Quantia na Mão(antes do desmanche): R$%5
+ %1 - %2 нарезанной автомобиля %3 за $%4 на руку Cash (предварительно отбивной): $%5
+ %1 - %2 hat das Fahrzeug %3 für $%4 beim Schrotthändler verschrottet. Bargeld(vor Schrott): $%6
+ %1 - %2 出售盗窃到的载具 %3 赚取 $%4 手头现金(预付):$%5
+
+
+ bought vehicle %1 for $%2. On Hand Cash: $%3 Bank Balance: $%4
+ koupil vozidla %1 nebo $%2. On Hand Cash: $%3 bankovní konto: $%4
+ a acheté le véhicule %1 pour $%2. Cash : $%3 Argent en banque : $%4
+ compró el vehiculo %1 por $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
+
+
+ comprou um %1 por R$%2. Quantia na Mão: R$%3 Quantia no Banco: R$%4
+ купил автомобиль %1 или $%2. На Hand Cash: $%3 банка Баланс: $%4
+ hat sich das Fahrzeug %1 für $%2 gekauft. Bargeld: $%3 Bankkonto: $%4
+ 购买载具 %1 花费 $%2。 手头现金:$%3 银行存款余额:$%4
+
+
+ %1 - %2 bought vehicle %3 for $%4. On Hand Cash: $%5 Bank Balance $%6
+ %1 - %2 koupilo vozidla %3 za $%4. On Hand Cash: $%5 bankovní konto $%6
+ %1 - %2 a acheté le véhicule %3 pour $%4. Cash $%5 Argent en banque : $%6
+ %1 - %2 compró el vehiculo %3 por $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
+
+
+ %1 - %2 comprou um %3 por R$%4. Quantia na Mão: R$%5 Quantia no Banco: R$%6
+ %1 - %2 купил автомобиль за $%3 %4. На Hand наличных: $%5 баланса банка $%6
+ %1 - %2 hat sich das Fahrzeug %3 für $%4 gekauft. Bargeld: $%5 Bankkonto: $%6
+ %1 - %2 购买载具 %3 花费 $%4。 手头现金:$%5 银行存款余额 $%6
+
+
+ sold vehicle %1 for $%2. Bank Balance: $%3 On Hand Balance: $%4
+ prodával vozidla %1 pro $%2. Banka Zůstatek: $%3 po zralé úvaze rukou: $%4
+ a vendu le véhicule %1 pour $%2. Argent en banque : $%3 Cash : $%4
+ vendió el vehiculo %1 por $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
+
+
+ vendeu um %1 por R$%2. Quantia no Banco: R$%3 Quantia na Mão: R$%4
+ продается автомобиль %1 за $%2. Банковский баланс: $%3 на руку Баланс: $%4
+ hat das Fahrzeug %1 für $%2 verkauft. Bankkonto: $%3 Bargeld: $%4
+ 出售载具 %1 获得 $%2。 银行存款余额:$%3 手上现金:$%4
+
+
+ %1 - %2 sold vehicle %3 for $%4. Bank Balance: $%5 On Hand Balance: $%6
+ %1 - %2 prodával vozidla %3 za $%4. Banka Zůstatek: $%5 po zralé úvaze rukou: $%6
+ %1 - %2 a vendu le véhicule %3 pour $%4. Argent en banque : $%5 Cash : $%6
+ %1 - %2 vendió el vehiculo %3 por $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
+
+
+ %1 - %2 vendeu um %3 por R$%4. Quantia no Banco: R$%5 Quantia na Mão: R$%6
+ %1 - %2 продал автомобиль за $%3 %4. Банковский баланс: $%5 на руку Баланс: $%6
+ %1 - %2 hat das Fahrzeug %3 für %4 verkauft. Bankkonto: $%5 Bargeld: $%6
+ %1 - %2 出售载具 %3 获得 $%4。银行存款余额:$%5 手上现金:$%6
+
+
+ withdrew $%1 from their gang bank. Gang Bank Balance: $%2 Bank Balance: $%3 On Hand Balance: $%4
+ stáhl $%1 z jejich gangu banky. Gang bankovní konto: $%2 bankovní konto: $%3 po zralé úvaze rukou: $%4
+ a retiré $%1 du compte bancaire du Gang. Solde bancaire du Gang : $%2 Argent en banque(perso) : $%3 Cash : $%4
+ sacó $%1 de la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%2 Saldo Bancario: $%3 Saldo en Efectivo: $%4
+
+
+ sacou R$%1 no banco da sua gangue. Quantia no Banco da Gangue: R$%2 Quantia no Banco: R$%3 Quantia na Mão: R$%4
+ снял $%1 от их банды банка. Gang Bank Баланс: $%2 банка Баланс: $%3 на руку Баланс: $%4
+ hat $%1 vom Gangkonto abgehoben. Gangkonto: $%2 Bankkonto: $%3 Bargeld: $%4
+ 从他们的帮派银行账户取出 $%1。帮派银行余额:$%2 银行存款余额:$%3 手上现金:$%4
+
+
+ %1 - %2 withdrew $%3 from their gang bank. Gang Bank Balance: $%4 Bank Balance: $%5 On Hand Balance: $%6
+ %1 - %2 stáhl $%3 z jejich gangu banky. Gang bankovní konto: $%4 bankovní konto: $%5 po zralé úvaze rukou: $%6
+ %1 - %2 a retiré $%3 du compte bancaire du Gang. Solde bancaire du Gang : $%4 Argent en banque(perso) : $%5 Cash : $%6
+ %1 - %2 sacó $%3 de la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%4 Saldo Bancario: $%5 Saldo en Efectivo: $%6
+
+
+ %1 - %2 sacou R$%3 no banco da sua gangue. Quantia no Banco da Gangue: R$%4 Quantia no Banco: R$%5 Quantia na Mão: R$%6
+ %1 - %2 отозвала $%3 из их банды банка. Gang Bank Баланс: $%4 банка Баланс: $%5 на руку Баланс: $%6
+ %1 - %2 hat $%3 vom Bankkonto abgehoben. Gangkonto: $%4 Bankkonto: $%5 Bargeld: $%6
+ %1 - %2 从他们的帮派银行账户取出 $%3。帮派银行余额:$%4 银行存款余额:$%5 手上现金:$%6
+
+
+ deposited $%1 into their gang bank. Gang Bank Balance: $%2 Bank Balance: $%3 On Hand Balance: $%4
+ uložen $%1 do svého gangu banky. Gang bankovní konto: $%2 bankovní konto: $%3 po zralé úvaze rukou: $%4
+ a déposé $%1 sur compte bancaire du Gang. Solde bancaire du Gang : $%2 Argent en banque(perso) : $%3 Cash : $%4
+ depositó $%1 a la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%2 Saldo Bancario: $%3 Saldo en Efectivo: $%4
+
+
+ depositou R$%1 no banco da sua gangue. Quantia no Banco da Gangue: R$%2 Quantia no Banco: R$%3 Quantia na Mão: R$%4
+ депозит в размере $%1 в их банде банка. Gang Bank Баланс: $%2 банка Баланс: $%3 на руку Баланс: $%4
+ hat $%1 auf sein Gangkonto eingezahlt. Gangkonto: $%2 Bankkonto: $%3 Bargeld: $%4
+ 将 $%1 存进他们的帮派银行账户。帮派银行余额:$%2 银行存款余额:$%3 手上现金:$%4
+
+
+ %1 - %2 deposited $%3 into their gang bank. Gang Bank Balance: $%4 Bank Balance: $%5 On Hand Balance: $%6
+ %1 - %2 uloženy $%3 do jejich gangu banky. Gang bankovní konto: $%4 bankovní konto: $%5 po zralé úvaze rukou: $%6
+ %1 - %2 a déposé $%3 sur compte bancaire du Gang. Solde bancaire du Gang : $%4 Argent en banque(perso) : $%5 Cash : $%6
+ %1 - %2 depositó $%3 a la cuenta de su pandilla. Saldo Bancario de la Pandilla: $%4 Saldo Bancario: $%5 Saldo en Efectivo: $%6
+
+
+ %1 - %2 depositou R$%3 no banco da sua gangue. Quantia no Banco da Gangue: R$%4 Quantia no Banco: R$%5 Quantia na Mão: R$%6
+ %1 - %2 депозит в размере $%3 в их банде банка. Gang Bank Баланс: $%4 банка Баланс: $%5 на руку Баланс: $%6
+ %1 - %2 hat $%3 auf sein Gangkonto überwiesen. Gangkonto: $%4 Bankkonto: $%5 Bargeld: $%6
+ %1 - %2 将 $%3 存进他们的帮派银行账户。帮派银行余额:$%4 银行存款余额:$%5 手上现金:$%6
+
+
+ withdrew $%1 from their bank. Bank Balance: $%2 On Hand Balance: $%3
+ stáhl $%1 z jejich banky. Banka Zůstatek: $%2 po zralé úvaze rukou: $%3
+ a retiré $%1 de sa banque. Argent en banque : $%2 Cash : $%3
+ sacó $%1 de su cuenta de banco. Saldo Bancario: $%2 Saldo en Efectivo: $%3
+
+
+ sacou R$%1 do seu banco. Quantia no Banco: R$%2 Quantia na Mão: R$%3
+ снял $%1 от своего банка. Банковский баланс: $%2 на руку Баланс: $%3
+ hat $%1 von seinem Bankkonto abgehoben. Bankkonto: $%2 Bargeld: $%3
+ 从他们的帮派银行账户取出 $%1。银行存款余额:$%2 手上现金:$%3
+
+
+ %1 - %2 withdrew $%3 from their bank. Bank Balance: $%4 On Hand Balance: $%5
+ %1 - %2 stáhl $%3 od své banky. Banka Zůstatek: $%4 po zralé úvaze rukou: $%5
+ %1 - %2 a retiré $%3 de sa banque. Argent en banque : $%4 Cash : $%5
+ %1 - %2 sacó $%3 de su cuenta de banco. Saldo Bancario: $%4 Saldo en Efectivo: $%5
+
+
+ %1 - %2 sacou R$%3 do seu banco. Quantia no Banco: R$%4 Quantia na Mão: R$%5
+ %1 - %2 отозвала $%3 из своего банка. Банковский баланс: $%4 на руку Баланс: $%5
+ %1 - %2 hat $%3 von seinem Bankkonto abgehoben. Bankkonto: $%4 Bargeld: $%5
+ %1 - %2 从他们银行账户取出 $%3。银行存款余额:$%4 手上现金:$%5
+
+
+ transferred $%1 to %2. Bank Balance: $%3 On Hand Balance: $%4
+ přestoupil $%1 do %2. Banka Zůstatek: $%3 po zralé úvaze rukou: $%4
+ a transféré $%1 à %2. Argent en banque : $%3 Cash : $%4
+ transferió $%1 a $%2. Saldo Bancario: $%3 Saldo en Efectivo: $%4
+
+
+ transferiu R$%1 para %2. Quantia no Banco: R$%3 Quantia na Mão: R$%4
+ перечислил $%1 %2. Банковский баланс: $%3 на руку Баланс: $%4
+ hat %2 $%1 überwiesen. Bankkonto: $%3 Bargeld: $%4
+ 转帐 $%1 给 %2。银行存款余额:$%3 手上现金:$%4
+
+
+ %1 - %2 transferred $%3 to %4. Bank Balance: $%5 On Hand Balance: $%6
+ %1 - %2 převedena $%3 až %4. Banka Zůstatek: $%5 po zralé úvaze rukou: $%6
+ %1 - %2 a transféré $%3 à %4. Argent en banque : $%5 Cash : $%6
+ %1 - %2 transferió $%3 a $%4. Saldo Bancario: $%5 Saldo en Efectivo: $%6
+
+
+ %1 - %2 transferiu R$%3 para %4. Quantia no Banco: R$%5 Quantia na Mão: R$%6
+ %1 -%2 перевели $%3 до %4. Банковский баланс: $%5 на руку Баланс: $%6
+ %1 - %2 hat %4 $%3 überwiesen. Bankkonto: $%5 Bargeld: $%6
+ %1 - %2 转帐 $%3 给 %4。银行存款余额:$%5 手上现金:$%6
+
+
+ deposited $%1 into their bank. Bank Balance: $%2 On Hand Balance: $%3
+ uložen $%1 do své banky. Banka Zůstatek: $%2 po zralé úvaze rukou: $%3
+ a déposé $%1 dans son compte. Argent en banque $%2 Cash : $%3
+ depositó $%1 a su cuenta de banco. Saldo Bancario: $%2 Saldo en Efectivo: $%3
+
+
+ depositou R$%1 no seu banco. Quantia no Banco: R$%2 Quantia na Mão: R$%3
+ депозит в размере $%1 в их банке. Банковский баланс: $%2 на руку Баланс: $%3
+ hat $%1 auf sein Bankkonto eingezahlt. Bankkonto: $%2 Bargeld: $%3
+ 将 $%1 存进他们的银行账户。银行存款余额:$%2 手上现金:$%3
+
+
+ %1 - %2 deposited $%3 into their bank. Bank Balance: $%4 On Hand Balance: $%5
+ %1 - %2 uloženy $%3 do své banky. Banka Zůstatek: $%4 po zralé úvaze rukou: $%5
+ %1 - %2 a déposé $%3 dans son compte. Argent en banque : $%4 Cash : $%5
+ %1 - %2 depositó $%3 a su cuenta de banco. Saldo Bancario: $%4 Saldo en Efectivo: $%5
+
+
+ %1 - %2 depositou R$%3 no seu banco. Quantia no Banco: R$%4 Quantia na Mão: R$%5
+ %1 - %2 депозит в размере $%3 в свой банк. Банковский баланс: $%4 на руку Баланс: $%5
+ %1 - %2 hat $%3 auf sein Bankkonto eingezahlt. Bankkonto: $%4 Bargeld: $%5
+ %1 - %2 将 $%3 存进他们的银行账户。银行存款余额:$%4 手上现金:$%5
+
+
+
diff --git a/BEFilters/remoteexec.txt b/BEFilters/remoteexec.txt
index f1aba0f4a..a1737120e 100644
--- a/BEFilters/remoteexec.txt
+++ b/BEFilters/remoteexec.txt
@@ -1,3 +1,3 @@
//regex
1 "" !="_this call fn_whoDoneIt"
-5 "" !BIS_fnc_(effectKilled(AirDestruction|Secondaries)|execVM) !DB_fnc_(insertRequest|queryRequest|updatePartial|updateRequest) !HC_fnc_(addContainer|addHouse|chopShopSell|deleteDBContainer|getVehicles|insertGang|insertRequest|jailSys|queryRequest|receivekeyofServer) !HC_fnc_(removeGang|sellHouse(Container)?|spawnVehicle|spikeStrip) !HC_fnc_update(Gang|HouseContainers|HouseTrunk|Partial|Request) !HC_fnc_vehicle(Create|Delete|Store|Update) !HC_fnc_wanted(Add|Bounty|Crimes|Fetch|ProfUpdate|Remove) !life_fnc_(AAN|addVehicle2Chain|adminid|admininfo|animSync|bountyReceive|broadcast|colorVehicle|copLights) !life_fnc_(copSearch|CopSiren|corpse|demoChargeTimer|flashbang|freezePlayer|gangCreated|gangDisbanded|gangInvite) !life_fnc_(garageRefund|giveDiff|hideObj|impoundMenu|jail(Me|Sys)?) !life_fnc_(jumpFnc|knockedOut|licenseCheck|licensesRead|lightHouse|lockVehicle|medic(Lights|Request|Siren)) !life_fnc_(moveIn|pickupItem|pickupMoney|pulloutVeh|receiveItem|receiveMoney|removeLicenses|restrain|revived) !life_fnc_(robPerson|robReceive|say3D|searchClient|seizeClient|setFuel|simDisable|soundDevice|spikeStripEffect) !life_fnc_(tazeSound|ticketPaid|ticketPrompt|vehicleAnimate|gangBankResponse) !life_fnc_wanted(Add|Bounty|Crimes|Fetch|Info|List|ProfUpdate|Remove) !life_fnc_wireTransfer !SOCK_fnc_(dataQuery|insertPlayerInfo|updateRequest) !SPY_fnc_(cookieJar|notifyAdmins|observe) !TON_fnc_(addContainer|addHouse|chopShopSell|cleanupRequest|handleBlastingCharge) !TON_fnc_clientGang(Kick|Leader|Left) !TON_fnc_(clientGetKey|clientMessage) !TON_fnc_(deleteDBContainer|getID|getVehicles|insertGang|keyManagement|managesc|pickupAction|player_query|recupkeyforHC) !TON_fnc_(removeGang|sellHouse(Container)?|spawnVehicle|spikeStrip) !TON_fnc_update(Gang|HouseContainers|HouseTrunk) !TON_fnc_vehicle(Create|Delete|Store|Update) !="_this call fn_whoDoneIt"
+5 "" !BIS_fnc_(effectKilled(AirDestruction|Secondaries)|execVM) !DB_fnc_(insertRequest|queryRequest|updatePartial|updateRequest) !HC_fnc_(addContainer|addHouse|chopShopSell|deleteDBContainer|getVehicles|insertGang|insertRequest|jailSys|queryRequest|receivekeyofServer) !HC_fnc_(removeGang|sellHouse(Container)?|spawnVehicle|spikeStrip) !HC_fnc_update(Gang|HouseContainers|HouseTrunk|Partial|Request) !HC_fnc_vehicle(Create|Delete|Store|Update) !HC_fnc_wanted(Add|Bounty|Crimes|Fetch|ProfUpdate|Remove) !life_fnc_(AAN|addVehicle2Chain|adminid|admininfo|animSync|bountyReceive|broadcast|colorVehicle|copLights) !life_fnc_(copSearch|CopSiren|corpse|demoChargeTimer|flashbang|freezePlayer|gangCreated|gangDisbanded|gangInvite) !life_fnc_(garageRefund|giveDiff|hideObj|impoundMenu|jail(Me|Sys)?) !life_fnc_(jumpFnc|knockedOut|licenseCheck|licensesRead|lightHouse|lockVehicle|medic(Lights|Request|Siren)) !life_fnc_(moveIn|pickupItem|pickupMoney|pulloutVeh|receiveItem|receiveMoney|removeLicenses|restrain|revived) !life_fnc_(robPerson|robReceive|say3D|searchClient|seizeClient|setFuel|simDisable|soundDevice|spikeStripEffect) !life_fnc_(tazeSound|ticketPaid|ticketPrompt|vehicleAnimate|gangBankResponse) !life_fnc_wanted(Add|Bounty|Crimes|Fetch|Info|List|ProfUpdate|Remove) !life_fnc_wireTransfer !SOCK_fnc_(dataQuery|insertPlayerInfo|updateRequest) !SPY_fnc_(cookieJar|notifyAdmins|observe) !TON_fnc_(addContainer|addHouse|chopShopSell|cleanupRequest|handleBlastingCharge) !life_fnc_clientGang(Kick|Leader|Left) !life_fnc_(clientGetKey|clientMessage) !TON_fnc_(deleteDBContainer|getID|getVehicles|insertGang|keyManagement|managesc|pickupAction|recupkeyforHC) !life_util_fnc_playerQuery !TON_fnc_(removeGang|sellHouse(Container)?|spawnVehicle|spikeStrip) !TON_fnc_update(Gang|HouseContainers|HouseTrunk) !TON_fnc_vehicle(Create|Delete|Store|Update) !="_this call fn_whoDoneIt"
diff --git a/README.md b/README.md
index fda112d77..744638318 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,8 @@ AsYetUntitled, formerly Altis Life RPG and ARMARPGLIFE is a rolepl
This Github is not currently associated with any forums.
+
+
# Features:
- Police, Civ and Medic roles
@@ -15,7 +17,7 @@ This Github is not currently associated with any forums.
- Many more.
# License:
-Altis Life RPG by AsYetUntitled is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International License] (http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US)
+Altis Life RPG by AsYetUntitled is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US)
# Links:
- Discord: https://discord.gg/ajGUDSH
@@ -24,10 +26,7 @@ Altis Life RPG by AsYetUntitled is licensed under a [Creative Commons Attributio
- Releases (Stable Builds): https://github.com/AsYetUntitled/Framework/releases
diff --git a/altislife.sql b/altislife.sql
old mode 100644
new mode 100755
index 1bcb7b96b..0d7c2997a
--- a/altislife.sql
+++ b/altislife.sql
@@ -87,25 +87,26 @@ CREATE TABLE IF NOT EXISTS `players` (
`civ_gear` TEXT NOT NULL,
`cop_gear` TEXT NOT NULL,
`med_gear` TEXT NOT NULL,
- `civ_stats` VARCHAR(25) NOT NULL DEFAULT '"[100,100,0]"',
- `cop_stats` VARCHAR(25) NOT NULL DEFAULT '"[100,100,0]"',
- `med_stats` VARCHAR(25) NOT NULL DEFAULT '"[100,100,0]"',
+ `civ_stats` VARCHAR(25) NOT NULL DEFAULT '[100,100,0]',
+ `cop_stats` VARCHAR(25) NOT NULL DEFAULT '[100,100,0]',
+ `med_stats` VARCHAR(25) NOT NULL DEFAULT '[100,100,0]',
`arrested` TINYINT NOT NULL DEFAULT 0,
`adminlevel` ENUM('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`donorlevel` ENUM('0','1','2','3','4','5') NOT NULL DEFAULT '0',
`blacklist` TINYINT NOT NULL DEFAULT 0,
`civ_alive` TINYINT NOT NULL DEFAULT 0,
- `civ_position` VARCHAR(32) NOT NULL DEFAULT '"[]"',
- `playtime` VARCHAR(32) NOT NULL DEFAULT '"[0,0,0]"',
+ `civ_position` VARCHAR(32) NOT NULL DEFAULT '[]',
+ `playtime` VARCHAR(32) NOT NULL DEFAULT '[0,0,0]',
`insert_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`last_seen` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-
+
PRIMARY KEY (`pid`),
UNIQUE KEY `unique_uid` (`uid`),
INDEX `index_name` (`name`),
INDEX `index_blacklist` (`blacklist`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
-- --------------------------------------------------------
--
@@ -128,7 +129,7 @@ CREATE TABLE IF NOT EXISTS `vehicles` (
`fuel` DOUBLE NOT NULL DEFAULT 1,
`damage` VARCHAR(256) NOT NULL,
`insert_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
+
PRIMARY KEY (`id`),
INDEX `fkIdx_players_vehicles` (`pid`),
CONSTRAINT `FK_players_vehicles` FOREIGN KEY `fkIdx_players_vehicles` (`pid`)
@@ -152,7 +153,7 @@ CREATE TABLE IF NOT EXISTS `houses` (
`owned` TINYINT DEFAULT 0,
`garage` TINYINT NOT NULL DEFAULT 0,
`insert_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
+
PRIMARY KEY (`id`),
INDEX `fkIdx_players_houses` (`pid`),
CONSTRAINT `FK_players_houses` FOREIGN KEY `fkIdx_players_houses` (`pid`)
@@ -176,7 +177,7 @@ CREATE TABLE IF NOT EXISTS `gangs` (
`bank` INT DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 1,
`insert_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
+
PRIMARY KEY (`id`),
UNIQUE KEY `unique_name` (`name`),
INDEX `fkIdx_players_gangs` (`owner`),
@@ -203,7 +204,7 @@ CREATE TABLE IF NOT EXISTS `containers` (
`active` TINYINT NOT NULL DEFAULT 0,
`owned` TINYINT NOT NULL DEFAULT 0,
`insert_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
+
PRIMARY KEY (`id`),
INDEX `fkIdx_players_containers` (`pid`),
CONSTRAINT `FK_players_containers` FOREIGN KEY `fkIdx_players_containers` (`pid`)
@@ -225,7 +226,7 @@ CREATE TABLE IF NOT EXISTS `wanted` (
`wantedBounty` INT NOT NULL,
`active` TINYINT NOT NULL DEFAULT 0,
`insert_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
+
PRIMARY KEY (`wantedID`),
CONSTRAINT `FK_players_wanted` FOREIGN KEY `fkIdx_players_wanted` (`wantedID`)
REFERENCES `players` (`pid`)
diff --git a/life_hc/FSM/cleanup.fsm b/life_hc/FSM/cleanup.fsm
deleted file mode 100644
index 9bcecd41d..000000000
--- a/life_hc/FSM/cleanup.fsm
+++ /dev/null
@@ -1,145 +0,0 @@
-/*%FSM*/
-/*%FSM*/
-/*
-item0[] = {"init",0,250,-65.004578,-391.651611,24.995417,-341.651672,0.000000,"init"};
-item1[] = {"true",8,218,-62.976639,-315.185364,27.023363,-265.185364,0.000000,"true"};
-item2[] = {"Share__Work_load",2,250,-64.183350,-224.681931,25.816656,-174.681931,0.000000,"Share " \n "Work-load"};
-item3[] = {"true",8,218,-54.709698,75.189262,35.290302,125.189262,0.000000,"true"};
-item4[] = {"Time_Check",4,218,-219.425827,-133.310532,-129.425964,-83.310455,0.000000,"Time Check"};
-item5[] = {"Delete_Dead_Cars",2,4346,-220.186951,-29.248400,-130.187195,20.751413,0.000000,"Delete" \n "Dead" \n "Cars"};
-item6[] = {"",7,210,-312.538239,95.295059,-304.538239,103.295059,0.000000,""};
-item7[] = {"",7,210,-311.750000,-203.033707,-303.750000,-195.033707,0.000000,""};
-link0[] = {0,1};
-link1[] = {1,2};
-link2[] = {2,4};
-link3[] = {3,6};
-link4[] = {4,5};
-link5[] = {5,3};
-link6[] = {6,7};
-link7[] = {7,2};
-globals[] = {0.000000,0,0,0,0,640,480,1,46,6316128,1,-629.444153,611.207214,293.309357,-434.050568,1243,885,1};
-window[] = {2,-1,-1,-1,-1,985,225,1868,225,3,1261};
-*//*%FSM*/
-class FSM
-{
- fsmName = "Server-Side Cleanup";
- class States
- {
- /*%FSM*/
- class init
- {
- name = "init";
- init = /*%FSM*/"private [""_impound"",""_cars"",""_objs"",""_totCars"",""_thread""];" \n
- "_impound = time;" \n
- "_cars = time;" \n
- "_objs = time;"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class true
- {
- priority = 0.000000;
- to="Share__Work_load";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"true"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Share__Work_load
- {
- name = "Share__Work_load";
- init = /*%FSM*/""/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class Time_Check
- {
- priority = 0.000000;
- to="Delete_Dead_Cars";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"((time - _cars) > (3 * 60))"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Delete_Dead_Cars
- {
- name = "Delete_Dead_Cars";
- init = /*%FSM*/"{" \n
- " if (!alive _x) then {" \n
- " _dbInfo = _x getVariable [""dbInfo"",[]];" \n
- " if (count _dbInfo > 0) then {" \n
- " _uid = _dbInfo select 0;" \n
- " _plate = _dbInfo select 1;" \n
- "" \n
- " _query = format [""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate];" \n
- " _query spawn {" \n
- " " \n
- " _thread = [_this,1] call HC_fnc_asyncCall;" \n
- " };" \n
- " };" \n
- " if (!isNil ""_x"" && {!isNull _x}) then {" \n
- " deleteVehicle _x;" \n
- " };" \n
- " };" \n
- "} forEach allMissionObjects ""LandVehicle"";" \n
- "" \n
- "{" \n
- " if (!alive _x) then {" \n
- " _dbInfo = _x getVariable [""dbInfo"",[]];" \n
- " if (count _dbInfo > 0) then {" \n
- " _uid = _dbInfo select 0;" \n
- " _plate = _dbInfo select 1;" \n
- "" \n
- " _query = format [""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate];" \n
- " _query spawn {" \n
- " " \n
- " _thread = [_this,1] call HC_fnc_asyncCall;" \n
- " };" \n
- " };" \n
- " if (!isNil ""_x"" && {!isNull _x}) then {" \n
- " deleteVehicle _x;" \n
- " };" \n
- " };" \n
- "} forEach allMissionObjects ""Air"";" \n
- "" \n
- "_cars = time;" \n
- "" \n
- "//Group cleanup." \n
- "{" \n
- " if (units _x isEqualTo [] && local _x) then {" \n
- " deleteGroup _x;" \n
- " };" \n
- "} forEach allGroups;"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class true
- {
- priority = 0.000000;
- to="Share__Work_load";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"true"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- };
- initState="init";
- finalStates[] =
- {
- };
-};
-/*%FSM*/
diff --git a/life_hc/MySQL/Gangs/fn_insertGang.sqf b/life_hc/MySQL/Gangs/fn_insertGang.sqf
old mode 100644
new mode 100755
index 951187662..bc4f48424
--- a/life_hc/MySQL/Gangs/fn_insertGang.sqf
+++ b/life_hc/MySQL/Gangs/fn_insertGang.sqf
@@ -8,31 +8,32 @@
Description:
Inserts the gang into the database.
*/
-private ["_query","_queryResult","_gangMembers","_group"];
+
params [
- ["_ownerID",objNull,[objNull]],
- ["_uid","",[""]],
- ["_gangName","",[""]]
+ ["_ownerID", objNull, [objNull]],
+ ["_uid", "", [""]],
+ ["_gangName", "", [""]]
];
-_group = group _ownerID;
-if (isNull _ownerID || _uid isEqualTo "" || _gangName isEqualTo "") exitWith {}; //Fail
+private _group = group _ownerID;
+
+if (isNull _ownerID || {_uid isEqualTo ""} || {_gangName isEqualTo ""}) exitWith {};
-_gangName = [_gangName] call HC_fnc_mresString;
-_query = format ["SELECT id FROM gangs WHERE name='%1' AND active='1'",_gangName];
+private _query = format ["selectGangID:%1", _gangName];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+private _queryResult = [_query, 2] call HC_fnc_asyncCall;
//Check to see if the gang name already exists.
-if (!(count _queryResult isEqualTo 0)) exitWith {
- [1,"There is already a gang created with that name please pick another name."] remoteExecCall ["life_fnc_broadcast",_ownerID];
+if !(_queryResult isEqualTo []) exitWith {
+ [1, "There is already a gang created with that name please pick another name."] remoteExecCall ["life_fnc_broadcast",_ownerID];
life_action_gangInUse = nil;
_ownerID publicVariableClient "life_action_gangInUse";
};
-_query = format ["SELECT id FROM gangs WHERE members LIKE '%2%1%2' AND active='1'",_uid,"%"];
+private _uidLike = format["%2%1%2", _uid, "%"];
+_query = format ["selectGangIDFromMembers:%1", _uidLike];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+_queryResult = [_query, 2] call HC_fnc_asyncCall;
//Check to see if this person already owns or belongs to a gang.
if (!(count _queryResult isEqualTo 0)) exitWith {
@@ -42,29 +43,29 @@ if (!(count _queryResult isEqualTo 0)) exitWith {
};
//Check to see if a gang with that name already exists but is inactive.
-_query = format ["SELECT id, active FROM gangs WHERE name='%1' AND active='0'",_gangName];
+_query = format ["selectInactiveGang:%1", _gangName];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
-_gangMembers = [[_uid]] call HC_fnc_mresArray;
+_queryResult = [_query, 2] call HC_fnc_asyncCall;
+private _gangMembers = [_uid];
-if (!(count _queryResult isEqualTo 0)) then {
- _query = format ["UPDATE gangs SET active='1', owner='%1',members='%2' WHERE id='%3'",_uid,_gangMembers,(_queryResult select 0)];
+if !(_queryResult isEqualTo []) then {
+ _query = format ["updateGang:%1:%2:%3", (_queryResult select 0), _gangMembers, _uid];
} else {
- _query = format ["INSERT INTO gangs (owner, name, members) VALUES('%1','%2','%3')",_uid,_gangName,_gangMembers];
+ _query = format ["insertGang:%1:%2:%3", _uid, _gangName, _gangMembers];
};
-_queryResult = [_query,1] call HC_fnc_asyncCall;
+_queryResult = [_query, 1] call HC_fnc_asyncCall;
-_group setVariable ["gang_name",_gangName,true];
-_group setVariable ["gang_owner",_uid,true];
-_group setVariable ["gang_bank",0,true];
-_group setVariable ["gang_maxMembers",8,true];
-_group setVariable ["gang_members",[_uid],true];
-[_group] remoteExecCall ["life_fnc_gangCreated",_ownerID];
+_group setVariable ["gang_name", _gangName, true];
+_group setVariable ["gang_owner", _uid, true];
+_group setVariable ["gang_bank", 0, true];
+_group setVariable ["gang_maxMembers", 8, true];
+_group setVariable ["gang_members", [_uid], true];
+[_group] remoteExecCall ["life_fnc_gangCreated", _ownerID];
-sleep 0.35;
-_query = format ["SELECT id FROM gangs WHERE owner='%1' AND active='1'",_uid];
+uiSleep 0.35;
+_query = format ["selectGangIDFromOwner:%1", _uid];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+_queryResult = [_query, 2] call HC_fnc_asyncCall;
-_group setVariable ["gang_id",(_queryResult select 0),true];
+_group setVariable ["gang_id", (_queryResult select 0), true];
diff --git a/life_hc/MySQL/Gangs/fn_queryPlayerGang.sqf b/life_hc/MySQL/Gangs/fn_queryPlayerGang.sqf
old mode 100644
new mode 100755
index e4492417f..ee9f00f82
--- a/life_hc/MySQL/Gangs/fn_queryPlayerGang.sqf
+++ b/life_hc/MySQL/Gangs/fn_queryPlayerGang.sqf
@@ -7,15 +7,9 @@
Description:
Queries to see if the player belongs to any gang.
*/
-private ["_query","_queryResult"];
-_query = format ["SELECT id, owner, name, maxmembers, bank, members FROM gangs WHERE active='1' AND members LIKE '%2%1%2'",_this,"%"];
+private _pid = format ["%2%1%2", _this, "%"];
+private _query = format ["selectPlayerGang:%1", _pid];
+private _queryResult = [_query,2] call HC_fnc_asyncCall;
-_queryResult = [_query,2] call HC_fnc_asyncCall;
-
-if !(count _queryResult isEqualTo 0) then {
- _tmp = [_queryResult select 5] call HC_fnc_mresToArray;
- if (_tmp isEqualType "") then {_tmp = call compile format ["%1",_tmp];};
- _queryResult set[5, _tmp];
-};
-missionNamespace setVariable [format ["gang_%1",_this],_queryResult];
+missionNamespace setVariable [format ["gang_%1", _this], _queryResult];
diff --git a/life_hc/MySQL/Gangs/fn_removeGang.sqf b/life_hc/MySQL/Gangs/fn_removeGang.sqf
old mode 100644
new mode 100755
index 537e22808..6b24e7988
--- a/life_hc/MySQL/Gangs/fn_removeGang.sqf
+++ b/life_hc/MySQL/Gangs/fn_removeGang.sqf
@@ -8,19 +8,19 @@
Description:
Blah
*/
-private ["_group","_groupID"];
-_group = param [0,grpNull,[grpNull]];
+
+params [
+ ["_group", grpNull, [grpNull]]
+];
+
if (isNull _group) exitWith {};
-_groupID = _group getVariable ["gang_id",-1];
+private _groupID = _group getVariable ["gang_id",-1];
if (_groupID isEqualTo -1) exitWith {};
-[format ["UPDATE gangs SET active='0' WHERE id='%1'",_groupID],1] call HC_fnc_asyncCall;
+_group setVariable ["gang_owner",nil,true];
+[format ["deleteGang:%1", _groupID], 1] call HC_fnc_asyncCall;
-_result = [format ["SELECT id FROM gangs WHERE active='1' AND id='%1'",_groupID],2] call HC_fnc_asyncCall;
-if (count _result isEqualTo 0) then {
- [_group] remoteExecCall ["life_fnc_gangDisbanded",(units _group)];
- sleep 5;
- deleteGroup _group;
-};
-["CALL deleteOldGangs",1] call DB_fnc_asyncCall;
+[_group] remoteExecCall ["life_fnc_gangDisbanded",(units _group)];
+uiSleep 5;
+deleteGroup _group;
\ No newline at end of file
diff --git a/life_hc/MySQL/Gangs/fn_updateGang.sqf b/life_hc/MySQL/Gangs/fn_updateGang.sqf
old mode 100644
new mode 100755
index eef95d891..3b4d2b5f7
--- a/life_hc/MySQL/Gangs/fn_updateGang.sqf
+++ b/life_hc/MySQL/Gangs/fn_updateGang.sqf
@@ -8,26 +8,28 @@
Description:
Updates the gang information?
*/
-private ["_groupID","_bank","_maxMembers","_members","_membersFinal","_query","_owner"];
+
params [
- ["_mode",0,[0]],
- ["_group",grpNull,[grpNull]]
+ ["_mode", 0, [0]],
+ ["_group", grpNull, [grpNull]]
];
if (isNull _group) exitWith {}; //FAIL
-_groupID = _group getVariable ["gang_id",-1];
+private _groupID = _group getVariable ["gang_id", -1];
if (_groupID isEqualTo -1) exitWith {};
+private "_query";
+
switch (_mode) do {
case 0: {
- _bank = [(_group getVariable ["gang_bank",0])] call HC_fnc_numberSafe;
- _maxMembers = _group getVariable ["gang_maxMembers",8];
- _members = [(_group getVariable "gang_members")] call HC_fnc_mresArray;
- _owner = _group getVariable ["gang_owner",""];
+ private _bank = _group getVariable ["gang_bank", 0];
+ private _maxMembers = _group getVariable ["gang_maxMembers", 8];
+ private _members = _group getVariable "gang_members";
+ private _owner = _group getVariable ["gang_owner", ""];
if (_owner isEqualTo "") exitWith {};
- _query = format ["UPDATE gangs SET bank='%1', maxmembers='%2', owner='%3' WHERE id='%4'",_bank,_maxMembers,_owner,_groupID];
+ _query = format ["updateGang1:%1:%2:%3:%4", _bank, _maxMembers, _owner, _groupID];
};
case 1: {
@@ -45,7 +47,6 @@ switch (_mode) do {
_funds = _funds + _value;
_group setVariable ["gang_bank",_funds,true];
[1,"STR_ATM_DepositSuccessG",true,[_value]] remoteExecCall ["life_fnc_broadcast",remoteExecutedOwner];
- _cash = _cash - _value;
} else {
if (_value > _funds) exitWith {
[1,"STR_ATM_NotEnoughFundsG",true] remoteExecCall ["life_fnc_broadcast",remoteExecutedOwner];
@@ -63,23 +64,24 @@ switch (_mode) do {
diag_log (format [localize "STR_DL_ML_withdrewGang",name _unit,(getPlayerUID _unit),_value,[_funds] call life_fnc_numberText,[0] call life_fnc_numberText,[_cash] call life_fnc_numberText]);
};
};
- _query = format ["UPDATE gangs SET bank='%1' WHERE id='%2'",([_funds] call HC_fnc_numberSafe),_groupID];
[getPlayerUID _unit,side _unit,_cash,0] call HC_fnc_updatePartial;
+ _query = format ["updateGangBank:%1:%2", _group getVariable ["gang_bank", 0], _groupID];
};
case 2: {
- _query = format ["UPDATE gangs SET maxmembers='%1' WHERE id='%2'",(_group getVariable ["gang_maxMembers",8]),_groupID];
+ _query = format ["updateGangMaxmembers:%1:%2", (_group getVariable ["gang_maxMembers", 8]), _groupID];
};
case 3: {
- _owner = _group getVariable ["gang_owner",""];
+ private _owner = _group getVariable ["gang_owner", ""];
if (_owner isEqualTo "") exitWith {};
- _query = format ["UPDATE gangs SET owner='%1' WHERE id='%2'",_owner,_groupID];
+ _query = format ["updateGangOwner:%1:%2", _owner, _groupID];
};
case 4: {
- _members = _group getVariable "gang_members";
- if (count _members > (_group getVariable ["gang_maxMembers",8])) then {
+ private _members = _group getVariable "gang_members";
+ private "_membersFinal";
+ if (count _members > (_group getVariable ["gang_maxMembers", 8])) then {
_membersFinal = [];
for "_i" from 0 to _maxMembers -1 do {
_membersFinal pushBack (_members select _i);
@@ -87,11 +89,10 @@ switch (_mode) do {
} else {
_membersFinal = _group getVariable "gang_members";
};
- _membersFinal = [_membersFinal] call HC_fnc_mresArray;
- _query = format ["UPDATE gangs SET members='%1' WHERE id='%2'",_membersFinal,_groupID];
+ _query = format ["updateGangMembers:%1:%2", _membersFinal, _groupID];
};
};
if (!isNil "_query") then {
- [_query,1] call HC_fnc_asyncCall;
+ [_query, 1] call HC_fnc_asyncCall;
};
diff --git a/life_hc/MySQL/General/fn_bool.sqf b/life_hc/MySQL/General/fn_bool.sqf
deleted file mode 100644
index 2d9a70f23..000000000
--- a/life_hc/MySQL/General/fn_bool.sqf
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- File: fn_bool.sqf
- Author: TAW_Tonic
-
- Description:
- Handles bool conversion for MySQL since MySQL doesn't support 'true' or 'false'
- instead MySQL uses Tinyint for BOOLEAN (0 = false, 1 = true)
-*/
-private ["_bool","_mode"];
-_bool = [_this,0,0,[false,0]] call BIS_fnc_param;
-_mode = [_this,1,0,[0]] call BIS_fnc_param;
-
-switch (_mode) do {
- case 0: {
- if (_bool isEqualType 0) exitWith {0};
- if (_bool) then {1} else {0};
- };
-
- case 1: {
- if (!(_bool isEqualType 0)) exitWith {false};
- switch (_bool) do {
- case 0: {false};
- case 1: {true};
- };
- };
-};
diff --git a/life_hc/MySQL/General/fn_cleanup.sqf b/life_hc/MySQL/General/fn_cleanup.sqf
old mode 100644
new mode 100755
index 6afd87668..f28d57c7a
--- a/life_hc/MySQL/General/fn_cleanup.sqf
+++ b/life_hc/MySQL/General/fn_cleanup.sqf
@@ -1,69 +1,81 @@
-#include "\life_hc\hc_macros.hpp"
-/*
- File: fn_cleanup.sqf
- Author: Bryan "Tonic" Boardwine
-
- This file is for Nanou's HeadlessClient.
-
- Description:
- Server-side cleanup script on vehicles.
- Sort of a lame way but whatever.
-*/
-private "_deleted";
-_deleted = false;
-for "_i" from 0 to 1 step 0 do {
- private ["_veh","_units","_fuel"];
- sleep (60 * 60);
- {
- _protect = false;
- _veh = _x;
- _vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _veh) >> "vehicleClass");
- _fuel = 1;
-
- if (!isNil {_veh getVariable "NPC"} && {_veh getVariable "NPC"}) then {_protect = true;};
-
- if ((_vehicleClass in ["Car","Air","Ship","Armored","Submarine"]) && {!(_protect)}) then {
- if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {_fuel = (fuel _veh);};
- _dbInfo = _veh getVariable ["dbInfo",[]];
- _units = {(_x distance _veh < 300)} count playableUnits;
- if (crew _x isEqualTo []) then {
- switch (true) do {
- case ((_x getHitPointDamage "HitEngine") > 0.7 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitLFWheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitLF2Wheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitRFWheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitRF2Wheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case (_units isEqualTo 0): {deleteVehicle _x; _deleted = true;};
- };
- };
-
- if (_deleted) then {
- waitUntil {isNull _veh};
- _deleted = false;
- };
-
- if (isNull _veh) then {
- if (count _dbInfo > 0) then {
- _uid = _dbInfo select 0;
- _plate = _dbInfo select 1;
-
- _query = format ["UPDATE vehicles SET active='0', fuel='%3' WHERE pid='%1' AND plate='%2'",_uid,_plate,_fuel];
-
- [_query,1] call HC_fnc_asyncCall;
- };
- };
- };
- } forEach vehicles;
-
- sleep (3 * 60); //3 minute cool-down before next cycle.
- {
- if ((typeOf _x) in ["Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F", "Land_Can_V3_F","Land_Money_F","Land_Suitcase_F"]) then {
- deleteVehicle _x;
- };
- } forEach (allMissionObjects "Thing");
-
- sleep (2 * 60);
- {
- deleteVehicle _x;
- } forEach (allMissionObjects "GroundWeaponHolder");
-};
+#include "\life_hc\hc_macros.hpp"
+/*
+ File: fn_cleanup.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Server-side cleanup script on vehicles, dealers and fed reserve.
+*/
+private _saveFuel = LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1;
+private _minUnitDistance = LIFE_SETTINGS(getNumber,"vehicles_despawn_max_distance");
+
+private _fnc_fedDealerUpdate = {
+ {
+ private _dealer = missionNamespace getVariable [_x, objNull];
+ if !(isNull _dealer) then {
+ _x setVariable ["sellers", [], true];
+ };
+ } forEach ["Dealer_1", "Dealer_2", "Dealer_3"];
+
+
+ private _funds = fed_bank getVariable ["safe", 0];
+ fed_bank setVariable ["safe", round(_funds+((count playableUnits)/2)), true];
+};
+
+private _fnc_cleanVehicles = {
+ {
+ private _vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _x) >> "vehicleClass");
+ private _protect = _x getVariable ["NPC",false];
+
+ if ((_vehicleClass in ["Car","Air","Ship","Armored","Submarine"]) && {!_protect}) then {
+ private _noUnitsNear = (nearestObjects [_x, ["CAManBase"], _minUnitDistance]) findIf {isPlayer _x && {alive _x}} isEqualTo -1;
+
+ if (crew _x isEqualTo [] && {_noUnitsNear}) then {
+ private _fuel = if (_saveFuel) then {fuel _x} else {1};
+ private _dbInfo = _x getVariable "dbInfo";
+
+ deleteVehicle _x;
+
+ if (isNil "_dbInfo") exitWith {};
+
+ waitUntil {uiSleep 1; isNull _x};
+
+ _dbInfo params [
+ "_uid",
+ "_plate"
+ ];
+
+ private _query = format ["cleanupVehicle:%1:%2:%3", _fuel, _uid, _plate];
+ [_query, 1] call HC_fnc_asyncCall;
+ };
+ };
+ } forEach vehicles;
+
+ {
+ if (!isNil {_x getVariable "item"}) then {
+ deleteVehicle _x;
+ };
+ true
+ } count (allMissionObjects "Thing");
+};
+
+//Array format: [parameters,function,delayTime]
+private _routines = [
+ [[], _fnc_fedDealerUpdate, 1800],
+ [[], _fnc_cleanVehicles, 3600]
+];
+
+{
+ _x pushBack (diag_tickTime + (_x # 2));
+} forEach _routines;
+
+for "_i" from 0 to 1 step 0 do {
+ {
+ _x params ["_params", "_function", "_delay", "_timeToRun"];
+ if (diag_tickTime > _timeToRun) then {
+ _params call _function;
+ _x set [2, diag_tickTime + _delay];
+ };
+ } forEach _routines;
+ uiSleep 1e-6;
+};
diff --git a/life_hc/MySQL/General/fn_insertRequest.sqf b/life_hc/MySQL/General/fn_insertRequest.sqf
old mode 100644
new mode 100755
index 73d9422b7..0869f5a00
--- a/life_hc/MySQL/General/fn_insertRequest.sqf
+++ b/life_hc/MySQL/General/fn_insertRequest.sqf
@@ -6,10 +6,10 @@
This file is for Nanou's HeadlessClient.
Description:
- Does something with inserting... Don't have time for
- descriptions... Need to write it...
+ Adds a player to the database upon first joining of the server.
+ Recieves information from core\sesison\fn_insertPlayerInfo.sqf
*/
-private ["_queryResult","_query","_alias"];
+
params [
"_uid",
"_name",
@@ -19,26 +19,21 @@ params [
];
//Error checks
-if ((_uid isEqualTo "") || (_name isEqualTo "")) exitWith {};
-if (isNull _returnToSender) exitWith {};
-
-_query = format ["SELECT pid, name FROM players WHERE pid='%1'",_uid];
+if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {systemChat "Bad UID or name";}; //Let the client be 'lost' in 'transaction'
+if (isNull _returnToSender) exitWith {systemChat "ReturnToSender is Null!";}; //No one to send this to!
-_tickTime = diag_tickTime;
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+private _query = format ["checkPlayerExists:%1", _uid];
+private _queryResult = [_query, 2] call HC_fnc_asyncCall;
//Double check to make sure the client isn't in the database...
-if (_queryResult isEqualType "") exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery",_returnToSender];}; //There was an entry!
-if !(count _queryResult isEqualTo 0) exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery",_returnToSender];};
+if (_queryResult isEqualType "" || {!(_queryResult isEqualTo [])}) exitWith {
+ [] remoteExecCall ["SOCK_fnc_dataQuery", _returnToSender];
+};
-//Clense and prepare some information.
-_name = [_name] call HC_fnc_mresString; //Clense the name of bad chars.
-_alias = [[_name]] call HC_fnc_mresArray;
-_money = [_money] call HC_fnc_numberSafe;
-_bank = [_bank] call HC_fnc_numberSafe;
+private _alias = [_name];
//Prepare the query statement..
-_query = format ["INSERT INTO players (pid, name, cash, bankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear) VALUES('%1', '%2', '%3', '%4', '%5','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')",
+_query = format ["insertNewPlayer:%1:%2:%3:%4:%5",
_uid,
_name,
_money,
@@ -46,5 +41,5 @@ _query = format ["INSERT INTO players (pid, name, cash, bankacc, aliases, cop_li
_alias
];
-[_query,1] call HC_fnc_asyncCall;
-[] remoteExecCall ["SOCK_fnc_dataQuery",_returnToSender];
+[_query, 1] call HC_fnc_asyncCall;
+[] remoteExecCall ["SOCK_fnc_dataQuery", _returnToSender];
diff --git a/life_hc/MySQL/General/fn_insertVehicle.sqf b/life_hc/MySQL/General/fn_insertVehicle.sqf
old mode 100644
new mode 100755
index 8706d734a..0a049b5fa
--- a/life_hc/MySQL/General/fn_insertVehicle.sqf
+++ b/life_hc/MySQL/General/fn_insertVehicle.sqf
@@ -7,7 +7,7 @@
Description:
Inserts the vehicle into the database
*/
-private ["_query","_sql"];
+
params [
"_uid",
"_side",
@@ -18,8 +18,7 @@ params [
];
//Stop bad data being passed.
-if (_uid isEqualTo "" || _side isEqualTo "" || _type isEqualTo "" || _className isEqualTo "" || _color isEqualTo -1 || _plate isEqualTo -1) exitWith {};
-
-_query = format ["INSERT INTO vehicles (side, classname, type, pid, alive, active, inventory, color, plate, gear, damage) VALUES ('%1', '%2', '%3', '%4', '1','1','""[[],0]""', '%5', '%6','""[]""','""[]""')",_side,_className,_type,_uid,_color,_plate];
+if (_uid isEqualTo "" || {_side isEqualTo ""} || {_type isEqualTo ""} || {_className isEqualTo ""} || {_color isEqualTo -1} || {_plate isEqualTo -1}) exitWith {};
-[_query,1] call HC_fnc_asyncCall;
+private _query = format ["insertVehicle:%1:%2:%3:%4:%5:%6", _side, _className, _type, _uid, _color, _plate];
+[_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/General/fn_mresArray.sqf b/life_hc/MySQL/General/fn_mresArray.sqf
deleted file mode 100644
index d8433f26a..000000000
--- a/life_hc/MySQL/General/fn_mresArray.sqf
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- File: fn_mresArray.sqf
- Author: Bryan "Tonic" Boardwine";
-
- Description:
- Acts as a mres (MySQL Real Escape) for arrays so they
- can be properly inserted into the database without causing
- any problems. The return method is 'hacky' but it's effective.
-*/
-private ["_array"];
-_array = [_this,0,[],[[]]] call BIS_fnc_param;
-_array = str _array;
-_array = toArray(_array);
-
-for "_i" from 0 to (count _array)-1 do
-{
- _sel = _array select _i;
- if (!(_i isEqualTo 0) && !(_i isEqualTo ((count _array)-1))) then
- {
- if (_sel isEqualTo 34) then
- {
- _array set[_i,96];
- };
- };
-};
-
-str(toString(_array));
diff --git a/life_hc/MySQL/General/fn_mresString.sqf b/life_hc/MySQL/General/fn_mresString.sqf
deleted file mode 100644
index 584a8e7bd..000000000
--- a/life_hc/MySQL/General/fn_mresString.sqf
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- File: fn_mresString.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Makes the string safe to be passed to MySQL (strips various stuff).
-*/
-private ["_string","_filter"];
-_string = [_this,0,"",[""]] call BIS_fnc_param;
-_filter = "'/\`:|;,{}-""<>";
-
-_string = toArray _string; //Blow it up to an array
-_filter = toArray _filter; //Blow it up to an array
-
-{
- if (_x in _filter) then {
- _string deleteAt _forEachIndex;
- };
-} forEach _string;
-
-toString _string;
diff --git a/life_hc/MySQL/General/fn_mresToArray.sqf b/life_hc/MySQL/General/fn_mresToArray.sqf
deleted file mode 100644
index e93e75d67..000000000
--- a/life_hc/MySQL/General/fn_mresToArray.sqf
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- File: fn_mresToArray.sqf
- Author: Bryan "Tonic" Boardwine";
-
- Description:
- Acts as a mres (MySQL Real Escape) for arrays so they
- can be properly inserted into the database without causing
- any problems. The return method is 'hacky' but it's effective.
-*/
-private ["_array"];
-_array = [_this,0,"",[""]] call BIS_fnc_param;
-if (_array isEqualTo "") exitWith {[]};
-_array = toArray(_array);
-
-for "_i" from 0 to (count _array)-1 do
-{
- _sel = _array select _i;
- if (_sel == 96) then
- {
- _array set[_i,39];
- };
-};
-
-_array = toString(_array);
-_array = call compile format ["%1", _array];
-_array;
\ No newline at end of file
diff --git a/life_hc/MySQL/General/fn_numberSafe.sqf b/life_hc/MySQL/General/fn_numberSafe.sqf
deleted file mode 100644
index 0fc534d88..000000000
--- a/life_hc/MySQL/General/fn_numberSafe.sqf
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- File: fn_numberSafe.sqf
- Author: Karel Moricky
-
- Description:
- Convert a number into string (avoiding scientific notation)
-
- Parameter(s):
- _this: NUMBER
-
- Returns:
- STRING
-*/
-private ["_number","_mod","_digots","_digitsCount","_modBase","_numberText"];
-
-_number = [_this,0,0,[0]] call bis_fnc_param;
-_mod = [_this,1,3,[0]] call bis_fnc_param;
-
-_digits = _number call bis_fnc_numberDigits;
-_digitsCount = count _digits - 1;
-
-_modBase = _digitsCount % _mod;
-_numberText = "";
-{
- _numberText = _numberText + str _x;
- if ((_foreachindex - _modBase) % (_mod) isEqualTo 0 && !(_foreachindex isEqualTo _digitsCount)) then {_numberText = _numberText + "";};
-} forEach _digits;
-_numberText
diff --git a/life_hc/MySQL/General/fn_queryRequest.sqf b/life_hc/MySQL/General/fn_queryRequest.sqf
old mode 100644
new mode 100755
index 1ce62f7b5..b70224edd
--- a/life_hc/MySQL/General/fn_queryRequest.sqf
+++ b/life_hc/MySQL/General/fn_queryRequest.sqf
@@ -2,7 +2,7 @@
/*
File: fn_queryRequest.sqf
Author: Bryan "Tonic" Boardwine
-
+
This file is for Nanou's HeadlessClient.
Description:
@@ -13,149 +13,90 @@
ARRAY - If array has 0 elements it should be handled as an error in client-side files.
STRING - The request had invalid handles or an unknown error and is logged to the RPT.
*/
-private ["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
-_ownerID = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _ownerID) exitWith {};
+params [
+ ["_uid", "", [""]],
+ ["_side", sideUnknown, [civilian]],
+ ["_ownerID", objNull, [objNull]]
+];
-if (LIFE_SETTINGS(getNumber,"player_deathLog") isEqualTo 1) then {
- _ownerID addMPEventHandler ["MPKilled", {_this call fn_whoDoneIt}];
-};
+if (isNull _ownerID) exitWith {};
-_query = switch (_side) do {
+private _query = switch (_side) do {
// West - 11 entries returned
- case west: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime FROM players WHERE pid='%1'",_uid];};
+ case west: {format ["selectWest:%1", _uid];};
// Civilian - 12 entries returned
- case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime FROM players WHERE pid='%1'",_uid];};
+ case civilian: {format ["selectCiv:%1", _uid];};
// Independent - 10 entries returned
- case independent: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime FROM players WHERE pid='%1'",_uid];};
+ case independent: {format ["selectIndep:%1",_uid];};
};
+private _tickTime = diag_tickTime;
+private _queryResult = [_query,2] call DB_fnc_asyncCall;
-_tickTime = diag_tickTime;
-_queryResult = [_query,2] call HC_fnc_asyncCall;
-
-if (_queryResult isEqualType "") exitWith {
- [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
+if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
+ diag_log "------------- Client Query Request -------------";
+ diag_log format ["QUERY: %1",_query];
+ diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
+ diag_log format ["Result: %1",_queryResult];
+ diag_log "------------------------------------------------";
};
-if (_queryResult isEqualTo []) exitWith {
+if (_queryResult isEqualType "" || _queryResult isEqualTo []) exitWith {
[] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
};
-//Blah conversion thing from a2net->extdb
-_tmp = _queryResult select 2;
-_queryResult set[2,[_tmp] call HC_fnc_numberSafe];
-_tmp = _queryResult select 3;
-_queryResult set[3,[_tmp] call HC_fnc_numberSafe];
-
-//Parse licenses (Always index 6)
-_new = [(_queryResult select 6)] call HC_fnc_mresToArray;
-if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
-_queryResult set[6,_new];
-
-//Convert tinyint to boolean
-_old = _queryResult select 6;
-for "_i" from 0 to (count _old)-1 do {
- _data = _old select _i;
- _old set[_i,[_data select 0, ([_data select 1,1] call HC_fnc_bool)]];
+private _licenses = _queryResult select 6;
+
+for "_i" from 0 to (count _licenses) -1 do {
+ (_licenses select _i) params ["_license", "_owned"];
+ _licenses set[_i, [_license, [false, true] select _owned]];
};
-_queryResult set[6,_old];
+private "_playTimes";
-_new = [(_queryResult select 8)] call HC_fnc_mresToArray;
-if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
-_queryResult set[8,_new];
-//Parse data for specific side.
switch (_side) do {
- case west: {
- _queryResult set[9,([_queryResult select 9,1] call HC_fnc_bool)];
-
- //Parse Stats
- _new = [(_queryResult select 10)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[10,_new];
-
- //Playtime
- _new = [(_queryResult select 11)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if !(_index isEqualTo -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- _new = _new select 0;
- [_uid, _new] call HC_fnc_setPlayTime;
- };
-
- case civilian: {
- _queryResult set[7,([_queryResult select 7,1] call HC_fnc_bool)];
-
- //Parse Stats
- _new = [(_queryResult select 9)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[9,_new];
-
- //Position
- _queryResult set[10,([_queryResult select 10,1] call HC_fnc_bool)];
- _new = [(_queryResult select 11)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[11,_new];
-
- //Playtime
- _new = [(_queryResult select 12)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if !(_index isEqualTo -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- _new = _new select 2;
- [_uid, _new] call HC_fnc_setPlayTime;
-
- _houseData = _uid spawn HC_fnc_fetchPlayerHouses;
- waitUntil {scriptDone _houseData};
- _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
- _gangData = _uid spawn HC_fnc_queryPlayerGang;
- waitUntil{scriptDone _gangData};
- _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
- };
-
- case independent: {
- //Parse Stats
- _new = [(_queryResult select 9)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[9,_new];
-
- //Playtime
- _new = [(_queryResult select 10)] call HC_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if !(_index isEqualTo -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- _new = _new select 1;
- [_uid, _new] call HC_fnc_setPlayTime;
- };
+ case civilian: {
+ _queryResult set[7, [false, true] select (_queryResult select 7)];
+ _queryResult set[10, [false, true] select (_queryResult select 10)];
+
+ _playTimes = _queryResult select 12;
+
+ /* Make sure nothing else is added under here */
+ _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
+ waitUntil {scriptDone _houseData};
+ _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
+ _gangData = _uid spawn TON_fnc_queryPlayerGang;
+ waitUntil {scriptDone _gangData};
+ _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
+ };
+
+ case west: {
+ _queryResult set[9, [false, true] select (_queryResult select 9)];
+ _playTimes = _queryResult select 11;
+ };
+
+ case independent: {
+ _playTimes = _queryResult select 10;
+ };
+};
+
+_index = TON_fnc_playtime_values_request find [_uid, _playTimes];
+
+if (_index != -1) then {
+ TON_fnc_playtime_values_request set[_index,-1];
+ TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
+ TON_fnc_playtime_values_request pushBack [_uid, _playTimes];
+} else {
+ TON_fnc_playtime_values_request pushBack [_uid, _playTimes];
};
+[_uid, _playTimes select 2] call TON_fnc_setPlayTime;
publicVariable "TON_fnc_playtime_values_request";
life_keyreceived = false;
life_keyreceivedvar = [];
-[_uid,_side] remoteExecCall ["TON_fnc_recupKeyForHC",RSERV];
+[_uid, _side] remoteExecCall ["TON_fnc_recupKeyForHC", RSERV];
waitUntil {life_keyreceived};
_keyArr = life_keyreceivedvar;
_queryResult pushBack _keyArr;
diff --git a/life_hc/MySQL/General/fn_updatePartial.sqf b/life_hc/MySQL/General/fn_updatePartial.sqf
old mode 100644
new mode 100755
index 494c0af4c..498f05af3
--- a/life_hc/MySQL/General/fn_updatePartial.sqf
+++ b/life_hc/MySQL/General/fn_updatePartial.sqf
@@ -8,81 +8,68 @@
Takes partial data of a player and updates it, this is meant to be
less network intensive towards data flowing through it for updates.
*/
-private ["_uid","_side","_value","_value1","_value2","_mode","_query"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
-_mode = [_this,3,-1,[0]] call BIS_fnc_param;
-if (_uid isEqualTo "" || _side isEqualTo sideUnknown) exitWith {}; //Bad.
-_query = "";
+params [
+ ["_uid", "", [""]],
+ ["_side", sideUnknown, [civilian]],
+ "_value",
+ ["_mode", -1, [0]],
+ "_value1"
+];
+
+if (_uid isEqualTo "" || {_side isEqualTo sideUnknown}) exitWith {}; //Bad.
+private _query = "";
switch (_mode) do {
case 0: {
- _value = [_this,2,0,[0]] call BIS_fnc_param;
- _value = [_value] call HC_fnc_numberSafe;
- _query = format ["UPDATE players SET cash='%1' WHERE pid='%2'",_value,_uid];
+ _query = format ["updateCash:%1:%2", _value, _uid];
};
case 1: {
- _value = [_this,2,0,[0]] call BIS_fnc_param;
- _value = [_value] call HC_fnc_numberSafe;
- _query = format ["UPDATE players SET bankacc='%1' WHERE pid='%2'",_value,_uid];
+ _query = format ["updateBank:%1:%2",_value,_uid];
};
case 2: {
- _value = [_this,2,[],[[]]] call BIS_fnc_param;
- //Does something license related but I can't remember I only know it's important?
- for "_i" from 0 to count(_value)-1 do {
- _bool = [(_value select _i) select 1] call HC_fnc_bool;
- _value set[_i,[(_value select _i) select 0,_bool]];
- };
- _value = [_value] call HC_fnc_mresArray;
+ for "_i" from 0 to (count _value) -1 do {
+ (_value select _i) params ["_license", "_owned"];
+ _value set[_i, [_license, [0, 1] select _owned]];
+ };
+
switch (_side) do {
- case west: {_query = format ["UPDATE players SET cop_licenses='%1' WHERE pid='%2'",_value,_uid];};
- case civilian: {_query = format ["UPDATE players SET civ_licenses='%1' WHERE pid='%2'",_value,_uid];};
- case independent: {_query = format ["UPDATE players SET med_licenses='%1' WHERE pid='%2'",_value,_uid];};
+ case west: {_query = format ["updateWestLicenses:%1:%2", _value, _uid];};
+ case civilian: {_query = format ["updateCivLicenses:%1:%2", _value, _uid];};
+ case independent: {_query = format ["updateIndepLicenses:%1:%2", _value, _uid];};
};
};
case 3: {
- _value = [_this,2,[],[[]]] call BIS_fnc_param;
- _value = [_value] call HC_fnc_mresArray;
switch (_side) do {
- case west: {_query = format ["UPDATE players SET cop_gear='%1' WHERE pid='%2'",_value,_uid];};
- case civilian: {_query = format ["UPDATE players SET civ_gear='%1' WHERE pid='%2'",_value,_uid];};
- case independent: {_query = format ["UPDATE players SET med_gear='%1' WHERE pid='%2'",_value,_uid];};
+ case west: {_query = format ["updateWestGear:%1:%2", _value, _uid];};
+ case civilian: {_query = format ["updateCivGear:%1:%2", _value, _uid];};
+ case independent: {_query = format ["updateIndepGear:%1:%2", _value, _uid];};
};
};
case 4: {
- _value = [_this,2,false,[true]] call BIS_fnc_param;
- _value = [_value] call HC_fnc_bool;
- _value2 = [_this,4,[],[[]]] call BIS_fnc_param;
- _value2 = if (count _value2 isEqualTo 3) then {_value2} else {[0,0,0]};
- _value2 = [_value2] call HC_fnc_mresArray;
- _query = format ["UPDATE players SET civ_alive='%1', civ_position='%2' WHERE pid='%3'",_value,_value2,_uid];
+ _value = [0, 1] select _value;
+ _value1 = if (count _value1 isEqualTo 3) then {_value1} else {[0,0,0]};
+ _query = format ["updateCivPosition:%1:%2:%3", _value, _value1, _uid];
};
case 5: {
- _value = [_this,2,false,[true]] call BIS_fnc_param;
- _value = [_value] call HC_fnc_bool;
- _query = format ["UPDATE players SET arrested='%1' WHERE pid='%2'",_value,_uid];
+ _value = [0, 1] select _value;
+ _query = format ["updateArrested:%1:%2",_value,_uid];
};
case 6: {
- _value1 = [_this,2,0,[0]] call BIS_fnc_param;
- _value2 = [_this,4,0,[0]] call BIS_fnc_param;
- _value1 = [_value1] call HC_fnc_numberSafe;
- _value2 = [_value2] call HC_fnc_numberSafe;
- _query = format ["UPDATE players SET cash='%1', bankacc='%2' WHERE pid='%3'",_value1,_value2,_uid];
+ _query = format ["updateCashAndBank:%1:%2:%3", _value, _value1, _uid];
};
case 7: {
- _array = [_this,2,[],[[]]] call BIS_fnc_param;
- [_uid,_side,_array,0] remoteExecCall ["TON_fnc_keyManagement",RSERV];
+ [_uid, _side, _value, 0] call TON_fnc_keyManagement;
};
};
if (_query isEqualTo "") exitWith {};
-[_query,1] call HC_fnc_asyncCall;
+[_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/General/fn_updateRequest.sqf b/life_hc/MySQL/General/fn_updateRequest.sqf
old mode 100644
new mode 100755
index b3cc164fe..67292ac1e
--- a/life_hc/MySQL/General/fn_updateRequest.sqf
+++ b/life_hc/MySQL/General/fn_updateRequest.sqf
@@ -8,37 +8,34 @@
Updates ALL player information in the database.
Information gets passed here from the client side file: core\session\fn_updateRequest.sqf
*/
-private ["_uid","_side","_cash","_bank","_licenses","_gear","_stats","_name","_alive","_position","_query"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_name = [_this,1,"",[""]] call BIS_fnc_param;
-_side = [_this,2,sideUnknown,[civilian]] call BIS_fnc_param;
-_cash = [_this,3,0,[0]] call BIS_fnc_param;
-_bank = [_this,4,5000,[0]] call BIS_fnc_param;
-_licenses = [_this,5,[],[[]]] call BIS_fnc_param;
-_gear = [_this,6,[],[[]]] call BIS_fnc_param;
-_stats = [_this,7,[100,100],[[]]] call BIS_fnc_param;
-_alive = [_this,9,false,[true]] call BIS_fnc_param;
-_position = [_this,10,[],[[]]] call BIS_fnc_param;
+
+params [
+ ["_uid", "", [""]],
+ ["_name", "", [""]],
+ ["_side", sideUnknown, [civilian]],
+ ["_cash", 0, [0]],
+ ["_bank", 5000, [0]],
+ ["_licenses", [], [[]]],
+ ["_gear", [], [[]]],
+ ["_stats", [100,100],[[]]],
+ ["_arrested", false, [true]],
+ ["_alive", false, [true]],
+ ["_position", [], [[]]]
+];
//Get to those error checks.
-if ((_uid isEqualTo "") || (_name isEqualTo "")) exitWith {};
+if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {};
-//Parse and setup some data.
-_name = [_name] call HC_fnc_mresString;
-_gear = [_gear] call HC_fnc_mresArray;
-_stats = [_stats] call HC_fnc_mresArray;
-_cash = [_cash] call HC_fnc_numberSafe;
-_bank = [_bank] call HC_fnc_numberSafe;
-_position = if (_side isEqualTo civilian) then {[_position] call HC_fnc_mresArray} else {[]};
+//Setup some data.
+_position = if (_side isEqualTo civilian) then {_position} else {[]};
+_arrested = [0, 1] select _arrested;
+_alive = [0, 1] select _alive;
-//Does something license related but I can't remember I only know it's important?
-for "_i" from 0 to count(_licenses)-1 do {
- _bool = [(_licenses select _i) select 1] call HC_fnc_bool;
- _licenses set[_i,[(_licenses select _i) select 0,_bool]];
+for "_i" from 0 to (count _licenses) -1 do {
+ (_licenses select _i) params ["_license", "_owned"];
+ _licenses set[_i, [_license, [0, 1] select _owned]];
};
-_licenses = [_licenses] call HC_fnc_mresArray;
-
//PLAYTIME
_playtime = [_uid] call HC_fnc_getPlayTime;
_playtime_update = [];
@@ -54,12 +51,12 @@ switch (_side) do {
case civilian: {_playtime_update set[2,_playtime];};
case independent: {_playtime_update set[1,_playtime];};
};
-_playtime_update = [_playtime_update] call HC_fnc_mresArray;
-switch (_side) do {
- case west: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', cop_gear='%4', cop_licenses='%5', cop_stats='%6', playtime='%7' WHERE pid='%8'",_name,_cash,_bank,_gear,_licenses,_stats,_playtime_update,_uid];};
- case civilian: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', civ_licenses='%4', civ_gear='%5', arrested='%6', civ_stats='%7', civ_alive='%8', civ_position='%9', playtime='%10' WHERE pid='%11'",_name,_cash,_bank,_licenses,_gear,[_this select 8] call HC_fnc_bool,_stats,[_alive] call HC_fnc_bool,_position,_playtime_update,_uid];};
- case independent: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', med_licenses='%4', med_gear='%5', med_stats='%6', playtime='%7' WHERE pid='%8'",_name,_cash,_bank,_licenses,_gear,_stats,_playtime_update,_uid];};
+private _query = switch (_side) do {
+ case west: {format ["updateWest:%1:%2:%3:%4:%5:%6:%7:%8", _name, _cash, _bank, _gear, _licenses, _stats, _playtime_update, _uid];};
+ case civilian: {format ["updateCiv:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11", _name, _cash, _bank, _licenses, _gear, _arrested, _stats, _alive, _position, _playtime_update, _uid];};
+ case independent: {format ["updateIndep:%1:%2:%3:%4:%5:%6:%7:%8", _name, _cash, _bank, _licenses, _gear, _stats, _playtime_update, _uid];};
};
-_queryResult = [_query,1] call HC_fnc_asyncCall;
+
+_queryResult = [_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Housing/fn_addContainer.sqf b/life_hc/MySQL/Housing/fn_addContainer.sqf
old mode 100644
new mode 100755
index 85f53291a..ad06651d3
--- a/life_hc/MySQL/Housing/fn_addContainer.sqf
+++ b/life_hc/MySQL/Housing/fn_addContainer.sqf
@@ -8,24 +8,23 @@
Description:
Add container in Database.
*/
-private ["_containerPos","_query","_className","_dir"];
+
params [
- ["_uid","",[""]],
- ["_container",objNull,[objNull]]
+ ["_uid", "", [""]],
+ ["_container", objNull, [objNull]]
];
-if (isNull _container || _uid isEqualTo "") exitWith {};
-
-_containerPos = getPosATL _container;
-_className = typeOf _container;
-_dir = [vectorDir _container, vectorUp _container];
+if (isNull _container || {_uid isEqualTo ""}) exitWith {};
-_query = format ["INSERT INTO containers (pid, pos, classname, inventory, gear, owned, dir) VALUES('%1', '%2', '%3', '""[[],0]""', '""[]""', '1', '%4')",_uid,_containerPos,_className,_dir];
-[_query,1] call HC_fnc_asyncCall;
+private _containerPos = getPosATL _container;
+private _className = typeOf _container;
+private _dir = [vectorDir _container, vectorUp _container];
-sleep 0.3;
+private _query = format ["insertContainer:%1:%2:%3:%4", _uid, _containerPos, _className, _dir];
+[_query, 1] call HC_fnc_asyncCall;
-_query = format ["SELECT id FROM containers WHERE pos='%1' AND pid='%2' AND owned='1'",_containerPos,_uid];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+uiSleep 0.3;
-_container setVariable ["container_id",(_queryResult select 0),true];
+_query = format ["selectContainerID:%1:%2", _containerPos, _uid];
+_queryResult = [_query, 2] call HC_fnc_asyncCall;
+_container setVariable ["container_id", _queryResult select 0, true];
diff --git a/life_hc/MySQL/Housing/fn_addHouse.sqf b/life_hc/MySQL/Housing/fn_addHouse.sqf
old mode 100644
new mode 100755
index fad0676ab..4fc9c4e40
--- a/life_hc/MySQL/Housing/fn_addHouse.sqf
+++ b/life_hc/MySQL/Housing/fn_addHouse.sqf
@@ -6,23 +6,27 @@
This file is for Nanou's HeadlessClient.
Description:
- Blah
+ Inserts the players newly bought house in the database.
*/
-private ["_housePos","_query"];
+
params [
["_uid","",[""]],
["_house",objNull,[objNull]]
];
-if (isNull _house || _uid isEqualTo "") exitWith {};
-_housePos = getPosATL _house;
+if (isNull _house || {_uid isEqualTo ""}) exitWith {};
+
+private _housePos = getPosATL _house;
-_query = format ["INSERT INTO houses (pid, pos, owned) VALUES('%1', '%2', '1')",_uid,_housePos];
-[_query,1] call HC_fnc_asyncCall;
+private _query = format ["insertHouse:%1:%2", _uid, _housePos];
+if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
+ diag_log format ["Query: %1",_query];
+};
-sleep 0.3;
+[_query, 1] call HC_fnc_asyncCall;
-_query = format ["SELECT id FROM houses WHERE pos='%1' AND pid='%2' AND owned='1'",_housePos,_uid];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+uiSleep 0.3;
-_house setVariable ["house_id",(_queryResult select 0),true];
+_query = format ["selectHouseID:%1:%2", _housePos, _uid];
+_queryResult = [_query, 2] call HC_fnc_asyncCall;
+_house setVariable ["house_id", _queryResult select 0, true];
diff --git a/life_hc/MySQL/Housing/fn_deleteDBContainer.sqf b/life_hc/MySQL/Housing/fn_deleteDBContainer.sqf
old mode 100644
new mode 100755
index 36b9b55bc..6135b7a58
--- a/life_hc/MySQL/Housing/fn_deleteDBContainer.sqf
+++ b/life_hc/MySQL/Housing/fn_deleteDBContainer.sqf
@@ -7,22 +7,27 @@
Description:
Delete Container and remove Container in Database
*/
-private ["_house","_houseID","_ownerID","_housePos","_query","_radius","_containers"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_container", objNull, [objNull]]
+];
+
if (isNull _container) exitWith {diag_log "container null";};
+_containerID = _container getVariable ["container_id", -1];
+
+private "_query";
-_containerID = _container getVariable ["container_id",-1];
if (_containerID isEqualTo -1) then {
_containerPos = getPosATL _container;
- _ownerID = (_container getVariable "container_owner") select 0;
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE pid='%1' AND pos='%2' AND owned='1'",_ownerID,_containerPos];
+ private _ownerID = (_container getVariable "container_owner") select 0;
+ _query = format ["deleteContainer:%1:%2", _ownerID, _containerPos];
} else {
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE id='%1'",_containerID];
+ _query = format ["deleteContainer1:%1",_containerID];
};
-_container setVariable ["container_id",nil,true];
-_container setVariable ["container_owner",nil,true];
+_container setVariable ["container_id", nil, true];
+_container setVariable ["container_owner", nil, true];
-[_query,1] call HC_fnc_asyncCall;
+[_query, 1] call HC_fnc_asyncCall;
-["CALL deleteOldContainers",1] call HC_fnc_asyncCall;
+["deleteOldContainers", 1] call HC_fnc_asyncCall;
deleteVehicle _container;
diff --git a/life_hc/MySQL/Housing/fn_fetchPlayerHouses.sqf b/life_hc/MySQL/Housing/fn_fetchPlayerHouses.sqf
old mode 100644
new mode 100755
index 08940cb8e..368060a29
--- a/life_hc/MySQL/Housing/fn_fetchPlayerHouses.sqf
+++ b/life_hc/MySQL/Housing/fn_fetchPlayerHouses.sqf
@@ -10,30 +10,30 @@
1. Fetches all the players houses and sets them up.
2. Fetches all the players containers and sets them up.
*/
-private ["_query","_containers","_containerss","_houses"];
+
params [
["_uid","",[""]]
];
+
if (_uid isEqualTo "") exitWith {};
-_query = format ["SELECT pid, pos, classname, inventory, gear, dir, id FROM containers WHERE pid='%1' AND owned='1'",_uid];
-_containers = [_query,2,true] call HC_fnc_asyncCall;
+private _query = format ["selectContainers:%1", _uid];
+private _containers = [_query, 2, true] call HC_fnc_asyncCall;
+private _containerss = [];
-_containerss = [];
{
_position = call compile format ["%1",_x select 1];
_house = nearestObject [_position, "House"];
_direction = call compile format ["%1",_x select 5];
- _trunk = [_x select 3] call HC_fnc_mresToArray;
+ _trunk = _x select 3;
if (_trunk isEqualType "") then {_trunk = call compile format ["%1", _trunk];};
- _gear = [_x select 4] call HC_fnc_mresToArray;
+ _gear = _x select 4;
if (_gear isEqualType "") then {_gear = call compile format ["%1", _gear];};
_container = createVehicle[_x select 2,[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_container" && {!isNull _container}};
_containerss = _house getVariable ["containers",[]];
_containerss pushBack _container;
_container allowDamage false;
- _container enableRopeAttach false;
_container setPosATL _position;
_container setVectorDirAndUp _direction;
//Fix position for more accurate positioning
@@ -71,11 +71,11 @@ _containerss = [];
_container addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
- _house setVariable ["containers",_containerss,true];
+ _house setVariable ["containers", _containerss, true];
} forEach _containers;
-_query = format ["SELECT pid, pos FROM houses WHERE pid='%1' AND owned='1'",_uid];
-_houses = [_query,2,true] call HC_fnc_asyncCall;
+_query = format ["selectHousePositions:%1", _uid];
+private _houses = [_query, 2, true] call HC_fnc_asyncCall;
_return = [];
{
@@ -85,4 +85,4 @@ _return = [];
_return pushBack [_x select 1];
} forEach _houses;
-missionNamespace setVariable [format ["houses_%1",_uid],_return];
+missionNamespace setVariable [format ["houses_%1", _uid], _return];
diff --git a/life_hc/MySQL/Housing/fn_houseGarage.sqf b/life_hc/MySQL/Housing/fn_houseGarage.sqf
old mode 100644
new mode 100755
index 56baebfe1..56bfb6a4c
--- a/life_hc/MySQL/Housing/fn_houseGarage.sqf
+++ b/life_hc/MySQL/Housing/fn_houseGarage.sqf
@@ -12,21 +12,9 @@ params [
["_mode",-1,[0]]
];
-if (_uid isEqualTo "") exitWith {};
-if (isNull _house) exitWith {};
-if (_mode isEqualTo -1) exitWith {};
+if (_uid isEqualTo "" || {isNull _house} || {_mode isEqualTo -1}) exitWith {};
private _housePos = getPosATL _house;
-private "_query";
-
-if (_mode isEqualTo 0) then {
- _query = format ["UPDATE houses SET garage='1' WHERE pid='%1' AND pos='%2'",_uid,_housePos];
-} else {
- _query = format ["UPDATE houses SET garage='0' WHERE pid='%1' AND pos='%2'",_uid,_housePos];
-};
-
-if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
- diag_log format ["Query: %1",_query];
-};
-
-[_query,1] call DB_fnc_asyncCall;
\ No newline at end of file
+private _active = ["0", "1"] select (_mode isEqualTo 0);
+private _query = format ["updateGarage:%1:%2:%3", _active, _uid, _housePos];
+[_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Housing/fn_sellHouse.sqf b/life_hc/MySQL/Housing/fn_sellHouse.sqf
old mode 100644
new mode 100755
index 16fd3be32..c7bffcfee
--- a/life_hc/MySQL/Housing/fn_sellHouse.sqf
+++ b/life_hc/MySQL/Housing/fn_sellHouse.sqf
@@ -8,22 +8,28 @@
Used in selling the house, sets the owned to 0 and will cleanup with a
stored procedure on restart.
*/
-private ["_house","_houseID","_ownerID","_housePos","_query","_radius","_containers"];
-_house = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _house) exitWith {};
-_houseID = _house getVariable ["house_id",-1];
+params [
+ ["_house", objNull, [objNull]]
+];
+
+if (isNull _house) exitWith {systemChat ":SERVER:sellHouse: House is null";};
+private _houseID = _house getVariable ["house_id", -1];
+
+private "_query";
+
if (_houseID isEqualTo -1) then {
- _housePos = getPosATL _house;
- _ownerID = (_house getVariable "house_owner") select 0;
- _query = format ["UPDATE houses SET owned='0', pos='[]' WHERE pid='%1' AND pos='%2' AND owned='1'",_ownerID,_housePos];
+ private _housePos = getPosATL _house;
+ private _ownerID = (_house getVariable "house_owner") select 0;
+ _query = format ["deleteHouse:%1:%2", _ownerID, _housePos];
} else {
- _query = format ["UPDATE houses SET owned='0', pos='[]' WHERE id='%1'",_houseID];
+ _query = format ["deleteHouse1:%1", _houseID];
};
-_house setVariable ["house_id",nil,true];
-_house setVariable ["house_owner",nil,true];
+_house setVariable ["house_id", nil, true];
+_house setVariable ["house_owner", nil, true];
+_house setVariable ["garageBought", false, true];
-[_query,1] call HC_fnc_asyncCall;
-_house setVariable ["house_sold",nil,true];
-["CALL deleteOldHouses",1] call HC_fnc_asyncCall;
\ No newline at end of file
+[_query, 1] call HC_fnc_asyncCall;
+_house setVariable ["house_sold", nil, true];
+["deleteOldHouses", 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Housing/fn_sellHouseContainer.sqf b/life_hc/MySQL/Housing/fn_sellHouseContainer.sqf
old mode 100644
new mode 100755
index 0f6152575..a080686bb
--- a/life_hc/MySQL/Housing/fn_sellHouseContainer.sqf
+++ b/life_hc/MySQL/Housing/fn_sellHouseContainer.sqf
@@ -8,22 +8,27 @@
Used in selling the house, container sets the owned to 0 and will cleanup with a
stored procedure on restart.
*/
-private ["_house","_houseID","_ownerID","_housePos","_query","_radius","_containers"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _container) exitWith {};
+params [
+ ["_container", objNull, [objNull]]
+];
+
+if (isNull _container) exitWith {};
_containerID = _container getVariable ["container_id",-1];
+
+private "_query";
+
if (_containerID isEqualTo -1) then {
_containerPos = getPosATL _container;
- _ownerID = (_container getVariable "container_owner") select 0;
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE pid='%1' AND pos='%2' AND owned='1'",_ownerID,_containerPos];
+ private _ownerID = (_container getVariable "container_owner") select 0;
+ _query = format ["deleteContainer:%1:%2", _ownerID, _containerPos];
} else {
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE id='%1'",_containerID];
+ _query = format ["deleteContainer1:%1", _containerID];
};
-_container setVariable ["container_id",nil,true];
-_container setVariable ["container_owner",nil,true];
+_container setVariable ["container_id", nil, true];
+_container setVariable ["container_owner", nil, true];
deleteVehicle _container;
-[_query,1] call HC_fnc_asyncCall;
-["CALL deleteOldContainers",1] call HC_fnc_asyncCall;
\ No newline at end of file
+[_query, 1] call HC_fnc_asyncCall;
+["deleteOldContainers", 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Housing/fn_updateHouseContainers.sqf b/life_hc/MySQL/Housing/fn_updateHouseContainers.sqf
old mode 100644
new mode 100755
index d34158199..8aca57fe3
--- a/life_hc/MySQL/Housing/fn_updateHouseContainers.sqf
+++ b/life_hc/MySQL/Housing/fn_updateHouseContainers.sqf
@@ -7,20 +7,22 @@
Description:
Update inventory "i" in container
*/
-private ["_containerID","_containers","_query","_vehItems","_vehMags","_vehWeapons","_vehBackpacks","_cargo"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_container", objNull, [objNull]]
+];
+
if (isNull _container) exitWith {};
-_containerID = _container getVariable ["container_id",-1];
-if (_houseID isEqualTo -1) exitWith {};
-_vehItems = getItemCargo _container;
-_vehMags = getMagazineCargo _container;
-_vehWeapons = getWeaponCargo _container;
-_vehBackpacks = getBackpackCargo _container;
-_cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
+private _containerID = _container getVariable ["container_id", -1];
+if (_containerID isEqualTo -1) exitWith {};
-_cargo = [_cargo] call HC_fnc_mresArray;
+private _vehItems = getItemCargo _container;
+private _vehMags = getMagazineCargo _container;
+private _vehWeapons = getWeaponCargo _container;
+private _vehBackpacks = getBackpackCargo _container;
+private _cargo = [_vehItems, _vehMags, _vehWeapons, _vehBackpacks];
-_query = format ["UPDATE containers SET gear='%1' WHERE id='%2'",_cargo,_containerID];
+private _query = format ["updateContainer:%1:%2", _cargo, _containerID];
-[_query,1] call HC_fnc_asyncCall;
+[_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Housing/fn_updateHouseTrunk.sqf b/life_hc/MySQL/Housing/fn_updateHouseTrunk.sqf
old mode 100644
new mode 100755
index 02f5ae6fe..c05c347e5
--- a/life_hc/MySQL/Housing/fn_updateHouseTrunk.sqf
+++ b/life_hc/MySQL/Housing/fn_updateHouseTrunk.sqf
@@ -7,16 +7,17 @@
Description:
Update inventory "y" in container
*/
-private ["_house"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _container) exitWith {};
-_trunkData = _container getVariable ["Trunk",[[],0]];
-_containerID = _container getVariable ["container_id",-1];
+params [
+ ["_container", objNull, [objNull]]
+];
+
+if (isNull _container) exitWith {};
-if (_containerID isEqualTo -1) exitWith {}; //Dafuq?
+_trunkData = _container getVariable ["Trunk", [[], 0]];
+_containerID = _container getVariable ["container_id", -1];
-_trunkData = [_trunkData] call HC_fnc_mresArray;
-_query = format ["UPDATE containers SET inventory='%1' WHERE id='%2'",_trunkData,_containerID];
+if (_containerID isEqualTo -1) exitWith {};
-[_query,1] call HC_fnc_asyncCall;
+_query = format ["updateHouseTrunk:%1:%2", _trunkData, _containerID];
+[_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Vehicles/fn_chopShopSell.sqf b/life_hc/MySQL/Vehicles/fn_chopShopSell.sqf
old mode 100644
new mode 100755
index a47da9473..1628eb5ec
--- a/life_hc/MySQL/Vehicles/fn_chopShopSell.sqf
+++ b/life_hc/MySQL/Vehicles/fn_chopShopSell.sqf
@@ -24,10 +24,10 @@ private _displayName = FETCH_CONFIG2(getText,"CfgVehicles",typeOf _vehicle, "dis
private _dbInfo = _vehicle getVariable ["dbInfo",[]];
if (count _dbInfo > 0) then {
_dbInfo params ["_uid","_plate"];
- private _query = format ["UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
+ private _query = format ["deleteVehicle:%1:%2", _uid, _plate];
[_query,1] call HC_fnc_asyncCall;
};
deleteVehicle _vehicle;
-[_price,_displayName] remoteExecCall ["life_fnc_chopShopSold", remoteExecutedOwner];
\ No newline at end of file
+[_price,_displayName] remoteExecCall ["life_fnc_chopShopSold", remoteExecutedOwner];
diff --git a/life_hc/MySQL/Vehicles/fn_getVehicles.sqf b/life_hc/MySQL/Vehicles/fn_getVehicles.sqf
old mode 100644
new mode 100755
index 1debb7a1a..6a742e038
--- a/life_hc/MySQL/Vehicles/fn_getVehicles.sqf
+++ b/life_hc/MySQL/Vehicles/fn_getVehicles.sqf
@@ -8,16 +8,18 @@
Description:
Sends a request to query the database information and returns vehicles.
*/
-private ["_pid","_side","_type","_unit","_ret","_tickTime","_queryResult"];
-_pid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[west]] call BIS_fnc_param;
-_type = [_this,2,"",[""]] call BIS_fnc_param;
-_unit = [_this,3,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_pid", "", [""]],
+ ["_side", sideUnknown, [west]],
+ ["_type", "", [""]],
+ ["_unit", objNull, [objNull]]
+];
//Error checks
-if (_pid isEqualTo "" || _side isEqualTo sideUnknown || _type isEqualTo "" || isNull _unit) exitWith {
+if (_pid isEqualTo "" || {_side isEqualTo sideUnknown} || {_type isEqualTo ""} || {isNull _unit}) exitWith {
if (!isNull _unit) then {
- [[]] remoteExec ["life_fnc_impoundMenu",_unit];
+ [[]] remoteExec ["life_fnc_impoundMenu", _unit];
};
};
@@ -28,17 +30,15 @@ _side = switch (_side) do {
default {"Error"};
};
-if (_side == "Error") exitWith {
- [[]] remoteExec ["life_fnc_impoundMenu",_unit];
+if (_side isEqualTo "Error") exitWith {
+ [[]] remoteExec ["life_fnc_impoundMenu", _unit];
};
-_query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type];
-
-_tickTime = diag_tickTime;
-_queryResult = [_query,2,true] call HC_fnc_asyncCall;
+private _query = format ["selectVehicles:%1:%2:%3", _pid, _side, _type];
+private _queryResult = [_query, 2, true] call HC_fnc_asyncCall;
if (_queryResult isEqualType "") exitWith {
- [[]] remoteExec ["life_fnc_impoundMenu",_unit];
+ [[]] remoteExec ["life_fnc_impoundMenu", _unit];
};
-[_queryResult] remoteExec ["life_fnc_impoundMenu",_unit];
+[_queryResult] remoteExec ["life_fnc_impoundMenu", _unit];
diff --git a/life_hc/MySQL/Vehicles/fn_spawnVehicle.sqf b/life_hc/MySQL/Vehicles/fn_spawnVehicle.sqf
old mode 100644
new mode 100755
index 48c0409fa..c6accc63a
--- a/life_hc/MySQL/Vehicles/fn_spawnVehicle.sqf
+++ b/life_hc/MySQL/Vehicles/fn_spawnVehicle.sqf
@@ -9,6 +9,7 @@
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
+
params [
["_vid", -1, [0]],
["_pid", "", [""]],
@@ -19,24 +20,19 @@ params [
"_spawntext"
];
-
-
-private _ownerID = _unit getVariable ["life_clientID",-1];
private _unit_return = _unit;
private _name = name _unit;
private _side = side _unit;
-//_unit = owner _unit;
-
if (_vid isEqualTo -1 || {_pid isEqualTo ""}) exitWith {};
if (_vid in serv_sv_use) exitWith {};
serv_sv_use pushBack _vid;
-private _servIndex = serv_sv_use find _vid;
-private _query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
+private _servIndex = serv_sv_use find _vid;
private _tickTime = diag_tickTime;
-private _queryResult = [_query,2] call HC_fnc_asyncCall;
+private _query = format ["selectVehiclesMore:%1:%2", _vid, _pid];
+private _queryResult = [_query, 2] call HC_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Client Query Request -------------";
@@ -48,9 +44,9 @@ if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
if (_queryResult isEqualType "") exitWith {};
-_vInfo = _queryResult;
+private _vInfo = _queryResult;
if (isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
-if (count _vInfo isEqualTo 0) exitWith {serv_sv_use deleteAt _servIndex;};
+if (_vInfo isEqualTo []) exitWith {serv_sv_use deleteAt _servIndex;};
if ((_vInfo select 5) isEqualTo 0) exitWith {
serv_sv_use deleteAt _servIndex;
@@ -62,7 +58,6 @@ if ((_vInfo select 6) isEqualTo 1) exitWith {
[1,"STR_Garage_SQLError_Active",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
-
private "_nearVehicles";
if !(_sp isEqualType "") then {
_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
@@ -70,21 +65,21 @@ if !(_sp isEqualType "") then {
_nearVehicles = [];
};
-if (count _nearVehicles > 0) exitWith {
+if !(_nearVehicles isEqualTo []) exitWith {
serv_sv_use deleteAt _servIndex;
[_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
[1,"STR_Garage_SpawnPointError",true] remoteExecCall ["life_fnc_broadcast",_unit];
};
-_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
+_query = format ["updateVehicle:%1:%2", _pid, _vid];
-private _trunk = [(_vInfo select 9)] call HC_fnc_mresToArray;
-private _gear = [(_vInfo select 10)] call HC_fnc_mresToArray;
-private _damage = [call compile (_vInfo select 12)] call HC_fnc_mresToArray;
+private _trunk = _vInfo select 9;
+private _gear = _vInfo select 10;
+private _damage = _vInfo select 12;
private _wasIllegal = _vInfo select 13;
-_wasIllegal = if (_wasIllegal isEqualTo 1) then { true } else { false };
+_wasIllegal = _wasIllegal isEqualTo 1;
-[_query,1] call HC_fnc_asyncCall;
+[_query, 1] call HC_fnc_asyncCall;
private "_vehicle";
if (_sp isEqualType "") then {
@@ -93,7 +88,7 @@ if (_sp isEqualType "") then {
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
- sleep 0.6;
+ uiSleep 0.6;
} else {
_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
@@ -105,11 +100,10 @@ if (_sp isEqualType "") then {
_vehicle allowDamage true;
//Send keys over the network.
[_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
-/*[_pid,_side,_vehicle,1] call HC_fnc_keyManagement;*/
[_pid,_side,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",RSERV];
_vehicle lock 2;
//Reskin the vehicle
-[_vehicle,_vInfo select 8] remoteExecCall ["life_fnc_colorVehicle",_unit];
+[_vehicle, _vInfo select 8] remoteExecCall ["life_fnc_colorVehicle",_unit];
_vehicle setVariable ["vehicle_info_owners",[[_pid,_name]],true];
_vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7)],true];
_vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
@@ -118,42 +112,42 @@ _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
_vehicle setVariable ["Trunk",_trunk,true];
-
+
if (_wasIllegal) then {
private _refPoint = if (_sp isEqualType "") then {getMarkerPos _sp;} else {_sp;};
-
+
private _distance = 100000;
private "_location";
{
private _tempLocation = nearestLocation [_refPoint, _x];
private _tempDistance = _refPoint distance _tempLocation;
-
+
if (_tempDistance < _distance) then {
_location = _tempLocation;
_distance = _tempDistance;
};
false
-
+
} count ["NameCityCapital", "NameCity", "NameVillage"];
-
+
_location = text _location;
- [1,"STR_NOTF_BlackListedVehicle",true,[_location,_name]] remoteExecCall ["life_fnc_broadcast",west];
+ [1, "STR_NOTF_BlackListedVehicle", true, [_location, _name]] remoteExecCall ["life_fnc_broadcast", west];
- _query = format ["UPDATE vehicles SET blacklist='0' WHERE id='%1' AND pid='%2'",_vid,_pid];
- [_query,1] call HC_fnc_asyncCall;
- };
+ _query = format ["updateVehicleBlacklist:%1:%2", _vid, _pid];
+ [_query, 1] call HC_fnc_asyncCall;
+ };
} else {
- _vehicle setVariable ["Trunk",[[],0],true];
+ _vehicle setVariable ["Trunk", [[], 0], true];
};
if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
_vehicle setFuel (_vInfo select 11);
- } else {
+} else {
_vehicle setFuel 1;
};
-if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
+if (!(_gear isEqualTo []) && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
@@ -173,7 +167,7 @@ if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqua
};
};
-if (count _damage > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
+if (!(_damage isEqualTo []) && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
_parts = getAllHitPointsDamage _vehicle;
for "_i" from 0 to ((count _damage) - 1) do {
@@ -182,7 +176,7 @@ if (count _damage > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqual
};
//Sets of animations
-if ((_vInfo select 1) isEqualTo "civ" && ((_vInfo select 2)) isEqualTo "B_Heli_Light_01_F" && !((_vInfo select 8) isEqualTo 13)) then {
+if ((_vInfo select 1) isEqualTo "civ" && (_vInfo select 2) isEqualTo "B_Heli_Light_01_F" && !((_vInfo select 8) isEqualTo 13)) then {
[_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
@@ -190,9 +184,9 @@ if ((_vInfo select 1) isEqualTo "cop" && ((_vInfo select 2)) in ["C_Offroad_01_F
[_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
-if ((_vInfo select 1) isEqualTo "med" && ((_vInfo select 2)) isEqualTo "C_Offroad_01_F") then {
+if ((_vInfo select 1) isEqualTo "med" && (_vInfo select 2) isEqualTo "C_Offroad_01_F") then {
[_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
-[1,_spawntext] remoteExecCall ["life_fnc_broadcast",_unit];
+[1, _spawntext] remoteExecCall ["life_fnc_broadcast",_unit];
serv_sv_use deleteAt _servIndex;
diff --git a/life_hc/MySQL/Vehicles/fn_vehicleCreate.sqf b/life_hc/MySQL/Vehicles/fn_vehicleCreate.sqf
old mode 100644
new mode 100755
index bb64db519..5f2434c74
--- a/life_hc/MySQL/Vehicles/fn_vehicleCreate.sqf
+++ b/life_hc/MySQL/Vehicles/fn_vehicleCreate.sqf
@@ -7,17 +7,19 @@
Description:
Answers the query request to create the vehicle in the database.
*/
-private ["_uid","_side","_type","_classname","_color","_plate"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[west]] call BIS_fnc_param;
-_vehicle = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-_color = [_this,3,-1,[0]] call BIS_fnc_param;
+
+params [
+ ["_uid", "", [""]],
+ ["_side", sideUnknown, [west]],
+ ["_vehicle", objNull, [objNull]],
+ ["_color", -1, [0]]
+];
//Error checks
-if (_uid isEqualTo "" || _side isEqualTo sideUnknown || isNull _vehicle) exitWith {};
+if (_uid isEqualTo "" || {_side isEqualTo sideUnknown} || {isNull _vehicle}) exitWith {};
if (!alive _vehicle) exitWith {};
-_className = typeOf _vehicle;
-_type = switch (true) do {
+private _className = typeOf _vehicle;
+private _type = switch (true) do {
case (_vehicle isKindOf "Car"): {"Car"};
case (_vehicle isKindOf "Air"): {"Air"};
case (_vehicle isKindOf "Ship"): {"Ship"};
@@ -30,8 +32,7 @@ _side = switch (_side) do {
default {"Error"};
};
-_plate = round(random(1000000));
-
-[_uid,_side,_type,_classname,_color,_plate] call HC_fnc_insertVehicle;
+private _plate = round(random(1000000));
+[_uid, _side, _type, _classname, _color, _plate] call HC_fnc_insertVehicle;
-_vehicle setVariable ["dbInfo",[_uid,_plate],true];
+_vehicle setVariable ["dbInfo", [_uid, _plate], true];
diff --git a/life_hc/MySQL/Vehicles/fn_vehicleDelete.sqf b/life_hc/MySQL/Vehicles/fn_vehicleDelete.sqf
old mode 100644
new mode 100755
index 7c392232f..218dfe874
--- a/life_hc/MySQL/Vehicles/fn_vehicleDelete.sqf
+++ b/life_hc/MySQL/Vehicles/fn_vehicleDelete.sqf
@@ -8,16 +8,16 @@
Doesn't actually delete since we don't give our DB user that type of
access so instead we set it to alive=0 so it never shows again.
*/
-diag_log "Script VehicleDelete HC";
-private ["_vid","_sp","_pid","_query","_sql","_type","_thread"];
-_vid = [_this,0,-1,[0]] call BIS_fnc_param;
-_pid = [_this,1,"",[""]] call BIS_fnc_param;
-_sp = [_this,2,2500,[0]] call BIS_fnc_param;
-_unit = [_this,3,objNull,[objNull]] call BIS_fnc_param;
-_type = [_this,4,"",[""]] call BIS_fnc_param;
-if (_vid isEqualTo -1 || _pid isEqualTo "" || _sp isEqualTo 0 || isNull _unit || _type isEqualTo "") exitWith {};
+params [
+ ["_vid", -1, [0]],
+ ["_pid", "", [""]],
+ ["_sp", 2500, [0]],
+ ["_unit", objNull, [objNull]],
+ ["_type", "", [""]]
+];
-_query = format ["UPDATE vehicles SET alive='0' WHERE pid='%1' AND id='%2'",_pid,_vid];
+if (_vid isEqualTo -1 || {_pid isEqualTo ""} || {_sp isEqualTo 0} || {isNull _unit} || {_type isEqualTo ""}) exitWith {};
-_thread = [_query,1] call HC_fnc_asyncCall;
+private _query = format ["deleteVehicleID:%1:%2", _pid, _vid];
+private _thread = [_query, 1] call HC_fnc_asyncCall;
diff --git a/life_hc/MySQL/Vehicles/fn_vehicleStore.sqf b/life_hc/MySQL/Vehicles/fn_vehicleStore.sqf
old mode 100644
new mode 100755
index f963dd9de..9f27bba11
--- a/life_hc/MySQL/Vehicles/fn_vehicleStore.sqf
+++ b/life_hc/MySQL/Vehicles/fn_vehicleStore.sqf
@@ -2,44 +2,49 @@
/*
File: fn_vehicleStore.sqf
Author: Bryan "Tonic" Boardwine
-
- This file is for Nanou's HeadlessClient.
-
Description:
Stores the vehicle in the 'Garage'
*/
-private ["_vehicle","_impound","_vInfo","_vInfo","_plate","_uid","_query","_sql","_unit","_trunk","_vehItems","_vehMags","_vehWeapons","_vehBackpacks","_cargo","_saveItems","_storetext","_resourceItems","_fuel","_damage","_itemList","_totalweight","_weight"];
-_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_impound = [_this,1,false,[true]] call BIS_fnc_param;
-_unit = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-_storetext = [_this,3,"",[""]] call BIS_fnc_param;
-_ownerID = _unit getVariable ["life_clientID",-1];
-_resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
-
-if (isNull _vehicle || isNull _unit) exitWith {life_impound_inuse = false; _ownerID publicVariableClient "life_impound_inuse";life_garage_store = false;_ownerID publicVariableClient "life_garage_store";}; //Bad data passed.
-_vInfo = _vehicle getVariable ["dbInfo",[]];
-
-if (count _vInfo > 0) then {
+
+params [
+ ["_vehicle", objNull, [objNull]],
+ ["_impound", false, [true]],
+ ["_unit", objNull, [objNull]],
+ ["_storetext", "", [""]]
+];
+
+private _resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
+private _ownerID = _unit getVariable ["life_clientID",-1];
+
+if (isNull _vehicle || {isNull _unit}) exitWith {life_impound_inuse = false; _ownerID publicVariableClient "life_impound_inuse";life_garage_store = false;_ownerID publicVariableClient "life_garage_store";}; //Bad data passed.
+private _vInfo = _vehicle getVariable ["dbInfo", []];
+private "_plate";
+private "_uid";
+
+if !(_vInfo isEqualTo []) then {
_plate = _vInfo select 1;
_uid = _vInfo select 0;
};
// save damage.
+private "_damage";
if (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1) then {
_damage = getAllHitPointsDamage _vehicle;
_damage = _damage select 2;
- } else {
+} else {
_damage = [];
};
-_damage = [_damage] call HC_fnc_mresArray;
// because fuel price!
+private "_fuel";
if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
_fuel = (fuel _vehicle);
- } else {
+} else {
_fuel = 1;
};
+private "_query";
+private "_thread";
if (_impound) exitWith {
if (_vInfo isEqualTo []) then {
life_impound_inuse = false;
@@ -49,7 +54,7 @@ if (_impound) exitWith {
deleteVehicle _vehicle;
};
} else { // no free repairs!
- _query = format ["UPDATE vehicles SET active='0', fuel='%3', damage='%4' WHERE pid='%1' AND plate='%2'",_uid , _plate, _fuel, _damage];
+ _query = format ["updateVehicleFuel:%1:%2:%3:%4", _fuel, _damage, _uid, _plate];
_thread = [_query,1] call HC_fnc_asyncCall;
if (!isNil "_vehicle" && {!isNull _vehicle}) then {
@@ -63,7 +68,14 @@ if (_impound) exitWith {
// not persistent so just do this!
if (_vInfo isEqualTo []) exitWith {
+ if (LIFE_SETTINGS(getNumber,"vehicle_rentalReturn") isEqualTo 1) then {
+ [1,"STR_Garage_Store_NotPersistent2",true] remoteExecCall ["life_fnc_broadcast",_ownerID];
+ if (!isNil "_vehicle" && {!isNull _vehicle}) then {
+ deleteVehicle _vehicle;
+ };
+ } else {
[1,"STR_Garage_Store_NotPersistent",true] remoteExecCall ["life_fnc_broadcast",_ownerID];
+ };
life_garage_store = false;
_ownerID publicVariableClient "life_garage_store";
};
@@ -75,23 +87,25 @@ if !(_uid isEqualTo getPlayerUID _unit) exitWith {
};
// sort out whitelisted items!
-_trunk = _vehicle getVariable ["Trunk", [[], 0]];
-_itemList = _trunk select 0;
-_totalweight = 0;
+private _trunk = _vehicle getVariable ["Trunk", [[], 0]];
+private _itemList = _trunk select 0;
+private _totalweight = 0;
+private "_weight";
_items = [];
if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"save_vehicle_illegal") isEqualTo 1) then {
- _blacklist = false;
- _profileQuery = format ["SELECT name FROM players WHERE pid='%1'", _uid];
+ private _blacklist = false;
+ _profileQuery = format ["selectName:%1", _uid];
_profileName = [_profileQuery, 2] call HC_fnc_asyncCall;
_profileName = _profileName select 0;
+
{
- _isIllegal = M_CONFIG(getNumber,"VirtualItems",_x select 0,"illegal");
+ private _isIllegal = M_CONFIG(getNumber,"VirtualItems",(_x select 0),"illegal");
- _isIllegal = if (_isIllegal isEqualTo 1) then { true } else { false };
+ _isIllegal = if (_isIllegal isEqualTo 1) then { true } else { false };
- if (((_x select 0) in _resourceItems) || (_isIllegal)) then {
- _items pushBack[_x select 0, _x select 1];
+ if (((_x select 0) in _resourceItems) || (_isIllegal)) then {
+ _items pushBack[(_x select 0),(_x select 1)];
_weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
_totalweight = _weight + _totalweight;
};
@@ -101,48 +115,47 @@ if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
}
foreach _itemList;
- if (_blacklist) then {
- [_uid, _profileName, "481"] remoteExecCall["HC_fnc_wantedAdd", HC_Life];
- _query = format ["UPDATE vehicles SET blacklist='1' WHERE pid='%1' AND plate='%2'", _uid, _plate];
+ if (_blacklist) then {
+ [_uid, _profileName, "481"] remoteExecCall["life_fnc_wantedAdd", RSERV];
+ _query = format ["updateVehicleBlacklistPlate:%1:%2", _uid, _plate];
_thread = [_query, 1] call HC_fnc_asyncCall;
};
}
else {
- {
- if ((_x select 0) in _resourceItems) then {
- _items pushBack[_x select 0,_x select 1];
- _weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
- _totalweight = _weight + _totalweight;
- };
- }
- forEach _itemList;
+ {
+ if ((_x select 0) in _resourceItems) then {
+ _items pushBack[(_x select 0),(_x select 1)];
+ _weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
+ _totalweight = _weight + _totalweight;
+ };
+ }
+ forEach _itemList;
};
- _trunk = [_items, _totalweight];
- }
- else {
- _trunk = [[], 0];
- };
+ _trunk = [_items, _totalweight];
+}
+else {
+ _trunk = [[], 0];
+};
+
+private "_cargo";
+
if (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1) then {
- _vehItems = getItemCargo _vehicle;
- _vehMags = getMagazineCargo _vehicle;
- _vehWeapons = getWeaponCargo _vehicle;
- _vehBackpacks = getBackpackCargo _vehicle;
- _cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
+ private _vehItems = getItemCargo _vehicle;
+ private _vehMags = getMagazineCargo _vehicle;
+ private _vehWeapons = getWeaponCargo _vehicle;
+ private _vehBackpacks = getBackpackCargo _vehicle;
+ _cargo = [_vehItems, _vehMags, _vehWeapons, _vehBackpacks];
// no items? clean the array so the database looks pretty
if (((_vehItems select 0) isEqualTo []) && ((_vehMags select 0) isEqualTo []) && ((_vehWeapons select 0) isEqualTo []) && ((_vehBackpacks select 0) isEqualTo [])) then {_cargo = [];};
} else {
_cargo = [];
};
-// prepare
-_trunk = [_trunk] call HC_fnc_mresArray;
-_cargo = [_cargo] call HC_fnc_mresArray;
-
// update
-_query = format ["UPDATE vehicles SET active='0', inventory='%3', gear='%4', fuel='%5', damage='%6' WHERE pid='%1' AND plate='%2'", _uid, _plate, _trunk, _cargo, _fuel, _damage];
+_query = format ["updateVehicleAll:%1:%2:%3:%4:%5:%6", _trunk, _cargo, _fuel, _damage, _uid, _plate];
_thread = [_query,1] call HC_fnc_asyncCall;
if (!isNil "_vehicle" && {!isNull _vehicle}) then {
@@ -151,4 +164,4 @@ if (!isNil "_vehicle" && {!isNull _vehicle}) then {
life_garage_store = false;
_ownerID publicVariableClient "life_garage_store";
-[1,_storetext] remoteExecCall ["life_fnc_broadcast",_ownerID];
+[1, _storetext] remoteExecCall ["life_fnc_broadcast", _ownerID];
diff --git a/life_hc/MySQL/Vehicles/fn_vehicleUpdate.sqf b/life_hc/MySQL/Vehicles/fn_vehicleUpdate.sqf
old mode 100644
new mode 100755
index 39590e998..d623b2fef
--- a/life_hc/MySQL/Vehicles/fn_vehicleUpdate.sqf
+++ b/life_hc/MySQL/Vehicles/fn_vehicleUpdate.sqf
@@ -8,48 +8,53 @@
Description:
Tells the database that this vehicle need update inventory.
*/
-private ["_vehicle","_plate","_uid","_query","_sql","_dbInfo","_thread","_cargo","_trunk","_resourceItems","_itemList","_totalweight","_weight"];
-_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_mode = [_this,1,1,[0]] call BIS_fnc_param;
+
+params [
+ ["_vehicle", objNull, [objNull]],
+ ["_mode", 1, [0]]
+];
+
if (isNull _vehicle) exitWith {}; //NULL
-_dbInfo = _vehicle getVariable ["dbInfo",[]];
+private _dbInfo = _vehicle getVariable ["dbInfo",[]];
if (_dbInfo isEqualTo []) exitWith {};
-_uid = _dbInfo select 0;
-_plate = _dbInfo select 1;
+
+private _uid = _dbInfo select 0;
+private _plate = _dbInfo select 1;
+
switch (_mode) do {
case 1: {
- _vehItems = getItemCargo _vehicle;
- _vehMags = getMagazineCargo _vehicle;
- _vehWeapons = getWeaponCargo _vehicle;
- _vehBackpacks = getBackpackCargo _vehicle;
- _cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
+ private _vehItems = getItemCargo _vehicle;
+ private _vehMags = getMagazineCargo _vehicle;
+ private _vehWeapons = getWeaponCargo _vehicle;
+ private _vehBackpacks = getBackpackCargo _vehicle;
+ private _cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
// Keep it clean!
- if (((_vehItems select 0) isEqualTo []) && ((_vehMags select 0) isEqualTo []) && ((_vehWeapons select 0) isEqualTo []) && ((_vehBackpacks select 0) isEqualTo [])) then {_cargo = [];};
-
- _cargo = [_cargo] call HC_fnc_mresArray;
+ if (((_vehItems select 0) isEqualTo []) && ((_vehMags select 0) isEqualTo []) && ((_vehWeapons select 0) isEqualTo []) && ((_vehBackpacks select 0) isEqualTo [])) then {
+ _cargo = [];
+ };
- _query = format ["UPDATE vehicles SET gear='%3' WHERE pid='%1' AND plate='%2'",_uid,_plate,_cargo];
- _thread = [_query,1] call HC_fnc_asyncCall;
+ private _query = format ["updateVehicleGear:%1:%2:%3", _cargo, _uid, _plate];
+ private _thread = [_query, 1] call HC_fnc_asyncCall;
};
case 2: {
- _resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
- _trunk = _vehicle getVariable ["Trunk",[[],0]];
- _totalweight = 0;
- _items = [];
+ private _resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
+ private _trunk = _vehicle getVariable ["Trunk",[[],0]];
+ private _itemList = _trunk select 0;
+ private _totalweight = 0;
+ private _items = [];
{
if ((_x select 0) in _resourceItems) then {
- _items pushBack [(_x select 0),(_x select 1)];
- _weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
+ _items pushBack [_x select 0,_x select 1];
+ private _weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
_totalweight = _weight + _totalweight;
};
- }forEach (_trunk select 0);
+ } forEach _itemList;
_trunk = [_items,_totalweight];
- _trunk = [_trunk] call HC_fnc_mresArray;
- _query = format ["UPDATE vehicles SET inventory='%3' WHERE pid='%1' AND plate='%2'",_uid,_plate,_trunk];
- _thread = [_query,1] call HC_fnc_asyncCall;
+ private _query = format ["updateVehicleTrunk:%1:%2:%3", _trunk, _uid, _plate];
+ private _thread = [_query,1] call HC_fnc_asyncCall;
};
};
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedAdd.sqf b/life_hc/MySQL/WantedSystem/fn_wantedAdd.sqf
old mode 100644
new mode 100755
index c878dc3c5..9b369a26a
--- a/life_hc/MySQL/WantedSystem/fn_wantedAdd.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedAdd.sqf
@@ -10,88 +10,45 @@
Description:
Adds or appends a unit to the wanted list.
*/
-private ["_uid","_type","_index","_data","_crime","_val","_customBounty","_name","_pastCrimes","_query","_queryResult"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_name = [_this,1,"",[""]] call BIS_fnc_param;
-_type = [_this,2,"",[""]] call BIS_fnc_param;
-_customBounty = [_this,3,-1,[0]] call BIS_fnc_param;
-if (_uid isEqualTo "" || _type isEqualTo "" || _name isEqualTo "") exitWith {}; //Bad data passed.
+
+params [
+ ["_uid","",[""]],
+ ["_name","",[""]],
+ ["_type","",[""]],
+ ["_customBounty",-1,[0]]
+];
+
+if (_uid isEqualTo "" || {_type isEqualTo ""} || {_name isEqualTo ""}) exitWith {}; //Bad data passed.
//What is the crime?
-switch (_type) do
-{
- case "187V": {_type = ["187V",650]};
- case "187": {_type = ["187",2000]};
- case "901": {_type = ["901",450]};
- case "215": {_type = ["215",200]};
- case "213": {_type = ["213",1000]};
- case "211": {_type = ["211",100]};
- case "207": {_type = ["207",350]};
- case "207A": {_type = ["207A",200]};
- case "390": {_type = ["390",1500]};
- case "487": {_type = ["487",150]};
- case "488": {_type = ["488",70]};
- case "480": {_type = ["480",100]};
- case "481": {_type = ["481",100]};
- case "482": {_type = ["482",500]};
- case "483": {_type = ["483",950]};
- case "459": {_type = ["459",650]};
- case "666": {_type = ["666",200]};
- case "667": {_type = ["667",4500]};
- case "668": {_type = ["668",1500]};
+private _crimesConfig = getArray(missionConfigFile >> "Life_Settings" >> "crimes");
+private _index = [_type, _crimesConfig] call life_util_fnc_index;
- case "1": {_type = ["1",250]};
- case "2": {_type = ["2",100]};
- case "3": {_type = ["3",75]};
- case "4": {_type = ["4",125]};
- case "5": {_type = ["5",50]};
- case "6": {_type = ["6",40]};
- case "7": {_type = ["7",75]};
- case "8": {_type = ["8",2500]};
- case "9": {_type = ["9",2500]};
- case "10": {_type = ["10",7500]};
- case "11": {_type = ["11",5000]};
- case "12": {_type = ["12",1250]};
- case "13": {_type = ["13",750]};
- case "14": {_type = ["14",250]};
- case "15": {_type = ["15",1250]};
- case "16": {_type = ["16",750]};
- case "17": {_type = ["17",50]};
- case "18": {_type = ["18",750]};
- case "19": {_type = ["19",1250]};
- case "20": {_type = ["20",250]};
- case "21": {_type = ["21",250]};
- case "22": {_type = ["22",1000]};
- case "23": {_type = ["23",2500]};
- case "24": {_type = ["24",5000]};
- case "25": {_type = ["25",10000]};
- default {_type = [];};
-};
+if (_index isEqualTo -1) exitWith {};
+
+_type = [_type, parseNumber ((_crimesConfig select _index) select 1)];
if (_type isEqualTo []) exitWith {}; //Not our information being passed...
//Is there a custom bounty being sent? Set that as the pricing.
if !(_customBounty isEqualTo -1) then {_type set[1,_customBounty];};
//Search the wanted list to make sure they are not on it.
-_query = format ["SELECT wantedID FROM wanted WHERE wantedID='%1'",_uid];
-_queryResult = [_query,2,true] call HC_fnc_asyncCall;
-_val = [_type select 1] call HC_fnc_numberSafe;
-_number = _type select 0;
+private _query = format ["selectWantedID:%1", _uid];
+private _queryResult = [_query,2,true] call HC_fnc_asyncCall;
+private _val = _type select 1;
+private _number = _type select 0;
+
+if !(_queryResult isEqualTo []) then {
+ _query = format ["selectWantedCrimes:%1", _uid];
+ _queryResult = [_query,2] call HC_fnc_asyncCall;
+ _pastCrimes = _queryResult select 0;
-if !(count _queryResult isEqualTo 0) then
-{
- _crime = format ["SELECT wantedCrimes, wantedBounty FROM wanted WHERE wantedID='%1'",_uid];
- _crimeresult = [_crime,2] call HC_fnc_asyncCall;
- _pastcrimess = [_crimeresult select 0] call HC_fnc_mresToArray;
- if (_pastcrimess isEqualType "") then {_pastcrimess = call compile format ["%1", _pastcrimess];};
- _pastCrimes = _pastcrimess;
+ if (_pastCrimes isEqualType "") then {_pastCrimes = call compile format ["%1", _pastCrimes];};
_pastCrimes pushBack _number;
- _pastCrimes = [_pastCrimes] call HC_fnc_mresArray;
- _query = format ["UPDATE wanted SET wantedCrimes = '%1', wantedBounty = wantedBounty + '%2', active = '1' WHERE wantedID='%3'",_pastCrimes,_val,_uid];
+ _query = format ["updateWanted:%1:%2:%3", _pastCrimes, _val, _uid];
[_query,1] call HC_fnc_asyncCall;
} else {
_crime = [_type select 0];
- _crime = [_crime] call HC_fnc_mresArray;
- _query = format ["INSERT INTO wanted (wantedID, wantedName, wantedCrimes, wantedBounty, active) VALUES('%1', '%2', '%3', '%4', '1')",_uid,_name,_crime,_val];
+ _query = format ["insertWanted:%1:%2:%3:%4", _uid, _name, _crime, _val];
[_query,1] call HC_fnc_asyncCall;
};
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedBounty.sqf b/life_hc/MySQL/WantedSystem/fn_wantedBounty.sqf
old mode 100644
new mode 100755
index 9096a2ef4..7c99d2219
--- a/life_hc/MySQL/WantedSystem/fn_wantedBounty.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedBounty.sqf
@@ -10,24 +10,27 @@
Description:
Checks if the person is on the bounty list and awards the cop for killing them.
*/
-private ["_civ","_cop","_id","_half","_result","_queryResult","_amount"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_civ = [_this,1,objNull,[objNull]] call BIS_fnc_param;
-_cop = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-_half = [_this,3,false,[false]] call BIS_fnc_param;
-if (isNull _civ || isNull _cop) exitWith {};
-_query = format ["SELECT wantedID, wantedName, wantedCrimes, wantedBounty FROM wanted WHERE active='1' AND wantedID='%1'",_uid];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+params [
+ ["_uid","",[""]],
+ ["_civ",objNull,[objNull]],
+ ["_cop",objNull,[objNull]],
+ ["_half",false,[false]]
+];
-if !(count _queryResult isEqualTo 0) then
-{
- _amount = _queryResult select 3;
+if (isNull _civ || {isNull _cop}) exitWith {};
+
+private _query = format ["selectWanted:%1", _uid];
+private _queryResult = [_query,2] call HC_fnc_asyncCall;
+
+private "_amount";
+if !(_queryResult isEqualTo []) then {
+ _amount = _queryResult param [3];
if !(_amount isEqualTo 0) then {
if (_half) then {
- [((_amount) / 2),_amount] remoteExecCall ["life_fnc_bountyReceive",_cop];
+ [((_amount) / 2),_amount] remoteExecCall ["life_fnc_bountyReceive", _cop];
} else {
- [_amount,_amount] remoteExecCall ["life_fnc_bountyReceive",_cop];
+ [_amount,_amount] remoteExecCall ["life_fnc_bountyReceive", _cop];
};
};
};
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedCrimes.sqf b/life_hc/MySQL/WantedSystem/fn_wantedCrimes.sqf
old mode 100644
new mode 100755
index 90722f07a..562c904af
--- a/life_hc/MySQL/WantedSystem/fn_wantedCrimes.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedCrimes.sqf
@@ -10,71 +10,27 @@
Description:
Grabs a list of crimes committed by a person.
*/
-private ["_display","_criminal","_tab","_queryResult","_result","_ret","_crimesDb","_crimesArr","_type"];
+
disableSerialization;
-_ret = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_criminal = [_this,1,[],[]] call BIS_fnc_param;
-_query = format ["SELECT wantedCrimes, wantedBounty FROM wanted WHERE active='1' AND wantedID='%1'",_criminal select 0];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+params [
+ ["_ret",objNull,[objNull]],
+ ["_criminal",[],[[]]]
+];
-_crimesArr = [];
+private _query = format ["selectWantedActive:%1", _criminal select 0];
+private _queryResult = [_query, 2] call HC_fnc_asyncCall;
-_type = [_queryResult select 0] call HC_fnc_mresToArray;
+private _type = _queryResult select 0;
if (_type isEqualType "") then {_type = call compile format ["%1", _type];};
+
+private _crimesArr = [];
{
- switch (_x) do
- {
- case "187V": {_x = "STR_Crime_187V"};
- case "187": {_x = "STR_Crime_187"};
- case "901": {_x = "STR_Crime_901"};
- case "215": {_x = "STR_Crime_215"};
- case "213": {_x = "STR_Crime_213"};
- case "211": {_x = "STR_Crime_211"};
- case "207": {_x = "STR_Crime_207"};
- case "207A": {_x = "STR_Crime_207A"};
- case "390": {_x = "STR_Crime_390"};
- case "487": {_x = "STR_Crime_487"};
- case "488": {_x = "STR_Crime_488"};
- case "480": {_x = "STR_Crime_480"};
- case "481": {_x = "STR_Crime_481"};
- case "482": {_x = "STR_Crime_482"};
- case "483": {_x = "STR_Crime_483"};
- case "459": {_x = "STR_Crime_459"};
- case "666": {_x = "STR_Crime_666"};
- case "667": {_x = "STR_Crime_667"};
- case "668": {_x = "STR_Crime_668"};
- case "919": {_x = "STR_Crime_919"};
- case "919A": {_x = "STR_Crime_919A"};
+ private _str = format ["STR_Crime_%1", _x];
+ _crimesArr pushBack _str;
+ false
+} count _type;
- case "1": {_x = "STR_Crime_1"};
- case "2": {_x = "STR_Crime_2"};
- case "3": {_x = "STR_Crime_3"};
- case "4": {_x = "STR_Crime_4"};
- case "5": {_x = "STR_Crime_5"};
- case "6": {_x = "STR_Crime_6"};
- case "7": {_x = "STR_Crime_7"};
- case "8": {_x = "STR_Crime_8"};
- case "9": {_x = "STR_Crime_9"};
- case "10": {_x = "STR_Crime_10"};
- case "11": {_x = "STR_Crime_11"};
- case "12": {_x = "STR_Crime_12"};
- case "13": {_x = "STR_Crime_13"};
- case "14": {_x = "STR_Crime_14"};
- case "15": {_x = "STR_Crime_15"};
- case "16": {_x = "STR_Crime_16"};
- case "17": {_x = "STR_Crime_17"};
- case "18": {_x = "STR_Crime_18"};
- case "19": {_x = "STR_Crime_19"};
- case "20": {_x = "STR_Crime_20"};
- case "21": {_x = "STR_Crime_21"};
- case "22": {_x = "STR_Crime_22"};
- case "23": {_x = "STR_Crime_23"};
- case "24": {_x = "STR_Crime_24"};
- case "25": {_x = "STR_Crime_25"};
- };
- _crimesArr pushBack _x;
-}forEach _type;
-_queryResult set[0,_crimesArr];
+_queryResult set[0, _crimesArr];
-[_queryResult] remoteExec ["life_fnc_wantedInfo",_ret];
+[_queryResult] remoteExec ["life_fnc_wantedInfo", _ret];
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedFetch.sqf b/life_hc/MySQL/WantedSystem/fn_wantedFetch.sqf
old mode 100644
new mode 100755
index 40e66bdf0..eaa133e51
--- a/life_hc/MySQL/WantedSystem/fn_wantedFetch.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedFetch.sqf
@@ -11,39 +11,46 @@
Description:
Displays wanted list information sent from the server.
*/
-private ["_ret","_list","_result","_queryResult","_units","_inStatement"];
-_ret = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_ret", objNull, [objNull]]
+];
+
if (isNull _ret) exitWith {};
-_inStatement = "";
-_list = [];
-_units = [];
-{if ((side _x) isEqualTo civilian) then {_units pushBack (getPlayerUID _x)};} forEach playableUnits;
+
+private _inStatement = "";
+private _list = [];
+private _units = [];
+{
+ if (side _x isEqualTo civilian) then {_units pushBack (getPlayerUID _x)};
+ false
+} count playableUnits;
if (_units isEqualTo []) exitWith {[_list] remoteExec ["life_fnc_wantedList",_ret];};
{
if (count _units > 1) then {
- if (_inStatement isEqualTo "") then {
+ if (_inStatement isEqualTo "") then {
_inStatement = "'" + _x + "'";
} else {
_inStatement = _inStatement + ", '" + _x + "'";
};
} else {
- _inStatement = _x;
+ _inStatement = _x;
};
} forEach _units;
-_query = format ["SELECT wantedID, wantedName FROM wanted WHERE active='1' AND wantedID in (%1)",_inStatement];
-_queryResult = [_query,2,true] call HC_fnc_asyncCall;
-
-diag_log format ["Query: %1",_query];
-
+private _query = format ["selectWantedActiveID:%1", _inStatement];
+private _queryResult = [_query, 2, true] call HC_fnc_asyncCall;
+if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
+ diag_log format ["Query: %1",_query];
+};
{
- _list pushBack (_x);
-}
-forEach _queryResult;
+ _list pushBack _x;
+ false
+} count _queryResult;
-if (_list isEqualTo []) exitWith {[_list] remoteExec ["life_fnc_wantedList",_ret];};
+if (_list isEqualTo []) exitWith {[_list] remoteExec ["life_fnc_wantedList", _ret];};
-[_list] remoteExec ["life_fnc_wantedList",_ret];
+[_list] remoteExec ["life_fnc_wantedList", _ret];
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedPerson.sqf b/life_hc/MySQL/WantedSystem/fn_wantedPerson.sqf
old mode 100644
new mode 100755
index c1ffdf50b..383c96fa2
--- a/life_hc/MySQL/WantedSystem/fn_wantedPerson.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedPerson.sqf
@@ -10,12 +10,16 @@
Description:
Fetches a specific person from the wanted array.
*/
-private ["_unit","_index","_queryResult","_result"];
-_unit = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_unit", objNull, [objNull]]
+];
+
if (isNull _unit) exitWith {[]};
-_uid = getPlayerUID player;
-_query = format ["SELECT wantedID, wantedName, wantedBounty FROM wanted WHERE active='1' AND wantedID='%1'",_uid];
-_queryResult = [_query,2] call HC_fnc_asyncCall;
+private _uid = getPlayerUID _unit;
+private _query = format ["selectWantedBounty:%1", _uid];
+private _queryResult = [_query,2] call HC_fnc_asyncCall;
+
if (_queryResult isEqualTo []) exitWith {[]};
_queryResult;
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedProfUpdate.sqf b/life_hc/MySQL/WantedSystem/fn_wantedProfUpdate.sqf
old mode 100644
new mode 100755
index 3daa31ea9..f74adc3ad
--- a/life_hc/MySQL/WantedSystem/fn_wantedProfUpdate.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedProfUpdate.sqf
@@ -9,19 +9,20 @@
Description:
Updates name of player if they change profiles
*/
-private ["_uid","_name","_query","_tickTime","_wantedCheck","_wantedQuery"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_name = [_this,1,"",[""]] call BIS_fnc_param;
+params [
+ ["_uid","",[""]],
+ ["_name","",[""]]
+];
+
//Bad data check
-if (_uid isEqualTo "" || _name isEqualTo "") exitWith {};
+if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {};
-_wantedCheck = format ["SELECT wantedName FROM wanted WHERE wantedID='%1'",_uid];
-_wantedQuery = [_wantedCheck,2] call HC_fnc_asyncCall;
+private _wantedCheck = format ["selectWantedName:%1", _uid];
+private _wantedQuery = [_wantedCheck, 2] call HC_fnc_asyncCall;
if (_wantedQuery isEqualTo []) exitWith {};
-_wantedQuery = call compile format ["%1",_wantedQuery];
if !(_name isEqualTo (_wantedQuery select 0)) then {
- _query = format ["UPDATE wanted SET wantedName='%1' WHERE wantedID='%2'",_name,_uid];
- [_query,2] call HC_fnc_asyncCall;
+ private _query = format ["updateWantedName:%1:%2", _name, _uid];
+ [_query, 2] call HC_fnc_asyncCall;
};
diff --git a/life_hc/MySQL/WantedSystem/fn_wantedRemove.sqf b/life_hc/MySQL/WantedSystem/fn_wantedRemove.sqf
old mode 100644
new mode 100755
index 677047ade..4c2bca12c
--- a/life_hc/MySQL/WantedSystem/fn_wantedRemove.sqf
+++ b/life_hc/MySQL/WantedSystem/fn_wantedRemove.sqf
@@ -10,9 +10,12 @@
Description:
Removes a person from the wanted list.
*/
-private ["_uid","_query"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
+
+params [
+ ["_uid", "", [""]]
+];
+
if (_uid isEqualTo "") exitWith {}; //Bad data
-_query = format ["UPDATE wanted SET active = '0', wantedCrimes = '[]', wantedBounty = 0 WHERE wantedID='%1'",_uid];
-[_query,2] call HC_fnc_asyncCall;
+private _query = format ["deleteWanted:%1", _uid];
+[_query, 2] call HC_fnc_asyncCall;
diff --git a/life_hc/config.cpp b/life_hc/config.cpp
old mode 100644
new mode 100755
index 3478c4f4a..da33046a0
--- a/life_hc/config.cpp
+++ b/life_hc/config.cpp
@@ -24,13 +24,8 @@ class CfgFunctions
{
file = "\life_hc\MySQL\General";
class asyncCall {};
- class bool {};
class insertRequest {};
class insertVehicle {};
- class mresArray {};
- class mresString {};
- class mresToArray {};
- class numberSafe {};
class queryRequest {};
class updatePartial {};
class updateRequest {};
diff --git a/life_hc/initHC.sqf b/life_hc/initHC.sqf
index ed820d00a..7d333a6a2 100644
--- a/life_hc/initHC.sqf
+++ b/life_hc/initHC.sqf
@@ -21,7 +21,7 @@ if (isNil {uiNamespace getVariable "life_sql_id"}) then {
try {
_result = EXTDB format ["9:ADD_DATABASE:%1",EXTDB_SETTING(getText,"DatabaseName")];
if (!(_result isEqualTo "[1]")) then {throw "extDB3: Error with Database Connection"};
- _result = EXTDB format ["9:ADD_DATABASE_PROTOCOL:%2:SQL:%1:TEXT2",FETCH_CONST(life_sql_id),EXTDB_SETTING(getText,"DatabaseName")];
+ _result = EXTDB format ["9:ADD_DATABASE_PROTOCOL:%2:SQL_CUSTOM:%1:AL.ini",FETCH_CONST(life_sql_id),EXTDB_SETTING(getText,"DatabaseName")];
if (!(_result isEqualTo "[1]")) then {throw "extDB3: Error with Database Connection"};
} catch {
diag_log _exception;
@@ -48,10 +48,10 @@ if (_extDBNotLoaded isEqualType []) then {
if (_extDBNotLoaded isEqualType []) exitWith {}; //extDB3-HC did not fully initialize so terminate the rest of the initialization process.
-["CALL resetLifeVehicles",1] call HC_fnc_asyncCall;
-["CALL deleteDeadVehicles",1] call HC_fnc_asyncCall;
-["CALL deleteOldHouses",1] call HC_fnc_asyncCall;
-["CALL deleteOldGangs",1] call HC_fnc_asyncCall;
+["resetLifeVehicles", 1] call HC_fnc_asyncCall;
+["deleteDeadVehicles", 1] call HC_fnc_asyncCall;
+["deleteOldHouses", 1] call HC_fnc_asyncCall;
+["deleteOldGangs", 1] call HC_fnc_asyncCall;
_timeStamp = diag_tickTime;
diag_log "----------------------------------------------------------------------------------------------------";
@@ -59,8 +59,6 @@ diag_log "------------------------------------ Starting Altis Life HC Init -----
diag_log format["-------------------------------------------- Version %1 -----------------------------------------",(LIFE_SETTINGS(getText,"framework_version"))];
diag_log "----------------------------------------------------------------------------------------------------";
-[] execFSM "\life_hc\FSM\cleanup.fsm";
-
[] spawn HC_fnc_cleanup;
/* Initialize hunting zone(s) */
@@ -86,7 +84,6 @@ HC_MPAllowedFuncs = [
"hc_fnc_addhouse",
"hc_fnc_deletedbcontainer",
"hc_fnc_fetchplayerhouses",
- "hc_fnc_housecleanup",
"hc_fnc_sellhouse",
"hc_fnc_sellhousecontainer",
"hc_fnc_updatehousecontainers",
diff --git a/life_server/FSM/cleanup.fsm b/life_server/FSM/cleanup.fsm
deleted file mode 100644
index 7ea28061e..000000000
--- a/life_server/FSM/cleanup.fsm
+++ /dev/null
@@ -1,179 +0,0 @@
-/*%FSM*/
-/*%FSM*/
-/*
-item0[] = {"init",0,250,-62.908096,-391.651611,27.091887,-341.651672,0.000000,"init"};
-item1[] = {"true",8,218,-62.976639,-315.185364,27.023363,-265.185364,0.000000,"true"};
-item2[] = {"Share__Work_load",2,250,-64.183350,-224.681931,25.816656,-174.681931,0.000000,"Share " \n "Work-load"};
-item3[] = {"Continue__",4,4314,-220.591476,74.216980,-130.591476,124.216980,0.000000,"" \n "" \n "Continue" \n "" \n ""};
-item4[] = {"Time_Check",4,218,-219.425827,-133.310532,-129.425964,-83.310455,0.000000,"Time Check"};
-item5[] = {"Delete_Dead_Cars",2,250,-220.186951,-29.248400,-130.187195,20.751413,0.000000,"Delete" \n "Dead" \n "Cars"};
-item6[] = {"",7,210,-312.538239,95.295059,-304.538239,103.295059,0.000000,""};
-item7[] = {"",7,210,-312.798218,-204.081940,-304.798218,-196.081940,0.000000,""};
-item8[] = {"End_Cleanup_",1,250,-64.828239,87.581070,25.171984,137.581238,0.000000,"" \n "End Cleanup" \n ""};
-item9[] = {"Check_for_HC_",4,218,-65.059021,-30.047342,24.941008,19.952658,0.000000,"" \n "Check for HC" \n ""};
-link0[] = {0,1};
-link1[] = {1,2};
-link2[] = {2,4};
-link3[] = {3,6};
-link4[] = {4,5};
-link5[] = {5,3};
-link6[] = {5,9};
-link7[] = {6,7};
-link8[] = {7,2};
-link9[] = {9,8};
-globals[] = {0.000000,0,0,0,0,640,480,1,53,6316128,1,-481.887177,425.726196,554.522583,-436.926575,857,816,1};
-window[] = {0,-1,-1,-32000,-32000,1120,545,1909,159,1,875};
-*//*%FSM*/
-class FSM
-{
- fsmName = "Server-Side Cleanup";
- class States
- {
- /*%FSM*/
- class init
- {
- name = "init";
- itemno = 0;
- init = /*%FSM*/"private [""_impound"",""_cars"",""_objs"",""_totCars"",""_thread""];" \n
- "_impound = time;" \n
- "_cars = time;" \n
- "_objs = time;" \n
- "cleanupFSM setFSMVariable [""stopfsm"",false];"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class true
- {
- itemno = 1;
- priority = 0.000000;
- to="Share__Work_load";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"true"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Share__Work_load
- {
- name = "Share__Work_load";
- itemno = 2;
- init = /*%FSM*/""/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class Time_Check
- {
- itemno = 4;
- priority = 0.000000;
- to="Delete_Dead_Cars";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"((time - _cars) > (3 * 60))"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class Delete_Dead_Cars
- {
- name = "Delete_Dead_Cars";
- itemno = 5;
- init = /*%FSM*/"{" \n
- " if (!alive _x) then {" \n
- " _dbInfo = _x getVariable [""dbInfo"",[]];" \n
- " if (count _dbInfo > 0) then {" \n
- " _uid = _dbInfo select 0;" \n
- " _plate = _dbInfo select 1;" \n
- "" \n
- " _query = format [""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate];" \n
- " _query spawn {" \n
- " " \n
- " _thread = [_this,1] call DB_fnc_asyncCall;" \n
- " };" \n
- " };" \n
- " if (!isNil ""_x"" && {!isNull _x}) then {" \n
- " deleteVehicle _x;" \n
- " };" \n
- " };" \n
- "} forEach allMissionObjects ""LandVehicle"";" \n
- "" \n
- "{" \n
- " if (!alive _x) then {" \n
- " _dbInfo = _x getVariable [""dbInfo"",[]];" \n
- " if (count _dbInfo > 0) then {" \n
- " _uid = _dbInfo select 0;" \n
- " _plate = _dbInfo select 1;" \n
- "" \n
- " _query = format [""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate];" \n
- " _query spawn {" \n
- " " \n
- " _thread = [_this,1] call DB_fnc_asyncCall;" \n
- " };" \n
- " };" \n
- " if (!isNil ""_x"" && {!isNull _x}) then {" \n
- " deleteVehicle _x;" \n
- " };" \n
- " };" \n
- "} forEach allMissionObjects ""Air"";" \n
- "_cars = time;" \n
- "" \n
- "//Group cleanup." \n
- "{" \n
- " if (units _x isEqualTo [] && local _x) then {" \n
- " deleteGroup _x;" \n
- " };" \n
- "} forEach allGroups;"/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- /*%FSM*/
- class Check_for_HC_
- {
- itemno = 9;
- priority = 0.000000;
- to="End_Cleanup_";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"cleanupFSM getFSMVariable ""stopfsm"""/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- /*%FSM*/
- class Continue__
- {
- itemno = 3;
- priority = 0.000000;
- to="Share__Work_load";
- precondition = /*%FSM*/""/*%FSM*/;
- condition=/*%FSM*/"!(cleanupFSM getFSMVariable ""stopfsm"")"/*%FSM*/;
- action=/*%FSM*/""/*%FSM*/;
- };
- /*%FSM*/
- };
- };
- /*%FSM*/
- /*%FSM*/
- class End_Cleanup_
- {
- name = "End_Cleanup_";
- itemno = 8;
- init = /*%FSM*/""/*%FSM*/;
- precondition = /*%FSM*/""/*%FSM*/;
- class Links
- {
- };
- };
- /*%FSM*/
- };
- initState="init";
- finalStates[] =
- {
- "End_Cleanup_",
- };
-};
-/*%FSM*/
diff --git a/life_server/Functions/Gangs/fn_insertGang.sqf b/life_server/Functions/Gangs/fn_insertGang.sqf
old mode 100644
new mode 100755
index 784b1229a..bea490774
--- a/life_server/Functions/Gangs/fn_insertGang.sqf
+++ b/life_server/Functions/Gangs/fn_insertGang.sqf
@@ -6,64 +6,65 @@
Description:
Inserts the gang into the database.
*/
-private ["_query","_queryResult","_gangMembers","_group"];
+
params [
- ["_ownerID",objNull,[objNull]],
- ["_uid","",[""]],
- ["_gangName","",[""]]
+ ["_ownerID", objNull, [objNull]],
+ ["_uid", "", [""]],
+ ["_gangName", "", [""]]
];
-_group = group _ownerID;
-if (isNull _ownerID || _uid isEqualTo "" || _gangName isEqualTo "") exitWith {}; //Fail
+private _group = group _ownerID;
+
+if (isNull _ownerID || {_uid isEqualTo ""} || {_gangName isEqualTo ""}) exitWith {};
_ownerID = owner _ownerID;
-_gangName = [_gangName] call DB_fnc_mresString;
-_query = format ["SELECT id FROM gangs WHERE name='%1' AND active='1'",_gangName];
+private _query = format ["selectGangID:%1", _gangName];
-_queryResult = [_query,2] call DB_fnc_asyncCall;
+private _queryResult = [_query, 2] call DB_fnc_asyncCall;
//Check to see if the gang name already exists.
-if (!(count _queryResult isEqualTo 0)) exitWith {
- [1,"There is already a gang created with that name please pick another name."] remoteExecCall ["life_fnc_broadcast",_ownerID];
+if !(_queryResult isEqualTo []) exitWith {
+ [1, "There is already a gang created with that name please pick another name."] remoteExecCall ["life_fnc_broadcast", _ownerID];
life_action_gangInUse = nil;
_ownerID publicVariableClient "life_action_gangInUse";
};
-_query = format ["SELECT id FROM gangs WHERE members LIKE '%2%1%2' AND active='1'",_uid,"%"];
+private _uidLike = format["%2%1%2", _uid, "%"];
+_query = format ["selectGangIDFromMembers:%1", _uidLike];
-_queryResult = [_query,2] call DB_fnc_asyncCall;
+_queryResult = [_query,2 ] call DB_fnc_asyncCall;
//Check to see if this person already owns or belongs to a gang.
if (!(count _queryResult isEqualTo 0)) exitWith {
- [1,"You are currently already active in a gang, please leave the gang first."] remoteExecCall ["life_fnc_broadcast",_ownerID];
+ [1, "You are currently already active in a gang, please leave the gang first."] remoteExecCall ["life_fnc_broadcast", _ownerID];
life_action_gangInUse = nil;
_ownerID publicVariableClient "life_action_gangInUse";
};
//Check to see if a gang with that name already exists but is inactive.
-_query = format ["SELECT id, active FROM gangs WHERE name='%1' AND active='0'",_gangName];
+_query = format ["selectInactiveGang:%1", _gangName];
-_queryResult = [_query,2] call DB_fnc_asyncCall;
-_gangMembers = [[_uid]] call DB_fnc_mresArray;
+_queryResult = [_query, 2] call DB_fnc_asyncCall;
+private _gangMembers = [_uid];
-if (!(count _queryResult isEqualTo 0)) then {
- _query = format ["UPDATE gangs SET active='1', owner='%1',members='%2' WHERE id='%3'",_uid,_gangMembers,(_queryResult select 0)];
+if !(_queryResult isEqualTo []) then {
+ _query = format ["updateGang:%1:%2:%3", (_queryResult select 0), _gangMembers, _uid];
} else {
- _query = format ["INSERT INTO gangs (owner, name, members) VALUES('%1','%2','%3')",_uid,_gangName,_gangMembers];
+ _query = format ["insertGang:%1:%2:%3", _uid, _gangName, _gangMembers];
};
-_queryResult = [_query,1] call DB_fnc_asyncCall;
+_queryResult = [_query, 1] call DB_fnc_asyncCall;
-_group setVariable ["gang_name",_gangName,true];
-_group setVariable ["gang_owner",_uid,true];
-_group setVariable ["gang_bank",0,true];
-_group setVariable ["gang_maxMembers",8,true];
-_group setVariable ["gang_members",[_uid],true];
-[_group] remoteExecCall ["life_fnc_gangCreated",_ownerID];
+_group setVariable ["gang_name", _gangName, true];
+_group setVariable ["gang_owner", _uid, true];
+_group setVariable ["gang_bank", 0, true];
+_group setVariable ["gang_maxMembers", 8, true];
+_group setVariable ["gang_members", [_uid], true];
+[_group] remoteExecCall ["life_fnc_gangCreated", _ownerID];
uiSleep 0.35;
-_query = format ["SELECT id FROM gangs WHERE owner='%1' AND active='1'",_uid];
+_query = format ["selectGangIDFromOwner:%1", _uid];
-_queryResult = [_query,2] call DB_fnc_asyncCall;
+_queryResult = [_query, 2] call DB_fnc_asyncCall;
-_group setVariable ["gang_id",(_queryResult select 0),true];
+_group setVariable ["gang_id", (_queryResult select 0), true];
diff --git a/life_server/Functions/Gangs/fn_queryPlayerGang.sqf b/life_server/Functions/Gangs/fn_queryPlayerGang.sqf
old mode 100644
new mode 100755
index 36f6a7526..35313845e
--- a/life_server/Functions/Gangs/fn_queryPlayerGang.sqf
+++ b/life_server/Functions/Gangs/fn_queryPlayerGang.sqf
@@ -5,15 +5,9 @@
Description:
Queries to see if the player belongs to any gang.
*/
-private ["_query","_queryResult"];
-_query = format ["SELECT id, owner, name, maxmembers, bank, members FROM gangs WHERE active='1' AND members LIKE '%2%1%2'",_this,"%"];
+private _pid = format ["%2%1%2", _this, "%"];
+private _query = format ["selectPlayerGang:%1", _pid];
+private _queryResult = [_query, 2] call DB_fnc_asyncCall;
-_queryResult = [_query,2] call DB_fnc_asyncCall;
-
-if !(count _queryResult isEqualTo 0) then {
- _tmp = [_queryResult select 5] call DB_fnc_mresToArray;
- if (_tmp isEqualType "") then {_tmp = call compile format ["%1", _tmp];};
- _queryResult set[5, _tmp];
-};
-missionNamespace setVariable [format ["gang_%1",_this],_queryResult];
+missionNamespace setVariable [format ["gang_%1", _this], _queryResult];
diff --git a/life_server/Functions/Gangs/fn_removeGang.sqf b/life_server/Functions/Gangs/fn_removeGang.sqf
old mode 100644
new mode 100755
index fafb7a70d..cb5eb0c7a
--- a/life_server/Functions/Gangs/fn_removeGang.sqf
+++ b/life_server/Functions/Gangs/fn_removeGang.sqf
@@ -6,19 +6,19 @@
Description:
Removes gang from database
*/
-private ["_group","_groupID"];
-_group = param [0,grpNull,[grpNull]];
+
+params [
+ ["_group", grpNull, [grpNull]]
+];
+
if (isNull _group) exitWith {};
-_groupID = _group getVariable ["gang_id",-1];
+private _groupID = _group getVariable ["gang_id",-1];
if (_groupID isEqualTo -1) exitWith {};
-[format ["UPDATE gangs SET active='0' WHERE id='%1'",_groupID],1] call DB_fnc_asyncCall;
+_group setVariable ["gang_owner",nil,true];
+[format ["deleteGang:%1", _groupID], 1] call DB_fnc_asyncCall;
-_result = [format ["SELECT id FROM gangs WHERE active='1' AND id='%1'",_groupID],2] call DB_fnc_asyncCall;
-if (count _result isEqualTo 0) then {
- [_group] remoteExecCall ["life_fnc_gangDisbanded",(units _group)];
- uiSleep 5;
- deleteGroup _group;
-};
-["CALL deleteOldGangs",1] call DB_fnc_asyncCall;
+[_group] remoteExecCall ["life_fnc_gangDisbanded", (units _group)];
+uiSleep 5;
+deleteGroup _group;
\ No newline at end of file
diff --git a/life_server/Functions/Gangs/fn_updateGang.sqf b/life_server/Functions/Gangs/fn_updateGang.sqf
old mode 100644
new mode 100755
index a8815996b..f985e51f7
--- a/life_server/Functions/Gangs/fn_updateGang.sqf
+++ b/life_server/Functions/Gangs/fn_updateGang.sqf
@@ -6,26 +6,28 @@
Description:
Updates the gang information?
*/
-private ["_groupID","_bank","_maxMembers","_members","_membersFinal","_query","_owner"];
+
params [
- ["_mode",0,[0]],
- ["_group",grpNull,[grpNull]]
+ ["_mode", 0, [0]],
+ ["_group", grpNull, [grpNull]]
];
if (isNull _group) exitWith {}; //FAIL
-_groupID = _group getVariable ["gang_id",-1];
+private _groupID = _group getVariable ["gang_id", -1];
if (_groupID isEqualTo -1) exitWith {};
+private "_query";
+
switch (_mode) do {
case 0: {
- _bank = [(_group getVariable ["gang_bank",0])] call DB_fnc_numberSafe;
- _maxMembers = _group getVariable ["gang_maxMembers",8];
- _members = [(_group getVariable "gang_members")] call DB_fnc_mresArray;
- _owner = _group getVariable ["gang_owner",""];
+ private _bank = _group getVariable ["gang_bank", 0];
+ private _maxMembers = _group getVariable ["gang_maxMembers", 8];
+ private _members = _group getVariable "gang_members";
+ private _owner = _group getVariable ["gang_owner", ""];
if (_owner isEqualTo "") exitWith {};
- _query = format ["UPDATE gangs SET bank='%1', maxmembers='%2', owner='%3' WHERE id='%4'",_bank,_maxMembers,_owner,_groupID];
+ _query = format ["updateGang1:%1:%2:%3:%4", _bank, _maxMembers, _owner, _groupID];
};
case 1: {
@@ -43,7 +45,6 @@ switch (_mode) do {
_funds = _funds + _value;
_group setVariable ["gang_bank",_funds,true];
[1,"STR_ATM_DepositSuccessG",true,[_value]] remoteExecCall ["life_fnc_broadcast",remoteExecutedOwner];
- _cash = _cash - _value;
} else {
if (_value > _funds) exitWith {
[1,"STR_ATM_NotEnoughFundsG",true] remoteExecCall ["life_fnc_broadcast",remoteExecutedOwner];
@@ -61,23 +62,24 @@ switch (_mode) do {
diag_log (format [localize "STR_DL_ML_withdrewGang",name _unit,(getPlayerUID _unit),_value,[_funds] call life_fnc_numberText,[0] call life_fnc_numberText,[_cash] call life_fnc_numberText]);
};
};
- _query = format ["UPDATE gangs SET bank='%1' WHERE id='%2'",([_funds] call DB_fnc_numberSafe),_groupID];
[getPlayerUID _unit,side _unit,_cash,0] call DB_fnc_updatePartial;
+ _query = format ["updateGangBank:%1:%2", _group getVariable ["gang_bank", 0], _groupID];
};
case 2: {
- _query = format ["UPDATE gangs SET maxmembers='%1' WHERE id='%2'",(_group getVariable ["gang_maxMembers",8]),_groupID];
+ _query = format ["updateGangMaxmembers:%1:%2", (_group getVariable ["gang_maxMembers", 8]), _groupID];
};
case 3: {
- _owner = _group getVariable ["gang_owner",""];
+ private _owner = _group getVariable ["gang_owner", ""];
if (_owner isEqualTo "") exitWith {};
- _query = format ["UPDATE gangs SET owner='%1' WHERE id='%2'",_owner,_groupID];
+ _query = format ["updateGangOwner:%1:%2", _owner, _groupID];
};
case 4: {
- _members = _group getVariable "gang_members";
- if (count _members > (_group getVariable ["gang_maxMembers",8])) then {
+ private _members = _group getVariable "gang_members";
+ private "_membersFinal";
+ if (count _members > (_group getVariable ["gang_maxMembers", 8])) then {
_membersFinal = [];
for "_i" from 0 to _maxMembers -1 do {
_membersFinal pushBack (_members select _i);
@@ -85,11 +87,10 @@ switch (_mode) do {
} else {
_membersFinal = _group getVariable "gang_members";
};
- _membersFinal = [_membersFinal] call DB_fnc_mresArray;
- _query = format ["UPDATE gangs SET members='%1' WHERE id='%2'",_membersFinal,_groupID];
+ _query = format ["updateGangMembers:%1:%2", _membersFinal, _groupID];
};
};
if (!isNil "_query") then {
- [_query,1] call DB_fnc_asyncCall;
+ [_query, 1] call DB_fnc_asyncCall;
};
diff --git a/life_server/Functions/Housing/fn_addContainer.sqf b/life_server/Functions/Housing/fn_addContainer.sqf
old mode 100644
new mode 100755
index e7a999ac3..a3962cece
--- a/life_server/Functions/Housing/fn_addContainer.sqf
+++ b/life_server/Functions/Housing/fn_addContainer.sqf
@@ -6,28 +6,27 @@
Description:
Add container in Database.
*/
-private ["_containerPos","_query","_className","_dir"];
+
params [
- ["_uid","",[""]],
- ["_container",objNull,[objNull]]
+ ["_uid", "", [""]],
+ ["_container", objNull, [objNull]]
];
-if (isNull _container || _uid isEqualTo "") exitWith {};
+if (isNull _container || {_uid isEqualTo ""}) exitWith {};
-_containerPos = getPosATL _container;
-_className = typeOf _container;
-_dir = [vectorDir _container, vectorUp _container];
+private _containerPos = getPosATL _container;
+private _className = typeOf _container;
+private _dir = [vectorDir _container, vectorUp _container];
-_query = format ["INSERT INTO containers (pid, pos, classname, inventory, gear, owned, dir) VALUES('%1', '%2', '%3', '""[[],0]""', '""[]""', '1', '%4')",_uid,_containerPos,_className,_dir];
+private _query = format ["insertContainer:%1:%2:%3:%4", _uid, _containerPos, _className, _dir];
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
- diag_log format ["Query: %1",_query];
+ diag_log format ["Query: %1", _query];
};
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
uiSleep 0.3;
-_query = format ["SELECT id FROM containers WHERE pos='%1' AND pid='%2' AND owned='1'",_containerPos,_uid];
-_queryResult = [_query,2] call DB_fnc_asyncCall;
-//systemChat format ["House ID assigned: %1",_queryResult select 0];
-_container setVariable ["container_id",(_queryResult select 0),true];
+_query = format ["selectContainerID:%1:%2", _containerPos, _uid];
+_queryResult = [_query, 2] call DB_fnc_asyncCall;
+_container setVariable ["container_id", _queryResult select 0, true];
diff --git a/life_server/Functions/Housing/fn_addHouse.sqf b/life_server/Functions/Housing/fn_addHouse.sqf
old mode 100644
new mode 100755
index 6c4aa62cf..de33fbb96
--- a/life_server/Functions/Housing/fn_addHouse.sqf
+++ b/life_server/Functions/Housing/fn_addHouse.sqf
@@ -6,25 +6,26 @@
Description:
Inserts the players newly bought house in the database.
*/
-private ["_housePos","_query"];
+
params [
["_uid","",[""]],
["_house",objNull,[objNull]]
];
-if (isNull _house || _uid isEqualTo "") exitWith {};
-_housePos = getPosATL _house;
+if (isNull _house || {_uid isEqualTo ""}) exitWith {};
+
+private _housePos = getPosATL _house;
-_query = format ["INSERT INTO houses (pid, pos, owned) VALUES('%1', '%2', '1')",_uid,_housePos];
+private _query = format ["insertHouse:%1:%2", _uid, _housePos];
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log format ["Query: %1",_query];
};
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
uiSleep 0.3;
-_query = format ["SELECT id FROM houses WHERE pos='%1' AND pid='%2' AND owned='1'",_housePos,_uid];
-_queryResult = [_query,2] call DB_fnc_asyncCall;
-//systemChat format ["House ID assigned: %1",_queryResult select 0];
-_house setVariable ["house_id",(_queryResult select 0),true];
+_query = format ["selectHouseID:%1:%2", _housePos, _uid];
+_queryResult = [_query, 2] call DB_fnc_asyncCall;
+//systemChat format ["House ID assigned: %1", _queryResult select 0];
+_house setVariable ["house_id", _queryResult select 0, true];
diff --git a/life_server/Functions/Housing/fn_deleteDBContainer.sqf b/life_server/Functions/Housing/fn_deleteDBContainer.sqf
old mode 100644
new mode 100755
index df05d16b3..99aa5d9b2
--- a/life_server/Functions/Housing/fn_deleteDBContainer.sqf
+++ b/life_server/Functions/Housing/fn_deleteDBContainer.sqf
@@ -5,24 +5,27 @@
Description:
Delete Container and remove Container in Database
*/
-private ["_house","_houseID","_ownerID","_housePos","_query","_radius","_containers"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_container", objNull, [objNull]]
+];
+
if (isNull _container) exitWith {diag_log "container null";};
+_containerID = _container getVariable ["container_id", -1];
+
+private "_query";
-_containerID = _container getVariable ["container_id",-1];
if (_containerID isEqualTo -1) then {
_containerPos = getPosATL _container;
- _ownerID = (_container getVariable "container_owner") select 0;
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE pid='%1' AND pos='%2' AND owned='1'",_ownerID,_containerPos];
- //systemChat format [":SERVER:sellHouse: container_id does not exist"];
+ private _ownerID = (_container getVariable "container_owner") select 0;
+ _query = format ["deleteContainer:%1:%2", _ownerID, _containerPos];
} else {
- //systemChat format [":SERVER:sellHouse: house_id is %1",_houseID];
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE id='%1'",_containerID];
+ _query = format ["deleteContainer1:%1",_containerID];
};
-_container setVariable ["container_id",nil,true];
-_container setVariable ["container_owner",nil,true];
+_container setVariable ["container_id", nil, true];
+_container setVariable ["container_owner", nil, true];
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
-["CALL deleteOldContainers",1] call DB_fnc_asyncCall;
+["deleteOldContainers", 1] call DB_fnc_asyncCall;
deleteVehicle _container;
diff --git a/life_server/Functions/Housing/fn_fetchPlayerHouses.sqf b/life_server/Functions/Housing/fn_fetchPlayerHouses.sqf
old mode 100644
new mode 100755
index 1d7f750ee..38bfd9b11
--- a/life_server/Functions/Housing/fn_fetchPlayerHouses.sqf
+++ b/life_server/Functions/Housing/fn_fetchPlayerHouses.sqf
@@ -8,30 +8,30 @@
1. Fetches all the players houses and sets them up.
2. Fetches all the players containers and sets them up.
*/
-private ["_query","_containers","_containerss","_houses"];
+
params [
["_uid","",[""]]
];
+
if (_uid isEqualTo "") exitWith {};
-_query = format ["SELECT pid, pos, classname, inventory, gear, dir, id FROM containers WHERE pid='%1' AND owned='1'",_uid];
-_containers = [_query,2,true] call DB_fnc_asyncCall;
+private _query = format ["selectContainers:%1", _uid];
+private _containers = [_query, 2, true] call DB_fnc_asyncCall;
+private _containerss = [];
-_containerss = [];
{
_position = call compile format ["%1",_x select 1];
_house = nearestObject [_position, "House"];
_direction = call compile format ["%1",_x select 5];
- _trunk = [_x select 3] call DB_fnc_mresToArray;
+ _trunk = _x select 3;
if (_trunk isEqualType "") then {_trunk = call compile format ["%1", _trunk];};
- _gear = [_x select 4] call DB_fnc_mresToArray;
+ _gear = _x select 4;
if (_gear isEqualType "") then {_gear = call compile format ["%1", _gear];};
_container = createVehicle[_x select 2,[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_container" && {!isNull _container}};
_containerss = _house getVariable ["containers",[]];
_containerss pushBack _container;
_container allowDamage false;
- _container enableRopeAttach false;
_container setPosATL _position;
_container setVectorDirAndUp _direction;
//Fix position for more accurate positioning
@@ -59,21 +59,21 @@ _containerss = [];
for "_i" from 0 to ((count (_items select 0)) - 1) do {
_container addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
};
- for "_i" from 0 to ((count (_mags select 0)) - 1) do{
+ for "_i" from 0 to ((count (_mags select 0)) - 1) do {
_container addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
};
- for "_i" from 0 to ((count (_weapons select 0)) - 1) do{
+ for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
_container addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
};
- for "_i" from 0 to ((count (_backpacks select 0)) - 1) do{
+ for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
_container addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
- _house setVariable ["containers",_containerss,true];
+ _house setVariable ["containers", _containerss, true];
} forEach _containers;
-_query = format ["SELECT pid, pos FROM houses WHERE pid='%1' AND owned='1'",_uid];
-_houses = [_query,2,true] call DB_fnc_asyncCall;
+_query = format ["selectHousePositions:%1", _uid];
+private _houses = [_query, 2, true] call DB_fnc_asyncCall;
_return = [];
{
@@ -83,4 +83,4 @@ _return = [];
_return pushBack [_x select 1];
} forEach _houses;
-missionNamespace setVariable [format ["houses_%1",_uid],_return];
+missionNamespace setVariable [format ["houses_%1", _uid], _return];
diff --git a/life_server/Functions/Housing/fn_houseCleanup.sqf b/life_server/Functions/Housing/fn_houseCleanup.sqf
old mode 100644
new mode 100755
index fc835445d..177272f1a
--- a/life_server/Functions/Housing/fn_houseCleanup.sqf
+++ b/life_server/Functions/Housing/fn_houseCleanup.sqf
@@ -1,7 +1,6 @@
/*
File: fn_houseCleanup.sqf
Author: NiiRoZz
-
Description:
Cleans up containers inside in house of player.
*/
@@ -9,7 +8,7 @@ params [
["_uid","",[""]]
];
-private _query = format ["SELECT pos FROM containers WHERE pid='%1' AND owned='1'",_uid];
+private _query = format ["selectContainerPositions:%1", _this];
private _containers = [_query,2,true] call DB_fnc_asyncCall;
{
diff --git a/life_server/Functions/Housing/fn_houseGarage.sqf b/life_server/Functions/Housing/fn_houseGarage.sqf
old mode 100644
new mode 100755
index 3d2c69e0a..33393f206
--- a/life_server/Functions/Housing/fn_houseGarage.sqf
+++ b/life_server/Functions/Housing/fn_houseGarage.sqf
@@ -12,21 +12,14 @@ params [
["_mode",-1,[0]]
];
-if (_uid isEqualTo "") exitWith {};
-if (isNull _house) exitWith {};
-if (_mode isEqualTo -1) exitWith {};
+if (_uid isEqualTo "" || {isNull _house} || {_mode isEqualTo -1}) exitWith {};
private _housePos = getPosATL _house;
-private "_query";
-
-if (_mode isEqualTo 0) then {
- _query = format ["UPDATE houses SET garage='1' WHERE pid='%1' AND pos='%2'",_uid,_housePos];
-} else {
- _query = format ["UPDATE houses SET garage='0' WHERE pid='%1' AND pos='%2'",_uid,_housePos];
-};
+private _active = ["0", "1"] select (_mode isEqualTo 0);
+private _query = format ["updateGarage:%1:%2:%3", _active, _uid, _housePos];
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
- diag_log format ["Query: %1",_query];
+ diag_log format ["Query: %1", _query];
};
-[_query,1] call DB_fnc_asyncCall;
\ No newline at end of file
+[_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/Housing/fn_initHouses.sqf b/life_server/Functions/Housing/fn_initHouses.sqf
old mode 100644
new mode 100755
index d5d98eb50..61278a7af
--- a/life_server/Functions/Housing/fn_initHouses.sqf
+++ b/life_server/Functions/Housing/fn_initHouses.sqf
@@ -4,31 +4,30 @@
Description:
Initalizes house setup when player joins the server.
*/
-private ["_queryResult","_query","_count","_blacklistedHouses","_blacklistedGarages"];
-_count = (["SELECT COUNT(*) FROM houses WHERE owned='1'",2] call DB_fnc_asyncCall) select 0;
+private _count = (["selectAllHouses" ,2] call DB_fnc_asyncCall) select 0;
for [{_x=0},{_x<=_count},{_x=_x+10}] do {
- _query = format ["SELECT houses.id, houses.pid, houses.pos, players.name, houses.garage FROM houses INNER JOIN players WHERE houses.owned='1' AND houses.pid = players.pid LIMIT %1,10",_x];
- _queryResult = [_query,2,true] call DB_fnc_asyncCall;
- if (count _queryResult isEqualTo 0) exitWith {};
+ private _query = format ["selectPlayerHouses:%1", _x];
+ private _queryResult = [_query, 2, true] call DB_fnc_asyncCall;
+ if (_queryResult isEqualTo []) exitWith {};
{
- _pos = call compile format ["%1",_x select 2];
+ _pos = call compile format ["%1", _x select 2];
_house = nearestObject [_pos, "House"];
- _house setVariable ["house_owner",[_x select 1,_x select 3],true];
- _house setVariable ["house_id",_x select 0,true];
- _house setVariable ["locked",true,true]; //Lock up all the stuff.
+ _house setVariable ["house_owner",[_x select 1, _x select 3],true];
+ _house setVariable ["house_id", _x select 0, true];
+ _house setVariable ["locked", true, true]; //Lock up all the stuff.
if (_x select 4 isEqualTo 1) then {
- _house setVariable ["garageBought",true,true];
+ _house setVariable ["garageBought", true, true];
};
_numOfDoors = getNumber(configFile >> "CfgVehicles" >> (typeOf _house) >> "numberOfDoors");
for "_i" from 1 to _numOfDoors do {
- _house setVariable [format ["bis_disabled_Door_%1",_i],1,true];
+ _house setVariable [format ["bis_disabled_Door_%1",_i], 1, true];
};
} forEach _queryResult;
};
-_blacklistedHouses = "count (getArray (_x >> 'garageBlacklists')) > 0" configClasses (missionconfigFile >> "Housing" >> worldName);
-_blacklistedGarages = "count (getArray (_x >> 'garageBlacklists')) > 0" configClasses (missionconfigFile >> "Garages" >> worldName);
+private _blacklistedHouses = "count (getArray (_x >> 'garageBlacklists')) > 0" configClasses (missionconfigFile >> "Housing" >> worldName);
+private _blacklistedGarages = "count (getArray (_x >> 'garageBlacklists')) > 0" configClasses (missionconfigFile >> "Garages" >> worldName);
_blacklistedHouses = _blacklistedHouses apply {configName _x};
_blacklistedGarages = _blacklistedGarages apply {configName _x};
@@ -38,7 +37,7 @@ for "_i" from 0 to count(_blacklistedHouses)-1 do {
{
_obj = nearestObject [_x,_className];
if (isNull _obj) then {
- _obj setVariable ["blacklistedGarage",true,true];
+ _obj setVariable ["blacklistedGarage", true, true];
};
} forEach _positions;
};
@@ -49,7 +48,7 @@ for "_i" from 0 to count(_blacklistedGarages)-1 do {
{
_obj = nearestObject [_x,_className];
if (isNull _obj) then {
- _obj setVariable ["blacklistedGarage",true,true];
+ _obj setVariable ["blacklistedGarage", true, true];
};
} forEach _positions;
};
diff --git a/life_server/Functions/Housing/fn_sellHouse.sqf b/life_server/Functions/Housing/fn_sellHouse.sqf
old mode 100644
new mode 100755
index 81b20b55d..fe94b9255
--- a/life_server/Functions/Housing/fn_sellHouse.sqf
+++ b/life_server/Functions/Housing/fn_sellHouse.sqf
@@ -6,25 +6,28 @@
Used in selling the house, sets the owned to 0 and will cleanup with a
stored procedure on restart.
*/
-private ["_house","_houseID","_ownerID","_housePos","_query","_radius","_containers"];
-_house = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_house", objNull, [objNull]]
+];
+
if (isNull _house) exitWith {systemChat ":SERVER:sellHouse: House is null";};
+private _houseID = _house getVariable ["house_id", -1];
+
+private "_query";
-_houseID = _house getVariable ["house_id",-1];
if (_houseID isEqualTo -1) then {
- _housePos = getPosATL _house;
- _ownerID = (_house getVariable "house_owner") select 0;
- _query = format ["UPDATE houses SET owned='0', pos='[]' WHERE pid='%1' AND pos='%2' AND owned='1'",_ownerID,_housePos];
- //systemChat format [":SERVER:sellHouse: house_id does not exist, query: %1",_query];
+ private _housePos = getPosATL _house;
+ private _ownerID = (_house getVariable "house_owner") select 0;
+ _query = format ["deleteHouse:%1:%2", _ownerID, _housePos];
} else {
- //systemChat format [":SERVER:sellHouse: house_id is %1",_houseID];
- _query = format ["UPDATE houses SET owned='0', pos='[]' WHERE id='%1'",_houseID];
+ _query = format ["deleteHouse1:%1", _houseID];
};
-_house setVariable ["house_id",nil,true];
-_house setVariable ["house_owner",nil,true];
-_house setVariable ["garageBought",false,true];
+_house setVariable ["house_id", nil, true];
+_house setVariable ["house_owner", nil, true];
+_house setVariable ["garageBought", false, true];
-[_query,1] call DB_fnc_asyncCall;
-_house setVariable ["house_sold",nil,true];
-["CALL deleteOldHouses",1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
+_house setVariable ["house_sold", nil, true];
+["deleteOldHouses", 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/Housing/fn_sellHouseContainer.sqf b/life_server/Functions/Housing/fn_sellHouseContainer.sqf
old mode 100644
new mode 100755
index e331f9726..e51c39c1f
--- a/life_server/Functions/Housing/fn_sellHouseContainer.sqf
+++ b/life_server/Functions/Housing/fn_sellHouseContainer.sqf
@@ -6,22 +6,27 @@
Used in selling the house, container sets the owned to 0 and will cleanup with a
stored procedure on restart.
*/
-private ["_house","_houseID","_ownerID","_housePos","_query","_radius","_containers"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _container) exitWith {};
+params [
+ ["_container", objNull, [objNull]]
+];
+
+if (isNull _container) exitWith {};
_containerID = _container getVariable ["container_id",-1];
+
+private "_query";
+
if (_containerID isEqualTo -1) then {
_containerPos = getPosATL _container;
- _ownerID = (_container getVariable "container_owner") select 0;
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE pid='%1' AND pos='%2' AND owned='1'",_ownerID,_containerPos];
+ private _ownerID = (_container getVariable "container_owner") select 0;
+ _query = format ["deleteContainer:%1:%2", _ownerID, _containerPos];
} else {
- _query = format ["UPDATE containers SET owned='0', pos='[]' WHERE id='%1'",_containerID];
+ _query = format ["deleteContainer1:%1", _containerID];
};
-_container setVariable ["container_id",nil,true];
-_container setVariable ["container_owner",nil,true];
+_container setVariable ["container_id", nil, true];
+_container setVariable ["container_owner", nil, true];
deleteVehicle _container;
-[_query,1] call DB_fnc_asyncCall;
-["CALL deleteOldContainers",1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
+["deleteOldContainers", 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/Housing/fn_updateHouseContainers.sqf b/life_server/Functions/Housing/fn_updateHouseContainers.sqf
old mode 100644
new mode 100755
index 8e0be88c0..99717e6ad
--- a/life_server/Functions/Housing/fn_updateHouseContainers.sqf
+++ b/life_server/Functions/Housing/fn_updateHouseContainers.sqf
@@ -5,20 +5,22 @@
Description:
Update inventory "i" in container
*/
-private ["_containerID","_containers","_query","_vehItems","_vehMags","_vehWeapons","_vehBackpacks","_cargo"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_container", objNull, [objNull]]
+];
+
if (isNull _container) exitWith {};
-_containerID = _container getVariable ["container_id",-1];
-if (_containerID isEqualTo -1) exitWith {};
-_vehItems = getItemCargo _container;
-_vehMags = getMagazineCargo _container;
-_vehWeapons = getWeaponCargo _container;
-_vehBackpacks = getBackpackCargo _container;
-_cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
+private _containerID = _container getVariable ["container_id", -1];
+if (_containerID isEqualTo -1) exitWith {};
-_cargo = [_cargo] call DB_fnc_mresArray;
+private _vehItems = getItemCargo _container;
+private _vehMags = getMagazineCargo _container;
+private _vehWeapons = getWeaponCargo _container;
+private _vehBackpacks = getBackpackCargo _container;
+private _cargo = [_vehItems, _vehMags, _vehWeapons, _vehBackpacks];
-_query = format ["UPDATE containers SET gear='%1' WHERE id='%2'",_cargo,_containerID];
+private _query = format ["updateContainer:%1:%2", _cargo, _containerID];
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/Housing/fn_updateHouseTrunk.sqf b/life_server/Functions/Housing/fn_updateHouseTrunk.sqf
old mode 100644
new mode 100755
index 16e37c845..4d0fab1cb
--- a/life_server/Functions/Housing/fn_updateHouseTrunk.sqf
+++ b/life_server/Functions/Housing/fn_updateHouseTrunk.sqf
@@ -5,16 +5,18 @@
Description:
Update inventory "y" in container
*/
-private ["_house"];
-_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_container", objNull, [objNull]]
+];
+
if (isNull _container) exitWith {};
-_trunkData = _container getVariable ["Trunk",[[],0]];
-_containerID = _container getVariable ["container_id",-1];
+_trunkData = _container getVariable ["Trunk", [[], 0]];
+_containerID = _container getVariable ["container_id", -1];
-if (_containerID isEqualTo -1) exitWith {}; //Dafuq?
+if (_containerID isEqualTo -1) exitWith {};
-_trunkData = [_trunkData] call DB_fnc_mresArray;
-_query = format ["UPDATE containers SET inventory='%1' WHERE id='%2'",_trunkData,_containerID];
+_query = format ["updateHouseTrunk:%1:%2", _trunkData, _containerID];
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/MySQL/fn_asyncCall.sqf b/life_server/Functions/MySQL/fn_asyncCall.sqf
old mode 100644
new mode 100755
index 57782bfdd..cb16a479c
--- a/life_server/Functions/MySQL/fn_asyncCall.sqf
+++ b/life_server/Functions/MySQL/fn_asyncCall.sqf
@@ -11,18 +11,20 @@
1: INTEGER (1 = ASYNC + not return for update/insert, 2 = ASYNC + return for query's).
3: BOOL (True to return a single array, false to return multiple entries mainly for garage).
*/
-private ["_queryStmt","_mode","_multiarr","_queryResult","_key","_return","_loop"];
-_queryStmt = [_this,0,"",[""]] call BIS_fnc_param;
-_mode = [_this,1,1,[0]] call BIS_fnc_param;
-_multiarr = [_this,2,false,[false]] call BIS_fnc_param;
-_key = EXTDB format ["%1:%2:%3",_mode,FETCH_CONST(life_sql_id),_queryStmt];
+params [
+ ["_queryStmt", "", [""]],
+ ["_mode", 1, [0]],
+ ["_multiarr", false, [true]]
+];
+
+private _key = EXTDB format ["%1:%2:%3",_mode,FETCH_CONST(life_sql_id),_queryStmt];
if (_mode isEqualTo 1) exitWith {true};
_key = call compile format ["%1",_key];
-_key = (_key select 1);
-_queryResult = EXTDB format ["4:%1", _key];
+_key = _key select 1;
+private _queryResult = EXTDB format ["4:%1", _key];
//Make sure the data is received
if (_queryResult isEqualTo "[3]") then {
@@ -33,7 +35,7 @@ if (_queryResult isEqualTo "[3]") then {
};
if (_queryResult isEqualTo "[5]") then {
- _loop = true;
+ private _loop = true;
for "_i" from 0 to 1 step 0 do { // extDB3 returned that result is Multi-Part Message
_queryResult = "";
for "_i" from 0 to 1 step 0 do {
@@ -46,9 +48,9 @@ if (_queryResult isEqualTo "[5]") then {
};
_queryResult = call compile _queryResult;
if ((_queryResult select 0) isEqualTo 0) exitWith {diag_log format ["extDB3: Protocol Error: %1", _queryResult]; []};
-_return = (_queryResult select 1);
-if (!_multiarr && count _return > 0) then {
- _return = (_return select 0);
+private _return = (_queryResult select 1);
+if (!_multiarr && {!(_return isEqualTo [])}) then {
+ _return = _return select 0;
};
_return;
diff --git a/life_server/Functions/MySQL/fn_bool.sqf b/life_server/Functions/MySQL/fn_bool.sqf
deleted file mode 100644
index 2d9a70f23..000000000
--- a/life_server/Functions/MySQL/fn_bool.sqf
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- File: fn_bool.sqf
- Author: TAW_Tonic
-
- Description:
- Handles bool conversion for MySQL since MySQL doesn't support 'true' or 'false'
- instead MySQL uses Tinyint for BOOLEAN (0 = false, 1 = true)
-*/
-private ["_bool","_mode"];
-_bool = [_this,0,0,[false,0]] call BIS_fnc_param;
-_mode = [_this,1,0,[0]] call BIS_fnc_param;
-
-switch (_mode) do {
- case 0: {
- if (_bool isEqualType 0) exitWith {0};
- if (_bool) then {1} else {0};
- };
-
- case 1: {
- if (!(_bool isEqualType 0)) exitWith {false};
- switch (_bool) do {
- case 0: {false};
- case 1: {true};
- };
- };
-};
diff --git a/life_server/Functions/MySQL/fn_insertRequest.sqf b/life_server/Functions/MySQL/fn_insertRequest.sqf
old mode 100644
new mode 100755
index b8b9f9bb6..f3e7432e2
--- a/life_server/Functions/MySQL/fn_insertRequest.sqf
+++ b/life_server/Functions/MySQL/fn_insertRequest.sqf
@@ -7,7 +7,7 @@
Adds a player to the database upon first joining of the server.
Recieves information from core\sesison\fn_insertPlayerInfo.sqf
*/
-private ["_queryResult","_query","_alias"];
+
params [
"_uid",
"_name",
@@ -17,35 +17,28 @@ params [
];
//Error checks
-if ((_uid isEqualTo "") || (_name isEqualTo "")) exitWith {systemChat "Bad UID or name";}; //Let the client be 'lost' in 'transaction'
+if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {systemChat "Bad UID or name";}; //Let the client be 'lost' in 'transaction'
if (isNull _returnToSender) exitWith {systemChat "ReturnToSender is Null!";}; //No one to send this to!
-_query = format ["SELECT pid, name FROM players WHERE pid='%1'",_uid];
-
-
+private _query = format ["checkPlayerExists:%1", _uid];
_tickTime = diag_tickTime;
-_queryResult = [_query,2] call DB_fnc_asyncCall;
+private _queryResult = [_query, 2] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Insert Query Request -------------";
- diag_log format ["QUERY: %1",_query];
- diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
- diag_log format ["Result: %1",_queryResult];
+ diag_log format ["QUERY: %1", _query];
+ diag_log format ["Time to complete: %1 (in seconds)", (diag_tickTime - _tickTime)];
+ diag_log format ["Result: %1", _queryResult];
diag_log "------------------------------------------------";
};
//Double check to make sure the client isn't in the database...
-if (_queryResult isEqualType "") exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery",(owner _returnToSender)];}; //There was an entry!
-if !(count _queryResult isEqualTo 0) exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery",(owner _returnToSender)];};
+if (_queryResult isEqualType "" && !(_queryResult isEqualTo [])) exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery", (owner _returnToSender)];};
-//Clense and prepare some information.
-_name = [_name] call DB_fnc_mresString; //Clense the name of bad chars.
-_alias = [[_name]] call DB_fnc_mresArray;
-_money = [_money] call DB_fnc_numberSafe;
-_bank = [_bank] call DB_fnc_numberSafe;
+private _alias = [_name];
//Prepare the query statement..
-_query = format ["INSERT INTO players (pid, name, cash, bankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear) VALUES('%1', '%2', '%3', '%4', '%5','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')",
+_query = format ["insertNewPlayer:%1:%2:%3:%4:%5",
_uid,
_name,
_money,
@@ -53,5 +46,5 @@ _query = format ["INSERT INTO players (pid, name, cash, bankacc, aliases, cop_li
_alias
];
-[_query,1] call DB_fnc_asyncCall;
-[] remoteExecCall ["SOCK_fnc_dataQuery",(owner _returnToSender)];
+[_query, 1] call DB_fnc_asyncCall;
+[] remoteExecCall ["SOCK_fnc_dataQuery", (owner _returnToSender)];
diff --git a/life_server/Functions/MySQL/fn_insertVehicle.sqf b/life_server/Functions/MySQL/fn_insertVehicle.sqf
old mode 100644
new mode 100755
index 6682832a4..59532ad2e
--- a/life_server/Functions/MySQL/fn_insertVehicle.sqf
+++ b/life_server/Functions/MySQL/fn_insertVehicle.sqf
@@ -5,7 +5,7 @@
Description:
Inserts the vehicle into the database
*/
-private ["_query","_sql"];
+
params [
"_uid",
"_side",
@@ -16,9 +16,7 @@ params [
];
//Stop bad data being passed.
-if (_uid isEqualTo "" || _side isEqualTo "" || _type isEqualTo "" || _className isEqualTo "" || _color isEqualTo -1 || _plate isEqualTo -1) exitWith {};
-
-_query = format ["INSERT INTO vehicles (side, classname, type, pid, alive, active, inventory, color, plate, gear, damage) VALUES ('%1', '%2', '%3', '%4', '1','1','""[[],0]""', '%5', '%6','""[]""','""[]""')",_side,_className,_type,_uid,_color,_plate];
-
+if (_uid isEqualTo "" || {_side isEqualTo ""} || {_type isEqualTo ""} || {_className isEqualTo ""} || {_color isEqualTo -1} || {_plate isEqualTo -1}) exitWith {};
-[_query,1] call DB_fnc_asyncCall;
+private _query = format ["insertVehicle:%1:%2:%3:%4:%5:%6", _side, _className, _type, _uid, _color, _plate];
+[_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/MySQL/fn_mresArray.sqf b/life_server/Functions/MySQL/fn_mresArray.sqf
deleted file mode 100644
index d8433f26a..000000000
--- a/life_server/Functions/MySQL/fn_mresArray.sqf
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- File: fn_mresArray.sqf
- Author: Bryan "Tonic" Boardwine";
-
- Description:
- Acts as a mres (MySQL Real Escape) for arrays so they
- can be properly inserted into the database without causing
- any problems. The return method is 'hacky' but it's effective.
-*/
-private ["_array"];
-_array = [_this,0,[],[[]]] call BIS_fnc_param;
-_array = str _array;
-_array = toArray(_array);
-
-for "_i" from 0 to (count _array)-1 do
-{
- _sel = _array select _i;
- if (!(_i isEqualTo 0) && !(_i isEqualTo ((count _array)-1))) then
- {
- if (_sel isEqualTo 34) then
- {
- _array set[_i,96];
- };
- };
-};
-
-str(toString(_array));
diff --git a/life_server/Functions/MySQL/fn_mresString.sqf b/life_server/Functions/MySQL/fn_mresString.sqf
deleted file mode 100644
index 584a8e7bd..000000000
--- a/life_server/Functions/MySQL/fn_mresString.sqf
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- File: fn_mresString.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Makes the string safe to be passed to MySQL (strips various stuff).
-*/
-private ["_string","_filter"];
-_string = [_this,0,"",[""]] call BIS_fnc_param;
-_filter = "'/\`:|;,{}-""<>";
-
-_string = toArray _string; //Blow it up to an array
-_filter = toArray _filter; //Blow it up to an array
-
-{
- if (_x in _filter) then {
- _string deleteAt _forEachIndex;
- };
-} forEach _string;
-
-toString _string;
diff --git a/life_server/Functions/MySQL/fn_mresToArray.sqf b/life_server/Functions/MySQL/fn_mresToArray.sqf
deleted file mode 100644
index e93e75d67..000000000
--- a/life_server/Functions/MySQL/fn_mresToArray.sqf
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- File: fn_mresToArray.sqf
- Author: Bryan "Tonic" Boardwine";
-
- Description:
- Acts as a mres (MySQL Real Escape) for arrays so they
- can be properly inserted into the database without causing
- any problems. The return method is 'hacky' but it's effective.
-*/
-private ["_array"];
-_array = [_this,0,"",[""]] call BIS_fnc_param;
-if (_array isEqualTo "") exitWith {[]};
-_array = toArray(_array);
-
-for "_i" from 0 to (count _array)-1 do
-{
- _sel = _array select _i;
- if (_sel == 96) then
- {
- _array set[_i,39];
- };
-};
-
-_array = toString(_array);
-_array = call compile format ["%1", _array];
-_array;
\ No newline at end of file
diff --git a/life_server/Functions/MySQL/fn_numberSafe.sqf b/life_server/Functions/MySQL/fn_numberSafe.sqf
deleted file mode 100644
index 0fc534d88..000000000
--- a/life_server/Functions/MySQL/fn_numberSafe.sqf
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- File: fn_numberSafe.sqf
- Author: Karel Moricky
-
- Description:
- Convert a number into string (avoiding scientific notation)
-
- Parameter(s):
- _this: NUMBER
-
- Returns:
- STRING
-*/
-private ["_number","_mod","_digots","_digitsCount","_modBase","_numberText"];
-
-_number = [_this,0,0,[0]] call bis_fnc_param;
-_mod = [_this,1,3,[0]] call bis_fnc_param;
-
-_digits = _number call bis_fnc_numberDigits;
-_digitsCount = count _digits - 1;
-
-_modBase = _digitsCount % _mod;
-_numberText = "";
-{
- _numberText = _numberText + str _x;
- if ((_foreachindex - _modBase) % (_mod) isEqualTo 0 && !(_foreachindex isEqualTo _digitsCount)) then {_numberText = _numberText + "";};
-} forEach _digits;
-_numberText
diff --git a/life_server/Functions/MySQL/fn_queryRequest.sqf b/life_server/Functions/MySQL/fn_queryRequest.sqf
old mode 100644
new mode 100755
index 42b5587e5..de92704f0
--- a/life_server/Functions/MySQL/fn_queryRequest.sqf
+++ b/life_server/Functions/MySQL/fn_queryRequest.sqf
@@ -11,30 +11,27 @@
ARRAY - If array has 0 elements it should be handled as an error in client-side files.
STRING - The request had invalid handles or an unknown error and is logged to the RPT.
*/
-private ["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
-_ownerID = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-if (isNull _ownerID) exitWith {};
-
-if (LIFE_SETTINGS(getNumber,"player_deathLog") isEqualTo 1) then {
- _ownerID addMPEventHandler ["MPKilled", {_this call fn_whoDoneIt}];
-};
+params [
+ ["_uid", "", [""]],
+ ["_side", sideUnknown, [civilian]],
+ ["_ownerID", objNull, [objNull]]
+];
+if (isNull _ownerID) exitWith {};
_ownerID = owner _ownerID;
-_query = switch (_side) do {
+private _query = switch (_side) do {
// West - 11 entries returned
- case west: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime FROM players WHERE pid='%1'",_uid];};
+ case west: {format ["selectWest:%1", _uid];};
// Civilian - 12 entries returned
- case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime FROM players WHERE pid='%1'",_uid];};
+ case civilian: {format ["selectCiv:%1", _uid];};
// Independent - 10 entries returned
- case independent: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime FROM players WHERE pid='%1'",_uid];};
+ case independent: {format ["selectIndep:%1",_uid];};
};
-_tickTime = diag_tickTime;
-_queryResult = [_query,2] call DB_fnc_asyncCall;
+private _tickTime = diag_tickTime;
+private _queryResult = [_query,2] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Client Query Request -------------";
@@ -44,122 +41,60 @@ if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------------------------------------------";
};
-if (_queryResult isEqualType "") exitWith {
+if (_queryResult isEqualType "" || _queryResult isEqualTo []) exitWith {
[] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
};
-if (count _queryResult isEqualTo 0) exitWith {
- [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
-};
+private _licenses = (_queryResult select 6);
-//Blah conversion thing from a2net->extdb
-_tmp = _queryResult select 2;
-_queryResult set[2,[_tmp] call DB_fnc_numberSafe];
-_tmp = _queryResult select 3;
-_queryResult set[3,[_tmp] call DB_fnc_numberSafe];
-
-//Parse licenses (Always index 6)
-_new = [(_queryResult select 6)] call DB_fnc_mresToArray;
-if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
-_queryResult set[6,_new];
-
-//Convert tinyint to boolean
-_old = _queryResult select 6;
-for "_i" from 0 to (count _old)-1 do {
- _data = _old select _i;
- _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
+for "_i" from 0 to (count _licenses) -1 do {
+ (_licenses select _i) params ["_license", "_owned"];
+ _licenses set[_i, [_license, [false, true] select _owned]];
};
-_queryResult set[6,_old];
+private "_playTimes";
-_new = [(_queryResult select 8)] call DB_fnc_mresToArray;
-if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
-_queryResult set[8,_new];
-//Parse data for specific side.
switch (_side) do {
- case west: {
- _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
-
- //Parse Stats
- _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[10,_new];
-
- //Playtime
- _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if (_index != -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- [_uid,_new select 0] call TON_fnc_setPlayTime;
- };
-
- case civilian: {
- _queryResult set[7,([_queryResult select 7,1] call DB_fnc_bool)];
-
- //Parse Stats
- _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[9,_new];
-
- //Position
- _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
- _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[11,_new];
-
- //Playtime
- _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if (_index != -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- [_uid,_new select 2] call TON_fnc_setPlayTime;
-
- /* Make sure nothing else is added under here */
- _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
- waitUntil {scriptDone _houseData};
- _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
- _gangData = _uid spawn TON_fnc_queryPlayerGang;
- waitUntil{scriptDone _gangData};
- _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
-
- };
-
- case independent: {
- //Parse Stats
- _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _queryResult set[9,_new];
-
- //Playtime
- _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
- if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
- _index = TON_fnc_playtime_values_request find [_uid, _new];
- if !(_index isEqualTo -1) then {
- TON_fnc_playtime_values_request set[_index,-1];
- TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- } else {
- TON_fnc_playtime_values_request pushBack [_uid, _new];
- };
- [_uid,_new select 1] call TON_fnc_setPlayTime;
- };
+ case civilian: {
+ _queryResult set[7, [false, true] select (_queryResult select 7)];
+ _queryResult set[10, [false, true] select (_queryResult select 10)];
+
+ _playTimes = _queryResult select 12;
+ [_uid, _playTimes select 2] call TON_fnc_setPlayTime;
+
+ /* Make sure nothing else is added under here */
+ _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
+ waitUntil {scriptDone _houseData};
+ _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
+ _gangData = _uid spawn TON_fnc_queryPlayerGang;
+ waitUntil {scriptDone _gangData};
+ _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
+ };
+
+ case west: {
+ _queryResult set[9, [false, true] select (_queryResult select 9)];
+ _playTimes = _queryResult select 11;
+ [_uid, _playTimes select 0] call TON_fnc_setPlayTime;
+ };
+
+ case independent: {
+ _playTimes = _queryResult select 10;
+ [_uid, _playTimes select 1] call TON_fnc_setPlayTime;
+ };
+};
+
+_index = TON_fnc_playtime_values_request find [_uid, _playTimes];
+
+if !(_index isEqualTo -1) then {
+ TON_fnc_playtime_values_request set[_index,-1];
+ TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
+ TON_fnc_playtime_values_request pushBack [_uid, _playTimes];
+} else {
+ TON_fnc_playtime_values_request pushBack [_uid, _playTimes];
};
publicVariable "TON_fnc_playtime_values_request";
-_keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side],[]];
+_keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side], []];
_queryResult pushBack _keyArr;
-
-_queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
+_queryResult remoteExec ["SOCK_fnc_requestReceived", _ownerID];
diff --git a/life_server/Functions/MySQL/fn_updatePartial.sqf b/life_server/Functions/MySQL/fn_updatePartial.sqf
old mode 100644
new mode 100755
index 58f161bce..4c573ca66
--- a/life_server/Functions/MySQL/fn_updatePartial.sqf
+++ b/life_server/Functions/MySQL/fn_updatePartial.sqf
@@ -6,81 +6,68 @@
Takes partial data of a player and updates it, this is meant to be
less network intensive towards data flowing through it for updates.
*/
-private ["_uid","_side","_value","_value1","_value2","_mode","_query"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
-_mode = [_this,3,-1,[0]] call BIS_fnc_param;
-if (_uid isEqualTo "" || _side isEqualTo sideUnknown) exitWith {}; //Bad.
-_query = "";
+params [
+ ["_uid", "", [""]],
+ ["_side", sideUnknown, [civilian]],
+ "_value",
+ ["_mode", -1, [0]],
+ "_value1"
+];
+
+if (_uid isEqualTo "" || {_side isEqualTo sideUnknown}) exitWith {}; //Bad.
+private _query = "";
switch (_mode) do {
case 0: {
- _value = [_this,2,0,[0]] call BIS_fnc_param;
- _value = [_value] call DB_fnc_numberSafe;
- _query = format ["UPDATE players SET cash='%1' WHERE pid='%2'",_value,_uid];
+ _query = format ["updateCash:%1:%2", _value, _uid];
};
case 1: {
- _value = [_this,2,0,[0]] call BIS_fnc_param;
- _value = [_value] call DB_fnc_numberSafe;
- _query = format ["UPDATE players SET bankacc='%1' WHERE pid='%2'",_value,_uid];
+ _query = format ["updateBank:%1:%2",_value,_uid];
};
case 2: {
- _value = [_this,2,[],[[]]] call BIS_fnc_param;
- //Does something license related but I can't remember I only know it's important?
- for "_i" from 0 to count(_value)-1 do {
- _bool = [(_value select _i) select 1] call DB_fnc_bool;
- _value set[_i,[(_value select _i) select 0,_bool]];
+ for "_i" from 0 to (count _value) -1 do {
+ (_value select _i) params ["_license", "_owned"];
+ _value set[_i, [_license, [0, 1] select _owned]];
};
- _value = [_value] call DB_fnc_mresArray;
+
switch (_side) do {
- case west: {_query = format ["UPDATE players SET cop_licenses='%1' WHERE pid='%2'",_value,_uid];};
- case civilian: {_query = format ["UPDATE players SET civ_licenses='%1' WHERE pid='%2'",_value,_uid];};
- case independent: {_query = format ["UPDATE players SET med_licenses='%1' WHERE pid='%2'",_value,_uid];};
+ case west: {_query = format ["updateWestLicenses:%1:%2", _value, _uid];};
+ case civilian: {_query = format ["updateCivLicenses:%1:%2", _value, _uid];};
+ case independent: {_query = format ["updateIndepLicenses:%1:%2", _value, _uid];};
};
};
case 3: {
- _value = [_this,2,[],[[]]] call BIS_fnc_param;
- _value = [_value] call DB_fnc_mresArray;
switch (_side) do {
- case west: {_query = format ["UPDATE players SET cop_gear='%1' WHERE pid='%2'",_value,_uid];};
- case civilian: {_query = format ["UPDATE players SET civ_gear='%1' WHERE pid='%2'",_value,_uid];};
- case independent: {_query = format ["UPDATE players SET med_gear='%1' WHERE pid='%2'",_value,_uid];};
+ case west: {_query = format ["updateWestGear:%1:%2", _value, _uid];};
+ case civilian: {_query = format ["updateCivGear:%1:%2", _value, _uid];};
+ case independent: {_query = format ["updateIndepGear:%1:%2", _value, _uid];};
};
};
case 4: {
- _value = [_this,2,false,[true]] call BIS_fnc_param;
- _value = [_value] call DB_fnc_bool;
- _value2 = [_this,4,[],[[]]] call BIS_fnc_param;
- _value2 = if (count _value2 isEqualTo 3) then {_value2} else {[0,0,0]};
- _value2 = [_value2] call DB_fnc_mresArray;
- _query = format ["UPDATE players SET civ_alive='%1', civ_position='%2' WHERE pid='%3'",_value,_value2,_uid];
+ _value = [0, 1] select _value;
+ _value1 = if (count _value1 isEqualTo 3) then {_value1} else {[0,0,0]};
+ _query = format ["updateCivPosition:%1:%2:%3", _value, _value1, _uid];
};
case 5: {
- _value = [_this,2,false,[true]] call BIS_fnc_param;
- _value = [_value] call DB_fnc_bool;
- _query = format ["UPDATE players SET arrested='%1' WHERE pid='%2'",_value,_uid];
+ _value = [0, 1] select _value;
+ _query = format ["updateArrested:%1:%2",_value,_uid];
};
case 6: {
- _value1 = [_this,2,0,[0]] call BIS_fnc_param;
- _value2 = [_this,4,0,[0]] call BIS_fnc_param;
- _value1 = [_value1] call DB_fnc_numberSafe;
- _value2 = [_value2] call DB_fnc_numberSafe;
- _query = format ["UPDATE players SET cash='%1', bankacc='%2' WHERE pid='%3'",_value1,_value2,_uid];
+ _query = format ["updateCashAndBank:%1:%2:%3", _value, _value1, _uid];
};
case 7: {
- _array = [_this,2,[],[[]]] call BIS_fnc_param;
- [_uid,_side,_array,0] call TON_fnc_keyManagement;
+ [_uid, _side, _value, 0] call TON_fnc_keyManagement;
};
};
if (_query isEqualTo "") exitWith {};
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/MySQL/fn_updateRequest.sqf b/life_server/Functions/MySQL/fn_updateRequest.sqf
old mode 100644
new mode 100755
index 884059855..7d0f11668
--- a/life_server/Functions/MySQL/fn_updateRequest.sqf
+++ b/life_server/Functions/MySQL/fn_updateRequest.sqf
@@ -6,37 +6,34 @@
Updates ALL player information in the database.
Information gets passed here from the client side file: core\session\fn_updateRequest.sqf
*/
-private ["_uid","_side","_cash","_bank","_licenses","_gear","_stats","_name","_alive","_position","_query","_thread"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_name = [_this,1,"",[""]] call BIS_fnc_param;
-_side = [_this,2,sideUnknown,[civilian]] call BIS_fnc_param;
-_cash = [_this,3,0,[0]] call BIS_fnc_param;
-_bank = [_this,4,5000,[0]] call BIS_fnc_param;
-_licenses = [_this,5,[],[[]]] call BIS_fnc_param;
-_gear = [_this,6,[],[[]]] call BIS_fnc_param;
-_stats = [_this,7,[100,100],[[]]] call BIS_fnc_param;
-_alive = [_this,9,false,[true]] call BIS_fnc_param;
-_position = [_this,10,[],[[]]] call BIS_fnc_param;
+
+params [
+ ["_uid", "", [""]],
+ ["_name", "", [""]],
+ ["_side", sideUnknown, [civilian]],
+ ["_cash", 0, [0]],
+ ["_bank", 5000, [0]],
+ ["_licenses", [], [[]]],
+ ["_gear", [], [[]]],
+ ["_stats", [100,100],[[]]],
+ ["_arrested", false, [true]],
+ ["_alive", false, [true]],
+ ["_position", [], [[]]]
+];
//Get to those error checks.
-if ((_uid isEqualTo "") || (_name isEqualTo "")) exitWith {};
+if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {};
-//Parse and setup some data.
-_name = [_name] call DB_fnc_mresString;
-_gear = [_gear] call DB_fnc_mresArray;
-_stats = [_stats] call DB_fnc_mresArray;
-_cash = [_cash] call DB_fnc_numberSafe;
-_bank = [_bank] call DB_fnc_numberSafe;
-_position = if (_side isEqualTo civilian) then {[_position] call DB_fnc_mresArray} else {[]};
+//Setup some data.
+_position = if (_side isEqualTo civilian) then {_position} else {[]};
+_arrested = [0, 1] select _arrested;
+_alive = [0, 1] select _alive;
-//Does something license related but I can't remember I only know it's important?
-for "_i" from 0 to count(_licenses)-1 do {
- _bool = [(_licenses select _i) select 1] call DB_fnc_bool;
- _licenses set[_i,[(_licenses select _i) select 0,_bool]];
+for "_i" from 0 to (count _licenses) -1 do {
+ (_licenses select _i) params ["_license", "_owned"];
+ _licenses set[_i, [_license, [0, 1] select _owned]];
};
-_licenses = [_licenses] call DB_fnc_mresArray;
-
//PLAYTIME
_playtime = [_uid] call TON_fnc_getPlayTime;
_playtime_update = [];
@@ -52,13 +49,11 @@ switch (_side) do {
case civilian: {_playtime_update set[2,_playtime];};
case independent: {_playtime_update set[1,_playtime];};
};
-_playtime_update = [_playtime_update] call DB_fnc_mresArray;
-switch (_side) do {
- case west: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', cop_gear='%4', cop_licenses='%5', cop_stats='%6', playtime='%7' WHERE pid='%8'",_name,_cash,_bank,_gear,_licenses,_stats,_playtime_update,_uid];};
- case civilian: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', civ_licenses='%4', civ_gear='%5', arrested='%6', civ_stats='%7', civ_alive='%8', civ_position='%9', playtime='%10' WHERE pid='%11'",_name,_cash,_bank,_licenses,_gear,[_this select 8] call DB_fnc_bool,_stats,[_alive] call DB_fnc_bool,_position,_playtime_update,_uid];};
- case independent: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', med_licenses='%4', med_gear='%5', med_stats='%6', playtime='%7' WHERE pid='%8'",_name,_cash,_bank,_licenses,_gear,_stats,_playtime_update,_uid];};
+private _query = switch (_side) do {
+ case west: {format ["updateWest:%1:%2:%3:%4:%5:%6:%7:%8", _name, _cash, _bank, _gear, _licenses, _stats, _playtime_update, _uid];};
+ case civilian: {format ["updateCiv:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11", _name, _cash, _bank, _licenses, _gear, _arrested, _stats, _alive, _position, _playtime_update, _uid];};
+ case independent: {format ["updateIndep:%1:%2:%3:%4:%5:%6:%7:%8", _name, _cash, _bank, _licenses, _gear, _stats, _playtime_update, _uid];};
};
-
-_queryResult = [_query,1] call DB_fnc_asyncCall;
+_queryResult = [_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/Systems/fn_chopShopSell.sqf b/life_server/Functions/Systems/fn_chopShopSell.sqf
old mode 100644
new mode 100755
index 100f62901..512d65394
--- a/life_server/Functions/Systems/fn_chopShopSell.sqf
+++ b/life_server/Functions/Systems/fn_chopShopSell.sqf
@@ -2,7 +2,6 @@
/*
File: fn_chopShopSell.sqf
Author: Bryan "Tonic" Boardwine
-
Description:
Checks whether or not the vehicle is persistent or temp and sells it.
*/
@@ -22,7 +21,7 @@ private _displayName = FETCH_CONFIG2(getText,"CfgVehicles",typeOf _vehicle, "dis
private _dbInfo = _vehicle getVariable ["dbInfo",[]];
if (count _dbInfo > 0) then {
_dbInfo params ["_uid","_plate"];
- private _query = format ["UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
+ _query = format ["deleteVehicle:%1:%2", _uid, _plate];
[_query,1] call DB_fnc_asyncCall;
};
diff --git a/life_server/Functions/Systems/fn_cleanup.sqf b/life_server/Functions/Systems/fn_cleanup.sqf
old mode 100644
new mode 100755
index f3351e81b..0f822c50d
--- a/life_server/Functions/Systems/fn_cleanup.sqf
+++ b/life_server/Functions/Systems/fn_cleanup.sqf
@@ -1,67 +1,80 @@
-#include "\life_server\script_macros.hpp"
-/*
- File: fn_cleanup.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Server-side cleanup script on vehicles.
- Sort of a lame way but whatever. Yep someone should look at it!
-*/
-private "_deleted";
-_deleted = false;
-for "_i" from 0 to 1 step 0 do {
- private ["_veh","_units","_fuel"];
- uiSleep (60 * 60);
- {
- _protect = false;
- _veh = _x;
- _vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _veh) >> "vehicleClass");
- _fuel = 1;
-
- if (!isNil {_veh getVariable "NPC"} && {_veh getVariable "NPC"}) then {_protect = true;};
-
- if ((_vehicleClass in ["Car","Air","Ship","Armored","Submarine"]) && {!(_protect)}) then {
- if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {_fuel = (fuel _veh);};
- _dbInfo = _veh getVariable ["dbInfo",[]];
- _units = {(_x distance _veh < 300)} count playableUnits;
- if (count crew _x isEqualTo 0) then {
- switch (true) do {
- case ((_x getHitPointDamage "HitEngine") > 0.7 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitLFWheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitLF2Wheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitRFWheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case ((_x getHitPointDamage "HitRF2Wheel") > 0.98 && _units isEqualTo 0) : {deleteVehicle _x; _deleted = true;};
- case (_units isEqualTo 0): {deleteVehicle _x; _deleted = true;};
- };
- };
-
- if (_deleted) then {
- waitUntil {isNull _veh};
- _deleted = false;
- };
-
- if (isNull _veh) then {
- if (count _dbInfo > 0) then {
- _uid = _dbInfo select 0;
- _plate = _dbInfo select 1;
-
- _query = format ["UPDATE vehicles SET active='0', fuel='%3' WHERE pid='%1' AND plate='%2'",_uid,_plate,_fuel];
-
- [_query,1] call DB_fnc_asyncCall;
- };
- };
- };
- } forEach vehicles;
-
- uiSleep (3 * 60); //3 minute cool-down before next cycle.
- {
- if ((typeOf _x) in ["Land_BottlePlastic_V1_F","Land_TacticalBacon_F","Land_Can_V3_F","Land_CanisterFuel_F", "Land_Can_V3_F","Land_Money_F","Land_Suitcase_F"]) then {
- deleteVehicle _x;
- };
- } forEach (allMissionObjects "Thing");
-
- uiSleep (2 * 60);
- {
- deleteVehicle _x;
- } forEach (allMissionObjects "GroundWeaponHolder");
-};
+#include "\life_server\script_macros.hpp"
+/*
+ File: fn_cleanup.sqf
+ Author: Bryan "Tonic" Boardwine
+
+ Description:
+ Server-side cleanup script on vehicles, dealers and fed reserve.
+*/
+private _saveFuel = LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1;
+private _minUnitDistance = LIFE_SETTINGS(getNumber,"vehicles_despawn_max_distance");
+
+private _fnc_fedDealerUpdate = {
+ {
+ private _dealer = missionNamespace getVariable [_x, objNull];
+ if !(isNull _dealer) then {
+ _x setVariable ["sellers", [], true];
+ };
+ } forEach ["Dealer_1", "Dealer_2", "Dealer_3"];
+
+ private _funds = fed_bank getVariable ["safe", 0];
+ fed_bank setVariable ["safe", round(_funds + ((count playableUnits)/2)), true];
+};
+
+private _fnc_cleanVehicles = {
+ {
+ private _vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _x) >> "vehicleClass");
+ private _protect = _x getVariable ["NPC",false];
+
+ if ((_vehicleClass in ["Car","Air","Ship","Armored","Submarine"]) && {!_protect}) then {
+ private _noUnitsNear = (nearestObjects [_x, ["CAManBase"], _minUnitDistance]) findIf {isPlayer _x && {alive _x}} isEqualTo -1;
+
+ if (crew _x isEqualTo [] && {_noUnitsNear}) then {
+ private _fuel = if (_saveFuel) then {fuel _x} else {1};
+ private _dbInfo = _x getVariable "dbInfo";
+
+ deleteVehicle _x;
+
+ if (isNil "_dbInfo") exitWith {};
+
+ waitUntil {uiSleep 1; isNull _x};
+
+ _dbInfo params [
+ "_uid",
+ "_plate"
+ ];
+
+ private _query = format ["cleanupVehicle:%1:%2:%3", _fuel, _uid, _plate];
+ [_query, 1] call DB_fnc_asyncCall;
+ };
+ };
+ } forEach vehicles;
+
+ {
+ if (!isNil {_x getVariable "item"}) then {
+ deleteVehicle _x;
+ };
+ true
+ } count (allMissionObjects "Thing");
+};
+
+//Array format: [parameters,function,delayTime]
+private _routines = [
+ [[], _fnc_fedDealerUpdate, 1800],
+ [[], _fnc_cleanVehicles, 3600]
+];
+
+{
+ _x pushBack (diag_tickTime + (_x # 2));
+} forEach _routines;
+
+for "_i" from 0 to 1 step 0 do {
+ {
+ _x params ["_params", "_function", "_delay", "_timeToRun"];
+ if (diag_tickTime > _timeToRun) then {
+ _params call _function;
+ _x set [2, diag_tickTime + _delay];
+ };
+ } forEach _routines;
+ uiSleep 1e-6;
+};
diff --git a/life_server/Functions/Systems/fn_entityKilled.sqf b/life_server/Functions/Systems/fn_entityKilled.sqf
new file mode 100644
index 000000000..836d8d8c9
--- /dev/null
+++ b/life_server/Functions/Systems/fn_entityKilled.sqf
@@ -0,0 +1,78 @@
+#include "\life_server\script_macros.hpp"
+/*
+ File: fn_entityKilled.sqf
+ Author: DomT602
+ Description:
+ Called when an entity dies
+*/
+params [
+ ["_killed", objNull, [objNull]],
+ ["_killer", objNull, [objNull]],
+ ["_instigator", objNull, [objNull]],
+ ["_useEffects", true, [true]]
+];
+
+if (isPlayer _killed) exitWith {
+ if (LIFE_SETTINGS(getNumber,"player_deathLog") isEqualTo 0) exitWith {};
+ private _killedName = name _killed;
+
+ if (_killed isEqualTo _killer) exitWith {
+ diag_log format ["death_log: Suicide Message: %1 committed suicide (or disconnected)", _killedName];
+ };
+
+ //instigator is null -> indicated Roadkill
+ //reference: https://community.bistudio.com/wiki/Arma_3:_Event_Handlers/addMissionEventHandler#EntityKilled
+ if (isNull _instigator) exitWith {
+ private _vehicle = vehicle _killer;
+ private _vehicleName = getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName");
+ (UAVControl _vehicle) params ["_instigator"];
+
+ if !(isNull _instigator) exitWith {
+ diag_log format ["death_log: UAV Death Message: %1 has knocked down %2 with a %3", name _instigator, _killedName, _vehicleName];
+ };
+
+ if (_vehicle isKindOf "Air") exitWith {
+ diag_log format ["death_log: Aircraft Death Message: %1 has obliterated %2 with a %3", name _killer, _killedName, _vehicleName];
+ };
+ diag_log format ["death_log: Vehicle Death Message: %1 has knocked down %2 with a %3", name _killer, _killedName, _vehicleName];
+ };
+
+ private _weaponName = getText(configFile >> "cfgWeapons" >> (currentWeapon _instigator) >> "displayName");
+ private _distance = floor(_killer distance _killed);
+
+ diag_log format ["death_log: Weapon Death Message: %1 has killed %2 with Weapon %3 from %4 Meters", name _instigator, _killedName, _weaponName, _distance];
+};
+
+private _vehicleClass = getText(configFile >> "CfgVehicles" >> (typeOf _killed) >> "vehicleClass");
+
+if (_vehicleClass in ["Air","Armored","Car","Ship","Submarine"]) exitWith {
+ private _dbInfo = _killed getVariable ["dbInfo",[]];
+
+ if (count _dbInfo > 0) then {
+ _dbInfo params [
+ "_uid",
+ "_plate"
+ ];
+
+ private _query = format ["deleteVehicle:%1:%2", _uid, _plate];
+ [_query,1] call DB_fnc_asyncCall;
+ };
+
+ if (!isNull _killed) then {
+
+ [_killed] spawn {
+ private _startTime = serverTime;
+ private _delay = LIFE_SETTINGS(getNumber,"dead_vehicles_despawn_delay");
+ private _minUnitDistance = LIFE_SETTINGS(getNumber,"dead_vehicles_max_units_distance");
+ params [
+ ["_killed", objNull, [objNull]]
+ ];
+
+ waitUntil {
+ uiSleep 1;
+ ((nearestObjects [_killed, ["CAManBase"], _minUnitDistance]) findIf {isPlayer _x && {alive _x}} isEqualTo -1) || {serverTime - _startTime >= _delay}
+ };
+ deleteVehicle _killed;
+ };
+ };
+};
diff --git a/life_server/Functions/Systems/fn_federalUpdate.sqf b/life_server/Functions/Systems/fn_federalUpdate.sqf
deleted file mode 100644
index b114cb189..000000000
--- a/life_server/Functions/Systems/fn_federalUpdate.sqf
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- File: fn_federalUpdate.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description:
- Uhhh, adds to it?
-*/
-private "_funds";
-for "_i" from 0 to 1 step 0 do {
- uiSleep (30 * 60);
- _funds = fed_bank getVariable ["safe",0];
- fed_bank setVariable ["safe",round(_funds+((count playableUnits)/2)),true];
-};
diff --git a/life_server/Functions/Systems/fn_getVehicles.sqf b/life_server/Functions/Systems/fn_getVehicles.sqf
old mode 100644
new mode 100755
index 9cf95f78a..e89bf0e83
--- a/life_server/Functions/Systems/fn_getVehicles.sqf
+++ b/life_server/Functions/Systems/fn_getVehicles.sqf
@@ -6,14 +6,16 @@
Description:
Sends a request to query the database information and returns vehicles.
*/
-private ["_pid","_side","_type","_unit","_ret","_tickTime","_queryResult"];
-_pid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[west]] call BIS_fnc_param;
-_type = [_this,2,"",[""]] call BIS_fnc_param;
-_unit = [_this,3,objNull,[objNull]] call BIS_fnc_param;
+
+params [
+ ["_pid", "", [""]],
+ ["_side", sideUnknown, [west]],
+ ["_type", "", [""]],
+ ["_unit", objNull, [objNull]]
+];
//Error checks
-if (_pid isEqualTo "" || _side isEqualTo sideUnknown || _type isEqualTo "" || isNull _unit) exitWith {
+if (_pid isEqualTo "" || {_side isEqualTo sideUnknown} || {_type isEqualTo ""} || {isNull _unit}) exitWith {
if (!isNull _unit) then {
[[]] remoteExec ["life_fnc_impoundMenu",(owner _unit)];
};
@@ -27,26 +29,25 @@ _side = switch (_side) do {
default {"Error"};
};
-if (_side == "Error") exitWith {
- [[]] remoteExec ["life_fnc_impoundMenu",(owner _unit)];
+if (_side isEqualTo "Error") exitWith {
+ [[]] remoteExec ["life_fnc_impoundMenu", (owner _unit)];
};
-_query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type];
-
+private _query = format ["selectVehicles:%1:%2:%3", _pid, _side, _type];
-_tickTime = diag_tickTime;
-_queryResult = [_query,2,true] call DB_fnc_asyncCall;
+private _tickTime = diag_tickTime;
+private _queryResult = [_query, 2, true] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Client Query Request -------------";
- diag_log format ["QUERY: %1",_query];
- diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
- diag_log format ["Result: %1",_queryResult];
+ diag_log format ["QUERY: %1", _query];
+ diag_log format ["Time to complete: %1 (in seconds)", (diag_tickTime - _tickTime)];
+ diag_log format ["Result: %1", _queryResult];
diag_log "------------------------------------------------";
};
if (_queryResult isEqualType "") exitWith {
- [[]] remoteExec ["life_fnc_impoundMenu",(owner _unit)];
+ [[]] remoteExec ["life_fnc_impoundMenu", (owner _unit)];
};
-[_queryResult] remoteExec ["life_fnc_impoundMenu",_unit];
+[_queryResult] remoteExec ["life_fnc_impoundMenu", _unit];
diff --git a/life_server/Functions/Systems/fn_spawnVehicle.sqf b/life_server/Functions/Systems/fn_spawnVehicle.sqf
old mode 100644
new mode 100755
index a03cafb13..3eaddef48
--- a/life_server/Functions/Systems/fn_spawnVehicle.sqf
+++ b/life_server/Functions/Systems/fn_spawnVehicle.sqf
@@ -7,6 +7,7 @@
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
+
params [
["_vid", -1, [0]],
["_pid", "", [""]],
@@ -28,10 +29,10 @@ serv_sv_use pushBack _vid;
private _servIndex = serv_sv_use find _vid;
-private _query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
+private _query = format ["selectVehiclesMore:%1:%2", _vid, _pid];
private _tickTime = diag_tickTime;
-private _queryResult = [_query,2] call DB_fnc_asyncCall;
+private _queryResult = [_query, 2] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Client Query Request -------------";
@@ -45,7 +46,7 @@ if (_queryResult isEqualType "") exitWith {};
private _vInfo = _queryResult;
if (isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
-if (count _vInfo isEqualTo 0) exitWith {serv_sv_use deleteAt _servIndex;};
+if (_vInfo isEqualTo []) exitWith {serv_sv_use deleteAt _servIndex;};
if ((_vInfo select 5) isEqualTo 0) exitWith {
serv_sv_use deleteAt _servIndex;
@@ -64,21 +65,21 @@ if !(_sp isEqualType "") then {
_nearVehicles = [];
};
-if (count _nearVehicles > 0) exitWith {
+if !(_nearVehicles isEqualTo []) exitWith {
serv_sv_use deleteAt _servIndex;
[_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
[1,"STR_Garage_SpawnPointError",true] remoteExecCall ["life_fnc_broadcast",_unit];
};
-_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
+_query = format ["updateVehicle:%1:%2", _pid, _vid];
-private _trunk = [(_vInfo select 9)] call DB_fnc_mresToArray;
-private _gear = [(_vInfo select 10)] call DB_fnc_mresToArray;
-private _damage = [call compile (_vInfo select 12)] call DB_fnc_mresToArray;
+private _trunk = _vInfo select 9;
+private _gear = _vInfo select 10;
+private _damage = _vInfo select 12;
private _wasIllegal = _vInfo select 13;
-_wasIllegal = if (_wasIllegal isEqualTo 1) then { true } else { false };
+_wasIllegal = _wasIllegal isEqualTo 1;
-[_query,1] call DB_fnc_asyncCall;
+[_query, 1] call DB_fnc_asyncCall;
private "_vehicle";
if (_sp isEqualType "") then {
@@ -111,42 +112,42 @@ _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
_vehicle setVariable ["Trunk",_trunk,true];
-
+
if (_wasIllegal) then {
private _refPoint = if (_sp isEqualType "") then {getMarkerPos _sp;} else {_sp;};
-
+
private _distance = 100000;
private "_location";
{
private _tempLocation = nearestLocation [_refPoint, _x];
private _tempDistance = _refPoint distance _tempLocation;
-
+
if (_tempDistance < _distance) then {
_location = _tempLocation;
_distance = _tempDistance;
};
false
-
+
} count ["NameCityCapital", "NameCity", "NameVillage"];
-
+
_location = text _location;
- [1,"STR_NOTF_BlackListedVehicle",true,[_location,_name]] remoteExecCall ["life_fnc_broadcast",west];
+ [1, "STR_NOTF_BlackListedVehicle", true, [_location, _name]] remoteExecCall ["life_fnc_broadcast", west];
- _query = format ["UPDATE vehicles SET blacklist='0' WHERE id='%1' AND pid='%2'",_vid,_pid];
- [_query,1] call DB_fnc_asyncCall;
+ _query = format ["updateVehicleBlacklist:%1:%2", _vid, _pid];
+ [_query, 1] call DB_fnc_asyncCall;
};
} else {
- _vehicle setVariable ["Trunk",[[],0],true];
+ _vehicle setVariable ["Trunk", [[], 0], true];
};
if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
_vehicle setFuel (_vInfo select 11);
- }else{
+} else {
_vehicle setFuel 1;
};
-if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
+if (!(_gear isEqualTo []) && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
@@ -166,7 +167,7 @@ if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqua
};
};
-if (count _damage > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
+if (!(_damage isEqualTo []) && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
_parts = getAllHitPointsDamage _vehicle;
for "_i" from 0 to ((count _damage) - 1) do {
diff --git a/life_server/Functions/Systems/fn_vehicleCreate.sqf b/life_server/Functions/Systems/fn_vehicleCreate.sqf
old mode 100644
new mode 100755
index 844ec7374..078215457
--- a/life_server/Functions/Systems/fn_vehicleCreate.sqf
+++ b/life_server/Functions/Systems/fn_vehicleCreate.sqf
@@ -5,17 +5,19 @@
Description:
Answers the query request to create the vehicle in the database.
*/
-private ["_uid","_side","_type","_classname","_color","_plate"];
-_uid = [_this,0,"",[""]] call BIS_fnc_param;
-_side = [_this,1,sideUnknown,[west]] call BIS_fnc_param;
-_vehicle = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-_color = [_this,3,-1,[0]] call BIS_fnc_param;
+
+params [
+ ["_uid", "", [""]],
+ ["_side", sideUnknown, [west]],
+ ["_vehicle", objNull, [objNull]],
+ ["_color", -1, [0]]
+];
//Error checks
-if (_uid isEqualTo "" || _side isEqualTo sideUnknown || isNull _vehicle) exitWith {};
+if (_uid isEqualTo "" || {_side isEqualTo sideUnknown} || {isNull _vehicle}) exitWith {};
if (!alive _vehicle) exitWith {};
-_className = typeOf _vehicle;
-_type = switch (true) do {
+private _className = typeOf _vehicle;
+private _type = switch (true) do {
case (_vehicle isKindOf "Car"): {"Car"};
case (_vehicle isKindOf "Air"): {"Air"};
case (_vehicle isKindOf "Ship"): {"Ship"};
@@ -28,7 +30,7 @@ _side = switch (_side) do {
default {"Error"};
};
-_plate = round(random(1000000));
-[_uid,_side,_type,_classname,_color,_plate] call DB_fnc_insertVehicle;
+private _plate = round(random(1000000));
+[_uid, _side, _type, _classname, _color, _plate] call DB_fnc_insertVehicle;
-_vehicle setVariable ["dbInfo",[_uid,_plate],true];
+_vehicle setVariable ["dbInfo", [_uid, _plate], true];
diff --git a/life_server/Functions/Systems/fn_vehicleDelete.sqf b/life_server/Functions/Systems/fn_vehicleDelete.sqf
old mode 100644
new mode 100755
index 09bd48033..a3b3622c5
--- a/life_server/Functions/Systems/fn_vehicleDelete.sqf
+++ b/life_server/Functions/Systems/fn_vehicleDelete.sqf
@@ -6,16 +6,16 @@
Doesn't actually delete since we don't give our DB user that type of
access so instead we set it to alive=0 so it never shows again.
*/
-private ["_vid","_sp","_pid","_query","_type","_thread"];
-_vid = [_this,0,-1,[0]] call BIS_fnc_param;
-_pid = [_this,1,"",[""]] call BIS_fnc_param;
-_sp = [_this,2,2500,[0]] call BIS_fnc_param;
-_unit = [_this,3,objNull,[objNull]] call BIS_fnc_param;
-_type = [_this,4,"",[""]] call BIS_fnc_param;
-if (_vid isEqualTo -1 || _pid isEqualTo "" || _sp isEqualTo 0 || isNull _unit || _type isEqualTo "") exitWith {};
-_unit = owner _unit;
+params [
+ ["_vid", -1, [0]],
+ ["_pid", "", [""]],
+ ["_sp", 2500, [0]],
+ ["_unit", objNull, [objNull]],
+ ["_type", "", [""]]
+];
-_query = format ["UPDATE vehicles SET alive='0' WHERE pid='%1' AND id='%2'",_pid,_vid];
+if (_vid isEqualTo -1 || {_pid isEqualTo ""} || {_sp isEqualTo 0} || {isNull _unit} || {_type isEqualTo ""}) exitWith {};
-_thread = [_query,1] call DB_fnc_asyncCall;
\ No newline at end of file
+private _query = format ["deleteVehicleID:%1:%2", _pid, _vid];
+private _thread = [_query, 1] call DB_fnc_asyncCall;
diff --git a/life_server/Functions/Systems/fn_vehicleStore.sqf b/life_server/Functions/Systems/fn_vehicleStore.sqf
old mode 100644
new mode 100755
index f4963f449..5b56d6ab3
--- a/life_server/Functions/Systems/fn_vehicleStore.sqf
+++ b/life_server/Functions/Systems/fn_vehicleStore.sqf
@@ -5,39 +5,47 @@
Description:
Stores the vehicle in the 'Garage'
*/
-private ["_vehicle","_impound","_vInfo","_vInfo","_plate","_uid","_query","_sql","_unit","_trunk","_vehItems","_vehMags","_vehWeapons","_vehBackpacks","_cargo","_saveItems","_storetext","_resourceItems","_fuel","_damage","_itemList","_totalweight","_weight","_thread"];
-_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_impound = [_this,1,false,[true]] call BIS_fnc_param;
-_unit = [_this,2,objNull,[objNull]] call BIS_fnc_param;
-_storetext = [_this,3,"",[""]] call BIS_fnc_param;
-_resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
-if (isNull _vehicle || isNull _unit) exitWith {life_impound_inuse = false; (owner _unit) publicVariableClient "life_impound_inuse";life_garage_store = false;(owner _unit) publicVariableClient "life_garage_store";}; //Bad data passed.
-_vInfo = _vehicle getVariable ["dbInfo",[]];
+params [
+ ["_vehicle", objNull, [objNull]],
+ ["_impound", false, [true]],
+ ["_unit", objNull, [objNull]],
+ ["_storetext", "", [""]]
+];
-if (count _vInfo > 0) then {
+private _resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
+
+if (isNull _vehicle || {isNull _unit}) exitWith {life_impound_inuse = false; (owner _unit) publicVariableClient "life_impound_inuse";life_garage_store = false;(owner _unit) publicVariableClient "life_garage_store";}; //Bad data passed.
+private _vInfo = _vehicle getVariable ["dbInfo", []];
+private "_plate";
+private "_uid";
+
+if !(_vInfo isEqualTo []) then {
_plate = _vInfo select 1;
_uid = _vInfo select 0;
};
// save damage.
+private "_damage";
if (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1) then {
_damage = getAllHitPointsDamage _vehicle;
_damage = _damage select 2;
- } else {
+} else {
_damage = [];
};
-_damage = [_damage] call DB_fnc_mresArray;
// because fuel price!
+private "_fuel";
if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
_fuel = (fuel _vehicle);
- } else {
+} else {
_fuel = 1;
};
+private "_query";
+private "_thread";
if (_impound) exitWith {
- if (count _vInfo isEqualTo 0) then {
+ if (_vInfo isEqualTo []) then {
life_impound_inuse = false;
(owner _unit) publicVariableClient "life_impound_inuse";
@@ -45,7 +53,7 @@ if (_impound) exitWith {
deleteVehicle _vehicle;
};
} else { // no free repairs!
- _query = format ["UPDATE vehicles SET active='0', fuel='%3', damage='%4' WHERE pid='%1' AND plate='%2'",_uid , _plate, _fuel, _damage];
+ _query = format ["updateVehicleFuel:%1:%2:%3:%4", _fuel, _damage, _uid, _plate];
_thread = [_query,1] call DB_fnc_asyncCall;
if (!isNil "_vehicle" && {!isNull _vehicle}) then {
@@ -58,8 +66,15 @@ if (_impound) exitWith {
};
// not persistent so just do this!
-if (count _vInfo isEqualTo 0) exitWith {
- [1,"STR_Garage_Store_NotPersistent",true] remoteExecCall ["life_fnc_broadcast",(owner _unit)];
+if (_vInfo isEqualTo []) exitWith {
+ if (LIFE_SETTINGS(getNumber,"vehicle_rentalReturn") isEqualTo 1) then {
+ [1,"STR_Garage_Store_NotPersistent2",true] remoteExecCall ["life_fnc_broadcast",(owner _unit)];
+ if (!isNil "_vehicle" && {!isNull _vehicle}) then {
+ deleteVehicle _vehicle;
+ };
+ } else {
+ [1,"STR_Garage_Store_NotPersistent",true] remoteExecCall ["life_fnc_broadcast",(owner _unit)];
+ };
life_garage_store = false;
(owner _unit) publicVariableClient "life_garage_store";
};
@@ -71,20 +86,20 @@ if !(_uid isEqualTo getPlayerUID _unit) exitWith {
};
// sort out whitelisted items!
-_trunk = _vehicle getVariable ["Trunk", [[], 0]];
-_itemList = _trunk select 0;
-_totalweight = 0;
+private _trunk = _vehicle getVariable ["Trunk", [[], 0]];
+private _itemList = _trunk select 0;
+private _totalweight = 0;
+private "_weight";
_items = [];
if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"save_vehicle_illegal") isEqualTo 1) then {
- private ["_isIllegal", "_blacklist"];
- _blacklist = false;
- _profileQuery = format ["SELECT name FROM players WHERE pid='%1'", _uid];
+ private _blacklist = false;
+ _profileQuery = format ["selectName:%1", _uid];
_profileName = [_profileQuery, 2] call DB_fnc_asyncCall;
_profileName = _profileName select 0;
{
- _isIllegal = M_CONFIG(getNumber,"VirtualItems",(_x select 0),"illegal");
+ private _isIllegal = M_CONFIG(getNumber,"VirtualItems",(_x select 0),"illegal");
_isIllegal = if (_isIllegal isEqualTo 1) then { true } else { false };
@@ -102,7 +117,7 @@ if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
if (_blacklist) then {
[_uid, _profileName, "481"] remoteExecCall["life_fnc_wantedAdd", RSERV];
- _query = format ["UPDATE vehicles SET blacklist='1' WHERE pid='%1' AND plate='%2'", _uid, _plate];
+ _query = format ["updateVehicleBlacklistPlate:%1:%2", _uid, _plate];
_thread = [_query, 1] call DB_fnc_asyncCall;
};
@@ -124,23 +139,22 @@ else {
_trunk = [[], 0];
};
+private "_cargo";
+
if (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1) then {
- _vehItems = getItemCargo _vehicle;
- _vehMags = getMagazineCargo _vehicle;
- _vehWeapons = getWeaponCargo _vehicle;
- _vehBackpacks = getBackpackCargo _vehicle;
- _cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
+ private _vehItems = getItemCargo _vehicle;
+ private _vehMags = getMagazineCargo _vehicle;
+ private _vehWeapons = getWeaponCargo _vehicle;
+ private _vehBackpacks = getBackpackCargo _vehicle;
+ _cargo = [_vehItems, _vehMags, _vehWeapons, _vehBackpacks];
// no items? clean the array so the database looks pretty
- if ((count (_vehItems select 0) isEqualTo 0) && (count (_vehMags select 0) isEqualTo 0) && (count (_vehWeapons select 0) isEqualTo 0) && (count (_vehBackpacks select 0) isEqualTo 0)) then {_cargo = [];};
+ if (((_vehItems select 0) isEqualTo []) && ((_vehMags select 0) isEqualTo []) && ((_vehWeapons select 0) isEqualTo []) && ((_vehBackpacks select 0) isEqualTo [])) then {_cargo = [];};
} else {
_cargo = [];
};
-// prepare
-_trunk = [_trunk] call DB_fnc_mresArray;
-_cargo = [_cargo] call DB_fnc_mresArray;
// update
-_query = format ["UPDATE vehicles SET active='0', inventory='%3', gear='%4', fuel='%5', damage='%6' WHERE pid='%1' AND plate='%2'", _uid, _plate, _trunk, _cargo, _fuel, _damage];
+_query = format ["updateVehicleAll:%1:%2:%3:%4:%5:%6", _trunk, _cargo, _fuel, _damage, _uid, _plate];
_thread = [_query,1] call DB_fnc_asyncCall;
if (!isNil "_vehicle" && {!isNull _vehicle}) then {
diff --git a/life_server/Functions/Systems/fn_vehicleUpdate.sqf b/life_server/Functions/Systems/fn_vehicleUpdate.sqf
old mode 100644
new mode 100755
index bf59eab04..dc685b4f9
--- a/life_server/Functions/Systems/fn_vehicleUpdate.sqf
+++ b/life_server/Functions/Systems/fn_vehicleUpdate.sqf
@@ -6,51 +6,53 @@
Description:
Tells the database that this vehicle need update inventory.
*/
-private ["_vehicle","_plate","_uid","_query","_sql","_dbInfo","_thread","_cargo","_trunk","_resourceItems","_fuel","_damage","_itemList","_totalweight","_weight"];
-_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
-_mode = [_this,1,1,[0]] call BIS_fnc_param;
+
+params [
+ ["_vehicle", objNull, [objNull]],
+ ["_mode", 1, [0]]
+];
+
if (isNull _vehicle) exitWith {}; //NULL
-_dbInfo = _vehicle getVariable ["dbInfo",[]];
-if (count _dbInfo isEqualTo 0) exitWith {};
-_uid = _dbInfo select 0;
-_plate = _dbInfo select 1;
+private _dbInfo = _vehicle getVariable ["dbInfo",[]];
+if (_dbInfo isEqualTo []) exitWith {};
+
+private _uid = _dbInfo select 0;
+private _plate = _dbInfo select 1;
+
switch (_mode) do {
case 1: {
- _vehItems = getItemCargo _vehicle;
- _vehMags = getMagazineCargo _vehicle;
- _vehWeapons = getWeaponCargo _vehicle;
- _vehBackpacks = getBackpackCargo _vehicle;
- _cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
+ private _vehItems = getItemCargo _vehicle;
+ private _vehMags = getMagazineCargo _vehicle;
+ private _vehWeapons = getWeaponCargo _vehicle;
+ private _vehBackpacks = getBackpackCargo _vehicle;
+ private _cargo = [_vehItems,_vehMags,_vehWeapons,_vehBackpacks];
// Keep it clean!
- if ((count (_vehItems select 0) isEqualTo 0) && (count (_vehMags select 0) isEqualTo 0) && (count (_vehWeapons select 0) isEqualTo 0) && (count (_vehBackpacks select 0) isEqualTo 0)) then {
+ if (((_vehItems select 0) isEqualTo []) && ((_vehMags select 0) isEqualTo []) && ((_vehWeapons select 0) isEqualTo []) && ((_vehBackpacks select 0) isEqualTo [])) then {
_cargo = [];
};
- _cargo = [_cargo] call DB_fnc_mresArray;
-
- _query = format ["UPDATE vehicles SET gear='%3' WHERE pid='%1' AND plate='%2'",_uid,_plate,_cargo];
- _thread = [_query,1] call DB_fnc_asyncCall;
+ private _query = format ["updateVehicleGear:%1:%2:%3", _cargo, _uid, _plate];
+ private _thread = [_query, 1] call DB_fnc_asyncCall;
};
case 2: {
- _resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
- _trunk = _vehicle getVariable ["Trunk",[[],0]];
- _itemList = _trunk select 0;
- _totalweight = 0;
- _items = [];
+ private _resourceItems = LIFE_SETTINGS(getArray,"save_vehicle_items");
+ private _trunk = _vehicle getVariable ["Trunk",[[],0]];
+ private _itemList = _trunk select 0;
+ private _totalweight = 0;
+ private _items = [];
{
if ((_x select 0) in _resourceItems) then {
_items pushBack [_x select 0,_x select 1];
- _weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
+ private _weight = (ITEM_WEIGHT(_x select 0)) * (_x select 1);
_totalweight = _weight + _totalweight;
};
- }forEach _itemList;
+ } forEach _itemList;
_trunk = [_items,_totalweight];
- _trunk = [_trunk] call DB_fnc_mresArray;
- _query = format ["UPDATE vehicles SET inventory='%3' WHERE pid='%1' AND plate='%2'",_uid,_plate,_trunk];
- _thread = [_query,1] call DB_fnc_asyncCall;
+ private _query = format ["updateVehicleTrunk:%1:%2:%3", _trunk, _uid, _plate];
+ private _thread = [_query,1] call DB_fnc_asyncCall;
};
-};
\ No newline at end of file
+};
diff --git a/life_server/Functions/Systems/fn_whoDoneIt.sqf b/life_server/Functions/Systems/fn_whoDoneIt.sqf
deleted file mode 100644
index fac03e6b5..000000000
--- a/life_server/Functions/Systems/fn_whoDoneIt.sqf
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- File: fn_whoDoneIt.sqf
- Description: Save log file of units killed.
- Author: Å ColinM - Help of BI Wiki & Forums.
-
- Credits: KillzoneKid for his Debug_Console v3.0 file. Cuel from the BI Forums for his current & previous posts.
-*/
-params [
- ["_victim",objNull,[objNull]],
- ["_killer",objNull,[objNull]]
-];
-
-if (isServer) then {
- private ["_killerWep","_killerVeh","_distance","_message"];
- if (isNull _victim || isNull _killer) exitWith {};
-
- _killerWep = currentWeapon _killer;
- _killerVeh = vehicle _killer;
- _distance = _killer distance _victim;
- _distance = floor(_distance);
-
- _message = "";
- if (_victim == _killer) then {
- _message = format ["Suicide Message: %1 committed suicide (or disconnected)", (name _victim)];
- };
- if (_killerWep != "") then {
- _message = format ["Weapon Death Message: %1 has killed %2 with Weapon %3 from %4 Meters", (name _killer), (name _victim), (getText(configFile >> "cfgWeapons" >> _killerWep >> "displayName")), _distance];
- };
- if (_killerVeh isKindOf "Car" && _killerWep isEqualTo "") then {
- _message = format ["Vehicle Death Message: %1 has knocked down %2 with a %3", (name _killer), (name _victim), (getText(configFile >> "CfgVehicles" >> (typeOf _killerVeh) >> "displayName"))];
- };
- if (_killerVeh isKindOf "Air" && _killerWep isEqualTo "") then {
- _message = format ["Aircraft Death Message: %1 has obliterated %2 with a %3", (name _killer), (name _victim), (getText(configFile >> "CfgVehicles" >> (typeOf _killerVeh) >> "displayName"))];
- };
- if (_message isEqualTo "") then {
- _message = format ["Death Message: %1 has killed %2", (name _killer), (name _victim)];
- };
-
- diag_log format ["death_log: %1",_message];
-};
diff --git a/life_server/Functions/WantedSystem/fn_wantedAdd.sqf b/life_server/Functions/WantedSystem/fn_wantedAdd.sqf
old mode 100644
new mode 100755
index 1114c1053..f93752195
--- a/life_server/Functions/WantedSystem/fn_wantedAdd.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedAdd.sqf
@@ -8,6 +8,7 @@
Description:
Adds or appends a unit to the wanted list.
*/
+
params [
["_uid","",[""]],
["_name","",[""]],
@@ -19,35 +20,33 @@ if (_uid isEqualTo "" || {_type isEqualTo ""} || {_name isEqualTo ""}) exitWith
//What is the crime?
private _crimesConfig = getArray(missionConfigFile >> "Life_Settings" >> "crimes");
-private _index = [_type,_crimesConfig] call TON_fnc_index;
+private _index = [_type, _crimesConfig] call life_util_fnc_index;
if (_index isEqualTo -1) exitWith {};
_type = [_type, parseNumber ((_crimesConfig select _index) select 1)];
-if (count _type isEqualTo 0) exitWith {}; //Not our information being passed...
+if (_type isEqualTo []) exitWith {}; //Not our information being passed...
//Is there a custom bounty being sent? Set that as the pricing.
if !(_customBounty isEqualTo -1) then {_type set[1,_customBounty];};
//Search the wanted list to make sure they are not on it.
-private _query = format ["SELECT wantedID FROM wanted WHERE wantedID='%1'",_uid];
+private _query = format ["selectWantedID:%1", _uid];
private _queryResult = [_query,2,true] call DB_fnc_asyncCall;
-private _val = [_type select 1] call DB_fnc_numberSafe;
+private _val = _type select 1;
private _number = _type select 0;
-if !(count _queryResult isEqualTo 0) then {
- _query = format ["SELECT wantedCrimes, wantedBounty FROM wanted WHERE wantedID='%1'",_uid];
+if !(_queryResult isEqualTo []) then {
+ _query = format ["selectWantedCrimes:%1", _uid];
_queryResult = [_query,2] call DB_fnc_asyncCall;
- _pastCrimes = [_queryResult select 0] call DB_fnc_mresToArray;
+ _pastCrimes = _queryResult select 0;
if (_pastCrimes isEqualType "") then {_pastCrimes = call compile format ["%1", _pastCrimes];};
_pastCrimes pushBack _number;
- _pastCrimes = [_pastCrimes] call DB_fnc_mresArray;
- _query = format ["UPDATE wanted SET wantedCrimes = '%1', wantedBounty = wantedBounty + '%2', active = '1' WHERE wantedID='%3'",_pastCrimes,_val,_uid];
+ _query = format ["updateWanted:%1:%2:%3", _pastCrimes, _val, _uid];
[_query,1] call DB_fnc_asyncCall;
} else {
_crime = [_type select 0];
- _crime = [_crime] call DB_fnc_mresArray;
- _query = format ["INSERT INTO wanted (wantedID, wantedName, wantedCrimes, wantedBounty, active) VALUES('%1', '%2', '%3', '%4', '1')",_uid,_name,_crime,_val];
+ _query = format ["insertWanted:%1:%2:%3:%4", _uid, _name, _crime, _val];
[_query,1] call DB_fnc_asyncCall;
};
diff --git a/life_server/Functions/WantedSystem/fn_wantedBounty.sqf b/life_server/Functions/WantedSystem/fn_wantedBounty.sqf
old mode 100644
new mode 100755
index 3a41b0080..5cc334532
--- a/life_server/Functions/WantedSystem/fn_wantedBounty.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedBounty.sqf
@@ -8,6 +8,7 @@
Description:
Checks if the person is on the bounty list and awards the cop for killing them.
*/
+
params [
["_uid","",[""]],
["_civ",objNull,[objNull]],
@@ -17,11 +18,11 @@ params [
if (isNull _civ || isNull _cop) exitWith {};
-private _query = format ["SELECT wantedID, wantedName, wantedCrimes, wantedBounty FROM wanted WHERE active='1' AND wantedID='%1'",_uid];
+private _query = format ["selectWanted:%1", _uid];
private _queryResult = [_query,2] call DB_fnc_asyncCall;
private "_amount";
-if !(count _queryResult isEqualTo 0) then {
+if !(_queryResult isEqualTo []) then {
_amount = _queryResult param [3];
if !(_amount isEqualTo 0) then {
if (_half) then {
@@ -30,4 +31,4 @@ if !(count _queryResult isEqualTo 0) then {
[_amount,_amount] remoteExecCall ["life_fnc_bountyReceive",(owner _cop)];
};
};
-};
\ No newline at end of file
+};
diff --git a/life_server/Functions/WantedSystem/fn_wantedCrimes.sqf b/life_server/Functions/WantedSystem/fn_wantedCrimes.sqf
old mode 100644
new mode 100755
index 58668a495..dfdceec55
--- a/life_server/Functions/WantedSystem/fn_wantedCrimes.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedCrimes.sqf
@@ -8,19 +8,20 @@
Description:
Grabs a list of crimes committed by a person.
*/
+
disableSerialization;
params [
["_ret",objNull,[objNull]],
- ["_criminal",[],[]]
+ ["_criminal",[],[[]]]
];
-private _query = format ["SELECT wantedCrimes, wantedBounty FROM wanted WHERE active='1' AND wantedID='%1'",_criminal select 0];
-private _queryResult = [_query,2] call DB_fnc_asyncCall;
+private _query = format ["selectWantedActive:%1", _criminal select 0];
+private _queryResult = [_query, 2] call DB_fnc_asyncCall;
_ret = owner _ret;
-private _type = [_queryResult select 0] call DB_fnc_mresToArray;
+private _type = _queryResult select 0;
if (_type isEqualType "") then {_type = call compile format ["%1", _type];};
private _crimesArr = [];
@@ -30,6 +31,6 @@ private _crimesArr = [];
false
} count _type;
-_queryResult set[0,_crimesArr];
+_queryResult set[0, _crimesArr];
-[_queryResult] remoteExec ["life_fnc_wantedInfo",_ret];
+[_queryResult] remoteExec ["life_fnc_wantedInfo", _ret];
diff --git a/life_server/Functions/WantedSystem/fn_wantedFetch.sqf b/life_server/Functions/WantedSystem/fn_wantedFetch.sqf
old mode 100644
new mode 100755
index 826cf8141..f80041657
--- a/life_server/Functions/WantedSystem/fn_wantedFetch.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedFetch.sqf
@@ -9,7 +9,11 @@
Description:
Displays wanted list information sent from the server.
*/
-private _ret = param [0,objNull,[objNull]];
+
+params [
+ ["_ret", objNull, [objNull]]
+];
+
if (isNull _ret) exitWith {};
_ret = owner _ret;
private _inStatement = "";
@@ -20,7 +24,7 @@ private _units = [];
false
} count playableUnits;
-if (count _units isEqualTo 0) exitWith {[_list] remoteExec ["life_fnc_wantedList",_ret];};
+if (_units isEqualTo []) exitWith {[_list] remoteExec ["life_fnc_wantedList",_ret];};
{
if (count _units > 1) then {
@@ -34,7 +38,7 @@ if (count _units isEqualTo 0) exitWith {[_list] remoteExec ["life_fnc_wantedList
};
} forEach _units;
-private _query = format ["SELECT wantedID, wantedName FROM wanted WHERE active='1' AND wantedID in (%1)",_inStatement];
+private _query = format ["selectWantedActiveID:%1", _inStatement];
private _queryResult = [_query,2,true] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log format ["Query: %1",_query];
@@ -45,6 +49,6 @@ if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
false
} count _queryResult;
-if (count _list isEqualTo 0) exitWith {[_list] remoteExec ["life_fnc_wantedList",_ret];};
+if (_list isEqualTo []) exitWith {[_list] remoteExec ["life_fnc_wantedList",_ret];};
[_list] remoteExec ["life_fnc_wantedList",_ret];
diff --git a/life_server/Functions/WantedSystem/fn_wantedPerson.sqf b/life_server/Functions/WantedSystem/fn_wantedPerson.sqf
old mode 100644
new mode 100755
index 4c5b6e663..f057a4307
--- a/life_server/Functions/WantedSystem/fn_wantedPerson.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedPerson.sqf
@@ -8,13 +8,16 @@
Description:
Fetches a specific person from the wanted array.
*/
-private _unit = param [0,objNull,[objNull]];
+
+params [
+ ["_unit", objNull, [objNull]]
+];
if (isNull _unit) exitWith {[]};
private _uid = getPlayerUID _unit;
-private _query = format ["SELECT wantedID, wantedName, wantedBounty FROM wanted WHERE active='1' AND wantedID='%1'",_uid];
+private _query = format ["selectWantedBounty:%1", _uid];
private _queryResult = [_query,2] call DB_fnc_asyncCall;
-if (count _queryResult isEqualTo 0) exitWith {[]};
+if (_queryResult isEqualTo []) exitWith {[]};
_queryResult;
diff --git a/life_server/Functions/WantedSystem/fn_wantedProfUpdate.sqf b/life_server/Functions/WantedSystem/fn_wantedProfUpdate.sqf
old mode 100644
new mode 100755
index e472a6cc9..cb89c4804
--- a/life_server/Functions/WantedSystem/fn_wantedProfUpdate.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedProfUpdate.sqf
@@ -6,20 +6,20 @@
Description:
Updates name of player if they change profiles
*/
-private ["_query","_tickTime","_wantedCheck","_wantedQuery"];
+
params [
["_uid","",[""]],
["_name","",[""]]
];
//Bad data check
-if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {};
+if (_uid isEqualTo "" || {_name isEqualTo ""}) exitWith {};
-_wantedCheck = format ["SELECT wantedName FROM wanted WHERE wantedID='%1'",_uid];
-_wantedQuery = [_wantedCheck,2] call DB_fnc_asyncCall;
-if (count _wantedQuery isEqualTo 0) exitWith {};
+private _wantedCheck = format ["selectWantedName:%1", _uid];
+private _wantedQuery = [_wantedCheck, 2] call DB_fnc_asyncCall;
+if (_wantedQuery isEqualTo []) exitWith {};
if !(_name isEqualTo (_wantedQuery select 0)) then {
- _query = format ["UPDATE wanted SET wantedName='%1' WHERE wantedID='%2'",_name,_uid];
- [_query,2] call DB_fnc_asyncCall;
+ private _query = format ["updateWantedName:%1:%2", _name, _uid];
+ [_query, 2] call DB_fnc_asyncCall;
};
diff --git a/life_server/Functions/WantedSystem/fn_wantedRemove.sqf b/life_server/Functions/WantedSystem/fn_wantedRemove.sqf
old mode 100644
new mode 100755
index 0b1ffaacd..c5af59c5b
--- a/life_server/Functions/WantedSystem/fn_wantedRemove.sqf
+++ b/life_server/Functions/WantedSystem/fn_wantedRemove.sqf
@@ -8,9 +8,12 @@
Description:
Removes a person from the wanted list.
*/
-private _uid = param [0,"",[""]];
+
+params [
+ ["_uid", "", [""]]
+];
if (_uid isEqualTo "") exitWith {}; //Bad data
-private _query = format ["UPDATE wanted SET active = '0', wantedCrimes = '[]', wantedBounty = 0 WHERE wantedID='%1'",_uid];
-[_query,2] call DB_fnc_asyncCall;
\ No newline at end of file
+private _query = format ["deleteWanted:%1", _uid];
+[_query, 2] call DB_fnc_asyncCall;
diff --git a/life_server/config.cpp b/life_server/config.cpp
index 57adf021b..ab3414c5a 100644
--- a/life_server/config.cpp
+++ b/life_server/config.cpp
@@ -15,16 +15,11 @@ class CfgFunctions {
class MySQL
{
file = "\life_server\Functions\MySQL";
- class numberSafe {};
- class mresArray {};
class queryRequest{};
class asyncCall{};
class insertRequest{};
class updateRequest{};
- class mresToArray {};
class insertVehicle {};
- class bool {};
- class mresString {};
class updatePartial {};
};
};
@@ -67,16 +62,15 @@ class CfgFunctions {
class vehicleDelete {};
class spikeStrip {};
class transferOwnership {};
- class federalUpdate {};
class chopShopSell {};
class clientDisconnect {};
class entityRespawned {};
+ class entityKilled {};
class cleanupRequest {};
class keyManagement {};
class vehicleUpdate {};
class recupkeyforHC {};
class handleBlastingCharge {};
- class terrainSort {};
};
class Housing {
diff --git a/life_server/functions.sqf b/life_server/functions.sqf
deleted file mode 100644
index 9892cb97b..000000000
--- a/life_server/functions.sqf
+++ /dev/null
@@ -1,319 +0,0 @@
-#include "script_macros.hpp"
-/*
- File: functions.sqf
- Author: Bryan "Tonic" Boardwine
-
- Description: They are functions.
-*/
-
-publicVariable "TON_fnc_terrainSort";
-
-TON_fnc_index =
-compileFinal "
- params [
- ""_item"",
- [""_stack"",[],[[]]]
- ];
-
- _stack findIf {_item in _x};
-";
-
-TON_fnc_player_query =
-compileFinal "
- private [""_ret""];
- _ret = _this select 0;
- if (isNull _ret) exitWith {};
- if (isNil ""_ret"") exitWith {};
-
- [life_atmbank,life_cash,owner player,player,profileNameSteam,getPlayerUID player,playerSide] remoteExecCall [""life_fnc_adminInfo"",_ret];
-";
-publicVariable "TON_fnc_player_query";
-publicVariable "TON_fnc_index";
-
-TON_fnc_isNumber =
-compileFinal "
- params [
- ['_string','',['']]
- ];
- if (_string isEqualTo '') exitWith {false};
- private _array = _string splitString '';
- private _return = true;
- {
- if !(_x in ['0','1','2','3','4','5','6','7','8','9']) exitWith {
- _return = false;
- };
- } forEach _array;
- _return;
-";
-
-publicVariable "TON_fnc_isNumber";
-
-TON_fnc_clientGangKick =
-compileFinal "
- private [""_unit"",""_group""];
- _unit = _this select 0;
- _group = _this select 1;
- if (isNil ""_unit"" || isNil ""_group"") exitWith {};
- if (player isEqualTo _unit && (group player) == _group) then {
- life_my_gang = objNull;
- [player] joinSilent (createGroup civilian);
- hint localize ""STR_GNOTF_KickOutGang"";
- };
-";
-
-publicVariable "TON_fnc_clientGangKick";
-
-TON_fnc_clientGetKey =
-compileFinal "
- private [""_vehicle"",""_unit"",""_giver""];
- _vehicle = _this select 0;
- _unit = _this select 1;
- _giver = _this select 2;
- if (isNil ""_unit"" || isNil ""_giver"") exitWith {};
- if (player isEqualTo _unit && !(_vehicle in life_vehicles)) then {
- _name = getText(configFile >> ""CfgVehicles"" >> (typeOf _vehicle) >> ""displayName"");
- hint format [localize ""STR_NOTF_gaveKeysFrom"",_giver,_name];
- life_vehicles pushBack _vehicle;
- [getPlayerUID player,playerSide,_vehicle,1] remoteExecCall [""TON_fnc_keyManagement"",2];
- };
-";
-
-publicVariable "TON_fnc_clientGetKey";
-
-TON_fnc_clientGangLeader =
-compileFinal "
- private [""_unit"",""_group""];
- _unit = _this select 0;
- _group = _this select 1;
- if (isNil ""_unit"" || isNil ""_group"") exitWith {};
- if (player isEqualTo _unit && (group player) == _group) then {
- player setRank ""COLONEL"";
- _group selectLeader _unit;
- hint localize ""STR_GNOTF_GaveTransfer"";
- };
-";
-
-publicVariable "TON_fnc_clientGangLeader";
-
-TON_fnc_clientGangLeft =
-compileFinal "
- private [""_unit"",""_group""];
- _unit = _this select 0;
- _group = _this select 1;
- if (isNil ""_unit"" || isNil ""_group"") exitWith {};
- if (player isEqualTo _unit && (group player) == _group) then {
- life_my_gang = objNull;
- [player] joinSilent (createGroup civilian);
- hint localize ""STR_GNOTF_LeaveGang"";
- };
-";
-
-publicVariable "TON_fnc_clientGangLeft";
-
-//Cell Phone Messaging
-/*
- -fnc_cell_textmsg
- -fnc_cell_textcop
- -fnc_cell_textadmin
- -fnc_cell_adminmsg
- -fnc_cell_adminmsgall
-*/
-
-//To EMS
-TON_fnc_cell_emsrequest =
-compileFinal "
-private [""_msg"",""_to""];
- ctrlShow[3022,false];
- _msg = ctrlText 3003;
- _length = count (toArray(_msg));
- if (_length > 400) exitWith {hint localize ""STR_CELLMSG_LIMITEXCEEDED"";ctrlShow[3022,true];};
- _to = ""EMS Units"";
- if (_msg isEqualTo """") exitWith {hint localize ""STR_CELLMSG_EnterMSG"";ctrlShow[3022,true];};
-
- [_msg,name player,5,mapGridPosition player,player] remoteExecCall [""TON_fnc_clientMessage"",independent];
- [] call life_fnc_cellphone;
- hint format [localize ""STR_CELLMSG_ToEMS"",_to,_msg];
- ctrlShow[3022,true];
-";
-//To One Person
-TON_fnc_cell_textmsg =
-compileFinal "
- private [""_msg"",""_to""];
- ctrlShow[3015,false];
- _msg = ctrlText 3003;
-
- _length = count (toArray(_msg));
- if (_length > 400) exitWith {hint localize ""STR_CELLMSG_LIMITEXCEEDED"";ctrlShow[3015,true];};
- if (lbCurSel 3004 isEqualTo -1) exitWith {hint localize ""STR_CELLMSG_SelectPerson""; ctrlShow[3015,true];};
-
- _to = call compile format [""%1"",(lbData[3004,(lbCurSel 3004)])];
- if (isNull _to) exitWith {ctrlShow[3015,true];};
- if (isNil ""_to"") exitWith {ctrlShow[3015,true];};
- if (_msg isEqualTo """") exitWith {hint localize ""STR_CELLMSG_EnterMSG"";ctrlShow[3015,true];};
-
- [_msg,name player,0] remoteExecCall [""TON_fnc_clientMessage"",_to];
- [] call life_fnc_cellphone;
- hint format [localize ""STR_CELLMSG_ToPerson"",name _to,_msg];
- ctrlShow[3015,true];
-";
-//To All Cops
-TON_fnc_cell_textcop =
-compileFinal "
- private [""_msg"",""_to""];
- ctrlShow[3016,false];
- _msg = ctrlText 3003;
- _to = ""The Police"";
-
- if (_msg isEqualTo """") exitWith {hint localize ""STR_CELLMSG_EnterMSG"";ctrlShow[3016,true];};
- _length = count (toArray(_msg));
- if (_length > 400) exitWith {hint localize ""STR_CELLMSG_LIMITEXCEEDED"";ctrlShow[3016,true];};
-
- [_msg,name player,1,mapGridPosition player,player] remoteExecCall [""TON_fnc_clientMessage"",-2];
- [] call life_fnc_cellphone;
- hint format [localize ""STR_CELLMSG_ToPerson"",_to,_msg];
- ctrlShow[3016,true];
-";
-//To All Admins
-TON_fnc_cell_textadmin =
-compileFinal "
- private [""_msg"",""_to"",""_from""];
- ctrlShow[3017,false];
- _msg = ctrlText 3003;
- _to = ""The Admins"";
-
- if (_msg isEqualTo """") exitWith {hint localize ""STR_CELLMSG_EnterMSG"";ctrlShow[3017,true];};
- _length = count (toArray(_msg));
- if (_length > 400) exitWith {hint localize ""STR_CELLMSG_LIMITEXCEEDED"";ctrlShow[3017,true];};
-
- [_msg,name player,2,mapGridPosition player,player] remoteExecCall [""TON_fnc_clientMessage"",-2];
- [] call life_fnc_cellphone;
- hint format [localize ""STR_CELLMSG_ToPerson"",_to,_msg];
- ctrlShow[3017,true];
-";
-//Admin To One Person
-TON_fnc_cell_adminmsg =
-compileFinal "
- if (isServer) exitWith {};
- if ((call life_adminlevel) < 1) exitWith {hint localize ""STR_CELLMSG_NoAdmin"";};
- private [""_msg"",""_to""];
- ctrlShow[3020,false];
- _msg = ctrlText 3003;
- _to = call compile format [""%1"",(lbData[3004,(lbCurSel 3004)])];
- if (isNull _to) exitWith {ctrlShow[3020,true];};
- if (isNil ""_to"") exitWith {ctrlShow[3020,true];};
- if (_msg isEqualTo """") exitWith {hint localize ""STR_CELLMSG_EnterMSG"";ctrlShow[3020,true];};
-
- [_msg,name player,3] remoteExecCall [""TON_fnc_clientMessage"",_to];
- [] call life_fnc_cellphone;
- hint format [localize ""STR_CELLMSG_AdminToPerson"",name _to,_msg];
- ctrlShow[3020,true];
-";
-
-TON_fnc_cell_adminmsgall =
-compileFinal "
- if (isServer) exitWith {};
- if ((call life_adminlevel) < 1) exitWith {hint localize ""STR_CELLMSG_NoAdmin"";};
- private [""_msg"",""_from""];
- ctrlShow[3021,false];
- _msg = ctrlText 3003;
- if (_msg isEqualTo """") exitWith {hint localize ""STR_CELLMSG_EnterMSG"";ctrlShow[3021,true];};
-
- [_msg,name player,4] remoteExecCall [""TON_fnc_clientMessage"",-2];
- [] call life_fnc_cellphone;
- hint format [localize ""STR_CELLMSG_AdminToAll"",_msg];
- ctrlShow[3021,true];
-";
-
-publicVariable "TON_fnc_cell_textmsg";
-publicVariable "TON_fnc_cell_textcop";
-publicVariable "TON_fnc_cell_textadmin";
-publicVariable "TON_fnc_cell_adminmsg";
-publicVariable "TON_fnc_cell_adminmsgall";
-publicVariable "TON_fnc_cell_emsrequest";
-//Client Message
-/*
- 0 = private message
- 1 = police message
- 2 = message to admin
- 3 = message from admin
- 4 = admin message to all
-*/
-TON_fnc_clientMessage =
-compileFinal "
- if (isServer) exitWith {};
- private [""_msg"",""_from"", ""_type""];
- _msg = _this select 0;
- _from = _this select 1;
- _type = _this select 2;
- if (_from isEqualTo """") exitWith {};
- switch (_type) do {
- case 0 : {
- private [""_message""];
- _message = format ["">>>MESSAGE FROM %1: %2"",_from,_msg];
- hint parseText format [""New Message
To: You From: %1
Message: %2"",_from,_msg];
-
- [""TextMessage"",[format [""You Received A New Private Message From %1"",_from]]] call bis_fnc_showNotification;
- systemChat _message;
- };
-
- case 1 : {
- if (side player != west) exitWith {};
- private [""_message"",""_loc"",""_unit""];
- _loc = _this select 3;
- _unit = _this select 4;
- _message = format [""--- 911 DISPATCH FROM %1: %2"",_from,_msg];
- if (isNil ""_loc"") then {_loc = ""Unknown"";};
- hint parseText format [""New Dispatch
To: All Officers From: %1 Coords: %2
Message: %3"",_from,_loc,_msg];
-
- [""PoliceDispatch"",[format [""A New Police Report From: %1"",_from]]] call bis_fnc_showNotification;
- systemChat _message;
- };
-
- case 2 : {
- if ((call life_adminlevel) < 1) exitWith {};
- private [""_message"",""_loc"",""_unit""];
- _loc = _this select 3;
- _unit = _this select 4;
- _message = format [""!!! ADMIN REQUEST FROM %1: %2"",_from,_msg];
- if (isNil ""_loc"") then {_loc = ""Unknown"";};
- hint parseText format [""Admin Request
To: Admins From: %1 Coords: %2
Message: %3"",_from,_loc,_msg];
-
- [""AdminDispatch"",[format [""%1 Has Requested An Admin!"",_from]]] call bis_fnc_showNotification;
- systemChat _message;
- };
-
- case 3 : {
- private [""_message""];
- _message = format [""!!! ADMIN MESSAGE: %1"",_msg];
- _admin = format [""Sent by admin: %1"", _from];
- hint parseText format [""Admin Message
To: You From: An Admin
Message: %1"",_msg];
-
- [""AdminMessage"",[""You Have Received A Message From An Admin!""]] call bis_fnc_showNotification;
- systemChat _message;
- if ((call life_adminlevel) > 0) then {systemChat _admin;};
- };
-
- case 4 : {
- private [""_message"",""_admin""];
- _message = format [""!!!ADMIN MESSAGE: %1"",_msg];
- _admin = format [""Sent by admin: %1"", _from];
- hint parseText format [""Admin Message
To: All Players From: The Admins
Message: %1"",_msg];
-
- [""AdminMessage"",[""You Have Received A Message From An Admin!""]] call bis_fnc_showNotification;
- systemChat _message;
- if ((call life_adminlevel) > 0) then {systemChat _admin;};
- };
-
- case 5: {
- if (side player != independent) exitWith {};
- private [""_message"",""_loc"",""_unit""];
- _loc = _this select 3;
- _unit = _this select 4;
- _message = format [""!!! EMS REQUEST: %1"",_msg];
- hint parseText format [""EMS Request
To: You From: %1 Coords: %2
Message: %3"",_from,_loc,_msg];
-
- [""TextMessage"",[format [""EMS Request from %1"",_from]]] call bis_fnc_showNotification;
- };
- };
-";
-publicVariable "TON_fnc_clientMessage";
diff --git a/life_server/init.sqf b/life_server/init.sqf
index 73b571e22..7a2a63262 100644
--- a/life_server/init.sqf
+++ b/life_server/init.sqf
@@ -17,7 +17,6 @@ _extDBNotLoaded = "";
serv_sv_use = [];
publicVariable "life_server_isReady";
life_save_civilian_position = if (LIFE_SETTINGS(getNumber,"save_civilian_position") isEqualTo 0) then {false} else {true};
-fn_whoDoneIt = compile preprocessFileLineNumbers "\life_server\Functions\Systems\fn_whoDoneIt.sqf";
/*
Prepare the headless client.
@@ -43,7 +42,7 @@ if (isNil {uiNamespace getVariable "life_sql_id"}) then {
try {
_result = EXTDB format ["9:ADD_DATABASE:%1",EXTDB_SETTING(getText,"DatabaseName")];
if (!(_result isEqualTo "[1]")) then {throw "extDB3: Error with Database Connection"};
- _result = EXTDB format ["9:ADD_DATABASE_PROTOCOL:%2:SQL:%1:TEXT2",FETCH_CONST(life_sql_id),EXTDB_SETTING(getText,"DatabaseName")];
+ _result = EXTDB format ["9:ADD_DATABASE_PROTOCOL:%2:SQL_CUSTOM:%1:AL.ini",FETCH_CONST(life_sql_id),EXTDB_SETTING(getText,"DatabaseName")];
if (!(_result isEqualTo "[1]")) then {throw "extDB3: Error with Database Connection"};
} catch {
diag_log _exception;
@@ -67,10 +66,10 @@ life_server_extDB_notLoaded = false;
publicVariable "life_server_extDB_notLoaded";
/* Run stored procedures for SQL side cleanup */
-["CALL resetLifeVehicles",1] call DB_fnc_asyncCall;
-["CALL deleteDeadVehicles",1] call DB_fnc_asyncCall;
-["CALL deleteOldHouses",1] call DB_fnc_asyncCall;
-["CALL deleteOldGangs",1] call DB_fnc_asyncCall;
+["resetLifeVehicles", 1] call DB_fnc_asyncCall;
+["deleteDeadVehicles", 1] call DB_fnc_asyncCall;
+["deleteOldHouses", 1] call DB_fnc_asyncCall;
+["deleteOldGangs", 1] call DB_fnc_asyncCall;
_timeStamp = diag_tickTime;
diag_log "----------------------------------------------------------------------------------------------------";
@@ -80,8 +79,7 @@ diag_log "----------------------------------------------------------------------
if (LIFE_SETTINGS(getNumber,"save_civilian_position_restart") isEqualTo 1) then {
[] spawn {
- _query = "UPDATE players SET civ_alive = '0' WHERE civ_alive = '1'";
- [_query,1] call DB_fnc_asyncCall;
+ ["updateCivAlive", 1] call DB_fnc_asyncCall;
};
};
@@ -140,11 +138,9 @@ life_radio_indep = radioChannelCreate [[0, 0.95, 1, 0.8], "Side Channel", "%UNIT
/* Set the amount of gold in the federal reserve at mission start */
fed_bank setVariable ["safe",count playableUnits,true];
-[] spawn TON_fnc_federalUpdate;
/* Event handler for disconnecting players */
addMissionEventHandler ["HandleDisconnect",{_this call TON_fnc_clientDisconnect; false;}];
-[] call compile preprocessFileLineNumbers "\life_server\functions.sqf";
/* Set OwnerID players for Headless Client */
TON_fnc_requestClientID =
@@ -160,17 +156,6 @@ TON_fnc_requestClientID =
/* Miscellaneous mission-required stuff */
life_wanted_list = [];
-cleanupFSM = [] execFSM "\life_server\FSM\cleanup.fsm";
-
-[] spawn {
- for "_i" from 0 to 1 step 0 do {
- uiSleep (30 * 60);
- {
- _x setVariable ["sellers",[],true];
- } forEach [Dealer_1,Dealer_2,Dealer_3];
- };
-};
-
[] spawn TON_fnc_initHouses;
cleanup = [] spawn TON_fnc_cleanup;
@@ -183,10 +168,10 @@ publicVariable "TON_fnc_playtime_values_request";
/* Setup the federal reserve building(s) */
-private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
+private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call life_util_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
-private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
+private _pos = [[["Altis", _altisArray], ["Tanoa", _tanoaArray]]] call life_util_fnc_terrainSort;
_dome = nearestObject [_pos,"Land_Dome_Big_F"];
_rsb = nearestObject [_pos,_vaultHouse];
@@ -207,6 +192,7 @@ aiSpawn = ["hunting_zone",30] spawn TON_fnc_huntingZone;
server_corpses = [];
addMissionEventHandler ["EntityRespawned", {_this call TON_fnc_entityRespawned}];
+addMissionEventHandler ["EntityKilled", {_this call TON_fnc_entityKilled}];
diag_log "----------------------------------------------------------------------------------------------------";
diag_log format [" End of Altis Life Server Init :: Total Execution Time %1 seconds ",(diag_tickTime) - _timeStamp];
diff --git a/life_server/initHC.sqf b/life_server/initHC.sqf
index d8ae68700..733fd897c 100644
--- a/life_server/initHC.sqf
+++ b/life_server/initHC.sqf
@@ -15,7 +15,6 @@ HC_UID = nil;
HC_Life = owner hc_1;
publicVariable "HC_Life";
HC_Life publicVariableClient "serv_sv_use";
- cleanupFSM setFSMVariable ["stopfsm",true];
terminate cleanup;
terminate aiSpawn;
[true] call TON_fnc_transferOwnership;
@@ -24,7 +23,7 @@ HC_UID = nil;
};
};
-HC_DC = ["HC_Disconnected","onPlayerDisconnected",
+HC_DC = addMissionEventHandler ["PlayerDisconnected",
{
if (!isNil "HC_UID" && {_uid == HC_UID}) then {
life_HC_isActive = false;
@@ -32,12 +31,10 @@ HC_DC = ["HC_Disconnected","onPlayerDisconnected",
HC_Life = false;
publicVariable "HC_Life";
cleanup = [] spawn TON_fnc_cleanup;
- cleanupFSM = [] execFSM "\life_server\FSM\cleanup.fsm";
[false] call TON_fnc_transferOwnership;
aiSpawn = ["hunting_zone",30] spawn TON_fnc_huntingZone;
diag_log "Headless client disconnected! Broadcasted the vars!";
diag_log "Ready for receiving queries on the server machine.";
};
}
-] call BIS_fnc_addStackedEventHandler;
-
+];
diff --git a/tools/LICENSE b/tools/LICENSE
new file mode 100644
index 000000000..9ee63c844
--- /dev/null
+++ b/tools/LICENSE
@@ -0,0 +1,347 @@
+All work in this folder is licensed under the following license:
+
+
+============================================================================
+ Full GNU General Public License Text
+============================================================================
+
+
+GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/tools/config_style_checker.py b/tools/config_style_checker.py
new file mode 100644
index 000000000..1ffae07ae
--- /dev/null
+++ b/tools/config_style_checker.py
@@ -0,0 +1,161 @@
+#!/usr/bin/env python3
+
+#credits to ACE3: https://github.com/acemod/ACE3/blob/master/tools/sqf_validator.py
+
+import fnmatch
+import os
+import re
+import ntpath
+import sys
+import argparse
+
+def check_config_style(filepath):
+ bad_count_file = 0
+ def pushClosing(t):
+ closingStack.append(closing.expr)
+ closing << Literal( closingFor[t[0]] )
+
+ def popClosing():
+ closing << closingStack.pop()
+
+ with open(filepath, 'r', encoding='utf-8', errors='ignore') as file:
+ content = file.read()
+
+ # Store all brackets we find in this file, so we can validate everything on the end
+ brackets_list = []
+
+ # To check if we are in a comment block
+ isInCommentBlock = False
+ checkIfInComment = False
+ # Used in case we are in a line comment (//)
+ ignoreTillEndOfLine = False
+ # Used in case we are in a comment block (/* */). This is true if we detect a * inside a comment block.
+ # If the next character is a /, it means we end our comment block.
+ checkIfNextIsClosingBlock = False
+
+ # We ignore everything inside a string
+ isInString = False
+ # Used to store the starting type of a string, so we can match that to the end of a string
+ inStringType = '';
+
+ lastIsCurlyBrace = False
+ checkForSemiColumn = False
+
+ # Extra information so we know what line we find errors at
+ lineNumber = 1
+
+ indexOfCharacter = 0
+ # Parse all characters in the content of this file to search for potential errors
+ for c in content:
+ if (lastIsCurlyBrace):
+ lastIsCurlyBrace = False
+ if c == '\n': # Keeping track of our line numbers
+ lineNumber += 1 # so we can print accurate line number information when we detect a possible error
+ if (isInString): # while we are in a string, we can ignore everything else, except the end of the string
+ if (c == inStringType):
+ isInString = False
+ # if we are not in a comment block, we will check if we are at the start of one or count the () {} and []
+ elif (isInCommentBlock == False):
+
+ # This means we have encountered a /, so we are now checking if this is an inline comment or a comment block
+ if (checkIfInComment):
+ checkIfInComment = False
+ if c == '*': # if the next character after / is a *, we are at the start of a comment block
+ isInCommentBlock = True
+ elif (c == '/'): # Otherwise, will check if we are in an line comment
+ ignoreTillEndOfLine = True # and an line comment is a / followed by another / (//) We won't care about anything that comes after it
+
+ if (isInCommentBlock == False):
+ if (ignoreTillEndOfLine): # we are in a line comment, just continue going through the characters until we find an end of line
+ if (c == '\n'):
+ ignoreTillEndOfLine = False
+ else: # validate brackets
+ if (c == '"' or c == "'"):
+ isInString = True
+ inStringType = c
+ elif (c == '/'):
+ checkIfInComment = True
+ elif (c == '('):
+ brackets_list.append('(')
+ elif (c == ')'):
+ if (len(brackets_list) > 0 and brackets_list[-1] in ['{', '[']):
+ print("ERROR: Possible missing round bracket ')' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+ brackets_list.append(')')
+ elif (c == '['):
+ brackets_list.append('[')
+ elif (c == ']'):
+ if (len(brackets_list) > 0 and brackets_list[-1] in ['{', '(']):
+ print("ERROR: Possible missing square bracket ']' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+ brackets_list.append(']')
+ elif (c == '{'):
+ brackets_list.append('{')
+ elif (c == '}'):
+ lastIsCurlyBrace = True
+ if (len(brackets_list) > 0 and brackets_list[-1] in ['(', '[']):
+ print("ERROR: Possible missing curly brace '}}' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+ brackets_list.append('}')
+ elif (c== '\t'):
+ print("ERROR: Tab detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+
+ else: # Look for the end of our comment block
+ if (c == '*'):
+ checkIfNextIsClosingBlock = True;
+ elif (checkIfNextIsClosingBlock):
+ if (c == '/'):
+ isInCommentBlock = False
+ elif (c != '*'):
+ checkIfNextIsClosingBlock = False
+ indexOfCharacter += 1
+
+ if brackets_list.count('[') != brackets_list.count(']'):
+ print("ERROR: A possible missing square bracket [ or ] in file {0} [ = {1} ] = {2}".format(filepath,brackets_list.count('['),brackets_list.count(']')))
+ bad_count_file += 1
+ if brackets_list.count('(') != brackets_list.count(')'):
+ print("ERROR: A possible missing round bracket ( or ) in file {0} ( = {1} ) = {2}".format(filepath,brackets_list.count('('),brackets_list.count(')')))
+ bad_count_file += 1
+ if brackets_list.count('{') != brackets_list.count('}'):
+ print("ERROR: A possible missing curly brace {{ or }} in file {0} {{ = {1} }} = {2}".format(filepath,brackets_list.count('{'),brackets_list.count('}')))
+ bad_count_file += 1
+ return bad_count_file
+
+def main():
+
+ print("Validating Config Style")
+
+ sqf_list = []
+ bad_count = 0
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-m','--module', help='only search specified module addon folder', required=False, default="")
+ args = parser.parse_args()
+
+ # Allow running from root directory as well as from inside the tools directory
+ rootDir = "../Framework"
+ if (os.path.exists("Framework")):
+ rootDir = "Framework"
+
+ for root, dirnames, filenames in os.walk(rootDir + '/' + args.module):
+ if ".git" in root:
+ continue
+ for filename in fnmatch.filter(filenames, '*.cpp'):
+ sqf_list.append(os.path.join(root, filename))
+ for filename in fnmatch.filter(filenames, '*.hpp'):
+ sqf_list.append(os.path.join(root, filename))
+
+ for filename in sqf_list:
+ bad_count = bad_count + check_config_style(filename)
+
+ print("------\nChecked {0} files\nErrors detected: {1}".format(len(sqf_list), bad_count))
+ if (bad_count == 0):
+ print("Config validation PASSED")
+ else:
+ print("Config validation FAILED")
+
+ return bad_count
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/tools/sqf_validator.py b/tools/sqf_validator.py
new file mode 100644
index 000000000..6676df19b
--- /dev/null
+++ b/tools/sqf_validator.py
@@ -0,0 +1,194 @@
+#!/usr/bin/env python3
+
+#credits to ACE3: https://github.com/acemod/ACE3/blob/master/tools/sqf_validator.py
+
+import fnmatch
+import os
+import re
+import ntpath
+import sys
+import argparse
+
+def validKeyWordAfterCode(content, index):
+ keyWords = ["for", "do", "count", "each", "forEach", "else", "and", "not", "isEqualTo", "in", "call", "spawn", "execVM", "catch", "param", "select", "apply", "findIf", "remoteExec"];
+ for word in keyWords:
+ try:
+ subWord = content.index(word, index, index+len(word))
+ return True;
+ except:
+ pass
+ return False
+
+def check_sqf_syntax(filepath):
+ bad_count_file = 0
+ def pushClosing(t):
+ closingStack.append(closing.expr)
+ closing << Literal( closingFor[t[0]] )
+
+ def popClosing():
+ closing << closingStack.pop()
+
+ with open(filepath, 'r', encoding='utf-8', errors='ignore') as file:
+ content = file.read()
+
+ # Store all brackets we find in this file, so we can validate everything on the end
+ brackets_list = []
+
+ # To check if we are in a comment block
+ isInCommentBlock = False
+ checkIfInComment = False
+ # Used in case we are in a line comment (//)
+ ignoreTillEndOfLine = False
+ # Used in case we are in a comment block (/* */). This is true if we detect a * inside a comment block.
+ # If the next character is a /, it means we end our comment block.
+ checkIfNextIsClosingBlock = False
+
+ # We ignore everything inside a string
+ isInString = False
+ # Used to store the starting type of a string, so we can match that to the end of a string
+ inStringType = '';
+
+ lastIsCurlyBrace = False
+ checkForSemicolon = False
+ onlyWhitespace = True
+
+ # Extra information so we know what line we find errors at
+ lineNumber = 1
+
+ indexOfCharacter = 0
+ # Parse all characters in the content of this file to search for potential errors
+ for c in content:
+ if (lastIsCurlyBrace):
+ lastIsCurlyBrace = False
+ # Test generates false positives with binary commands that take CODE as 2nd arg (e.g. findIf)
+ checkForSemicolon = not re.search('findIf', content, re.IGNORECASE)
+
+ if c == '\n': # Keeping track of our line numbers
+ onlyWhitespace = True # reset so we can see if # is for a preprocessor command
+ lineNumber += 1 # so we can print accurate line number information when we detect a possible error
+ if (isInString): # while we are in a string, we can ignore everything else, except the end of the string
+ if (c == inStringType):
+ isInString = False
+ # if we are not in a comment block, we will check if we are at the start of one or count the () {} and []
+ elif (isInCommentBlock == False):
+
+ # This means we have encountered a /, so we are now checking if this is an inline comment or a comment block
+ if (checkIfInComment):
+ checkIfInComment = False
+ if c == '*': # if the next character after / is a *, we are at the start of a comment block
+ isInCommentBlock = True
+ elif (c == '/'): # Otherwise, will check if we are in an line comment
+ ignoreTillEndOfLine = True # and an line comment is a / followed by another / (//) We won't care about anything that comes after it
+
+ if (isInCommentBlock == False):
+ if (ignoreTillEndOfLine): # we are in a line comment, just continue going through the characters until we find an end of line
+ if (c == '\n'):
+ ignoreTillEndOfLine = False
+ else: # validate brackets
+ if (c == '"' or c == "'"):
+ isInString = True
+ inStringType = c
+ elif (c == '#' and onlyWhitespace):
+ ignoreTillEndOfLine = True
+ elif (c == '/'):
+ checkIfInComment = True
+ elif (c == '('):
+ brackets_list.append('(')
+ elif (c == ')'):
+ if (brackets_list[-1] in ['{', '[']):
+ print("ERROR: Possible missing round bracket ')' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+ brackets_list.append(')')
+ elif (c == '['):
+ brackets_list.append('[')
+ elif (c == ']'):
+ if (brackets_list[-1] in ['{', '(']):
+ print("ERROR: Possible missing square bracket ']' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+ brackets_list.append(']')
+ elif (c == '{'):
+ brackets_list.append('{')
+ elif (c == '}'):
+ lastIsCurlyBrace = True
+ if (brackets_list[-1] in ['(', '[']):
+ print("ERROR: Possible missing curly brace '}}' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+ brackets_list.append('}')
+ elif (c== '\t'):
+ print("ERROR: Tab detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+
+ if (c not in [' ', '\t', '\n']):
+ onlyWhitespace = False
+
+ if (checkForSemicolon):
+ if (c not in [' ', '\t', '\n', '/']): # keep reading until no white space or comments
+ checkForSemicolon = False
+ if (c not in [']', ')', '}', ';', ',', '&', '!', '|', '='] and not validKeyWordAfterCode(content, indexOfCharacter)): # , 'f', 'd', 'c', 'e', 'a', 'n', 'i']):
+ print("ERROR: Possible missing semicolon ';' detected at {0} Line number: {1}".format(filepath,lineNumber))
+ bad_count_file += 1
+
+ else: # Look for the end of our comment block
+ if (c == '*'):
+ checkIfNextIsClosingBlock = True;
+ elif (checkIfNextIsClosingBlock):
+ if (c == '/'):
+ isInCommentBlock = False
+ elif (c != '*'):
+ checkIfNextIsClosingBlock = False
+ indexOfCharacter += 1
+
+ if brackets_list.count('[') != brackets_list.count(']'):
+ print("ERROR: A possible missing square bracket [ or ] in file {0} [ = {1} ] = {2}".format(filepath,brackets_list.count('['),brackets_list.count(']')))
+ bad_count_file += 1
+ if brackets_list.count('(') != brackets_list.count(')'):
+ print("ERROR: A possible missing round bracket ( or ) in file {0} ( = {1} ) = {2}".format(filepath,brackets_list.count('('),brackets_list.count(')')))
+ bad_count_file += 1
+ if brackets_list.count('{') != brackets_list.count('}'):
+ print("ERROR: A possible missing curly brace {{ or }} in file {0} {{ = {1} }} = {2}".format(filepath,brackets_list.count('{'),brackets_list.count('}')))
+ bad_count_file += 1
+ pattern = re.compile('\s*(/\*[\s\S]+?\*/)\s*#include')
+ if pattern.match(content):
+ print("ERROR: A found #include after block comment in file {0}".format(filepath))
+ bad_count_file += 1
+
+
+
+ return bad_count_file
+
+def main():
+
+ print("Validating SQF")
+
+ sqf_list = []
+ bad_count = 0
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-m','--module', help='only search specified module addon folder', required=False, default="")
+ args = parser.parse_args()
+
+ # Allow running from root directory as well as from inside the tools directory
+ rootDir = "../Framework"
+ if (os.path.exists("Framework")):
+ rootDir = "Framework"
+
+ for root, dirnames, filenames in os.walk(rootDir + '/' + args.module):
+ if ".git" in root:
+ continue
+ for filename in fnmatch.filter(filenames, '*.sqf'):
+ sqf_list.append(os.path.join(root, filename))
+
+ for filename in sqf_list:
+ bad_count = bad_count + check_sqf_syntax(filename)
+
+
+ print("------\nChecked {0} files\nErrors detected: {1}".format(len(sqf_list), bad_count))
+ if (bad_count == 0):
+ print("SQF validation PASSED")
+ else:
+ print("SQF validation FAILED")
+
+ return bad_count
+
+if __name__ == "__main__":
+ sys.exit(main())