{"id":23160779,"url":"https://github.com/v0l/rustasia","last_synced_at":"2026-05-10T07:37:26.246Z","repository":{"id":146305896,"uuid":"166011545","full_name":"v0l/RustAsia","owner":"v0l","description":"RustAsia Server mod","archived":false,"fork":false,"pushed_at":"2019-02-13T05:15:58.000Z","size":1858,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T03:47:04.835Z","etag":null,"topics":["mod","rust","server","unity"],"latest_commit_sha":null,"homepage":"https://rustasia.com","language":"C#","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/v0l.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}},"created_at":"2019-01-16T09:24:43.000Z","updated_at":"2020-09-04T09:43:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"8d45310c-b98e-4bbe-bda0-8d73dffd525c","html_url":"https://github.com/v0l/RustAsia","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v0l%2FRustAsia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v0l%2FRustAsia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v0l%2FRustAsia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v0l%2FRustAsia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v0l","download_url":"https://codeload.github.com/v0l/RustAsia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247236690,"owners_count":20906177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["mod","rust","server","unity"],"created_at":"2024-12-17T23:12:07.190Z","updated_at":"2025-10-09T12:44:26.659Z","avatar_url":"https://github.com/v0l.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Features\n===\n\n * AdminTC - TC's set with `ent admin_tc` will not consume resources from the container.\n * Incognito Admin Chat - Admin's have the same chat color as normal players.\n * No Give Messages - `inventory.give` and others do not send broadcast messages in chat.\n * Admin No Target - Admins are not targeted by traps (Landmine, AutoTurret, Shotgun Trap, Flame Turret) or heli.\n * Admin ESP - Admins can enable ESP to see players or entities are in game.\n * Admin FreeBuild - Admins can build with not cost.\n * Admin Instant Upgrade - Admins can build with a different building grade (Metal is default).\n * Admin Free Upgrade - Admins can upgrade buildings with no cost.\n * Invisible Admin - Admins can go invisible (only other admins can see them).\n * Un-Lootable Admins - Admins cant be looted while wounded or sleeping, admin corpses are empty.\n \nCommand List\n===\n```\nent admin_tc\nglobal.freebuild\nglobal.invisible\nglobal.esp\nglobal.esp_mode\nglobal.admin_no_target\nglobal.default_building_grade\nglobal.lootable_admins\n```\n\nHow to apply the mod\n===\n\n*Step 1:* Add fields to rust classes.\n\nBasePlayer:\n```csharp\npublic bool IsInvisible { get; set; }\npublic float lastESP { get; set; }\npublic float lastSlowESP { get; set; }\npublic BuildingGrade.Enum FreeBuildType { get; set; } = BuildingGrade.Enum.Metal;\npublic ulong ESPFlags { get; set; }\n```\n\nBuildingPrivlidge:\n```csharp\npublic bool isFreeUpkeep { get; set; }\n```\n\n*Step 2:* Save the assembly.\n\n*Step 3:* Compile the RustAsia assembly.\n\n*Step 4:* Add the following code with [dnSpy](https://github.com/0xd4d/dnSpy)\n\nConVar.Admin:\n```csharp\nif (@string == \"admin_tc\")\n{\n\tBuildingPrivlidge buildingPrivlidge = baseEntity as BuildingPrivlidge;\n\tif (buildingPrivlidge != null)\n\t{\n\t\tbuildingPrivlidge.isFreeUpkeep = !buildingPrivlidge.isFreeUpkeep;\n\t\tbuildingPrivlidge.AddDelayedUpdate();\n\t\targ.ReplyWith(string.Format(\"{0}: {1}\", baseEntity.net.ID, buildingPrivlidge.isFreeUpkeep ? \"True\" : \"False\"));\n\t\treturn;\n\t}\n\targ.ReplyWith(\"Not a tool cupboard\");\n\treturn;\n}\n```\n\nConVar.Chat:\n`Remove admin chat color from say()`\n\nConVar.Inventory:\n`Remove all chat broadcasts for give()/giveto()/giveid()/givearm()`\n\nAutoTurret:\n```csharp\n//Ignore()\nreturn player.IsAdmin \u0026\u0026 RustAsia.System.Variables.AdminNoTarget;\n\n//IsEntityHostile()\nglobal::BasePlayer basePlayer = ent as global::BasePlayer;\nreturn (!basePlayer || !basePlayer.IsAdmin || !RustAsia.System.Variables.AdminNoTarget) \u0026\u0026 ent.IsHostile();\n\n//OnAttacked(), edit basePlayer checks like so.\nif (!basePlayer || ((!basePlayer.IsAdmin || !RustAsia.System.Variables.AdminNoTarget) \u0026\u0026 !this.IsAuthed(basePlayer)))\n```\n\nBasePlayer:\n```csharp\n//CanBeLooted()\n\u0026\u0026 (!this.IsAdmin || !RustAsia.System.Variables.LootableAdmins)\n\n//CreateCorpse()\nif (!this.IsAdmin || Variables.LootableAdmins)\n{\n\tlootableCorpse.TakeFrom(new ItemContainer[]\n\t{\n\t\tthis.inventory.containerMain,\n\t\tthis.inventory.containerWear,\n\t\tthis.inventory.containerBelt\n\t});\n}\nelse\n{\n\tItemContainer nc = new ItemContainer();\n\tnc.AddItem(ItemManager.FindItemDefinition(363467698), 1);\n\tlootableCorpse.TakeFrom(new ItemContainer[]\n\t{\n\t\tnc\n\t});\n}\n\n//Hurt()\nif (this.IsAdmin \u0026\u0026 !RustAsia.System.Variables.LootableAdmins \u0026\u0026 (this.IsSleeping() || this.IsWounded()))\n{\n\treturn;\n}\n```\n\nBootstrap:\n```csharp\n//StartServer() - before \"Server startup complete\" log\nRustAsia.System.Core.Init(new Action\u003cstring\u003e(Bootstrap.WriteToLog));\n```\n\nBuildingBlock:\n```csharp\n//CanAffordUpgrade()\nif (player.IsAdmin \u0026\u0026 RustAsia.System.Variables.FreeBuild)\n{\n\treturn true;\n}\n\n//PayForUpgrade()\nif (player.IsAdmin \u0026\u0026 RustAsia.System.Variables.FreeBuild)\n{\n\treturn;\n}\n```\n\nBuildingPrivlidge:\n```csharp\n//ApplyUpkeepPayment()\nif (this.isFreeUpkeep)\n{\n\treturn;\n}\n```\n\nFlameTurret:\n```csharp\n//CheckTrigger()\n\u0026\u0026 (!component.IsAdmin || !RustAsia.System.Variables.AdminNoTarget)\n```\n\nGunTrap:\n```csharp\n//CheckTrigger()\n\u0026\u0026 (!component.IsAdmin || !RustAsia.System.Variables.AdminNoTarget)\n```\n\nLandmine:\n```csharp\npublic void Trigger(BasePlayer ply = null)\n{\n\tif (ply \u0026\u0026 (!ply.IsAdmin || !RustAsia.System.Variables.AdminNoTarget))\n\t{\n\t\tthis.triggerPlayerID = ply.userID;\n\t}\n\tif (!ply || !ply.IsAdmin || !RustAsia.System.Variables.AdminNoTarget)\n\t{\n\t\tbase.SetFlag(BaseEntity.Flags.Open, true, false, true);\n\t\tbase.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);\n\t}\n}\n```\n\nPatrolHelicopterAI:\n```csharp\n//UpdateTargetList()\n\u0026\u0026 (!basePlayer.IsAdmin || !RustAsia.System.Variables.AdminNoTarget)\n\n//ValidStrafeTarget()\nreturn (!ply.IsAdmin || !RustAsia.System.Variables.AdminNoTarget) \u0026\u0026 !ply.IsNearEnemyBase();\n\n//WasAttacked()\nif (basePlayer != null \u0026\u0026 (!basePlayer.IsAdmin || !RustAsia.System.Variables.AdminNoTarget))\n```\n\nPlanner:\n```csharp\n//CanAffordToPlace()\nif (ownerPlayer.IsAdmin \u0026\u0026 RustAsia.System.Variables.FreeBuild)\n{\n\treturn true;\n}\n\n//DoPlacement()\nif (RustAsia.System.Variables.FreeBuild \u0026\u0026 ownerPlayer.IsAdmin)\n{\n\tbuildingBlock.SetGrade(ownerPlayer.FreeBuildType);\n}\nelse\n{\n\tbuildingBlock.SetGrade(buildingBlock.blockDefinition.defaultGrade.gradeBase.type);\n}\n\n//PayForPlacement()\nif (player.IsAdmin \u0026\u0026 RustAsia.System.Variables.FreeBuild)\n{\n\treturn;\n}\n```\n\n*Step 5:* Re-compile HTNPlayer, save the assembly.\n\n*Step 6:* Open [ILSpy](https://github.com/icsharpcode/ILSpy) with [Reflexil](https://github.com/sailro/Reflexil) and add the following changes.\n\nBasePlayer\n```csharp\n//OnReceiveTick(PlayerTick msg, bool wasPlayerStalled) (as IL edit)\n/*\n * ldarg.0\n * call RustAsia.Extensions.BasePlayerExt.TickESP\n*/\nRustAsia.Extensions.BasePlayerExt.TickESP(this);\n```\n\nBaseNetworkable:\n```csharp\n//The following edit should be done (as IL edit)\n/*\n * ldarg.0\n * ldarg.1\n * call RustAsia.Extensions.BaseNetworkableExt.ShouldNetworkToInvisible\n * ret\n*/\npublic virtual bool ShouldNetworkTo(global::BasePlayer player)\n{\n\treturn RustAsia.Extensions.BaseNetworkableExt.ShouldNetworkToInvisible(this, player);\n}\n```\n\n*Step 6:* Save the assembly, you're done!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv0l%2Frustasia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv0l%2Frustasia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv0l%2Frustasia/lists"}