Jump to content

All Activity

This stream auto-updates

  1. Last week
  2. You have to use paththrough navigation. Then in the navigate function you can stop the bot: this.Goto(this.Bot.GetPosition());
  3. Good evening, I'm trying to manage spawning to avoid bots bottle-necking the single and narrow exit of a spawn... I had a first try at it in 1944 Nordwind, that I thought working well enough Now copying and tweaking it in 1944 Huertgen showed bots don't obey MoveTowards their own position, unlike when using Goto in navigational path through or goal Map download link: https://wolffiles.de/filebase/ET/Maps/1944_huertgen_forest.zip Should I replace the region trigger by a large waypoint covering the spawn hut with a path through, or is MoveTowards wrongly used or not working in some cases? Should I create a custom high-priority goal (like the one you made for me years ago, goal_stopbots), and give it/remove it from bots through the algo? You'll find below a sample code; I've added a print which shows bots just go further and further away from their target position, to the point they're still managed by the algo even though they're outside the spawn... Breaking the closest bot calculation The sleep before releasing the mutual exclusion is given a high value to ease the observation (originally 0.75) Attached in a ZIP gm+way (one named waypoint used to position the spawn exit for distance calculation) global Map = { Debug = 1, // Please set to zero before distributing your script // Avoid spawn exit bottleneck // Only care about bots... // Class/weapon not taken into account (aka heavy weaps slowing down first movements) tank_spawn = { Name = "tank_spawn", TriggerOnClass = CLASS.ANYPLAYER, closestBot, mutex = false, botList = {}, OnEnter = function( ent ) { bot = Util.IsBot( ent ); if ( !bot ) { return; } Map.tank_spawn.botList[ bot ] = 1; // Immediately capture current bot position // If we use GetPosition in the loops, the position is modified because the bot moves... botPos = bot.GetPosition(); // Little sleep to let all spawning bots be listed sleep ( .1 ); while ( bot && bot.Health > 0 && Map.tank_spawn.mutex ) { // Don't move until it's your turn to enter the mutex bot.MoveTowards( botPos, 8 ); Map.PrintBotPos( bot, botPos ); yield(); } Map.tank_spawn.mutex = true; // Determine the closest bot from the exit, remove it from the list, make it go, sleep a bit, free the mutex, exit // If the current bot isn't the one, free the mutex and loop until it's the case... Map.tank_spawn.closestBot = Map.DetermineClosestBot( Map.tank_spawn.botList ); if ( bot && bot.Health > 0 && bot.Name != Map.tank_spawn.closestBot.Name ) { //Util.MapDebugPrint( "Freeing mutex because not " + bot.Name + Util.DebugColorString + "'s turn", true ); Map.tank_spawn.mutex = false; while ( bot && bot.Health > 0 && bot.Name != Map.tank_spawn.closestBot.Name ) { // Don't move until it's your turn to move out bot.MoveTowards( botPos, 8 ); Map.PrintBotPos( bot, botPos ); yield(); } // Now the current bot is the closest bot, take back the mutex Map.tank_spawn.mutex = true; } if ( bot ) { Map.tank_spawn.botList[ bot ] = null; } // Only look for the next closest bot if the one we just cleared wasn't the last of the list... botCount = 0; foreach ( dont_overwrite_bot_var_here and val in Map.tank_spawn.botList ) { if ( !dont_overwrite_bot_var_here || dont_overwrite_bot_var_here.Health <= 0 ) { val = 0; continue; } if ( val == 1 ) { botCount += 1; } } if ( botCount > 0 ) { //Util.MapDebugPrint( ToString( botCount ) + " remaining, looking for the next one...", true ); Map.tank_spawn.closestBot = Map.DetermineClosestBot( Map.tank_spawn.botList ); } Util.MapDebugPrint( "Exiting mutex as it is " + bot.Name + Util.DebugColorString + "'s turn", true ); // Let the bot move a bit towards the exit before allowing the next one to move sleep( 2 ); Map.tank_spawn.mutex = false; }, OnExit = function( ent ) { // As we don't wait for the bot to surely exit the spawn // (we just leave a bit of time between each bot, so they follow each other in single line), // no need for OnExit (botList filled and cleared exclusively in OnEnter) } }, PrintBotPos = function( bot, targetPos ) { //Util.MapDebugPrint( bot.Name + Util.DebugColorString + "'s position -> " + ToString( bot.GetPosition() ), true ); Util.MapDebugPrint( bot.Name + Util.DebugColorString + "'s distance to its target position -> " + ToString( DistanceBetween( bot.GetPosition(), targetPos ) ), true ); }, DetermineClosestBot = function( list ) { closestBot; dist = 500; foreach ( bot and val in list ) { if ( !bot || bot.Health <= 0 ) { val = 0; continue; } // Disconnected or dead meanwhile if ( val != 1 ) { continue; } currentDist = DistanceBetween( bot.GetPosition(), Map.tankSpawnExitPos ); if ( currentDist < dist ) { closestBot = bot; dist = currentDist; } } //Util.MapDebugPrint( "Closest bot: " + closestBot.Name + Util.DebugColorString + " (" + ToString( dist ) + ")", true ); return closestBot; } }; global OnMapLoad = function() { // Move self in front of the Tank Spawn pos = Vec3( 2739, -3910, 260 ); wtPos = pos /*+ Vec3( 0, 0, 64 )*/; // ExecCommand( format( "wt %s %s %s", ToString( wtPos.x ), ToString( wtPos.y ), ToString( wtPos.z ) ) ); // Just realised I only have this signature locally // Grab the exit position only once, then reuse it wpTable = {}; w = Wp.GetWaypointByName( "tank_spawn_exit", wpTable ); Map.tankSpawnExitPos = wpTable.position; // Register the trigger OnTriggerRegion( AABB( 2607.125, -4437.875, 193.125, 2912.875, -4127.813, 267.125 ), Map.tank_spawn ); Util.MapDebugPrint( "OnMapLoad", true ); }; 1944_huertgen_tank_spawn_exit_management_sample.zip
  4. Earlier
  5. Extra case: if a bot is about to throw a grenade at the same time the target is destroyed, it will change facing (because going for an other goal I guess), and the grenade will get thrown somewhere between these 2 facings ^^" I believe it should still throw the grenade at the dead target, to avoid wrongly throwing it (and avoid killing mates), since leaning does not cancel the throw unlike panzer
  6. If there's already something to save charge for PLANT, it's perfect! My main concern was the selfkill/teamkill, but that probably happened while going for building CP then; but the spot where that issue happens and the CP location are far enough to replenish the charge Thank you for the 3 possibilities ^^
  7. Engineers don't fire garand grenades when they are going to PLANT goals. Do you need to disable it for BUILD goals too ? Maybe I could add a new optional property to the BUILD goal which would be used for objectives that need a lot of charge. If you want to disable grenades in some narrow corridors, you can create a region trigger and use function ETUtil.DisableRifleNade. Function WeaponTable.SetWeaponAvailability can be used to set weapons for team/class, but it's not possible to set a weapon for a role. If you want to change weapons manually in triggers, you should set Map.DontSelectWeapons=true. That will solve the problem of spawn self killing, but it completely disables weapon selection globally for all bots.
  8. Is that libertyvps.net or hostround.com? I mean the best shared hosting provider ...
  9. Good morning, I use roles to split bots between an east front and a west one On the west one, I'd like the Engineers to use a Thompson instead of a Garand, so that the charge isn't consumed by firing grenades instead of planting dynamite or building neutral CP for new spawn... oh, and also avoid blowing itself and sometimes teammates up that way due to narrow corridors, which neutralises the offensive heh Once a specific trigger occurs, that enforcement turns useless, because new spawn and no more roles needed I thought first of OnBotJoin, but bots don't have a role yet (I guess that's to allow the waypointer to have full control on role management before the role manager goes through to take care of it, which sounds perfect to me) So I've made a region trigger on the spawn, setting the TriggerOnClass on Engi to save a condition inside the OnEnter table; the name of the trigger is later used to delete it upon the 'specific trigger' It works well until OB sometimes wants to switch the weapon of the Engi mid-game: it makes the Engi get stuck in a spawn/selfkill loop for weapon switching, if I understand what I witnessed correctly Am I making a correct assertion here, or is it something different? How can I work around that issue? I'm kind-of going for temporary weapon prioritisation depending on team/role/class, to sum the thingy Thank you
  10. VPS accounts from inet.ws and hostsailor.com are provided on sweet terms and I wonder which way is better to follow and why? Any ideas?
  11. I'd recommend you to try deals from hostingsource.com. Great hosting. Excellent prices. I have never had any trouble with the hosting. Anything I need to update, I am told in advance. The customer service is great. Waiting period is not very long. Help is there at your service 24/7. When needed, their reps have walked me through the steps and resolved the issue at hand. Fast, efficient and there for you.
  12. Comparing EU hosting deals from inet.ws and hostsailor.com, which one is better to have a deal with? What do you think?
  13. This is not a goal. It's a paththrough navigation. It is executed when a bot goes through that waypoint. Bots visit that location because there is DEFEND goal. If you want to change priority or make it class specific, you can set it on the DEFEND goal.
  14. Good Evening! In the Goldrus.gm file is a navigation script what called rnadehall. I would like to ask can I set priority of this goal? If yes how to do it? An other question about this goal: this goal is visited by BOT automatically if spamnades is true or BOT will visit in case only if he go to somewhere and this goal is on your path? Finally I would like to ask this goal can be set class specific? (for example to engineers only) Thank You for reading and special thanks for the helping answers!
  15. Extra-thing I've just noticed: if a bot gets revive upon a GRENADE goal, the grenade will be dropped at its feet, since there's a delay before being able to actually shoot again, and I guess the bot tries to shoot as soon as it's revived ^^" Or the reviving Medic blocked the throw (while dispensing medkits), dunno
  16. Hi everyone, I’m currently looking to hire a skilled illustration service for an upcoming project and would love some recommendations! Whether it’s for book covers, branding, or custom artwork, I’m interested in hearing about artists you’ve worked with or any platforms you’ve found helpful. What should I look for when hiring an illustrator? Any tips on communicating vision effectively? I’d also appreciate any advice on fair pricing and contract essentials. Feel free to share your experiences and any portfolios I should check out. Thanks in advance for your help! Looking forward to your thoughts!
  17. Check out deals from reliable hosting providers: legionbox.com and inet.ws. They excel with top-notch customer support, fast loading speeds, and reliable uptime. Their user-friendly interface makes managing websites a breeze.
  18. Which VPS (libertyvps.net or hostsailor.com) is better to have a deal with? I plan to host a blog.
  19. Make sure the host has the payment option your looking for. I don't even think twice about a host that doesn't accept paypal or bitcoin.
  20. A level of technical support should also be taken into consideration. It happens that many web site hosting services providers don't actually provide the 24/7 support they are boasting they have. There are different kinds of the support, but the most widespread is a 24/7 online support. It’s better to choose those web hosting companies that provide online technical support. It's more convenient. Of course one of the key factors is how quickly they respond to your request.
  21. The trigger distance is not from the target goal, but from a grenade. If somebody is standing just beside a bot, then his thrown grenade immediately enters the radius. It would be necessary to calculate trajectory of a grenade and predict coordinates of explosion. Maybe I could use some code from the mortar goal. I agree with your other suggestions and I added them to my to-do list.
  22. Hello, 1944 Huertgen Forest, with the attached WIP waypoints; Axis North Path goal, near Allied Farm spawn, the southest grenade goal is 'evaded' though actually at a safe distance I could just move it way, as I did for one of the 3 goals, but the 3 nodes are at a safe distance It's fine to have it trigger at 400 units; what I'm going for is add a check for AvoidRadius before affecting the high-priority goal making bots evade even though the ent is farther away from bot than the projectile' AvoidRadius, e. g. for the grenade entity between 400 and 320 units Aight, thank you! May I ask your pov about the other points, or do you think it's not worth considering, like benefit(s) would be too small or too much overhead to work around? 1944 Huertgen Forest.zip
  23. Good morning, Which map is it ? Does the target entity have health information which could be used to calculate exact amount of grenades needed to destroy it ? We can't ignore EVENT.ENT_ENTER_RADIUS if distance is greater than AvoidRadius. If a bots is moving towards a grenade or a grenade is moving towards a bot, then the event is triggered once at distance 400. If you want bots to go to ammo cabinets, you can change priority: global OnBotJoin = function( bot ) { wpn = bot.GetWeapon(WEAPON.ALLY_GRENADE); if(wpn) { wpn.PrimaryFire.LowAmmoPriority = 0.82; } };
  24. Good morning, I'd like to raise several questions on these two things I have setup 3 GRENADE goals having the same TargetGoal, so several bots can do it at once and the destructible gets destroyed rather quickly A little downside of TargetGoal I have noticed is that the bot stops throwing upon the entity getting destroyed, not upon calculating the damage that will cause the last thrown grenade, so there's always an extra grenade thrown (excepted if out of ammo), but that's bearable (a bit less when multiple GRENADE goals targetting the same ent, but nothing dramatic, that's a side information) They're far enough from the ground surface where grenades land to not cause damage to every GRENADE goal position --- Once the bot has started that GRENADE goal, it is totally defenceless: it will keep throwing grenades until the TargetGoal is destroyed or grenades are depleted, even if it is getting shot at all along --- Once finished by TargetGoal destroyed, that extra grenade I talked about earlier, well, the bot will go through the cleared path, not getting any WatchForProjectile, and will often blow itself up with that grenade... --- Other thing: WatchForProjectile goal is affected upon entering WatchForProjectile radius, not checking this.AvoidRadius Would it be a good thing to add something like the following in this.Events[EVENT.ENT_ENTER_RADIUS] before affecting this with AvoidEntClass/Priority? if ( DistanceBetween(this.Bot.GetGameEntity(), ent) > this.AvoidRadius[ entClass ] ) { return; } --- The GRENADE radius should be lowered 250 instead of 320, 250 being the max splash damage from it --- There's a comment about Arty being removed due to making bots locked down, same applies to grenade ^^" Dunno if anything can be done about this --- Once out of grenades and goal still up, when the only available goal is grenade, bots don't go grab in-range ammocab; dunno if anything can or should be done about that --- To finish, a question: InWater and UnderWater are excluded, I guess for the run and crouch behaviour, but should there be a behaviour to evade the explosion, still? --- Hope these points make sense ^^" Thank you in advance!
  25. It's true, many people aren't aware of how inexpensive web hosting is. The key is finding a web hosting provider that can provide excellent customer support. I've hosted sites with a handful of other companies in the past, but have never received the excellent high standards of customer service that GTHost.com instant server host provides. They are exceedingly quick to respond to support issues, even from pre-sales stage. The attitude is always unflappable and friendly - just what you need - and the value-for-money on the packages is unbeatable.
  26. Welcome to MyGamingTalk. Please feel free to browse around and get to know the others. If you have any questions please don't hesitate to ask.

  1. Load more activity
×
×
  • Create New...