Guest User

Untitled

a guest
Apr 2nd, 2011
1,102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.27 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf>
  3. #include <zcmd>
  4. #include <dudb>
  5. #include <dini>
  6.  
  7. #pragma unused ret_memcpy
  8. //Files
  9. #define USER_FILE "Accounts\\%s.ini"
  10.  
  11. //Colors
  12. #define COLOR_YELLOW 0xFFFF00AA
  13. #define COLOR_RED 0xFF0000AA
  14. #define COLOR_WHITE 0xFFFFFFFF
  15. #define COLOR_REPORT 0xFFCC66AA
  16. #define COLOR_GRAY 0x999999AA
  17. #define COLOR_LIGHTBLUE 0x33CCFFAA
  18.  
  19. //Variables
  20. new PlayerMuted[MAX_PLAYERS];
  21.  
  22.  
  23. public OnFilterScriptInit()
  24. {
  25. print("\n--------------------------------------------");
  26. print(" Login/Admin System By austin070 Loaded");
  27. print("--------------------------------------------\n");
  28. return 1;
  29. }
  30. public OnPlayerConnect(playerid)
  31. {
  32. new file[128];
  33. format(file, sizeof(file), USER_FILE, GetPName(playerid));
  34. if(dini_Int(file, "Banned")== 1) {
  35. SendClientMessage(playerid, COLOR_RED, "You are BANNED from this server.");
  36. }
  37. if(fexist(file)) {
  38. ShowLogin(playerid);
  39. }else {
  40. ShowRegister(playerid);
  41. }
  42. return 1;
  43. }
  44.  
  45. public OnPlayerDisconnect(playerid, reason)
  46. {
  47. new Float:X, Float:Y, Float:Z;
  48. new file[128]; format(file, 128, USER_FILE, GetPName(playerid));
  49. if(fexist(file)) {
  50. GetPlayerPos(playerid, X, Y, Z);
  51. dini_FloatSet(file, "LastX", X);
  52. dini_FloatSet(file, "LastY", Y);
  53. dini_FloatSet(file, "LastZ", Z);
  54. dini_IntSet(file, "Cash", GetPlayerMoney(playerid));
  55. }
  56. return 1;
  57. }
  58. public OnPlayerUpdate(playerid)
  59. {
  60. return 1;
  61. }
  62. public OnPlayerSpawn(playerid)
  63. {
  64. new file[128];
  65. format(file, sizeof(file), USER_FILE, GetPName(playerid));
  66. if(fexist(file)) {
  67. SetPlayerPos(playerid, dini_Float(file, "LastX"),dini_Float(file, "LastY"),dini_Float(file, "LastZ"));
  68. SetCameraBehindPlayer(playerid);
  69. GivePlayerMoney(playerid, dini_Int(file, "Cash"));
  70. }
  71. return 1;
  72. }
  73. public OnRconLoginAttempt(ip[], password[],success)
  74. {
  75. if(success)
  76. {
  77. new eyep[16];
  78. for(new i=0; i<MAX_PLAYERS; i++)
  79. {
  80. GetPlayerIp(i, eyep, sizeof(eyep));
  81. if(strcmp(ip, eyep, true) == 0)
  82. {
  83. SetAdminLevel(i, 5);
  84. }
  85. }
  86. }
  87. return 1;
  88. }
  89. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  90. {
  91. switch(dialogid)
  92. {
  93. case 1:
  94. {
  95. if(!response) return Kick(playerid);
  96. new file[128];
  97. format(file, 128, USER_FILE, GetPName(playerid));
  98. if(!strlen(inputtext)) return ShowLogin(playerid);
  99. if(udb_hash(inputtext) !=dini_Int(file, "Password")) {
  100. ShowLogin(playerid);
  101. SendClientMessage(playerid, COLOR_RED, "You have entered an incorrect password.");
  102. return ShowLogin(playerid);
  103. }
  104. SendClientMessage(playerid, COLOR_YELLOW, "You have successfully logged in!");
  105. SetPlayerColor(playerid, COLOR_WHITE);
  106. }
  107. case 2:
  108. {
  109. if(!response) return Kick(playerid);
  110. new file[128];
  111. format(file, 128, USER_FILE, GetPName(playerid));
  112. if(!strlen(inputtext)) return ShowRegister(playerid);
  113. dini_Create(file);
  114. dini_Set(file, "Name", GetPName(playerid));
  115. dini_IntSet(file, "Password", udb_hash(inputtext));
  116. dini_IntSet(file, "LastInt", 0);
  117. dini_IntSet(file, "AdminLevel", 0);
  118. SendClientMessage(playerid, COLOR_YELLOW, "You have successfully registered and have logged in!");
  119. SetPlayerColor(playerid, COLOR_WHITE);
  120. }
  121. }
  122. return 1;
  123. }
  124. public OnPlayerText(playerid, text[])
  125. {
  126. if(PlayerMuted[playerid] == 1) {
  127. SendClientMessage(playerid, COLOR_RED, "You are muted!");
  128. return 0;
  129. }
  130. return 1;
  131. }
  132.  
  133. ShowLogin(playerid)
  134. {
  135. ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Login", "Please type your password below to log in.", "Log In", "Leave");
  136. return 1;
  137. }
  138. ShowRegister(playerid)
  139. {
  140. ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Register", "Please type in a password to register your account", "Register", "Leave");
  141. return 1;
  142. }
  143. GetPName(playerid)
  144. {
  145. new PlayerName[MAX_PLAYER_NAME];
  146. GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
  147. return PlayerName;
  148. }
  149. GetAdminLevel(playerid)
  150. {
  151. new file[128]; format(file, 128, USER_FILE, GetPName(playerid));
  152. return dini_Int(file, "AdminLevel");
  153. }
  154. stock SetAdminLevel(playerid, level)
  155. {
  156. new file[128];
  157. format(file, sizeof(file), USER_FILE, GetPName(playerid));
  158. return dini_IntSet(file, "AdminLevel", level);
  159. }
  160. /* ADMIN SYSTEM
  161. LEVELS GO FROM 1-5
  162. */
  163. CMD:report(playerid, params[])
  164. {
  165. new str[50];
  166. if(sscanf(params, "s[50]", str)== 0) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /report [text]");
  167. SendClientMessage(playerid, COLOR_YELLOW, "Your report has been sent to any online admins.");
  168. for(new i=0; i<MAX_PLAYERS; i++)
  169. {
  170. if(GetAdminLevel(i)>= 1 || IsPlayerAdmin(i))
  171. {
  172. format(str, sizeof(str), "[REPORT] %s: %s", GetPName(playerid), params);
  173. SendClientMessage(i, COLOR_REPORT, str);
  174. }
  175. }
  176. return 1;
  177. }
  178. CMD:ahelp(playerid, params[])
  179. {
  180. if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid))
  181. {
  182. SendClientMessage(playerid, COLOR_WHITE, "LEVEL 1");
  183. SendClientMessage(playerid, COLOR_GRAY, "/respawncar /goto /gethere /apm /repair /freeze /unfreeze /mute /unmute");
  184. }
  185. if(GetAdminLevel(playerid) >=2 || IsPlayerAdmin(playerid))
  186. {
  187. SendClientMessage(playerid, COLOR_WHITE, "LEVEL 2");
  188. SendClientMessage(playerid, COLOR_GRAY, "/disarm /respawnallcars /veh /kick /givemoney");
  189. }
  190. if(GetAdminLevel(playerid) >=3 || IsPlayerAdmin(playerid))
  191. {
  192. SendClientMessage(playerid, COLOR_WHITE, "LEVEL 3");
  193. SendClientMessage(playerid, COLOR_GRAY, "/ban /akill");
  194. }
  195. if(GetAdminLevel(playerid) >=4 || IsPlayerAdmin(playerid))
  196. {
  197. SendClientMessage(playerid, COLOR_WHITE, "LEVEL 4");
  198. SendClientMessage(playerid, COLOR_GRAY, "/sethp");
  199. }
  200. if(GetAdminLevel(playerid) >=5 || IsPlayerAdmin(playerid))
  201. {
  202. SendClientMessage(playerid, COLOR_WHITE, "LEVEL 5");
  203. SendClientMessage(playerid, COLOR_GRAY, "/adminlevel /restart");
  204. }
  205. return 1;
  206. }
  207. //LEVEL 1
  208. CMD:spectate(playerid, params[])
  209. {
  210. new giveplayerid, str[128];
  211. if(GetAdminLevel(playerid) >=1) {
  212. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /spectate [playerid]");
  213. PlayerSpectatePlayer(playerid, giveplayerid);
  214. format(str, 128, "You are now spectating %s.", GetPName(giveplayerid));
  215. }
  216. return 1;
  217. }
  218.  
  219. CMD:respawncar(playerid, params[])
  220. {
  221. new vid;
  222. if(GetAdminLevel(playerid) >= 1) {
  223. if(sscanf(params, "i", vid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /respawncar [VIN]");
  224. new bool:unwanted[MAX_VEHICLES];
  225. for(new player=0; player<MAX_PLAYERS; player++)
  226. {
  227. if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
  228. }
  229. for(new i = 1; i <MAX_VEHICLES; i++)
  230. {
  231. if(!unwanted[i]) SetVehicleToRespawn(i);
  232. }
  233. }
  234. return 1;
  235. }
  236. CMD:goto(playerid, params[])
  237. {
  238. if(GetAdminLevel(playerid) >= 1) {
  239. new Float:x, Float:y, Float:z, Float:a, giveplayerid;
  240. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /goto [playerid]");
  241. if(!IsPlayerConnected(giveplayerid)) return 1;
  242. GetPlayerPos(giveplayerid, x, y, z);
  243. GetPlayerFacingAngle(giveplayerid, a);
  244. SetPlayerPos(playerid, x-1, y-1, z);
  245. SetPlayerFacingAngle(playerid, a);
  246. }
  247. return 1;
  248. }
  249. CMD:gethere(playerid, params[])
  250. {
  251. if(GetAdminLevel(playerid) >= 1) {
  252. new Float:x, Float:y, Float:z, Float:a, giveplayerid;
  253. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gethere [playerid]");
  254. if(!IsPlayerConnected(giveplayerid)) return 1;
  255. GetPlayerPos(playerid, x, y, z);
  256. GetPlayerFacingAngle(playerid, a);
  257. SetPlayerPos(giveplayerid, x-1, y-1, z);
  258. SetPlayerFacingAngle(giveplayerid, a);
  259. }
  260. return 1;
  261. }
  262. CMD:apm(playerid, params[])
  263. {
  264. if(GetAdminLevel(playerid) >= 1) {
  265. new str1[128],str[128], giveplayerid;
  266. if(sscanf(params, "us[50]", giveplayerid, str)== 0) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /apm [playerid] [text]");
  267. if(!IsPlayerConnected(giveplayerid)) return 1;
  268. format(str1, sizeof(str1), "PM from Administration: %s", params[2]);
  269. format(str, sizeof(str), "(ADMININFO) {FFFF00}Your admin PM was sent to %i", strval(params));
  270. SendClientMessage(giveplayerid, COLOR_REPORT, str1);
  271. SendClientMessage(playerid, COLOR_WHITE, str);
  272. }
  273. return 1;
  274. }
  275. CMD:repair(playerid, params[])
  276. {
  277. if(GetAdminLevel(playerid) >= 1) {
  278. if(IsPlayerInAnyVehicle(playerid)) {
  279. SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
  280. RepairVehicle(GetPlayerVehicleID(playerid));
  281. SendClientMessage(playerid, COLOR_YELLOW, "You have repaired your vehicle.");
  282. }
  283. }
  284. return 1;
  285. }
  286. CMD:freeze(playerid, params[])
  287. {
  288. new giveplayerid, str[128];
  289. if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
  290. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /freeze [playerid]");
  291. if(!IsPlayerConnected(giveplayerid)) return 1;
  292. format(str, 128, "You have frozen %s.", GetPName(giveplayerid));
  293. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  294. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been frozen by an administrator.");
  295. TogglePlayerControllable(giveplayerid, 0);
  296. }
  297. return 1;
  298. }
  299. CMD:unfreeze(playerid, params[])
  300. {
  301. new giveplayerid, str[128];
  302. if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
  303. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unfreeze [playerid]");
  304. if(!IsPlayerConnected(giveplayerid)) return 1;
  305. format(str, 128, "You have unfrozen %s.", GetPName(giveplayerid));
  306. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  307. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been unfrozen by an administrator.");
  308. TogglePlayerControllable(giveplayerid, 1);
  309. }
  310. return 1;
  311. }
  312. CMD:mute(playerid, params[])
  313. {
  314. new giveplayerid, str[128];
  315. if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
  316. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /mute [playerid]");
  317. if(!IsPlayerConnected(giveplayerid)) return 1;
  318. if(PlayerMuted[giveplayerid] == 0) {
  319. PlayerMuted[giveplayerid] = 1;
  320. format(str, 128, "You have muted %s.", GetPName(giveplayerid));
  321. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  322. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been muted by an administrator.");
  323. }else {
  324. SendClientMessage(playerid, COLOR_RED, "Player is already muted!");
  325. }
  326. }
  327. return 1;
  328. }
  329. CMD:unmute(playerid, params[])
  330. {
  331. new giveplayerid, str[128];
  332. if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
  333. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unmute [playerid]");
  334. if(!IsPlayerConnected(giveplayerid)) return 1;
  335. if(PlayerMuted[giveplayerid] == 1) {
  336. PlayerMuted[giveplayerid] = 0;
  337. format(str, 128, "You have unmuted %s.", GetPName(giveplayerid));
  338. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  339. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been unmuted by an administrator.");
  340. }else {
  341. SendClientMessage(playerid, COLOR_RED, "Player is not muted!");
  342. }
  343. }
  344. return 1;
  345. }
  346. CMD:a(playerid, params[])
  347. {
  348. new str[50];
  349. if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
  350. if(sscanf(params, "s[50]", str)== 0) SendClientMessage(playerid, COLOR_WHITE, "USAGE: /a [announcement]");
  351. SendClientMessageToAll(COLOR_RED, params);
  352. }
  353. return 1;
  354. }
  355. //LEVEL 2
  356. CMD:disarm(playerid, params[])
  357. {
  358. new giveplayerid, str[128];
  359. if(GetAdminLevel(playerid) >=2 || IsPlayerAdmin(playerid)) {
  360. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /disarm [playerid]");
  361. if(!IsPlayerConnected(giveplayerid)) return 1;
  362. format(str, 128, "You have disarmed %s.", GetPName(giveplayerid));
  363. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "Your weapons have been reset by an administrator.");
  364. ResetPlayerWeapons(giveplayerid);
  365. }
  366. return 1;
  367. }
  368. CMD:respawnallcars(playerid, params[])
  369. {
  370. if(GetAdminLevel(playerid) >= 2) {
  371. new bool:unwanted[MAX_VEHICLES];
  372. for(new player=0; player<MAX_PLAYERS; player++)
  373. {
  374. if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
  375. }
  376. for(new v = 1; v <= MAX_VEHICLES; v++)
  377. {
  378. if(!unwanted[v]) SetVehicleToRespawn(v);
  379. }
  380. }
  381. return 1;
  382. }
  383. CMD:veh(playerid, params[])
  384. {
  385. if(GetAdminLevel(playerid) >= 2) {
  386. new car;
  387. if(IsPlayerInAnyVehicle(playerid)) return 1;
  388. if(sscanf(params, "i", car)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /veh [vehid]");
  389. if(strval(params) >611 || strval(params) <400) return SendClientMessage(playerid, COLOR_RED, "Invalid model id!");
  390. new Float:x, Float:y, Float:z, Float:a;
  391. GetPlayerPos(playerid, x,y,z);
  392. GetPlayerFacingAngle(playerid, a);
  393. car = CreateVehicle(strval(params), x, y, z,a, -1, -1, 60);
  394. PutPlayerInVehicle(playerid, car, 0);
  395. }
  396. return 1;
  397. }
  398. CMD:kick(playerid, params[])
  399. {
  400. new giveplayerid;
  401. if(GetAdminLevel(playerid) >=2 || IsPlayerAdmin(playerid)) {
  402. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [playerid]");
  403. if(!IsPlayerConnected(giveplayerid)) return 1;
  404. new str[128], str2[128];
  405. format(str, 128, "You have kicked %s from the server.", GetPName(giveplayerid));
  406. format(str2, 128, "You have been kicked from the server by %s.", GetPName(playerid));
  407. SendClientMessage(playerid, COLOR_RED, str);
  408. SendClientMessage(giveplayerid, COLOR_RED, str2);
  409. Kick(giveplayerid);
  410. }
  411. return 1;
  412. }
  413. CMD:givemoney(playerid, params[])
  414. {
  415. if(GetAdminLevel(playerid) >= 2) {
  416. new giveplayerid, money;
  417. if(sscanf(params, "ui", giveplayerid, money)) SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givemoney [playerid] [amount]");
  418. if(!IsPlayerConnected(giveplayerid)) return 1;
  419. GivePlayerMoney(playerid, money);
  420. }
  421. return 1;
  422. }
  423. //LEVEL 3
  424. CMD:akill(playerid, params[])
  425. {
  426. new giveplayerid, str[128];
  427. if(GetAdminLevel(playerid >=3)) {
  428. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /akill [playerid]");
  429. if(!IsPlayerConnected(giveplayerid)) return 1;
  430. SetPlayerHealth(giveplayerid, 0);
  431. format(str, 128, "You have admin-killed %s.", GetPName(giveplayerid));
  432. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  433. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been killed by an administrator.");
  434. }
  435. return 1;
  436. }
  437. CMD:ban(playerid, params[])
  438. {
  439. if(GetAdminLevel(playerid) >= 3) {
  440. new reason[50], giveplayerid, sendername[24], year, month, day, date[128], str[128], str2[128], str3[128], PlayerName[24], file[128];
  441. if(sscanf(params, "us", giveplayerid, reason)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ban [playerid] [reason]");
  442. if(!IsPlayerConnected(giveplayerid)) return 1;
  443. getdate(year, month, day);
  444. format(date, sizeof(date), "Date: %02d/%02d/%d", month, day, year);
  445. GetPlayerName(playerid, sendername, 20);
  446. GetPlayerName(giveplayerid, PlayerName, sizeof(PlayerName));
  447. format(file, 128, USER_FILE, PlayerName);
  448. dini_IntSet(file, "Banned", 1);
  449. dini_Set(file, "BannedReason", reason);
  450. dini_Set(file, "BannedBy", sendername);
  451. dini_Set(file, "DateBanned", date);
  452. format(str, 128, "You have banned %s. Reason: %s.",PlayerName, reason);
  453. format(str2, 128, "You have been banned from this server. Reason: %s", reason);
  454. format(str3, 128, "Banned by: %s", sendername);
  455. SendClientMessage(playerid, COLOR_RED, str);
  456. SendClientMessage(giveplayerid, COLOR_RED, str2);
  457. SendClientMessage(giveplayerid, COLOR_RED, str3);
  458. SendClientMessage(giveplayerid, COLOR_RED, date);
  459. SendClientMessage(giveplayerid, COLOR_RED, "Make a ban appeal via the forums.");
  460. Kick(giveplayerid);
  461. }
  462. return 1;
  463. }
  464. //LEVEL 4
  465. CMD:sethp(playerid, params[])
  466. {
  467. new Float:health, giveplayerid, str[128], str2[128];
  468. if(GetAdminLevel(playerid) >=4 || IsPlayerAdmin(playerid)) {
  469. if(sscanf(params, "ud", giveplayerid, health)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sethp [playerid] [health]");
  470. if(!IsPlayerConnected(giveplayerid)) return 1;
  471. SetPlayerHealth(giveplayerid, health);
  472. format(str, 128, "You have set the health of %s to %d.", GetPName(giveplayerid), health);
  473. format(str2, 128, "Your health has been set to %d by an administrator.", health);
  474. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  475. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, str2);
  476. }
  477. return 1;
  478. }
  479. //LEVEL 5
  480. CMD:restart(playerid, params[])
  481. {
  482. if(GetAdminLevel(playerid) >=5) {
  483. SendRconCommand("gmx");
  484. }
  485. return 1;
  486. }
  487. CMD:adminlevel(playerid, params[])
  488. {
  489. new giveplayerid, level, str[128], str2[128];
  490. if(GetAdminLevel(playerid) >= 5) {
  491. new file[128]; format(file, 128, USER_FILE, GetPName(giveplayerid));
  492. if(sscanf(params, "ud", giveplayerid, level)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /adminlevel [playerid] [level 1-5]");
  493. if(!IsPlayerConnected(giveplayerid)) return 1;
  494. if(0 > strval(params[2]) > 5) return SendClientMessage(playerid, COLOR_RED, "Invalid admin level! (1-5)");
  495. dini_IntSet(file, "AdminLevel", level);
  496. format(str, 128, "You have set the admin level of %s to %d!", GetPName(giveplayerid), level);
  497. format(str2, 128, "%s has set your admin level to %d!", GetPName(playerid), level);
  498. SendClientMessage(playerid,COLOR_LIGHTBLUE, str);
  499. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, str2);
  500. }
  501. return 1;
  502. }
Advertisement
Add Comment
Please, Sign In to add comment