Jump to content

haleks

Member
  • Content Count

    3984
  • Joined

  • Last visited

  • Medals

Posts posted by haleks


  1. Spotted and fixed a few more issues while working on the Aradus project!

    Quote

    v0.2.4
    Fixes :
    _offset error in pht init
    Phantoms initialize a bit faster
    Optimisations to phantom AI
    Optimisations to phantom killed sequence
    Fixed a script error in a damage EH

     

    Remnant 0.2.4

    0437E3F54CD5703591BFABCB7583E52C0B163379

    • Like 5
    • Thanks 1

  2. On 6/20/2021 at 9:25 PM, MuRaZorWitchKING said:

    Also, is Ravage 2.0 going to have a possible more in depth Gearpool tuner?

    Everything loot/gear related will change at some point - although it's probably going to be down the list, since that's the most complex feature to handle. But if all goes as planned, it will be possible to pop an AI module for each side/faction, each one with its own set of allowed gear, same for the loot systems - in theory you won't even have to alt-tab out nor copy/paste lists of classnames, it will be akin to filling ammo boxes in 3den. If all goes well. ^^

     

    On 6/21/2021 at 3:15 PM, Valken said:

    I think it would better if you had 2 versions and just depreciate the old one, but leave it on STEAM WORKSHOP for compatibility sake.

     

    I hate it when a mod is updated, but an old mission is not and then it breaks it. Not all authors have the time to go and redo it as much as we would want them to. They have to split their time updating old missions or creating new ones.

     

    13 hours ago, Valken said:

    One of my favorite mission makers, Phantom, has incredible missions, but as soon as a mod updates, it breaks it and it eventually gets taken off SteamWorkShop, leading us to scramble to backup whatever "old" mods we have + the mission to be able to replay it.

     

    The thing that bothers me with the separate version choice is that old missions will become obsolete eventually : they won't benefit from the updates to Ravage 2.0 at all if we go down that way. Not to mention that some of the user base might not be aware that a newer version is available elsewhere... In any case, you guys know me - I mean it when I say everything will be retro-compatible : as a matter of fact the original showcases will most likely remain untouched, and a new demo will be added exclusively for Ravage 2.0. With all the knobs turned to the max I reckon - I'm pretty confident that it will be like night and day when it comes to performances. Old missions might benefit from those optimisations too if I keep everything in one single mod.

    Anyways, the first iterations will probably go public on patreon, giving everyone a chance to try it out and give feedback - even if you're not a backer. 😉 

    • Like 6

  3. 22 hours ago, froggyluv said:

    [...] so it had to do with the needing the Spawn and being in a scheduled environment ...huh 

     

    Here's some good readin' : https://community.bistudio.com/wiki/Scheduler  😉 

    Simply put, every time you need a delay or a loop, it's best to make sure your code runs in scheduled environment. Technically you can also use a "while" loop as a delay in an unscheduled script, if there's any practical use for the 10.000 iterations limit.

    • Like 1

  4. I've been testing the performances of total apocalypse...

    Spoiler

    Before/After

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett

     

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett

    ?imw=5000&imh=5000&ima=fit&impolicy=Lett

     

    With thousands of objects spawning around, I think it's not bad at all - in fact it feels a lot smoother on my old PC once the scripts have done their thing on the terrain. Those "destroyed terrain objects" are actually replaced by super simple objects - it does give a sensible FPS boost.

    "Road clutter" includes wrecks and grass, and is dynamically created and removed as the player moves around. The entire road network is scanned at mission start and all the data for the procedural generation system is created then. Same deal for the vegetation modifications : every single tree is hidden at mission start, and the data to replace them by rocks is generated at the same time. All that stuff is persistent after mission restart as long as the master seed remains the same, and the system will scale with view distance.

    There's one small downside : it does increase the initial loading time a lot. Basically every position, orientation, model etc for all the objects to be dynamically created later on is calculated once and for all - all we need after that is to fetch a variable attached to each road or object to replace, and we have everything we need to spawn stuff. This makes a huge difference performance-wise, so I reckon one longer than usual loading time won't be a big deal. 😉 

     

    One cool feature is that nothing is actually destroyed; in theory it's possible to revert all the changes at any time to travel back in time, so to speak. \o/

    • Like 7

  5. 11 minutes ago, froggyluv said:

     

    Hmm i could use this (my old detection script got borked somehow) yet it gives me an error of a missing Bracket 

     

    _group = group  player;

    _enemies = [leader _group here(1500)] call BIS_fnc_enemyTargets; 
    waituntil {!(_enemies isEqualTo ([leader _group(1500)] call BIS_fnc_enemyTargets))}; 
    hint "New enemies spotted!";

     

    That function only accepts a unit as argument and nothing else, as far as I know. Not sure what the "1500" is supposed to be (and there should be a comma before it).

    _group = group player;
    _enemies = (leader _group) call BIS_fnc_enemyTargets; 
    waituntil {sleep 0.5; _enemies isNotEqualTo ((leader _group) call BIS_fnc_enemyTargets)}; 
    hint "New enemies spotted!";

     


  6. On 6/14/2021 at 11:16 PM, ernave said:

    I'd like to add a double-click action to something in inventory. I've found, in the ravage codebase, in /code/survival/inventory.sqf

    
    while {true} do {//true still works after respawn, use alive if we need to reboot
    	waituntil {!(isnull (finddisplay 602))};
    	showCommandingMenu "";
    	{
    		((findDisplay 602) displayCtrl _x) ctrlSetEventHandler ["LBDblClick", "_this call fnc_gearLBDblClick"];
    	} count [633, 638, 619];

    If I'm reading that right, when the layer opens the inventory, this code closes it, then reopens it with fnc_gearLBDblClick as the doubleclick event handler. I suspect that means I *cant* add my own double click handler without overriding yours. Am I right about that?

     

    If so, I guess I can try a scroll menu action.

     

    As far as I remember, it's not possible to add multiple ctrlEHs - but it's been a long time since I fiddled with it... I wonder how Mike Force handles that stuff by the way...

     

    On 6/11/2021 at 4:23 AM, damsous said:

    I got a question about the clean up system provided by the mod Ravage, it delete all the weapon holder or only the one that are spawned by the ravage search loot feature ?

    If it's the Settings module, it does delete everything (unless there's a "owned" variable on it). Don't use it if you have doubts - Ravage-generated loot is virtually saved & cached anyways. 😉 

     

    On 6/14/2021 at 9:42 AM, darkenraja said:

    Hoping someone can help me with the zombie spawn structure black list feature.

     

    I've started a Livonia mission with simple settings. Zombies are spawning at all the power lines. I've added all the powerline structures from Livonia to the blacklist, However they continue to spawn. I've formatted the array like the feature example shows.

     

    Any ideas?

    Are you sure you got the right classnames? Could be an issue with the way Ravage checks for object types (anything that doesn't inherit from the "static" class won't be detected)...

    The zombie modules will be the first to be upgraded though, so that should not be an issue for long.

     

     

    Speaking of upgrades... I'm facing a dilemma. Large chunks of the code are going to change, and if I want to keep retro compatibility with old scenarios, I reckon the best way to go will be to pack all the new stuff in separate PBOs, and have brand new modules pointing to new functions when necessary. Now that means duplicating some stuff, and since I don't want to confuse people, I'm probably going to hide the old modules as the new ones roll out : the old ones would be absent from 3den unless you are opening an old mission where there're present already.

    Does that sound good to you guys? I can't think of a better solution right now...

    • Like 9

  7. (random dev diary!)

     

    Oh boy, I recently discovered that Arma 3 supports HashMaps - I've been playing with it since yesterday (if you're not familiar with the concept, make yourself some coffee and go read this)... I took a couple hours today to adapt the aradus save system to work with hashmaps rather than arrays, just to experiment, since I'm new to this. Wasn't sure at first about the benefits, but damn it turns out to be a great tool! Compared to arrays, it is so much easier to push any set of data to the custom save system - there's no need to worry about indexing anymore (or overwriting stuff by mistake), which means we can split the data as much as we need without going nuts later on when we need to retrieve it...

     

    It also means one can easily add his own set of data to the save system, thanks to Hashmapception! \o/

    Data will be stored as hashmaps (let's call them virtual save files), all stored in a "master" hashmap (the so-called virtual save folder). Going from there, it should be relatively trivial for mission makers to push & update their own data to the global save system, and retrieve the stuff after server reboot - it could be anything : tasks, custom stats, weapon caches created by players etc... Multiple data sets can be added simultaneously without risks of overwriting, or any issue that usually arises with data iteration.

    There's still the problem of having to write custom scripts to process the custom data sets (there's no way to "guess" what to do with it), but since mission makers only need a key to get the data back, that still is a big step up from the system currently used in Ravage. Let's say you have a custom money system in your MP mission and need to keep track of how much money each player has; with a just a few lines you can plug that to the save file attached to each player - it could be something like this:

    //store the data
    _masterfolder = profileNameSpace getVariable "all_saveFiles";//hashmap containing all virtual save files as hashmaps, stored in a profile variable
    _currentsave = missionName + worldName + "some_key";//name of virtual save file unique to mission/server
    (_masterfolder get _currentsave) set ["my_custom_key", ["any", "kind", "of", "data"]];
    
    //retrieve the data
    _my_custom_data = (_masterfolder get _currentsave) get "my_custom_key";
    Spoiler

    I think the "array" version would look like this tired.png

    
    //store the data
    _masterfolder = profileNameSpace getVariable "all_saveFiles";
    _currentsave = _masterfolder select (_masterfolder findif {(_x#0) isequalto (missionName + worldName + "some_key")});
    _currentsave set [
    	[count _currentsave, _currentsave findif {(_x#0) isequalto "my_custom_key"}] select (_currentsave findif {(_x#0) isequalto "my_custom_key"} isnotequalto -1),//kill me!
    	["my_custom_key", ["any", "kind", "of", "data"]]
    ];
    
    //retrieve the data
    _my_custom_data = ((_masterfolder select (_masterfolder findif {(_x#0) isequalto (missionName + worldName + "some_key")})) select {(_x#0) isequalto "my_custom_key"}) # 1;

     

    Or I could set up dedicated parameters for that in a module, I don't know... But in any case it has great applications for both Remnant and Ravage!

     

    Again, hashmaps are new to me, so I'm probably discovering the wheel after everyone else, but still, I think it's cool! ninja.png

    • Like 6

  8. 1 hour ago, Private Evans said:

    could it be that CLSA was simply forced to release, because of BI is going to release something on their ownsoon which has a similar cold war setting ?????

     

    I really doubt that. That kind of setting is a bit overdone for Arma... Besides, I think BIS made it clear that Arma3 is in maintenance mode.


  9. Old thread, I know... But I needed to write something similar real quick, and found valuable advice here; so I thought I would share my take on this. icon7.png

     

    [
    	_vehicle,// Object the action is attached to
    	"Flip Vehicle",// Title of the action
    	"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_takeOff2_ca.paa",	// Idle icon shown on screen
    	"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_takeOff2_ca.paa",	// Progress icon shown on screen
    	"_this distance _target < 5 && {crew _target isEqualTo [] && (vectorUp _target) vectorCos (surfaceNormal getPos _target) <0.5}",// Condition for the action to be shown
    	"_caller distance _target < 5 && {crew _target isEqualTo [] && (vectorUp _target) vectorCos (surfaceNormal getPos _target) <0.5}",// Condition for the action to progress
    	{_caller playMoveNow "Acts_carFixingWheel"},// Code executed when action starts
    	{_caller setFatigue (getFatigue _caller + 0.2)},// Code executed on every progress tick
    	{
    		params ["_vehicle", "_caller", "_actionId", "_arguments"];
    		[_vehicle,surfaceNormal getPos _vehicle] remoteExec ["setVectorUp",_vehicle];
    		_vehicle setPosATL [getPosATL _vehicle select 0, getPosATL _vehicle select 1, 0];
    		sleep 1;
    		_caller playMoveNow "amovpknlmstpslowwrfldnon"
    	},// Code executed on completion
    	{_caller playMoveNow "amovpknlmstpslowwrfldnon"},// Code executed on interrupted
    	[],													// Arguments passed to the scripts as _this select 3
    	5,													// Action duration [s]
    	0,													// Priority
    	false,												// Remove on completion
    	false												// Show in unconscious state
    ] remoteExec ["BIS_fnc_holdActionAdd", 0, _vehicle];

     

    Uses holdAction, adds fatigue and animations to the player. Ideally it needs a check to make sure the vehicle isn't too big, but I'm too lazy right now. ninja.png

    • Like 1
    • Thanks 2

  10. All right, the changelog for Aradus is growing fast, so I'm pushing a small update before the big update :

    Quote

    v0.2.3
    New :
    Crickets have gone extinct! \o/
    New Vrana Kitbag

     

    The Crickets Extinction Event is a config tweak to the base terrain cfg : any terrain that inherits the default envSounds is crickets free!

    That's probably the best changelog I wrote in my life! mellow2.gif

     

    Remnant 0.2.3

    0437E3F54CD5703591BFABCB7583E52C0B163379

    • Like 5
    • Thanks 2
    • Haha 1

  11. 21 hours ago, Valken said:

    Edit... I just had a crazy idea so just give me a laugh fellas but I had both a web browser looking at Halek's pictures and the new CSLA cDLC reviews within the Steam Client Side by Side (poor CSLA... I might get it for the map based on the review)...

     

    What if Halek and the community, expands this mission/mod into MP and offers map compatibility for the DLC/cDLC and User made maps, but we allow a twist:

     

    Remnant Scavenger units find an anomaly that enables time travel in Future Altis/Stratis, and they must seek out resources from the DLC/cDLC/User maps within those "time periods" to complete their overall mission ala "Time Bandits" movie:

     

    DLC/cDLC/User maps 1 - mission 1

    DLC/cDLC/User maps 2 - mission 2

    DLC/cDLC/User maps 3 - mission 3

     

    This would span against multiple DLC/cDLC/User maps, tho the main mission should be finishable if an ARMA owner does not own all the DLC/cDLC, so like a user map can be an alternative to official content mission.

     

    Man, with content spanning multiple centuries thanks to the modding scene, Arma sure has room for time travel ! ^^

    The custom save system could be put to good use in that regard, if we need persistency across missions & terrains without doing a campaign...

    I wonder how a gunboat would fare against a frigate from Nassau. cafe2.gif

    • Like 2

  12. 22 hours ago, RZNUNKWN said:

    I was wondering, is there a way to attach OdraCam from the debug console/Zeus somehow to the player.
    I tried adding multiple classnames to the OdraCam module but no luck, nor adding multiple modules with one classname of each headgear didn't show results.

    Also, is TimeFall for now just cosmetic? I love the grass and flowers rising to life and departing it in seconds.... something to ponder on as you sit under the shelter, waiting for TimeFall to end.

     

    The odracam won't work with more than one classname right now - somehow that totally skipped my mind when writing the code... I'll need to fix that.

    Timefall is just for the looks at the moment; but the module will be updated with more parameters eventually. I've been tinkering with a few ideas for small effects to apply to players.

     

    Speaking of updating stuff, "Aradus" is growing fast! And, oddly enough, development has been quite smooth so far. And fun.

    I'm super happy with the atmosphere oozing from the beast... bave.png

     

    I've spent the last few days polishing all the "environmental" scripts : it's starting to feel like a legit, 100% dynamic recreation of Death Stranding. bave.png²

    More news coming soon!

    • Like 3

  13. Aradus, processed heatmap :

    6D2F9C7B395E4B5BDFB71B3AE5A02601DD43C575

     

    Those red dots are the final locations picked up by the AI population script, according to a set of parameters - in this example, relatively flat places far away from cities and villages, and at a reasonable distance from the sea, with 10% rate of occupation (that's around 400 locations on Altis). Nicely spread across the map, with some hot spots naturally forming here and there - I think it's looking good! troppuissant.png

    I'm thinking that specific part of the system could be useful for the broader community as a basic configurable "location picker" for AI population - finding the best places to spawn a faction would be trivial (guerrilla factions in forest areas, law enforcement in cities, etc).

    • Like 4

  14. Quick update on the Aradus project!

    I've made solid progress these last few days - working on that thing is even more fun than I expected : the SP persistency system  works with the editor preview (well for now), it turns out to be a great feature for mission making. Being able to resume while letting all the scripts re-initialise does speed things up immensely : instead of having to restart your mission to preview your edits, you get to see them "live", pretty much.

    The ground work for the environment aspects of the system is mostly done (that includes all the functions to transform terrains into complete wastelands); I'm beginning work on a procedural AI population system...

     

    Current heatmap for Altis :

    F666324D4E8DE5831CAF0145F8ED5281AB6EFA88

     

    In red : locations excluded by the population system - usually cities in ruins or POI. Doesn't necessarily means that you won't see AI patrols in those locations, just that AI will never originate from them.

    In blue : all the potential spots the population system can pick up as camps or insertion points. A number of them will be selected the first time a mission seed is generated, and spawn camps from which drones, scavs or rival teams will depart everyday to do random stuff (scavenging, patrols, supply runs), and come back to at night or during storms.

    Just need to find a way to exclude those tiny bits of island. tired.png

    • Like 4

  15. 1 hour ago, Sierra-G339 'Digger' said:

    Man... That would make something like Tanoa sad... LMAO

     

     

    Tanoa does feel strange with that treatment, but sadly that doesn't work too well for that terrain : all the sound controllers linked to trees remain present, and you can hear a ton of birds around you, happily chirping from invisible trees... :/ 

    • Haha 1
×