Advertisement
Guest User

Desert

a guest
Sep 30th, 2009
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.48 KB | None | 0 0
  1. #include <a_samp>
  2. #include <dutils>
  3. #include <dudb>
  4. #include <float>
  5. #include <dini>
  6.  
  7. #define COLOUR_WHITE 0xFFFFFFFF
  8. #define COLOUR_BLACK 0x000000FF
  9. #define COLOUR_GREEN 0x33AA33AA
  10. #define COLOUR_RED 0xFF3333AA
  11. #define COLOUR_YELLOW 0xFFFF00AA
  12. #define COLOUR_LIGHTBLUE 0x33CCFFAA
  13. #define COLOUR_ORANGE 0xFF9900AA
  14. #define COLOUR_PINK 0xE100E1FF
  15. #define COLOUR_GREY 0xAFAFAFAA
  16. #define COLOUR_BLUE 0x0088FFAA
  17. #define COLOUR_LIGHTGREEN 0x9ACD32AA
  18.  
  19.  
  20. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  21. #pragma unused ret_memcpy
  22. #pragma tabsize 4
  23.  
  24. new mute[MAX_PLAYERS];
  25. new god[MAX_PLAYERS];
  26. new jail[MAX_PLAYERS];
  27. new spam[MAX_PLAYERS];
  28. new Menu:teleport;
  29. new Menu:LS;
  30. new Menu:SF;
  31. new Menu:LV;
  32.  
  33. #define FILTERSCRIPT
  34.  
  35. #if defined FILTERSCRIPT
  36.  
  37. public OnFilterScriptInit()
  38. {
  39. teleport = CreateMenu("Teleports",3,200.0, 100.0, 150.0, 150.0);
  40. LS = CreateMenu("Los Santos",5,200.0, 100.0, 150.0, 150.0);
  41. SF = CreateMenu("San Fierro",5,200.0, 100.0, 150.0, 150.0);
  42. LV = CreateMenu("Las Venturas",5,200.0, 100.0, 150.0, 150.0);
  43. AddMenuItem(teleport,0,"Los Santos");
  44. AddMenuItem(teleport,0,"San Fierro");
  45. AddMenuItem(teleport,0,"Las Venturas");
  46. AddMenuItem(LS,0,"Grove Street");
  47. AddMenuItem(LS,0,"Glen Park");
  48. AddMenuItem(LS,0,"Los Santos PD");
  49. AddMenuItem(LS,0,"Los Santos Airport");
  50. AddMenuItem(LS,0,"Los Santos Hospital");
  51. AddMenuItem(SF,0,"Doherty");
  52. AddMenuItem(SF,0,"San Fierro PD");
  53. AddMenuItem(SF,0,"San Fierro Hospital");
  54. AddMenuItem(SF,0,"San Fierro Airport");
  55. AddMenuItem(SF,0,"Mount Chilliad");
  56. AddMenuItem(LV,0,"4 Dragons");
  57. AddMenuItem(LV,0,"Caligulas");
  58. AddMenuItem(LV,0,"Las Venturas Hospital");
  59. AddMenuItem(LV,0,"Las Venturas PD");
  60. AddMenuItem(LV,0,"Las Venturas Airport");
  61. return 1;
  62. }
  63.  
  64. public OnFilterScriptExit()
  65. {
  66. return 1;
  67. }
  68.  
  69. #endif
  70.  
  71.  
  72. public OnPlayerText(playerid, text[])
  73. {
  74. if(mute[playerid] == 1)
  75. {
  76. SendClientMessage(playerid,COLOUR_RED,"You are muted!");
  77. return 0;
  78. }
  79. else
  80. {
  81. return 1;
  82. }
  83. }
  84.  
  85. public OnPlayerConnect(playerid)
  86. {
  87. spam[playerid] = 0;
  88. return 1;
  89. }
  90. public OnPlayerDisconnect(playerid)
  91. {
  92. spam[playerid] = 0;
  93. return 1;
  94. }
  95. public OnPlayerCommandText(playerid, cmdtext[])
  96. {
  97. dcmd(heal,4,cmdtext);
  98. dcmd(sethp,5,cmdtext);
  99. dcmd(godon,5,cmdtext);
  100. dcmd(godoff,6,cmdtext);
  101. dcmd(givecash,8,cmdtext);
  102. dcmd(setcash,7,cmdtext);
  103. dcmd(weapon,6,cmdtext);
  104. dcmd(resetwep,8,cmdtext);
  105. dcmd(skin,4,cmdtext);
  106. dcmd(car,3,cmdtext);
  107. dcmd(teleport,8,cmdtext);
  108. dcmd(mute,4,cmdtext);
  109. dcmd(unmute,6,cmdtext);
  110. dcmd(ip,2,cmdtext);
  111. dcmd(ajail,5,cmdtext);
  112. dcmd(aunjail,7,cmdtext);
  113. dcmd(goto,4,cmdtext);
  114. dcmd(get,3,cmdtext);
  115. dcmd(warp,4,cmdtext);
  116. dcmd(spamon,6,cmdtext);
  117. dcmd(spamoff,7,cmdtext);
  118. dcmd(nuke,4,cmdtext);
  119. dcmd(uracmds,7,cmdtext);
  120. return 0;
  121. }
  122. dcmd_uracmds(playerid,params[])
  123. {
  124. #pragma unused params
  125. if(!IsPlayerAdmin(playerid)) return 0;
  126. else
  127. {
  128. SendClientMessage(playerid,COLOUR_BLUE,"-----[Ultimate RCON Admin Commands]-----");
  129. SendClientMessage(playerid,COLOUR_YELLOW,"/heal /sethp /godon /godoff /givecash /setcash /weapon /resetweapon");
  130. SendClientMessage(playerid,COLOUR_YELLOW,"/skin /car /teleport /mute /unmute /ip /ajail /aunjail /goto /get");
  131. SendClientMessage(playerid,COLOUR_YELLOW,"/warp /spamon /spamoff /nuke");
  132. return 1;
  133. }
  134. }
  135. dcmd_heal(playerid,params[])
  136. {
  137. new pid;
  138. if(!IsPlayerAdmin(playerid)) return 0;
  139. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /heal [ID]");
  140. else if(pid == INVALID_PLAYER_ID) SendClientMessage(playerid,COLOUR_RED,"Player was not found.");
  141. else
  142. {
  143. new give[42],got[51],name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
  144. GetPlayerName(playerid,name,sizeof(name));
  145. GetPlayerName(pid,name2,sizeof(name2));
  146. SetPlayerHealth(pid,100);
  147. format(give,sizeof(give),"You have healed %s",name2);
  148. format(got,sizeof(got),"You have been healed by %s",name);
  149. SendClientMessage(playerid,COLOUR_YELLOW,give);
  150. SendClientMessage(pid,COLOUR_YELLOW,got);
  151. }
  152. return 1;
  153. }
  154. dcmd_sethp(playerid,params[])
  155. {
  156. new pid,ammount;
  157. if(!IsPlayerAdmin(playerid)) return 0;
  158. else if(sscanf(params,"ud",pid,ammount)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /sethp [ID] [Ammount]");
  159. else if(pid == INVALID_PLAYER_ID) SendClientMessage(playerid,COLOUR_RED,"Player was not found");
  160. else
  161. {
  162. new string[50],string1[50],name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
  163. GetPlayerName(playerid,name,sizeof(name));
  164. GetPlayerName(pid,name2,sizeof(name2));
  165. SetPlayerHealth(pid,ammount);
  166. format(string,sizeof(string),"You have set %s's health",name2);
  167. format(string1,sizeof(string1),"Your health has been set by %s ",name);
  168. SendClientMessage(pid,COLOUR_YELLOW,string1);
  169. SendClientMessage(playerid,COLOUR_YELLOW,string);
  170. }
  171. return 1;
  172. }
  173. dcmd_godon(playerid,params[])
  174. {
  175. #pragma unused params
  176. if(!IsPlayerAdmin(playerid)) return 0;
  177. if(god[playerid] == 1) SendClientMessage(playerid,COLOUR_RED,"You are already godlike");
  178. else
  179. print("A player has turned on godmode using RCON Admin!!!");
  180. SendClientMessage(playerid,COLOUR_WHITE,"You are now godlike");
  181. god[playerid] = 1;
  182. return 1;
  183. }
  184. dcmd_godoff(playerid,params[])
  185. {
  186. #pragma unused params
  187. if(!IsPlayerAdmin(playerid)) return 0;
  188. else if(god[playerid] == 0) SendClientMessage(playerid,COLOUR_RED,"You Can't turn godmode off. You are not godlike!");
  189. else
  190. {
  191. god[playerid] = 0;
  192. SendClientMessage(playerid,COLOUR_RED,"Godmode has been turned off");
  193. return 1;
  194. }
  195. return 1;
  196. }
  197. dcmd_givecash(playerid,params[])
  198. {
  199. new pid,ammount;
  200. if(!IsPlayerAdmin(playerid)) return 0;
  201. else if(sscanf(params,"ud",pid,ammount)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /givecash [ID] [Ammount]");
  202. else if(pid == INVALID_PLAYER_ID) SendClientMessage(playerid,COLOUR_RED,"Player was not found");
  203. else
  204. {
  205. new string[128],string1[128],name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
  206. GetPlayerName(playerid,name,sizeof(name));
  207. GetPlayerName(pid,name2,sizeof(name2));
  208. GivePlayerMoney(pid,ammount);
  209. format(string,sizeof(string),"You have given %s money",name2);
  210. format(string1,sizeof(string1),"%s has given you money using admin power ",name);
  211. SendClientMessage(pid,COLOUR_YELLOW,string1);
  212. SendClientMessage(playerid,COLOUR_YELLOW,string);
  213. return 1;
  214. }
  215. return 1;
  216. }
  217. dcmd_setcash(playerid,params[])
  218. {
  219. new pid,ammount;
  220. if(!IsPlayerAdmin(playerid)) return 0;
  221. else if(sscanf(params,"ud",pid,ammount)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /setcash [ID] [Ammount]");
  222. else if(pid == INVALID_PLAYER_ID) SendClientMessage(playerid,COLOUR_RED,"Player was not found");
  223. else
  224. {
  225. new string[50],string1[70],name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
  226. GetPlayerName(playerid,name,sizeof(name));
  227. GetPlayerName(pid,name2,sizeof(name2));
  228. SetPlayerMoney(pid,ammount);
  229. format(string,sizeof(string),"You have set %s's money",name2);
  230. format(string1,sizeof(string1),"%s has set your money using admin power ",name);
  231. SendClientMessage(pid,COLOUR_YELLOW,string1);
  232. SendClientMessage(playerid,COLOUR_YELLOW,string);
  233. return 1;
  234. }
  235. return 1;
  236. }
  237. dcmd_weapon(playerid,params[])
  238. {
  239. new pid,wepid,ammo;
  240. if(!IsPlayerAdmin(playerid)) return 0;
  241. else if(sscanf(params,"udd",pid,wepid,ammo)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /weapon [ID] [Wep ID] [Ammo]");
  242. else if(pid == INVALID_PLAYER_ID) SendClientMessage(playerid,COLOUR_RED,"Player was not found");
  243. else
  244. {
  245. new string[50],string1[50],name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
  246. GetPlayerName(playerid,name,sizeof(name));
  247. GetPlayerName(pid,name2,sizeof(name2));
  248. GivePlayerWeapon(pid,wepid,ammo);
  249. format(string,sizeof(string),"You have given %s a weapon",name2);
  250. format(string1,sizeof(string1),"%s has given you a weapon ",name);
  251. SendClientMessage(pid,COLOUR_YELLOW,string1);
  252. SendClientMessage(playerid,COLOUR_YELLOW,string);
  253. return 1;
  254. }
  255. return 1;
  256. }
  257. dcmd_resetwep(playerid,params[])
  258. {
  259. new pid;
  260. if(!IsPlayerAdmin(playerid)) return 0;
  261. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /heal [ID]");
  262. else if(pid == INVALID_PLAYER_ID) SendClientMessage(playerid,COLOUR_RED,"Player was not found.");
  263. else
  264. {
  265. new give[42],got[51],name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME];
  266. GetPlayerName(playerid,name,sizeof(name));
  267. GetPlayerName(pid,name2,sizeof(name2));
  268. ResetPlayerWeapons(playerid);
  269. format(give,sizeof(give),"You have reset %s's weapons",name2);
  270. format(got,sizeof(got),"Your weapons have been resetted by %s",name);
  271. SendClientMessage(playerid,COLOUR_YELLOW,give);
  272. SendClientMessage(pid,COLOUR_RED,got);
  273. }
  274. return 1;
  275. }
  276. dcmd_car(playerid,params[])
  277. {
  278. if(!IsPlayerAdmin(playerid)) return 0;
  279. else {
  280. new tmp[255],idx;
  281. tmp = strtok(params,idx);
  282. if(!strlen(tmp))
  283. {
  284. SendClientMessage(playerid,COLOUR_RED,"USAGE: /car [Model ID]");
  285. return 1;
  286. }
  287. else if (strlen(tmp))
  288. {
  289. new Float:X , Float:Y , Float:Z, Float:Angle , VW , Int , Car , string[23];
  290. new id = strval(tmp);
  291. if(id < 400 || id > 611) return SendClientMessage(playerid,COLOUR_RED,"Invalid model ID. 400-611");
  292. GetPlayerPos(playerid,X,Y,Z);
  293. GetPlayerFacingAngle(playerid,Angle);
  294. VW = GetPlayerVirtualWorld(playerid);
  295. Int = GetPlayerInterior(playerid);
  296. Car = CreateVehicle(id,X,Y,Z,Angle,-1,-1,50000);
  297. PutPlayerInVehicle(playerid,Car,0);
  298. TogglePlayerControllable(playerid,1);
  299. LinkVehicleToInterior(Car,Int);
  300. SetVehicleVirtualWorld(Car,VW);
  301. format(string,sizeof(string),"You have spawned a car");
  302. SendClientMessage(playerid,COLOUR_YELLOW,string);
  303. return 1;
  304. }
  305. return 1;
  306. }
  307. }
  308. dcmd_skin(playerid,params[])
  309. {
  310. if(!IsPlayerAdmin(playerid)) return 0;
  311. else {
  312. new tmp[255],idx;
  313. tmp = strtok(params,idx);
  314. if(!strlen(tmp))
  315. {
  316. SendClientMessage(playerid,COLOUR_RED,"USAGE: /skin [ID]");
  317. return 1;
  318. }
  319. else
  320. {
  321. new string[22];
  322. new skinid = strval(tmp);
  323. if(!IsValidSkin(skinid)) return SendClientMessage(playerid,COLOUR_RED,"Invalid skin ID!");
  324. SetPlayerSkin(playerid,skinid);
  325. format(string,sizeof(string),"You have changed skin");
  326. SendClientMessage(playerid,COLOUR_YELLOW,string);
  327. return 1;
  328. }
  329. }
  330. }
  331. dcmd_teleport(playerid,params[])
  332. {
  333. #pragma unused params
  334. if(!IsPlayerAdmin(playerid)) return 0;
  335. else {
  336. ShowMenuForPlayer(teleport,playerid);
  337. return 1;
  338. }}
  339. dcmd_mute(playerid,params[])
  340. {
  341. new pid;
  342. if(!IsPlayerAdmin(playerid)) return 0;
  343. else if(mute[playerid] == 1) SendClientMessage(playerid,COLOUR_RED,"You are muted!");
  344. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /mute [ID]");
  345. else
  346. {
  347. new name[MAX_PLAYER_NAME],string[32];
  348. mute[pid] = 1;
  349. SendClientMessage(pid,COLOUR_RED,"You have been muted!");
  350. GetPlayerName(pid,name,sizeof(name));
  351. format(string,sizeof(string),"You have muted %s",name);
  352. SendClientMessage(playerid,COLOUR_YELLOW,string);
  353. return 1;
  354. }
  355. return 1;
  356. }
  357. dcmd_unmute(playerid,params[])
  358. {
  359. new pid;
  360. if(!IsPlayerAdmin(playerid)) return 0;
  361. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /unmute [ID]");
  362. else
  363. {
  364. new name[MAX_PLAYER_NAME],string[34];
  365. mute[pid] = 0;
  366. SendClientMessage(pid,COLOUR_RED,"You have been unmuted");
  367. GetPlayerName(pid,name,sizeof(name));
  368. format(string,sizeof(string),"You have unmuted %s",name);
  369. SendClientMessage(playerid,COLOUR_YELLOW,string);
  370. return 1;
  371. }
  372. return 1;
  373. }
  374. dcmd_ip(playerid,params[])
  375. {
  376. new pid;
  377. if(!IsPlayerAdmin(playerid)) return 0;
  378. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /ip [ID]");
  379. else
  380. {
  381. new name[MAX_PLAYER_NAME],string[50],IP[16];
  382. GetPlayerName(pid,name,sizeof(name));
  383. GetPlayerIp(pid,IP,sizeof(IP));
  384. format(string,sizeof(string),"%s's IP: %s",name,IP);
  385. SendClientMessage(playerid,COLOUR_YELLOW,string);
  386. return 1;
  387. }
  388. return 1;
  389. }
  390. dcmd_ajail(playerid,params[])
  391. {
  392. new pid;
  393. if(!IsPlayerAdmin(playerid)) return 0;
  394. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /ajail [ID]");
  395. else
  396. {
  397. new name[MAX_PLAYER_NAME],string[33];
  398. GetPlayerName(pid,name,sizeof(name));
  399. SetPlayerPos(pid,264.6288,77.5742,1001.0391);
  400. SetPlayerFacingAngle(pid,271.3159);
  401. SetPlayerInterior(pid,6);
  402. SetCameraBehindPlayer(pid);
  403. TogglePlayerControllable(pid,0);
  404. format(string,sizeof(string),"You have jailed %s",name);
  405. SendClientMessage(playerid,COLOUR_YELLOW,string);
  406. SendClientMessage(pid,COLOUR_RED,"An admin has jailed you!");
  407. jail[pid] = 1;
  408. return 1;
  409. }
  410. return 1;
  411. }
  412. dcmd_aunjail(playerid,params[])
  413. {
  414. new pid;
  415. if(!IsPlayerAdmin(playerid)) return 0;
  416. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /aunjail [ID]");
  417. else if(jail[pid] == 0) SendClientMessage(playerid,COLOUR_RED,"That player is not jailed!");
  418. else
  419. {
  420. new name[MAX_PLAYER_NAME],string[35];
  421. GetPlayerName(pid,name,sizeof(name));
  422. SetPlayerPos(pid,268.6555,81.1482,1001.0391);
  423. SetPlayerFacingAngle(pid,0.8749);
  424. SetPlayerInterior(pid,6);
  425. SetCameraBehindPlayer(pid);
  426. TogglePlayerControllable(pid,1);
  427. format(string,sizeof(string),"You have unjailed %s",name);
  428. SendClientMessage(playerid,COLOUR_YELLOW,string);
  429. SendClientMessage(pid,COLOUR_RED,"An admin has unjailed you!");
  430. jail[pid] = 0;
  431. return 1;
  432. }
  433. return 1;
  434. }
  435. dcmd_goto(playerid,params[])
  436. {
  437. new pid;
  438. if(!IsPlayerAdmin(playerid)) return 0;
  439. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /goto [ID]");
  440. else
  441. {
  442. new Float:X,Float:Y,Float:Z,pint,name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME],string[40],string2[39];
  443. GetPlayerName(playerid,name,sizeof(name));
  444. GetPlayerName(pid,name2,sizeof(name2));
  445. GetPlayerPos(pid,X,Y,Z);
  446. pint = GetPlayerInterior(pid);
  447. SetPlayerPos(playerid,X+1,Y,Z);
  448. SetPlayerInterior(playerid,pint);
  449. format(string,sizeof(string),"You have teleported to %s",name2);
  450. format(string2,sizeof(string2),"%s has teleported to you",name);
  451. SendClientMessage(playerid,COLOUR_YELLOW,string);
  452. SendClientMessage(pid,COLOUR_YELLOW,string2);
  453. return 1;
  454. }
  455. return 1;
  456. }
  457. dcmd_get(playerid,params[])
  458. {
  459. new pid;
  460. if(!IsPlayerAdmin(playerid)) return 0;
  461. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /get [ID]");
  462. else
  463. {
  464. new Float:X,Float:Y,Float:Z,pint,name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME],string[44],string2[45];
  465. GetPlayerName(playerid,name,sizeof(name));
  466. GetPlayerName(pid,name2,sizeof(name2));
  467. GetPlayerPos(playerid,X,Y,Z);
  468. pint = GetPlayerInterior(playerid);
  469. SetPlayerPos(pid,X+1,Y,Z);
  470. SetPlayerInterior(pid,pint);
  471. format(string,sizeof(string),"You have teleported %s to you",name2);
  472. format(string2,sizeof(string2),"You have been teleported to %s",name);
  473. SendClientMessage(playerid,COLOUR_YELLOW,string);
  474. SendClientMessage(pid,COLOUR_YELLOW,string2);
  475. return 1;
  476. }
  477. return 1;
  478. }
  479. dcmd_warp(playerid,params[])
  480. {
  481. new pid,tid;
  482. if(!IsPlayerAdmin(playerid)) return 0;
  483. else if(sscanf(params,"uu",tid,pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /warp [ID] [ID]");
  484. else
  485. {
  486. new name1[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME],name3[MAX_PLAYER_NAME],Float:X,Float:Y,Float:Z,int,string1[58],string2[65],string3[65];
  487. GetPlayerName(playerid,name1,sizeof(name1));
  488. GetPlayerName(tid,name2,sizeof(name2));
  489. GetPlayerName(pid,name3,sizeof(name3));
  490. GetPlayerPos(pid,X,Y,Z);
  491. int = GetPlayerInterior(pid);
  492. SetPlayerPos(tid,X+1,Y,Z);
  493. SetPlayerInterior(tid,int);
  494. format(string1,sizeof(string1),"You have teleported %s to %s",name2,name3);//playerid
  495. format(string2,sizeof(string2),"You have been teleported to %s by %s",name3,name1);//tid
  496. format(string3,sizeof(string3),"%s has been teleported to you by %s",name2,name1);//pid
  497. SendClientMessage(playerid,COLOUR_YELLOW,string1);
  498. SendClientMessage(tid,COLOUR_YELLOW,string2);
  499. SendClientMessage(pid,COLOUR_YELLOW,string3);
  500. return 1;
  501. }
  502. return 1;
  503. }
  504. dcmd_spamon(playerid,params[])
  505. {
  506. new pid;
  507. if(!IsPlayerAdmin(playerid)) return 0;
  508. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /spam [ID]");
  509. else if(spam[pid] == 1) SendClientMessage(playerid,COLOUR_RED,"That ID is already being spammed!");
  510. else
  511. {
  512. new string[46],name[MAX_PLAYER_NAME];
  513. GetPlayerName(pid,name,sizeof(name));
  514. format(string,sizeof(string),"You have turned spam on onto %s",name);
  515. SendClientMessage(playerid,COLOUR_YELLOW,string);
  516. spam[pid] = 1;
  517. return 1;
  518. }
  519. return 1;
  520. }
  521. dcmd_spamoff(playerid,params[])
  522. {
  523. new pid;
  524. if(!IsPlayerAdmin(playerid)) return 0;
  525. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /spamoff [ID]");
  526. else if(spam[pid] == 0) SendClientMessage(playerid,COLOUR_RED,"That ID is not being spammed!");
  527. else
  528. {
  529. new string[50],name[MAX_PLAYER_NAME];
  530. GetPlayerName(pid,name,sizeof(name));
  531. format(string,sizeof(string),"You have turned spam off on %s",name);
  532. SendClientMessage(playerid,COLOUR_YELLOW,string);
  533. spam[pid] = 0;
  534. return 1;
  535. }
  536. return 1;
  537. }
  538. dcmd_nuke(playerid,params[])
  539. {
  540. new pid;
  541. if(!IsPlayerAdmin(playerid)) return 0;
  542. else if(sscanf(params,"u",pid)) SendClientMessage(playerid,COLOUR_RED,"USAGE: /nuke [ID]");
  543. else
  544. {
  545. new name[MAX_PLAYER_NAME],name2[MAX_PLAYER_NAME],string[32],string2[40],Float:X,Float:Y,Float:Z;
  546. GetPlayerName(playerid,name,sizeof(name));
  547. GetPlayerName(pid,name2,sizeof(name2));
  548. GetPlayerPos(pid,X,Y,Z);
  549. CreateExplosion(X,Y,Z,6,0.1);
  550. format(string,sizeof(string),"You have nuked %s",name2);
  551. format(string2,sizeof(string2),"You have been nuked by %s",name);
  552. SendClientMessage(playerid,COLOUR_YELLOW,string);
  553. SendClientMessage(pid,COLOUR_YELLOW,string2);
  554. return 1;
  555. }
  556. return 1;
  557. }
  558. public OnPlayerSelectedMenuRow(playerid, row)
  559. {
  560. new Menu:currentmenu = GetPlayerMenu(playerid);
  561. if(currentmenu == teleport)
  562. {
  563. switch(row)
  564. {
  565. case 0:
  566. {
  567. ShowMenuForPlayer(LS,playerid);
  568. SendClientMessage(playerid,COLOUR_YELLOW,"Choose location");
  569. return 1;
  570. }
  571. case 1:
  572. {
  573. ShowMenuForPlayer(SF,playerid);
  574. SendClientMessage(playerid,COLOUR_YELLOW,"Choose location");
  575. return 1;
  576. }
  577. case 2:
  578. {
  579. ShowMenuForPlayer(LV,playerid);
  580. SendClientMessage(playerid,COLOUR_YELLOW,"Choose location");
  581. return 1;
  582. }
  583. }
  584. return 1;
  585. }
  586. if(currentmenu == LS)
  587. {
  588. switch(row)
  589. {
  590. case 0:
  591. {
  592. SetPlayerPos(playerid,2511.5010,-1670.2648,13.4482);
  593. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  594. return 1;
  595. }
  596. case 1:
  597. {
  598. SetPlayerPos(playerid,2048.7852,-1196.4884,23.6326);
  599. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  600. return 1;
  601. }
  602. case 2:
  603. {
  604. SetPlayerPos(playerid,1540.2794,-1674.9877,13.5503);
  605. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  606. return 1;
  607. }
  608. case 3:
  609. {
  610. SetPlayerPos(playerid,1685.6362,-2329.8545,13.5469);
  611. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  612. return 1;
  613. }
  614. case 4:
  615. {
  616. SetPlayerPos(playerid,1182.1171,-1323.7235,13.5812);
  617. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  618. return 1;
  619. }
  620. }
  621. }
  622. if(currentmenu == SF)
  623. {
  624. switch(row)
  625. {
  626. case 0:
  627. {
  628. SetPlayerPos(playerid,-2023.0795,154.1555,28.8359);
  629. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  630. return 1;
  631. }
  632. case 1:
  633. {
  634. SetPlayerPos(playerid,-1604.9398,718.1047,11.8727);
  635. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  636. return 1;
  637. }
  638. case 2:
  639. {
  640. SetPlayerPos(playerid,-2666.8835,609.7924,14.4545);
  641. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  642. return 1;
  643. }
  644. case 3:
  645. {
  646. SetPlayerPos(playerid,-1417.3279,-293.8440,14.1484);
  647. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  648. return 1;
  649. }
  650. case 4:
  651. {
  652. SetPlayerPos(playerid,-2316.8677,-1624.1256,483.7078);
  653. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  654. return 1;
  655. }
  656. }
  657. }
  658. if(currentmenu == LV)
  659. {
  660. switch(row)
  661. {
  662. case 0:
  663. {
  664. SetPlayerPos(playerid,2025.0122,1008.5726,10.8203);
  665. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  666. return 1;
  667. }
  668. case 1:
  669. {
  670. SetPlayerPos(playerid,2192.6394,1676.4242,12.3672);
  671. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  672. return 1;
  673. }
  674. case 2:
  675. {
  676. SetPlayerPos(playerid,1607.4633,1819.7698,10.8280);
  677. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  678. return 1;
  679. }
  680. case 3:
  681. {
  682. SetPlayerPos(playerid,2290.0586,2428.9065,10.8203);
  683. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  684. return 1;
  685. }
  686. case 4:
  687. {
  688. SetPlayerPos(playerid,1678.4406,1451.8649,10.7751);
  689. SendClientMessage(playerid,COLOUR_YELLOW,"You have teleported.");
  690. return 1;
  691. }
  692. }
  693. }
  694. return 1;
  695. }
  696.  
  697.  
  698. public OnPlayerExitedMenu(playerid)
  699. {
  700. return 1;
  701. }
  702.  
  703. stock sscanf(string[], format[], {Float,_}:...)
  704. {
  705. #if defined isnull
  706. if (isnull(string))
  707. #else
  708. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  709. #endif
  710. {
  711. return format[0];
  712. }
  713. #pragma tabsize 4
  714. new
  715. formatPos = 0,
  716. stringPos = 0,
  717. paramPos = 2,
  718. paramCount = numargs(),
  719. delim = ' ';
  720. while (string[stringPos] && string[stringPos] <= ' ')
  721. {
  722. stringPos++;
  723. }
  724. while (paramPos < paramCount && string[stringPos])
  725. {
  726. switch (format[formatPos++])
  727. {
  728. case '\0':
  729. {
  730. return 0;
  731. }
  732. case 'i', 'd':
  733. {
  734. new
  735. neg = 1,
  736. num = 0,
  737. ch = string[stringPos];
  738. if (ch == '-')
  739. {
  740. neg = -1;
  741. ch = string[++stringPos];
  742. }
  743. do
  744. {
  745. stringPos++;
  746. if ('0' <= ch <= '9')
  747. {
  748. num = (num * 10) + (ch - '0');
  749. }
  750. else
  751. {
  752. return -1;
  753. }
  754. }
  755. while ((ch = string[stringPos]) > ' ' && ch != delim);
  756. setarg(paramPos, 0, num * neg);
  757. }
  758. case 'h', 'x':
  759. {
  760. new
  761. num = 0,
  762. ch = string[stringPos];
  763. do
  764. {
  765. stringPos++;
  766. switch (ch)
  767. {
  768. case 'x', 'X':
  769. {
  770. num = 0;
  771. continue;
  772. }
  773. case '0' .. '9':
  774. {
  775. num = (num << 4) | (ch - '0');
  776. }
  777. case 'a' .. 'f':
  778. {
  779. num = (num << 4) | (ch - ('a' - 10));
  780. }
  781. case 'A' .. 'F':
  782. {
  783. num = (num << 4) | (ch - ('A' - 10));
  784. }
  785. default:
  786. {
  787. return -1;
  788. }
  789. }
  790. }
  791. while ((ch = string[stringPos]) > ' ' && ch != delim);
  792. setarg(paramPos, 0, num);
  793. }
  794. case 'c':
  795. {
  796. setarg(paramPos, 0, string[stringPos++]);
  797. }
  798. case 'f':
  799. {
  800. setarg(paramPos, 0, _:floatstr(string[stringPos]));
  801. }
  802. case 'p':
  803. {
  804. delim = format[formatPos++];
  805. continue;
  806. }
  807. case '\'':
  808. {
  809. new
  810. end = formatPos - 1,
  811. ch;
  812. while ((ch = format[++end]) && ch != '\'') {}
  813. if (!ch)
  814. {
  815. return -1;
  816. }
  817. format[end] = '\0';
  818. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  819. {
  820. if (format[end + 1])
  821. {
  822. return -1;
  823. }
  824. return 0;
  825. }
  826. format[end] = '\'';
  827. stringPos = ch + (end - formatPos);
  828. formatPos = end + 1;
  829. }
  830. case 'u':
  831. {
  832. new
  833. end = stringPos - 1,
  834. id = 0,
  835. bool:num = true,
  836. ch;
  837. while ((ch = string[++end]) && ch != delim)
  838. {
  839. if (num)
  840. {
  841. if ('0' <= ch <= '9')
  842. {
  843. id = (id * 10) + (ch - '0');
  844. }
  845. else
  846. {
  847. num = false;
  848. }
  849. }
  850. }
  851. if (num && IsPlayerConnected(id))
  852. {
  853. setarg(paramPos, 0, id);
  854. }
  855. else
  856. {
  857. #if !defined foreach
  858. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  859. #define __SSCANF_FOREACH__
  860. #endif
  861. string[end] = '\0';
  862. num = false;
  863. new
  864. name[MAX_PLAYER_NAME];
  865. id = end - stringPos;
  866. foreach (Player, playerid)
  867. {
  868. GetPlayerName(playerid, name, sizeof (name));
  869. if (!strcmp(name, string[stringPos], true, id))
  870. {
  871. setarg(paramPos, 0, playerid);
  872. num = true;
  873. break;
  874. }
  875. }
  876. if (!num)
  877. {
  878. setarg(paramPos, 0, INVALID_PLAYER_ID);
  879. }
  880. string[end] = ch;
  881. #if defined __SSCANF_FOREACH__
  882. #undef foreach
  883. #undef __SSCANF_FOREACH__
  884. #endif
  885. }
  886. stringPos = end;
  887. }
  888. case 's', 'z':
  889. {
  890. new
  891. i = 0,
  892. ch;
  893. if (format[formatPos])
  894. {
  895. while ((ch = string[stringPos++]) && ch != delim)
  896. {
  897. setarg(paramPos, i++, ch);
  898. }
  899. if (!i)
  900. {
  901. return -1;
  902. }
  903. }
  904. else
  905. {
  906. while ((ch = string[stringPos++]))
  907. {
  908. setarg(paramPos, i++, ch);
  909. }
  910. }
  911. stringPos--;
  912. setarg(paramPos, i, '\0');
  913. }
  914. default:
  915. {
  916. continue;
  917. }
  918. }
  919. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  920. {
  921. stringPos++;
  922. }
  923. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  924. {
  925. stringPos++;
  926. }
  927. paramPos++;
  928. }
  929. do
  930. {
  931. if ((delim = format[formatPos++]) > ' ')
  932. {
  933. if (delim == '\'')
  934. {
  935. while ((delim = format[formatPos++]) && delim != '\'') {}
  936. }
  937. else if (delim != 'z')
  938. {
  939. return delim;
  940. }
  941. }
  942. }
  943. while (delim > ' ');
  944. return 0;
  945. }
  946.  
  947. public OnPlayerUpdate(playerid)
  948. {
  949. if(god[playerid] == 1)
  950. {
  951. new Float:health;
  952. GetPlayerHealth(playerid,health);
  953. if(health < 100)
  954. {
  955. SetPlayerHealth(playerid,100);
  956. return 1;
  957. }
  958. }
  959. if(spam[playerid] == 1)
  960. {
  961. SendClientMessage(playerid,COLOUR_RED,"An admin has turned spam on on your ID");
  962. return 1;
  963. }
  964. return 1;
  965. }
  966. stock IsValidSkin(skinid)
  967. {
  968. // Created by Simon.
  969. // Checks whether the skinid parsed is crashable or not. // WHICH IS PRETTY FUCKING GOOD DAWG
  970.  
  971. #define MAX_BAD_SKINS 20
  972.  
  973. new badSkins[MAX_BAD_SKINS] = {
  974. 3, 4, 5, 6, 8, 42, 65, 74, 86,
  975. 119, 149, 208, 265, 266, 267,
  976. 269, 271, 270, 273, 289
  977. };
  978.  
  979. if (skinid < 0 || skinid > 299) return false;
  980. for (new i = 0; i < MAX_BAD_SKINS; i++) {
  981. if (skinid == badSkins[i]) return false;
  982. }
  983.  
  984. #undef MAX_BAD_SKINS
  985. return true;
  986. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement