From 54c9ff0ac6ef0a281c5ab7872b950420952416da Mon Sep 17 00:00:00 2001 From: jenz Date: Sun, 1 Jan 2023 21:37:44 +0100 Subject: [PATCH] updated hull tracing to catch a missed case where bot must jump but fails to notice. also updated the jumping again so it hopefully does not fuck up on roundstarts or teleports etc etc --- AutismBotIngame/scripting/autism_bot_info.sp | 43 +++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/AutismBotIngame/scripting/autism_bot_info.sp b/AutismBotIngame/scripting/autism_bot_info.sp index da23f30a..7e9db80d 100644 --- a/AutismBotIngame/scripting/autism_bot_info.sp +++ b/AutismBotIngame/scripting/autism_bot_info.sp @@ -93,6 +93,7 @@ public void OnPluginStart() RegConsoleCmd("sm_autism", cmd_talk, "talking to the bot through java application"); RegConsoleCmd("sm_botrtv", cmd_botrtv, "making bots rtv"); HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); + HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); //UDP connection connect_socket(); @@ -118,6 +119,9 @@ public MRESReturn OnGetRunCmdPre(int entity, Handle hReturn) } +// +// Fix ladder tp aswell, they fail getting up ladders sometimes with the change. otherwise good +// public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapon, int& subtype, int& cmdnum, int& tickcount, int& seed, int mouse[2]) { //we use info we just got from OnPlayerRunCmdPre to determine if to jump @@ -140,7 +144,6 @@ public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3 TeleportEntity(client, coords_run_cmd[client], NULL_VECTOR, NULL_VECTOR); buttons |= IN_JUMP; //jump has_to_jump_bots[client] = 2; - CreateTimer(1.5, reset_jump, client); } else if (GetEntityFlags(client) & FL_ONGROUND) { @@ -153,15 +156,6 @@ public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3 return Plugin_Continue; } -public Action reset_jump(Handle hTimer, int client) -{ - if (IsValidClient(client)) - { - has_to_jump_bots[client] = 0; - } - return Plugin_Continue; -} - public void OnPluginEnd() { if (g_hTimer_pressing != null) @@ -173,6 +167,19 @@ public void OnPluginEnd() delete g_hTimer_bot_connect; } } +public void Event_RoundEnd(Handle event, const char[] name, bool dontBroadcast) +{ + for (int i = 1; i <= MaxClients; i++) + { + if (IsValidClient(i)) + { + if (is_bot_player(i)) + { + has_to_jump_bots[i] = 3; + } + } + } +} public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast) { @@ -189,6 +196,8 @@ public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast targetfriend_prev_coords[i][0] = 0.0; targetfriend_prev_coords[i][1] = 0.0; targetfriend_prev_coords[i][2] = 0.0; + GetEntPropVector(i, Prop_Send, "m_vecOrigin", coords_run_cmd[i]); + has_to_jump_bots[i] = 0; for (int j = 1; j <= MaxClients; j++) { if (IsValidClient(j) && j != i) @@ -502,6 +511,7 @@ public Action recursive_pressing(Handle timer, any data) if (!IsPointVisible(ClientPos, friend_prev) && distance_prev_friend_prior > 500.0) { bot_follow_tp[client] = true; + has_to_jump_bots[client] = 2; } } if (IsValidClient(target_friend[client]) && !bot_follow_tp[client]) @@ -527,6 +537,7 @@ public Action recursive_pressing(Handle timer, any data) targetfriend_prev_coords[client][1] = 0.0; targetfriend_prev_coords[client][2] = 0.0; bot_follow_tp[client] = false; + has_to_jump_bots[client] = 0; } state = 8; //if its walking into a TP or up/down a ladder it matters to use +forward; } @@ -689,7 +700,17 @@ public void trace_hulling_bot(int client) } //something blocks floor crouch eye_position[2] += 5.0; - TR_TraceHullFilter(eye_position, eye_position, mins, maxs, MASK_ALL, TraceRayDontHitSelf); + float new_mins[3], new_maxs[3], new_eyes[3]; + new_mins[0] = mins[0]; + new_mins[1] = mins[1]; + new_mins[2] = crouch_min + 16.0; + new_maxs[0] = maxs[0]; + new_maxs[1] = maxs[1]; + new_maxs[2] = maxs[2] + 16.0; + new_eyes[0] = eye_position[0]; + new_eyes[1] = eye_position[1]; + new_eyes[2] = eye_position[2] - 64.0; + TR_TraceHullFilter(new_eyes, new_eyes, new_mins, new_maxs, MASK_ALL, TraceRayDontHitSelf); if (!(TR_DidHit())) { //should not block jump level