{"id":50558503,"url":"https://github.com/marceloeatworld/cs16","last_synced_at":"2026-06-04T09:30:52.185Z","repository":{"id":353991486,"uuid":"1208252599","full_name":"marceloeatworld/cs16","owner":"marceloeatworld","description":"CS 1.6 Docker server: ReGameDLL + Metamod + AMX Mod X, smart CZ bots, 42 maps, RTV, admin FX menu, self-contained build, Coolify-ready","archived":false,"fork":false,"pushed_at":"2026-04-26T15:25:05.000Z","size":21286,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T17:20:01.794Z","etag":null,"topics":["amxmodx","bots","coolify","counter-strike","counter-strike-1-6","cs16","cz-bots","dedicated-server","docker","docker-compose","game-server","hlds","metamod","regamedll","self-hosted"],"latest_commit_sha":null,"homepage":"","language":"Pawn","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marceloeatworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-12T02:56:54.000Z","updated_at":"2026-04-26T15:25:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/marceloeatworld/cs16","commit_stats":null,"previous_names":["marceloeatworld/cs16"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/marceloeatworld/cs16","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marceloeatworld%2Fcs16","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marceloeatworld%2Fcs16/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marceloeatworld%2Fcs16/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marceloeatworld%2Fcs16/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marceloeatworld","download_url":"https://codeload.github.com/marceloeatworld/cs16/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marceloeatworld%2Fcs16/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33899697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amxmodx","bots","coolify","counter-strike","counter-strike-1-6","cs16","cz-bots","dedicated-server","docker","docker-compose","game-server","hlds","metamod","regamedll","self-hosted"],"created_at":"2026-06-04T09:30:51.319Z","updated_at":"2026-06-04T09:30:52.177Z","avatar_url":"https://github.com/marceloeatworld.png","language":"Pawn","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CS 1.6 Fun Server\n\nA fully configured Counter-Strike 1.6 dedicated server running on Docker, deployable to Coolify or a bare host in one command.\n\n## Features\n\n- **Full money** ($16,000) + free kevlar+helmet every round\n- **Spawn weapon packs** — players pick once with `/packs` or key `1`, then auto-equip every spawn\n- **Money refill after buys** — buying weapons keeps topping back up to $16,000\n- **125 HP** — slight boost, rifle headshots still kill\n- **Smart CZ bots** blocked from AWP/Scout/AUG/SG552/Shield at the game-DLL layer\n- **Bots always present** — server never looks empty to players browsing the list\n- **Weakened Expert template** — HARD brain (smart pathing, grenades, teamwork) with forgiving aim\n- **Weapon restrictions** — tactical shield and auto snipers (G3SG1/SG550) banned for everyone, AWP limited to 3 per team\n- **No-reload pistols + shotguns** — clip auto-refills on every shot\n- **Infinite reserve for rifles/SMGs** — reload still needed, backpack never empty\n- **Admin revive** — `/revive` respawns dead T/CT players without restarting the round\n- **Hourly refresh** — maps rotate/vote every 60 minutes to keep matches clean\n- **Shared-host defaults** — 500 FPS/ticrate, lighter rates/logs, Docker CPU/RAM guardrails\n- **42 maps** — official + custom (fy, aim, awp, rats, deathrun, knife arena)\n- **Map voting** — `/rtv` rock-the-vote + `/de /cs /fy /aim /awp /rats /ka /dr` group votes\n- **Admin menu** — `/admin` + chat shortcuts for kick/ban/slap/map/restart/bot\n- **Live FX** — `/night`, `/day`, `/dusk`, `/dark`, `/grav`, `/speed`, `/ff`\n- **Buy anywhere** + unlimited buytime + alltalk + no friendly fire\n- **VAC secured** + Steam authentication\n\n## Stack\n\n| Component | Version |\n|---|---|\n| HLDS | Build 10211 (Oct 2024) |\n| ReGameDLL_CS | 5.28.0.756 |\n| Metamod | 1.21.1-am |\n| AMX Mod X | 1.10.0 build 5474 |\n| ReChecker | 2.7 |\n| Base image | `steamcmd/steamcmd:latest` |\n\n## Quick Start\n\n```bash\ngit clone https://github.com/marceloeatworld/cs16.git\ncd cs16\ncp env.example .env          # edit values as needed (RCON_PASSWORD, CF_*, TZ)\ndocker compose build\ndocker compose up -d\ndocker compose logs -f\n```\n\nServer starts on **UDP 27015**. Connect from CS 1.6: `connect YOUR_IP:27015`.\n\n## RCON Password\n\n**Nothing is hardcoded.** The container picks the password in this order:\n\n1. `RCON_PASSWORD` environment variable (recommended — set it in Coolify or `.env`)\n2. Otherwise a random 24-character password is generated at first start and printed once in the logs:\n\n```\n[entrypoint] No RCON_PASSWORD set -- generated: \u003cRANDOM_24_CHARS\u003e\n```\n\nGrab it with `docker compose logs cs16 | grep \"generated\"`. The `server.cfg` in Git never contains a real password.\n\n## Project Structure\n\n```\n.\n├── Dockerfile               # SteamCMD + ReGameDLL + Metamod + AMX + plugin build\n├── docker-compose.yml       # network_mode: host, env vars, volume mounts\n├── entrypoint.sh            # Config sync + RCON password injection + hlds_run\n├── admin-setup.sh           # Interactive admin-add helper\n├── ai_commentator.py        # Optional Cloudflare Workers AI sidecar\n├── configs/\n│   ├── server.cfg           # Gameplay, rates, plugin cvars, bot rules\n│   ├── game_init.cfg        # bot_enable 1 (read once at DLL init)\n│   ├── plugins.ini          # AMX Mod X plugin load list\n│   ├── users.ini            # Admin list (empty in Git — add yours)\n│   ├── maps.ini              # Admin map menu\n│   ├── mapcycle.txt         # Map rotation\n│   ├── metamod-plugins.ini  # Metamod plugin load list\n│   ├── scrollmsg.ini        # Rotating banner messages\n│   ├── reunion.cfg          # Steam / non-Steam auth\n│   └── BotProfile.db        # CZ bot profiles (funny names + weakened Expert)\n├── scripting/               # Custom AMX Mod X plugins (.sma source)\n│   ├── admin_menu.sma       # Admin + FX menus + chat shortcuts\n│   ├── full_equip.sma       # Money, armor, HP, ammo refill\n│   ├── loadout_packs.sma    # Player spawn packs and quick weapon commands\n│   ├── weapon_limits.sma    # AWP limit, shield/auto-sniper ban, bot safety net\n│   ├── fun_extras.sma       # /rtv, /help, welcome\n│   ├── map_groups.sma       # Grouped map voting\n│   └── ai_commentator.sma   # Game event feed for the AI sidecar\n└── data/\n    ├── maps/                # Drop custom .bsp + .nav + .wad here\n    ├── models/              # Custom player/weapon models\n    ├── gfx/                 # Custom env textures\n    └── logs/                # Persistent server logs\n```\n\n## Player Commands\n\n| Command | Description |\n|---|---|\n| `/help` | List all commands |\n| `/packs` `/guns` `/loadout` | Choose a spawn weapon pack |\n| `/rifle` `/awppack` `/rush` `/shotgun` `/heavy` `/pistol` `/random` | Pick a pack directly |\n| `/nopack` | Disable automatic spawn pack for yourself |\n| `/rtv` | Rock the vote (60% threshold) |\n| `/maps` | Show map groups |\n| `/de /cs /fy /aim /awp /rats /ka /dr` | Start a 3-map vote in that group |\n| `/nextmap` | Show next map |\n| `/timeleft` | Show time remaining |\n\n## Admin Commands\n\n| Command | Description |\n|---|---|\n| `/admin` | Show all admin commands |\n| `/kick` `/ban` `/slap` `/team` | Player management |\n| `/map` `/votemap` | Change map / vote map |\n| `/restrict` | Weapon restriction menu |\n| `/restart` | Restart round |\n| `/revive` | Respawn a dead player |\n| `/bot` | Bot settings menu (quota, add, kick, status) |\n| `/info` | Server info |\n| `/fx` | Server FX submenu |\n| `/night` `/day` `/dusk` `/dark` | Instant map lighting change |\n| `/grav` | Gravity preset menu |\n| `/speed` | Movement speed preset menu |\n| `/ff` | Toggle friendly fire |\n\n## Bot Configuration\n\nBots are native CZ bots shipped with ReGameDLL. No custom bot plugin.\n\n| Cvar | Value | Notes |\n|---|---|---|\n| `bot_enable` | `1` | **Must live in `game_init.cfg`** — read once at DLL init |\n| `bot_quota` | `8` | Total slots filled by humans + bots |\n| `bot_quota_mode` | `fill` | Bots get kicked as humans connect |\n| `bot_difficulty` | `2` | 0 easy / 1 normal / 2 hard / 3 expert |\n| `bot_join_after_player` | `0` | Bots join even at 0 humans |\n| `bot_allow_snipers` | `0` | Blocks AWP, Scout, G3SG1, SG550 for bots at the buy AI |\n| `bot_allow_shield` | `0` | Blocks tactical shield for bots (both T and CT) |\n\nThe `Expert` template in `BotProfile.db` is tuned down:\n`Skill = 25`, `Aggression = 40`, `ReactionTime = 0.95`, `AttackDelay = 0.55`, `Difficulty = HARD`.\nBots still play smart but you can actually win duels.\n\nBots require a `.nav` file on every map they play. The Dockerfile pulls 20+ official `.nav` files from `phamvanhiepvn/cs` at build time.\n\n## Weapons \u0026 Ammo\n\nHandled by `full_equip.sma` on every `CurWeapon`/`Money` event:\n\n| Weapon class | Clip | Reserve |\n|---|---|---|\n| Pistols (Glock, USP, Deagle, P228, FiveSeven, Elite) | Infinite, no reload | — |\n| Shotguns (M3, XM1014) | Infinite, no reload | — |\n| Rifles (AK, M4A1, AUG, SG552, Famas, Galil) | Reload normally | 90, always full |\n| SMGs (MP5, P90, UMP45, TMP, MAC10) | Reload normally | 120, always full |\n| Snipers (Scout, AWP, G3SG1, SG550) | Reload normally | 30, always full |\n| M249 | Reload normally | 200, always full |\n\n**Banned:** tactical shield (everyone), G3SG1 + SG550 auto snipers (everyone), AWP / Scout / AUG / SG552 for bots only. Humans are limited to 3 AWPs per team.\n\n## Spawn Packs\n\nHandled by `loadout_packs.sma`. On the first human spawn, a simple number menu appears:\n\n| Key | Pack |\n|---|---|\n| `1` | Rifle: AK for T, M4A1 for CT, Deagle, grenades |\n| `2` | AWP, Deagle, grenades |\n| `3` | P90 rush, Deagle, grenades |\n| `4` | XM1014 shotgun, Deagle, grenades |\n| `5` | M249 heavy, Deagle, grenades |\n| `6` | Deagle pistol pack, grenades |\n| `7` | Random fun pack every spawn |\n| `8` | Disable auto pack |\n\nThe selected pack is re-applied each spawn. `/packs` opens the menu again. The AWP pack respects `wl_awp_per_team`; if the team is already at the limit, the player gets the rifle pack for that spawn.\n\n## Adding Admins\n\nUse the interactive script:\n```bash\n./admin-setup.sh\n```\n\nOr append to `configs/users.ini` by hand:\n```\n\"STEAM_0:1:XXXXXXX\" \"\" \"abcdefghijklmnopqrstu\" \"ce\"\n```\n\n## Adding Maps\n\nDrop `.bsp` files into `data/maps/`. The entrypoint copies them into `cstrike/maps/` on every container start. Drop `.nav` (bot nav), `.wad` (textures), `.res` (resources) alongside if they exist.\n\nFor bots to play a custom map, the matching `.nav` file must be present — otherwise the bot buy/move system silently ignores that map.\n\n## AI Commentator (optional)\n\nLive game commentary through Cloudflare Workers AI (Gemma 4). Set `CF_ACCOUNT_ID` and `CF_API_TOKEN` (see `env.example`) and the Python sidecar starts automatically. Leave them blank to skip.\n\n## Environment Variables\n\nAll runtime-configurable values live in `env.example`. Copy it to `.env` for local compose, or paste the values into Coolify's Environment Variables tab.\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `RCON_PASSWORD` | auto-generated 24-char | Remote admin console password |\n| `CF_ACCOUNT_ID` | (unset) | Cloudflare account id for the AI commentator |\n| `CF_API_TOKEN` | (unset) | Cloudflare Workers AI token |\n| `TZ` | `Europe/Lisbon` | Container timezone (any tzdata name) |\n| `CS16_CPUS` | `2.0` | Docker CPU limit so HLDS cannot starve other services |\n| `CS16_MEMORY` | `1g` | Docker memory limit for the CS container |\n\n## Coolify Deployment\n\n1. Push this repo to Git.\n2. Coolify -\u003e New Resource -\u003e Docker Compose.\n3. Advanced -\u003e enable **Preserve Repository During Deployment** (required so the bind mounts resolve — see `coollabsio/coolify#1996`).\n4. Environment Variables tab -\u003e paste values from `env.example`:\n   - `RCON_PASSWORD` — strongly recommended\n   - `CF_ACCOUNT_ID`, `CF_API_TOKEN` — optional, for the AI commentator\n   - `TZ` — optional, defaults to Europe/Lisbon\n5. Do **not** assign a domain. This is raw UDP, not HTTP.\n6. Hetzner firewall -\u003e allow inbound UDP 27015 + TCP 27015.\n7. Deploy.\n\nConfigs are baked into the image as a fallback, so the server still starts if the mount is empty.\n\n## Known Issues\n\n- `GameConfig CRC mismatch` warnings on startup — harmless, AMX 1.10 falls back to its bundled signatures for HLDS 10211.\n- `pluginmenu.amxx: Menus Front-End not loaded` — expected, the stock front-end is replaced by `admin_menu.amxx`.\n- AZERTY keyboards: menu number keys may not reach the game reliably. Use the chat shortcuts (`/kick`, `/ban`, ...) which work on any layout.\n- `mp_infinite_ammo 1` in ReGameDLL actually gives **infinite clip** on rifles (undocumented engine behavior). The server keeps it at `0` and `full_equip.sma` handles reserve refill instead.\n- Bot weapon restrictions live in `server.cfg` via `bot_allow_*` cvars — Ham and fakemeta hooks run too late in the bot buy pipeline.\n\n## License\n\nServer configuration and custom plugins are released under the MIT License — see the file headers.\nCS 1.6, HLDS, and related assets are property of Valve Corporation.\nAMX Mod X is licensed under GPL v2. ReGameDLL_CS is licensed under GPL v3.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarceloeatworld%2Fcs16","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarceloeatworld%2Fcs16","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarceloeatworld%2Fcs16/lists"}