Romania XPlayZM.CSBlackDevil.COM # Zombie Plague UltimateX [ Respawn + FDL + VIP 22-12PM + POINTS] ® 23/32
Unknown ❤ RESPAWN.ZAFEST.RO | VIP FREE | FREE FOR ALL ❤ 0/32
Germany ELITE.WORLDCS.RO # [SKINS |VIP + REVIVE| RANKS] 15/32
Promuj serwer

Initial release 1.0.0

Browse Source
1.0.0 - Initial release.
Daemon666 committed commit 8e12eafa6a909101d7c8ddf56acd69477cadea61
4 changed files with 241 additions and 0 deletions
+3 -0 CHANGELOG.md A
@@ -0,0 +1,3 @@
1 +## 1.0.0 (2026-04-02)
2 +
3 +1.0.0 - Initial release.
+1 -0 README.md A
@@ -0,0 +1 @@
1 +<p><strong>CSB VIP Objective Mod</strong> adds an assassination objective to any map. Each round a random CT becomes the VIP: a glowing, heavily armored player armed only with a knife. CTs win by escorting the VIP into an escape zone, and Terrorists win by killing them. Escape zones are read from a per-map data file and checked in <code>PlayerPreThink</code>, and a HUD shows the VIP's name and health.</p><h2>Features</h2><ul><li>Random VIP each round with extra armor and a gold glow.</li><li>CT win on escape, T win on assassination.</li><li>Escape zones from a per-map data file with per-zone radius.</li><li>VIP status HUD.</li></ul><h2>Installation</h2><ol><li>Enable the <code>fakemeta</code>, <code>hamsandwich</code>, <code>cstrike</code> and <code>fun</code> modules in <code>modules.ini</code>.</li><li>Create <code>addons/amxmodx/configs/csb_vip/&lt;map&gt;.ini</code> with one or more <code>x y z radius</code> zone lines.</li><li>Compile <code>csb_vip_mod.sma</code>, copy it to <code>addons/amxmodx/plugins/</code> and add it to <code>plugins.ini</code>.</li><li>Change the map.</li></ol>
+201 -0 addons/amxmodx/scripting/csb_vip_mod.sma A
@@ -0,0 +1,201 @@
1 +/*
2 + * CSB VIP Objective Mod
3 + * Copyright (C) 2026 counter-strike-boost.com
4 + *
5 + * An assassination-style objective for any map. Each round a random CT becomes
6 + * the VIP: a glowing, heavily armored player with only a knife. CTs win by
7 + * escorting the VIP into an escape zone, and Terrorists win by killing them.
8 + * Escape zones are read from a per-map data file and checked in PlayerPreThink.
9 + *
10 + * This program is free software: you can redistribute it and/or modify it under
11 + * the terms of the GNU General Public License as published by the Free Software
12 + * Foundation, either version 3 of the License, or (at your option) any later
13 + * version. It is distributed in the hope that it will be useful, but WITHOUT
14 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 + * FOR A PARTICULAR PURPOSE. See <https://www.gnu.org/licenses/> for details.
16 + */
17 +
18 +#include <amxmodx>
19 +#include <fakemeta>
20 +#include <hamsandwich>
21 +#include <cstrike>
22 +#include <fun>
23 +
24 +new const PLUGIN[] = "CSB VIP Objective Mod"
25 +new const VERSION[] = "1.0.0"
26 +new const AUTHOR[] = "counter-strike-boost.com"
27 +
28 +#define MAX_ZONES 8
29 +
30 +new g_pEnabled, g_pArmor
31 +
32 +new Float:g_fZone[MAX_ZONES][3]
33 +new Float:g_fZoneRadius[MAX_ZONES]
34 +new g_iZoneCount
35 +
36 +new g_iVip
37 +new bool:g_bRoundOver
38 +new g_iHudSync
39 +
40 +public plugin_init()
41 +{
42 + register_plugin(PLUGIN, VERSION, AUTHOR)
43 +
44 + g_pEnabled = register_cvar("csb_vip_enabled", "1")
45 + g_pArmor = register_cvar("csb_vip_armor", "200")
46 +
47 + register_logevent("eventRoundStart", 2, "1=Round_Start")
48 + register_event("DeathMsg", "eventDeath", "a", "1>0")
49 + register_forward(FM_PlayerPreThink, "fwPreThink")
50 +
51 + g_iHudSync = CreateHudSyncObj()
52 +
53 + set_task(1.0, "taskHud", 0, _, _, "b")
54 +}
55 +
56 +public plugin_cfg()
57 +{
58 + loadZones()
59 +}
60 +
61 +loadZones()
62 +{
63 + g_iZoneCount = 0
64 +
65 + new map[32]
66 + get_mapname(map, charsmax(map))
67 +
68 + new dir[128], path[192]
69 + get_localinfo("amxx_configsdir", dir, charsmax(dir))
70 +
71 + if (!dir[0])
72 + copy(dir, charsmax(dir), "addons/amxmodx/configs")
73 +
74 + formatex(path, charsmax(path), "%s/csb_vip/%s.ini", dir, map)
75 +
76 + if (!file_exists(path))
77 + return
78 +
79 + new line[96], len, pos = 0
80 +
81 + while (g_iZoneCount < MAX_ZONES && (pos = read_file(path, pos, line, charsmax(line), len)))
82 + {
83 + trim(line)
84 +
85 + if (!line[0] || line[0] == ';' || line[0] == '#')
86 + continue
87 +
88 + new sx[16], sy[16], sz[16], sr[16]
89 + parse(line, sx, charsmax(sx), sy, charsmax(sy), sz, charsmax(sz), sr, charsmax(sr))
90 +
91 + if (!sx[0] || !sy[0] || !sz[0])
92 + continue
93 +
94 + g_fZone[g_iZoneCount][0] = str_to_float(sx)
95 + g_fZone[g_iZoneCount][1] = str_to_float(sy)
96 + g_fZone[g_iZoneCount][2] = str_to_float(sz)
97 + g_fZoneRadius[g_iZoneCount] = sr[0] ? str_to_float(sr) : 100.0
98 + g_iZoneCount++
99 + }
100 +}
101 +
102 +public eventRoundStart()
103 +{
104 + g_iVip = 0
105 + g_bRoundOver = false
106 +
107 + if (!get_pcvar_num(g_pEnabled))
108 + return
109 +
110 + set_task(2.5, "taskPickVip", 6161)
111 +}
112 +
113 +public taskPickVip()
114 +{
115 + /* pick a random alive CT */
116 + new cts[32], num = 0
117 + new players[32], total
118 + get_players(players, total, "ae", "CT")
119 +
120 + for (new i = 0; i < total; i++)
121 + cts[num++] = players[i]
122 +
123 + if (num == 0)
124 + return
125 +
126 + new vip = cts[random_num(0, num - 1)]
127 + makeVip(vip)
128 +}
129 +
130 +makeVip(id)
131 +{
132 + g_iVip = id
133 +
134 + strip_user_weapons(id)
135 + give_item(id, "weapon_knife")
136 +
137 + set_user_armor(id, get_pcvar_num(g_pArmor))
138 + set_user_rendering(id, kRenderFxGlowShell, 255, 215, 0, kRenderNormal, 180)
139 +
140 + new name[32]
141 + get_user_name(id, name, charsmax(name))
142 + client_print(0, print_chat, "^x04[VIP]^x01 %s is the VIP! CTs escort them to the escape zone, Ts hunt them down.", name)
143 +}
144 +
145 +public eventDeath()
146 +{
147 + new victim = read_data(2)
148 +
149 + if (victim != g_iVip || g_bRoundOver)
150 + return
151 +
152 + g_bRoundOver = true
153 + client_print(0, print_chat, "^x04[VIP]^x01 The VIP is dead - Terrorists win the objective!")
154 + set_task(2.0, "taskEndRound")
155 +}
156 +
157 +public fwPreThink(id)
158 +{
159 + if (g_bRoundOver || id != g_iVip || g_iZoneCount == 0)
160 + return
161 +
162 + if (!is_user_alive(id))
163 + return
164 +
165 + static Float:fPos[3]
166 + pev(id, pev_origin, fPos)
167 +
168 + for (new z = 0; z < g_iZoneCount; z++)
169 + {
170 + new Float:dx = fPos[0] - g_fZone[z][0]
171 + new Float:dy = fPos[1] - g_fZone[z][1]
172 + new Float:dz = fPos[2] - g_fZone[z][2]
173 +
174 + new Float:r = g_fZoneRadius[z]
175 +
176 + if (dx*dx + dy*dy + dz*dz < r * r)
177 + {
178 + g_bRoundOver = true
179 + client_print(0, print_chat, "^x04[VIP]^x01 The VIP escaped - Counter-Terrorists win the objective!")
180 + set_task(2.0, "taskEndRound")
181 + return
182 + }
183 + }
184 +}
185 +
186 +public taskEndRound()
187 +{
188 + server_cmd("sv_restartround 1")
189 +}
190 +
191 +public taskHud()
192 +{
193 + if (g_iVip == 0 || !is_user_alive(g_iVip))
194 + return
195 +
196 + new name[32]
197 + get_user_name(g_iVip, name, charsmax(name))
198 +
199 + set_hudmessage(255, 215, 0, 0.02, 0.14, 0, 0.0, 1.1, 0.0, 0.0, -1)
200 + ShowSyncHudMsg(0, g_iHudSync, "VIP: %s (%d HP / %d AP)", name, get_user_health(g_iVip), get_user_armor(g_iVip))
201 +}
+36 -0 csb.json A
@@ -0,0 +1,36 @@
1 +{
2 + "name": "CSB VIP Objective Mod",
3 + "category": "gameplay",
4 + "tags": "vip, escort, objective",
5 + "image": "",
6 + "original_author": "",
7 + "original_url": "",
8 + "license": "GPL-3.0",
9 + "title": "CSB VIP Objective Mod",
10 + "short_desc": "An assassination objective for any map: a random CT becomes an armored, glowing VIP; CTs escort them to a per-map escape zone while Ts hunt them.",
11 + "version": "1.0.0",
12 + "amxx_min": "1.9",
13 + "amxx_compile_default": "1.9",
14 + "rehlds_ok": true,
15 + "hlds_ok": true,
16 + "regamedll_required": false,
17 + "metamod_flavor": "any",
18 + "reapi_required": false,
19 + "modules": "fakemeta,hamsandwich,cstrike,fun",
20 + "install_notes": "1. Enable the fakemeta, hamsandwich, cstrike and fun modules in addons/amxmodx/configs/modules.ini\n2. Create addons/amxmodx/configs/csb_vip/<map>.ini with x y z radius zone lines\n3. Put csb_vip_mod.amxx in addons/amxmodx/plugins/ and add it to plugins.ini\n4. Change map",
21 + "known_conflicts": "Uses sv_restartround to end the objective; other round-control plugins may interfere.",
22 + "cvars": [
23 + {
24 + "name": "csb_vip_enabled",
25 + "default": "1",
26 + "description": "Enable or disable VIP mod."
27 + },
28 + {
29 + "name": "csb_vip_armor",
30 + "default": "200",
31 + "description": "Armor given to the VIP."
32 + }
33 + ],
34 + "commands": [],
35 + "main": "addons/amxmodx/scripting/csb_vip_mod.sma"
36 +}
0 37