
=VG= XOR
-
Posts
237 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Downloads
Gallery
Articles
AVCS Bug Reports (automated)
AVCS Bug Reports (manual)
VG Wiki
Blogs
Store
Posts posted by =VG= XOR
-
-
2 hours ago, Kvsh_420 said:
Side note:- No automatic Rifleman?
QuoteYou will not be limited in what tools/loadout/methods to use other than being restricted to assets on the USS Freedom & gear that belongs to your faction available in a restricted Virtual Arsenal, Mission briefing available in map view will instruct you on your objectives and, how you choose to accomplish your objective is left to the discretion of your Platoon Lead & respective Squad Leaders, you may restructure your squad's loadout & configuration at your SL's discretion & minimally to yours as well.
If it's available in a crate you may grab whatever you want, provided your SL is cool with your selection as it relates to usefulness. It's up to you, issued loadouts are merely suggestions.
-
Ban this lunatic please
-
1
-
1
-
-
I say disable it outright, the option exists in configs & it's bad enough we know where all the spawns are without getting a rundown of where all the dumb little bots are, leave me what little surprise remains. Like keed said it's little more than an exploit in coop and shouldn't exist along side static spawn points & such.
If you want to be useful to the team, just lead a squad, have fun doing it & help others have fun while doing so, Just a thought.
-
1
-
1
-
-
3 hours ago, =VG= keed said:
there are no big controllable vessels in game.
https://steamcommunity.com/sharedfiles/filedetails/?id=1543583710
-
1
-
-
51 minutes ago, LangMaster said:
Do it then :), melon has lot of else work to do now.
Unfortunately he's one of the few people that can push that kind of a config change through to main branch, too much of a hassle for anyone else to do so.
If you want to give it a shot, simply open objects_weapon_server.zip\weapons\handheld\weapon_ranges for instance & open *ai file,i.e your weapon ai template, then simply change 'weaponTemplate.setStrength Airplane 0.0' to a different value and bots will use that weapon against aircraft, based on weights you provide.
-
2
-
-
Nah, it's a config in weapon/vehicle ai templates, nothing to do with python.
-
1
-
-
7 hours ago, =VG= Acro1 said:
I'm a fan, it allows for very precise insanely-powered CAS when requested, on those maps where that's welcome. Whilst hovering you're pretty vulnerable, which brings a good balance IMO.
As am I, but harriers are op in coop period if you half know what you're doing cos the only thing to worry about is AA & pco gunners.
So I say @=VG= Melon Muncher gets out of his cave & implements the config that makes all bot inf & vehicles shoot at the harrier, cos it was fun for the very brief period it was implemented. Cos atm any time I ever hover, I just get down to street level to make it somewhat interesting, and I'd simply much rather bots shoot back when hovering.
1 hour ago, Zeee said:
I remember when @=VG= Melon Muncher made it so bots didn't leave emplacements when players were not nearby so aa was always active and smacked cas more often not sure if its a thing still.Sadly no, BRING THAT BACK TOO please, actually made flying more fun.
-
1
-
-
2 hours ago, Connor said:
When can I use GYRO on my phone as yoke???????
Uhhh, noo, I'm sure there's other apps that allow you to do so, I mean you might as well get a joystick or sth at that point, eh
And yes Android only, cos, reasons
-
I've got a HOTAS setup for DCS, whose throttle I also use when playing Arma, KSP & PR at my desk, where as I use my phone as virtual throttle device when I'm not, and since more than a few people have inquired about it and since xinput.dll integration in to PR was long abandoned,I figured I'd at least share how anyone can use a phone as a throttle control device among other things, cos why not...
https://github.com/junghyun397/VirtualController/releases
Step by step instructions are pretty clear, so if anyone needs help configuring it, just post up...
Simply put, your X-AXIS is your throttle, RZ-AXIS your yaw (steering), RX-AXIS your pitch & RY-AXIS your roll...
TLDR; If you don't want to constantly rely on tapping w to precisely control your speed when flying or even driving slow, which I imagine is the most obvious use case, then I highly recommend it, as in most cases it's even better that a hardware setup, which is absolutely Overkill for PR, as you can pretty much use it anywhere cos your phone is where ever you are.
Do you need it, ABSOLUTELY NOT, at best it's just more convenient as it provides analogue (high precision control) & has utility in other games as well,so it's just useful but not necessary by any stretch of the imagination.
Enjoy.
-
2
-
3
-
4
-
-
On 5/9/2021 at 7:12 PM, Connor said:
Before you judge,
Alright, Time to judge
Was Awesome [ Esp That Last Bit ], Now Go Make More
-
1
-
-
6 minutes ago, LangMaster said:
Chinese is bluefor, there is no need for bot spawns.
It's generally a good habit to get into to make coop maps playable from both sides, as only then do you see any underlying problems if there are any, matter of personal preference AND principle though.
6 minutes ago, LangMaster said:Radar point is just for giving time for bots
Uhhh, if you intend team 2 to be player only(which imho is iffy), then just give bots the flag from the get go, and place emplacements, and tie everything spawned on the beach to the radar cp, so it won't spawn otherwise.
-
Just tried it out, a few of my thoughts...
Blackgold is generally fine, asset's are slightly unbalanced & u need to spread out vehicles across flags so bots don't have to walk everywhere but fine for the most part.
As for Adak, well....
- Carrier spawn missing for bots, so either add bot only - spawn on vehicle only spawn points on carrier, see jabal for how to do that, or have radar owned by chinese on start so they have somewhere to spawn on, as otherwise the only way to get them to spawn is for a player to go to the mainland and join each squad to take lead for a moment to give them somewhere to spawn, a similar problem exists on soul rebel though, It's a fairly uncommon mistake, hence why you need to always at least play test at least one round from either side before you publish.
- Again bots walk everywhere because vehicles are concentrated at main, so have a few transport vehicles linked to CP's so bots don't have to walk everywhere.
- There's something wrong with navmesh, sure bots walk fine through it, but vehicles are a different story, so normally when a bot encounters a vehicle, it either attempts to take it or enter as a passenger or worst case, just go around it because bots cant enter said vehicle, more often than not however bots act as though the vehicle isn't even there and simply get stuck in a walking animation behind it i.e either vehicle doesn't support bots in which case u should swap it out or navmesh is borked, so validate your navmesh & assets for Inf, Vehicles, Aircraft(i.e do they enter, dismount, stay in combat area,...)
- Balancing is also a big issue, asset placement is oddly saturated, again making bots walk everywhere and hardly using vehicles as there are far too few spawn in vehicle spawn points.
Generally a pretty good attempt, but I suggest you do in game playtests, boring and repetitive though it may be, a thorough playtest helps you avoid everything I pointed out and then some, enable ai debug 'aiDebug.draw 1' & 'aiSettings.setStatsViewDistance 150' in aidefaults.ai to evaluate ai behaviour, enable 'rcon debug' and do 'rcon fastcap' to validate all CP's work as intended with CP's being capped fairly quickly for debug, and maybe spawn a few vehicles next to bots to see how they behave
tldr; playtest
-
1
-
1
-
1
-
Might you compile a second chart, but with layers as well, beats going through the gallery, thx.
-
Tried it for a few min, my biggest gripe, them removing map transparency, like wtf, some of us use the map while flying eh!
-
1
-
1
-
6
-
-
6 hours ago, =VG= SemlerPDX said:
What I'm thinking is that the system could figure out if it's gone 'too' easy on a low pop scenario and adjust accordingly... maybe the 7 people that are on have 4000+ hours each in the game, right? But it needs to be able to 'be easy' for 6 noobs and a single trained regular player, too, right?
Should be simple enough, it's a simple matter of adding a factorial that uses KD to evaluate player skill relative to time elapsed, higher KD in a given unit of time signifying higher skilled player. An even simple way to balance this would be to increase the difficulty by .1% for every bot killed and reduce it by 1% for every player killed which results in a more emergent & fluid difficulty balance.
Here's an updated script, also attached, that uses a sigmoid function to dynamically adjust difficultyMultiplier based on KD ratio of players for every bot killed, such that the more players there are with high KD ratios the lower the difficultyMultiplier, which translates to higher bot count, with difficultyMultiplier never exceeding config defind value, such that it' can get exponentially more difficult relative to more experienced players but it never gets easier beyond value defined in config.
tldr; player KD ratios continually modify difficultyMultiplier with an upper limit for every bot killed and player count continually forces recalculation of bot respawn times relative to player count for every bot killed so as to modify the mean number of bots active in a given unit of time, i.e logical bot count. @=VG= SemlerPDX
Spoilerimport sys, host, bf2, math, realitycore as rcore, realityadmin as radmin difficultyMultiplier = 5 #lower is more difficult as bots spawn more frequently whereas higher is less difficult as bots spawn less frequently, see cheatsheet below #value set ABOVE signifies minimum base difficultyMultiplier, such that difficulty will not go higher than this value, such that this will be the LOWEST difficulty, as higher is lower difficulty difficultyMultiplierMax = difficultyMultiplier def sigmoid(x): #applying the sigmoid function return 1 / (1 + math.exp(-x)) def sigmoid_derivative(x): #computing derivative to the Sigmoid function return x * (1 - x) def normalize(x, max, min): #function that takes a number and normalizes it from 0 - 1 between its min and max bounds. return (x - min) / (max - min) def normalizeInverse(x, max, min): #function that takes a number and normalizes it from 0 - 10 between its min and max bounds. then inverts return value so high val becomes low val & vice versa. x = max - 1 if x >= max else x x = min if x <= min else x nI = max - max*((x - min) / (max - min)) return min if nI == 0 else nI def init(): host.registerHandler('PlayerKilled', onPlKilled) #wounded, also resolves outright kills if killer host.registerHandler('PlayerDeath', onPlDeath) #deded def onPlKilled(victim, attacker, weapon, assists, obj): attackerKills = attacker.score.kills attackerDeaths = attacker.score.deaths attackerKD = 1 if attackerKills == 0 or attackerDeaths == 0 else attackerKills/attackerDeaths #dynamically adjust global difficultyMultiplier on every kill, which logically resolves to the dominant multiplier corresponding to the skill of most dominant players #use sigmoid normalisation function to normalise KD to a value between 1 & 0, where if 0 value is changed to 0.1 #the inverse of the sigmoid is then used as the difficultyMultiplier, inverse is used as lower values signify higher difficulty thisDifficulty = normalizeInverse(attackerKD, 10, 1) difficultyMultiplier = difficultyMultiplierMax if thisDifficulty > difficultyMultiplierMax else thisDifficulty #above signifies that difficultyMultiplier will only get as easy as manually set difficulty while being incremented to maximum difficulty based on player performance radmin.globalMessage("DEBUG: current difficultyMultiplier is: " + str(difficultyMultiplier)) if victim.isAIPlayer() and not attacker.isAIPlayer(): #if player killed bot botSpawnTime(victim, victim, difficultyMultiplier) elif victim.isAIPlayer() and attacker.isAIPlayer(): #if bot killed bot, respawn instantly victim.setTimeToSpawn(0) else: botSpawnTime(victim, victim, difficultyMultiplier) def onPlDeath(player, soldier): if player.isAIPlayer(): botSpawnTime(player, soldier, difficultyMultiplier) def botSpawnTime(player, soldier, difficultyMultiplier): botSpawnTime = math.ceil((bf2.playerManager.getNumberOfPlayersInTeam(1) / bf2.playerManager.getNumberOfPlayersInTeam(2)) * difficultyMultiplier) radmin.globalMessage("DEBUG: respawning " + str(player.getName()) + " in " + str(player.getTimeToSpawn()) + " sec [" + str(botSpawnTime) + "]secComputed") player.setTimeToSpawn(botSpawnTime) for p in bf2.playerManager.getPlayers(): #redundancy to reset all bot spawn times to specified timer, ignoring PR set spawntimes... if p.isAIPlayer(): p.setTimeToSpawn(botSpawnTime) return """ dynamic difficulty scaling applied for every killed & spawned bot,bot respawn time proportional to number of players & number of bots there's 2 ways to change bot count, change actual number of bots spawned OR change spawn times to logically define the number of bots active at any given time comparison cheat sheet: spawn times @difficulty N for a given Number of players, assuming 40bots @difficulty=1 40sec@1players 20sec@2players 14sec@3players 10sec@4players 8sec@5players 7sec@6players 6sec@7players 5sec@8players 5sec@9players 4sec@10players 4sec@11players 4sec@12players 4sec@13players 3sec@14players 3sec@15players 3sec@16players 3sec@17players 3sec@18players 3sec@19players 2sec@20players 2sec@21players 2sec@22players 2sec@23players 2sec@24players 2sec@25players 2sec@26players 2sec@27players 2sec@28players 2sec@29players 2sec@30players 2sec@31players 2sec@32players 2sec@33players 2sec@34players 2sec@35players 2sec@36players 2sec@37players 2sec@38players 2sec@39players 1sec@40players @difficulty=2 80sec@1players 40sec@2players 28sec@3players 20sec@4players 16sec@5players 14sec@6players 12sec@7players 10sec@8players 10sec@9players 8sec@10players 8sec@11players 8sec@12players 8sec@13players 6sec@14players 6sec@15players 6sec@16players 6sec@17players 6sec@18players 6sec@19players 4sec@20players 4sec@21players 4sec@22players 4sec@23players 4sec@24players 4sec@25players 4sec@26players 4sec@27players 4sec@28players 4sec@29players 4sec@30players 4sec@31players 4sec@32players 4sec@33players 4sec@34players 4sec@35players 4sec@36players 4sec@37players 4sec@38players 4sec@39players 2sec@40players @difficulty=3 120sec@1players 60sec@2players 42sec@3players 30sec@4players 24sec@5players 21sec@6players 18sec@7players 15sec@8players 15sec@9players 12sec@10players 12sec@11players 12sec@12players 12sec@13players 9sec@14players 9sec@15players 9sec@16players 9sec@17players 9sec@18players 9sec@19players 6sec@20players 6sec@21players 6sec@22players 6sec@23players 6sec@24players 6sec@25players 6sec@26players 6sec@27players 6sec@28players 6sec@29players 6sec@30players 6sec@31players 6sec@32players 6sec@33players 6sec@34players 6sec@35players 6sec@36players 6sec@37players 6sec@38players 6sec@39players 3sec@40players @difficulty=4 160sec@1players 80sec@2players 56sec@3players 40sec@4players 32sec@5players 28sec@6players 24sec@7players 20sec@8players 20sec@9players 16sec@10players 16sec@11players 16sec@12players 16sec@13players 12sec@14players 12sec@15players 12sec@16players 12sec@17players 12sec@18players 12sec@19players 8sec@20players 8sec@21players 8sec@22players 8sec@23players 8sec@24players 8sec@25players 8sec@26players 8sec@27players 8sec@28players 8sec@29players 8sec@30players 8sec@31players 8sec@32players 8sec@33players 8sec@34players 8sec@35players 8sec@36players 8sec@37players 8sec@38players 8sec@39players 4sec@40players --default-- default PR bot respawn time is ~60seconds if deded and 0sec if wounded before deded @difficulty=5 200sec@1players 100sec@2players 70sec@3players 50sec@4players 40sec@5players 35sec@6players 30sec@7players 25sec@8players 25sec@9players 20sec@10players 20sec@11players 20sec@12players 20sec@13players 15sec@14players 15sec@15players 15sec@16players 15sec@17players 15sec@18players 15sec@19players 10sec@20players 10sec@21players 10sec@22players 10sec@23players 10sec@24players 10sec@25players 10sec@26players 10sec@27players 10sec@28players 10sec@29players 10sec@30players 10sec@31players 10sec@32players 10sec@33players 10sec@34players 10sec@35players 10sec@36players 10sec@37players 10sec@38players 10sec@39players 5sec@40players @difficulty=6 240sec@1players 120sec@2players 84sec@3players 60sec@4players 48sec@5players 42sec@6players 36sec@7players 30sec@8players 30sec@9players 24sec@10players 24sec@11players 24sec@12players 24sec@13players 18sec@14players 18sec@15players 18sec@16players 18sec@17players 18sec@18players 18sec@19players 12sec@20players 12sec@21players 12sec@22players 12sec@23players 12sec@24players 12sec@25players 12sec@26players 12sec@27players 12sec@28players 12sec@29players 12sec@30players 12sec@31players 12sec@32players 12sec@33players 12sec@34players 12sec@35players 12sec@36players 12sec@37players 12sec@38players 12sec@39players 6sec@40players @difficulty=7 280sec@1players 140sec@2players 98sec@3players 70sec@4players 56sec@5players 49sec@6players 42sec@7players 35sec@8players 35sec@9players 28sec@10players 28sec@11players 28sec@12players 28sec@13players 21sec@14players 21sec@15players 21sec@16players 21sec@17players 21sec@18players 21sec@19players 14sec@20players 14sec@21players 14sec@22players 14sec@23players 14sec@24players 14sec@25players 14sec@26players 14sec@27players 14sec@28players 14sec@29players 14sec@30players 14sec@31players 14sec@32players 14sec@33players 14sec@34players 14sec@35players 14sec@36players 14sec@37players 14sec@38players 14sec@39players 7sec@40players @difficulty=8 320sec@1players 160sec@2players 112sec@3players 80sec@4players 64sec@5players 56sec@6players 48sec@7players 40sec@8players 40sec@9players 32sec@10players 32sec@11players 32sec@12players 32sec@13players 24sec@14players 24sec@15players 24sec@16players 24sec@17players 24sec@18players 24sec@19players 16sec@20players 16sec@21players 16sec@22players 16sec@23players 16sec@24players 16sec@25players 16sec@26players 16sec@27players 16sec@28players 16sec@29players 16sec@30players 16sec@31players 16sec@32players 16sec@33players 16sec@34players 16sec@35players 16sec@36players 16sec@37players 16sec@38players 16sec@39players 8sec@40players @difficulty=9 360sec@1players 180sec@2players 126sec@3players 90sec@4players 72sec@5players 63sec@6players 54sec@7players 45sec@8players 45sec@9players 36sec@10players 36sec@11players 36sec@12players 36sec@13players 27sec@14players 27sec@15players 27sec@16players 27sec@17players 27sec@18players 27sec@19players 18sec@20players 18sec@21players 18sec@22players 18sec@23players 18sec@24players 18sec@25players 18sec@26players 18sec@27players 18sec@28players 18sec@29players 18sec@30players 18sec@31players 18sec@32players 18sec@33players 18sec@34players 18sec@35players 18sec@36players 18sec@37players 18sec@38players 18sec@39players 9sec@40players @difficulty=10 400sec@1players 200sec@2players 140sec@3players 100sec@4players 80sec@5players 70sec@6players 60sec@7players 50sec@8players 50sec@9players 40sec@10players 40sec@11players 40sec@12players 40sec@13players 30sec@14players 30sec@15players 30sec@16players 30sec@17players 30sec@18players 30sec@19players 20sec@20players 20sec@21players 20sec@22players 20sec@23players 20sec@24players 20sec@25players 20sec@26players 20sec@27players 20sec@28players 20sec@29players 20sec@30players 20sec@31players 20sec@32players 20sec@33players 20sec@34players 20sec@35players 20sec@36players 20sec@37players 20sec@38players 20sec@39players 10sec@40players """
And I welcome any & all feedbacks & suggestion, I posted it here so it might be used by anyone who finds it useful, and so I take no issue with customising it to requests.
-
1
-
1
-
1
-
-
5 hours ago, =VG= SemlerPDX said:
How about a 'retreat' bleed? BLUFOR has capped all zones, and admins would otherwise need to 'run next' or kill bots streaming out of main for 30+ minutes, so instead, the system notices and issues a 'retreat' which causes OPFOR ticket bleed to increase dramatically and swiftly? When no admins present, this would allow map to progress swiftly to next map without someone seeking out an Admin just so players don't need to 'run out the clock' as it were.
I already wrote a script that on every CP capped checks if all capable CP's are owned by team 2 && if so sets bot team tickets to 0 after 15 sec triggering end of round by team 2 victory. I'll post it if you wish, should certainly make no-ticket bleed a thing of the past, with rare exceptions like cappable CP in dod for instance. *also attached below* @=VG= SemlerPDX
Spoilerimport sys, host, bf2, math, realitycore as rcore, realityadmin as radmin, realitytimer as rtimer #simple script to detect end of round on maps where there may be no end of round ticket bleed or where eor ticket bleed might be too slow,and force end of round with victory instead of draw def init(): host.registerHandler('ControlPointChangedOwner', onCPStatusChange) def eorEnum(thisCp): for cp in rcore.getControlPoints(): #if cp is capturable, and is capturable by team 2 and is not owned by team 2 then return as there's at least one capturable flag owned by bot team if cp.cp_getParam('unableToChangeTeam') != 1 and cp.cp_getParam('allowCaptureByTeam', 2) == 1 and cp.cp_getParam('team') == 1: radmin.globalMessage("bot team owns at least 1 capturable flag") return #if cp is capturable, and is capturable by team 2 and is not owned by team 2 or team 1 then return as there's at least one capturable flag that remains to be captured. if cp.cp_getParam('unableToChangeTeam') != 1 and cp.cp_getParam('allowCaptureByTeam', 2) == 1 and cp.cp_getParam('team') != 2: radmin.globalMessage("at least one flag remains to be captured.") #i.e at least one flag is neutral return #if this line is reached, all cappable cp's are owned by player team, so set bot team tickets to 0 & trigger end of round radmin.globalMessage("End Of Round Will Now Be Forcefully Invoked, As There Appears To Be No Ticket Bleed... GG") bf2.gameLogic.setTickets(1, 0) #set team 1/bot team tickets to 0 def onCPStatusChange(cp, top): #invoke end of round check N seconds after any flag status changes rtimer.fireOnce(eorEnum, 15, cp)
-
1
-
1
-
-
I understand some mods were included to make it easier for newer people to transition to Arma, but personally I feel ETS(Enemy Tagging System), No Weapon Sway & No Stamina have no place in Arma, Tactical Ping is more than adequate & Weapon Sway as well as Stamina exist to prevent individuals loading up on an unreasonable arsenal so as to force individuals to cooperate & use vehicle cargo, and you can Run(Though Not Sprint) infinitely to begin with,so that combination of NoSway+NoStamina especially shouldn't be in the modset, IMHO.
1 hour ago, =VG= .Blizzard. said:no more mods need to be added besides project OPFOR.
I understand where you're coming from but if i may, perhaps server key's should then be added to allow OPTIONAL client side mods like JSRS, Blastcore, A3 Thermal Improvement ,etc... entirely at individuals discretion where appropriate. Locking down gameplay to a very limited preselected modset is IMHO, not the best idea, when there exists a possibility to accommodate for individual preference, with in reason.
And I get the intent of this thread isn't solicitation of mods, but LAxemann's immersion essentials & Real Engine despite being tiny mods, offer a huge boon to immersion & gameplay, without compromising on performance in anyway shape or form, so, ... for your consideration.1 hour ago, =VG= .Blizzard. said:That will not be a thing at all as not all want to play something that is already too complicated.
YES, ACE MEDICAL is the devil's spawn.
4 hours ago, =VG= .Blizzard. said:Mods that can be added could be Vcom ai or Lambs stuff, AND THE MOST IMPORTANT !!! project OPFOR.
In my experience VCOM is incompatible with virtually every other AI mod because it conflicts with & in most cases overrides them, and LAMBS generally works best with ASR_AI3, I know you prefer VCOM, but just wanted to clarify on the compromises, as on it's own VCOM is stellar, but the ASR_AI+LAMBS combination is vastly superior to either VCOM or LAMBS or ASR_AI individually..
-
1
-
-
Just to crystalize a particularly important point I failed to articulate, such a system for the most part removes server population as a variable in map selection, which meaningfully translates to, ANY MAP CAN BE PLAYED BY ANY NUMBER OF PLAYERS, and thus repetition is reduced and variety of viable maps increased exponentially. Just wanted to put that out there, as I'd forgotten to do so.
-
4
-
-
10 hours ago, =VG= Fastjack said:
Not really, what issue do you mean? Hipfiring is one problem i'm aware about or the old look up wrapper error but that is fixed.
Well there you go, never knew that got fixed, was out of the loop for a while, so I guess manpads shouldn't be a problem then.
10 hours ago, =VG= Fastjack said:It's also possible to bypass problems - generally done when you think out of the box.
Always.
10 hours ago, =VG= Fastjack said:About the motivation thingy -
i know what you mean and can understand that. In my case i lose focus or interrest because i'm working alone the most time on coop insurgency and there are so many things todo to improve coop but unbearable for one person. To much work.
Touchè brother.
6 hours ago, GRNANDGLD said:why would you want less bots?
Let's assume you wouldn't, surely you want more bots though, eh? So that's the flip side, depending on how you configure the difficulty multiplier, you can avoid fewer bots while having more for higher player numbers, it's entirely left to configs, like all good things in life
6 hours ago, GRNANDGLD said:I want random spawn points so nobody Volods the spawns
is that a thing?
It can be, but not on any officially sanctioned server, at least not anytime soon. You'll most likely come across it in events, should anyone choose to use such functionality. But as for is it possible, absolutely, I've done it & so have others.
-
2
-
-
4 hours ago, =VG= Fastjack said:
Would it be possible to spawn a bot with a kit that isn't in the selection menu?
Excample:
Multiple bots got killed by CAS. Now, a trigger let spawn a bot with a manpad.
or :
Multiple bots got killed by tank. Trigger let spawn a bot with a HATkit.
Come on please say YES its possible.
It's not only possible, it's fairly trivial. The only caveat being, though
host.rcon_invoke("gamelogic.setkit ****")
sets ANY KIT initialized for a given faction in real-time, it changes OVERALL kit composition of bots on successive re-spawns & not immediately, instead of only INDIVIDUAL bot kits. Which might actually be more ideal, if it's constantly being set to a different kit relative to dominant threat at any given point in time, though not as targeted, it makes it so that if armor dominates the battlefield, a majority of bots that re-spawn do so with AT, though i'm sure you already know of the issue with bots using MANPADS.
There is of course also a targeted solution, a simple (re)spawn handler can be used to shuffle spawns, such that any bot that spawns with AT kit spawns at pos of any other bot killed by ARMOR(with random delay) for instance, or just at closest spawn point to killer(player).
In-fact I recall writing a dumb little function for this, I called it DIE_VERSION, it was supposed to signify that the player was going to die in the next encounter with a bot the player killed.... I digress though, I'll probably pack it along with some other stuff I've written over the years and make a post or something at some point, I've thought about doing so, just got lazy.
-
1
-
-
7 hours ago, =VG= SemlerPDX said:
Can I assume you've tested this already? Or is that something that would require a dedicated server and a live environment?
Tested on both, it was part of a server side minimod i wrote for bf2.
7 hours ago, =VG= SemlerPDX said:Can we implement this, or would there be compromises to doing so that would make it undesirable?
Not that i can think off, that's why i posted it here, to create discourse if nothing else.
7 hours ago, =VG= SemlerPDX said:This is all assuming that this system does not require a server restart, and that the next map loaded bot count is based on currently connected players.
Not only does it not require a server restart, it changes through a round,so if a round starts off with 35people and shrinks to 20people, logical bot count changes accordingly as it's constantly recalculated for every bot killed, there should be no performance penalty.
4 hours ago, =VG= Fastjack said:I dont know if we need this for our server(s) because some maps can be handled with 10 players. Doesn`t matter how many bots are on the other side.
Absolutely true, however on the flipside, with an appropriate (per testing) difficulty multiplier applied, it makes it more challenging for a more full server, as normally whether or not there's a full server or not, bot respawn time is same as player respawn time, about 60sec by default which on a full server or even half full, imho is too much.... So one might say it makes maps easier or no easier(depending on difficulty multiplier) for few, inexperienced players and makes maps harder for lots of experienced or inexperienced players alike.
I thought about having it check game tracker to check player's played hours to scale for player experience, but figured that wouldn't go down as well....
4 hours ago, =VG= Fastjack said:What Coop really need is : DYNAMIC GAMEPLAY
CAN'T AGREE MORE, I'll port over some other scripts for THAT with time, when motivation strikes....
4 hours ago, =VG= Fastjack said:Khami lrg is horrible.
Blasphemy, it's one of double's finest, imho. Agree to Disagree.
4 hours ago, =VG= Fastjack said:A pythonscript that choose randomly some objectspawners and let spawn their shit.
4 hours ago, =VG= Fastjack said:Why we have fucking botspawnpoints inside of controlpoint areas? Or why we have active spawnpoints in a flagcap radius that is linked by another flag? To name one, Kashan with his amazing respawntime of the Milan. Those spawnpoint placements only provoking things like spawnpoint camping or causing missing boots on other important places when the server population is low.
My solution for that was making every bot a contextual spawn point(contingent on vehicle type, cappable cp in range) and making every bot killed a probabilistic contextual respawn trigger(ex. every bot cas kills gets a 60% probability of respawning every shilka on map instead of current fixed respawn time AND 40% probability of cloning spawned shilka on killed bot pos instead of mapper designated pos after a delay), I'll port it at some point, It's part of a much larger script so, it's finicky to clean up.
Started porting but got stuck writing a function to validate position as being in navmesh to prevent bots dying, so i can also use player positions too as that's a more random position seed, and a 2dTo3DPos function to resolve 2d coords to 3d from height map, i'll sort that out too when motivation strikes.
4 hours ago, =VG= Fastjack said:I want more dynamic gameplay and not the static gameplay we currently have in coop.
Me & you both, and just about every person who plays coop.
4 hours ago, =VG= Fastjack said:I place 50 mortars, 50 bipods and 50 AA-AT static defense in the GPO but the randomcode will only pick 4 mortars, 10 bipods and 2 Static AA's in a random manner. After one of this asset got destroyed another mortar/bipod/static AA-AT will spawn 5-10 minutes later on a different objectspawner, so not on the same position again.
4 hours ago, =VG= Fastjack said:No one at roundstart knows where the mortars/bipod/static AA-AT's will spawn, so CAS has to be carefully, vehicles have to play carefully and the troops also has to Move carefully. No Round will be the same because the shit that will screw up the humans not spawn anymore on the same places.
I implemented this at your request, but found a bug that causes python crash after the first dozen selections(which simply changes the minMax (re)spawn time of random spawners & despawns all on round start), been looking for a fix and what causes that for a while.... still at it, when once again motivation strikes.
-
1
-
1
-
3
-
-
2 hours ago, Connor said:
Goodluck.
This one's more of a hail mary... Just putting it out there for posterity
-
1
-
-
Changing the number of bots relative to player count has long been discussed and is somewhat of a long standing 'unresolved issue' as it can't be done using configs or without server restart, and given some recent discussion on discord about map difficulty, i figured i might as well post this up as at the very least an alternate 'POSSIBILITY', which at present it is not.
So there's two ways to change bot count, either set ENTITY COUNT in server config or change LOGICAL COUNT by manipulating spawn times such that the mean number of bots SPAWNED at any point in time is lower or higher, Classical interpretation of 'count' signifies entity iterations, Logical interpretation that i use here signifies 'INTERACTIVE entity iterations', additionally (re)spawn time based entity count is the most computationally efficient way of dynamically adjusting such count without fucking up server performance, as more bots generally tend to tax a server's performance more, especially in such an old engine.
TLDR; It's a fairly trivial script that separates respawn times of bots & players, dynamically not only on round start but through a round as well, as players JOIN & LEAVE.
It occurs to me that most people don't download attachments & since one needs to login to download attachments anyway, I'll just embed it below, as it's fairly trivial.
SEE CHEATSHEET IN EMBED BELOW TO SEE HOW SPAWN TIME CHANGES RELATIVE TO PLAYER COUNT, it was automatically generated so it should be a fairly accurate representation
import sys, host, bf2, math, realitycore as rcore, realityadmin as radmin difficultyMultiplier = 5 #lower is more difficult as bots spawn more frequently whereas higher is less difficult as bots spawn less frequently, see cheatsheet below def init(): host.registerHandler('PlayerKilled', onPlDeath) #wounded host.registerHandler('PlayerDeath', onPlDeath) #deded def onPlDeath(player, soldier): if player.isAIPlayer(): botSpawnTime(player, soldier, difficultyMultiplier) def botSpawnTime(player, soldier, difficultyMultiplier): botSpawnTime = math.ceil((bf2.playerManager.getNumberOfPlayersInTeam(1) / bf2.playerManager.getNumberOfPlayersInTeam(2)) * difficultyMultiplier) radmin.globalMessage("DEBUG: respawning " + str(player.getName()) + " in " + str(player.getTimeToSpawn()) + " sec [" + str(botSpawnTime) + player.setTimeToSpawn(botSpawnTime) "]secComputed") for p in bf2.playerManager.getPlayers(): #redundancy to reset all bot spawn times to specified timer, ignoring PR set spawntimes... if p.isAIPlayer(): p.setTimeToSpawn(botSpawnTime) return """ dynamic difficulty scaling applied for every killed & spawned bot,bot respawn time proportional to number of players & number of bots there's 2 ways to change bot count, change actual number of bots spawned OR change spawn times to logically define the number of bots active at any given time comparison cheat sheet: spawn times @difficulty N for a given Number of players, assuming 40bots @difficulty=1 40sec@1players 20sec@2players 14sec@3players 10sec@4players 8sec@5players 7sec@6players 6sec@7players 5sec@8players 5sec@9players 4sec@10players 4sec@11players 4sec@12players 4sec@13players 3sec@14players 3sec@15players 3sec@16players 3sec@17players 3sec@18players 3sec@19players 2sec@20players 2sec@21players 2sec@22players 2sec@23players 2sec@24players 2sec@25players 2sec@26players 2sec@27players 2sec@28players 2sec@29players 2sec@30players 2sec@31players 2sec@32players 2sec@33players 2sec@34players 2sec@35players 2sec@36players 2sec@37players 2sec@38players 2sec@39players 1sec@40players @difficulty=2 80sec@1players 40sec@2players 28sec@3players 20sec@4players 16sec@5players 14sec@6players 12sec@7players 10sec@8players 10sec@9players 8sec@10players 8sec@11players 8sec@12players 8sec@13players 6sec@14players 6sec@15players 6sec@16players 6sec@17players 6sec@18players 6sec@19players 4sec@20players 4sec@21players 4sec@22players 4sec@23players 4sec@24players 4sec@25players 4sec@26players 4sec@27players 4sec@28players 4sec@29players 4sec@30players 4sec@31players 4sec@32players 4sec@33players 4sec@34players 4sec@35players 4sec@36players 4sec@37players 4sec@38players 4sec@39players 2sec@40players @difficulty=3 120sec@1players 60sec@2players 42sec@3players 30sec@4players 24sec@5players 21sec@6players 18sec@7players 15sec@8players 15sec@9players 12sec@10players 12sec@11players 12sec@12players 12sec@13players 9sec@14players 9sec@15players 9sec@16players 9sec@17players 9sec@18players 9sec@19players 6sec@20players 6sec@21players 6sec@22players 6sec@23players 6sec@24players 6sec@25players 6sec@26players 6sec@27players 6sec@28players 6sec@29players 6sec@30players 6sec@31players 6sec@32players 6sec@33players 6sec@34players 6sec@35players 6sec@36players 6sec@37players 6sec@38players 6sec@39players 3sec@40players @difficulty=4 160sec@1players 80sec@2players 56sec@3players 40sec@4players 32sec@5players 28sec@6players 24sec@7players 20sec@8players 20sec@9players 16sec@10players 16sec@11players 16sec@12players 16sec@13players 12sec@14players 12sec@15players 12sec@16players 12sec@17players 12sec@18players 12sec@19players 8sec@20players 8sec@21players 8sec@22players 8sec@23players 8sec@24players 8sec@25players 8sec@26players 8sec@27players 8sec@28players 8sec@29players 8sec@30players 8sec@31players 8sec@32players 8sec@33players 8sec@34players 8sec@35players 8sec@36players 8sec@37players 8sec@38players 8sec@39players 4sec@40players --default-- default PR bot respawn time is ~60seconds if deded and 0sec if wounded before deded @difficulty=5 200sec@1players 100sec@2players 70sec@3players 50sec@4players 40sec@5players 35sec@6players 30sec@7players 25sec@8players 25sec@9players 20sec@10players 20sec@11players 20sec@12players 20sec@13players 15sec@14players 15sec@15players 15sec@16players 15sec@17players 15sec@18players 15sec@19players 10sec@20players 10sec@21players 10sec@22players 10sec@23players 10sec@24players 10sec@25players 10sec@26players 10sec@27players 10sec@28players 10sec@29players 10sec@30players 10sec@31players 10sec@32players 10sec@33players 10sec@34players 10sec@35players 10sec@36players 10sec@37players 10sec@38players 10sec@39players 5sec@40players @difficulty=6 240sec@1players 120sec@2players 84sec@3players 60sec@4players 48sec@5players 42sec@6players 36sec@7players 30sec@8players 30sec@9players 24sec@10players 24sec@11players 24sec@12players 24sec@13players 18sec@14players 18sec@15players 18sec@16players 18sec@17players 18sec@18players 18sec@19players 12sec@20players 12sec@21players 12sec@22players 12sec@23players 12sec@24players 12sec@25players 12sec@26players 12sec@27players 12sec@28players 12sec@29players 12sec@30players 12sec@31players 12sec@32players 12sec@33players 12sec@34players 12sec@35players 12sec@36players 12sec@37players 12sec@38players 12sec@39players 6sec@40players @difficulty=7 280sec@1players 140sec@2players 98sec@3players 70sec@4players 56sec@5players 49sec@6players 42sec@7players 35sec@8players 35sec@9players 28sec@10players 28sec@11players 28sec@12players 28sec@13players 21sec@14players 21sec@15players 21sec@16players 21sec@17players 21sec@18players 21sec@19players 14sec@20players 14sec@21players 14sec@22players 14sec@23players 14sec@24players 14sec@25players 14sec@26players 14sec@27players 14sec@28players 14sec@29players 14sec@30players 14sec@31players 14sec@32players 14sec@33players 14sec@34players 14sec@35players 14sec@36players 14sec@37players 14sec@38players 14sec@39players 7sec@40players @difficulty=8 320sec@1players 160sec@2players 112sec@3players 80sec@4players 64sec@5players 56sec@6players 48sec@7players 40sec@8players 40sec@9players 32sec@10players 32sec@11players 32sec@12players 32sec@13players 24sec@14players 24sec@15players 24sec@16players 24sec@17players 24sec@18players 24sec@19players 16sec@20players 16sec@21players 16sec@22players 16sec@23players 16sec@24players 16sec@25players 16sec@26players 16sec@27players 16sec@28players 16sec@29players 16sec@30players 16sec@31players 16sec@32players 16sec@33players 16sec@34players 16sec@35players 16sec@36players 16sec@37players 16sec@38players 16sec@39players 8sec@40players @difficulty=9 360sec@1players 180sec@2players 126sec@3players 90sec@4players 72sec@5players 63sec@6players 54sec@7players 45sec@8players 45sec@9players 36sec@10players 36sec@11players 36sec@12players 36sec@13players 27sec@14players 27sec@15players 27sec@16players 27sec@17players 27sec@18players 27sec@19players 18sec@20players 18sec@21players 18sec@22players 18sec@23players 18sec@24players 18sec@25players 18sec@26players 18sec@27players 18sec@28players 18sec@29players 18sec@30players 18sec@31players 18sec@32players 18sec@33players 18sec@34players 18sec@35players 18sec@36players 18sec@37players 18sec@38players 18sec@39players 9sec@40players @difficulty=10 400sec@1players 200sec@2players 140sec@3players 100sec@4players 80sec@5players 70sec@6players 60sec@7players 50sec@8players 50sec@9players 40sec@10players 40sec@11players 40sec@12players 40sec@13players 30sec@14players 30sec@15players 30sec@16players 30sec@17players 30sec@18players 30sec@19players 20sec@20players 20sec@21players 20sec@22players 20sec@23players 20sec@24players 20sec@25players 20sec@26players 20sec@27players 20sec@28players 20sec@29players 20sec@30players 20sec@31players 20sec@32players 20sec@33players 20sec@34players 20sec@35players 20sec@36players 20sec@37players 20sec@38players 20sec@39players 10sec@40players """
-
1
-
5
-
-
4 hours ago, =VG= SemlerPDX said:
Thank you for understanding! And again, nothing at all against you, and we're all very appreciative of others making tools to help gamers!! You went the extra mile and it shows, bro! Well done!
If I could ask a clarifying question, regarding the quote above, where you wrote "... but nope, contents can be viewed by anyone so inclined..." and wanted to ask if that was using AHK itself or something? I'm literally just curious how I could view the contents if I had wanted to? Figured if I don't know, I should learn. AHK is pretty popular, and I'm often way too laser focused on VoiceAttack for my macros and such.All good & no you don't need ahk to view the contents, you can do so with 7-zip,WinRAR,etc... Just about any archive manager, 'right click','open as archive' & navigate to specified path inside the exe,drag & drop specified file into notepad & there lies the source. It's not a particularly well documented feature so not too many people know about it, but it's well established that compiled ahk scripts contain plain source unless you use exe Packers & such to conceal it.
tldr; use 7z to open exe as archive & navigate to specified file which can be viewed with notepad.
@=VG= SemlerPDX just for brevity^^
-
1
-
v1.6.7.0 Post any bugs here please
in PR Cooperative
Posted
As fastjack said, It's just a debug message, for the new auto-pickup kit feature no one wanted
It won't be on any changelog.