Jump to content

All Activity

This stream auto-updates

  1. Today
  2. Which map is it ? Why do you want to kill bots ?
  3. Yesterday
  4. Scripts that return some data or value are always very useful. I'm sorry that the content of the old forum was lost because it was a treasure trove, but in my case it is necessary that when a player drop the object, a query from the bot table is run for the current position and name of the bots. The name would be necessary for the test. After that, a comparison between the position of the bots and the original position of the pick-up object (pick-up point) Then the bots with the two smallest values execute the bot.ExecCommand("kill"); command.
  5. Last week
  6. foreach(g in Util.GoalTable("FLAGRETURN.*")) { Util.MapDebugPrint("Position " + g.GetPosition()); }
  7. "FLAGRETURN.* generated is not where player have dropped object? Is distance? "
  8. It does not count dead players because dead players cannot carry anything. But you can get distance to a dropped object from a FLAGRETURN goal. foreach(g in Util.GoalTable("FLAGRETURN.*")) { d = DistanceBetween(g, Vec3(-1824, 2115, 4)); Util.MapDebugPrint("Distance " + d); }
  9. It works nicely. Thank you very much palota! When there's a short amount of time between dropping the object and picking it up, maybe it's counting the dead player as well?
  10. for ( i = 0; i < 64; i += 1 ) { if ( EntityIsValid(i) && GetEntFlags(i, ENTFLAG.CARRYINGGOAL) ){ d = DistanceBetween(i, Vector3(-1824, 2115, 4)); Util.MapDebugPrint("Distance " + d); } }
  11. Good Evening! I would like to solve in a script that when an Axis player or a bot picks up the objective, compare every bot and players position (who hold an objective) distance to a Vector3 point position. After that, it is also necessary, when he throws the object, which Axis bot is closest to the objective. foreach(bot in BotTable) { if( GetEntTeam(ent) == TEAM.AXIS && GetEntFlags( ent, ENTFLAG.CARRYINGGOAL ) ) { if(DistanceBetween(b.GetGameEntity(player), Vector3(-1824, 2115, 4)) <= 100 ) { Util.MapDebugPrint("<= 100"); } else { Util.MapDebugPrint("> 100"); } } } In this exampleI got following error message: ENTFLAG.CARRYINGGOAL works only in triggerregions?
  12. Earlier
  13. //========================================================================================== // // ETL Warbell - etl_warbell.gm // // Who When What //------------------------------------------------------------------------------------------ // Original Warbell Waypoints and Script by Red Dwarf // Updated and edited for Omni-Bot 0.71 and 0.8 by :)BOK(: Naerling // cs: formatting and bugfixes // Mateos: ETL port // // Mateos 17th August 2014 Added use points & cover spots for the destructible objectives // Moved routing scripting to its own table, and moved few nodes // Fixed bot stuckage at Monastery with crates // Script clearing // ^4Tardis 23/08/14 - fixes - stuck bots, disable bell plant after ring toll bell, cover spots added //========================================================================================== // /**************************************************** Path mapping and script both updated by Mateos Correspondant WAY file size: - Last update: 18th December 2022 ****************************************************/ /* * TODO: * - Manage Allied spawning (spawn at the CP if possible when the Forward Spawn gets captured by Axis, ...) */ global Map = { Debug = false, Quiet = true, Talk = true, // Set Talk to false if you don't want the bots talking ingame GM_Version = 3, BellTolled = false, Book = false, BookTaken = false, BookDelivered = false, Mechanism = false, GardenGate = true, Generator = true, GuardHouseGate = true, AxisCP = false, AlliesCP = false, Message = false, // ************************************************************************* LowerGeneratorDoor_1_Status = 0, LowerGeneratorDoor_2_Status = 0, // Door is closed initially UpperGeneratorDoor_Status = 0, // Door is closed initially MiddleGeneratorDoor_Status = 0, DepotDoor_Status = 0, Switches = { // Allow Allies to get back to the first part of the map if the Forward Spawn is lost // /bot waypoint_setproperty paththrough UseSwitch_PT:lower_generator_door lower_generator_door_switch = { Enabled = true, Priority = 0, // Always set to 0 when using path through WaypointName = "lower_generator_door_switch", LimitTeam = (1<<TEAM.ALLIES), Timeout = 2700, AimPosition = Vec3(-2277.726, -517.125, 294.006), // Use /bot aim_pos to get aim vector. Replaces the unreliable waypoint facing Wait = function() // Optional. Used to have the bot wait a bit for slow moving doors / elevators { return Map.LowerGeneratorDoor_2_Status == 2; // Return true to finish the path through and go through the door }, }, lower_generator_door_in_switch = { Enabled = true, Priority = 0, // Always set to 0 when using path through WaypointName = "lower_generator_door_in_switch", LimitTeam = (1<<TEAM.ALLIES), Timeout = 2700, AimPosition = Vec3(-2410.875, -414.318, 294.477), // Use /bot aim_pos to get aim vector. Replaces the unreliable waypoint facing Wait = function() // Optional. Used to have the bot wait a bit for slow moving doors / elevators { return Map.LowerGeneratorDoor_2_Status == 2; // Return true to finish the path through and go through the door }, }, // Allow Allies to build the CP and plant landmines beyond the Guard House Gate on map load // /bot waypoint_setproperty paththrough UseSwitch_PT:upper_generator_door upper_generator_door_switch = { Enabled = true, Priority = 0, // Always set to 0 when using path through WaypointName = "upper_generator_door_switch", LimitTeam = (1<<TEAM.ALLIES), Timeout = 2700, AimPosition = Vec3(-2408, -414, 485), // Use /bot aim_pos to get aim vector. Replaces the unreliable waypoint facing Wait = function() // Optional. Used to have the bot wait a bit for slow moving doors / elevators { return Map.UpperGeneratorDoor_Status == 2; // Return true to finish the path through and go through the door }, }, depot_door_in_switch = { Enabled = true, Priority = 0, WaypointName = "depot_door_in_switch", LimitTeam = (1<<TEAM.ALLIES), Timeout = 2700, AimPosition = Vec3(325.125, -1701.526, -89.701), Wait = function() { return Map.DepotDoor_Status == 2; }, }, depot_door_out_switch = { Enabled = true, Priority = 0, WaypointName = "depot_door_out_switch", LimitTeam = (1<<TEAM.ALLIES), Timeout = 2700, AimPosition = Vec3(282.875, -1706.134, -89.632), Wait = function() { return Map.DepotDoor_Status == 2; }, }, }, Upper_Generator_Door_GoTo = function( trigger ) { Map.Switches.upper_generator_door_switch.Enabled = false; vel = ToVector(trigger.Action); if ( vel.z > 0 ) { Map.UpperGeneratorDoor_Status = 1; sleep(2.76); Map.UpperGeneratorDoor_Status = 2; } else if ( vel.z < 0 ) { Map.UpperGeneratorDoor_Status = 1; sleep(2.76); Map.DepotDoor_Status = 0; Map.Switches.upper_generator_door_switch.Enabled = true; } }, Middle_Generator_Door_GoTo = function( trigger ) { vel = ToVector(trigger.Action); if ( vel.z > 0 ) { Map.MiddleGeneratorDoor_Status = 1; sleep(6.96); Map.MidleGeneratorDoorStatus = 2; if(Map.LowerGeneratorDoor_2_Status == 2) { Wp.SetWaypointFlag( "door_2_inside", "closed", true ); Wp.SetWaypointFlag( "door_2_outside", "closed", true ); Wp.SetWaypointFlag( "bottom_door_inside", "closed", false ); Wp.SetWaypointFlag( "bottom_door_outside", "closed", false ); } else { Wp.SetWaypointFlag( "door_2_inside", "closed", false ); Wp.SetWaypointFlag( "door_2_outside", "closed", false ); Wp.SetWaypointFlag( "bottom_door_inside", "closed", true ); Wp.SetWaypointFlag( "bottom_door_outside", "closed", true ); } Map.Switches.lower_generator_door_in_switch.Enabled = false; Map.Switches.lower_generator_door_switch.Enabled = false; Map.Switches.upper_generator_door_switch.Enabled = false; } }, DepotDoor_GoTo = function( trigger ) { Map.Switches.depot_door_in_switch.Enabled = false; Map.Switches.depot_door_out_switch.Enabled = false; vel = ToVector(trigger.Action); if ( vel.z > 0 ) { Map.DepotDoor_Status = 1; sleep(2.76); Map.DepotDoor_Status = 2; } else if ( vel.z < 0 ) { Map.DepotDoor_Status = 1; sleep(2.76); Map.DepotDoor_Status = 0; Map.Switches.depot_door_in_switch.Enabled = true; Map.Switches.depot_door_out_switch.Enabled = true; } }, LowerGeneratorDoor1_goto = function( trigger ) { vel = ToVector(trigger.Action); if ( vel.z > 0 ) { LowerGeneratorDoor_1_Status = 1; sleep(2.2); LowerGeneratorDoor_1_Status = 2; Wp.SetWaypointFlag( "bottom_door_inside", "closed", false ); Wp.SetWaypointFlag( "bottom_door_outside", "closed", false ); Wp.SetWaypointFlag( "door_2_outside", "closed", false ); Wp.SetWaypointFlag( "door_2_inside", "closed", false ); sleep(0.56); } else if ( vel.z < 0 ) { LowerGeneratorDoor_1_Status = 1; sleep(0.56); Wp.SetWaypointFlag( "bottom_door_inside", "closed", true ); Wp.SetWaypointFlag( "bottom_door_outside", "closed", true ); Wp.SetWaypointFlag( "door_2_inside", "closed", true ); Wp.SetWaypointFlag( "door_2_outside", "closed", true ); sleep(2.2); LowerGeneratorDoor_1_Status = 0; } }, LowerGeneratorDoor2_goto = function( trigger ) { Map.Switches.lower_generator_door_in_switch.Enabled = false; Map.Switches.lower_generator_door_switch.Enabled = false; vel = ToVector(trigger.Action); if ( vel.z > 0 ) { Map.LowerGeneratorDoor_2_Status = 1; sleep(1.36); Map.LowerGeneratorDoor_2_Status = 2; } else if ( vel.z < 0 ) { Map.LowerGeneratorDoor_2_Status = 1; sleep(1.36); Map.LowerGeneratorDoor_2_Status = 0; Map.Switches.lower_generator_door_in_switch.Enabled = true; Map.Switches.lower_generator_door_switch.Enabled = true; } }, GhspawnTrigger = { name = "GhspawnTrigger", TriggerOnClass = CLASS.ANYPLAYER, OnEnter = function(ent) { if(GetEntTeam(ent) == TEAM.AXIS) { mg = GetGoal("PLANT_Garden_Gate"); if(mg.IsAvailable(TEAM.AXIS)) { Util.MapDebugPrint("Garden Gate Is True"); } else { Map.GardenGate = false; if(!Map.Message) { DeleteTriggerRegion("GhspawnTrigger"); Util.MapDebugPrint("Garden Gate is false"); Util.MapDebugPrint("Map.GardenGate = "+Map.GardenGate+""); Map.Message = true; } } } }, }, // ======================================================================== // First stage // ======================================================================== forward_spawn_flag_Axis_Captured = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_First_stage.*", "PLANTMINE_First_FX.*", "MOBILEMG42_First.*", "SNIPE_First.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, "CHECKPOINT_forward_spawn_flag" ); SetAvailableMapGoals( TEAM.AXIS, false, "CHECKPOINT_forward_spawn_flag" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_First_stage.*" ); Util.MapDebugPrint( "forward_spawn_flag_Axis_Captured" ); }, forward_spawn_flag_Allies_Captured = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "CHECKPOINT_forward_spawn_flag" ); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_First_stage.*", "PLANTMINE_First_FX.*", "MOBILEMG42_First.*", "SNIPE_First.*", }); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_First_stage.*" ); SetAvailableMapGoals( TEAM.AXIS, true, "CHECKPOINT_forward_spawn_flag" ); if ( Map.BookTaken ) { SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_BookAttack", "DEFEND_Abbey_6", }); } Util.MapDebugPrint( "forward_spawn_flag_Allies_Captured" ); }, Generator_Planted = function( trigger ) { Util.MapDebugPrint( "Generator planted" ); }, Generator_Destroyed = function( trigger ) { Map.Generator = false; SetAvailableMapGoals( TEAM.AXIS, true, "GRENADE_bookcase" ); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFUSE_Generator_.*"); SetAvailableMapGoals(TEAM.AXIS, false, { "ATTACK_Generator_.*", "PLANT_Generator", "MOBILEMG42_First_FX_4", }); if(Map.GuardHouseGate) { SetAvailableMapGoals(TEAM.AXIS, true, "ATTACK_GH_Gate_.*"); } else { SetAvailableMapGoals(TEAM.AXIS, true, { "BUILD_Command_Post", "PLANT_Abbey_Main_Gate", "ATTACK_a_Abbey_Main_Gate_.*", }); SetAvailableMapGoals(TEAM.ALLIES, true, { "MOBILEMG42_SEcond_FX_7", "MOBILEMG42_Second_FX_8", }); } Util.MapDebugPrint("Generator Destroyed"); }, Bookcase_Exploded = function() { SetAvailableMapGoals( TEAM.AXIS, true, { "FLAG_book", "CAPPOINT_BOOKOFDEATHPLACE", }); SetAvailableMapGoals(TEAM.AXIS, false, "GRENADE_bookcase"); Util.MapDebugPrint( "Bookcase_Exploded" ); }, book_Taken = function( trigger ) { Map.BookTaken = true; SetGoalPriority("DEFEND_d_.*", 1.0, TEAM.ALLIES); SetGoalPriority("MOBILEMG42_Second_FX_10", 1.1, TEAM.ALLIES); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_BookAttack", "DEFEND_d_.*", "DEFEND_Abbey_8", "DEFEND_Abbey_1", "MOBILEMG42_Second_FX_10", }); SetAvailableMapGoals( TEAM.AXIS, true, { "ATTACK_BookAttack", "DEFEND_Abbey_6", }); if(ETUtil.CountClass(TEAM.ALLIES, CLASS.SOLDIER) > 1) { SetAvailableMapGoals(TEAM.ALLIES , true, "MOBILEMG42_Second_FX_6"); } Util.MapDebugPrint( "book_Taken" ); sleep(20); SetAvailableMapGoals(TEAM.ALLIES, true, "DEFEND_Book_Place_.*"); }, Book_Dropped = function( trigger ) { SetGoalPriority( "FLAGRETURN_book_dropped", 1.2, TEAM.ALLIES ); Util.MapDebugPrint( "book Dropped" ); }, book_Returned = function( trigger ) { BookTaken = false; SetGoalPriority("DEFEND_d_.*", 0.6, TEAM.ALLIES); SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_BookAttack", "DEFEND_Abbey_6", "MOBILEMG42_Second_FX_6", "MOBILEMG42_Second_FX_10", "DEFEND_Book_Place_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, { "ATTACK_BookAttack", "DEFEND_Abbey_6", }); Util.MapDebugPrint( "book_Returned" ); }, Guard_House_Planted = function( trigger ) { Util.MapDebugPrint( "Planted_at_the_Guard_House_Gate" ); }, Guard_House_Gate_Destroyed = function( trigger ) { Map.GuardHouseGate = false; SetAvailableMapGoals( TEAM.ALLIES, false, { "CHECKPOINT_forward_spawn_flag", "ATTACK_First_stage.*", "PLANTMINE_First_FX.*", "MOBILEMG42_First.*", "SNIPE_First.*", "ATTACK_GH_Gate_.*", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_secondStage.*", "DEFEND_BellMechanism_5", "SNIPE_secondStage.*", "SNIPE_Second_.*", "CALLARTILLERY_Second.*", "ARTILLERY_S_Second_.*", "PLANTMINE_Second_.*", "BUILD_Command_Post", "MOBILEMG42_Second_FX_8", "MOBILEMG42_SEcond_FX_7", }); SetAvailableMapGoals( TEAM.AXIS, false, { "ATTACK_GH_Gate_.*", "ATTACK_First_stage.*", "CHECKPOINT_forward_spawn_flag", "MOBILEMG42_First_FX_1", "PLANT_Guard_House_Gate", }); SetAvailableMapGoals( TEAM.AXIS, true, { // "ATTACK_a_Abbey_Main_Gate_.*", // "BUILD_Command_Post", "PLANT_Generator", // "PLANT_Abbey_Main_Gate", }); if ( Map.Talk && MAP_TALK ) { foreach ( id and bot in BotTable ) { if ( !axisAnnounce && bot.GetTeam() == TEAM.AXIS ) { r = RandRange(0,10); if( r < 2 ) { axisAnnounce = true; bot.ExecCommand("vsay_team FTFollowMe"); } else if( r > 8 ) { axisAnnounce = true; bot.SayVoice(VOICE.REINFORCE_OFF); } } if ( !alliesAnnounce && bot.GetTeam() == TEAM.ALLIES ) { r = RandRange(0,10); if( r < 2 ) { alliesAnnounce = true; bot.SayVoice(VOICE.DEFEND_OBJECTIVE); } else if( r > 8 ) { alliesAnnounce = true; bot.ExecCommand("vsay_team FTFallBack"); } } } } if(Map.Generator) { SetAvailableMapGoals(TEAM.AXIS, true, "ATTACK_Generator_.*"); SetAvailableMapGoals(TEAM.AXIS, true, "MOBILEMG42_First_FX_4"); } else { SetAvailableMapGoals(TEAM.AXIS, true, { "ATTACK_a_Abbey_Main_Gate_.*", "PLANT_Abbey_Main_Gate", "PLANT_Command_Post", "MOBILEMG42_Second_FX_6", }); SetAvailableMapGoals(TEAM.ALLIES, true, { "MOBILEMG42_SEcond_FX_7", "MOBILEMG42_Second_FX_8", }); } Util.MapDebugPrint( "Guard_House_Gate_Destroyed" ); }, // ======================================================================== // Second stage // ======================================================================== Abbey_Main_Gate_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_abbeygate_destroyed" ); Util.MapDebugPrint( "Abbey_Main_Gate_Destroyed" ); Wp.SetWaypointFlag( "depot_door_in", "allies", false ); Wp.SetWaypointFlag( "depot_door_out", "allies", false ); Wp.SetWaypointFlag( "ddout", "allies", false ); SetAvailableMapGoals( TEAM.ALLIES, false, { "ATTACK_secondStage_9", "ATTACK_secondStage_10", "MOBILEMG42_SEcond_FX_7", "MOBILEMG42_Second_FX_8", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "DEFEND_BellMechanism.*", "MOBILEMG42_Second_FX_11", "DEFEND_Abbey_.*", "DEFEND_d_ab_.*", }); SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_a_Abbey_Main_Gate_.*" ); SetAvailableMapGoals(TEAM.AXIS, false, { "PLANT_Abbey_Main_Gate", "MOBILEMG42_Second_FX_6", }); SetAvailableMapGoals( TEAM.AXIS, true, { "BUILD_Bell_Mechanism", "PLANT_Garden_Gate", "PLANT_Crypt_Gate", "DEFEND_d_ab_.*", "DEFEND_BellMechanism_5", }); if ( Map.Talk && MAP_TALK ) { foreach ( id and bot in BotTable ) { if ( !axisAnnounce && bot.GetTeam() == TEAM.AXIS ) { r = RandRange(0,10); if( r < 2 ) { axisAnnounce = true; bot.ExecCommand("vsay_team FTFollowMe"); } else if( r > 8 ) { axisAnnounce = true; bot.SayVoice(VOICE.REINFORCE_OFF); } } if ( !alliesAnnounce && bot.GetTeam() == TEAM.ALLIES ) { r = RandRange(0,10); if( r < 2 ) { alliesAnnounce = true; bot.SayVoice(VOICE.DEFEND_OBJECTIVE); } else if( r > 8 ) { alliesAnnounce = true; bot.ExecCommand("vsay_team FTFallBack"); } } } } sleep(4.0); Map.DepotDoor_Status = 1; //opened Map.Switches.depot_door_in_switch.Enabled = false; Map.Switches.depot_door_out_switch.Enabled = false; Util.MapDebugPrint( "depot_door_in_switch Disabled" ); Util.MapDebugPrint( "depot_door_out_switch Disabled" ); if(!Map.GardenGate) { DeleteTriggerRegion("flagspawn"); } }, Bell_Mechanism_Built = function( trigger ) { Map.Mechanism = true; SetAvailableMapGoals( TEAM.ALLIES, false, "DEFEND_BellMechanism.*" ); SetAvailableMapGoals(TEAM.AXIS, false, "BUILD_Bell_Mechanism"); SetAvailableMapGoals( TEAM.ALLIES, true, { "PLANT_Bell_Mechanism", "DEFEND_BellMechanism_5", }); if(Server.NumBots < 3 ) { SetAvailableMapGoals( TEAM.AXIS, false, "DEFUSE_Bell_Mechanism_.*" ); } SetAvailableMapGoals( TEAM.ALLIES, !Map.BookDelivered, { "ATTACK_GardenGate", "ATTACK_AbbeyGate", "ATTACK_Cryptgate", }); Map.Manage_Bell_Tolling(); Util.MapDebugPrint( "Bell_Mechanism_Built" ); }, Bell_Mechanism_Planted = function( trigger ) { if(Map.BellTolled) { SetAvailableMapGoals(TEAM.AXIS, false, "DEFUSE_Bell_Mechanism_.*"); } else { SetAvailableMapGoals(TEAM.AXIS, true, "DEFUSE_Bell_Mechanism_.*"); } Util.MapDebugPrint("Planted_at_Mechanism"); }, Bell_Mechanism_Destroyed = function( trigger ) { Map.Mechanism = false; Map.Manage_Bell_Tolling(); SetAvailableMapGoals( TEAM.ALLIES, true, "DEFEND_BellMechanism.*" ); SetAvailableMapGoals(TEAM.ALLIES, false, "PLANT_Bell_Mechanism"); if(Map.BellTolled) { SetAvailableMapGoals(TEAM.AXIS, false, "BUILD_Bell_Mechanism"); SetAvailableMapGoals(TEAM.AXIS, false, "DEFUSE_Bell_Mechanism_.*"); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_BellMechanism_.*"); } Util.MapDebugPrint( "Bell_Mechanism_Destroyed" ); }, First_Sacrifice = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_Pentagramm_1" ); Util.MapDebugPrint( "First_Sacrifice" ); }, First_Sacrifice_Performed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Pentagramm_1" ); Util.MapDebugPrint( "First_Sacrifice_Performed" ); }, Second_Sacrifice = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_Pentagramm_2" ); Util.MapDebugPrint( "Second_Sacrifice" ); }, Second_Sacrifice_Performed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, false, "ATTACK_Pentagramm_2" ); Util.MapDebugPrint( "Second_Sacrifice_Performed" ); }, Third_Sacrifice = function( trigger ) { SetAvailableMapGoals( TEAM.ALLIES, false, "PLANT_Bell_Mechanism" ); SetAvailableMapGoals( TEAM.AXIS, true, "ATTACK_Pentagramm_3" ); Util.MapDebugPrint( "Third_Sacrifice" ); }, Crypt_Gate_Destroyed = function( trigger ) { SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_crypt" ); SetAvailableMapGoals(TEAM.AXIS, false, "PLANT_Crypt_Gate"); SetAvailableMapGoals(TEAM.AXIS, false, "DEFUSE_Crypt_Gate_.*"); Util.MapDebugPrint( "Crypt_Gate_Destroyed" ); if(!Map.GardenGate) { DeleteTriggerRegion("flagspawn"); } }, Garden_Gate_Destroyed = function( trigger ) { Map.GardenGate = false; SetAvailableMapGoals( TEAM.AXIS, true, "ROUTE_gardengate" ); Util.MapDebugPrint( "Garden_Gate_Destroyed" ); }, BOOKOFDEATHPLACE_Captured = function( trigger ) { Map.BookDelivered = true; SetGoalPriority("DEFEND_d_.*", 0.6, TEAM.ALLIES); SetAvailableMapGoals(TEAM.ALLIES, false, "MOBILEMG42_Second_FX_10"); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_Book_Place_.*"); SetAvailableMapGoals(TEAM.AXIS, false, "FLAG_book"); SetAvailableMapGoals(TEAM.AXIS, false, "CAPPOINT_BOOKOFDEATHPLACE"); SetAvailableMapGoals( TEAM.ALLIES, !Map.Mechanism, { "ATTACK_GardenGate", "ATTACK_AbbeyGate", "ATTACK_Cryptgate", }); Map.Manage_Bell_Tolling(); Util.MapDebugPrint( "BOOKOFDEATHPLACE_Captured" ); }, Axis_Win = function( trigger ) { ETUtil.WinningChat( TEAM.AXIS ); ETUtil.LosingChat( TEAM.ALLIES ); Util.MapDebugPrint( "Axis_Win", true ); }, Axis_CP_Build = function( trigger ) { Map.AxisCP = true; SetAvailableMapGoals(TEAM.AXIS, false, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.ALLIES, false, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.ALLIES, true, "PLANT_Command_Post"); Util.MapDebugPrint( "Axis_CP_Build", true ); }, Axis_CP_Destroyed = function( trigger ) { Map.AxisCP = false; SetAvailableMapGoals(TEAM.ALLIES, true, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.AXIS, true, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.ALLIES, false, "PLANT_Command_Post"); Util.MapDebugPrint("Axis_CP_Destroyed", true); }, Allies_CP_Build = function( trigger ) { Map.AlliesCP = true; SetAvailableMapGoals(TEAM.ALLIES, false, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.AXIS, false, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.AXIS, true, "PLANT_Command_Post"); Util.MapDebugPrint("Allies_CP_Build", true); }, Allies_CP_Destroyed = function( trigger ) { Map.AlliesCP = false; SetAvailableMapGoals(TEAM.AXIS, true, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.ALLIES, true, "BUILD_Command_Post"); SetAvailableMapGoals(TEAM.AXIS, false, "PLANT_Command_Post"); Util.MapDebugPrint("Allies_CP_Destroyed", true); }, Bell_Tolled = function( trigger ) { if ( trigger.Action == "axis_complete" ) { Map.BellTolled = true; Map.Manage_Bell_Tolling(); Util.MapDebugPrint( "Bell_Tolled" ); } SetAvailableMapGoals(TEAM.ALLIES, false, "PLANT_Bell_Mechanism"); SetAvailableMapGoals(TEAM.AXIS, false, "DEFUSE_Bell_Mechanism_.*"); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_BellMechanism_.*"); SetAvailableMapGoals(TEAM.ALLIES, false, "DEFEND_d_ab_8"); SetAvailableMapGoals(TEAM.AXIS, false, "DEFEND_BellMechanism_.*"); SetAvailableMapGoals(TEAM.AXIS, true, "DEFEND_Abbey_6"); }, Manage_Bell_Tolling = function() { SetAvailableMapGoals( TEAM.AXIS, !Map.BellTolled && Map.BookDelivered && Map.Mechanism, "SWITCH_BellRope" ); } }; global OnMapLoad = function() { // Triggers OnTrigger( "^1The Axis repaired the Bell Mechanism!", Map.Bell_Mechanism_Built ); OnTrigger( "Planted at the Bell Mechanism.", Map.Bell_Mechanism_Planted ); OnTrigger( "Planted at the Guard House Gate.", Map.Guard_House_Planted ); OnTrigger( "Planted at the Generator.", Map.Generator_Planted ); OnTrigger( "^1The Axis have destroyed the Abbey Main Gate!", Map.Abbey_Main_Gate_Destroyed ); OnTrigger( "^1Allies have destroyed the Bell Mechanism!", Map.Bell_Mechanism_Destroyed ); OnTrigger( "^1Heinrich awaits his first Sacrifice!", Map.First_Sacrifice ); OnTrigger( "^1First Sacrifice performed!", Map.First_Sacrifice_Performed ); OnTrigger( "^1Heinrich awaits his second Sacrifice!", Map.Second_Sacrifice ); OnTrigger( "^1Second Sacrifice performed!", Map.Second_Sacrifice_Performed ); OnTrigger( "^1Heinrich awaits his third Sacrifice!", Map.Third_Sacrifice ); OnTrigger( "^1The Axis have destroyed the Crypt Gate!", Map.Crypt_Gate_Destroyed ); OnTrigger( "^1The Axis have destroyed the Garden Gate!", Map.Garden_Gate_Destroyed ); OnTrigger( "^1The Axis have destroyed the Guardhouse Gate!", Map.Guard_House_Gate_Destroyed ); OnTrigger( "^1The Axis have destroyed the Generator!", Map.Generator_Destroyed ); OnTrigger( "Axis have stolen the Book of Death!", Map.book_Taken ); OnTrigger( "Flag returned book!", Map.book_Returned ); OnTrigger( "^1Axis have delivered the Book of Death!", Map.BOOKOFDEATHPLACE_Captured ); OnTrigger( "^1The Axis have captured the Guardhouse Flag!", Map.forward_spawn_flag_Axis_Captured ); OnTrigger( "allies_capture_forward_spawn_flag", Map.forward_spawn_flag_Allies_Captured ); OnTrigger( "^1Third Sacrifice performed!", Map.Axis_Win ); OnTrigger( "^1Axis Command Post constructed. Charge speed increased!", Map.Axis_CP_Build ); OnTrigger( "^5The Allies have destroyed the Axis Command Post!", Map.Axis_CP_Destroyed ); OnTrigger( "^5Allied Command Post constructed. Charge speed increased!", Map.Allies_CP_Build ); OnTrigger( "^1The Axis have destroyed the Allied Command Post!", Map.Allies_CP_Destroyed ); OnTrigger( "GRENADE_bookcase Exploded.", Map.Bookcase_Exploded); OnTrigger( "bell_rope", Map.Bell_Tolled); OnTrigger( "middle_generator_door_goto", Map.Middle_Generator_Door_GoTo ); OnTrigger( "upper_generator_door_goto", Map.Upper_Generator_Door_GoTo ); OnTrigger( "depot_door_goto", Map.DepotDoor_GoTo ); OnTrigger( "lower_generator_door2_goto", Map.LowerGeneratorDoor2_goto); OnTrigger( "lower_generator_door1_goto", Map.LowerGeneratorDoor1_goto); OnTrigger( "Flag dropped book!", Map.Book_Dropped ); OnTriggerRegion(AABB(-2940.027,-317.677,449.125,-2468.400,-28.116,523.126), Map.GhspawnTrigger); // Disable goals Util.DisableGoal( ".*", true ); // All but routes // Disable some routes SetAvailableMapGoals( TEAM.AXIS, false, { "ROUTE_abbeygate_destroyed", "ROUTE_gardengate", "ROUTE_crypt", }); // Fix as some mod's breaking Util.AddUseWp("PLANT_Generator", "hidden"); // Some goal use points & offsets Util.AddUsePoint("PLANT_Abbey_Main_Gate", {Vec3(585, -2255, -125), Vec3(611.616, -2032.145, -119.809)}); Util.AddUsePoint("PLANT_Garden_Gate", {Vec3(2315, -2885, -135), Vec3(2300.109, -2768.660, -111.453)}); Util.AddUsePoint("PLANT_Generator", Vec3(-2900, -300, 475) ); Util.AddUsePoint("PLANT_Guard_House_Gate", {Vec3(-2550, -430, 25), Vec3(-2737.751, -589.237, 24.125)}); Util.AddUsePoint("PLANT_Crypt_Gate", {Vec3(948.060, -1118.774, -215.875), Vec3(985.765, -1258.244, -215.875)}); Wp.SetWaypointFlag( "depot_door_in", "allies", true ); Wp.SetWaypointFlag( "depot_door_out", "allies", true ); Wp.SetWaypointFlag( "bottom_door_outside", "closed", true ); Wp.SetWaypointFlag( "bottom_door_inside", "closed", true ); Wp.SetWaypointFlag( "door_2_inside", "closed", true ); Wp.SetWaypointFlag( "door_2_outside", "closed", true ); Wp.SetWaypointFlag( "ddout", "allies", true ); Util.SetGoalOffset( -20, 0, 0, "PLANT_Bell_Mechanism" ); // Some goal properties SetMapGoalProperties( "ATTACK_.*", {MinCampTime=15, MaxCampTime=30} ); SetMapGoalProperties( "DEFEND_.*", {MinCampTime=15, MaxCampTime=30} ); SetMapGoalProperties( "MOBILEMG42_.*", {MinCampTime=60, MaxCampTime=120} ); SetMapGoalProperties( "SNIPE_.*", {MinCampTime=30, MaxCampTime=60} ); Util.SetMaxUsersInProgress( 1, "BUILD_Command_Post" ); Util.SetMaxUsersInProgress( 2, "PLANT.*" ); Util.SetMaxUsersInProgress( 3, "FLAG.*" ); Util.SetMaxUsersInProgress( 1, "DEFEND_.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_a_.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_second.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_Ga.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_F.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_C.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_Book.*" ); Util.SetMaxUsersInProgress( 1, "ATTACK_Bell" ); Util.SetMaxUsers( 8, "SWITCH_BellRope" ); Util.SetMaxUsers( 8, "ATTACK_Pentagramm_.*" ); SetGoalPriority( "PLANT_Command_Post", 0.7, 0, CLASS.ENGINEER ); SetGoalPriority( "BUILD_Command_Post", 0.81 ); //0.75 SetGoalPriority( "BUILD_Bell_Mechanism", 0.8 ); SetGoalPriority( "PLANT_Guard_House_Gate", 0.95 ); SetGoalPriority( "PLANT_Generator", 0.9 ); SetGoalPriority( "GRENADE_bookcase", 0.89, TEAM.AXIS, 0 ); SetGoalPriority( "PLANT_Abbey_Main_Gate", 0.85 ); SetGoalPriority( "PLANT_Garden_Gate", 0.9, TEAM.AXIS, CLASS.COVERTOPS ); SetGoalPriority( "PLANT_Garden_Gate", 0.75, TEAM.AXIS, CLASS.ENGINEER ); SetGoalPriority( "ATTACK_secondStage_4", 0.52 ); SetGoalPriority( "ATTACK_secondStage_6", 0.52 ); SetGoalPriority( "ATTACK_secondStage_9", 0.52 ); SetGoalPriority( "ATTACK_a_Abbey_.*", 0.52 ); SetGoalPriority( "ATTACK_Pentagramm_.*", 0.7 ); SetGoalPriority( "ATTACK_BookAttack", 0.52 ); SetGoalPriority( "SWITCH_BellRope", 0.6 ); SetGoalPriority( "DEFEND_Abbey_6", 0.52 ); SetGoalPriority( "DEFEND_BellMechanism_5", 0.52 ); SetGoalPriority( "DEFEND_Book_Place_.*", 1.3, TEAM.ALLIES, 0 ); SetGoalPriority( "DEFUSE_Bell_Mechanism_.*", 1.10, TEAM.AXIS, CLASS.ENGINEER, true ); SetGoalPriority( "FLAGRETURN_book_dropped", 1.2, TEAM.ALLIES, 0, true ); SetGoalPriority( "DEFUSE_Guard_House_Gate_.*", 1.10, TEAM.ALLIES, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_Generator_.*", 1.15, TEAM.ALLIES, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_Garden_Gate_.*", 1.20, TEAM.ALLIES, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_Crypt_Gate_.*", 1.20, TEAM.ALLIES, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_Abbey_Main_Gate_.*", 1.25, TEAM.ALLIES, CLASS.ENGINEER, true ); SetGoalPriority( "DEFUSE_Command_Post_.*", 0.8, TEAM.AXIS, CLASS.ENGINEER, true ); // Available map goals at start SetAvailableMapGoals( TEAM.AXIS, true, { "ATTACK_GH_Gate_.*", "PLANT_Guard_House_Gate", "PLANT_Generator", "PLANT_Garden_Gate", "MOBILEMG42_First_FX_1", "CHECKPOINT_forward_spawn_flag", }); SetAvailableMapGoals( TEAM.ALLIES, true, { "ATTACK_First_stage.*", "PLANTMINE_First_FX.*", "MOBILEMG42_First_FX_2", "MOBILEMG42_First_FX_3", "MOBILEMG42_First_FX_5", "SNIPE_First.*", "ATTACK_GH_Gate_1", "ATTACK_GH_Gate_2", "ATTACK_GH_Gate_3", }); Util.UpdateSwitchData(); Util.MapDebugPrint( "Omni-bot 0.8x map script for "+ GetMapName() +" v"+ Map.GM_Version +" executed." ); }; global OnBotJoin = function( bot ) { bot.TargetBreakableDist = 100.0; }; global InitializeRoutes = function() { MapRoutes = { PLANT_Guard_House_Gate = { ROUTE_ax_spawn1 = { ROUTE_hill1 = {}, ROUTE_cave1 = {}, ROUTE_road1 = { ROUTE_road2 = {}, }, }, }, PLANT_Garden_Gate = { ROUTE_ax_spawn1 = { ROUTE_road1 = { ROUTE_road2 = { ROUTE_abbeyroad = { ROUTE_garden = {}, }, }, }, ROUTE_cave1 = { ROUTE_cave2 = { ROUTE_abbeygate = { ROUTE_gardengate = {}, }, }, }, }, ROUTE_flagspawn = { ROUTE_tower = { ROUTE_cave2 = { ROUTE_abbeygate = { ROUTE_gardengate = {}, }, }, ROUTE_abbeyroad = { ROUTE_garden = {}, }, }, }, }, CHECKPOINT_forward_spawn_flag = { ROUTE_ax_spawn1 = { ROUTE_hill1 = { ROUTE_beds = {}, ROUTE_beds = { ROUTE_hall = {}, }, }, ROUTE_cave1 = { ROUTE_beds = {}, ROUTE_beds = { ROUTE_hall = {}, }, }, ROUTE_road1 = { ROUTE_road2 = { ROUTE_beds = {}, ROUTE_beds = { ROUTE_hall = {}, }, }, }, }, }, CAPPOINT_BOOKOFDEATHPLACE = { ROUTE_book = { ROUTE_abbeyroad = { ROUTE_abbeygate_destroyed = {} }, ROUTE_garden = { ROUTE_gardengate = {}, ROUTE_gardengate = { ROUTE_abbey = {}, }, }, ROUTE_tower = { ROUTE_cave2 = { ROUTE_crypt = {}, ROUTE_abbeygate = {}, }, }, }, }, }; // Copy some routes MapRoutes.BUILD_Bell_Mechanism = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.ATTACK_BookAttack = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.SWITCH_BellRope = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.ATTACK_Pentagramm_1 = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.ATTACK_Pentagramm_2 = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.ATTACK_Pentagramm_3 = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.DEFEND_Abbey_6 = MapRoutes.CAPPOINT_BOOKOFDEATHPLACE; MapRoutes.PLANT_Generator = MapRoutes.CHECKPOINT_forward_spawn_flag; Util.Routes(MapRoutes); };
  14. Can you share the map name/download/waypoints? Is this ETL Warbell?
  15. Oh god the == instead of = on the var init >.> So it was initialized with a boolean and not a string as thought/expected... Hope to have a copy of your eyes someday I prefer your solution as the sleep is now in the door moving table rather than the button pressing one, looks more logic! Thank you very much for the investigation and related commits to the repo!
  16. What I did is watching the console and set a debug print at the top of the trigger OB script side I had the debugtriggers prints (all at once, thus making me think just use the one having a velocity, to know if the door is either opening or closing, since the button event is twice 'opening' on both events), then a delay before the debug print, that's what made me think there were a delay I've followed the wiki page about path through switch, but it seems, as did Tomek, that moving the Enabled false from 'after the Opening/Opened' to 'before' helps forcing bots stop using the button, even though the condition in ExitConditions looks right (first instruction of trigger is to change door status from Closed (0) to Opening (1), and ExitConditions tests status > Closed, just like in the wiki) IIRC most of OB is single-threaded, perhaps it stays somehow stuck in ExitConditions, and thus the status switch happens later; and as the map author did not protect the button from spamming, it gets the whole thing stuck; but why would setting Enabled to false would then make it react so quickly? I'm not sure to understand the flow; perhaps the issue here is only that the button is unprotected by map author, contrary to some other maps? Or am I totally misunderstanding things?
  17. There is not delay between map trigger and OB script trigger. There's delay between map triggers "rightlabdoor_button_Moving" and "rightlabdoor_goto".
  18. I think, using your solution with 2 triggers, only moving Map.Switches.right_lab_door.Enabled = false; before the sleep( 1.25 ); is enough, and that makes the ExitCondition table useless, and seems to work yeah Was hoping for a working single-trigger solution, but heh Here's the merged work: voilegarde_b3.gm
  19. voilegarde_b3.gm That's my solution. Not the cleanest solution but from my testing it works. For checking if the doors are opening and eventually opened I use "rightlabdoor_button_Moving". Check Right_Lab_Door_Moving2 to see what I did there.
  20. Adding a Name should work I think. Then you will see a name instead of 0.
  21. 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.

  22. Good afternoon, I'm going through Chateau Voilegarde waypoints again, and I'm going through the button-commanded doors for Axis, so they get as quick as possible where they're needed I've noticed there's a delay between the console prints you have with `bot debugtriggers on` and the call of the OB trigger bound to it, where I change the door status, which is used in the ExitConditions (the table where you tell the bot to stop trying to click the button) The issue here is that these buttons can be spammed, which resets the door animation... The spamming stopping after the switch script table timeout Tried to play with timeout to see if it could help (initially 3000, tried 1000/750/150, kept 1000), but it quickly gets messy when it's crowded I'm using the door goto event to tell if it's opening or closing, the button has its own events since it moves, but since the events of both the button and the door are fired at once through the console command, I guess it's fine? I've attached my current waypoints, with the door near Axis Laboratory spawn scripted; Axis will spawn there and go through the path through switch when the Courtyard flag is owned by Allies, since it is the shortest path to get back to the flag Map download: https://www.wolffiles.de/index.php?filebase&fid=224 Thank you in advance Chateau Voilegarde Waypoints.zip
  23. Cheap shared accounts are available from allwebhost, siteground and hostsailor. Check out their plans and choose the best obe for your needs.
  1. Load more activity
×
×
  • Create New...