[ZM] Updated bo2_zm_bots
-
BySc you make it very hard how i can compile it can you give me link of gsc tool ?
-
You dont need to compile you can just copy script the folder we dont need compile now.
-
Updated code bot now buy weapons for ammo replenished
-
Nice
-
Is there anyway to mix this script:
bot_buy_box()
{
if(self maps\mp\zombies_zm_laststand::player_is_in_laststand())
return;if(!isDefined(level.chests) || level.chests.size == 0) return; current_box = level.chests[level.chest_index]; if(!isDefined(current_box)) return; dist = Distance(current_box.origin, self.origin); // Only try to use box if we have enough points and aren't too far if(self.score >= 1900 && dist < 150) { // Check if box is available if(!is_true(current_box._box_open) && !is_true(current_box._box_opened_by_fire_sale) && !flag("moving_chest_now")) { if(FindPath(self.origin, current_box.origin, undefined, 0, 1)) { // Move to box if not already there if(dist > 75) { self AddGoal(current_box.origin, 50, 2, "boxBuy"); return; } // Use the box when close enough self maps\mp\zombies\_zm_score::minus_to_player_score(950); current_box notify("trigger", self); // Wait for weapon to appear and box to fully open wait 4; // Try to grab weapon multiple times to ensure it's picked up for(i = 0; i < 3; i++) { if(is_true(current_box._box_open)) { current_box notify("trigger", self); self UseButtonPressed(); wait 0.5; // Check if weapon was actually taken if(!is_true(current_box._box_open)) return; } wait 0.5; } } } } // Clean up any remaining box goal if(self hasgoal("boxBuy")) self cancelgoal("boxBuy");
}
With this one:
// Improved weapon selection logic
bot_should_take_weapon(boxWeapon, currentWeapon)
{
if(!isDefined(boxWeapon))
return false;// Check if we already have this weapon if(self HasWeapon(boxWeapon)) return false; // Always take wonder weapons if(IsSubStr(boxWeapon, "raygun") || IsSubStr(boxWeapon, "thunder") || IsSubStr(boxWeapon, "wave") || IsSubStr(boxWeapon, "mark2") || IsSubStr(boxWeapon, "tesla")) { return true; } // Define weapon tiers for better decision making tier1_weapons = array("raygun_", "thunder", "wave_gun", "mark2", "tesla"); tier2_weapons = array("galil", "an94", "hamr", "rpd", "lsat", "dsr50"); tier3_weapons = array("mp5k", "pdw57", "mtar", "mp40", "ak74u", "qcw05"); tier4_weapons = array("m14", "870mcs", "r870", "olympia", "fnfal"); // Track if current weapon is in specific tier currentIsTier1 = false; currentIsTier2 = false; currentIsTier3 = false; // Check current weapon tier foreach(weapon in tier1_weapons) { if(IsSubStr(currentWeapon, weapon)) { currentIsTier1 = true; break; } } if(!currentIsTier1) { foreach(weapon in tier2_weapons) { if(IsSubStr(currentWeapon, weapon)) { currentIsTier2 = true; break; } } } if(!currentIsTier1 && !currentIsTier2) { foreach(weapon in tier3_weapons) { if(IsSubStr(currentWeapon, weapon)) { currentIsTier3 = true; break; } } } // Don't take bad weapons like snipers or launchers (with small chance for variety) if(IsSubStr(boxWeapon, "sniper") || IsSubStr(boxWeapon, "launcher") || IsSubStr(boxWeapon, "knife") || (IsSubStr(boxWeapon, "ballistic") && !IsSubStr(boxWeapon, "ballistic_knife"))) { return (randomfloat(1) < 0.15); // 15% chance } // Check box weapon tier boxIsTier2 = false; boxIsTier3 = false; boxIsTier4 = false; foreach(weapon in tier2_weapons) { if(IsSubStr(boxWeapon, weapon)) { boxIsTier2 = true; break; } } if(!boxIsTier2) { foreach(weapon in tier3_weapons) { if(IsSubStr(boxWeapon, weapon)) { boxIsTier3 = true; break; } } } if(!boxIsTier2 && !boxIsTier3) { foreach(weapon in tier4_weapons) { if(IsSubStr(boxWeapon, weapon)) { boxIsTier4 = true; break; } } } // Decision logic based on tiers and round number if(currentIsTier1) { // Already have a wonder weapon, only take another if it's a different one // For example, allow taking thunder gun when already having raygun foreach(weapon in tier1_weapons) { if(IsSubStr(boxWeapon, weapon) && !IsSubStr(currentWeapon, weapon)) { // 70% chance to take another wonder weapon return (randomfloat(1) < 0.7); } } return false; // Don't replace wonder weapon with non-wonder weapon } // Have tier 2 weapon already if(currentIsTier2) { if(boxIsTier2) { // 50% chance to swap between tier 2 weapons for variety return (randomfloat(1) < 0.5); } else if(boxIsTier3 || boxIsTier4) { // Almost never downgrade from tier 2 return (randomfloat(1) < 0.1); } // For unclassified weapons, low chance return (randomfloat(1) < 0.2); } // Have tier 3 weapon already if(currentIsTier3) { if(boxIsTier2) { // Always upgrade to tier 2 return true; } else if(boxIsTier3) { // 60% chance to swap between tier 3 for variety return (randomfloat(1) < 0.6); } else if(boxIsTier4) { // Don't downgrade return (randomfloat(1) < 0.15); } } // Round-based logic - in early rounds take most weapons if(level.round_number <= 5) { return true; } // Mid rounds - prefer at least tier 3 else if(level.round_number <= 15) { if(boxIsTier2 || boxIsTier3) return true; else return (randomfloat(1) < 0.5); // 50% chance for other weapons } // Late rounds - generally only take tier 2 else { if(boxIsTier2) return true; else if(boxIsTier3) return (randomfloat(1) < 0.7); // 70% chance for tier 3 else return (randomfloat(1) < 0.3); // 30% chance for other weapons } // Default case - 50/50 chance return (randomfloat(1) < 0.5);
}
-
RlKk01 I already calling the bot_should_take_weapon in bot_buy_box function do you need something else ?
-
Yeah i know, i tested your actual mod but the function of the box itself for some reason it's bugged for me, i try to buy the box but it won't let me buy it unless a bot open it first.
And i have to spend more points like 3000 thousands points just for get a weapon.
-
The script that i send to you is the old version of your mod, i did reactivated and it worked perfectly it's just that it lacks of the preferance of the weapons they gets, for example they get the raygun from the box and buy again to get the balistic knives.
-
RlKk01 Updated code again, still have a bug when bots take grenade they still holds as a weapon i will look at later.
-
BySc but when i do that i have a lot of point on the first round me and all the bots and can you make another update to the bots because when i go far from them they will teleport to me and they will stay randomly on the walls i dont know why but this thing happened to me when i played origins thank you and please can you make another update please
-
why do i spawn with a ton of points when i have this enabled?
-
BackdoorHaze in the zm_bo2_bots file it says "init()
{
level.player_starting_points = 550 * 400;
bot_set_skill();" which gives alot of starting points, saying this for anyone else who is confused -
cyrex crims said in [ZM] Updated bo2_zm_bots:
BySc but when i do that i have a lot of point on the first round me and all the bots and can you make another update to the bots because when i go far from them they will teleport to me and they will stay randomly on the walls i dont know why but this thing happened to me when i played origins thank you and please can you make another update please
I will check it
BackdoorHaze said in [ZM] Updated bo2_zm_bots:
why do i spawn with a ton of points when i have this enabled?
I was using for testing i will disable next update
-
Would it be possible to create a briefly moment of invulnerability for you and the bots when they teleport?
Either they die or I get killed when it happens. -
RlKk01 said in [ZM] Updated bo2_zm_bots:
Would it be possible to create a briefly moment of invulnerability for you and the bots when they teleport?
Either they die or I get killed when it happens.It's a good idea i will check it.
-
BySc There is another thing, bots when they have pap weapons and they are close to a wallbuy they buy for example an m14 or an ak74. It bothers a bit when they are in high rounds and change their weapons for much worse ones.
And that's It, the rest of the mod works perfectly. -
Is there anyway I could manually take over the bot for a short period of time, and be able to interact with things? I noticed the bots aren't able to pick up the stones in Origins, and was wondering if i could take over just to pick up the stones for the bots.
-
Updated code 08.05.2025
-- Added invulnerability for 2.5sec
-- Added another if logic for controlling pap weapons i hope this fix lower tier weapon purches.Update can be found on github. Thanks everyone who is tested mod.
-
StonedSquidz said in [ZM] Updated bo2_zm_bots:
Is there anyway I could manually take over the bot for a short period of time, and be able to interact with things? I noticed the bots aren't able to pick up the stones in Origins, and was wondering if i could take over just to pick up the stones for the bots.
As far as i know there is no bot control logic within the game but i can look it. I need to add map specific logics for bot to make them collect things related to ee.
-
BySc The teleport function keeps killing the bots when teleport to you.