mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
1155 lines
52 KiB
Plaintext
1155 lines
52 KiB
Plaintext
if (isServer) then {
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\init\server_functions.sqf";
|
|
|
|
pvs_processSetAccessCode = compile preprocessFile "\z\addons\dayz_code\eventHandlers\processSetAccessCode.sqf";
|
|
};
|
|
|
|
if (!isDedicated) then {
|
|
|
|
"filmic" setToneMappingParams [0.07, 0.31, 0.23, 0.37, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_padlock.sqf";
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\util\compile.sqf";
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\loot\compile.sqf";
|
|
|
|
fn_dropItem = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_dropItem.sqf"; //fnc to drop items. _item call fn_dropItem;
|
|
BIS_Effects_Burn = compile preprocessFile "\ca\Data\ParticleEffects\SCRIPTS\destruction\burn.sqf";
|
|
spawn_flies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\spawn_flies.sqf";
|
|
player_zombieCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieCheck.sqf"; //Run on a players computer, checks if the player is near a zombie
|
|
player_zombieAttack = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieAttack.sqf"; //Run on a players computer, causes a nearby zombie to attack them
|
|
player_attackdelay = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_attackfsmdelay.sqf";
|
|
fnc_usec_damageActions = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageActions.sqf"; //Checks which actions for nearby casualty
|
|
fnc_inAngleSector = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_inAngleSector.sqf"; //Checks which actions for nearby casualty
|
|
fnc_usec_selfActions = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selfActions.sqf"; //Checks which actions for self
|
|
fnc_usec_unconscious = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_unconscious.sqf";
|
|
fnc_usec_upgradeActions = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_upgradeActions.sqf";
|
|
player_temp_calculation = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_temperatur.sqf"; //Temperatur System //TeeChange
|
|
player_weaponFiredNear = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_weaponFiredNear.sqf";
|
|
//player_animalCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_animalCheck.sqf";
|
|
player_spawnCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_spawnCheck.sqf";
|
|
player_dumpBackpack = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_dumpBackpack.sqf";
|
|
building_spawnLoot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\building_spawnLoot.sqf";
|
|
building_spawnZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\building_spawnZombies.sqf";
|
|
player_fired = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_fired.sqf"; //Runs when player fires. Alerts nearby Zeds depending on calibre && audial rating
|
|
player_harvest = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_harvest.sqf";
|
|
player_packTent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_packTent.sqf";
|
|
player_packVault = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_packVault.sqf";
|
|
player_unlockVault = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_unlockVault.sqf";
|
|
|
|
player_removeObject = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf";
|
|
player_removeNearby = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_removeNearby.sqf";
|
|
|
|
player_removeTankTrap = {
|
|
//Object Array, Range, Error Message (@Skaronator)
|
|
[["Hedgehog_DZ"], 1,"STR_EPOCH_ACTIONS_14"] call player_removeNearby;
|
|
};
|
|
player_removeNet = {
|
|
[["DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ"], 5,"str_epoch_player_8"] call player_removeNearby;
|
|
};
|
|
|
|
player_login = {
|
|
private ["_unit","_detail","_PUID"];
|
|
_unit = _this select 0;
|
|
_detail = _this select 1;
|
|
_PUID = [player] call FNC_GetPlayerUID;
|
|
if(_unit == _PUID) then {
|
|
player setVariable["publish",_detail];
|
|
};
|
|
};
|
|
|
|
player_unlockDoor = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_unlockDoor.sqf";
|
|
player_changeCombo = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_changeCombo.sqf";
|
|
|
|
player_lockVault = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_lockVault.sqf";
|
|
player_updateGui = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_updateGui.sqf";
|
|
player_crossbowBolt = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_crossbowBolt.sqf";
|
|
stream_locationFill = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\stream_locationFill.sqf";
|
|
stream_locationDel = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\stream_locationDel.sqf";
|
|
stream_locationCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\stream_locationCheck.sqf";
|
|
player_music = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_music.sqf"; //Used to generate ambient music
|
|
player_death = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_death.sqf";
|
|
player_switchModel = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_switchModel.sqf";
|
|
player_checkStealth = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_checkStealth.sqf";
|
|
world_sunRise = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_sunRise.sqf";
|
|
world_surfaceNoise = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_surfaceNoise.sqf";
|
|
player_humanityMorph = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_humanityMorph.sqf";
|
|
player_throwObject = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_throwObject.sqf";
|
|
player_alertZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_alertZombies.sqf";
|
|
player_fireMonitor = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\fire_monitor.sqf";
|
|
//USE THE ONE IN /ACTIONS //player_countMagazines = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_countMagazines.sqf";
|
|
player_forceSave = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_forceSave.sqf";
|
|
player_Bubble = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_Bubble.sqf";
|
|
fn_gearMenuChecks = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_gearMenuChecks.sqf";
|
|
|
|
//Objects
|
|
object_setpitchbank = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_setpitchbank.sqf";
|
|
object_monitorGear = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_monitorGear.sqf";
|
|
object_dismantle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_dismantle.sqf";
|
|
|
|
//GetOut
|
|
vehicle_getOut = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\vehicle_getOut.sqf";
|
|
|
|
local_roadDebris = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_roadDebris.sqf";
|
|
|
|
//Zombies
|
|
zombie_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_findTargetAgent.sqf";
|
|
zombie_loiter = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_loiter.sqf"; //Server compile, used for loiter behaviour
|
|
zombie_generate = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_generate.sqf"; //Server compile, used for loiter behaviour
|
|
wild_spawnZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\wild_spawnZombies.sqf"; //Server compile, used for loiter behaviour
|
|
player_zombieSwarmAttack = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieSwarmAttack.sqf";
|
|
//zombie_generateSwarm = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\swarm_generate.sqf";
|
|
|
|
pz_attack = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\pzombie\pz_attack.sqf";
|
|
|
|
dog_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dog_findTargetAgent.sqf";
|
|
|
|
//actions
|
|
player_countmagazines = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_countmagazines.sqf";
|
|
player_addToolbelt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addToolbelt.sqf";
|
|
player_addtoBack = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addtoBack.sqf";
|
|
player_copyKey = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_copyKey.sqf";
|
|
player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.sqf";
|
|
player_createstash = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_createstash.sqf";
|
|
player_loadCrate = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_loadCrate.sqf";
|
|
player_craftItem = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf";
|
|
player_tentPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\tent_pitch.sqf";
|
|
player_vaultPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\vault_pitch.sqf";
|
|
player_drink = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_drink.sqf";
|
|
player_eat = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_eat.sqf";
|
|
player_drinkWater = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_drinkWater.sqf"; //1.8.7
|
|
player_consume = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_consume.sqf"; //1.8.7
|
|
player_emptyContainer = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_emptyContainer.sqf";
|
|
player_useMeds = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_useMeds.sqf";
|
|
player_useAttchment = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_useAttchment.sqf";
|
|
player_attachAttachment = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_attachAttachment.sqf";
|
|
player_removeAttachment = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_removeAttachment.sqf";
|
|
player_chopWood = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_chopWood.sqf";
|
|
player_mineStone = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_mineStone.sqf";
|
|
player_fillWater = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\water_fill.sqf";
|
|
player_makeFire = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_makefire.sqf";
|
|
player_harvestPlant = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_harvestPlant.sqf";
|
|
player_goFishing = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_goFishing.sqf";
|
|
object_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_build.sqf";
|
|
player_dropWeapon = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_dropWeapon.sqf";
|
|
|
|
if (DZE_modularBuild) then {
|
|
player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\modular_build.sqf";
|
|
player_build_countNearby = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_countNearby.sqf";
|
|
player_build_states = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_states.sqf";
|
|
player_build_needNearby = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_needNearby.sqf";
|
|
player_build_getConfig = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_getConfig.sqf";
|
|
player_build_plotCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_plotCheck.sqf";
|
|
player_build_buildReq = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_buildReq.sqf";
|
|
player_build_create = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_create.sqf";
|
|
player_build_controls = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_controls.sqf";
|
|
player_build_publish = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build_publish.sqf";
|
|
snap_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\snap_build.sqf";
|
|
} else {
|
|
player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf";
|
|
};
|
|
|
|
player_combineMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_combineMags.sqf";
|
|
player_createquiver = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_createQuiver.sqf";
|
|
player_fillquiver = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fillQuiver.sqf";
|
|
|
|
player_wearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_wearClothes.sqf";
|
|
object_pickup = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_pickup.sqf";
|
|
//player_switchWeapon = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_switchWeapon.sqf";
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_switchWeapon.sqf";
|
|
player_flipvehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_flipvehicle.sqf";
|
|
player_sleep = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf";
|
|
player_antiWall = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf";
|
|
player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf";
|
|
player_gather = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_gather.sqf";
|
|
player_fixBottle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fixBottle.sqf";
|
|
player_tearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_tearClothes.sqf";
|
|
player_fixHatchet = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fixTools.sqf";
|
|
player_sharpen = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sharpen.sqf";
|
|
|
|
player_plotPreview = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_showPlotRadius.sqf";
|
|
player_upgradeVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_upgradeVehicle.sqf";
|
|
|
|
//ui
|
|
player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_selectSlot.sqf";
|
|
player_gearSync = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_gearSync.sqf";
|
|
player_gearSet = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_gearSet.sqf";
|
|
ui_changeDisplay = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_changeDisplay.sqf";
|
|
ui_gear_sound = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_gear_sound.sqf";
|
|
|
|
//playerstats
|
|
horde_epeen_fnc_fill_page = compile preProcessFile "\z\addons\dayz_code\actions\playerstats\fill_page_fnc.sqf";
|
|
horde_epeen_determine_humanity_fnc = compile preProcessFile "\z\addons\dayz_code\actions\playerstats\determine_humanity_fnc.sqf";
|
|
horde_epeen_setText_journal_fnc = compile preProcessFile "\z\addons\dayz_code\actions\playerstats\epeen_setText_journal.sqf";
|
|
horde_epeen_setText_humanity_fnc = compile preProcessFile "\z\addons\dayz_code\actions\playerstats\epeen_setText_humanity.sqf";
|
|
horde_epeen_setText_stats_fnc = compile preProcessFile "\z\addons\dayz_code\actions\playerstats\epeen_setText_stats.sqf";
|
|
horde_epeen_show_humanity_fnc = compile preProcessFile "\z\addons\dayz_code\actions\playerstats\show_humanity_fnc.sqf";
|
|
|
|
//System
|
|
player_monitor = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\player_monitor.sqf";
|
|
player_spawn_1 = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\player_spawn_1.sqf";
|
|
player_spawn_2 = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\player_spawn_2.sqf";
|
|
infectedcamps = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_infectedcamps.sqf";
|
|
|
|
//Crafting
|
|
fn_updateCraftUI = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_updateCraftUI.sqf";
|
|
player_craftItem_DZV = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf";
|
|
player_craftItemGUI = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItemGUI.sqf";
|
|
player_checkRecipe = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_checkRecipe.sqf";
|
|
|
|
object_upgradeFireplace = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_upgradeFireplace.sqf";
|
|
|
|
fn_buildCamera = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_buildCamera.sqf";
|
|
|
|
onPreloadStarted "dayz_preloadFinished = false;";
|
|
onPreloadFinished "if (!isNil 'init_keyboard') then { [] spawn init_keyboard; }; dayz_preloadFinished = true;";
|
|
|
|
// helper functions
|
|
player_addDuplicateTool = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_addDuplicateTool.sqf";
|
|
player_hasTools = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_hasTools.sqf";
|
|
player_checkItems = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_checkItems.sqf";
|
|
player_removeItems = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_removeItems.sqf";
|
|
//Trader ["Trader City Name",false,"enter"] - Trader City Name | Show Message | "enter" || "leave"
|
|
player_traderCity = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderCity.sqf";
|
|
|
|
// combination of check && remove items
|
|
player_checkAndRemoveItems = {
|
|
private ["_items","_b"];
|
|
_items = _this;
|
|
_b = _items call player_checkItems;
|
|
if (_b) then {
|
|
_b = _items call player_removeItems;
|
|
};
|
|
_b
|
|
};
|
|
|
|
dayz_HungerThirst = {
|
|
dayz_hunger = dayz_hunger + (_this select 0);
|
|
dayz_thirst = dayz_thirst + (_this select 1);
|
|
};
|
|
|
|
epoch_tempKeys = {
|
|
private ["_temp_keys","_temp_keys_names","_key_colors","_ownerKeyId","_ownerKeyName"];
|
|
_temp_keys = [];
|
|
_temp_keys_names = [];
|
|
// find available keys
|
|
_key_colors = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];
|
|
{
|
|
if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in _key_colors) then {
|
|
_ownerKeyId = getNumber(configFile >> "CfgWeapons" >> _x >> "keyid");
|
|
_ownerKeyName = getText(configFile >> "CfgWeapons" >> _x >> "displayName");
|
|
_temp_keys_names set [_ownerKeyId,_ownerKeyName];
|
|
_temp_keys set [count _temp_keys,str(_ownerKeyId)];
|
|
};
|
|
} count (items player);
|
|
[_temp_keys,_temp_keys_names]
|
|
};
|
|
|
|
epoch_totalCurrency = {
|
|
// total currency
|
|
_total_currency = 0;
|
|
{
|
|
_part = (configFile >> "CfgMagazines" >> _x);
|
|
_worth = (_part >> "worth");
|
|
if isNumber (_worth) then {
|
|
_total_currency = _total_currency + getNumber(_worth);
|
|
};
|
|
} count (magazines player);
|
|
_total_currency
|
|
};
|
|
|
|
epoch_itemCost = {
|
|
_trade_total = 0;
|
|
{
|
|
_part_in_configClass = configFile >> "CfgMagazines" >> (_x select 0);
|
|
if (isClass (_part_in_configClass)) then {
|
|
_part_inWorth = (_part_in_configClass >> "worth");
|
|
if isNumber (_part_inWorth) then {
|
|
_trade_total = _trade_total + (getNumber(_part_inWorth) * (_x select 1));
|
|
};
|
|
};
|
|
} count _this;
|
|
|
|
//diag_log format["DEBUG TRADER ITEMCOST: %1", _this];
|
|
_trade_total
|
|
};
|
|
|
|
epoch_returnChange = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\epoch_returnChange.sqf";
|
|
// usage [["partinclassname",4]] call epoch_returnChange;
|
|
|
|
dayz_losChance = {
|
|
private["_agent","_maxDis","_dis","_val","_maxExp","_myExp"];
|
|
_agent = _this select 0;
|
|
_dis = _this select 1;
|
|
_maxDis = _this select 2;
|
|
//diag_log ("VAL: " + str(_this));
|
|
_maxDis = 0.1 max _maxDis;
|
|
_val = (_maxDis - _dis) max 0;
|
|
_maxExp = ((exp 2) * _maxDis);
|
|
_myExp = ((exp 2) * (_val)) / _maxExp;
|
|
_myExp = _myExp * 0.7;
|
|
_myExp
|
|
};
|
|
|
|
ui_initDisplay = {
|
|
private["_control","_ctrlBleed","_display","_ctrlFracture","_ctrlDogFood","_ctrlDogWater","_ctrlDogWaterBorder", "_ctrlDogFoodBorder"];
|
|
disableSerialization;
|
|
_display = uiNamespace getVariable 'DAYZ_GUI_display';
|
|
_control = _display displayCtrl 1204;
|
|
_control ctrlShow false;
|
|
if (!r_player_injured) then {
|
|
_ctrlBleed = _display displayCtrl 1303;
|
|
_ctrlBleed ctrlShow false;
|
|
};
|
|
if (!r_fracture_legs && !r_fracture_arms) then {
|
|
_ctrlFracture = _display displayCtrl 1203;
|
|
_ctrlFracture ctrlShow false;
|
|
};
|
|
_ctrlDogFoodBorder = _display displayCtrl 1501;
|
|
_ctrlDogFoodBorder ctrlShow false;
|
|
_ctrlDogFood = _display displayCtrl 1701;
|
|
_ctrlDogFood ctrlShow false;
|
|
|
|
_ctrlDogWaterBorder = _display displayCtrl 1502;
|
|
_ctrlDogWaterBorder ctrlShow false;
|
|
_ctrlDogWater = _display displayCtrl 1702;
|
|
_ctrlDogWater ctrlShow false
|
|
};
|
|
|
|
dayz_angleCheck = {
|
|
private ["_degree","_tPos","_zPos","_inAngle"];
|
|
_target = _this select 0;
|
|
_agent = _this select 1;
|
|
_degree = _this select 2;
|
|
_inAngle = false;
|
|
_tPos = (getPosASL _target);
|
|
_zPos = (getPosASL _agent);
|
|
_eyeDir = (direction _agent);
|
|
_inAngle = [_zPos,_eyeDir,_degree,_tPos] call fnc_inAngleSector;
|
|
_inAngle
|
|
};
|
|
|
|
dayz_losCheck = {
|
|
private "_cantSee";
|
|
_target = _this select 0; // PUT THE PLAYER IN FIRST ARGUMENT!!!!
|
|
_agent = _this select 1;
|
|
_cantSee = true;
|
|
|
|
if ((!isNull _target) and (!isNull _agent)) then {
|
|
private ["_tPos","_zPos"];
|
|
_tPos = eyePos _target;
|
|
_zPos = eyePos _agent;
|
|
if ((count _tPos > 0) and (count _zPos > 0)) then {
|
|
_cantSee = terrainIntersectASL [(eyePos _target), (eyePos _agent)];
|
|
//diag_log ("terrainIntersectASL: " + str(_cantSee));
|
|
|
|
if (!_cantSee) then {
|
|
_cantSee = lineIntersects [(eyePos _target), (eyePos _agent)];
|
|
//diag_log ("lineIntersects: " + str(_cantSee));
|
|
};
|
|
};
|
|
};
|
|
_cantSee
|
|
};
|
|
|
|
dayz_equipCheck = {
|
|
private ["_empty", "_needed","_diff","_success"];
|
|
_config = _this;
|
|
_empty = [player] call BIS_fnc_invSlotsEmpty;
|
|
_needed = [_config] call BIS_fnc_invSlotType;
|
|
_diff = [_empty,_needed] call BIS_fnc_vectorDiff;
|
|
|
|
_success = true;
|
|
{
|
|
if (_x > 0) then {_success = false};
|
|
} count _diff;
|
|
hint format["Config: %5\nEmpty: %1\nNeeded: %2\nDiff: %3\nSuccess: %4",_empty,_needed,_diff,_success,_config];
|
|
_success
|
|
};
|
|
|
|
vehicle_gear_count = {
|
|
private["_counter"];
|
|
_counter = 0;
|
|
{
|
|
_counter = _counter + _x;
|
|
} count _this;
|
|
_counter
|
|
};
|
|
|
|
player_tagFriendlyMsg = {
|
|
if(player == (_this select 0)) then {
|
|
cutText[(localize "str_epoch_player_2"),"PLAIN DOWN"];
|
|
};
|
|
};
|
|
|
|
player_serverModelChange = {
|
|
private["_object","_model"];
|
|
_object = _this select 0;
|
|
_model = _this select 1;
|
|
if (_object == player) then {
|
|
_model call player_switchModel;
|
|
};
|
|
};
|
|
|
|
player_guiControlFlash = {
|
|
private["_control"];
|
|
_control = _this;
|
|
if (ctrlShown (_control select 0)) then {
|
|
{_x ctrlShow false} foreach _control;
|
|
} else {
|
|
{_x ctrlShow true} foreach _control;
|
|
};
|
|
};
|
|
|
|
gearDialog_create = {
|
|
private ["_i","_dialog"];
|
|
if (!isNull (findDisplay 106)) then {
|
|
(findDisplay 106) closeDisplay 0;
|
|
};
|
|
openMap false;
|
|
closeDialog 0;
|
|
if (gear_done) then {uiSleep 0.001;};
|
|
player action ["Gear", player];
|
|
if (gear_done) then {uiSleep 0.001;};
|
|
_dialog = findDisplay 106;
|
|
_i = 0;
|
|
while {isNull _dialog} do {//DO NOT CHANGE TO A FOR LOOP!
|
|
_i = _i + 1;
|
|
_dialog = findDisplay 106;
|
|
if (gear_done) then {uiSleep 0.001;};
|
|
if (_i in [100,200,299]) then {
|
|
closeDialog 0;
|
|
player action ["Gear", player];
|
|
};
|
|
if (_i > 300) exitWith {};
|
|
};
|
|
if (gear_done) then {uiSleep 0.001;};
|
|
_dialog = findDisplay 106;
|
|
if ((parseNumber(_this select 0)) != 0) then {
|
|
ctrlActivate (_dialog displayCtrl 157);
|
|
if (gear_done) then {
|
|
waitUntil {ctrlShown (_dialog displayCtrl 159)};
|
|
uiSleep 0.001;
|
|
};
|
|
};
|
|
_dialog
|
|
};
|
|
|
|
dayz_NutritionSystem = {
|
|
private ["_type","_baseRegen","_nutrition","_calorieCount","_hungerCount","_thirstCount","_tempCount","_Thirst","_Hunger","_bloodregen","_golbalNutrition"];
|
|
//["type",regen,[NutritionTable,thirst(Working Class),hunger(Working Class)]]
|
|
//info to be added
|
|
_type = _this select 0;
|
|
_baseRegen = _this select 1;
|
|
_nutrition = _this select 2;
|
|
|
|
//Nutrition array
|
|
_calorieCount = ((_this select 2) select 0);
|
|
//gain
|
|
_hungerCount = ((_this select 2) select 1);
|
|
_thirstCount = ((_this select 2) select 2);
|
|
_tempCount = ((_this select 2) select 3);
|
|
|
|
//3610 is based on a 80kg male 180cm tall
|
|
if (_calorieCount > 0) then {
|
|
_hungerCount = _hungerCount + (SleepFood * (((ln ((_calorieCount / 3610) * 100)) * (1 - (dayz_hunger / SleepFood))) / 100));
|
|
_thirstCount = _thirstCount + (SleepWater * (((ln ((_calorieCount / 3610) * 100)) * (1 - (dayz_thirst / SleepWater))) / 100));
|
|
};
|
|
|
|
switch (_type) do {
|
|
case "FoodDrink": {
|
|
//hunger
|
|
if (_hungerCount > 0) then {
|
|
if (dayz_hunger > _hungerCount) then {
|
|
dayz_hunger = dayz_hunger - (_hungerCount);
|
|
} else {
|
|
dayz_hunger = 0;
|
|
};
|
|
};
|
|
//thirst
|
|
if (_thirstCount > 0) then {
|
|
if (dayz_thirst > _thirstCount) then {
|
|
dayz_thirst = dayz_thirst - _thirstCount;
|
|
} else {
|
|
dayz_thirst = 0;
|
|
};
|
|
};
|
|
//temp
|
|
if (_tempCount > 0) then { dayz_temperatur = dayz_temperatur + _tempCount; };
|
|
//calorie
|
|
if (_calorieCount > 0) then { dayz_nutrition = dayz_nutrition + _calorieCount; };
|
|
//blood
|
|
if (_baseRegen > 0) then { r_player_bloodregen = r_player_bloodregen + _baseRegen; };
|
|
};
|
|
|
|
case "Working": {
|
|
if (_calorieCount > 0) then { dayz_nutrition = dayz_nutrition - _calorieCount; };
|
|
if (_thirstCount > 0) then { dayz_thirst = dayz_thirst + _thirstCount; };
|
|
if (_hungerCount > 0) then { dayz_hunger = dayz_hunger + _hungerCount; };
|
|
if (_tempCount > 0) then { dayz_temperatur = dayz_temperatur + _tempCount; };
|
|
};
|
|
|
|
};
|
|
|
|
dayz_thirst = (dayz_thirst min SleepWater) max 0;
|
|
dayz_hunger = (dayz_hunger min SleepFood) max 0;
|
|
dayz_temperatur = (dayz_temperatur min dayz_temperaturmax) max dayz_temperaturmin;
|
|
//systemChat str [ "nutrition, r_player_bloodregen+=",_baseRegen,"dayz_nutrition+=", _calorieCount, "dayz_thirst+=", _thirstCount, "dayz_hunger+=", _hungerCount ];
|
|
//systemChat format ["%6, Nutrition add: %1, Nutrition Total: %2, Thirst: %3, Hunger: %4, dayz_temperatur: %5",_this,dayz_nutrition,dayz_thirst,dayz_hunger,dayz_temperatur];
|
|
//diag_log format ["%6, Nutrition add: %1, Nutrition Total: %7/%2, Thurst: %3, Hunger: %4, BloodRegen: %5",_this,r_player_Nutrition,_Thirst,_Hunger,_bloodregen,_type,_golbalNutrition];
|
|
};
|
|
|
|
gear_ui_offMenu = {
|
|
private["_control","_parent","_menu","_grpPos"];
|
|
disableSerialization;
|
|
_control = _this select 0;
|
|
_parent = findDisplay 106;
|
|
if (!(_this select 3)) then {
|
|
for "_i" from 0 to 9 do {
|
|
_menu = _parent displayCtrl (1600 + _i);
|
|
_menu ctrlShow false;
|
|
};
|
|
_grpPos = ctrlPosition _control;
|
|
_grpPos set [3,0];
|
|
_control ctrlSetPosition _grpPos;
|
|
_control ctrlShow false;
|
|
_control ctrlCommit 0;
|
|
};
|
|
};
|
|
|
|
dze_surrender_off = {
|
|
player setVariable ["DZE_Surrendered", false, true];
|
|
DZE_Surrender = false;
|
|
};
|
|
|
|
gear_ui_init = {
|
|
private["_control","_parent","_menu","_dspl","_grpPos"];
|
|
disableSerialization;
|
|
_parent = findDisplay 106;
|
|
_control = _parent displayCtrl 6902;
|
|
for "_i" from 0 to 9 do {
|
|
_menu = _parent displayCtrl (1600 + _i);
|
|
_menu ctrlShow false;
|
|
};
|
|
_grpPos = ctrlPosition _control;
|
|
_grpPos set [3,0];
|
|
_control ctrlSetPosition _grpPos;
|
|
_control ctrlShow false;
|
|
_control ctrlCommit 0;
|
|
};
|
|
|
|
gear_ui_hide = {
|
|
//private["_display","_BP"];
|
|
disableSerialization;
|
|
_display = findDisplay 106;
|
|
_BP = unitBackpack player;
|
|
if (ctrlShown (_display displayCtrl 159)) then {//prevent background images in backpack view
|
|
for "_i" from 1006 to 1011 do {
|
|
(_display displayCtrl _i) ctrlShow false;
|
|
};
|
|
} else {
|
|
for "_i" from 1006 to 1011 do {
|
|
if (!(ctrlShown (_display displayCtrl _i))) then {
|
|
(_display displayCtrl _i) ctrlShow true;
|
|
};
|
|
};
|
|
};
|
|
//hide buttons if unnecessary
|
|
if (isNull _BP || ((typeOf _BP) == "")) then {
|
|
(_display displayCtrl 132) ctrlShow false;
|
|
(_display displayCtrl 157) ctrlShow false;
|
|
(_display displayCtrl 158) ctrlShow false;
|
|
};
|
|
|
|
// Prevent carrying 2 rifles 'exploit'
|
|
if (primaryWeapon player == "" && dayz_onBack != "" && !(dayz_onBack in MeleeWeapons)) then {
|
|
//["gear"] call player_switchWeapon;
|
|
0 call dz_fn_switchWeapon;
|
|
};
|
|
|
|
if (primaryWeapon player != "" && (primaryWeapon player in MeleeWeapons || dayz_onBack in MeleeWeapons)) then {
|
|
(_display displayCtrl 1204) ctrlShow true;
|
|
} else {
|
|
(_display displayCtrl 1204) ctrlShow false;
|
|
};
|
|
|
|
if (DayZ_onBack != "") then {
|
|
(_display displayCtrl 1208) ctrlShow true;
|
|
} else {
|
|
(_display displayCtrl 1208) ctrlShow false;
|
|
};
|
|
|
|
for "_i" from 0 to (lbSize (_display displayCtrl 105)) - 1 do {
|
|
(_display displayCtrl 105) lbSetColor [_i, [0.06, 0.05, 0.03, 1]];
|
|
};
|
|
};
|
|
|
|
dayz_lowHumanity = {
|
|
//private["_unit","_humanity","_delay"];
|
|
_unit = _this;
|
|
if ((_unit distance player) < 15) then {
|
|
private "_humanity";
|
|
_humanity = _unit getVariable["humanity",0];
|
|
dayz_heartBeat = true;
|
|
if (_humanity < -3000) then {
|
|
private "_delay";
|
|
_delay = ((10000 + _humanity) / 5500) + 0.3;
|
|
playSound "heartbeat_1";
|
|
sleep _delay;
|
|
};
|
|
dayz_heartBeat = false;
|
|
};
|
|
};
|
|
|
|
dz_fn_meleeMagazines =
|
|
{
|
|
if (_this) then
|
|
{
|
|
{ player addMagazine _x } foreach MeleeMagazines;
|
|
}
|
|
else
|
|
{
|
|
{ player removeMagazines _x } foreach MeleeMagazines;
|
|
};
|
|
};
|
|
|
|
dayz_eyeDir = {
|
|
private["_vval","_vdir"];
|
|
_vval = (eyeDirection _this);
|
|
_vdir = (_vval select 0) atan2 (_vval select 1);
|
|
if (_vdir < 0) then {_vdir = 360 + _vdir};
|
|
_vdir
|
|
};
|
|
|
|
DZE_getModelName = {
|
|
_objInfo = toArray(str(_this));
|
|
_lenInfo = count _objInfo - 1;
|
|
_objName = [];
|
|
_i = 0;
|
|
// determine where the object name starts
|
|
{
|
|
if (58 == _objInfo select _i) exitWith {};
|
|
_i = _i + 1;
|
|
} count _objInfo;
|
|
_i = _i + 2; // skip the ": " part
|
|
for "_k" from _i to _lenInfo do {
|
|
_objName set [(count _objName), (_objInfo select _k)];
|
|
};
|
|
_objName = toLower(toString(_objName));
|
|
_objName
|
|
};
|
|
|
|
dze_isnearest_player = {
|
|
private ["_notClosest","_playerDistance","_nearPlayers","_obj","_playerNear"];
|
|
if(!isNull _this) then {
|
|
_nearPlayers = _this nearEntities ["CAManBase", 12];
|
|
_playerNear = ({isPlayer _x} count _nearPlayers) > 1;
|
|
_notClosest = false;
|
|
if (_playerNear) then {
|
|
// check if another player is closer
|
|
_playerDistance = player distance _this;
|
|
{
|
|
if (_playerDistance > (_x distance _this)) exitWith { _notClosest = true; };
|
|
} count _nearPlayers;
|
|
};
|
|
} else {
|
|
_notClosest = false;
|
|
};
|
|
_notClosest
|
|
};
|
|
|
|
// trader menu code
|
|
if (DZE_ConfigTrader) then {
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuConfig.sqf";
|
|
}else{
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuHive.sqf";
|
|
};
|
|
// recent murders menu code
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_murderMenu.sqf";
|
|
/*
|
|
[] spawn {
|
|
private["_timeOut","_display","_control1","_control2"];
|
|
disableSerialization;
|
|
_timeOut = diag_tickTime;
|
|
dayz_loadScreenMsg = "";
|
|
diag_log "DEBUG: loadscreen guard started.";
|
|
_display = uiNameSpace getVariable "BIS_loadingScreen";
|
|
if (!isNil "_display") then {
|
|
_control1 = _display displayctrl 8400;
|
|
_control2 = _display displayctrl 102;
|
|
};
|
|
if (!isNil "dayz_DisplayGenderSelect") then {
|
|
waitUntil {!dayz_DisplayGenderSelect};
|
|
};
|
|
|
|
// 120 sec timeout (12000 * 0.01)
|
|
while { (_timeOut + 120) > diag_tickTime } do {
|
|
if (dayz_clientPreload && dayz_authed) exitWith {
|
|
diag_log "PLOGIN: Login loop completed!";
|
|
endLoadingScreen;
|
|
};
|
|
if (!isNil "_display") then {
|
|
if ( isNull _display ) then {
|
|
waitUntil { !dialog; };
|
|
startLoadingScreen ["","RscDisplayLoadCustom"];
|
|
_display = uiNameSpace getVariable "BIS_loadingScreen";
|
|
_control1 = _display displayctrl 8400;
|
|
_control2 = _display displayctrl 102;
|
|
};
|
|
|
|
if ( dayz_loadScreenMsg != "" ) then {
|
|
_control1 ctrlSetText dayz_loadScreenMsg;
|
|
dayz_loadScreenMsg = "";
|
|
};
|
|
|
|
_control2 ctrlSetText format["%1",round(diag_tickTime - _timeOut)];
|
|
};
|
|
|
|
//_timeOut = _timeOut + 1;
|
|
uiSleep 0.001;
|
|
};
|
|
if (diag_tickTime >= (_timeOut + 120)) then {
|
|
1 cutText [localize "str_player_login_timeout", "PLAIN DOWN"];
|
|
uiSleep 10;
|
|
endLoadingScreen;
|
|
endMission "END1";
|
|
};
|
|
};
|
|
*/
|
|
dayz_meleeMagazineCheck = {
|
|
//private["_meleeNum","_magType","_wpnType","_ismelee"];
|
|
_wpnType = primaryWeapon player;
|
|
_ismelee = (getNumber (configFile >> "CfgWeapons" >> _wpnType >> "melee") == 1);
|
|
if (_ismelee) then {
|
|
private ["_meleeNum","_magType"];
|
|
_magType = ([] + getArray (configFile >> "CfgWeapons" >> _wpnType >> "magazines")) select 0;
|
|
_meleeNum = ({_x == _magType} count magazines player);
|
|
if (_meleeNum < 1) then {
|
|
player addMagazine _magType;
|
|
};
|
|
};
|
|
|
|
// combine matchboxes
|
|
private [ "_matches", "_fullBox", "_remain" ];
|
|
_matches = 0;
|
|
{
|
|
if (configName inheritsFrom (configfile >> "cfgWeapons" >> _x) == "ItemMatchbox") then { // iskindOf does not work here?!
|
|
_matches = _matches + getNumber(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "matches");
|
|
player removeWeapon _x;
|
|
};
|
|
} count (items player);
|
|
// limit to 1 fullbox and 1 used matchbox
|
|
_fullBox = floor (_matches / 5);
|
|
_remain = _matches % 5;
|
|
if (_fullBox > 0) then { player addWeapon "Item5Matchbox"; };
|
|
if (_fullBox > 1) then {
|
|
player addWeapon "Item4Matchbox";
|
|
} else {
|
|
if (_remain > 0) then { player addWeapon ("Item"+str(_remain)+"Matchbox"); };
|
|
};
|
|
};
|
|
|
|
dayz_rollingMessages = {
|
|
if ((diag_ticktime - Message_1_time) < 5) then {
|
|
if ((time - Message_2_time) < 5) then
|
|
{
|
|
Message_3 = Message_2;
|
|
Message_3_time = Message_2_time;
|
|
}
|
|
else
|
|
{
|
|
Message_3 = "";
|
|
};
|
|
|
|
Message_2 = Message_1;
|
|
Message_2_time = Message_1_time;
|
|
} else {
|
|
Message_2 = "";
|
|
Message_3 = "";
|
|
};
|
|
|
|
Message_1 = _this;
|
|
Message_1_time = diag_ticktime;
|
|
cutText [format ["%1\n%2\n%3", Message_1, Message_2, Message_3], "PLAIN DOWN"];
|
|
};
|
|
|
|
dayz_originalPlayer = player;
|
|
|
|
progressLoadingScreen 0.8;
|
|
};
|
|
|
|
//Both
|
|
BIS_fnc_selectRandom = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\BIS_fnc\fn_selectRandom.sqf";
|
|
BIS_fnc_vectorAdd = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\BIS_fnc\fn_vectorAdd.sqf";
|
|
BIS_fnc_halo = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\BIS_fnc\fn_halo.sqf";
|
|
BIS_fnc_findNestedElement = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\BIS_fnc\fn_findNestedElement.sqf";
|
|
BIS_fnc_param = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\BIS_fnc\fn_param.sqf";
|
|
BIS_fnc_relativeDirTo = compile("private '_dir';_dir=_this call{" + (preprocessFileLineNumbers "ca\modules\Functions\geometry\fn_relativeDirTo.sqf")+"};if(_dir>180)then{_dir=_dir-360;};if(_dir<-180)then{_dir=_dir+360;};_dir");
|
|
zombie_initialize = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_initialize.sqf";
|
|
|
|
// object_vehicleKilled = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_vehicleKilled.sqf"; //Event handler run on damage
|
|
object_setHitServer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_setHitServer.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles)
|
|
object_setFixServer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_setFixServer.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles)
|
|
object_getHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_getHit.sqf"; //gets the hit value for a HitPoint (i.e. HitLegs) against the selection (i.e. "legs"), returns the value
|
|
object_setHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_setHit.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles)
|
|
object_processHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_processHit.sqf"; //process the hit in the REVO damage system (records && sets hit)
|
|
object_delLocal = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_delLocal.sqf";
|
|
// object_cargoCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_cargoCheck.sqf"; //Run by the player || server to monitor changes in cargo contents
|
|
fnc_usec_damageHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandler.sqf"; //Event handler run on damage
|
|
fnc_veh_ResetEH = compile preprocessFileLineNumbers "\z\addons\dayz_code\init\veh_ResetEH.sqf"; //Initialize vehicle
|
|
// Vehicle damage fix
|
|
vehicle_handleDamage = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\vehicle_handleDamage.sqf";
|
|
vehicle_handleKilled = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\vehicle_handleKilled.sqf";
|
|
fnc_buildWeightedArray = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_buildWeightedArray.sqf"; //Checks which actions for nearby casualty
|
|
fnc_usec_damageVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandlerVehicle.sqf"; //Event handler run on damage
|
|
fnc_veh_handleDam = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleDam.sqf";
|
|
fnc_veh_handleKilled = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleKilled.sqf";
|
|
fnc_veh_handleRepair = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleRepair.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles)
|
|
fnc_veh_setFixServer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_setFixServer.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles)
|
|
local_setFuel = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_setFuel.sqf"; //Generated when someone refuels a vehicle
|
|
player_medBandage = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medBandaged.sqf";
|
|
|
|
//fnc_vehicleEventHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\init\vehicle_init.sqf"; //Initialize vehicle
|
|
fnc_inString = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_inString.sqf";
|
|
fnc_isInsideBuilding = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_isInsideBuilding.sqf"; //_isInside = [_unit,_building] call fnc_isInsideBuilding;
|
|
fnc_isInsideBuilding2 = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_isInsideBuilding2.sqf"; //_isInside = [_unit,_building] call fnc_isInsideBuilding2;
|
|
fnc_isInsideBuilding3 = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_isInsideBuilding3.sqf"; //_isInside = [_unit,_building] call fnc_isInsideBuilding3;
|
|
dayz_zombieSpeak = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_speak.sqf"; //Used to generate random speech for a unit
|
|
vehicle_getHitpoints = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\vehicle_getHitpoints.sqf";
|
|
local_gutObject = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_gutObject.sqf"; //Generated on the server (|| local to unit) when gutting an object
|
|
local_lockUnlock = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_lockUnlock.sqf"; //When vehicle is local to unit perform locking vehicle
|
|
local_gutObjectZ = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_gutObjectZ.sqf"; //Generated on the server (|| local to unit) when gutting an object
|
|
local_zombieDamage = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandlerZ.sqf"; //Generated by the client who created a zombie to track damage
|
|
local_eventKill = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_eventKill.sqf"; //Generated when something is killed
|
|
//player_weaponCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_weaponCheck.sqf"; //Run by the player || server to monitor whether they have picked up a new weapon
|
|
curTimeStr = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_curTimeStr.sqf";
|
|
player_medBandage = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medBandaged.sqf";
|
|
//player_medInject = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medInject.sqf";
|
|
player_medAntiBiotics = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medAntibiotics.sqf";
|
|
player_bloodCalc = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\bloodCalc.sqf";
|
|
fn_selectRandomLocation = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selectRandomLocation.sqf";
|
|
fn_chance = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_selectRandomChance.sqf";
|
|
fn_niceSpot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_niceSpot.sqf";
|
|
fnc_Obj_handleDam = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\obj_handleDam.sqf";
|
|
object_roadFlare = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_roadFlare.sqf";
|
|
player_medEpi = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medEpi.sqf";
|
|
player_medTransfuse = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medTransfuse.sqf";
|
|
player_medMorphine = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medMorphine.sqf";
|
|
player_breaklegs = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medBreakLegs.sqf";
|
|
player_medPainkiller = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medPainkiller.sqf";
|
|
world_isDay = {if ((daytime < (24 - dayz_sunRise)) && (daytime > dayz_sunRise)) then {true} else {false}};
|
|
player_humanityChange = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_humanityChange.sqf";
|
|
spawn_loot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\spawn_loot.sqf";
|
|
spawn_loot_small = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\spawn_loot_small.sqf";
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\traps\init.sqf";
|
|
// pseudo random for plantSpanwer
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\psrnd.sqf";
|
|
FNC_GetPlayerUID = {
|
|
private ["_object","_version","_PID"];
|
|
_object = _this select 0;
|
|
_version = productVersion select 3;
|
|
if (DayZ_UseSteamID) then {
|
|
_PID = GetPlayerUID _object;
|
|
} else {
|
|
if (_version >= 125548) then {
|
|
_PID = call (compile "GetPlayerUIDOld _object");
|
|
} else {
|
|
_PID = GetPlayerUID _object;
|
|
diag_log format["Your game version, %1, is less than the required for the old UID system; using Steam ID system instead. Update to 1.63.125548 (or latest steam beta)", _version];
|
|
};
|
|
};
|
|
_PID;
|
|
};
|
|
FNC_GetSetPos = { //DO NOT USE IF YOU NEED ANGLE COMPENSATION!!!!
|
|
private "_pos";
|
|
_thingy = _this select 0;
|
|
_pos = getPosASL _thingy;
|
|
if (surfaceIsWater _pos) then {
|
|
_thingy setPosASL _pos;
|
|
} else {
|
|
_thingy setPosATL (ASLToATL _pos);
|
|
};
|
|
};
|
|
FNC_GetPos = {
|
|
private "_pos";
|
|
if (isNil {_this select 0}) exitWith {[0,0,0]};
|
|
_thingy = _this select 0;
|
|
_pos = getPosASL _thingy;
|
|
if !(surfaceIsWater _pos) then {
|
|
_pos = ASLToATL _pos;
|
|
};
|
|
_pos
|
|
};
|
|
local_setFuel = {
|
|
private["_qty","_vehicle"];
|
|
_vehicle = _this select 0;
|
|
_qty = _this select 1;
|
|
_vehicle setFuel _qty;
|
|
};
|
|
|
|
dayz_EjectPlayer = {
|
|
// check if player in vehicle
|
|
private ["_noDriver","_vehicle","_inVehicle"];
|
|
_vehicle = vehicle player;
|
|
_inVehicle = (_vehicle != player);
|
|
if(_inVehicle) then {
|
|
_noDriver = ((_vehicle emptyPositions "driver") > 0);
|
|
if (_noDriver && (speed _vehicle) != 0) then {
|
|
player action [ "eject", _vehicle];
|
|
};
|
|
};
|
|
};
|
|
|
|
player_sumMedical = {
|
|
private["_character","_wounds","_legs","_arms","_medical", "_status"];
|
|
_character = _this;
|
|
_wounds = [];
|
|
if (_character getVariable["USEC_injured",false]) then {
|
|
{
|
|
_status = _character getVariable["hit_"+_x,false];
|
|
if ((typeName _status == "BOOLEAN") AND {(_status)}) then {
|
|
_wounds set [count _wounds,_x];
|
|
};
|
|
} forEach USEC_typeOfWounds;
|
|
};
|
|
_legs = _character getVariable ["hit_legs",0];
|
|
_arms = _character getVariable ["hit_arms",0];
|
|
_medical = [
|
|
_character getVariable["USEC_isDead",false],
|
|
_character getVariable["NORRN_unconscious", false],
|
|
_character getVariable["USEC_infected",false],
|
|
_character getVariable["USEC_injured",false],
|
|
_character getVariable["USEC_inPain",false],
|
|
_character getVariable["USEC_isCardiac",false],
|
|
_character getVariable["USEC_lowBlood",false],
|
|
_character getVariable["USEC_BloodQty",12000],
|
|
_wounds,
|
|
[_legs,_arms],
|
|
_character getVariable["unconsciousTime",0],
|
|
_character getVariable["blood_type",""],
|
|
_character getVariable["rh_factor",""],
|
|
_character getVariable["messing",[0,0,0]],
|
|
_character getVariable["blood_testdone",false]
|
|
];
|
|
_medical
|
|
};
|
|
|
|
init_keyboard = {
|
|
waituntil {!(isNull (findDisplay 46))};
|
|
keyboard_keys = nil;
|
|
[controlNull, 1, false,false,false] call compile preprocessFileLineNumbers (MISSION_ROOT+'keyboard.sqf');
|
|
};
|
|
|
|
dayz_reduceItems = {
|
|
private ["_item", "_class","_amount","_qtyRemaining"];
|
|
//Item in current inventory.
|
|
_item = _this select 0;
|
|
//Class type to use.
|
|
_class = _this select 1;
|
|
|
|
//Does player have the original item? (Not Really needed player_useMeds checks)
|
|
if (_item IN magazines player) exitWith {
|
|
|
|
//Amount in current box (will be -1 for a random chance to start the reducing)
|
|
_amount = getNumber(configfile >> "CfgMagazines" >> _item >> _class >> "amount");
|
|
|
|
//Item to move too if there is some left
|
|
_qtyRemaining = getText(configfile >> "CfgMagazines" >> _item >> _class >> "qtyRemaining");
|
|
|
|
//Only run for the random amount.
|
|
if (_amount == -1) then {
|
|
//Chance to start the reduction
|
|
if ([getNumber(configfile >> "CfgMagazines" >> _item >> _class >> "chance")] call fn_chance) then {
|
|
player removeMagazine _item;
|
|
player addMagazine _qtyRemaining;
|
|
};
|
|
} else {
|
|
player removeMagazine _item;
|
|
player addMagazine _qtyRemaining;
|
|
};
|
|
};
|
|
true
|
|
};
|
|
|
|
|
|
dayz_inflame = {
|
|
private ["_object", "_hasTool"];
|
|
|
|
_object = _this select 0;
|
|
// true = light the fire
|
|
if (_this select 1) then {
|
|
|
|
_hasTool = false;
|
|
{
|
|
if (_x IN items player) exitWith {
|
|
_matches = getNumber(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "matches");
|
|
_qtyRemaining = getText(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "qtyRemaining");
|
|
|
|
//diag_log format["%1[%2,%3]",_x,_matches,_qtyRemaining];
|
|
|
|
if (_matches == -1) then {
|
|
if ([getNumber(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "chance")] call fn_chance) then {
|
|
player removeWeapon _x;
|
|
player addWeapon _qtyRemaining;
|
|
};
|
|
} else {
|
|
// remove a match
|
|
player removeWeapon _x;
|
|
player addWeapon _qtyRemaining;
|
|
};
|
|
_hasTool = true;
|
|
};
|
|
} count Dayz_Ignators;
|
|
|
|
if (_hasTool) then { _object inflame true; };
|
|
} else { // put out the fire
|
|
_object inflame false;
|
|
};
|
|
};
|
|
|
|
dayz_inflame_showMenu = {
|
|
private ["_object", "_ret", "_flame", "_islit", "_hasTool", "_whatIwant"];
|
|
|
|
_object = _this select 0;
|
|
_whatIwant = _this select 1;
|
|
_ret = false;
|
|
|
|
_islit = (inflamed _object);
|
|
|
|
_hasTool = false;
|
|
if (!_islit) then {
|
|
{
|
|
if (_x IN items player) exitWith { _hasTool = true; };
|
|
} count Dayz_Ignators;
|
|
};
|
|
_ret = (_whatIwant and !_islit and _hasTool) or (!_whatIwant and _isLit);
|
|
|
|
_ret
|
|
};
|
|
|
|
dayz_inflame_other = {
|
|
private ["_fireplace", "_ret", "_flame", "_islit", "_hasTool", "_isLit", "_pos"];
|
|
|
|
_fireplace = _this select 0;
|
|
if (_this select 1) then { // true = light the fire
|
|
_flame = nearestObjects [_fireplace, ["flamable_DZ"], 1];
|
|
_flame = if (count _flame > 0) then { _flame select 0 } else { objNull };
|
|
if (isNull _flame) then {
|
|
//_flame = if (local _fireplace) then { "flamable_DZ" createVehicleLocal getMarkerpos "respawn_west" } else { createVehicle [ "flamable_DZ", getMarkerpos "respawn_west", [], 0, "CAN_COLLIDE"] };
|
|
_flame = createVehicle [ "flamable_DZ", getPosATL _fireplace, [], 0, "CAN_COLLIDE"]; // fireplace can be local (towngenerator, poi...) but flames will be networked
|
|
_pos = _fireplace modelToWorld (_fireplace selectionPosition "ohniste"); // ATL
|
|
_flame setPosATL _pos;
|
|
};
|
|
|
|
_hasTool = false;
|
|
{
|
|
if (_x IN items player) exitWith {
|
|
_matches = getNumber(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "matches");
|
|
_qtyRemaining = getText(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "qtyRemaining");
|
|
|
|
//diag_log format["%1[%2,%3]",_x,_matches,_qtyRemaining];
|
|
|
|
if (_matches == -1) then {
|
|
if ([getNumber(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "chance")] call fn_chance) then {
|
|
player removeWeapon _x;
|
|
player addWeapon _qtyRemaining;
|
|
};
|
|
} else {
|
|
// remove a match
|
|
player removeWeapon _x;
|
|
player addWeapon _qtyRemaining;
|
|
};
|
|
_hasTool = true;
|
|
};
|
|
} count Dayz_Ignators;
|
|
if (_hasTool) then { _flame inflame true; };
|
|
|
|
} else { // put out the fire
|
|
_flame = nearestObjects [_fireplace, ["flamable_DZ"], 1];
|
|
if (count _flame > 0) then { (_flame select 0) inflame false; };
|
|
};
|
|
};
|
|
|
|
dayz_inflame_showMenu_other = {
|
|
private ["_fireplace", "_ret", "_flame", "_islit", "_hasTool", "_whatIwant"];
|
|
|
|
_fireplace = _this select 0;
|
|
_whatIwant = _this select 1;
|
|
_ret = false;
|
|
// return a boolean. true <=> player can put out the lit fire, can light a fire with match
|
|
_flame = nearestObjects [_fireplace, ["flamable_DZ"], 1];
|
|
_flame = if (count _flame > 0) then { _flame select 0 } else { objNull };
|
|
_islit = !(isNull _flame) and {(inflamed _flame)};
|
|
_hasTool = false;
|
|
if (!_islit) then {
|
|
{
|
|
if (_x IN items player) exitWith { _hasTool = true; };
|
|
} count Dayz_Ignators;
|
|
};
|
|
_ret = (_whatIwant and !_islit and _hasTool) or (!_whatIwant and _isLit);
|
|
// systemChat str [_flame, _hasTool, _islit, _ret];
|
|
|
|
_ret
|
|
};
|
|
|
|
isInflamed = {
|
|
private [ "_flame" ];
|
|
|
|
_flame = nearestObjects [_this, ["flamable_DZ"], 1];
|
|
_flame = if (count _flame > 0) then { _flame select 0 } else { objNull };
|
|
!(isNull _flame) and {(inflamed _flame)}
|
|
};
|
|
|
|
//Matchbox combine system.
|
|
dayz_combine_Inventory = {
|
|
private [ "_qty", "_fullBox", "_remain"];
|
|
|
|
//ItemMatchbox,ItemAntibiotic
|
|
|
|
_qty = 0;
|
|
{
|
|
if (configName inheritsFrom (configfile >> "cfgWeapons" >> _x) == "ItemMatchbox") then {
|
|
_qty = _qty + getNumber(configfile >> "cfgWeapons" >> _x >> "Ignators" >> "matches");
|
|
player removeWeapon _x;
|
|
};
|
|
} count (items player);
|
|
|
|
// limit to 1 fullbox and 1 used matchbox
|
|
_fullBox = floor (_qty / 5);
|
|
_remain = _qty % 5;
|
|
|
|
if (_fullBox > 0) then { player addWeapon "Item5Matchbox"; };
|
|
|
|
if (_fullBox > 1) then {
|
|
player addWeapon "Item4Matchbox";
|
|
} else {
|
|
if (_remain > 0) then { player addWeapon ("Item"+str(_remain)+"Matchbox"); };
|
|
};
|
|
};
|
|
|
|
dayz_engineSwitch = {
|
|
//private["_unit","_humanity","_delay"];
|
|
_vehicle = _this select 0;
|
|
_state = _this select 1;
|
|
|
|
if (local _vehicle) then {
|
|
_vehicle engineOn _state;
|
|
} else {
|
|
PVDZ_send = [_vehicle,"SetEngineState",[_vehicle,_state]];
|
|
publicVariableServer "PVDZ_send";
|
|
};
|
|
};
|
|
|
|
init_keyboard = {
|
|
waituntil {!(isNull (findDisplay 46))};
|
|
keyboard_keys = nil;
|
|
[controlNull, 1, false,false,false] call compile preprocessFileLineNumbers (MISSION_ROOT+'keyboard.sqf');
|
|
};
|
|
/*
|
|
//Server Only
|
|
if (isServer) then {
|
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\init\server_functions.sqf";
|
|
} else {
|
|
eh_localCleanup = {};
|
|
};
|
|
*/
|
|
initialized = true;
|