The Origins bots system update 0.2 launched in the github page, enjoy everyone, and thanks for the support!

Xplod_
Posts
-
Bots for Zombies mode for BO2/T6 V0.2 -
Bots for Zombies mode for BO2/T6 V0.2@More-Ordovices Thanks again for the bugs advices, fixed the bugs you listed in the last message, new version v0.1.2 is launched in the github page if you want to give a try, thanks pal'

-
Bots for Zombies mode for BO2/T6 V0.2@More-Ordovices Hi pal', thanks a lot for the errors/bugs discovering, I fixed all what you said i this message, sorry if I last long in it, but now the V0.1.1 in Github is released now with all the bugs fixed that you discovered.

-
Bots for Zombies mode for BO2/T6 V0.2RlKk01 Thank you, and your work is so appreciated.
I want to go more further with the mod, like I say in the github page, the next objective I have is implementing fully functional AI for bots for specific maps (for example in Origins they have to pick up craftables, craft them, activate generators, pick shovels and dig, take staffs, do the EE, etc., the same for MOTD, Buried, Die Rise, Tranzit. I guess for Nuketown I don't have to do anything but I will see). I advanced a lot with Origins with crafts, dig, pick, generators, but needs a lot of work/testing to get the half of the work done.
-
Bots for Zombies mode for BO2/T6 V0.2Masatanium README md fixed, and uploaded decompiled files for anyone to work on it, thanks for noticing those errors.
-
Bots for Zombies mode for BO2/T6 V0.2Before I write something about the mod, I want to thank and give full credit to GerardS0406, BySc, techboy04gaming and RIKk01 for begin with the system of the bots for Bo2/T6.
For the new 0.2 version, you can still play in any map you want without problem, but is a new version because it was implemented thinking system for bots for Origins, like they could play the map more like a human do (picking crafts, activating generators, dig, etc.). This is like a beta version for the map, and an incomplete one, but the mod itself works normal like the V0.1.3 in others maps. You can find the implements in the release page of Github.
This mod is like an update for the work of RIKk01 and techboy04gaming update from April 2026.
All the information of the bots you can read it in the github link:
https://github.com/Xplod883/ZM-BO2-T6-Bots.gitVideo for the Bots in Origins of the V0.2 upload: https://youtu.be/Zp2LstQWsVo?si=VhzaXoqcM7lxiZrO
Installation: Open Windows+R, write appdata, and follow this next direction: AppData/Local/Plutonium/storage/t6/mods (if you don't have a mods folder, create one with minus in all words) get into the folder and paste the zm_bots folder to it, now in the game, under all options is the Mods, select it and upload the mod.
For setting the bots write the next set zm_bots # "# is the amount of bots you want in the game" You can upload maximum 7 bots in a game (I don't know if you can upload more in Grief Mode) and puting max. players in the party = 8 pressing P before starting a match.
You can control the bots using D-PAD Down/2 for make them wander/follow you/stay, is an inspiration for the BO3 ZM Bots Mod.
You can teleport all the bots to your position, press twice D-PAD Right/5 (3 works too, I don't really know how to fix this, sorry).
This bot is obviously just for having fun, because the full funcionality in specific maps was not implemented yet, I was working in Origins for the full funcionality for the bots (pick craftables, activate generators, dig, etc.) and that is like an ambition I have, make that for all maps (MOTD like Origins, Buried, Die Rise and Tranzit) with the NavMesh fully implemented, make the system for the bots to make EE's, but that's too ambitious, like I say, I began with Origins, but is a tedious work, so I'll better upload this for the community to taste/play.
If you detect a bug/issue in the mod, you can write the comment in the Plutonium forum/Github issues.
-
[Resource] MW2 Harriers in MW3... yes, HARRIERS in MW3https://youtu.be/BdcjCkkMaD4?si=-EdRRHB3TJ_akBku. Link of the video demostration.
-
[Resource] MW2 Harriers in MW3... yes, HARRIERS in MW3It was strange for me that in the IW5 scripts was the .gsc file of the harrier airstrike (maps/mp/killstreaks/_harrier.gsc), remembering that IW5 is a direct evolution of IW4 (MW2), and maybe the devs forget about deleting the file, idk.
How this was made was making Function HIjack, making this technique is for not editing the original file, but making one that has to do to the game compiler call the Harrier when somebody call the Airstrike.
*This script replaces the Airstrike killstreak, as a note.
After coding in reference of the functions of _harrier.gsc, _airstrike.gsc and understanding the utility.gsc (Because into MW2 and MW3, the IW devs deleted the "" of a lot of functions in comparation of the MW2 _utility.gsc, cleaning the .gsc file for MW3) and the interface of the map checkpoint selection in _killstreaks.gsc, i've finally made the .gsc file to replace the Airstrike to the Harrier.
isjuggernautweapon( weapon ) { return false; } init() { level.killstreakfuncs["airstrike"] = ::tryUseHarrierStrike; level.killstreakfuncs["precision_airstrike"] = ::tryUseHarrierStrike; } tryUseHarrierStrike( lifeId ) { self endon( "disconnect" ); self endon( "death" ); self thread harrierCleanupOnEnd(); if ( !maps\mp\_utility::validateusestreak() ) return 0; if ( isDefined( level.civilianjetflyby ) ) { self iPrintLnBold( &"MP_CIVILIAN_AIR_TRAFFIC" ); return 0; } if ( maps\mp\_utility::isusingremote() ) return 0; var_2 = level.mapsize / 6.46875; if ( level.splitscreen ) var_2 *= 1.5; maps\mp\_utility::_beginlocationselection( "airstrike", "map_artillery_selector", 0, var_2 ); self endon( "stop_location_selection" ); self waittill( "confirm_location", location, directionYaw ); directionYaw = randomint( 360 ); self setblurforplayer( 0, 0.3 ); thread maps\mp\killstreaks\_airstrike::finishairstrikeusage( lifeId, location, directionYaw, "harrier_airstrike" ); self notify( "harrier_strike_complete" ); return 1; } harrierCleanupOnEnd() { self.harrierCleanupPending = true; self thread harrierWatchEvent( "death" ); self thread harrierWatchEvent( "disconnect" ); self thread harrierWatchEvent( "harrier_strike_complete" ); } harrierWatchEvent( eventName ) { self waittill( eventName ); if ( !isDefined( self.harrierCleanupPending ) || !self.harrierCleanupPending ) return; self.harrierCleanupPending = false; if ( maps\mp\_utility::isusingremote() ) self maps\mp\_utility::clearusingremote(); } -
Adjust Scavenger to Emulate MW2 with GSC?Tifosi 92 (Maybe it's late to reply this but I'll do it) I made a script to have the lethal and tactical grenades being ressuplied in MW3, so here is the script, it even ressuplies the launchers weapons in case you want it too.
#include maps\mp\_utility; Init() { InitScavengerResupply(); } InitScavengerResupply() { level thread OnPlayerConnect(); } OnPlayerConnect() { for(;;) { level waittill("connected", player); player thread OnPlayerSpawned(); } } OnPlayerSpawned() { self endon("disconnect"); for(;;) { self waittill("changed_kit"); // Check if the player has the Scavenger perk if (self HasPerk("specialty_scavenger")) { self thread OnScavengerPickup(); } } } OnScavengerPickup() { self endon("disconnect"); self endon("death"); for (;;) { self waittill("scavenger_pickup"); self GiveMaxAmmo(); if (self HasWeapon(self GetCurrentOffhand())) { self GiveMaxAmmo(self GetCurrentOffhand()); } if (self GetWeaponAmmoStock("frag_grenade_mp") < 1) { self SetWeaponAmmoStock("frag_grenade_mp", 1); } if (self GetWeaponAmmoStock("semtex_mp") < 1) { self SetWeaponAmmoStock("semtex_mp", 1); } if (self GetWeaponAmmoStock("throwingknife_mp") < 1) { self SetWeaponAmmoStock("throwingknife_mp", 1); } if (self GetWeaponAmmoStock("bouncingbetty_mp") < 1) { self SetWeaponAmmoStock("bouncingbetty_mp", 1); } if (self GetWeaponAmmoStock("claymore_mp") < 1) { self SetWeaponAmmoStock("claymore_mp", 1); } if (self GetWeaponAmmoStock("c4_mp") < 1) { self SetWeaponAmmoStock("c4_mp", 1); } if (self GetWeaponAmmoStock("flash_grenade_mp") < 1) { self SetWeaponAmmoStock("flash_grenade_mp", 1); } if (self GetWeaponAmmoStock("concussion_grenade_mp") < 1) { self SetWeaponAmmoStock("concussion_grenade_mp", 1); } if (self GetWeaponAmmoStock("scrambler_mp") < 1) { self SetWeaponAmmoStock("scrambler_mp", 1); } if (self GetWeaponAmmoStock("emp_grenade_mp") < 1) { self SetWeaponAmmoStock("emp_grenade_mp", 1); } if (self GetWeaponAmmoStock("smoke_grenade_mp") < 1) { self SetWeaponAmmoStock("smoke_grenade_mp", 1); } if (self GetWeaponAmmoStock("trophy_mp") < 1) { self SetWeaponAmmoStock("trophy_mp", 1); } if (self GetWeaponAmmoStock("portable_radar_mp") < 1) { self SetWeaponAmmoStock("portable_radar_mp", 1); } self thread ResupplyLaunchers(); } } ResupplyLaunchers() { launchers = [ "m320_mp", "rpg_mp", "iw5_smaw_mp", "stinger_mp", "xm25_mp", "javelin_mp" ]; for (i = 0; i < launchers.size; i++) { weapon = launchers[i]; if (self HasWeapon(weapon)) { self GiveMaxAmmo(weapon); } } } -
Scavenger Ressuply like in MW2I was looking for a script about having the same function of the Scavenger perk in Cod: Mw2, where you can ressuply the primary and secondary weapon (except for launchers), and ressuply the lethal and tactical grenades, but the function of ressuply grenades was deleted in Mw3, so for that, I made a .gsc script for IW5, this for have the same function in Scavenger.
With it, the player can ressuply his primary and secondary weapon, even now if the player has launchers, it would ressuply it too, and it will ressuply the lethal and tactical grenades now (except for tactical insertion of course), so I let the script i made now that you can put it in your scripts folder in IW5 and enjoy the scavenger like in Mw2.
I give you the code above to just copy, create a .gsc file in the scripts folder, paste the code and play IW5 with the new function.
#include maps\mp\_utility; Init() { InitScavengerResupply(); } InitScavengerResupply() { level thread OnPlayerConnect(); } OnPlayerConnect() { for(;;) { level waittill("connected", player); player thread OnPlayerSpawned(); } } OnPlayerSpawned() { self endon("disconnect"); for(;;) { self waittill("changed_kit"); // Check if the player has the Scavenger perk if (self HasPerk("specialty_scavenger")) { self thread OnScavengerPickup(); } } } OnScavengerPickup() { self endon("disconnect"); self endon("death"); for (;;) { self waittill("scavenger_pickup"); self GiveMaxAmmo(); if (self HasWeapon(self GetCurrentOffhand())) { self GiveMaxAmmo(self GetCurrentOffhand()); } if (self GetWeaponAmmoStock("frag_grenade_mp") < 1) { self SetWeaponAmmoStock("frag_grenade_mp", 1); } if (self GetWeaponAmmoStock("semtex_mp") < 1) { self SetWeaponAmmoStock("semtex_mp", 1); } if (self GetWeaponAmmoStock("throwingknife_mp") < 1) { self SetWeaponAmmoStock("throwingknife_mp", 1); } if (self GetWeaponAmmoStock("bouncingbetty_mp") < 1) { self SetWeaponAmmoStock("bouncingbetty_mp", 1); } if (self GetWeaponAmmoStock("claymore_mp") < 1) { self SetWeaponAmmoStock("claymore_mp", 1); } if (self GetWeaponAmmoStock("c4_mp") < 1) { self SetWeaponAmmoStock("c4_mp", 1); } if (self GetWeaponAmmoStock("flash_grenade_mp") < 1) { self SetWeaponAmmoStock("flash_grenade_mp", 1); } if (self GetWeaponAmmoStock("concussion_grenade_mp") < 1) { self SetWeaponAmmoStock("concussion_grenade_mp", 1); } if (self GetWeaponAmmoStock("scrambler_mp") < 1) { self SetWeaponAmmoStock("scrambler_mp", 1); } if (self GetWeaponAmmoStock("emp_grenade_mp") < 1) { self SetWeaponAmmoStock("emp_grenade_mp", 1); } if (self GetWeaponAmmoStock("smoke_grenade_mp") < 1) { self SetWeaponAmmoStock("smoke_grenade_mp", 1); } if (self GetWeaponAmmoStock("trophy_mp") < 1) { self SetWeaponAmmoStock("trophy_mp", 1); } if (self GetWeaponAmmoStock("portable_radar_mp") < 1) { self SetWeaponAmmoStock("portable_radar_mp", 1); } self thread ResupplyLaunchers(); } } ResupplyLaunchers() { launchers = [ "m320_mp", "rpg_mp", "iw5_smaw_mp", "stinger_mp", "xm25_mp", "javelin_mp" ]; for (i = 0; i < launchers.size; i++) { weapon = launchers[i]; if (self HasWeapon(weapon)) { self GiveMaxAmmo(weapon); } } }