{"id":34751707,"url":"https://github.com/gskeleton/watchdogs","last_synced_at":"2026-01-25T18:14:03.063Z","repository":{"id":319454807,"uuid":"1075690191","full_name":"gskeleton/watchdogs","owner":"gskeleton","description":"Lightweight Tools for open.mp/SA-MP [web: https://watchdogs.space.z.ai/]","archived":false,"fork":false,"pushed_at":"2026-01-18T16:00:23.000Z","size":10793,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T17:28:06.929Z","etag":null,"topics":["android","compiler","do-it-yourself","docker","interactive","linux","macos","podman","runner","server","termux","windows"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gskeleton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2025-10-13T21:12:29.000Z","updated_at":"2026-01-18T16:00:27.000Z","dependencies_parsed_at":"2025-10-19T06:24:41.216Z","dependency_job_id":"266e3103-a63c-4e16-b36f-ef48afbad5bd","html_url":"https://github.com/gskeleton/watchdogs","commit_stats":null,"previous_names":["klantle/watchdogs"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/gskeleton/watchdogs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gskeleton%2Fwatchdogs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gskeleton%2Fwatchdogs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gskeleton%2Fwatchdogs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gskeleton%2Fwatchdogs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gskeleton","download_url":"https://codeload.github.com/gskeleton/watchdogs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gskeleton%2Fwatchdogs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28756433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T16:32:25.380Z","status":"ssl_error","status_checked_at":"2026-01-25T16:32:09.189Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["android","compiler","do-it-yourself","docker","interactive","linux","macos","podman","runner","server","termux","windows"],"created_at":"2025-12-25T05:21:40.666Z","updated_at":"2026-01-25T18:14:03.051Z","avatar_url":"https://github.com/gskeleton.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![watchdogs](https://raw.githubusercontent.com/gskeleton/dogdog/refs/heads/main/image.png)\n\n## GNU/Linux\n\n* GNU/wget\n\n```yaml\nwget -O install.sh https://github.com/gskeleton/watchdogs/raw/refs/heads/main/__gnu_linux.sh \u0026\u0026 chmod +x install.sh \u0026\u0026 ./install.sh\n```\n\n* cURL\n\n```yaml\ncurl -L -o install.sh https://github.com/gskeleton/watchdogs/raw/refs/heads/main/__gnu_linux.sh \u0026\u0026 chmod +x install.sh \u0026\u0026 ./install.sh\n```\n\n* aria2\n\n```yaml\naria2c -o install.sh https://github.com/gskeleton/watchdogs/raw/refs/heads/main/__gnu_linux.sh \u0026\u0026 chmod +x install.sh \u0026\u0026 ./install.sh\n```\n\n---\n\n## Termux\n\n1. **Download Termux from GitHub**\n\n   * Android 7 and above:\n     [https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-7-github-debug_universal.apk](https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-7-github-debug_universal.apk)\n   * Android 5/6:\n     [https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_universal.apk](https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_universal.apk)\n\n2. **Install the downloaded .apk file and run Termux.**\n\n3. **First time, run the following command in Termux:**\n\n\u003e Choose one.\n\n* GNU/wget\n\n```yaml\napt update \u0026\u0026 apt upgrade \u0026\u0026 apt install wget \u0026\u0026 wget -O install.sh https://github.com/gskeleton/watchdogs/raw/refs/heads/main/__termux.sh \u0026\u0026 chmod +x install.sh \u0026\u0026 ./install.sh\n```\n\n* cURL\n\n```yaml\napt update \u0026\u0026 apt upgrade \u0026\u0026 apt install curl \u0026\u0026 curl -L -o install.sh https://github.com/gskeleton/watchdogs/raw/refs/heads/main/__termux.sh \u0026\u0026 chmod +x install.sh \u0026\u0026 ./install.sh\n```\n\n* aria2\n\n```yaml\napt update \u0026\u0026 apt upgrade \u0026\u0026 apt install aria2 \u0026\u0026 aria2c -o install.sh https://github.com/gskeleton/watchdogs/raw/refs/heads/main/__termux.sh \u0026\u0026 chmod +x install.sh \u0026\u0026 ./install.sh\n```\n\n\u003e If there are other questions (e.g., Termux mirror selection), choose the top one or **just press Enter**.\n\n4. **Indication that Watchdogs was successfully installed:**\n\n![watchdogs](https://raw.githubusercontent.com/gskeleton/dogdog/refs/heads/main/indicate.png)\n\n\u003e **Use the command `pawncc` to set up the compiler (simulation):**\n\n```yaml\n\u003e pawncc\n== Select a Platform ==\n  [l] Linux\n  [w] Windows\n  [t] Termux\n==\u003e t # choose t [termux]\n== Select PawnCC Version ==\n  A) Pawncc 3.10.11\n  B) Pawncc 3.10.10\n  C) Pawncc 3.10.9\n  D) Pawncc 3.10.8\n  E) Pawncc 3.10.7\n\u003e a # choose compiler version\n* Try Downloading ? * Enable HTTP debugging? (y/n): n\n Try Extracting ? archive file...\n==\u003e Remove archive ?? (y/n) \u003e n # optional - delete archive later\n==\u003e Apply pawncc?\n   answer (y/n) \u003e y # install pawncc to root (pawno folder)\n\u003e\u003e I:moved without sudo: '?' -\u003e '?'\n\u003e\u003e I:moved without sudo: '?' -\u003e '?'\n\u003e\u003e I:Congratulations! - Done.\n```\n\n---\n\n![watchdogs](https://raw.githubusercontent.com/gskeleton/dogdog/refs/heads/main/pawncc_install.png)\n\n\u003e If you see the `?` symbol (-openssl.cnf (Y/I/N/O/D/Z [default=N] ?), **simply press Enter** unless a specific answer is requested (e.g., apply pawncc = yes).\n\n\u003e For compilation steps, learn: [here](#compilation-commands--with-parent-directory-in-termux)\n\n---\n\n## Windows Native\n\n\u003e **Build for Windows?** Use **MSYS2** (recommended).\n\n1. **Install Visual C++ Redistributable Runtimes (required for pawncc)**\n\n   * Visit: [https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/](https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/)\n   * Click **Download**\n   * Extract the archive\n   * Run `install_all.bat`\n\n2. **Open Windows Command Prompt, run:**\n\n```yaml\npowershell -Command \"Invoke-WebRequest 'https://raw.githubusercontent.com/gskeleton/watchdogs/refs/heads/main/__windows.cmd' -OutFile 'install.cmd'; .\\install.cmd\"\n```\n\n---\n\n## Make Command Reference\n\n```yaml\nmake                # Install library and build\nmake linux          # Build for Linux\nmake windows        # Build for Windows\nmake termux         # Build for Termux\nmake clean          # Clean build results\nmake debug          # Build with debug mode (Linux)\nmake debug-termux   # Build with debug mode (Termux)\nmake windows-debug  # Build with debug mode (Windows)\n```\n\n---\n\n## GNU Debugger (GDB)\n\n```yaml\n# Step 1 - Run the debugger (GDB) with the program\n# Choose the executable according to platform:\ngdb ./watchdogs.debug        # For Linux\ngdb ./watchdogs.debug.tmux   # For Termux (Android)\ngdb ./watchdogs.debug.win    # For Windows (if using GDB)\n\n# Step 2 - Run the program inside GDB\n# Program is run under debugger control\nrun                           # type 'run' then Enter\n\n# Step 3 - Handling crashes or interruptions\n# If the program crashes (e.g., segmentation fault) or is manually stopped (Ctrl+C),\n# GDB will stop execution and display a prompt.\n\n# Step 4 - Check program status with backtrace\n# Backtrace displays the sequence of function calls at the time of the crash.\nbt           # Basic backtrace (function names)\nbt full      # Full backtrace (functions, variables, arguments)\n```\n\n---\n\n## Executing with Args\n\n```yaml\n./watchdogs command\n./watchdogs command args\n./watchdogs help compile\n```\n\n## Command Alias\n\n**Default (if in the root directory):**\n\n```yaml\necho \"alias watchdogs='./watchdogs'\" \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\n**Running the alias:**\n\n```yaml\nwatchdogs\n```\n\n---\n\n## Compilation\n\n\u003e You do not need a specific installation of Watchdogs in the GameMode folder or in the ~/Downloads area. You just need to ensure the folder containing the watchdogs binary such as watchdogs or watchdogs.tmux is within a folder in Downloads, and your project folder is also within a folder in Downloads. (*THIS DOES NOT APPLY TO watchdogs.win)\n```yml\n# Example structure:\nDownloads\n├── dog\n│   ├── watchdogs\n└── myproj\n    └── gamemodes\n        └── proj.p\n        # ^ then you can run the watchdogs located in the dog/ folder\n        # ^ and you only need to compile it with the parent symbol as follows\n        # ^ compile ../myproj/gamemodes/proj.p\n        # ^ this location is just an example.\n```\n\n## Compilation Commands – With Parent Directory in Termux\n\n```yaml\ncompile ../storage/downloads/_GAMEMODE_FOLDER_NAME_/gamemodes/_PAWN_FILE_NAME_.pwn\n```\n\n**Example:**\nI have a gamemode folder named `parent` in Downloads (via ZArchiver), and the main file `pain.pwn` is inside `gamemodes/`.\nThen the path used is:\n\n```yaml\ncompile ../storage/downloads/parent/pain.pwn\n```\n\n---\n\n## Compilation Commands – General\n\n\u003e **Compile `server.pwn`:**\n\n```yaml\n# Default compilation\ncompile .\ncompile.\n```\n\n\u003e **Compile with a specific path**\n\n```yaml\ncompile server.pwn\ncompile path/to/server.pwn\n```\n\n\u003e **Compile with parent location (include path automatic)**\n\n```yaml\ncompile ../path/to/project/server.pwn\n# automatic: -i/path/to/path/pawno -i/path/to/path/qawno -i/path/to/path/gamemodes\n```\n\n---\n\n## Server Management\n\n* **Algorithm**\n\n```\n--------------------     --------------------------                -\n|                  |     |                        |                -\n|       ARGS       | --\u003e |        FILTERING       |                -\n|                  |     |                        |                -\n--------------------     --------------------------                -\n                                     |\n                                     v\n---------------------    --------------------------                -\n|                   |    |                        |                -\n|  LOGGING OUTPUT   |    |   EXIST FILE VALIDATE  |                -\n|                   |    |                        |                -\n---------------------    --------------------------                -\n         ^                           |\n         |                           v\n--------------------     --------------------------                -\n|                  |     |                        |                -\n|  RUNNING BINARY  | \u003c-- |     EDITING CONFIG     |                -\n|                  |     |    if args is exist    |                -\n--------------------     --------------------------                -\n```\n\n**Run the server with the default gamemode:**\n\n```yaml\nrunning .\nrunning.\n```\n\n**Run the server with a specific gamemode:**\n\n```yaml\nrunning server\n```\n\n**Compile and run simultaneously:**\n\n```yaml\ncompiles .\ncompiles.\n```\n\n**Compile and run with a specific path:**\n\n```yaml\ncompiles server\n```\n\n---\n\n## Dependency Management\n\n```\n--------------------     --------------------------                -\n|                  |     |                        |                -\n|     BASE URL     | --\u003e |      URL CHECKING      |                -\n|                  |     |                        |                -\n--------------------     --------------------------                -\n                                    |\n                                    v\n---------------------    --------------------------                -\n|                   |    |                        |                -\n|     APPLYING      |    |  PATTERNS - FILTERING  |                -\n|                   |    |                        |                -\n---------------------    --------------------------                -\n         ^                          |\n         |                          v\n--------------------     --------------------------                -\n|                  |     |                        |                -\n|  FILES CHECKING  | \u003c-- |       INSTALLING       |                -\n|                  |     |                        |                -\n--------------------     --------------------------                -\n```\n\n**Install dependency from `watchdogs.toml`:**\n\n```yaml\nreplicate .\nreplicate.\n```\n\n**Install a specific repository:**\n\n```yaml\nreplicate repo/user\n```\n\n**Install a specific version (tag):**\n\n```yaml\nreplicate repo/user?v1.1\n```\n\n* **Automatic latest version**\n\n```yaml\nreplicate repo/user?newer\n```\n\n**Install a specific branch:**\n\n```yaml\nreplicate repo/user --branch master\n```\n\n**Install to a specific location:**\n\n```yaml\n# root\nreplicate repo/user --save .\n# specific location\nreplicate repo/user --save ../parent/myproj\nreplicate repo/user --save myfolder/myproj\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgskeleton%2Fwatchdogs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgskeleton%2Fwatchdogs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgskeleton%2Fwatchdogs/lists"}