FAForever Forums
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Login
    1. Home
    2. FreadyFish
    The current pre-release of the client ("pioneer" in the version) is only compatible to itself. So you can only play with other testers. Please be aware!
    Offline
    • Profile
    • Following 2
    • Followers 2
    • Topics 8
    • Posts 68
    • Groups 1

    FreadyFish

    @FreadyFish

    Global Moderator

    Making UI mods to one day become master (clearly a mod issue, not a skill issue).

    Feel free to reach out if you want to talk about your mod ideas.

    50
    Reputation
    35
    Profile views
    68
    Posts
    2
    Followers
    2
    Following
    Joined
    Last Online
    Website github.com/orgs/FreadyFishFAF/repositories
    Location Sweden

    FreadyFish Unfollow Follow
    Global Moderator

    Best posts made by FreadyFish

    • Wish-A-Mod Foundation

      A spark of hope can change everything.

      Research shows that wishes have proven physical and emotional benefits that can give a (man-)child better health outcomes and increase their chances for survival.

      -Make-A-Wish America (possibly altered)

      ................................................................................................

      This thread is dedicated to all you creative non programmers out there. 💡

      You have struggles in this game, and all you need is that perfect UI mod you so clearly imagine. 🌟

      But the mod is not in the vault, and you are not a programmer. 🤕

      Luckily, we are here to help. We make your mod a reality. 🎁

      In this thread you can pitch for your idea. 🐣

      Together we discuss your mod and make sure it will work as you have imagined. 📈

      I prioritize the best suggestions and try to do as many as I can. 🛠

      All mods will of course be released to the vault without any copyright. 🎈

      Focus is on UI-mods, quality of life kind of things, but also open to grand ideas. Let your imagination soar. 🦄

      PS: I make no legally binding promises, something I learned from here:

      https://www.youtube.com/watch?v=I2OObOM3R_U 😂

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • Completely customizable hotkeys mod

      Feeling limited in creating your ultimate hotkey layout? Look no further.

      TBA/work in progress mod that will allow you to customize your hotkeys programatically. You will need to write code to change it, but it has a fairly easy to understand structure to it. Example:

      example1.PNG

      E =

      • If you have only factories selected = execute the custom HotbuildOverhaul (a mod) group "HBO_T1_2". I have it saved as the second T1 unit which means it builds land scout / air scout for example.
      • If you have only engineers selected = start reclaim mode
      • Else (if you have nothing selected) = select all bombers on screen that are not torpedo ("ANTINAVY")
        • Then, assign a subhotkey for E, meaning that if you quickly click E again you'll select all bombers on the whole map instead.

      The time you have to register a subhotkey is taken from the double-click decay time that you can set in the original settings. I think the default is 500ms. Then it is reset. If you use another key that is not in the subhotkeys (or if you don't have any subhotkeys registered) it will ofc register whatever you pressed even within those 500ms. You can technically nest an infinate amount of more subhotkeys inside subhotkeys as well to really go wild with your combos.

      More examples:

      example2.PNG

      Q =

      • If any unit/units are selected = enter patrol mode.
      • If nothing selected = Select all onscreen idle/moving/patrolling/attackmoving T1 engineers (engineers that have no build order as part of their queue basically)
      • Q --> 2 = select same but T2 engineers. (Q --> 3 = T3 eng, Q --> 4 = SACUs)
      • Q --> Q select all those T1 engineers and enter patrol mode.

      I have the Y button set for all my commander enhancements:

      • Y = switch to the enhancements tab
      • Y --> T = Start Tech upgrade
      • Y --> U = Start Gun upgrade
      • etc with all buttons surrounding Y

      And so on, only your imagination sets the limits.

      The obvious advantage here is that you can use the same key for different things depending on the context. Kind of like build mode but automatic.

      I have migrated almost all my hotkeys in there and use it on a daily basis, but you can mix with your ordinary hotkeys if you only want to customize a few.

      Right now it overwrites every hotkey that you put in there, so you put the E hotkey in there it replaces (and deletes forever) your old E hotkey. Hence I am not publishing an alpha release for everyone yet because I don't want to ruin someones hotkeys. I forked it from the MoreHotkeyLayouts mod that has a neat function that saves your old hotkeys the first time you run the mod, but I still need to make sure that is working and stable.

      Future idea

      • Multiple profiles. Right now it's all just in one big file, but it would be cool if anyone who takes the time to make their own profile can upload it and we can add those as a different profile. If you like a profile but some key is different on your keyboard, fix it, upload and every profile can then have different language versions too. These profiles could then be selected from a graphical interface as well as resetting your old keys if you want to.

      Anyone else obsessed with hotkeys? Feel free to share your thoughts.

      As long as you understand that you need to take a backup of your Game.prefs file I'll gladly give you access.

      Always open to collaborate if you want to hep out 👏

      More mods to come.

      // FreadyFish

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • Higher tolerance when matching few people

      Its way past midnight. Six night warriors are up. 0 active games, they are all in the 3v3 queue. The 90 seconds come and go, and again, and soon the six warriors were five.

      And, of course, no one even thought about joining the 2v2 queue.

      If there are no active games, can we just get a game with the best possible balance, even if it's not great?

      posted in Suggestions
      FreadyFishF
      FreadyFish
    • RE: FAF hotbuild preset camera controls?

      In the Key bindings menu, under "Camera" category you will find everything.

      Activate free mode, then press space and move your mouse. You can do this at lower camera hights without free mode but then it resets automatically.

      Tracking is also there.

      posted in I need help
      FreadyFishF
      FreadyFish
    • RE: 4z0t's ScoreBoard

      @Ctrl-K Whats up Az0t?

      My personal version, showing resources/storage + income at the same time. Crude but effective.

      I could imagine it as a checkbox option if you're interested.

      Also made the ping indicator stay visible longer and bigger.

      SCFrame_Fri_May_24_192545_2024_00000.jpg

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Shouting into the wind - T1 arty

      I think you're onto something here! Arty spam is ugly and works too well. Especially those annoying seraphim floaters. Ugh. Would like to see how it works in game. How about we make a demo mod for it?

      posted in Balance Discussion
      FreadyFishF
      FreadyFish
    • Advanced hotkeys

      I have started to plan a complete rework of hotkeys. I have a previous thread where I demonstrate this, titled "Completely customizable hotkeys mod", and it works fine but its implementation is not exactly user friendly for customizing as it's all code based, for my personal use.

      So the main idea: (These are all already working in my version)

      • Allow different key bindings based on the context. Primarily this is based on the category of selected units (but could be other things as well). For example, having engineers selected will have its own keymapping, like an automatic build mode.

      • Allow for combinations. Modifier keys are great for re-using keys, but this would also make it possible to assign key combinations like Space-A if clicked in succession. It opens up a lot of possibilities to group your keys for different purposes. For example I use Space+other keys to set target priority. This keeps everything in reach at all times.

      • Allow chaining actions to run sequentially. If you want one button to do many things, like idk, selecting the closest engineer and build a pd - then you have to find a mod that has put these together for you. So I suggest that to be possible for users directly by selecting multiple actions from the list.

      The new ideas:

      • Make a UI for all this that is easy to use. I imagine an "Advanced" button that goes into the Key Bindings dialog, that activate advanced mode and expands the dialog. Exact design is a work in progress, many things to consider.

      • Exporting of your keys and share it with others, making a list of presets for people to try out.

      Questions

      • Do you have any ideas? How would you use it?

      • Are you interested in helping out? It could be fun you know.

      • If there is a desire for this to be integrated in the future, the team might want to get involved early and give me some advice on that process and any requirements. @Jip

      My personal code-only version assigns all the hotkeys that I have specified in customKeyMap like you can see below, but its not super clean perhaps. I havent found a way to hijack the keypress in any other way, so suggestions are welcome.

      function RunCustom(key)
      	ForkThread(customKeyMap[key])
      end
      
      function Init()
      	from(customKeyMap).foreach(function(k, v)
      		local name = string.gsub(k, "-", "_")
      
      		userKeyActions['AHK '..name] = {
      			action = 'UI_Lua import("/mods/AdvancedHotkeys/modules/main.lua").RunCustom("'..k..'")',
      			category = 'AHK'
      		}
      
      		userKeyMap[k] = 'AHK '..name
      	end)
      
      	Prefs.SetToCurrentProfile('UserKeyActions', userKeyActions)
      	Prefs.SetToCurrentProfile('UserKeyMap', userKeyMap)
      end
      
      local customKeyMap = {
      
      	['Esc'] = function() Hotkey('Esc', function(hotkey)
      		print("Soft stop")
      		ConExecute 'UI_Lua import("/lua/ui/game/orders.lua").SoftStop()'
                      
                      -- Key combo for double clicking
      		SubHotkeys({
      			['Esc'] = function() SubHotkey('Esc', function(hotkey)
      				print("Stop")
      				ConExecute 'UI_Lua import("/lua/ui/game/orders.lua").Stop()'
      			end) end,
      		})
      	end) end, 
              -- ...
      
      local function Hotkey(hotkey, func)
      	subHotkey = subHotkeys[hotkey]
      	local currentTime = GetSystemTimeSeconds()
      	local diffTime = currentTime - lastClickTime
      	local decay = 0.002 * Prefs.GetFromCurrentProfile('options.selection_sets_double_tap_decay')
      	local inTime = diffTime < decay
      	lastClickTime = currentTime
      
      	if subHotkey ~= nil and inTime then
      		ForkThread(subHotkey)
      	else
      		subHotkeys = nil
      		func(hotkey)
      	end
      end
      
      local function SubHotkeys(obj)
      	subHotkeys = obj
      end
      
      local function SubHotkey(hotkey, func)
              local currentTime = GetSystemTimeSeconds()
      	local diffTime = currentTime - lastClickTime
      	local decay = 0.001 * Prefs.GetFromCurrentProfile('options.selection_sets_double_tap_decay')
      
      	if storedUniqueIdentifier == hotkey and diffTime < decay then
      		subHotkey = subHotkeys[hotkey]
      	end
      
      	storedUniqueIdentifier = hotkey
      
      	func(hotkey)
      end
      
      
      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Shouting into the wind - T1 arty

      @Arran

      T1ArtyBalance.zip

      https://github.com/FreadyFishFAF/T1ArtilleryBalance

      Seraphim is not how you described, I made it as a low arc instead. I'll look into if I can apply a different gravity to it to create that effect you're looking for but this will give similar effect on gameplay, ie the shell arrives faster.

      Aeon will also have to be looked into, haven't done something like that before. But I am thinking we can do all those cool visual things last if we manage to get the balance in order.

      Relevant code below, it should be easy enough to play around with. Change the "local ____DPS = X" and the Damage will be calculated automatically based on RoF.

      -- Disable predictive projectiles to make them ineffective against moving targets
      bp.Weapon[1].LeadTarget = false
      
      -- Double the cost
      bp.Economy.BuildCostEnergy = bp.Economy.BuildCostEnergy * 2
      bp.Economy.BuildCostMass = bp.Economy.BuildCostMass * 2
      
      -- Increase weapon range by 2 units
      bp.Weapon[1].MaxRadius = bp.Weapon[1].MaxRadius + 2
      
      if id == "uel0103" then -- UEF T1 Artillery
      
          local uefRoF = 0.5
          local uefDPS = 2
      
          bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * uefRoF
      
          bp.Weapon[1].Damage = bp.Weapon[1].Damage * uefDPS / uefRoF
      
          bp.Intel.VisionRadius = bp.Intel.VisionRadius * 2
      
      elseif id == "url0103" then -- Cybran T1 Artillery
      
          local cybranRoF = 1.5
          local cybranDPS = 1
      
          bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * cybranRoF
      
          bp.Weapon[1].Damage = bp.Weapon[1].Damage * cybranDPS / cybranRoF
      
          bp.Physics.MaxSpeed = 3.7
      
          bp.Weapon[1].DamageRadius = bp.Weapon[1].DamageRadius * 1.5
      
          bp.Weapon[1].FiringRandomness = bp.Weapon[1].FiringRandomness * 1.25
      
          -- Stun
          for k, v in bp.Weapon[1].Buffs do
              v.Duration = v.Duration + 2 -- default is 3s for T1, 2s for T2, this makes it 5s for T1, 4s for T2
          end
      
      elseif id == "ual0103" then -- Aeon T1 Artillery
      
          local aeonRoF = 1.5
          local aeonDPS = 2
      
          bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * aeonRoF
      
          bp.Weapon[1].Damage = bp.Weapon[1].Damage * aeonDPS / aeonRoF
      
          bp.Weapon[1].DamageRadius = 0
      
          bp.Weapon[1].FiringRandomness = 0
      
      elseif id == "xsl0103" then -- Seraphim T1 Artillery
      
          local seraRoF = 3
          local seraDPS = 2
      
          bp.Weapon[1].RateOfFire = bp.Weapon[1].RateOfFire * seraRoF
      
          bp.Weapon[1].Damage = bp.Weapon[1].Damage * seraDPS / seraRoF
      
          bp.Weapon[1].BallisticArc = 'RULEUBA_LowArc'
      end
      
      posted in Balance Discussion
      FreadyFishF
      FreadyFish
    • RE: Disconnect tele effect

      What if each individual player was able to recall, with a proper delay. And disconnecting could simply trigger that delay. I don't see how anyone could abuse it and so what if it can be slightly beneficial in some circumstance, I say good for you for making the right decision.

      posted in Suggestions
      FreadyFishF
      FreadyFish
    • Mod icon not showing in client

      I uploaded my first mod, Color Coded Strategic Icons, and the icon is showing up in the ingame menu but in the client it is absent. Why? This seems to be the case for many mods.

      posted in Modding & Tools
      FreadyFishF
      FreadyFish

    Latest posts made by FreadyFish

    • RE: Newbie replay questions

      If you are new to mods, then you are in for a treat. They are not just for replays but can help you in-game too, as they give you additional information and hotkeys etc. Focus on "UI-mods", they can be used in rated games and only effects your own UI. "Sim-mods" changes the game itself, are unranked and must be downloaded by all players.

      posted in General Discussion
      FreadyFishF
      FreadyFish
    • RE: Newbie replay questions

      Try these and see which one suits you best:

      Capture.PNG

      posted in General Discussion
      FreadyFishF
      FreadyFish
    • RE: how to play with old versions

      Never done this so can't be of much help, but you can find the source code here: https://github.com/FAForever/fa/releases

      I can imagine things easily break if you start changing files, so be warned. Backup your game prefs.

      posted in Suggestions
      FreadyFishF
      FreadyFish
    • RE: mass storage.

      Removing core concepts like this is probably in the realm of sim-mods to be realistic, that's my experience with the wishes of the community and balance team. But working with what we have instead of removing, I would be happy with opening up for more "auto-clicking" functions in general. Like in this case ringing extractors automatically.

      posted in Suggestions
      FreadyFishF
      FreadyFish
    • RE: Wish-A-Mod Foundation

      @magge I don't think so either, but I tried another approach of listening in on the OnCommandIssued event. This would not include every single click, but maybe that is a good thing? Curious if you or someone else can see something I don't here, before I go too far down this road.

      This is a simple test, but it does correctly logs the current APM over the last minute. Multiple commands given at once counts as one action, but we could still aggregate that data and a lot more, if it could be interesting in the statistics.

      APM_1.zip if you want to try, but this is really all it does right now:

      INFO: Current APM: 6 .. Total actions: 6 .. Total commands: 20
      
      INFO: apmlog: {
      INFO: -   21.650968551636: {
      INFO: -   -   AggressiveMove: 1
      INFO: -   }
      INFO: -   4.588408946991: {
      INFO: -   -   BuildMobile: 1
      INFO: -   -   None: 1
      INFO: -   }
      INFO: -   6.1044588088989: {
      INFO: -   -   Move: 1
      INFO: -   }
      INFO: -   6.5816397666931: {
      INFO: -   -   Move: 1
      INFO: -   }
      INFO: -   5.6394691467285: {
      INFO: -   -   Move: 1
      INFO: -   }
      INFO: -   9.7966756820679: {
      INFO: -   -   BuildMobile: 13
      INFO: -   -   None: 1
      INFO: -   }
      INFO: }
      
      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Wish-A-Mod Foundation

      @bronedooy Updated with wish #2, I also renamed all the previous hotkeys so you should rebind them

      bronedooy_2.zip

      Available hotkeys:

      • Highest tech Engineer/SACU inview
      • Highest tech idle Engineer/SACU inview
      • Add closest similar unit
      • Highest tech Engineer/SACU inview or add closest
      • Highest tech idle Engineer/SACU inview or add closest
      • Onscreen similar units / double click for all

      I looked into #3, using autohotkey for rebinding XButtons but realized it has some limitations. I can make it do shift-(key), but for some reason it adds the shift. Tried many variants but nothing worked. Anyway, if you want to try it, here is the script. XButton1 = Shift-O, XButton2 = Shift-P - change these (O/P) as needed and reload the script if it is running. It only activates when ForgedAlliance.exe is the active window, so you could add it to autostart and jsut have it on in the background so you dont need to remember it before every game.

      FAF_mouse_XButtons.zip

      There are other programs that does this better, I have ended up using Logitech G Hub for this (I realized) that comes with my mouse - it works, and I think there are other paid and possibly some free software that does this at a lower level which makes it work seamlessly.

      I will start looking into some other wishes for now, but we can revisit your other ones later.

      Let me know how it goes with your problems and if it is related to using dual screen please. I only have one screen available at the moment so can't test it myself right now. When all is good, we can upload V1 to the vault.

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Wish-A-Mod Foundation

      @bronedooy Ah yes, I should have mentioned that UMT must be active. Sounds strange, it works for me with all my mods active, and with only UMT active as well.

      I wonder if it is your dual screen setup that is causing the problem. Could you try with just one screen? And test it first with only UMT active, in case it is some other mod causing problems.

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Wish-A-Mod Foundation

      @StormLantern Did you try Idle Engineers Light as recommended by others? Let me know if you still prefer something else

      Like Ctrl-K said, I do not think it is possible to change the icon overlapping unfortunately, but I will keep an eye open for any workaround. It would be very nice indeed.

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Wish-A-Mod Foundation

      @bronedooy Your wish has been (partially) granted! Test it and let me know if it works as you imagined, we will adjust and add the rest before we upload it to the vault.

      bronedooy_1.zip

      It adds 5 new hotkeys to the Selection category

      1 - Select_highest_engineer_inview
      2 - Select_highest_engineer_inview_idle
      3 - Add_closest_similar
      4 - Select_highest_engineer_inview_or_add
      5 - Select_highest_engineer_inview_idle_or_add

      What you described will work with 1 or 2 plus 3, the only change is that instead of selecting T3 only, it selects the highest tech engineer on screen. This way it will work at the T2 stage as well.

      For 4 and 5 I find them more useful, as you can do everything with just one key. Click once and you select, click again as many times you need to add more engineers.

      How is it going for you with #2?

      If you check AddClosestSimilarUnit function in selection.lua it basically does that but for just 1 unit, with some modification it will solve your #2 wish as well.

      posted in Modding & Tools
      FreadyFishF
      FreadyFish
    • RE: Wish-A-Mod Foundation

      @Ctrl-K Thanks, @Nuggets would this suffice for your needs?

      posted in Modding & Tools
      FreadyFishF
      FreadyFish