SHOW:
|
|
- or go back to the newest paste.
1 | - | //Admin System by Nexius v1.9 |
1 | + | //Admin System by Nexius v2.0 |
2 | ||
3 | #if defined _admsys_included | |
4 | #endinput | |
5 | #endif | |
6 | #define _admsys_included | |
7 | ||
8 | #include <a_samp> | |
9 | ||
10 | - | #define ADMSYS_VERSION "1.9" |
10 | + | #define ADMSYS_VERSION "2.0" |
11 | ||
12 | //#define SEND_ACTION_MESSAGES_TO_ALL | |
13 | ||
14 | #define ADMSYS_DEFAULT_COLOR -1 | |
15 | ||
16 | #define ADMSYS_MAX_TAB_INPUT 8 | |
17 | #define ADMSYS_MAX_SUSPECTS_IN_TABLE 8 | |
18 | #define ADMSYS_MAX_GIVE_PLAYERS_IN_CMD 3 | |
19 | #define ADMSYS_MAX_WARNS 2 | |
20 | ||
21 | #define admsys_isnull(%0) ((!(%0[0])) || (((%0[0]) == '\1') && (!(%0[1])))) | |
22 | #define admsys_fpublic%0(%1) forward %0(%1); public %0(%1) | |
23 | ||
24 | #if !defined CMD | |
25 | #define CMD:%0(%1) forward cmd_%0(%1); public cmd_%0(%1) | |
26 | #endif | |
27 | ||
28 | static const AdmSysCmds[][] = | |
29 | { | |
30 | "Уровень 1:\n", | |
31 | "/achat [текст] - Админ чат\n", | |
32 | "/ahelp - Помощь по админ командам\n", | |
33 | "/showstats [id] - Показать статистику игрока\n", | |
34 | "/answer [id] [текст] - Ответить игроку на report\n", | |
35 | "/apanel - Админ-панель со всеми доступными командами\n", | |
36 | "/admins - Посмотреть список администраторов онлайн\n", | |
37 | "/eject [id] - Высадить игрока из транспорта\n", | |
38 | "\n", | |
39 | "Уровень 2:\n", | |
40 | "/spec [id] - Войти в режим наблюдения за игроком\n", | |
41 | "/spawnveh [id транспорта] - Телепортировать транспорт на респавн\n", | |
42 | "/(un)mute [id] [время] [причина] - Выдать/снять с игрока молчанку\n", | |
43 | "/asay [текст] - Сообщение в формате: 'Администратор: [текст]'\n", | |
44 | "/warn [id] [причина] - Выдать предупреждение игроку\n", | |
45 | "/kick [id] [причина] - Выкинуть игрока с сервера\n", | |
46 | "/(un)freeze [id] - Заморозить/разморозить игрока\n", | |
47 | "/slap [id] [причина] - Дать пинка игроку\n", | |
48 | "/goto [id] - Телепортироваться к игроку\n", | |
49 | "\n", | |
50 | "Уровень 3:\n", | |
51 | "/suspectlist - Список подозреваемых игроков\n", | |
52 | "/gethere [id] - Телепортировать игрока к себе\n", | |
53 | "/gotoveh [id транспорта] - Телепортироваться к транспорту\n", | |
54 | "/ban [id] [причина] - Заблокировать аккаунт игрока\n", | |
55 | "/gmtest [id] - Проверка на бесконечное здоровье\n", | |
56 | "/spawn [id] - Телепортировать игрока на респавн\n", | |
57 | "/unwarn [id] - Снять предупреждение с игрока\n", | |
58 | "/banip [IP] - Блокировка IP-адреса\n", | |
59 | "/cc - Очистка чата\n", | |
60 | "\n", | |
61 | "Уровень 4:\n", | |
62 | "/sethealth [id] [здоровье] - Выдать здоровье игроку\n", | |
63 | "/setarmour [id] [броня] - Выдать броню игроку\n", | |
64 | "/setmoney [id] [деньги] - Выдать деньги игроку\n", | |
65 | "/setskin [id] [id скина] - Установить скин игроку\n", | |
66 | "/setint [id] [интерьер] - Установить игроку интерьер\n", | |
67 | "/setvw [id] [номер] - Установить игроку виртуальный мир\n", | |
68 | "/giveweapon [id] [оружие] [патроны] - Выдать игроку оружие\n", | |
69 | "/repairveh [id транспорта] - Отремонтировать транспорт\n", | |
70 | "/unbanip [IP] - Разблокировать IP-адрес\n", | |
71 | "\n", | |
72 | "Уровень 5:\n", | |
73 | "/getall - Телепортировать всех к себе\n", | |
74 | "/setweather [номер] - Установить погоду\n", | |
75 | "/settime [час] - Установить время суток\n", | |
76 | "/destroyveh [id транспорта] - Уничтожить транспорт\n", | |
77 | "/veh [id транспорта] [цвет 1] [цвет 2] - Создать транспорт\n", | |
78 | "/sban [id] - Тихая блокировка\n", | |
79 | "/skick [id] - Тихий кик" | |
80 | }; | |
81 | ||
82 | enum | |
83 | { | |
84 | ADMSYS_DIALOG_TAB_PANEL = 8192, | |
85 | ADMSYS_DIALOG_ANSWER, | |
86 | ADMSYS_DIALOG_MUTE_TIME, | |
87 | ADMSYS_DIALOG_MUTE, | |
88 | ADMSYS_DIALOG_WARN, | |
89 | ADMSYS_DIALOG_KICK, | |
90 | ADMSYS_DIALOG_SLAP, | |
91 | ADMSYS_DIALOG_BAN, | |
92 | ADMSYS_DIALOG_SET_HEALTH, | |
93 | ADMSYS_DIALOG_SET_ARMOUR, | |
94 | ADMSYS_DIALOG_SET_MONEY, | |
95 | ADMSYS_DIALOG_CHANGE_SKIN, | |
96 | ADMSYS_DIALOG_SET_INT, | |
97 | ADMSYS_DIALOG_SET_VW, | |
98 | ADMSYS_DIALOG_GIVE_WEAPON, | |
99 | ADMSYS_DIALOG_GIVE_WEAPON_AMMO, | |
100 | ADMSYS_DIALOG_AHELP, | |
101 | ADMSYS_DIALOG_STATS, | |
102 | ADMSYS_DIALOG_APANEL, | |
103 | ADMSYS_DIALOG_ACHAT, | |
104 | ADMSYS_DIALOG_SPAWN_VEH, | |
105 | ADMSYS_DIALOG_ASAY, | |
106 | ADMSYS_DIALOG_GOTO_VEH, | |
107 | ADMSYS_DIALOG_BAN_IP, | |
108 | ADMSYS_DIALOG_REPAIR_VEH, | |
109 | ADMSYS_DIALOG_UNBAN_IP, | |
110 | ADMSYS_DIALOG_SET_WEATHER, | |
111 | ADMSYS_DIALOG_SET_TIME, | |
112 | ADMSYS_DIALOG_DESTROY_VEH, | |
113 | ADMSYS_DIALOG_CREATE_VEH, | |
114 | ADMSYS_DIALOG_CREATE_VEH_COL_1, | |
115 | ADMSYS_DIALOG_CREATE_VEH_COL_2, | |
116 | ADMSYS_DIALOG_ADMINS, | |
117 | ADMSYS_DIALOG_SUSPECT_LIST, | |
118 | ADMSYS_DIALOG_GMTEST | |
119 | } | |
120 | ||
121 | enum asInfo | |
122 | { | |
123 | Float:asGmTestHP, | |
124 | Float:asGmTestAR, | |
125 | Float:asLastAngle, | |
126 | Float:asLastPos[3], | |
127 | Float:asLastFloatData, | |
128 | asInput[ADMSYS_MAX_TAB_INPUT], | |
129 | asInput2[ADMSYS_MAX_TAB_INPUT], | |
130 | asLastWeapon[13], | |
131 | asLastIntData[2], | |
132 | asLastAmmo[13], | |
133 | asLastActionID, | |
134 | asLastAction, | |
135 | asLastSpecID, | |
136 | asGmTestID, | |
137 | asAdminLvl, | |
138 | asTabPanel, | |
139 | asMuteTime, | |
140 | asWarns, | |
141 | asSpecID, | |
142 | asLastVW, | |
143 | asLastInt, | |
144 | asUpdTimer, | |
145 | bool:asLastSpec, | |
146 | bool:asIsSpawned, | |
147 | bool:asIsDead, | |
148 | bool:asGmTest | |
149 | } | |
150 | ||
151 | static | |
152 | AdmSysInfo[MAX_PLAYERS][asInfo], | |
153 | SuspectList[ADMSYS_MAX_SUSPECTS_IN_TABLE] = {INVALID_PLAYER_ID, ...}, | |
154 | AdmSysCmdsStr[2018]; | |
155 | ||
156 | forward OnPlayerBan(playerid, gaveid, bool:sban); | |
157 | forward OnPlayerKick(playerid, gaveid, bool:skick); | |
158 | forward OnPlayerWarn(playerid, gaveid, count); | |
159 | ||
160 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
161 | hook OnGameModeInit() | |
162 | #else | |
163 | public OnGameModeInit() | |
164 | #endif | |
165 | { | |
166 | print(" "); | |
167 | print(" Admin System by Nexius loaded!"); | |
168 | printf(" Version: %s", ADMSYS_VERSION); | |
169 | print(" "); | |
170 | for(new i; i < sizeof AdmSysCmds; i++) strcat(AdmSysCmdsStr, AdmSysCmds[i]); | |
171 | SetTimer("UpdateMuteTime", 1000, 1); | |
172 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
173 | && defined admsys_OnGameModeInit | |
174 | return admsys_OnGameModeInit(); | |
175 | #else | |
176 | return 1; | |
177 | #endif | |
178 | } | |
179 | ||
180 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
181 | #if defined _ALS_OnGameModeInit | |
182 | #undef OnGameModeInit | |
183 | #else | |
184 | #define _ALS_OnGameModeInit | |
185 | #endif | |
186 | #define OnGameModeInit admsys_OnGameModeInit | |
187 | #if defined admsys_OnGameModeInit | |
188 | forward admsys_OnGameModeInit(); | |
189 | #endif | |
190 | #endif | |
191 | ||
192 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
193 | hook OnGameModeExit() | |
194 | #else | |
195 | public OnGameModeExit() | |
196 | #endif | |
197 | { | |
198 | print(" "); | |
199 | print(" Admin System by Nexius unloaded!"); | |
200 | print(" "); | |
201 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
202 | && defined admsys_OnGameModeExit | |
203 | return admsys_OnGameModeExit(); | |
204 | #else | |
205 | return 1; | |
206 | #endif | |
207 | } | |
208 | ||
209 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
210 | #if defined _ALS_OnGameModeExit | |
211 | #undef OnGameModeExit | |
212 | #else | |
213 | #define _ALS_OnGameModeExit | |
214 | #endif | |
215 | #define OnGameModeExit admsys_OnGameModeExit | |
216 | #if defined admsys_OnGameModeExit | |
217 | forward admsys_OnGameModeExit(); | |
218 | #endif | |
219 | #endif | |
220 | ||
221 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
222 | hook OnPlayerConnect(playerid) | |
223 | #else | |
224 | public OnPlayerConnect(playerid) | |
225 | #endif | |
226 | { | |
227 | AdmSysInfo[playerid][asWarns] = 0; | |
228 | AdmSysInfo[playerid][asMuteTime] = 0; | |
229 | AdmSysInfo[playerid][asAdminLvl] = 0; | |
230 | AdmSysInfo[playerid][asUpdTimer] = -1; | |
231 | AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID; | |
232 | AdmSysInfo[playerid][asGmTestID] = INVALID_PLAYER_ID; | |
233 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
234 | AdmSysInfo[playerid][asIsSpawned] = false; | |
235 | AdmSysInfo[playerid][asIsDead] = false; | |
236 | AdmSysInfo[playerid][asGmTest] = false; | |
237 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
238 | && defined admsys_OnPlayerConnect | |
239 | return admsys_OnPlayerConnect(playerid); | |
240 | #else | |
241 | return 1; | |
242 | #endif | |
243 | } | |
244 | ||
245 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
246 | #if defined _ALS_OnPlayerConnect | |
247 | #undef OnPlayerConnect | |
248 | #else | |
249 | #define _ALS_OnPlayerConnect | |
250 | #endif | |
251 | #define OnPlayerConnect admsys_OnPlayerConnect | |
252 | #if defined admsys_OnPlayerConnect | |
253 | forward admsys_OnPlayerConnect(playerid); | |
254 | #endif | |
255 | #endif | |
256 | ||
257 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
258 | hook OnPlayerDisconnect(playerid, reason) | |
259 | #else | |
260 | public OnPlayerDisconnect(playerid, reason) | |
261 | #endif | |
262 | { | |
263 | AdmSysInfo[playerid][asLastAction] = 0; | |
264 | KillTimer(AdmSysInfo[playerid][asUpdTimer]); | |
265 | #if defined foreach | |
266 | foreach(new i : Player) | |
267 | #else | |
268 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
269 | { | |
270 | if(IsPlayerConnected(i)) | |
271 | #endif | |
272 | { | |
273 | if(AdmSysInfo[i][asSpecID] == playerid) | |
274 | { | |
275 | SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Игрок отключился"); | |
276 | StopSpectating(i); | |
277 | } | |
278 | } | |
279 | #if !defined foreach | |
280 | } | |
281 | #endif | |
282 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
283 | && defined admsys_OnPlayerDisconnect | |
284 | return admsys_OnPlayerDisconnect(playerid, reason); | |
285 | #else | |
286 | return 1; | |
287 | #endif | |
288 | } | |
289 | ||
290 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
291 | #if defined _ALS_OnPlayerDisconnect | |
292 | #undef OnPlayerDisconnect | |
293 | #else | |
294 | #define _ALS_OnPlayerDisconnect | |
295 | #endif | |
296 | #define OnPlayerDisconnect admsys_OnPlayerDisconnect | |
297 | #if defined admsys_OnPlayerDisconnect | |
298 | forward admsys_OnPlayerDisconnect(playerid, reason); | |
299 | #endif | |
300 | #endif | |
301 | ||
302 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
303 | hook OnPlayerSpawn(playerid) | |
304 | #else | |
305 | public OnPlayerSpawn(playerid) | |
306 | #endif | |
307 | { | |
308 | if(IsPlayerSpectating(playerid)) | |
309 | { | |
310 | for(new i = 12; i != -1; --i) | |
311 | GivePlayerWeapon(playerid, AdmSysInfo[playerid][asLastWeapon][i], AdmSysInfo[playerid][asLastAmmo][i]); | |
312 | SetPlayerPos(playerid, AdmSysInfo[playerid][asLastPos][0], | |
313 | AdmSysInfo[playerid][asLastPos][1], AdmSysInfo[playerid][asLastPos][2]); | |
314 | SetPlayerFacingAngle(playerid, AdmSysInfo[playerid][asLastAngle]); | |
315 | SetPlayerVirtualWorld(playerid, AdmSysInfo[playerid][asLastVW]); | |
316 | SetPlayerInterior(playerid, AdmSysInfo[playerid][asLastInt]); | |
317 | } | |
318 | AdmSysInfo[playerid][asSpecID] = INVALID_PLAYER_ID; | |
319 | AdmSysInfo[playerid][asIsSpawned] = true; | |
320 | AdmSysInfo[playerid][asLastSpec] = false; | |
321 | AdmSysInfo[playerid][asIsDead] = false; | |
322 | #if defined foreach | |
323 | foreach(new i : Player) | |
324 | #else | |
325 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
326 | { | |
327 | if(IsPlayerConnected(i)) | |
328 | #endif | |
329 | { | |
330 | if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i); | |
331 | } | |
332 | #if !defined foreach | |
333 | } | |
334 | #endif | |
335 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
336 | && defined admsys_OnPlayerSpawn | |
337 | return admsys_OnPlayerSpawn(playerid); | |
338 | #else | |
339 | return 1; | |
340 | #endif | |
341 | } | |
342 | ||
343 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
344 | #if defined _ALS_OnPlayerSpawn | |
345 | #undef OnPlayerSpawn | |
346 | #else | |
347 | #define _ALS_OnPlayerSpawn | |
348 | #endif | |
349 | #define OnPlayerSpawn admsys_OnPlayerSpawn | |
350 | #if defined admsys_OnPlayerSpawn | |
351 | forward admsys_OnPlayerSpawn(playerid); | |
352 | #endif | |
353 | #endif | |
354 | ||
355 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
356 | hook OnPlayerDeath(playerid, killerid, reason) | |
357 | #else | |
358 | public OnPlayerDeath(playerid, killerid, reason) | |
359 | #endif | |
360 | { | |
361 | new Float:pX, Float:pY, Float:pZ, Float:cX, Float:cY, Float:cZ, interior, vw; | |
362 | GetPlayerCameraPos(playerid, cX, cY, cZ); | |
363 | GetPlayerPos(playerid, pX, pY, pZ); | |
364 | interior = GetPlayerInterior(playerid); | |
365 | vw = GetPlayerVirtualWorld(playerid); | |
366 | #if defined foreach | |
367 | foreach(new i : Player) | |
368 | #else | |
369 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
370 | { | |
371 | if(IsPlayerConnected(i)) | |
372 | #endif | |
373 | { | |
374 | if(AdmSysInfo[i][asSpecID] == playerid) | |
375 | { | |
376 | SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Игрок умер"); | |
377 | SetPlayerCameraPos(i, cX, cY, cZ); | |
378 | SetPlayerCameraLookAt(i, pX, pY, pZ); | |
379 | SetPlayerInterior(i, interior); | |
380 | SetPlayerVirtualWorld(i, vw); | |
381 | } | |
382 | } | |
383 | #if !defined foreach | |
384 | } | |
385 | #endif | |
386 | AdmSysInfo[playerid][asIsSpawned] = false; | |
387 | AdmSysInfo[playerid][asIsDead] = true; | |
388 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
389 | && defined admsys_OnPlayerDeath | |
390 | return admsys_OnPlayerDeath(playerid, killerid, reason); | |
391 | #else | |
392 | return 1; | |
393 | #endif | |
394 | } | |
395 | ||
396 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
397 | #if defined _ALS_OnPlayerDeath | |
398 | #undef OnPlayerDeath | |
399 | #else | |
400 | #define _ALS_OnPlayerDeath | |
401 | #endif | |
402 | #define OnPlayerDeath admsys_OnPlayerDeath | |
403 | #if defined admsys_OnPlayerDeath | |
404 | forward admsys_OnPlayerDeath(playerid, killerid, reason); | |
405 | #endif | |
406 | #endif | |
407 | ||
408 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
409 | hook OnPlayerText(playerid, text[]) | |
410 | #else | |
411 | public OnPlayerText(playerid, text[]) | |
412 | #endif | |
413 | { | |
414 | static strtmp[61]; | |
415 | if(AdmSysInfo[playerid][asMuteTime]) | |
416 | { | |
417 | format(strtmp, sizeof strtmp, "Вы заглушены. До конца молчанки осталось %d минут %d секунд", | |
418 | floatround(AdmSysInfo[playerid][asMuteTime] / 60, floatround_tozero), AdmSysInfo[playerid][asMuteTime] % 60); | |
419 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
420 | return 0; | |
421 | } | |
422 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
423 | && defined admsys_OnPlayerText | |
424 | return admsys_OnPlayerText(playerid, text); | |
425 | #else | |
426 | return 1; | |
427 | #endif | |
428 | } | |
429 | ||
430 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
431 | #if defined _ALS_OnPlayerText | |
432 | #undef OnPlayerText | |
433 | #else | |
434 | #define _ALS_OnPlayerText | |
435 | #endif | |
436 | #define OnPlayerText admsys_OnPlayerText | |
437 | #if defined admsys_OnPlayerText | |
438 | forward admsys_OnPlayerText(playerid, text[]); | |
439 | #endif | |
440 | #endif | |
441 | ||
442 | #if !defined YCMD && !defined _I_ZCMD_INCLUDED | |
443 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
444 | hook OnPlayerCommandText(playerid, cmdtext[]) | |
445 | #else | |
446 | public OnPlayerCommandText(playerid, cmdtext[]) | |
447 | #endif | |
448 | { | |
449 | static params[112]; | |
450 | new cmd[32], pos; | |
451 | params[0] = EOS; | |
452 | while(cmdtext[pos] > ' ') | |
453 | { | |
454 | cmd[pos] = cmdtext[pos]; | |
455 | pos++; | |
456 | } | |
457 | while(cmdtext[pos] == ' ') | |
458 | { | |
459 | pos++; | |
460 | if(!cmdtext[pos]) | |
461 | { | |
462 | params = "\1"; | |
463 | break; | |
464 | } | |
465 | } | |
466 | strcat(params, cmdtext[pos]); | |
467 | if(!strcmp(cmd, "/report", true)) return admsys_cmd_report(playerid, params); | |
468 | if(!strcmp(cmd, "/achat", true) || !strcmp(cmd, "/adminchat", true)) return admsys_cmd_achat(playerid, params); | |
469 | if(!strcmp(cmd, "/ahelp", true) || !strcmp(cmd, "/adminhelp", true)) return admsys_cmd_ahelp(playerid, params); | |
470 | if(!strcmp(cmd, "/showstats", true)) return admsys_cmd_showstats(playerid, params); | |
471 | if(!strcmp(cmd, "/answer", true)) return admsys_cmd_answer(playerid, params); | |
472 | if(!strcmp(cmd, "/apanel", true) || !strcmp(cmd, "/adminpanel", true)) return admsys_cmd_apanel(playerid, params); | |
473 | if(!strcmp(cmd, "/admins", true)) return admsys_cmd_admins(playerid, params); | |
474 | if(!strcmp(cmd, "/eject", true)) return admsys_cmd_eject(playerid, params); | |
475 | ||
476 | if(!strcmp(cmd, "/spec", true)) return admsys_cmd_spec(playerid, params); | |
477 | if(!strcmp(cmd, "/specupdate", true)) return admsys_cmd_specupdate(playerid, params); | |
478 | if(!strcmp(cmd, "/specoff", true)) return admsys_cmd_specoff(playerid, params); | |
479 | if(!strcmp(cmd, "/spawnveh", true)) return admsys_cmd_spawnveh(playerid, params); | |
480 | if(!strcmp(cmd, "/mute", true)) return admsys_cmd_mute(playerid, params); | |
481 | if(!strcmp(cmd, "/unmute", true)) return admsys_cmd_unmute(playerid, params); | |
482 | if(!strcmp(cmd, "/asay", true)) return admsys_cmd_asay(playerid, params); | |
483 | if(!strcmp(cmd, "/warn", true)) return admsys_cmd_warn(playerid, params); | |
484 | if(!strcmp(cmd, "/kick", true)) return admsys_cmd_kick(playerid, params); | |
485 | if(!strcmp(cmd, "/freeze", true)) return admsys_cmd_freeze(playerid, params); | |
486 | if(!strcmp(cmd, "/unfreeze", true)) return admsys_cmd_unfreeze(playerid, params); | |
487 | if(!strcmp(cmd, "/slap", true)) return admsys_cmd_slap(playerid, params); | |
488 | if(!strcmp(cmd, "/goto", true)) return admsys_cmd_goto(playerid, params); | |
489 | ||
490 | if(!strcmp(cmd, "/suspectlist", true)) return admsys_cmd_suspectlist(playerid, params); | |
491 | if(!strcmp(cmd, "/gethere", true) || !strcmp(cmd, "/get", true)) return admsys_cmd_gethere(playerid, params); | |
492 | if(!strcmp(cmd, "/gotoveh", true)) return admsys_cmd_gotoveh(playerid, params); | |
493 | if(!strcmp(cmd, "/ban", true)) return admsys_cmd_ban(playerid, params); | |
494 | if(!strcmp(cmd, "/gmtest", true)) return admsys_cmd_gmtest(playerid, params); | |
495 | if(!strcmp(cmd, "/spawn", true)) return admsys_cmd_spawn(playerid, params); | |
496 | if(!strcmp(cmd, "/unwarn", true)) return admsys_cmd_unwarn(playerid, params); | |
497 | if(!strcmp(cmd, "/banip", true)) return admsys_cmd_banip(playerid, params); | |
498 | if(!strcmp(cmd, "/cc", true) || !strcmp(cmd, "/clearchat", true)) return admsys_cmd_cc(playerid, params); | |
499 | ||
500 | if(!strcmp(cmd, "/sethealth", true)) return admsys_cmd_sethealth(playerid, params); | |
501 | if(!strcmp(cmd, "/setarmour", true)) return admsys_cmd_setarmour(playerid, params); | |
502 | if(!strcmp(cmd, "/setmoney", true)) return admsys_cmd_setmoney(playerid, params); | |
503 | if(!strcmp(cmd, "/setskin", true)) return admsys_cmd_setskin(playerid, params); | |
504 | if(!strcmp(cmd, "/setint", true) || !strcmp(cmd, "/setinterior", true)) return admsys_cmd_setint(playerid, params); | |
505 | if(!strcmp(cmd, "/setvw", true) || !strcmp(cmd, "/setvirtualworld", true)) return admsys_cmd_setvw(playerid, params); | |
506 | if(!strcmp(cmd, "/giveweapon", true)) return admsys_cmd_giveweapon(playerid, params); | |
507 | if(!strcmp(cmd, "/repairveh", true)) return admsys_cmd_repairveh(playerid, params); | |
508 | if(!strcmp(cmd, "/unbanip", true)) return admsys_cmd_unbanip(playerid, params); | |
509 | ||
510 | if(!strcmp(cmd, "/setweather", true)) return admsys_cmd_setweather(playerid, params); | |
511 | if(!strcmp(cmd, "/getall", true)) return admsys_cmd_getall(playerid, params); | |
512 | if(!strcmp(cmd, "/settime", true)) return admsys_cmd_settime(playerid, params); | |
513 | if(!strcmp(cmd, "/destroyveh", true)) return admsys_cmd_destroyveh(playerid, params); | |
514 | if(!strcmp(cmd, "/veh", true) || !strcmp(cmd, "/vehicle", true)) return admsys_cmd_veh(playerid, params); | |
515 | if(!strcmp(cmd, "/sban", true)) return admsys_cmd_sban(playerid, params); | |
516 | if(!strcmp(cmd, "/skick", true)) return admsys_cmd_skick(playerid, params); | |
517 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
518 | && defined admsys_OnPlayerCommandText | |
519 | return admsys_OnPlayerCommandText(playerid, cmdtext); | |
520 | #else | |
521 | return 0; | |
522 | #endif | |
523 | } | |
524 | ||
525 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
526 | #if defined _ALS_OnPlayerCommandText | |
527 | #undef OnPlayerCommandText | |
528 | #else | |
529 | #define _ALS_OnPlayerCommandText | |
530 | #endif | |
531 | #define OnPlayerCommandText admsys_OnPlayerCommandText | |
532 | #if defined admsys_OnPlayerCommandText | |
533 | forward admsys_OnPlayerCommandText(playerid, cmdtext[]); | |
534 | #endif | |
535 | #endif | |
536 | #endif | |
537 | ||
538 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
539 | hook OnPlayerStateChange(playerid, newstate, oldstate) | |
540 | #else | |
541 | public OnPlayerStateChange(playerid, newstate, oldstate) | |
542 | #endif | |
543 | { | |
544 | if(newstate == 9) | |
545 | { | |
546 | #if defined foreach | |
547 | foreach(new i : Player) | |
548 | #else | |
549 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
550 | { | |
551 | if(IsPlayerConnected(i)) | |
552 | #endif | |
553 | { | |
554 | if(AdmSysInfo[i][asSpecID] == playerid) | |
555 | { | |
556 | SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Игрок в режиме наблюдения"); | |
557 | StopSpectating(i); | |
558 | } | |
559 | } | |
560 | #if !defined foreach | |
561 | } | |
562 | #endif | |
563 | } | |
564 | else if(1 < newstate < 4 || 1 < oldstate < 4) | |
565 | { | |
566 | #if defined foreach | |
567 | foreach(new i : Player) | |
568 | #else | |
569 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
570 | { | |
571 | if(IsPlayerConnected(i)) | |
572 | #endif | |
573 | { | |
574 | if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i); | |
575 | } | |
576 | #if !defined foreach | |
577 | } | |
578 | #endif | |
579 | } | |
580 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
581 | && defined admsys_OnPlayerStateChange | |
582 | return admsys_OnPlayerStateChange(playerid, newstate, oldstate); | |
583 | #else | |
584 | return 1; | |
585 | #endif | |
586 | } | |
587 | ||
588 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
589 | #if defined _ALS_OnPlayerStateChange | |
590 | #undef OnPlayerStateChange | |
591 | #else | |
592 | #define _ALS_OnPlayerStateChange | |
593 | #endif | |
594 | #define OnPlayerStateChange admsys_OnPlayerStateChange | |
595 | #if defined admsys_OnPlayerStateChange | |
596 | forward admsys_OnPlayerStateChange(playerid, newstate, oldstate); | |
597 | #endif | |
598 | #endif | |
599 | ||
600 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
601 | hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) | |
602 | #else | |
603 | public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) | |
604 | #endif | |
605 | { | |
606 | switch(dialogid) | |
607 | { | |
608 | case ADMSYS_DIALOG_TAB_PANEL: | |
609 | { | |
610 | if(response) | |
611 | { | |
612 | static strtmp[3]; | |
613 | format(strtmp, sizeof strtmp, "%d", AdmSysInfo[playerid][asTabPanel]); | |
614 | switch(listitem) | |
615 | { | |
616 | case 0: admsys_cmd_showstats(playerid, strtmp); | |
617 | case 1: | |
618 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ANSWER, 1, "Ответить на report", "Введите ответ на report:", "Ок", "Закрыть"); | |
619 | case 2: admsys_cmd_eject(playerid, strtmp); | |
620 | case 3: admsys_cmd_spec(playerid, strtmp); | |
621 | case 4: | |
622 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, 1, "Выдать молчанку", "Введите время молчанки:", "Ок", "Закрыть"); | |
623 | case 5: admsys_cmd_unmute(playerid, strtmp); | |
624 | case 6: | |
625 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_WARN, 1, "Выдать предупреждение", "Введите причину выдачи предупреждения:", "Ок", "Закрыть"); | |
626 | case 7: | |
627 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_KICK, 1, "Выкинуть с сервера", "Введите причину кика:", "Ок", "Закрыть"); | |
628 | case 8: admsys_cmd_freeze(playerid, strtmp); | |
629 | case 9: admsys_cmd_unfreeze(playerid, strtmp); | |
630 | case 10: | |
631 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SLAP, 1, "Дать пинка", "Введите причину выдачи пинка:", "Ок", "Закрыть"); | |
632 | case 11: admsys_cmd_goto(playerid, strtmp); | |
633 | case 12: admsys_cmd_gethere(playerid, strtmp); | |
634 | case 13: | |
635 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN, 1, "Заблокировать аккаунт", "Введите причину блокировки:", "Ок", "Закрыть"); | |
636 | case 14: admsys_cmd_gmtest(playerid, strtmp); | |
637 | case 15: admsys_cmd_spawn(playerid, strtmp); | |
638 | case 16: admsys_cmd_unwarn(playerid, strtmp); | |
639 | case 17: | |
640 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_HEALTH, 1, "Выдать здоровье", "Введите количество здоровья, которое вы хотите выдать:", "Ок", "Закрыть"); | |
641 | case 18: | |
642 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_ARMOUR, 1, "Выдать броню", "Введите количество брони, которое вы хотите выдать:", "Ок", "Закрыть"); | |
643 | case 19: | |
644 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_MONEY, 1, "Выдать деньги", "Введите количество денег, которое вы хотите выдать:", "Ок", "Закрыть"); | |
645 | case 20: | |
646 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CHANGE_SKIN, 1, "Установить скин", "Введите ID скина, который вы хотите установить:", "Ок", "Закрыть"); | |
647 | case 21: | |
648 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_INT, 1, "Установить интерьер", "Введите ID интерьера, который вы хотите установить:", "Ок", "Закрыть"); | |
649 | case 22: | |
650 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_VW, 1, "Установить виртуальный мир", "Введите ID виртуального мира, который вы хотите установить:", "Ок", "Закрыть"); | |
651 | case 23: | |
652 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, 1, "Выдать оружие", "Введите ID оружия, которое вы хотите выдать:", "Ок", "Закрыть"); | |
653 | case 24: admsys_cmd_sban(playerid, strtmp); | |
654 | case 25: admsys_cmd_skick(playerid, strtmp); | |
655 | } | |
656 | } | |
657 | return 1; | |
658 | } | |
659 | case ADMSYS_DIALOG_ANSWER: | |
660 | { | |
661 | if(response) | |
662 | { | |
663 | if(!inputtext[0]) | |
664 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ANSWER, 1, "Ответить на report", "Введите ответ на report:", "Ок", "Закрыть"); | |
665 | else | |
666 | { | |
667 | static strtmp[145]; | |
668 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
669 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
670 | admsys_cmd_answer(playerid, strtmp); | |
671 | } | |
672 | } | |
673 | return 1; | |
674 | } | |
675 | case ADMSYS_DIALOG_MUTE_TIME: | |
676 | { | |
677 | if(response) | |
678 | { | |
679 | if(!inputtext[0]) | |
680 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, 1, "Выдать молчанку", "Введите время молчанки:", "Ок", "Закрыть"); | |
681 | else | |
682 | { | |
683 | format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext); | |
684 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE, 1, "Выдать молчанку", "Введите причину выдачи молчанки:", "Ок", "Назад"); | |
685 | } | |
686 | } | |
687 | return 1; | |
688 | } | |
689 | case ADMSYS_DIALOG_MUTE: | |
690 | { | |
691 | if(response) | |
692 | { | |
693 | if(!inputtext[0]) | |
694 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE, 1, "Выдать молчанку", "Введите причину выдачи молчанки:", "Ок", "Назад"); | |
695 | else | |
696 | { | |
697 | static strtmp[145]; | |
698 | format(strtmp, sizeof strtmp, "%d %s %s", AdmSysInfo[playerid][asTabPanel], AdmSysInfo[playerid][asInput], inputtext); | |
699 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
700 | admsys_cmd_mute(playerid, strtmp); | |
701 | } | |
702 | } | |
703 | else ShowPlayerDialog(playerid, ADMSYS_DIALOG_MUTE_TIME, 1, "Выдать молчанку", "Введите время молчанки:", "Ок", "Закрыть"); | |
704 | return 1; | |
705 | } | |
706 | case ADMSYS_DIALOG_WARN: | |
707 | { | |
708 | if(response) | |
709 | { | |
710 | if(!inputtext[0]) | |
711 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_WARN, 1, "Выдать предупреждение", "Введите причину выдачи предупреждения:", "Ок", "Закрыть"); | |
712 | else | |
713 | { | |
714 | static strtmp[145]; | |
715 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
716 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
717 | admsys_cmd_warn(playerid, strtmp); | |
718 | } | |
719 | } | |
720 | return 1; | |
721 | } | |
722 | case ADMSYS_DIALOG_KICK: | |
723 | { | |
724 | if(response) | |
725 | { | |
726 | if(!inputtext[0]) | |
727 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_KICK, 1, "Выкинуть с сервера", "Введите причину кика:", "Ок", "Закрыть"); | |
728 | else | |
729 | { | |
730 | static strtmp[145]; | |
731 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
732 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
733 | admsys_cmd_kick(playerid, strtmp); | |
734 | } | |
735 | } | |
736 | return 1; | |
737 | } | |
738 | case ADMSYS_DIALOG_SLAP: | |
739 | { | |
740 | if(response) | |
741 | { | |
742 | if(!inputtext[0]) | |
743 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SLAP, 1, "Дать пинка", "Введите причину выдачи пинка:", "Ок", "Закрыть"); | |
744 | else | |
745 | { | |
746 | static strtmp[145]; | |
747 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
748 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
749 | admsys_cmd_slap(playerid, strtmp); | |
750 | } | |
751 | } | |
752 | return 1; | |
753 | } | |
754 | case ADMSYS_DIALOG_BAN: | |
755 | { | |
756 | if(response) | |
757 | { | |
758 | if(!inputtext[0]) | |
759 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN, 1, "Заблокировать аккаунт", "Введите причину блокировки:", "Ок", "Закрыть"); | |
760 | else | |
761 | { | |
762 | static strtmp[145]; | |
763 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
764 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
765 | admsys_cmd_ban(playerid, strtmp); | |
766 | } | |
767 | } | |
768 | return 1; | |
769 | } | |
770 | case ADMSYS_DIALOG_SET_HEALTH: | |
771 | { | |
772 | if(response) | |
773 | { | |
774 | if(!inputtext[0]) | |
775 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_HEALTH, 1, "Выдать здоровье", "Введите количество здоровья, которое вы хотите выдать:", "Ок", "Закрыть"); | |
776 | else | |
777 | { | |
778 | static strtmp[32]; | |
779 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
780 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
781 | admsys_cmd_sethealth(playerid, strtmp); | |
782 | } | |
783 | } | |
784 | return 1; | |
785 | } | |
786 | case ADMSYS_DIALOG_SET_ARMOUR: | |
787 | { | |
788 | if(response) | |
789 | { | |
790 | if(!inputtext[0]) | |
791 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_ARMOUR, 1, "Выдать броню", "Введите количество брони, которое вы хотите выдать:", "Ок", "Закрыть"); | |
792 | else | |
793 | { | |
794 | static strtmp[32]; | |
795 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
796 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
797 | admsys_cmd_setarmour(playerid, strtmp); | |
798 | } | |
799 | } | |
800 | return 1; | |
801 | } | |
802 | case ADMSYS_DIALOG_SET_MONEY: | |
803 | { | |
804 | if(response) | |
805 | { | |
806 | if(!inputtext[0]) | |
807 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_MONEY, 1, "Выдать деньги", "Введите количество денег, которое вы хотите выдать:", "Ок", "Закрыть"); | |
808 | else | |
809 | { | |
810 | static strtmp[32]; | |
811 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
812 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
813 | admsys_cmd_setmoney(playerid, strtmp); | |
814 | } | |
815 | } | |
816 | return 1; | |
817 | } | |
818 | case ADMSYS_DIALOG_CHANGE_SKIN: | |
819 | { | |
820 | if(response) | |
821 | { | |
822 | if(!inputtext[0]) | |
823 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CHANGE_SKIN, 1, "Установить скин", "Введите ID скина, который вы хотите установить:", "Ок", "Закрыть"); | |
824 | else | |
825 | { | |
826 | static strtmp[32]; | |
827 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
828 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
829 | admsys_cmd_setskin(playerid, strtmp); | |
830 | } | |
831 | } | |
832 | return 1; | |
833 | } | |
834 | case ADMSYS_DIALOG_SET_INT: | |
835 | { | |
836 | if(response) | |
837 | { | |
838 | if(!inputtext[0]) | |
839 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_INT, 1, "Установить интерьер", "Введите ID интерьера, который вы хотите установить:", "Ок", "Закрыть"); | |
840 | else | |
841 | { | |
842 | static strtmp[32]; | |
843 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
844 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
845 | admsys_cmd_setint(playerid, strtmp); | |
846 | } | |
847 | } | |
848 | return 1; | |
849 | } | |
850 | case ADMSYS_DIALOG_SET_VW: | |
851 | { | |
852 | if(response) | |
853 | { | |
854 | if(!inputtext[0]) | |
855 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_VW, 1, "Установить виртуальный мир", "Введите ID виртуального мира, который вы хотите установить:", "Ок", "Закрыть"); | |
856 | else | |
857 | { | |
858 | static strtmp[32]; | |
859 | format(strtmp, sizeof strtmp, "%d %s", AdmSysInfo[playerid][asTabPanel], inputtext); | |
860 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
861 | admsys_cmd_setvw(playerid, strtmp); | |
862 | } | |
863 | } | |
864 | return 1; | |
865 | } | |
866 | case ADMSYS_DIALOG_GIVE_WEAPON: | |
867 | { | |
868 | if(response) | |
869 | { | |
870 | if(!inputtext[0]) | |
871 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, 1, "Выдать оружие", "Введите ID оружия, которое вы хотите выдать:", "Ок", "Закрыть"); | |
872 | else | |
873 | { | |
874 | format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext); | |
875 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON_AMMO, 1, "Выдать оружие", "Введите количество патронов, которое вы хотите выдать:", "Ок", "Назад"); | |
876 | } | |
877 | } | |
878 | return 1; | |
879 | } | |
880 | case ADMSYS_DIALOG_GIVE_WEAPON_AMMO: | |
881 | { | |
882 | if(response) | |
883 | { | |
884 | if(!inputtext[0]) | |
885 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON_AMMO, 1, "Выдать оружие", "Введите количество патронов, которое вы хотите выдать:", "Ок", "Назад"); | |
886 | else | |
887 | { | |
888 | static strtmp[32]; | |
889 | format(strtmp, sizeof strtmp, "%d %s %s", AdmSysInfo[playerid][asTabPanel], AdmSysInfo[playerid][asInput], inputtext); | |
890 | AdmSysInfo[playerid][asTabPanel] = INVALID_PLAYER_ID; | |
891 | admsys_cmd_giveweapon(playerid, strtmp); | |
892 | } | |
893 | } | |
894 | else ShowPlayerDialog(playerid, ADMSYS_DIALOG_GIVE_WEAPON, 1, "Выдать оружие", "Введите ID оружия, которое вы хотите выдать:", "Ок", "Закрыть"); | |
895 | return 1; | |
896 | } | |
897 | case ADMSYS_DIALOG_APANEL: | |
898 | { | |
899 | if(response) | |
900 | { | |
901 | switch(listitem) | |
902 | { | |
903 | case 0: | |
904 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ACHAT, 1, "Админ чат", "Напишите ваше сообщение:", "Ок", "Закрыть"); | |
905 | case 1: admsys_cmd_ahelp(playerid, "\1"); | |
906 | case 2: admsys_cmd_admins(playerid, "\1"); | |
907 | case 3: | |
908 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SPAWN_VEH, 1, "Телепортировать транспорт на респавн", "Введите ID транспорта, который вы хотите заспавнить:", "Ок", "Закрыть"); | |
909 | case 4: | |
910 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ASAY, 1, "Сообщение от администратора", "Напишите ваше сообщение:", "Ок", "Закрыть"); | |
911 | case 5: admsys_cmd_suspectlist(playerid, "\1"); | |
912 | case 6: | |
913 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GOTO_VEH, 1, "Телепортироваться к транспорту", "Введите ID транспорта, к которому вы хотите телепортироваться:", "Ок", "Закрыть"); | |
914 | case 7: | |
915 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN_IP, 1, "Блокировка IP-адреса", "Введите IP-адрес, который вы хотите заблокировать:", "Ок", "Закрыть"); | |
916 | case 8: admsys_cmd_cc(playerid, "\1"); | |
917 | case 9: | |
918 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_REPAIR_VEH, 1, "Отремонтировать транспорт", "Введите ID транспорта, который вы хотите отремонтировать:", "Ок", "Закрыть"); | |
919 | case 10: | |
920 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_UNBAN_IP, 1, "Разблокировать IP-адрес", "Введите IP-адрес, который вы хотите разблокировать:", "Ок", "Закрыть"); | |
921 | case 11: admsys_cmd_getall(playerid, "\1"); | |
922 | case 12: | |
923 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_WEATHER, 1, "Установить погоду", "Введите ID погоды, которую вы хотите установить:", "Ок", "Закрыть"); | |
924 | case 13: | |
925 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_TIME, 1, "Установить время суток", "Введите час, который вы хотите установить:", "Ок", "Закрыть"); | |
926 | case 14: | |
927 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_DESTROY_VEH, 1, "Уничтожить транспорт", "Введите ID транспорта, который вы хотите уничтожить:", "Ок", "Закрыть"); | |
928 | case 15: | |
929 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, 1, "Создать транспорт", "Введите модель транспорта, который вы хотите создать:", "Ок", "Закрыть"); | |
930 | case 16: | |
931 | { | |
932 | if(AdmSysInfo[playerid][asLastAction]) | |
933 | { | |
934 | switch(AdmSysInfo[playerid][asLastAction]) | |
935 | { | |
936 | case 1: SetPlayerHealth(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastFloatData]); | |
937 | case 2: SetPlayerArmour(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastFloatData]); | |
938 | case 3: | |
939 | { | |
940 | ResetPlayerMoney(AdmSysInfo[playerid][asLastActionID]); | |
941 | GivePlayerMoney(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]); | |
942 | } | |
943 | case 4: SetPlayerSkin(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]); | |
944 | case 5: SetPlayerInterior(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]); | |
945 | case 6: SetPlayerVirtualWorld(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0]); | |
946 | case 7: | |
947 | GivePlayerWeapon(AdmSysInfo[playerid][asLastActionID], AdmSysInfo[playerid][asLastIntData][0], -AdmSysInfo[playerid][asLastIntData][1]); | |
948 | } | |
949 | AdmSysInfo[playerid][asLastAction] = 0; | |
950 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Команда отменена"); | |
951 | } | |
952 | } | |
953 | } | |
954 | } | |
955 | return 1; | |
956 | } | |
957 | case ADMSYS_DIALOG_ACHAT: | |
958 | { | |
959 | if(response) | |
960 | { | |
961 | if(!inputtext[0]) | |
962 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ACHAT, 1, "Админ чат", "Напишите ваше сообщение:", "Ок", "Закрыть"); | |
963 | else admsys_cmd_achat(playerid, inputtext); | |
964 | } | |
965 | return 1; | |
966 | } | |
967 | case ADMSYS_DIALOG_SPAWN_VEH: | |
968 | { | |
969 | if(response) | |
970 | { | |
971 | if(!inputtext[0]) admsys_cmd_spawnveh(playerid, "\1"); | |
972 | else admsys_cmd_spawnveh(playerid, inputtext); | |
973 | } | |
974 | return 1; | |
975 | } | |
976 | case ADMSYS_DIALOG_ASAY: | |
977 | { | |
978 | if(response) | |
979 | { | |
980 | if(!inputtext[0]) | |
981 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ASAY, 1, "Сообщение от администратора", "Напишите ваше сообщение:", "Ок", "Закрыть"); | |
982 | else admsys_cmd_asay(playerid, inputtext); | |
983 | } | |
984 | return 1; | |
985 | } | |
986 | case ADMSYS_DIALOG_GOTO_VEH: | |
987 | { | |
988 | if(response) | |
989 | { | |
990 | if(!inputtext[0]) | |
991 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GOTO_VEH, 1, "Телепортироваться к транспорту", "Введите ID транспорта, к которому вы хотите телепортироваться:", "Ок", "Закрыть"); | |
992 | else admsys_cmd_gotoveh(playerid, inputtext); | |
993 | } | |
994 | return 1; | |
995 | } | |
996 | case ADMSYS_DIALOG_BAN_IP: | |
997 | { | |
998 | if(response) | |
999 | { | |
1000 | if(!inputtext[0]) | |
1001 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_BAN_IP, 1, "Блокировка IP-адреса", "Введите IP-адрес, который вы хотите заблокировать:", "Ок", "Закрыть"); | |
1002 | else admsys_cmd_banip(playerid, inputtext); | |
1003 | } | |
1004 | return 1; | |
1005 | } | |
1006 | case ADMSYS_DIALOG_REPAIR_VEH: | |
1007 | { | |
1008 | if(response) | |
1009 | { | |
1010 | if(!inputtext[0]) admsys_cmd_repairveh(playerid, "\1"); | |
1011 | else admsys_cmd_repairveh(playerid, inputtext); | |
1012 | } | |
1013 | return 1; | |
1014 | } | |
1015 | case ADMSYS_DIALOG_UNBAN_IP: | |
1016 | { | |
1017 | if(response) | |
1018 | { | |
1019 | if(!inputtext[0]) | |
1020 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_UNBAN_IP, 1, "Разблокировать IP-адрес", "Введите IP-адрес, который вы хотите разблокировать:", "Ок", "Закрыть"); | |
1021 | else admsys_cmd_unbanip(playerid, inputtext); | |
1022 | } | |
1023 | return 1; | |
1024 | } | |
1025 | case ADMSYS_DIALOG_SET_WEATHER: | |
1026 | { | |
1027 | if(response) | |
1028 | { | |
1029 | if(!inputtext[0]) | |
1030 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_WEATHER, 1, "Установить погоду", "Введите ID погоды, которую вы хотите установить:", "Ок", "Закрыть"); | |
1031 | else admsys_cmd_setweather(playerid, inputtext); | |
1032 | } | |
1033 | return 1; | |
1034 | } | |
1035 | case ADMSYS_DIALOG_SET_TIME: | |
1036 | { | |
1037 | if(response) | |
1038 | { | |
1039 | if(!inputtext[0]) | |
1040 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_SET_TIME, 1, "Установить время суток", "Введите час, который вы хотите установить:", "Ок", "Закрыть"); | |
1041 | else admsys_cmd_settime(playerid, inputtext); | |
1042 | } | |
1043 | return 1; | |
1044 | } | |
1045 | case ADMSYS_DIALOG_DESTROY_VEH: | |
1046 | { | |
1047 | if(response) | |
1048 | { | |
1049 | if(!inputtext[0]) admsys_cmd_destroyveh(playerid, "\1"); | |
1050 | else admsys_cmd_destroyveh(playerid, inputtext); | |
1051 | } | |
1052 | return 1; | |
1053 | } | |
1054 | case ADMSYS_DIALOG_CREATE_VEH: | |
1055 | { | |
1056 | if(response) | |
1057 | { | |
1058 | if(!inputtext[0]) | |
1059 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, 1, "Создать транспорт", "Введите модель транспорта, который вы хотите создать:", "Ок", "Закрыть"); | |
1060 | else | |
1061 | { | |
1062 | format(AdmSysInfo[playerid][asInput], ADMSYS_MAX_TAB_INPUT, "%s", inputtext); | |
1063 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_1, 1, "Создать транспорт", "Введите цвет 1 для транспорта, который вы хотите создать:", "Ок", "Назад"); | |
1064 | } | |
1065 | } | |
1066 | return 1; | |
1067 | } | |
1068 | case ADMSYS_DIALOG_CREATE_VEH_COL_1: | |
1069 | { | |
1070 | if(response) | |
1071 | { | |
1072 | if(!inputtext[0]) admsys_cmd_veh(playerid, AdmSysInfo[playerid][asInput]); | |
1073 | else | |
1074 | { | |
1075 | format(AdmSysInfo[playerid][asInput2], ADMSYS_MAX_TAB_INPUT, "%s", inputtext); | |
1076 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_2, 1, "Создать транспорт", "Введите цвет 2 для транспорта, который вы хотите создать:", "Ок", "Назад"); | |
1077 | } | |
1078 | } | |
1079 | else ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH, 1, "Создать транспорт", "Введите модель транспорта, который вы хотите создать:", "Ок", "Закрыть"); | |
1080 | return 1; | |
1081 | } | |
1082 | case ADMSYS_DIALOG_CREATE_VEH_COL_2: | |
1083 | { | |
1084 | if(response) | |
1085 | { | |
1086 | if(!inputtext[0]) | |
1087 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_2, 1, "Создать транспорт", "Введите цвет 2 для транспорта, который вы хотите создать:", "Ок", "Назад"); | |
1088 | else | |
1089 | { | |
1090 | static strtmp[32]; | |
1091 | format(strtmp, sizeof strtmp, "%s %s %s", AdmSysInfo[playerid][asInput], AdmSysInfo[playerid][asInput2], inputtext); | |
1092 | admsys_cmd_veh(playerid, strtmp); | |
1093 | } | |
1094 | } | |
1095 | else ShowPlayerDialog(playerid, ADMSYS_DIALOG_CREATE_VEH_COL_1, 1, "Создать транспорт", "Введите цвет 1 для транспорта, который вы хотите создать:", "Ок", "Назад"); | |
1096 | return 1; | |
1097 | } | |
1098 | case ADMSYS_DIALOG_SUSPECT_LIST: | |
1099 | { | |
1100 | if(response && -1 < listitem < sizeof SuspectList) | |
1101 | { | |
1102 | if(!StartSpectating(playerid, SuspectList[listitem])) | |
1103 | { | |
1104 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок отключился"); | |
1105 | admsys_cmd_suspectlist(playerid, "\1"); | |
1106 | } | |
1107 | else if(AdmSysInfo[playerid][asSpecID] == SuspectList[listitem]) RemovePlayerFromSuspectList(SuspectList[listitem]); | |
1108 | } | |
1109 | return 1; | |
1110 | } | |
1111 | } | |
1112 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
1113 | && defined admsys_OnDialogResponse | |
1114 | return admsys_OnDialogResponse(playerid, dialogid, response, listitem, inputtext); | |
1115 | #else | |
1116 | return 0; | |
1117 | #endif | |
1118 | } | |
1119 | ||
1120 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
1121 | #if defined _ALS_OnDialogResponse | |
1122 | #undef OnDialogResponse | |
1123 | #else | |
1124 | #define _ALS_OnDialogResponse | |
1125 | #endif | |
1126 | #define OnDialogResponse admsys_OnDialogResponse | |
1127 | #if defined admsys_OnDialogResponse | |
1128 | forward admsys_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]); | |
1129 | #endif | |
1130 | #endif | |
1131 | ||
1132 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
1133 | hook OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) | |
1134 | #else | |
1135 | public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) | |
1136 | #endif | |
1137 | { | |
1138 | #if defined foreach | |
1139 | foreach(new i : Player) | |
1140 | #else | |
1141 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
1142 | { | |
1143 | if(IsPlayerConnected(i)) | |
1144 | #endif | |
1145 | { | |
1146 | if(AdmSysInfo[i][asSpecID] == playerid) UpdateSpectating(i); | |
1147 | } | |
1148 | #if !defined foreach | |
1149 | } | |
1150 | #endif | |
1151 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
1152 | && defined admsys_OnPlayerInteriorChange | |
1153 | return admsys_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid); | |
1154 | #else | |
1155 | return 1; | |
1156 | #endif | |
1157 | } | |
1158 | ||
1159 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
1160 | #if defined _ALS_OnPlayerInteriorChange | |
1161 | #undef OnPlayerInteriorChange | |
1162 | #else | |
1163 | #define _ALS_OnPlayerInteriorChange | |
1164 | #endif | |
1165 | #define OnPlayerInteriorChange admsys_OnPlayerInteriorChange | |
1166 | #if defined admsys_OnPlayerInteriorChange | |
1167 | forward admsys_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid); | |
1168 | #endif | |
1169 | #endif | |
1170 | ||
1171 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
1172 | hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys) | |
1173 | #else | |
1174 | public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) | |
1175 | #endif | |
1176 | { | |
1177 | if(GetPlayerState(playerid) == 9 && AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID) | |
1178 | { | |
1179 | if(newkeys & KEY_ANALOG_LEFT) | |
1180 | { | |
1181 | new ud = AdmSysInfo[playerid][asSpecID]; | |
1182 | AdmSysInfo[playerid][asSpecID]--; | |
1183 | while(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID]) || IsPlayerSpectating(AdmSysInfo[playerid][asSpecID]) || AdmSysInfo[playerid][asSpecID] == playerid) | |
1184 | { | |
1185 | AdmSysInfo[playerid][asSpecID]--; | |
1186 | if(AdmSysInfo[playerid][asSpecID] < 0) AdmSysInfo[playerid][asSpecID] = GetPlayerPoolSize(); | |
1187 | if(AdmSysInfo[playerid][asSpecID] == ud) break; | |
1188 | } | |
1189 | if(AdmSysInfo[playerid][asSpecID] != ud) UpdateSpectating(playerid); | |
1190 | } | |
1191 | else if(newkeys & KEY_ANALOG_RIGHT) | |
1192 | { | |
1193 | new ud = AdmSysInfo[playerid][asSpecID]; | |
1194 | AdmSysInfo[playerid][asSpecID]++; | |
1195 | while(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID]) || IsPlayerSpectating(AdmSysInfo[playerid][asSpecID]) || AdmSysInfo[playerid][asSpecID] == playerid) | |
1196 | { | |
1197 | AdmSysInfo[playerid][asSpecID]++; | |
1198 | if(AdmSysInfo[playerid][asSpecID] > GetPlayerPoolSize()) AdmSysInfo[playerid][asSpecID] = 0; | |
1199 | if(AdmSysInfo[playerid][asSpecID] == ud) break; | |
1200 | } | |
1201 | if(AdmSysInfo[playerid][asSpecID] != ud) UpdateSpectating(playerid); | |
1202 | } | |
1203 | } | |
1204 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
1205 | && defined admsys_OnPlayerKeyStateChange | |
1206 | return admsys_OnPlayerKeyStateChange(playerid, newkeys, oldkeys); | |
1207 | #else | |
1208 | return 1; | |
1209 | #endif | |
1210 | } | |
1211 | ||
1212 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
1213 | #if defined _ALS_OnPlayerKeyStateChange | |
1214 | #undef OnPlayerKeyStateChange | |
1215 | #else | |
1216 | #define _ALS_OnPlayerKeyStateChange | |
1217 | #endif | |
1218 | #define OnPlayerKeyStateChange admsys_OnPlayerKeyStateChange | |
1219 | #if defined admsys_OnPlayerKeyStateChange | |
1220 | forward admsys_OnPlayerKeyStateChange(playerid, newkeys, oldkeys); | |
1221 | #endif | |
1222 | #endif | |
1223 | ||
1224 | #if defined _inc_y_hooks || defined _INC_y_hooks | |
1225 | hook OnPlayerClickPlayer(playerid, clickedplayerid, source) | |
1226 | #else | |
1227 | public OnPlayerClickPlayer(playerid, clickedplayerid, source) | |
1228 | #endif | |
1229 | { | |
1230 | if(IsPlayerAdminEx(playerid)) | |
1231 | { | |
1232 | static strtmp[518], strtmp2[44], strname[24]; | |
1233 | strtmp[0] = EOS; | |
1234 | AdmSysInfo[playerid][asTabPanel] = clickedplayerid; | |
1235 | GetPlayerName(clickedplayerid, strname, sizeof strname); | |
1236 | format(strtmp2, sizeof strtmp2, "Админ-панель для %s", strname); | |
1237 | strcat(strtmp, "Показать статистику\nОтветить на report\nВысадить из транспорта"); | |
1238 | if(IsPlayerAdminEx(playerid, 2)) strcat(strtmp, "\nВойти в режим наблюдения\n\ | |
1239 | Выдать молчанку\nСнять молчанку\nВыдать предупреждение\nВыкинуть с сервера\n\ | |
1240 | Заморозить\nРазморозить\nДать пинка\nТелепортироваться к игроку"); | |
1241 | if(IsPlayerAdminEx(playerid, 3)) strcat(strtmp, "\nТелепортировать к себе\nЗаблокировать аккаунт\n\ | |
1242 | Проверка на бесконечное здоровье\nТелепортировать на респавн\nСнять предупреждение"); | |
1243 | if(IsPlayerAdminEx(playerid, 4)) strcat(strtmp, "\nВыдать здоровье\nВыдать броню\nВыдать деньги\n\ | |
1244 | Установить скин\nУстановить интерьер\nУстановить виртуальный мир\nВыдать оружие"); | |
1245 | if(IsPlayerAdminEx(playerid, 5)) strcat(strtmp, "\nТихая блокировка\nТихий кик"); | |
1246 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_TAB_PANEL, 2, strtmp2, strtmp, "Ок", "Закрыть"); | |
1247 | } | |
1248 | #if !defined _inc_y_hooks && !defined _INC_y_hooks\ | |
1249 | && defined admsys_OnPlayerClickPlayer | |
1250 | return admsys_OnPlayerClickPlayer(playerid, clickedplayerid, source); | |
1251 | #else | |
1252 | return 1; | |
1253 | #endif | |
1254 | } | |
1255 | ||
1256 | #if !defined _inc_y_hooks && !defined _INC_y_hooks | |
1257 | #if defined _ALS_OnPlayerClickPlayer | |
1258 | #undef OnPlayerClickPlayer | |
1259 | #else | |
1260 | #define _ALS_OnPlayerClickPlayer | |
1261 | #endif | |
1262 | #define OnPlayerClickPlayer admsys_OnPlayerClickPlayer | |
1263 | #if defined admsys_OnPlayerClickPlayer | |
1264 | forward admsys_OnPlayerClickPlayer(playerid, clickedplayerid, source); | |
1265 | #endif | |
1266 | #endif | |
1267 | ||
1268 | admsys_fpublic BanWithDelay(playerid) return Ban(playerid); | |
1269 | ||
1270 | admsys_fpublic KickWithDelay(playerid) return Kick(playerid); | |
1271 | ||
1272 | admsys_fpublic UpdateMuteTime() | |
1273 | { | |
1274 | #if defined foreach | |
1275 | foreach(new i : Player) | |
1276 | #else | |
1277 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
1278 | { | |
1279 | if(IsPlayerConnected(i)) | |
1280 | #endif | |
1281 | { | |
1282 | if(AdmSysInfo[i][asMuteTime] > 0) | |
1283 | { | |
1284 | AdmSysInfo[i][asMuteTime]--; | |
1285 | if(AdmSysInfo[i][asMuteTime] < 1) | |
1286 | SendClientMessage(i, ADMSYS_DEFAULT_COLOR, "Время молчанки истекло"); | |
1287 | } | |
1288 | } | |
1289 | #if !defined foreach | |
1290 | } | |
1291 | #endif | |
1292 | return 1; | |
1293 | } | |
1294 | ||
1295 | admsys_fpublic UpdateSpecInfo(playerid) | |
1296 | { | |
1297 | if(AdmSysInfo[playerid][asSpecID] != INVALID_PLAYER_ID) | |
1298 | { | |
1299 | static strtmp[101], sname[24], sip[16]; | |
1300 | GetPlayerIp(AdmSysInfo[playerid][asSpecID], sip, sizeof sip); | |
1301 | GetPlayerName(AdmSysInfo[playerid][asSpecID], sname, sizeof sname); | |
1302 | format(strtmp, sizeof strtmp, "~w~~n~~n~~n~~n~~n~~n~Nick: %s~n~ID: %d~n~IP: %s~n~Ping: %d", | |
1303 | sname, AdmSysInfo[playerid][asSpecID], sip, GetPlayerPing(AdmSysInfo[playerid][asSpecID])); | |
1304 | SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(AdmSysInfo[playerid][asSpecID])); | |
1305 | AdmSysInfo[playerid][asUpdTimer] = SetTimerEx("UpdateSpecInfo", 1000, false, "d", playerid); | |
1306 | GameTextForPlayer(playerid, strtmp, 1500, 3); | |
1307 | return 1; | |
1308 | } | |
1309 | return 0; | |
1310 | } | |
1311 | ||
1312 | admsys_fpublic GmTest(playerid) | |
1313 | { | |
1314 | if(AdmSysInfo[playerid][asGmTestID] != INVALID_PLAYER_ID) | |
1315 | { | |
1316 | if(AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTest]) | |
1317 | { | |
1318 | static strtmp[186]; | |
1319 | new vehid, Float:nowhp, Float:nowar, Float:hpdiff, Float:ardiff; | |
1320 | vehid = GetPlayerVehicleID(AdmSysInfo[playerid][asGmTestID]); | |
1321 | if(vehid) GetVehicleHealth(vehid, nowhp); | |
1322 | else | |
1323 | { | |
1324 | GetPlayerHealth(AdmSysInfo[playerid][asGmTestID], nowhp); | |
1325 | GetPlayerArmour(AdmSysInfo[playerid][asGmTestID], nowar); | |
1326 | } | |
1327 | hpdiff = AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP] - nowhp; | |
1328 | ardiff = AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR] - nowar; | |
1329 | if(!hpdiff && !ardiff) | |
1330 | { | |
1331 | format(strtmp, sizeof strtmp, "До:\t%.1f здоровья, %.1f брони\nПосле:\t%.1f здоровья, %.1f брони\nЗдоровье и броня не уменьшились\n\nВозможно, игрок использует GodMode.", | |
1332 | AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR], nowhp, nowar); | |
1333 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GMTEST, 0, "Проверка на GodMode", strtmp, "Закрыть", ""); | |
1334 | } | |
1335 | else | |
1336 | { | |
1337 | format(strtmp, sizeof strtmp, "До:\t%.1f здоровья, %.1f брони\nПосле:\t%.1f здоровья, %.1f брони\nЗдоровье уменьшилось на:\t%.1f\nБроня уменьшилась на:\t%.1f\n\nGodMode не обнаружено.\nЗдоровье и броня восстановлены.", | |
1338 | AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR], nowhp, nowar, hpdiff, ardiff); | |
1339 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_GMTEST, 0, "Проверка на GodMode", strtmp, "Закрыть", ""); | |
1340 | if(vehid) SetVehicleHealth(vehid, AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP]); | |
1341 | else | |
1342 | { | |
1343 | SetPlayerHealth(AdmSysInfo[playerid][asGmTestID], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestHP]); | |
1344 | SetPlayerArmour(AdmSysInfo[playerid][asGmTestID], AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTestAR]); | |
1345 | } | |
1346 | } | |
1347 | } | |
1348 | AdmSysInfo[AdmSysInfo[playerid][asGmTestID]][asGmTest] = false; | |
1349 | AdmSysInfo[playerid][asGmTestID] = INVALID_PLAYER_ID; | |
1350 | } | |
1351 | return 1; | |
1352 | } | |
1353 | ||
1354 | CMD:report(playerid, params[]) return admsys_cmd_report(playerid, params); | |
1355 | admsys_cmd_report(playerid, params[]) | |
1356 | { | |
1357 | static strtmp[145]; | |
1358 | if(AdmSysInfo[playerid][asMuteTime]) | |
1359 | { | |
1360 | format(strtmp, sizeof strtmp, "Вы заглушены. До конца молчанки осталось %d минут %d секунд", | |
1361 | floatround(AdmSysInfo[playerid][asMuteTime] / 60, floatround_tozero), AdmSysInfo[playerid][asMuteTime] % 60); | |
1362 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1363 | } | |
1364 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /report [текст]"); | |
1365 | static strname[24]; | |
1366 | GetPlayerName(playerid, strname, sizeof strname); | |
1367 | format(strtmp, sizeof strtmp, "[Report] %s[%d]: %s", strname, playerid, params); | |
1368 | SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp); | |
1369 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1370 | return 1; | |
1371 | } | |
1372 | ||
1373 | CMD:achat(playerid, params[]) return admsys_cmd_achat(playerid, params); | |
1374 | CMD:adminchat(playerid, params[]) return admsys_cmd_achat(playerid, params); | |
1375 | admsys_cmd_achat(playerid, params[]) | |
1376 | { | |
1377 | if(IsPlayerAdminEx(playerid)) | |
1378 | { | |
1379 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]"); | |
1380 | static strtmp[145], strname[24]; | |
1381 | strtmp = "[Админ чат] "; | |
1382 | GetPlayerName(playerid, strname, sizeof strname); | |
1383 | strcat(strtmp, strname); | |
1384 | strcat(strtmp, ": "); | |
1385 | strcat(strtmp, params); | |
1386 | SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp); | |
1387 | } | |
1388 | return 1; | |
1389 | } | |
1390 | ||
1391 | CMD:ahelp(playerid, params[]) return admsys_cmd_ahelp(playerid, params); | |
1392 | CMD:adminhelp(playerid, params[]) return admsys_cmd_ahelp(playerid, params); | |
1393 | admsys_cmd_ahelp(playerid, params[]) | |
1394 | { | |
1395 | #pragma unused params | |
1396 | if(IsPlayerAdminEx(playerid)) | |
1397 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_AHELP, 0, "Помощь по админ командам", AdmSysCmdsStr, "Ок", ""); | |
1398 | return 1; | |
1399 | } | |
1400 | ||
1401 | CMD:showstats(playerid, params[]) return admsys_cmd_showstats(playerid, params); | |
1402 | admsys_cmd_showstats(playerid, params[]) | |
1403 | { | |
1404 | if(IsPlayerAdminEx(playerid)) | |
1405 | { | |
1406 | if(admsys_isnull(params)) params[0] = playerid; | |
1407 | else | |
1408 | { | |
1409 | if(!admsys_IsNumeric(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /showstats [id]"); | |
1410 | params[0] = strval(params); | |
1411 | if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1412 | } | |
1413 | new Float:ghealth, Float:garmour; | |
1414 | static strtmp[40], strtmp2[200], strname[24], gip[16]; | |
1415 | GetPlayerName(params[0], strname, sizeof strname); | |
1416 | GetPlayerHealth(params[0], ghealth); | |
1417 | GetPlayerArmour(params[0], garmour); | |
1418 | GetPlayerIp(params[0], gip, sizeof gip); | |
1419 | format(strtmp, sizeof strtmp, "Информация о %s", strname); | |
1420 | format(strtmp2, sizeof strtmp2, "Здоровье: %.1f\nБроня: %.1f\nДеньги: %d\nИнтерьер: %d\nВиртуальный мир: %d\nУровень розыска: %d\nIP-адрес: %s\nPing: %d\nОружие: %d\nПатроны: %d\nScore: %d\nСкин: %d", | |
1421 | ghealth, garmour, GetPlayerMoney(params[0]), GetPlayerInterior(params[0]), GetPlayerVirtualWorld(params[0]), GetPlayerWantedLevel(params[0]), gip, GetPlayerPing(params[0]), | |
1422 | GetPlayerWeapon(params[0]), GetPlayerAmmo(params[0]), GetPlayerScore(params[0]), GetPlayerSkin(params[0])); | |
1423 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_STATS, 0, strtmp, strtmp2, "Ок", ""); | |
1424 | } | |
1425 | return 1; | |
1426 | } | |
1427 | ||
1428 | CMD:answer(playerid, params[]) return admsys_cmd_answer(playerid, params); | |
1429 | admsys_cmd_answer(playerid, params[]) | |
1430 | { | |
1431 | if(IsPlayerAdminEx(playerid)) | |
1432 | { | |
1433 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /answer [id] [текст]"); | |
1434 | new pos; | |
1435 | static strtmp[145]; | |
1436 | while(params[pos] > ' ') pos++; | |
1437 | strmid(strtmp, params, 0, pos); | |
1438 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /answer [id] [текст]"); | |
1439 | new giveid = strval(strtmp); | |
1440 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1441 | while(params[pos] == ' ') pos++; | |
1442 | if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /answer [id] [текст]"); | |
1443 | static strname[24], strname2[24]; | |
1444 | GetPlayerName(playerid, strname, sizeof strname); | |
1445 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1446 | format(strtmp, sizeof strtmp, "[Ответ на report %s] %s: %s", strname2, strname, params[pos]); | |
1447 | SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp); | |
1448 | strtmp = "[Ответ на report]: "; | |
1449 | strcat(strtmp, params[pos]); | |
1450 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1451 | } | |
1452 | return 1; | |
1453 | } | |
1454 | ||
1455 | CMD:apanel(playerid, params[]) return admsys_cmd_apanel(playerid, params); | |
1456 | CMD:adminpanel(playerid, params[]) return admsys_cmd_apanel(playerid, params); | |
1457 | admsys_cmd_apanel(playerid, params[]) | |
1458 | { | |
1459 | #pragma unused params | |
1460 | if(IsPlayerAdminEx(playerid)) | |
1461 | { | |
1462 | static strtmp[454]; | |
1463 | strtmp[0] = EOS; | |
1464 | strcat(strtmp, "Админ чат\nПомощь по админ командам\nПосмотреть список администраторов онлайн"); | |
1465 | if(IsPlayerAdminEx(playerid, 2)) strcat(strtmp, "\nТелепортировать транспорт на респавн\n\ | |
1466 | Сообщение в формате: 'Администратор: [текст]'"); | |
1467 | if(IsPlayerAdminEx(playerid, 3)) strcat(strtmp, "\nСписок подозреваемых игроков\n\ | |
1468 | Телепортироваться к транспорту\nБлокировка IP-адреса\nОчистка чата"); | |
1469 | if(IsPlayerAdminEx(playerid, 4)) strcat(strtmp, "\nОтремонтировать транспорт\nРазблокировать IP-адрес"); | |
1470 | if(IsPlayerAdminEx(playerid, 5)) strcat(strtmp, "\nТелепортировать всех к себе\nУстановить погоду\n\ | |
1471 | Установить время суток\nУничтожить транспорт\nСоздать транспорт"); | |
1472 | strcat(strtmp, "\nОтменить последнюю команду"); | |
1473 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_APANEL, 2, "Админ-панель", strtmp, "Ок", "Закрыть"); | |
1474 | } | |
1475 | return 1; | |
1476 | } | |
1477 | ||
1478 | CMD:admins(playerid, params[]) return admsys_cmd_admins(playerid, params); | |
1479 | admsys_cmd_admins(playerid, params[]) | |
1480 | { | |
1481 | #pragma unused params | |
1482 | if(IsPlayerAdminEx(playerid)) | |
1483 | { | |
1484 | static strtmp[306]; | |
1485 | strtmp[0] = EOS; | |
1486 | static strtmp2[61], strtmp3[24]; | |
1487 | #if defined foreach | |
1488 | foreach(new i : Player) | |
1489 | #else | |
1490 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
1491 | #endif | |
1492 | { | |
1493 | if(IsPlayerAdminEx(i)) | |
1494 | { | |
1495 | GetPlayerName(i, strtmp3, sizeof strtmp3); | |
1496 | format(strtmp2, sizeof strtmp2, "Администратор %s[%d] [Уровень %d]\n", strtmp3, i, GetPlayerAdminLevel(i)); | |
1497 | strcat(strtmp, strtmp2); | |
1498 | } | |
1499 | } | |
1500 | if(!strtmp[0]) strtmp = "В данный момент нет администраторов онлайн"; | |
1501 | ShowPlayerDialog(playerid, ADMSYS_DIALOG_ADMINS, 0, "Администраторы онлайн", strtmp, "Ок", ""); | |
1502 | } | |
1503 | return 1; | |
1504 | } | |
1505 | ||
1506 | CMD:eject(playerid, params[]) return admsys_cmd_eject(playerid, params); | |
1507 | admsys_cmd_eject(playerid, params[]) | |
1508 | { | |
1509 | if(IsPlayerAdminEx(playerid)) | |
1510 | { | |
1511 | new strtmp[67]; | |
1512 | if(admsys_isnull(params)) | |
1513 | { | |
1514 | format(strtmp, sizeof strtmp, "%d", playerid); | |
1515 | return admsys_cmd_eject(playerid, strtmp); | |
1516 | } | |
1517 | static strname[24], strname2[24]; | |
1518 | GetPlayerName(playerid, strname, sizeof strname); | |
1519 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
1520 | { | |
1521 | while(params[pos] == ' ') pos++; | |
1522 | if(params[pos]) | |
1523 | { | |
1524 | oldpos = pos; | |
1525 | while(params[pos] > ' ') pos++; | |
1526 | strmid(strtmp, params, oldpos, pos); | |
1527 | if(!admsys_IsNumeric(strtmp)) | |
1528 | { | |
1529 | strtmp = "Используйте: /eject [id]"; | |
1530 | if(i > 1) | |
1531 | { | |
1532 | for(j = 2; j <= i; j++) | |
1533 | { | |
1534 | format(strname2, sizeof strname2, " [id %d]", j); | |
1535 | strcat(strtmp, strname2); | |
1536 | } | |
1537 | } | |
1538 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1539 | } | |
1540 | giveid = strval(strtmp); | |
1541 | if(!IsPlayerConnected(giveid)) | |
1542 | { | |
1543 | if(i == 1) strtmp = "Игрок не найден"; | |
1544 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
1545 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1546 | } | |
1547 | else if(!IsPlayerInAnyVehicle(giveid)) | |
1548 | { | |
1549 | if(i == 1) | |
1550 | { | |
1551 | if(giveid == playerid) strtmp = "Вы не в транспорте"; | |
1552 | else strtmp = "Игрок не в транспорте"; | |
1553 | } | |
1554 | else format(strtmp, sizeof strtmp, "Игрок %d не в транспорте", i); | |
1555 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1556 | } | |
1557 | else | |
1558 | { | |
1559 | RemovePlayerFromVehicle(giveid); | |
1560 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1561 | format(strtmp, sizeof strtmp, "Вы высадили %s[%d] из транспорта", strname2, giveid); | |
1562 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1563 | format(strtmp, sizeof strtmp, "Администратор %s высадил вас из транспорта", strname); | |
1564 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1565 | } | |
1566 | } | |
1567 | } | |
1568 | } | |
1569 | return 1; | |
1570 | } | |
1571 | ||
1572 | CMD:spec(playerid, params[]) return admsys_cmd_spec(playerid, params); | |
1573 | admsys_cmd_spec(playerid, params[]) | |
1574 | { | |
1575 | if(IsPlayerAdminEx(playerid, 2)) | |
1576 | { | |
1577 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /spec [id]"); | |
1578 | if(!strcmp(params, "off", true)) return admsys_cmd_specoff(playerid, "\1"); | |
1579 | if(!strcmp(params, "update", true)) return admsys_cmd_specupdate(playerid, "\1"); | |
1580 | if(!admsys_IsNumeric(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /spec [id]"); | |
1581 | params[0] = strval(params); | |
1582 | if(!StartSpectating(playerid, params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1583 | } | |
1584 | return 1; | |
1585 | } | |
1586 | ||
1587 | CMD:specupdate(playerid, params[]) return admsys_cmd_specupdate(playerid, params); | |
1588 | admsys_cmd_specupdate(playerid, params[]) | |
1589 | { | |
1590 | #pragma unused params | |
1591 | if(IsPlayerAdminEx(playerid, 2)) UpdateSpectating(playerid); | |
1592 | return 1; | |
1593 | } | |
1594 | ||
1595 | CMD:specoff(playerid, params[]) return admsys_cmd_specoff(playerid, params); | |
1596 | admsys_cmd_specoff(playerid, params[]) | |
1597 | { | |
1598 | #pragma unused params | |
1599 | if(IsPlayerAdminEx(playerid, 2)) StopSpectating(playerid); | |
1600 | return 1; | |
1601 | } | |
1602 | ||
1603 | CMD:spawnveh(playerid, params[]) return admsys_cmd_spawnveh(playerid, params); | |
1604 | admsys_cmd_spawnveh(playerid, params[]) | |
1605 | { | |
1606 | if(IsPlayerAdminEx(playerid, 2)) | |
1607 | { | |
1608 | if(admsys_isnull(params)) | |
1609 | { | |
1610 | if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не в транспорте"); | |
1611 | params[0] = GetPlayerVehicleID(playerid); | |
1612 | } | |
1613 | else | |
1614 | { | |
1615 | if(!admsys_IsNumeric(params)) | |
1616 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /spawnveh [id транспорта]"); | |
1617 | params[0] = strval(params); | |
1618 | if(!GetVehicleModel(params[0])) | |
1619 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Транспортное средство не найдено"); | |
1620 | } | |
1621 | static strtmp[28]; | |
1622 | SetVehicleToRespawn(params[0]); | |
1623 | format(strtmp, sizeof strtmp, "Транспорт id %d заспавнен", params[0]); | |
1624 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1625 | } | |
1626 | return 1; | |
1627 | } | |
1628 | ||
1629 | CMD:mute(playerid, params[]) return admsys_cmd_mute(playerid, params); | |
1630 | admsys_cmd_mute(playerid, params[]) | |
1631 | { | |
1632 | if(IsPlayerAdminEx(playerid, 2)) | |
1633 | { | |
1634 | if(admsys_isnull(params)) | |
1635 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /mute [id] [время] [причина]"); | |
1636 | static strtmp[145]; | |
1637 | new pos, oldpos; | |
1638 | while(params[pos] > ' ') pos++; | |
1639 | strmid(strtmp, params, 0, pos); | |
1640 | if(!admsys_IsNumeric(strtmp)) | |
1641 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /mute [id] [время] [причина]"); | |
1642 | new giveid = strval(strtmp); | |
1643 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1644 | if(AdmSysInfo[giveid][asMuteTime]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок уже заглушен"); | |
1645 | if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid) | |
1646 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не можете применить это действие к администратору"); | |
1647 | while(params[pos] == ' ') pos++; | |
1648 | oldpos = pos; | |
1649 | while(params[pos] > ' ') pos++; | |
1650 | strmid(strtmp, params, oldpos, pos); | |
1651 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
1652 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /mute [id] [время] [причина]"); | |
1653 | new gtime = strval(strtmp); | |
1654 | if(!(0 < gtime < 61)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте время от 1 до 60 минут"); | |
1655 | while(params[pos] == ' ') pos++; | |
1656 | if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /mute [id] [время] [причина]"); | |
1657 | static strname[24], strname2[24]; | |
1658 | AdmSysInfo[giveid][asMuteTime] = gtime * 60; | |
1659 | GetPlayerName(playerid, strname, sizeof strname); | |
1660 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1661 | format(strtmp, sizeof strtmp, "Администратор %s выдал молчанку игроку %s[%d] на %d минут. Причина: %s", strname, strname2, giveid, gtime, params[pos]); | |
1662 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1663 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1664 | #else | |
1665 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1666 | #endif | |
1667 | format(strtmp, sizeof strtmp, "Администратор %s выдал вам молчанку на %d минут. Причина: %s", strname, gtime, params[pos]); | |
1668 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1669 | } | |
1670 | return 1; | |
1671 | } | |
1672 | ||
1673 | CMD:unmute(playerid, params[]) return admsys_cmd_unmute(playerid, params); | |
1674 | admsys_cmd_unmute(playerid, params[]) | |
1675 | { | |
1676 | if(IsPlayerAdminEx(playerid, 2)) | |
1677 | { | |
1678 | new strtmp[96]; | |
1679 | if(admsys_isnull(params)) | |
1680 | { | |
1681 | format(strtmp, sizeof strtmp, "%d", playerid); | |
1682 | return admsys_cmd_unmute(playerid, strtmp); | |
1683 | } | |
1684 | static strname[24], strname2[24]; | |
1685 | GetPlayerName(playerid, strname, sizeof strname); | |
1686 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
1687 | { | |
1688 | while(params[pos] == ' ') pos++; | |
1689 | if(params[pos]) | |
1690 | { | |
1691 | oldpos = pos; | |
1692 | while(params[pos] > ' ') pos++; | |
1693 | strmid(strtmp, params, oldpos, pos); | |
1694 | if(!admsys_IsNumeric(strtmp)) | |
1695 | { | |
1696 | strtmp = "Используйте: /unmute [id]"; | |
1697 | if(i > 1) | |
1698 | { | |
1699 | for(j = 2; j <= i; j++) | |
1700 | { | |
1701 | format(strname2, sizeof strname2, " [id %d]", j); | |
1702 | strcat(strtmp, strname2); | |
1703 | } | |
1704 | } | |
1705 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1706 | } | |
1707 | giveid = strval(strtmp); | |
1708 | if(!IsPlayerConnected(giveid)) | |
1709 | { | |
1710 | if(i == 1) strtmp = "Игрок не найден"; | |
1711 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
1712 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1713 | } | |
1714 | else if(!AdmSysInfo[giveid][asMuteTime]) | |
1715 | { | |
1716 | if(i == 1) strtmp = "Игрок не заглушен"; | |
1717 | else format(strtmp, sizeof strtmp, "Игрок %d не заглушен", i); | |
1718 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1719 | } | |
1720 | else | |
1721 | { | |
1722 | AdmSysInfo[giveid][asMuteTime] = 0; | |
1723 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1724 | format(strtmp, sizeof strtmp, "Администратор %s снял молчанку с игрока %s[%d]", strname, strname2, giveid); | |
1725 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1726 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1727 | #else | |
1728 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1729 | #endif | |
1730 | format(strtmp, sizeof strtmp, "Администратор %s снял с вас молчанку", strname); | |
1731 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1732 | } | |
1733 | } | |
1734 | } | |
1735 | } | |
1736 | return 1; | |
1737 | } | |
1738 | ||
1739 | CMD:asay(playerid, params[]) return admsys_cmd_asay(playerid, params); | |
1740 | admsys_cmd_asay(playerid, params[]) | |
1741 | { | |
1742 | if(IsPlayerAdminEx(playerid, 2)) | |
1743 | { | |
1744 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /asay [текст]"); | |
1745 | static strtmp[145], strname[24]; | |
1746 | strtmp = "Администратор "; | |
1747 | GetPlayerName(playerid, strname, sizeof strname); | |
1748 | strcat(strtmp, strname); | |
1749 | strcat(strtmp, ": "); | |
1750 | strcat(strtmp, params); | |
1751 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1752 | } | |
1753 | return 1; | |
1754 | } | |
1755 | ||
1756 | CMD:warn(playerid, params[]) return admsys_cmd_warn(playerid, params); | |
1757 | admsys_cmd_warn(playerid, params[]) | |
1758 | { | |
1759 | if(IsPlayerAdminEx(playerid, 2)) | |
1760 | { | |
1761 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /warn [id] [причина]"); | |
1762 | static strtmp[145]; | |
1763 | new pos; | |
1764 | while(params[pos] > ' ') pos++; | |
1765 | strmid(strtmp, params, 0, pos); | |
1766 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /warn [id] [причина]"); | |
1767 | new giveid = strval(strtmp); | |
1768 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1769 | if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid) | |
1770 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не можете применить это действие к администратору"); | |
1771 | while(params[pos] == ' ') pos++; | |
1772 | if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /warn [id] [причина]"); | |
1773 | static strname[24], strname2[24]; | |
1774 | AdmSysInfo[giveid][asWarns]++; | |
1775 | CallLocalFunction("OnPlayerWarn", "iii", giveid, playerid, AdmSysInfo[giveid][asWarns]); | |
1776 | GetPlayerName(playerid, strname, sizeof strname); | |
1777 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1778 | format(strtmp, sizeof strtmp, "Администратор %s выдал предупреждение игроку %s[%d]. Причина: %s", strname, strname2, giveid, params[pos]); | |
1779 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1780 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1781 | #else | |
1782 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1783 | #endif | |
1784 | format(strtmp, sizeof strtmp, "Администратор %s выдал вам предупреждение. Причина: %s", strname, params[pos]); | |
1785 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1786 | if(AdmSysInfo[giveid][asWarns] > ADMSYS_MAX_WARNS) return admsys_cmd_ban(playerid, params); | |
1787 | } | |
1788 | return 1; | |
1789 | } | |
1790 | ||
1791 | CMD:kick(playerid, params[]) return admsys_cmd_kick(playerid, params); | |
1792 | admsys_cmd_kick(playerid, params[]) | |
1793 | { | |
1794 | if(IsPlayerAdminEx(playerid, 2)) | |
1795 | { | |
1796 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /kick [id] [причина]"); | |
1797 | static strtmp[145]; | |
1798 | new pos; | |
1799 | while(params[pos] > ' ') pos++; | |
1800 | strmid(strtmp, params, 0, pos); | |
1801 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /kick [id] [причина]"); | |
1802 | new giveid = strval(strtmp); | |
1803 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1804 | if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid) | |
1805 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не можете применить это действие к администратору"); | |
1806 | while(params[pos] == ' ') pos++; | |
1807 | if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /kick [id] [причина]"); | |
1808 | static strname[24], strname2[24]; | |
1809 | CallLocalFunction("OnPlayerKick", "iii", giveid, playerid, false); | |
1810 | GetPlayerName(playerid, strname, sizeof strname); | |
1811 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1812 | format(strtmp, sizeof strtmp, "Администратор %s кикнул игрока %s[%d]. Причина: %s", strname, strname2, giveid, params[pos]); | |
1813 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1814 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1815 | #else | |
1816 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1817 | #endif | |
1818 | format(strtmp, sizeof strtmp, "Администратор %s кикнул вас. Причина: %s", strname, params[pos]); | |
1819 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1820 | SetTimerEx("KickWithDelay", 500, 0, "i", giveid); | |
1821 | } | |
1822 | return 1; | |
1823 | } | |
1824 | ||
1825 | CMD:freeze(playerid, params[]) return admsys_cmd_freeze(playerid, params); | |
1826 | admsys_cmd_freeze(playerid, params[]) | |
1827 | { | |
1828 | if(IsPlayerAdminEx(playerid, 2)) | |
1829 | { | |
1830 | new strtmp[90]; | |
1831 | if(admsys_isnull(params)) | |
1832 | { | |
1833 | format(strtmp, sizeof strtmp, "%d", playerid); | |
1834 | return admsys_cmd_freeze(playerid, strtmp); | |
1835 | } | |
1836 | static strname[24], strname2[24]; | |
1837 | GetPlayerName(playerid, strname, sizeof strname); | |
1838 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
1839 | { | |
1840 | while(params[pos] == ' ') pos++; | |
1841 | if(params[pos]) | |
1842 | { | |
1843 | oldpos = pos; | |
1844 | while(params[pos] > ' ') pos++; | |
1845 | strmid(strtmp, params, oldpos, pos); | |
1846 | if(!admsys_IsNumeric(strtmp)) | |
1847 | { | |
1848 | strtmp = "Используйте: /freeze [id]"; | |
1849 | if(i > 1) | |
1850 | { | |
1851 | for(j = 2; j <= i; j++) | |
1852 | { | |
1853 | format(strname2, sizeof strname2, " [id %d]", j); | |
1854 | strcat(strtmp, strname2); | |
1855 | } | |
1856 | } | |
1857 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1858 | } | |
1859 | giveid = strval(strtmp); | |
1860 | if(!IsPlayerConnected(giveid)) | |
1861 | { | |
1862 | if(i == 1) strtmp = "Игрок не найден"; | |
1863 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
1864 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1865 | } | |
1866 | else | |
1867 | { | |
1868 | TogglePlayerControllable(giveid, 0); | |
1869 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1870 | format(strtmp, sizeof strtmp, "Администратор %s заморозил игрока %s[%d]", strname, strname2, giveid); | |
1871 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1872 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1873 | #else | |
1874 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1875 | #endif | |
1876 | format(strtmp, sizeof strtmp, "Администратор %s заморозил вас", strname); | |
1877 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1878 | } | |
1879 | } | |
1880 | } | |
1881 | } | |
1882 | return 1; | |
1883 | } | |
1884 | ||
1885 | CMD:unfreeze(playerid, params[]) return admsys_cmd_unfreeze(playerid, params); | |
1886 | admsys_cmd_unfreeze(playerid, params[]) | |
1887 | { | |
1888 | if(IsPlayerAdminEx(playerid, 2)) | |
1889 | { | |
1890 | new strtmp[91]; | |
1891 | if(admsys_isnull(params)) | |
1892 | { | |
1893 | format(strtmp, sizeof strtmp, "%d", playerid); | |
1894 | return admsys_cmd_unfreeze(playerid, strtmp); | |
1895 | } | |
1896 | static strname[24], strname2[24]; | |
1897 | GetPlayerName(playerid, strname, sizeof strname); | |
1898 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
1899 | { | |
1900 | while(params[pos] == ' ') pos++; | |
1901 | if(params[pos]) | |
1902 | { | |
1903 | oldpos = pos; | |
1904 | while(params[pos] > ' ') pos++; | |
1905 | strmid(strtmp, params, oldpos, pos); | |
1906 | if(!admsys_IsNumeric(strtmp)) | |
1907 | { | |
1908 | strtmp = "Используйте: /unfreeze [id]"; | |
1909 | if(i > 1) | |
1910 | { | |
1911 | for(j = 2; j <= i; j++) | |
1912 | { | |
1913 | format(strname2, sizeof strname2, " [id %d]", j); | |
1914 | strcat(strtmp, strname2); | |
1915 | } | |
1916 | } | |
1917 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1918 | } | |
1919 | giveid = strval(strtmp); | |
1920 | if(!IsPlayerConnected(giveid)) | |
1921 | { | |
1922 | if(i == 1) strtmp = "Игрок не найден"; | |
1923 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
1924 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1925 | } | |
1926 | else | |
1927 | { | |
1928 | TogglePlayerControllable(giveid, 1); | |
1929 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1930 | format(strtmp, sizeof strtmp, "Администратор %s разморозил игрока %s[%d]", strname, strname2, giveid); | |
1931 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1932 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1933 | #else | |
1934 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1935 | #endif | |
1936 | format(strtmp, sizeof strtmp, "Администратор %s разморозил вас", strname); | |
1937 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1938 | } | |
1939 | } | |
1940 | } | |
1941 | } | |
1942 | return 1; | |
1943 | } | |
1944 | ||
1945 | CMD:slap(playerid, params[]) return admsys_cmd_slap(playerid, params); | |
1946 | admsys_cmd_slap(playerid, params[]) | |
1947 | { | |
1948 | if(IsPlayerAdminEx(playerid, 2)) | |
1949 | { | |
1950 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /slap [id] [причина]"); | |
1951 | static strtmp[145]; | |
1952 | new pos; | |
1953 | while(params[pos] > ' ') pos++; | |
1954 | strmid(strtmp, params, 0, pos); | |
1955 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /slap [id] [причина]"); | |
1956 | new giveid = strval(strtmp); | |
1957 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1958 | if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid) | |
1959 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не можете применить это действие к администратору"); | |
1960 | if(IsPlayerSpectating(giveid)) | |
1961 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок в режиме наблюдения"); | |
1962 | while(params[pos] == ' ') pos++; | |
1963 | if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /slap [id] [причина]"); | |
1964 | static strname[24], strname2[24]; | |
1965 | new Float:pX, Float:pY, Float:pZ; | |
1966 | GetPlayerPos(giveid, pX, pY, pZ); | |
1967 | SetPlayerPos(giveid, pX, pY, pZ + 8.0); | |
1968 | PlayerPlaySound(giveid, 1130, 0.0, 0.0, 0.0); | |
1969 | GetPlayerName(playerid, strname, sizeof strname); | |
1970 | GetPlayerName(giveid, strname2, sizeof strname2); | |
1971 | format(strtmp, sizeof strtmp, "Администратор %s подкинул игрока %s[%d]. Причина: %s", strname, strname2, giveid, params[pos]); | |
1972 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
1973 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
1974 | #else | |
1975 | SendMessageToAdmins(2, ADMSYS_DEFAULT_COLOR, strtmp); | |
1976 | #endif | |
1977 | format(strtmp, sizeof strtmp, "Администратор %s подкинул вас. Причина: %s", strname, params[pos]); | |
1978 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
1979 | } | |
1980 | return 1; | |
1981 | } | |
1982 | ||
1983 | CMD:goto(playerid, params[]) return admsys_cmd_goto(playerid, params); | |
1984 | admsys_cmd_goto(playerid, params[]) | |
1985 | { | |
1986 | if(IsPlayerAdminEx(playerid, 2)) | |
1987 | { | |
1988 | if(IsPlayerSpectating(playerid)) | |
1989 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы в режиме наблюдения"); | |
1990 | if(admsys_isnull(params) || !admsys_IsNumeric(params)) | |
1991 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /goto [id]"); | |
1992 | params[0] = strval(params); | |
1993 | if(params[0] == playerid) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Нельзя указывать свой id"); | |
1994 | if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
1995 | static strtmp[55], strname[24]; | |
1996 | new Float:pX, Float:pY, Float:pZ; | |
1997 | GetPlayerPos(params[0], pX, pY, pZ); | |
1998 | SetPlayerPos(playerid, pX + 1.0, pY + 1.0, pZ); | |
1999 | SetPlayerInterior(playerid, GetPlayerInterior(params[0])); | |
2000 | SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0])); | |
2001 | GetPlayerName(params[0], strname, sizeof strname); | |
2002 | format(strtmp, sizeof strtmp, "Вы телепортировались к %s[%d]", strname, params[0]); | |
2003 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2004 | } | |
2005 | return 1; | |
2006 | } | |
2007 | ||
2008 | CMD:suspectlist(playerid, params[]) return admsys_cmd_suspectlist(playerid, params); | |
2009 | admsys_cmd_suspectlist(playerid, params[]) | |
2010 | { | |
2011 | #pragma unused params | |
2012 | if(IsPlayerAdminEx(playerid, 3)) | |
2013 | { | |
2014 | UpdateSuspectList(); | |
2015 | new c; | |
2016 | static strtmp[353], strtmp2[44], iname[24]; | |
2017 | strtmp[0] = EOS; | |
2018 | for(new i; i < sizeof SuspectList; ++i) | |
2019 | { | |
2020 | if(SuspectList[i] != INVALID_PLAYER_ID) | |
2021 | { | |
2022 | GetPlayerName(SuspectList[i], iname, sizeof iname); | |
2023 | format(strtmp2, sizeof strtmp2, "%d. %s [ID: %d]\n", i + 1, iname, SuspectList[i]); | |
2024 | strcat(strtmp, strtmp2); | |
2025 | c++; | |
2026 | } | |
2027 | } | |
2028 | if(c) ShowPlayerDialog(playerid, ADMSYS_DIALOG_SUSPECT_LIST, 2, "Ожидают проверки", strtmp, "Ок", "Закрыть"); | |
2029 | else SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Список пуст"); | |
2030 | } | |
2031 | return 1; | |
2032 | } | |
2033 | ||
2034 | CMD:gethere(playerid, params[]) return admsys_cmd_gethere(playerid, params); | |
2035 | CMD:get(playerid, params[]) return admsys_cmd_gethere(playerid, params); | |
2036 | admsys_cmd_gethere(playerid, params[]) | |
2037 | { | |
2038 | if(IsPlayerAdminEx(playerid, 3)) | |
2039 | { | |
2040 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /gethere [id]"); | |
2041 | if(!strcmp(params, "all", true)) return admsys_cmd_getall(playerid, "\1"); | |
2042 | static strname[24], strname2[24]; | |
2043 | new strtmp[67], interior, vw, Float:pX, Float:pY, Float:pZ; | |
2044 | GetPlayerName(playerid, strname, sizeof strname); | |
2045 | interior = GetPlayerInterior(playerid); | |
2046 | vw = GetPlayerVirtualWorld(playerid); | |
2047 | GetPlayerPos(playerid, pX, pY, pZ); | |
2048 | pX += 1.0; | |
2049 | pY += 1.0; | |
2050 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
2051 | { | |
2052 | while(params[pos] == ' ') pos++; | |
2053 | if(params[pos]) | |
2054 | { | |
2055 | oldpos = pos; | |
2056 | while(params[pos] > ' ') pos++; | |
2057 | strmid(strtmp, params, oldpos, pos); | |
2058 | if(!admsys_IsNumeric(strtmp)) | |
2059 | { | |
2060 | strtmp = "Используйте: /gethere [id]"; | |
2061 | if(i > 1) | |
2062 | { | |
2063 | for(j = 2; j <= i; j++) | |
2064 | { | |
2065 | format(strname2, sizeof strname2, " [id %d]", j); | |
2066 | strcat(strtmp, strname2); | |
2067 | } | |
2068 | } | |
2069 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2070 | } | |
2071 | giveid = strval(strtmp); | |
2072 | if(giveid == playerid) SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Нельзя указывать свой id"); | |
2073 | else if(!IsPlayerConnected(giveid)) | |
2074 | { | |
2075 | if(i == 1) strtmp = "Игрок не найден"; | |
2076 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
2077 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2078 | } | |
2079 | else | |
2080 | { | |
2081 | SetPlayerPos(giveid, pX, pY, pZ); | |
2082 | SetPlayerVirtualWorld(giveid, vw); | |
2083 | SetPlayerInterior(giveid, interior); | |
2084 | GetPlayerName(giveid, strname2, sizeof strname2); | |
2085 | format(strtmp, sizeof strtmp, "Вы телепортировали %s[%d] к себе", strname2, giveid); | |
2086 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2087 | format(strtmp, sizeof strtmp, "Администратор %s телепортировал вас к себе", strname); | |
2088 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2089 | } | |
2090 | } | |
2091 | } | |
2092 | } | |
2093 | return 1; | |
2094 | } | |
2095 | ||
2096 | CMD:gotoveh(playerid, params[]) return admsys_cmd_gotoveh(playerid, params); | |
2097 | admsys_cmd_gotoveh(playerid, params[]) | |
2098 | { | |
2099 | if(IsPlayerAdminEx(playerid, 3)) | |
2100 | { | |
2101 | if(IsPlayerSpectating(playerid)) | |
2102 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы в режиме наблюдения"); | |
2103 | if(admsys_isnull(params) || !admsys_IsNumeric(params)) | |
2104 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /gotoveh [id транспорта]"); | |
2105 | params[0] = strval(params); | |
2106 | if(!GetVehicleModel(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Транспорт не найден"); | |
2107 | static strtmp[54]; | |
2108 | new Float:vX, Float:vY, Float:vZ; | |
2109 | GetVehiclePos(params[0], vX, vY, vZ); | |
2110 | SetPlayerPos(playerid, vX, vY, vZ + 2.5); | |
2111 | SetPlayerVirtualWorld(playerid, GetVehicleVirtualWorld(params[0])); | |
2112 | format(strtmp, sizeof strtmp, "Вы телепортировались к транспорту id %d", params[0]); | |
2113 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2114 | } | |
2115 | return 1; | |
2116 | } | |
2117 | ||
2118 | CMD:ban(playerid, params[]) return admsys_cmd_ban(playerid, params); | |
2119 | admsys_cmd_ban(playerid, params[]) | |
2120 | { | |
2121 | if(IsPlayerAdminEx(playerid, 3)) | |
2122 | { | |
2123 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /ban [id] [причина]"); | |
2124 | static strtmp[145]; | |
2125 | new pos; | |
2126 | while(params[pos] > ' ') pos++; | |
2127 | strmid(strtmp, params, 0, pos); | |
2128 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /ban [id] [причина]"); | |
2129 | new giveid = strval(strtmp); | |
2130 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2131 | if(GetPlayerAdminLevel(playerid) <= GetPlayerAdminLevel(giveid) && playerid != giveid) | |
2132 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не можете применить это действие к администратору"); | |
2133 | while(params[pos] == ' ') pos++; | |
2134 | if(!params[pos]) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /ban [id] [причина]"); | |
2135 | static strname[24], strname2[24]; | |
2136 | CallLocalFunction("OnPlayerBan", "iii", giveid, playerid, false); | |
2137 | GetPlayerName(playerid, strname, sizeof strname); | |
2138 | GetPlayerName(giveid, strname2, sizeof strname2); | |
2139 | format(strtmp, sizeof strtmp, "Администратор %s забанил игрока %s[%d]. Причина: %s", strname, strname2, giveid, params[pos]); | |
2140 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2141 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2142 | #else | |
2143 | SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp); | |
2144 | #endif | |
2145 | format(strtmp, sizeof strtmp, "Администратор %s забанил вас. Причина: %s", strname, params[pos]); | |
2146 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2147 | SetTimerEx("BanWithDelay", 500, 0, "i", giveid); | |
2148 | } | |
2149 | return 1; | |
2150 | } | |
2151 | ||
2152 | CMD:gmtest(playerid, params[]) return admsys_cmd_gmtest(playerid, params); | |
2153 | admsys_cmd_gmtest(playerid, params[]) | |
2154 | { | |
2155 | if(IsPlayerAdminEx(playerid, 3)) | |
2156 | { | |
2157 | if(admsys_isnull(params) || !admsys_IsNumeric(params)) | |
2158 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /gmtest [id]"); | |
2159 | params[0] = strval(params); | |
2160 | if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2161 | if(AdmSysInfo[playerid][asGmTestID] != INVALID_PLAYER_ID) | |
2162 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "В данный момент вы уже проверяете кого-то на GodMode"); | |
2163 | if(AdmSysInfo[params[0]][asGmTest]) | |
2164 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "В данный момент игрок уже проверяется на GodMode"); | |
2165 | if(!AdmSysInfo[params[0]][asIsSpawned]) | |
2166 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не заспавнен"); | |
2167 | if(IsPlayerSpectating(params[0])) | |
2168 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок в режиме наблюдения"); | |
2169 | new Float:bx, Float:by, Float:bz; | |
2170 | GetPlayerPos(params[0], bx, by, bz); | |
2171 | if(!IsPlayerInAnyVehicle(params[0])) | |
2172 | { | |
2173 | GetPlayerHealth(params[0], AdmSysInfo[params[0]][asGmTestHP]); | |
2174 | GetPlayerArmour(params[0], AdmSysInfo[params[0]][asGmTestAR]); | |
2175 | } | |
2176 | else GetVehicleHealth(GetPlayerVehicleID(params[0]), AdmSysInfo[params[0]][asGmTestHP]); | |
2177 | AdmSysInfo[params[0]][asGmTest] = true; | |
2178 | AdmSysInfo[playerid][asGmTestID] = params[0]; | |
2179 | CreateExplosionForPlayer(params[0], bx, by, bz + 7.5, 5, 0.5); | |
2180 | SetTimerEx("GmTest", 1000, 0, "d", playerid); | |
2181 | } | |
2182 | return 1; | |
2183 | } | |
2184 | ||
2185 | CMD:spawn(playerid, params[]) return admsys_cmd_spawn(playerid, params); | |
2186 | admsys_cmd_spawn(playerid, params[]) | |
2187 | { | |
2188 | if(IsPlayerAdminEx(playerid, 3)) | |
2189 | { | |
2190 | new strtmp[96]; | |
2191 | if(admsys_isnull(params)) | |
2192 | { | |
2193 | format(strtmp, sizeof strtmp, "%d", playerid); | |
2194 | return admsys_cmd_spawn(playerid, strtmp); | |
2195 | } | |
2196 | static strname[24], strname2[24]; | |
2197 | GetPlayerName(playerid, strname, sizeof strname); | |
2198 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
2199 | { | |
2200 | while(params[pos] == ' ') pos++; | |
2201 | if(params[pos]) | |
2202 | { | |
2203 | oldpos = pos; | |
2204 | while(params[pos] > ' ') pos++; | |
2205 | strmid(strtmp, params, oldpos, pos); | |
2206 | if(!admsys_IsNumeric(strtmp)) | |
2207 | { | |
2208 | strtmp = "Используйте: /spawn [id]"; | |
2209 | if(i > 1) | |
2210 | { | |
2211 | for(j = 2; j <= i; j++) | |
2212 | { | |
2213 | format(strname2, sizeof strname2, " [id %d]", j); | |
2214 | strcat(strtmp, strname2); | |
2215 | } | |
2216 | } | |
2217 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2218 | } | |
2219 | giveid = strval(strtmp); | |
2220 | if(!IsPlayerConnected(giveid)) | |
2221 | { | |
2222 | if(i == 1) strtmp = "Игрок не найден"; | |
2223 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
2224 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2225 | } | |
2226 | else | |
2227 | { | |
2228 | if(IsPlayerSpectating(giveid)) TogglePlayerSpectating(giveid, 0); | |
2229 | else SpawnPlayer(giveid); | |
2230 | GetPlayerName(giveid, strname2, sizeof strname2); | |
2231 | format(strtmp, sizeof strtmp, "Администратор %s заспавнил игрока %s[%d]", strname, strname2, giveid); | |
2232 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2233 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2234 | #else | |
2235 | SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp); | |
2236 | #endif | |
2237 | format(strtmp, sizeof strtmp, "Администратор %s заспавнил вас", strname); | |
2238 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2239 | } | |
2240 | } | |
2241 | } | |
2242 | } | |
2243 | return 1; | |
2244 | } | |
2245 | ||
2246 | CMD:unwarn(playerid, params[]) return admsys_cmd_unwarn(playerid, params); | |
2247 | admsys_cmd_unwarn(playerid, params[]) | |
2248 | { | |
2249 | if(IsPlayerAdminEx(playerid, 3)) | |
2250 | { | |
2251 | new strtmp[102]; | |
2252 | if(admsys_isnull(params)) | |
2253 | { | |
2254 | format(strtmp, sizeof strtmp, "%d", playerid); | |
2255 | return admsys_cmd_unwarn(playerid, strtmp); | |
2256 | } | |
2257 | static strname[24], strname2[24]; | |
2258 | GetPlayerName(playerid, strname, sizeof strname); | |
2259 | for(new i = 1, pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
2260 | { | |
2261 | while(params[pos] == ' ') pos++; | |
2262 | if(params[pos]) | |
2263 | { | |
2264 | oldpos = pos; | |
2265 | while(params[pos] > ' ') pos++; | |
2266 | strmid(strtmp, params, oldpos, pos); | |
2267 | if(!admsys_IsNumeric(strtmp)) | |
2268 | { | |
2269 | strtmp = "Используйте: /unwarn [id]"; | |
2270 | if(i > 1) | |
2271 | { | |
2272 | for(j = 2; j <= i; j++) | |
2273 | { | |
2274 | format(strname2, sizeof strname2, " [id %d]", j); | |
2275 | strcat(strtmp, strname2); | |
2276 | } | |
2277 | } | |
2278 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2279 | } | |
2280 | giveid = strval(strtmp); | |
2281 | if(!IsPlayerConnected(giveid)) | |
2282 | { | |
2283 | if(i == 1) strtmp = "Игрок не найден"; | |
2284 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
2285 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2286 | } | |
2287 | else if(!AdmSysInfo[giveid][asWarns]) | |
2288 | { | |
2289 | if(i == 1) strtmp = "Игрок не имеет предупреждений"; | |
2290 | else format(strtmp, sizeof strtmp, "Игрок %d не имеет предупреждений", i); | |
2291 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2292 | } | |
2293 | else | |
2294 | { | |
2295 | AdmSysInfo[giveid][asWarns]--; | |
2296 | GetPlayerName(giveid, strname2, sizeof strname2); | |
2297 | format(strtmp, sizeof strtmp, "Администратор %s снял предупреждение с игрока %s[%d]", strname, strname2, giveid); | |
2298 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2299 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2300 | #else | |
2301 | SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp); | |
2302 | #endif | |
2303 | format(strtmp, sizeof strtmp, "Администратор %s снял с вас предупреждение", strname); | |
2304 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2305 | } | |
2306 | } | |
2307 | } | |
2308 | } | |
2309 | return 1; | |
2310 | } | |
2311 | ||
2312 | CMD:banip(playerid, params[]) return admsys_cmd_banip(playerid, params); | |
2313 | admsys_cmd_banip(playerid, params[]) | |
2314 | { | |
2315 | if(IsPlayerAdminEx(playerid, 3)) | |
2316 | { | |
2317 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /banip [IP]"); | |
2318 | for(new i, c, j = strlen(params); i < j; i++) | |
2319 | { | |
2320 | switch(params[i]) | |
2321 | { | |
2322 | case '*': | |
2323 | { | |
2324 | if(c < 2) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP-адрес введён некорректно"); | |
2325 | } | |
2326 | case '.': c++; | |
2327 | case '0'..'9':{} | |
2328 | default: return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP-адрес введён некорректно"); | |
2329 | } | |
2330 | } | |
2331 | static strtmp[71], strname[24]; | |
2332 | format(strtmp, sizeof strtmp, "banip %s", params); | |
2333 | SendRconCommand(strtmp); | |
2334 | SendRconCommand("reloadbans"); | |
2335 | GetPlayerName(playerid, strname, sizeof strname); | |
2336 | format(strtmp, sizeof strtmp, "Администратор %s забанил IP %s", strname, params); | |
2337 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2338 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2339 | #else | |
2340 | SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp); | |
2341 | #endif | |
2342 | } | |
2343 | return 1; | |
2344 | } | |
2345 | ||
2346 | CMD:cc(playerid, params[]) return admsys_cmd_cc(playerid, params); | |
2347 | CMD:clearchat(playerid, params[]) return admsys_cmd_cc(playerid, params); | |
2348 | admsys_cmd_cc(playerid, params[]) | |
2349 | { | |
2350 | #pragma unused params | |
2351 | if(IsPlayerAdminEx(playerid, 3)) | |
2352 | { | |
2353 | static strtmp[53], strname[24]; | |
2354 | for(new i = 20; i != -1; --i) SendClientMessageToAll(-1, " "); | |
2355 | GetPlayerName(playerid, strname, sizeof strname); | |
2356 | format(strtmp, sizeof strtmp, "Администратор %s очистил чат", strname); | |
2357 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2358 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2359 | #else | |
2360 | SendMessageToAdmins(3, ADMSYS_DEFAULT_COLOR, strtmp); | |
2361 | #endif | |
2362 | } | |
2363 | return 1; | |
2364 | } | |
2365 | ||
2366 | CMD:sethealth(playerid, params[]) return admsys_cmd_sethealth(playerid, params); | |
2367 | admsys_cmd_sethealth(playerid, params[]) | |
2368 | { | |
2369 | if(IsPlayerAdminEx(playerid, 4)) | |
2370 | { | |
2371 | if(admsys_isnull(params)) | |
2372 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /sethealth [id] [здоровье]"); | |
2373 | static strtmp[72]; | |
2374 | new pos, oldpos; | |
2375 | while(params[pos] > ' ') pos++; | |
2376 | strmid(strtmp, params, 0, pos); | |
2377 | if(!admsys_IsNumeric(strtmp)) | |
2378 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /sethealth [id] [здоровье]"); | |
2379 | new giveid = strval(strtmp); | |
2380 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2381 | while(params[pos] == ' ') pos++; | |
2382 | oldpos = pos; | |
2383 | while(params[pos] > ' ') pos++; | |
2384 | strmid(strtmp, params, oldpos, pos); | |
2385 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2386 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /sethealth [id] [здоровье]"); | |
2387 | static strname[24]; | |
2388 | new Float:ghealth = strval(strtmp); | |
2389 | AdmSysInfo[playerid][asLastAction] = 1; | |
2390 | GetPlayerHealth(giveid, AdmSysInfo[playerid][asLastFloatData]); | |
2391 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2392 | SetPlayerHealth(giveid, ghealth); | |
2393 | GetPlayerName(giveid, strname, sizeof strname); | |
2394 | format(strtmp, sizeof strtmp, "Вы установили %s[%d] здоровье на %.1f", strname, giveid, ghealth); | |
2395 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2396 | GetPlayerName(playerid, strname, sizeof strname); | |
2397 | format(strtmp, sizeof strtmp, "Администратор %s установил вам здоровье на %.1f", strname, ghealth); | |
2398 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2399 | } | |
2400 | return 1; | |
2401 | } | |
2402 | ||
2403 | CMD:setarmour(playerid, params[]) return admsys_cmd_setarmour(playerid, params); | |
2404 | admsys_cmd_setarmour(playerid, params[]) | |
2405 | { | |
2406 | if(IsPlayerAdminEx(playerid, 4)) | |
2407 | { | |
2408 | if(admsys_isnull(params)) | |
2409 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setarmour [id] [броня]"); | |
2410 | static strtmp[69]; | |
2411 | new pos, oldpos; | |
2412 | while(params[pos] > ' ') pos++; | |
2413 | strmid(strtmp, params, 0, pos); | |
2414 | if(!admsys_IsNumeric(strtmp)) | |
2415 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setarmour [id] [броня]"); | |
2416 | new giveid = strval(strtmp); | |
2417 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2418 | while(params[pos] == ' ') pos++; | |
2419 | oldpos = pos; | |
2420 | while(params[pos] > ' ') pos++; | |
2421 | strmid(strtmp, params, oldpos, pos); | |
2422 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2423 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setarmour [id] [броня]"); | |
2424 | static strname[24]; | |
2425 | new Float:garmour = strval(strtmp); | |
2426 | AdmSysInfo[playerid][asLastAction] = 2; | |
2427 | GetPlayerArmour(giveid, AdmSysInfo[playerid][asLastFloatData]); | |
2428 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2429 | SetPlayerArmour(giveid, garmour); | |
2430 | GetPlayerName(giveid, strname, sizeof strname); | |
2431 | format(strtmp, sizeof strtmp, "Вы установили %s[%d] броню на %.1f", strname, giveid, garmour); | |
2432 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2433 | GetPlayerName(playerid, strname, sizeof strname); | |
2434 | format(strtmp, sizeof strtmp, "Администратор %s установил вам броню на %.1f", strname, garmour); | |
2435 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2436 | } | |
2437 | return 1; | |
2438 | } | |
2439 | ||
2440 | CMD:setmoney(playerid, params[]) return admsys_cmd_setmoney(playerid, params); | |
2441 | admsys_cmd_setmoney(playerid, params[]) | |
2442 | { | |
2443 | if(IsPlayerAdminEx(playerid, 4)) | |
2444 | { | |
2445 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setmoney [id] [сумма]"); | |
2446 | static strtmp[75]; | |
2447 | new pos, oldpos; | |
2448 | while(params[pos] > ' ') pos++; | |
2449 | strmid(strtmp, params, 0, pos); | |
2450 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setmoney [id] [сумма]"); | |
2451 | new giveid = strval(strtmp); | |
2452 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2453 | while(params[pos] == ' ') pos++; | |
2454 | oldpos = pos; | |
2455 | while(params[pos] > ' ') pos++; | |
2456 | strmid(strtmp, params, oldpos, pos); | |
2457 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2458 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setmoney [id] [сумма]"); | |
2459 | static strname[24]; | |
2460 | new gmoney = strval(strtmp); | |
2461 | AdmSysInfo[playerid][asLastAction] = 3; | |
2462 | AdmSysInfo[playerid][asLastIntData][0] = GetPlayerMoney(giveid); | |
2463 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2464 | ResetPlayerMoney(giveid); | |
2465 | GivePlayerMoney(giveid, gmoney); | |
2466 | GetPlayerName(giveid, strname, sizeof strname); | |
2467 | format(strtmp, sizeof strtmp, "Вы установили %s[%d] сумму денег $%d", strname, giveid, gmoney); | |
2468 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2469 | GetPlayerName(playerid, strname, sizeof strname); | |
2470 | format(strtmp, sizeof strtmp, "Администратор %s установил вам сумму денег $%d", strname, gmoney); | |
2471 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2472 | } | |
2473 | return 1; | |
2474 | } | |
2475 | ||
2476 | CMD:setskin(playerid, params[]) return admsys_cmd_setskin(playerid, params); | |
2477 | admsys_cmd_setskin(playerid, params[]) | |
2478 | { | |
2479 | if(IsPlayerAdminEx(playerid, 4)) | |
2480 | { | |
2481 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setskin [id] [скин]"); | |
2482 | static strtmp[55]; | |
2483 | new pos, oldpos; | |
2484 | while(params[pos] > ' ') pos++; | |
2485 | strmid(strtmp, params, 0, pos); | |
2486 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setskin [id] [скин]"); | |
2487 | new giveid = strval(strtmp); | |
2488 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2489 | while(params[pos] == ' ') pos++; | |
2490 | oldpos = pos; | |
2491 | while(params[pos] > ' ') pos++; | |
2492 | strmid(strtmp, params, oldpos, pos); | |
2493 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2494 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setskin [id] [скин]"); | |
2495 | new skinid = strval(strtmp); | |
2496 | if(!(-1 < skinid < 312)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте ID скина от 0 до 311"); | |
2497 | static strname[24]; | |
2498 | AdmSysInfo[playerid][asLastAction] = 4; | |
2499 | AdmSysInfo[playerid][asLastIntData][0] = GetPlayerSkin(giveid); | |
2500 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2501 | SetPlayerSkin(giveid, skinid); | |
2502 | GetPlayerName(giveid, strname, sizeof strname); | |
2503 | format(strtmp, sizeof strtmp, "Вы изменили скин %s[%d] на %d", strname, giveid, skinid); | |
2504 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2505 | GetPlayerName(playerid, strname, sizeof strname); | |
2506 | format(strtmp, sizeof strtmp, "Администратор %s изменил ваш скин на %d", strname, skinid); | |
2507 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2508 | } | |
2509 | return 1; | |
2510 | } | |
2511 | ||
2512 | CMD:setint(playerid, params[]) return admsys_cmd_setint(playerid, params); | |
2513 | CMD:setinterior(playerid, params[]) return admsys_cmd_setint(playerid, params); | |
2514 | admsys_cmd_setint(playerid, params[]) | |
2515 | { | |
2516 | if(IsPlayerAdminEx(playerid, 4)) | |
2517 | { | |
2518 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setint [id] [интерьер]"); | |
2519 | static strtmp[68]; | |
2520 | new pos, oldpos; | |
2521 | while(params[pos] > ' ') pos++; | |
2522 | strmid(strtmp, params, 0, pos); | |
2523 | if(!admsys_IsNumeric(strtmp)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setint [id] [интерьер]"); | |
2524 | new giveid = strval(strtmp); | |
2525 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2526 | while(params[pos] == ' ') pos++; | |
2527 | oldpos = pos; | |
2528 | while(params[pos] > ' ') pos++; | |
2529 | strmid(strtmp, params, oldpos, pos); | |
2530 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2531 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setint [id] [интерьер]"); | |
2532 | static strname[24]; | |
2533 | new gint = strval(strtmp); | |
2534 | AdmSysInfo[playerid][asLastAction] = 5; | |
2535 | AdmSysInfo[playerid][asLastIntData][0] = GetPlayerInterior(giveid); | |
2536 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2537 | SetPlayerInterior(giveid, gint); | |
2538 | GetPlayerName(giveid, strname, sizeof strname); | |
2539 | format(strtmp, sizeof strtmp, "Вы установили %s[%d] интерьер %d", strname, giveid, gint); | |
2540 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2541 | GetPlayerName(playerid, strname, sizeof strname); | |
2542 | format(strtmp, sizeof strtmp, "Администратор %s установил вам интерьер %d", strname, gint); | |
2543 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2544 | } | |
2545 | return 1; | |
2546 | } | |
2547 | ||
2548 | CMD:setvw(playerid, params[]) return admsys_cmd_setvw(playerid, params); | |
2549 | CMD:setvirtualworld(playerid, params[]) return admsys_cmd_setvw(playerid, params); | |
2550 | admsys_cmd_setvw(playerid, params[]) | |
2551 | { | |
2552 | if(IsPlayerAdminEx(playerid, 4)) | |
2553 | { | |
2554 | if(admsys_isnull(params)) | |
2555 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setvw [id] [виртуальный мир]"); | |
2556 | static strtmp[82]; | |
2557 | new pos, oldpos; | |
2558 | while(params[pos] > ' ') pos++; | |
2559 | strmid(strtmp, params, 0, pos); | |
2560 | if(!admsys_IsNumeric(strtmp)) | |
2561 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setvw [id] [виртуальный мир]"); | |
2562 | new giveid = strval(strtmp); | |
2563 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2564 | while(params[pos] == ' ') pos++; | |
2565 | oldpos = pos; | |
2566 | while(params[pos] > ' ') pos++; | |
2567 | strmid(strtmp, params, oldpos, pos); | |
2568 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2569 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setvw [id] [виртуальный мир]"); | |
2570 | static strname[24]; | |
2571 | new gvw = strval(strtmp); | |
2572 | AdmSysInfo[playerid][asLastAction] = 6; | |
2573 | AdmSysInfo[playerid][asLastIntData][0] = GetPlayerVirtualWorld(giveid); | |
2574 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2575 | SetPlayerVirtualWorld(giveid, gvw); | |
2576 | GetPlayerName(giveid, strname, sizeof strname); | |
2577 | format(strtmp, sizeof strtmp, "Вы установили %s[%d] виртуальный мир %d", strname, giveid, gvw); | |
2578 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2579 | GetPlayerName(playerid, strname, sizeof strname); | |
2580 | format(strtmp, sizeof strtmp, "Администратор %s установил вам виртуальный мир %d", strname, gvw); | |
2581 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2582 | } | |
2583 | return 1; | |
2584 | } | |
2585 | ||
2586 | CMD:giveweapon(playerid, params[]) return admsys_cmd_giveweapon(playerid, params); | |
2587 | admsys_cmd_giveweapon(playerid, params[]) | |
2588 | { | |
2589 | if(IsPlayerAdminEx(playerid, 4)) | |
2590 | { | |
2591 | if(admsys_isnull(params)) | |
2592 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /giveweapon [id] [оружие] [патроны]"); | |
2593 | static strtmp[80]; | |
2594 | new pos, oldpos; | |
2595 | while(params[pos] > ' ') pos++; | |
2596 | strmid(strtmp, params, 0, pos); | |
2597 | if(!admsys_IsNumeric(strtmp)) | |
2598 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /giveweapon [id] [оружие] [патроны]"); | |
2599 | new giveid = strval(strtmp); | |
2600 | if(!IsPlayerConnected(giveid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок не найден"); | |
2601 | while(params[pos] == ' ') pos++; | |
2602 | oldpos = pos; | |
2603 | while(params[pos] > ' ') pos++; | |
2604 | strmid(strtmp, params, oldpos, pos); | |
2605 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2606 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /giveweapon [id] [оружие] [патроны]"); | |
2607 | new gweapon = strval(strtmp); | |
2608 | if(!(-1 < gweapon < 47)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте ID оружия от 0 до 46"); | |
2609 | while(params[pos] == ' ') pos++; | |
2610 | oldpos = pos; | |
2611 | while(params[pos] > ' ') pos++; | |
2612 | strmid(strtmp, params, oldpos, pos); | |
2613 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2614 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /giveweapon [id] [оружие] [патроны]"); | |
2615 | static strname[24]; | |
2616 | new gammo = strval(strtmp); | |
2617 | AdmSysInfo[playerid][asLastAction] = 7; | |
2618 | AdmSysInfo[playerid][asLastIntData][0] = gweapon; | |
2619 | AdmSysInfo[playerid][asLastIntData][1] = gammo; | |
2620 | AdmSysInfo[playerid][asLastActionID] = giveid; | |
2621 | GivePlayerWeapon(giveid, gweapon, gammo); | |
2622 | GetPlayerName(giveid, strname, sizeof strname); | |
2623 | format(strtmp, sizeof strtmp, "Вы выдали %s[%d] оружие %d с %d патронами", strname, giveid, gweapon, gammo); | |
2624 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2625 | GetPlayerName(playerid, strname, sizeof strname); | |
2626 | format(strtmp, sizeof strtmp, "Администратор %s выдал вам оружие %d с %d патронами", strname, gweapon, gammo); | |
2627 | SendClientMessage(giveid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2628 | } | |
2629 | return 1; | |
2630 | } | |
2631 | ||
2632 | CMD:repairveh(playerid, params[]) return admsys_cmd_repairveh(playerid, params); | |
2633 | admsys_cmd_repairveh(playerid, params[]) | |
2634 | { | |
2635 | if(IsPlayerAdminEx(playerid, 4)) | |
2636 | { | |
2637 | if(admsys_isnull(params)) | |
2638 | { | |
2639 | if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не в транспорте"); | |
2640 | params[0] = GetPlayerVehicleID(playerid); | |
2641 | } | |
2642 | else | |
2643 | { | |
2644 | if(!admsys_IsNumeric(params)) | |
2645 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /repairveh [id транспорта]"); | |
2646 | params[0] = strval(params); | |
2647 | if(!GetVehicleModel(params[0])) | |
2648 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Транспортное средство не найдено"); | |
2649 | } | |
2650 | static strtmp[33]; | |
2651 | RepairVehicle(params[0]); | |
2652 | format(strtmp, sizeof strtmp, "Транспорт id %d отремонтирован", params[0]); | |
2653 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2654 | } | |
2655 | return 1; | |
2656 | } | |
2657 | ||
2658 | CMD:unbanip(playerid, params[]) return admsys_cmd_unbanip(playerid, params); | |
2659 | admsys_cmd_unbanip(playerid, params[]) | |
2660 | { | |
2661 | if(IsPlayerAdminEx(playerid, 4)) | |
2662 | { | |
2663 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /unbanip [IP]"); | |
2664 | for(new i, j = strlen(params); i < j; i++) | |
2665 | { | |
2666 | switch(params[i]) | |
2667 | { | |
2668 | case '*', '.', '0'..'9':{} | |
2669 | default: return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "IP-адрес введён некорректно"); | |
2670 | } | |
2671 | } | |
2672 | static strtmp[72], strname[24]; | |
2673 | format(strtmp, sizeof strtmp, "unbanip %s", params); | |
2674 | SendRconCommand(strtmp); | |
2675 | SendRconCommand("reloadbans"); | |
2676 | GetPlayerName(playerid, strname, sizeof strname); | |
2677 | format(strtmp, sizeof strtmp, "Администратор %s разбанил IP %s", strname, params); | |
2678 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2679 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2680 | #else | |
2681 | SendMessageToAdmins(4, ADMSYS_DEFAULT_COLOR, strtmp); | |
2682 | #endif | |
2683 | } | |
2684 | return 1; | |
2685 | } | |
2686 | ||
2687 | CMD:setweather(playerid, params[]) return admsys_cmd_setweather(playerid, params); | |
2688 | admsys_cmd_setweather(playerid, params[]) | |
2689 | { | |
2690 | if(IsPlayerAdminEx(playerid, 5)) | |
2691 | { | |
2692 | if(admsys_isnull(params) || !admsys_IsNumeric(params)) | |
2693 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /setweather [погода]"); | |
2694 | params[0] = strval(params); | |
2695 | if(!(-1 < params[0] < 21)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "ID погоды должен быть от 0 до 20"); | |
2696 | SetWeather(params[0]); | |
2697 | #if defined foreach | |
2698 | foreach(new i : Player) | |
2699 | #else | |
2700 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
2701 | #endif | |
2702 | { | |
2703 | SetPlayerWeather(i, params[0]); | |
2704 | } | |
2705 | static strtmp[61], strname[24]; | |
2706 | GetPlayerName(playerid, strname, sizeof strname); | |
2707 | format(strtmp, sizeof strtmp, "Администратор %s изменил погоду на %d", strname, params[0]); | |
2708 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2709 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2710 | #else | |
2711 | SendMessageToAdmins(5, ADMSYS_DEFAULT_COLOR, strtmp); | |
2712 | #endif | |
2713 | } | |
2714 | return 1; | |
2715 | } | |
2716 | ||
2717 | CMD:getall(playerid, params[]) return admsys_cmd_getall(playerid, params); | |
2718 | admsys_cmd_getall(playerid, params[]) | |
2719 | { | |
2720 | #pragma unused params | |
2721 | if(IsPlayerAdminEx(playerid, 5)) | |
2722 | { | |
2723 | new Float:pX, Float:pY, Float:pZ; | |
2724 | GetPlayerPos(playerid, pX, pY, pZ); | |
2725 | pX += 1.0; | |
2726 | pY += 1.0; | |
2727 | new interior = GetPlayerInterior(playerid), vw = GetPlayerVirtualWorld(playerid); | |
2728 | #if defined foreach | |
2729 | foreach(new i : Player) | |
2730 | #else | |
2731 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
2732 | { | |
2733 | if(IsPlayerConnected(i)) | |
2734 | #endif | |
2735 | { | |
2736 | if(!IsPlayerNPC(i) && i != playerid) | |
2737 | { | |
2738 | SetPlayerVirtualWorld(i, vw); | |
2739 | SetPlayerInterior(i, interior); | |
2740 | SetPlayerPos(i, pX, pY, pZ); | |
2741 | } | |
2742 | } | |
2743 | #if !defined foreach | |
2744 | } | |
2745 | #endif | |
2746 | static strtmp[68], strname[24]; | |
2747 | GetPlayerName(playerid, strname, sizeof strname); | |
2748 | format(strtmp, sizeof strtmp, "Администратор %s телепортировал всех к себе", strname); | |
2749 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2750 | } | |
2751 | return 1; | |
2752 | } | |
2753 | ||
2754 | CMD:settime(playerid, params[]) return admsys_cmd_settime(playerid, params); | |
2755 | admsys_cmd_settime(playerid, params[]) | |
2756 | { | |
2757 | if(IsPlayerAdminEx(playerid, 5)) | |
2758 | { | |
2759 | if(admsys_isnull(params) || !admsys_IsNumeric(params)) | |
2760 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /settime [час]"); | |
2761 | params[0] = strval(params); | |
2762 | if(!(-1 < params[0] < 24)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Час должен быть от 0 до 23"); | |
2763 | SetWorldTime(params[0]); | |
2764 | #if defined foreach | |
2765 | foreach(new i : Player) | |
2766 | #else | |
2767 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
2768 | #endif | |
2769 | { | |
2770 | SetPlayerTime(i, params[0], 0); | |
2771 | } | |
2772 | static strtmp[67], strname[24]; | |
2773 | GetPlayerName(playerid, strname, sizeof strname); | |
2774 | format(strtmp, sizeof strtmp, "Администратор %s изменил время на %d часов", strname, params[0]); | |
2775 | #if defined SEND_ACTION_MESSAGES_TO_ALL | |
2776 | SendClientMessageToAll(ADMSYS_DEFAULT_COLOR, strtmp); | |
2777 | #undef SEND_ACTION_MESSAGES_TO_ALL | |
2778 | #else | |
2779 | SendMessageToAdmins(5, ADMSYS_DEFAULT_COLOR, strtmp); | |
2780 | #endif | |
2781 | } | |
2782 | return 1; | |
2783 | } | |
2784 | ||
2785 | CMD:destroyveh(playerid, params[]) return admsys_cmd_destroyveh(playerid, params); | |
2786 | admsys_cmd_destroyveh(playerid, params[]) | |
2787 | { | |
2788 | if(IsPlayerAdminEx(playerid, 5)) | |
2789 | { | |
2790 | if(admsys_isnull(params)) | |
2791 | { | |
2792 | if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не в транспорте"); | |
2793 | params[0] = GetPlayerVehicleID(playerid); | |
2794 | } | |
2795 | else | |
2796 | { | |
2797 | if(!admsys_IsNumeric(params)) | |
2798 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /destroyveh [id транспорта]"); | |
2799 | params[0] = strval(params); | |
2800 | if(!GetVehicleModel(params[0])) | |
2801 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Транспортное средство не найдено"); | |
2802 | } | |
2803 | static strtmp[28]; | |
2804 | DestroyVehicle(params[0]); | |
2805 | format(strtmp, sizeof strtmp, "Транспорт id %d уничтожен", params[0]); | |
2806 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2807 | } | |
2808 | return 1; | |
2809 | } | |
2810 | ||
2811 | CMD:veh(playerid, params[]) return admsys_cmd_veh(playerid, params); | |
2812 | CMD:vehicle(playerid, params[]) return admsys_cmd_veh(playerid, params); | |
2813 | admsys_cmd_veh(playerid, params[]) | |
2814 | { | |
2815 | if(IsPlayerAdminEx(playerid, 5)) | |
2816 | { | |
2817 | if(IsPlayerSpectating(playerid)) | |
2818 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы в режиме наблюдения"); | |
2819 | if(admsys_isnull(params)) | |
2820 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /veh [id транспорта] [цвет 1] [цвет 2]"); | |
2821 | static strtmp[48]; | |
2822 | new pos, oldpos; | |
2823 | while(params[pos] > ' ') pos++; | |
2824 | strmid(strtmp, params, 0, pos); | |
2825 | if(!admsys_IsNumeric(strtmp)) | |
2826 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /veh [id транспорта] [цвет 1] [цвет 2]"); | |
2827 | new gveh = strval(strtmp); | |
2828 | if(!(399 < gveh < 612)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте ID транспорта от 400 до 611"); | |
2829 | while(params[pos] == ' ') pos++; | |
2830 | oldpos = pos; | |
2831 | new gcolor1, gcolor2; | |
2832 | if(!params[oldpos]) | |
2833 | { | |
2834 | gcolor1 = random(256); | |
2835 | gcolor2 = random(256); | |
2836 | } | |
2837 | else | |
2838 | { | |
2839 | while(params[pos] > ' ') pos++; | |
2840 | strmid(strtmp, params, oldpos, pos); | |
2841 | if(!admsys_IsNumeric(strtmp)) | |
2842 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /veh [id транспорта] [цвет 1] [цвет 2]"); | |
2843 | gcolor1 = strval(strtmp); | |
2844 | if(!(-1 < gcolor1 < 256)) | |
2845 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте цвет 1 от 0 до 255"); | |
2846 | while(params[pos] == ' ') pos++; | |
2847 | oldpos = pos; | |
2848 | while(params[pos] > ' ') pos++; | |
2849 | strmid(strtmp, params, oldpos, pos); | |
2850 | if(!params[oldpos] || !admsys_IsNumeric(strtmp)) | |
2851 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /veh [id транспорта] [цвет 1] [цвет 2]"); | |
2852 | gcolor2 = strval(strtmp); | |
2853 | if(!(-1 < gcolor2 < 256)) | |
2854 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте цвет 2 от 0 до 255"); | |
2855 | } | |
2856 | new vid, Float:pX, Float:pY, Float:pZ, Float:pAngle; | |
2857 | GetPlayerPos(playerid, pX, pY, pZ); | |
2858 | GetPlayerFacingAngle(playerid, pAngle); | |
2859 | vid = CreateVehicle(gveh, pX, pY, pZ, pAngle, gcolor1, gcolor2, -1); | |
2860 | SetVehicleVirtualWorld(vid, GetPlayerVirtualWorld(playerid)); | |
2861 | LinkVehicleToInterior(vid, GetPlayerInterior(playerid)); | |
2862 | PutPlayerInVehicle(playerid, vid, 0); | |
2863 | format(strtmp, sizeof strtmp, "Транспорт id %d с цветами %d и %d заспавнен", vid, gcolor1, gcolor2); | |
2864 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2865 | } | |
2866 | return 1; | |
2867 | } | |
2868 | ||
2869 | CMD:skick(playerid, params[]) return admsys_cmd_skick(playerid, params); | |
2870 | admsys_cmd_skick(playerid, params[]) | |
2871 | { | |
2872 | if(IsPlayerAdminEx(playerid, 5)) | |
2873 | { | |
2874 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /skick [id]"); | |
2875 | static strtmp2[10]; | |
2876 | for(new i = 1, strtmp[32], pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
2877 | { | |
2878 | while(params[pos] == ' ') pos++; | |
2879 | if(params[pos]) | |
2880 | { | |
2881 | oldpos = pos; | |
2882 | while(params[pos] > ' ') pos++; | |
2883 | strmid(strtmp, params, oldpos, pos); | |
2884 | if(!admsys_IsNumeric(strtmp)) | |
2885 | { | |
2886 | strtmp = "Используйте: /skick [id]"; | |
2887 | if(i > 1) | |
2888 | { | |
2889 | for(j = 2; j <= i; j++) | |
2890 | { | |
2891 | format(strtmp2, sizeof strtmp2, " [id %d]", j); | |
2892 | strcat(strtmp, strtmp2); | |
2893 | } | |
2894 | } | |
2895 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2896 | } | |
2897 | giveid = strval(strtmp); | |
2898 | if(!IsPlayerConnected(giveid)) | |
2899 | { | |
2900 | if(i == 1) strtmp = "Игрок не найден"; | |
2901 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
2902 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2903 | } | |
2904 | else | |
2905 | { | |
2906 | CallLocalFunction("OnPlayerKick", "iii", giveid, playerid, true); | |
2907 | Kick(giveid); | |
2908 | } | |
2909 | } | |
2910 | } | |
2911 | } | |
2912 | return 1; | |
2913 | } | |
2914 | ||
2915 | CMD:sban(playerid, params[]) return admsys_cmd_sban(playerid, params); | |
2916 | admsys_cmd_sban(playerid, params[]) | |
2917 | { | |
2918 | if(IsPlayerAdminEx(playerid, 5)) | |
2919 | { | |
2920 | if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /sban [id]"); | |
2921 | static strtmp2[10]; | |
2922 | for(new i = 1, strtmp[32], pos, oldpos, giveid, j; i <= ADMSYS_MAX_GIVE_PLAYERS_IN_CMD; i++) | |
2923 | { | |
2924 | while(params[pos] == ' ') pos++; | |
2925 | if(params[pos]) | |
2926 | { | |
2927 | oldpos = pos; | |
2928 | while(params[pos] > ' ') pos++; | |
2929 | strmid(strtmp, params, oldpos, pos); | |
2930 | if(!admsys_IsNumeric(strtmp)) | |
2931 | { | |
2932 | strtmp = "Используйте: /sban [id]"; | |
2933 | if(i > 1) | |
2934 | { | |
2935 | for(j = 2; j <= i; j++) | |
2936 | { | |
2937 | format(strtmp2, sizeof strtmp2, " [id %d]", j); | |
2938 | strcat(strtmp, strtmp2); | |
2939 | } | |
2940 | } | |
2941 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2942 | } | |
2943 | giveid = strval(strtmp); | |
2944 | if(!IsPlayerConnected(giveid)) | |
2945 | { | |
2946 | if(i == 1) strtmp = "Игрок не найден"; | |
2947 | else format(strtmp, sizeof strtmp, "Игрок %d не найден", i); | |
2948 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, strtmp); | |
2949 | } | |
2950 | else | |
2951 | { | |
2952 | CallLocalFunction("OnPlayerBan", "iii", giveid, playerid, true); | |
2953 | Ban(giveid); | |
2954 | } | |
2955 | } | |
2956 | } | |
2957 | } | |
2958 | return 1; | |
2959 | } | |
2960 | ||
2961 | stock SetPlayerAdminLevel(playerid, lvl) | |
2962 | { | |
2963 | if(!IsPlayerConnected(playerid) || !(0 <= lvl <= 5)) return 0; | |
2964 | AdmSysInfo[playerid][asAdminLvl] = lvl; | |
2965 | return 1; | |
2966 | } | |
2967 | ||
2968 | stock GetPlayerAdminLevel(playerid) | |
2969 | { | |
2970 | if(!IsPlayerConnected(playerid)) return 0; | |
2971 | if(IsPlayerAdmin(playerid)) return 5; | |
2972 | return AdmSysInfo[playerid][asAdminLvl]; | |
2973 | } | |
2974 | ||
2975 | stock IsPlayerAdminEx(playerid, lvl = 1) return (GetPlayerAdminLevel(playerid) >= lvl); | |
2976 | ||
2977 | stock SetPlayerMuteTime(playerid, time) | |
2978 | { | |
2979 | if(!IsPlayerConnected(playerid) || time < 0) return 0; | |
2980 | AdmSysInfo[playerid][asMuteTime] = time; | |
2981 | return 1; | |
2982 | } | |
2983 | ||
2984 | stock GetPlayerMuteTime(playerid) return (IsPlayerConnected(playerid) ? AdmSysInfo[playerid][asMuteTime] : 0); | |
2985 | ||
2986 | stock UpdateSuspectList() | |
2987 | { | |
2988 | new c; | |
2989 | for(new i, j; i < sizeof SuspectList; ++i) | |
2990 | { | |
2991 | if(!IsPlayerConnected(SuspectList[i])) | |
2992 | { | |
2993 | c++; | |
2994 | for(j = i; j < sizeof(SuspectList) - 1; ++j) SuspectList[j] = SuspectList[j + 1]; | |
2995 | SuspectList[j] = INVALID_PLAYER_ID; | |
2996 | } | |
2997 | } | |
2998 | return c; | |
2999 | } | |
3000 | ||
3001 | stock AddPlayerInSuspectList(playerid) | |
3002 | { | |
3003 | UpdateSuspectList(); | |
3004 | if(IsPlayerConnected(playerid)) | |
3005 | { | |
3006 | new i; | |
3007 | for(i = sizeof(SuspectList) - 1; i != -1; --i) | |
3008 | { | |
3009 | if(SuspectList[i] == playerid) return 0; | |
3010 | } | |
3011 | new tmp1 = SuspectList[0], tmp2; | |
3012 | for(i = 0; i < sizeof(SuspectList) - 1; ++i) | |
3013 | { | |
3014 | tmp2 = SuspectList[i + 1]; | |
3015 | SuspectList[i + 1] = tmp1; | |
3016 | tmp1 = tmp2; | |
3017 | } | |
3018 | SuspectList[0] = playerid; | |
3019 | return 1; | |
3020 | } | |
3021 | return 0; | |
3022 | } | |
3023 | ||
3024 | stock RemovePlayerFromSuspectList(playerid) | |
3025 | { | |
3026 | for(new i = sizeof(SuspectList) - 1; i != -1; --i) | |
3027 | { | |
3028 | if(SuspectList[i] == playerid) | |
3029 | { | |
3030 | SuspectList[i] = INVALID_PLAYER_ID; | |
3031 | break; | |
3032 | } | |
3033 | } | |
3034 | UpdateSuspectList(); | |
3035 | return 1; | |
3036 | } | |
3037 | ||
3038 | stock SendMessageToAdmins(lvl, color, const msg[]) | |
3039 | { | |
3040 | #if defined foreach | |
3041 | foreach(new i : Player) | |
3042 | #else | |
3043 | for(new i = GetPlayerPoolSize(); i != -1; --i) | |
3044 | #endif | |
3045 | { | |
3046 | if(GetPlayerAdminLevel(i) >= lvl) SendClientMessage(i, color, msg); | |
3047 | } | |
3048 | return 1; | |
3049 | } | |
3050 | ||
3051 | static stock admsys_IsNumeric(const string[]) | |
3052 | { | |
3053 | new length = strlen(string); | |
3054 | if(!length) return 0; | |
3055 | for(new i; i < length; i++) | |
3056 | { | |
3057 | if(!('0' <= string[i] <= '9' || !i && (string[i] == '-' || string[i] == '+'))) return 0; | |
3058 | } | |
3059 | return 1; | |
3060 | } | |
3061 | ||
3062 | stock IsPlayerSpectating(playerid) return IsPlayerConnected(AdmSysInfo[playerid][asSpecID]); | |
3063 | ||
3064 | stock StartSpectating(playerid, specid) | |
3065 | { | |
3066 | if(!IsPlayerConnected(playerid) || !IsPlayerConnected(specid)) return 0; | |
3067 | if(playerid == specid) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не можете следить за самим собой"); | |
3068 | if(IsPlayerSpectating(specid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок в режиме наблюдения"); | |
3069 | if(AdmSysInfo[playerid][asSpecID] == specid) return UpdateSpectating(playerid); | |
3070 | if(!AdmSysInfo[specid][asIsSpawned] && !AdmSysInfo[specid][asIsDead]) | |
3071 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок ещё не заспавнился"); | |
3072 | if(!IsPlayerSpectating(playerid)) | |
3073 | { | |
3074 | for(new i = 12; i != -1; --i) | |
3075 | GetPlayerWeaponData(playerid, i, AdmSysInfo[playerid][asLastWeapon][i], AdmSysInfo[playerid][asLastAmmo][i]); | |
3076 | GetPlayerPos(playerid, AdmSysInfo[playerid][asLastPos][0], | |
3077 | AdmSysInfo[playerid][asLastPos][1], AdmSysInfo[playerid][asLastPos][2]); | |
3078 | AdmSysInfo[playerid][asLastSpec] = (GetPlayerState(playerid) == 9); | |
3079 | GetPlayerFacingAngle(playerid, AdmSysInfo[playerid][asLastAngle]); | |
3080 | AdmSysInfo[playerid][asLastVW] = GetPlayerVirtualWorld(playerid); | |
3081 | AdmSysInfo[playerid][asLastInt] = GetPlayerInterior(playerid); | |
3082 | } | |
3083 | AdmSysInfo[playerid][asLastSpecID] = AdmSysInfo[playerid][asSpecID]; | |
3084 | TogglePlayerSpectating(playerid, 1); | |
3085 | if(AdmSysInfo[specid][asIsDead]) | |
3086 | { | |
3087 | new Float:pX, Float:pY, Float:pZ, Float:cX, Float:cY, Float:cZ; | |
3088 | GetPlayerCameraPos(specid, cX, cY, cZ); | |
3089 | GetPlayerPos(specid, pX, pY, pZ); | |
3090 | SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Игрок умер"); | |
3091 | SetPlayerCameraPos(playerid, cX, cY, cZ); | |
3092 | SetPlayerCameraLookAt(playerid, pX, pY, pZ); | |
3093 | } | |
3094 | SetPlayerInterior(playerid, GetPlayerInterior(specid)); | |
3095 | SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(specid)); | |
3096 | if(IsPlayerInAnyVehicle(specid)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid)); | |
3097 | else PlayerSpectatePlayer(playerid, specid); | |
3098 | AdmSysInfo[playerid][asSpecID] = specid; | |
3099 | UpdateSpecInfo(playerid); | |
3100 | return 1; | |
3101 | } | |
3102 | ||
3103 | stock UpdateSpectating(playerid) | |
3104 | { | |
3105 | if(!IsPlayerConnected(playerid)) return 0; | |
3106 | if(AdmSysInfo[playerid][asSpecID] == INVALID_PLAYER_ID) | |
3107 | return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не в режиме наблюдения"); | |
3108 | if(!IsPlayerConnected(AdmSysInfo[playerid][asSpecID])) return StopSpectating(playerid); | |
3109 | TogglePlayerSpectating(playerid, 1); | |
3110 | SetPlayerInterior(playerid, GetPlayerInterior(AdmSysInfo[playerid][asSpecID])); | |
3111 | SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(AdmSysInfo[playerid][asSpecID])); | |
3112 | if(IsPlayerInAnyVehicle(AdmSysInfo[playerid][asSpecID])) | |
3113 | PlayerSpectateVehicle(playerid, GetPlayerVehicleID(AdmSysInfo[playerid][asSpecID])); | |
3114 | else PlayerSpectatePlayer(playerid, AdmSysInfo[playerid][asSpecID]); | |
3115 | return 1; | |
3116 | } | |
3117 | ||
3118 | stock StopSpectating(playerid) | |
3119 | { | |
3120 | if(!IsPlayerConnected(playerid)) return 0; | |
3121 | if(!IsPlayerSpectating(playerid)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Вы не в режиме наблюдения"); | |
3122 | if(AdmSysInfo[playerid][asLastSpecID] == INVALID_PLAYER_ID) | |
3123 | { | |
3124 | TogglePlayerSpectating(playerid, AdmSysInfo[playerid][asLastSpec]); | |
3125 | KillTimer(AdmSysInfo[playerid][asUpdTimer]); | |
3126 | } | |
3127 | else | |
3128 | { | |
3129 | AdmSysInfo[playerid][asSpecID] = AdmSysInfo[playerid][asLastSpecID]; | |
3130 | AdmSysInfo[playerid][asLastSpecID] = INVALID_PLAYER_ID; | |
3131 | UpdateSpectating(playerid); | |
3132 | } | |
3133 | return 1; | |
3134 | } | |
3135 | ||
3136 | #undef ADMSYS_DEFAULT_COLOR | |
3137 | ||
3138 | #undef ADMSYS_MAX_TAB_INPUT | |
3139 | #undef ADMSYS_MAX_SUSPECTS_IN_TABLE | |
3140 | #undef ADMSYS_MAX_GIVE_PLAYERS_IN_CMD | |
3141 | #undef ADMSYS_MAX_WARNS | |
3142 | ||
3143 | #undef admsys_isnull | |
3144 | #undef admsys_fpublic |