GithubHelp home page GithubHelp logo

dadido3 / d3bot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from azurblau/azbot

38.0 5.0 27.0 25.95 MB

A very primitive AI for GMod bots designed to work with Jetboom's Zombie Survival gamemode.

Lua 94.54% Go 5.46%
garrysmod gmod gmod-lua gmod-addon bot bots zombie-survival-shooter

d3bot's Introduction

D3bot

A very primitive AI for GMod bots primarily designed to work with Jetboom's Zombie Survival gamemode. This is a fork of /Azurblau/AzBot with new features and bug fixes.

Here is a list of notable changes compared to the original version:

  • Unidirectional links.
  • Links which are only usable by fast zombies.
  • Some more specific movement instructions for nodes to allow bots to handle obstacles better. (Duck when on a node, duck when moving towards a node, aim straight when on a node, aim straight towards a node, ...)
  • Conditions for nodes. (Allow or disallow the use of a node, if the said node is close to specific entities like doors, breakables, physic props, etc.)
  • Pouncing behavior for fast zombies or zombies based on that class. This makes these zombies much more dangerous, as they will hit you with a high certainty if you are within their jump range. They'll also use that ability to jump to the next or second next node if possible.
  • Small adjustments to the inner workings of the pathfinding algorithm. For example bots will now walk towards the next node until they are within its reach, and not until they are closest to it. This makes the bots movement behavior more predictable for navmesh creators, and also prevents bots from running in circles sometimes.
  • Zombies will only attack if the target is within reach. This makes wraith and fast zombie attacks much more surprising and effective.
  • Fix bots glitching outside of the map if they spawn inside a trigger_zombieclass brush.
  • Fix zombie class selection logic for bots.
  • Bots now crouch when their target is low.
  • Prevent links linking a node to itself.
  • Github friendly navmesh format.
  • More example navmeshes, which make use of all the new features. See NAVMESHES
  • Survivor bots.
  • All settings in a separate lua file. (sv_config.lua)
  • Named bots (See /lua/d3bot/names to adjust or add new name lists)
  • Climbing bots. (Thanks to orecros)
  • More advanced edit modes. (Thanks to necrossin)
  • Improved navmesh drawing.
  • Navmesh edit preview. (Thanks to delstre)
  • Ability to use source navmeshes, and option to convert those navmeshes into D3bot ones. (Thanks to Bagellll)
  • Code optimizations. (Thanks to Antizombie)
  • Support for ZS sub-gamemodes such as Pants Mode, Baby Mode & Classic Mode. (Thanks to Sigilmare)
  • Parameters for restricting paths based on the bot's jump and crouching height. (Thanks to bol)
  • Pouncing/Leaping headcrabs. (Thanks to bol)
  • Translations:
    • Chinese Simplified (Thanks to [XY]EvansFix)
    • Chinese Traditional (Thanks to Half1569)
    • Czech (Thanks to kekosminek)
    • Danish (Thanks to MRBennetsen)
    • Dutch (Thanks to Ubister)
    • English
    • French (Thanks to [FR]Angel-Neko_X)
    • German
    • Italian (Thanks to Wolfaloo)
    • Korean
    • Polish (Thanks to Halamix2)
    • Portuguese(Brazil) (Thanks to GMBR | $herlock Bu$ter)
    • Russian (Thanks to Blueberryy)
    • Spanish (Thanks to Fafy2801)
    • Turkish (Thanks to ᴇXғɪʀᴇᴄʜʀᴏᴍᴇ~)
    • Ukrainian (Thanks to ErickMaksimets)
  • Some smaller things I possibly forgot.

This fork is backward compatible, but there are some changes which prevents you to use navmeshes from this fork in the original version. To make them work just replace all occurrences of \n with ;. If you come from an older version, you may have to move the navmeshes from garrysmod/data/azbot/navmesh/map/... to garrysmod/data/d3bot/navmesh/map/....

Everything below here is the original readme, but with updated information:

Bots in action Server: pussfoot.ovh:27015 [EU] Zombie Survival | AzBot | Custom Content

License

I, the author, have not decided on a license yet.

Though I won't take measures against illegitimate usage unless I have reasons to do so.

Things I'll accept:

  • Using AzBot on your own server even if it accepts donations.

  • Making derivatives (aka copies with changes) of AzBot or its derivatives as long as it's made clear at least in-game that they're AzBot derivatives.

    I suggest giving the derivative your own name (e.g. BobBot) and putting e.g. "BobBot is based on AzBot" in your MotD, GUI, HUD or automatic chat messages.

Things I won't like:

  • Selling AzBot or its derivatives (I don't plan to sell it either).

Prerequisites

  • Zombie Survival gamemode
  • Multiplayer (bots use player slots, local server is sufficient)
  • ULX (navmesh editor, !botmod and !human commands)
  • NavMeshes (see "How to create navmeshes" below)

Installation

  1. Make sure you have ULX and ULib installed.

  2. Download the d3bot-addon.zip and unpack it into your garrysmod/addons/ folder. Ensure you get the following file structure: garrysmod/addons/d3bot/lua/..., garrysmod/addons/d3bot/data/..., and so on. It's important that the folder inside addons is named d3bot (Don't name it D3bot or anything else), otherwise it will not work!

  3. Copy all navmeshes from the addon's path data/d3bot/navmesh/map/... to garrysmod/data/d3bot/navmesh/map/....

  4. Adjust the configuration in lua/d3bot/sv_config.lua as you wish.

  5. Done

Install from git

Instead of downloading the addon, you can clone the git repository directly into your addon folder. For this run the following git command inside your Garry's Mod addon directory:

git clone https://github.com/Dadido3/D3bot.git d3bot

Be sure to follow all the other necessary steps as described in #Installation.

How to test

  • Download and install zs_villagehouse.bsp.
  • Launch your server with Zombie Survival gamemode on zs_villagehouse. (Or Garry's Mod with a 32 slot local server, if you have installed D3bot to your Garry's Mod installation directly.)
  • If bots spawn and chase after you, everything is working as intended.
  • Type !bot viewmesh ^ to see the navmesh and !botmod -999 to kick all bots (both commands require ULX).

How to update

  • If you have made any changes to lua/d3bot/sv_config.lua, save it first.
  • Remove the d3bot folder out of your addons directory.
  • Install the newer version of D3bot.
  • Copy your saved lua/d3bot/sv_config.lua back. Or better: check for differences manually, as it's possible that the structure of the file changed.

Image of the navmesh editor

How to create navmeshes

  • Use the chat command !bot editmesh ^ to enter the mesh editor.

    • Use IN_RELOAD to cycle through the edit modes:
      • Create node: Place nodes with IN_ATTACK.
      • Link nodes: Link nodes by selecting the first then the second node, both with IN_ATTACK. Clear selection with IN_RELOAD.
      • Merge/Split/Extend nodes: This is a bit more complicated edit mode:
        • Merge: Select two nodes with IN_ATTACK to merge them.
        • Split: Select a node with IN_ATTACK and then use IN_ATTACK2 to split the node horizontally to your viewport at your aiming point.
        • Extend: Select a node with IN_ATTACK and then use IN_ATTACK2 to create a new node between your selected node and your aiming point. The node will be extended along the axis you are looking.
        • Use IN_RELOAD to clear the selection when you miss-click, otherwise it may happen that you accidentally merge two nodes.
        • You can quickly delete a node by selecting it two times with IN_ATTACK. (Basically it merges the node with itself, so it's a nice bug feature)
      • Reposition nodes: Select a node with IN_ATTACK and use IN_ATTACK to reposition it or IN_ATTACK2 to reposition it using only the aim axis (X, Y or Z). Clear selection with IN_RELOAD.
      • Resize nodes: Select a node with IN_ATTACK and use IN_ATTACK2 to resize it towards the aim axis (X or Y). Clear selection with IN_RELOAD.
      • Copy nodes: Select the nodes with IN_ATTACK and copy them with IN_ATTACK2 (All selected nodes are copied along the look direction to the target position, the first selected node is taken as the origin).
      • Set/Unset Last Parameter: Apply the last used parameter with IN_ATTACK, or remove the last used parameter with IN_ATTACK2.
      • Delete items: Delete a node or link with IN_ATTACK, clear node areas with IN_ATTACK2.
  • Use !bot setparam <id> <name> <value> (example: !bot setparam 1 jump disabled) to set or unset (by omitting <value>) special parameters:

    • Node parameters:
      • Jump = Disabled: Bots won't jump if located in this node.
      • Jump = Always: Bots will always jump if located in this node.
      • JumpTo = Disabled: Bots won't jump if heading towards this node.
      • JumpTo = Always: Bots will always jump if heading towards this node.
      • JumpTo = Close: Bots will jump if heading towards this node, but only if they are close enough.
      • Duck = Disabled: Bots won't crouch if located in this node.
      • Duck = Always: Bots will always crouch if located in this node.
      • DuckTo = Disabled: Bots won't crouch if heading towards this node.
      • DuckTo = Always: Bots will always crouch if heading towards this node.
      • DuckTo = Close: Bots will duck if heading towards this node, but only if they are close enough.
      • Climbing = Needed: Only bots with the ability to climb will path through this node. If the node is above the bot, they will look towards this node, jump, and climb towards the node.
      • Wall = Suicide: Bots suicide if trying to navigate towards this node higher than crouch-jumping height. Use this when respawn is the only way to get to that node.
      • Wall = Retarget: Same as Wall = Suicide but target is changed instead of suiciding. If no other targets are available, target remains the same. Use this for unreachable or low priority nodes.
      • See = Disabled: Bot does not approach target in straight line even if target is visible to him unless he is on the same node as the target. Use this on heightened nodes visible to, but not directly accessible from lower nodes.
      • Aim = Straight: Bot goes straight to the next node. Use this if bots need to get through small holes in the floor or walk on narrow paths without falling down.
      • AimTo = Straight: Bot goes straight to this node. Use this if bots need to get through narrow windows or small holes in the floor.
      • Cost: Add a penalty for paths using this node. Higher values makes it less likely for bots to use a path containing this node.
      • Condition = Unblocked: Bots will only use this node for pathfinding if there is no entity within a range of one source unit. Detected entities are func_breakable, prop_physics, prop_dynamic, prop_door_rotating, func_door, func_physbox_multiplayer, func_movelinear.
      • Condition = Blocked: Opposite of Unblocked. Use this on breakable pathways.
      • Condition = MapUnblocked: Same as Unblocked, but it excludes objects that could potentially be used in cades.
      • BlockBeforeWave: Bots will not use this node for pathfinding until the current wave is greater than or equal to the given value.
      • BlockAfterWave: Bots will not use this node for pathfinding if the current wave is greater than the given value.
      • DMGPerSecond: Apply damage to human players and entities located on this node. Can be disabled globally in sv_config.lua by setting D3bot.DisableNodeDamage = true.
      • BotMod: Once a non bot player passes this node, the given offset will be applied to the zombie count target. Useful to adjust the bot count on objective maps.
      • MaxHeight: Prevents bots with a crouching/ducking height larger than the provided value from passing through this node. Bots that are taller when standing will crouch automatically when they pass this node.
    • Link parameters:
      • Cost: Add a penalty for paths using this link. Higher values makes it less likely for bots to use a path containing this link.
      • Direction = Forward: Only allow paths from the first to the second element of the link. !bot setparam 1-2 Direction Forward will only allow the bot to move from 1 to 2.
      • Direction = Backward: Same as above, but backwards.
      • Pouncing = Needed: Only classes with the ability to pounce/leap can use this link.
      • CrabPouncing = Needed: Only (headcrab like) classes with the ability to pounce/leap can use this link.
      • Jumping = Needed: Only bots that can jump high enough can pass this link. The needed jump height is automatically determined from the height difference of the two nodes.
  • Use !bot reloadmesh to discard changes.

  • Use !bot savemesh to save the changes to garrysmod/data/d3bot/navmesh/map/<mapname>.txt.

  • Use !bot setmapparam <name> <value> (example: !bot setmapparam botmod 5) to set or unset (by omitting <value>) map specific parameters:

    • BotMod: Map specific zombie count formula offset.
    • ZPH: Zombie per Human ratio override.
    • ZPHM: Zombie per Human ratio maximum override. Max amount of the zombie count target. (BotMod can offset the target beyond this limit)
    • ZPHW: Zombies per (Human * Wave) override.
    • ZPM: Zombies per minute override.
    • ZPW: Zombies per wave override.
    • SPP: Survivor bots per total player (non bot) count.
    • SCA: Similar to BotMod, but for the survivor bot count. Survivors will only spawn pre round.
  • The same commands can be used from the console, just replace !bot with d3bot. (example: d3bot editmesh ^)

Notes

  • Restart the map after saving the mesh for the first time. Every map that has a navmesh at addon loading time is treated as a bot map (enabling the bot count director, !human command and survivor bonuses if configured). Move the navmesh file if that effect is not desired.
  • Use !botmod to change the desired zombies count. Examples: !botmod -100 for no bots, !botmod 100 for full server minus 2 slots for joining players, default is !botmod 0.
  • Navmeshes can be edited on the fly. Feel free to fix your meshes during testing.
  • This sketch might help: navmesh2.png
  • Having sized nodes helps locating (= "what node are you in?"). Nodes without an area use a small sphere instead.
  • Once a bot enters a node's area/sphere, he immediately moves towards the next node's position.
  • It is recommended to use sized nodes for rooms/areas and nodes without an area for doors. Each hallway, intersection and groove should have their own sized node. For ladders, two nodes without an area, one at bottom and one at top, suffice.
  • Locating works by proximity check. If a separate node lies behind a wall but closer to the middle of two distant linked nodes than them, bots may assume wrongly that they are located at the other node if they're in the middle. Avoid that by using a third sized node for the gap between the two linked nodes and re-link them.
  • Once a bot sees the target, he moves straight for it (see also: See = Disabled parameter).
  • All links are normally bidirectional (see also: Wall = Suicide parameter or Direction = Forward/Backward).
  • Bots can take any route with tendency towards the shortest.
  • Bots stubbornly move towards the next node unless they enter another node at time of path refresh (occurs roughly every second). Link wisely.
  • Bots may aim too perfect, the precision can be changed inside sv_config.lua with the option D3bot.FaceTargetOffshootFactor.

Bots in action

ToDo

Starting with highest public priority:

  • Making a config.txt for the static variables.
  • Refactoring, e.g. stable API, stable navmesh standard, consistency, bot metatable, gamemode independence by adding hooks usable by gamemodes or gamemode-based plugins, ...
  • Detailed linking e.g. required jump height, movement behavior (gap-jumping, ...), more link unlock conditions, ...
  • Map information in navmeshes using a singleton item type solely for storing parameters (e.g. zombie count multiplier).
  • Sloped nodes for more accurate locating of entities.
  • Triangle-based nodes using vertices with automatic adjacent linking.
  • Sub-paths in nodes for more accurate movement (no "wall-sliding").
  • Equipment upgrading behavior for survivor bots.
  • Caching of non-branching paths as a single node to optimize the pathfinding performance.

d3bot's People

Contributors

antizombie avatar antoncrusader avatar arthurgeron avatar azurblau avatar azureus avatar b0ls avatar bagellll avatar blueberryy avatar brubani avatar dadido3 avatar delstre avatar halamix2 avatar korespond avatar kurante2801 avatar mr-azona avatar mrcraigtunstall avatar orecros avatar wolfaloo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

d3bot's Issues

Survivor Bots

Bots-survivors die after a couple of seconds, then new ones appear and die in the same way.
In the settings is
D3bot.SurvivorsEnabled = True
help me!

D3Bot does not load in Linux

D3Bot apparently does not load on Linux.
I've it set up in addons, navmeshes in garrysmod/data/d3bot/navmesh/map folder and d3bot will not load.

Barricade aim for bots

Anyway to have bots target barricade props while in close proximity? In their current state, they just randomly swing around, hoping to hit the barricade. You can really cheese their system by placing thin props like a door in an archway and they will have a tough time hitting it to the point where some bots even suicide, thinking they are stuck on something. I attached a video demonstrating this.

Botaim.mp4

D3Bot uses too expensive calls every frame

Even on navmesh-optimized maps bots do too many calls each frame, causing the server's CPU to go down and overload, and AFAIK as well as the entire navmesh table is checked for proper nodes. Currently only one way to reduce the lag is either to optimize the navmesh (which is very limited at this point) or remove bots as at higher bot amounts the entire server starts lagging down.

Maybe reduce the number of calls required/do it per x frames, or cache the navmesh table to prevent going through 1000+ objects?

Deadly exploit (I assume)

So this guy managed to become boss classes as normal classes, did some thinking & console logging and it appears right before he did it this error popped up.

image

I think it's something to do with the forceclass command. That's the only logical explanation I can think of. I'm sure it 99.9% ties within that command somehow. Either way I hope eventually this gets fixed, cuz this exploit is really bad.

Update about invisible bots.

The bug is caused by the zombies that use CLASS.OverrideModel along with an alpha. For example, the Shadow Walker or Frigid Revenant in 2018 zs. This bug only happens when bots can be those zombies. To be honest, it happens with any zombie class that uses CLASS.OverrideModel. For some reason, the overridden model would just freeze in the air with a t-pose and the bot would be invisible. Not sure how this is fixable, i guess bots just can't be these zombie classes...

Support for Classic Mode, Pants Mode & Baby Mode.

AFAIK the bots get set at the gamemode's classes the first time they spawn, but then they reroll which breaks the entire point of these modes inside of Zombie Survival.

This should be pretty easy to fix, I may get around to experimenting things to resolve this issue.

Human players take damage for being on invalid spots

In supervisor.lua on line 147, the script does not check to see if the entity is a player so it damages the player instead for being at a position where the bot can't reach them at.

To fix it, replace this line in 146

if type(nodeOrNil.Params.DMGPerSecond) == "number" and nodeOrNil.Params.DMGPerSecond > 0 then

to

if not ent:IsPlayer() and type(nodeOrNil.Params.DMGPerSecond) == "number" and nodeOrNil.Params.DMGPerSecond > 0 then

How do I set up? Any tutorials?

I have been trying to find the addon you are supposed to find and install, but I have no idea where to install it. Could somebody help me by making a tutorial or even just giving me text installation? Thanks.

Suggestion

I've heard bot avatars are possible but I do not know if it is true, could it be possible to implement avatars for bots and also associate bot names with certain avatars? A silly example: Matt (uses a german shepherd profile avatar), Jake (uses a picture of Mario) etc?

Live editing of the navmesh from srcds

It would be convenient for clients to have live editing ability of the navmesh currently running on the server instance, so they can make adjustments on the fly and save updates, rather than going into a singleplayer/local server to edit a navmesh and then upload to the server.

Small lag when the bot is loading (initializing).

I haven't been able to find where this is happening.
Can you give me a hint if you know?
There is a small lag when the bot is loading (initializing).
Sorry if it's not clear, I'm using a translator)). If any clarification is needed, I can explain it more specifically.

cade aim for bots

it would be very helpful if you could make the bots aim better on the cade

Spawn

What to do to make bots spawn where they are closer to the player, and not away from the players. (By clicking on R, spavnyas away from the players)

Replace Toggle with Radial Menu when Navmeshing

While navmeshing, users will press R to toggle through a rotating list of options, however toggling between different options begins to become cumbersome, especially when one grows impatient and begin skipping what they were looking for by mistake and then have to cycle back around again, This issue could be eliminated by employing the use of a radial menu, besides being nicer to look at, it will make it easy to see and select the option users are looking for.

Thank you.

Bots respawning as humans/not counting as zombies

Hello, it happens after 2 map restarts or if there's only one player (human) on the server.
Is there a way i can limit in zombie survival (just in case you know) the amount of times a map is replayed?
And what can i do to fix that bots problem? I cant slay them (it says the bot is already dead) and it isn't selected as a starting zombie.
20210409223338_1

Ai not pathing/working

zombies will spawn sometimes but then they will sit still doing nothing even if i attack them, not sure what causes this but i was using the testing map in the README. will update if i find fix/ solution even if i edit code

CPU: AMD ryzen 5600

GPU: GTX 1660 SUPER

OS: Running on arch linux with proton 8.0-2

log

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159: attempt to index local 'revive' (a function value)

  1. P_CallZombieFunction - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159
  2. unknown - gamemodes/zombiesurvival/gamemode/sh_animations.lua:130

[d3bot] lua/includes/util.lua:228: attempt to index local 'object' (a function value)

  1. IsValid - lua/includes/util.lua:228
  2. UpdateBotCmdFunction - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handlers/undead_fallback.lua:30
    3. fn - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handle.lua:31
    4. unknown - lua/ulib/shared/hook.lua:109

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:120: attempt to index local 'revive' (a function value)

  1. CalcMainActivity - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:120
  2. _CalcMainActivity - gamemodes/zombiesurvival/gamemode/sh_animations.lua:55
    3. unknown - lua/wos/anim_extension/core/sh_holdtypes.lua:158

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159: attempt to index local 'revive' (a function value)

  1. P_CallZombieFunction - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159
  2. unknown - gamemodes/zombiesurvival/gamemode/sh_animations.lua:130

[d3bot] lua/includes/util.lua:228: attempt to index local 'object' (a function value)

  1. IsValid - lua/includes/util.lua:228
  2. UpdateBotCmdFunction - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handlers/undead_fallback.lua:30
    3. fn - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handle.lua:31
    4. unknown - lua/ulib/shared/hook.lua:109

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:120: attempt to index local 'revive' (a function value)

  1. CalcMainActivity - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:120
  2. _CalcMainActivity - gamemodes/zombiesurvival/gamemode/sh_animations.lua:55
    3. unknown - lua/wos/anim_extension/core/sh_holdtypes.lua:158

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159: attempt to index local 'revive' (a function value)

  1. P_CallZombieFunction - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159
  2. unknown - gamemodes/zombiesurvival/gamemode/sh_animations.lua:130

Allow bots to become bosses

I've set my zombiesurvival to select bots as possible bosses when there are no playerbosses available,
on gamemode/init.lua:1226 I've added the following lines:

    if #zombies == 0 then
        for _, ent in pairs(D3bot.GetBots()) do
            if ent:Team() == TEAM_UNDEAD and not ent:GetZombieClassTable().Boss then
                table.insert(zombies, ent)
            end
        end
    end

But I think somehow D3BOT is forcing zombies to not spawn as bosses, even if the gamemode has set them to be, what could I possibily change or did I do something wrong?

Thank you for your time :)

Bots occasionally lose their playermodels

On our server, after being killed several times, bots' playermodels will be displaced from their actual hitbox somewhere random, and the bot will appear invisible.

Strangely, this appears to be clientside, as several times different players will find different zombies invisible or certain players can't see zombies another player can see.

No bots spawn.

I played on avaliable maps at correct versions i did the command and bots didnt spawn it said that it changed but nothing changed no bots have spawned can this be fixed.

[question] sandbox

is there any bot like this that works for sandbox? there is like only one and it is very simple and looks abandonded

Make bots auto-spawn/pre-selected as zombies on round start?

Hi!

I'm testing your addon, and I LOVE it, but there's just one issue.
Bots work perfectly, but won't spawn on their own.
I'd like them to be pre-selected as zombies before wave 1, I've seen that there are configurations that set numbers of zombies per human, but that seems to change anything for me.

forceclass nodes (enhancement)

THERE NEEDS TO BE FORCECLASS NODES FOR THOSE TOUGH TO REACH SPOTS!

Add it when you have time d3, it would actually be very gamer 😎

node drawing distance

make a node drawing distance that you can configure for like big maps where you see a lot of nodes

Boss class reroll like zombie class reroll

Add support for boss-class rerolls when the gamemode's escape stage is ESCAPESTAGE_BOSS, would have to blacklist some boss classes like Shade since the bots don't know how to use them.

Bots getting stuck while trying to attack a deployable

If the bots can target deployables then some stupid stuff can happen.

For example, on gm_construct, if you cade in the secret room and place a turret on the wall, the bots would go to the room above that and try to attack it. Easiest fix is to just make them target nothing.

Bots dying randomly

When I spawn bots in, the human bots always kill themselves after short, random time periods and go zombie. They don't stop though, and the zombies kill themselves too and it lags my server hard. I've tried redeeming them, but they suicide again. Is there any way to fix this?

Human bots giving weapons.

The humanbots can get weapons. Using Point System or Wave... is possible make it???
e.g.
Point System: >>
If get 30 points can buy a shotgun or pistol in Tier 2. (Melee if enabled)
Wave System: >>
If is Wave 2 can buy Tier 2...

Cannot buy Tier 5/6(Weapons with Stock)

Just fix UseConsoleBots... Lol

It's still broken, all humans become zombies after a map change (only 1 player is human). This happens every map change... When is this gonna be fixed lol

BotUpdateDelay

"[d3bot] addons/d3bot/lua/d3bot/sv_zs_bot_handler/supervisor.lua:142: attempt to perform arithmetic on field 'BotUpdateDelay' (a nil value)

  1. SupervisorThinkFunction - addons/d3bot/lua/d3bot/sv_zs_bot_handler/supervisor.lua:142
  2. fn - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handle.lua:66
    3. unknown - lua/ulib/shared/hook.lua:109 (x428)"

Just booted up the game with the latest version of D3bot and this happens nonstop. Not sure if a typo was made there

Disable anti-skycade

Hey, i'm looking to disable the anti-skycade function. It's clearly in D3bot as removing the folder removed it, but i can't find an option in the files

Flesh creepers and nest placements

Would it be possible to have bot flesh creepers intelligently place nests, so that games with only bot zombies aren't a snooze fest?

On many mid-size to large maps, the bots take a long time to navigate their way to the humans.
It's best to make bots self-reliant when it comes to needing a closer path to strike.

Consider bot creepers to place nests with the following rules:

  • Out of human sight.
  • The closest path to the humans.
  • The closest path to a sigil.

If there's more rules to consider please add them.

Make D3bot more optimized

when there are a lot of bots on my server the server starts lagging and it also starts lagging when there are a lot of bots inside each other

NOX prop recipe duping

From the d3bot "!extraprop" command, looks like all the props converted into usable items get created twice on map load, any items that get spawned with the "!spawnprop" command don't get affected by it.

Zombie bots passing through barricades (seemingly not having collision)

For some odd reason, some bots will simply phase through barricades, seemingly not having any collisions. It feels very game-breaking and I have no idea how to fix it. I also don't know what causes it and I haven't seen any errors pop up. It just happens at random intervals but happens often.

Is it related to navmeshes? Or maybe conflicting addons? When I play ZS either solo or with a friend I usually disable all other addons just leaving ULX, ULib, ZS ULX Commands and a few others that don't alter the game at all

I haven't seen anyone mentioning this issue here so I decided to do it myself

Zombie Sprint

why do zombies sprint so dam fast
-- Game feeling too easy? Just change these values!
GM.ZombieSpeedMultiplier = math.Round(CreateConVar("zs_zombiespeedmultiplier", "1", FCVAR_REPLICATED + FCVAR_ARCHIVE + FCVAR_NOTIFY, "Zombie running speed will be scaled by this value."):GetFloat(), 2)
cvars.AddChangeCallback("zs_zombiespeedmultiplier", function(cvar, oldvalue, newvalue)
GAMEMODE.ZombieSpeedMultiplier = math.ceil(100 * (tonumber(newvalue) or 1)) * 0.01
end)
i try to edit this code it docent work any idea why

Add probability for bot to miss a hit

Hi,

People comment a lot how bots have a "aimbot" type of aim, if you're in a certain range, doesn't matter what you do they will hit you.. If we could set like a chance, like 1 in 4 chances of missing ( a player, not props) a hit it would feel way more organic to play against bots.

Mod kept making errors so I re-installed it and I keep getting errors again.

D3bot gives me these 2 errors, and they keep increasing.

[d3bot] lua/includes/util.lua:228: attempt to index local 'object' (a function value)
1. IsValid - lua/includes/util.lua:228
2. UpdateBotCmdFunction - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handlers/undead_crow.lua:18
3. fn - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handle.lua:31
4. unknown - lua/ulib/shared/hook.lua:109

[d3bot] lua/includes/util.lua:228: attempt to index local 'object' (a function value)
1. IsValid - lua/includes/util.lua:228
2. UpdateBotCmdFunction - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handlers/undead_fallback.lua:30
3. fn - addons/d3bot/lua/d3bot/sv_zs_bot_handler/handle.lua:31
4. unknown - lua/ulib/shared/hook.lua:109

Zombie Survival Gamemode also gives me these 2 errors.

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:120: attempt to index local 'revive' (a function value)
1. CalcMainActivity - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:120
2. unknown - gamemodes/zombiesurvival/gamemode/sh_animations.lua:55

[Zombie Survival] gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159: attempt to index local 'revive' (a function value)
1. P_CallZombieFunction - gamemodes/zombiesurvival/gamemode/zombieclasses/zombie.lua:159
2. unknown - gamemodes/zombiesurvival/gamemode/sh_animations.lua:130

Did I do something wrong? I've tried on zs_villagehouse and other maps but the errors won't stop showing.

Make bots target sigils

Bots mostly ignore sigils and move for barricades but sigils must be the priority because of the resist they get by breaking them

Bots

How do I teach bots to talk? To take players ' messages from the chat room and combine some of the messages

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.