Jump to content

[Discontinued] Emerald Interior Designer


Recommended Posts

ui_selectSlot.sqf

 

private ["_control","_button","_parent","_group","_pos","_item","_conf","_name","_cfgActions","_numActions","_height","_menu","_config","_type","_script","_outputOriented","_compile","_array","_outputClass","_outputType","_erc_cfgActions", "_erc_numActions"];
disableSerialization;
_control = _this select 0;
_button = _this select 1;
_parent = findDisplay 106;
 
//if ((time - dayzClickTime) < 1) exitWith {};
 
if (_button == 1) then {
//dayzClickTime = time;
_group = _parent displayCtrl 6902;
 
_pos = ctrlPosition _group;
_pos set [0,((_this select 2) + 0.48)];
_pos set [1,((_this select 3) + 0.07)];
 
_item = gearSlotData _control;
 
_conf = configFile >> "cfgMagazines" >> _item;
if (!isClass _conf) then {
_conf = configFile >> "cfgWeapons" >> _item;
};
_name = getText(_conf >> "displayName");
 
_cfgActions = _conf >> "ItemActions";
_numActions = (count _cfgActions);
_height = 0;
 
//Populate Menu
for "_i" from 0 to (_numActions - 1) do 
{
_menu = _parent displayCtrl (1600 + _i);
_menu ctrlShow true;
_config = (_cfgActions select _i);
_type = getText (_config >> "text");
_script = getText (_config >> "script");
_outputOriented = getNumber (_config >> "outputOriented") == 1;
_height = _height + (0.025 * safezoneH);
_compile =  format["_id = '%2' %1;",_script,_item];
uiNamespace setVariable ['uiControl', _control];
if (_outputOriented) then {
/*
This flag means that the action is output oriented
the output class will then be transferred to the script
and the type used for the name
*/
_array = getArray (_config >> "output");
_outputClass = _array select 0;
_outputType = _array select 1;
_name = getText (configFile >> _outputType >> _outputClass >> "displayName");
_compile =  format["_id = ['%2',%3] %1;",_script,_item,_array];
};
 
_menu ctrlSetText format[_type,_name];
_menu ctrlSetEventHandler ["ButtonClick",_compile];
};
 
// Add extra context menus
_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);
_erc_numActions = (count _erc_cfgActions);
if (isClass _erc_cfgActions) then {
for "_j" from 0 to (_erc_numActions - 1) do 
{
_menu = _parent displayCtrl (1600 + _j + _numActions);
_menu ctrlShow true;
_config = (_erc_cfgActions select _j);
_text = getText (_config >> "text");
_script = getText (_config >> "script");
_height = _height + (0.025 * safezoneH);
uiNamespace setVariable ['uiControl', _control];
_menu ctrlSetText _text;
_menu ctrlSetEventHandler ["ButtonClick",_script];
};
};
 
_pos set [3,_height];
//hint format["Obj: %1 \nHeight: %2\nPos: %3",_item,_height,_grpPos];
 
_group ctrlShow true;
ctrlSetFocus _group;
_group ctrlSetPosition _pos;
_group ctrlCommit 0;
};
       // Add extra context menus
_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);
        _erc_numActions = (count _erc_cfgActions);
        if (isClass _erc_cfgActions) then {
                for "_j" from 0 to (_erc_numActions - 1) do 
                        {
                        _menu =  _parent displayCtrl (1600 + _j + _numActions);
                        _menu ctrlShow true;
                        _config =  (_erc_cfgActions select _j);
                        _text =  getText (_config >> "text");
                        _script =  getText (_config >> "script");
                        _height = _height + (0.025 * safezoneH);
_compile =  format["_id = '%2' %1;",_script,_item];
                        uiNamespace setVariable ['uiControl', _control];
 
 
                        _menu ctrlSetText _text;
_menu ctrlSetTextColor [1,0.25,0.25,1];
                        _menu ctrlSetEventHandler ["ButtonClick",_script];
 
 
                };
        };
_menu ctrlSetText format[_type,_name];
_menu ctrlSetEventHandler ["ButtonClick",_compile];};
 
 
 
 
 
 
 
 
compiles.sqf
/*
FUNCTION COMPILES
*/
//Player only
if (!isDedicated) then {
 
"filmic" setToneMappingParams [0.07, 0.31, 0.23, 0.37, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";
 
BIS_Effects_Burn = compile preprocessFile "\ca\Data\ParticleEffects\SCRIPTS\destruction\burn.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
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 "\custom\fn_selfActions.sqf"; //Checks which actions for self
fnc_usec_unconscious = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_unconscious.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";
// player_spawnLootCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_spawnlootCheck.sqf";
// player_spawnZedCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_spawnzedCheck.sqf";
building_spawnLoot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\building_spawnLoot.sqf";
// player_taskHint = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_taskHint.sqf";
building_spawnZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\building_spawnZombies.sqf";
dayz_spaceInterrupt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\dayz_spaceInterrupt.sqf";
//animal_monitor = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\animal_monitor.sqf";
// building_monitor = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\building_monitor.sqf";
player_fired = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_fired.sqf"; //Runs when player fires. Alerts nearby Zeds depending on calibre and 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_removeNet = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_removeNet.sqf";
player_removeTankTrap =     compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_removeTankTrap.sqf";
 
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";
// control_zombieAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\control_zombieAgent.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";
//spawn_flies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\spawn_flies.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_login = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_login.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";
fn_gearMenuChecks = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_gearMenuChecks.sqf";
 
//Objects
object_roadFlare = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_roadFlare.sqf";
object_setpitchbank = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_setpitchbank.sqf";
object_monitorGear = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_monitorGear.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
 
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_copyKey = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_copyKey.sqf";
player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.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_useMeds = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_useMeds.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_chopWood = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_chopWood.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";
player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf";
player_wearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_wearClothes.sqf";
//player_dropWeapon = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_dropWeapon.sqf";
//playerpip_setTrap = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_setTrap.sqf";
object_pickup = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\object_pickup.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_mineOre = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_mineOre.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_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 "scripts\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";
 
//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";
onPreloadStarted "dayz_preloadFinished = false;";
onPreloadFinished "dayz_preloadFinished = true;";
 
// helper functions
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";
// combination of check and remove items
player_checkAndRemoveItems = {
private ["_items","_b"];
_items = _this;
_b = _items call player_checkItems;
if (_b) then {
_b = _items call player_removeItems;
};
_b
};
 
 
epoch_totalCurrency = {
// total currency
_total_currency = 0;
{
_part =  (configFile >> "CfgMagazines" >> _x);
_worth =  (_part >> "worth");
if isNumber (_worth) then {
_total_currency = _total_currency + getNumber(_worth);
};
} forEach (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));
};
};
} forEach _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;
 
 
 
 
//
RunTime = 0;
TotalRuns = 0;
 
fnc_dump = {
private["_code","_benchmark","_averageRunTime"];
_code = _this select 0;
_benchmark = _this select 1;
 
RunTime = RunTime + _benchmark;
TotalRuns = TotalRuns + 1;
_averageRunTime = RunTime/TotalRuns;
 
diag_log format["%1 - %2 (%3 / %4)",_code,_benchmark,_averageRunTime,TotalRuns];
};
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));
_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 and !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_losCheck = {
private["_target","_agent","_cantSee"];
_target = _this select 0; // PUT THE PLAYER IN FIRST ARGUMENT!!!!
_agent = _this select 1;
_cantSee = true;
if (!isNull _target) then {
 
_tPos = visiblePositionASL _target;
_zPos = visiblePositionASL _agent;
 
_tPos set [2,(_tPos select 2)+1];
_zPos set [2,(_zPos select 2)+1];
 
if ((count _tPos > 0) and (count _zPos > 0)) then {
_cantSee = terrainIntersectASL [_tPos, _zPos];
if (!_cantSee) then {
_cantSee = lineIntersects [_tPos, _zPos, _agent, vehicle _target];
};
};
};
_cantSee
};
 
eh_zombieInit = {
private["_unit","_pos"];
//_unit = _this select 0;
//_pos = getPosATL _unit;
//_id = [_pos,_unit] execFSM "\z\AddOns\dayz_code\system\zombie_agent.fsm";
};
 
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};
} forEach _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;
} forEach _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) then {
_control ctrlShow false;
} else {
_control ctrlShow true;
};
};
 
gear_ui_offMenu = {
private["_control","_parent","_menu"];
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;
};
 
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;
} forEach _objInfo;
_i = _i + 2; // skip the ": " part
for "_k" from _i to _lenInfo do {
_objName = _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; };
} forEach _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";
 
//This is still needed but the fsm should terminate if any errors pop up.
[] spawn {
        private["_timeOut","_display","_control1","_control2"];
        disableSerialization;
        _timeOut = 0;
        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 < 12000 } do {
            if (dayz_clientPreload && dayz_authed) exitWith { diag_log "PLOGIN: Login loop completed!"; };
            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(_timeOut*0.01)];
            };
 
            _timeOut = _timeOut + 1;
 
            if (_timeOut >= 12000) then {
                1 cutText [localize "str_player_login_timeout", "PLAIN DOWN"];
                sleep 10;
                endLoadingScreen;
                endMission "END1";
            };
 
            sleep 0.01;
        };
};
 
dayz_meleeMagazineCheck = {
                private["_meleeNum","_magType"];
                _magType =         ([] + getArray (configFile >> "CfgWeapons" >> _wpnType >> "magazines")) select 0;
                _meleeNum = ({_x == _magType} count magazines player);
                if (_meleeNum < 1) then {
                        player addMagazine _magType;
                };
        };
 
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";
 
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
zombie_initialize = compile preprocessFileLineNumbers "\z\addons\dayz_code\init\zombie_init.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 and 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 or 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_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_isInsideBuilding;
fnc_isInsideBuilding3 = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_isInsideBuilding3.sqf"; //_isInside = [_unit,_building] call fnc_isInsideBuilding;
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 (or 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 (or 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_setFuel = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_setFuel.sqf"; //Generated when someone refuels a vehicle
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 or 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_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)) and (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";
// player_projectileNear = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_projectileNear.sqf";
 
dayz_HungerThirst = {
dayz_hunger = dayz_hunger + (_this select 0);
dayz_thirst = dayz_thirst + (_this select 1);
};
 
// better item counting by maca134 - https://github.com/vbawol/DayZ-Epoch/issues/916
MC_item_spaces = {
        private ["_unit", "_item", "_slotsEmpty", "_slotsItem", "_slotsAfterAdd", "_c", "_space"];
        _unit = _this select 0;
        _item = _this select 1;
 
        _slotsEmpty = [_unit] call BIS_fnc_invSlotsEmpty;
        _slotsItem = [_item] call BIS_fnc_invSlotType;
        if ((typeName _unit) != "OBJECT") exitWith {textLogFormat ["INV_ Error: BIS_FNC_invAdd - 1st parameter must be unit! %1", _this];false};
        if (((typeName _item) != "CONFIG") && ((typeName _item) != "STRING")) exitWith {textLogFormat ["INV_ Error: BIS_FNC_invAdd - 2nd parameter must be config|string|array of (config|string)! %1", _this];false};
        if (isNil {_item})  exitWith {textLogFormat ["INV_ Error: BIS_FNC_invAdd - 2nd parameter - _item is undefined! %1", _this];false};
        _c = 0;
        _space = 0;
        {
                if (_x > 0) exitWith {
                        _space = floor((_slotsEmpty select _c) / _x);
                };
                _c = _c + 1;
        } forEach _slotsItem;
        _space
};
 
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 and (speed _vehicle) != 0) then {
player action [ "eject", _vehicle];
};
};
};
 
player_sumMedical = {
private["_character","_wounds","_legs","_arms","_medical"];
_character = _this;
_wounds = [];
if (_character getVariable["USEC_injured",false]) then {
{
if (_character getVariable[_x,false]) 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["messing",[0,0]]
];
_medical
};
 
//Server Only
if (isServer) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_server\init\server_functions.sqf";
} else {
eh_localCleanup = {};
};
 
initialized = true;
 
 
if (!isDedicated) then {
player_build = compile preprocessFileLineNumbers "custom\snap_build\player_build.sqf";
player_buildControls = compile preprocessFileLineNumbers "custom\snap_build\player_buildControls.sqf";
snap_object = compile preprocessFileLineNumbers "custom\snap_build\snap_object.sqf";
};
 
 
Link to comment
Share on other sites

@beani: could you please put code in your post in spoiler tags?

[spoiler]
code
[/spoiler]

here's how I do my custom compiles:

 

init.sqf

//Load in compiled functions
call compile preprocessFileLineNumbers "custom\variables.sqf";				//Initilize the Variables (IMPORTANT: Must happen very early)
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf";				//Initilize the publicVariable event handlers
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf";	//Functions used by CLIENT for medical
progressLoadingScreen 0.4;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";				//Compile regular functions
call compile preprocessFileLineNumbers "custom\compiles.sqf"; //Compile custom compiles
progressLoadingScreen 0.5;
call compile preprocessFileLineNumbers "server_traders.sqf";				//Compile trader configs
progressLoadingScreen 1.0;

You will notice right away that I compile file twice in line 78 and 79. This means I still call for original compiles.sqf file, but after that I immediately override functions that is of interest to me in a following file:

custom\compiles: (DO NOT COPY PASTE THIS!)

fnc_usec_selfActions = compile preprocessFileLineNumbers "custom\fn_selfActions.sqf";
player_selectSlot =            compile preprocessFileLineNumbers "custom\ui_selectSlot.sqf";
local_lockUnlock =			compile preprocessFileLineNumbers "custom\local_lockUnlock.sqf";
player_build =				compile preprocessFileLineNumbers "custom\player_build.sqf";

if (!isDedicated) then {
	player_build		= compile preprocessFileLineNumbers "custom\snap_build\player_build.sqf";
	player_buildControls	= compile preprocessFileLineNumbers "custom\snap_build\player_buildControls.sqf";
	snap_object		= compile preprocessFileLineNumbers "custom\snap_build\snap_object.sqf";
};

custom\ui_selectSlot.sqf:

private ["_control","_button","_parent","_group","_pos","_item","_conf","_name","_cfgActions","_numActions","_height","_menu","_config","_type","_script","_outputOriented","_compile","_array","_outputClass","_outputType","_key_colors","_ownerKeyId","_itemsPlayer","_hasKey","_objects","_ownerID","_i"];
disableSerialization;
_control =  _this select 0;
_button = _this select 1;
_parent =  findDisplay 106;


//if ((time - dayzClickTime) < 1) exitWith {};


if (_button == 1) then {
//dayzClickTime = time;
_group = _parent displayCtrl 6902;


_pos =  ctrlPosition _group;
_pos set [0,((_this select 2) + 0.48)];
_pos set [1,((_this select 3) + 0.07)];


_item = gearSlotData _control;


_conf = configFile >> "cfgMagazines" >> _item;
if (!isClass _conf) then {
_conf = configFile >> "cfgWeapons" >> _item;
};
_name = getText(_conf >> "displayName");


_cfgActions = _conf >> "ItemActions";
_numActions = (count _cfgActions);
_height = 0;


//Populate Menu
for "_i" from 0 to (_numActions - 1) do 
{
_menu =  _parent displayCtrl (1600 + _i);
_menu ctrlShow true;
_config =  (_cfgActions select _i);
_type =  getText (_config >> "text");
_script =  getText (_config >> "script");
_outputOriented =  getNumber (_config >> "outputOriented") == 1;
_height = _height + (0.025 * safezoneH);
_compile =  format["_id = '%2' %1;",_script,_item];
uiNamespace setVariable ['uiControl', _control];
if (_outputOriented) then {
/*
This flag means that the action is output oriented
the output class will then be transferred to the script
and the type used for the name
*/ 
_array =  getArray (_config >> "output");
_outputClass = _array select 0;
_outputType = _array select 1;
_name = getText (configFile >> _outputType >> _outputClass >> "displayName");
_compile =  format["_id = ['%2',%3] %1;",_script,_item,_array];
};


_menu ctrlSetText format[_type,_name];
_menu ctrlSetEventHandler ["ButtonClick",_compile];
};


// Add extra context menus (selfBB)
_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);
_erc_numActions = (count _erc_cfgActions);
if (isClass _erc_cfgActions) then {
    for "_j" from 0 to (_erc_numActions - 1) do 
    {
        _menu =  _parent displayCtrl (1600 + _j + _numActions);
        _menu ctrlShow true;
        _config =  (_erc_cfgActions select _j);
        _text =  getText (_config >> "text");
        _script =  getText (_config >> "script");
        _height = _height + (0.025 * safezoneH);
        uiNamespace setVariable ['uiControl', _control];
        _menu ctrlSetText _text;
        _menu ctrlSetEventHandler ["ButtonClick",_script];
    };
};


_pos set [3,_height];
//hint format["Obj: %1 \nHeight: %2\nPos: %3",_item,_height,_grpPos]; 


_group ctrlShow true;
ctrlSetFocus _group;
_group ctrlSetPosition _pos;
_group ctrlCommit 0;
};

Link to comment
Share on other sites

Looking forward to trying this out, man. Looks great!

 

But just a quick question before I implement it. In dialogs.hpp the include below is repeated.

onLoad = "_this ExecVM 'interior\items.sqf'";

I have the script in custom/interior/items.sqf from my mission folder. Should I change it or leave it be?

Link to comment
Share on other sites

Looking forward to trying this out, man. Looks great!

 

But just a quick question before I implement it. In dialogs.hpp the include below is repeated.

onLoad = "_this ExecVM 'interior\items.sqf'";

I have the script in custom/interior/items.sqf from my mission folder. Should I change it or leave it be?

 

Whenever dialog is created, this launches items.sqf that adds all items to menus. If you change any paths, you'll need to change this, too. In fact you'll need to update all paths ofcourse. 

Also good job keeping it tidy, I usually keep all other people scripts inside custom folder, too

Link to comment
Share on other sites

Tried installing, but the server was stuck at waiting for host. The .rpt logs showed the following error.

Obsolete class Animations defined in bin\config.bin/RscCompass/
Obsolete class Animations defined in bin\config.bin/RscWatch/
ErrorMessage: File mpmissions\DayZ_Epoch_11.Chernarus\custom\interior\defines.hpp, line 21: .RscText: Member already defined.
18:02:28 NetServer::finishDestroyPlayer(1393393109): DESTROY immediately after CREATE, both cancelled
18:03:12 NetServer::finishDestroyPlayer(1884501924): DESTROY immediately after CREATE, both cancelled

Anyone who has encountered the same, and know how to unfuck it?  :)

Link to comment
Share on other sites

1. why first try build wrong(first time need press ESC, then all ok)?

2. u can use file dayz_spaceInterrupt.sqf to change _offset = [0,X.X,0]; (Tab + PageUp)

if u build picture in small room... its jast impossible, or 

 fnc_Pos_fired1 = {
disableSerialization;
_indexPic = lbCurSel 2667; // index of selection
_returnTextPic = lbText [2667, _indexPic]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexPic,_returnTextPic];// display the value
classnameChange = _returnTextPic;
fordel1 = true;
chvar1 = true;
 };
if (chvar1) then _offset = [0,1.3,0];
if (chvar1) then _offset = [0,2.0,0];
chvar1 = false;
chvar2 = false;
Link to comment
Share on other sites

Tried installing, but the server was stuck at waiting for host. The .rpt logs showed the following error.

Obsolete class Animations defined in bin\config.bin/RscCompass/
Obsolete class Animations defined in bin\config.bin/RscWatch/
ErrorMessage: File mpmissions\DayZ_Epoch_11.Chernarus\custom\interior\defines.hpp, line 21: .RscText: Member already defined.
18:02:28 NetServer::finishDestroyPlayer(1393393109): DESTROY immediately after CREATE, both cancelled
18:03:12 NetServer::finishDestroyPlayer(1884501924): DESTROY immediately after CREATE, both cancelled

Anyone who has encountered the same, and know how to unfuck it?  :)

delete RscText class in defines.hpp and any other conflicting class you've already defined somewhere else

 

 

 

1. why first try build wrong(first time need press ESC, then all ok)?

2. u can use file dayz_spaceInterrupt.sqf to change _offset = [0,X.X,0]; (Tab + PageUp)

if u build picture in small room... its jast impossible, or 

 fnc_Pos_fired1 = {
disableSerialization;
_indexPic = lbCurSel 2667; // index of selection
_returnTextPic = lbText [2667, _indexPic]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexPic,_returnTextPic];// display the value
classnameChange = _returnTextPic;
fordel1 = true;
chvar1 = true;
 };
if (chvar1) then _offset = [0,1.3,0];
if (chvar1) then _offset = [0,2.0,0];
chvar1 = false;
chvar2 = false;

 

1) its a bug, not sure how to fix

2) I am not sure what you mean with that, it's kind of hard to understand what are you trying to achieve since you modded it

Link to comment
Share on other sites

is anyone using this in combination with the tie playerid to plotpole?

 

i cannot build on my own plotpole!

found the solution for the one who is using this tie playerid to plotpole.

 

Replace this code with the spawn.sqf 

/*

DayZ Base Building

Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].

Note: Edit the _classname variable below to be the correct classname of the item you want to build, and I suggest you name the file appropiately!

Recommended to use alongside Maca's excellent 'right clicks' system: http://epochmod.com/...tions-to-items/

Edits by Mike of http://www.petuniaserver.com/ - Original file & all kudos to the EPOCH devs! http://www.dayzepoch.com

*/

private ["_plotReq","_proceed","_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"];

_plotReq = true; //Plotpole requirement to build enabled

_playerUID = getPlayerUID player;

_found=[_playerUID,"AX"] call KRON_StrInStr;

if (_found) then {

_playerUID=[_playerUID] call KRON_convertPlayerUID;

};

fnc_Pos_fired1 = {

disableSerialization;

_indexPic = lbCurSel 2667; // index of selection

_returnTextPic = lbText [2667, _indexPic]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexPic,_returnTextPic];// display the value

classnameChange = _returnTextPic;

};

fnc_Pos_fired2 = {

disableSerialization;

_indexChair = lbCurSel 2668; // index of selection

_returnTextChair = lbText [2668, _indexChair]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexChair,_returnTextChair];// display the value

classnameChange = _returnTextChair;

};

fnc_Pos_fired3 = {

disableSerialization;

_indexBed = lbCurSel 2669; // index of selection

_returnTextBed = lbText [2669, _indexBed]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexBed,_returnTextBed];// display the value

classnameChange = _returnTextBed;

};

fnc_Pos_fired4 = {

disableSerialization;

_indexBath = lbCurSel 2670; // index of selection

_returnTextBath = lbText [2670, _indexBath]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexBath,_returnTextBath];// display the value

classnameChange = _returnTextBath;

};

fnc_Pos_fired5 = {

disableSerialization;

_indexShelf = lbCurSel 2671; // index of selection

_returnTextShelf = lbText [2671, _indexShelf]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexShelf,_returnTextShelf];// display the value

classnameChange = _returnTextShelf;

};

fnc_Pos_fired6 = {

disableSerialization;

_indexMisc = lbCurSel 2672; // index of selection

_returnTextMisc = lbText [2672, _indexMisc]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexMisc,_returnTextMisc];// display the value

classnameChange = _returnTextMisc;

};

fnc_Pos_fired7 = {

disableSerialization;

_indexTable = lbCurSel 2673; // index of selection

_returnTextTable = lbText [2673, _indexTable]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexTable,_returnTextTable];// display the value

classnameChange = _returnTextTable;

};

fnc_Pos_fired8 = {

disableSerialization;

_indexExt = lbCurSel 2674; // index of selection

_returnTextExt = lbText [2674, _indexExt]; // name of selection

hint format["BAR : [%1] \n [%2]",_indexExt,_returnTextExt];// display the value

classnameChange = _returnTextExt;

};

_classname = classnameChange;

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; };

DZE_ActionInProgress = true;

_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;

_isWater = dayz_isSwimming;

_cancel = false;

_reason = "";

_canBuildOnPlot = true;

_vehicle = vehicle player;

_inVehicle = (_vehicle != player);

DZE_Q = false;

DZE_Z = false;

DZE_Q_alt = false;

DZE_Z_alt = false;

DZE_Q_ctrl = false;

DZE_Z_ctrl = false;

DZE_5 = false;

DZE_4 = false;

DZE_6 = false;

DZE_cancelBuilding = false;

call gear_ui_init;

closeDialog 1;

if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];};

if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];};

if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];};

if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];};

_item = _this;

// Need Near Requirements

_abort = false;

_distance = 3;

_reason = "";

if(_abort) exitWith {

cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"];

DZE_ActionInProgress = false;

};

_classnametmp = _classname;

//_require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require");

_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");

_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview");

_lockable = 0;

_requireplot = DZE_requireplot;

if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then {

_requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot");

};

_isAllowedUnderGround = 1;

if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then {

_isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground");

};

_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset");

if((count _offset) <= 0) then {

_offset = [0,3.5,0]; //This is distance of object from player XYZ.. increase Y if you want an object to spawn further away from player

};

_isPole = (_classname == "Plastic_Pole_EP1_DZ");

_isLandFireDZ = (_classname == "Land_Fire_DZ");

_distance = DZE_PlotPole select 0;

_needText = localize "str_epoch_player_246";

if(_isPole) then {

_distance = DZE_PlotPole select 1;

};

_proceed = true;

// check for near plot

_findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], 30];

_findNearestPole = [];

{if (alive _x) then {_findNearestPole set [(count _findNearestPole),_x];};} foreach _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

if(_IsNearPlot >= 1) then {

_proceed = false;

_plotReq = false;

_nearestPole = _findNearestPole select 0;

// Find owner

_ownerID = _nearestPole getVariable["CharacterID","0"];

// check if friendly to owner

if(_playerUID!= _ownerID) then {

_friendlies = player getVariable ["friendlyTo",[]];

// check if friendly to owner

if(!(_ownerID in _friendlies)) then {

_proceed = false;

} else {

_proceed = true;

};

} else {

_proceed = true;

};

};

_missing = "";

_location = [0,0,0];

_isOk = true;

// get inital players position

_location1 = getPosATL player;

_dir = getDir player;

_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

_object attachTo [player,_offset];

_position = getPosATL _object;

cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"];

_objHDiff = 0;

while {_isOk} do {

_zheightchanged = false;

_zheightdirection = "";

_rotate = false;

if (DZE_Q) then {

DZE_Q = false;

_zheightdirection = "up";

_zheightchanged = true;

};

if (DZE_Z) then {

DZE_Z = false;

_zheightdirection = "down";

_zheightchanged = true;

};

if (DZE_Q_alt) then {

DZE_Q_alt = false;

_zheightdirection = "up_alt";

_zheightchanged = true;

};

if (DZE_Z_alt) then {

DZE_Z_alt = false;

_zheightdirection = "down_alt";

_zheightchanged = true;

};

if (DZE_Q_ctrl) then {

DZE_Q_ctrl = false;

_zheightdirection = "up_ctrl";

_zheightchanged = true;

};

if (DZE_Z_ctrl) then {

DZE_Z_ctrl = false;

_zheightdirection = "down_ctrl";

_zheightchanged = true;

};

if (DZE_4) then {

_rotate = true;

DZE_4 = false;

_dir = 180;

};

if (DZE_6) then {

_rotate = true;

DZE_6 = false;

_dir = 0;

};

if(_rotate) then {

_object setDir _dir;

_object setPosATL _position;

//diag_log format["DEBUG Rotate BUILDING POS: %1", _position];

};

if(_zheightchanged) then {

detach _object;

_position = getPosATL _object;

if(_zheightdirection == "up") then {

_position set [2,((_position select 2)+0.1)];

_objHDiff = _objHDiff + 0.1;

};

if(_zheightdirection == "down") then {

_position set [2,((_position select 2)-0.1)];

_objHDiff = _objHDiff - 0.1;

};

if(_zheightdirection == "up_alt") then {

_position set [2,((_position select 2)+1)];

_objHDiff = _objHDiff + 1;

};

if(_zheightdirection == "down_alt") then {

_position set [2,((_position select 2)-1)];

_objHDiff = _objHDiff - 1;

};

if(_zheightdirection == "up_ctrl") then {

_position set [2,((_position select 2)+0.01)];

_objHDiff = _objHDiff + 0.01;

};

if(_zheightdirection == "down_ctrl") then {

_position set [2,((_position select 2)-0.01)];

_objHDiff = _objHDiff - 0.01;

};

_object setDir (getDir _object);

if((_isAllowedUnderGround == 0) and ((_position select 2) < 0)) then {

_position set [2,0];

};

_object setPosATL _position;

//diag_log format["DEBUG Change BUILDING POS: %1", _position];

_object attachTo [player];

};

sleep 0.5;

_location2 = getPosATL player;

if(DZE_5) exitWith {

_isOk = false;

detach _object;

_dir = getDir _object;

_position = getPosATL _object;

//diag_log format["DEBUG BUILDING POS: %1", _position];

deleteVehicle _object;

};

if(_location1 distance _location2 > 5) exitWith {

_isOk = false;

_cancel = true;

_reason = "You've moved to far away from where you started building (within 5 meters)";

detach _object;

deleteVehicle _object;

};

if(abs(_objHDiff) > 5) exitWith {

_isOk = false;

_cancel = true;

_reason = "Cannot move up or down more than 5 meters";

detach _object;

deleteVehicle _object;

};

if (player getVariable["combattimeout", 0] >= time) exitWith {

_isOk = false;

_cancel = true;

_reason = (localize "str_epoch_player_43");

detach _object;

deleteVehicle _object;

};

if (DZE_cancelBuilding) exitWith {

_isOk = false;

_cancel = true;

_reason = "Cancelled building.";

detach _object;

deleteVehicle _object;

};

};

//No building on roads unless toggled

if (!DZE_BuildOnRoads) then {

if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; };

};

// No building in trader zones

if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; };

if (!_proceed) then {_cancel = true; _reason = "Someone's plotpole nearby";};

if (_plotReq) then {_cancel = true; _reason = "Plotpole required to build here";};

if(!_cancel) then {

_classname = _classnametmp;

// Start Build

_tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

_tmpbuilt setdir _dir;

// Get position based on object

_location = _position;

if((_isAllowedUnderGround == 0) and ((_location select 2) < 0)) then {

_location set [2,0];

};

_tmpbuilt setPosATL _location;

cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"];

_limit = 1;

if (DZE_StaticConstructionCount > 0) then {

_limit = DZE_StaticConstructionCount;

}

else {

if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then {

_limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount");

};

};

player playActionNow "Medic";

[player,"repair",0,false,10] call dayz_zombieSpeak;

[player,10,true,(getPosATL player)] spawn player_alertZombies;

sleep 3;

cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];

if (_isPole) then {

[] spawn player_plotPreview;

};

_tmpbuilt setVariable ["OEMPos",_location,true];

_tmpbuilt setVariable ["CharacterID",_playerUID,true];

_charID = _playerUID;

_activatingPlayer = player;

PVDZE_obj_Publish = [_playerUID,_tmpbuilt,[_dir,_location],_classname];

publicVariableServer "PVDZE_obj_Publish";

player removeMagazine "ItemEmerald";

cutText [format["%1 Placed!",_classname], "PLAIN DOWN",3];

player reveal _tmpbuilt;

DZE_ActionInProgress = false;

} else {

cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"];

DZE_ActionInProgress = false;

};

DZE_ActionInProgress = false;

Link to comment
Share on other sites

@raymix

_offset = [0,3.5,0]; sometimes too far for picture and small object

ok I get it now. You can override offset with functions used in spawn.sqf

 fnc_Pos_fired1 = {
disableSerialization;
_indexPic = lbCurSel 2667; 
_returnTextPic = lbText [2667, _indexPic]; 
hint format["BAR : [%1] \n [%2]",_indexPic,_returnTextPic];
classnameChange = _returnTextPic;
customOffset = [0,3.5,0]; // add this
 };
_offset = customOffset;

This way you can have different offsets for different menus. 

For example pictures could use 1 meter offset, while exterior objects could have 3 meters

Link to comment
Share on other sites

ähm does this work on napf?

 

i never get the option if i right klick an emerald -.-

have you got custom compiles and extra_rc set up? Installation of those files is not part of this script, since those are very popular and widely used.

Link to comment
Share on other sites

it has nothing to do how and where you host your server. In fact it was ran and tested on dayz.st and vilayer servers while writing

Well that's good to hear, the fact of the matter is that I'm just getting "waiting for host" every time I install this script, I have followed this thread from the beginning, trying all the "fixes" that users have posted and I'm still getting "waiting for host" whenever I boot the server. I've also checked the RPT file for errors but there is nothing. The installation for this script is pretty simple and I have installed many more complex scripts on my server with no problems at all, this is the first script to give me problems, I simply can't see what the problem is... Any ideas ?

Link to comment
Share on other sites

Well that's good to hear, the fact of the matter is that I'm just getting "waiting for host" every time I install this script, I have followed this thread from the beginning, trying all the "fixes" that users have posted and I'm still getting "waiting for host" whenever I boot the server. I've also checked the RPT file for errors but there is nothing. The installation for this script is pretty simple and I have installed many more complex scripts on my server with no problems at all, this is the first script to give me problems, I simply can't see what the problem is... Any ideas ?

Most likely your defines are conflicting, if you have other scripts that have .hpp files, check those verses the one for this script and remove any duplicates from the defines.hpp for this script. Also check your description.ext file because that has Class defines in it too!

 

Zero

Link to comment
Share on other sites

Raymix,

 

 Got a question. I added some castle pieces to the exterior section of the script and ran into 2 problems. 1.) The items are soooo big they spawn nearly on top of the player. I tried adjusting the _offset in the spawn.sqf from 3.5 to 4.5 but it didn't seem to make much difference. how far out can I adjust this offset before it becomes a problem with the other, smaller objects? 2.) When I remove the castle pieces using the fn_selfactions method, they blow up or turn into rubble and sometimes kill the player. lol. Any thoughts on this and a way around it? Wondering if you came across this in your testing.

 

I am thinking I may just have to leave the castle pieces out for now but my player base is really wanting it. Im also going to look for another way to spawn them as I heard you can do it using ingredients like building other buildables. Thanks for your time!

 

Zero

Link to comment
Share on other sites

Raymix,

 

 Got a question. I added some castle pieces to the exterior section of the script and ran into 2 problems. 1.) The items are soooo big they spawn nearly on top of the player. I tried adjusting the _offset in the spawn.sqf from 3.5 to 4.5 but it didn't seem to make much difference. how far out can I adjust this offset before it becomes a problem with the other, smaller objects? 2.) When I remove the castle pieces using the fn_selfactions method, they blow up or turn into rubble and sometimes kill the player. lol. Any thoughts on this and a way around it? Wondering if you came across this in your testing.

 

I am thinking I may just have to leave the castle pieces out for now but my player base is really wanting it. Im also going to look for another way to spawn them as I heard you can do it using ingredients like building other buildables. Thanks for your time!

 

Zero

 

lol, in remove.sqf delete this part:

_emeraldTarget setDamage 1;

For castle, create another:

class in extra_rc

item array in items.qf

update dayz allowed objects

add extra dialog class in dialogs.hpp (keep in mind numbering I did)

create another function on top of spawn.sqf

 

as for offset, create custom offsets and

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...