Jump to content

Grahame

Member
  • Posts

    742
  • Joined

  • Last visited

  • Days Won

    61

Reputation Activity

  1. Thanks
    Grahame got a reaction from Kenobi in Water purification tablets   
    Water purification tablets are already in CfgLootTable @Kenobi
    class Medical { items[] = { { { "FAK", "magazine" }, 50 }, { { "Heal_EPOCH", "item" }, 2 }, { { "Defib_EPOCH", "item" }, 1 }, { {"atropine_epoch", "magazine" }, 6 }, { {"adrenaline_epoch", "magazine" }, 5 }, { {"morphine_epoch", "magazine" }, 3 }, { {"caffeinepills_epoch", "magazine" }, 10 }, { {"orlistat_epoch", "magazine" }, 5 }, { {"nanite_cream_epoch", "magazine" }, 3 }, { {"nanite_gun_epoch", "magazine" }, 1 }, { {"nanite_pills_epoch", "magazine" }, 5 }, { {"iodide_pills_epoch", "magazine" }, 5 }, { {"ItemWaterPurificationTablets", "magazine" }, 5 } }; }; but they are not in CfgPricing... that is the issue. I will get them added. In the meantime just add something like:
    class ItemWaterPurificationTablets {price = 10;}; And then they should spawn as loot for you...
  2. Like
    Grahame reacted to webbie in Multigun Vehicle Repair   
    Lol thx @Grahame ah yes initially I didn't like the idea but they are such a unique asset to epoch seems a shame to not use it. One of my players has a safe purely just for multigun attachments lol , not easy to though so it balances
  3. Like
    Grahame got a reaction from He-Man in Water purification tablets   
    Water purification tablets are already in CfgLootTable @Kenobi
    class Medical { items[] = { { { "FAK", "magazine" }, 50 }, { { "Heal_EPOCH", "item" }, 2 }, { { "Defib_EPOCH", "item" }, 1 }, { {"atropine_epoch", "magazine" }, 6 }, { {"adrenaline_epoch", "magazine" }, 5 }, { {"morphine_epoch", "magazine" }, 3 }, { {"caffeinepills_epoch", "magazine" }, 10 }, { {"orlistat_epoch", "magazine" }, 5 }, { {"nanite_cream_epoch", "magazine" }, 3 }, { {"nanite_gun_epoch", "magazine" }, 1 }, { {"nanite_pills_epoch", "magazine" }, 5 }, { {"iodide_pills_epoch", "magazine" }, 5 }, { {"ItemWaterPurificationTablets", "magazine" }, 5 } }; }; but they are not in CfgPricing... that is the issue. I will get them added. In the meantime just add something like:
    class ItemWaterPurificationTablets {price = 10;}; And then they should spawn as loot for you...
  4. Like
    Grahame got a reaction from Razor1977 in [UPGRADED DEC2017][scarCODE] Virtual Garage System by IT07   
    Anyone who is using @DirtySanchez's excellent update to the Virtual Garage who also wants vehicle persistence through a restart added back when a vehicle is removed from a garage can do the following to the server side files.
    First add the following line to  a3_epoch_virtualGarage/config.cpp:
    persistentVehicles = 1; // Are vehicles read from the garage made persistent on the server? Replace a3_epoch_virtualGarage/functions_VGS/fn_vgsReadFromGarage.sqf with this:
    RePBO a3_epoch_virtualGarage.pbo and upload back to @epochhive/addons on your server.
    Pull request submitted so hopefully this will be in his base repo. 
  5. Like
    Grahame got a reaction from rvg?! in EpochZ - A dynamic spawner for Ryan's Zombies on Epoch servers   
    By Grahame, @natoedand @Drokz (and others). Based on ExileZ 2.0 by Patrix87 which was forked from an original project named EXILE-Z created by SAM, Otto and CaptionJack of RelentlessServers.com based on Civilian Life by code34. Released under the same Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.
    Incorporates DayZ-style Heli Crash Site code from @rvg?!, based on the original script by @Richie 
    Feature List from the original ExileZ 2.0
    Dynamically spawns Ryan's Zombies. An infinite set of spawner configurations Harassing zombies aka Random encounters that will spawn near players wherever they are. Hordes! The number of zombies in a town is proportional to the number of player in that town (adjustable ratio) Very lightweight. Server Side only! A constant flow of zombies in towns. Fully configurable Supports any map! Map support included in base EpochZ 1.0 build for Altis, Tanoa, Chernarus Redux, Australia and Takistan Safezone protection. Zombie Missions! (Not tested in EpochZ 1.0) The possibility to display infested zones on map. Adjustable zombies health and damage. Zombies won't disappear if close to a player. Zombies won't spawn right next to a player. Turn off all lights on the map by setting the LightsOff variable to true in fn_init.sqf  (not working atm... we're working on a fix) New Features in EpochZ 1.0
    Reworked for use on Epoch servers. Infected will not be spawned within minJammerDistance of a frequency jammer. DayZ Style Heli Crash Site code incorporated within EpochZ so infected will spawn at a heli crash site. If you use it then remove the helicrash.pbo from @epochhive/addons Infected entering safe zones defined in fn_init.sqf in the SafeZonePositions[] array will be deleted. If SpawnWithinTriggerRadius is set to true in fn_init.sqf then the infected will spawn throughout the entire trigger area, otherwise they will spawn between MinSpawnDistance and MinSpawnDistance of the centre of the trigger. Download
    https://github.com/morgoth0/EpochZ
    Installation
    If you just want to use our default version on Altis then simply upload the epochz.pbo in @epochhive/addons in the GitHub repository into the same location on your Epoch server and restart.
    This addon is incredibly customizable and I am working on full documentation for it to help people set it up the way they want. In the meantime the code is very well commented and, assuming you have a reasonable knowledge of configuring addons then here are the files in which you can change it to suit your needs:
    epochz/init/fn_init.sqf: contains all configuration settings and trigger definitions
    epochz/init/TriggerPositions.sqf: defines all locations for infected spawns and which trigger class they are in
    epochz/init/ZClasses: defines the classes of infected spawned in each trigger type
    epochz/init/ZLoot.sqf: what loot is found on the infected
    epochz/init/ZVest: what vests are worn by the infected
    Screenshot
    http://www.grahamecurtis.com/images/epochz_spawns.jpg
  6. Like
    Grahame got a reaction from natoed in [UPGRADED DEC2017][scarCODE] Virtual Garage System by IT07   
    Anyone who is using @DirtySanchez's excellent update to the Virtual Garage who also wants vehicle persistence through a restart added back when a vehicle is removed from a garage can do the following to the server side files.
    First add the following line to  a3_epoch_virtualGarage/config.cpp:
    persistentVehicles = 1; // Are vehicles read from the garage made persistent on the server? Replace a3_epoch_virtualGarage/functions_VGS/fn_vgsReadFromGarage.sqf with this:
    RePBO a3_epoch_virtualGarage.pbo and upload back to @epochhive/addons on your server.
    Pull request submitted so hopefully this will be in his base repo. 
  7. Like
    Grahame reacted to DirtySanchez in [UPGRADED DEC2017][scarCODE] Virtual Garage System by IT07   
    @Grahame
    That sounds awesome bud, let me take care of a few things on my to-do list and then will give it a whirl.
    I'll give ya a jingle if I have any questions during testing.
    Once settled, I will merge it in!

    Thanks from all of us!
  8. Thanks
    Grahame got a reaction from DirtySanchez in [UPGRADED DEC2017][scarCODE] Virtual Garage System by IT07   
    Anyone who is using @DirtySanchez's excellent update to the Virtual Garage who also wants vehicle persistence through a restart added back when a vehicle is removed from a garage can do the following to the server side files.
    First add the following line to  a3_epoch_virtualGarage/config.cpp:
    persistentVehicles = 1; // Are vehicles read from the garage made persistent on the server? Replace a3_epoch_virtualGarage/functions_VGS/fn_vgsReadFromGarage.sqf with this:
    RePBO a3_epoch_virtualGarage.pbo and upload back to @epochhive/addons on your server.
    Pull request submitted so hopefully this will be in his base repo. 
  9. Like
    Grahame got a reaction from Tarabas in [UPGRADED DEC2017][scarCODE] Virtual Garage System by IT07   
    Anyone who is using @DirtySanchez's excellent update to the Virtual Garage who also wants vehicle persistence through a restart added back when a vehicle is removed from a garage can do the following to the server side files.
    First add the following line to  a3_epoch_virtualGarage/config.cpp:
    persistentVehicles = 1; // Are vehicles read from the garage made persistent on the server? Replace a3_epoch_virtualGarage/functions_VGS/fn_vgsReadFromGarage.sqf with this:
    RePBO a3_epoch_virtualGarage.pbo and upload back to @epochhive/addons on your server.
    Pull request submitted so hopefully this will be in his base repo. 
  10. Like
    Grahame got a reaction from Drokz in [UPGRADED DEC2017][scarCODE] Virtual Garage System by IT07   
    Anyone who is using @DirtySanchez's excellent update to the Virtual Garage who also wants vehicle persistence through a restart added back when a vehicle is removed from a garage can do the following to the server side files.
    First add the following line to  a3_epoch_virtualGarage/config.cpp:
    persistentVehicles = 1; // Are vehicles read from the garage made persistent on the server? Replace a3_epoch_virtualGarage/functions_VGS/fn_vgsReadFromGarage.sqf with this:
    RePBO a3_epoch_virtualGarage.pbo and upload back to @epochhive/addons on your server.
    Pull request submitted so hopefully this will be in his base repo. 
  11. Like
    Grahame got a reaction from natoed in Dayz style heli crash sites   
    The second message is unrelated to the first btw and can be ignored. As far as the heli crash script goes, I agree with @natoed, I updated to the script he's linked too. Works great!
  12. Haha
    Grahame got a reaction from natoed in Fully Integrated Vector Building System   
    What's Exile? 
  13. Like
    Grahame got a reaction from Razor1977 in New Missions for A3E Wicked AI   
    I have ported some of the Extra Wicked AI missions from ARMA2/DayZ/Epoch's Wicked AI system. They are a purely derivative product based on this work:
    Missions ported so far are: Abandoned Trader, Ambushed HMMWV, Army Base, Drone Pilot, Old MacDonald's Farm and Slaughter House. 
    I will be continuing this work with the others when I have time.
    NOTE: In order to use these missions you will require CUP Terrains Core on your server. For those running non-vanilla ARMA3 maps, for example Chernarus Redux that should not be an issue.
    Download
    https://www.dropbox.com/s/19ln1t6yhsmbldw/Extra_WAI_Missions.zip?dl=0
    Installation
    (1) Copy the files in the downloadable archive to your Wicked AI's missions/bandit folder.
    (2) Add the missions to the mission array in WAI's config.sqf, for example:
    wai_bandit_missions = [ ["abandoned_trader",5], ["ambushed_hmmwv",5], ["army_base",5], ["drone_pilot",4], ["macdonald",5], ["slaughter_house",5], ["nuke",4], ["Mi_48",6], ["MV_22",6], ["sniper_team",8], ["rebel_base",5], ["medi_camp",5], ["dropside",5], ["comm_center",10], ["C_192",11], ["destroyed_ural",11] RePBO Wicked AI and upload to @epochhive/addons and enjoy!
  14. Like
    Grahame got a reaction from Razor1977 in WAI: 1.0.0 - Alpha / Arma 3   
    And WAI had dependencies on the playableunits() call that is such a problem after the recent ARMA upgrade. If anyone wants it I have a version with those replaced with allplayers() in dropbox:
    https://www.dropbox.com/s/7o2tojbdtav6r0v/a3_epoch_WAI.pbo?dl=0
    This also includes my fix in missionwinorfail.sqf (and other files) to prevent the missions hanging when the timer expires.
  15. Like
    Grahame got a reaction from Ghostrider-GRG in DayZ-Style Portable Generators for A3E   
    Just thought of one more thing that should be added - not a big thing but you should be not able to remove the generator and get the kit back if it is still running. Not a big thing cause the pumps do get zeroed at restart with autorefueling disabled but it would be important immersion wise
    Will test code and update when I can (soon)
  16. Like
    Grahame got a reaction from Ghostrider-GRG in Making Can Openers and Knives useful in Epoch   
    With all the vanilla ARMA3 objects that have been added to A3E in 1.0 and beyond, there is a lot of new fun stuff you can do to make the experience more immersive and drive your players mad  Here is just one such example, the addition of a requirement for can openers and knives for opening cans of food and gutting animals.
    Gutting Animals with a Knife or Hatchet
    So, you've just killed an animal in the wild and you want to gut it. At the moment you use your teeth and hands to field dress the animal. The code below adds a little more realism in that it forces you to have a knife or hatchet in order to get the meat and/or pelt from the carcass. 
    Note: @Helion4 have you thought how great a hunting knife model would be (hoverboards are a lot more important though!!!)?  
    Change lines 61 to 73 in epoch_code/compile/EPOCH_lootTrash.sqf from:
    if (!isNull _lootAnimalObj) then { _cfgItemInteractions = (_cfgObjectInteractions >> (typeOf _lootAnimalObj)); _interactAttributes = getArray(_cfgItemInteractions >> "interactAttributes"); _bloodPos = getPosATL _lootAnimalObj; _blood = "BloodSplat" createVehicleLocal _bloodPos; _blood setPosATL _bloodPos; // send [_lootAnimalObj, player, Epoch_personalToken] remoteExec ["EPOCH_server_lootAnimal",2]; _return = true; }; to:
    if (!isNull _lootAnimalObj) then { if (("ItemKnife" in magazines player) || ("Hatchet" in weapons player) || ("CrudeHatchet" in weapons player)) then { _cfgItemInteractions = (_cfgObjectInteractions >> (typeOf _lootAnimalObj)); _interactAttributes = getArray(_cfgItemInteractions >> "interactAttributes"); _bloodPos = getPosATL _lootAnimalObj; _blood = "BloodSplat" createVehicleLocal _bloodPos; _blood setPosATL _bloodPos; // send [_lootAnimalObj, player, Epoch_personalToken] remoteExec ["EPOCH_server_lootAnimal",2]; } else { ["You need a knife or hatchet to gut an animal", 5] call Epoch_message; }; _return = true; }; A nice easy change that makes the gutting of animals a little more immersive and provides a reason for players to find and carry those items on them.
    To eat from a can you first have to open it
    The following code will add the requirement for a can opener, knife or hatchet (crude or otherwise) in order to open certain canned food items. Depending on which tool you have on you, you will get a different amount of hunger from consuming the can. For example, use a can opener then you get the full benefit, use a knife and you get 80% and if you use a hatchet to open it you just get 50% of the hunger back
    Note: This is also a nice example of how you can add new interactions for objects you add to your server.
    Add the following at line 415 in epoch_code/compile/EPOCH_consumeItem.sqf:
    case 17: { // Eat Canned Food - check for item to open the can with // Reduce attributes based on the type of item, can opener, knife or hatchet _attributesModifier = 1; _itemFound = false; if ('ItemCanOpener' in magazines player) then { _attributesModifier = 1; _itemFound = true; } else { if ('ItemKnife' in magazines player) then { _attributesModifier = 0.8; _itemFound = true; } else { if (('Hatchet' in weapons player) || ('CrudeHatchet' in weapons player)) then { _attributesModifier = 0.5; _itemFound = true; }; }; }; if (_itemFound) then { private _removedCan = _item call _removeItem; if (_removedCan) then { if (_interactReturnOnUse != "") then { _interactReturnOnUse call EPOCH_fnc_addItemOverflow; }; { _x set [1, ((_x select 1) * _attributesModifier)]; _output = _x call EPOCH_giveAttributes; if (_output != "") then { [_output, 5] call Epoch_message_stack; }; } foreach _interactAttributes; }; } else { ["You need a can opener, knife or hatchet to open the can", 5] call Epoch_message; }; Now you have a new interaction that will give you a certain amount of hunger back depending on what tool you use to open the can with. Now you need to make the cans themselves use it. This is done in epoch_config/Configs/CfgItemInteractions.hpp.
    First add a new class for cans that requite something to open them. Add this code at line 59:
    class Food_TinCan_Tool_base : Food_base { interactAction = 17; interactReturnOnUse = "ItemEmptyTin"; }; This gives you a class that cans which will require a can opener, etc. can inherit. So, let's say that a can of meatballs requires a tool to open. To make this so, you would change line 106 from
    class meatballs_epoch : Food_TinCan_base to
    class meatballs_epoch : Food_TinCan_Tool_base It's as simple as that. On my server I leave some cans, like sardines, openable without a tool and others requiring one. For those that do not need a tool you do not need to change anything.
    Just a little fun and all done mission side.
  17. Like
    Grahame got a reaction from salival in Calling Your Banker   
    Sometimes you are going to be caught short in the wild; maybe you found a trader in the wilderness or just did a GTA job on a roaming AI truck and nicked their crypto. Well, if you allow ATMs and phones, here's a little bit of code to let you call the bank when you cannot find them...
    (1) Add the particular items that you want to allow people to call on to your loot tables and trader configs. Choices include: ItemMobilePhone_old, ItemMobilePhone_smart, ItemPortableLongRangeRadio, ItemSatellitePhone, ItemSurvivalRadio
    (2) For each of the items you want to use for remote calling the bank add the lines below for it to epoch_config/Configs/CfgItemInteractions.hpp:
    class ItemMobilePhone_old : Default { interactAction = 18; interactText = "CALL BANKER"; }; class ItemMobilePhone_smart : Default { interactAction = 18; interactText = "CALL BANKER"; }; class ItemPortableLongRangeRadio : Default { interactAction = 18; interactText = "CALL BANKER"; }; class ItemSatellitePhone : Default { interactAction = 18; interactText = "CALL BANKER"; }; class ItemSurvivalRadio : Default { interactAction = 18; interactText = "CALL BANKER"; }; (3) Before these lines at the end of epoch_code/compile/EPOCH_consumeItem.sqf:
    default { ["Found nothing", 5] call Epoch_message; }; Add:
    case 18: { // Call banker if (isNil "EPOCH_bankTransferActive") then { if (random 1 > 0.5) then { [player, [], Epoch_personalToken] remoteExec ["EPOCH_server_storeCrypto",2]; closeDialog 0; createDialog "InteractBank"; lbClear 21500; { _index = lbAdd[21500, name _x]; lbSetData[21500, _index, netId _x]; } forEach(allPlayers - [player]); } else { ["You cannot get a signal, please try again", 5] call Epoch_message; }; }; }; Note that there's a bit of randomization so the players only have a 50% chance of getting through. You can reduce this further to make their lives more interesting 
    That's it. RePBO the mission and upload to your server.
  18. Thanks
    Grahame reacted to Sneer in any working EpochZ   
    This is a very nice addon. Thanks Guys!
  19. Thanks
    Grahame reacted to Sneer in DayZ Style Morphine in A3E   
    Nice. Thank you!
  20. Thanks
    Grahame got a reaction from Rosso in DayZ Style Morphine in A3E   
    In vanilla Epoch 1.1 the use of morphine basically is just as an FAK with a different name... it heals all damage with a couple of side effects on toxicity, stamina and blood pressure. I rather liked the old dayz where morphine was specifically required to fix a broken leg... so I changed some code here and added some there and... voila! Now you can have morphine that will only fix a broken leg and First Aid Kits that will not!
    First let's ensure that First Aid Kits do not heal broken legs. This is done by making them completely heal all body parts except for broken legs, which they will heal to a damage minumum of 0.51 (a broken leg in ARMA3 and Epoch is one damaged greater than 0.5). So, let's change the interaction for FAKs so that they will do this. Change lines 337-362 in epoch_code/compile/EPOCH_consumeItem.sqf from:
    case 13: { //Heal Player _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6]; _vehicle = cursorTarget; if !(_vehicle in _vehicles) then { _vehicle = player; }; if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then { if (_item call _removeItem) then { [_vehicle] spawn { params ["_vehicle"]; if (player == vehicle player) then { closeDialog 0; player playMove 'AinvPknlMstpSnonWrflDnon_medic0'; player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd'; uisleep 5; }; [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; if (_vehicle isEqualTo player) then { ["Healed yourself", 5] call Epoch_message; } else { ["Healed other player", 5] call Epoch_message; }; }; }; }; }; to:
        case 13: { //Heal Player         _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6];         _vehicle = cursorTarget;         if !(_vehicle in _vehicles) then {             _vehicle = player;         };         if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then {             if (_item call _removeItem) then {                 [_vehicle] spawn {                     params ["_vehicle"];                     if (player == vehicle player) then {                         closeDialog 0;                         player playMove 'AinvPknlMstpSnonWrflDnon_medic0';                         player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd';                         uisleep 5;                     };                     _currentDMG = 0;                     {                         _currentDMG = _x;                         if (_forEachIndex != 10) then {                             [_vehicle,[[_forEachIndex,0]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];                         } else {                             if (_currentDMG > 0.5) then {                                 [_vehicle,[[_forEachIndex,0.51]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];                                                         } else {                                 [_vehicle,[[_forEachIndex,0]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];                             };                         };                     }forEach ((getAllHitPointsDamage _vehicle) param [2,[]]);                     if (_vehicle isEqualTo player) then {                         ["Healed yourself", 5] call Epoch_message;                     } else {                         ["Healed other player", 5] call Epoch_message;                     };                 };             };         };     }; Now if you have a broken leg and you use a First Aid Kit then it will still be broken. If your leg was not broken you will be fully healed.
    So, with that done, let's turn to the morphine. All this now will do is heal a broken leg... nothing else. If your leg is not broken you will get a message informing you of that and you'll keep the injector. Change lines 383-414 in epoch_code/compile/EPOCH_consumeItem.sqf from:
    case 16: { // Morphine _vehicle = player; if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then { if (call _unifiedInteract) then { [_vehicle,_item] spawn { params ["_vehicle","_item"]; if (player == vehicle player) then { closeDialog 0; player playMove 'AinvPknlMstpSnonWrflDnon_medic0'; player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd'; uisleep 5; }; private _out = []; { if (_x > 0) then { _out pushback [_foreachindex,((_x - 0.2) min 0.45) max 0]; }; }forEach ((getAllHitPointsDamage _vehicle) param [2,0]); if (_out isequalto []) then { if ((damage _vehicle) > 0) then { _out = ["ALL",0]; }; }; if !(_out isequalto []) then { [_vehicle,_out,player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; }; [format["Used %1 on yourself",_item call EPOCH_itemDisplayName], 5] call Epoch_message; }; }; } else { [format["%1 is not needed at this time",_item call EPOCH_itemDisplayName], 5] call Epoch_message; }; }; to:
    case 16: { // Morphine _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6]; _vehicle = cursorTarget; if !(_vehicle in _vehicles) then { _vehicle = player; }; _legDamage = _vehicle getHitPointDamage "HitLegs"; if (_legDamage > 0.5) then { if (_item call _removeItem) then { [_vehicle] spawn { params ["_vehicle"]; if (player == vehicle player) then { closeDialog 0; player playMove 'AinvPknlMstpSnonWrflDnon_medic0'; player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd'; uisleep 5; }; [_vehicle,[["HitLegs",0.5]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; if (_vehicle isEqualTo player) then { ["Injected yourself with morphine", 5] call Epoch_message; } else { ["Injected other player with morphine", 5] call Epoch_message; }; }; }; } else { ["Nothing needs morphine at this time... shame!", 5] call Epoch_message; }; }; You will need to subsequently use a First Aid Kit to remove that last 0.5 of damage on your legs... the morphine just makes it feel like you are healed fully, and boy, does it!
    That's it... DayZ Style morphine with two simple changes.
  21. Like
    Grahame got a reaction from Kenobi in DayZ Style Morphine in A3E   
    In vanilla Epoch 1.1 the use of morphine basically is just as an FAK with a different name... it heals all damage with a couple of side effects on toxicity, stamina and blood pressure. I rather liked the old dayz where morphine was specifically required to fix a broken leg... so I changed some code here and added some there and... voila! Now you can have morphine that will only fix a broken leg and First Aid Kits that will not!
    First let's ensure that First Aid Kits do not heal broken legs. This is done by making them completely heal all body parts except for broken legs, which they will heal to a damage minumum of 0.51 (a broken leg in ARMA3 and Epoch is one damaged greater than 0.5). So, let's change the interaction for FAKs so that they will do this. Change lines 337-362 in epoch_code/compile/EPOCH_consumeItem.sqf from:
    case 13: { //Heal Player _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6]; _vehicle = cursorTarget; if !(_vehicle in _vehicles) then { _vehicle = player; }; if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then { if (_item call _removeItem) then { [_vehicle] spawn { params ["_vehicle"]; if (player == vehicle player) then { closeDialog 0; player playMove 'AinvPknlMstpSnonWrflDnon_medic0'; player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd'; uisleep 5; }; [_vehicle,["ALL",0],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; if (_vehicle isEqualTo player) then { ["Healed yourself", 5] call Epoch_message; } else { ["Healed other player", 5] call Epoch_message; }; }; }; }; }; to:
        case 13: { //Heal Player         _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6];         _vehicle = cursorTarget;         if !(_vehicle in _vehicles) then {             _vehicle = player;         };         if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then {             if (_item call _removeItem) then {                 [_vehicle] spawn {                     params ["_vehicle"];                     if (player == vehicle player) then {                         closeDialog 0;                         player playMove 'AinvPknlMstpSnonWrflDnon_medic0';                         player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd';                         uisleep 5;                     };                     _currentDMG = 0;                     {                         _currentDMG = _x;                         if (_forEachIndex != 10) then {                             [_vehicle,[[_forEachIndex,0]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];                         } else {                             if (_currentDMG > 0.5) then {                                 [_vehicle,[[_forEachIndex,0.51]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];                                                         } else {                                 [_vehicle,[[_forEachIndex,0]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2];                             };                         };                     }forEach ((getAllHitPointsDamage _vehicle) param [2,[]]);                     if (_vehicle isEqualTo player) then {                         ["Healed yourself", 5] call Epoch_message;                     } else {                         ["Healed other player", 5] call Epoch_message;                     };                 };             };         };     }; Now if you have a broken leg and you use a First Aid Kit then it will still be broken. If your leg was not broken you will be fully healed.
    So, with that done, let's turn to the morphine. All this now will do is heal a broken leg... nothing else. If your leg is not broken you will get a message informing you of that and you'll keep the injector. Change lines 383-414 in epoch_code/compile/EPOCH_consumeItem.sqf from:
    case 16: { // Morphine _vehicle = player; if (damage _vehicle != 0 || {_x > 0} count ((getallhitpointsdamage _vehicle) select 2) > 0) then { if (call _unifiedInteract) then { [_vehicle,_item] spawn { params ["_vehicle","_item"]; if (player == vehicle player) then { closeDialog 0; player playMove 'AinvPknlMstpSnonWrflDnon_medic0'; player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd'; uisleep 5; }; private _out = []; { if (_x > 0) then { _out pushback [_foreachindex,((_x - 0.2) min 0.45) max 0]; }; }forEach ((getAllHitPointsDamage _vehicle) param [2,0]); if (_out isequalto []) then { if ((damage _vehicle) > 0) then { _out = ["ALL",0]; }; }; if !(_out isequalto []) then { [_vehicle,_out,player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; }; [format["Used %1 on yourself",_item call EPOCH_itemDisplayName], 5] call Epoch_message; }; }; } else { [format["%1 is not needed at this time",_item call EPOCH_itemDisplayName], 5] call Epoch_message; }; }; to:
    case 16: { // Morphine _vehicles = player nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 6]; _vehicle = cursorTarget; if !(_vehicle in _vehicles) then { _vehicle = player; }; _legDamage = _vehicle getHitPointDamage "HitLegs"; if (_legDamage > 0.5) then { if (_item call _removeItem) then { [_vehicle] spawn { params ["_vehicle"]; if (player == vehicle player) then { closeDialog 0; player playMove 'AinvPknlMstpSnonWrflDnon_medic0'; player playMove 'AinvPknlMstpSnonWrflDnon_medicEnd'; uisleep 5; }; [_vehicle,[["HitLegs",0.5]],player,Epoch_personalToken] remoteExec ["EPOCH_server_repairVehicle",2]; if (_vehicle isEqualTo player) then { ["Injected yourself with morphine", 5] call Epoch_message; } else { ["Injected other player with morphine", 5] call Epoch_message; }; }; }; } else { ["Nothing needs morphine at this time... shame!", 5] call Epoch_message; }; }; You will need to subsequently use a First Aid Kit to remove that last 0.5 of damage on your legs... the morphine just makes it feel like you are healed fully, and boy, does it!
    That's it... DayZ Style morphine with two simple changes.
  22. Like
    Grahame got a reaction from natoed in EpochZ - A dynamic spawner for Ryan's Zombies on Epoch servers   
    Two updates today from @natoed
    (1) A fixed version of the Lights Off script
    (2) Spawn positions for Isla Abramia
  23. Like
    Grahame got a reaction from Tarabas in EpochZ - A dynamic spawner for Ryan's Zombies on Epoch servers   
    By Grahame, @natoedand @Drokz (and others). Based on ExileZ 2.0 by Patrix87 which was forked from an original project named EXILE-Z created by SAM, Otto and CaptionJack of RelentlessServers.com based on Civilian Life by code34. Released under the same Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.
    Incorporates DayZ-style Heli Crash Site code from @rvg?!, based on the original script by @Richie 
    Feature List from the original ExileZ 2.0
    Dynamically spawns Ryan's Zombies. An infinite set of spawner configurations Harassing zombies aka Random encounters that will spawn near players wherever they are. Hordes! The number of zombies in a town is proportional to the number of player in that town (adjustable ratio) Very lightweight. Server Side only! A constant flow of zombies in towns. Fully configurable Supports any map! Map support included in base EpochZ 1.0 build for Altis, Tanoa, Chernarus Redux, Australia and Takistan Safezone protection. Zombie Missions! (Not tested in EpochZ 1.0) The possibility to display infested zones on map. Adjustable zombies health and damage. Zombies won't disappear if close to a player. Zombies won't spawn right next to a player. Turn off all lights on the map by setting the LightsOff variable to true in fn_init.sqf  (not working atm... we're working on a fix) New Features in EpochZ 1.0
    Reworked for use on Epoch servers. Infected will not be spawned within minJammerDistance of a frequency jammer. DayZ Style Heli Crash Site code incorporated within EpochZ so infected will spawn at a heli crash site. If you use it then remove the helicrash.pbo from @epochhive/addons Infected entering safe zones defined in fn_init.sqf in the SafeZonePositions[] array will be deleted. If SpawnWithinTriggerRadius is set to true in fn_init.sqf then the infected will spawn throughout the entire trigger area, otherwise they will spawn between MinSpawnDistance and MinSpawnDistance of the centre of the trigger. Download
    https://github.com/morgoth0/EpochZ
    Installation
    If you just want to use our default version on Altis then simply upload the epochz.pbo in @epochhive/addons in the GitHub repository into the same location on your Epoch server and restart.
    This addon is incredibly customizable and I am working on full documentation for it to help people set it up the way they want. In the meantime the code is very well commented and, assuming you have a reasonable knowledge of configuring addons then here are the files in which you can change it to suit your needs:
    epochz/init/fn_init.sqf: contains all configuration settings and trigger definitions
    epochz/init/TriggerPositions.sqf: defines all locations for infected spawns and which trigger class they are in
    epochz/init/ZClasses: defines the classes of infected spawned in each trigger type
    epochz/init/ZLoot.sqf: what loot is found on the infected
    epochz/init/ZVest: what vests are worn by the infected
    Screenshot
    http://www.grahamecurtis.com/images/epochz_spawns.jpg
  24. Like
    Grahame reacted to Helion4 in Make Epoch great again! (Endgame motivation)   
    A lot of this is all down to play style of the Arma-mod players.
    There, I said it.
    Most players will only play if they have a Sniper rifle.                    **** Did you reach 'end game? oh then I'll delete everything you own and you can go play only using LMG's then, enjoy****
    Most people buy a heli and Lift-sell every vehicle they can find. ****how about starting over and you can only use ground vehicles?****
    Most people buy everything                                                               **** well next play through, you cant use the traders to buy weapons or vehicles or food or meds etc, choose one. ****
    From A2 to A3 this seems to a repeating pattern, and when players say they are bored, they never want to change - they want the mod to change. I played Tetris on the Nintendo Game Boy, for hours & hours & hours and eventually I got bored. My friend pointed out to me that I should turn the Game Boy upside-down and play....it was like playing a new game!!!! And what was better, once i got bored of playing upside-down I flipped it right side up again and the experience changed AGAIN! I did this multiple times, until the Amiga500 came along. Changing the way you play can have so much affect on a game!
    As @TheVampire points out, the server host can make the difference in stretching out play towards end game with new and inventive ideas, but I also believe server owners should trust more in the core mechanics of the mod too, for example:-
    Making loot spawn more frequent = speeds up 'end game'
    Removing Antagonists = speeds up 'end game'
    adding 100 spawn points = speeds up 'end game'
    Black Market traders full of everything = speeds up 'end game'
    PVE = An obvious fast track to end game much much quicker than anything else.
    All these things affect the speed of reaching end game, and have to be balanced properly ( or even not included in a server)  to ensure risk/reward is a reasonably tough decision to make. That's what made the Dayz mod (& other early Arma-mods) phenomenon an incredible experience, many players had something they hadn't known before then. FEAR of DECISION. Now there is no fear, because  - "i'll just buy my sniper & big pack back if I die".
    This, this is also a big problem. There simply cant be anything unknown nowadays. With admins spawning all items/vehicles/weapons in - to YouTube videos showcasing a latest update, nothing is left to be discovered. And I imagine if all epoch devs kept quiet while working on new content, we would have even more posts like  "is epoch dead"  and many more players and server hosts will abandon hope.

    There are a couple of interesting ideas in this thread.
  25. Like
    Grahame reacted to TheVampire in Make Epoch great again! (Endgame motivation)   
    What Epoch endgame needs is something similar to DayZ Origins, but perhaps less grindy.
    Bosses that are hard to find or expensive to summon, that have a very low rare drop chance which allows the players to access something unique like Sector B was. Maybe something that requires a large group.
     
    Something else is an ongoing fight, like I was working towards with VEMF. If players don't login and fight expanding AI, it makes it harder on the players to do what they need done.
    Unfortunately I don't see either of these being added into the core mod.
     
×
×
  • Create New...