{"id":25917022,"url":"https://github.com/ate47/t8-atian-menu","last_synced_at":"2026-02-12T05:04:21.403Z","repository":{"id":158370005,"uuid":"628735527","full_name":"ate47/t8-atian-menu","owner":"ate47","description":"my mod menu for Black Ops 4/ColdWar with my notes for Call of Duty","archived":false,"fork":false,"pushed_at":"2025-05-15T19:38:49.000Z","size":2152,"stargazers_count":29,"open_issues_count":9,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-28T00:58:50.970Z","etag":null,"topics":["blackops4","blackout","callofduty","cold-war","gsc-script","multiplayer","ps4","zombies"],"latest_commit_sha":null,"homepage":"https://ate47.github.io/t8-atian-menu/","language":"GSC","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ate47.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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}},"created_at":"2023-04-16T21:11:52.000Z","updated_at":"2025-08-02T22:04:42.000Z","dependencies_parsed_at":"2024-01-14T22:42:02.435Z","dependency_job_id":"89c3b870-32dc-498d-9d44-68e3b6aec129","html_url":"https://github.com/ate47/t8-atian-menu","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ate47/t8-atian-menu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ate47%2Ft8-atian-menu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ate47%2Ft8-atian-menu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ate47%2Ft8-atian-menu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ate47%2Ft8-atian-menu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ate47","download_url":"https://codeload.github.com/ate47/t8-atian-menu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ate47%2Ft8-atian-menu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29359360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T01:03:07.613Z","status":"online","status_checked_at":"2026-02-12T02:00:06.911Z","response_time":55,"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":["blackops4","blackout","callofduty","cold-war","gsc-script","multiplayer","ps4","zombies"],"created_at":"2025-03-03T13:19:31.168Z","updated_at":"2026-02-12T05:04:21.386Z","avatar_url":"https://github.com/ate47.png","language":"GSC","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Atian menu\n\n[![YouTube](https://img.shields.io/badge/ate48-%23FF0000.svg?style=for-the-badge\u0026logo=YouTube\u0026logoColor=white)](https://www.youtube.com/user/wilate48) [![Discord](https://img.shields.io/badge/ATESab-%237289DA.svg?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.gg/wNH73Sg) [![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/ate47)\n\n[![Compile scripts](https://github.com/ate47/t8-atian-menu/actions/workflows/compile.yml/badge.svg?branch=master)](https://github.com/ate47/t8-atian-menu/actions/workflows/compile.yml)\n\nMod menu and notes for T8 (Black Ops 4) and T9/VM38 (Black Ops Cold War). IF YOU HAVE ANY ISSUE READ THE [FAQ](#faq) FIRST.\n\nUsing the compiler: https://github.com/shiversoftdev/t7-compiler (Some required features might not be implemented yet)\n\nUsing the sources: https://github.com/ate47/bo4-source\n\n- [Atian menu](#atian-menu)\n  - [FAQ](#faq)\n  - [Downloads](#downloads)\n  - [Posts](#posts)\n  - [Config](#config)\n  - [Features](#features)\n  - [Dev tools](#dev-tools)\n    - [Symbols](#symbols)\n    - [Color](#color)\n    - [Hash lookup](#hash-lookup)\n    - [Functions](#functions)\n    - [Create menu](#create-menu)\n    - [Key manager](#key-manager)\n\n## FAQ\n\n- `No test task to run found` -\u003e You need to create a `.vscode/tasks.json` file, I do not ship it with the menu by default, you can copy the default one in the `default` directory, the .\n- `something LAZYLINK` -\u003e This menu is using experimental features that might not be implemented in your compiler, they are probably implemented my version of the [t8-compiler repo](https://github.com/ate47/t7-compiler) in the latest branch, you need to compile the compiler yourself. (I won't help on how to do it)\n- `How to change the default map in blackout` -\u003e You Can read the README or you can simply change it in the [`scripts/config/blackout.gsc`](scripts/config/blackout.gsc) file.\n- Error `1670707254` -\u003e Try to redownload the menu completly, otherwise you can create an issue [here](https://github.com/ate47/t8-atian-menu/issues/new?assignees=\u0026labels=bug\u0026projects=\u0026template=bug.yml).\n\n## Downloads\n\nHere precompiled versions of my menu with predefined configs. You have to find how to inject them by yourself.\n\n- [Black Ops 4 - PC](https://github.com/ate47/t8-atian-menu/releases/latest/download/BlackOps4_atianmenu_pc.gscc)\n- [Black Ops 4 - PS4 1.26](https://github.com/ate47/t8-atian-menu/releases/latest/download/BlackOps4_atianmenu_ps4.gscc)\n- [Black Ops Cold War - PC VM38](https://github.com/ate47/t8-atian-menu/releases/latest/download/BlackOpsColdWar_atianmenu_pc.gscc)\n\n## Posts\n\nPosts or videos I've made using these scripts, my notes or the sources:\n\n- [Reddit - Stats for the care packages](https://www.reddit.com/r/Blackops4/comments/nhonhu/if_you_had_ever_wondered_the_probabilities_in_the/)\n- [Blackout Quaknarok](https://www.youtube.com/watch?v=XphuwHYtSjk)\n- [GSC Weapon tool](https://www.youtube.com/watch?v=hPBZrQQ7u4c)\n- [Some changes of the Black Ops 4 Fandom](https://callofduty.fandom.com/wiki/Cut_Content/Call_of_Duty:_Black_Ops_4)\n- [t8-custom-ee](https://github.com/ate47/t8-custom-ee) - A tool to enable EEs in custom mutations, offline or casual\n- [atian-cod-tools](https://github.com/ate47/atian-cod-tools) - Some tools related to Call of Duty (with [bo4-source](https://github.com/ate47/bo4-source))\n\n## Config\n\n*No available in the precompiled builds*\n\nIf you don't want to use the menu and only use particular functions from the mod, you can set the value of `no_menu` to `true` in [scripts/config/global.gsc](scripts/config/global.gsc).\n\nIf the config function is empty, nothing will happen in game.\n\n```c++\nself.no_menu = true;\n```\n\nYou can config the mod keys in the [`scripts/config/keys.gsc`](scripts/config/keys.gsc) file, by default you open it with ADS+Melee.\n\nYou can config the mod menu in the [`scripts/config`](scripts/config) directory, current tools:\n\n- General\n  - Force character skin\n  - Force weapon camo\n  - Enable options at startup\n  - Set random skin and camo on bots\n- Blackout\n  - Force mode\n  - Force map\n  - Spawn vehicles\n  - Set the zombies spawner types (brutus, avogadro or zombies)\n  - Spawn the Icarus (config)\n  - Quaknarok\n  - Set the health of the avogadro\n  - Spawn waterballons\n  - Spawn snowballs\n  - Zombies eyes\n  - Give items\n- Multiplayer\n  - set draft time\n  - Give killstreaks\n- Zombies\n  - Allow EEs in custom mutation\n  - Custom mutation like config to setup your own zombies\n  - Set XP multiplier\n  - Quaknarok\n  - Open narrative rooms\n  - Give perks\n  - Give powerups\n\n(and others)\n\n## Features\n\nThis tool can be paired with the [t8-custom-ee mod (PC)](https://github.com/ate47/t8-custom-ee/tree/main) to run EE in casual or offline, you don't need it for custom mutations.\n\n- Tools\n  - 3rd person\n  - max ammo\n  - fly mode (+config for the speeds)\n  - no damage\n  - Kill all zombies\n  - max points (Zombies)\n  - max revive (Zombies)\n  - set zombies' speed (Zombies)\n  - set round (Zombies)\n  - ignore me (Zombies)\n  - End contracts (Zombies)\n  - Set XP multiplier (Zombies)\n- Give weapons\n  - All base weapons + upgraded in zombies\n  - Killstreaks\n  - Wunderwaffe (BO3) (Zombies/Tag der Totten)\n  - Tempest/Minigun (BO3) (Multiplayer)\n  - Hell retriver, Waterballoons and Snowballs (Blackout)\n  - Spectre's Blade (Blackout)\n  - Prototypes and remnant from BO3\n- Gun tool ([Demo](https://www.youtube.com/watch?v=hPBZrQQ7u4c))\n  - Drop weapon\n  - TP gun\n  - Rocket man\n  - Rocket gun\n  - Armageddon\n  - A10 rocket/minigun, Mantis rocket, Hellstorm rocket, Dart (MP)\n  - Elephant riders (IX)\n  - Gegenees shot (AE)\n  - Darts (BoTD)\n  - Nova shot (AO)\n- Teleport tool\n  - Waypoint tp (Blackout) : TP using the map (need fix for the main map)\n  - tp to hot location in your map (wip, not all the maps are available)\n- Loading\n  - set map\n  - set gametype\n- Customization\n  - set characters\n  - Set character skin (+unreleased skin)\n  - set skin palette\n  - set skin warpaint\n  - set skin decals\n  - Set weapon camo\n  - Set weapon reticle\n  - Set weapon mastercraft\n- Internal tools\n  - GSC system list (+ignored)\n  - Loaded EEs list (Zombies)\n  - Basic hash_lookup method\n  - Entity tp\n\n## Dev tools\n\nMy notes are in the [notes](notes/) directory.\n\nYou also have a doc about the game itself in the [doc](doc/) directory.\n\nSome features might require some modification on the t8-compiler, you can get them [here](https://github.com/ate47/t7-compiler) (search the latest branch).\n\n### Symbols\n\nYou can config the compilation using these options:\n\n- `-DATIAN_MENU_LOOKUP_BIG` : Big lookup structure in array explorer\n- `-DATIAN_MENU_DEV` : Run my dev configs\n\n### Color\n\nUsing `iprintln`: `^0`: red, `^1`: cyan, but only for the whole line.\n\nUsing `iprintlnbold`:\n- `^0` black (hide)\n- `^1` red\n- `^2` green\n- `^3` yellow\n- `^4` blue\n- `^5` cyan\n- `^6` pink\n- `^7` bright yellow\n\n### Hash lookup\n\nThe `hash_lookup(hash_str)` function can be used to look for unhashed values, to add a string to this function,\nadd it to the [`lookup/lookup.txt`](lookup/lookup.txt) file and run the [`build_lookup.ps1`](shell_scripts/build_lookup.ps1) script. The array explorer tool is using the [`lookup/lookup_structs.txt`](lookup/lookup_structs.txt) file to search for structure elements.\n\nIf the lookup is too big, the game won't start.\n\nYou can explore CSV files from the game using the method `get_known_csv_files()` in [enums.gsc](scripts/enums/enums.gsc).\n\n### Functions\n\n```c++\n// object type of obj\nget_object_type(obj);\n// iprintbold msg if the dev mod is activated\n\u003cplayer\u003e debugln(msg);\n// test if the dev mod\nis_dev_mode();\n// test if we are in blackout\nis_warzone();\n// test if we are in zombies\nis_zombies();\n// test if we are in multiplayer\nis_multiplayer();\n// dynamic version of #ifdef _CSC\nis_client();\n// log message using compiler::nprintln or using the menu log system.\nam_log(str);\n```\n\n### Create menu\n\nThe menu descriptions are usually put in the [`scripts/core_common/ui/menu_items.gsc`](scripts/core_common/ui/menu_items.gsc) script.\n\nTo register a menu, you can call this method:\n\n```c++\n\u003cplayer\u003e add_menu(menu_id, menu_name, parent_id, create_menu = false, menuenterfunc = undefined);\n```\n\n- ``menu_id`` is the id of your menu.\n- ``menu_name`` is the name of your menu.\n- ``parent_id`` is the parent of your menu, ie: the menu openned if you go the previous menu in your menu. Can be `\"\"` for no parent.\n- ``create_menu`` is creating the menu link from the parent to the menu\n- ``menuenterfunc`` is the *optional* function to when the used is entering your menu, it will call it with self set to the player and the menu as an argument.\n\nYou can then add elements to your menu using\n\n```c++\n\u003cplayer\u003e add_menu_item(menu_id, item_name, action, actiondata = undefined, actiondata2 = undefined, actiondata3 = undefined, actiondata4 = undefined, actiondata5 = undefined);\n\u003cplayer\u003e add_menu_item_menuswitch(menu_id, item_name, new_menu_id);\n\u003cplayer\u003e add_menu_item_modswitch(menu_id, item_name, mod_name);\n```\n\n- `add_menu_item`, add an item with the name `item_name` in the menu `menu_id`, the action is a function, it will be called with the player as self, the item as a 1st parameter and then the actiondataX as 2nd to 6th parameter.\n- `add_menu_item_menuswitch`, add an item with the name `item_name` in the menu `menu_id`, it will open the menu `new_menu_id`\n- `add_menu_item_modswitch`, add an item with the name `item_name` in the menu `menu_id`, it will toggle the mod `mod_name` and set the menu item to activated by putting on/off on it\n\nYou can use this function to check if a mod is activated:\n\n```c++\n\u003cplayer\u003e is_mod_activated(mod_name);\n```\n\n### Key manager\n\nThe key manager is in the [`scripts/core_common/key_mgr.gsc`](scripts/core_common/key_mgr.gsc) script.\n\nYou can register a key binding in the `key_mgr_init()` function, the syntax is:\n\n```c++\n\u003cplayer\u003e key_mgr_compile_key(hash key_name, undefined|string config, array\u003cstring\u003e|string default_config);\n```\n\n- `key_name` is the hashed name of the key\n- `config` is the config from the user, it follows the same syntax as explained in [scripts/keyconfig.gsc](scripts/keyconfig.gsc).\n- `default_config` is the default config, it can be an array or a single key\n\nYou can then use the key as you want using these 2 functions:\n\n```c++\n// get the key config for this player (work with console controller)\n\u003cplayer\u003e key_mgr_get_key_str(hash key_name) -\u003e string;\n\n// test if a key is pressed and if asked, wait until its release\n\u003cplayer\u003e key_mgr_has_key_pressed(hash key_name, bool wait_release = false) -\u003e bool;\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fate47%2Ft8-atian-menu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fate47%2Ft8-atian-menu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fate47%2Ft8-atian-menu/lists"}