From 28da2ce20b183199d8f9b1bb3e8119dba3bbbf35 Mon Sep 17 00:00:00 2001 From: INeedBots Date: Sun, 20 Dec 2020 22:05:36 -0600 Subject: [PATCH] bot_wait_for_host --- userraw/maps/mp/bots/_bot.gsc | 2 + userraw/maps/mp/bots/_bot_utility.gsc | 58 +++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/userraw/maps/mp/bots/_bot.gsc b/userraw/maps/mp/bots/_bot.gsc index 94814e5..b3003a2 100644 --- a/userraw/maps/mp/bots/_bot.gsc +++ b/userraw/maps/mp/bots/_bot.gsc @@ -686,6 +686,8 @@ addBots() { level endon("game_ended"); + bot_wait_for_host(); + for(;;) { wait 1.5; diff --git a/userraw/maps/mp/bots/_bot_utility.gsc b/userraw/maps/mp/bots/_bot_utility.gsc index 9008eaf..4d09dd8 100644 --- a/userraw/maps/mp/bots/_bot_utility.gsc +++ b/userraw/maps/mp/bots/_bot_utility.gsc @@ -530,6 +530,64 @@ notifyAfterDelay(delay, not) self notify(not); } +/* + Gets a player who is host +*/ +GetHostPlayer() +{ + for (i = 0; i < level.player.size; i++) + { + player = level.players[i]; + + if (!player is_host()) + continue; + + return player; + } + + return undefined; +} + +/* + Waits for a host player +*/ +bot_wait_for_host() +{ + host = undefined; + + for(i = 0; i < 100; i++) + { + host = GetHostPlayer(); + + if(isDefined(host)) + break; + + wait 0.05; + } + + if(!isDefined(host)) + return; + + for(i = 0; i < 100; i++) + { + if(IsDefined( host.pers[ "team" ] )) + break; + + wait 0.05; + } + + if(!IsDefined( host.pers[ "team" ] )) + return; + + for(i = 0; i < 100; i++) + { + if(host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis") + break; + + wait 0.05; + } +} + /* Pezbot's line sphere intersection. http://paulbourke.net/geometry/circlesphere/raysphere.c