○ Spawns the specified amount of bots with a random outfit/gender if desired (Weapons/Items not included). Default: Spawns 1 exact bot clone of you.
○ [has_random_outfit] can take the values: yes/no, y/n, true/false, t/f, on/off, 1/0
○ Players are currently limited to a max of 1 bot each.
○ Despawn bots with "/bot stop spawn".
• /bot despawn|remove [amount=1] (Done)
○ Despawns specified amount of bots. Default: Despawns your current bot you are looking at, otherwise despawns your last spawned bot.
• /bot kill [amount=1] (Done)
○ Kills specified amount of bots. Default: Kills your current bot you are looking at, otherwise kills your last spawned bot.
○ Disables "/bot god" for target bots.
• /bot stop [command=all*] (Done)
○ Stops doing specified command. Default: Stops all commands, excluding: spawn, god, ammo, ignore.
○ I.E. "/bot stop spawn" despawns the bots. "/bot stop aim" stops the bots aiming at you. "/bot stop" stops almost everything.
• /bot tp (Done)
○ Teleports your bot you are aiming at or otherwise teleports all your bots to you facing the opposite way.
○ Reanchors the bot if "/bot anchor" is on.
• /bot record (Done)
○ Records and temporarily stores player inputs into a recording cache until a stop command is issued.
○ Stop recording with "/bot stop record" or "/bot play".
○ Note: For convenience, an action to switch to your current weapon is automatically recorded in the beginning.
• /bot save [filename=current_time] (Done)
○ Saves current recording cache using specified filename along with the current map and your gender into a custom replay file. Default: filename is the current timestamp YYYYMMDDHHMMSS
○ Saves the following active bot commands and their parameters: teach, play, god, ammo, dmg, anchor, recoil, sf, aim, counter, follow, snake, mimic, trail, esp, ghost, ego, reflex, gravity, speed, debug
• /bot load [filter=none] (Done)
○ Opens bot replay menu and loads specified replay file into recording cache. You can provide a filter to help search for files.
○ Thanks for making the menu McSic!
• /bot delete [filter=none] (Done)
○ Opens bot replay menu and PERMANENTLY deletes specified replay file. You can provide a filter to help search for files.
○ Thanks for making the menu McSic!
• /bot play [is_relative=true] (Done)
○ Stops recording and loops recording cache on all bots. If is_relative is on, the bot uses relative positioning and can be offset with each loop. Otherwise the bot uses absolute positioning. Default: is_relative = true.
○ [is_relative] can take the values: yes/no, y/n, true/false, t/f, on/off, 1/0
○ Stop playback with "/bot stop play".
○ Mouse movement can be overridden with "/bot aim".
• /bot mimic [is_possessing=false] (Done)
○ Bot looks where you do and mimics your actions in real time. You can't move if possessing the bots. Default: is_possessing = false.
○ You can select which bot to possess by aiming at them.
○ [is_possessing] can take the values: yes/no, y/n, true/false, t/f, on/off, 1/0
○ Stop mimicing with "/bot stop mimic".
Flag Commands
• /bot god (Done)
○ Locks bot HP/AP at 1000.
○ Disable godmode with "/bot stop god".
• /bot ammo (Done)
○ Locks bot ammo at 1000 on all guns. Guns can still reload.
○ Disable infinite ammo with "/bot stop ammo".
• /bot ghost [opacity=50%] (Done)
○ Bots become transparent with player collision disabled and can no longer attack or be attacked. Default: opacity = 50%
○ 0% ≤ opacity ≤ 100%
○ Disable ghost mode with "/bot stop ghost".
○ Stephan's idea for skillmaps. :)
• /bot anchor [distance=0] (Done)
○ Anchors bot to its current location. Bot teleports to saved location when displaced by a specified distance measured in body-widths. Default: 0
○ Disable anchor mode with "/bot stop anchor".
○ Bot can be reanchored with "/bot tp".
• /bot aim [playername=nearest_player] (Done)
○ Your typical aimbot. Continuously aims at specified player or bot near the torso region. Default: Aimed target, otherwise aims at nearest enemy.
○ Stop aiming with "/bot stop aim".
○ Overrides mouse movement of "/bot play".
○ Overridden by "/bot counter".
• /bot dmg [percent_damage=random] (Done)
○ Nerfs the bot's total damage to the new percentage. Default: Random each attack.
○ 0% ≤ percent_damage ≤ 100%
○ Return to normal damage with "/bot stop dmg".
• /bot reflex (Done)
○ Bot faces attacker when hit.
○ Disable reflex mode with "/bot stop reflex".
• /bot follow [playername=nearest_player] (Done)
○ All bots follows specified player. Default: Aimed target, otherwise nearest enemy.
○ Stop following with "/bot stop follow".
• /bot snake [playername=you] (Done)
○ A variation of "/bot follow". Bots line up and follows the target player. Default: Target player is you.
○ Stop following with "/bot stop snake".
• /bot counter [yaw=random] [pitch=random] (Done)
○ Counters with massive in specified direction. If bot gets a massive it turns relative to its current direction and massives. Default: Random if both parameters are empty.
○ Yaw is looking left and right relative to original position. 0 ≤ yaw ≤ 360 degrees. Default: random degree.
○ Pitch is looking up and down using absolute positioning. 0 ≤ pitch ≤ 180 degrees. Default: pitch = random degree.
○ Stop countering with "/bot stop counter".
○ Overrides "/bot aim".
• /bot sf (Done)
○ All bots safefall when flipped/lunged.
○ Disable safefall mode with "/bot stop sf".
• /bot recoil [recoiled_chance=0%] (Done)
○ Bot has a specified chance to become recoiled when they slash a block. Default: recoiled_chance = 0%
○ 0% ≤ recoiled_chance ≤ 100%
○ Return to normal recoiling with "/bot stop recoil".
• /bot trail [duration=2] (Done)
○ Your first bot leaves a trail behind for the specified duration. Default: duration = 2 seconds
○ 0 < duration ≤ 60 seconds
○ Warning: A longer duration creates more fps lag.
○ Note: The trail is client-sided only. Others cannot see it.
○ Stop with "/bot stop trail".
• /bot ego (Done)
○ Your bots ego the target player selected by "/bot aim".
○ Bots laugh/cry/taunt at targets who are massived/on ground/dead.
○ Note: Bots only taunt the dead if you specifically use their username in "/bot aim". (Not using nearest player.)
○ Stop with "/bot stop ego".
• /bot mass (Done)
○ Disable massives for all bots.
○ Stop with "/bot stop mass".
• /bot gravity [gravity=50%] (Done)
○ Bot's gravity is set to the specified amount. Default: gravity = 50%
○ 10% ≤ gravity ≤ 1000%
○ Return to normal gravity with "/bot stop gravity".
• /bot speed [speed=200%] (Done)
○ Bot's speed is set to the specified amount. Default: speed = 200%
○ 10% ≤ speed ≤ 400%
○ Return to normal speed with "/bot stop speed".
Experimental
• /bot midi [filename] (Not Started)
○ A single button rhythm mini-game inspired by Rhythm Doctor. The specified MIDI file song is played and the bot attacks following the rhythm. Stand in front of the bot and block or die. Otherwise, hang back and chill to the music. Files can be traded.
○ When the bot sees a special silent note (haven't picked one yet) in the MIDI file, it attacks.
○ You can quickly edit these special notes into existing MIDI files using an online editor or create your own song from scratch.
○ Dev note: Windows has built-in legacy MIDI drivers (mmeapi.h) and since Gunz is Windows based, this implies that musical data may be streamed to other nearby players for them to synthesize. Lag is likely to be a huge issue though.
○ Dev note: Even better, Gunz uses DirectX so I can use the DirectMusic API. DirectMusic is depreciated, but Gunz has Fmod already integrated as ZSoundFMod, which can support MIDI. MIDI Tutorial.
○ Dev note: Black MIDI exists (a song with like 200 billon notes)... Put a cap on max notes and duration.
Spoiler!
1. Set up working environment.
Jur13n repack. Built with VS2019
2. Set up testing environment.
Added smoke grenade effects when dashing for testing purposes.
Here's the same thing with nades for fun.
3. Grab and process chat data.
Put in some dummy commands to help test bot.
4. Spawn a controllable character.
Bot copies your equips and bodily features. Each person can spawn one bot.
Making some progress, but it's not controllable yet.
Was thinking of teleporting bot to you if it already exists. Now you simply get a warning message.
64 bots. No lag on client side, but my server had a ~500 ms delay.
Client-Sided bots with death mechanics.
Gave all bots their own independent camera. The training bot is starting to become practical.
5. Edit character object to be controlled by commands and replays.
Pet bots.
Started to add recording. Still has a lot of syncing issues. This is an example of absolute playback.
Here's an example of simulated combat using relative playback.
Training bots are now server-sided.
6. Full scale test
7. Peer review
8. Alpha/Beta test
9. Release<----- I am here.
Last edited by Frooples; 2 Weeks Ago at 01:46 AM.
The following 13 users say thank you to Frooples for this useful post:
Whilst reading I came up with ideas just to realize that you literally wrote them under. Good work. Only thing I would think to be nice is to have multiple presets of "training programs" where instead of queueing commands in !custom there'll be a list of premade actions designed to warm up a player. this would be something like a combination of constantly aiming at the enemy who issued the command, and doing a sequence of events you would usually find in a duel room.
Also, if it's within your scope of interest, programming the bot with an AI to battle the player instead of just performing a sequence of events. I might be able to help with the AI part. This should be similar to quest mode, but far more intelligent to actually be challenging.
Last edited by Bunny; 08-19-2020 at 03:49 AM.
The following user said thank you to Bunny for this useful post:
Whilst reading I came up with ideas just to realize that you literally wrote them under. Good work. Only thing I would think to be nice is to have multiple presets of "training programs" where instead of queueing commands in !custom there'll be a list of premade actions designed to warm up a player. this would be something like a combination of constantly aiming at the enemy who issued the command, and doing a sequence of events you would usually find in a duel room.
Also, if it's within your scope of interest, programming the bot with an AI to battle the player instead of just performing a sequence of events. I might be able to help with the AI part. This should be similar to quest mode, but far more intelligent to actually be challenging.
Oh yes, good ideas. I'm going to take baby steps and keep things simple for now, but I'll see if I can generalize the code so that inputs can come from a player, or is generated from an AI for future "upgradability".
Love it, if you need lines for the BMs just check the ego section, I can also link a specific youtube channel. The good manners is just unheard of, good on ya.