X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fdefault%2Fbot.qc;h=f367adab32c538c455a1a12ea8216897de1d2781;hp=d768149e7d1eba2009c07c9e259a66cacdb16fe4;hb=97177a79357838fa546b5ee0fada274f0a55e12d;hpb=8b4e35800828d8c5db5e61af7a7319737a53e57c diff --git a/qcsrc/server/bot/default/bot.qc b/qcsrc/server/bot/default/bot.qc index d768149e7d..f367adab32 100644 --- a/qcsrc/server/bot/default/bot.qc +++ b/qcsrc/server/bot/default/bot.qc @@ -323,6 +323,10 @@ void bot_setnameandstuff(entity this) void bot_custom_weapon_priority_setup() { + static string bot_priority_far_prev; + static string bot_priority_mid_prev; + static string bot_priority_close_prev; + static string bot_priority_distances_prev; float tokens, i, w; bot_custom_weapon = false; @@ -334,35 +338,41 @@ void bot_custom_weapon_priority_setup() ) return; - // Parse distances - tokens = tokenizebyseparator(autocvar_bot_ai_custom_weapon_priority_distances," "); + if (bot_priority_distances_prev != autocvar_bot_ai_custom_weapon_priority_distances) + { + strcpy(bot_priority_distances_prev, autocvar_bot_ai_custom_weapon_priority_distances); + tokens = tokenizebyseparator(autocvar_bot_ai_custom_weapon_priority_distances," "); - if (tokens!=2) - return; + if (tokens!=2) + return; - bot_distance_far = stof(argv(0)); - bot_distance_close = stof(argv(1)); + bot_distance_far = stof(argv(0)); + bot_distance_close = stof(argv(1)); - if(bot_distance_far < bot_distance_close){ - bot_distance_far = stof(argv(1)); - bot_distance_close = stof(argv(0)); + if(bot_distance_far < bot_distance_close){ + bot_distance_far = stof(argv(1)); + bot_distance_close = stof(argv(0)); + } } int c; #define PARSE_WEAPON_PRIORITIES(dist) MACRO_BEGIN \ - tokens = tokenizebyseparator(W_NumberWeaponOrder(autocvar_bot_ai_custom_weapon_priority_##dist)," "); \ - bot_weapons_##dist[0] = -1; \ - c = 0; \ - for(i = 0; i < tokens && c < Weapons_COUNT; ++i) { \ - w = stof(argv(i)); \ - if (w >= WEP_FIRST && w <= WEP_LAST) { \ - bot_weapons_##dist[c] = w; \ - ++c; \ + if (bot_priority_##dist##_prev != autocvar_bot_ai_custom_weapon_priority_##dist) { \ + strcpy(bot_priority_##dist##_prev, autocvar_bot_ai_custom_weapon_priority_##dist); \ + tokens = tokenizebyseparator(W_NumberWeaponOrder(autocvar_bot_ai_custom_weapon_priority_##dist)," "); \ + bot_weapons_##dist[0] = -1; \ + c = 0; \ + for(i = 0; i < tokens && c < Weapons_COUNT; ++i) { \ + w = stof(argv(i)); \ + if (w >= WEP_FIRST && w <= WEP_LAST) { \ + bot_weapons_##dist[c] = w; \ + ++c; \ + } \ } \ + if (c < Weapons_COUNT) \ + bot_weapons_##dist[c] = -1; \ } \ - if (c < Weapons_COUNT) \ - bot_weapons_##dist[c] = -1; \ MACRO_END PARSE_WEAPON_PRIORITIES(far); @@ -834,10 +844,6 @@ void bot_serverframe() if (autocvar_g_waypointeditor_auto) botframe_autowaypoints(); - if(time > bot_cvar_nextthink) - { - if(currentbots>0) - bot_custom_weapon_priority_setup(); - bot_cvar_nextthink = time + 5; - } + if (currentbots > 0) + bot_custom_weapon_priority_setup(); }