Jump to content

Grahame

Member
  • Posts

    742
  • Joined

  • Last visited

  • Days Won

    61

Reputation Activity

  1. Like
    Grahame reacted to Ghostrider-GRG in [CONTINUED] blckeagls' AI Mission Version 7.06 Build 239   
    Version 6.86 is now in the works.
    In addition to fixing a few glitches it will add the ability to garison buildings with AI or statics at dynamically spawned missions.
  2. Like
    Grahame reacted to IGaveUpCrackForThis in [CONTINUED] blckeagls' AI Mission Version 7.06 Build 239   
    I just wanted to say Thank You to everyone for their amazing work on this mod! It installed with no problems, configured easily and I have been running it on a test server for weeks now. Of course, first time I unexpectedly ran into a mission (didn't look at the map on the way to a trader,) I had my ass handed to me. LOL I can't wait to see the bells and whistles that are added in future releases!! Thanks again!!!
  3. Like
    Grahame got a reaction from BlackhatEspeed in DayZ-Style Portable Generators for A3E   
    I got certain configs updated in the EpochCore client files allowing a few extra nice features to be deployed in A3/Epoch, and I'll start off by posting the information to set up portable generators to allow fuel pumps to be used for refueling vehicles if auto-refueling is turned off on your server. 
    Installation Instructions
    (1) Add the portable generator "kit" to your loot tables and trader price lists. The class name is KitGenerator
    (2) Add the files in this downloadable archive to a folder in your mission called, for example, sounds:
    https://www.dropbox.com/s/75gq2rezy1tcbe2/generator_sounds.zip?dl=0
    The license file is required! It is a Creative Commons Attribution Only license for the sound file.
    (3) Add the following lines to your mission file's custom description.ext (replacing the path for the generator1.ogg sound with the location in which you put it):
    // Portable Generator Sounds class CfgSFX { class Generator { sounds[] = {"Generator"}; name = "Generator"; Generator[] = {"sounds\generator1.ogg","db+10",1,200,1,0,0,0}; Empty[] = {"",0,0,0,0,0,0,0}; }; }; class CfgVehicles // NOTE: CfgVehicles definitions are only permitted in description.ext for sound sources. It cannot be used for CfgVehicles customizations { class PortableGenerator { sound = "Generator"; }; }; (4) Create a file in the folder of your mission file where you store your own scripts, e.g. custom called PortableGenerator.sqf and paste the following code into it:
    (5) Add the following lines to your mission's init.sqf (replacing the path with whatever you used in step (4)):
    if(hasInterface) then{ PortableGenerator = compileFinal preprocessFileLineNumbers "custom\PortableGenerator.sqf"; }; (6) Add the following to epoch_config/Configs/CfgItemInteractions.hpp:
    class KitGenerator : Item_Build_base { buildClass = "Generator_EPOCH"; }; (7) Add the following to epoch_config/Configs/CfgBaseBuilding.hpp:
    class Generator_EPOCH : Default { removeParts[] = {{"KitGenerator",1}}; GhostPreview = "Generator_Ghost_EPOCH"; staticClass = "Generator_EPOCH"; simulClass = "Generator_SIM_EPOCH"; limitNearby = 2; bypassJammer = 1; }; class Generator_SIM_EPOCH : Generator_EPOCH { removeParts[] = {}; }; class Generator_Ghost_EPOCH : Generator_SIM_EPOCH {}; (8) Add the following code to epoch_config/Configs/CfgActionMenu/cfgActionMenu_target.hpp:
    // Portable Generators class generator_refill { condition = "((dyna_cursorTarget isKindOf 'Generator_EPOCH') && !(dyna_cursorTarget getVariable [""GeneratorFueled"",false]) && !(dyna_cursorTarget getVariable [""GeneratorRunning"",false]))"; action = "[dyna_cursorTarget, 2] call PortableGenerator;"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\vehicle_refuel.paa"; tooltip = "Refuel generator"; }; class generator_start { condition = "((dyna_cursorTarget isKindOf 'Generator_EPOCH') && (dyna_cursorTarget getVariable [""GeneratorFueled"",false]) && !(dyna_cursorTarget getVariable [""GeneratorRunning"",false]))"; action = "[dyna_cursorTarget, 1] call PortableGenerator;"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Replace_Engine.paa"; tooltip = "Start generator"; }; class generator_stop { condition = "((dyna_cursorTarget isKindOf 'Generator_EPOCH') && (dyna_cursorTarget getVariable [""GeneratorRunning"",false]))"; action = "[dyna_cursorTarget, 0] call PortableGenerator;"; icon = "x\addons\a3_epoch_code\Data\UI\buttons\Remove_Engine.paa"; tooltip = "Stop generator"; }; RePBO your mission file and upload it to the server. That should be it.
  4. Like
    Grahame got a reaction from megaz in [Release] HS Blackmarket 1.6 | 'New' Trader System | Special Trader | Blackmarket   
    Yes... it means that you have a item in HSPricing that either does not exist or there is a typo in the classname. I run a debug version of tradermenu.sqf to find these when I make a new HSPricing. Basically copy tradermenu.sqf to tradermenu-prod.sqf and create a new tradermenu with this code: 
    Upload the new mission PBO. Then log into the server. In your client RPT (in C:/Users/<username>/AppData/ARMA3) you will see a list of the trader items and you'll be able to see the item that causes the glitch...
    When you have finished, move this version to tradermenu-debug.sqf for use in the future and move the tradermenu-prod.sqf back as tradermenu.sqf
    (Yes, I will produce a version that can be used for both with a flag in the settings file but I did this ages ago as a one-off check that has proved very useful over the years)
  5. Like
    Grahame reacted to BlackhatEspeed in Is there a max limit on antagonist spawns?   
    Thanks to He-Man and Grahame in discord I was able to get everything working and it's like a sick nightmare in the server now. Thanks for your help.
  6. Like
    Grahame reacted to SpreadKiller in [Solved]AddWeaponCargo restriction #0   
    Alright man i'll give it a try and be right back :D
     
    Works like a sharm now! Thanks alot man been pulling my hair out all day trying to fix this, Finally i can get onward with the server ^^
  7. Thanks
    Grahame got a reaction from SpreadKiller in [Solved]AddWeaponCargo restriction #0   
    Home now... and LOL. I solved this issue years ago by removing the addWeaponCargo filter... see the thing is that you are going to need to add exceptions for every item... and even if you wildcard them with filters like !acc_ you are pretty much allowing everything (depending on your loot tables). So you have two choices. Add filters for everything wildcarded like,
    !U_C_ !acc_ !arifle_ Or add every item individually. Or remove the filter... Same goes for things like towing scripts where you need to add every towing vehicle in the attachto.txt filter... or remove the filter...
  8. Thanks
    Grahame reacted to Helion4 in [Solved] signature mismatch and ...are not signed by a key accepted by this server   
    hmm, I made a test server a few days ago


    didn't need to put any keys in it. I wonder what defines the need or not to have keys in there?

    EDIT: I had keys check disabled
  9. Like
    Grahame reacted to Brian Soanes in Unlock vehicles left in trader over restart   
    To unlock vehicles left in your traders over a server restart, open your epoch_server.pbo

    In epoch_server\compile\epoch_vehicle\EPOCH_load_vehicles.sqf
    Find
    if (_allowDamage) then { Just above that, add this
    A3E_SafeZonePosArray = [ [[18451.9,14278.1,0]], //Altis East trader [[13333.5,14494.3,0]], //Altis Central trader [[6192.46,16834,0]] //Altis West trader ]; { if (_vehicle distance (_x select 0) < 200) then { _vehicle lock false; diag_log format["Vehicle %1 left in trader unlocked @ %2", _class, mapGridPosition _vehicle]; }; } forEach A3E_SafeZonePosArray; Pack pbo and you're good to go
  10. Like
    Grahame got a reaction from Kenobi in Unlock vehicles left in trader over restart   
    Not all trader camps have protection zones or props...
    Better way though for vanilla A3E users (rather than hard coding them) would be:
    private _config = configFile >> "CfgEpoch"; private _configWorld = _config >> worldname; private _A3E_SafeZonePosArray = []; { _A3E_SafeZonePosArray pushback [_x select 3, 200]; } foreach (getArray(_configWorld >> "telePos")); {   if (_vehicle distance (_x select 0) < (_x select 1)) then  { _vehicle lock false; diag_log format["Vehicle %1 left in trader unlocked @ %2", _class, mapGridPosition _vehicle]; }; } forEach _A3E_SafeZonePosArray; Then you get the locations from the map files in epoch_server_settings...
  11. Like
    Grahame reacted to Ghostrider-GRG in [CONTINUED] blckeagls' AI Mission Version 7.06 Build 239   
    Pushed a small update that tightens up code for the assests (hostage or leader who is to be captured)
  12. Like
    Grahame reacted to Ghostrider-GRG in [CONTINUED] blckeagls' AI Mission Version 7.06 Build 239   
    that would be great. I know VEMF uses building posns, or think it does. i'll fiddle with the statics and see
    how it goes. I was thinking that one could includw an optional structure in the define for the group and have the spawn script place the structure then locate units within it.
  13. Like
    Grahame reacted to Tarabas in EpochZ - A dynamic spawner for Ryan's Zombies on Epoch servers   
    All other stuff seemed to be working fine without that addition aswell..
    Thanks to all of you again for that very easy editable addon.. :)
  14. Like
    Grahame reacted to Tarabas in EpochZ - A dynamic spawner for Ryan's Zombies on Epoch servers   
    Thank you @natoed
    that's the plan now.. I will report back when I found what is bugging...
    Edit: Embarassing... I readded from your mission.sqm:
     
    Now with doubleclick the sound is playing and av works fine..
  15. Like
    Grahame reacted to natoed in EpochZ - A dynamic spawner for Ryan's Zombies on Epoch servers   
    @Tarabas
    well done, thou i did something similar awhile back leading to the same issue
    I use the ryan's modules to ensure i can enforce the settings i have set in epochz, I have tested without the modules and the settings work fine back at time can be weird....but that's arma/epoch lol
    just need to nut out the issue, 9/10 it was what i did lol
  16. Like
    Grahame reacted to Schalldampfer in Deploy bike from Dyna menu   
    thanks for replying,
    (1) I'll try it, I found some scripts doing that, so I'll imitate them.
    (2) thanks for noticing, I'll check the init function and copy some codes in it.
    (3) thanks, I'll try it.
          I have removed the vehicle from spawning and trader list
         (I think it's good to change Deploy_vehicle array to include playerUID instead of vehicles and check puid to prevent duplicates)
     
     
    --P.S.--
    I'll use GitHub for further updates, to log what was changed
  17. Like
    Grahame reacted to Ghostrider-GRG in X groups of Y AI units or X*Y alone AI units?   
    Yes, each AI runs its own brain, and I guess each group. As Grahame pointed out, also remember that at the present time, Arma 3 limits you to 288 groups per side, and Arma 2 to 144 groups per side. for Arma 3, unless you run something insane you should never reach the 288 group cap. You will know if you did because createGroup will start returning grpNull. I used to put checks in blckealgs to test for that condition but removed them since the increase in the cap on groups per side. Note also that you can manage the server resources dedicated to groups or AI by either poling each group for nearby players and disabling simulation when no players are near or by using dynamic simulation manager build into Arma 3. Also note that the simulation managers do show some delay in activating Ai so build in a safety factor when doing this.
  18. 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.
  19. Like
    Grahame got a reaction from megaz in [Release] Lootspawner, configurable building loot system   
    Ah yeah... that's broken. You can either replace with the new one that I posted in that forum link - which you will need to use if you want ground loot in a lot of the Oz buildings or with this version: 
    My advice would be to bite the bullet and do the former
  20. Thanks
    Grahame got a reaction from Donnovan in X groups of Y AI units or X*Y alone AI units?   
    Don't forget the limit on the number of groups in ARMA though. 288 now btw 
  21. Like
    Grahame reacted to Ghostrider-GRG in [CONTINUED] blckeagls' AI Mission Version 7.06 Build 239   
    The official release of Ver 6.84 Build 146 is on the github. Thank you to all who have provided feedback on v 145.
  22. Like
    Grahame reacted to Sneer in [CONTINUED] blckeagls' AI Mission Version 7.06 Build 239   
    Your right, that was my mistake, in my troubleshooting of the original file I had forgot to remove that.
    Its working now.
  23. Like
    Grahame reacted to JasonTM in [RELEASE] WAI 2.2.6   
    Update
    This mod has been made compatible with the community stringtable. The instructions have been updated.
    File remote_messages.sqf has been updated by @BigEgg to detect if _STR is in the mission announcement and localize the message.
    Step 6 in the mission instructions:
    This mod is dependent on the Epoch community stringtable. Download the stringtable here and place file stringTable.xml in the root of your mission folder. Repack your mission PBO. The mission announcements are translated into German and Russian based on the local settings of the client machine. If someone has the skill to add other languages, this is encouraged.
    Technically, the mod is not dependent on the stringtable, but all of the mission files are using the localization format for the mission announcements Example...
    https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/missions/bandit/cannibal_cave.sqf#L69-L71
    The community stringtable is available here:
    https://github.com/oiad/communityLocalizations/
    The WickedAI entries start here:
    https://github.com/oiad/communityLocalizations/blob/master/stringTable.xml#L1219
     
    A slight update to custom_publish_vehicle has been made so that BIS_fnc_findSafePos  does not choose the default (center of the map) for the spawn location. These are the lines that have been changed:
    https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/compile/custom_publish_vehicle.sqf#L9
    https://github.com/worldwidesorrow/WICKED-AI/blob/master/WAI/compile/custom_publish_vehicle.sqf#L24-L25
     
    Credit to...
    @BigEgg for the localization solution in remote_messages.sqf
    @RedLink Russian translations
    @DAmNRelentless German translations and cleaning up the mission strings
    @Schalldampfer testing and detecting the mission vehicle spawning issue
    @Grahame Help with vehicle spawning problem
  24. Like
    Grahame reacted to webbie in Health Regen for Epoch   
    Hi all,
    All credits due to @He-Man for his usual brilliant scripting and  community support.
    Here is a bit of code you can add to epoch to allow for Health Regen when your Thirst and Hunger at at a certain level.
    Add this to epoch_code/compile/setup/masterLoop/Event3.sqf at the bottom and dont remove the code above.

    But setdamage will need a BE-Filter for sure!
    My values are set to 80% and this is how it looks in mine.
     
    Ive tested this and it works very well.
    Also see below for a table reflecting values I calculated to work out the hunger and thirst values.

  25. Like
    Grahame got a reaction from Ghostrider-GRG in Large Workbenches - Going Wild with Crafting   
    Another item added to EpochCore client-side in 1.1 is a Large Workbench - using the ARMA model for a steel work table with drawers and a vice. Here is the code for placing them and a suggestion (and code) for actually making use of them to provide greater flexibility in crafting for your players.
    Installation Instructions
    (1) Add the large workbench "kit" to your loot tables and trader price lists. The class name is KitWorkbenchLarge
    (2) Add the following to epoch_config/Configs/CfgItemInteractions.hpp:
    class KitWorkbenchLarge : Item_Build_base { buildClass = "WorkbenchLarge_SIM_EPOCH"; }; (3) Add the following to epoch_config/Configs/CfgBaseBuilding.hpp:
    class WorkbenchLarge_EPOCH : Default { removeParts[] = {{"KitWorkbenchLarge",1}}; GhostPreview = "WorkbenchLarge_Ghost_EPOCH"; staticClass = "WorkbenchLarge_EPOCH"; simulClass = "WorkbenchLarge_SIM_EPOCH"; }; class WorkbenchLarge_SIM_EPOCH : WorkbenchLarge_EPOCH { removeParts[] = {}; }; class WorkbenchLarge_Ghost_EPOCH : WorkbenchLarge_SIM_EPOCH {}; So, those minor changes will allow you to build a large workbench from a kit and then utilize it within Epoch's crafting system. All further changes will be made to epoch_config/Configs/CfgCrafting.hpp.
    Let's start our examination of that with the crafting of the large workbench itself. The crafting system in Epoch is really nice, quite simple (though it can look imposing at first glance) and very flexible. Basically it comprises parts and kits that are built from them and allows the specification of either things (water or fire) or objects to be nearby in order to build the kit. For the building of the large workbench you will need to add the following new entry:
    class KitWorkbenchLarge : Kit { recipe[] = {{"PartPlankPack",8},{"ItemCorrugatedLg",2},{"ItemPipe",2},{"ItemCorrugated",2},{"VehicleRepair",1}}; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH","WorkbenchLarge_EPOCH"}},3,1,0,1}}; model = "\A3\Structures_F_Heli\Furniture\Workbench_01_F.p3d"; previewPosition[] = {0.8,1,0.27}; previewScale = 0.15; previewVector = 0; }; This entry illustrates nicely the configuration for a craftable item. Let's look at a few lines in it starting with the recipe[]. This specifies which items are needed to build the kit, in this case 8 lumber packs, 2 large salvage metal, two pipes, two small salvage metals and a vehicle repair parts (for the vice). In order to show the Large Workbench as a buildable from these individual items in the crafting menu you need to add the Large Workbench to their entries' usedin[] array, for example:
    Okay, at this point you can click on any of these parts and a Large Workbench will be shown as a possible recipe for the part. Now let's look at the nearby[] array in the Large Workbench's crafting definition. This specifies things that are needed nearby in order to complete the crafting, in this case:
    nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH","WorkbenchLarge_EPOCH"}},3,1,0,1}}; Now, reading the very handy comment at the head of CfgCrafting.hpp shows what each part of this line means:
    USAGE: nearby[] = { { "Fire", //Name of field, anything "", //image folder path (ie "\x\addons\a3_epoch_code\Data\UI\crafting\"), empty for Epoch default "fire", //image prefix, suffix will be added by code. 2 possible suffixes: [_true.paa, _false.paa] {1,{"ALL"}}, //ARRAY of p3D {0,{"filename.p3d","filename.p3d"}} or ARRAY of logic classes {1,{"AIR","LAND","className"}} or 2 WorldInteractions check {2,{"water"}} Integer to switch array mode 3, //distance to check in meters 1, //count 1, //BOOL: object has to be on fire 0 //BOOL: object has to be alive (not destroyed) }; }; So you can see in the nearby[] array for Large Workbenches that it needs either a standard Epoch workbench or a large workbench itself within 3m of the player in order to build one. You can have as many requirements as you want in that list including categories defined in epoch_config/Configs/CfgEpochClient/WorldInteractions.hpp like "Water" or "Tree" or ... "bankTerminal" 
    Now you can craft a Large Workbench and then build it, you can now use the fact you have one to make crafting just a little more immersive by, for example, only allowing small things to be crafted with a standard Epoch workbench and requiring a large workbench for more complicated or larger buildables. For example, let's say we leave buckets of mortar as being able to be crafted on a small one. You probably also want to allow your to craft them on a large one as well so you would have both items in the nearby[] array for them:
    class MortarBucket : Item { usedIn[] = {"KitFoundation","KitCinderWall","KitHesco3","KitCinderFloor","KitCinderHalfFloor","KitCinderQuarterFloor","KitCinderTower","KitSandbagWall","KitSandbagWallLong","KitBagBunker","KitWaterPump","KitWell"}; nearby[] = {{"Fire","","fire",{1,{"ALL"}},3,1,1,0},{"Workbench","","workbench",{1,{"WorkBench_EPOCH","WorkbenchLarge_EPOCH"}},3,1,0,1}}; recipe[] = {{"ItemRock",12},{"water_epoch",2}}; previewPosition[] = {0.799442,1,0.426761}; previewScale = 0.6; previewVector = 0; }; Now this is an interesting item (the reason I picked it...) because it demonstrates making a craftable dependent on multiple things nearby, in this case a burning fire and either a small or large workbench... cool huh?
    For the wooden buildables I like to allow a small workbench so each of their definitions would have both the large and small workbench in the nearby[] array like this:
    class KitStudWall : Kit { recipe[] = {{"PartPlankPack",4}}; model = "\x\addons\a3_epoch_assets\models\Wooden_Wall_SIM.p3d"; nearby[] = {{"Workbench","","workbench",{1,{"WorkBench_EPOCH","WorkbenchLarge_EPOCH"}},3,1,0,1}}; previewPosition[] = {0.797675,1,0.398882}; previewScale = 0.07; previewVector = 0; }; But for cinder buildables I think you need a more flexible work environment, thus the small workbench is removed from their nearby[] arrays, for example:
    class KitCinderFloor : Kit { usedIn[] = {"KitCinderTower"}; recipe[] = {{"CinderBlocks",4},{"MortarBucket",4}}; nearby[] = {{"Large Workbench","","workbench",{1,{"WorkbenchLarge_EPOCH"}},3,1,0,1}}; model = "\x\addons\a3_epoch_community\models\cinderfloor.p3d"; previewPosition[] = {0.800198,1,0.262418}; previewScale = 0.055; previewVector = 3.6; }; That's pretty much it. Now you can build a large workbench, craft one and make other items dependent on it - or indeed any other object in the game. As a final example here's a modified entry for an energy pack that relies on you having a power source within 30m, and a fire and a large workbench within 3m:
    class EnergyPack : Item { usedIn[] = {"EnergyPackLg"}; nearby[] = {{"Fire","","fire",{1,{"ALL"}},3,1,1,0},{"Large Workbench","","workbench",{1,{"WorkbenchLarge_EPOCH"}},3,1,0,1},{"Power Source","","electricity",{1,{"Land_spp_Tower_F","Land_wpp_Turbine_V2_F","Land_wpp_Turbine_V1_F","SolarGen_EPOCH","Land_Wreck_Satellite_EPOCH"}},30,1,0,1}}; recipe[] = {{"CircuitParts",1},{"ItemCopperBar",1},{"clean_water_epoch",1}}; previewPosition[] = {0.8,1,0.29}; previewScale = 1.75; previewVector = 2.8; }; Now let your imagination run wild!
×
×
  • Create New...