initial commit

This commit is contained in:
Benjamin Kyd
2019-06-05 00:45:50 +01:00
commit c8014ec81e
610 changed files with 177002 additions and 0 deletions

58
.gitignore vendored Normal file
View File

@@ -0,0 +1,58 @@
#
# NOTE! Don't add files that are generated in specific
# subdirectories here. Add them in the ".gitignore" file
# in that subdirectory instead.
#
# NOTE! Please use 'git ls-files -i --exclude-standard'
# command after changing this file, to see if there are
# any tracked files which get ignored after the change.
#
# Normal rules
#
.*
*~
*.zip
*.rar
*.bak
#
# Windows Files
#
*.dll
*.bat
*.exe
Thumbs.db
#
# Linux Files
#
*.so
*.sh
.fuse_hidden*
.Trash-*
#
# OSX Files
#
.DS_Store
.AppleDouble
.LSOverride
#
# Bohemia Packed Files
#
*.pbo
*.xbo
*.ebo
*.ifa
#
# IntelliJ IDEA Files
#
.idea/
*.iml
#
# git files that we don't want to ignore even it they are dot-files
#
!.gitignore

View File

@@ -0,0 +1,176 @@
#define F(NAME,TARGET) class NAME { \
allowedTargets = TARGET; \
};
#define ANYONE 0
#define CLIENT 1
#define SERVER 2
#define HC HC_Life
class CfgRemoteExec {
class Functions {
mode = 1;
jip = 0;
/* Client only functions */
F(life_fnc_AAN,CLIENT)
F(life_fnc_addVehicle2Chain,CLIENT)
F(life_fnc_adminID,CLIENT)
F(life_fnc_adminInfo,CLIENT)
F(life_fnc_bountyReceive,CLIENT)
F(life_fnc_copLights,CLIENT)
F(life_fnc_copSearch,CLIENT)
F(life_fnc_copSiren,CLIENT)
F(life_fnc_freezePlayer,CLIENT)
F(life_fnc_gangCreated,CLIENT)
F(life_fnc_gangDisbanded,CLIENT)
F(life_fnc_gangInvite,CLIENT)
F(life_fnc_garageRefund,CLIENT)
F(life_fnc_giveDiff,CLIENT)
F(life_fnc_hideObj,CLIENT)
F(life_fnc_impoundMenu,CLIENT)
F(life_fnc_jail,CLIENT)
F(life_fnc_jailMe,CLIENT)
F(life_fnc_knockedOut,CLIENT)
F(life_fnc_licenseCheck,CLIENT)
F(life_fnc_licensesRead,CLIENT)
F(life_fnc_lightHouse,CLIENT)
F(life_fnc_mediclights,CLIENT)
F(life_fnc_medicRequest,CLIENT)
F(life_fnc_medicSiren,CLIENT)
F(life_fnc_moveIn,CLIENT)
F(life_fnc_pickupItem,CLIENT)
F(life_fnc_pickupMoney,CLIENT)
F(life_fnc_receiveItem,CLIENT)
F(life_fnc_receiveMoney,CLIENT)
F(life_fnc_removeLicenses,CLIENT)
F(life_fnc_restrain,CLIENT)
F(life_fnc_revived,CLIENT)
F(life_fnc_robPerson,CLIENT)
F(life_fnc_robReceive,CLIENT)
F(life_fnc_searchClient,CLIENT)
F(life_fnc_seizeClient,CLIENT)
F(life_fnc_soundDevice,CLIENT)
F(life_fnc_spikeStripEffect,CLIENT)
F(life_fnc_tazeSound,CLIENT)
F(life_fnc_ticketPaid,CLIENT)
F(life_fnc_ticketPrompt,CLIENT)
F(life_fnc_vehicleAnimate,CLIENT)
F(life_fnc_wantedList,CLIENT)
F(life_fnc_wireTransfer,CLIENT)
F(SOCK_fnc_dataQuery,CLIENT)
F(SOCK_fnc_insertPlayerInfo,CLIENT)
F(SOCK_fnc_requestReceived,CLIENT)
F(SOCK_fnc_updateRequest,CLIENT)
F(TON_fnc_clientGangKick,CLIENT)
F(TON_fnc_clientGangLeader,CLIENT)
F(TON_fnc_clientGangLeft,CLIENT)
F(TON_fnc_clientGetKey,CLIENT)
F(TON_fnc_clientMessage,CLIENT)
F(TON_fnc_player_query,CLIENT)
/* Server only functions */
F(BIS_fnc_execVM,SERVER)
F(DB_fnc_insertRequest,SERVER)
F(DB_fnc_queryRequest,SERVER)
F(DB_fnc_updatePartial,SERVER)
F(DB_fnc_updateRequest,SERVER)
F(life_fnc_jailSys,SERVER)
F(life_fnc_wantedAdd,SERVER)
F(life_fnc_wantedBounty,SERVER)
F(life_fnc_wantedCrimes,SERVER)
F(life_fnc_wantedFetch,SERVER)
F(life_fnc_wantedProfUpdate,SERVER)
F(life_fnc_wantedRemove,SERVER)
F(SPY_fnc_cookieJar,SERVER)
F(SPY_fnc_observe,SERVER)
F(TON_fnc_addContainer,SERVER)
F(TON_fnc_addHouse,SERVER)
F(TON_fnc_chopShopSell,SERVER)
F(TON_fnc_cleanupRequest,SERVER)
F(TON_fnc_deleteDBContainer,SERVER)
F(TON_fnc_getID,SERVER)
F(TON_fnc_getVehicles,SERVER)
F(TON_fnc_insertGang,SERVER)
F(TON_fnc_keyManagement,SERVER)
F(TON_fnc_manageSC,SERVER)
F(TON_fnc_pickupAction,SERVER)
F(TON_fnc_removeGang,SERVER)
F(TON_fnc_sellHouse,SERVER)
F(TON_fnc_sellHouseContainer,SERVER)
F(TON_fnc_setObjVar,SERVER)
F(TON_fnc_spawnVehicle,SERVER)
F(TON_fnc_spikeStrip,SERVER)
F(TON_fnc_updateGang,SERVER)
F(TON_fnc_updateHouseContainers,SERVER)
F(TON_fnc_updateHouseTrunk,SERVER)
F(TON_fnc_vehicleCreate,SERVER)
F(TON_fnc_vehicleDelete,SERVER)
F(TON_fnc_vehicleStore,SERVER)
F(TON_fnc_vehicleUpdate,SERVER)
F(TON_fnc_handleBlastingCharge,SERVER)
F(TON_fnc_houseGarage,SERVER)
/* HeadlessClient only functions */
F(HC_fnc_addContainer,HC)
F(HC_fnc_addHouse,HC)
F(HC_fnc_chopShopSell,HC)
F(HC_fnc_deleteDBContainer,HC)
F(HC_fnc_getVehicles,HC)
F(HC_fnc_houseGarage,HC)
F(HC_fnc_insertGang,HC)
F(HC_fnc_insertRequest,HC)
F(HC_fnc_insertVehicle,HC)
F(HC_fnc_jailSys,HC)
F(HC_fnc_keyManagement,HC)
F(HC_fnc_queryRequest,HC)
F(HC_fnc_removeGang,HC)
F(HC_fnc_sellHouse,HC)
F(HC_fnc_sellHouseContainer,HC)
F(HC_fnc_spawnVehicle,HC)
F(HC_fnc_spikeStrip,HC)
F(HC_fnc_updateGang,HC)
F(HC_fnc_updateHouseContainers,HC)
F(HC_fnc_updateHouseTrunk,HC)
F(HC_fnc_updatePartial,HC)
F(HC_fnc_updateRequest,HC)
F(HC_fnc_vehicleCreate,HC)
F(HC_fnc_vehicleDelete,HC)
F(HC_fnc_vehicleStore,HC)
F(HC_fnc_vehicleUpdate,HC)
F(HC_fnc_wantedAdd,HC)
F(HC_fnc_wantedBounty,HC)
F(HC_fnc_wantedCrimes,HC)
F(HC_fnc_wantedFetch,HC)
F(HC_fnc_wantedProfUpdate,HC)
F(HC_fnc_wantedRemove,HC)
/* Functions for everyone */
F(BIS_fnc_effectKilledAirDestruction,ANYONE)
F(BIS_fnc_effectKilledSecondaries,ANYONE)
F(life_fnc_animSync,ANYONE)
F(life_fnc_broadcast,ANYONE)
F(life_fnc_colorVehicle,ANYONE)
F(life_fnc_corpse,ANYONE)
F(life_fnc_demoChargeTimer,ANYONE)
F(life_fnc_flashbang,ANYONE)
F(life_fnc_jumpFnc,ANYONE)
F(life_fnc_lockVehicle,ANYONE)
F(life_fnc_pulloutVeh,ANYONE)
F(life_fnc_say3D,ANYONE)
F(life_fnc_setFuel,ANYONE)
F(life_fnc_simDisable,ANYONE)
F(SPY_fnc_notifyAdmins,ANYONE)
};
class Commands {
mode = 1;
jip = 0;
F(addHandgunItem,ANYONE)
F(addMagazine,ANYONE)
F(addPrimaryWeaponItem,ANYONE)
F(addWeapon,ANYONE)
F(setFuel,ANYONE)
};
};

View File

@@ -0,0 +1,375 @@
class Socket_Reciever {
tag = "SOCK";
class SQL_Socket {
file = "core\session";
class dataQuery {};
class insertPlayerInfo {};
class requestReceived {};
class syncData {};
class updatePartial {};
class updateRequest {};
};
};
class SpyGlass {
tag = "SPY";
class Functions {
file = "SpyGlass";
class cookieJar{};
class notifyAdmins{};
class observe{};
};
};
class Life_Client_Core {
tag = "life";
class Master_Directory {
file = "core";
class initCiv {};
class initCop {};
class initMedic {};
class setupActions {};
class setupEVH {};
class survival {};
class welcomeNotification {};
};
class Actions {
file = "core\actions";
class arrestAction {};
class buyLicense {};
class captureHideout {};
class catchFish {};
class dpFinish {};
class dropFishingNet {};
class escortAction {};
class gather {};
class getDPMission {};
class gutAnimal {};
class healHospital {};
class impoundAction {};
class mine {};
class newsBroadcast {};
class packupSpikes {};
class pickupItem {};
class pickupMoney {};
class postBail {};
class processAction {};
class pulloutAction {};
class putInCar {};
class removeContainer {};
class repairTruck {};
class restrainAction {};
class robAction {};
class searchAction {};
class searchVehAction {};
class seizePlayerAction {};
class serviceChopper {};
class stopEscorting {};
class storeVehicle {};
class surrender {};
class ticketAction {};
class unrestrain {};
};
class Admin {
file = "core\admin";
class adminCompensate {};
class adminDebugCon {};
class adminFreeze {};
class admingetID {};
class adminGodMode {};
class adminid {};
class admininfo {};
class adminMarkers {};
class adminMenu {};
class adminQuery {};
class adminSpectate {};
class adminTeleport {};
class adminTpHere {};
};
class Civilian {
file = "core\civilian";
class civLoadout {};
class civMarkers {};
class demoChargeTimer {};
class freezePlayer {};
class jail {};
class jailMe {};
class knockedOut {};
class knockoutAction {};
class removeLicenses {};
class robPerson {};
class robReceive {};
class tazed {};
};
class Config {
file = "core\config";
class houseConfig {};
class itemWeight {};
class vehicleAnimate {};
class vehicleWeightCfg {};
};
class Cop {
file = "core\cop";
class bountyReceive {};
class containerInvSearch {};
class copInteractionMenu {};
class copLights {};
class copLoadout {};
class copMarkers {};
class copSearch {};
class copSiren {};
class doorAnimate {};
class fedCamDisplay {};
class licenseCheck {};
class licensesRead {};
class questionDealer {};
class radar {};
class repairDoor {};
class restrain {};
class searchClient {};
class seizeClient {};
class sirenLights {};
class spikeStripEffect {};
class ticketGive {};
class ticketPaid {};
class ticketPay {};
class ticketPrompt {};
class vehInvSearch {};
class wantedGrab {};
};
class Dialog_Controls {
file = "dialog\function";
class bankDeposit {};
class bankTransfer {};
class bankWithdraw {};
class displayHandler {};
class gangDeposit {};
class gangWithdraw {};
class garageLBChange {};
class impoundMenu {};
class progressBar {};
class safeFix {};
class safeInventory {};
class safeOpen {};
class safeTake {};
class sellGarage {};
class setMapPosition {};
class spawnConfirm {};
class spawnMenu {};
class spawnPointCfg {};
class spawnPointSelected {};
class unimpound {};
class vehicleGarage {};
class wireTransfer {};
};
class Functions {
file = "core\functions";
class AAN {};
class accType {};
class actionKeyHandler {};
class animSync {};
class calWeightDiff {};
class clearVehicleAmmo {};
class dropItems {};
class escInterupt {};
class fetchCfgDetails {};
class fetchDeadGear {};
class fetchVehInfo {};
class isDamaged {};
class giveDiff {};
class handleDamage {};
class handleInv {};
class handleItem {};
class hideObj {};
class hudSetup {};
class hudUpdate {};
class inventoryClosed {};
class inventoryOpened {};
class isUIDActive {};
class keyHandler {};
class loadDeadGear {};
class loadGear {};
class nearATM {};
class nearestDoor {};
class nearUnits {};
class numberText {};
class onFired {};
class onTakeItem {};
class playerSkins {};
class playerTags {};
class postNewsBroadcast {};
class pullOutVeh {};
class pushObject {};
class receiveItem {};
class receiveMoney {};
class revealObjects {};
class saveGear {};
class searchPosEmpty {};
class simDisable {};
class stripDownPlayer {};
class tazeSound {};
class teleport {};
class whereAmI {};
};
class Gangs {
file = "core\gangs";
class createGang {};
class gangCreated {};
class gangDisband {};
class gangDisbanded {};
class gangInvite {};
class gangInvitePlayer {};
class gangKick {};
class gangLeave {};
class gangMenu {};
class gangNewLeader {};
class gangUpgrade {};
class initGang {};
};
class Housing {
file = "core\housing";
class buyHouse {};
class buyHouseGarage {};
class containerMenu {};
class copBreakDoor {};
class copHouseOwner {};
class garageRefund {};
class getBuildingPositions {};
class houseMenu {};
class initHouses {};
class lightHouse {};
class lightHouseAction {};
class lockHouse {};
class lockupHouse {};
class placeContainer {};
class PlayerInBuilding {};
class raidHouse {};
class sellHouse {};
class sellHouseGarage {};
};
class Items {
file = "core\items";
class blastingCharge {};
class boltcutter {};
class defuseKit {};
class flashbang {};
class jerrycanRefuel {};
class jerryRefuel {};
class lockpick {};
class placestorage {};
class spikeStrip {};
class storageBox {};
};
class Medical_System {
file = "core\medical";
class deathScreen {};
class medicLights {};
class medicLoadout {};
class medicMarkers {};
class medicRequest {};
class medicSiren {};
class medicSirenLights {};
class onPlayerKilled {};
class onPlayerRespawn {};
class requestMedic {};
class respawned {};
class revived {};
class revivePlayer {};
};
class Network {
file = "core\functions\network";
class broadcast {};
class corpse {};
class jumpFnc {};
class say3D {};
class setFuel {};
class soundDevice {};
};
class Player_Menu {
file = "core\pmenu";
class cellphone {};
class giveItem {};
class giveMoney {};
class keyDrop {};
class keyGive {};
class keyMenu {};
class p_openMenu {};
class p_updateMenu {};
class pardon {};
class removeItem {};
class s_onChar {};
class s_onCheckedChange {};
class s_onSliderChange {};
class settingsMenu {};
class updateViewDistance {};
class useItem {};
class wantedAddP {};
class wantedInfo {};
class wantedList {};
class wantedMenu {};
};
class Shops {
file = "core\shops";
class atmMenu {};
class buyClothes {};
class changeClothes {};
class chopShopMenu {};
class chopShopSelection {};
class chopShopSell {};
class clothingFilter {};
class clothingMenu {};
class fuelLBchange {};
class fuelStatOpen {};
class levelCheck {};
class vehicleShop3DPreview {};
class vehicleShopBuy {};
class vehicleShopEnd3DPreview {};
class vehicleShopInit3DPreview {};
class vehicleShopLBChange {};
class vehicleShopMenu {};
class virt_buy {};
class virt_menu {};
class virt_sell {};
class virt_update {};
class weaponShopAccs {};
class weaponShopBuySell {};
class weaponShopFilter {};
class weaponShopMags {};
class weaponShopMenu {};
class weaponShopSelection {};
};
class Vehicle {
file = "core\vehicle";
class addVehicle2Chain {};
class colorVehicle {};
class deviceMine {};
class FuelRefuelcar {};
class fuelStore {};
class fuelSupply {};
class lockVehicle {};
class openInventory {};
class vehiclecolor3DRefresh {};
class vehicleOwners {};
class vehicleWeight {};
class vehInventory {};
class vehStoreItem {};
class vehTakeItem {};
class vInteractionMenu {};
};
};

View File

@@ -0,0 +1,355 @@
// =========================================================================================================
//
// String Functions Library
// Version: 2.2.1
// File: KRON_Strings.sqf
// Author: Kronzky
//
// =========================================================================================================
//
// Usage:
//
// <20> KRON_StrToArray - Converts a string into an array of characters:
// _array=[_str] call KRON_StrToArray
//
// <20> KRON_StrLen - Returns the length of the string
// _len=[_str] call KRON_StrLen
//
// <20> KRON_StrLeft - Returns l characters from the left side of the string
// _left=[_str,l] call KRON_StrLeft
//
// <20> KRON_StrRight - Returns l characters from the right side of the string
// _right=[_str,l] call KRON_StrRight
//
// <20> KRON_StrMid - Returns l characters from the string, starting at position p (zero-based)
// If l is not defined, the rest of the string is returned
// _mid=[_str,p,(l)] call KRON_StrMid
//
// <20> KRON_StrInStr - Tests whether string b is present in string a
// _found=[a,b] call KRON_StrInStr
//
// <20> KRON_StrIndex - Returns the position of string b in string a
// _index=[a,b] call KRON_StrIndex
//
// <20> KRON_StrUpper - Converts a string to uppercase characters
// _upper=[_str] call KRON_StrUpper
//
// <20> KRON_StrLower - Converts a string to lowercase characters
// _lower=[_str] call KRON_StrLower
//
// <20> KRON_Replace - Replaces every occurrence of string _old in string _str with string _new
// _index=[_str,_old,_new] call KRON_Replace
//
// <20> KRON_FindFlag - Checks a mixed array (_this) for the presence of a string (_str)
// _flg=[_this,_str] call KRON_FindFlag
//
// <20> KRON_getArg - Searches a mixed array (_this) for a matching string beginning with (_t), and returns the part after a separator (s)
// A default value can be defined as (_d).
// _arg=[_this,_t,(_d)] call KRON_getArg
//
// <20> KRON_getArgRev - Works like getArg, but search for the part *after* the colon, and return the part in front of it
// A default value can be defined as (_d).
// _arg=[_this,_t,(_d)] call KRON_getArgRev
//
// <20> KRON_Compare - Compares two elements and returns -1 if first is smaller, 1 if second is smaller, and 0 if equal
// If optional parameter "case" is given, capitalization is considered (upper before lowercase)
// _cmp=[_str1,_str2,("case")] call KRON_Compare
//
// <20> KRON_ArraySort - Sorts an array of strings in acsending order (Numbers before letters, uppercase before lowercase)
// If array is multi-dimensional, optional parameter (_idx) specifies which column is used for sorting
// If optional parameter "desc" is given, order is reversed
// If optional parameter "case" is given, capitalization is considered (upper before lowercase)
// _srt=[_arr,(_idx),("desc"),("case")] call KRON_ArraySort
//
// =========================================================================================================
KRON_StrToArray = {
private ["_in","_i","_arr","_out"];
_in=_this select 0;
_arr = toArray(_in);
_out=[];
for "_i" from 0 to (count _arr)-1 do {
_out=_out+[toString([_arr select _i])];
};
_out
};
KRON_StrLeft = {
private ["_in","_len","_arr","_out"];
_in=_this select 0;
_len=(_this select 1)-1;
_arr=[_in] call KRON_StrToArray;
_out="";
if (_len>=(count _arr)) then {
_out=_in;
} else {
for "_i" from 0 to _len do {
_out=_out + (_arr select _i);
};
};
_out
};
KRON_StrLen = {
private ["_in","_arr","_len"];
_in=_this select 0;
_arr=[_in] call KRON_StrToArray;
_len=count (_arr);
_len
};
KRON_StrRight = {
private ["_in","_len","_arr","_i","_out"];
_in=_this select 0;
_len=_this select 1;
_arr=[_in] call KRON_StrToArray;
_out="";
if (_len>(count _arr)) then {_len=count _arr};
for "_i" from ((count _arr)-_len) to ((count _arr)-1) do {
_out=_out + (_arr select _i);
};
_out
};
KRON_StrMid = {
private ["_in","_pos","_len","_arr","_i","_out"];
_in=_this select 0;
_pos=abs(_this select 1);
_arr=[_in] call KRON_StrToArray;
_len=count(_arr);
if ((count _this)>2) then {_len=(_this select 2)};
_out="";
if ((_pos+_len)>=(count _arr)) then {_len=(count _arr)-_pos};
if (_len>0) then {
for "_i" from _pos to (_pos+_len-1) do {
_out=_out + (_arr select _i);
};
};
_out
};
KRON_StrIndex = {
private ["_hay","_ndl","_lh","_ln","_arr","_tmp","_i","_j","_out"];
_hay=_this select 0;
_ndl=_this select 1;
_out=-1;
_i=0;
if (_hay == _ndl) exitWith {0};
_lh=[_hay] call KRON_StrLen;
_ln=[_ndl] call KRON_StrLen;
if (_lh < _ln) exitWith {-1};
_arr=[_hay] call KRON_StrToArray;
for "_i" from 0 to (_lh-_ln) do {
_tmp="";
for "_j" from _i to (_i+_ln-1) do {
_tmp=_tmp + (_arr select _j);
};
if (_tmp==_ndl) exitWith {_out=_i};
};
_out
};
KRON_StrInStr = {
private ["_out"];
_in=_this select 0;
_out=if (([_this select 0,_this select 1] call KRON_StrIndex)==-1) then {false} else {true};
_out
};
KRON_Replace = {
private ["_str","_old","_new","_out","_tmp","_jm","_la","_lo","_ln","_i"];
_str=_this select 0;
_arr=toArray(_str);
_la=count _arr;
_old=_this select 1;
_new=_this select 2;
_na=[_new] call KRON_StrToArray;
_lo=[_old] call KRON_StrLen;
_ln=[_new] call KRON_StrLen;
_out="";
for "_i" from 0 to (count _arr)-1 do {
_tmp="";
if (_i <= _la-_lo) then {
for "_j" from _i to (_i+_lo-1) do {
_tmp=_tmp + toString([_arr select _j]);
};
};
if (_tmp==_old) then {
_out=_out+_new;
_i=_i+_lo-1;
} else {
_out=_out+toString([_arr select _i]);
};
};
_out
};
KRON_StrUpper = {
private ["_in","_out"];
_in=_this select 0;
_out=toUpper(_in);
_out
};
KRON_StrLower = {
private ["_in","_out"];
_in=_this select 0;
_out=toLower(_in);
_out
};
KRON_ArrayToUpper = {
private ["_in","_i","_e","_out"];
_in=_this select 0;
_out=[];
if ((count _in)>0) then {
for "_i" from 0 to (count _in)-1 do {
_e=_in select _i;
if (_e isEqualType "") then {
_e=toUpper(_e);
};
_out set [_i,_e];
};
};
_out
};
KRON_Compare = {
private ["_k","_n","_s","_i","_c","_t","_s1","_s2","_l1","_l2","_l"];
_k=[_this,"CASE"] call KRON_findFlag;
_n=0;
_s=0;
for "_i" from 0 to 1 do {
_t=_this select _i;
switch (typeName _t) do {
case "SCALAR": {_n=1};
case "BOOL": {_this set [_i,str(_t)]};
case "SIDE": {_this set [_i,str(_t)]};
case "STRING": {if !(_k) then {_this=[_this] call KRON_ArrayToUpper}};
default {_n=-1};
};
};
_s1 = _this select 0;
_s2 = _this select 1;
if (_n!=0) exitWith {
if (_n==1) then {
if (_s1<_s2) then {_s=-1} else {if (_s1>_s2) then {_s=1}};
};
_s
};
_s1 = toArray(_s1);
_s2 = toArray(_s2);
_l1 = count _s1;
_l2 = count _s2;
_l=if (_l1<_l2) then {_l1} else {_l2};
for "_i" from 0 to _l-1 do {
if ((_s1 select _i)<(_s2 select _i)) then {
_s=-1;
_i=_l;
} else {
if ((_s1 select _i)>(_s2 select _i)) then {
_s=1;
_i=_l;
};
};
};
if (_s==0) then {
if (_l1<_l2) then {
_s=-1;
} else {
if (_l1>_l2) then {_s=1};
};
};
_s
};
KRON_ArraySort = {
private ["_a","_d","_k","_s","_i","_vo","_v1","_v2","_j","_c","_x"];
_a = +(_this select 0);
_d = if ([_this,"DESC"] call KRON_findFlag) then {-1} else {1};
_k = if ([_this,"CASE"] call KRON_findFlag) then {"CASE"} else {"nocase"};
_s = -1;
if ((_a select 0) isEqualType []) then {
_s=0;
if (((count _this)>1) && ((_this select 1) isEqualType 0)) then {
_s=_this select 1;
};
};
for "_i" from 0 to (count _a)-1 do {
_vo = _a select _i;
_v1 = _vo;
if (_s>-1) then {_v1=_v1 select _s};
_j = 0;
for [{_j=_i-1},{_j>=0},{_j=_j-1}] do {
_v2 = _a select _j;
if (_s>-1) then {_v2=_v2 select _s};
_c=[_v2,_v1,_k] call KRON_Compare;
if (_c!=_d) exitWith {};
_a set [_j+1,_a select _j];
};
_a set [_j+1,_vo];
};
_a
};
KRON_findFlag = {
private ["_in","_flg","_arr","_out"];
_in=_this select 0;
_flg=toUpper(_this select 1);
_arr=[_in] call KRON_ArrayToUpper;
_out=_flg in _arr;
_out
};
KRON_getArg = {
private ["_in","_flg","_fl","_def","_arr","_i","_j","_as","_aa","_org","_p","_out"];
_in=_this select 0;
_flg=toUpper(_this select 1);
_fl=[_flg] call KRON_StrLen;
_out="";
if ((count _this)>2) then {_out=_this select 2};
_arr=[_in] call KRON_ArrayToUpper;
if ((count _arr)>0) then {
for "_i" from 0 to (count _in)-1 do {
_as = _arr select _i;
if (_as isEqualType "") then {
_aa = [_as] call KRON_StrToArray;
_p = _aa find ":";
if (_p==_fl) then {
if (([_as,_fl] call KRON_StrLeft)==_flg) then {
_org = _in select _i;
_out=[_org,_p+1] call KRON_StrMid;
};
};
};
};
};
_out
};
KRON_getArgRev = {
private ["_in","_flg","_fl","_def","_arr","_i","_j","_as","_aa","_org","_p","_out"];
_in=_this select 0;
_flg=toUpper(_this select 1);
_fl=[_flg] call KRON_StrLen;
_out="";
if ((count _this)>2) then {_out=_this select 2};
_arr=[_in] call KRON_ArrayToUpper;
if ((count _arr)>0) then {
for "_i" from 0 to (count _in)-1 do {
_as = _arr select _i;
if (_as isEqualType "") then {
_aa = [_as] call KRON_StrToArray;
_p = _aa find ":";
if (_p+1==(count _aa)-_fl) then {
if (([_as,_p+1] call KRON_StrMid)==_flg) then {
_org = _in select _i;
_out=[_org,_p] call KRON_StrLeft;
};
};
};
};
};
_out
};

View File

@@ -0,0 +1,46 @@
SpyGlass
================
<b>SpyGlass is an anti-cheat system for [Altis Life RPG](https://github.com/AsYetUntitled/Framework)</b>.</br></br>
<b>Any modification</b> to the Altis Life RPG mission files will require changes to [Config_SpyGlass](https://github.com/AsYetUntitled/Framework/blob/master/Altis_Life.Altis/config/Config_SpyGlass.hpp). SpyGlass can be disabled in Altis_Life.Altis/config/Config_Master.hpp → `spyGlass_toggle`. This is **not** recommended.
<b>Notes</b>
If SpyGlass is kicking on join then make sure that all functions that you have changed in the mission have been whitelisted. Check your *Arma 3* [client RPT](https://community.bistudio.com/wiki/Crash_Files) log file to find message outputs as to why you are being kicked.
Example:
```
"Variable: reb_1_4 is not allowed TYPE: OBJECT NS: MN"
"Variable: ggs_shop is not allowed TYPE: OBJECT NS: MN"
"Variable: reb_helicopter_1 is not allowed TYPE: OBJECT NS: MN"
// Variable: VARIABLENAME is not allowed TYPE: (STRING, CODE, OBJECT, DISPLAY, SCALAR, BOOL)
```
If you encounter errors regarding variables then whitelist them via Config_SpyGlass under `allowedVariables`.
```cpp
allowedVariables[] = { { "reb_1_4", "OBJECT" }, { "ggs_shop", "OBJECT" },{ "reb_helicopter_1", "OBJECT" }};
```
If there are Bohemia Interactive [functions](https://community.bistudio.com/wiki/Functions) - `bis_fnc_` - then add them to:
```cpp
BIS_Functions[] = {"",""};
```
... and so on.
If *Arma 3* has updated then it may be possible that the developers have included new files into the game.
If this is the case then launch *Arma 3* and go to the editor (you do not need to load a mission.)
Open the debug console and paste in the following code, then locally execute:
```sqf
_cfgPatches = []; _binConfigPatches = configFile >> "CfgPatches"; for "_i" from 0 to count (_binConfigPatches)-1 do { _patchEntry = _binConfigPatches select _i; if (isClass _patchEntry) then { _cfgPatches set [count _cfgPatches,(configName _patchEntry)]; }; }; copyToClipboard str(_cfgPatches);
```
1. Paste the results into a source code editor such as [Notepad++](https://notepad-plus-plus.org/) or [Atom](https://atom.io/).
2. Open SpyGlass/[fn_initSpy.sqf](https://github.com/AsYetUntitled/Framework/blob/master/Altis_Life.Altis/SpyGlass/fn_initSpy.sqf) and find `_patchList =`
3. Edit the result that you got from executing the code to include this at the start: `["life_server",`
4. Paste in your results and follow the existing structure.
This should fix any issues with SpyGlass. If you continue to experience issues then please see [contact on Contributing to AsYetUntitled](https://github.com/AsYetUntitled/Framework/blob/master/.github/CONTRIBUTING.md#contact).

View File

@@ -0,0 +1,8 @@
/*
File: endoftheline.sqf
Author:
Description:
*/
#include "Hi, it appears that your client crashed. Do not worry we will get back with you in six years."

View File

@@ -0,0 +1,28 @@
#include "..\script_macros.hpp"
/*
File: fn_cmdMenucheck.sqf
Author: Bryan "Tonic" Boardwine
Description:
Checks to see which commandingMenu is currently active,
if a non white-listed menu is active it will close it and report it
to the server and active admins.
*/
private ["_validMenus","_lastMenu"];
_validMenus = [
"RscMainMenu","RscMoveHigh","#WATCH","#WATCH0","RscWatchDir","RscWatchMoveDir","#GETIN","#RscStatus","RscCallSupport","#ACTION",
"RscCombatMode","RscFormations","RscTeam","RscSelectTeam","RscReply","#User:BIS_Menu_GroupCommunication","#CUSTOM_RADIO",
"RscRadio","RscGroupRootMenu","RscMenuReply","RscMenuStatus","","#User:BIS_fnc_addCommMenuItem_menu","RscMenuMove","RscMenuFormations"
];
_lastMenu = "";
for "_i" from 0 to 1 step 0 do {
waitUntil {commandingMenu != _lastMenu};
_lastMenu = commandingMenu;
if (!(commandingMenu in _validMenus)) then {
[profileName,getPlayerUID player,_lastMenu] remoteExecCall ["SPY_fnc_observe",RSERV];
[[0,1],format ["%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.",profileName,_lastMenu]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
showCommandingMenu "";
};
};

View File

@@ -0,0 +1,16 @@
/*
File: fn_cookieJar.sqf
Author: Bryan "Tonic" Boardwine
Description:
Reports to the RPT of a confirmed cheater for external programs
to parse,log or ban automatically.
*/
private ["_pName","_pUID","_pReason"];
_pName = [_this,0,"",[""]] call BIS_fnc_param;
_pUID = [_this,1,"",[""]] call BIS_fnc_param;
_pReason = [_this,2,"",[""]] call BIS_fnc_param;
if (_pName isEqualTo "" || _pUID isEqualTo "" || _pReason isEqualTo "") exitWith {}; //Bad params passed..
diag_log format ["SPYGLASS-FLAG: %1 : %2 : %3",_pName,_pUID,_pReason]; //Outputs to RPT for external programs to parse,log,react to.

View File

@@ -0,0 +1,293 @@
#include "..\script_macros.hpp"
/*
File: fn_initSpy.sqf
Author:
Description:
Does some things that I made over-complicated / un-needed but blah.
Will eventually include server-side checks but it's blah at this point.
Will also become a standalone system which is why it's setup like this.
*/
private ["_binConfigPatches","_cfgPatches","_endM"];
if (isServer && !hasInterface) exitWith {}; //Server doesn't need to know.
#define CONST(var1,var2) var1 = compileFinal (if (var2 isEqualType "") then {var2} else {str(var2)})
#define RCLIENT -2
CONST(W_O_O_K_I_E_ANTI_ANTI_HAX,"false");
CONST(W_O_O_K_I_E_FUD_ANTI_ANTI_HAX,"false");
CONST(E_X_T_A_S_Y_ANTI_ANTI_HAX,"false");
CONST(E_X_T_A_S_Y_Pro_RE,"false");
CONST(E_X_T_A_S_Y_Car_RE,"false");
CONST(DO_NUKE,"false");
CONST(JxMxE_spunkveh,"false");
CONST(JxMxE_spunkveh2,"false");
CONST(JxMxE_spunkair,"false");
CONST(JJJJ_MMMM___EEEEEEE_LLYYSSTTIICCC_SHIT_RE,"false");
CONST(JJJJ_MMMM___EEEEEEE_LLYYSSTTIICCC_SHIT_RE_OLD,"false");
CONST(JJJJ_MMMM___EEEEEEE_SPAWN_VEH,"false");
CONST(JJJJ_MMMM___EEEEEEE_SPAWN_WEAPON,"false");
/*
Compile our list of allowed addon patches, by default this DOES NOT ALLOW ANY ADDONS.
If you want to white-list addons such as JSRS or Blastcore you need to start a test instance (Host locally and not the mission) and first fill the SPY_cfg_patchList array, once you executed it (Filled it)
Run the following code and it will copy the list of addons / patches not in the list to your clipboard (Ctrl + V) and then add it to the array.
_cfgPatches = [];
_binConfigPatches = configFile >> "CfgPatches";
for "_i" from 0 to count (_binConfigPatches)-1 do {
_patchEntry = _binConfigPatches select _i;
if (isClass _patchEntry) then {
if (!((configName _patchEntry) in SPY_cfg_patchList)) then {
_cfgPatches set[count _cfgPatches,(configName _patchEntry)];
};
};
};
copyToClipboard str(_cfgPatches);
i.e
["cba_xeh","Extended_EventHandlers","CBA_Extended_EventHandlers","JSRS_Environment","WarFXPE","cba_common","cba_events","cba_hashes","cba_network","cba_strings","cba_ui","cba_vectors","JSRS2_120mm_Cannon","JSRS2_127","JSRS2_155mm_AMOS",
"JSRS2_230mm_Titan","JSRS2_30mm_Cannon","JSRS2_35mm_Autocannon","JSRS2_4Five45","JSRS2_ACPC","JSRS2_Autocannon","JSRS2_Bullethits","JSRS2_DAGR","JSRS2_DAR","JSRS2_EBR","JSRS2_Explosions","JSRS2_Explosives","JSRS2_Filters","JSRS2_FS2000",
"JSRS2_Gatling","JSRS2_GMG20","JSRS2_GMG40","JSRS2_Khaybar","JSRS2_LMGRCWS","JSRS2_M134","JSRS2_M200","JSRS2_M320R","JSRS2_M6","JSRS2_Minigun","JSRS2_MX","JSRS2_NLAW","JSRS2_P07","JSRS2_PDW","JSRS2_Rahim","JSRS2_Rook40","JSRS2_RPG32",
"JSRS2_Scorpian","JSRS2_SDAR","JSRS2_Skalpel_ATGM","JSRS2_Skyfire","JSRS2_Sonic_Cracks","JSRS2_Titan","JSRS2_TRG20","JSRS2_Vector","JSRS2_Veh_Titan","JSRS2_Zafir","JSRS2_Zubr45","Blastcore_VEP","cba_ai","cba_arrays","cba_diagnostic","cba_help",
"cba_ui_helper","cba_versioning","JSRS2_Movement","JSRS2_Silencers","cba_main","cba_main_a3","JSRS2_2S9_Sorcher","JSRS2_AFV4_Gorgon","JSRS2_AH99_Blackfoot","JSRS2_AH9_Pawnee","JSRS2_AMV7_Marshal","JSRS2_BTRK_Kamysh","JSRS2_CH49_Mohawk","JSRS2_Distance",
"JSRS2_FighterPlane3","JSRS2_FV720_Mora","JSRS2_Hunter","JSRS2_Ifrit","JSRS2_IFV6a_Cheetah","JSRS2_IFV6c_Panther","JSRS2_M2A1_Slammer","JSRS2_M4_Scorcher","JSRS2_M5_Sandstorm","JSRS2_MBT52_Kuma","JSRS2_Mi48_Kajman","JSRS2_MSE3_Marid","JSRS2_Offroad",
"JSRS2_Po30_Orca","JSRS2_Strider","JSRS2_SUV","JSRS2_T100_Varsuk","JSRS2_Truck1","JSRS2_Truck2","JSRS2_UAV_1","JSRS2_UH80_GhostHawk","JSRS2_Van","JSRS2_WY55_Hellcat","JSRS2_ZSU39_Tigris","cba_xeh_a3"]
*/
_patchList =
["life_server","Core","A3Data","A3_Functions_F","A3_Functions_F_EPA","A3_Functions_F_EPC","A3_Data_F","A3_Data_F_Hook","A3_Data_F_ParticleEffects","A3_Dubbing_F","A3_Dubbing_F_Beta","A3_Dubbing_F_Gamma","A3_Dubbing_Radio_F",
"A3_Dubbing_Radio_F_Data_ENG","A3_Dubbing_Radio_F_Data_ENGB","A3_Dubbing_Radio_F_Data_GRE","A3_Dubbing_Radio_F_Data_PER","A3_Dubbing_Radio_F_Data_VR","A3_Editor_F","A3_EditorPreviews_F","A3_Functions_F_Curator","A3_Language_F",
"A3_Language_F_Beta","A3_Language_F_Gamma","A3_LanguageMissions_F","A3_LanguageMissions_F_Beta","A3_LanguageMissions_F_Gamma","A3_Misc_F","A3_Misc_F_Helpers","A3_Modules_F","A3_Modules_F_Data","A3_Modules_F_DynO",
"A3_Modules_F_Effects","A3_Modules_F_Events","A3_Modules_F_GroupModifiers","A3_Modules_F_Hc","A3_Modules_F_Intel","A3_Modules_F_LiveFeed","A3_Modules_F_Marta","A3_Modules_F_Misc","A3_Modules_F_Multiplayer",
"A3_Modules_F_ObjectModifiers","A3_Modules_F_Sites","A3_Modules_F_Skirmish","A3_Modules_F_StrategicMap","A3_Modules_F_Supports","A3_Modules_F_Uav","A3_Modules_F_Beta","A3_Modules_F_Beta_Data","A3_Modules_F_Beta_FiringDrills",
"A3_Modules_F_EPB","A3_Modules_F_EPB_Misc","A3_Music_F","A3_Music_F_Music","A3_Music_F_EPA","A3_Music_F_EPA_Music","A3_Music_F_EPB","A3_Music_F_EPB_Music","A3_Music_F_EPC","A3_Music_F_EPC_Music","A3_Plants_F","A3_Roads_F",
"A3_Rocks_F","A3_Rocks_F_Blunt","A3_Rocks_F_Sharp","A3_Rocks_F_Water","A3_Structures_F","A3_Structures_F_Bridges","A3_Structures_F_Civ","A3_Structures_F_Civ_Accessories","A3_Structures_F_Civ_Ancient",
"A3_Structures_F_Civ_BellTowers","A3_Structures_F_Civ_Calvaries","A3_Structures_F_Civ_Camping","A3_Structures_F_Civ_Chapels","A3_Structures_F_Civ_Constructions","A3_Structures_F_Civ_Dead","A3_Structures_F_Civ_Garbage",
"A3_Structures_F_Civ_Graffiti","A3_Structures_F_Civ_InfoBoards","A3_Structures_F_Civ_Kiosks","A3_Structures_F_Civ_Lamps","A3_Structures_F_Civ_Market","A3_Structures_F_Civ_Offices","A3_Structures_F_Civ_Pavements",
"A3_Structures_F_Civ_PlayGround","A3_Structures_F_Civ_SportsGrounds","A3_Structures_F_Civ_Statues","A3_Structures_F_Civ_Tourism","A3_Structures_F_Data","A3_Structures_F_Dominants","A3_Structures_F_Dominants_Amphitheater",
"A3_Structures_F_Dominants_Castle","A3_Structures_F_Dominants_Church","A3_Structures_F_Dominants_Hospital","A3_Structures_F_Dominants_Lighthouse","A3_Structures_F_Dominants_WIP","A3_Structures_F_Furniture",
"A3_Structures_F_Households","A3_Structures_F_Households_Addons","A3_Structures_F_Households_House_Big01","A3_Structures_F_Households_House_Big02","A3_Structures_F_Households_House_Shop01",
"A3_Structures_F_Households_House_Shop02","A3_Structures_F_Households_House_Small01","A3_Structures_F_Households_House_Small02","A3_Structures_F_Households_House_Small03","A3_Structures_F_Households_Slum",
"A3_Structures_F_Households_Stone_Big","A3_Structures_F_Households_Stone_Shed","A3_Structures_F_Households_Stone_Small","A3_Structures_F_Households_WIP","A3_Structures_F_Ind","A3_Structures_F_Ind_AirPort",
"A3_Structures_F_Ind_Cargo","A3_Structures_F_Ind_CarService","A3_Structures_F_Ind_ConcreteMixingPlant","A3_Structures_F_Ind_Crane","A3_Structures_F_Ind_DieselPowerPlant","A3_Structures_F_Ind_Factory",
"A3_Structures_F_Ind_FuelStation","A3_Structures_F_Ind_FuelStation_Small","A3_Structures_F_Ind_Pipes","A3_Structures_F_Ind_PowerLines","A3_Structures_F_Ind_ReservoirTank","A3_Structures_F_Ind_Shed",
"A3_Structures_F_Ind_SolarPowerPlant","A3_Structures_F_Ind_Tank","A3_Structures_F_Ind_Transmitter_Tower","A3_Structures_F_Ind_WavePowerPlant","A3_Structures_F_Ind_Windmill","A3_Structures_F_Ind_WindPowerPlant",
"A3_Structures_F_Items","A3_Structures_F_Items_Documents","A3_Structures_F_Items_Electronics","A3_Structures_F_Items_Food","A3_Structures_F_Items_Gadgets","A3_Structures_F_Items_Luggage","A3_Structures_F_Items_Medical",
"A3_Structures_F_Items_Military","A3_Structures_F_Items_Stationery","A3_Structures_F_Items_Tools","A3_Structures_F_Items_Valuables","A3_Structures_F_Items_Vessels","A3_Structures_F_Mil","A3_Structures_F_Mil_BagBunker",
"A3_Structures_F_Mil_BagFence","A3_Structures_F_Mil_Barracks","A3_Structures_F_Mil_Bunker","A3_Structures_F_Mil_Cargo","A3_Structures_F_Mil_Flags","A3_Structures_F_Mil_Fortification","A3_Structures_F_Mil_Helipads",
"A3_Structures_F_Mil_Offices","A3_Structures_F_Mil_Radar","A3_Structures_F_Mil_Shelters","A3_Structures_F_Mil_TentHangar","A3_Structures_F_Naval","A3_Structures_F_Naval_Buoys","A3_Structures_F_Naval_Fishing",
"A3_Structures_F_Naval_Piers","A3_Structures_F_Naval_RowBoats","A3_Structures_F_Research","A3_Structures_F_System","A3_Structures_F_Training","A3_Structures_F_Training_InvisibleTarget","A3_Structures_F_Walls",
"A3_Structures_F_EPA","A3_Structures_F_EPA_Civ_Camping","A3_Structures_F_EPA_Civ_Constructions","A3_Structures_F_EPA_Items_Electronics","A3_Structures_F_EPA_Items_Food","A3_Structures_F_EPA_Items_Medical",
"A3_Structures_F_EPA_Items_Tools","A3_Structures_F_EPA_Items_Vessels","A3_Structures_F_EPA_Walls","A3_Structures_F_EPB","A3_Structures_F_EPB_Civ_Accessories","A3_Structures_F_EPB_Civ_Camping","A3_Structures_F_EPB_Civ_Dead",
"A3_Structures_F_EPB_Civ_Garbage","A3_Structures_F_EPB_Civ_Graffiti","A3_Structures_F_EPB_Civ_PlayGround","A3_Structures_F_EPB_Furniture","A3_Structures_F_EPB_Items_Documents","A3_Structures_F_EPB_Items_Luggage",
"A3_Structures_F_EPB_Items_Military","A3_Structures_F_EPB_Items_Vessels","A3_Structures_F_EPB_Naval_Fishing","A3_Structures_F_EPC","A3_Structures_F_EPC_Civ_Accessories","A3_Structures_F_EPC_Civ_Camping",
"A3_Structures_F_EPC_Civ_Garbage","A3_Structures_F_EPC_Civ_InfoBoards","A3_Structures_F_EPC_Civ_Kiosks","A3_Structures_F_EPC_Civ_Playground","A3_Structures_F_EPC_Civ_Tourism","A3_Structures_F_EPC_Dominants_GhostHotel",
"A3_Structures_F_EPC_Dominants_Stadium","A3_Structures_F_EPC_Furniture","A3_Structures_F_EPC_Items_Documents","A3_Structures_F_EPC_Items_Electronics","A3_Structures_F_EPC_Walls","A3_UiFonts_F","A3_Animals_F",
"A3_Animals_F_Animconfig","A3_Animals_F_Fishes","A3_Animals_F_Kestrel","A3_Animals_F_Rabbit","A3_Animals_F_Seagull","A3_Animals_F_Snakes","A3_Animals_F_Turtle","A3_Animals_F_Beta","A3_Animals_F_Beta_Chicken",
"A3_Animals_F_Beta_Dog","A3_Animals_F_Beta_Goat","A3_Animals_F_Beta_Sheep","A3_Anims_F","A3_Anims_F_Config_Sdr","A3_Anims_F_Config_Sdr_WeaponSwitching","A3_Anims_F_Data","A3_Anims_F_EPA","A3_Anims_F_EPC","A3_Dubbing_F_EPA",
"A3_Dubbing_F_EPB","A3_Dubbing_F_EPC","A3_Language_F_EPA","A3_Language_F_EPB","A3_Language_F_EPC","A3_LanguageMissions_F_EPA","A3_LanguageMissions_F_EPB","A3_LanguageMissions_F_EPC","A3_Map_Data","A3_Map_Data_Exp",
"A3_Map_Stratis","A3_Map_Stratis_Data","A3_Map_Stratis_Data_Layers","A3_Map_Stratis_Scenes_F","A3_Plants_F_Bush","A3_Signs_F","A3_Signs_F_Signs_Ad","A3_Structures_F_Signs_Companies","A3_Ui_F","A3_Ui_F_Data","A3_Ui_F_Curator",
"A3_Weapons_F","A3_Weapons_F_Ammoboxes","A3_Weapons_F_DummyWeapons","A3_Weapons_F_Explosives","A3_Weapons_F_Items","A3_Weapons_F_Launchers_NLAW","A3_Weapons_F_Launchers_RPG32","A3_Weapons_F_Launchers_Titan",
"A3_Weapons_F_LongRangeRifles_DMR_01","A3_Weapons_F_LongRangeRifles_EBR","A3_Weapons_F_LongRangeRifles_GM6","A3_Weapons_F_LongRangeRifles_M320","A3_Weapons_F_Machineguns_M200","A3_Weapons_F_Machineguns_Zafir",
"A3_Weapons_F_Pistols_ACPC2","A3_Weapons_F_Pistols_P07","A3_Weapons_F_Pistols_Pistol_Heavy_01","A3_Weapons_F_Pistols_Pistol_Heavy_02","A3_Weapons_F_Pistols_Rook40","A3_Weapons_F_Rifles_Khaybar","A3_Weapons_F_Rifles_MK20",
"A3_Weapons_F_Rifles_MX","A3_Weapons_F_Rifles_MX_Black","A3_Weapons_F_Rifles_SDAR","A3_Weapons_F_Rifles_TRG20","A3_Weapons_F_SMGs_Pdw2000","A3_Weapons_F_SMGs_SMG_01","A3_Weapons_F_SMGs_SMG_02","A3_Weapons_F_Beta",
"A3_Weapons_F_Beta_Ammoboxes","A3_Weapons_F_Beta_LongRangeRifles_EBR","A3_Weapons_F_Beta_LongRangeRifles_GM6","A3_Weapons_F_Beta_LongRangeRifles_M320","A3_Weapons_F_Beta_Rifles_Khaybar","A3_Weapons_F_Beta_Rifles_MX",
"A3_Weapons_F_Beta_Rifles_TRG20","A3_Weapons_F_Gamma","A3_Weapons_F_Gamma_Ammoboxes","A3_Weapons_F_Gamma_LongRangeRifles_EBR","A3_Weapons_F_Gamma_Rifles_MX","A3_Characters_F","A3_Characters_F_BLUFOR","A3_Characters_F_Civil",
"A3_Characters_F_Heads","A3_Characters_F_OPFOR","A3_Characters_F_Proxies","A3_Characters_F_Beta","A3_Characters_F_Beta_INDEP","A3_Characters_F_Gamma","A3_Map_Altis","A3_Map_Altis_Data","A3_Map_Altis_Data_Layers",
"A3_Map_Altis_Scenes_F","A3_Missions_F","A3_Missions_F_Data","A3_Missions_F_Video","A3_Missions_F_Beta","A3_Missions_F_Beta_Data","A3_Missions_F_Beta_Video","A3_Missions_F_Gamma","A3_Missions_F_Gamma_Data",
"A3_Missions_F_Gamma_Video","A3_Sounds_F","A3_Sounds_F_Arsenal","A3_Sounds_F_Characters","A3_Sounds_F_Environment","A3_Sounds_F_Sfx","A3_Sounds_F_Vehicles","A3_Sounds_F_EPB","A3_Sounds_F_EPC","A3_Static_F",
"A3_Static_F_Mortar_01","A3_Static_F_Beta","A3_Static_F_Beta_Mortar_01","A3_Static_F_Gamma","A3_Static_F_Gamma_Mortar_01","A3_Weapons_F_Acc","A3_Weapons_F_Beta_Acc","A3_Weapons_F_EPA","A3_Weapons_F_EPA_Acc",
"A3_Weapons_F_EPA_Ammoboxes","A3_Weapons_F_EPB","A3_Weapons_F_EPB_Acc","A3_Weapons_F_EPB_Ammoboxes","A3_Weapons_F_EPB_LongRangeRifles_GM6","A3_Weapons_F_EPC","A3_Weapons_F_Gamma_Acc","A3_Air_F","A3_Air_F_Heli_Light_01",
"A3_Air_F_Heli_Light_02","A3_Air_F_Beta","A3_Air_F_Beta_Heli_Attack_01","A3_Air_F_Beta_Heli_Attack_02","A3_Air_F_Beta_Heli_Transport_01","A3_Air_F_Beta_Heli_Transport_02","A3_Air_F_Beta_Parachute_01",
"A3_Air_F_Beta_Parachute_02","A3_Air_F_Gamma","A3_Air_F_Gamma_Plane_Fighter_03","A3_Armor_F","A3_Armor_F_Beta","A3_Armor_F_Beta_APC_Tracked_01","A3_Armor_F_Beta_APC_Tracked_02","A3_Armor_F_Gamma","A3_Armor_F_Gamma_MBT_01",
"A3_Armor_F_Gamma_MBT_02","A3_Boat_F","A3_Boat_F_Boat_Armed_01","A3_Boat_F_Boat_Transport_01","A3_Boat_F_Beta","A3_Boat_F_Beta_Boat_Armed_01","A3_Boat_F_Beta_Boat_Transport_01","A3_Boat_F_Beta_SDV_01","A3_Boat_F_Gamma",
"A3_Boat_F_Gamma_Boat_Civil_01","A3_Boat_F_Gamma_Boat_Civil_04","A3_Boat_F_Gamma_Boat_Transport_01","A3_Characters_F_Common","A3_Characters_F_EPA","A3_Characters_F_EPB","A3_Characters_F_EPB_Heads","A3_Characters_F_EPC",
"A3_Missions_F_EPA","A3_Missions_F_EPA_Data","A3_Missions_F_EPA_Video","A3_Missions_F_EPB","A3_Missions_F_EPC","A3_Soft_F","A3_Soft_F_MRAP_01","A3_Soft_F_MRAP_02","A3_Soft_F_Offroad_01","A3_Soft_F_Quadbike_01","A3_Soft_F_Beta",
"A3_Soft_F_Beta_MRAP_03","A3_Soft_F_Beta_Quadbike_01","A3_Soft_F_Beta_Truck_01","A3_Soft_F_Beta_Truck_02","A3_Soft_F_Gamma","A3_Soft_F_Gamma_Hatchback_01","A3_Soft_F_Gamma_Offroad_01","A3_Soft_F_Gamma_Quadbike_01",
"A3_Soft_F_Gamma_SUV_01","A3_Soft_F_Gamma_Truck_01","A3_Soft_F_Gamma_Truck_02","A3_Soft_F_Gamma_Van_01","A3_Static_F_AA_01","A3_Static_F_AT_01","A3_Structures_F_Mil_Scrapyard","A3_Structures_F_Wrecks",
"A3_Structures_F_EPA_Mil_Scrapyard","A3_Air_F_EPB","A3_Air_F_EPB_Heli_Light_03","A3_Air_F_EPC","A3_Air_F_EPC_Plane_CAS_01","A3_Air_F_EPC_Plane_CAS_02","A3_Air_F_EPC_Plane_Fighter_03","A3_Armor_F_Beta_APC_Wheeled_01",
"A3_Armor_F_Beta_APC_Wheeled_02","A3_Armor_F_EPB","A3_Armor_F_EPB_APC_Tracked_03","A3_Armor_F_EPB_MBT_03","A3_Armor_F_EPC","A3_Armor_F_EPC_MBT_01","A3_Armor_F_Gamma_APC_Wheeled_03","A3_Boat_F_EPC","A3_Boat_F_EPC_Submarine_01",
"A3_Cargoposes_F","A3_Drones_F","A3_Drones_F_Air_F_Gamma_UAV_01","A3_Drones_F_Air_F_Gamma_UAV_02","A3_Drones_F_Characters_F_Gamma","A3_Drones_F_Soft_F_Gamma_UGV_01","A3_Drones_F_Weapons_F_Gamma_Ammoboxes",
"A3_Drones_F_Weapons_F_Gamma_Items","A3_Soft_F_EPC","A3_Soft_F_EPC_Truck_03","A3_Data_F_Loadorder","A3_Data_F_Curator","A3_Data_F_Curator_Characters","A3_Data_F_Curator_Eagle","A3_Data_F_Curator_Intel","A3_Data_F_Curator_Misc",
"A3_Data_F_Curator_Music","A3_Data_F_Curator_Respawn","A3_Data_F_Curator_Virtual","A3_Language_F_Curator","A3_Modules_F_Curator","A3_Modules_F_Curator_Animals","A3_Modules_F_Curator_CAS","A3_Modules_F_Curator_Curator",
"A3_Modules_F_Curator_Effects","A3_Modules_F_Curator_Environment","A3_Modules_F_Curator_Flares","A3_Modules_F_Curator_Intel","A3_Modules_F_Curator_Lightning","A3_Modules_F_Curator_Mines","A3_Modules_F_Curator_Misc",
"A3_Modules_F_Curator_Multiplayer","A3_Modules_F_Curator_Objectives","A3_Modules_F_Curator_Ordnance","A3_Modules_F_Curator_Respawn","A3_Modules_F_Curator_SmokeShells","A3_Missions_F_Curator","A3_Modules_F_Curator_Chemlights",
"A3_Data_F_Curator_Loadorder","A3_Data_F_Kart","A3_Data_F_Kart_ParticleEffects","A3_Language_F_Kart","A3_LanguageMissions_F_Kart","A3_Missions_F_Kart","A3_Missions_F_Kart_Data","A3_Modules_F_Kart","A3_Modules_F_Kart_Data",
"A3_Modules_F_Kart_TimeTrials","A3_Soft_F_Kart","A3_Soft_F_Kart_Kart_01","A3_Sounds_F_Kart","A3_Structures_F_Kart","A3_Structures_F_Kart_Civ_SportsGrounds","A3_Structures_F_Kart_Mil_Flags","A3_Structures_F_Kart_Signs_Companies",
"A3_Ui_F_Kart","A3_Weapons_F_Kart","A3_Weapons_F_Kart_Pistols_Pistol_Signal_F","A3_Anims_F_Kart","A3_Characters_F_Kart","A3_Data_F_Kart_Loadorder","A3_Data_F_Bootcamp","A3_Dubbing_F_Bootcamp","A3_Functions_F_Bootcamp",
"A3_Language_F_Bootcamp","A3_LanguageMissions_F_Bootcamp","A3_Map_VR","A3_Map_VR_Scenes_F","A3_Missions_F_Bootcamp","A3_Missions_F_Bootcamp_Data","A3_Missions_F_Bootcamp_Video","A3_Modules_F_Bootcamp",
"A3_Modules_F_Bootcamp_Misc","A3_Music_F_Bootcamp","A3_Music_F_Bootcamp_Music","A3_Soft_F_Bootcamp","A3_Soft_F_Bootcamp_Offroad_01","A3_Soft_F_Bootcamp_Quadbike_01","A3_Soft_F_Bootcamp_Van_01","A3_Sounds_F_Bootcamp",
"A3_Structures_F_Bootcamp","A3_Structures_F_Bootcamp_Civ_Camping","A3_Structures_F_Bootcamp_Civ_SportsGrounds","A3_Structures_F_Bootcamp_Ind_Cargo","A3_Structures_F_Bootcamp_Items_Electronics",
"A3_Structures_F_Bootcamp_Items_Food","A3_Structures_F_Bootcamp_Items_Sport","A3_Structures_F_Bootcamp_System","A3_Structures_F_Bootcamp_Training","A3_Structures_F_Bootcamp_VR_Blocks","A3_Structures_F_Bootcamp_VR_CoverObjects",
"A3_Structures_F_Bootcamp_VR_Helpers","A3_Ui_F_Bootcamp","A3_Weapons_F_Bootcamp","A3_Weapons_F_Bootcamp_Ammoboxes","A3_Weapons_F_Bootcamp_LongRangeRifles_GM6_Camo","A3_Weapons_F_Bootcamp_LongRangeRifles_M320_Camo",
"A3_Anims_F_Bootcamp","A3_Characters_F_Bootcamp","A3_Characters_F_Bootcamp_Common","A3_Data_F_Bootcamp_Loadorder","A3_Data_F_Heli","A3_Dubbing_F_Heli","A3_Functions_F_Heli","A3_Language_F_Heli","A3_LanguageMissions_F_Heli",
"A3_Missions_F_Heli","A3_Missions_F_Heli_Data","A3_Missions_F_Heli_Video","A3_Modules_F_Heli","A3_Modules_F_Heli_Misc","A3_Music_F_Heli","A3_Music_F_Heli_Music","A3_Soft_F_Heli","A3_Soft_F_Heli_Hatchback_01",
"A3_Soft_F_Heli_MRAP_01","A3_Soft_F_Heli_MRAP_02","A3_Soft_F_Heli_MRAP_03","A3_Soft_F_Heli_Quadbike_01","A3_Soft_F_Heli_SUV_01","A3_Soft_F_Heli_UGV_01","A3_Soft_F_Heli_Van_01","A3_Sounds_F_Heli","A3_Structures_F_Heli",
"A3_Structures_F_Heli_Civ_Accessories","A3_Structures_F_Heli_Civ_Constructions","A3_Structures_F_Heli_Civ_Garbage","A3_Structures_F_Heli_Civ_Market","A3_Structures_F_Heli_Furniture","A3_Structures_F_Heli_Ind_Airport",
"A3_Structures_F_Heli_Ind_Cargo","A3_Structures_F_Heli_Ind_Machines","A3_Structures_F_Heli_Items_Airport","A3_Structures_F_Heli_Items_Electronics","A3_Structures_F_Heli_Items_Food","A3_Structures_F_Heli_Items_Luggage",
"A3_Structures_F_Heli_Items_Sport","A3_Structures_F_Heli_Items_Tools","A3_Structures_F_Heli_VR_Helpers","A3_Supplies_F_Heli","A3_Supplies_F_Heli_Bladders","A3_Supplies_F_Heli_CargoNets","A3_Supplies_F_Heli_Fuel",
"A3_Supplies_F_Heli_Slingload","A3_Ui_F_Heli","A3_Air_F_Heli","A3_Air_F_Heli_Heli_Attack_01","A3_Air_F_Heli_Heli_Attack_02","A3_Air_F_Heli_Heli_Light_01","A3_Air_F_Heli_Heli_Light_02","A3_Air_F_Heli_Heli_Light_03",
"A3_Air_F_Heli_Heli_Transport_01","A3_Air_F_Heli_Heli_Transport_02","A3_Air_F_Heli_Heli_Transport_03","A3_Air_F_Heli_Heli_Transport_04","A3_Anims_F_Heli","A3_Boat_F_Heli","A3_Boat_F_Heli_Boat_Armed_01","A3_Boat_F_Heli_SDV_01",
"A3_Cargoposes_F_Heli","A3_Data_F_Heli_Loadorder","A3_Data_F_Mark","A3_Dubbing_F_Mark","A3_Dubbing_F_MP_Mark","A3_Functions_F_Mark","A3_Functions_F_MP_Mark","A3_Language_F_Mark","A3_Language_F_MP_Mark",
"A3_LanguageMissions_F_Mark","A3_LanguageMissions_F_MP_Mark","A3_Missions_F_Mark","A3_Missions_F_Mark_Data","A3_Missions_F_Mark_Video","A3_Missions_F_MP_Mark","A3_Missions_F_MP_Mark_Data","A3_Modules_F_Mark",
"A3_Modules_F_Mark_FiringDrills","A3_Modules_F_MP_Mark","A3_Modules_F_MP_Mark_Objectives","A3_Music_F_Mark","A3_Music_F_Mark_Music","A3_Sounds_F_Mark","A3_Static_F_Mark","A3_Static_F_Mark_Designator_01",
"A3_Static_F_Mark_Designator_02","A3_Structures_F_Mark","A3_Structures_F_Mark_Items_Military","A3_Structures_F_Mark_Items_Sport","A3_Structures_F_Mark_Mil_Flags","A3_Structures_F_Mark_Training","A3_Structures_F_Mark_VR_Helpers",
"A3_Structures_F_Mark_VR_Shapes","A3_Structures_F_Mark_VR_Targets","A3_Supplies_F_Mark","A3_Ui_F_Mark","A3_Ui_F_MP_Mark","A3_Weapons_F_Mark","A3_Weapons_F_Mark_Acc","A3_Weapons_F_Mark_LongRangeRifles_DMR_01",
"A3_Weapons_F_Mark_LongRangeRifles_DMR_02","A3_Weapons_F_Mark_LongRangeRifles_DMR_03","A3_Weapons_F_Mark_LongRangeRifles_DMR_04","A3_Weapons_F_Mark_LongRangeRifles_DMR_05","A3_Weapons_F_Mark_LongRangeRifles_DMR_06",
"A3_Weapons_F_Mark_LongRangeRifles_EBR","A3_Weapons_F_Mark_LongRangeRifles_GM6","A3_Weapons_F_Mark_LongRangeRifles_GM6_Camo","A3_Weapons_F_Mark_LongRangeRifles_M320","A3_Weapons_F_Mark_LongRangeRifles_M320_Camo",
"A3_Weapons_F_Mark_Machineguns_M200","A3_Weapons_F_Mark_Machineguns_MMG_01","A3_Weapons_F_Mark_Machineguns_MMG_02","A3_Weapons_F_Mark_Machineguns_Zafir","A3_Weapons_F_Mark_Rifles_Khaybar","A3_Weapons_F_Mark_Rifles_MK20",
"A3_Weapons_F_Mark_Rifles_MX","A3_Weapons_F_Mark_Rifles_SDAR","A3_Weapons_F_Mark_Rifles_TRG20","A3_Anims_F_Mark","A3_Anims_F_Mark_Deployment","A3_Characters_F_Mark","A3_Data_F_Mark_Loadorder","A3_Language_F_Exp_A",
"A3_Data_F_Exp_A","A3_Functions_F_Exp_A","A3_LanguageMissions_F_Exp_A","A3_Missions_F_Exp_A","A3_Missions_F_Exp_A_Data","A3_Modules_F_Exp_A","A3_Props_F_Exp_A","A3_Props_F_Exp_A_Military","A3_Props_F_Exp_A_Military_Equipment",
"A3_Sounds_F_Exp_A","A3_Structures_F_Exp_A","A3_Structures_F_Exp_A_VR_Blocks","A3_Structures_F_Exp_A_VR_Helpers","A3_Ui_F_Exp_A","A3_Anims_F_Exp_A","A3_Data_F_Exp_A_Virtual","A3_Data_F_Exp_A_Loadorder","A3_Data_F_Exp_B",
"A3_Language_F_Exp_B","A3_3DEN","A3_3DEN_Language","A3_BaseConfig_F","3DEN","A3_Animals_F_Chicken","A3_Animals_F_Dog","A3_Animals_F_Goat","A3_Animals_F_Sheep","A3_Armor_F_Panther","A3_Armor_F_AMV","A3_Armor_F_Marid",
"A3_Armor_F_APC_Wheeled_03","A3_Armor_F_Slammer","A3_Armor_F_T100K","A3_Boat_F_SDV_01","A3_Boat_F_EPC_Submarine_01_F","A3_Boat_F_Civilian_Boat","A3_Boat_F_Trawler","A3_Characters_F_INDEP","A3_Air_F_Gamma_UAV_01",
"A3_Air_F_Gamma_UAV_02","A3_UAV_F_Characters_F_Gamma","A3_Soft_F_Crusher_UGV","A3_UAV_F_Weapons_F_Gamma_Ammoboxes","A3_Weapons_F_gamma_Items","A3_Map_Altis_Scenes","A3_Map_Stratis_Scenes","Map_VR","A3_Map_VR_Scenes",
"A3_Modules_F_Heli_SpawnAi","A3_Modules_F_Mark_Objectives","A3_Signs_F_AD","A3_Soft_F_Quadbike","A3_Soft_F_MRAP_03","A3_Soft_F_Beta_Quadbike","A3_Soft_F_HEMTT","A3_Soft_F_TruckHeavy","A3_Soft_F_Bootcamp_Quadbike",
"A3_Soft_F_Bootcamp_Truck","A3_Soft_F_Car","A3_Soft_F_Gamma_Offroad","A3_Soft_F_Gamma_Quadbike","A3_Soft_F_SUV","A3_Soft_F_Gamma_HEMTT","A3_Soft_F_Gamma_TruckHeavy","A3_Soft_F_Truck","A3_Soft_F_Heli_Car",
"A3_Soft_F_Heli_Quadbike","A3_Soft_F_Heli_SUV","A3_Soft_F_Heli_Crusher_UGV","A3_Soft_F_Heli_Truck","A3_Static_F_Gamma_AA","A3_Static_F_Gamma_AT","A3_Structures_F_Items_Cans","A3_Weapons_F_NATO","A3_Weapons_F_CSAT",
"A3_Weapons_F_AAF","A3_weapons_F_FIA","A3_Weapons_F_ItemHolders","A3_Weapons_F_Headgear","A3_Weapons_F_Uniforms","A3_Weapons_F_Vests","A3_Weapons_F_Launchers_LAW","A3_Weapons_F_EPA_LongRangeRifles_DMR_01","A3_Weapons_F_EBR",
"A3_Weapons_F_EPB_Rifles_MX_Black","A3_Weapons_F_Pistols_PDW2000","A3_Weapons_F_Rifles_Vector","a3_weapons_f_rifles_SMG_02","A3_Weapons_F_beta_EBR","A3_Weapons_F_EPA_LongRangeRifles_GM6","A3_Weapons_F_EPB_LongRangeRifles_M320",
"A3_Weapons_F_Bootcamp_LongRangeRifles_GM6","A3_Weapons_F_Bootcamp_LongRangeRifles_M320","A3_Weapons_F_EPB_LongRangeRifles_GM3","A3_Weapons_F_EPA_EBR","A3_Weapons_F_EPA_Rifles_MX","A3_Weapons_F_Mark_EBR",
"CuratorOnly_Air_F_Beta_Heli_Attack_01","CuratorOnly_Air_F_Beta_Heli_Attack_02","CuratorOnly_Air_F_Gamma_UAV_01","CuratorOnly_Armor_F_AMV","CuratorOnly_armor_f_beta_APC_Tracked_02","CuratorOnly_Armor_F_Marid",
"CuratorOnly_Armor_F_Panther","CuratorOnly_Armor_F_Slammer","CuratorOnly_Armor_F_T100K","CuratorOnly_Boat_F_Boat_Armed_01","CuratorOnly_Characters_F_BLUFOR","CuratorOnly_Characters_F_Common","CuratorOnly_Characters_F_OPFOR",
"CuratorOnly_Modules_F_Curator_Animals","CuratorOnly_Modules_F_Curator_Chemlights","CuratorOnly_Modules_F_Curator_Effects","CuratorOnly_Modules_F_Curator_Environment","CuratorOnly_Modules_F_Curator_Flares",
"CuratorOnly_Modules_F_Curator_Lightning","CuratorOnly_Modules_F_Curator_Mines","CuratorOnly_Modules_F_Curator_Objectives","CuratorOnly_Modules_F_Curator_Ordnance","CuratorOnly_Modules_F_Curator_Smokeshells",
"CuratorOnly_Signs_F","CuratorOnly_Soft_F_Crusher_UGV","CuratorOnly_Soft_F_MRAP_01","CuratorOnly_Soft_F_MRAP_02","CuratorOnly_Soft_F_Quadbike","CuratorOnly_Static_F_Gamma","CuratorOnly_Static_F_Mortar_01",
"CuratorOnly_Structures_F_Civ_Ancient","CuratorOnly_Structures_F_Civ_Camping","CuratorOnly_Structures_F_Civ_Garbage","CuratorOnly_Structures_F_EPA_Civ_Constructions","CuratorOnly_Structures_F_EPB_Civ_Dead",
"CuratorOnly_Structures_F_Ind_Cargo","CuratorOnly_Structures_F_Ind_Crane","CuratorOnly_Structures_F_Ind_ReservoirTank","CuratorOnly_Structures_F_Ind_Transmitter_Tower","CuratorOnly_Structures_F_Items_Vessels",
"CuratorOnly_Structures_F_Mil_BagBunker","CuratorOnly_Structures_F_Mil_BagFence","CuratorOnly_Structures_F_Mil_Cargo","CuratorOnly_Structures_F_Mil_Fortification","CuratorOnly_Structures_F_Mil_Radar",
"CuratorOnly_Structures_F_Mil_Shelters","CuratorOnly_Structures_F_Research","CuratorOnly_Structures_F_Walls","CuratorOnly_Structures_F_Wrecks","A3_Data_F_Exp_B_Loadorder","A3_Data_F_Exp","A3_Data_F_Exp_ParticleEffects",
"A3_Dubbing_F_Exp","A3_Dubbing_Radio_F_EXP","A3_Dubbing_Radio_F_EXP_Data_CHI","A3_Dubbing_Radio_F_EXP_Data_ENGFRE","A3_Dubbing_Radio_F_EXP_Data_FRE","A3_EditorPreviews_F_Exp","A3_Functions_F_Exp","A3_Language_F_Exp",
"A3_LanguageMissions_F_Exp","A3_Missions_F_Exp","A3_Missions_F_Exp_Data","A3_Missions_F_Exp_Video","A3_Modules_F_Exp","A3_Music_F_Exp","A3_Music_F_Exp_Music","A3_Props_F_Exp","A3_Props_F_Exp_Civilian",
"A3_Props_F_Exp_Civilian_Garbage","A3_Props_F_Exp_Commercial","A3_Props_F_Exp_Commercial_Market","A3_Props_F_Exp_Industrial","A3_Props_F_Exp_Industrial_HeavyEquipment","A3_Props_F_Exp_Infrastructure",
"A3_Props_F_Exp_Infrastructure_Railways","A3_Props_F_Exp_Infrastructure_Traffic","A3_Props_F_Exp_Military","A3_Props_F_Exp_Military_Camps","A3_Props_F_Exp_Military_OldPlaneWrecks","A3_Props_F_Exp_Naval",
"A3_Props_F_Exp_Naval_Boats","A3_Rocks_F_Exp","A3_Rocks_F_Exp_Cliff","A3_Rocks_F_Exp_LavaStones","A3_Soft_F_Exp","A3_Soft_F_Exp_LSV_01","A3_Soft_F_Exp_LSV_02","A3_Soft_F_Exp_MRAP_01","A3_Soft_F_Exp_MRAP_02",
"A3_Soft_F_Exp_Offroad_01","A3_Soft_F_Exp_Offroad_02","A3_Soft_F_Exp_Quadbike_01","A3_Soft_F_Exp_Truck_01","A3_Soft_F_Exp_Truck_03","A3_Soft_F_Exp_UGV_01","A3_Soft_F_Exp_Van_01","A3_Static_F_Exp","A3_Static_F_Exp_AA_01",
"A3_Static_F_Exp_AT_01","A3_Static_F_Exp_GMG_01","A3_Static_F_Exp_HMG_01","A3_Static_F_Exp_Mortar_01","A3_Structures_F_Exp","A3_Structures_F_Exp_Civilian","A3_Structures_F_Exp_Civilian_Accessories",
"A3_Structures_F_Exp_Civilian_Garages","A3_Structures_F_Exp_Civilian_House_Big_01","A3_Structures_F_Exp_Civilian_House_Big_02","A3_Structures_F_Exp_Civilian_House_Big_03","A3_Structures_F_Exp_Civilian_House_Big_04",
"A3_Structures_F_Exp_Civilian_House_Big_05","A3_Structures_F_Exp_Civilian_House_Native_01","A3_Structures_F_Exp_Civilian_House_Native_02","A3_Structures_F_Exp_Civilian_House_Small_01",
"A3_Structures_F_Exp_Civilian_House_Small_02","A3_Structures_F_Exp_Civilian_House_Small_03","A3_Structures_F_Exp_Civilian_House_Small_04","A3_Structures_F_Exp_Civilian_House_Small_05",
"A3_Structures_F_Exp_Civilian_House_Small_06","A3_Structures_F_Exp_Civilian_School_01","A3_Structures_F_Exp_Civilian_Sheds","A3_Structures_F_Exp_Civilian_Slum_01","A3_Structures_F_Exp_Civilian_Slum_02",
"A3_Structures_F_Exp_Civilian_Slum_03","A3_Structures_F_Exp_Civilian_Slum_04","A3_Structures_F_Exp_Civilian_Slum_05","A3_Structures_F_Exp_Civilian_SportsGrounds","A3_Structures_F_Exp_Commercial",
"A3_Structures_F_Exp_Commercial_Addons","A3_Structures_F_Exp_Commercial_Advertisements","A3_Structures_F_Exp_Commercial_FuelStation_01","A3_Structures_F_Exp_Commercial_FuelStation_02","A3_Structures_F_Exp_Commercial_Hotel_01",
"A3_Structures_F_Exp_Commercial_Hotel_02","A3_Structures_F_Exp_Commercial_Market","A3_Structures_F_Exp_Commercial_MultistoryBuilding_01","A3_Structures_F_Exp_Commercial_MultistoryBuilding_03",
"A3_Structures_F_Exp_Commercial_MultistoryBuilding_04","A3_Structures_F_Exp_Commercial_Shop_City_01","A3_Structures_F_Exp_Commercial_Shop_City_02","A3_Structures_F_Exp_Commercial_Shop_City_03",
"A3_Structures_F_Exp_Commercial_Shop_City_04","A3_Structures_F_Exp_Commercial_Shop_City_05","A3_Structures_F_Exp_Commercial_Shop_City_06","A3_Structures_F_Exp_Commercial_Shop_City_07",
"A3_Structures_F_Exp_Commercial_Shop_Town_01","A3_Structures_F_Exp_Commercial_Shop_Town_02","A3_Structures_F_Exp_Commercial_Shop_Town_03","A3_Structures_F_Exp_Commercial_Shop_Town_04",
"A3_Structures_F_Exp_Commercial_Shop_Town_05","A3_Structures_F_Exp_Commercial_Supermarket_01","A3_Structures_F_Exp_Commercial_Warehouses","A3_Structures_F_Exp_Cultural","A3_Structures_F_Exp_Cultural_AncientRelics",
"A3_Structures_F_Exp_Cultural_BasaltRuins","A3_Structures_F_Exp_Cultural_Cathedral_01","A3_Structures_F_Exp_Cultural_Cemeteries","A3_Structures_F_Exp_Cultural_Church_01","A3_Structures_F_Exp_Cultural_Church_02",
"A3_Structures_F_Exp_Cultural_Church_03","A3_Structures_F_Exp_Cultural_Fortress_01","A3_Structures_F_Exp_Cultural_Temple_Native_01","A3_Structures_F_Exp_Cultural_Totems","A3_Structures_F_Exp_Data",
"A3_Structures_F_Exp_Industrial","A3_Structures_F_Exp_Industrial_DieselPowerPlant_01","A3_Structures_F_Exp_Industrial_Fields","A3_Structures_F_Exp_Industrial_Materials","A3_Structures_F_Exp_Industrial_Port",
"A3_Structures_F_Exp_Industrial_Stockyard_01","A3_Structures_F_Exp_Industrial_SugarCaneFactory_01","A3_Structures_F_Exp_Industrial_SurfaceMine_01","A3_Structures_F_Exp_Infrastructure",
"A3_Structures_F_Exp_Infrastructure_Airports","A3_Structures_F_Exp_Infrastructure_Bridges","A3_Structures_F_Exp_Infrastructure_Pavements","A3_Structures_F_Exp_Infrastructure_Powerlines",
"A3_Structures_F_Exp_Infrastructure_Railways","A3_Structures_F_Exp_Infrastructure_Roads","A3_Structures_F_Exp_Infrastructure_Runways","A3_Structures_F_Exp_Infrastructure_WaterSupply","A3_Structures_F_Exp_Military",
"A3_Structures_F_Exp_Military_Barracks_01","A3_Structures_F_Exp_Military_Camonets","A3_Structures_F_Exp_Military_ContainerBases","A3_Structures_F_Exp_Military_Emplacements","A3_Structures_F_Exp_Military_Flags",
"A3_Structures_F_Exp_Military_Fortifications","A3_Structures_F_Exp_Military_Pillboxes","A3_Structures_F_Exp_Military_Trenches","A3_Structures_F_Exp_Naval","A3_Structures_F_Exp_Naval_Canals","A3_Structures_F_Exp_Naval_Piers",
"A3_Structures_F_Exp_Signs","A3_Structures_F_Exp_Signs_Companies","A3_Structures_F_Exp_Signs_Traffic","A3_Structures_F_Exp_Walls","A3_Structures_F_Exp_Walls_BackAlleys","A3_Structures_F_Exp_Walls_Bamboo",
"A3_Structures_F_Exp_Walls_Concrete","A3_Structures_F_Exp_Walls_Crashbarriers","A3_Structures_F_Exp_Walls_Hedges","A3_Structures_F_Exp_Walls_Net","A3_Structures_F_Exp_Walls_Pipe","A3_Structures_F_Exp_Walls_Polewalls",
"A3_Structures_F_Exp_Walls_Railings","A3_Structures_F_Exp_Walls_Slum","A3_Structures_F_Exp_Walls_Stone","A3_Structures_F_Exp_Walls_Tin","A3_Structures_F_Exp_Walls_Wired","A3_Structures_F_Exp_Walls_Wooden","A3_Supplies_F_Exp",
"A3_Supplies_F_Exp_Ammoboxes","A3_Ui_F_Exp","A3_Vegetation_F_Exp","A3_Weapons_F_Exp","A3_Weapons_F_Exp_Launchers_RPG32","A3_Weapons_F_Exp_Launchers_RPG7","A3_Weapons_F_Exp_Launchers_Titan",
"A3_Weapons_F_Exp_LongRangeRifles_DMR_07","A3_Weapons_F_Exp_Machineguns_LMG_03","A3_Weapons_F_Exp_Pistols_Pistol_01","A3_Weapons_F_Exp_Rifles_AK12","A3_Weapons_F_Exp_Rifles_AKM","A3_Weapons_F_Exp_Rifles_AKS",
"A3_Weapons_F_Exp_Rifles_ARX","A3_Weapons_F_Exp_Rifles_CTAR","A3_Weapons_F_Exp_Rifles_CTARS","A3_Weapons_F_Exp_Rifles_SPAR_01","A3_Weapons_F_Exp_Rifles_SPAR_02","A3_Weapons_F_Exp_Rifles_SPAR_03","A3_Weapons_F_Exp_SMGs_SMG_05",
"A3_Air_F_Exp","A3_Air_F_Exp_Heli_Light_01","A3_Air_F_Exp_Heli_Transport_01","A3_Air_F_Exp_Plane_Civil_01","A3_Air_F_Exp_UAV_03","A3_Air_F_Exp_UAV_04","A3_Air_F_Exp_VTOL_01","A3_Air_F_Exp_VTOL_02","A3_Anims_F_Exp",
"A3_Anims_F_Exp_Revive","A3_Armor_F_Exp","A3_Armor_F_Exp_APC_Tracked_01","A3_Armor_F_Exp_APC_Tracked_02","A3_Armor_F_Exp_APC_Wheeled_01","A3_Armor_F_Exp_APC_Wheeled_02","A3_Armor_F_Exp_MBT_01","A3_Armor_F_Exp_MBT_02",
"A3_Boat_F_Exp","A3_Boat_F_Exp_Boat_Armed_01","A3_Boat_F_Exp_Boat_Transport_01","A3_Boat_F_Exp_Boat_Transport_02","A3_Boat_F_Exp_Scooter_Transport_01","A3_Cargoposes_F_Exp","A3_Characters_F_Exp","A3_Characters_F_Exp_Civil",
"A3_Characters_F_Exp_Headgear","A3_Characters_F_Exp_Vests","A3_Map_Tanoabuka","A3_Map_Tanoabuka_Data","A3_Map_Tanoabuka_Data_Layers","A3_Sounds_F_Exp","A3_Data_F_Exp_Loadorder","A3_Map_Tanoa_Scenes_F"];
uiNamespace setVariable ["RscDisplayRemoteMissions",displayNull]; //For Spy-Glass..
uiNamespace setVariable ["RscDisplayMultiplayer",displayNull];
_binConfigPatches = configFile >> "CfgPatches";
for "_i" from 0 to count (_binConfigPatches)-1 do {
_patchEntry = _binConfigPatches select _i;
if (isClass _patchEntry) then {
if (!((configName _patchEntry) in _patchList)) exitWith {
[profileName,getPlayerUID player,(configName _patchEntry)] remoteExec ["SPY_fnc_cookieJar",RSERV];
[profileName,format ["Unknown Addon Patch: %1",(configName _patchEntry)]] remoteExec ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
failMission "SpyGlass";
};
};
};
//Check for copy-pasters of Dev-Con styled execution.
//Because I am nice, add these to the following below to allow CBA; "CBA_CREDITS_CONT_C","CBA_CREDITS_M_P
private ["_children","_allowedChildren"];
_children = [configFile >> "RscDisplayMPInterrupt" >> "controls",0] call BIS_fnc_returnChildren;
_allowedChildren = [
"Title","MissionTitle","PlayersName","ButtonCancel","ButtonSAVE","ButtonSkip","ButtonRespawn","ButtonOptions",
"ButtonVideo","ButtonAudio","ButtonControls","ButtonGame","ButtonTutorialHints","ButtonAbort","DebugConsole",
"Version","TraffLight","Feedback","MessageBox"
];
{
if (!((configName _x) in _allowedChildren)) exitWith {
[profileName,getPlayerUID player,"Modified_MPInterrupt"] remoteExec ["SPY_fnc_cookieJar",RSERV];
[profileName,"Devcon like executor detected"] remoteExec ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
failMission "SpyGlass";
};
} forEach _children;
/*
Display Validator
Loops through and makes sure none of the displays were modified..
TODO: Run check every x minutes and validate all displays.
*/
{
_onLoad = getText(configFile >> (_x select 0) >> "onLoad");
_onUnload = getText(configFile >> (_x select 0) >> "onUnload");
if (_onLoad != (_x select 1) || _onUnload != (_x select 2)) exitWith {
[profileName,getPlayerUID player,format ["Modified_Method_%1",_x select 0]] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,format ["Modified Display Method %1 (Memory Edit)",_x select 0]] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
vehicle player setVelocity[1e10,1e14,1e18]; //It's a surprise.
sleep 3;
preprocessFile "SpyGlass\endoftheline.sqf";
sleep 2.5;
failMission "SpyGlass";
};
}
forEach [
["RscDisplayMainMap","[""onLoad"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayGetReady","[""onLoad"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayInventory","[""onLoad"",_this,""RscDisplayInventory"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayInventory"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayLoadMission","[""onLoad"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayInterrupt","[""onLoad"",_this,""RscDisplayInterrupt"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayInterrupt"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptionsVideo","[""onLoad"",_this,""RscDisplayOptionsVideo"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptionsVideo"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptions","[""onLoad"",_this,""RscDisplayOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayAVTerminal","[""onLoad"",_this,""RscDisplayAVTerminal"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayAVTerminal"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayConfigureAction","[""onLoad"",_this,""RscDisplayConfigureAction"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayConfigureAction"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayConfigureControllers","[""onLoad"",_this,""RscDisplayConfigureControllers"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayConfigureControllers"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayControlSchemes","[""onLoad"",_this,""RscDisplayControlSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayControlSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayCustomizeController","[""onLoad"",_this,""RscDisplayCustomizeController"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayCustomizeController"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayDebriefing","[""onLoad"",_this,""RscDisplayDebriefing"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayDebriefing"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayDiary","[""onLoad"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayGameOptions","[""onLoad"",_this,""RscDisplayGameOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayGameOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayJoystickSchemes","[""onLoad"",_this,""RscDisplayJoystickSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayJoystickSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayLoading","[""onLoad"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayMicSensitivityOptions","[""onLoad"",_this,""RscDisplayMicSensitivityOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayMicSensitivityOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptionsAudio","[""onLoad"",_this,""RscDisplayOptionsAudio"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptionsAudio"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptionsLayout","[""onLoad"",_this,""RscDisplayOptionsLayout"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptionsLayout"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayStart","[2] call compile preprocessFileLineNumbers getText (configfile >> 'CfgFunctions' >> 'init'); ['onLoad',_this,'RscDisplayLoading','Loading'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayInsertMarker","[""onLoad"",_this,""RscDisplayInsertMarker"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayInsertMarker"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"]
];
/* Forgot to include this but this is also also a popular method for "unreleased" stuff */
if (getText(configFile >> "CfgFunctions" >> "init") != "A3\functions_f\initFunctions.sqf") then {
[profileName,getPlayerUID player,"Modified_Functions_Init"] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,"Modified_Functions_Init"] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
vehicle player setVelocity[1e10,1e14,1e18]; //It's a surprise.
sleep 3;
preprocessFile "SpyGlass\endoftheline.sqf";
sleep 2.5;
failMission "SpyGlass";
};
[] execVM "SpyGlass\fn_cmdMenuCheck.sqf";
[] execVM "SpyGlass\fn_variableCheck.sqf";
[] execVM "SpyGlass\fn_menuCheck.sqf";

View File

@@ -0,0 +1,176 @@
#include "..\script_macros.hpp"
/*
File: fn_menuCheck.sqf
Author: Bryan "Tonic" Boardwine
Description:
Checks for known cheat menus and closes them then reports them to the server.
*/
private ["_displays","_detection","_display","_timeStamp"];
disableSerialization;
_displays = [
[3030,"BIS_configviewer_display"],["RscDisplayMultiplayer","RscDisplayMultiplayer"],[162,"RscDisplayFieldManual"],["RscDisplayRemoteMissions","RscDisplayRemoteMissions"],[125,"RscDisplayEditDiaryRecord"],
[69,"UnknownDisplay"],[19,"UnknownDisplay"],[71,"UnknownDisplay"],[45,"UnknownDisplay"],[132,"UnknownDisplay"],[32,"UnknownDisplay"],[165,"RscDisplayPublishMission"],[2727,"RscDisplayLocWeaponInfo"],
["RscDisplayMovieInterrupt","RscDisplayMovieInterrupt"],[157,"UnknownDisplay"],[30,"UnknownDisplay"],["RscDisplayArsenal","RscDisplayArsenal"],[166,"RscDisplayPublishMissionSelectTags"],[167,"RscDisplayFileSelect"]
];
_detection = false;
_timeStamp = time;
for "_i" from 0 to 1 step 0 do {
{
_targetDisplay = _x select 0;
_targetName = _x select 1;
switch (typeName _targetDisplay) do {
case ("STRING"): {if (!isNull (uiNamespace getVariable [_targetDisplay,displayNull])) exitWith {_detection = true;};};
default {if (!isNull (findDisplay _targetDisplay)) exitWith {_detection = true;};};
};
if (_detection) exitWith {
[profileName,getPlayerUID player,format ["MenuBasedHack_%1",_targetName]] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,format ["Menu Hack: %1",_targetName]] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
SPYGLASS_END
};
} forEach _displays;
if (_detection) exitWith {};
/* A very old menu that can cause false-positives so we close it */
if (!isNull (findDisplay 129)) then {
closeDialog 0;
};
/* Check to see if RscDisplayInventory has more controls then it should */
_display = findDisplay 602;
if (!isNull _display && {count (allControls _display) > 87}) then {
_count = count allControls _display;
[profileName,getPlayerUID player,format ["MenuBasedHack_RscDisplayInventory_Controls_%1",_count]] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,format ["Menu Hack: RscDisplayInventory number of controls do not match (Count %1)",_count]] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
closeDialog 0;
SPYGLASS_END
};
if (!isNull (findDisplay 148)) then {
sleep 0.5;
if ((lbSize 104)-1 > 3) exitWith {
[profileName,getPlayerUID player,"MenuBasedHack_RscDisplayConfigureControllers"] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,"Menu Hack: RscDisplayConfigureControllers (JME 313)"] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
closeDialog 0;
SPYGLASS_END
};
};
_display = findDisplay 54;
if (!isNull _display) then {
{
if (_x && !isNull _display) exitWith {
[profileName,getPlayerUID player,"MenuBasedHack_RscDisplayInsertMarker"] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,"Menu Hack: RscDisplayInsertMarker"] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
closeDialog 0;
SPYGLASS_END
};
} forEach [
(toLower ctrlText (_display displayCtrl 1001) != toLower localize "STR_A3_RscDisplayInsertMarker_Title"),
{if (buttonAction (_display displayCtrl _x) != "") exitWith {true}; false} forEach [1,2]
];
};
_display = findDisplay 131;
if (!isNull _display) then {
//These shouldn't be here...
(_display displayCtrl 102) ctrlRemoveAllEventHandlers "LBDblClick";
(_display displayCtrl 102) ctrlRemoveAllEventHandlers "LBSelChanged";
{
if (_x && !isNull _display) exitWith {
[profileName,getPlayerUID player,"MenuBasedHack_RscDisplayConfigureAction"] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,"Menu Hack: RscDisplayConfigureAction"] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
closeDialog 0;
SPYGLASS_END
};
} forEach [
(toLower ctrlText (_display displayCtrl 1000) != toLower localize "STR_A3_RscDisplayConfigureAction_Title"),
{if (buttonAction (_display displayCtrl _x) != "") exitWith {true}; false} forEach [1,104,105,106,107,108,109]
];
};
_display = findDisplay 163;
if (!isNull _display) then {
(_display displayCtrl 101) ctrlRemoveAllEventHandlers "LBDblClick";
(_display displayCtrl 101) ctrlRemoveAllEventHandlers "LBSelChanged";
{
if (_x && !isNull _display) exitWith {
[profileName,getPlayerUID player,"MenuBasedHack_RscDisplayControlSchemes"] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,"Menu Hack: RscDisplayControlSchemes"] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
closeDialog 0;
SPYGLASS_END
};
} forEach [
(toLower ctrlText (_display displayCtrl 1000) != toLower localize "STR_DISP_OPTIONS_SCHEME"),
{if (buttonAction (_display displayCtrl _x) != "") exitWith {true}; false} forEach [1,2]
];
};
_display = findDisplay 316000;
if (!isNull _display && !isNil "life_admin_debug" && !life_admin_debug) exitWith {
[profileName,getPlayerUID player,"MenuBasedHack_RscDisplayDebugPublic"] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,"Menu Hack: RscDisplayDebugPublic"] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
closeDialog 0;
SPYGLASS_END
};
/* We'll just move the no-recoil check into this thread. */
if ((unitRecoilCoefficient player) < 1) then {
[profileName,getPlayerUID player,"No_recoil_hack"] remoteExec ["SPY_fnc_cookieJar",RSERV];
[profileName,"No recoil hack"] remoteExec ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
failMission "SpyGlass";
};
/*
Display Validator
Loops through and makes sure none of the displays were modified..
Checks every 5 minutes.
*/
if ((time - _timeStamp) > 300) then {
_timeStamp = time;
{
_onLoad = getText(configFile >> (_x select 0) >> "onLoad");
_onUnload = getText(configFile >> (_x select 0) >> "onUnload");
if (_onLoad != _x select 1 || _onUnload != _x select 2) exitWith {
[profileName,getPlayerUID player,format ["Modified_Method_%1",_x select 0]] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,format ["Modified Display Method %1 (Memory Edit)",_x select 0]] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
SPYGLASS_END
};
}
forEach [
["RscDisplayMainMap","[""onLoad"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayGetReady","[""onLoad"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayInventory","[""onLoad"",_this,""RscDisplayInventory"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayInventory"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayLoadMission","[""onLoad"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayInterrupt","[""onLoad"",_this,""RscDisplayInterrupt"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayInterrupt"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptionsVideo","[""onLoad"",_this,""RscDisplayOptionsVideo"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptionsVideo"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptions","[""onLoad"",_this,""RscDisplayOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayAVTerminal","[""onLoad"",_this,""RscDisplayAVTerminal"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayAVTerminal"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayConfigureAction","[""onLoad"",_this,""RscDisplayConfigureAction"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayConfigureAction"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayConfigureControllers","[""onLoad"",_this,""RscDisplayConfigureControllers"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayConfigureControllers"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayControlSchemes","[""onLoad"",_this,""RscDisplayControlSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayControlSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayCustomizeController","[""onLoad"",_this,""RscDisplayCustomizeController"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayCustomizeController"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayDebriefing","[""onLoad"",_this,""RscDisplayDebriefing"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayDebriefing"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayDiary","[""onLoad"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDiary"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayGameOptions","[""onLoad"",_this,""RscDisplayGameOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayGameOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayJoystickSchemes","[""onLoad"",_this,""RscDisplayJoystickSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayJoystickSchemes"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayLoading","[""onLoad"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayMicSensitivityOptions","[""onLoad"",_this,""RscDisplayMicSensitivityOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayMicSensitivityOptions"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptionsAudio","[""onLoad"",_this,""RscDisplayOptionsAudio"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptionsAudio"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayOptionsLayout","[""onLoad"",_this,""RscDisplayOptionsLayout"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayOptionsLayout"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayStart","[2] call compile preprocessFileLineNumbers getText (configfile >> 'CfgFunctions' >> 'init'); ['onLoad',_this,'RscDisplayLoading','Loading'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayLoading"",'3DENDisplaysTemp'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"],
["RscDisplayInsertMarker","[""onLoad"",_this,""RscDisplayInsertMarker"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')","[""onUnload"",_this,""RscDisplayInsertMarker"",'GUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')"]
];
};
uiSleep 1;
};

View File

@@ -0,0 +1,12 @@
#include "..\script_macros.hpp"
/*
File: fn_notifyAdmins.sqf
Author: Bryan "Tonic" Boardwine
Description:
Checks if player is admin and notifies them that of the
flagged person.
*/
if (isServer && !hasInterface) exitWith {}; //NO SERVER DO NOT EXECUTE IT!
if (FETCH_CONST(life_adminlevel) < 1) exitWith {};
hint parseText format ["<t align='center'><t color='#FF0000'><t size='3'>SPY-GLASS</t></t><br/>Cheater Flagged</t><br/><br/>Name: %1<br/>Detection: %2",(_this select 0),(_this select 1)];

View File

@@ -0,0 +1,16 @@
/*
File: fn_observe.sqf
Author: Bryan "Tonic" Boardwine
Description:
This is the observation part of SPY-GLASS, it reports to the RPT log
of unusual activity by the player.
*/
private ["_pName","_pUID","_pReason"];
_pName = [_this,0,"",[""]] call BIS_fnc_param;
_pUID = [_this,1,"",[""]] call BIS_fnc_param;
_pReason = [_this,2,"",[""]] call BIS_fnc_param;
if (_pName isEqualTo "" || _pUID isEqualTo "" || _pReason isEqualTo "") exitWith {}; //Bad params passed..
diag_log format ["||SPY-GLASS Observes|| Name: %1 | UID: %2 | Reason: %3",_pName,_pUID,_pReason]; //Outputs to RPT for external programs to parse,log,react to.

View File

@@ -0,0 +1,104 @@
#include "..\script_macros.hpp"
#define SPY_SETTINGS(TYPE,SETTING) TYPE(missionConfigFile >> "SpyGlass" >> SETTING)
/*
File: fn_variableCheck.sqf
Author:
Description:
Checks against harmful variables, disable this if client-performance is
to bad in the fn_initSpy.sqf, the menuCheck should be good enough!
*/
private ["_BIS_Functions","_LIFE_Functions","_SERVER_Functions","_SOCK_Functions","_DB_Functions","_allowedVariables","_checkFunction","_BIS_UI_Functions","_allowedVariables_UI","_profileCount"];
_BIS_Functions = SPY_SETTINGS(getArray,"BIS_Functions");
_BIS_UI_Functions = SPY_SETTINGS(getArray,"BIS_UI_Functions");
_LIFE_Functions = SPY_SETTINGS(getArray,"LIFE_Functions");
_SERVER_Functions = SPY_SETTINGS(getArray,"SERVER_Functions");
_SOCK_Functions = SPY_SETTINGS(getArray,"SOCK_Functions");
_DB_Functions = SPY_SETTINGS(getArray,"DB_Functions");
_SPY_Functions = SPY_SETTINGS(getArray,"SPY_Functions");
_allowedVariables = SPY_SETTINGS(getArray,"allowedVariables");
_allowedVariables_UI = SPY_SETTINGS(getArray,"allowedVariables_UI");
_profileCount = count allVariables profileNameSpace;
/* Build Player Slots because we name them and they are counted as variables */
for "_i" from 1 to 125 do {
if (_i <= SPY_SETTINGS(getNumber,"civSlotNumber")) then {_allowedVariables pushBack [format ["civ_%1",_i],"OBJECT"]};
if (_i <= SPY_SETTINGS(getNumber,"copSlotNumber")) then {_allowedVariables pushBack [format ["cop_%1",_i],"OBJECT"]};
if (_i <= SPY_SETTINGS(getNumber,"medSlotNumber")) then {_allowedVariables pushBack [format ["medic_%1",_i],"OBJECT"]};
};
/* First lets clear out the memory of potentially bad variables */
{
if (!isNil _x) then {
if (!(_x in _BIS_Functions)) then {
if (!(_x in _LIFE_Functions)) then {
if (!(_x in _SERVER_Functions)) then {
if (!(_x in _SOCK_Functions)) then {
if (!(_x in _DB_Functions)) then {
if (!(_x in _BIS_UI_Functions)) then {
if (!(_x in _SPY_Functions)) then {
_varType = typeName (uiNamespace getVariable _x);
_find = _allowedVariables find [_x,_varType];
if (_find isEqualTo -1) then {
uiNamespace setVariable [_x,nil];
};
};
};
};
};
};
};
};
};
} forEach (allVariables uiNamespace);
/* Some people may be like WTF ALL DEM Checks... It was either this or lazy eval which could have a performance impact on the client. */
_checkFunction = {
{
if (!isNil _x) then {
if (!(_x in _BIS_Functions)) then {
if (!(_x in _LIFE_Functions)) then {
if (!(_x in _SERVER_Functions)) then {
if (!(_x in _SOCK_Functions)) then {
if (!(_x in _DB_Functions)) then {
if (!(_x in _SPY_Functions)) then {
_varType = typeName (missionNamespace getVariable _x);
_find = _allowedVariables find [_x,_varType];
if (_find isEqualTo -1) then {
diag_log format ["Variable: %1 is not allowed TYPE: %2 NS: MN",_x,_varType];
failMission "SpyGlass";
};
};
};
};
};
};
};
};
} forEach allVariables missionNamespace;
};
_uiCheckFunction = {
{
if (!isNil _x) then {
if (!(_x in _BIS_UI_Functions)) then {
_varType = typeName (uiNamespace getVariable _x);
_find = _allowedVariables_UI find [_x,_varType];
if (_find isEqualTo -1) then {
diag_log format ["Variable: %1 is not allowed TYPE: %2 NS: UI",_x,_varType];
failMission "SpyGlass";
};
};
};
} forEach allVariables uiNamespace;
};
for "_i" from 0 to 1 step 0 do {
objNull call _checkFunction;
uiSleep 10;
objNull call _uiCheckFunction;
if (!((count allVariables profileNameSpace) isEqualTo _profileCount) || ((count allVariables parsingNamespace) > 0)) then {
failMission "SpyGlass";
};
uiSleep (5 * 60); //Wait 5 minutes
};

View File

@@ -0,0 +1,581 @@
waitUntil {!isServer && !isNull player && player isEqualTo player};
if (player diarySubjectExists "controls") exitWith {};
player createDiarySubject ["credits","Credits"];
player createDiarySubject ["changelog","Change Log"];
player createDiarySubject ["serverrules","General Rules"];
player createDiarySubject ["policerules","Police Procedures/Rules"];
player createDiarySubject ["safezones","Safe Zones (No Killing)"];
//player createDiarySubject ["civrules","Civilian Rules"];
player createDiarySubject ["illegalitems","Illegal Activity"];
//player createDiarySubject ["gangrules","Gang Rules"];
//player createDiarySubject ["terrorrules","Terrorism Rules"];
player createDiarySubject ["controls","Controls"];
/* Example
player createDiaryRecord ["", //Container
[
"", //Subsection
"
TEXT HERE<br/><br/>
"
]
];
*/
player createDiaryRecord ["credits",
[
"AsYetUntitled",
"
AsYetUntitled (formerly ArmaLife) is a GitHub project which aims to update and keep adding new features to the original 'Altis Life RPG' by Tonic.<br/><br/>
"
]
];
player createDiaryRecord ["changelog",
[
"Altis Life Changelog",
"
The full changelog can be found on the AsYetUntitled/Framework repository on GitHub. https://github.com/AsYetUntitled/Framework/<br/><br/>
v4.4 release 3!<br/>
By: danielstuart14<br/>
Date: 31. May 2016<br/><br/>
v4.4 release 2!<br/>
By: danielstuart14<br/>
Date: 20. March 2016<br/><br/>
v4.4 release 1!<br/>
By: danielstuart14<br/>
Date: 12. February 2016<br/><br/>
v4.3 release 4!<br/>
By: danielstuart14<br/>
Date: 31. January 2016<br/><br/>
v4.3 release 3!<br/>
By: danielstuart14<br/>
Date: Not released<br/><br/>
v4.3 release 2!<br/>
By: danielstuart14<br/>
Date: 22. January 2016<br/><br/>
v4.3 release 1!<br/>
By: danielstuart14<br/>
Date: 19. January 2016<br/><br/>
"
]
];
player createDiaryRecord ["changelog",
[
"Server Change Log",
"
This section is meant for people doing their own edits to the mission, DO NOT REMOVE THE ABOVE.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Exploits",
"
These are considered exploits, and you will not be kicked, but banned.<br/><br/>
1. Getting out of jail via any method other than paying bail or escaping via helicopter.<br/>
2. Killing yourself to get out of roleplay. Getting out of being tazed, restrained, arrested, jail, etc. If the log shows you got arrested, then you died, you will be banned. Do not pay bail and kill yourself for an easy ride home. Walk you lazy turd.<br/>
3. Duping items and/or money. If someone sends you an unobtainable amount of money right at the start of the game, report to an admin IMMEDIATELY and transfer said money to an admin. Do this ASAP or an admin could ban you if they see that much on you without question.<br/>
4. Using clearly hacked items. If a hacker comes in and spawns unobtainable items, you could be banned for using said items. Report the items to the admins immediately and stay away from them.<br/>
5. Abusing bugs or game mechanics for gain. Is there a replicating gun somewhere? Report it and leave it alone. If an admin catches you abusing the glitch, ban.<br/><br/>
"
]
];
player createDiaryRecord ["safezones",
[
"Safe Zones",
"
If bombing (bombing can be intentionally exploding a vehicle), robbing, or killing occurs around these or in these areas it is punishable by ban.<br/><br/>
Any vehicle spawn (shop or garage)<br/>
Any weapon shop<br/>
All Police HQs<br/>
Rebel Outposts<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Bannable Offenses",
"
Consider this your one and only warning.<br/><br/>
1. Hacking<br/>
2. Cheating<br/>
3. Exploiting (See 'Exploits')<br/>
4. Being kicked 3 or more times.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Cop Interaction",
"
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. Civilians can be arrested for looking in cops' backpacks/vehicles. Constantly doing this will result in your removal from the server.<br/>
2. Civilians can be arrested for following cops in game in order to give away their position.<br/>
3. Civilians or Rebels who take up arms to kill cops in town or elsewhere for no RP reason will be considered RDMing. See RDMing section.<br/>
4. Following and or harassing cops for long periods of time will be considered griefing and/or spamming, and will result in your removal from the server.<br/>
5. Actively blocking cops from doing their duties can lead to your arrest. Constantly doing this will result in your removal from the server.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Boats",
"
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. Repeatedly pushing boats without permission.<br/>
2. Pushing a boat with the intention of hurting or killing someone. This is not RP, it is just a flaw in the mechanics.<br/>
3. Purposefully running over swimmers/divers.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Aviation",
"
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. Purposefully ramming a helicopter into anything. Other helicopters, vehicles, buildings.<br/>
2. Flying below 150m over the city constantly. Once is illegal, more than that you risk crashing into the city, thus against server rules.<br/>
3. Stealing helicopters without proper warning and significant time for the driver to lock the vehicle. If they land and run away without locking, fine, if they just get out and you get in before they get a chance to lock it, no no.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Vehicles",
"
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. Purposefully running people over (VRDM). There are accidents, and then there is going out of your way to run someone over.<br/>
2. Purposefully throwing yourself in front of vehicles in order to die/get hurt.<br/>
3. Ramming into other vehicles in order to cause an explosion.<br/>
4. Constantly trying to enter vehicles that do not belong to you in order to grief the vehicle owner, and not trying to RP.<br/>
5. Stealing a vehicle just to crash it or otherwise destroy it.<br/>
6. Purchasing multiple vehicles for the purpose of doing any of the above.<br/>
7. The only reason for shooting at a vehicle would be to disable it and/or fire warning shots in a role-play scenario.You are not to deliberately destroy enemies vehicles.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Communication Rules",
"
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. Side Chat may not be used to play music or otherwise micspam.<br/>
2. Spamming any chat channel will result in your removal.<br/>
4. Teamspeak channels are split up into areas for a reason. Cops must be in the cop channels at all times.<br/>
5. Civilians cannot be in any cop channels on teamspeak in order to gather information on their location or movements. Civs caught doing this will be removed the channel. Repeat offenders can be kicked or banned from both the game and teamspeak.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Random Deathmatching (RDM)",
"
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. Killing anyone without a roleplay cause.<br/>
2. Declaring a rebellion is not a cause to kill anyone, even cops.<br/>
3. Cops and civilians/rebels can only commence in a shootout if there are reasons relating to a crime.<br/>
4. If you are killed in the crossfire of a fight, it is not RDM.<br/>
5. Killing someone in an attempt to protect yourself or others is not RDMing.<br/>
6. Shooting a player without giving reasonable time to follow demands is considered RDM.<br/><br/>
These are all judged by admins on a case by case basis.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"New Life Rule",
"
The New Life Rule applies to police and civilians.<br/><br/>
Items on this list may result in your removal from the server and/or ban, based on the admins discretion.<br/><br/>
1. If you are killed you must wait 15 minutes before returning to the scene of your death.<br/>
2. If you die during roleplay your past crimes are forgotten, but you also cannot seek revenge.<br/>
3. If you are RDM'd, it is not a new life.<br/>
4. If you manually respawn, it is not a new life.<br/>
5. If you purposefully kill yourself to avoid roleplay, it is not a new life.<br/><br/>
"
]
];
player createDiaryRecord ["serverrules",
[
"Don't Be A Dick!",
"
If an admin has to tell you that you are being a dick, you are doing dickish things.<br/>
Causing others grief, disrupting roleplay, the list goes on.<br/>
Just don't be a dick okay?<br/>
This rule may be invoked at an admin's discretion.<br/><br/>
"
]
];
// Police Section
player createDiaryRecord ["policerules",
[
"Crisis Negotiation",
"
Crisis Negotiation must be handled by a Sergeant. If one is not available, the person with the next highest rank must handle the situation.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"The Federal Reserve",
"
1. The Federal Reserve is illegal for civilians to enter, unless they have been given authorization. If civilians enter without authorization they are to be escorted off-site or arrested if they persist.
2. Helicopters flying over the Federal Reserve may be asked to leave and disabled if they refuse.<br/>
3. If the Federal Reserve is getting robbed, it is encouraged that all available officers move in to stop it.<br/>
4. Nearby officers should immediately head to the Federal Reserve to assist. Petty crimes can be dropped during a robbery.<br/>
5. Lethal force on bank robbers may be used if no other alternative is available. Every option to taze and arrest the person should be made first.<br/>
6. Police may not fire blindly into the building.<br/>
7. The police should evacuate the civilians from the building during a robbery.<br/>
8. Any civilian who actively makes an attempt to block the police from entering the building may be treated as an accomplice.<br/>
9. Supervisory officers may hire individuals or contract a group of people to work as security guards for the bank. See 'Contracting' section for more information.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Aviation",
"
1. No helicopter can land within city limits without authorization from the highest ranking officer online. (Exceptions being what is listed below.)<br/>
Kavala: The hospital helipad (037129) or docks (031128).<br/>
Athira: The sports field (138185) or behind the DMV (140188).<br/>
Pyrgos: The fields North/East of DMV (170127)<br/>
Sofia: Opposite the car shop (258214) or the fields Southeast of the garage (257212)<br/>
Small towns: An appropriate location may be chosen. This is to be judged by officers on a case by case basis.<br/><br/>
2. Helicopters may not land on roads.<br/>
3. Police may temporarily forbid landing at but it cannot remain closed for a long period of time.<br/>
4. Helicopters cannot fly below 150m over the city without authorization.<br/>
5. Helicopters cannot hover over the city. Cops may only hover over the city if there is an active police operation going on.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Illegal Areas",
"
1. Gang areas are not considered illegal. Thus a cop may enter without a raid, but may not restrain or stop anyone inside without probable cause/illegal activity. (Talking to the gang NPC is NOT probable cause/illegal activity.)<br/>
2. Do not enter an illegal area unless it is part of a raid. see Raiding/Camping.<br/>
3. If you chase someone into an illegal area, call for backup.<br/>
4. Under no circumstances is an officer allowed to camp any illegal area.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Patrolling",
"
1. Police may patrol the island's roads and towns searching for abandoned vehicles and criminal activity.<br/>
2. Patrols can be done on foot inside of a town, or in a vehicle when outside.<br/>
3. Patrols do not include illegal areas. See Raiding/Camping.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Checkpoints",
"
Cops are encouraged to setup checkpoints in strategic areas to help combat illegal activity and promote safety on the road.<br/><br/>
1. A checkpoint must consist of 3 or more officers, utilizing 2 or more vehicles. An ATV does not count as one of the required vehicles, but may still be used.<br/>
2. A checkpoint can not be setup within 300m of an illegal area. Basically, you cannot set one up on top of an illegal area.<br/>
3. Checkpoints may only be setup on roads, but it does not have to be on a crossroad.<br/>
4. Checkpoints do not have to be marked on the map.<br/><br/>
Proper Checkpoint Procedure:<br/>
1. Have the driver stop the vehicle at a safe distance and turn off the engine.<br/>
2. Ask the driver and any passengers if they have any weapons.<br/>
3. Ask the driver and any passengers to exit the vehicle. If they have weapons, do not immediately restrain them when they get out, tell them to lower their weapons and given them a reasonable amount of time to do so.<br/>
4. Ask them where they are headed to and from.<br/>
5. Ask if they will submit to a search.<br/>
6. If they allow a search, you may restrain them and search them.<br/>
7. If they do not submit to a search, you must let them go, unless there is probable cause.<br/>
8. After the search is done, you may allow them to re-enter their vehicle and drive away.<br/>
9. In case anything illegal is found, the person may be ticketed or arrested depending on the crime.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Vehicles",
"
1. Vehicles in the parking lot, or are reasonably parked elsewhere should be left alone.<br/>
2. Vehicles that look abandoned, broken, with no driver, can be impounded.<br/>
3. Boats should be parked reasonably on shore.<br/>
4. Any vehicle that hasn't moved in a significant amount of time may be impounded.<br/>
5. Impounding is an essential job for a cop, it helps keep the server clean and less laggy.<br/>
6. If in doubt, always search the vehicle and message the owner(s) before impounding.<br/>
7. Police speedboats or Hunter HMGs may be used to assist in apprehending criminals. The weapon should be used to disable vehicles, not to blow them up.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Speeding",
"
The following speeds are to be enforced by the Altis Police Force for the absolute safety of the citizens of Kavala and all travelling beyond the city.<br/><br/>
Inside major cities:<br/>
Small roads: 50km/h<br/>
Main roads: 65km/h<br/>
Outside major cities:<br/>
Small roads: 80km/h<br/>
Main roads: 110km/h<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"City Protocol",
"
1. Officers may patrol major cities - Kavala, Athira, Pyrgos and Sofia.<br/>
2. Officers may stop by the car shop to make sure there are no cars that need to be impounded.<br/>
3. Officers may not stand around or loiter in the centre of town.<br/>
4. Officers may enter the town in a large number should a rebellious act occur. After the area is clear, they need to leave the town again.<br/>
5. Martial law may not be declared at any time.<br/>
6. The Police HQ buildings are illegal for civilians to enter without authorization, however it is NOT illegal for civilians to be nearby unless they are causing a nuisance.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Arresting and Ticketing",
"
Arresting should be done to criminals who are considered a danger to themselves or others.<br/><br/>
1. You may not arrest someone if you have given them a ticket and they paid it.<br/>
2. You must tell the suspect why they are being arrested before you arrest them.<br/>
3. If a civilian is wanted, you may arrest them. Do not kill them, unless the situation falls under the 'Use of Lethal Force' section.<br/><br/>
Ticketing a civilian is considered a warning for the civilian. If they break a law, but do not pose a threat to anyone, you may ticket a civilian.<br/><br/>
1. Tickets must be a reasonable price.<br/>
2. Ticket prices should be based off of the crimes committed.<br/>
3. Refusal to pay a legit ticket is grounds for arrest.<br/>
4. Giving a civilian and illegitimate ticket, such as $100k for speeding, etc., is not allowed and will result in your removal from the police department.<br/><br/>
A complete list of all crimes and the appropriate punishments should be given to officers during training. If in doubt, or if you have not been trained, ask a higher ranking officer what to do.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Weapons",
"
A cop is NEVER allowed to supply civilians with weapons. This will get you banned from the server and removed from being a cop.<br/><br/>
Legal Weapons for Civilians to carry with a permit:<br/>
1. P07<br/>
2. Rook<br/>
3. ACP-C2<br/>
4. Zubr<br/>
5. 4-five<br/>
6. PDW2000<br/><br/>
Any other weapon (Including Silenced P07 [Considered a Police Weapon]) is illegal.<br/><br/>
1. Civilians are not allowed to have a weapon out within the town limits.<br/>
2. Civilians may have a gun out when they are not in the town. However they should submit to a license search if confronted by an officer and should have the gun lowered (Press Ctrl Twice).<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Use of Non-Lethal Force",
"
At this time the Taser (Silenced P07) is the only form of Non-Lethal Force.<br/><br/>
1. Taser should be used to incapacitate non complying civilians in order to restrain them.<br/>
2. Do not discharge your Taser unless you intend to incapacitate a civilian, randomly discharging your weapon will result in your suspension.<br/>
3. Only use your Taser in compliance with the laws and the rules, do NOT enforce your will on others.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Raiding/Camping",
"
Raiding is defined as a squad of police officers invading an area of high criminal activity in order to stop the criminals in illegal acts.<br/><br/>
1. In order to raid an area, the cops must have at least 4 officers involved, one of which must be a Sergeant or above.<br/>
2. All civilians in a raid area may be restrained and searched. If nothing illegal is found, you must let them go.<br/>
3. If illegals are found during a search, you may proceed to arrest or fine as usual.<br/>
5. Lethal force is only authorized as described under 'Use of Lethal Force'.<br/>
6. After the area is secure, the officers must leave the area.<br/>
7. An area cannot be raided again for 20 minutes after a previous raid.<br/>
8. If the raid is a failure (All officers die), the 20 minute timer still applies to those officers.<br/>
9. Backup may be called in, but it may not consist of fallen officers (see 'New Life Rule').<br/><br/>
Camping is defined as the prolong stay of an officer in an area.<br/><br/>
1. Checkpoints are not considered camping. See Checkpoint section for a definition of proper checkpoint procedures.<br/>
2. See Bank Robbery and Agia Marina Protocol sections for more info on camping in the main town.<br/>
3. Camping of illegal areas is staying longer than needed after a raid, or if officers do not conduct a raid but continue to watch and take action against civilians entering the area.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Chain of Command",
"
The highest ranking officer on duty is in charge of the police force outside of admins currently online. The high ranking officer is expected to follow the rules and guidelines of his/her rank, and must report to the admin in case any action need be taken.<br/><br/>
Police Chain of Command:<br/>
1. Chief<br/>
2. Deputy Chief<br/>
3. Superintendent<br/>
4. Captain<br/>
5. Lieutenant<br/>
6. Sergeant<br/>
7. Senior Patrol Officer<br/>
8. Patrol Officer<br/>
9. Cadet<br/><br/>
Cops in game who are not enrolled/accepted into the SPD are the lowest tier and have no say in police operations.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"Use of Lethal Force",
"
1. Use of Lethal force is only permitted for the protection of your life, another officers life, or a civilians life, if and only if non-lethal force would not be effective.<br/>
2. Discharging of a weapon when not under threat or not during training exercises is not allowed. Officers caught in violation of this rule will be removed from the server and suspended from the SPD.<br/>
3. Failure to follow proper weapons discipline and procedure will get you removed from the server and suspended from the SPD.<br/><br/>
"
]
];
player createDiaryRecord ["policerules",
[
"TeamSpeak Rule",
"
1. All cops must be on TeamSpeak 3 in a designated cop channel. Failure to be on TeamSpeak during an admin check will result in your immediate dismissal from the server.<br/>
2. Please join TeamSpeak BEFORE you spawn in as a cop, heck, join TeamSpeak before you even join the server.<br/><br/>
"
]
];
// Illegal Items Section
player createDiaryRecord ["illegalitems",
[
"Rebel Rules",
"
A rebel is one who rises in armed resistance against a government. In this case it would be the police. However, due to the small amount of police compared to the possible amount of rebels, do not attack the police without a reason, please be civil and use common sense, and don't take the word rebel literally, but instead how it will make this server fun for all.<br/><br/>
1. A rebel must first form a gang, and then declare intentions.<br/>
2. Resistance does not excuse RDMing (See RDMing in General Rules)<br/>
3. Resistance roleplay should be conducted in more ways than constantly robbing the bank or shooting police officers.<br/>
4. Resistance must be coordinated.<br/>
5. A PROPER reason must be behind each and every attack.<br/><br/>
"
]
];
player createDiaryRecord ["illegalitems",
[
"Gang Rules",
"
1. Being in a gang is not illegal. Only when illegal crimes are committed.<br/>
2. Being in a gang area is not illegal. Only when partaking in illegal activities.<br/>
3. Gangs may hold and control gang areas. Other gangs may attack a controlling gang to compete for control of a gang area.<br/>
4. To declare war on another gang, the leader must announce it in global and all gang members of both gangs must be notified. For a more long term gang war, a declaration should be made on the forums.<br/>
5. Gangs may not kill unarmed civilians, unless said civilian is part of a rival gang and in your gangs controlled area.<br/>
6. Gangs may not kill civilians, unless they are under threat. Killing unarmed civilians because they do not comply is considered RDM, but you can injure/damage.<br/><br/>
"
]
];
player createDiaryRecord ["illegalitems",
[
"Illegal Vehicles",
"
A civilian in control of the following prohibited vehicles is subject to the consequences defined in the unauthorized control of a prohibited vehicle law.<br/><br/>
1. Ifrit<br/>
2. Speedboat<br/>
3. Hunter<br/>
4. Police Offroad<br/><br/>
"
]
];
player createDiaryRecord ["illegalitems",
[
"Illegal Weapons",
"
A civilian in possession of the following is subject to the consequences as defined in the illegal possession of a firearm law.<br/><br/>
1. MX Series<br/>
2. Katiba Series<br/>
3. TRG Series<br/>
4. Mk.20 Series<br/>
5. Mk.18 ABR<br/>
6. SDAR Rifle<br/>
7. Sting SMG<br/>
8. Silenced P07 (Taser)<br/>
9. Any explosives<br/><br/>
"
]
];
player createDiaryRecord ["illegalitems",
[
"Illegal Items",
"
The following items are illegal to posses:<br/><br/>
1. Turtle<br/>
2. Cocaine<br/>
3. Heroin<br/>
4. Cannabis<br/>
5. Marijuana<br/><br/>
"
]
];
// Controls Section
player createDiaryRecord ["controls",
[
"Police and medic controls",
"
F: Vehicle siren.<br/>
L: Speed radar (police only and weapon is P07 Suppressed).<br/>
Left Shift + L: Activates siren lights.<br/>
Left Shift + R: Restrain (police only).<br/><br/>
"
]
];
player createDiaryRecord ["controls",
[
"Civilian controls",
"
Left Shift + G: Knock out / stun (Weapon required. Used for robbing).<br/>
Spacebar: Place storage container.<br/><br/>
"
]
];
player createDiaryRecord ["controls",
[
"General controls",
"
Y: Open Player Menu.<br/>
U: Lock and unlock vehicles and houses.<br/>
T: Vehicle trunk and house virtual item storage.<br/>
Left Shift + B: Surrender (hands on head).<br/>
Left Windows: Main interaction key. Used for interacting with objects like vehicles, houses, ATMs, and restrained players. Can be rebound to a single key like H by pressing ESC->Configure->Controls->Custom->Use Action 10.<br/>
Left Shift + H: Holsters the weapon in your hands.<br/>
Left Ctrl + H: Revert holster action.<br/>
Shift + Spacebar: Jump.<br/>
Left Shift + O: (un)fade sound (ear plugs).<br/><br/>
"
]
];

View File

@@ -0,0 +1,383 @@
/*
* ARRAY FORMAT:
* 0: STRING (Classname)
* 1: STRING (Display Name, leave as "" for default)
* 2: SCALAR (Price)
* 3: STRING (Conditions) - Must return boolean :
* String can contain any amount of conditions, aslong as the entire
* string returns a boolean. This allows you to check any levels, licenses etc,
* in any combination. For example:
* "call life_coplevel && license_civ_someLicense"
* This will also let you call any other function.
*
* Clothing classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment
* Backpacks/remaining classnames can be found here (TIP: Search page for "pack"): https://community.bistudio.com/wiki/Arma_3_CfgVehicles_EMPTY
*
*/
class Clothing {
class bruce {
title = "STR_Shops_C_Bruce";
conditions = "";
side = "civ";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" },
{ "U_C_Poloshirt_stripped", "Poloshirt stripped", 125, "" },
{ "U_C_Poloshirt_redwhite", "Poloshirt Red/White", 150, "" },
{ "U_C_Poloshirt_salmon", "Poloshirt Salmon", 175, "" },
{ "U_C_Poloshirt_blue", "Poloshirt Blue", 250, "" },
{ "U_C_Poor_2", "Rag tagged clothes", 250, "" },
{ "U_C_Poloshirt_burgundy", "Poloshirt Burgundy", 275, "" },
{ "U_C_Poloshirt_tricolour", "Poloshirt Tricolor", 350, "" },
{ "U_IG_Guerilla2_2", "Green stripped shirt & Pants", 650, "" },
{ "U_IG_Guerilla3_1", "Brown Jacket & Pants", 735, "" },
{ "U_OrestesBody", "Surfing On Land", 1100, "" },
{ "U_IG_Guerilla2_3", "The Outback Rangler", 1200, "" },
{ "U_C_HunterBody_grn", "The Hunters Look", 1500, "" },
{ "U_C_WorkerCoveralls", "Mechanic Coveralls", 2500, "" },
{ "U_NikosAgedBody", "Casual Wears", 5000, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" },
{ "H_Bandanna_camo", "Camo Bandanna", 120, "" },
{ "H_Bandanna_surfer", "Surfer Bandanna", 130, "" },
{ "H_Bandanna_khk", "Khaki Bandanna", 145, "" },
{ "H_Cap_blu", "", 150, "" },
{ "H_Cap_grn", "", 150, "" },
{ "H_Cap_grn_BI", "", 150, "" },
{ "H_Cap_oli", "", 150, "" },
{ "H_Cap_red", "", 150, "" },
{ "H_Cap_tan", "", 150, "" },
{ "H_Bandanna_gry", "Grey Bandanna", 150, "" },
{ "H_Bandanna_sgg", "Sage Bandanna", 160, "" },
{ "H_Bandanna_cbr", "", 165, "" },
{ "H_StrawHat", "Straw Fedora", 225, "" },
{ "H_Hat_tan", "", 265, "" },
{ "H_Hat_brown", "", 276, "" },
{ "H_Hat_grey", "", 280, "" },
{ "H_BandMask_blk", "Hat & Bandanna", 300, "" },
{ "H_Hat_blue", "", 310, "" },
{ "H_Hat_checker", "", 340, "" },
{ "H_Booniehat_tan", "", 425, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" },
{ "G_Shades_Black", "", 20, "" },
{ "G_Shades_Blue", "", 20, "" },
{ "G_Shades_Green", "", 20, "" },
{ "G_Shades_Red", "", 20, "" },
{ "G_Sport_Blackred", "", 25, "" },
{ "G_Sport_BlackWhite", "", 25, "" },
{ "G_Sport_Blackyellow", "", 25, "" },
{ "G_Sport_Checkered", "", 25, "" },
{ "G_Sport_Greenblack", "", 25, "" },
{ "G_Sport_Red", "", 25, "" },
{ "G_Lowprofile", "", 30, "" },
{ "G_Squares", "", 50, "" },
{ "G_Aviator", "", 100, "" },
{ "G_Combat", "", 125, "" },
{ "G_Lady_Mirror", "", 150, "" },
{ "G_Lady_Dark", "", 150, "" },
{ "G_Lady_Blue", "", 150, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" },
{ "B_OutdoorPack_blk", "", 500, "" },
{ "B_AssaultPack_khk", "", 2000, "" },
{ "B_AssaultPack_dgtl", "", 2000, "" },
{ "B_AssaultPack_rgr", "", 2000, "" },
{ "B_AssaultPack_sgg", "", 2000, "" },
{ "B_AssaultPack_blk", "", 2000, "" },
{ "B_AssaultPack_cbr", "", 2000, "" },
{ "B_AssaultPack_mcamo", "", 2000, "" },
{ "B_TacticalPack_oli", "", 2500, "" },
{ "B_Kitbag_mcamo", "", 3500, "" },
{ "B_Kitbag_sgg", "", 3500, "" },
{ "B_Kitbag_cbr", "", 3500, "" },
{ "B_FieldPack_blk", "", 5000, "" },
{ "B_FieldPack_ocamo", "", 5000, "" },
{ "B_FieldPack_oucamo", "", 5000, "" },
{ "B_Bergen_sgg", "", 6500, "" },
{ "B_Bergen_mcamo", "", 6500, "" },
{ "B_Bergen_rgr", "", 6500, "" },
{ "B_Bergen_blk", "", 6500, "" },
{ "B_Carryall_ocamo", "", 7500, "" },
{ "B_Carryall_oucamo", "", 7500, "" },
{ "B_Carryall_mcamo", "", 7500, "" },
{ "B_Carryall_oli", "", 7500, "" },
{ "B_Carryall_khk", "", 7500, "" },
{ "B_Carryall_cbr", "", 7500, "" }
};
};
class cop {
title = "STR_Shops_C_Police";
conditions = "";
side = "cop";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" },
{ "U_Rangemaster", "Cop Uniform", 25, "" },
{ "U_B_CombatUniform_mcam_tshirt", "", 350, "call life_coplevel >= 1" },
{ "U_B_CombatUniform_mcam_worn", "", 550, "call life_coplevel >= 2" },
{ "U_B_survival_uniform", "", 1250, "call life_coplevel >= 1" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" },
{ "H_Cap_police", "", 25, "" },
{ "H_Beret_blk_POLICE", "", 50, "call life_coplevel >= 2" },
{ "H_HelmetB_plain_mcamo", "", 75, "call life_coplevel >= 1" },
{ "H_MilCap_mcamo", "", 100, "call life_coplevel >= 2" },
{ "H_Booniehat_mcamo", "", 120, "call life_coplevel >= 1" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" },
{ "G_Squares", "", 10, "" },
{ "G_Shades_Blue", "", 20, "" },
{ "G_Sport_Blackred", "", 20, "" },
{ "G_Sport_Checkered", "", 20, "" },
{ "G_Sport_Blackyellow", "", 20, "" },
{ "G_Sport_BlackWhite", "", 20, "" },
{ "G_Shades_Black", "", 25, "" },
{ "G_Lowprofile", "", 30, "" },
{ "G_Combat", "", 55, "" },
{ "G_Aviator", "", 100, "" },
{ "G_Lady_Mirror", "", 150, "" },
{ "G_Lady_Dark", "", 150, "" },
{ "G_Lady_Blue", "", 150, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" },
{ "V_Rangemaster_belt", "", 800, "" },
{ "V_TacVest_blk_POLICE", "", 1000, "call life_coplevel >= 1" },
{ "V_PlateCarrier2_rgr", "", 1500, "call life_coplevel >= 2" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" },
{ "B_FieldPack_cbr", "", 500, "" },
{ "B_AssaultPack_cbr", "", 700, "" },
{ "B_Kitbag_cbr", "", 800, "" },
{ "B_Bergen_sgg", "", 2500, "" },
{ "B_Carryall_cbr", "", 3500, "" }
};
};
class dive {
title = "STR_Shops_C_Diving";
conditions = "license_civ_dive";
side = "civ";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" },
{ "U_B_Wetsuit", "", 2000, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" },
{ "G_Diving", "", 500, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" },
{ "V_RebreatherB", "", 5000, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" }
};
};
class gun_clothing {
title = "STR_Shops_C_Gun";
conditions = "license_civ_gun";
side = "civ";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" },
{ "V_Rangemaster_belt", "", 4900, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" }
};
};
class gang_clothing {
title = "STR_Shops_C_Gang";
conditions = "";
side = "civ";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" },
{ "V_Rangemaster_belt", "", 1900, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" }
};
};
class med_clothing {
title = "STR_MAR_EMS_Clothing_Shop";
conditions = "";
side = "med";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" },
{ "U_Rangemaster", "EMS Uniform", 50, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" },
{ "H_Cap_blu", "", 10, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" },
{ "G_Shades_Blue", "", 10, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" },
{ "B_FieldPack_oli", "EMS Backpack", 3000, "" }
};
};
class reb {
title = "STR_Shops_C_Rebel";
conditions = "license_civ_rebel";
side = "civ";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" },
{ "U_IG_Guerilla1_1", "", 5000, "" },
{ "U_I_G_Story_Protagonist_F", "", 7500, "" },
{ "U_I_G_resistanceLeader_F", "", 11500, "" },
{ "U_IG_leader", "Guerilla Leader", 15340, "" },
{ "U_O_PilotCoveralls", "", 15610, "" },
{ "U_O_SpecopsUniform_ocamo", "", 17500, "" },
{ "U_O_GhillieSuit", "", 50000, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" },
{ "H_Bandanna_camo", "", 650, "" },
{ "H_ShemagOpen_khk", "", 800, "" },
{ "H_ShemagOpen_tan", "", 850, "" },
{ "H_Shemag_olive", "", 850, "" },
{ "H_MilCap_oucamo", "", 1200, "" },
{ "H_HelmetO_ocamo", "", 2500, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" },
{ "G_Shades_Black", "", 20, "" },
{ "G_Shades_Blue", "", 20, "" },
{ "G_Sport_Blackred", "", 25, "" },
{ "G_Sport_Checkered", "", 25, "" },
{ "G_Sport_Blackyellow", "", 25, "" },
{ "G_Sport_BlackWhite", "", 25, "" },
{ "G_Lowprofile", "", 30, "" },
{ "G_Squares", "", 50, "" },
{ "G_Combat", "", 125, "" },
{ "G_Balaclava_blk", "", 150, "" },
{ "G_Balaclava_combat", "", 150, "" },
{ "G_Balaclava_lowprofile", "", 150, "" },
{ "G_Balaclava_oli", "", 150, "" },
{ "G_Bandanna_aviator", "", 150, "" },
{ "G_Bandanna_beast", "", 150, "" },
{ "G_Bandanna_blk", "", 150, "" },
{ "G_Bandanna_khk", "", 150, "" },
{ "G_Bandanna_oli", "", 150, "" },
{ "G_Bandanna_shades", "", 150, "" },
{ "G_Bandanna_sport", "", 150, "" },
{ "G_Bandanna_tan", "", 150, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" },
{ "V_BandollierB_cbr", "", 4500, "" },
{ "V_HarnessO_brn", "", 7500, "" },
{ "V_TacVest_khk", "", 12500, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" },
{ "B_OutdoorPack_blk", "", 500, "" },
{ "B_AssaultPack_khk", "", 2000, "" },
{ "B_AssaultPack_dgtl", "", 2000, "" },
{ "B_AssaultPack_rgr", "", 2000, "" },
{ "B_AssaultPack_sgg", "", 2000, "" },
{ "B_AssaultPack_blk", "", 2000, "" },
{ "B_AssaultPack_cbr", "", 2000, "" },
{ "B_AssaultPack_mcamo", "", 2000, "" },
{ "B_TacticalPack_oli", "", 2500, "" },
{ "B_Kitbag_mcamo", "", 3500, "" },
{ "B_Kitbag_sgg", "", 3500, "" },
{ "B_Kitbag_cbr", "", 3500, "" },
{ "B_FieldPack_blk", "", 5000, "" },
{ "B_FieldPack_ocamo", "", 5000, "" },
{ "B_FieldPack_oucamo", "", 5000, "" },
{ "B_Bergen_sgg", "", 6500, "" },
{ "B_Bergen_mcamo", "", 6500, "" },
{ "B_Bergen_rgr", "", 6500, "" },
{ "B_Bergen_blk", "", 6500, "" },
{ "B_Carryall_ocamo", "", 7500, "" },
{ "B_Carryall_oucamo", "", 7500, "" },
{ "B_Carryall_mcamo", "", 7500, "" },
{ "B_Carryall_oli", "", 7500, "" },
{ "B_Carryall_khk", "", 7500, "" },
{ "B_Carryall_cbr", "", 7500, "" }
};
};
class kart {
title = "STR_Shops_C_Kart";
conditions = "";
side = "civ";
uniforms[] = {
{ "NONE", "Remove Uniform", 0, "" },
{ "U_C_Driver_1_black", "", 1500, "" },
{ "U_C_Driver_1_blue", "", 1500, "" },
{ "U_C_Driver_1_red", "", 1500, "" },
{ "U_C_Driver_1_orange", "", 1500, "" },
{ "U_C_Driver_1_green", "", 1500, "" },
{ "U_C_Driver_1_white", "", 1500, "" },
{ "U_C_Driver_1_yellow", "", 1500, "" },
{ "U_C_Driver_2", "", 3500, "" },
{ "U_C_Driver_1", "", 3600, "" },
{ "U_C_Driver_3", "", 3700, "" },
{ "U_C_Driver_4", "", 3700, "" }
};
headgear[] = {
{ "NONE", "Remove Hat", 0, "" },
{ "H_RacingHelmet_1_black_F", "", 1000, "" },
{ "H_RacingHelmet_1_red_F", "", 1000, "" },
{ "H_RacingHelmet_1_white_F", "", 1000, "" },
{ "H_RacingHelmet_1_blue_F", "", 1000, "" },
{ "H_RacingHelmet_1_yellow_F", "", 1000, "" },
{ "H_RacingHelmet_1_green_F", "", 1000, "" },
{ "H_RacingHelmet_1_F", "", 2500, "" },
{ "H_RacingHelmet_2_F", "", 2500, "" },
{ "H_RacingHelmet_3_F", "", 2500, "" },
{ "H_RacingHelmet_4_F", "", 2500, "" }
};
goggles[] = {
{ "NONE", "Remove Glasses", 0, "" }
};
vests[] = {
{ "NONE", "Remove Vest", 0, "" }
};
backpacks[] = {
{ "NONE", "Remove Backpack", 0, "" }
};
};
};

View File

@@ -0,0 +1,62 @@
/*
Anything defined in Config_Garages is strictly just a garage, it will not act like a house.
price - Cost of the garage
garageSpawnPos[] - worldToModel position to spawn vehicles
garageSpawnDir - Offset to garage direction to spawn at (+-90 etc). It will be used in the manner: getDir _garage + spawnDir
garageBlacklists[] - List of blacklisted houses for buying garages
default: {}
*/
class Garages {
class Altis {
class Land_i_Garage_V1_F {
price = 500000;
garageSpawnPos[] = {-11.5,0,0};
garageSpawnDir = -90;
garageBlacklists[] = {};
};
class Land_i_Garage_V2_F : Land_i_Garage_V1_F{};
};
class Tanoa {
class Land_SM_01_shed_F {
price = 140000;
garageSpawnPos[] = {-11.404,3.81494,-1.64553};
garageSpawnDir = 0;
garageBlacklists[] = {};
};
class Land_i_Shed_Ind_F : Land_SM_01_shed_F {
garageBlacklists[] = {{3078.71,11012.1,0.119904}};
};
class Land_Addon_05_F {
price = 130000;
garageSpawnPos[] = {0.0668793,-13.8677,-1.85385};
garageSpawnDir = 0;
garageBlacklists[] = {{5684.74,10216.8,1.16831},{5730.31,10326.1,-0.30881}};
};
class Land_DPP_01_smallFactory_F {
price = 160000;
garageSpawnPos[] = {-1.13538,6.99512,-2.21416};
garageSpawnDir = 0;
garageBlacklists[] = {};
};
class Land_Warehouse_03_F {
price = 180000;
garageSpawnPos[] = {-3.90981,-8.46338,-2.53567};
garageSpawnDir = 90;
garageBlacklists[] = {};
};
};
};

View File

@@ -0,0 +1,129 @@
class CfgGather {
class Resources {
class apple {
amount = 5;
zones[] = { "apple_1", "apple_2", "apple_3", "apple_4" };
item = "";
zoneSize = 30;
};
class peach {
amount = 5;
zones[] = { "peaches_1", "peaches_2", "peaches_3", "peaches_4" };
item = "";
zoneSize = 30;
};
class heroin_unprocessed {
amount = 3;
zones[] = { "heroin_1" };
item = "";
zoneSize = 30;
};
class cocaine_unprocessed {
amount = 3;
zones[] = { "cocaine_1" };
item = "";
zoneSize = 30;
};
class cannabis {
amount = 3;
zones[] = { "weed_1" };
item = "";
zoneSize = 30;
};
};
/*
This block can be set using percent,if you want players to mine only one resource ,just leave it as it is.
Example:
class copper_unrefined
{
amount = 2;
zones[] = { "copper_mine" };
item = "pickaxe";
mined[] = { "copper_unrefined" };
This will make players mine only copper_unrefined
Now let's go deeper
Example 2:
class copper_unrefined
{
amount = 2;
zones[] = { "copper_mine" };
item = "pickaxe";
mined[] = { {"copper_unrefined",0,25},{"iron_unrefined",25,95},{"diamond_uncut",95,100} };
};
This will give :
25(±1)% to copper_unrefined;
70(±1)% to iron_unrefined;
5%(±1)% to diamond_uncut;
! Watch Out !
If percents are used,you MUST put more than 1 resource in the mined parameter
mined[] = { {"copper_unrefined",0,25} }; NOT OK (But the script will work)
mined[] = { {"copper_unrefined",0,45 },{"iron_unrefined",45} }; NOT OK (The script won't work )
mined[] = { {"copper_unrefined",0,45},{"copper_unrefined",80,100} }; NOT OK
mined[] = { "copper_unrefined" }; OK
mined[] = { {"copper_unrefined",0,35} , { "iron_unrefined" ,35,100 } }; OK
*/
class Minerals {
class copper_unrefined {
amount = 2;
zones[] = { "copper_mine" };
item = "pickaxe";
mined[] = {"copper_unrefined"};
zoneSize = 30;
};
class iron_unrefined {
amount = 2;
zones[] = { "iron_mine" };
item = "pickaxe";
mined[] = { "iron_unrefined" };
zoneSize = 30;
};
class salt_unrefined {
amount = 2;
zones[] = { "salt_mine" };
item = "pickaxe";
mined[] = { "salt_unrefined" };
zoneSize = 30;
};
class sand {
amount = 2;
zones[] = { "sand_mine" };
item = "pickaxe";
mined[] = { "sand" };
zoneSize = 30;
};
class diamond_uncut {
amount = 2;
zones[] = { "diamond_mine" };
item = "pickaxe";
mined[] = { "diamond_uncut" };
zoneSize = 30;
};
class rock {
amount = 2;
zones[] = { "rock_quarry" };
item = "pickaxe";
mined[] = { "rock" };
zoneSize = 30;
};
class oil_unprocessed {
amount = 2;
zones[] = { "oil_field_1", "oil_field_2" };
item = "pickaxe";
mined[] = { "oil_unprocessed" };
zoneSize = 30;
};
};
};

View File

@@ -0,0 +1,290 @@
#define true 1
#define false 0
/*
price - Cost of the building
numberCrates - Allowed number of crates
restrictedPos[] - Same as the old fn_getBuildingPositions. A list of restricted building positions (i.e, to stop spawning outside, or by windows etc)
default: {}
canGarage - True if the building can be used as a garage (need to buy ontop)
default: false
garageSpawnPos[] - worldToModel position to spawn vehicles, leave {} if canGarage is false.
default: {}
garageSpawnDir - Offset to garage direction to spawn at (+-90 etc). It will be used in the manner: getDir _garage + spawnDir
default: 0
garageBlacklists[] - List of blacklisted houses for buying garages
default: {}
*/
class Housing {
class Altis {
class Land_i_House_Big_02_V1_F {
price = 1550000;
numberCrates = 3;
restrictedPos[] = {0,1,2,3,4};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {2,0,3.5};
};
class Land_i_House_Big_02_V2_F : Land_i_House_Big_02_V1_F{};
class Land_i_House_Big_02_V3_F : Land_i_House_Big_02_V1_F{};
class Land_i_House_Big_01_V1_F {
price = 2200000;
numberCrates = 4;
restrictedPos[] = {2,3};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {0,-2,3.8};
};
class Land_i_House_Big_01_V2_F : Land_i_House_Big_01_V1_F{};
class Land_i_House_Big_01_V3_F : Land_i_House_Big_01_V1_F{};
class Land_i_House_Small_01_V1_F {
price = 1050000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {-1.5,0,2};
};
class Land_i_House_Small_01_V2_F : Land_i_House_Small_01_V1_F{};
class Land_i_House_Small_01_V3_F : Land_i_House_Small_01_V1_F{};
class Land_i_House_Small_02_V1_F {
price = 1000500;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {2,0,2.4};
};
class Land_i_House_Small_02_V2_F : Land_i_House_Small_02_V1_F{};
class Land_i_House_Small_02_V3_F : Land_i_House_Small_02_V1_F{};
class Land_i_House_Small_03_V1_F {
price = 1250000;
numberCrates = 3;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {-3.3,1,2.5};
};
class Land_i_House_Small_03_V3_F : Land_i_House_Small_03_V1_F{};
class Land_i_Stone_HouseSmall_V1_F {
price = 750000;
numberCrates = 1;
restrictedPos[] = {0,1,3,4};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {0.90,2.3,4};
};
class Land_i_Stone_HouseSmall_V2_F : Land_i_Stone_HouseSmall_V1_F{};
class Land_i_Stone_HouseSmall_V3_F : Land_i_Stone_HouseSmall_V1_F{};
};
class Tanoa {
// Houses with Garages
class Land_Hotel_01_F {
price = 960000;
numberCrates = 5;
restrictedPos[] = {};
canGarage = true;
garageSpawnPos[] = {-1.27246,-11.4361,-5.63821};
garageSpawnDir = 0;
garageBlacklists[] = {{5909.93,10491.9,-0.153875}};
lightPos[] = {0.5,0.5,7.5};
};
class Land_Hotel_02_F {
price = 2000000;
numberCrates = 8;
restrictedPos[] = {};
canGarage = true;
garageSpawnPos[] = {14.1128,1.51736,-4.18449};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {0,1,3};
};
class Land_GarageShelter_01_F {
price = 80000;
numberCrates = 1;
restrictedPos[] = {};
canGarage = true;
garageSpawnPos[] = {0.241684,-5.72266,-1.46744};
garageSpawnDir = 90;
garageBlacklists[] = {{10998,9698.24,-0.219376}};
lightPos[] = {0,0,2};
};
class Land_House_Big_02_F {
price = 450000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = true;
garageSpawnPos[] = {12.8365,0.414551,-1.81252};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {0,0,2};
};
class Land_School_01_F {
price = 3000000;
numberCrates = 8;
restrictedPos[] = {};
canGarage = true;
garageSpawnPos[] = {-6.91215,-11.5288,-1.70768};
garageSpawnDir = 0;
garageBlacklists[] = {{10957,9532.16,-0.528702}};
lightPos[] = {0,0,2.65};
};
class Land_House_Big_04_F {
price = 140000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {12.308,-0.228027,-3.34715};
garageSpawnDir = 0;
garageBlacklists[] = {{5879.2,10002.7,-0.278984},{9508.48,13082.7,0.021286}};
lightPos[] = {0,0,3.5};
};
class Land_House_Big_03_F {
price = 900000;
numberCrates = 3;
restrictedPos[] = {};
canGarage = true;
garageSpawnPos[] = {14.9072,0.394043,-3.60528};
garageSpawnDir = 0;
garageBlacklists[] = {{11507.2,2447.47,-0.145175}};
lightPos[] = {0,0,3.5};
};
// Houses without Garages
class Land_House_Big_01_F {
price = 350000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {-1,2,2};
};
class Land_House_Small_03_F {
price = 600000;
numberCrates = 3;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {-2.35,1,2.8};
};
class Land_House_Small_06_F {
price = 700000;
numberCrates = 3;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {3,-2,2};
};
class Land_Slum_03_F {
price = 450000;
numberCrates = 4;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {1,2,3};
};
class Land_Addon_04_F {
price = 120000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {0,-2,4};
};
class Land_Slum_01_F {
price = 200000;
numberCrates = 1;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {1.5,0,3.2};
};
class Land_House_Small_05_F {
price = 100000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {2,1,2};
};
class Land_House_Small_02_F {
price = 160000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {-2,0,2.4};
};
class Land_House_Small_04_F {
price = 130000;
numberCrates = 2;
restrictedPos[] = {};
canGarage = false;
garageSpawnPos[] = {};
garageSpawnDir = 0;
garageBlacklists[] = {};
lightPos[] = {1.2,0.2,2.5};
};
};
};

View File

@@ -0,0 +1,190 @@
/*
* class:
* variable = Variable Name
* displayName = License Name
* price = License Price
* illegal = Illegal License
* side = side indicator
*/
class Licenses {
//Civilian Licenses
class driver {
variable = "driver";
displayName = "STR_License_Driver";
price = 500;
illegal = false;
side = "civ";
};
class boat {
variable = "boat";
displayName = "STR_License_Boat";
price = 1000;
illegal = false;
side = "civ";
};
class pilot {
variable = "pilot";
displayName = "STR_License_Pilot";
price = 25000;
illegal = false;
side = "civ";
};
class trucking {
variable = "trucking";
displayName = "STR_License_Truck";
price = 20000;
illegal = false;
side = "civ";
};
class gun {
variable = "gun";
displayName = "STR_License_Firearm";
price = 10000;
illegal = false;
side = "civ";
};
class dive {
variable = "dive";
displayName = "STR_License_Diving";
price = 2000;
illegal = false;
side = "civ";
};
class home {
variable = "home";
displayName = "STR_License_Home";
price = 75000;
illegal = false;
side = "civ";
};
//Processing Licenses
class oil {
variable = "oil";
displayName = "STR_License_Oil";
price = 10000;
illegal = false;
side = "civ";
};
class diamond {
variable = "diamond";
displayName = "STR_License_Diamond";
price = 35000;
illegal = false;
side = "civ";
};
class salt {
variable = "salt";
displayName = "STR_License_Salt";
price = 12000;
illegal = false;
side = "civ";
};
class sand {
variable = "sand";
displayName = "STR_License_Sand";
price = 14500;
illegal = false;
side = "civ";
};
class iron {
variable = "iron";
displayName = "STR_License_Iron";
price = 9500;
illegal = false;
side = "civ";
};
class copper {
variable = "copper";
displayName = "STR_License_Copper";
price = 8000;
illegal = false;
side = "civ";
};
class cement {
variable = "cement";
displayName = "STR_License_Cement";
price = 6500;
illegal = false;
side = "civ";
};
class medmarijuana {
variable = "medmarijuana";
displayName = "STR_License_Medmarijuana";
price = 15000;
illegal = false;
side = "civ";
};
//Illegal Licenses
class cocaine {
variable = "cocaine";
displayName = "STR_License_Cocaine";
price = 30000;
illegal = true;
side = "civ";
};
class heroin {
variable = "heroin";
displayName = "STR_License_Heroin";
price = 25000;
illegal = true;
side = "civ";
};
class marijuana {
variable = "marijuana";
displayName = "STR_License_Marijuana";
price = 19500;
illegal = true;
side = "civ";
};
class rebel {
variable = "rebel";
displayName = "STR_License_Rebel";
price = 75000;
illegal = true;
side = "civ";
};
//Cop Licenses
class cAir {
variable = "cAir";
displayName = "STR_License_Pilot";
price = 15000;
illegal = false;
side = "cop";
};
class cg {
variable = "cg";
displayName = "STR_License_CG";
price = 8000;
illegal = false;
side = "cop";
};
//Medic Licenses
class mAir {
variable = "mAir";
displayName = "STR_License_Pilot";
price = 15000;
illegal = false;
side = "med";
};
};

View File

@@ -0,0 +1,224 @@
#define true 1
#define false 0
/*
Master settings for various features and functionality
*/
class Life_Settings {
/* Logging and Security Settings*/
/* Security Settings */
spyGlass_toggle = false; //Spyglass On/Off Toggle --> True = On & False = Off
/* Data Logging Settings */
battlEye_friendlyLogging = false; //False [default] - Read the logs from the server.rpt. True - Read the logs from the publicVariable.log. NOTE: Due to how diag_log works it will log to both files either way and the setting is merely for beautification purposes.
player_advancedLog = false; //False [default] - No advanced logging. True - Logs house purchase and sale, vehicle purchase, sale, and chop shopping, police arrests, and gang creations. Search for: advanced_log
player_moneyLog = false; //False [default] - No money logging. True - Logs player bank deposits, withdraws, and transfers, gang bank deposits and withdraws, money picked up off of the ground, and player robbery. Search for: money_log
player_deathLog = false; //False [default] - No death logging. True - Logs victim and killer, and vehicle or weapon if used, when a player dies. Search for: death_log
/* Database Related Settings */
/* Player Data Saving */
save_virtualItems = true; //Save Virtual items (all sides)?
saved_virtualItems[] = { "pickaxe","fuelEmpty","fuelFull", "spikeStrip", "lockpick", "defuseKit","storageSmall","storageBig","redgull","coffee","waterBottle","apple","peach","tbacon","donuts","rabbit","salema","ornate","mackerel","tuna","mullet","catshark","turtle_soup","hen","rooster","sheep","goat","defibrillator","toolkit" }; //Array of virtual items that can be saved on your player.
save_playerStats = true; //Save food, water and damage (all sides)?
save_civilian_weapons = false; //Allow civilians to save weapons on them?
save_civilian_position = false; //Save civilian location?
save_civilian_position_restart = false; //Save civilian location only between restarts. After a server restart you'll have to spawn again.
/* !!!TO SAVE POSITION BETWEEN RESTARTS save_civilian_position MUST BE TRUE!!! */
save_civilian_positionStrict = false; //Strip the player if possible combat-log? WARNING: Server crashes and lack of reliable syncing can trigger this.
/* Vehicle Data Saving */
save_vehicle_virtualItems = false; //Save virtual items inside the vehicle (all sides)(-- See defined items on next line --)
save_vehicle_items[] = { "pickaxe","fuelEmpty","fuelFull", "spikeStrip", "lockpick", "defuseKit","storageSmall","storageBig","redgull","coffee","waterBottle","apple","peach","tbacon","donuts","rabbit","salema","ornate","mackerel","tuna","mullet","catshark","turtle_soup","hen","rooster","sheep","goat","defibrillator","toolkit" };
save_vehicle_inventory = false; //Save Arma inventory of vehicle to the database
save_vehicle_fuel = false; //Save vehicle fuel level to the database (Impounded/Garaged).
save_vehicle_damage = false; //Save vehicle damage to the database.
save_vehicle_illegal = false; //This will allow cops to be advised when a vehicle, with illegal items in it, is impounded. This will also save illegal items as proof of crime, and needs "save_vehicle_virtualItems" set as true. Illegal items don't need to be set in save_vehicle_items[] for being saved, if it's enabled.
/* System Settings */
/* ATM & Federal Reserve System Configurations */
global_ATM = true; //Allow users to access any ATM on the map (Marked & Unmarked).
noatm_timer = 10; //Time in minutes that players cannot deposit money after selling stolen gold.
minimum_cops = 5; //Minimum cops required online to rob the Federal Reserve
/*Death settings*/
drop_weapons_onDeath = false; //Set true to enable weapon dropping on death. False (default) will delete player weapons on death, allowing them to be revived with them instead
/* Basic System Configurations */
donor_level = false; //Enable the donor level set in database (var = life_donorlevel; levels = 0,1,2,3,4,5). ATTENTION! Before enabling, read: https://www.bistudio.com/community/game-content-usage-rules & https://www.bistudio.com/monetization
enable_fatigue = true; //Set to false to disable the ARMA 3 fatigue system.
total_maxWeight = 24; //Static variable for the maximum weight allowed without having a backpack
respawn_timer = 30; //How many seconds a player should wait, before being able to respawn. Minimum 5 seconds.
/* Channel 7 News Station Configurations */
news_broadcast_cost = 150000; //Cost for a player to send a news station broadcast.
news_broadcast_cooldown = 20; //Time in minutes that is required between news station broadcasts. (Default = 20 minutes)
news_broadcast_header_length = 60; //Number of characters that a header can consist of. Anything over this may clip. This depends on the font size and various other factors. Adjust with caution.
/* Clothing System Configurations */
civ_skins = false; //Enable or disable civilian skins. Before enabling, you must add all the SEVEN files to textures folder. (It must be named as: civilian_uniform_1.jpg, civilian_uniform_2.jpg...civilian_uniform_6.jpg, civilian_uniform_7.jpg)
cop_extendedSkins = false; //Enable or disable cop skins by level. Before enabling, you must add all the EIGHT files to textures folder. (It must be named as: cop_uniform.jpg + cop_uniform_1.jpg, cop_uniform_2.jpg...cop_uniform_6.jpg, cop_uniform_7.jpg; meaning cop_uniform = life_coplevel=0, cop_uniform_1 = life_coplevel=1, cop_uniform_2 = life_coplevel=2, etc...)
clothing_noTP = false; //Disable clothing preview teleport? (true = no teleport. false = teleport)
clothing_box = true; //true = teleport to a black box. false = teleport to somewhere on map. (It only affects the game if clothing_noTP is set as false)
clothing_masks[] = { "H_Shemag_olive", "H_Shemag_khk", "H_Shemag_tan", "H_Shemag_olive_hs", "H_ShemagOpen_khk", "H_ShemagOpen_tan", "G_Balaclava_blk", "G_Balaclava_combat", "G_Balaclava_lowprofile", "G_Balaclava_oli", "G_Bandanna_aviator", "G_Bandanna_beast", "G_Bandanna_blk", "G_Bandanna_khk", "G_Bandanna_oli", "G_Bandanna_shades", "G_Bandanna_sport", "G_Bandanna_tan", "U_O_GhillieSuit", "U_I_GhillieSuit", "U_B_GhillieSuit", "H_RacingHelmet_1_black_F", "H_RacingHelmet_1_red_F", "H_RacingHelmet_1_white_F", "H_RacingHelmet_1_blue_F", "H_RacingHelmet_1_yellow_F", "H_RacingHelmet_1_green_F", "H_RacingHelmet_1_F", "H_RacingHelmet_2_F", "H_RacingHelmet_3_F", "H_RacingHelmet_4_F" };
/* Escape Menu Configuration */
escapeMenu_timer = 10; //Time required to pass before you can click the abort button in the escape menu.
escapeMenu_displayExtras = true; //Display the players UID & serverName specified below in the escape menu.
escapeMenu_displayText = "Thanks for playing!"; //Text displayed in the escape menu. Make it short.. around 20 characters.
/* Fuel System Configurations */
pump_service = false; //Allow users to use pump service on the map. Default = false
fuel_cost = 80; //Cost of fuel per liter at fuel stations (if not defined for the vehicle already).
service_chopper = 1000; //Cost to service chopper at chopper service station(Repair/Refuel).
fuelCan_refuel = 250; //Cost to refuel an empty fuel canister at the fuel station pumps. (Be wary of your buy/sell prices on fuel cans to prevent exploits...)
/* Gang System Configurations */
gang_price = 75000; //Gang creation price. --Remember they are persistent so keep it reasonable to avoid millions of gangs.
gang_upgradeBase = 10000; //The base cost for purchasing additional slots in a gang
gang_upgradeMultiplier = 2.5; //CURRENTLY NOT IN USE
/* Housing System Configurations */
house_limit = 5; //Maximum number of houses a player can own.
houseGarage_buyPrice = 1000000;
houseGarage_sellPrice = 350000;
/* Hunting & Fishing System Configurations */
animaltypes_fish[] = { "Salema_F", "Ornate_random_F", "Mackerel_F", "Tuna_F", "Mullet_F", "CatShark_F", "Turtle_F" }; //Classnames of fish you can catch
animaltypes_hunting[] = { "Sheep_random_F", "Goat_random_F", "Hen_random_F", "Cock_random_F", "Rabbit_F" }; //Classnames of aniamls you can hunt/gut
/* Item-related Restrictions */
restrict_medic_weapons = true; //Set to false to allow medics to use any weapon --true will remove ANY weapon they attempt to use (primary,secondary,launcher)
restrict_clothingPickup = true; //Set to false to allow civilians to pickup/take any uniform (ground/crates/vehicles)
restrict_weaponPickup = false; //Set to false to allow civilians to pickup/take any weapon (ground/crates/vehicles)
restricted_uniforms[] = { "U_Rangemaster", "U_B_CombatUniform_mcam_tshirt", "U_B_CombatUniform_mcam_worn", "U_B_survival_uniform" };
restricted_weapons[] = { "hgun_P07_snds_F", "arifle_MX_F", "arifle_MXC_F" };
/* Jail System Configurations */
jail_seize_vItems[] = { "spikeStrip","lockpick","goldbar","blastingcharge","boltcutter","defusekit","heroin_unprocessed","heroin_processed","cannabis","marijuana","cocaine_unprocessed","cocaine_processed","turtle_raw" }; //Define VIRTUAL items you want to be removed from players upon jailing here. Use "jail_seize_inventory" for Arma inventory items.
jail_seize_inventory = false; //Set to true to run the cop seize script on inmates. False will remove only weapons and magazines otherwise. (Basically used in case cops forget to seize items). [See Lines 106-111 below]
sendtoJail_locations[] = { "police_hq_1", "police_hq_2", "cop_spawn_3", "cop_spawn_5", "Correctional_Facility" }; //Enter the variableName from the mission.sqm here to allow cops to send a person to jail at these locations.
jail_forceWalk = true;
/* Medical System Configurations */
revive_cops = true; //true to enable cops the ability to revive everyone or false for only medics/ems.
revive_civ = false; //true to enable civs the ability to revive everyone or false for only medics/ems or medic/ems/cops.
revive_east = false; //true to enable opfor the ability to revive everyone or false for only medics/ems or medic/ems/cops.
revive_fee = 1500; //Revive fee that players have to pay and medics only EMS(independent) are rewarded with this amount.
hospital_heal_fee = 100; //Fee to heal at a hospital NPC
/* Paycheck & Bank System Configurations */
bank_cop = 7000; //Amount of cash in bank for new cops
bank_civ = 3000; //Amount of cash in bank for new civillians
bank_med = 6500; //Amount of cash in bank for new medics
paycheck_cop = 500; //Payment for cops
paycheck_civ = 350; //Payment for civillians
paycheck_med = 450; //Payment for medics
paycheck_period = 5; //Scaled in minutes
bank_transferTax = .05; //Tax that player pays when transferring money from ATM. Tax = Amount * multiplier
/* Player Job System Configurations */
delivery_points[] = { "dp_1", "dp_2", "dp_3", "dp_4", "dp_5", "dp_6", "dp_7", "dp_8", "dp_9", "dp_10", "dp_11", "dp_12", "dp_13", "dp_14", "dp_15", "dp_15", "dp_16", "dp_17", "dp_18", "dp_19", "dp_20", "dp_21", "dp_22", "dp_23", "dp_24", "dp_25" };
fuelTank_winMultiplier = 1; //Win Multiplier in FuelTank Missions. Increase for greater payout. Default = 1
/* Search & Seizure System Configurations */
seize_exempt[] = { "Binocular", "ItemWatch", "ItemCompass", "ItemGPS", "ItemMap", "NVGoggles", "FirstAidKit", "ToolKit", "Chemlight_red", "Chemlight_yellow", "Chemlight_green", "Chemlight_blue", "optic_ACO_grn_smg" }; //Arma items that will not get seized from player inventories
seize_uniform[] = { "U_Rangemaster" }; //Any specific uniforms you want to be seized from players
seize_vest[] = { "V_TacVest_blk_POLICE" }; //Any specific vests you want to be seized from players
seize_headgear[] = { "H_Cap_police" }; //Any hats or helmets you want seized from players
seize_minimum_rank = 2; //Required minimum CopLevel to be able to seize items from players
/* Vehicle System Configurations */
chopShop_vehicles[] = { "Car", "Air" }; //Vehicles that can be chopped. (Can add: "Ship" and possibly more -> look at the BI wiki...)
vehicle_infiniteRepair[] = {false, false, true, false}; //Set to true for unlimited repairs with 1 toolkit. False will remove toolkit upon use. civilian, west, independent, east
vehicleShop_rentalOnly[] = { "B_MRAP_01_hmg_F", "B_G_Offroad_01_armed_F", "B_Boat_Armed_01_minigun_F" }; //Vehicles that can only be rented and not purchased. (Last only for the session)
vehicleShop_3D = false; //Add preview 3D inside Shop vehicle. Default : False
/* Vehicle Purchase Prices */
vehicle_purchase_multiplier_CIVILIAN = 1; //Civilian Vehicle Buy Price = Config_Vehicle price * multiplier
vehicle_purchase_multiplier_COP = .5; //Cop Vehicle Buy Price = Config_Vehicle price * multiplier
vehicle_purchase_multiplier_MEDIC = .75; //Medic Vehicle Buy Price = Config_Vehicle price * multiplier
vehicle_purchase_multiplier_OPFOR = -1; // -- NOT IN USE -- Simply left in for east support.
/* Vehicle Rental Prices */
vehicle_rental_multiplier_CIVILIAN = .80; //Civilian Vehicle Rental Price = Config_Vehicle price * multiplier
vehicle_rental_multiplier_COP = .3; //Cop Vehicle Rental Price = Config_Vehicle price * multiplier
vehicle_rental_multiplier_MEDIC = .55; //Medic Vehicle Rental Price = Config_Vehicle price * multiplier
vehicle_rental_multiplier_OPFOR = -1; // -- NOT IN USE -- Simply left in for east support.
/* Vehicle Sell Prices */
vehicle_sell_multiplier_CIVILIAN = .5; //Civilian Vehicle Garage Sell Price = Vehicle Buy Price * multiplier
vehicle_sell_multiplier_COP = .5; //Cop Vehicle Garage Sell Price = Vehicle Buy Price * multiplier
vehicle_sell_multiplier_MEDIC = .5; //Medic Vehicle Garage Sell Price = Vehicle Buy Price * multiplier
vehicle_sell_multiplier_OPFOR = -1; // -- NOT IN USE -- Simply left in for east support.
/* "Other" Vehicle Prices */
vehicle_chopShop_multiplier = .25; //Chop Shop price for vehicles. TO AVOID EXPLOITS NEVER SET HIGHER THAN A PURCHASE/RENTAL multipler! Payout = Config_vehicle Price * multiplier
vehicle_storage_fee_multiplier = .2; //Pull from garage cost --> Cost takes the playersides Buy Price * multiplier
vehicle_cop_impound_multiplier = .1; //TO AVOID EXPLOITS NEVER SET HIGHER THAN A PURCHASE/RENTAL multipler! Payout = Config_vehicle Price * multiplier
disableCommanderView = true; //false - Group leaders can access the commander view. true [default] - Group leaders cannot access the commander view.
//Commander/tactical view is accessed via pressing . [NUM] by default. It raises the camera significantly higher and steeper above the player in order to give a boarder tactical view of the surrounding area.
/* Wanted System Settings *
/* crimes[] = {String, Bounty, Code} */
crimes[] = {
{"STR_Crime_187V","650","187V"},
{"STR_Crime_187","2000","187"},
{"STR_Crime_901","450","901"},
{"STR_Crime_215","200","215"},
{"STR_Crime_213","1000","213"},
{"STR_Crime_211","100","211"},
{"STR_Crime_207","350","207"},
{"STR_Crime_207A","200","207A"},
{"STR_Crime_390","1500","390"},
{"STR_Crime_487","150","487"},
{"STR_Crime_488","70","488"},
{"STR_Crime_480","100","480"},
{"STR_Crime_481","100","481"},
{"STR_Crime_482","500","482"},
{"STR_Crime_483","950","483"},
{"STR_Crime_459","650","459"},
{"STR_Crime_666","200","666"},
{"STR_Crime_667","4500","667"},
{"STR_Crime_668","1500","668"},
{"STR_Crime_1","250","1"},
{"STR_Crime_2","200","2"},
{"STR_Crime_3","150","3"},
{"STR_Crime_4","250","4"},
{"STR_Crime_5","100","5"},
{"STR_Crime_6","80","6"},
{"STR_Crime_7","150","7"},
{"STR_Crime_8","5000","8"},
{"STR_Crime_9","5000","9"},
{"STR_Crime_10","15000","10"},
{"STR_Crime_11","10000","11"},
{"STR_Crime_12","2500","12"},
{"STR_Crime_13","1500","13"},
{"STR_Crime_14","500","14"},
{"STR_Crime_15","2500","15"},
{"STR_Crime_16","1500","16"},
{"STR_Crime_17","100","17"},
{"STR_Crime_18","1500","18"},
{"STR_Crime_19","2500","19"},
{"STR_Crime_20","500","20"},
{"STR_Crime_21","500","21"},
{"STR_Crime_22","2000","22"},
{"STR_Crime_23","5000","23"},
{"STR_Crime_24","10000","24"},
{"STR_Crime_25","20000","25"}
};
};
#include "Config_Clothing.hpp"
#include "Config_Licenses.hpp"
#include "Config_Vehicles.hpp"
#include "Config_vItems.hpp"
#include "Config_Weapons.hpp"
#include "Config_Gather.hpp"
#include "Config_SpawnPoints.hpp"
#include "Config_Process.hpp"
#include "Config_Housing.hpp"
#include "Config_Garages.hpp"

View File

@@ -0,0 +1,99 @@
/*
* class:
* MaterialsReq (Needed to process) = Array - Format -> {{"ITEM CLASS",HOWMANY}}
* MaterialsGive (Returned items) = Array - Format -> {{"ITEM CLASS",HOWMANY}}
* Text (Progess Bar Text) = Localised String
* NoLicenseCost (Cost to process w/o license) = Scalar
*
* Example for multiprocess:
*
* class Example {
* MaterialsReq[] = {{"cocaine_processed",1},{"heroin_processed",1}};
* MaterialsGive[] = {{"diamond_cut",1}};
* Text = "STR_Process_Example";
* //ScrollText = "Process Example";
* NoLicenseCost = 4000;
* };
*/
class ProcessAction {
class oil {
MaterialsReq[] = {{"oil_unprocessed",1}};
MaterialsGive[] = {{"oil_processed",1}};
Text = "STR_Process_Oil";
//ScrollText = "Process Oil";
NoLicenseCost = 1200;
};
class diamond {
MaterialsReq[] = {{"diamond_uncut",1}};
MaterialsGive[] = {{"diamond_cut",1}};
Text = "STR_Process_Diamond";
//ScrollText = "Cut Diamonds";
NoLicenseCost = 1350;
};
class heroin {
MaterialsReq[] = {{"heroin_unprocessed",1}};
MaterialsGive[] = {{"heroin_processed",1}};
Text = "STR_Process_Heroin";
//ScrollText = "Process Heroin";
NoLicenseCost = 1750;
};
class copper {
MaterialsReq[] = {{"copper_unrefined",1}};
MaterialsGive[] = {{"copper_refined",1}};
Text = "STR_Process_Copper";
//ScrollText = "Refine Copper";
NoLicenseCost = 750;
};
class iron {
MaterialsReq[] = {{"iron_unrefined",1}};
MaterialsGive[] = {{"iron_refined",1}};
Text = "STR_Process_Iron";
//ScrollText = "Refine Iron";
NoLicenseCost = 1120;
};
class sand {
MaterialsReq[] = {{"sand",1}};
MaterialsGive[] = {{"glass",1}};
Text = "STR_Process_Sand";
//ScrollText = "Melt Sand into Glass";
NoLicenseCost = 650;
};
class salt {
MaterialsReq[] = {{"salt_unrefined",1}};
MaterialsGive[] = {{"salt_refined",1}};
Text = "STR_Process_Salt";
//ScrollText = "Refine Salt";
NoLicenseCost = 450;
};
class cocaine {
MaterialsReq[] = {{"cocaine_unprocessed",1}};
MaterialsGive[] = {{"cocaine_processed",1}};
Text = "STR_Process_Cocaine";
//ScrollText = "Process Cocaine";
NoLicenseCost = 1500;
};
class marijuana {
MaterialsReq[] = {{"cannabis",1}};
MaterialsGive[] = {{"marijuana",1}};
Text = "STR_Process_Marijuana";
//ScrollText = "Harvest Marijuana";
NoLicenseCost = 500;
};
class cement {
MaterialsReq[] = {{"rock",1}};
MaterialsGive[] = {{"cement",1}};
Text = "STR_Process_Cement";
//ScrollText = "Mix Cement";
NoLicenseCost = 350;
};
};

View File

@@ -0,0 +1,243 @@
/*
* Format:
* 3: STRING (Conditions) - Must return boolean :
* String can contain any amount of conditions, aslong as the entire
* string returns a boolean. This allows you to check any levels, licenses etc,
* in any combination. For example:
* "call life_coplevel && license_civ_someLicense"
* This will also let you call any other function.
*
*/
class CfgSpawnPoints {
class Altis {
class Civilian {
class Kavala {
displayName = "Kavala";
spawnMarker = "civ_spawn_1";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "!license_civ_rebel";
};
class Athira {
displayName = "Athira";
spawnMarker = "civ_spawn_3";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class Pyrgos {
displayName = "Pyrgos";
spawnMarker = "civ_spawn_2";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class Sofia {
displayName = "Sofia";
spawnMarker = "civ_spawn_4";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class RebelN {
displayName = "Northern Rebel Base";
spawnMarker = "Rebelop";
icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
conditions = "license_civ_rebel";
};
class RebelS {
displayName = "Southern Rebel Base";
spawnMarker = "Rebelop_1";
icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
conditions = "license_civ_rebel";
};
class RebelE {
displayName = "Eastern Rebel Base";
spawnMarker = "Rebelop_2";
icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
conditions = "license_civ_rebel";
};
};
class Cop {
class Kavala {
displayName = "Kavala HQ";
spawnMarker = "cop_spawn_1";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class Athira {
displayName = "Athira HQ";
spawnMarker = "cop_spawn_3";
icon = "\a3\ui_f\data\map\MapControl\fuelstation_ca.paa";
conditions = "";
};
class Pyrgos {
displayName = "Pyrgos HQ";
spawnMarker = "cop_spawn_2";
icon = "\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa";
conditions = "";
};
class Air {
displayName = "Air HQ";
spawnMarker = "cop_spawn_4";
icon = "\a3\ui_f\data\map\Markers\NATO\b_air.paa";
conditions = "call life_coplevel >= 2 && {license_cop_cAir}";
};
class HW {
displayName = "HW Patrol";
spawnMarker = "cop_spawn_5";
icon = "\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa";
conditions = "call life_coplevel >= 3";
};
};
class Medic {
class Kavala {
displayName = "Kavala Hospital";
spawnMarker = "medic_spawn_1";
icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
conditions = "";
};
class Athira {
displayName = "Athira Regional";
spawnMarker = "medic_spawn_2";
icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
conditions = "";
};
class Pyrgos {
displayName = "Pyrgos Hospital";
spawnMarker = "medic_spawn_3";
icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
conditions = "";
};
};
};
class Tanoa {
class Civilian {
class Georgetown {
displayName = "Georgetown";
spawnMarker = "civ_spawn_1";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "!license_civ_rebel";
};
class Balavu {
displayName = "Balavu";
spawnMarker = "civ_spawn_3";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class Tuvanaka {
displayName = "Tuvanaka";
spawnMarker = "civ_spawn_2";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class Lijnhaven {
displayName = "Lijnhaven";
spawnMarker = "civ_spawn_4";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class RebelNW {
displayName = "North Western Rebel Base";
spawnMarker = "Rebelop";
icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
conditions = "license_civ_rebel";
};
class RebelS {
displayName = "Southern Rebel Base";
spawnMarker = "Rebelop_1";
icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
conditions = "license_civ_rebel";
};
class RebelNE {
displayName = "North Eastern Rebel Base";
spawnMarker = "Rebelop_2";
icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
conditions = "license_civ_rebel";
};
};
class Cop {
class NAirport {
displayName = "North Airport HQ";
spawnMarker = "cop_spawn_1";
icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
conditions = "";
};
class SWAirport {
displayName = "South Western Airport HQ";
spawnMarker = "cop_spawn_3";
icon = "\a3\ui_f\data\map\MapControl\fuelstation_ca.paa";
conditions = "";
};
class GeorgetownHQ {
displayName = "Georgetown HQ";
spawnMarker = "cop_spawn_2";
icon = "\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa";
conditions = "";
};
class Air {
displayName = "Air HQ";
spawnMarker = "cop_spawn_4";
icon = "\a3\ui_f\data\map\Markers\NATO\b_air.paa";
conditions = "call life_coplevel >= 2 && {license_cop_cAir}";
};
class HW {
displayName = "HW Patrol";
spawnMarker = "cop_spawn_5";
icon = "\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa";
conditions = "call life_coplevel >= 3";
};
};
class Medic {
class SEHospital {
displayName = "South East Hospital";
spawnMarker = "medic_spawn_1";
icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
conditions = "";
};
class TanoukaHospital {
displayName = "Tanouka Regional";
spawnMarker = "medic_spawn_2";
icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
conditions = "";
};
class NEAirportHospital {
displayName = "North East Airport Hospital";
spawnMarker = "medic_spawn_3";
icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
conditions = "";
};
};
};
};

View File

@@ -0,0 +1,333 @@
class SpyGlass {
civSlotNumber = 100;
copSlotNumber = 19;
medSlotNumber = 6;
/*
Internal functions, sort by what they are.
Please note any functions you add need the functions named defined and the functions meta name which is the functions name + _meta i.e:
"life_fnc_mycoolfunction","life_fnc_mycoolfunction_meta"
*/
//ArmA 3 Functions
BIS_Functions[] = {
"","bis_egspectator_allowaiswitch","bis_egspectator_allowfreecamera","bis_egspectator_draw3d","bis_egspectator_entityrespawned","bis_egspectator_initialized","bis_egspectator_showfocusinfo","bis_egspectator_thread","bis_egspectator_unitsiconstodraw","bis_egspectator_whitelistedsides","bis_egspectatorcamera_camera","bis_egspectatorcamera_cameramode",
"bis_egspectatorcamera_deltatime","bis_egspectatorcamera_dirtemp","bis_egspectatorcamera_dummytarget","bis_egspectatorcamera_freecamhastarget","bis_egspectatorcamera_heightmode","bis_egspectatorcamera_isveryfastspeed","bis_egspectatorcamera_lastticktime","bis_egspectatorcamera_manual","bis_egspectatorcamera_pitch","bis_egspectatorcamera_targetinvehicle",
"bis_egspectatorcamera_tick","bis_egspectatorcamera_usesurfacespeed","bis_egspectatorcamera_vision","bis_egspectatorcamera_yaw","bis_egspectatorcamera_zoom","bis_egspectatorcamera_zoomtemp","bis_egspectatordraw3d_drawlocations","bis_fnc_3dcredits","bis_fnc_3dencamera","bis_fnc_3dencontrolshint","bis_fnc_3dendiagcreatelist","bis_fnc_3dendiagfonts",
"bis_fnc_3dendiagmousecontrol","bis_fnc_3dendrawlocations","bis_fnc_3denentitymenu","bis_fnc_3denexportattributes","bis_fnc_3denexportoldsqm","bis_fnc_3denexportterrainbuilder","bis_fnc_3denflashlight","bis_fnc_3dengrid","bis_fnc_3denintel","bis_fnc_3deninterface","bis_fnc_3denlistlocations","bis_fnc_3denmissionpreview","bis_fnc_3denmoduledescription",
"bis_fnc_3dennotification","bis_fnc_3denrevivemode","bis_fnc_3denreviverequireditems","bis_fnc_3denshowmessage","bis_fnc_3denstatusbar","bis_fnc_3dentoolbar","bis_fnc_3dentutorial","bis_fnc_3denvisionmode","bis_fnc_3dmarkers","bis_fnc_aan","bis_fnc_absspeed","bis_fnc_activateaddons","bis_fnc_addclassoo","bis_fnc_addcommmenuitem","bis_fnc_addcuratorareafromtrigger",
"bis_fnc_addcuratorchallenge","bis_fnc_addcuratoricon","bis_fnc_addevidence","bis_fnc_addrespawninventory","bis_fnc_addrespawnposition","bis_fnc_addscore","bis_fnc_addscriptedeventhandler","bis_fnc_addscriptedeventhandler_egspectator_oncameramodechanged","bis_fnc_addscriptedeventhandler_rscdisplayegspectator_mapstatechanged","bis_fnc_addstackedeventhandler",
"bis_fnc_addsupportlink","bis_fnc_addtopairs","bis_fnc_addvirtualbackpackcargo","bis_fnc_addvirtualitemcargo","bis_fnc_addvirtualmagazinecargo","bis_fnc_addvirtualweaponcargo","bis_fnc_addweapon","bis_fnc_adjustsimpleobject","bis_fnc_advhint","bis_fnc_advhintarg","bis_fnc_advhintcall","bis_fnc_advhintcredits","bis_fnc_aligntabs","bis_fnc_allsynchronizedobjects",
"bis_fnc_ambientanim","bis_fnc_ambientanimcombat","bis_fnc_ambientanimgetparams","bis_fnc_ambientblacklist","bis_fnc_ambientblacklistadd","bis_fnc_ambientboats","bis_fnc_ambientflyby","bis_fnc_ambienthelicopters","bis_fnc_ambientplanes","bis_fnc_ambientpostprocess","bis_fnc_animalbehaviour","bis_fnc_animalrandomization","bis_fnc_animalsitespawn",
"bis_fnc_animatetaskwaypoint","bis_fnc_animtype","bis_fnc_animviewer","bis_fnc_areequal","bis_fnc_areequalnotnil","bis_fnc_arefriendly","bis_fnc_arithmeticmean","bis_fnc_arraycompare","bis_fnc_arrayfinddeep","bis_fnc_arrayinsert","bis_fnc_arraypop","bis_fnc_arraypush","bis_fnc_arraypushstack","bis_fnc_arrayshift","bis_fnc_arrayshuffle","bis_fnc_arrayunshift",
"bis_fnc_arsenal","bis_fnc_assignplayerrole","bis_fnc_attachtorelative","bis_fnc_basevehicle","bis_fnc_baseweapon","bis_fnc_basicbackpack","bis_fnc_basictask","bis_fnc_bitflagscheck","bis_fnc_bitflagsflip","bis_fnc_bitflagsset","bis_fnc_bitflagstoarray","bis_fnc_bitflagsunset","bis_fnc_bitwiseand","bis_fnc_bitwisenot","bis_fnc_bitwiseor","bis_fnc_bitwisexor",
"bis_fnc_blackin","bis_fnc_blackout","bis_fnc_bleedtickets","bis_fnc_bloodeffect","bis_fnc_boundingboxcorner","bis_fnc_boundingboxdimensions","bis_fnc_boundingboxmarker","bis_fnc_boundingcircle","bis_fnc_briefinganimate","bis_fnc_briefinginit","bis_fnc_buildingpositions","bis_fnc_call","bis_fnc_callscriptedeventhandler","bis_fnc_camera","bis_fnc_cameraold",
"bis_fnc_camfollow","bis_fnc_cargoturretindex","bis_fnc_changesupportradiochannel","bis_fnc_cinemaborder","bis_fnc_classmagazine","bis_fnc_classweapon","bis_fnc_codeperformance","bis_fnc_colorconfigtorgba","bis_fnc_colorrgbatohtml","bis_fnc_colorrgbatotexture","bis_fnc_colorrgbtohtml","bis_fnc_commsmenucreate","bis_fnc_commsmenutoggleavailability",
"bis_fnc_commsmenutogglevisibility","bis_fnc_compatibleitems","bis_fnc_completedcuratorchallengescount","bis_fnc_conditionalselect","bis_fnc_configextremes","bis_fnc_configpath","bis_fnc_configviewer","bis_fnc_consolidatearray","bis_fnc_controlconfigs","bis_fnc_convertunits","bis_fnc_countdown","bis_fnc_counter","bis_fnc_createlogrecord","bis_fnc_createmenu",
"bis_fnc_createobjectoo","bis_fnc_createsimpleobject","bis_fnc_credits","bis_fnc_credits_movie","bis_fnc_credits_movieconfig","bis_fnc_credits_moviesupport","bis_fnc_crewcount","bis_fnc_crossproduct","bis_fnc_crows","bis_fnc_ctrlfittotextheight","bis_fnc_ctrlsetscale","bis_fnc_ctrltextheight","bis_fnc_curatorattachobject","bis_fnc_curatorattributes",
"bis_fnc_curatorautomatic","bis_fnc_curatorautomaticpositions","bis_fnc_curatorchallengedestroyvehicle","bis_fnc_curatorchallengefindintel","bis_fnc_curatorchallengefireweapon","bis_fnc_curatorchallengegetinvehicle","bis_fnc_curatorchallengeilluminate","bis_fnc_curatorchallengespawnlightning","bis_fnc_curatorhint","bis_fnc_curatorobjectedited","bis_fnc_curatorobjectplaced",
"bis_fnc_curatorobjectregistered","bis_fnc_curatorobjectregisteredtable","bis_fnc_curatorpinged","bis_fnc_curatorrespawn","bis_fnc_curatorsaymessage","bis_fnc_curatorvisionmodes","bis_fnc_curatorwaypointplaced","bis_fnc_customgps","bis_fnc_customgpsvideo","bis_fnc_cutdecimals","bis_fnc_damagechanged","bis_fnc_damagepulsing","bis_fnc_dataterminalanimate",
"bis_fnc_dataterminalcolor","bis_fnc_dbclasscheck","bis_fnc_dbclassid","bis_fnc_dbclassindex","bis_fnc_dbclasslist","bis_fnc_dbclassremove","bis_fnc_dbclassreturn","bis_fnc_dbclassset","bis_fnc_dbconfigpath","bis_fnc_dbimportconfig","bis_fnc_dbimportxml","bis_fnc_dbisclass","bis_fnc_dbisvalue","bis_fnc_dbprint","bis_fnc_dbsymbolclass","bis_fnc_dbsymbolvalue",
"bis_fnc_dbvaluecheck","bis_fnc_dbvalueid","bis_fnc_dbvalueindex","bis_fnc_dbvaluelist","bis_fnc_dbvalueremove","bis_fnc_dbvaluereturn","bis_fnc_dbvalueset","bis_fnc_debugprofile","bis_fnc_decodeflags","bis_fnc_deletecounter","bis_fnc_deleteinventory","bis_fnc_deletetask","bis_fnc_deletevehiclecrew","bis_fnc_destroycity","bis_fnc_diagaar","bis_fnc_diagaarrecord",
"bis_fnc_diagaarrecord_fsm","bis_fnc_diaganim","bis_fnc_diagbulletcam","bis_fnc_diagconfig","bis_fnc_diagfindmissingauthors","bis_fnc_diaghit","bis_fnc_diagjiralink","bis_fnc_diagkey","bis_fnc_diagkeylayout","bis_fnc_diagkeytest","bis_fnc_diagknownastarget","bis_fnc_diagknowntargets","bis_fnc_diagloop","bis_fnc_diagmacros","bis_fnc_diagmacrosauthor",
"bis_fnc_diagmacroseditorpreview","bis_fnc_diagmacrosmapsize","bis_fnc_diagmacrosnamesound","bis_fnc_diagmacrosverify","bis_fnc_diagmissionpositions","bis_fnc_diagmissionweapons","bis_fnc_diagpreview","bis_fnc_diagpreviewcycle","bis_fnc_diagpreviewvehiclecrew","bis_fnc_diagradio","bis_fnc_diagvehicleicons","bis_fnc_diagwiki","bis_fnc_diaryhints","bis_fnc_diarymaps",
"bis_fnc_didjip","bis_fnc_dirindicator","bis_fnc_dirteffect","bis_fnc_dirto","bis_fnc_disableloading","bis_fnc_disablerevive","bis_fnc_disablesaving","bis_fnc_displayclouds","bis_fnc_displaycolorget","bis_fnc_displaycolorset","bis_fnc_displaycontrols","bis_fnc_displayloading","bis_fnc_displaymission","bis_fnc_displayname","bis_fnc_displayresize","bis_fnc_distance2d",
"bis_fnc_distance2dsqr","bis_fnc_doorclose","bis_fnc_doornohandleclose","bis_fnc_doornohandleopen","bis_fnc_dooropen","bis_fnc_dotproduct","bis_fnc_drawao","bis_fnc_drawcuratordeaths","bis_fnc_drawcuratorlocations","bis_fnc_drawcuratorrespawnmarkers","bis_fnc_drawminefields","bis_fnc_drawrespawnpositions","bis_fnc_dynamicgroups","bis_fnc_dynamictext","bis_fnc_earthquake",
"bis_fnc_effectfired","bis_fnc_effectfiredartillery","bis_fnc_effectfiredflares","bis_fnc_effectfiredhelirocket","bis_fnc_effectfiredlongsmoke","bis_fnc_effectfiredrifle","bis_fnc_effectfiredrocket","bis_fnc_effectfiredsmokelauncher","bis_fnc_effectfiredsmokelauncher_boat","bis_fnc_effectkilled","bis_fnc_effectkilledairdestruction","bis_fnc_effectkilledairdestructionstage2",
"bis_fnc_effectkilledsecondaries","bis_fnc_effectplankton","bis_fnc_egobjectivevisualizer","bis_fnc_egobjectivevisualizerdraw","bis_fnc_egspectator","bis_fnc_egspectatorcamera","bis_fnc_egspectatorcamerapreparetarget","bis_fnc_egspectatorcameraresettarget","bis_fnc_egspectatorcamerasettarget","bis_fnc_egspectatorcameratick","bis_fnc_egspectatordraw2d",
"bis_fnc_egspectatordraw3d","bis_fnc_egspectatorgetunitstodraw","bis_fnc_enablesaving","bis_fnc_encodeflags","bis_fnc_endloadingscreen","bis_fnc_endmission","bis_fnc_endmissionserver","bis_fnc_enemydetected","bis_fnc_enemysides","bis_fnc_enemytargets","bis_fnc_error","bis_fnc_errormsg","bis_fnc_errorparamstype","bis_fnc_establishingshot","bis_fnc_estimatedtimeleft",
"bis_fnc_execfsm","bis_fnc_execremote","bis_fnc_executestackedeventhandler","bis_fnc_execvm","bis_fnc_exp_camp_addtickets","bis_fnc_exp_camp_balancegroup","bis_fnc_exp_camp_checkpoint","bis_fnc_exp_camp_dynamicaiskill","bis_fnc_exp_camp_getcinematicmode","bis_fnc_exp_camp_getplayersgroup","bis_fnc_exp_camp_guidedprojectile","bis_fnc_exp_camp_hasmissionstarted",
"bis_fnc_exp_camp_iff","bis_fnc_exp_camp_initcharacter","bis_fnc_exp_camp_initclasses","bis_fnc_exp_camp_initdifficulty","bis_fnc_exp_camp_lobby","bis_fnc_exp_camp_lobby_clearvars","bis_fnc_exp_camp_lobby_ctrlsetcolor","bis_fnc_exp_camp_lobby_findhost","bis_fnc_exp_camp_lobby_gethostsettings","bis_fnc_exp_camp_lobby_getplayersquadname","bis_fnc_exp_camp_lobby_go",
"bis_fnc_exp_camp_lobby_intro","bis_fnc_exp_camp_lobby_launch","bis_fnc_exp_camp_lobby_loop","bis_fnc_exp_camp_lobby_missioncountdown","bis_fnc_exp_camp_lobby_onload","bis_fnc_exp_camp_lobby_onunload","bis_fnc_exp_camp_lobby_playmissionvideo","bis_fnc_exp_camp_lobby_serverping","bis_fnc_exp_camp_lobby_serverupdate","bis_fnc_exp_camp_lobby_structuredtext",
"bis_fnc_exp_camp_lobby_uimilitarymanager","bis_fnc_exp_camp_lobby_uimissioncountdown","bis_fnc_exp_camp_lobby_uimissionmanager","bis_fnc_exp_camp_lobby_uioverlaymanager","bis_fnc_exp_camp_lobby_uiprogressmanager","bis_fnc_exp_camp_lobby_uisettingsmanager","bis_fnc_exp_camp_lobby_updatehostsettings","bis_fnc_exp_camp_lobby_updateintel",
"bis_fnc_exp_camp_lobby_updatemilitaryefficiency","bis_fnc_exp_camp_lobby_updateplayers","bis_fnc_exp_camp_lobby_updateplayerstatus","bis_fnc_exp_camp_manager","bis_fnc_exp_camp_manager_getstate","bis_fnc_exp_camp_manager_onplayerregistered","bis_fnc_exp_camp_manager_setstate","bis_fnc_exp_camp_manager_triggerevent",
"bis_fnc_exp_camp_playerchecklist","bis_fnc_exp_camp_playsubtitles","bis_fnc_exp_camp_playtimelinevideo","bis_fnc_exp_camp_replacevehicles","bis_fnc_exp_camp_setcinematicmode","bis_fnc_exp_camp_setskill","bis_fnc_exp_camp_sitrep","bis_fnc_exportcfggroups","bis_fnc_exportcfghints","bis_fnc_exportcfgmagazines","bis_fnc_exportcfgpatches","bis_fnc_exportcfgvehicles",
"bis_fnc_exportcfgvehiclesassetdb","bis_fnc_exportcfgweapons","bis_fnc_exportconfighierarchy","bis_fnc_exportcuratorcosttable","bis_fnc_exporteditorpreviews","bis_fnc_exportfunctionstowiki","bis_fnc_exportgroupformations","bis_fnc_exportguibaseclasses","bis_fnc_exportinventory","bis_fnc_exportmaptobitxt","bis_fnc_exportvehicle","bis_fnc_fadeeffect","bis_fnc_fatigueeffect",
"bis_fnc_feedback_allowdeathscreen","bis_fnc_feedback_allowpp","bis_fnc_feedback_blue","bis_fnc_feedback_burningtimer","bis_fnc_feedback_damageblur","bis_fnc_feedback_damagecc","bis_fnc_feedback_damagepp","bis_fnc_feedback_damageradialblur","bis_fnc_feedback_fatigueblur","bis_fnc_feedback_fatiguecc","bis_fnc_feedback_fatiguepp","bis_fnc_feedback_fatigueradialblur",
"bis_fnc_feedback_testhelper","bis_fnc_feedbackinit","bis_fnc_feedbackmain","bis_fnc_feedbackmain_fsm","bis_fnc_ffvupdate","bis_fnc_filterstring","bis_fnc_findallnestedelements","bis_fnc_findextreme","bis_fnc_findinpairs","bis_fnc_findnestedelement","bis_fnc_findoverwatch","bis_fnc_findsafepos","bis_fnc_finishcuratorchallenge","bis_fnc_firesupport",
"bis_fnc_firesupportcluster","bis_fnc_firesupportvirtual","bis_fnc_fixdate","bis_fnc_flameseffect","bis_fnc_flies","bis_fnc_forcecuratorinterface","bis_fnc_forceend","bis_fnc_formatcuratorchallengeobjects","bis_fnc_fps","bis_fnc_friendlysides","bis_fnc_ftlmanager","bis_fnc_functionmeta","bis_fnc_functionpath","bis_fnc_functionsdebug","bis_fnc_garage3den","bis_fnc_garage",
"bis_fnc_gc","bis_fnc_gcinit","bis_fnc_genericsentence","bis_fnc_genericsentenceinit","bis_fnc_geometricmean","bis_fnc_getangledelta","bis_fnc_getcfg","bis_fnc_getcfgdata","bis_fnc_getcfgdataarray","bis_fnc_getcfgdatabool","bis_fnc_getcfgdataobject","bis_fnc_getcfgdatapool","bis_fnc_getcfgisclass","bis_fnc_getcfgsubclasses","bis_fnc_getfactions","bis_fnc_getfrompairs",
"bis_fnc_getidc","bis_fnc_getidd","bis_fnc_getintersectionsundercursor","bis_fnc_getlinedist","bis_fnc_getname","bis_fnc_getnetmode","bis_fnc_getobjectbbd","bis_fnc_getparamvalue","bis_fnc_getpitchbank","bis_fnc_getrespawninventories","bis_fnc_getrespawnmarkers","bis_fnc_getrespawnpositions","bis_fnc_getservervariable","bis_fnc_getturrets","bis_fnc_getunitbyuid",
"bis_fnc_getunitinsignia","bis_fnc_getvehiclecustomization","bis_fnc_getvirtualbackpackcargo","bis_fnc_getvirtualitemcargo","bis_fnc_getvirtualmagazinecargo","bis_fnc_getvirtualweaponcargo","bis_fnc_greatestnum","bis_fnc_gridtopos","bis_fnc_groupindicator","bis_fnc_groupvehicles","bis_fnc_guibackground","bis_fnc_guieditor","bis_fnc_guieffecttiles",
"bis_fnc_guieffecttiles_ppchromaberration","bis_fnc_guigrid","bis_fnc_guigridtoprofile","bis_fnc_guihint","bis_fnc_guimessage","bis_fnc_guinewsfeed","bis_fnc_halo","bis_fnc_halt","bis_fnc_hatchclose","bis_fnc_hatchopen","bis_fnc_healing","bis_fnc_healtheffects","bis_fnc_helicoptercanfly","bis_fnc_helicopterdamage","bis_fnc_helicoptergethitpoints","bis_fnc_helicopterseat",
"bis_fnc_helicopterseatmove","bis_fnc_helicoptertype","bis_fnc_help","bis_fnc_hextorgb","bis_fnc_highlightcontrol","bis_fnc_holdactionadd","bis_fnc_holdactionremove","bis_fnc_hudlimits","bis_fnc_importimagelinks","bis_fnc_inanglesector","bis_fnc_incapacitatedeffect","bis_fnc_indicatebleeding","bis_fnc_infotext","bis_fnc_init","bis_fnc_initammobox",
"bis_fnc_initcuratorattribute","bis_fnc_initdisplay","bis_fnc_initdisplays","bis_fnc_initexpo","bis_fnc_initintelobject","bis_fnc_initlistnboxsorting","bis_fnc_initmodules","bis_fnc_initmodules_animals","bis_fnc_initmodules_audio","bis_fnc_initmodules_chemlights","bis_fnc_initmodules_curator","bis_fnc_initmodules_effects","bis_fnc_initmodules_environment",
"bis_fnc_initmodules_events","bis_fnc_initmodules_firingdrills","bis_fnc_initmodules_flares","bis_fnc_initmodules_groupmodifiers","bis_fnc_initmodules_intel","bis_fnc_initmodules_missionflow","bis_fnc_initmodules_modes","bis_fnc_initmodules_multiplayer","bis_fnc_initmodules_no_category","bis_fnc_initmodules_objectives",
"bis_fnc_initmodules_objectmodifiers","bis_fnc_initmodules_ordnance","bis_fnc_initmodules_respawn","bis_fnc_initmodules_sites","bis_fnc_initmodules_smokeshells","bis_fnc_initmodules_strategicmap","bis_fnc_initmodules_supports","bis_fnc_initmodules_training","bis_fnc_initmultiplayer","bis_fnc_initparams","bis_fnc_initpixelui","bis_fnc_initplayable","bis_fnc_initrespawn",
"bis_fnc_initrespawnbackpack","bis_fnc_initslidervalue","bis_fnc_initvehicle","bis_fnc_initvehiclecrew","bis_fnc_initvehiclekart","bis_fnc_initvirtualunit","bis_fnc_initworldscene","bis_fnc_instring","bis_fnc_instructorfigure","bis_fnc_interpolateweather","bis_fnc_intrigger","bis_fnc_inv","bis_fnc_invadd","bis_fnc_invcodetoarray","bis_fnc_inventoryexists",
"bis_fnc_invremove","bis_fnc_invslots","bis_fnc_invslotsempty","bis_fnc_invslottype","bis_fnc_invstring","bis_fnc_isbuildingenterable","bis_fnc_iscampaign","bis_fnc_iscurator","bis_fnc_iscuratoreditable","bis_fnc_isdemo","bis_fnc_isforcedcuratorinterface","bis_fnc_isinfrontof","bis_fnc_isinsidearea","bis_fnc_isinzoom","bis_fnc_isleapyear","bis_fnc_isloading",
"bis_fnc_islocalized","bis_fnc_isposblacklisted","bis_fnc_isthrowable","bis_fnc_isunitvirtual","bis_fnc_itemtype","bis_fnc_jukebox","bis_fnc_kbcanspeak","bis_fnc_kbcreatedummy","bis_fnc_kbisspeaking","bis_fnc_kbmenu","bis_fnc_kbpriority","bis_fnc_kbsentence","bis_fnc_kbskip","bis_fnc_kbtell","bis_fnc_kbtelllocal","bis_fnc_kbtopicconfig","bis_fnc_keycode","bis_fnc_keyhold",
"bis_fnc_keypointsexport","bis_fnc_keypointsexportfromkml","bis_fnc_kmlimport","bis_fnc_lerp","bis_fnc_limitammunition","bis_fnc_limititems","bis_fnc_limitsupport","bis_fnc_limitweaponitems","bis_fnc_linearconversion","bis_fnc_listcuratorplayers","bis_fnc_listplayers","bis_fnc_livefeed","bis_fnc_livefeedeffects","bis_fnc_livefeedmoduleeffects","bis_fnc_livefeedmoduleinit",
"bis_fnc_livefeedmodulesetsource","bis_fnc_livefeedmodulesettarget","bis_fnc_livefeedsetsource","bis_fnc_livefeedsettarget","bis_fnc_livefeedterminate","bis_fnc_loadclass","bis_fnc_loadentry","bis_fnc_loadfunctions","bis_fnc_loadinventory","bis_fnc_loadvehicle","bis_fnc_localize","bis_fnc_locationdescription","bis_fnc_locations","bis_fnc_lockeddoornohandleopen",
"bis_fnc_lockeddooropen","bis_fnc_locweaponinfo","bis_fnc_log","bis_fnc_logformat","bis_fnc_logformatserver","bis_fnc_loop","bis_fnc_lowestnum","bis_fnc_magnitude","bis_fnc_magnitudesqr","bis_fnc_managecuratoraddons","bis_fnc_managecuratorchallenges","bis_fnc_mapsize","bis_fnc_markercreate","bis_fnc_markerparams","bis_fnc_markerpath","bis_fnc_markertotrigger",
"bis_fnc_markwaypoints","bis_fnc_maxdiffarray","bis_fnc_mirrorcuratorsettings","bis_fnc_miscanim","bis_fnc_missilelaunchpositionfix","bis_fnc_missionconversations","bis_fnc_missionconversationslocal","bis_fnc_missionflow","bis_fnc_missionflow_fsm","bis_fnc_missionhandlers","bis_fnc_missionhandlers_reloads","bis_fnc_missionrespawntype","bis_fnc_missiontasks",
"bis_fnc_missiontaskslocal","bis_fnc_missiontimeleft","bis_fnc_moduleai","bis_fnc_moduleammo","bis_fnc_moduleanimals","bis_fnc_modulearsenal","bis_fnc_modulebleedtickets","bis_fnc_modulebootcampstage","bis_fnc_modulecas","bis_fnc_modulechat","bis_fnc_modulecombatgetin","bis_fnc_modulecountdown","bis_fnc_modulecovermap","bis_fnc_modulecreatediaryrecord",
"bis_fnc_modulecreateprojectile","bis_fnc_modulecurator","bis_fnc_modulecuratoraddaddons","bis_fnc_modulecuratoraddcameraarea","bis_fnc_modulecuratoraddeditableobjects","bis_fnc_modulecuratoraddeditingarea","bis_fnc_modulecuratoraddeditingareaplayers","bis_fnc_modulecuratoraddicon","bis_fnc_modulecuratoraddpoints","bis_fnc_modulecuratorsetattributes",
"bis_fnc_modulecuratorsetcamera","bis_fnc_modulecuratorsetcoefs","bis_fnc_modulecuratorsetcostsdefault","bis_fnc_modulecuratorsetcostsside","bis_fnc_modulecuratorsetcostsvehicleclass","bis_fnc_modulecuratorseteditingareatype","bis_fnc_modulecuratorsetobjectcost","bis_fnc_moduledamage","bis_fnc_moduledate","bis_fnc_modulediary","bis_fnc_moduledooropen",
"bis_fnc_moduleeffectsbubbles","bis_fnc_moduleeffectsemittercreator","bis_fnc_moduleeffectsfire","bis_fnc_moduleeffectsplankton","bis_fnc_moduleeffectsshells","bis_fnc_moduleeffectssmoke","bis_fnc_moduleendmission","bis_fnc_moduleexecute","bis_fnc_modulefdballoonairdestruction","bis_fnc_modulefdballoonwaterdestruction","bis_fnc_modulefdcpclear","bis_fnc_modulefdcpin",
"bis_fnc_modulefdcpout","bis_fnc_modulefdfademarker","bis_fnc_modulefdskeetdestruction","bis_fnc_modulefdstatsclear","bis_fnc_modulefiringdrill","bis_fnc_modulefriendlyfire","bis_fnc_modulefuel","bis_fnc_modulegenericradio","bis_fnc_modulegrenade","bis_fnc_modulegroupid","bis_fnc_modulehandle","bis_fnc_modulehealth","bis_fnc_modulehint","bis_fnc_modulehq",
"bis_fnc_modulehvtinit","bis_fnc_modulehvtobjective","bis_fnc_modulehvtobjectives","bis_fnc_modulehvtobjectivesinstance","bis_fnc_moduleinit","bis_fnc_modulelightning","bis_fnc_modulemine","bis_fnc_modulemissionname","bis_fnc_modulemode","bis_fnc_modulemodules","bis_fnc_modulemptypedefense","bis_fnc_modulemptypegamemaster","bis_fnc_modulemptypegroundsupport",
"bis_fnc_modulemptypegroundsupportbase","bis_fnc_modulemptypesectorcontrol","bis_fnc_modulemptypeseize","bis_fnc_modulenametags","bis_fnc_moduleobjective","bis_fnc_moduleobjectivefind","bis_fnc_moduleobjectivegetin","bis_fnc_moduleobjectivemove","bis_fnc_moduleobjectiveracecp","bis_fnc_moduleobjectiveracefinish","bis_fnc_moduleobjectiveracestart",
"bis_fnc_moduleobjectivesector","bis_fnc_moduleobjectivetarget","bis_fnc_modulepositioning","bis_fnc_moduleposter","bis_fnc_modulepostprocess","bis_fnc_moduleprojectile","bis_fnc_modulepunishment","bis_fnc_moduleradiochannelcreate","bis_fnc_modulerank","bis_fnc_modulerating","bis_fnc_moduleremotecontrol","bis_fnc_modulerespawninventory","bis_fnc_modulerespawnposition",
"bis_fnc_modulerespawntickets","bis_fnc_modulerespawnvehicle","bis_fnc_modulesavegame","bis_fnc_modulesector","bis_fnc_modulesfx","bis_fnc_moduleshowhide","bis_fnc_modulesimulationmanager","bis_fnc_modulesimulationmanager_grab","bis_fnc_modulesiteinit","bis_fnc_moduleskill","bis_fnc_moduleskiptime","bis_fnc_moduleslingload","bis_fnc_modulesound","bis_fnc_modulespawnai",
"bis_fnc_modulespawnaioptions","bis_fnc_modulespawnaipoint","bis_fnc_modulespawnaisectortactic","bis_fnc_modulestrategicmapimage","bis_fnc_modulestrategicmapinit","bis_fnc_modulestrategicmapmission","bis_fnc_modulestrategicmapopen","bis_fnc_modulestrategicmaporbat","bis_fnc_modulesupportsinitprovider","bis_fnc_modulesupportsinitprovidervirtual",
"bis_fnc_modulesupportsinitrequester","bis_fnc_moduletaskcreate","bis_fnc_moduletasksetdescription","bis_fnc_moduletasksetdestination","bis_fnc_moduletasksetstate","bis_fnc_moduletimemultiplier","bis_fnc_moduletimetrial","bis_fnc_moduletracers","bis_fnc_moduletrident","bis_fnc_moduletriggers","bis_fnc_modulettcpclear","bis_fnc_modulettcpin","bis_fnc_modulettcpout",
"bis_fnc_modulettcptrigger","bis_fnc_modulettcptriggerbehind","bis_fnc_modulettstatsclear","bis_fnc_moduleunits","bis_fnc_moduleunlockarea","bis_fnc_moduleunlockobject","bis_fnc_modulevolume","bis_fnc_moduleweather","bis_fnc_modulezoneprotection","bis_fnc_modulezonerestriction","bis_fnc_monthdays","bis_fnc_moveaction","bis_fnc_movein","bis_fnc_movetorespawnposition",
"bis_fnc_mp","bis_fnc_mp_packet","bis_fnc_mpexec","bis_fnc_music","bis_fnc_nearesthelipad","bis_fnc_nearestnum","bis_fnc_nearestposition","bis_fnc_nearestroad","bis_fnc_neutralizeunit","bis_fnc_noflyzone","bis_fnc_noflyzonescreate","bis_fnc_noflyzonesexport","bis_fnc_numberdigits","bis_fnc_numbertext","bis_fnc_objectheight","bis_fnc_objectinventoryanimatedclose",
"bis_fnc_objectinventoryanimatedopen","bis_fnc_objectsgrabber","bis_fnc_objectside","bis_fnc_objectsmapper","bis_fnc_objecttype","bis_fnc_objectvar","bis_fnc_ondiarychanged","bis_fnc_onend","bis_fnc_onload","bis_fnc_onplayerconnected","bis_fnc_openfieldmanual","bis_fnc_orbataddgroupoverlay","bis_fnc_orbatanimate","bis_fnc_orbatconfigpreview","bis_fnc_orbatgetgroupparams",
"bis_fnc_orbatopen","bis_fnc_orbatremovegroupoverlay","bis_fnc_orbatsetgroupfade","bis_fnc_orbatsetgroupparams","bis_fnc_orbattooltip","bis_fnc_ordinalnumber","bis_fnc_overviewauthor","bis_fnc_overviewdifficulty","bis_fnc_overviewmission","bis_fnc_overviewterrain","bis_fnc_overviewtimetrial","bis_fnc_packstaticweapon","bis_fnc_param","bis_fnc_paramcountdown",
"bis_fnc_paramdaytime","bis_fnc_paramguerfriendly","bis_fnc_paramin","bis_fnc_paramrespawntickets","bis_fnc_paramrevivebleedoutduration","bis_fnc_paramreviveduration","bis_fnc_paramreviveforcerespawnduration","bis_fnc_paramrevivemedicspeedmultiplier","bis_fnc_paramrevivemode","bis_fnc_paramreviverequireditems","bis_fnc_paramreviverequireditemsfakconsumed",
"bis_fnc_paramreviverequiredtrait","bis_fnc_paramreviveunconsciousstatemode","bis_fnc_paramtimeacceleration","bis_fnc_paramviewdistance","bis_fnc_paramweather","bis_fnc_parsenumber","bis_fnc_phoneticalword","bis_fnc_pip","bis_fnc_playendmusic","bis_fnc_playername","bis_fnc_playersidefaction","bis_fnc_playmusic","bis_fnc_playsound","bis_fnc_playvideo","bis_fnc_posdegtoutm",
"bis_fnc_posdegtoworld","bis_fnc_position","bis_fnc_postogrid","bis_fnc_posutmtodeg","bis_fnc_preload","bis_fnc_preload_init","bis_fnc_preload_server","bis_fnc_prepareao","bis_fnc_progressloadingscreen","bis_fnc_quotations","bis_fnc_radialred","bis_fnc_radialredout","bis_fnc_radiosetchannel","bis_fnc_radiosetplaylist","bis_fnc_radiosettrack","bis_fnc_randomindex",
"bis_fnc_randomint","bis_fnc_randomnum","bis_fnc_randompos","bis_fnc_randompostrigger","bis_fnc_rankparams","bis_fnc_recompile","bis_fnc_refreshcommmenu","bis_fnc_registercuratorobject","bis_fnc_relativedirto","bis_fnc_relpos","bis_fnc_relposobject","bis_fnc_relscaleddist","bis_fnc_removeallscriptedeventhandlers","bis_fnc_removecommmenuitem","bis_fnc_removecuratoricon",
"bis_fnc_removedestroyedcuratoreditableobjects","bis_fnc_removefrompairs","bis_fnc_removeindex","bis_fnc_removenestedelement","bis_fnc_removerespawninventory","bis_fnc_removerespawnposition","bis_fnc_removescriptedeventhandler","bis_fnc_removestackedeventhandler","bis_fnc_removesupportlink","bis_fnc_removevirtualbackpackcargo","bis_fnc_removevirtualitemcargo",
"bis_fnc_removevirtualmagazinecargo","bis_fnc_removevirtualweaponcargo","bis_fnc_replacewithsimpleobject","bis_fnc_respawnbase","bis_fnc_respawnconfirm","bis_fnc_respawncounter","bis_fnc_respawnendmission","bis_fnc_respawngroup","bis_fnc_respawninstant","bis_fnc_respawnmanager","bis_fnc_respawnmenuinventory","bis_fnc_respawnmenuposition","bis_fnc_respawnmenuspectator",
"bis_fnc_respawnnone","bis_fnc_respawnrounds","bis_fnc_respawnseagull","bis_fnc_respawnside","bis_fnc_respawnspectator","bis_fnc_respawntickets","bis_fnc_respawntimepenalty","bis_fnc_respawnwave","bis_fnc_respect","bis_fnc_returnchildren","bis_fnc_returnconfigentry","bis_fnc_returngroupcomposition","bis_fnc_returnnestedelement","bis_fnc_returnparents",
"bis_fnc_returnvehicleturrets","bis_fnc_reviveallowed","bis_fnc_reviveawarddeath","bis_fnc_reviveawardkill","bis_fnc_revivebleedout","bis_fnc_revivecontrol","bis_fnc_revivedamagerecalc","bis_fnc_revivedamagereset","bis_fnc_revivedebug","bis_fnc_reviveenabled","bis_fnc_reviveexecutetemplates","bis_fnc_reviveget3dicons","bis_fnc_revivegetactionicon",
"bis_fnc_revivehandleforcerespawnaction","bis_fnc_revivehandleincapunitdetection","bis_fnc_revivehandlekeypress","bis_fnc_revivehandlereviveaction","bis_fnc_reviveiconcontrol","bis_fnc_reviveiconmanager","bis_fnc_reviveincapacitate","bis_fnc_reviveinit","bis_fnc_reviveisvalid","bis_fnc_revivekeys","bis_fnc_reviveonbeingrevived","bis_fnc_reviveonforcingrespawn",
"bis_fnc_reviveonplayerhandledamage","bis_fnc_reviveonplayerhandledamagebasic","bis_fnc_reviveonplayerhandleheal","bis_fnc_reviveonplayerkilled","bis_fnc_reviveonplayerrespawn","bis_fnc_reviveonstate","bis_fnc_reviveonstatejip","bis_fnc_reviveprogress","bis_fnc_reviveremovehelper","bis_fnc_revivesethelper","bis_fnc_revivesetstatus","bis_fnc_romannumeral",
"bis_fnc_rotatevector2d","bis_fnc_rounddir","bis_fnc_roundnum","bis_fnc_rsclayer","bis_fnc_rsclayer_list","bis_fnc_runlater","bis_fnc_sandstorm","bis_fnc_savegame","bis_fnc_saveinventory","bis_fnc_savevehicle","bis_fnc_saymessage","bis_fnc_sceneareaclearance","bis_fnc_scenecheckweapons","bis_fnc_scenecreatescenetrigger","bis_fnc_scenecreatesoundentities",
"bis_fnc_scenegetobjects","bis_fnc_scenegetparticipants","bis_fnc_scenegetpositionbyangle","bis_fnc_sceneintruderdetector","bis_fnc_scenemiscstuff","bis_fnc_scenerotate","bis_fnc_scenesetanimationsforgroup","bis_fnc_scenesetbehaviour","bis_fnc_scenesetobjects","bis_fnc_scenesetposformation","bis_fnc_scriptedmove","bis_fnc_scriptedwaypointtype","bis_fnc_secondstostring",
"bis_fnc_selectcrew","bis_fnc_selectdiarysubject","bis_fnc_selectrandom","bis_fnc_selectrandomweighted","bis_fnc_selectrespawntemplate","bis_fnc_selectrespawntemplates_args","bis_fnc_setcuratorattributes","bis_fnc_setcuratorcamera","bis_fnc_setcuratorvisionmodes","bis_fnc_setdate","bis_fnc_setfog","bis_fnc_setheight","bis_fnc_setidcstreamfriendly","bis_fnc_setidentity",
"bis_fnc_setmissionstatusslot","bis_fnc_setnestedelement","bis_fnc_setobjectrotation","bis_fnc_setobjecttexture","bis_fnc_setovercast","bis_fnc_setpitchbank","bis_fnc_setppeffecttemplate","bis_fnc_setrank","bis_fnc_setrespawndelay","bis_fnc_setrespawninventory","bis_fnc_setservervariable","bis_fnc_settask","bis_fnc_settasklocal","bis_fnc_settopairs",
"bis_fnc_setunitinsignia","bis_fnc_setvehiclemass","bis_fnc_shakecuratorcamera","bis_fnc_shakegauges","bis_fnc_sharedobjectives","bis_fnc_showcuratorattributes","bis_fnc_showcuratorfeedbackmessage","bis_fnc_showmarkers","bis_fnc_showmissionstatus","bis_fnc_shownotification","bis_fnc_showrespawnmenu","bis_fnc_showrespawnmenudisableitem",
"bis_fnc_showrespawnmenudisableitemcheck","bis_fnc_showrespawnmenudisableitemdraw","bis_fnc_showrespawnmenuheader","bis_fnc_showrespawnmenuinventory","bis_fnc_showrespawnmenuinventorydetails","bis_fnc_showrespawnmenuinventoryitems","bis_fnc_showrespawnmenuinventorylimit","bis_fnc_showrespawnmenuinventorylimitrefresh","bis_fnc_showrespawnmenuinventorylimitrespawn",
"bis_fnc_showrespawnmenuinventorylist","bis_fnc_showrespawnmenuinventoryloadout","bis_fnc_showrespawnmenuinventorymetadata","bis_fnc_showrespawnmenuposition","bis_fnc_showrespawnmenupositionlist","bis_fnc_showrespawnmenupositionmap","bis_fnc_showrespawnmenupositionmapdraw","bis_fnc_showrespawnmenupositionmaphandle","bis_fnc_showrespawnmenupositionmetadata",
"bis_fnc_showrespawnmenupositionname","bis_fnc_showrespawnmenupositionrefresh","bis_fnc_showsubtitle","bis_fnc_showtime","bis_fnc_showunitinfo","bis_fnc_showwelcomescreen","bis_fnc_shutdown","bis_fnc_sidecolor","bis_fnc_sideid","bis_fnc_sideisenemy","bis_fnc_sideisfriendly","bis_fnc_sidename","bis_fnc_sidenameunlocalized","bis_fnc_sidetype","bis_fnc_simpleobjectdata",
"bis_fnc_singlemissionconfig","bis_fnc_singlemissionkeys","bis_fnc_singlemissionname","bis_fnc_singlewingslidedoorclose","bis_fnc_singlewingslidedooropen","bis_fnc_skirmishtrigger","bis_fnc_sortalphabetically","bis_fnc_sortby","bis_fnc_sortnum","bis_fnc_spawn","bis_fnc_spawncrew","bis_fnc_spawnenemy","bis_fnc_spawngroup","bis_fnc_spawnobjects","bis_fnc_spawnvehicle",
"bis_fnc_splitstring","bis_fnc_spotter","bis_fnc_stalk","bis_fnc_startloadingscreen","bis_fnc_startloadingscreen_ids","bis_fnc_strategicmapanimate","bis_fnc_strategicmapmousebuttonclick","bis_fnc_strategicmapopen","bis_fnc_subclasses","bis_fnc_subselect","bis_fnc_supplydrop","bis_fnc_supplydropservice","bis_fnc_swapvars","bis_fnc_switchlamp","bis_fnc_synchronizedobjects",
"bis_fnc_target","bis_fnc_taskattack","bis_fnc_taskchildren","bis_fnc_taskcompleted","bis_fnc_taskcreate","bis_fnc_taskcurrent","bis_fnc_taskdefend","bis_fnc_taskdescription","bis_fnc_taskdestination","bis_fnc_taskexists","bis_fnc_taskhandler","bis_fnc_taskhint","bis_fnc_taskparent","bis_fnc_taskpatrol","bis_fnc_taskreal","bis_fnc_tasksetcurrent",
"bis_fnc_tasksetdescription","bis_fnc_tasksetdestination","bis_fnc_tasksetstate","bis_fnc_taskstate","bis_fnc_tasksunit","bis_fnc_taskvar","bis_fnc_teamcolor","bis_fnc_terraingradangle","bis_fnc_texttiles","bis_fnc_texturemarker","bis_fnc_texturevehicleicon","bis_fnc_threat","bis_fnc_timetostring","bis_fnc_titlecard","bis_fnc_titletext","bis_fnc_togglecuratorvisionmode",
"bis_fnc_toupperdisplaytexts","bis_fnc_tracebullets","bis_fnc_trackmissiontime","bis_fnc_transportservice","bis_fnc_tridentclient","bis_fnc_tridentexecute","bis_fnc_tridentgetrelationship","bis_fnc_tridenthandledamage","bis_fnc_tridentsetrelationship","bis_fnc_triggertomarker","bis_fnc_trimstring","bis_fnc_twowingdoornohandleclose","bis_fnc_twowingdoornohandleopen",
"bis_fnc_twowingdooronehandleclose","bis_fnc_twowingdooronehandleopen","bis_fnc_twowingdoortwohandleclose","bis_fnc_twowingdoortwohandleopen","bis_fnc_twowingslidedoorclose","bis_fnc_twowingslidedooropen","bis_fnc_typetext2","bis_fnc_typetext","bis_fnc_uniqueclasses","bis_fnc_unitaddon","bis_fnc_unitcapture","bis_fnc_unitcapturefiring","bis_fnc_unitcapturesimple",
"bis_fnc_unitheadgear","bis_fnc_unitplay","bis_fnc_unitplayfiring","bis_fnc_unitplaysimple","bis_fnc_unitvector","bis_fnc_unpackstaticweapon","bis_fnc_updateplayerarray","bis_fnc_validateparametersoo","bis_fnc_variablespaceadd","bis_fnc_variablespaceremove","bis_fnc_vectoradd","bis_fnc_vectordiff","bis_fnc_vectordiranduprelative","bis_fnc_vectorfromxtoy",
"bis_fnc_vectormultiply","bis_fnc_vehicleroles","bis_fnc_version","bis_fnc_versioninfo","bis_fnc_vrcourseballistics1","bis_fnc_vrcourseballistics2","bis_fnc_vrcourseballistics3","bis_fnc_vrcourseballistics4","bis_fnc_vrcoursecommandingactions1","bis_fnc_vrcoursecommandingactions2","bis_fnc_vrcoursecommandingactions3","bis_fnc_vrcoursecommandingbehaviour1",
"bis_fnc_vrcoursecommandingbehaviour2","bis_fnc_vrcoursecommandingbehaviour3","bis_fnc_vrcoursecommandingmovement1","bis_fnc_vrcoursecommandingmovement2","bis_fnc_vrcoursecommandingvehicles1","bis_fnc_vrcoursecommandingvehicles2","bis_fnc_vrcoursecommandingvehicles3","bis_fnc_vrcourseheliadvanced1","bis_fnc_vrcourseheliadvanced2","bis_fnc_vrcourseheliadvanced3",
"bis_fnc_vrcourseheliadvanced4","bis_fnc_vrcourseheliadvanced5","bis_fnc_vrcourseheliadvanced6","bis_fnc_vrcoursehelibasics1","bis_fnc_vrcoursehelibasics2","bis_fnc_vrcoursehelibasics3","bis_fnc_vrcoursehelislingload1","bis_fnc_vrcourseheliweapons1","bis_fnc_vrcourseheliweapons2","bis_fnc_vrcourseheliweapons3","bis_fnc_vrcourseheliweapons4","bis_fnc_vrcourselaunchers1",
"bis_fnc_vrcourselaunchers2","bis_fnc_vrcourselaunchers3","bis_fnc_vrcourseplaceables1","bis_fnc_vrcourseplaceables2","bis_fnc_vrcourseplaceables3","bis_fnc_vrcoursetargetdesignation1","bis_fnc_vrcoursetargetdesignation2","bis_fnc_vrcoursetargetdesignation3","bis_fnc_vrcourseweaponhandlinga1","bis_fnc_vrcourseweaponhandlinga2","bis_fnc_vrcourseweaponhandlinga3",
"bis_fnc_vrcourseweaponhandlingb1","bis_fnc_vrcourseweaponhandlingb2","bis_fnc_vrcourseweaponhandlingb3","bis_fnc_vrcourseweaponhandlingc1","bis_fnc_vrcourseweaponhandlingc2","bis_fnc_vrdrawborder","bis_fnc_vrdrawgrid","bis_fnc_vreffectkilled","bis_fnc_vrfadein","bis_fnc_vrfadeout","bis_fnc_vrhitpart","bis_fnc_vrspawneffect","bis_fnc_vrspawnselector","bis_fnc_vrtimer",
"bis_fnc_weaponaddon","bis_fnc_weaponcomponents","bis_fnc_weapondirectionrelative","bis_fnc_worldarea","bis_fnc_wpartillery","bis_fnc_wpland","bis_fnc_wppatrol","bis_fnc_wprelax","bis_fnc_wpsuppress","bis_fnc_zzrotate","bis_taskmanagement_markers2d","gui_fnc_exportdefine","life_fnc_levelcheck_meta"
};
BIS_UI_Functions[] = {
"bis_displayinterrupt_isoptionsexpanded","bis_fnc_3dcredits_meta","bis_fnc_aan_meta","bis_fnc_absspeed_meta","bis_fnc_activateaddons_meta","bis_fnc_addclassoo_meta","bis_fnc_addcommmenuitem_meta","bis_fnc_addcuratorareafromtrigger_meta","bis_fnc_addcuratorchallenge_meta","bis_fnc_addcuratoricon_meta","bis_fnc_addevidence_meta","bis_fnc_addrespawninventory_meta",
"bis_fnc_addrespawnposition_meta","bis_fnc_addscore_meta","bis_fnc_addscriptedeventhandler_meta","bis_fnc_addstackedeventhandler_meta","bis_fnc_addsupportlink_meta","bis_fnc_addtopairs_meta","bis_fnc_addvirtualbackpackcargo_meta","bis_fnc_addvirtualitemcargo_meta","bis_fnc_addvirtualmagazinecargo_meta","bis_fnc_addvirtualweaponcargo_meta","bis_fnc_addweapon_meta",
"bis_fnc_advhint_hinthandlers","bis_fnc_advhint_meta","bis_fnc_advhintarg_meta","bis_fnc_advhintcall_meta","bis_fnc_advhintcredits_meta","bis_fnc_aligntabs_meta","bis_fnc_allsynchronizedobjects_meta","bis_fnc_ambientanim_meta","bis_fnc_ambientanimcombat_meta","bis_fnc_ambientanimgetparams_meta","bis_fnc_ambientblacklist_meta","bis_fnc_ambientblacklistadd_meta",
"bis_fnc_ambientboats_meta","bis_fnc_ambientflyby_meta","bis_fnc_ambienthelicopters_meta","bis_fnc_ambientplanes_meta","bis_fnc_ambientpostprocess_meta","bis_fnc_animalbehaviour_meta","bis_fnc_animalsitespawn_meta","bis_fnc_animatetaskwaypoint_meta","bis_fnc_animtype_meta","bis_fnc_animviewer_meta","bis_fnc_areequal_meta","bis_fnc_arefriendly_meta",
"bis_fnc_arithmeticmean_meta","bis_fnc_arraycompare_meta","bis_fnc_arrayfinddeep_meta","bis_fnc_arrayinsert_meta","bis_fnc_arraypop_meta","bis_fnc_arraypush_meta","bis_fnc_arraypushstack_meta","bis_fnc_arrayshift_meta","bis_fnc_arrayshuffle_meta","bis_fnc_arrayunshift_meta","bis_fnc_arsenal_meta","bis_fnc_assignplayerrole_meta","bis_fnc_baseweapon_meta",
"bis_fnc_basicbackpack_meta","bis_fnc_basictask_meta","bis_fnc_blackin_meta","bis_fnc_blackout_meta","bis_fnc_bleedtickets_meta","bis_fnc_bloodeffect_meta","bis_fnc_boundingboxcorner_meta","bis_fnc_boundingboxdimensions_meta","bis_fnc_boundingboxmarker_meta","bis_fnc_boundingcircle_meta","bis_fnc_briefinganimate_meta","bis_fnc_briefinginit_meta",
"bis_fnc_buildingpositions_meta","bis_fnc_call_meta","bis_fnc_callscriptedeventhandler_meta","bis_fnc_camera_meta","bis_fnc_cameraold_meta","bis_fnc_camfollow_meta","bis_fnc_cargoturretindex_meta","bis_fnc_changesupportradiochannel_meta","bis_fnc_cinemaborder_meta","bis_fnc_classmagazine_meta","bis_fnc_classweapon_meta","bis_fnc_codeperformance_meta",
"bis_fnc_colorconfigtorgba_meta","bis_fnc_colorrgbatohtml_meta","bis_fnc_colorrgbatotexture_meta","bis_fnc_colorrgbtohtml_meta","bis_fnc_commsmenucreate_meta","bis_fnc_commsmenutoggleavailability_meta","bis_fnc_commsmenutogglevisibility_meta","bis_fnc_completedcuratorchallengescount_meta","bis_fnc_conditionalselect_meta","bis_fnc_configextremes_meta",
"bis_fnc_configpath_meta","bis_fnc_configviewer_meta","bis_fnc_consolidatearray_meta","bis_fnc_convertunits_meta","bis_fnc_countdown_meta","bis_fnc_counter_meta","bis_fnc_createlogrecord_meta","bis_fnc_createmenu_meta","bis_fnc_createobjectoo_meta","bis_fnc_credits_meta","bis_fnc_credits_movie_meta","bis_fnc_credits_movieconfig_meta","bis_fnc_credits_moviesupport_meta",
"bis_fnc_crewcount_meta","bis_fnc_crossproduct_meta","bis_fnc_crows_meta","bis_fnc_ctrlfittotextheight_meta","bis_fnc_ctrlsetscale_meta","bis_fnc_ctrltextheight_meta","bis_fnc_curatorattachobject_meta","bis_fnc_curatorattributes_meta","bis_fnc_curatorautomatic_meta","bis_fnc_curatorautomaticpositions_meta","bis_fnc_curatorchallengedestroyvehicle_meta",
"bis_fnc_curatorchallengefindintel_meta","bis_fnc_curatorchallengefireweapon_meta","bis_fnc_curatorchallengegetinvehicle_meta","bis_fnc_curatorchallengeilluminate_meta","bis_fnc_curatorchallengespawnlightning_meta","bis_fnc_curatorhint_meta","bis_fnc_curatorobjectedited_meta","bis_fnc_curatorobjectplaced_meta","bis_fnc_curatorobjectregistered_meta",
"bis_fnc_curatorobjectregisteredtable_meta","bis_fnc_curatorpinged_meta","bis_fnc_curatorrespawn_meta","bis_fnc_curatorsaymessage_meta","bis_fnc_curatorvisionmodes_meta","bis_fnc_curatorwaypointplaced_meta","bis_fnc_customgps_meta","bis_fnc_customgpsvideo_meta","bis_fnc_cutdecimals_meta","bis_fnc_damagechanged_meta","bis_fnc_damagepulsing_meta","bis_fnc_dbclasscheck_meta",
"bis_fnc_dbclassid_meta","bis_fnc_dbclassindex_meta","bis_fnc_dbclasslist_meta","bis_fnc_dbclassremove_meta","bis_fnc_dbclassreturn_meta","bis_fnc_dbclassset_meta","bis_fnc_dbconfigpath_meta","bis_fnc_dbimportconfig_meta","bis_fnc_dbimportxml_meta","bis_fnc_dbisclass_meta","bis_fnc_dbisvalue_meta","bis_fnc_dbprint_meta","bis_fnc_dbsymbolclass_meta","bis_fnc_dbsymbolvalue_meta",
"bis_fnc_dbvaluecheck_meta","bis_fnc_dbvalueid_meta","bis_fnc_dbvalueindex_meta","bis_fnc_dbvaluelist_meta","bis_fnc_dbvalueremove_meta","bis_fnc_dbvaluereturn_meta","bis_fnc_dbvalueset_meta","bis_fnc_deleteinventory_meta","bis_fnc_deletetask_meta","bis_fnc_deletevehiclecrew_meta","bis_fnc_destroycity_meta","bis_fnc_diagaar_meta","bis_fnc_diagaarrecord_meta","bis_fnc_diaganim_meta",
"bis_fnc_diagbulletcam_meta","bis_fnc_diagconfig_meta","bis_fnc_diagfindmissingauthors_meta","bis_fnc_diaghit_meta","bis_fnc_diagjiralink_meta","bis_fnc_diagkey_meta","bis_fnc_diagkeylayout_meta","bis_fnc_diagkeytest_meta","bis_fnc_diagknownastarget_meta","bis_fnc_diagknowntargets_meta","bis_fnc_diagloop_meta","bis_fnc_diagmacros_meta","bis_fnc_diagmacrosauthor_meta",
"bis_fnc_diagmacrosmapsize_meta","bis_fnc_diagmacrosnamesound_meta","bis_fnc_diagmacrosverify_meta","bis_fnc_diagmissionpositions_meta","bis_fnc_diagmissionweapons_meta","bis_fnc_diagpreview_meta","bis_fnc_diagpreviewcycle_meta","bis_fnc_diagpreviewvehiclecrew_meta","bis_fnc_diagradio_meta","bis_fnc_diagvehicleicons_meta","bis_fnc_diagwiki_meta","bis_fnc_diaryhints_meta",
"bis_fnc_diarymaps_meta","bis_fnc_didjip_meta","bis_fnc_dirindicator_meta","bis_fnc_dirteffect_meta","bis_fnc_dirto_meta","bis_fnc_disableloading_meta","bis_fnc_disablesaving_meta","bis_fnc_displayclouds_meta","bis_fnc_displaycolorget_meta","bis_fnc_displaycolorset_meta","bis_fnc_displaycontrols_meta","bis_fnc_displayloading_meta","bis_fnc_displaymission_meta","bis_fnc_displayname_meta",
"bis_fnc_displayresize_meta","bis_fnc_distance2d_meta","bis_fnc_distance2dsqr_meta","bis_fnc_dotproduct_meta","bis_fnc_drawao_meta","bis_fnc_drawcuratordeaths_meta","bis_fnc_drawcuratorlocations_meta","bis_fnc_drawcuratorrespawnmarkers_meta","bis_fnc_drawminefields_meta","bis_fnc_drawrespawnpositions_meta","bis_fnc_dynamictext_meta","bis_fnc_earthquake_meta","bis_fnc_effectfired_meta",
"bis_fnc_effectfiredartillery_meta","bis_fnc_effectfiredflares_meta","bis_fnc_effectfiredhelirocket_meta","bis_fnc_effectfiredlongsmoke_meta","bis_fnc_effectfiredrifle_meta","bis_fnc_effectfiredrocket_meta","bis_fnc_effectfiredsmokelauncher_boat_meta","bis_fnc_effectfiredsmokelauncher_meta","bis_fnc_effectkilled_meta","bis_fnc_effectkilledairdestruction_meta",
"bis_fnc_effectkilledairdestructionstage2_meta","bis_fnc_effectkilledsecondaries_meta","bis_fnc_effectplankton_meta","bis_fnc_enablesaving_meta","bis_fnc_endloadingscreen_meta","bis_fnc_endmission_meta","bis_fnc_endmissionserver_meta","bis_fnc_enemydetected_meta","bis_fnc_enemysides_meta","bis_fnc_enemytargets_meta","bis_fnc_error_meta","bis_fnc_errormsg_meta","bis_fnc_establishingshot_meta",
"bis_fnc_estimatedtimeleft_meta","bis_fnc_execfsm_meta","bis_fnc_executestackedeventhandler_meta","bis_fnc_execvm_meta","bis_fnc_exportcfggroups_meta","bis_fnc_exportcfghints_meta","bis_fnc_exportcfgmagazines_meta","bis_fnc_exportcfgpatches_meta","bis_fnc_exportcfgvehicles_meta","bis_fnc_exportcfgweapons_meta","bis_fnc_exportcuratorcosttable_meta","bis_fnc_exportfunctionstowiki_meta",
"bis_fnc_exportgroupformations_meta","bis_fnc_exportinventory_meta","bis_fnc_exportmaptobitxt_meta","bis_fnc_fadeeffect_meta","bis_fnc_fatigueeffect_meta","bis_fnc_feedbackinit_meta","bis_fnc_feedbackmain_meta","bis_fnc_ffvupdate_meta","bis_fnc_filterstring_meta","bis_fnc_findextreme_meta","bis_fnc_findinpairs_meta","bis_fnc_findnestedelement_meta","bis_fnc_findoverwatch_meta",
"bis_fnc_findsafepos_meta","bis_fnc_finishcuratorchallenge_meta","bis_fnc_fixdate_meta","bis_fnc_flameseffect_meta","bis_fnc_flies_meta","bis_fnc_forcecuratorinterface_meta","bis_fnc_forceend_meta","bis_fnc_formatcuratorchallengeobjects_meta","bis_fnc_fps_meta","bis_fnc_friendlysides_meta","bis_fnc_ftlmanager_meta","bis_fnc_functionmeta_meta","bis_fnc_functionpath_meta",
"bis_fnc_functionsdebug_meta","bis_fnc_gc_meta","bis_fnc_gcinit_meta","bis_fnc_genericsentence_meta","bis_fnc_genericsentenceinit_meta","bis_fnc_geometricmean_meta","bis_fnc_getcfgdata_meta","bis_fnc_getcfgdataarray_meta","bis_fnc_getcfgdatabool_meta","bis_fnc_getcfgdataobject_meta","bis_fnc_getcfgdatapool_meta","bis_fnc_getcfgisclass_meta","bis_fnc_getcfgsubclasses_meta",
"bis_fnc_getfactions_meta","bis_fnc_getfrompairs_meta","bis_fnc_getidc_meta","bis_fnc_getidd_meta","bis_fnc_getlinedist_meta","bis_fnc_getparamvalue_meta","bis_fnc_getpitchbank_meta","bis_fnc_getrespawninventories_meta","bis_fnc_getrespawnmarkers_meta","bis_fnc_getrespawnpositions_meta","bis_fnc_getservervariable_meta","bis_fnc_getturrets_meta","bis_fnc_getunitbyuid_meta",
"bis_fnc_getunitinsignia_meta","bis_fnc_getvirtualbackpackcargo_meta","bis_fnc_getvirtualitemcargo_meta","bis_fnc_getvirtualmagazinecargo_meta","bis_fnc_getvirtualweaponcargo_meta","bis_fnc_greatestnum_meta","bis_fnc_gridtopos_meta","bis_fnc_groupindicator_meta","bis_fnc_groupvehicles_meta","bis_fnc_guibackground_meta","bis_fnc_guieditor_meta","bis_fnc_guieffecttiles_alpha",
"bis_fnc_guieffecttiles_coef","bis_fnc_guieffecttiles_meta","bis_fnc_guigrid_meta","bis_fnc_guigridtoprofile_meta","bis_fnc_guihint_meta","bis_fnc_guimessage_meta","bis_fnc_guinewsfeed_meta","bis_fnc_halo_meta","bis_fnc_halt_meta","bis_fnc_healing_meta","bis_fnc_healtheffects_meta","bis_fnc_helicoptercanfly_meta","bis_fnc_helicopterdamage_meta","bis_fnc_helicoptergethitpoints_meta",
"bis_fnc_helicopterseat_meta","bis_fnc_helicopterseatmove_meta","bis_fnc_helicoptertype_meta","bis_fnc_help_meta","bis_fnc_hudlimits_meta","bis_fnc_importimagelinks_meta","bis_fnc_inanglesector_meta","bis_fnc_incapacitatedeffect_meta","bis_fnc_indicatebleeding_meta","bis_fnc_infotext_meta","bis_fnc_initcuratorattribute_meta","bis_fnc_initdisplay_meta","bis_fnc_initdisplays_meta",
"bis_fnc_initdisplays_prestart","bis_fnc_initexpo_meta","bis_fnc_initintelobject_meta","bis_fnc_initmodules_meta","bis_fnc_initmultiplayer_meta","bis_fnc_initparams_meta","bis_fnc_initplayable_meta","bis_fnc_initrespawn_meta","bis_fnc_initrespawnbackpack_meta","bis_fnc_initvirtualunit_meta","bis_fnc_instring_meta","bis_fnc_instructorfigure_meta","bis_fnc_interpolateweather_meta",
"bis_fnc_intrigger_meta","bis_fnc_inv_meta","bis_fnc_invadd_meta","bis_fnc_invcodetoarray_meta","bis_fnc_invremove_meta","bis_fnc_invslots_meta","bis_fnc_invslotsempty_meta","bis_fnc_invslottype_meta","bis_fnc_invstring_meta","bis_fnc_isbuildingenterable_meta","bis_fnc_iscampaign_meta","bis_fnc_iscurator_meta","bis_fnc_iscuratoreditable_meta","bis_fnc_isdemo_meta",
"bis_fnc_isforcedcuratorinterface_meta","bis_fnc_isinfrontof_meta","bis_fnc_isinsidearea_meta","bis_fnc_isinzoom_meta","bis_fnc_isleapyear_meta","bis_fnc_isloading_meta","bis_fnc_islocalized_meta","bis_fnc_isposblacklisted_meta","bis_fnc_isunitvirtual_meta","bis_fnc_itemtype_meta","bis_fnc_jukebox_meta","bis_fnc_kbcanspeak_meta","bis_fnc_kbcreatedummy_meta",
"bis_fnc_kbisspeaking_meta","bis_fnc_kbmenu_meta","bis_fnc_kbpriority_meta","bis_fnc_kbsentence_meta","bis_fnc_kbskip_meta","bis_fnc_kbtell_meta","bis_fnc_kbtelllocal_meta","bis_fnc_kbtopicconfig_meta","bis_fnc_keycode_meta","bis_fnc_keypointsexport_meta","bis_fnc_keypointsexportfromkml_meta","bis_fnc_kmlimport_meta","bis_fnc_limitsupport_meta","bis_fnc_linearconversion_meta",
"bis_fnc_listcuratorplayers_meta","bis_fnc_listplayers_meta","bis_fnc_livefeed_meta","bis_fnc_livefeedeffects_meta","bis_fnc_livefeedmoduleeffects_meta","bis_fnc_livefeedmoduleinit_meta","bis_fnc_livefeedmodulesetsource_meta","bis_fnc_livefeedmodulesettarget_meta","bis_fnc_livefeedsetsource_meta","bis_fnc_livefeedsettarget_meta","bis_fnc_livefeedterminate_meta","bis_fnc_loadclass_meta",
"bis_fnc_loadentry_meta","bis_fnc_loadfunctions_meta","bis_fnc_loadinventory_meta","bis_fnc_localize_meta","bis_fnc_locationdescription_meta","bis_fnc_locations_meta","bis_fnc_locweaponinfo_meta","bis_fnc_log_meta","bis_fnc_logformat_meta","bis_fnc_loop_meta","bis_fnc_lowestnum_meta","bis_fnc_magnitude_meta","bis_fnc_magnitudesqr_meta","bis_fnc_managecuratoraddons_meta",
"bis_fnc_managecuratorchallenges_meta","bis_fnc_mapsize_meta","bis_fnc_markercreate_meta","bis_fnc_markerparams_meta","bis_fnc_markerpath_meta","bis_fnc_markertotrigger_meta","bis_fnc_markwaypoints_meta","bis_fnc_maxdiffarray_meta","bis_fnc_mirrorcuratorsettings_meta","bis_fnc_miscanim_meta","bis_fnc_missilelaunchpositionfix_meta","bis_fnc_missionconversations_meta",
"bis_fnc_missionconversationslocal_meta","bis_fnc_missionflow_meta","bis_fnc_missionhandlers_meta","bis_fnc_missionrespawntype_meta","bis_fnc_missiontasks_meta","bis_fnc_missiontaskslocal_meta","bis_fnc_missiontimeleft_meta","bis_fnc_moduleai_meta","bis_fnc_moduleammo_meta","bis_fnc_moduleanimals_meta","bis_fnc_modulearsenal_meta","bis_fnc_modulebleedtickets_meta",
"bis_fnc_modulebootcampstage_meta","bis_fnc_modulecas_meta","bis_fnc_modulechat_meta","bis_fnc_modulecombatgetin_meta","bis_fnc_modulecountdown_meta","bis_fnc_modulecovermap_meta","bis_fnc_modulecreatediaryrecord_meta","bis_fnc_modulecreateprojectile_meta","bis_fnc_modulecurator_meta","bis_fnc_modulecuratoraddaddons_meta","bis_fnc_modulecuratoraddcameraarea_meta",
"bis_fnc_modulecuratoraddeditableobjects_meta","bis_fnc_modulecuratoraddeditingarea_meta","bis_fnc_modulecuratoraddeditingareaplayers_meta","bis_fnc_modulecuratoraddicon_meta","bis_fnc_modulecuratoraddpoints_meta","bis_fnc_modulecuratorsetattributes_meta","bis_fnc_modulecuratorsetcamera_meta","bis_fnc_modulecuratorsetcoefs_meta","bis_fnc_modulecuratorsetcostsdefault_meta",
"bis_fnc_modulecuratorsetcostsside_meta","bis_fnc_modulecuratorsetcostsvehicleclass_meta","bis_fnc_modulecuratorseteditingareatype_meta","bis_fnc_modulecuratorsetobjectcost_meta","bis_fnc_moduledamage_meta","bis_fnc_moduledate_meta","bis_fnc_modulediary_meta","bis_fnc_moduledooropen_meta","bis_fnc_moduleeffectsbubbles_meta","bis_fnc_moduleeffectsemittercreator_meta",
"bis_fnc_moduleeffectsfire_meta","bis_fnc_moduleeffectsplankton_meta","bis_fnc_moduleeffectsshells_meta","bis_fnc_moduleeffectssmoke_meta","bis_fnc_moduleendmission_meta","bis_fnc_moduleexecute_meta","bis_fnc_modulefdcpclear_meta","bis_fnc_modulefdcpin_meta","bis_fnc_modulefdcpout_meta","bis_fnc_modulefdfademarker_meta","bis_fnc_modulefdskeetdestruction_meta",
"bis_fnc_modulefdstatsclear_meta","bis_fnc_modulefiringdrill_meta","bis_fnc_modulefriendlyfire_meta","bis_fnc_modulefuel_meta","bis_fnc_modulegenericradio_meta","bis_fnc_modulegroupid_meta","bis_fnc_modulehandle_meta","bis_fnc_modulehealth_meta","bis_fnc_modulehint_meta","bis_fnc_modulehq_meta","bis_fnc_moduleinit_meta","bis_fnc_modulelightning_meta",
"bis_fnc_modulemine_meta","bis_fnc_modulemissionname_meta","bis_fnc_modulemode_meta","bis_fnc_modulemodules_meta","bis_fnc_modulemptypedefense_meta","bis_fnc_modulemptypegamemaster_meta","bis_fnc_modulemptypegroundsupport_meta","bis_fnc_modulemptypegroundsupportbase_meta","bis_fnc_modulemptypesectorcontrol_meta","bis_fnc_modulemptypeseize_meta","bis_fnc_moduleobjective_meta",
"bis_fnc_moduleobjectivefind_meta","bis_fnc_moduleobjectivegetin_meta","bis_fnc_moduleobjectivemove_meta","bis_fnc_moduleobjectiveracecp_meta","bis_fnc_moduleobjectiveracefinish_meta","bis_fnc_moduleobjectiveracestart_meta","bis_fnc_moduleobjectivesector_meta","bis_fnc_moduleobjectivetarget_meta","bis_fnc_modulepositioning_meta","bis_fnc_moduleposter_meta",
"bis_fnc_modulepostprocess_meta","bis_fnc_moduleprojectile_meta","bis_fnc_modulepunishment_meta","bis_fnc_moduleradiochannelcreate_meta","bis_fnc_modulerank_meta","bis_fnc_modulerating_meta","bis_fnc_moduleremotecontrol_meta","bis_fnc_modulerespawninventory_meta","bis_fnc_modulerespawnposition_meta","bis_fnc_modulerespawntickets_meta","bis_fnc_modulerespawnvehicle_meta",
"bis_fnc_modulesavegame_meta","bis_fnc_modulesector_meta","bis_fnc_modulesfx_meta","bis_fnc_moduleshowhide_meta","bis_fnc_modulesimulationmanager_meta","bis_fnc_moduleskill_meta","bis_fnc_moduleskiptime_meta","bis_fnc_moduleslingload_meta","bis_fnc_modulesound_meta","bis_fnc_modulespawnai_meta","bis_fnc_modulespawnaioptions_meta","bis_fnc_modulespawnaipoint_meta",
"bis_fnc_modulespawnaisectortactic_meta","bis_fnc_modulestrategicmapimage_meta","bis_fnc_modulestrategicmapinit_meta","bis_fnc_modulestrategicmapmission_meta","bis_fnc_modulestrategicmapopen_meta","bis_fnc_modulestrategicmaporbat_meta","bis_fnc_moduletaskcreate_meta","bis_fnc_moduletasksetdescription_meta","bis_fnc_moduletasksetdestination_meta","bis_fnc_moduletasksetstate_meta",
"bis_fnc_moduletimemultiplier_meta","bis_fnc_moduletimetrial_meta","bis_fnc_moduletracers_meta","bis_fnc_moduletrident_meta","bis_fnc_moduletriggers_meta","bis_fnc_modulettcpclear_meta","bis_fnc_modulettcpin_meta","bis_fnc_modulettcpout_meta","bis_fnc_modulettcptrigger_meta","bis_fnc_modulettcptriggerbehind_meta","bis_fnc_modulettstatsclear_meta","bis_fnc_moduleunits_meta",
"bis_fnc_moduleunlockarea_meta","bis_fnc_moduleunlockobject_meta","bis_fnc_modulevolume_meta","bis_fnc_moduleweather_meta","bis_fnc_modulezoneprotection_meta","bis_fnc_modulezonerestriction_meta","bis_fnc_monthdays_meta","bis_fnc_moveaction_meta","bis_fnc_movein_meta","bis_fnc_movetorespawnposition_meta","bis_fnc_mpexec_meta","bis_fnc_music_meta","bis_fnc_nearesthelipad_meta",
"bis_fnc_nearestnum_meta","bis_fnc_nearestposition_meta","bis_fnc_nearestroad_meta","bis_fnc_neutralizeunit_meta","bis_fnc_noflyzone_meta","bis_fnc_noflyzonescreate_meta","bis_fnc_noflyzonesexport_meta","bis_fnc_numberdigits_meta","bis_fnc_numbertext_meta","bis_fnc_objectheight_meta","bis_fnc_objectsgrabber_meta","bis_fnc_objectside_meta","bis_fnc_objectsmapper_meta",
"bis_fnc_objecttype_meta","bis_fnc_objectvar_meta","bis_fnc_ondiarychanged_meta","bis_fnc_onend_meta","bis_fnc_onload_meta","bis_fnc_onplayerconnected_meta","bis_fnc_openfieldmanual_meta","bis_fnc_orbataddgroupoverlay_meta","bis_fnc_orbatanimate_meta","bis_fnc_orbatconfigpreview_meta","bis_fnc_orbatgetgroupparams_meta","bis_fnc_orbatopen_meta","bis_fnc_orbatremovegroupoverlay_meta",
"bis_fnc_orbatsetgroupfade_meta","bis_fnc_orbatsetgroupparams_meta","bis_fnc_orbattooltip_meta","bis_fnc_ordinalnumber_meta","bis_fnc_overviewauthor_meta","bis_fnc_overviewdifficulty_meta","bis_fnc_overviewmission_meta","bis_fnc_overviewterrain_meta","bis_fnc_overviewtimetrial_meta","bis_fnc_packstaticweapon_meta","bis_fnc_param_meta","bis_fnc_paramcountdown_meta",
"bis_fnc_paramdaytime_meta","bis_fnc_paramguerfriendly_meta","bis_fnc_paramin_meta","bis_fnc_paramrespawntickets_meta","bis_fnc_paramviewdistance_meta","bis_fnc_paramweather_meta","bis_fnc_parsenumber_meta","bis_fnc_phoneticalword_meta","bis_fnc_pip_meta","bis_fnc_playendmusic_meta","bis_fnc_playername_meta","bis_fnc_playersidefaction_meta","bis_fnc_playmusic_meta","bis_fnc_playsound_meta",
"bis_fnc_playvideo_meta","bis_fnc_posdegtoutm_meta","bis_fnc_posdegtoworld_meta","bis_fnc_position_meta","bis_fnc_postogrid_meta","bis_fnc_posutmtodeg_meta","bis_fnc_preload_meta","bis_fnc_prepareao_meta","bis_fnc_progressloadingscreen_meta","bis_fnc_quotations_meta","bis_fnc_radialred_meta","bis_fnc_radialredout_meta","bis_fnc_radiosetchannel_meta","bis_fnc_radiosetplaylist_meta",
"bis_fnc_radiosettrack_meta","bis_fnc_randomindex_meta","bis_fnc_randomint_meta","bis_fnc_randomnum_meta","bis_fnc_randompos_meta","bis_fnc_randompostrigger_meta","bis_fnc_rankparams_meta","bis_fnc_recompile_meta","bis_fnc_refreshcommmenu_meta","bis_fnc_registercuratorobject_meta","bis_fnc_relativedirto_meta","bis_fnc_relpos_meta","bis_fnc_relposobject_meta","bis_fnc_relscaleddist_meta",
"bis_fnc_removeallscriptedeventhandlers_meta","bis_fnc_removecommmenuitem_meta","bis_fnc_removecuratoricon_meta","bis_fnc_removedestroyedcuratoreditableobjects_meta","bis_fnc_removefrompairs_meta","bis_fnc_removeindex_meta","bis_fnc_removenestedelement_meta","bis_fnc_removerespawninventory_meta","bis_fnc_removerespawnposition_meta","bis_fnc_removescriptedeventhandler_meta",
"bis_fnc_removestackedeventhandler_meta","bis_fnc_removesupportlink_meta","bis_fnc_removevirtualbackpackcargo_meta","bis_fnc_removevirtualitemcargo_meta","bis_fnc_removevirtualmagazinecargo_meta","bis_fnc_removevirtualweaponcargo_meta","bis_fnc_respawnbase_meta","bis_fnc_respawnconfirm_meta","bis_fnc_respawncounter_meta","bis_fnc_respawnendmission_meta","bis_fnc_respawngroup_meta",
"bis_fnc_respawninstant_meta","bis_fnc_respawnmanager_meta","bis_fnc_respawnmenuinventory_meta","bis_fnc_respawnmenuposition_meta","bis_fnc_respawnmenuspectator_meta","bis_fnc_respawnnone_meta","bis_fnc_respawnrounds_meta","bis_fnc_respawnseagull_meta","bis_fnc_respawnside_meta","bis_fnc_respawnspectator_meta","bis_fnc_respawntickets_meta","bis_fnc_respawntimepenalty_meta",
"bis_fnc_respawnwave_meta","bis_fnc_respect_meta","bis_fnc_returnchildren_meta","bis_fnc_returnconfigentry_meta","bis_fnc_returngroupcomposition_meta","bis_fnc_returnnestedelement_meta","bis_fnc_returnparents_meta","bis_fnc_returnvehicleturrets_meta","bis_fnc_romannumeral_meta","bis_fnc_rotatevector2d_meta","bis_fnc_rounddir_meta","bis_fnc_roundnum_meta","bis_fnc_rsclayer_meta",
"bis_fnc_runlater_meta","bis_fnc_sandstorm_meta","bis_fnc_savegame_meta","bis_fnc_saveinventory_meta","bis_fnc_saymessage_meta","bis_fnc_sceneareaclearance_meta","bis_fnc_scenecheckweapons_meta","bis_fnc_scenecreatescenetrigger_meta","bis_fnc_scenecreatesoundentities_meta","bis_fnc_scenegetobjects_meta","bis_fnc_scenegetparticipants_meta","bis_fnc_scenegetpositionbyangle_meta",
"bis_fnc_sceneintruderdetector_meta","bis_fnc_scenemiscstuff_meta","bis_fnc_scenerotate_meta","bis_fnc_scenesetanimationsforgroup_meta","bis_fnc_scenesetbehaviour_meta","bis_fnc_scenesetobjects_meta","bis_fnc_scenesetposformation_meta","bis_fnc_scriptedmove_meta","bis_fnc_scriptedwaypointtype_meta","bis_fnc_secondstostring_meta","bis_fnc_selectcrew_meta","bis_fnc_selectdiarysubject_meta",
"bis_fnc_selectrandom_meta","bis_fnc_selectrandomweighted_meta","bis_fnc_selectrespawntemplate_meta","bis_fnc_setcuratorattributes_meta","bis_fnc_setcuratorcamera_meta","bis_fnc_setcuratorvisionmodes_meta","bis_fnc_setdate_meta","bis_fnc_setfog_meta","bis_fnc_setheight_meta","bis_fnc_setidcstreamfriendly_meta","bis_fnc_setidentity_meta","bis_fnc_setmissionstatusslot_meta",
"bis_fnc_setnestedelement_meta","bis_fnc_setobjectrotation_meta","bis_fnc_setobjecttexture_meta","bis_fnc_setovercast_meta","bis_fnc_setpitchbank_meta","bis_fnc_setppeffecttemplate_meta","bis_fnc_setrank_meta","bis_fnc_setrespawndelay_meta","bis_fnc_setrespawninventory_meta","bis_fnc_setservervariable_meta","bis_fnc_settask_meta","bis_fnc_settasklocal_meta","bis_fnc_settopairs_meta",
"bis_fnc_setunitinsignia_meta","bis_fnc_shakecuratorcamera_meta","bis_fnc_shakegauges_meta","bis_fnc_showcuratorattributes_meta","bis_fnc_showcuratorfeedbackmessage_meta","bis_fnc_showmarkers_meta","bis_fnc_showmissionstatus_meta","bis_fnc_shownotification_meta","bis_fnc_showrespawnmenu_meta","bis_fnc_showtime_meta","bis_fnc_showunitinfo_meta","bis_fnc_shutdown_meta","bis_fnc_sidecolor_meta",
"bis_fnc_sideid_meta","bis_fnc_sidename_meta","bis_fnc_sidetype_meta","bis_fnc_singlemissionconfig_meta","bis_fnc_singlemissionkeys_meta","bis_fnc_singlemissionname_meta","bis_fnc_skirmishtrigger_meta","bis_fnc_sortalphabetically_meta","bis_fnc_sortby_meta","bis_fnc_sortnum_meta","bis_fnc_spawn_meta","bis_fnc_spawncrew_meta","bis_fnc_spawnenemy_meta","bis_fnc_spawngroup_meta",
"bis_fnc_spawnobjects_meta","bis_fnc_spawnvehicle_meta","bis_fnc_splitstring_meta","bis_fnc_spotter_meta","bis_fnc_startloadingscreen_meta","bis_fnc_strategicmapanimate_meta","bis_fnc_strategicmapmousebuttonclick_meta","bis_fnc_strategicmapopen_meta","bis_fnc_subclasses_meta","bis_fnc_subselect_meta","bis_fnc_supplydrop_meta","bis_fnc_supplydropservice_meta","bis_fnc_swapvars_meta",
"bis_fnc_synchronizedobjects_meta","bis_fnc_target_meta","bis_fnc_taskattack_meta","bis_fnc_taskchildren_meta","bis_fnc_taskcompleted_meta","bis_fnc_taskcreate_meta","bis_fnc_taskcurrent_meta","bis_fnc_taskdefend_meta","bis_fnc_taskdescription_meta","bis_fnc_taskdestination_meta","bis_fnc_taskexists_meta","bis_fnc_taskhandler_meta","bis_fnc_taskhint_meta","bis_fnc_taskparent_meta",
"bis_fnc_taskpatrol_meta","bis_fnc_taskreal_meta","bis_fnc_tasksetcurrent_meta","bis_fnc_tasksetdescription_meta","bis_fnc_tasksetdestination_meta","bis_fnc_tasksetstate_meta","bis_fnc_taskstate_meta","bis_fnc_tasksunit_meta","bis_fnc_taskvar_meta","bis_fnc_teamcolor_meta","bis_fnc_terraingradangle_meta","bis_fnc_texttiles_meta","bis_fnc_texturemarker_meta","bis_fnc_texturevehicleicon_meta",
"bis_fnc_threat_meta","bis_fnc_timetostring_meta","bis_fnc_titlecard_meta","bis_fnc_titletext_meta","bis_fnc_togglecuratorvisionmode_meta","bis_fnc_toupperdisplaytexts_meta","bis_fnc_tracebullets_meta","bis_fnc_trackmissiontime_meta","bis_fnc_transportservice_meta","bis_fnc_tridentclient_meta","bis_fnc_tridentexecute_meta","bis_fnc_tridentgetrelationship_meta",
"bis_fnc_tridenthandledamage_meta","bis_fnc_tridentsetrelationship_meta","bis_fnc_triggertomarker_meta","bis_fnc_trimstring_meta","bis_fnc_typetext2_meta","bis_fnc_typetext_meta","bis_fnc_uniqueclasses_meta","bis_fnc_unitaddon_meta","bis_fnc_unitcapture_meta","bis_fnc_unitcapturefiring_meta","bis_fnc_unitcapturesimple_meta","bis_fnc_unitplay_meta","bis_fnc_unitplayfiring_meta",
"bis_fnc_unitplaysimple_meta","bis_fnc_unitvector_meta","bis_fnc_unpackstaticweapon_meta","bis_fnc_updateplayerarray_meta","bis_fnc_validateparametersoo_meta","bis_fnc_variablespaceadd_meta","bis_fnc_variablespaceremove_meta","bis_fnc_vectoradd_meta","bis_fnc_vectordiff_meta","bis_fnc_vectorfromxtoy_meta","bis_fnc_vectormultiply_meta","bis_fnc_vehicleroles_meta","bis_fnc_version_meta",
"bis_fnc_vrcourseballistics1_meta","bis_fnc_vrcourseballistics2_meta","bis_fnc_vrcourseballistics3_meta","bis_fnc_vrcourseballistics4_meta","bis_fnc_vrcoursecommandingactions1_meta","bis_fnc_vrcoursecommandingactions2_meta","bis_fnc_vrcoursecommandingactions3_meta","bis_fnc_vrcoursecommandingbehaviour1_meta","bis_fnc_vrcoursecommandingbehaviour2_meta",
"bis_fnc_vrcoursecommandingbehaviour3_meta","bis_fnc_vrcoursecommandingmovement1_meta","bis_fnc_vrcoursecommandingmovement2_meta","bis_fnc_vrcoursecommandingvehicles1_meta","bis_fnc_vrcoursecommandingvehicles2_meta","bis_fnc_vrcoursecommandingvehicles3_meta","bis_fnc_vrcourseheliadvanced1_meta","bis_fnc_vrcourseheliadvanced2_meta","bis_fnc_vrcourseheliadvanced3_meta",
"bis_fnc_vrcourseheliadvanced4_meta","bis_fnc_vrcourseheliadvanced5_meta","bis_fnc_vrcourseheliadvanced6_meta","bis_fnc_vrcoursehelibasics1_meta","bis_fnc_vrcoursehelibasics2_meta","bis_fnc_vrcoursehelibasics3_meta","bis_fnc_vrcoursehelislingload1_meta","bis_fnc_vrcourseheliweapons1_meta","bis_fnc_vrcourseheliweapons2_meta","bis_fnc_vrcourseheliweapons3_meta",
"bis_fnc_vrcourseheliweapons4_meta","bis_fnc_vrcourselaunchers1_meta","bis_fnc_vrcourselaunchers2_meta","bis_fnc_vrcourselaunchers3_meta","bis_fnc_vrcourseplaceables1_meta","bis_fnc_vrcourseplaceables2_meta","bis_fnc_vrcourseplaceables3_meta","bis_fnc_vrcoursetargetdesignation1_meta","bis_fnc_vrcoursetargetdesignation2_meta","bis_fnc_vrcoursetargetdesignation3_meta",
"bis_fnc_vrdrawborder_meta","bis_fnc_vrdrawgrid_meta","bis_fnc_vreffectkilled_meta","bis_fnc_vrfadein_meta","bis_fnc_vrfadeout_meta","bis_fnc_vrspawneffect_meta","bis_fnc_vrspawnselector_meta","bis_fnc_vrtimer_meta","bis_fnc_weaponaddon_meta","bis_fnc_weaponcomponents_meta","bis_fnc_worldarea_meta","bis_fnc_wpartillery_meta","bis_fnc_wpland_meta","bis_fnc_wppatrol_meta",
"bis_fnc_wprelax_meta","bis_fnc_wpsuppress_meta","bis_fnc_zzrotate_meta","bis_functions_list","bis_functions_listpostinit","bis_functions_listpreinit","bis_functions_listrecompile","bis_initgame","bis_mainmenu_islearnexpanded","bis_mainmenu_isoptionsexpanded","bis_mainmenu_isplayexpanded","bis_rscdisplayloading_selecteddlcappid","bis_shownchat"
};
//Life Functions
LIFE_Functions[] = {
"life_fnc_aan","life_fnc_aan_meta","life_fnc_acctype","life_fnc_acctype_meta","life_fnc_actionkeyhandler","life_fnc_actionkeyhandler_meta","life_fnc_addvehicle2chain","life_fnc_addvehicle2chain_meta","life_fnc_admincompensate","life_fnc_admincompensate_meta","life_fnc_admindebugcon","life_fnc_admindebugcon_meta","life_fnc_adminfreeze","life_fnc_adminfreeze_meta",
"life_fnc_admingetid","life_fnc_admingetid_meta","life_fnc_admingodmode","life_fnc_admingodmode_meta","life_fnc_adminid","life_fnc_adminid_meta","life_fnc_admininfo","life_fnc_admininfo_meta","life_fnc_adminmarkers","life_fnc_adminmarkers_meta","life_fnc_adminmenu","life_fnc_adminmenu_meta","life_fnc_adminquery","life_fnc_adminquery_meta","life_fnc_adminspectate",
"life_fnc_adminspectate_meta","life_fnc_adminteleport","life_fnc_adminteleport_meta","life_fnc_admintphere","life_fnc_admintphere_meta","life_fnc_animsync","life_fnc_animsync_meta","life_fnc_arrestaction","life_fnc_arrestaction_meta","life_fnc_atmmenu","life_fnc_atmmenu_meta","life_fnc_bankdeposit","life_fnc_bankdeposit_meta","life_fnc_banktransfer",
"life_fnc_banktransfer_meta","life_fnc_bankwithdraw","life_fnc_bankwithdraw_meta","life_fnc_blastingcharge","life_fnc_blastingcharge_meta","life_fnc_boltcutter","life_fnc_boltcutter_meta","life_fnc_bountyreceive","life_fnc_bountyreceive_meta","life_fnc_broadcast","life_fnc_broadcast_meta","life_fnc_buyclothes","life_fnc_buyclothes_meta","life_fnc_buyhouse",
"life_fnc_buyhouse_meta","life_fnc_buyhousegarage","life_fnc_buyhousegarage_meta","life_fnc_buylicense","life_fnc_buylicense_meta","life_fnc_calweightdiff","life_fnc_calweightdiff_meta","life_fnc_capturehideout","life_fnc_capturehideout_meta","life_fnc_catchfish","life_fnc_catchfish_meta","life_fnc_catchturtle","life_fnc_catchturtle_meta","life_fnc_cellphone",
"life_fnc_cellphone_meta","life_fnc_changeclothes","life_fnc_changeclothes_meta","life_fnc_chopshopmenu","life_fnc_chopshopmenu_meta","life_fnc_chopshopselection","life_fnc_chopshopselection_meta","life_fnc_chopshopsell","life_fnc_chopshopsell_meta","life_fnc_civloadout","life_fnc_civloadout_meta","life_fnc_civmarkers","life_fnc_civmarkers_meta",
"life_fnc_clearvehicleammo","life_fnc_clearvehicleammo_meta","life_fnc_clothingfilter","life_fnc_clothingfilter_meta","life_fnc_clothingmenu","life_fnc_clothingmenu_meta","life_fnc_colorvehicle","life_fnc_colorvehicle_meta","life_fnc_containerinvsearch","life_fnc_containerinvsearch_meta","life_fnc_containermenu","life_fnc_containermenu_meta","life_fnc_copbreakdoor",
"life_fnc_copbreakdoor_meta","life_fnc_cophouseowner","life_fnc_cophouseowner_meta","life_fnc_copinteractionmenu","life_fnc_copinteractionmenu_meta","life_fnc_coplights","life_fnc_coplights_meta","life_fnc_coploadout","life_fnc_coploadout_meta","life_fnc_copmarkers","life_fnc_copmarkers_meta","life_fnc_copsearch","life_fnc_copsearch_meta","life_fnc_copsiren",
"life_fnc_copsiren_meta","life_fnc_copsplit","life_fnc_copsplit_meta","life_fnc_corpse","life_fnc_corpse_meta","life_fnc_creategang","life_fnc_creategang_meta","life_fnc_deathscreen","life_fnc_deathscreen_meta","life_fnc_defusekit","life_fnc_defusekit_meta","life_fnc_demochargetimer","life_fnc_demochargetimer_meta","life_fnc_devicemine","life_fnc_devicemine_meta",
"life_fnc_displayhandler","life_fnc_displayhandler_meta","life_fnc_dooranimate","life_fnc_dooranimate_meta","life_fnc_dpfinish","life_fnc_dpfinish_meta","life_fnc_dropfishingnet","life_fnc_dropfishingnet_meta","life_fnc_dropitems","life_fnc_dropitems_meta","life_fnc_escinterupt","life_fnc_escinterupt_meta","life_fnc_escortaction","life_fnc_escortaction_meta",
"life_fnc_fedcamdisplay","life_fnc_fedcamdisplay_meta","life_fnc_fetchcfgdetails","life_fnc_fetchcfgdetails_meta","life_fnc_fetchdeadgear","life_fnc_fetchdeadgear_meta","life_fnc_fetchvehinfo","life_fnc_fetchvehinfo_meta","life_fnc_flashbang","life_fnc_flashbang_meta","life_fnc_freezeplayer","life_fnc_freezeplayer_meta","life_fnc_fuellbchange","life_fnc_fuellbchange_meta",
"life_fnc_fuelrefuelcar","life_fnc_fuelrefuelcar_meta","life_fnc_fuelstatopen","life_fnc_fuelstatopen_meta","life_fnc_fuelstore","life_fnc_fuelstore_meta","life_fnc_fuelsupply","life_fnc_fuelsupply_meta","life_fnc_gangcreated","life_fnc_gangcreated_meta","life_fnc_gangdeposit","life_fnc_gangdeposit_meta","life_fnc_gangdisband","life_fnc_gangdisband_meta","life_fnc_gangdisbanded",
"life_fnc_gangdisbanded_meta","life_fnc_ganginvite","life_fnc_ganginvite_meta","life_fnc_ganginviteplayer","life_fnc_ganginviteplayer_meta","life_fnc_gangkick","life_fnc_gangkick_meta","life_fnc_gangleave","life_fnc_gangleave_meta","life_fnc_gangmenu","life_fnc_gangmenu_meta","life_fnc_gangnewleader","life_fnc_gangnewleader_meta","life_fnc_gangupgrade","life_fnc_gangupgrade_meta",
"life_fnc_gangwithdraw","life_fnc_gangwithdraw_meta","life_fnc_garagelbchange","life_fnc_garagelbchange_meta","life_fnc_garagerefund","life_fnc_garagerefund_meta","life_fnc_gather","life_fnc_gather_meta","life_fnc_getbuildingpositions","life_fnc_getbuildingpositions_meta","life_fnc_getdpmission","life_fnc_getdpmission_meta","life_fnc_givediff","life_fnc_givediff_meta","life_fnc_giveitem",
"life_fnc_giveitem_meta","life_fnc_givemoney","life_fnc_givemoney_meta","life_fnc_gutanimal","life_fnc_gutanimal_meta","life_fnc_handledamage","life_fnc_handledamage_meta","life_fnc_handleinv","life_fnc_handleinv_meta","life_fnc_handleitem","life_fnc_handleitem_meta","life_fnc_healhospital","life_fnc_healhospital_meta","life_fnc_hideobj","life_fnc_hideobj_meta","life_fnc_houseconfig",
"life_fnc_houseconfig_meta","life_fnc_housemenu","life_fnc_housemenu_meta","life_fnc_hudsetup","life_fnc_hudsetup_meta","life_fnc_hudupdate","life_fnc_hudupdate_meta","life_fnc_impoundaction","life_fnc_impoundaction_meta","life_fnc_impoundmenu","life_fnc_impoundmenu_meta","life_fnc_initciv","life_fnc_initciv_meta","life_fnc_initcop","life_fnc_initcop_meta","life_fnc_initgang",
"life_fnc_initgang_meta","life_fnc_inithouses","life_fnc_inithouses_meta","life_fnc_initmedic","life_fnc_initmedic_meta","life_fnc_inventoryclosed","life_fnc_inventoryclosed_meta","life_fnc_inventoryopened","life_fnc_inventoryopened_meta","life_fnc_isdamaged","life_fnc_isdamaged_meta","life_fnc_isnumeric","life_fnc_isnumeric_meta","life_fnc_isuidactive","life_fnc_isuidactive_meta",
"life_fnc_itemweight","life_fnc_itemweight_meta","life_fnc_jail","life_fnc_jail_meta","life_fnc_jailme","life_fnc_jailme_meta","life_fnc_jailsys","life_fnc_jailsys_meta","life_fnc_jerrycanrefuel","life_fnc_jerrycanrefuel_meta","life_fnc_jerryrefuel","life_fnc_jerryrefuel_meta","life_fnc_jumpfnc","life_fnc_jumpfnc_meta","life_fnc_keydrop","life_fnc_keydrop_meta","life_fnc_keygive",
"life_fnc_keygive_meta","life_fnc_keyhandler","life_fnc_keyhandler_meta","life_fnc_keymenu","life_fnc_keymenu_meta","life_fnc_knockedout","life_fnc_knockedout_meta","life_fnc_knockoutaction","life_fnc_knockoutaction_meta","life_fnc_levelcheck","life_fnc_levelcheck_meta","life_fnc_licensecheck","life_fnc_licensecheck_meta","life_fnc_licensesread","life_fnc_licensesread_meta","life_fnc_lighthouse",
"life_fnc_lighthouse_meta","life_fnc_lighthouseaction","life_fnc_lighthouseaction_meta","life_fnc_loaddeadgear","life_fnc_loaddeadgear_meta","life_fnc_loadgear","life_fnc_loadgear_meta","life_fnc_lockhouse","life_fnc_lockhouse_meta","life_fnc_lockpick","life_fnc_lockpick_meta","life_fnc_lockuphouse","life_fnc_lockuphouse_meta","life_fnc_lockvehicle","life_fnc_lockvehicle_meta","life_fnc_mediclights",
"life_fnc_mediclights_meta","life_fnc_medicloadout","life_fnc_medicloadout_meta","life_fnc_medicmarkers","life_fnc_medicmarkers_meta","life_fnc_medicrequest","life_fnc_medicrequest_meta","life_fnc_medicsiren","life_fnc_medicsiren_meta","life_fnc_medicsirenlights","life_fnc_medicsirenlights_meta","life_fnc_mine","life_fnc_mine_meta","life_fnc_movein","life_fnc_nearatm","life_fnc_nearatm_meta",
"life_fnc_nearestdoor","life_fnc_nearestdoor_meta","life_fnc_nearestobjects","life_fnc_nearestobjects_meta","life_fnc_nearunits","life_fnc_nearunits_meta","life_fnc_newsbroadcast","life_fnc_newsbroadcast_meta","life_fnc_numbertext","life_fnc_numbertext_meta","life_fnc_onfired","life_fnc_onfired_meta","life_fnc_onplayerkilled","life_fnc_onplayerkilled_meta","life_fnc_onplayerrespawn",
"life_fnc_onplayerrespawn_meta","life_fnc_ontakeitem","life_fnc_ontakeitem_meta","life_fnc_openinventory","life_fnc_openinventory_meta","life_fnc_p_changescreen","life_fnc_p_changescreen_meta","life_fnc_p_getscreengroupidc","life_fnc_p_getscreengroupidc_meta","life_fnc_p_handlescreenevent","life_fnc_p_handlescreenevent_meta","life_fnc_p_init","life_fnc_p_init_meta","life_fnc_p_initmainmenu",
"life_fnc_p_initmainmenu_meta","life_fnc_p_onclick","life_fnc_p_onclick_meta","life_fnc_p_oneachframe","life_fnc_p_oneachframe_meta","life_fnc_p_onload","life_fnc_p_onload_meta","life_fnc_p_onmouseenter","life_fnc_p_onmouseenter_meta","life_fnc_p_onmouseexit","life_fnc_p_onmouseexit_meta","life_fnc_p_onunload","life_fnc_p_onunload_meta","life_fnc_p_openmenu","life_fnc_p_openmenu_meta",
"life_fnc_p_updatemenu","life_fnc_p_updatemenu_meta","life_fnc_packupspikes","life_fnc_packupspikes_meta","life_fnc_pardon","life_fnc_pardon_meta","life_fnc_pickaxeuse","life_fnc_pickaxeuse_meta","life_fnc_pickupitem","life_fnc_pickupitem_meta","life_fnc_pickupmoney","life_fnc_pickupmoney_meta","life_fnc_placecontainer","life_fnc_placecontainer_meta","life_fnc_placestorage","life_fnc_placestorage_meta",
"life_fnc_playercount","life_fnc_playercount_meta","life_fnc_playerinbuilding","life_fnc_playerinbuilding_meta","life_fnc_playerskins","life_fnc_playerskins_meta","life_fnc_playertags","life_fnc_playertags_meta","life_fnc_postbail","life_fnc_postbail_meta","life_fnc_postnewsbroadcast","life_fnc_postnewsbroadcast_meta","life_fnc_processaction","life_fnc_processaction_meta","life_fnc_progressbar",
"life_fnc_progressbar_meta","life_fnc_pulloutaction","life_fnc_pulloutaction_meta","life_fnc_pulloutveh","life_fnc_pulloutveh_meta","life_fnc_pushobject","life_fnc_pushobject_meta","life_fnc_putincar","life_fnc_putincar_meta","life_fnc_questiondealer","life_fnc_questiondealer_meta","life_fnc_radar","life_fnc_radar_meta","life_fnc_raidhouse","life_fnc_raidhouse_meta","life_fnc_receiveitem",
"life_fnc_receiveitem_meta","life_fnc_receivemoney","life_fnc_receivemoney_meta","life_fnc_removecontainer","life_fnc_removecontainer_meta","life_fnc_removeitem","life_fnc_removeitem_meta","life_fnc_removelicenses","life_fnc_removelicenses_meta","life_fnc_repairdoor","life_fnc_repairdoor_meta","life_fnc_repairtruck","life_fnc_repairtruck_meta","life_fnc_requestmedic","life_fnc_requestmedic_meta",
"life_fnc_respawned","life_fnc_respawned_meta","life_fnc_restrain","life_fnc_restrain_meta","life_fnc_restrainaction","life_fnc_restrainaction_meta","life_fnc_revealobjects","life_fnc_revealobjects_meta","life_fnc_revived","life_fnc_revived_meta","life_fnc_reviveplayer","life_fnc_reviveplayer_meta","life_fnc_robaction","life_fnc_robaction_meta","life_fnc_robperson","life_fnc_robperson_meta",
"life_fnc_robreceive","life_fnc_robreceive_meta","life_fnc_s_onchar","life_fnc_s_onchar_meta","life_fnc_s_oncheckedchange","life_fnc_s_oncheckedchange_meta","life_fnc_s_onsliderchange","life_fnc_s_onsliderchange_meta","life_fnc_safefix","life_fnc_safefix_meta","life_fnc_safeinventory","life_fnc_safeinventory_meta","life_fnc_safeopen","life_fnc_safeopen_meta","life_fnc_safetake","life_fnc_safetake_meta",
"life_fnc_savegear","life_fnc_savegear_meta","life_fnc_say3d","life_fnc_say3d_meta","life_fnc_searchaction","life_fnc_searchaction_meta","life_fnc_searchclient","life_fnc_searchclient_meta","life_fnc_searchposempty","life_fnc_searchposempty_meta","life_fnc_searchvehaction","life_fnc_searchvehaction_meta","life_fnc_seizeclient","life_fnc_seizeclient_meta","life_fnc_seizeplayeraction",
"life_fnc_seizeplayeraction_meta","life_fnc_sellgarage","life_fnc_sellgarage_meta","life_fnc_sellhouse","life_fnc_sellhouse_meta","life_fnc_sellhousegarage","life_fnc_sellhousegarage_meta","life_fnc_servicechopper","life_fnc_servicechopper_meta","life_fnc_setfuel","life_fnc_setfuel_meta","life_fnc_setmapposition","life_fnc_setmapposition_meta","life_fnc_settexture_meta","life_fnc_settingsmenu",
"life_fnc_settingsmenu_meta","life_fnc_setupactions","life_fnc_setupactions_meta","life_fnc_setupevh","life_fnc_setupevh_meta","life_fnc_simdisable","life_fnc_simdisable_meta","life_fnc_sirenlights","life_fnc_sirenlights_meta","life_fnc_sounddevice","life_fnc_sounddevice_meta","life_fnc_spawnconfirm","life_fnc_spawnconfirm_meta","life_fnc_spawnmenu","life_fnc_spawnmenu_meta","life_fnc_spawnpointcfg",
"life_fnc_spawnpointcfg_meta","life_fnc_spawnpointselected","life_fnc_spawnpointselected_meta","life_fnc_spikestrip","life_fnc_spikestrip_meta","life_fnc_spikestripeffect","life_fnc_spikestripeffect_meta","life_fnc_stopescorting","life_fnc_stopescorting_meta","life_fnc_storagebox","life_fnc_storagebox_meta","life_fnc_storevehicle","life_fnc_storevehicle_meta","life_fnc_storevehicleaction",
"life_fnc_storevehicleaction_meta","life_fnc_stripdownplayer","life_fnc_stripdownplayer_meta","life_fnc_surrender","life_fnc_surrender_meta","life_fnc_survival","life_fnc_survival_meta","life_fnc_tazed","life_fnc_tazed_meta","life_fnc_tazesound","life_fnc_tazesound_meta","life_fnc_teleport","life_fnc_teleport_meta","life_fnc_ticketaction","life_fnc_ticketaction_meta","life_fnc_ticketgive",
"life_fnc_ticketgive_meta","life_fnc_ticketpaid","life_fnc_ticketpaid_meta","life_fnc_ticketpay","life_fnc_ticketpay_meta","life_fnc_ticketprompt","life_fnc_ticketprompt_meta","life_fnc_unimpound","life_fnc_unimpound_meta","life_fnc_unrestrain","life_fnc_unrestrain_meta","life_fnc_updateviewdistance","life_fnc_updateviewdistance_meta","life_fnc_useitem","life_fnc_useitem_meta",
"life_fnc_vehicleanimate","life_fnc_vehicleanimate_meta","life_fnc_vehiclecolor3drefresh","life_fnc_vehiclecolor3drefresh_meta","life_fnc_vehiclecolorcfg","life_fnc_vehiclecolorcfg_meta","life_fnc_vehiclecolorstr","life_fnc_vehiclecolorstr_meta","life_fnc_vehiclegarage","life_fnc_vehiclegarage_meta","life_fnc_vehiclelistcfg","life_fnc_vehiclelistcfg_meta","life_fnc_vehicleowners",
"life_fnc_vehicleowners_meta","life_fnc_vehicleshop3dpreview","life_fnc_vehicleshop3dpreview_meta","life_fnc_vehicleshopbuy","life_fnc_vehicleshopbuy_meta","life_fnc_vehicleshopend3dpreview","life_fnc_vehicleshopend3dpreview_meta","life_fnc_vehicleshopinit3dpreview","life_fnc_vehicleshopinit3dpreview_meta","life_fnc_vehicleshoplbchange","life_fnc_vehicleshoplbchange_meta",
"life_fnc_vehicleshopmenu","life_fnc_vehicleshopmenu_meta","life_fnc_vehicleweight","life_fnc_vehicleweight_meta","life_fnc_vehicleweightcfg","life_fnc_vehicleweightcfg_meta","life_fnc_vehinventory","life_fnc_vehinventory_meta","life_fnc_vehinvsearch","life_fnc_vehinvsearch_meta","life_fnc_vehshoplicenses","life_fnc_vehshoplicenses_meta","life_fnc_vehstoreitem","life_fnc_vehstoreitem_meta",
"life_fnc_vehtakeitem","life_fnc_vehtakeitem_meta","life_fnc_vinteractionmenu","life_fnc_vinteractionmenu_meta","life_fnc_virt_buy","life_fnc_virt_buy_meta","life_fnc_virt_menu","life_fnc_virt_menu_meta","life_fnc_virt_sell","life_fnc_virt_sell_meta","life_fnc_virt_update","life_fnc_virt_update_meta","life_fnc_wantedadd","life_fnc_wantedadd_meta","life_fnc_wantedaddp","life_fnc_wantedaddp_meta",
"life_fnc_wantedbounty","life_fnc_wantedbounty_meta","life_fnc_wantedfetch","life_fnc_wantedfetch_meta","life_fnc_wantedgrab","life_fnc_wantedgrab_meta","life_fnc_wantedinfo","life_fnc_wantedinfo_meta","life_fnc_wantedlist","life_fnc_wantedlist_meta","life_fnc_wantedmenu","life_fnc_wantedmenu_meta","life_fnc_wantedperson","life_fnc_wantedperson_meta","life_fnc_wantedpunish","life_fnc_wantedpunish_meta",
"life_fnc_wantedremove","life_fnc_wantedremove_meta","life_fnc_wantedticket","life_fnc_wantedticket_meta","life_fnc_weaponshopaccs","life_fnc_weaponshopaccs_meta","life_fnc_weaponshopbuysell","life_fnc_weaponshopbuysell_meta","life_fnc_weaponshopcfg","life_fnc_weaponshopcfg_meta","life_fnc_weaponshopfilter","life_fnc_weaponshopfilter_meta","life_fnc_weaponshopmags","life_fnc_weaponshopmags_meta",
"life_fnc_weaponshopmenu","life_fnc_weaponshopmenu_meta","life_fnc_weaponshopselection","life_fnc_weaponshopselection_meta","life_fnc_welcomenotification","life_fnc_welcomenotification_meta","life_fnc_whereami","life_fnc_whereami_meta","life_fnc_wiretransfer","life_fnc_wiretransfer_meta"
};
SERVER_Functions[] = {
"db_fnc_asynccall","db_fnc_bool","db_fnc_insertrequest","db_fnc_insertvehicle","db_fnc_mresarray","db_fnc_mresstring","db_fnc_mrestoarray","db_fnc_numbersafe","db_fnc_queryrequest","db_fnc_updatepartial","db_fnc_updaterequest","ton_fnc_addhouse","ton_fnc_addhouse_meta","ton_fnc_cell_adminmsg","ton_fnc_cell_adminmsgall","ton_fnc_cell_emsrequest","ton_fnc_cell_textadmin","ton_fnc_cell_textcop",
"ton_fnc_cell_textmsg","ton_fnc_chopshopsell","ton_fnc_chopshopsell_meta","ton_fnc_cleanup","ton_fnc_cleanup_meta","ton_fnc_cleanuprequest","ton_fnc_cleanuprequest_meta","ton_fnc_clientdisconnect","ton_fnc_clientdisconnect_meta","ton_fnc_clientgangkick","ton_fnc_clientgangleader","ton_fnc_clientgangleft","TON_fnc_clientGangLeft","ton_fnc_clientgetkey","ton_fnc_clientmessage","ton_fnc_federalupdate",
"ton_fnc_federalupdate_meta","ton_fnc_fetchplayerhouses","ton_fnc_fetchplayerhouses_meta","ton_fnc_getid","ton_fnc_getid_meta","ton_fnc_getvehicles","ton_fnc_getvehicles_meta","ton_fnc_housecleanup","ton_fnc_housecleanup_meta","ton_fnc_huntingzone","ton_fnc_huntingzone_meta","ton_fnc_index","ton_fnc_inithouses","ton_fnc_inithouses_meta","ton_fnc_insertgang","ton_fnc_insertgang_meta","ton_fnc_isnumber",
"ton_fnc_keymanagement","ton_fnc_keymanagement_meta","ton_fnc_managesc","ton_fnc_managesc_meta","ton_fnc_mapmarkersadmin","ton_fnc_pickupaction","ton_fnc_pickupaction_meta","ton_fnc_player_query","ton_fnc_queryplayergang","ton_fnc_queryplayergang_meta","ton_fnc_removegang","ton_fnc_removegang_meta","ton_fnc_sellhouse","ton_fnc_sellhouse_meta","ton_fnc_setobjvar","ton_fnc_setobjvar_meta","ton_fnc_spawnvehicle",
"ton_fnc_spawnvehicle_meta","ton_fnc_spikestrip","ton_fnc_spikestrip_meta","ton_fnc_terrainsort","ton_fnc_terrainsort_meta","ton_fnc_updategang","ton_fnc_updategang_meta","ton_fnc_updatehousecontainers","ton_fnc_updatehousecontainers_meta","ton_fnc_updatehousetrunk","ton_fnc_updatehousetrunk_meta","ton_fnc_vehiclecreate","ton_fnc_vehiclecreate_meta","ton_fnc_vehicledead","ton_fnc_vehicledead_meta",
"ton_fnc_vehicledelete","ton_fnc_vehicledelete_meta","ton_fnc_vehiclestore","ton_fnc_vehiclestore_meta"
};
SOCK_Functions[] = {
"sock_fnc_dataquery","sock_fnc_dataquery_meta","sock_fnc_insertplayerinfo","sock_fnc_insertplayerinfo_meta","sock_fnc_requestreceived","sock_fnc_requestreceived_meta","sock_fnc_syncdata","sock_fnc_syncdata_meta","sock_fnc_updatepartial","sock_fnc_updatepartial_meta","sock_fnc_updaterequest","sock_fnc_updaterequest_meta"
};
DB_Functions[] = {
"db_fnc_asynccall","db_fnc_asynccall_meta","db_fnc_bool","db_fnc_bool_meta","db_fnc_insertrequest","db_fnc_insertrequest_meta","db_fnc_insertvehicle","db_fnc_insertvehicle_meta","db_fnc_mresarray","db_fnc_mresarray_meta","db_fnc_mresstring","db_fnc_mresstring_meta","db_fnc_mrestoarray","db_fnc_mrestoarray_meta","db_fnc_numbersafe","db_fnc_numbersafe_meta","db_fnc_queryrequest","db_fnc_queryrequest_meta",
"db_fnc_updatepartial","db_fnc_updatepartial_meta","db_fnc_updaterequest","db_fnc_updaterequest_meta"
};
//SpyGlass Functions
SPY_Functions[] = {
"spy_fnc_cookiejar","spy_fnc_cookiejar_meta","spy_fnc_notifyadmins","spy_fnc_notifyadmins_meta","spy_fnc_observe","spy_fnc_observe_meta"
};
/*
allowedVariables is a list of variables in-use and their type
When adding a new variable your format should look like this:
[variablename,TYPENAME] i.e:
["store_shop_vendor","OBJECT"] This is for when you place a new NPC and name it in the editor
*/
allowedVariables[] = {
{ "civ_air_2", "OBJECT" }, { "civ_air_1", "OBJECT" }, { "vendor_hospital_3", "OBJECT" }, { "vendor_hospital_2", "OBJECT" }, { "hospital_assis_3", "OBJECT" }, { "hospital_assis_2", "OBJECT" }, { "cop_air_3", "OBJECT" }, { "cop_air_2", "OBJECT" }, { "civ_air_2_3", "OBJECT" }, { "civ_air_2_2", "OBJECT" }, { "atm_hospital_3", "OBJECT" }, { "atm_hospital_2", "OBJECT" }, { "civ_air_1_2", "OBJECT" },
{ "ton_fnc_handleblastingcharge", "CODE" }, { "bis_egspectator_showcamerabuttons", "BOOL" }, { "bis_egspectator_allow3ppcamera", "BOOL" }, { "bis_egspectatorcamera_lights", "ARRAY" }, { "bis_egspectatorcamera_lightson", "BOOL" }, { "bis_egspectator_showcontrolshelper", "BOOL" }, { "bis_egspectator_showlists", "BOOL" }, { "bis_egspectator_viewdistance", "SCALAR" }, { "life_broadcasttimer", "SCALAR" },
{ "bis_egspectator_showheader", "BOOL" }, { "cash", "SCALAR" }, { "life_action_spikestripdeploy", "SCALAR" }, { "rscegspectator_lastticktime", "SCALAR" }, { "bis_pp_burndamage", "ARRAY" }, { "life_safeobj", "OBJECT" }, { "life_dp_point", "OBJECT" }, { "life_dp_start", "OBJECT" }, { "bis_fnc_diagmacrossimpleobject", "CODE" }, { "bis_fnc_groupfromnetid", "CODE" }, { "bis_fnc_tasktype", "CODE" },
{ "bis_fnc_tasksetalwaysvisible", "CODE" }, { "bis_fnc_tasktypeicon", "CODE" }, { "bis_fnc_tasksettype", "CODE" }, { "bis_fnc_objectfromnetid", "CODE" }, { "bis_fnc_sunrisesunsettime", "CODE" }, { "bis_fnc_netid", "CODE" }, { "bis_fnc_getarea", "CODE" }, { "bis_fnc_taskalwaysvisible", "CODE" }, { "life_fuelprices", "SCALAR" }, { "life_markers_vehicles", "ARRAY" }, { "life_markers_players", "ARRAY" },
{ "advanced_log", "STRING" }, { "money_log", "STRING" }, { "life_markers_Vehicles", "ARRAY" }, { "life_markers_Players", "ARRAY" },{ "vehiclefuellist", "ARRAY" }, { "life_vinact_curtarget", "OBJECT" }, { "life_ticket_cop", "OBJECT" }, { "life_ticket_unit", "OBJECT" }, { "life_ticket_val", "SCALAR" }, { "life_ticket_paid", "BOOL" }, { "life_boltcutter_uses", "SCALAR" }, { "life_pinact_container", "OBJECT" },
{ "luce_1", "SCRIPT" }, { "life_bail_amount", "SCALAR" }, { "life_canpay_bail", "BOOL" }, { "hc_life", "SCALAR" }, { "life_fnc_requestclientid", "OBJECT" }, { "life_hc_isactive", "BOOL" }, { "ton_fnc_playtime_values", "ARRAY" }, { "ton_fnc_playtime_values_request", "ARRAY" }, { "hc_1", "OBJECT" }, { "hc_life", "BOOL" }, { "rscdisplaympinterrupt_respawntime", "SCALAR" }, { "bis_dynamictext_spawn_8", "SCRIPT" },
{ "life_my_gang", "OBJECT" }, {"am_exit","SCALAR"}, { "life_garage_sp", "ARRAY" }, { "life_garage_sp", "STRING" }, { "0", "ARRAY" }, { "life_oldvestitems", "ARRAY" }, { "life_shop_cam", "OBJECT" }, { "life_oldclothes", "STRING" }, { "life_cmenu_lock", "BOOL" }, { "life_oldhat", "STRING" }, { "life_oldvest", "STRING" }, { "life_oldglasses", "STRING" }, { "life_oldbackpackitems","ARRAY"},
{"life_oldbackpack","STRING"}, { "rscnotification_data", "ARRAY" }, { "life_curwep_h", "STRING" }, { "carshop_lux_1", "OBJECT" }, { "life_olduniformitems", "ARRAY" }, { "bis_fnc_setvehiclemass_fsm", "SCALAR" }, { "life_preview_light", "OBJECT" }, { "life_attachment_point", "OBJECT" }, { "life_preview_3d_vehicle_cam", "OBJECT" }, { "life_preview_3d_vehicle_object", "OBJECT" }, { "life_pos_exist", "BOOL" },
{ "life_pos_attach", "ARRAY" }, { "life_inv_", "SCALAR" }, { "life_markers", "BOOL" }, { "life_frozen", "BOOL" }, { "life_settings_revealobjects", "BOOL" }, { "life_inv_rooster", "SCALAR" }, { "station_shop_09", "OBJECT" }, { "station_shop_08", "OBJECT" }, { "station_shop_07", "OBJECT" }, { "station_shop_06", "OBJECT" }, { "station_shop_04", "OBJECT" }, { "life_disable_getout", "BOOL" },
{ "bis_taskenhancements_3d", "BOOL" }, { "life_settings_enablenewsbroadcast", "BOOL" }, { "life_settings_enablesidechannel", "BOOL" }, { "life_isknocked", "BOOL" }, { "life_settings_viewdistancecar", "SCALAR" }, { "life_save_gear", "ARRAY" }, { "life_settings_viewdistanceair", "SCALAR" }, { "life_disable_getin", "BOOL" }, { "life_god", "BOOL" }, { "station_shop_3", "OBJECT" }, { "station_shop_2", "OBJECT" },
{ "station_shop_1", "OBJECT" }, { "station_shop_24", "OBJECT" }, { "station_shop_23", "OBJECT" }, { "station_shop_22", "OBJECT" }, { "station_shop_21", "OBJECT" }, { "station_shop_20", "OBJECT" }, { "life_settings_viewdistancefoot", "SCALAR" }, { "life_settings_tagson", "BOOL" }, { "station_shop_19", "OBJECT" }, { "bis_taskenhancements_enable", "BOOL" }, { "station_shop_18", "OBJECT" }, { "station_shop_17", "OBJECT" },
{ "life_container_activeobj", "OBJECT" }, { "station_shop_16", "OBJECT" }, { "station_shop_15", "OBJECT" }, { "station_shop_14", "OBJECT" }, { "station_shop_13", "OBJECT" }, { "station_shop_12", "OBJECT" }, { "station_shop_11", "OBJECT" }, { "station_shop_10", "OBJECT" }, { "life_progress", "DISPLAY" }, { "life_veh_shop", "ARRAY" }, { "bis_fnc_feedback_deltadamage", "SCALAR" }, { "life_clothing_store", "STRING" },
{ "life_pinact_curtarget", "OBJECT" }, { "license_cop_cg", "BOOL" }, { "life_blacklisted", "BOOL" }, { "bis_hitarray", "ARRAY" }, { "life_session_time", "BOOL" }, { "jumpactiontime", "SCALAR" }, { "life_paycheck", "SCALAR" }, { "life_adminlevel", "SCALAR" }, { "life_coplevel", "SCALAR" }, { "life_mediclevel", "SCALAR" }, { "rscdisplayloading_progressmission", "BOOL" }, { "dp_missions", "OBJECT" },
{ "life_inv_diamonduncut", "SCALAR" }, { "master_group", "OBJECT" }, { "bis_oldbleedremaining", "SCALAR" }, { "license_civ_marijuana", "BOOL" }, { "kron_getarg", "CODE" }, { "life_server_extdb_notloaded", "BOOL" }, { "life_inv_marijuana", "SCALAR" }, { "life_is_arrested", "BOOL" }, { "life_inv_copperunrefined", "SCALAR" }, { "jjjj_mmmm___eeeeeee_spawn_weapon", "CODE" }, { "life_actions", "ARRAY" },
{ "startprogress", "BOOL" }, { "life_firstspawn", "BOOL" }, { "life_action_gathering", "BOOL" }, { "license_civ_trucking", "BOOL" }, { "bis_oldoxygen", "SCALAR" }, { "license_shop", "OBJECT" }, { "bis_pptype", "STRING" }, { "life_inv_redgull", "SCALAR" }, { "bis_deathblur", "SCALAR" }, { "life_inv_roosterraw", "SCALAR" }, { "w_o_o_k_i_e_anti_anti_hax", "CODE" }, { "jxmxe_spunkveh", "CODE" },
{ "life_session_tries", "SCALAR" }, { "life_paycheck", "CODE" }, { "bis_suffcc", "SCALAR" }, { "bis_bleedcc", "SCALAR" }, { "bis_performingdustpp", "BOOL" }, { "e_x_t_a_s_y_car_re", "CODE" }, { "bis_functions_mainscope", "OBJECT" }, { "bis_deathradialblur", "SCALAR" }, { "life_inv_goldbar", "SCALAR" }, { "bis_washit", "BOOL" }, { "life_action_delay", "SCALAR" }, { "reb_1_1", "OBJECT" }, { "jxmxe_spunkair", "CODE" },
{ "life_knockout", "BOOL" }, { "reb_1_2", "OBJECT" }, { "do_nuke", "CODE" }, { "life_inv_salema", "SCALAR" }, { "reb_1_3", "OBJECT" }, { "life_inv_sand", "SCALAR" }, { "life_inv_sheep", "SCALAR" }, { "bis_hitcc", "SCALAR" }, { "bis_add", "BOOL" }, { "life_inv_saltrefined", "SCALAR" }, { "life_inv_tbacon", "SCALAR" }, { "life_adminlevel", "CODE" }, { "life_sidechat", "BOOL" }, { "bis_pulsingfreq", "SCALAR" },
{ "bis_burnwet", "SCALAR" }, { "bis_olddmg", "SCALAR" }, { "w_o_o_k_i_e_fud_anti_anti_hax", "CODE" }, { "bis_alfa", "SCALAR" }, { "license_civ_cement", "BOOL" }, { "kron_arraytoupper", "CODE" }, { "kron_compare", "CODE" }, { "life_inv_pickaxe", "SCALAR" }, { "life_inv_hen", "SCALAR" }, { "bis_oldwasburning", "BOOL" }, { "bis_pp_burning", "BOOL" }, { "bis_counter", "SCALAR" }, { "license_civ_cocaine", "BOOL" },
{ "license_civ_sand", "BOOL" }, { "dp_10", "OBJECT" }, { "kron_strindex", "CODE" }, { "dp_11", "OBJECT" }, { "life_inv_fuelempty", "SCALAR" }, { "life_inv_defusekit", "SCALAR" }, { "life_garage_sell", "CODE" }, { "dp_12", "OBJECT" }, { "bis_damagefromexplosion", "SCALAR" }, { "life_inv_goatraw", "SCALAR" }, { "dp_13", "OBJECT" }, { "life_coplevel", "CODE" }, { "life_inv_boltcutter", "SCALAR" },
{ "life_inv_henraw", "SCALAR" }, { "dp_14", "OBJECT" }, { "jxmxe_publishvehicle", "CODE" }, { "life_garage_store", "BOOL" }, { "dp_15", "OBJECT" }, { "license_civ_rebel", "BOOL" }, { "life_houses", "ARRAY" }, { "dp_1", "OBJECT" }, { "dp_16", "OBJECT" }, { "life_respawned", "BOOL" }, { "life_inv_oilprocessed", "SCALAR" }, { "life_inv_goat", "SCALAR" }, { "license_civ_diamond", "BOOL" }, { "life_gangdata", "ARRAY" },
{ "dp_2", "OBJECT" }, { "dp_17", "OBJECT" }, { "life_inv_tuna", "SCALAR" }, { "life_donorlevel", "SCALAR" }, { "life_donorlevel", "CODE" }, { "dp_3", "OBJECT" }, { "dp_18", "OBJECT" }, { "bis_respawninprogress", "BOOL" }, { "life_vdfoot", "SCALAR" }, { "dp_4", "OBJECT" }, { "dp_19", "OBJECT" }, { "life_action_inuse", "BOOL" }, { "houses_76561198060146341", "ARRAY" }, { "dp_5", "OBJECT" }, { "bis_helper", "SCALAR" },
{ "jxmxe_spunkveh2", "CODE" }, { "jjjj_mmmm___eeeeeee_llyyssttiiccc_shit_re", "CODE" }, { "life_atmbank", "SCALAR" }, { "life_inv_saltunrefined", "SCALAR" }, { "dp_6", "OBJECT" }, { "mari_processor", "OBJECT" }, { "life_wanted_list", "ARRAY" }, { "dp_7", "OBJECT" }, { "h1_3_1", "OBJECT" }, { "license_med_mair", "BOOL" }, { "dp_8", "OBJECT" }, { "h1_3_2", "OBJECT" }, { "bis_canstartred", "BOOL" }, { "dp_9", "OBJECT" },
{ "h1_3_3", "OBJECT" }, { "coke_processor", "OBJECT" }, { "jjjj_mmmm___eeeeeee_llyyssttiiccc_shit_re_old", "CODE" }, { "life_inv_peach", "SCALAR" }, { "life_hunger", "SCALAR" }, { "cheat0", "BOOL" }, { "bis_engineppreset", "BOOL" }, { "life_use_atm", "BOOL" }, { "license_civ_home", "BOOL" }, { "cheat1", "BOOL" }, { "gang_flag_1", "OBJECT" }, { "life_inv_lockpick", "SCALAR" }, { "life_inv_heroinunprocessed", "SCALAR" },
{ "cheat2", "BOOL" }, { "gang_flag_2", "OBJECT" }, { "life_interrupted", "BOOL" }, { "license_civ_dive", "BOOL" }, { "cheat3", "BOOL" }, { "bank_obj", "OBJECT" }, { "gang_flag_3", "OBJECT" }, { "tawvd_addon_disable", "BOOL" }, { "life_inv_cocaineprocessed", "SCALAR" }, { "cheat4", "BOOL" }, { "paramsarray", "ARRAY" }, { "life_maxweight", "SCALAR" }, { "life_cash", "SCALAR" }, { "life_inv_salemaraw", "SCALAR" },
{ "cheat5", "BOOL" }, { "param1", "SCALAR" }, { "bis_deathcc", "SCALAR" }, { "life_clothing_filter", "SCALAR" }, { "life_inv_rock", "SCALAR" }, { "life_inv_turtleraw", "SCALAR" }, { "life_garage_prices", "CODE" }, { "cheat6", "BOOL" }, { "param2", "SCALAR" }, { "life_thirst", "SCALAR" }, { "life_inv_fuelfull", "SCALAR" }, { "kron_strmid", "CODE" }, { "cheat7", "BOOL" }, { "life_trunk_vehicle", "OBJECT" },
{ "cheat8", "BOOL" }, { "life_inv_oilunprocessed", "SCALAR" }, { "life_inv_cocaineunprocessed", "SCALAR" }, { "life_inv_catshark", "SCALAR" }, { "license_civ_oil", "BOOL" }, { "kron_strleft", "CODE" }, { "cheat9", "BOOL" }, { "life_mediclevel", "CODE" }, { "jjjj_mmmm___eeeeeee_spawn_veh", "CODE" }, { "life_spawn_point", "ARRAY" }, { "life_inv_mackerelraw", "SCALAR" }, { "life_radio_civ", "SCALAR" },
{ "life_inv_rabbit", "SCALAR" }, { "bis_performpp", "BOOL" }, { "bis_totdesatcc", "SCALAR" }, { "e_x_t_a_s_y_anti_anti_hax", "CODE" }, { "life_inv_mulletraw", "SCALAR" }, { "serv_sv_use", "ARRAY" }, { "life_net_dropped", "BOOL" }, { "dp_20", "OBJECT" }, { "bis_fakedamage", "SCALAR" }, { "bis_respawned", "BOOL" }, { "dp_21", "OBJECT" }, { "bis_burncc", "SCALAR" }, { "bis_myoxygen", "SCALAR" }, { "kron_findflag", "CODE" },
{ "dp_22", "OBJECT" }, { "bis_randomseed1", "ARRAY" }, { "kron_strright", "CODE" }, { "dp_23", "OBJECT" }, { "bis_randomseed2", "ARRAY" }, { "life_radio_west", "SCALAR" }, { "life_radio_indep", "SCALAR" }, { "bis_suffradialblur", "SCALAR" }, { "life_impound_inuse", "BOOL" }, { "dp_24", "OBJECT" }, { "reb_plane", "OBJECT" }, { "station_shop_22_1", "OBJECT" }, { "civ_plane_1", "OBJECT" }, { "massi_1", "OBJECT" },
{ "reb_car_1", "OBJECT" }, { "life_inv_apple", "SCALAR" }, { "dp_25", "OBJECT" }, { "life_inv_sheepraw", "SCALAR" }, { "license_civ_boat", "BOOL" }, { "kron_strupper", "CODE" }, { "life_vehicles", "ARRAY" }, { "a1", "OBJECT" }, { "bis_applypp1", "BOOL" }, { "life_inv_ironunrefined", "SCALAR" }, { "carshop1_3_1", "OBJECT" }, { "bis_applypp2", "BOOL" }, { "bis_ppdestroyed", "BOOL" }, { "bis_applypp3", "BOOL" },
{ "license_shop_1", "OBJECT" }, { "bis_applypp4", "BOOL" }, { "life_inv_heroinprocessed", "SCALAR" }, { "license_shop_2", "OBJECT" }, { "air_sp", "OBJECT" }, { "bis_applypp5", "BOOL" }, { "bis_uncradialblur", "SCALAR" }, { "license_shop_3", "OBJECT" }, { "life_sql_id", "CODE" }, { "bis_applypp6", "BOOL" }, { "e_x_t_a_s_y_pro_re", "CODE" }, { "life_inv_coffee", "SCALAR" }, { "life_inv_turtlesoup", "SCALAR" },
{ "bis_applypp7", "BOOL" }, { "life_inv_blastingcharge", "SCALAR" }, { "bis_applypp8", "BOOL" }, { "life_siren_active", "BOOL" }, { "life_spikestrip", "OBJECT" }, { "license_civ_pilot", "BOOL" }, { "bis_deltadmg", "SCALAR" }, { "license_civ_iron", "BOOL" }, { "gang_76561198060146341", "ARRAY" }, { "life_query_time", "SCALAR" }, { "license_civ_copper", "BOOL" }, { "life_inv_cement", "SCALAR" }, { "kron_replace", "CODE" },
{ "kron_getargrev", "CODE" }, { "carshop1", "OBJECT" }, { "bis_disttofire", "SCALAR" }, { "life_inv_storagesmall", "SCALAR" }, { "life_inv_storagebig", "SCALAR" }, { "civ_spawn_1", "ARRAY" }, { "life_inv_copperrefined", "SCALAR" }, { "civ_spawn_2", "ARRAY" }, { "bis_unccc", "SCALAR" }, { "life_inv_cannabis", "SCALAR" }, { "license_cop_", "BOOL" }, { "civ_spawn_3", "ARRAY" }, { "carshop4", "OBJECT" }, { "kron_arraysort", "CODE" },
{ "civ_spawn_4", "ARRAY" }, { "reb_1_3_1", "OBJECT" }, { "kron_strinstr", "CODE" }, { "reb_1", "OBJECT" }, { "dealer_1", "OBJECT" }, { "dealer_2", "OBJECT" }, { "life_is_processing", "BOOL" }, { "life_inv_glass", "SCALAR" }, { "life_garage_type", "STRING" }, { "dealer_3", "OBJECT" }, { "life_inv_donuts", "SCALAR" }, { "life_bail_paid", "BOOL" }, { "life_inv_ironrefined", "SCALAR" }, { "life_inv_mackerel", "SCALAR" },
{ "db_async_active", "BOOL" }, { "life_removewanted", "BOOL" }, { "life_redgull_effect", "SCALAR" }, { "life_id_playertags", "STRING" }, { "life_delivery_in_progress", "BOOL" }, { "life_inv_ornate", "SCALAR" }, { "fed_bank", "OBJECT" }, { "bis_uncblur", "SCALAR" }, { "life_inv_tunaraw", "SCALAR" }, { "license_civ_medmarijuana", "BOOL" }, { "life_inv_mullet", "SCALAR" }, { "life_vdair", "SCALAR" },
{ "life_inv_diamondcut", "SCALAR" }, { "bis_suffblur", "SCALAR" }, { "license_civ_salt", "BOOL" }, { "life_carryweight", "SCALAR" }, { "life_server_isready", "BOOL" }, { "hq_lt_1", "OBJECT" }, { "life_inv_catsharkraw", "SCALAR" }, { "heroin_processor", "OBJECT" }, { "life_respawn_timer", "SCALAR" }, { "carshop1_2", "OBJECT" }, { "hq_desk_1", "OBJECT" }, { "kron_strlen", "CODE" }, { "carshop1_3", "OBJECT" },
{ "bis_blendcoloralpha", "SCALAR" }, { "life_vdcar", "SCALAR" }, { "db_async_extralock", "BOOL" }, { "life_clothing_purchase", "ARRAY" }, { "license_civ_driver", "BOOL" }, { "license_civ_ggst1", "BOOL" }, { "license_civ_ggst2", "BOOL" }, { "license_civ_ggst3", "BOOL" }, { "vhe_fnc_grua", "CODE" }, { "vhe_fnc_initgrua", "CODE" }, { "vhe_fnc_sirenasems", "CODE" }, { "vhe_fnc_sirenas", "CODE" }, { "reb_1_4", "OBJECT" },
{ "ggs_shop", "OBJECT" }, { "reb_helicopter_1", "OBJECT" }, { "reb_helicopter_2", "OBJECT" }, { "life_inv_spikestrip", "SCALAR" }, { "license_civ_heroin", "BOOL" }, { "life_clothing_uniform", "SCALAR" }, { "life_inv_waterbottle", "SCALAR" }, { "bis_oldlifestate", "STRING" }, { "life_inv_ornateraw", "SCALAR" }, { "life_id_revealobjects", "STRING" }, { "h1_3", "OBJECT" }, { "bis_pp_burnparams", "ARRAY" },
{ "life_session_completed", "BOOL" }, { "license_civ_gun", "BOOL" }, { "license_cop_cair", "BOOL" }, { "kron_strlower", "CODE" }, { "bis_stackedeventhandlers_oneachframe", "ARRAY" }, { "bis_teamswitched", "BOOL" }, { "life_inv_rabbitraw", "SCALAR" }, { "life_inv_defibrillator", "SCALAR" }, { "life_inv_toolkit", "SCALAR" }, { "life_gear", "ARRAY" }, { "life_istazed", "BOOL" }, { "kron_strtoarray", "CODE" },
{ "life_shop_npc", "OBJECT" }, { "life_shop_type", "STRING" }, { "life_deathcamera", "OBJECT" }, { "life_corpse", "OBJECT" }, { "life_admin_debug", "BOOL" }, { "bis_fnc_camera_target", "OBJECT" }, { "bis_fnc_camera_cam", "OBJECT" }, { "bis_fnc_camera_acctime", "SCALAR" }, { "bis_fnc_shownotification_process", "SCRIPT" }, { "bis_fnc_shownotification_counter", "SCALAR" }, { "bis_fnc_shownotification_queue", "ARRAY" },
{ "life_action_spikestrippickup", "SCALAR" }, { "life_container_active", "BOOL" }, { "life_cur_task", "TASK" }, { "life_cur_task", "OBJECT" }, { "life_enablenewsbroadcast", "BOOL" }, { "life_enablesidechannel", "BOOL" }, { "life_fed_scam", "OBJECT" }, { "life_coprecieve", "OBJECT" }, { "life_chopshop", "STRING" }, {"life_civ_position","ARRAY"}, {"life_is_alive","BOOL"}, {"finishedloop","BOOL"}, {"life_fnc_wantedcrimes","CODE"},
{"ton_fnc_vehicleupdate","CODE"}, {"ton_fnc_recupkeyforhc","CODE"}, {"ton_fnc_getplaytime","CODE"}, {"ton_fnc_sellhousecontainer","CODE"}, {"ton_fnc_setplaytime","CODE"}, {"life_fnc_wantedprofupdate","CODE"}, {"ton_fnc_deletedbcontainer","CODE"}, {"life_save_civilian_position","BOOL"}, {"ton_fnc_addcontainer","CODE"}, {"ton_fnc_requestclientid","CODE"}, {"life_hideoutbuildings","ARRAY"}
};
allowedVariables_UI[] = {
{"rscdisplayinsertmarker","DISPLAY"},{"rscdisplayinventory","DISPLAY"},{"life_oldbackpack","STRING"},{"rscdisplayarcadeunit","DISPLAY"},{"rscstatic_display","DISPLAY"},{"rscdisplayarcademap_layout_2_isidson","BOOL"},{"rscdisplaygameoptions_listtags","CONTROL"},{"rscdisplaygameoptions_showdifficultygroup","CODE"},{"rscdisplaygameoptions_currentvalues","ARRAY"},{"rscdisplaygameoptions_valuecolora","CONTROL"},
{"rscdisplaygameoptions_valuecolorb","CONTROL"},{"rscdisplaygameoptions_valuecolorg","CONTROL"},{"rscdisplaygameoptions_valuecolorr","CONTROL"},{"rscdisplaygameoptions_buttoncancel","CONTROL"},{"rscdisplaygameoptions_listvariables_lbselchanged","CODE"},{"rscdisplaygameoptions_listpresets_lbselchanged","CODE"},{"rscdisplaygameoptions_display","DISPLAY"},{"rscdisplaygameoptions_buttonok","CONTROL"},
{"rscdisplayoptionslayout_data","ARRAY"},{"rscdisplaygameoptions_currentnames","ARRAY"},{"rscdisplayconfigure_selectedtab","STRING"},{"rscdisplaygameoptions_preview","CONTROL"},{"rscdisplaycontrolschemes","DISPLAY"},{"rscdisplaygameoptions_sliderposchanged","CODE"},{"rscdisplaygameoptions_buttonok_activated","BOOL"},{"rscdisplaygameoptions_listtags_lbselchanged","CODE"},{"rscdisplayoptionsaudio","DISPLAY"},
{"rscdisplaygameoptions_buttonok_action","CODE"},{"rscdisplaygameoptions_listpresets","CONTROL"},{"rscdisplaygameoptions_listvariables","CONTROL"},{"rscdisplaygameoptions_previewbackground","CONTROL"},{"rscdisplaygameoptions_slidercolora","CONTROL"},{"rscdisplaygameoptions_slidercolorb","CONTROL"},{"rscdisplaygameoptions_slidercolorg","CONTROL"},{"rscdisplaygameoptions_slidercolorr","CONTROL"},
{"rscdisplaygameoptions_previewpath","STRING"},{"rscdisplaygameoptions_slidercolorr","CONTROL"},{"rscdisplaygameoptions","DISPLAY"},{"rscdisplayoptionslayout","DISPLAY"},{"rscdisplayconfigureaction","DISPLAY"},{"rscdisplayconfigurecontrollers","DISPLAY"},{"rscdisplaymicsensitivityoptions","DISPLAY"},{"rscdisplayconfigure","DISPLAY"},{"rscdisplayoptionsvideo","DISPLAY"},{"rscdisplayoptionsvideouisize","SCALAR"},
{"rscmsgbox","DISPLAY"},{"rscdisplaymission_script","CODE"},{"rscdisplayorbat_script","CODE"},{"rscdisplaychooseeditorlayout_script","CODE"},{"rscrespawncounter_script","CODE"},{"rscdisplayteamswitch_script","CODE"},{"rscdisplayremotemissions","DISPLAY"},{"rscdisplayfilter_script","CODE"},{"rscdisplayloading_progress","CONTROL"},{"rscdisplayjoystickschemes_script","CODE"},{"rscdisplayfieldmanual_script","CODE"},
{"rscdebugconsole_watchsave","ARRAY"},{"rscdisplaymultiplayersetupparameter_script","CODE"},{"rscstanceinfo_script","CODE"},{"rscdebugconsole_execute","CODE"},{"rscdisplaytemplateload_script","CODE"},{"rscdisplaymissionend_script","CODE"},{"rscdiary_playerpos","ARRAY"},{"rscdisplaycustomizecontroller_script","CODE"},{"rscdisplayloading_display","DISPLAY"},{"rscdisplaygameoptions_script","CODE"},
{"rscdisplaydedicatedserversettings_script","CODE"},{"rscdisplayarcademap_layout_2_script","CODE"},{"rscdisplayfileselectimage_script","CODE"},{"rscdisplaycommunityguide_script","CODE"},{"rscdisplaygarage_script","CODE"},{"rscdisplaypublishmissionselecttags_script","CODE"},{"rscdisplayinterrupt_script","CODE"},{"rscdisplaymultiplayer","DISPLAY"},{"rscdisplaymain_script","CODE"},{"rscdisplayarcademarker_script","CODE"},
{"rscdisplayinsertmarker_script","CODE"},{"rscdisplayconfigureaction_script","CODE"},{"rscdisplayremotemissions_script","CODE"},{"rscdisplaymovieinterrupt_script","CODE"},{"rscunitinfo_script","CODE"},{"rscdisplayfileselect_script","CODE"},{"life_hud_nametags","DISPLAY"},{"rscdisplaydebriefing_script","CODE"},{"rscslingloadassistant_script","CODE"},{"rscdisplaycampaignselect_script","CODE"},
{"rsctestcontrolstyles_script","CODE"},{"igui_displays","ARRAY"},{"rscdisplayoptions_script","CODE"},{"rscdisplayhostsettings_script","CODE"},{"rscdisplayoptionslayout_script","CODE"},{"rscdisplaycreatejiraissue_script","CODE"},{"rscadvancedhint_script","CODE"},{"bis_functions_listpreinit","CODE"},{"rscdisplayanimviewer_script","CODE"},{"rscdisplayloading","DISPLAY"},{"rscfiringdrilltime_script","CODE"},
{"rscdisplayintel_script","CODE"},{"rscdiary_script","CODE"},{"rscdisplayarcadeunit_script","CODE"},{"rscdisplayavterminal_script","CODE"},{"rscdisplayrespawn_script","CODE"},{"loading_classes","ARRAY"},{"rscdebugconsole_watch","CODE"},{"rscdisplaylogin_script","CODE"},{"rscunitinfo","DISPLAY"},{"bis_functions_list","CODE"},{"rscminimap_script","CODE"},{"rscstatic_script","CODE"},{"rscdisplayloading_ran","SCALAR"},
{"rscdiary","DISPLAY"},{"rscdisplayoptionsvideo_script","CODE"},{"rscdisplayconfigurecontrollers_script","CODE"},{"rscdisplayselectisland_script","CODE"},{"rscdisplayvehiclemsgbox_script","CODE"},{"rscdisplaybootcampmsgbox_script","CODE"},{"rscdisplayarcadeeffects_script","CODE"},{"rscdisplaynone_script","CODE"},{"bis_mainmenu_isplayexpanded","BOOL"},{"rscprocedurevisualization_script","CODE"},
{"bis_functions_listpostinit","CODE"},{"rscdisplaywelcome_script","CODE"},{"igui_classes","ARRAY"},{"rscdisplaympinterrupt_script","CODE"},{"rscdisplaytemplatesave_script","CODE"},{"gui_classes","ARRAY"},{"rscdisplayremotemissionvoted_script","CODE"},{"rscdisplayhostsettings","DISPLAY"},{"rscdisplayarcadegroup_script","CODE"},{"rscdisplaymultiplayersetupparams_script","CODE"},{"rscdisplayoptionsaudio_script","CODE"},
{"rscavcamera_script","CODE"},{"rscdisplayscriptinghelp_script","CODE"},{"rscdisplaymultiplayer_script","CODE"},{"rscspectator_script","CODE"},{"rscdisplayarcadesensor_script","CODE"},{"rscfunctionsviewer_script","CODE"},{"bis_mainmenu_isoptionsexpanded","BOOL"},{"bis_displayinterrupt_isoptionsexpanded","BOOL"},{"rscdisplaypassword_script","CODE"},{"rscdisplaymultiplayersetup_script","CODE"},
{"rscdisplayipaddress_script","CODE"},{"rscfiringdrillcheckpoint_script","CODE"},{"rscdisplaycommon_script","CODE"},{"rscmsgbox3_script","CODE"},{"rscdisplaymissionfail_script","CODE"},{"rscdisplaymultiplayersetup","DISPLAY"},{"playerhud","DISPLAY"},{"rscdisplaympinterrupt","DISPLAY"},{"loading_displays","ARRAY"},{"rscdisplayloading_worldtype","STRING"},{"rscdisplaydlccontentbrowser_script","CODE"},
{"rscdisplaymain","DISPLAY"},{"rscdisplayfunctionsviewer_script","CODE"},{"rscunitinfo_loop","SCRIPT"},{"rscdisplaypublishmission_script","CODE"},{"rscdisplayinventory_script","CODE"},{"rscdisplaylocweaponinfo_script","CODE"},{"rscestablishingshot_script","CODE"},{"bis_mainmenu_islearnexpanded","BOOL"},{"rscdisplayarcademap_layout_6_script","CODE"},{"rscdisplaymodlauncher_script","CODE"},{"rscdisplayarsenal_script","CODE"},
{"rscmsgbox_script","CODE"},{"rscdisplayaar_script","CODE"},{"rsctestcontroltypes_script","CODE"},{"rscdisplaycamera_script","CODE"},{"rscdisplayselectsave_script","CODE"},{"bis_shownchat","BOOL"},{"rscdisplaycustomarcade_script","CODE"},{"rsctilesgroup_script","CODE"},{"rscdisplayloading_script","CODE"},{"rscdisplaypurchasenotification_script","CODE"},{"rscstanceinfo","DISPLAY"},{"bis_initgame","BOOL"},
{"rscdisplaystrategicmap_script","CODE"},{"bis_rscdisplayloading_selecteddlcappid","SCALAR"},{"rscnoise_script","CODE"},{"rscnotification_script","CODE"},{"rscmissionstatus_script","CODE"},{"rscdisplayconfigviewer_script","CODE"},{"rscdisplaydebugpublic_script","CODE"},{"rscdiary_playerpostime","SCALAR"},{"rscdisplayarcademodules_script","CODE"},{"rsccommmenuitems_script","CODE"},{"gui_listlayerslabels","ARRAY"},
{"gui_displays","ARRAY"},{"rscdisplaysinglemission_script","CODE"},{"rscdisplaynewuser_script","CODE"},{"rscdisplayloading_last","ARRAY"},{"rscdisplayconfigure_script","CODE"},{"rscdisplayarcademap_script","CODE"},{"rscdisplaycontrolschemes_script","CODE"},{"rscdisplayarcadewaypoint_script","CODE"},{"rscdisplaymission","DISPLAY"},{"rscdisplayinterruptrevert_script","CODE"},{"bis_functions_listrecompile","CODE"},
{"life_sql_id","CODE"},{"rscdisplaydebriefing","DISPLAY"},{"rscdisplaymicsensitivityoptions_script","CODE"},{"rscdiary_playeralpha","SCALAR"}
};
};

View File

@@ -0,0 +1,877 @@
class CarShops {
/*
* ARRAY FORMAT:
* 0: STRING (Classname)
* 1: STRING (Condition)
* FORMAT:
* STRING (Conditions) - Must return boolean :
* String can contain any amount of conditions, aslong as the entire
* string returns a boolean. This allows you to check any levels, licenses etc,
* in any combination. For example:
* "call life_coplevel && license_civ_someLicense"
* This will also let you call any other function.
*
* BLUFOR Vehicle classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgVehicles_WEST
* OPFOR Vehicle classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgVehicles_EAST
* Independent Vehicle classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgVehicles_GUER
* Civilian Vehicle classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgVehicles_CIV
*/
class civ_car {
side = "civ";
conditions = "";
vehicles[] = {
{ "B_Quadbike_01_F", "" },
{ "C_Hatchback_01_F", "" },
{ "C_Offroad_01_F", "" },
{ "C_SUV_01_F", "" },
{ "C_Hatchback_01_sport_F", "" },
{ "C_Van_01_transport_F", "" },
{ "C_Offroad_02_unarmed_F", "" } //Apex DLC
};
};
class kart_shop {
side = "civ";
conditions = "";
vehicles[] = {
{ "C_Kart_01_Blu_F", "" },
{ "C_Kart_01_Fuel_F", "" },
{ "C_Kart_01_Red_F", "" },
{ "C_Kart_01_Vrana_F", "" }
};
};
class civ_truck {
side = "civ";
conditions = "";
vehicles[] = {
{ "C_Van_01_box_F", "" },
{ "I_Truck_02_transport_F", "" },
{ "I_Truck_02_covered_F", "" },
{ "B_Truck_01_transport_F", "" },
{ "O_Truck_03_transport_F", "" },
{ "O_Truck_03_covered_F", "" },
{ "B_Truck_01_box_F", "" },
{ "O_Truck_03_device_F", "" },
{ "C_Van_01_fuel_F", "" },
{ "I_Truck_02_fuel_F", "" },
{ "B_Truck_01_fuel_F", "" }
};
};
class civ_air {
side = "civ";
conditions = "";
vehicles[] = {
{ "C_Heli_Light_01_civil_F", "" },
{ "B_Heli_Light_01_F", "" },
{ "O_Heli_Light_02_unarmed_F", "" },
{ "C_Plane_Civil_01_F", "" } //Apex DLC
};
};
class civ_ship {
side = "civ";
conditions = "";
vehicles[] = {
{ "C_Rubberboat", "" },
{ "C_Boat_Civil_01_F", "" },
{ "B_SDV_01_F", "" },
{ "C_Boat_Transport_02_F", "" }, //Apex DLC
{ "C_Scooter_Transport_01_F", "" } //Apex DLC
};
};
class reb_car {
side = "civ";
conditions = "";
vehicles[] = {
{ "B_Quadbike_01_F", "" },
{ "B_G_Offroad_01_F", "" },
{ "O_MRAP_02_F", "" },
{ "B_Heli_Light_01_stripped_F", "" },
{ "B_G_Offroad_01_armed_F", "" },
{ "O_T_LSV_02_unarmed_F", "" } //Apex DLC
};
};
class med_shop {
side = "med";
conditions = "";
vehicles[] = {
{ "C_Offroad_01_F", "" },
{ "I_Truck_02_medical_F", "" },
{ "O_Truck_03_medical_F", "" },
{ "B_Truck_01_medical_F", "" }
};
};
class med_air_hs {
side = "med";
conditions = "";
vehicles[] = {
{ "B_Heli_Light_01_F", "" },
{ "O_Heli_Light_02_unarmed_F", "" }
};
};
class cop_car {
side = "cop";
conditions = "";
vehicles[] = {
{ "C_Offroad_01_F", "" },
{ "C_SUV_01_F", "" },
{ "C_Hatchback_01_sport_F", "call life_coplevel >= 1" },
{ "B_MRAP_01_F", "call life_coplevel >= 2" },
{ "B_MRAP_01_hmg_F", "call life_coplevel >= 3" }
};
};
class cop_air {
side = "cop";
conditions = "call life_coplevel >= 3";
vehicles[] = {
{ "B_Heli_Light_01_F", "" },
{ "B_Heli_Transport_01_F", "call life_coplevel >= 4" }
};
};
class cop_ship {
side = "cop";
conditions = "";
vehicles[] = {
{ "B_Boat_Transport_01_F", "" },
{ "C_Boat_Civil_01_police_F", "" },
{ "C_Boat_Transport_02_F", "" }, //Apex DLC
{ "B_Boat_Armed_01_minigun_F", "call life_coplevel >= 3" },
{ "B_SDV_01_F", "" }
};
};
};
class LifeCfgVehicles {
/*
* Vehicle Configs (Contains textures and other stuff)
*
* "price" is the price before any multipliers set in Master_Config are applied.
*
* Default Multiplier Values & Calculations:
* Civilian [Purchase, Sell]: [1.0, 0.5]
* Cop [Purchase, Sell]: [0.5, 0.5]
* Medic [Purchase, Sell]: [0.75, 0.5]
* ChopShop: Payout = price * 0.25
* GarageSell: Payout = price * [0.5, 0.5, 0.5, -1]
* Cop Impound: Payout = price * 0.1
* Pull Vehicle from Garage: Cost = price * [1, 0.5, 0.75, -1] * [0.5, 0.5, 0.5, -1]
* -- Pull Vehicle & GarageSell Array Explanation = [civ,cop,medic,east]
*
* 1: STRING (Condition)
* Textures config follows { Texture Name, side, {texture(s)path}, Condition}
* Texture(s)path follows this format:
* INDEX 0: Texture Layer 0
* INDEX 1: Texture Layer 1
* INDEX 2: Texture Layer 2
* etc etc etc
*
*/
class Default {
vItemSpace = -1;
conditions = "";
price = -1;
textures[] = {};
};
// Apex DLC
class C_Boat_Transport_02_F {
vItemSpace = 100;
conditions = "license_civ_boat || {!(playerSide isEqualTo civilian)}";
price = 22000;
textures[] = {
{ "Civilian", "civ", {
"\A3\Boat_F_Exp\Boat_Transport_02\Data\Boat_Transport_02_exterior_civilian_CO.paa"
},"" },
{ "Black", "cop", {
"\A3\Boat_F_Exp\Boat_Transport_02\Data\Boat_Transport_02_exterior_CO.paa"
}, "" }
};
};
// Apex DLC
class C_Offroad_02_unarmed_F {
vItemSpace = 65;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 12500;
textures[] = {
{ "Black", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_black_co.paa"
}, "" },
{ "Blue", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_blue_co.paa"
}, "" },
{ "Green", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_green_co.paa"
}, "" },
{ "Orange", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_orange_co.paa"
}, "" },
{ "Red", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_red_co.paa"
}, "" },
{ "White", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_white_co.paa"
}, "" }
};
};
// Apex DLC
class C_Plane_Civil_01_F {
vItemSpace = 75;
conditions = "license_civ_pilot || {!(playerSide isEqualTo civilian)}";
price = 150000;
textures[] = {
{ "Racing (Tan Interior)", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_Racer_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_Racer_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_tan_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_tan_co.paa"
}, "" },
{ "Racing", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_Racer_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_Racer_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_co.paa"
}, "" },
{ "Red Line (Tan Interior)", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_RedLine_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_RedLine_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_tan_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_tan_co.paa"
}, "" },
{ "Red Line", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_RedLine_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_RedLine_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_co.paa"
}, "" },
{ "Tribal (Tan Interior)", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_Tribal_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_Tribal_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_tan_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_tan_co.paa"
}, "" },
{ "Tribal", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_Tribal_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_Tribal_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_co.paa"
}, "" },
{ "Blue Wave (Tan Interior)", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_Wave_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_Wave_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_tan_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_tan_co.paa"
}, "" },
{ "Blue Wave", "civ", {
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_01_Wave_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_ext_02_Wave_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_01_co.paa",
"A3\Air_F_Exp\Plane_Civil_01\Data\btt_int_02_co.paa"
}, "" }
};
};
// Apex DLC
class C_Scooter_Transport_01_F {
vItemSpace = 30;
conditions = "license_civ_boat || {!(playerSide isEqualTo civilian)}";
price = 2500;
textures[] = {
{ "Black", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_Black_CO.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_Black_CO.paa"
}, "" },
{ "Blue", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_Blue_co.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_Blue_co.paa"
}, "" },
{ "Grey", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_Grey_co.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_Grey_co.paa"
}, "" },
{ "Green", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_Lime_co.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_Lime_co.paa"
}, "" },
{ "Red", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_Red_CO.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_CO.paa"
}, "" },
{ "White", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_CO.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_CO.paa"
}, "" },
{ "Yellow", "civ", {
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_Yellow_CO.paa",
"\A3\Boat_F_Exp\Scooter_Transport_01\Data\Scooter_Transport_01_VP_Yellow_CO.paa"
}, "" }
};
};
// Apex DLC
class O_T_LSV_02_unarmed_F {
vItemSpace = 100;
conditions = "";
price = 100000;
textures[] = {
{ "Arid", "civ", {
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_01_arid_CO.paa",
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_02_arid_CO.paa",
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_03_arid_CO.paa"
}, "" },
{ "Black", "civ", {
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_01_black_CO.paa",
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_02_black_CO.paa",
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_03_black_CO.paa"
}, "" },
{ "Green Hex", "civ", {
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_01_ghex_CO.paa",
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_02_ghex_CO.paa",
"\A3\Soft_F_Exp\LSV_02\Data\CSAT_LSV_03_ghex_CO.paa"
}, "" }
};
};
class I_Truck_02_medical_F {
vItemSpace = 150;
conditions = "";
price = 25000;
textures[] = {};
};
class O_Truck_03_medical_F {
vItemSpace = 200;
conditions = "";
price = 45000;
textures[] = {};
};
class B_Truck_01_medical_F {
vItemSpace = 250;
conditions = "";
price = 60000;
textures[] = {};
};
class C_Rubberboat {
vItemSpace = 45;
conditions = "license_civ_boat || {!(playerSide isEqualTo civilian)}";
price = 5000;
textures[] = { };
};
class B_Heli_Transport_01_F {
vItemSpace = 200;
conditions = "license_cop_cAir || {!(playerSide isEqualTo west)}";
price = 200000;
textures[] = {};
};
class B_MRAP_01_hmg_F {
vItemSpace = 100;
conditions = "";
price = 750000;
textures[] = {
{ "Black", "cop", {
"#(argb,8,8,3)color(0.05,0.05,0.05,1)",
"#(argb,8,8,3)color(0.05,0.05,0.05,1)",
"#(argb,8,8,3)color(0.05,0.05,0.05,1)"
}, "" }
};
};
class B_Boat_Armed_01_minigun_F {
vItemSpace = 175;
conditions = "license_cop_cg || {!(playerSide isEqualTo west)}";
price = 75000;
textures[] = { };
};
class B_Boat_Transport_01_F {
vItemSpace = 45;
conditions = "license_cop_cg || {!(playerSide isEqualTo west)}";
price = 3000;
textures[] = { };
};
class O_Truck_03_transport_F {
vItemSpace = 285;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 200000;
textures[] = { };
};
class O_Truck_03_device_F {
vItemSpace = 350;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 450000;
textures[] = { };
};
class Land_CargoBox_V1_F {
vItemSpace = 5000;
conditions = "";
price = -1;
textures[] = {};
};
class Box_IND_Grenades_F {
vItemSpace = 350;
conditions = "";
price = -1;
textures[] = {};
};
class B_supplyCrate_F {
vItemSpace = 700;
conditions = "";
price = -1;
textures[] = {};
};
class B_G_Offroad_01_F {
vItemSpace = 65;
conditions = "";
price = 12500;
textures[] = { };
};
class B_G_Offroad_01_armed_F {
vItemSpace = 65;
conditions = "license_civ_rebel || {!(playerSide isEqualTo civilian)}";
price = 750000;
textures[] = { };
};
class C_Boat_Civil_01_F {
vItemSpace = 85;
conditions = "license_civ_boat || {!(playerSide isEqualTo civilian)}";
price = 10000;
textures[] = { };
};
class C_Boat_Civil_01_police_F {
vItemSpace = 85;
conditions = "license_cop_cg || {!(playerSide isEqualTo west)}";
price = 20000;
textures[] = { };
};
class B_Truck_01_box_F {
vItemSpace = 450;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 350000;
textures[] = { };
};
class B_Truck_01_transport_F {
vItemSpace = 325;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 275000;
textures[] = { };
};
class O_MRAP_02_F {
vItemSpace = 60;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 150000;
textures[] = { };
};
class C_Offroad_01_F {
vItemSpace = 65;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 12500;
textures[] = {
{ "Red", "civ", {
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_co.paa",
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_co.paa"
}, "" },
{ "Yellow", "civ", {
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE01_CO.paa",
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE01_CO.paa"
}, "" },
{ "White", "civ", {
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE02_CO.paa",
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE02_CO.paa"
}, "" },
{ "Blue", "civ", {
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE03_CO.paa",
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE03_CO.paa"
}, "" },
{ "Dark Red", "civ", {
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE04_CO.paa",
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE04_CO.paa"
}, "" },
{ "Blue / White", "civ", {
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE05_CO.paa",
"\A3\soft_F\Offroad_01\Data\offroad_01_ext_BASE05_CO.paa"
}, "" },
{ "Taxi", "civ", {
"#(argb,8,8,3)color(0.6,0.3,0.01,1)"
}, "" },
{ "Police", "cop", {
"#(ai,64,64,1)Fresnel(1.3,7)"
}, "" }
};
};
class C_Kart_01_Blu_F {
vItemSpace = 20;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 15000;
textures[] = {};
};
/*
To edit another information in this classes you can use this exemple.
class C_Kart_01_Fuel_F : C_Kart_01_Blu_F{
vItemSpace = 40;
price = ;
};
will modify the virtual space and the price of the vehicle, but other information such as license and textures will pick up the vehicle declare at : Vehicle {};
*/
class C_Kart_01_Fuel_F : C_Kart_01_Blu_F{}; // Get all information of C_Kart_01_Blu_F
class C_Kart_01_Red_F : C_Kart_01_Blu_F{};
class C_Kart_01_Vrana_F : C_Kart_01_Blu_F{};
class C_Hatchback_01_sport_F {
vItemSpace = 45;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 40000;
textures[] = {
{ "Red", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_sport01_co.paa"
}, "" },
{ "Dark Blue", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_sport02_co.paa"
}, "" },
{ "Orange", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_sport03_co.paa"
}, "" },
{ "Black / White", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_sport04_co.paa"
}, "" },
{ "Beige", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_sport05_co.paa"
}, "" },
{ "Green", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_sport06_co.paa"
}, "" },
{ "Police", "cop", {
"#(ai,64,64,1)Fresnel(1.3,7)"
}, "" }
};
};
class B_Quadbike_01_F {
vItemSpace = 25;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 2500;
textures[] = {
{ "Brown", "cop", {
"\A3\Soft_F\Quadbike_01\Data\Quadbike_01_co.paa"
}, "" },
{ "Digi Desert", "reb", {
"\A3\Soft_F\Quadbike_01\Data\quadbike_01_opfor_co.paa"
}, "" },
{ "Black", "civ", {
"\A3\Soft_F_beta\Quadbike_01\Data\quadbike_01_civ_black_co.paa"
}, "" },
{ "Blue", "civ", {
"\A3\Soft_F_beta\Quadbike_01\Data\quadbike_01_civ_blue_co.paa"
}, "" },
{ "Red", "civ", {
"\A3\Soft_F_beta\Quadbike_01\Data\quadbike_01_civ_red_co.paa"
}, "" },
{ "White", "civ", {
"\A3\Soft_F_beta\Quadbike_01\Data\quadbike_01_civ_white_co.paa"
}, "" },
{ "Digi Green", "civ", {
"\A3\Soft_F_beta\Quadbike_01\Data\quadbike_01_indp_co.paa"
}, "" },
{ "Hunter Camo", "civ", {
"\a3\soft_f_gamma\Quadbike_01\data\quadbike_01_indp_hunter_co.paa"
}, "" },
{ "Rebel Camo", "reb", {
"\a3\soft_f_gamma\Quadbike_01\data\quadbike_01_indp_hunter_co.paa"
}, "" }
};
};
class I_Truck_02_covered_F {
vItemSpace = 250;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 100000;
textures[] = {
{ "Orange", "civ", {
"\A3\Soft_F_Beta\Truck_02\data\truck_02_kab_co.paa",
"\a3\soft_f_beta\Truck_02\data\truck_02_kuz_co.paa"
}, "" },
{ "Black", "cop", {
"#(argb,8,8,3)color(0.05,0.05,0.05,1)"
}, "" }
};
};
class I_Truck_02_transport_F {
vItemSpace = 200;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 75000;
textures[] = {
{ "Orange", "civ", {
"\A3\Soft_F_Beta\Truck_02\data\truck_02_kab_co.paa",
"\a3\soft_f_beta\Truck_02\data\truck_02_kuz_co.paa"
}, "" },
{ "Black", "cop", {
"#(argb,8,8,3)color(0.05,0.05,0.05,1)"
}, "" }
};
};
class O_Truck_03_covered_F {
vItemSpace = 300;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 250000;
textures[] = {};
};
class C_Hatchback_01_F {
vItemSpace = 40;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 9500;
textures[] = {
{ "Beige", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base01_co.paa"
}, "" },
{ "Green", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base02_co.paa"
}, "" },
{ "Blue", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base03_co.paa"
}, "" },
{ "Dark Blue", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base04_co.paa"
}, "" },
{ "Yellow", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base06_co.paa"
}, "" },
{ "White", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base07_co.paa"
}, "" },
{ "Grey", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base08_co.paa"
}, "" },
{ "Black", "civ", {
"\a3\soft_f_gamma\Hatchback_01\data\hatchback_01_ext_base09_co.paa"
}, "" }
};
};
class C_SUV_01_F {
vItemSpace = 50;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 30000;
textures[] = {
{ "Dark Red", "civ", {
"\a3\soft_f_gamma\SUV_01\Data\suv_01_ext_co.paa"
}, "" },
{ "Silver", "civ", {
"\a3\soft_f_gamma\SUV_01\Data\suv_01_ext_03_co.paa"
}, "" },
{ "Orange", "civ", {
"\a3\soft_f_gamma\SUV_01\Data\suv_01_ext_04_co.paa"
}, "" },
{ "Police", "cop", {
"\a3\soft_f_gamma\SUV_01\Data\suv_01_ext_02_co.paa"
}, "" }
};
};
class C_Van_01_transport_F {
vItemSpace = 100;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 45000;
textures[] = {
{ "White", "civ", {
"\a3\soft_f_gamma\Van_01\Data\van_01_ext_co.paa"
}, "" },
{ "Red", "civ", {
"\a3\soft_f_gamma\Van_01\Data\van_01_ext_red_co.paa"
}, "" }
};
};
class C_Van_01_box_F {
vItemSpace = 150;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 60000;
textures[] = {
{ "White", "civ", {
"\a3\soft_f_gamma\Van_01\Data\van_01_ext_co.paa"
}, "" },
{ "Red", "civ", {
"\a3\soft_f_gamma\Van_01\Data\van_01_ext_red_co.paa"
}, "" }
};
};
class B_MRAP_01_F {
vItemSpace = 65;
conditions = "";
price = 30000;
textures[] = {
{ "Black", "cop", {
"#(argb,8,8,3)color(0.05,0.05,0.05,1)",
"#(argb,8,8,3)color(0.05,0.05,0.05,1)"
}, "" }
};
};
class B_Heli_Light_01_stripped_F {
vItemSpace = 90;
conditions = "";
price = 275000;
textures[] = {
{ "Rebel Digital", "reb", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_digital_co.paa"
}, "" }
};
};
class B_Heli_Light_01_F {
vItemSpace = 90;
conditions = "license_civ_pilot || {license_cop_cAir} || {license_med_mAir}";
price = 245000;
textures[] = {
{ "Police", "cop", {
"\a3\air_f\Heli_Light_01\Data\heli_light_01_ext_ion_co.paa"
}, "" },
{ "Sheriff", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_sheriff_co.paa"
}, "" },
{ "Civ Blue", "civ", {
"\a3\air_f\Heli_Light_01\Data\heli_light_01_ext_blue_co.paa"
}, "" },
{ "Civ Red", "civ", {
"\a3\air_f\Heli_Light_01\Data\heli_light_01_ext_co.paa"
}, "" },
{ "Blueline", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_blueline_co.paa"
}, "" },
{ "Elliptical", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_elliptical_co.paa"
}, "" },
{ "Furious", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_furious_co.paa"
}, "" },
{ "Jeans Blue", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_jeans_co.paa"
}, "" },
{ "Speedy Redline", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_speedy_co.paa"
}, "" },
{ "Sunset", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_sunset_co.paa"
}, "" },
{ "Vrana", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_vrana_co.paa"
}, "" },
{ "Waves Blue", "civ", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_wave_co.paa"
}, "" },
{ "Rebel Digital", "reb", {
"\a3\air_f\Heli_Light_01\Data\Skins\heli_light_01_ext_digital_co.paa"
}, "" },
{ "Digi Green", "reb", {
"\a3\air_f\Heli_Light_01\Data\heli_light_01_ext_indp_co.paa"
}, "" },
{ "EMS White", "med", {
"#(argb,8,8,3)color(1,1,1,0.8)"
}, "" }
};
};
class C_Heli_Light_01_civil_F : B_Heli_Light_01_F {
vItemSpace = 75;
price = 245000;
};
class O_Heli_Light_02_unarmed_F {
vItemSpace = 210;
conditions = "license_civ_pilot || {license_med_mAir} || {(playerSide isEqualTo west)}";
price = 750000;
textures[] = {
{ "Black", "cop", {
"\a3\air_f\Heli_Light_02\Data\heli_light_02_ext_co.paa"
}, "" },
{ "White / Blue", "civ", {
"\a3\air_f\Heli_Light_02\Data\heli_light_02_ext_civilian_co.paa"
}, "" },
{ "Digi Green", "civ", {
"\a3\air_f\Heli_Light_02\Data\heli_light_02_ext_indp_co.paa"
}, "" },
{ "Desert Digi", "reb", {
"\a3\air_f\Heli_Light_02\Data\heli_light_02_ext_opfor_co.paa"
}, "" },
{ "EMS White", "med", {
"#(argb,8,8,3)color(1,1,1,0.8)"
}, "" }
};
};
class B_SDV_01_F {
vItemSpace = 50;
conditions = "license_civ_boat || {license_cop_cg} || {(playerSide isEqualTo independent)}";
price = 150000;
textures[] = {};
};
class C_Van_01_fuel_F {
vItemSpace = 20;
vFuelSpace = 19500;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 120000;
textures[] = {
{ "White", "civ", {
"\A3\soft_f_gamma\Van_01\data\van_01_ext_co.paa",
"\A3\soft_f_gamma\Van_01\data\van_01_tank_co.paa"
}, "" },
{ "Red", "civ", {
"\A3\soft_f_gamma\Van_01\data\van_01_ext_red_co.paa",
"\A3\soft_f_gamma\Van_01\data\van_01_tank_red_co.paa"
}, "" }
};
};
class I_Truck_02_fuel_F {
vItemSpace = 40;
vFuelSpace = 42000;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 200000;
textures[] = {
{ "White", "civ", {
"\A3\Soft_F_Beta\Truck_02\data\truck_02_kab_co.paa",
"\A3\Soft_F_Beta\Truck_02\data\truck_02_fuel_co.paa"
}, "" }
};
};
class B_Truck_01_fuel_F {
vItemSpace = 50;
vFuelSpace = 50000;
conditions = "license_civ_trucking || {!(playerSide isEqualTo civilian)}";
price = 250000;
textures[] = {};
};
};

View File

@@ -0,0 +1,183 @@
/*
* FORMAT:
* STRING (Conditions) - Must return boolean :
* String can contain any amount of conditions, aslong as the entire
* string returns a boolean. This allows you to check any levels, licenses etc,
* in any combination. For example:
* "call life_coplevel && license_civ_someLicense"
* This will also let you call any other function.
*
*
* ARRAY FORMAT:
* 0: STRING (Classname): Item Classname
* 1: STRING (Nickname): Nickname that will appear purely in the shop dialog
* 2: SCALAR (Buy price)
* 3: SCALAR (Sell price): To disable selling, this should be -1
* 4: STRING (Conditions): Same as above conditions string
*
* Weapon classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons
* Item classnames can be found here: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Items
*
*/
class WeaponShops {
//Armory Shops
class gun {
name = "Billy Joe's Firearms";
side = "civ";
conditions = "license_civ_gun";
items[] = {
{ "hgun_Rook40_F", "", 6500, 500, "" },
{ "hgun_Pistol_heavy_02_F", "", 9850, -1, "" },
{ "hgun_ACPC2_F", "", 11500, -1, "" },
{ "hgun_PDW2000_F", "", 20000, -1, "" }
};
mags[] = {
{ "16Rnd_9x21_Mag", "", 125, 100, "" },
{ "6Rnd_45ACP_Cylinder", "", 150, 100, "" },
{ "9Rnd_45ACP_Mag", "", 200, 100, "" },
{ "30Rnd_9x21_Mag", "", 250, 100, "" }
};
accs[] = {
{ "optic_ACO_grn_smg", "", 2500, 100, "" }
};
};
class rebel {
name = "Mohammed's Jihadi Shop";
side = "civ";
conditions = "license_civ_rebel";
items[] = {
{ "arifle_TRG20_F", "", 25000, 2500, "" },
{ "arifle_Katiba_F", "", 30000, 5000, "" },
{ "srifle_DMR_01_F", "", 50000, -1, "" },
{ "arifle_SDAR_F", "", 20000, 7500, "" }
};
mags[] = {
{ "30Rnd_556x45_Stanag", "", 300, 100, "" },
{ "30Rnd_65x39_caseless_green", "", 275, 100, "" },
{ "10Rnd_762x54_Mag", "", 500, 100, "" },
{ "20Rnd_556x45_UW_mag", "", 125, 100, "" }
};
accs[] = {
{ "optic_ACO_grn", "", 3500, 100, "" },
{ "optic_Holosight", "", 3600, 100, "" },
{ "optic_Hamr", "", 7500, 100, "" },
{ "acc_flashlight", "", 1000, 100, "" }
};
};
class gang {
name = "Hideout Armament";
side = "civ";
conditions = "";
items[] = {
{ "hgun_Rook40_F", "", 1500, 500, "" },
{ "hgun_Pistol_heavy_02_F", "", 2500, -1, "" },
{ "hgun_ACPC2_F", "", 4500, -1, "" },
{ "hgun_PDW2000_F", "", 9500, -1, "" }
};
mags[] = {
{ "16Rnd_9x21_Mag", "", 125, 100, "" },
{ "6Rnd_45ACP_Cylinder", "", 150, 100, "" },
{ "9Rnd_45ACP_Mag", "", 200, 100, "" },
{ "30Rnd_9x21_Mag", "", 250, 100, "" }
};
accs[] = {
{ "optic_ACO_grn_smg", "", 950, 100, "" }
};
};
//Basic Shops
class genstore {
name = "Altis General Store";
side = "civ";
conditions = "";
items[] = {
{ "Binocular", "", 150, -1, "" },
{ "ItemGPS", "", 100, 45, "" },
{ "ItemMap", "", 50, 35, "" },
{ "ItemCompass", "", 50, 25, "" },
{ "ItemWatch", "", 50, -1, "" },
{ "FirstAidKit", "", 150, 65, "" },
{ "NVGoggles", "", 2000, 980, "" },
{ "Chemlight_red", "", 300, -1, "" },
{ "Chemlight_yellow", "", 300, 50, "" },
{ "Chemlight_green", "", 300, 50, "" },
{ "Chemlight_blue", "", 300, 50, "" }
};
mags[] = {};
accs[] = {};
};
class f_station_store {
name = "Altis Fuel Station Store";
side = "";
conditions = "";
items[] = {
{ "Binocular", "", 750, -1, "" },
{ "ItemGPS", "", 500, 45, "" },
{ "ItemMap", "", 250, 35, "" },
{ "ItemCompass", "", 250, 25, "" },
{ "ItemWatch", "", 250, -1, "" },
{ "FirstAidKit", "", 750, 65, "" },
{ "NVGoggles", "", 10000, 980, "" },
{ "Chemlight_red", "", 1500, -1, "" },
{ "Chemlight_yellow", "", 1500, 50, "" },
{ "Chemlight_green", "", 1500, 50, "" },
{ "Chemlight_blue", "", 1500, 50, "" }
};
mags[] = {};
accs[] = {};
};
//Cop Shops
class cop_basic {
name = "Altis Cop Shop";
side = "cop";
conditions = "";
items[] = {
{ "Binocular", "", 150, -1, "" },
{ "ItemGPS", "", 100, 45, "" },
{ "FirstAidKit", "", 150, 65, "" },
{ "NVGoggles", "", 2000, 980, "" },
{ "HandGrenade_Stone", "Flashbang", 1700, -1, "" },
{ "hgun_P07_snds_F", "Stun Pistol", 2000, 650, "" },
{ "arifle_sdar_F", "Taser Rifle", 20000, 7500, "" },
{ "hgun_P07_F", "", 7500, 1500, "" },
{ "SMG_02_ACO_F", "", 30000, -1, "call life_coplevel >= 2" },
{ "arifle_MX_F", "", 35000, 7500, "call life_coplevel >= 2" },
{ "hgun_ACPC2_F", "", 17500, -1, "call life_coplevel >= 3" },
{ "arifle_MXC_F", "", 30000, 5000, "call life_coplevel >= 3" }
};
mags[] = {
{ "16Rnd_9x21_Mag", "", 125, 100, "" },
{ "20Rnd_556x45_UW_mag", "Taser Rifle Magazine", 125, 100, "" },
{ "30Rnd_65x39_caseless_mag", "", 130, 100, "" },
{ "30Rnd_9x21_Mag", "", 250, 100, "call life_coplevel >= 2" },
{ "9Rnd_45ACP_Mag", "", 200, 100, "call life_coplevel >= 3" }
};
accs[] = {
{ "muzzle_snds_L", "", 650, 100, "" },
{ "acc_flashlight", "", 750, 100, "call life_coplevel >= 2" },
{ "optic_Holosight", "", 1200, 100, "call life_coplevel >= 2" },
{ "optic_Arco", "", 2500, 100, "call life_coplevel >= 2" },
{ "muzzle_snds_H", "", 2750, 100, "call life_coplevel >= 2" },
{ "optic_MRD", "", 2750, 100, "call life_coplevel >= 2" }
};
};
//Medic Shops
class med_basic {
name = "store";
side = "med";
conditions = "";
items[] = {
{ "ItemGPS", "", 100, 45, "" },
{ "Binocular", "", 150, -1, "" },
{ "FirstAidKit", "", 150, 65, "" },
{ "NVGoggles", "", 1200, 980, "" }
};
mags[] = {};
accs[] = {};
};
};

View File

@@ -0,0 +1,858 @@
/*
* FORMAT:
* STRING (Conditions) - Must return boolean :
* String can contain any amount of conditions, aslong as the entire
* string returns a boolean. This allows you to check any levels, licenses etc,
* in any combination. For example:
* "call life_coplevel && license_civ_someLicense"
* This will also let you call any other function.
*/
class VirtualShops {
//Virtual Shops
class market {
name = "STR_Shops_Market";
side = "civ";
conditions = "";
items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "pickaxe", "toolkit", "fuelFull", "peach", "storagesmall", "storagebig", "rabbit_raw", "hen_raw", "rooster_raw", "sheep_raw", "goat_raw" };
};
class med_market {
name = "STR_Shops_Market";
side = "med";
conditions = "";
items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "toolkit", "fuelFull", "peach", "defibrillator" };
};
class rebel {
name = "STR_Shops_Rebel";
side = "civ";
conditions = "license_civ_rebel";
items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "lockpick", "pickaxe", "toolkit", "fuelFull", "peach", "boltcutter", "blastingcharge" };
};
class gang {
name = "STR_Shops_Gang";
side = "civ";
conditions = "";
items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "lockpick", "pickaxe", "toolkit", "fuelFull", "peach", "boltcutter", "blastingcharge" };
};
class wongs {
name = "STR_Shops_Wongs";
side = "civ";
conditions = "";
items[] = { "turtle_soup", "turtle_raw" };
};
class coffee {
name = "STR_Shops_Coffee";
side = "civ";
conditions = "";
items[] = { "coffee", "donuts" };
};
class f_station_coffee {
name = "STR_Shop_Station_Coffee";
side = "";
conditions = "";
items[] = { "coffee", "donuts", "redgull", "toolkit", "fuelFull"};
};
class drugdealer {
name = "STR_Shops_DrugDealer";
side = "civ";
conditions = "";
items[] = { "cocaine_processed", "heroin_processed", "marijuana" };
};
class oil {
name = "STR_Shops_Oil";
side = "civ";
conditions = "";
items[] = { "oil_processed", "pickaxe", "fuelFull" };
};
class fishmarket {
name = "STR_Shops_FishMarket";
side = "civ";
conditions = "";
items[] = { "salema_raw", "salema", "ornate_raw", "ornate", "mackerel_raw", "mackerel", "tuna_raw", "tuna", "mullet_raw", "mullet", "catshark_raw", "catshark" };
};
class glass {
name = "STR_Shops_Glass";
side = "civ";
conditions = "";
items[] = { "glass" };
};
class iron {
name = "STR_Shops_Minerals";
side = "civ";
conditions = "";
items[] = { "iron_refined", "copper_refined" };
};
class diamond {
name = "STR_Shops_Diamond";
side = "civ";
conditions = "";
items[] = { "diamond_uncut", "diamond_cut" };
};
class salt {
name = "STR_Shops_Salt";
side = "civ";
conditions = "";
items[] = { "salt_refined" };
};
class cement {
name = "STR_Shops_Cement";
side = "civ";
conditions = "";
items[] = { "cement" };
};
class gold {
name = "STR_Shops_Gold";
side = "civ";
conditions = "";
items[] = { "goldbar" };
};
class cop {
name = "STR_Shops_Cop";
side = "cop";
conditions = "";
items[] = { "donuts", "coffee", "spikeStrip", "waterBottle", "rabbit", "apple", "redgull", "toolkit", "fuelFull", "defusekit", "defibrillator" };
};
};
/*
* CLASS:
* variable = Variable Name
* displayName = Item Name
* weight = Item Weight
* buyPrice = Item Buy Price
* sellPrice = Item Sell Price
* illegal = Illegal Item
* edible = Item Edible (-1 = Disabled)
* icon = Item Icon
* processedItem = Processed Item
*/
class VirtualItems {
//Virtual Items
//Misc
class pickaxe {
variable = "pickaxe";
displayName = "STR_Item_Pickaxe";
weight = 2;
buyPrice = 750;
sellPrice = 350;
illegal = false;
edible = -1;
icon = "icons\ico_pickaxe.paa";
};
class defibrillator {
variable = "defibrillator";
displayName = "STR_Item_Defibrillator";
weight = 4;
buyPrice = 900;
sellPrice = 450;
illegal = false;
edible = -1;
icon = "icons\ico_defibrillator.paa";
};
class toolkit {
variable = "toolkit";
displayName = "STR_Item_Toolkit";
weight = 4;
buyPrice = 350;
sellPrice = 100;
illegal = false;
edible = -1;
icon = "\a3\weapons_f\items\data\UI\gear_toolkit_ca.paa";
};
class fuelEmpty {
variable = "fuelEmpty";
displayName = "STR_Item_FuelE";
weight = 2;
buyPrice = -1;
sellPrice = 10;
illegal = false;
edible = -1;
icon = "icons\ico_fuelEmpty.paa";
};
class fuelFull {
variable = "fuelFull";
displayName = "STR_Item_FuelF";
weight = 5;
buyPrice = 850;
sellPrice = 500;
illegal = false;
edible = -1;
icon = "icons\ico_fuel.paa";
};
class spikeStrip {
variable = "spikeStrip";
displayName = "STR_Item_SpikeStrip";
weight = 15;
buyPrice = 2500;
sellPrice = 1200;
illegal = true;
edible = -1;
icon = "icons\ico_spikeStrip.paa";
};
class lockpick {
variable = "lockpick";
displayName = "STR_Item_Lockpick";
weight = 1;
buyPrice = 150;
sellPrice = 75;
illegal = true;
edible = -1;
icon = "icons\ico_lockpick.paa";
};
class goldbar {
variable = "goldBar";
displayName = "STR_Item_GoldBar";
weight = 12;
buyPrice = -1;
sellPrice = 95000;
illegal = true;
edible = -1;
icon = "icons\ico_goldBar.paa";
};
class blastingcharge {
variable = "blastingCharge";
displayName = "STR_Item_BCharge";
weight = 15;
buyPrice = 35000;
sellPrice = 10000;
illegal = true;
edible = -1;
icon = "icons\ico_blastingCharge.paa";
};
class boltcutter {
variable = "boltCutter";
displayName = "STR_Item_BCutter";
weight = 5;
buyPrice = 7500;
sellPrice = 1000;
illegal = true;
edible = -1;
icon = "icons\ico_boltCutter.paa";
};
class defusekit {
variable = "defuseKit";
displayName = "STR_Item_DefuseKit";
weight = 2;
buyPrice = 2500;
sellPrice = 2000;
illegal = true;
edible = -1;
icon = "icons\ico_defuseKit.paa";
};
class storagesmall {
variable = "storageSmall";
displayName = "STR_Item_StorageBS";
weight = 5;
buyPrice = 75000;
sellPrice = 50000;
illegal = false;
edible = -1;
icon = "icons\ico_storageSmall.paa";
};
class storagebig {
variable = "storageBig";
displayName = "STR_Item_StorageBL";
weight = 10;
buyPrice = 150000;
sellPrice = 125000;
illegal = false;
edible = -1;
icon = "icons\ico_storageBig.paa";
};
//Mined Items
class oil_unprocessed {
variable = "oilUnprocessed";
displayName = "STR_Item_OilU";
weight = 7;
buyPrice = -1;
sellPrice = -1;
illegal = false;
edible = -1;
icon = "icons\ico_oilUnprocessed.paa";
};
class oil_processed {
variable = "oilProcessed";
displayName = "STR_Item_OilP";
weight = 6;
buyPrice = -1;
sellPrice = 3200;
illegal = false;
edible = -1;
icon = "icons\ico_oilProcessed.paa";
};
class copper_unrefined {
variable = "copperUnrefined";
displayName = "STR_Item_CopperOre";
weight = 4;
buyPrice = -1;
sellPrice = -1;
illegal = false;
edible = -1;
icon = "icons\ico_copperOre.paa";
};
class copper_refined {
variable = "copperRefined";
displayName = "STR_Item_CopperIngot";
weight = 3;
buyPrice = -1;
sellPrice = 1500;
illegal = false;
edible = -1;
icon = "icons\ico_copper.paa";
};
class iron_unrefined {
variable = "ironUnrefined";
displayName = "STR_Item_IronOre";
weight = 5;
buyPrice = -1;
sellPrice = -1;
illegal = false;
edible = -1;
icon = "icons\ico_ironOre.paa";
};
class iron_refined {
variable = "ironRefined";
displayName = "STR_Item_IronIngot";
weight = 3;
buyPrice = -1;
sellPrice = 3200;
illegal = false;
edible = -1;
icon = "icons\ico_iron.paa";
};
class salt_unrefined {
variable = "saltUnrefined";
displayName = "STR_Item_Salt";
weight = 3;
buyPrice = -1;
sellPrice = -1;
illegal = false;
edible = -1;
icon = "icons\ico_saltUnprocessed.paa";
};
class salt_refined {
variable = "saltRefined";
displayName = "STR_Item_SaltR";
weight = 1;
buyPrice = -1;
sellPrice = 1450;
illegal = false;
edible = -1;
icon = "icons\ico_saltProcessed.paa";
};
class sand {
variable = "sand";
displayName = "STR_Item_Sand";
weight = 3;
buyPrice = -1;
sellPrice = -1;
illegal = false;
edible = -1;
icon = "icons\ico_sand.paa";
};
class glass {
variable = "glass";
displayName = "STR_Item_Glass";
weight = 1;
buyPrice = -1;
sellPrice = 1450;
illegal = false;
edible = -1;
icon = "icons\ico_glass.paa";
};
class diamond_uncut {
variable = "diamondUncut";
displayName = "STR_Item_DiamondU";
weight = 4;
buyPrice = -1;
sellPrice = 750;
illegal = false;
edible = -1;
icon = "icons\ico_diamondUncut.paa";
};
class diamond_cut {
variable = "diamondCut";
displayName = "STR_Item_DiamondC";
weight = 2;
buyPrice = -1;
sellPrice = 2000;
illegal = false;
edible = -1;
icon = "icons\ico_diamondCut.paa";
};
class rock {
variable = "rock";
displayName = "STR_Item_Rock";
weight = 6;
buyPrice = -1;
sellPrice = -1;
illegal = false;
edible = -1;
icon = "icons\ico_rock.paa";
};
class cement {
variable = "cement";
displayName = "STR_Item_CementBag";
weight = 5;
buyPrice = -1;
sellPrice = 1950;
illegal = false;
edible = -1;
icon = "icons\ico_cement.paa";
};
//Drugs
class heroin_unprocessed {
variable = "heroinUnprocessed";
displayName = "STR_Item_HeroinU";
weight = 6;
buyPrice = -1;
sellPrice = -1;
illegal = true;
edible = -1;
icon = "icons\ico_heroinUnprocessed.paa";
processedItem = "heroin_processed";
};
class heroin_processed {
variable = "heroinProcessed";
displayName = "STR_Item_HeroinP";
weight = 4;
buyPrice = 3500;
sellPrice = 2560;
illegal = true;
edible = -1;
icon = "icons\ico_heroinProcessed.paa";
};
class cannabis {
variable = "cannabis";
displayName = "STR_Item_Cannabis";
weight = 4;
buyPrice = -1;
sellPrice = -1;
illegal = true;
edible = -1;
icon = "icons\ico_cannabis.paa";
processedItem = "marijuana";
};
class marijuana {
variable = "marijuana";
displayName = "STR_Item_Marijuana";
weight = 3;
buyPrice = 2800;
sellPrice = 2350;
illegal = true;
edible = -1;
icon = "icons\ico_marijuana.paa";
};
class cocaine_unprocessed {
variable = "cocaineUnprocessed";
displayName = "STR_Item_CocaineU";
weight = 6;
buyPrice = -1;
sellPrice = -1;
illegal = true;
edible = -1;
icon = "icons\ico_cocaineUnprocessed.paa";
processedItem = "cocaine_processed";
};
class cocaine_processed {
variable = "cocaineProcessed";
displayName = "STR_Item_CocaineP";
weight = 4;
buyPrice = -1;
sellPrice = 5000;
illegal = true;
edible = -1;
icon = "icons\ico_cocaineProcessed.paa";
};
//Drink
class redgull {
variable = "redgull";
displayName = "STR_Item_RedGull";
weight = 1;
buyPrice = 1500;
sellPrice = 200;
illegal = false;
edible = 100;
icon = "icons\ico_redgull.paa";
};
class coffee {
variable = "coffee";
displayName = "STR_Item_Coffee";
weight = 1;
buyPrice = 10;
sellPrice = 5;
illegal = false;
edible = 100;
icon = "icons\ico_coffee.paa";
};
class waterBottle {
variable = "waterBottle";
displayName = "STR_Item_WaterBottle";
weight = 1;
buyPrice = 10;
sellPrice = 5;
illegal = false;
edible = 100;
icon = "icons\ico_waterBottle.paa";
};
//Food
class apple {
variable = "apple";
displayName = "STR_Item_Apple";
weight = 1;
buyPrice = 65;
sellPrice = 50;
illegal = false;
edible = 10;
icon = "icons\ico_apple.paa";
};
class peach {
variable = "peach";
displayName = "STR_Item_Peach";
weight = 1;
buyPrice = 68;
sellPrice = 55;
illegal = false;
edible = 10;
icon = "icons\ico_peach.paa";
};
class tbacon {
variable = "tbacon";
displayName = "STR_Item_TBacon";
weight = 1;
buyPrice = 75;
sellPrice = 25;
illegal = false;
edible = 40;
icon = "icons\ico_tBacon.paa";
};
class donuts {
variable = "donuts";
displayName = "STR_Item_Donuts";
weight = 1;
buyPrice = 120;
sellPrice = 60;
illegal = false;
edible = 30;
icon = "icons\ico_donuts.paa";
};
class rabbit_raw {
variable = "rabbitRaw";
displayName = "STR_Item_RabbitRaw";
weight = 2;
buyPrice = -1;
sellPrice = 95;
illegal = false;
edible = -1;
icon = "icons\ico_rabbitRaw.paa";
};
class rabbit {
variable = "rabbit";
displayName = "STR_Item_Rabbit";
weight = 1;
buyPrice = 150;
sellPrice = 115;
illegal = false;
edible = 20;
icon = "icons\ico_rabbit.paa";
};
class salema_raw {
variable = "salemaRaw";
displayName = "STR_Item_SalemaRaw";
weight = 2;
buyPrice = -1;
sellPrice = 45;
illegal = false;
edible = -1;
icon = "icons\ico_salemaRaw.paa";
};
class salema {
variable = "salema";
displayName = "STR_Item_Salema";
weight = 1;
buyPrice = 75;
sellPrice = 55;
illegal = false;
edible = 30;
icon = "icons\ico_cookedFish.paa";
};
class ornate_raw {
variable = "ornateRaw";
displayName = "STR_Item_OrnateRaw";
weight = 2;
buyPrice = -1;
sellPrice = 40;
illegal = false;
edible = -1;
icon = "icons\ico_ornateRaw.paa";
};
class ornate {
variable = "ornate";
displayName = "STR_Item_Ornate";
weight = 1;
buyPrice = 175;
sellPrice = 150;
illegal = false;
edible = 25;
icon = "icons\ico_cookedFish.paa";
};
class mackerel_raw {
variable = "mackerelRaw";
displayName = "STR_Item_MackerelRaw";
weight = 4;
buyPrice = -1;
sellPrice = 175;
illegal = false;
edible = -1;
icon = "icons\ico_mackerelRaw.paa";
};
class mackerel {
variable = "mackerel";
displayName = "STR_Item_Mackerel";
weight = 2;
buyPrice = 250;
sellPrice = 200;
illegal = false;
edible = 30;
icon = "icons\ico_cookedFish.paa";
};
class tuna_raw {
variable = "tunaRaw";
displayName = "STR_Item_TunaRaw";
weight = 6;
buyPrice = -1;
sellPrice = 700;
illegal = false;
edible = -1;
icon = "icons\ico_tunaRaw.paa";
};
class tuna {
variable = "tuna";
displayName = "STR_Item_Tuna";
weight = 3;
buyPrice = 1250;
sellPrice = 1000;
illegal = false;
edible = 100;
icon = "icons\ico_cookedFish.paa";
};
class mullet_raw {
variable = "mulletRaw";
displayName = "STR_Item_MulletRaw";
weight = 4;
buyPrice = -1;
sellPrice = 250;
illegal = false;
edible = -1;
icon = "icons\ico_mulletRaw.paa";
};
class mullet {
variable = "mullet";
displayName = "STR_Item_Mullet";
weight = 2;
buyPrice = 600;
sellPrice = 400;
illegal = false;
edible = 80;
icon = "icons\ico_cookedFish.paa";
};
class catshark_raw {
variable = "catsharkRaw";
displayName = "STR_Item_CatSharkRaw";
weight = 6;
buyPrice = -1;
sellPrice = 300;
illegal = false;
edible = -1;
icon = "icons\ico_catsharkRaw.paa";
};
class catshark {
variable = "catshark";
displayName = "STR_Item_CatShark";
weight = 3;
buyPrice = 750;
sellPrice = 500;
illegal = false;
edible = 100;
icon = "icons\ico_cookedFish.paa";
};
class turtle_raw {
variable = "turtleRaw";
displayName = "STR_Item_TurtleRaw";
weight = 6;
buyPrice = -1;
sellPrice = 3000;
illegal = true;
edible = -1;
icon = "icons\ico_turtleRaw.paa";
};
class turtle_soup {
variable = "turtleSoup";
displayName = "STR_Item_TurtleSoup";
weight = 2;
buyPrice = 1000;
sellPrice = 750;
illegal = false;
edible = 100;
icon = "icons\ico_turtleSoup.paa";
};
class hen_raw {
variable = "henRaw";
displayName = "STR_Item_HenRaw";
weight = 1;
buyPrice = -1;
sellPrice = 65;
illegal = false;
edible = -1;
icon = "icons\ico_wholeChickenRaw.paa";
};
class hen {
variable = "hen";
displayName = "STR_Item_Hen";
weight = 1;
buyPrice = 115;
sellPrice = 85;
illegal = false;
edible = 65;
icon = "icons\ico_wholeChicken.paa";
};
class rooster_raw {
variable = "roosterRaw";
displayName = "STR_Item_RoosterRaw";
weight = 1;
buyPrice = -1;
sellPrice = 65;
illegal = false;
edible = -1;
icon = "icons\ico_chickenDrumstickRaw.paa";
};
class rooster {
variable = "rooster";
displayName = "STR_Item_Rooster";
weight = 115;
buyPrice = 90;
sellPrice = 85;
illegal = false;
edible = 45;
icon = "icons\ico_chickenDrumstick.paa";
};
class sheep_raw {
variable = "sheepRaw";
displayName = "STR_Item_SheepRaw";
weight = 2;
buyPrice = -1;
sellPrice = 95;
illegal = false;
edible = -1;
icon = "icons\ico_lambChopRaw.paa";
};
class sheep {
variable = "sheep";
displayName = "STR_Item_Sheep";
weight = 2;
buyPrice = 155;
sellPrice = 115;
illegal = false;
edible = 100;
icon = "icons\ico_lambChop.paa";
};
class goat_raw {
variable = "goatRaw";
displayName = "STR_Item_GoatRaw";
weight = 2;
buyPrice = -1;
sellPrice = 115;
illegal = false;
edible = -1;
icon = "icons\ico_muttonLegRaw.paa";
};
class goat {
variable = "goat";
displayName = "STR_Item_Goat";
weight = 2;
buyPrice = 175;
sellPrice = 135;
illegal = false;
edible = 100;
icon = "icons\ico_muttonLeg.paa";
};
};

View File

@@ -0,0 +1,37 @@
#include "..\..\script_macros.hpp"
/*
File: fn_arrestAction.sqf
Author:
Description:
Arrests the targeted person.
*/
private ["_unit","_id"];
_unit = param [0,objNull,[objNull]];
if (isNull _unit) exitWith {}; //Not valid
if (isNil "_unit") exitWith {}; //Not Valid
if (!(_unit isKindOf "Man")) exitWith {}; //Not a unit
if (!isPlayer _unit) exitWith {}; //Not a human
if (!(_unit getVariable "restrained")) exitWith {}; //He's not restrained.
if (!((side _unit) in [civilian,independent])) exitWith {}; //Not a civ
if (isNull _unit) exitWith {}; //Not valid
if (life_HC_isActive) then {
[getPlayerUID _unit,_unit,player,false] remoteExecCall ["HC_fnc_wantedBounty",HC_Life];
} else {
[getPlayerUID _unit,_unit,player,false] remoteExecCall ["life_fnc_wantedBounty",RSERV];
};
if (isNull _unit) exitWith {}; //Not valid
detach _unit;
[_unit,false] remoteExecCall ["life_fnc_jail",_unit];
[0,"STR_NOTF_Arrested_1",true, [_unit getVariable ["realname",name _unit], profileName]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
if (LIFE_SETTINGS(getNumber,"player_advancedLog") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
advanced_log = format [localize "STR_DL_AL_Arrested_BEF",_unit getVariable ["realname",name _unit]];
} else {
advanced_log = format [localize "STR_DL_AL_Arrested",profileName,(getPlayerUID player),_unit getVariable ["realname",name _unit]];
};
publicVariableServer "advanced_log";
};

View File

@@ -0,0 +1,26 @@
#include "..\..\script_macros.hpp"
/*
File: fn_buyLicense.sqf
Author: Bryan "Tonic" Boardwine
Description:
Called when purchasing a license. May need to be revised.
*/
private ["_type","_varName","_displayName","_sideFlag","_price"];
_type = _this select 3;
if (!isClass (missionConfigFile >> "Licenses" >> _type)) exitWith {}; //Bad entry?
_displayName = M_CONFIG(getText,"Licenses",_type,"displayName");
_price = M_CONFIG(getNumber,"Licenses",_type,"price");
_sideFlag = M_CONFIG(getText,"Licenses",_type,"side");
_varName = LICENSE_VARNAME(_type,_sideFlag);
if (CASH < _price) exitWith {hint format [localize "STR_NOTF_NE_1",[_price] call life_fnc_numberText,localize _displayName];};
CASH = CASH - _price;
[0] call SOCK_fnc_updatePartial;
titleText[format [localize "STR_NOTF_B_1", localize _displayName,[_price] call life_fnc_numberText],"PLAIN"];
missionNamespace setVariable [_varName,true];
[2] call SOCK_fnc_updatePartial;

View File

@@ -0,0 +1,96 @@
#include "..\..\script_macros.hpp"
/*
File: fn_captureHideout.sqf
Author: Bryan "Tonic" Boardwine
Description:
Blah blah.
*/
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 _hideout = (nearestObjects[getPosATL player,_hideoutObjs,25]) select 0;
private _group = _hideout getVariable ["gangOwner",grpNull];
if (isNil {group player getVariable "gang_name"}) exitWith {titleText[localize "STR_GNOTF_CreateGang","PLAIN"];};
if (_group == group player) exitWith {titleText[localize "STR_GNOTF_Controlled","PLAIN"]};
if ((_hideout getVariable ["inCapture",false])) exitWith {hint localize "STR_GNOTF_onePersonAtATime";};
private "_action";
private "_cpRate";
if (!isNull _group) then {
_gangName = _group getVariable ["gang_name",""];
_action = [
format [localize "STR_GNOTF_AlreadyControlled",_gangName],
localize "STR_GNOTF_CurrentCapture",
localize "STR_Global_Yes",
localize "STR_Global_No"
] call BIS_fnc_guiMessage;
_cpRate = 0.0045;
} else {
_cpRate = 0.0075;
};
if (!isNil "_action" && {!_action}) exitWith {titleText[localize "STR_GNOTF_CaptureCancel","PLAIN"];};
life_action_inUse = true;
//Setup the progress bar
disableSerialization;
private _title = localize "STR_GNOTF_Capturing";
"progressBar" cutRsc ["life_progress","PLAIN"];
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;
private _cP = 0.01;
for "_i" from 0 to 1 step 0 do {
if (animationState player != "AinvPknlMstpSnonWnonDnon_medic_1") then {
[player,"AinvPknlMstpSnonWnonDnon_medic_1",true] remoteExecCall ["life_fnc_animSync",RCLIENT];
player switchMove "AinvPknlMstpSnonWnonDnon_medic_1";
player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1";
};
sleep 0.26;
if (isNull _ui) then {
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progressBar = _ui displayCtrl 38201;
_titleText = _ui displayCtrl 38202;
};
_cP = _cP + _cpRate;
_progressBar progressSetPosition _cP;
_titleText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_title];
_hideout setVariable ["inCapture",true,true];
if (_cP >= 1 || !alive player) exitWith {_hideout setVariable ["inCapture",false,true];};
if (life_istazed) exitWith {_hideout setVariable ["inCapture",false,true];}; //Tazed
if (life_isknocked) exitWith {_hideout setVariable ["inCapture",false,true];}; //Knocked
if (life_interrupted) exitWith {_hideout setVariable ["inCapture",false,true];};
};
//Kill the UI display and check for various states
"progressBar" cutText ["","PLAIN"];
player playActionNow "stop";
if (!alive player || life_istazed || life_isknocked) exitWith {life_action_inUse = false;_hideout setVariable ["inCapture",false,true];};
if (player getVariable ["restrained",false]) exitWith {life_action_inUse = false;_hideout setVariable ["inCapture",false,true];};
if (life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_GNOTF_CaptureCancel","PLAIN"]; life_action_inUse = false;_hideout setVariable ["inCapture",false,true];};
life_action_inUse = false;
titleText[localize "STR_GNOTF_Captured","PLAIN"];
private _flagTexture = [
"\A3\Data_F\Flags\Flag_red_CO.paa",
"\A3\Data_F\Flags\Flag_green_CO.paa",
"\A3\Data_F\Flags\Flag_blue_CO.paa",
"\A3\Data_F\Flags\Flag_white_CO.paa",
"\A3\Data_F\Flags\flag_fd_red_CO.paa",
"\A3\Data_F\Flags\flag_fd_green_CO.paa",
"\A3\Data_F\Flags\flag_fd_blue_CO.paa",
"\A3\Data_F\Flags\flag_fd_orange_CO.paa"
] call BIS_fnc_selectRandom;
_this select 0 setFlagTexture _flagTexture;
[[0,1],"STR_GNOTF_CaptureSuccess",true,[name player,(group player) getVariable "gang_name"]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
_hideout setVariable ["inCapture",false,true];
_hideout setVariable ["gangOwner",group player,true];

View File

@@ -0,0 +1,30 @@
#include "..\..\script_macros.hpp"
/*
File: fn_catchFish.sqf
Author: Bryan "Tonic" Boardwine
Description:
Catches a fish that is near by.
*/
private ["_fish","_type","_typeName"];
_fish = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (isNull _fish) exitWith {}; //Object passed is null?
if (player distance _fish > 3.5) exitWith {};
switch (true) do {
case ((typeOf _fish) isEqualTo "Salema_F"): {_typeName = localize "STR_ANIM_Salema"; _type = "salema_raw";};
case ((typeOf _fish) isEqualTo "Ornate_random_F") : {_typeName = localize "STR_ANIM_Ornate"; _type = "ornate_raw";};
case ((typeOf _fish) isEqualTo "Mackerel_F") : {_typeName = localize "STR_ANIM_Mackerel"; _type = "mackerel_raw";};
case ((typeOf _fish) isEqualTo "Tuna_F") : {_typeName = localize "STR_ANIM_Tuna"; _type = "tuna_raw";};
case ((typeOf _fish) isEqualTo "Mullet_F") : {_typeName = localize "STR_ANIM_Mullet"; _type = "mullet_raw";};
case ((typeOf _fish) isEqualTo "CatShark_F") : {_typeName = localize "STR_ANIM_Catshark"; _type = "catshark_raw";};
case ((typeOf _fish) isEqualTo "Turtle_F") : {_typeName = localize "STR_ANIM_Turtle"; _type = "turtle_raw";};
default {_type = ""};
};
if (_type isEqualTo "") exitWith {}; //Couldn't get a type
if ([true,_type,1] call life_fnc_handleInv) then {
deleteVehicle _fish;
titleText[format [(localize "STR_NOTF_Fishing"),_typeName],"PLAIN"];
};

View File

@@ -0,0 +1,21 @@
#include "..\..\script_macros.hpp"
/*
File: fn_dpFinish.sqf
Author: Bryan "Tonic" Boardwine
Description:
Finishes the DP Mission and calculates the money earned based
on distance between A->B
*/
private ["_dp","_dis","_price"];
_dp = [_this,0,objNull,[objNull]] call BIS_fnc_param;
life_delivery_in_progress = false;
life_dp_point = nil;
_dis = round((getPos life_dp_start) distance (getPos _dp));
_price = round(1.7 * _dis);
["DeliverySucceeded",[format [(localize "STR_NOTF_Earned_1"),[_price] call life_fnc_numberText]]] call bis_fnc_showNotification;
life_cur_task setTaskState "Succeeded";
player removeSimpleTask life_cur_task;
CASH = CASH + _price;
[0] call SOCK_fnc_updatePartial;

View File

@@ -0,0 +1,38 @@
/*
File: fn_dropFishingNet.sqf
Author: Bryan "Tonic" Boardwine
Description:
Drops a virtual fishing net from the boat.
*/
private ["_fish","_type","_typeName"];
if (!(vehicle player isKindOf "Ship")) exitWith {};
_fish = (nearestObjects[getPos vehicle player,["Fish_Base_F"],20]);
life_net_dropped = true;
titleText[localize "STR_NOTF_NetDrop","PLAIN"];
sleep 5;
if (_fish isEqualTo []) exitWith {titleText[localize "STR_NOTF_NetDropFail","PLAIN"]; life_net_dropped = false;};
{
if (_x isKindOf "Fish_Base_F") then {
switch (true) do {
case ((typeOf _x) isEqualTo "Salema_F"): {_typeName = localize "STR_ANIM_Salema"; _type = "salema_raw";};
case ((typeOf _x) isEqualTo "Ornate_random_F") : {_typeName = localize "STR_ANIM_Ornate"; _type = "ornate_raw";};
case ((typeOf _x) isEqualTo "Mackerel_F") : {_typeName = localize "STR_ANIM_Mackerel"; _type = "mackerel_raw";};
case ((typeOf _x) isEqualTo "Tuna_F") : {_typeName = localize "STR_ANIM_Tuna"; _type = "tuna_raw";};
case ((typeOf _x) isEqualTo "Mullet_F") : {_typeName = localize "STR_ANIM_Mullet"; _type = "mullet_raw";};
case ((typeOf _x) isEqualTo "CatShark_F") : {_typeName = localize "STR_ANIM_Catshark"; _type = "catshark_raw";};
default {_type = "";};
};
sleep 3;
if ([true,_type,1] call life_fnc_handleInv) then {
deleteVehicle _x;
titleText[format [(localize "STR_NOTF_Fishing"),_typeName],"PLAIN"];
};
};
} forEach (_fish);
sleep 1.5;
titleText[localize "STR_NOTF_NetUp","PLAIN"];
life_net_dropped = false;

View File

@@ -0,0 +1,28 @@
#include "..\..\script_macros.hpp"
/*
File: fn_escortAction.sqf
Author: Bryan "Tonic" Boardwine
Description: Attaches the desired person(_unit) to the player(player) and "escorts them".
*/
private ["_unit"];
_unit = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (!isNull(player getVariable ["escortingPlayer",objNull])) exitWith {};
if (isNil "_unit" || isNull _unit || !isPlayer _unit) exitWith {};
if (!(side _unit in [civilian,independent])) exitWith {};
if (player distance _unit > 3) exitWith {};
_unit attachTo [player,[0.1,1.1,0]];
player setVariable ["escortingPlayer",_unit];
player setVariable ["isEscorting",true];
_unit setVariable ["transporting",false,true];
_unit setVariable ["Escorting",true,true];
player reveal _unit;
[_unit] spawn {
_unit = _this select 0;
waitUntil {(!(_unit getVariable ["Escorting",false]))};
player setVariable ["escortingPlayer",nil];
player setVariable ["isEscorting",false];
};

View File

@@ -0,0 +1,76 @@
#include "..\..\script_macros.hpp"
/*
File: fn_gather.sqf
Author: Devilfloh
Description:
Main functionality for gathering.
*/
private ["_maxGather","_resource","_amount","_maxGather","_requiredItem"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {hint localize "STR_NOTF_isrestrained";};
if (player getVariable "playerSurrender") exitWith {hint localize "STR_NOTF_surrender";};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_exit = false;
_resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resource = configName _curConfig;
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
{
if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {life_action_inUse = false;};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
//Messages here
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {life_action_inUse = false;};
_amount = round(random(_maxGather)) + 1;
_diff = [_resource,_amount,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
switch (_requiredItem) do {
case "pickaxe": {player say3D "mining";};
default {player say3D "harvest";};
};
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
sleep 0.5;
};
if ([true,_resource,_diff] call life_fnc_handleInv) then {
_itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
};
sleep 1;
life_action_inUse = false;

View File

@@ -0,0 +1,43 @@
#include "..\..\script_macros.hpp"
/*
File: fn_getDPMission.sqf
Author: Bryan "Tonic" Boardwine
Description:
Selects a random DP point for a delivery mission.
Needs to be revised.
*/
private ["_dp","_target"];
_target = param [0,objNull,[objNull]];
if (str(_target) in LIFE_SETTINGS(getArray,"delivery_points")) then {
private "_point";
_point = LIFE_SETTINGS(getArray,"delivery_points");
_point deleteAt (_point find (str(_target)));
_dp = _point call BIS_fnc_selectRandom;
} else {
_dp = LIFE_SETTINGS(getArray,"delivery_points") call BIS_fnc_selectRandom;
};
life_dp_start = _target;
life_delivery_in_progress = true;
life_dp_point = call compile format ["%1",_dp];
_dp = [_dp,"_"," "] call KRON_Replace;
life_cur_task = player createSimpleTask [format ["Delivery_%1",life_dp_point]];
life_cur_task setSimpleTaskDescription [format [localize "STR_NOTF_DPStart",toUpper _dp],"Delivery Job",""];
life_cur_task setTaskState "Assigned";
player setCurrentTask life_cur_task;
["DeliveryAssigned",[format [localize "STR_NOTF_DPTask",toUpper _dp]]] call bis_fnc_showNotification;
[] spawn {
waitUntil {!life_delivery_in_progress || !alive player};
if (!alive player) then {
life_cur_task setTaskState "Failed";
player removeSimpleTask life_cur_task;
["DeliveryFailed",[localize "STR_NOTF_DPFailed"]] call BIS_fnc_showNotification;
life_delivery_in_progress = false;
life_dp_point = nil;
};
};

View File

@@ -0,0 +1,68 @@
#include "..\..\script_macros.hpp"
/*
File: fn_gutAnimal.sqf
Author: Bryan "Tonic" Boardwine
Description:
Guts the animal?
*/
private ["_animalCorpse","_upp","_ui","_progress","_pgText","_cP","_displayName","_item"];
_animalCorpse = param [0,objNull,[objNull]];
if (isNull _animalCorpse) exitWith {}; //Object passed is null?
life_interrupted = false;
if (player distance _animalCorpse > 3.5) exitWith {}; //WTF need check with nearest objects I love Arma
life_action_inUse = true;
switch (typeOf _animalCorpse) do {
case "Hen_random_F": {_displayName = localize "STR_ANIM_chicken"; _item = "hen_raw";};
case "Cock_random_F": {_displayName = localize "STR_ANIM_Rooster"; _item = "rooster_raw";};
case "Goat_random_F": {_displayName = localize "STR_ANIM_Goat"; _item = "goat_raw";};
case "Sheep_random_F": {_displayName = localize "STR_ANIM_Sheep"; _item = "sheep_raw";};
case "Rabbit_F": {_displayName = localize "STR_ANIM_Rabbit"; _item = "rabbit_raw";};
default {_displayName = ""; _item = "";};
};
if (_displayName isEqualTo "") exitWith {life_action_inUse = false;};
_upp = format [localize "STR_NOTF_Gutting",_displayName];
//Setup our progress bar.
disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;
for "_i" from 0 to 1 step 0 do {
if (animationState player != "AinvPknlMstpSnonWnonDnon_medic_1") then {
[player,"AinvPknlMstpSnonWnonDnon_medic_1",true] remoteExecCall ["life_fnc_animSync",RCLIENT];
player switchMove "AinvPknlMstpSnonWnonDnon_medic_1";
player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1";
};
uiSleep 0.15;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if (_cP >= 1) exitWith {};
if (!alive player) exitWith {};
if (isNull _animalCorpse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (life_interrupted) exitWith {};
};
life_action_inUse = false;
"progressBar" cutText ["","PLAIN"];
player playActionNow "stop";
if (isNull _animalCorpse) exitWith {life_action_inUse = false;};
if (life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_NOTF_ActionCancel","PLAIN"]; life_action_inUse = false;};
if !(isNull objectParent player) exitWith {titleText[localize "STR_NOTF_ActionInVehicle","PLAIN"];};
if ([true,_item,1] call life_fnc_handleInv) then {
deleteVehicle _animalCorpse;
titleText[format [(localize "STR_NOTF_Guttingfinish"),_displayName],"PLAIN"];
} else {
titleText[(localize "STR_NOTF_InvFull"),"PLAIN"];
};

View File

@@ -0,0 +1,39 @@
#include "..\..\script_macros.hpp"
/*
File: fn_healHospital.sqf
Author: Bryan "Tonic" Boardwine
Reworked: Jesse "TKCJesse" Schultz
Description:
Prompts user with a confirmation dialog to heal themselves.
Used at the hospitals to restore health to full.
Note: Dialog helps stop a few issues regarding money loss.
*/
private ["_healCost","_action"];
if (life_action_inUse) exitWith {};
if ((damage player) < 0.01) exitWith {hint localize "STR_NOTF_HS_FullHealth"};
_healCost = LIFE_SETTINGS(getNumber,"hospital_heal_fee");
if (CASH < _healCost) exitWith {hint format [localize "STR_NOTF_HS_NoCash",[_healCost] call life_fnc_numberText];};
life_action_inUse = true;
_action = [
format [localize "STR_NOTF_HS_PopUp",[_healCost] call life_fnc_numberText],
localize "STR_NOTF_HS_TITLE",
localize "STR_Global_Yes",
localize "STR_Global_No"
] call BIS_fnc_guiMessage;
if (_action) then {
titleText[localize "STR_NOTF_HS_Healing","PLAIN"];
closeDialog 0;
uiSleep 8;
if (player distance (_this select 0) > 5) exitWith {life_action_inUse = false; titleText[localize "STR_NOTF_HS_ToFar","PLAIN"]};
titleText[localize "STR_NOTF_HS_Healed","PLAIN"];
player setDamage 0;
CASH = CASH - _healCost;
life_action_inUse = false;
} else {
hint localize "STR_NOTF_ActionCancel";
closeDialog 0;
life_action_inUse = false;
};

View File

@@ -0,0 +1,80 @@
#include "..\..\script_macros.hpp"
/*
File: fn_impoundAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Impounds the vehicle
*/
private ["_vehicle","_type","_time","_value","_vehicleData","_upp","_ui","_progress","_pgText","_cP","_filters","_impoundValue","_price","_impoundMultiplier"];
_vehicle = param [0,objNull,[objNull]];
_filters = ["Car","Air","Ship"];
if (!((KINDOF_ARRAY(_vehicle,_filters)))) exitWith {};
if (player distance cursorObject > 10) exitWith {};
if (_vehicle getVariable "NPC") exitWith {hint localize "STR_NPC_Protected"};
_vehicleData = _vehicle getVariable ["vehicle_info_owners",[]];
if (_vehicleData isEqualTo 0) exitWith {deleteVehicle _vehicle}; //Bad vehicle.
_vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
_price = M_CONFIG(getNumber,"LifeCfgVehicles",(typeOf _vehicle),"price");
[0,"STR_NOTF_BeingImpounded",true,[((_vehicleData select 0) select 1),_vehicleName]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
life_action_inUse = true;
_upp = localize "STR_NOTF_Impounding";
//Setup our progress bar.
disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;
for "_i" from 0 to 1 step 0 do {
sleep 0.09;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if (_cP >= 1) exitWith {};
if (player distance _vehicle > 10) exitWith {};
if (!alive player) exitWith {};
};
"progressBar" cutText ["","PLAIN"];
if (player distance _vehicle > 10) exitWith {hint localize "STR_NOTF_ImpoundingCancelled"; life_action_inUse = false;};
if (!alive player) exitWith {life_action_inUse = false;};
if (count crew _vehicle isEqualTo 0) then {
if (!(KINDOF_ARRAY(_vehicle,_filters))) exitWith {life_action_inUse = false;};
_type = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
life_impound_inuse = true;
if (life_HC_isActive) then {
[_vehicle,true,player] remoteExec ["HC_fnc_vehicleStore",HC_Life];
} else {
[_vehicle,true,player] remoteExec ["TON_fnc_vehicleStore",RSERV];
};
waitUntil {!life_impound_inuse};
if (playerSide isEqualTo west) then {
_impoundMultiplier = LIFE_SETTINGS(getNumber,"vehicle_cop_impound_multiplier");
_value = _price * _impoundMultiplier;
[0,"STR_NOTF_HasImpounded",true,[profileName,((_vehicleData select 0) select 1),_vehicleName]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
if (_vehicle in life_vehicles) then {
hint format [localize "STR_NOTF_OwnImpounded",[_value] call life_fnc_numberText,_type];
BANK = BANK - _value;
} else {
hint format [localize "STR_NOTF_Impounded",_type,[_value] call life_fnc_numberText];
BANK = BANK + _value;
};
if (BANK < 0) then {BANK = 0;};
[1] call SOCK_fnc_updatePartial;
};
} else {
hint localize "STR_NOTF_ImpoundingCancelled";
};
life_action_inUse = false;

View File

@@ -0,0 +1,106 @@
#include "..\..\script_macros.hpp"
/*
File: fn_mine.sqf
Author: Devilfloh
Editor: Dardo
Description:
Same as fn_gather,but it allows use of probabilities for mining.
*/
private ["_maxGather", "_resource", "_amount", "_requiredItem", "_mined"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {
hint localize "STR_NOTF_isrestrained";
};
_exit = false;
if (player getVariable "playerSurrender") exitWith {
hint localize "STR_NOTF_surrender";
};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
_percent = (floor random 100) + 1; //Make sure it's not 0
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resources = getArray(_curConfig >> "mined");
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
_mined = "";
if (_resources isEqualTo []) exitWith {}; //Smart guy :O
for "_i" from 0 to count (_resources) do {
if (count _resources isEqualTo 1) exitWith {
if (!((_resources select 0) isEqualType [])) then {
_mined = _resources select 0;
} else {
_mined = (_resources select 0) select 0;
};
};
_resource = (_resources select _i) select 0;
_prob = (_resources select _i) select 1;
_probdiff = (_resources select _i) select 2;
if ((_percent >= _prob) && (_percent <= _probdiff)) exitWith {
_mined = _resource;
};
};
{
if ((player distance(getMarkerPos _x)) < _zoneSize) exitWith {
_zone = _x;
};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {
life_action_inUse = false;
};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "pickaxe": {
titleText[(localize "STR_NOTF_Pickaxe"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {
life_action_inUse = false;
};
_amount = round(random(_maxGather)) + 1;
_diff = [_mined, _amount, life_carryWeight, life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
player say3D "mining";
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil {
animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
};
sleep 0.5;
};
if (([true, _mined, _diff] call life_fnc_handleInv)) then {
_itemName = M_CONFIG(getText, "VirtualItems", _mined, "displayName");
titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
};
sleep 2.5;
life_action_inUse = false;

View File

@@ -0,0 +1,39 @@
#include "..\..\script_macros.hpp"
/*
File: fn_newsBroadcast.sqf
Author: Jesse "tkcjesse" Schultz
Description:
Creates the dialog and handles the data in the Channel 7 News Dialog.
*/
#define Confirm 100104
private ["_msgCost","_display","_confirmBtn","_msgCooldown","_broadcastDelay"];
if (!dialog) then {
createDialog "life_news_broadcast";
};
disableSerialization;
_display = findDisplay 100100;
_confirmBtn = _display displayCtrl Confirm;
_confirmBtn ctrlEnable false;
_msgCooldown = (60 * LIFE_SETTINGS(getNumber,"news_broadcast_cooldown"));
_msgCost = LIFE_SETTINGS(getNumber,"news_broadcast_cost");
if (CASH < _msgCost) then {
hint format [localize "STR_News_NotEnough",[_msgCost] call life_fnc_numberText];
} else {
_confirmBtn ctrlEnable true;
_confirmBtn buttonSetAction "[ctrlText 100101,ctrlText 100102,profilename] call life_fnc_postNewsBroadcast; closeDialog 0;";
};
if (isNil "life_broadcastTimer" || {(time - life_broadcastTimer) > _msgCooldown}) then {
_broadcastDelay = localize "STR_News_Now";
} else {
_broadcastDelay = [(_msgCooldown - (time - life_broadcastTimer))] call BIS_fnc_secondsToString;
_confirmBtn ctrlEnable false;
};
CONTROL(100100,100103) ctrlSetStructuredText parseText format [ localize "STR_News_StructuredText",[_msgCost] call life_fnc_numberText,_broadcastDelay];

View File

@@ -0,0 +1,17 @@
/*
File: fn_packupSpikes.sqf
Author: Bryan "Tonic" Boardwine
Description:
Packs up a deployed spike strip.
*/
private ["_spikes"];
_spikes = nearestObjects[getPos player,["Land_Razorwire_F"],8] select 0;
if (isNil "_spikes") exitWith {};
if ([true,"spikeStrip",1] call life_fnc_handleInv) then {
titleText[localize "STR_NOTF_SpikeStrip","PLAIN"];
player removeAction life_action_spikeStripPickup;
life_action_spikeStripPickup = nil;
deleteVehicle _spikes;
};

View File

@@ -0,0 +1,62 @@
#include "..\..\script_macros.hpp"
#define INUSE(ENTITY) ENTITY setVariable ["inUse",false,true]
/*
File: fn_pickupItem.sqf
Author: Bryan "Tonic" Boardwine
Description:
Master handling for picking up an item.
*/
private ["_itemInfo","_itemName","_illegal","_diff"];
if ((time - life_action_delay) < 2) exitWith {hint localize "STR_NOTF_ActionDelay"; INUSE(_this);};
if (isNull _this || {player distance _this > 3}) exitWith {INUSE(_this);};
_itemInfo = _this getVariable ["item",[]]; if (count _itemInfo isEqualTo 0) exitWith {deleteVehicle _this;};
_illegal = ITEM_ILLEGAL(_itemInfo select 0);
_itemName = ITEM_NAME(_itemInfo select 0);
if (isLocalized _itemName) then {
_itemName = (localize _itemName);
};
if (playerSide isEqualTo west && _illegal isEqualTo 1) exitWith {
titleText[format [localize "STR_NOTF_PickedEvidence",_itemName,[round(ITEM_SELLPRICE(_itemInfo select 0) / 2)] call life_fnc_numberText],"PLAIN"];
BANK = BANK + round(ITEM_SELLPRICE(_itemInfo select 0) / 2);
deleteVehicle _this;
[1] call SOCK_fnc_updatePartial;
life_action_delay = time;
};
life_action_delay = time;
_diff = [(_itemInfo select 0),(_itemInfo select 1),life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if (_diff <= 0) exitWith {hint localize "STR_NOTF_InvFull"; INUSE(_this);};
if (!(_diff isEqualTo (_itemInfo select 1))) then {
if ([true,(_itemInfo select 0),_diff] call life_fnc_handleInv) then {
player playMove "AinvPknlMstpSlayWrflDnon";
_this setVariable ["item",[(_itemInfo select 0),(_itemInfo select 1) - _diff],true];
titleText[format [localize "STR_NOTF_Picked",_diff,_itemName],"PLAIN"];
INUSE(_this);
} else {
INUSE(_this);
};
} else {
if ([true,(_itemInfo select 0),(_itemInfo select 1)] call life_fnc_handleInv) then {
deleteVehicle _this;
//waitUntil{isNull _this};
player playMove "AinvPknlMstpSlayWrflDnon";
titleText[format [localize "STR_NOTF_Picked",_diff,_itemName],"PLAIN"];
} else {
INUSE(_this);
};
};
if (LIFE_SETTINGS(getNumber,"player_advancedLog") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
advanced_log = format [localize "STR_DL_AL_pickedUp_BEF",_diff,_itemName];
} else {
advanced_log = format [localize "STR_DL_AL_pickedUp",profileName,(getPlayerUID player),_diff,_itemName];
};
publicVariableServer "advanced_log";
};

View File

@@ -0,0 +1,37 @@
#include "..\..\script_macros.hpp"
/*
File: fn_pickupMoney.sqf
Author: Bryan "Tonic" Boardwine
Description:
Picks up money
*/
private "_value";
if ((time - life_action_delay) < 1.5) exitWith {hint localize "STR_NOTF_ActionDelay"; _this setVariable ["inUse",false,true];};
if (isNull _this || {player distance _this > 3}) exitWith {_this setVariable ["inUse",false,true];};
_value = ((_this getVariable "item") select 1);
if (!isNil "_value") exitWith {
deleteVehicle _this;
switch (true) do {
case (_value > 20000000) : {_value = 100000;}; //VAL>20mil->100k
case (_value > 5000000) : {_value = 250000;}; //VAL>5mil->250k
default {};
};
player playMove "AinvPknlMstpSlayWrflDnon";
titleText[format [localize "STR_NOTF_PickedMoney",[_value] call life_fnc_numberText],"PLAIN"];
CASH = CASH + _value;
[0] call SOCK_fnc_updatePartial;
life_action_delay = time;
if (LIFE_SETTINGS(getNumber,"player_moneyLog") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
money_log = format [localize "STR_DL_ML_pickedUpMoney_BEF",[_value] call life_fnc_numberText,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText];
} else {
money_log = format [localize "STR_DL_ML_pickedUpMoney",profileName,(getPlayerUID player),[_value] call life_fnc_numberText,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText];
};
publicVariableServer "money_log";
};
};

View File

@@ -0,0 +1,20 @@
#include "..\..\script_macros.hpp"
/*
File: fn_postBail.sqf
Author: Bryan "Tonic" Boardwine
Description:
Called when the player attempts to post bail.
Needs to be revised.
*/
private ["_unit"];
_unit = param [1,objNull,[objNull]];
if (life_bail_paid) exitWith {};
if (isNil "life_bail_amount") then {life_bail_amount = 3500;};
if (!life_canpay_bail) exitWith {hint localize "STR_NOTF_Bail_Post"};
if (BANK < life_bail_amount) exitWith {hint format [localize "STR_NOTF_Bail_NotEnough",life_bail_amount];};
BANK = BANK - life_bail_amount;
life_bail_paid = true;
[1] call SOCK_fnc_updatePartial;
[0,"STR_NOTF_Bail_Bailed",true,[profileName]] remoteExecCall ["life_fnc_broadcast",RCLIENT];

View File

@@ -0,0 +1,147 @@
#include "..\..\script_macros.hpp"
/*
File: fn_processAction.sqf
Author: Bryan "Tonic" Boardwine
Modified : NiiRoZz
Description:
Master handling for processing an item.
NiiRoZz : Added multiprocess
*/
private ["_vendor","_type","_itemInfo","_oldItem","_newItemWeight","_newItem","_oldItemWeight","_cost","_upp","_hasLicense","_itemName","_oldVal","_ui","_progress","_pgText","_cP","_materialsRequired","_materialsGiven","_noLicenseCost","_text","_filter","_totalConversions","_minimumConversions"];
_vendor = [_this,0,objNull,[objNull]] call BIS_fnc_param;
_type = [_this,3,"",[""]] call BIS_fnc_param;
//Error check
if (isNull _vendor || _type isEqualTo "" || (player distance _vendor > 10)) exitWith {};
life_action_inUse = true;//Lock out other actions during processing.
if (isClass (missionConfigFile >> "ProcessAction" >> _type)) then {
_filter = false;
_materialsRequired = M_CONFIG(getArray,"ProcessAction",_type,"MaterialsReq");
_materialsGiven = M_CONFIG(getArray,"ProcessAction",_type,"MaterialsGive");
_noLicenseCost = M_CONFIG(getNumber,"ProcessAction",_type,"NoLicenseCost");
_text = M_CONFIG(getText,"ProcessAction",_type,"Text");
} else {_filter = true;};
if (_filter) exitWith {life_action_inUse = false;};
_itemInfo = [_materialsRequired,_materialsGiven,_noLicenseCost,(localize format ["%1",_text])];
if (count _itemInfo isEqualTo 0) exitWith {life_action_inUse = false;};
//Setup vars.
_oldItem = _itemInfo select 0;
_newItem = _itemInfo select 1;
_cost = _itemInfo select 2;
_upp = _itemInfo select 3;
_exit = false;
if (count _oldItem isEqualTo 0) exitWith {life_action_inUse = false;};
_totalConversions = [];
{
_var = ITEM_VALUE(_x select 0);
if (_var isEqualTo 0) exitWith {_exit = true;};
if (_var < (_x select 1)) exitWith {_exit = true;};
_totalConversions pushBack (floor (_var/(_x select 1)));
} forEach _oldItem;
if (_exit) exitWith {life_is_processing = false; hint localize "STR_NOTF_NotEnoughItemProcess"; life_action_inUse = false;};
if (_vendor in [mari_processor,coke_processor,heroin_processor]) then {
_hasLicense = true;
} else {
_hasLicense = LICENSE_VALUE(_type,"civ");
};
_cost = _cost * (count _oldItem);
_minimumConversions = _totalConversions call BIS_fnc_lowestNum;
_oldItemWeight = 0;
{
_weight = ([_x select 0] call life_fnc_itemWeight) * (_x select 1);
_oldItemWeight = _oldItemWeight + _weight;
} count _oldItem;
_newItemWeight = 0;
{
_weight = ([_x select 0] call life_fnc_itemWeight) * (_x select 1);
_newItemWeight = _newItemWeight + _weight;
} count _newItem;
_exit = false;
if (_newItemWeight > _oldItemWeight) then {
_netChange = _newItemWeight - _oldItemWeight;
_freeSpace = life_maxWeight - life_carryWeight;
if (_freeSpace < _netChange) exitWith {_exit = true;};
private _estConversions = floor(_freeSpace / _netChange);
if (_estConversions < _minimumConversions) then {
_minimumConversions = _estConversions;
};
};
if (_exit) exitWith {hint localize "STR_Process_Weight"; life_is_processing = false; life_action_inUse = false;};
//Setup our progress bar.
disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;
life_is_processing = true;
if (_hasLicense) then {
for "_i" from 0 to 1 step 0 do {
sleep 0.28;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if (_cP >= 1) exitWith {};
if (player distance _vendor > 10) exitWith {};
};
if (player distance _vendor > 10) exitWith {hint localize "STR_Process_Stay"; "progressBar" cutText ["","PLAIN"]; life_is_processing = false; life_action_inUse = false;};
{
[false,(_x select 0),((_x select 1)*(_minimumConversions))] call life_fnc_handleInv;
} count _oldItem;
{
[true,(_x select 0),((_x select 1)*(_minimumConversions))] call life_fnc_handleInv;
} count _newItem;
"progressBar" cutText ["","PLAIN"];
if (_minimumConversions isEqualTo (_totalConversions call BIS_fnc_lowestNum)) then {hint localize "STR_NOTF_ItemProcess";} else {hint localize "STR_Process_Partial";};
life_is_processing = false; life_action_inUse = false;
} else {
if (CASH < _cost) exitWith {hint format [localize "STR_Process_License",[_cost] call life_fnc_numberText]; "progressBar" cutText ["","PLAIN"]; life_is_processing = false; life_action_inUse = false;};
for "_i" from 0 to 1 step 0 do {
sleep 0.9;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if (_cP >= 1) exitWith {};
if (player distance _vendor > 10) exitWith {};
};
if (player distance _vendor > 10) exitWith {hint localize "STR_Process_Stay"; "progressBar" cutText ["","PLAIN"]; life_is_processing = false; life_action_inUse = false;};
if (CASH < _cost) exitWith {hint format [localize "STR_Process_License",[_cost] call life_fnc_numberText]; "progressBar" cutText ["","PLAIN"]; life_is_processing = false; life_action_inUse = false;};
{
[false,(_x select 0),((_x select 1)*(_minimumConversions))] call life_fnc_handleInv;
} count _oldItem;
{
[true,(_x select 0),((_x select 1)*(_minimumConversions))] call life_fnc_handleInv;
} count _newItem;
"progressBar" cutText ["","PLAIN"];
if (_minimumConversions isEqualTo (_totalConversions call BIS_fnc_lowestNum)) then {hint localize "STR_NOTF_ItemProcess";} else {hint localize "STR_Process_Partial";};
CASH = CASH - _cost;
[0] call SOCK_fnc_updatePartial;
life_is_processing = false;
life_action_inUse = false;
};

View File

@@ -0,0 +1,17 @@
#include "..\..\script_macros.hpp"
/*
File: fn_pulloutAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Pulls civilians out of a car if it's stopped.
*/
private ["_crew"];
_crew = crew cursorObject;
{
if !(side _x isEqualTo west) then {
_x setVariable ["transporting",false,true]; _x setVariable ["Escorting",false,true];
[_x] remoteExecCall ["life_fnc_pulloutVeh",_x];
};
} forEach _crew;

View File

@@ -0,0 +1,19 @@
#include "..\..\script_macros.hpp"
/*
File: fn_putInCar.sqf
Author: Bryan "Tonic" Boardwine
Description:
Finds the nearest vehicle and loads the target into the vehicle.
*/
private ["_unit"];
_unit = param [0,objNull,[objNull]];
if (isNull _unit || !isPlayer _unit) exitWith {};
_nearestVehicle = nearestObjects[getPosATL player,["Car","Ship","Submarine","Air"],10] select 0;
if (isNil "_nearestVehicle") exitWith {hint localize "STR_NOTF_VehicleNear"};
detach _unit;
[_nearestVehicle] remoteExecCall ["life_fnc_moveIn",_unit];
_unit setVariable ["Escorting",false,true];
_unit setVariable ["transporting",true,true];

View File

@@ -0,0 +1,48 @@
#include "..\..\script_macros.hpp"
/*
File : removeContainer.sqf
Author: NiiRoZz
Description:
Delete Container from house storage
*/
private ["_house","_action","_container","_containerType","_containers"];
_container = param [0,objNull,[objNull]];
_containerType = typeOf _container;
_house = nearestObject [player, "House"];
if (!(_house in life_vehicles)) exitWith {hint localize "STR_ISTR_Box_NotinHouse"};
if (isNull _container) exitWith {};
_containers = _house getVariable ["containers",[]];
closeDialog 0;
_action = [
format [localize "STR_House_DeleteContainerMSG"],localize "STR_pInAct_RemoveContainer",localize "STR_Global_Remove",localize "STR_Global_Cancel"
] call BIS_fnc_guiMessage;
if (_action) then {
private ["_box","_diff"];
_box = switch (_containerType) do {
case ("B_supplyCrate_F"): {"storagebig"};
case ("Box_IND_Grenades_F"): {"storagesmall"};
default {"None"};
};
if (_box == "None") exitWith {};
_diff = [_box,1,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {hint localize "STR_NOTF_InvFull"};
if (life_HC_isActive) then {
[_container] remoteExecCall ["HC_fnc_deleteDBContainer",HC_Life];
} else {
[_container] remoteExecCall ["TON_fnc_deleteDBContainer",RSERV];
};
{
if (_x == _container) then {
_containers deleteAt _forEachIndex;
};
} forEach _containers;
_house setVariable ["containers",_containers,true];
[true,_box,1] call life_fnc_handleInv;
};

View File

@@ -0,0 +1,71 @@
#include "..\..\script_macros.hpp"
/*
File: fn_repairTruck.sqf
Author: Bryan "Tonic" Boardwine
Description:
Main functionality for toolkits, to be revised in later version.
*/
private ["_veh","_upp","_ui","_progress","_pgText","_cP","_displayName","_test","_sideRepairArray"];
_veh = cursorObject;
life_interrupted = false;
if (isNull _veh) exitWith {};
if ((_veh isKindOf "Car") || (_veh isKindOf "Ship") || (_veh isKindOf "Air")) then {
if (life_inv_toolkit > 0) then {
life_action_inUse = true;
_displayName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _veh),"displayName");
_upp = format [localize "STR_NOTF_Repairing",_displayName];
//Setup our progress bar.
disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;
for "_i" from 0 to 1 step 0 do {
if (animationState player != "AinvPknlMstpSnonWnonDnon_medic_1") then {
[player,"AinvPknlMstpSnonWnonDnon_medic_1",true] remoteExecCall ["life_fnc_animSync",RCLIENT];
player switchMove "AinvPknlMstpSnonWnonDnon_medic_1";
player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1";
};
sleep 0.27;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];
if (_cP >= 1) exitWith {};
if (!alive player) exitWith {};
if !(isNull objectParent player) exitWith {};
if (life_interrupted) exitWith {};
};
life_action_inUse = false;
"progressBar" cutText ["","PLAIN"];
player playActionNow "stop";
if (life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_NOTF_ActionCancel","PLAIN"]; life_action_inUse = false;};
if !(isNull objectParent player) exitWith {titleText[localize "STR_NOTF_ActionInVehicle","PLAIN"];};
_sideRepairArray = LIFE_SETTINGS(getArray,"vehicle_infiniteRepair");
//Check if playerSide has infinite repair enabled
if (playerSide isEqualTo civilian && (_sideRepairArray select 0) isEqualTo 0) then {
[false,"toolkit",1] call life_fnc_handleInv;
};
if (playerSide isEqualTo west && (_sideRepairArray select 1) isEqualTo 0) then {
[false,"toolkit",1] call life_fnc_handleInv;
};
if (playerSide isEqualTo independent && (_sideRepairArray select 2) isEqualTo 0) then {
[false,"toolkit",1] call life_fnc_handleInv;
};
if (playerSide isEqualTo east && (_sideRepairArray select 3) isEqualTo 0) then {
[false,"toolkit",1] call life_fnc_handleInv;
};
_veh setDamage 0;
titleText[localize "STR_NOTF_RepairedVehicle","PLAIN"];
};
};

View File

@@ -0,0 +1,21 @@
#include "..\..\script_macros.hpp"
/*
File: fn_restrainAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Restrains the target.
*/
private ["_unit"];
_unit = cursorObject;
if (isNull _unit) exitWith {}; //Not valid
if (player distance _unit > 3) exitWith {};
if (_unit getVariable "restrained") exitWith {};
if (side _unit isEqualTo west) exitWith {};
if (player isEqualTo _unit) exitWith {};
if (!isPlayer _unit) exitWith {};
//Broadcast!
_unit setVariable ["restrained",true,true];
[player] remoteExec ["life_fnc_restrain",_unit];
[0,"STR_NOTF_Restrained",true,[_unit getVariable ["realname", name _unit], profileName]] remoteExecCall ["life_fnc_broadcast",west];

View File

@@ -0,0 +1,18 @@
#include "..\..\script_macros.hpp"
/*
File: fn_robAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the robbing process?
*/
private ["_target"];
_target = cursorObject;
//Error checks
if (isNull _target) exitWith {};
if (!isPlayer _target) exitWith {};
if (_target getVariable ["robbed",false]) exitWith {};
[player] remoteExecCall ["life_fnc_robPerson",_target];
_target setVariable ["robbed",true,true];

View File

@@ -0,0 +1,16 @@
/*
File: fn_searchAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the searching process.
*/
params [
["_unit",objNull,[objNull]]
];
if (isNull _unit) exitWith {};
hint localize "STR_NOTF_Searching";
sleep 2;
if (player distance _unit > 5 || !alive player || !alive _unit) exitWith {hint localize "STR_NOTF_CannotSearchPerson"};
[player] remoteExec ["life_fnc_searchClient",_unit];
life_action_inUse = true;

View File

@@ -0,0 +1,30 @@
#include "..\..\script_macros.hpp"
/*
File: fn_searchVehAction.sqf
Author:
Description:
*/
private ["_vehicle","_data"];
_vehicle = cursorObject;
if ((_vehicle isKindOf "Car") || !(_vehicle isKindOf "Air") || !(_vehicle isKindOf "Ship")) then {
_owners = _vehicle getVariable "vehicle_info_owners";
if (isNil "_owners") exitWith {hint localize "STR_NOTF_VehCheat"; deleteVehicle _vehicle;};
life_action_inUse = true;
hint localize "STR_NOTF_Searching";
sleep 3;
life_action_inUse = false;
if (player distance _vehicle > 10 || !alive player || !alive _vehicle) exitWith {hint localize "STR_NOTF_SearchVehFail";};
//_inventory = [(_vehicle getVariable "vehicle_info_inv")] call fnc_veh_inv;
//if (isNil {_inventory}) then {_inventory = "Nothing in storage."};
_owners = [_owners] call life_fnc_vehicleOwners;
if (_owners == "any<br/>") then {
_owners = "No owners, impound it<br/>";
};
hint parseText format [localize "STR_NOTF_SearchVeh",_owners];
};

View File

@@ -0,0 +1,17 @@
#include "..\..\script_macros.hpp"
/*
File: fn_seizePlayerAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the seize process..
Based off Tonic's fn_searchAction.sqf
*/
params [
["_unit",objNull,[objNull]]
];
if (isNull _unit) exitWith {};
sleep 2;
if (player distance _unit > 5 || !alive player || !alive _unit) exitWith {hint localize "STR_NOTF_CannotSeizePerson"};
[player] remoteExec ["life_fnc_seizeClient",_unit];
life_action_inUse = false;

View File

@@ -0,0 +1,50 @@
#include "..\..\script_macros.hpp"
/*
File: fn_serviceChopper.sqf
Author: Bryan "Tonic" Boardwine
Description:
Main functionality for the chopper service paid, to be replaced in later version.
*/
private ["_serviceCost"];
disableSerialization;
private ["_search","_ui","_progress","_cP","_pgText"];
if (life_action_inUse) exitWith {hint localize "STR_NOTF_Action"};
_serviceCost = LIFE_SETTINGS(getNumber,"service_chopper");
_search = nearestObjects[getPos air_sp, ["Air"],10];
if (count _search isEqualTo 0) exitWith {hint localize "STR_Service_Chopper_NoAir"};
if (CASH < _serviceCost) exitWith {hint localize "STR_Serive_Chopper_NotEnough"};
life_action_inUse = true;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format [localize "STR_Service_Chopper_Servicing","waiting..."];
_progress progressSetPosition 0.01;
_cP = 0.01;
for "_i" from 0 to 1 step 0 do {
sleep 0.2;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format [localize "STR_Service_Chopper_Servicing",round(_cP * 100)];
if (_cP >= 1) exitWith {};
};
if (!alive (_search select 0) || (_search select 0) distance air_sp > 15) exitWith {life_action_inUse = false; hint localize "STR_Service_Chopper_Missing"};
CASH = CASH - _serviceCost;
if (!local (_search select 0)) then {
[(_search select 0),1] remoteExecCall ["life_fnc_setFuel",(_search select 0)];
} else {
(_search select 0) setFuel 1;
};
(_search select 0) setDamage 0;
"progressBar" cutText ["","PLAIN"];
titleText [localize "STR_Service_Chopper_Done","PLAIN"];
life_action_inUse = false;

View File

@@ -0,0 +1,18 @@
#include "..\..\script_macros.hpp"
/*
File: fn_stopEscorting.sqf
Author: Bryan "Tonic" Boardwine
Description:
Detaches player(_unit) from the Escorter(player) and sets them back down.
*/
private ["_unit"];
_unit = player getVariable ["escortingPlayer",objNull];
if (isNull _unit) then {_unit = cursorTarget;}; //Emergency fallback.
if (isNull _unit) exitWith {}; //Target not found even after using cursorTarget.
if (!(_unit getVariable ["Escorting",false])) exitWith {}; //He's not being Escorted.
if !(side _unit isEqualTo civilian) exitWith {}; //Not a civ
detach _unit;
_unit setVariable ["Escorting",false,true];
player setVariable ["currentlyEscorting",nil];
player setVariable ["isEscorting",false];

View File

@@ -0,0 +1,41 @@
#include "..\..\script_macros.hpp"
/*
File: fn_storeVehicle.sqf
Author: Bryan "Tonic" Boardwine
Description:
Stores the vehicle in the garage.
*/
private ["_nearVehicles","_vehicle"];
if !(isNull objectParent player) then {
_vehicle = vehicle player;
} else {
_nearVehicles = nearestObjects[getPos (_this select 0),["Car","Air","Ship"],30]; //Fetch vehicles within 30m.
if (count _nearVehicles > 0) then {
{
if (!isNil "_vehicle") exitWith {}; //Kill the loop.
_vehData = _x getVariable ["vehicle_info_owners",[]];
if (count _vehData > 0) then {
_vehOwner = ((_vehData select 0) select 0);
if ((getPlayerUID player) == _vehOwner) exitWith {
_vehicle = _x;
};
};
} forEach _nearVehicles;
};
};
if (isNil "_vehicle") exitWith {hint localize "STR_Garage_NoNPC"};
if (isNull _vehicle) exitWith {};
if (!alive _vehicle) exitWith {hint localize "STR_Garage_SQLError_Destroyed"};
_storetext = localize "STR_Garage_Store_Success";
if (life_HC_isActive) then {
[_vehicle,false,(_this select 1),_storetext] remoteExec ["HC_fnc_vehicleStore",HC_Life];
} else {
[_vehicle,false,(_this select 1),_storetext] remoteExec ["TON_fnc_vehicleStore",RSERV];
};
hint localize "STR_Garage_Store_Server";
life_garage_store = true;

View File

@@ -0,0 +1,24 @@
#include "..\..\script_macros.hpp"
/*
File: fn_surrender.sqf
Author:
Description: Causes player to put their hands on their head.
*/
if ( player getVariable ["restrained",false] ) exitWith {};
if ( player getVariable ["Escorting",false] ) exitWith {};
if ( vehicle player != player ) exitWith {};
if ( speed player > 1 ) exitWith {};
if (player getVariable ["playerSurrender",false]) then {
player setVariable ["playerSurrender",false,true];
} else {
player setVariable ["playerSurrender",true,true];
};
while {player getVariable ["playerSurrender",false]} do {
player playMove "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon";
if (!alive player || !(isNull objectParent player)) then { player setVariable ["playerSurrender",false,true]; };
};
player playMoveNow "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon";

View File

@@ -0,0 +1,15 @@
/*
File: fn_ticketAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the ticketing process.
*/
params [
["_unit",objNull,[objNull]]
];
disableSerialization;
if (!(createDialog "life_ticket_give")) exitWith {hint localize "STR_Cop_TicketFail"};
if (isNull _unit || !isPlayer _unit) exitWith {};
ctrlSetText[2651,format [localize "STR_Cop_Ticket",_unit getVariable ["realname",name _unit]]];
life_ticket_unit = _unit;

View File

@@ -0,0 +1,18 @@
#include "..\..\script_macros.hpp"
/*
File: fn_unrestrain.sqf
Author:
Description:
*/
private ["_unit"];
_unit = param [0,objNull,[objNull]];
if (isNull _unit || !(_unit getVariable ["restrained",false])) exitWith {}; //Error check?
_unit setVariable ["restrained",false,true];
_unit setVariable ["Escorting",false,true];
_unit setVariable ["transporting",false,true];
detach _unit;
[0,"STR_NOTF_Unrestrain",true,[_unit getVariable ["realname",name _unit], profileName]] remoteExecCall ["life_fnc_broadcast",west];

View File

@@ -0,0 +1,29 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminCompensate.sqf
Author: ColinM9991
Description:
Figure it out.
*/
private ["_value","_action"];
if (FETCH_CONST(life_adminlevel) < 2) exitWith {closeDialog 0; hint localize "STR_ANOTF_ErrorLevel";};
_value = parseNumber(ctrlText 9922);
if (_value < 0) exitWith {};
if (_value > 999999) exitWith {hint localize "STR_ANOTF_Fail"};
_action = [
format [localize "STR_ANOTF_CompWarn",[_value] call life_fnc_numberText],
localize "STR_Admin_Compensate",
localize "STR_Global_Yes",
localize "STR_Global_No"
] call BIS_fnc_guiMessage;
if (_action) then {
CASH = CASH + _value;
hint format [localize "STR_ANOTF_Success",[_value] call life_fnc_numberText];
closeDialog 0;
} else {
hint localize "STR_NOTF_ActionCancel";
closeDialog 0;
};

View File

@@ -0,0 +1,13 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminDebugCon.sqf
Author: ColinM9991
Description:
Opens the Debug Console.
*/
if (FETCH_CONST(life_adminlevel) < 5) exitWith {closeDialog 0; hint localize "STR_NOTF_adminDebugCon";};
life_admin_debug = true;
createDialog "RscDisplayDebugPublic";
[0,format [localize "STR_NOTF_adminHasOpenedDebug",profileName]] remoteExecCall ["life_fnc_broadcast",RCLIENT];

View File

@@ -0,0 +1,16 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminFreeze.sqf
Author: ColinM9991
Description: Freezes selected player
*/
if (FETCH_CONST(life_adminlevel) < 4) exitWith {closeDialog 0; hint localize "STR_ANOTF_ErrorLevel";};
private _unit = lbData[2902,lbCurSel (2902)];
_unit = call compile format ["%1", _unit];
if (isNil "_unit") exitWith {};
if (isNull _unit) exitWith {};
if (_unit == player) exitWith {hint localize "STR_ANOTF_Error";};
[player] remoteExec ["life_fnc_freezePlayer",_unit];

View File

@@ -0,0 +1,15 @@
/*
File: fn_adminGetID.sqf
Author: Bryan "Tonic" Boardwine
Description:
Fetches the selected ID of the player.
Used by in-game admins to issue bans/kicks.
https://community.bistudio.com/wiki/Multiplayer_Server_Commands
*/
private _unit = lbData[2902,lbCurSel (2902)];
_unit = call compile format ["%1", _unit];
if (isNil "_unit") exitWith {};
if (isNull _unit) exitWith {};
[_unit,player] remoteExecCall ["TON_fnc_getID",2];

View File

@@ -0,0 +1,21 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminGodMode.sqf
Author: Tobias 'Xetoxyc' Sittenauer
Description: Enables God mode for Admin
*/
if (FETCH_CONST(life_adminlevel) < 4) exitWith {closeDialog 0; hint localize "STR_ANOTF_ErrorLevel";};
closeDialog 0;
if (life_god) then {
life_god = false;
titleText [localize "STR_ANOTF_godModeOff","PLAIN"]; titleFadeOut 2;
player allowDamage true;
} else {
life_god = true;
titleText [localize "STR_ANOTF_godModeOn","PLAIN"]; titleFadeOut 2;
player allowDamage false;
};

View File

@@ -0,0 +1,14 @@
/*
File: fn_adminID.sqf
Author: Bryan "Tonic" Boardwine
Description:
Output information received to admin menu.
*/
private ["_display","_ret","_text"];
disableSerialization;
_ret = _this select 0;
_display = findDisplay 2900;
_text = _display displayCtrl 2903;
_text ctrlSetStructuredText parseText format ["ID: %1",_ret];

View File

@@ -0,0 +1,46 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminInfo.sqf
Author: Bryan "Tonic" Boardwine
Description:
Output information received to admin menu.
*/
private ["_ret","_unit","_prim","_sec","_vest","_uni","_bp","_attach","_steamName","_secondary"];
_ret = _this;
disableSerialization;
_unit = _ret select 3;
_prim = if (!(primaryWeapon _unit isEqualTo "")) then { FETCH_CONFIG2(getText,"CfgWeapons",primaryWeapon _unit,"displayName")} else {"None"};
_sec = if (!(handgunWeapon _unit isEqualTo "")) then { FETCH_CONFIG2(getText,"CfgWeapons",handgunWeapon _unit,"displayName")} else {"None"};
_vest = if (!(vest _unit isEqualTo "")) then { FETCH_CONFIG2(getText,"CfgWeapons",vest _unit,"displayName")} else {"None"};
_uni = if (!(uniform _unit isEqualTo "")) then { FETCH_CONFIG2(getText,"CfgWeapons",uniform _unit,"displayName")} else {"None"};
_bp = if (!(backpack _unit isEqualTo "")) then {FETCH_CONFIG2(getText,"CfgVehicles",backpack _unit,"displayName")} else {"None"};
_attach = [];
_secondary = [];
if (!(primaryWeapon _unit isEqualTo "")) then {
{
if (!(_x isEqualTo "")) then {
_attach pushBack (FETCH_CONFIG2(getText,"CfgWeapons",_x,"displayName"));
};
} forEach (primaryWeaponItems _unit);
};
if (!(handgunItems _unit isEqualTo "")) then {
{
if (!(_x isEqualTo "")) then {
_secondary pushBack (FETCH_CONFIG2(getText,"CfgWeapons",_x,"displayName"));
};
} forEach (handgunItems _unit);
};
_steamName = _ret select 4;
if (!((_ret select 4) isEqualType "")) then {
_steamName = "Not a Steam User!";
};
if (count _attach isEqualTo 0) then {_attach = "None"};
if (count _secondary isEqualTo 0) then {_secondary = "None"};
CONTROL(2900,2903) ctrlSetStructuredText parseText format ["<t size='.7'>Name: %1<br/>Steam Name: %10<br/>Player UID: %11<br/>Player Side: %12<br/>Bank: %2<br/>Money: %3<br/>Uniform: %4<br/>Vest: %5<br/>Backpack: %6<br/>Primary: %7<br/>Handgun: %8<br/><t align='center'>Primary Attachments</t><br/>%9<br/><t align='center'>Secondary Attachments</t><br/>%13<br/></t>",
_unit getVariable ["realname",name _unit],[(_ret select 0)] call life_fnc_numberText,[(_ret select 1)] call life_fnc_numberText, _uni,_vest,_bp,_prim,_sec,_attach,_steamName,(_ret select 5),(_ret select 6),_secondary];

View File

@@ -0,0 +1,10 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminMarkers.sqf
Author: NiiRoZz
Description:
Display markers for all players
*/
if (FETCH_CONST(life_adminlevel) < 4) exitWith {closeDialog 0; hint localize "STR_ANOTF_ErrorLevel";};
[] spawn TON_fnc_MapMarkersAdmin;

View File

@@ -0,0 +1,43 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminMenu.sqf
Author: Bryan "Tonic" Boardwine
Description:
Opens the admin menu and hides buttons based on life_adminlevel.
*/
private ["_display","_list","_side","_godmode","_markers"];
if (FETCH_CONST(life_adminlevel) < 1) exitWith {closeDialog 0;};
disableSerialization;
waitUntil {!isNull (findDisplay 2900)};
_list = CONTROL(2900,2902);
if (FETCH_CONST(life_adminlevel) < 1) exitWith {closeDialog 0;};
switch (FETCH_CONST(life_adminlevel)) do
{
case 1: {ctrlShow [2904,false];ctrlShow [2905,false];ctrlShow [2906,false];ctrlShow [2907,false];ctrlShow [2908,false];ctrlShow [2909,false];ctrlShow [2910,false];ctrlShow [2911,false];};
case 2: {ctrlShow [2905,false];ctrlShow [2906,false];ctrlShow [2907,false];ctrlShow [2908,false];ctrlShow [2909,false];ctrlShow [2910,false];ctrlShow [2911,false];};
case 3: {ctrlShow [2907,false];ctrlShow [2908,false];ctrlShow [2909,false];ctrlShow [2910,false];ctrlShow [2911,false];};
case 4: {ctrlShow [2911,false];};
};
//Purge List
lbClear _list;
{
_side = switch (side _x) do {case west: {"Cop"}; case civilian: {"Civ"}; case independent: {"Medic"}; default {"Unknown"};};
_list lbAdd format ["%1 - %2", _x getVariable ["realname",name _x],_side];
_list lbSetdata [(lbSize _list)-1,str(_x)];
} forEach playableUnits;
if (FETCH_CONST(life_adminlevel) < 1) exitWith {closeDialog 0;};
if (life_god) then {
_godmode = CONTROL(2900,2908);
_godmode ctrlSetTextColor [0, 255, 0, 1]; // green
};
if (life_markers) then {
_markers = CONTROL(2900,2910);
_markers ctrlSetTextColor [0, 255, 0, 1]; // green
};

View File

@@ -0,0 +1,19 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminQuery.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the query on a player.
*/
private ["_text","_info","_prim","_sec","_vest","_uni","_bp","_attach","_tmp"];
disableSerialization;
if (!isNil "admin_query_ip") exitWith {hint localize "STR_ANOTF_Query_2"};
_text = CONTROL(2900,2903);
_info = lbData[2902,lbCurSel (2902)];
_info = call compile format ["%1", _info];
if (isNil "_info") exitWith {_text ctrlSetText localize "STR_ANOTF_QueryFail";};
if (isNull _info) exitWith {_text ctrlSetText localize "STR_ANOTF_QueryFail";};
[player] remoteExec ["TON_fnc_player_query",_info];
_text ctrlSetText localize "STR_ANOTF_Query";

View File

@@ -0,0 +1,21 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminSpectate.sqf
Author: ColinM9991
Description:
Spectate the chosen player.
*/
if (FETCH_CONST(life_adminlevel) < 3) exitWith {closeDialog 0;};
private _unit = lbData[2902,lbCurSel (2902)];
_unit = call compile format ["%1", _unit];
if (isNil "_unit") exitWith {};
if (isNull _unit) exitWith {};
if (_unit == player) exitWith {hint localize "STR_ANOTF_Error";};
closeDialog 0;
_unit switchCamera "INTERNAL";
hint format [localize "STR_NOTF_nowSpectating",_unit getVariable ["realname",name _unit]];
AM_Exit = (findDisplay 46) displayAddEventHandler ["KeyDown","if ((_this select 1) == 68) then {(findDisplay 46) displayRemoveEventHandler ['KeyDown',AM_Exit];player switchCamera 'INTERNAL';hint 'You have stopped spectating';};false"];

View File

@@ -0,0 +1,14 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminTeleport.sqf
Author: ColinM9991
Credits: To original script author(s)
Description:
Teleport to chosen position.
*/
if (FETCH_CONST(life_adminlevel) < 3) exitWith {closeDialog 0;};
closeDialog 0;
openMap [true, false];
onMapSingleClick "[_pos select 0, _pos select 1, _pos select 2] call life_fnc_teleport";

View File

@@ -0,0 +1,18 @@
#include "..\..\script_macros.hpp"
/*
File: fn_adminTpHere.sqf
Author: ColinM9991
Description:
Teleport selected player to you.
*/
if (FETCH_CONST(life_adminlevel) < 4) exitWith {closeDialog 0;};
private _target = lbData[2902,lbCurSel (2902)];
_target = call compile format ["%1", _target];
if (isNil "_target" || isNull _target) exitWith {};
if (_target == player) exitWith {hint localize "STR_ANOTF_Error";};
if (!(vehicle _target isEqualTo _target)) exitWith {hint localize "STR_Admin_CannotTpHere"};
_target setPos (getPos player);
hint format [localize "STR_NOTF_haveTPedToYou",_target getVariable ["realname",name _target]];

View File

@@ -0,0 +1,21 @@
/*
File: fn_civLoadout.sqf
Author: Tobias 'Xetoxyc' Sittenauer
Description:
Loads the civs out with the default gear, with randomized clothing.
*/
private ["_handle"];
_handle = [] spawn life_fnc_stripDownPlayer;
waitUntil {scriptDone _handle};
_clothings = ["U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour","U_C_Poloshirt_salmon","U_C_Poloshirt_redwhite","U_C_Commoner1_1"];
player addUniform (selectRandom _clothings);
/* ITEMS */
player linkItem "ItemMap";
player linkItem "ItemCompass";
player linkItem "ItemWatch";
[] call life_fnc_playerSkins;
[] call life_fnc_saveGear;

View File

@@ -0,0 +1,44 @@
/*
File: fn_civMarkers.sqf
Author:
Description:
Add markers for civilians in groups.
*/
private ["_markers","_members"];
_markers = [];
_members = [];
for "_i" from 0 to 1 step 0 do {
sleep 0.5;
if (visibleMap) then
{
_members = units (group player);
{
if !(_x isEqualTo player) then {
_marker = createMarkerLocal [format ["%1_marker",_x],visiblePosition _x];
_marker setMarkerColorLocal "ColorCivilian";
_marker setMarkerTypeLocal "Mil_dot";
_marker setMarkerTextLocal format ["%1", _x getVariable ["realname",name _x]];
_markers pushBack [_marker,_x];
};
} forEach _members;
while {visibleMap} do
{
{
private ["_unit"];
_unit = _x select 1;
if (!isNil "_unit" && !isNull _unit) then {
(_x select 0) setMarkerPosLocal (visiblePosition _unit);
};
} forEach _markers;
if (!visibleMap) exitWith {};
sleep 0.02;
};
{deleteMarkerLocal (_x select 0);} forEach _markers;
_markers = [];
_members = [];
};
};

View File

@@ -0,0 +1,27 @@
#include "..\..\script_macros.hpp"
/*
File: fn_demoChargeTimer.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the "Demo" timer for the police.
*/
private ["_uiDisp","_time","_timer"];
disableSerialization;
"lifeTimer" cutRsc ["life_timer","PLAIN"];
_uiDisp = uiNamespace getVariable "life_timer";
_timer = _uiDisp displayCtrl 38301;
_time = time + (5 * 60);
for "_i" from 0 to 1 step 0 do {
if (isNull _uiDisp) then {
"lifeTimer" cutRsc ["life_timer","PLAIN"];
_uiDisp = uiNamespace getVariable "life_timer";
_timer = _uiDisp displayCtrl 38301;
};
if (round(_time - time) < 1) exitWith {};
if (!(fed_bank getVariable ["chargeplaced",false])) exitWith {};
_timer ctrlSetText format ["%1",[(_time - time),"MM:SS.MS"] call BIS_fnc_secondsToString];
sleep 0.08;
};
"lifeTimer" cutText["","PLAIN"];

View File

@@ -0,0 +1,22 @@
#include "..\..\script_macros.hpp"
/*
File: fn_freezePlayer.sqf
Author: ColinM9991
Description:
Freezes selected player.
*/
private ["_admin"];
_admin = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (life_frozen) then {
hint localize "STR_NOTF_Unfrozen";
[1,format [localize "STR_ANOTF_Unfrozen",profileName]] remoteExecCall ["life_fnc_broadcast",_admin];
disableUserInput false;
life_frozen = false;
} else {
hint localize "STR_NOTF_Frozen";
[1,format [localize "STR_ANOTF_Frozen",profileName]] remoteExecCall ["life_fnc_broadcast",_admin];
disableUserInput true;
life_frozen = true;
};

View File

@@ -0,0 +1,62 @@
#include "..\..\script_macros.hpp"
/*
File: fn_jail.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the initial process of jailing.
*/
private ["_illegalItems"];
params [
["_unit",objNull,[objNull]],
["_bad",false,[false]]
];
if (isNull _unit) exitWith {}; //Dafuq?
if !(_unit isEqualTo player) exitWith {}; //Dafuq?
if (life_is_arrested) exitWith {}; //Dafuq i'm already arrested
_illegalItems = LIFE_SETTINGS(getArray,"jail_seize_vItems");
player setVariable ["restrained",false,true];
player setVariable ["Escorting",false,true];
player setVariable ["transporting",false,true];
titleText[localize "STR_Jail_Warn","PLAIN"];
hint localize "STR_Jail_LicenseNOTF";
player setPos (getMarkerPos "jail_marker");
if (_bad) then {
waitUntil {alive player};
sleep 1;
};
//Check to make sure they goto check
if (player distance (getMarkerPos "jail_marker") > 40) then {
player setPos (getMarkerPos "jail_marker");
};
[1] call life_fnc_removeLicenses;
{
_amount = ITEM_VALUE(_x);
if (_amount > 0) then {
[false,_x,_amount] call life_fnc_handleInv;
};
} forEach _illegalItems;
life_is_arrested = true;
if (LIFE_SETTINGS(getNumber,"jail_seize_inventory") isEqualTo 1) then {
[] spawn life_fnc_seizeClient;
} else {
removeAllWeapons player;
{player removeMagazine _x} forEach (magazines player);
};
if (life_HC_isActive) then {
[player,_bad] remoteExecCall ["HC_fnc_jailSys",HC_Life];
} else {
[player,_bad] remoteExecCall ["life_fnc_jailSys",RSERV];
};
[5] call SOCK_fnc_updatePartial;

View File

@@ -0,0 +1,105 @@
#include "..\..\script_macros.hpp"
/*
File: fn_jailMe.sqf
Author Bryan "Tonic" Boardwine
Description:
Once word is received by the server the rest of the jail execution is completed.
*/
private ["_time","_bail","_esc","_countDown"];
params [
["_ret",[],[[]]],
["_bad",false,[false]]
];
if (_bad) then { _time = time + 1100; } else { _time = time + (15 * 60); };
if (count _ret > 0) then { life_bail_amount = (_ret select 2); } else { life_bail_amount = 1500; _time = time + (10 * 60); };
_esc = false;
_bail = false;
[_bad] spawn {
life_canpay_bail = false;
if (_this select 0) then {
sleep (10 * 60);
} else {
sleep (5 * 60);
};
life_canpay_bail = true;
};
for "_i" from 0 to 1 step 0 do {
if ((round(_time - time)) > 0) then {
_countDown = [(_time - time),"MM:SS.MS"] call BIS_fnc_secondsToString;
hintSilent parseText format [(localize "STR_Jail_Time")+ "<br/> <t size='2'><t color='#FF0000'>%1</t></t><br/><br/>" +(localize "STR_Jail_Pay")+ " %3<br/>" +(localize "STR_Jail_Price")+ " $%2",_countDown,[life_bail_amount] call life_fnc_numberText,if (life_canpay_bail) then {"Yes"} else {"No"}];
};
if (LIFE_SETTINGS(getNumber,"jail_forceWalk") isEqualTo 1) then {
player forceWalk true;
};
private _escDist = [[["Altis", 60], ["Tanoa", 145]]] call TON_fnc_terrainSort;
if (player distance (getMarkerPos "jail_marker") > _escDist) exitWith {
_esc = true;
};
if (life_bail_paid) exitWith {
_bail = true;
};
if ((round(_time - time)) < 1) exitWith {hint ""};
if (!alive player && ((round(_time - time)) > 0)) exitWith {};
sleep 0.1;
};
switch (true) do {
case (_bail): {
life_is_arrested = false;
life_bail_paid = false;
hint localize "STR_Jail_Paid";
player setPos (getMarkerPos "jail_release");
if (life_HC_isActive) then {
[getPlayerUID player] remoteExecCall ["HC_fnc_wantedRemove",HC_Life];
} else {
[getPlayerUID player] remoteExecCall ["life_fnc_wantedRemove",RSERV];
};
[5] call SOCK_fnc_updatePartial;
};
case (_esc): {
life_is_arrested = false;
hint localize "STR_Jail_EscapeSelf";
[0,"STR_Jail_EscapeNOTF",true,[profileName]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
if (life_HC_isActive) then {
[getPlayerUID player,profileName,"901"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
} else {
[getPlayerUID player,profileName,"901"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
};
[5] call SOCK_fnc_updatePartial;
};
case (alive player && !_esc && !_bail): {
life_is_arrested = false;
hint localize "STR_Jail_Released";
if (life_HC_isActive) then {
[getPlayerUID player] remoteExecCall ["HC_fnc_wantedRemove",HC_Life];
} else {
[getPlayerUID player] remoteExecCall ["life_fnc_wantedRemove",RSERV];
};
player setPos (getMarkerPos "jail_release");
[5] call SOCK_fnc_updatePartial;
};
};
player forceWalk false; // Enable running & jumping

View File

@@ -0,0 +1,34 @@
#include "..\..\script_macros.hpp"
/*
File: fn_knockedOut.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts and monitors the knocked out state.
*/
private "_obj";
params [
["_target",objNull,[objNull]],
["_who","",[""]]
];
if (isNull _target) exitWith {};
if !(_target isEqualTo player) exitWith {};
if (_who isEqualTo "") exitWith {};
titleText[format [localize "STR_Civ_KnockedOut",_who],"PLAIN"];
player playMoveNow "Incapacitated";
disableUserInput true;
_obj = "Land_ClutterCutter_small_F" createVehicle ASLTOATL(visiblePositionASL player);
_obj setPosATL ASLTOATL(visiblePositionASL player);
life_isknocked = true;
player attachTo [_obj,[0,0,0]];
sleep 15;
player playMoveNow "AmovPpneMstpSrasWrflDnon";
disableUserInput false;
detach player;
deleteVehicle _obj;
life_isknocked = false;
player setVariable ["robbed",false,true];

View File

@@ -0,0 +1,22 @@
#include "..\..\script_macros.hpp"
/*
File: fn_knockoutAction.sqf
Author: Bryan "Tonic" Boardwine
Description:
Knocks out the target.
*/
private "_target";
_target = param [0,objNull,[objNull]];
//Error checks
if (isNull _target) exitWith {};
if (!isPlayer _target) exitWith {};
if (player distance _target > 4) exitWith {};
life_knockout = true;
[player,"AwopPercMstpSgthWrflDnon_End2"] remoteExecCall ["life_fnc_animSync",RCLIENT];
sleep 0.08;
[_target,profileName] remoteExec ["life_fnc_knockedOut",_target];
sleep 3;
life_knockout = false;

View File

@@ -0,0 +1,47 @@
#include "..\..\script_macros.hpp"
/*
File: fn_removeLicenses.sqf
Author: Bryan "Tonic" Boardwine
Description:
Used for stripping certain licenses off of civilians as punishment.
*/
private "_state";
_state = param [0,1,[0]];
switch (_state) do {
//Death while being wanted
case 0: {
missionNamespace setVariable [LICENSE_VARNAME("rebel","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("driver","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("heroin","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("marijuana","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("cocaine","civ"),false];
};
//Jail licenses
case 1: {
missionNamespace setVariable [LICENSE_VARNAME("gun","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("driver","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("rebel","civ"),false];
};
//Remove motor vehicle licenses
case 2: {
if (missionNamespace getVariable LICENSE_VARNAME("driver","civ") || missionNamespace getVariable LICENSE_VARNAME("pilot","civ") || missionNamespace getVariable LICENSE_VARNAME("trucking","civ") || missionNamespace getVariable LICENSE_VARNAME("boat","civ")) then {
missionNamespace setVariable [LICENSE_VARNAME("pilot","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("driver","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("trucking","civ"),false];
missionNamespace setVariable [LICENSE_VARNAME("boat","civ"),false];
hint localize "STR_Civ_LicenseRemove_1";
};
};
//Killing someone while owning a gun license
case 3: {
if (missionNamespace getVariable LICENSE_VARNAME("gun","civ")) then {
missionNamespace setVariable [LICENSE_VARNAME("gun","civ"),false];
hint localize "STR_Civ_LicenseRemove_2";
};
};
};

View File

@@ -0,0 +1,28 @@
#include "..\..\script_macros.hpp"
/*
File: fn_robPerson.sqf
Author: Bryan "Tonic" Boardwine
Description:
Robs a person.
*/
params [
["_robber",objNull,[objNull]]
];
if (isNull _robber) exitWith {}; //No one to return it to?
if (CASH > 0) then {
[CASH,player,_robber] remoteExecCall ["life_fnc_robReceive",_robber];
if (life_HC_isActive) then {
[getPlayerUID _robber,_robber getVariable ["realname",name _robber],"211"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
} else {
[getPlayerUID _robber,_robber getVariable ["realname",name _robber],"211"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
};
[1,"STR_NOTF_Robbed",true,[_robber getVariable ["realname",name _robber],profileName,[CASH] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
CASH = 0;
[0] call SOCK_fnc_updatePartial;
} else {
[2,"STR_NOTF_RobFail",true,[profileName]] remoteExecCall ["life_fnc_broadcast",_robber];
};

View File

@@ -0,0 +1,29 @@
#include "..\..\script_macros.hpp"
/*
File: fn_robReceive.sqf
Author: Bryan "Tonic" Boardwine
Description:
*/
params [
["_cash",0,[0]],
["_victim",objNull,[objNull]],
["_robber",objNull,[objNull]]
];
if (_robber == _victim) exitWith {};
if (_cash isEqualTo 0) exitWith {titleText[localize "STR_Civ_RobFail","PLAIN"]};
CASH = CASH + _cash;
[0] call SOCK_fnc_updatePartial;
titleText[format [localize "STR_Civ_Robbed",[_cash] call life_fnc_numberText],"PLAIN"];
if (LIFE_SETTINGS(getNumber,"player_moneyLog") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
money_log = format [localize "STR_DL_ML_Robbed_BEF",[_cash] call life_fnc_numberText,_victim,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText];
} else {
money_log = format [localize "STR_DL_ML_Robbed",profileName,(getPlayerUID player),[_cash] call life_fnc_numberText,_victim,[BANK] call life_fnc_numberText,[CASH] call life_fnc_numberText];
};
publicVariableServer "money_log";
};

View File

@@ -0,0 +1,58 @@
#include "..\..\script_macros.hpp"
/*
File: fn_tazed.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the tazed animation and broadcasts out what it needs to.
*/
private ["_curWep","_curMags","_attach"];
params [
["_unit",objNull,[objNull]],
["_shooter",objNull,[objNull]]
];
if (isNull _unit || isNull _shooter) exitWith {player allowDamage true; life_istazed = false;};
if (_shooter isKindOf "Man" && alive player) then {
if (!life_istazed) then {
life_istazed = true;
_curWep = currentWeapon player;
_curMags = magazines player;
_attach = if (!(primaryWeapon player isEqualTo "")) then {primaryWeaponItems player} else {[]};
{player removeMagazine _x} forEach _curMags;
player removeWeapon _curWep;
player addWeapon _curWep;
if (!(count _attach isEqualTo 0) && !(primaryWeapon player isEqualTo "")) then {
{
_unit addPrimaryWeaponItem _x;
} forEach _attach;
};
if (!(count _curMags isEqualTo 0)) then {
{player addMagazine _x;} forEach _curMags;
};
[_unit] remoteExecCall ["life_fnc_tazeSound",RCLIENT];
_obj = "Land_ClutterCutter_small_F" createVehicle ASLTOATL(visiblePositionASL player);
_obj setPosATL ASLTOATL(visiblePositionASL player);
[player,"AinjPfalMstpSnonWnonDf_carried_fallwc"] remoteExecCall ["life_fnc_animSync",RCLIENT];
[0,"STR_NOTF_Tazed",true,[profileName, _shooter getVariable ["realname",name _shooter]]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
_unit attachTo [_obj,[0,0,0]];
disableUserInput true;
sleep 15;
[player,"AmovPpneMstpSrasWrflDnon"] remoteExecCall ["life_fnc_animSync",RCLIENT];
if (!(player getVariable ["Escorting",false])) then {
detach player;
};
life_istazed = false;
player allowDamage true;
disableUserInput false;
};
} else {
_unit allowDamage true;
life_iztazed = false;
};

View File

@@ -0,0 +1,25 @@
#include "..\script_macros.hpp"
/*
File: clientValidator.sqf
Author:
Description:
Loops through a list of variables and checks whether
or not they are defined, if they are defined then trigger
spyglass and kick the client to the lobby.
*/
private ["_vars"];
_vars = [
"life_revive_fee","life_gangPrice","life_gangUpgradeBase","life_enableFatigue","life_paycheck_period","life_vShop_rentalOnly","sell_array","buy_array",
"life_weapon_shop_array","life_garage_prices","life_garage_sell","life_houseLimit","life_gangUpgradeMultipler","life_impound_car","life_impound_boat",
"life_impound_air"
];
{
if (!isNil {(missionNamespace getVariable _x)}) exitWith {
[profileName,getPlayerUID player,format ["VariableSetBeforeInitialized_%1",_x]] remoteExecCall ["SPY_fnc_cookieJar",RSERV];
[profileName,format ["Variable set before client initialized: %1",_x]] remoteExecCall ["SPY_fnc_notifyAdmins",RCLIENT];
sleep 0.5;
failMission "SpyGlass";
};
} forEach _vars;

View File

@@ -0,0 +1,25 @@
/*
File: fn_houseConfig.sqf
Author: BoGuu
Description:
Fetch data from Config_Housing/Garages
*/
private _house = param [0,"",[""]];
if (_house isEqualTo "") exitWith {[]};
private _houseConfig = missionConfigFile >> "Housing" >> worldName >> _house;
private _garageConfig = missionConfigFile >> "Garages" >> worldName >> _house;
private _config = [_garageConfig,_houseConfig] select {isClass _x};
if (_config isEqualTo []) exitWith {[]};
_config = _config select 0;
private _price = getNumber(_config >> "price");
private _numberCrates = if (_houseConfig isEqualTo _config) then {getNumber(_houseConfig >> "numberCrates")} else {0};
//Return
[_price,_numberCrates]

View File

@@ -0,0 +1,13 @@
#include "..\..\script_macros.hpp"
/*
File: fn_itemWeight.sqf
Author: Bryan "Tonic" Boardwine
Description:
Gets the items weight and returns it.
*/
private ["_item"];
_item = [_this,0,"",[""]] call BIS_fnc_param;
if (_item isEqualTo "") exitWith {};
M_CONFIG(getNumber,"VirtualItems",_item,"weight");

View File

@@ -0,0 +1,62 @@
/*
File: fn_vehicleAnimate.sqf
Author: Bryan "Tonic" Boardwine
Description:
Pass what you want to be animated.
*/
private ["_vehicle","_animate","_state"];
_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (isNull _vehicle) exitWith {}; //FUCK
_animate = [_this,1,"",["",[]]] call BIS_fnc_param;
_preset = [_this,2,false,[false]] call BIS_fnc_param;
if (!_preset) then
{
if (count _animate > 1) then
{
{
_vehicle animate[_x select 0,_x select 1];
} forEach _animate;
}
else
{
_vehicle animate[_animate select 0,_animate select 1];
};
}
else
{
switch (_animate) do
{
case "civ_littlebird":
{
_vehicle animate ["addDoors",1];
_vehicle animate ["addBenches",0];
_vehicle animate ["addTread",0];
_vehicle animate ["AddCivilian_hide",1];
_vehicle lockCargo [2,true];
_vehicle lockCargo [3,true];
_vehicle lockCargo [4,true];
_vehicle lockCargo [5,true];
};
case "service_truck":
{
_vehicle animate ["HideServices", 0];
_vehicle animate ["HideDoor3", 1];
};
case "med_offroad":
{
_vehicle animate ["HidePolice", 0];
_vehicle setVariable ["lights",false,true];
};
case "cop_offroad":
{
_vehicle animate ["HidePolice", 0];
_vehicle animate ["HideBumper1", 0];
_vehicle setVariable ["lights",false,true];
};
};
};

View File

@@ -0,0 +1,19 @@
#include "..\..\script_macros.hpp"
/*
File: fn_vehicleWeightCfg.sqf
Author: Bryan "Tonic" Boardwine
Description:
Master configuration for vehicle weight.
*/
private ["_className","_classNameLife","_weight"];
_className = [_this,0,"",[""]] call BIS_fnc_param;
_classNameLife = _className;
if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _classNameLife)) then {
_classNameLife = "Default"; //Use Default class if it doesn't exist
diag_log format ["%1: LifeCfgVehicles class doesn't exist",_className];
};
_weight = M_CONFIG(getNumber,"LifeCfgVehicles",_classNameLife,"vItemSpace");
if (isNil "_weight") then {_weight = -1;};
_weight;

View File

@@ -0,0 +1,103 @@
#include "..\script_macros.hpp"
/*
File: configuration.sqf
Author:
Description:
Master Life Configuration File
This file is to setup variables for the client, there are still other configuration files in the system
*****************************
****** Backend Variables *****
*****************************
*/
life_query_time = time;
life_action_delay = time;
life_trunk_vehicle = objNull;
life_session_completed = false;
life_garage_store = false;
life_session_tries = 0;
life_net_dropped = false;
life_siren_active = false;
life_clothing_filter = 0;
life_clothing_uniform = -1;
life_redgull_effect = time;
life_is_processing = false;
life_bail_paid = false;
life_impound_inuse = false;
life_action_inUse = false;
life_spikestrip = objNull;
life_knockout = false;
life_interrupted = false;
life_respawned = false;
life_removeWanted = false;
life_action_gathering = false;
tawvd_addon_disable = true;
life_god = false;
life_frozen = false;
life_save_gear = [];
life_container_activeObj = objNull;
life_disable_getIn = false;
life_disable_getOut = false;
life_admin_debug = false;
life_preview_3D_vehicle_cam = objNull;
life_preview_3D_vehicle_object = objNull;
life_preview_light = objNull;
life_pos_exist = false;
life_pos_attach = [];
life_civ_position = [];
life_markers = false;
life_canpay_bail = true;
//Settings
life_settings_enableNewsBroadcast = profileNamespace getVariable ["life_enableNewsBroadcast",true];
life_settings_enableSidechannel = profileNamespace getVariable ["life_enableSidechannel",true];
life_settings_tagson = profileNamespace getVariable ["life_settings_tagson",true];
life_settings_revealObjects = profileNamespace getVariable ["life_settings_revealObjects",true];
life_settings_viewDistanceFoot = profileNamespace getVariable ["life_viewDistanceFoot",1250];
life_settings_viewDistanceCar = profileNamespace getVariable ["life_viewDistanceCar",1250];
life_settings_viewDistanceAir = profileNamespace getVariable ["life_viewDistanceAir",1250];
//Uniform price (0),Hat Price (1),Glasses Price (2),Vest Price (3),Backpack Price (4)
life_clothing_purchase = [-1,-1,-1,-1,-1];
/*
*****************************
****** Weight Variables *****
*****************************
*/
life_maxWeight = LIFE_SETTINGS(getNumber,"total_maxWeight");
life_carryWeight = 0; //Represents the players current inventory weight (MUST START AT 0).
/*
*****************************
****** Life Variables *******
*****************************
*/
life_net_dropped = false;
life_use_atm = true;
life_is_arrested = false;
life_is_alive = false;
life_delivery_in_progress = false;
life_thirst = 100;
life_hunger = 100;
CASH = 0;
life_istazed = false;
life_isknocked = false;
life_vehicles = [];
/*
Master Array of items?
*/
//Setup variable inv vars.
{
missionNamespace setVariable [ITEM_VARNAME(configName _x),0];
} forEach ("true" configClasses (missionConfigFile >> "VirtualItems"));
/* Setup the BLAH! */
{
_varName = getText(_x >> "variable");
_sideFlag = getText(_x >> "side");
missionNamespace setVariable [LICENSE_VARNAME(_varName,_sideFlag),false];
} forEach ("true" configClasses (missionConfigFile >> "Licenses"));

View File

@@ -0,0 +1,20 @@
#include "..\..\script_macros.hpp"
/*
File: fn_bountyReceive.sqf
Author: Bryan "Tonic" Boardwine
Description:
Notifies the player he has received a bounty and gives him the cash.
*/
private ["_val","_total"];
_val = [_this,0,"",["",0]] call BIS_fnc_param;
_total = [_this,1,"",["",0]] call BIS_fnc_param;
if (_val == _total) then {
titleText[format [localize "STR_Cop_BountyRecieve",[_val] call life_fnc_numberText],"PLAIN"];
} else {
titleText[format [localize "STR_Cop_BountyKill",[_val] call life_fnc_numberText,[_total] call life_fnc_numberText],"PLAIN"];
};
BANK = BANK + _val;
[1] call SOCK_fnc_updatePartial;

View File

@@ -0,0 +1,42 @@
#include "..\..\script_macros.hpp"
/*
File: fn_containerInvSearch.sqf
Author: NiiRoZz
Inspired : Bryan "Tonic" Boardwine
Description:
Searches the container for illegal items.
*/
private ["_container","_containerInfo","_value"];
_container = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (isNull _container) exitWith {};
_containerInfo = _container getVariable ["Trunk",[]];
if (count _containerInfo isEqualTo 0) exitWith {hint localize "STR_Cop_ContainerEmpty"};
_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 (_containerInfo select 0);
_value = _illegalValue;
if (_value > 0) then {
[0,"STR_NOTF_ContainerContraband",true,[[_value] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
BANK = BANK + _value;
[1] call SOCK_fnc_updatePartial;
_container setVariable ["Trunk",[[],0],true];
[_container] remoteExecCall ["TON_fnc_updateHouseTrunk",2];
} else {
hint localize "STR_Cop_NoIllegalContainer";
};

View File

@@ -0,0 +1,90 @@
#include "..\..\script_macros.hpp"
/*
File: fn_copInteractionMenu.sqf
Author: Bryan "Tonic" Boardwine
Description:
Replaces the mass addactions for various cop actions towards another player.
*/
#define Btn1 37450
#define Btn2 37451
#define Btn3 37452
#define Btn4 37453
#define Btn5 37454
#define Btn6 37455
#define Btn7 37456
#define Btn8 37457
#define Title 37401
private ["_display","_curTarget","_seizeRank","_Btn1","_Btn2","_Btn3","_Btn4","_Btn5","_Btn6","_Btn7","_Btn8"];
disableSerialization;
_curTarget = param [0,objNull,[objNull]];
_seizeRank = LIFE_SETTINGS(getNumber,"seize_minimum_rank");
if (player getVariable ["Escorting", false]) then {
if (isNull _curTarget) exitWith {closeDialog 0;}; //Bad target
if (!isPlayer _curTarget && side _curTarget isEqualTo civilian) exitWith {closeDialog 0;}; //Bad side check?
if (player distance _curTarget > 4 ) exitWith {closeDialog 0;}; // Prevents menu accessing from far distances.
};
if (!dialog) then {
createDialog "pInteraction_Menu";
};
_display = findDisplay 37400;
_Btn1 = _display displayCtrl Btn1;
_Btn2 = _display displayCtrl Btn2;
_Btn3 = _display displayCtrl Btn3;
_Btn4 = _display displayCtrl Btn4;
_Btn5 = _display displayCtrl Btn5;
_Btn6 = _display displayCtrl Btn6;
_Btn7 = _display displayCtrl Btn7;
_Btn8 = _display displayCtrl Btn8;
life_pInact_curTarget = _curTarget;
if (player getVariable ["isEscorting",false]) then {
{ _x ctrlShow false; } forEach [_Btn1,_Btn2,_Btn3,_Btn5,_Btn6,_Btn7,_Btn8];
};
//Set Unrestrain Button
_Btn1 ctrlSetText localize "STR_pInAct_Unrestrain";
_Btn1 buttonSetAction "[life_pInact_curTarget] call life_fnc_unrestrain; closeDialog 0;";
//Set Check Licenses Button
_Btn2 ctrlSetText localize "STR_pInAct_checkLicenses";
_Btn2 buttonSetAction "[player] remoteExecCall [""life_fnc_licenseCheck"",life_pInact_curTarget]; closeDialog 0;";
//Set Search Button
_Btn3 ctrlSetText localize "STR_pInAct_SearchPlayer";
_Btn3 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_searchAction; closeDialog 0;";
//Set Escort Button
if (player getVariable ["isEscorting",false]) then {
_Btn4 ctrlSetText localize "STR_pInAct_StopEscort";
_Btn4 buttonSetAction "[] call life_fnc_stopEscorting; closeDialog 0;";
} else {
_Btn4 ctrlSetText localize "STR_pInAct_Escort";
_Btn4 buttonSetAction "[life_pInact_curTarget] call life_fnc_escortAction; closeDialog 0;";
};
//Set Ticket Button
_Btn5 ctrlSetText localize "STR_pInAct_TicketBtn";
_Btn5 buttonSetAction "[life_pInact_curTarget] call life_fnc_ticketAction;";
_Btn6 ctrlSetText localize "STR_pInAct_Arrest";
_Btn6 buttonSetAction "[life_pInact_curTarget] call life_fnc_arrestAction; closeDialog 0;";
_Btn6 ctrlEnable false;
_Btn7 ctrlSetText localize "STR_pInAct_PutInCar";
_Btn7 buttonSetAction "[life_pInact_curTarget] call life_fnc_putInCar; closeDialog 0;";
//SeizeWeapons Button
_Btn8 ctrlSetText localize "STR_pInAct_Seize";
_Btn8 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_seizePlayerAction; closeDialog 0;";
if (FETCH_CONST(life_coplevel) < _seizeRank) then {_Btn8 ctrlEnable false;};
{
if ((player distance (getMarkerPos _x) <30)) exitWith { _Btn6 ctrlEnable true;};
} forEach LIFE_SETTINGS(getArray,"sendtoJail_locations");

View File

@@ -0,0 +1,131 @@
/*
File: fn_copLights.sqf
Author: mindstorm, modified by Adanteh
Link: http://forums.bistudio.com/showthread.php?157474-Offroad-Police-sirens-lights-and-underglow
Description:
Adds the light effect to cop vehicles, specifically the offroad.
*/
Private ["_vehicle","_lightRed","_lightBlue","_lightleft","_lightright","_leftRed"];
_vehicle = _this select 0;
if (isNil "_vehicle" || isNull _vehicle || !(_vehicle getVariable "lights")) exitWith {};
_lightRed = [20, 0.1, 0.1];
_lightBlue = [0.1, 0.1, 20];
_lightleft = "#lightpoint" createVehicle getPos _vehicle;
sleep 0.2;
_lightleft setLightColor _lightRed;
_lightleft setLightBrightness 0.2;
_lightleft setLightAmbient [0.1,0.1,1];
switch (typeOf _vehicle) do
{
case "C_Offroad_01_F":
{
_lightleft lightAttachObject [_vehicle, [-0.37, 0.0, 0.56]];
};
case "B_MRAP_01_F":
{
_lightleft lightAttachObject [_vehicle, [-0.37, -1.9, 0.7]];
};
case "C_SUV_01_F":
{
_lightleft lightAttachObject [_vehicle, [-0.37,-1.2,0.42]];
};
case "C_Hatchback_01_sport_F":
{
_lightleft lightAttachObject [_vehicle, [-0.35,-0.2,0.25]];
};
case "B_Heli_Light_01_F":
{
_lightleft lightAttachObject [_vehicle,[-0.37, 0.0, -0.80]];
};
case "B_Heli_Transport_01_F":
{
_lightleft lightAttachObject [_vehicle, [-0.5, 0.0, 0.81]];
};
};
_lightleft setLightAttenuation [0.181, 0, 1000, 130];
_lightleft setLightIntensity 10;
_lightleft setLightFlareSize 0.38;
_lightleft setLightFlareMaxDistance 150;
_lightleft setLightUseFlare true;
_lightright = "#lightpoint" createVehicle getPos _vehicle;
sleep 0.2;
_lightright setLightColor _lightBlue;
_lightright setLightBrightness 0.2;
_lightright setLightAmbient [0.1,0.1,1];
switch (typeOf _vehicle) do
{
case "C_Offroad_01_F":
{
_lightright lightAttachObject [_vehicle, [0.37, 0.0, 0.56]];
};
case "B_MRAP_01_F":
{
_lightright lightAttachObject [_vehicle, [0.37, -1.9, 0.7]];
};
case "C_SUV_01_F":
{
_lightright lightAttachObject [_vehicle, [0.37,-1.2,0.42]];
};
case "C_Hatchback_01_sport_F":
{
_lightright lightAttachObject [_vehicle, [0.35,-0.2,0.25]];
};
case "B_Heli_Light_01_F":
{
_lightright lightAttachObject [_vehicle,[0.37, 0.0, -0.80]];
};
case "B_Heli_Transport_01_F":
{
_lightright lightAttachObject [_vehicle, [0.5, 0.0, 0.81]];
};
};
_lightright setLightAttenuation [0.181, 0, 1000, 130];
_lightright setLightIntensity 10;
_lightright setLightFlareSize 0.38;
_lightright setLightFlareMaxDistance 150;
_lightright setLightUseFlare true;
//ARE YOU ALL HAPPY?!?!?!?!?!?!?!?!?%#?@WGD?TGD?BN?ZDHBFD?GA
_lightleft setLightDayLight true;
_lightright setLightDayLight true;
_leftRed = true;
while{ (alive _vehicle)} do
{
if (!(_vehicle getVariable "lights")) exitWith {};
if (_leftRed) then
{
_leftRed = false;
_lightright setLightBrightness 0.0;
sleep 0.05;
_lightleft setLightBrightness 6;
}
else
{
_leftRed = true;
_lightleft setLightBrightness 0.0;
sleep 0.05;
_lightright setLightBrightness 6;
};
sleep (_this select 1);
};
deleteVehicle _lightleft;
deleteVehicle _lightright;

View File

@@ -0,0 +1,32 @@
/*
File: fn_copLoadout.sqf
Author: Bryan "Tonic" Boardwine
Edited: Itsyuka
Description:
Loads the cops out with the default gear.
*/
private ["_handle"];
_handle = [] spawn life_fnc_stripDownPlayer;
waitUntil {scriptDone _handle};
//Load player with default cop gear.
player addUniform "U_Rangemaster";
player addVest "V_Rangemaster_belt";
player addMagazine "16Rnd_9x21_Mag";
player addWeapon "hgun_P07_snds_F";
player addMagazine "16Rnd_9x21_Mag";
player addMagazine "16Rnd_9x21_Mag";
player addMagazine "16Rnd_9x21_Mag";
player addMagazine "16Rnd_9x21_Mag";
player addMagazine "16Rnd_9x21_Mag";
/* ITEMS */
player linkItem "ItemMap";
player linkItem "ItemCompass";
player linkItem "ItemWatch";
player linkItem "ItemGPS";
[] call life_fnc_playerSkins;
[] call life_fnc_saveGear;

View File

@@ -0,0 +1,43 @@
/*
File: fn_copMarkers.sqf
Author: Bryan "Tonic" Boardwine
Description:
Marks cops on the map for other cops. Only initializes when the actual map is open.
*/
private ["_markers","_cops"];
_markers = [];
_cops = [];
sleep 0.5;
if (visibleMap) then {
{if (side _x isEqualTo west) then {_cops pushBack _x;}} forEach playableUnits; //Fetch list of cops / blufor
//Create markers
{
if !(_x isEqualTo player) then {
_marker = createMarkerLocal [format ["%1_marker",_x],visiblePosition _x];
_marker setMarkerColorLocal "ColorBLUFOR";
_marker setMarkerTypeLocal "Mil_dot";
_marker setMarkerTextLocal format ["%1", _x getVariable ["realname",name _x]];
_markers pushBack [_marker,_x];
};
} forEach _cops;
while {visibleMap} do {
{
private ["_unit"];
_unit = _x select 1;
if (!isNil "_unit" && !isNull _unit) then {
(_x select 0) setMarkerPosLocal (visiblePosition _unit);
};
} forEach _markers;
if (!visibleMap) exitWith {};
sleep 0.02;
};
{deleteMarkerLocal (_x select 0);} forEach _markers;
_markers = [];
_cops = [];
};

View File

@@ -0,0 +1,63 @@
#include "..\..\script_macros.hpp"
/*
File: fn_copSearch.sqf
Author: Bryan "Tonic" Boardwine
Description:
Returns information on the search.
*/
life_action_inUse = false;
private ["_license","_guns","_gun"];
params [
["_civ",objNull,[objNull]],
["_invs",[],[[]]],
["_robber",false,[false]]
];
if (isNull _civ) exitWith {};
_illegal = 0;
_inv = "";
if (count _invs > 0) then {
{
_displayName = M_CONFIG(getText,"VirtualItems",(_x select 0),"displayName");
_inv = _inv + format ["%1 %2<br/>",(_x select 1),(localize _displayName)];
_price = M_CONFIG(getNumber,"VirtualItems",(_x select 0),"sellPrice");
if (!isNull (missionConfigFile >> "VirtualItems" >> (_x select 0) >> "processedItem")) then {
_processed = M_CONFIG(getText,"VirtualItems",(_x select 0),"processedItem");
_price = M_CONFIG(getNumber,"VirtualItems",_processed,"sellPrice");
};
if (!(_price isEqualTo -1)) then {
_illegal = _illegal + ((_x select 1) * _price);
};
} forEach _invs;
if (_illegal > 6000) then {
if (life_HC_isActive) then {
[getPlayerUID _civ,_civ getVariable ["realname",name _civ],"482"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
} else {
[getPlayerUID _civ,_civ getVariable ["realname",name _civ],"482"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
};
};
if (life_HC_isActive) then {
[getPlayerUID _civ,_civ getVariable ["realname",name _civ],"481"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
} else {
[getPlayerUID _civ,_civ getVariable ["realname",name _civ],"481"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
};
[0,"STR_Cop_Contraband",true,[(_civ getVariable ["realname",name _civ]),[_illegal] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",west];
} else {
_inv = localize "STR_Cop_NoIllegal";
};
if (!alive _civ || player distance _civ > 5) exitWith {hint format [localize "STR_Cop_CouldntSearch",_civ getVariable ["realname",name _civ]]};
//hint format ["%1",_this];
hint parseText format ["<t color='#FF0000'><t size='2'>%1</t></t><br/><t color='#FFD700'><t size='1.5'><br/>" +(localize "STR_Cop_IllegalItems")+ "</t></t><br/>%2<br/><br/><br/><br/><t color='#FF0000'>%3</t>"
,(_civ getVariable ["realname",name _civ]),_inv,if (_robber) then {"Robbed the bank"} else {""}];
if (_robber) then {
[0,"STR_Cop_Robber",true,[(_civ getVariable ["realname",name _civ])]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
};

View File

@@ -0,0 +1,23 @@
#include "..\..\script_macros.hpp"
/*
File: fn_copSiren.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the cop siren sound for other players.
*/
private ["_vehicle"];
_vehicle = param [0,objNull,[objNull]];
if (isNull _vehicle) exitWith {};
if (isNil {_vehicle getVariable "siren"}) exitWith {};
for "_i" from 0 to 1 step 0 do {
if (!(_vehicle getVariable "siren")) exitWith {};
if (count crew _vehicle isEqualTo 0) then {_vehicle setVariable ["siren",false,true]};
if (!alive _vehicle) exitWith {};
if (isNull _vehicle) exitWith {};
_vehicle say3D "sirenLong";//Class name specified in description.ext
sleep 4.870;//Exactly matches the length of the audio file.
if (!(_vehicle getVariable "siren")) exitWith {};
};

View File

@@ -0,0 +1,29 @@
#include "..\..\script_macros.hpp"
/*
File: fn_doorAnimate.sqf
Author: Bryan "Tonic" Boardwine
Description:
Animates a door?
*/
private ["_b","_doors","_door"];
_b = _this select 0;
_doors = 1;
_doors = FETCH_CONFIG2(getNumber,"CfgVehicles",typeOf _b,"NumberOfDoors");
_door = 0;
//Find the nearest door
for "_i" from 1 to _doors do {
_selPos = _b selectionPosition format ["Door_%1_trigger",_i];
_worldSpace = _b 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.
if (_b animationPhase format ["door_%1_rot",_door] isEqualTo 0) then {
_b animateSource [format ["Door_%1_source", _door], 1];
} else {
_b animateSource [format ["Door_%1_source", _door], 0];
};
closeDialog 0;

Some files were not shown because too many files have changed in this diff Show More