Beani Posted May 11, 2014 Report Share Posted May 11, 2014 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 More sharing options...
raymix Posted May 11, 2014 Author Report Share Posted May 11, 2014 @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 More sharing options...
F507DMT Posted May 11, 2014 Report Share Posted May 11, 2014 add this in first, else each will have questions Link to comment Share on other sites More sharing options...
Beani Posted May 11, 2014 Report Share Posted May 11, 2014 Thank you guys Ray and Zero that did it Thanks alot :) This is Awesome!!! Link to comment Share on other sites More sharing options...
credible Posted May 11, 2014 Report Share Posted May 11, 2014 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 More sharing options...
raymix Posted May 11, 2014 Author Report Share Posted May 11, 2014 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 More sharing options...
credible Posted May 11, 2014 Report Share Posted May 11, 2014 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? :) Garett1169 1 Link to comment Share on other sites More sharing options...
F507DMT Posted May 11, 2014 Report Share Posted May 11, 2014 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 More sharing options...
Rythron Posted May 11, 2014 Report Share Posted May 11, 2014 is anyone using this in combination with the tie playerid to plotpole? i cannot build on my own plotpole! Link to comment Share on other sites More sharing options...
raymix Posted May 11, 2014 Author Report Share Posted May 11, 2014 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 More sharing options...
Rythron Posted May 11, 2014 Report Share Posted May 11, 2014 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 More sharing options...
F507DMT Posted May 12, 2014 Report Share Posted May 12, 2014 @raymix _offset = [0,3.5,0]; sometimes too far for picture and small object Link to comment Share on other sites More sharing options...
raymix Posted May 12, 2014 Author Report Share Posted May 12, 2014 @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 STENCHOVDETH 1 Link to comment Share on other sites More sharing options...
fullaholes Posted May 12, 2014 Report Share Posted May 12, 2014 Anyone got this to work on Dayz.ST servers ? Link to comment Share on other sites More sharing options...
gunnar Posted May 12, 2014 Report Share Posted May 12, 2014 Awesome work dude, thx for sharing :) and to the others, use a freaking SPOILER!!!!!!!!! Link to comment Share on other sites More sharing options...
raymix Posted May 12, 2014 Author Report Share Posted May 12, 2014 Anyone got this to work on Dayz.ST servers ? 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 Link to comment Share on other sites More sharing options...
unerground2 Posted May 12, 2014 Report Share Posted May 12, 2014 A masterpiece i love this script allways wanted something like this THX you very much :wub: :wub: :wub: Link to comment Share on other sites More sharing options...
unerground2 Posted May 12, 2014 Report Share Posted May 12, 2014 ähm does this work on napf? i never get the option if i right klick an emerald -.- Link to comment Share on other sites More sharing options...
raymix Posted May 12, 2014 Author Report Share Posted May 12, 2014 ä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 More sharing options...
fullaholes Posted May 12, 2014 Report Share Posted May 12, 2014 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 More sharing options...
ZeroK00L Posted May 13, 2014 Report Share Posted May 13, 2014 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 More sharing options...
ZeroK00L Posted May 13, 2014 Report Share Posted May 13, 2014 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 More sharing options...
unerground2 Posted May 13, 2014 Report Share Posted May 13, 2014 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. yeah i have a custom one but i still dont know why its not working. anyone can help? Link to comment Share on other sites More sharing options...
raymix Posted May 13, 2014 Author Report Share Posted May 13, 2014 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 More sharing options...
F507DMT Posted May 13, 2014 Report Share Posted May 13, 2014 i add new menu, buildings, in ItemSodaClays add in dayz_allowedObjects, "Land_MBG_Warehouse" ok, but "MAP_SS_Hangar" disappear when "MAP_SS_Hangar saved to database!" why? ItemSodaClays ~ 50 Briefcase Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now