diff --git a/home/baseq3/botfiles/bots/lgbot_c.c b/home/baseq3/botfiles/bots/lgbot_c.c index dbb734b..94e91bc 100644 --- a/home/baseq3/botfiles/bots/lgbot_c.c +++ b/home/baseq3/botfiles/bots/lgbot_c.c @@ -1,6 +1,7 @@ //=========================================================================== // lgbot: LG training bot. Aim per skill level (the N in "addbot lgbot N"); never jumps or // crouches, LG only. Movement is steered by the lgbot minqlx plugin. +// QL reads skill 1, 4 and 5 from this file and interpolates levels 2-3 between 1 and 4. //=========================================================================== #include "chars.h" @@ -17,7 +18,7 @@ skill 1 CHARACTERISTIC_VIEW_MAXCHANGE 90 CHARACTERISTIC_REACTIONTIME 3.0 CHARACTERISTIC_CHAT_FILE "bots/hunter_t.c" - CHARACTERISTIC_CHAT_NAME "lgbot" + CHARACTERISTIC_CHAT_NAME "hunter" CHARACTERISTIC_CHAT_CPM 400 CHARACTERISTIC_CHAT_INSULT 0 CHARACTERISTIC_CHAT_MISC 0 @@ -58,112 +59,6 @@ skill 1 CHARACTERISTIC_FIRETHROTTLE 1.0 } -skill 2 -{ - CHARACTERISTIC_NAME "lgbot" - CHARACTERISTIC_GENDER "female" - CHARACTERISTIC_ATTACK_SKILL 0.45 - CHARACTERISTIC_WEAPONWEIGHTS "bots/lgbot_w.c" - CHARACTERISTIC_AIM_SKILL 0.35 - CHARACTERISTIC_AIM_ACCURACY 0.4 - CHARACTERISTIC_VIEW_FACTOR 0.55 - CHARACTERISTIC_VIEW_MAXCHANGE 110 - CHARACTERISTIC_REACTIONTIME 2.0 - CHARACTERISTIC_CHAT_FILE "bots/hunter_t.c" - CHARACTERISTIC_CHAT_NAME "lgbot" - CHARACTERISTIC_CHAT_CPM 400 - CHARACTERISTIC_CHAT_INSULT 0 - CHARACTERISTIC_CHAT_MISC 0 - CHARACTERISTIC_CHAT_STARTENDLEVEL 0 - CHARACTERISTIC_CHAT_ENTEREXITGAME 0 - CHARACTERISTIC_CHAT_KILL 0 - CHARACTERISTIC_CHAT_DEATH 0 - CHARACTERISTIC_CHAT_ENEMYSUICIDE 0 - CHARACTERISTIC_CHAT_HITTALKING 0 - CHARACTERISTIC_CHAT_HITNODEATH 0 - CHARACTERISTIC_CHAT_HITNOKILL 0 - CHARACTERISTIC_CHAT_RANDOM 0 - CHARACTERISTIC_CHAT_REPLY 0 - CHARACTERISTIC_CROUCHER 0 - CHARACTERISTIC_JUMPER 0 - CHARACTERISTIC_WALKER 0 - CHARACTERISTIC_WEAPONJUMPING 0 - CHARACTERISTIC_GRAPPLE_USER 0 - CHARACTERISTIC_ITEMWEIGHTS "bots/hunter_i.c" - CHARACTERISTIC_AGGRESSION 1.0 - CHARACTERISTIC_SELFPRESERVATION 0 - CHARACTERISTIC_VENGEFULNESS 1.0 - CHARACTERISTIC_CAMPER 0 - CHARACTERISTIC_EASY_FRAGGER 0.5 - CHARACTERISTIC_ALERTNESS 1.0 - CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.4 - CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.4 - CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.4 - CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.4 - CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.4 - CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.4 - CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.4 - CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.4 - CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.35 - CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.35 - CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.35 - CHARACTERISTIC_AIM_SKILL_BFG10K 0.35 - CHARACTERISTIC_FIRETHROTTLE 1.0 -} - -skill 3 -{ - CHARACTERISTIC_NAME "lgbot" - CHARACTERISTIC_GENDER "female" - CHARACTERISTIC_ATTACK_SKILL 0.6 - CHARACTERISTIC_WEAPONWEIGHTS "bots/lgbot_w.c" - CHARACTERISTIC_AIM_SKILL 0.5 - CHARACTERISTIC_AIM_ACCURACY 0.6 - CHARACTERISTIC_VIEW_FACTOR 0.7 - CHARACTERISTIC_VIEW_MAXCHANGE 130 - CHARACTERISTIC_REACTIONTIME 1.2 - CHARACTERISTIC_CHAT_FILE "bots/hunter_t.c" - CHARACTERISTIC_CHAT_NAME "lgbot" - CHARACTERISTIC_CHAT_CPM 400 - CHARACTERISTIC_CHAT_INSULT 0 - CHARACTERISTIC_CHAT_MISC 0 - CHARACTERISTIC_CHAT_STARTENDLEVEL 0 - CHARACTERISTIC_CHAT_ENTEREXITGAME 0 - CHARACTERISTIC_CHAT_KILL 0 - CHARACTERISTIC_CHAT_DEATH 0 - CHARACTERISTIC_CHAT_ENEMYSUICIDE 0 - CHARACTERISTIC_CHAT_HITTALKING 0 - CHARACTERISTIC_CHAT_HITNODEATH 0 - CHARACTERISTIC_CHAT_HITNOKILL 0 - CHARACTERISTIC_CHAT_RANDOM 0 - CHARACTERISTIC_CHAT_REPLY 0 - CHARACTERISTIC_CROUCHER 0 - CHARACTERISTIC_JUMPER 0 - CHARACTERISTIC_WALKER 0 - CHARACTERISTIC_WEAPONJUMPING 0 - CHARACTERISTIC_GRAPPLE_USER 0 - CHARACTERISTIC_ITEMWEIGHTS "bots/hunter_i.c" - CHARACTERISTIC_AGGRESSION 1.0 - CHARACTERISTIC_SELFPRESERVATION 0 - CHARACTERISTIC_VENGEFULNESS 1.0 - CHARACTERISTIC_CAMPER 0 - CHARACTERISTIC_EASY_FRAGGER 0.5 - CHARACTERISTIC_ALERTNESS 1.0 - CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.6 - CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.6 - CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.6 - CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.6 - CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.6 - CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.6 - CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.6 - CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.6 - CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.5 - CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.5 - CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.5 - CHARACTERISTIC_AIM_SKILL_BFG10K 0.5 - CHARACTERISTIC_FIRETHROTTLE 1.0 -} - skill 4 { CHARACTERISTIC_NAME "lgbot" @@ -176,7 +71,7 @@ skill 4 CHARACTERISTIC_VIEW_MAXCHANGE 160 CHARACTERISTIC_REACTIONTIME 0.6 CHARACTERISTIC_CHAT_FILE "bots/hunter_t.c" - CHARACTERISTIC_CHAT_NAME "lgbot" + CHARACTERISTIC_CHAT_NAME "hunter" CHARACTERISTIC_CHAT_CPM 400 CHARACTERISTIC_CHAT_INSULT 0 CHARACTERISTIC_CHAT_MISC 0 @@ -229,7 +124,7 @@ skill 5 CHARACTERISTIC_VIEW_MAXCHANGE 180 CHARACTERISTIC_REACTIONTIME 0.2 CHARACTERISTIC_CHAT_FILE "bots/hunter_t.c" - CHARACTERISTIC_CHAT_NAME "lgbot" + CHARACTERISTIC_CHAT_NAME "hunter" CHARACTERISTIC_CHAT_CPM 400 CHARACTERISTIC_CHAT_INSULT 0 CHARACTERISTIC_CHAT_MISC 0 diff --git a/home/minqlx-plugins/lgbot.py b/home/minqlx-plugins/lgbot.py index 1396842..b6c4e23 100644 --- a/home/minqlx-plugins/lgbot.py +++ b/home/minqlx-plugins/lgbot.py @@ -23,6 +23,11 @@ PRESETS = { PUSH_RANGE, BACKOFF_RANGE = 250, 700 BACKOFF_HEALTH, PUSH_LEAD = 60, 30 MAX_TARGET_DIST = 1500 +BOT_STEAM_ID = 90071996842377216 # minqlx gives bots this + their client number + + +def is_bot(steam_id): + return steam_id == 0 or steam_id >= BOT_STEAM_ID def to_int(text): @@ -156,7 +161,7 @@ if minqlx: for p in players: if p.id == bot.id or p.team == "spectator" or not p.is_alive: continue - if p.steam_id == 0 and not self.target_bots: # bots have Steam ID 0 + if is_bot(p.steam_id) and not self.target_bots: continue pos = p.position() cands.append(((pos.x, pos.y), p)) diff --git a/tools/test_lgbot.py b/tools/test_lgbot.py index b685d51..84d8385 100644 --- a/tools/test_lgbot.py +++ b/tools/test_lgbot.py @@ -1,7 +1,7 @@ import math, os, random, sys, unittest sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "home", "minqlx-plugins")) -from lgbot import (PRESETS, KEYS, resolve, Strafer, wanted_range, steer, fix_z, pick_target, to_int) +from lgbot import (PRESETS, KEYS, resolve, Strafer, wanted_range, steer, fix_z, pick_target, to_int, is_bot) def preset(n, **kw): @@ -123,6 +123,12 @@ class Misc(unittest.TestCase): self.assertEqual(fix_z(40), 40) # slopes/stairs self.assertEqual(fix_z(800), 800) # jump pads + def test_is_bot(self): + self.assertTrue(is_bot(90071996842377216)) # minqlx bot ids: base + client number + self.assertTrue(is_bot(90071996842377216 + 5)) + self.assertTrue(is_bot(0)) + self.assertFalse(is_bot(76561198000000000)) # real SteamID64 + def test_to_int(self): self.assertEqual(to_int("5"), 5) self.assertEqual(to_int(" -1 "), -1)