Advertisement
Guest User

Untitled

a guest
May 23rd, 2014
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 48.42 KB | None | 0 0
  1. */
  2. #include <a_samp>
  3. #include <sscanf2>
  4. #include <zcmd>
  5. #include <gLibrary>
  6. native WP_Hash(buffer[], len, const str[]);
  7. //================================================================================================================
  8. //------------------Settings------------------
  9. #define USE_MYSQL_DATABASE false //if defined false, it will use Y_INI (text files) instead
  10.  
  11. #define MAX_LOGIN_ATTEMPTS 3 //maximum login attempts before kick
  12. #define DIALOG_RANGE 100 //dialog range (100 by default, will use dialogid's 100-104)
  13.  
  14. #define ALLOW_ANNOY true //allow administrators so release a crazy cow on players!
  15. #define ALLOW_ADMINS true //you can turn this off if you dont want to allow players using /admins to see if there is an admin online
  16. #define ALLOW_VEH true //allows admins to spawn vehicles
  17. //----------------SQL Settings---------------- //only needs to be set when you use mysql db
  18. #define HOST "localhost"
  19. #define USER "root"
  20. #define DB "s-admin"
  21. #define PASS ""
  22.  
  23. //================================================================================================================
  24. //ignore these
  25. #define abs(%0) ((%0) >= 0 ? (%0) : -(%0))
  26. new cow_victim = -1, object_cow, movecow_timer;
  27. #if USE_MYSQL_DATABASE == true
  28. #include <yoursql>
  29. #else
  30. #define MAX_INI_ENTRY_TEXT 129
  31. #include <YSI/y_ini>
  32. #endif
  33. #define color_red gCOLOR_RED
  34. #define color_green gCOLOR_GREEN
  35. #define color_gray gCOLOR_GRAY
  36. #define color_orange gCOLOR_ORANGE
  37. #define color_blue 0xADD8E6FF
  38. #define color_yellow gCOLOR_YELLOW
  39. #define DIALOG_REGISTER DIALOG_RANGE
  40. #define DIALOG_LOGIN DIALOG_RANGE +1
  41. #define DIALOG_CHANGENICK DIALOG_RANGE +2
  42. #define DIALOG_REPORT DIALOG_RANGE +3
  43. #define DIALOG_ADMIN DIALOG_RANGE +4
  44.  
  45. enum gPlayerInfo
  46. {
  47. Username[32],
  48. Password[129],
  49. Muted,
  50. Jailed,
  51. Score,
  52. Money,
  53. Level,
  54. Ip[32]
  55. }
  56. new PlayerInfo[MAX_PLAYERS][gPlayerInfo];
  57.  
  58. enum gTempInfo
  59. {
  60. Username[32],
  61. Password[129],
  62. Muted,
  63. Jailed,
  64. Score,
  65. Money,
  66. Level,
  67. Ip[32]
  68. }
  69. new TempInfo[gPlayerInfo];
  70.  
  71. new UpdateSpectateTimer[MAX_PLAYERS];
  72. new bool:CountDownInProgress = false;
  73. new countdown_counter = 5;
  74.  
  75. //================================================================================================================
  76. //basic script
  77. public OnFilterScriptInit()
  78. {
  79. print("\n--------------------------------------");
  80. print(" Gamer's admin script V1.1 ");
  81. print("--------------------------------------\n");
  82. #if USE_MYSQL_DATABASE == true
  83. yoursql_connect(HOST,USER,DB,PASS);
  84. #endif
  85. for(new i = 0;i<MAX_PLAYERS;i++)
  86. {
  87. if(!IsPlayerConnected(i)) continue;
  88. OnPlayerConnect(i);
  89. }
  90. return 1;
  91. }
  92.  
  93. public OnFilterScriptExit()
  94. {
  95. for(new i = 0;i<MAX_PLAYERS;i++)
  96. {
  97. if(!IsPlayerConnected(i)) continue;
  98. SaveUser(i);
  99. }
  100. #if USE_MYSQL_DATABASE == true
  101. yoursql_close();
  102. #endif
  103. return 1;
  104. }
  105.  
  106. public OnPlayerConnect(playerid)
  107. {
  108. format(PlayerInfo[playerid][Username],32," ");
  109. format(PlayerInfo[playerid][Password],32," ");
  110. PlayerInfo[playerid][Level] = 0;
  111. new pName[MAX_PLAYER_NAME],string[96];GetPlayerName(playerid,pName,sizeof pName);
  112. if(IsPlayerNPC(playerid)) return 1;
  113. #if USE_MYSQL_DATABASE == true
  114. format(string,sizeof string,"SELECT * FROM users WHERE Username = '%s'",yoursql_escape_string(pName));
  115. if(yoursql_countrows(string) == 0)
  116. {
  117. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account registration","You need to register in order to play on this server! Please fill in a password.","Register","Quit");
  118. } else {
  119. LoadUser(playerid,pName);
  120. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","This account is registered! Please fill in a password to join.","Login","Change name");
  121. SetPVarInt(playerid,"attempt",0);
  122. }
  123. #else
  124. format(string,sizeof string,"Users/%s.ini",pName);
  125. if(!fexist(string))
  126. {
  127. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account registration","You need to register in order to play on this server! Please fill in a password.","Register","Quit");
  128. } else {
  129. LoadUser(playerid,pName);
  130. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","This account is registered! Please fill in a password to join.","Login","Change name");
  131. SetPVarInt(playerid,"attempt",0);
  132. }
  133. #endif
  134. return 1;
  135. }
  136. public OnPlayerSpawn(playerid)
  137. {
  138. if(PlayerInfo[playerid][Jailed] == 1)
  139. {
  140. SendClientMessageToAllEx(color_red,"ss",PlayerInfo[playerid][Username]," is automaticly jailed (Jail evade).");
  141. SetTimerEx("JailOnSpawnDelay",1000,false,"i",playerid);
  142. } else if (PlayerInfo[playerid][Muted] == 1){
  143. SendClientMessageToAllEx(color_red,"ss",PlayerInfo[playerid][Username]," is automaticly muted (Mute evade).");
  144. }
  145. return 1;
  146. }
  147. forward JailOnSpawnDelay(playerid);
  148. public JailOnSpawnDelay(playerid)
  149. {
  150. JailPlayer(playerid);
  151. }
  152.  
  153. public OnPlayerDisconnect(playerid, reason)
  154. {
  155. if(!IsPlayerNPC(playerid))
  156. {
  157. SaveUser(playerid);
  158. if(cow_victim == playerid)
  159. {
  160. StopAnnoying();
  161. }
  162. }
  163. return 1;
  164. }
  165.  
  166. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  167. {
  168. if(playerid == clickedplayerid) return SendClientMessage(playerid,color_red,"You cannot open the usermenu for yourself!");
  169. SetPVarInt(playerid,"selectedid",clickedplayerid);
  170. switch(PlayerInfo[playerid][Level])
  171. {
  172. case 0:{
  173. if(!IsPlayerAdmin(playerid))
  174. {
  175. ShowPlayerDialog(playerid,DIALOG_REPORT,DIALOG_STYLE_INPUT,"Report player","Please fill in a valid reason:","OK","Cancel");
  176. } else ShowPlayerDialog(playerid,DIALOG_ADMIN,DIALOG_STYLE_LIST,"Administrator menu","Spectate\nDisarm\nMute\nUnmute\nFreeze\nUnfreeze\nJail\nUnjail\nKick\nGet\nGoto\nAnnoy\nBan","OK","Cancel");
  177. }
  178. case 1:ShowPlayerDialog(playerid,DIALOG_ADMIN,DIALOG_STYLE_LIST,"Moderator menu","Spectate\nDisarm\nMute\nUnmute\nFreeze\nUnfreeze\nJail\nUnjail\nKick","OK","Cancel");
  179. case 2,3:ShowPlayerDialog(playerid,DIALOG_ADMIN,DIALOG_STYLE_LIST,"Administrator menu","Spectate\nDisarm\nMute\nUnmute\nFreeze\nUnfreeze\n\nJail\nUnjail\nKick\nGet\nGoto\nAnnoy\nBan","OK","Cancel");
  180. }
  181. return 1;
  182. }
  183.  
  184. //================================================================================================================
  185. //dialog handler
  186. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  187. {
  188. switch(dialogid)
  189. {
  190. case(DIALOG_REGISTER):
  191. {
  192. if(!response)
  193. {
  194. SendClientMessageToAllEx(color_gray,"ss",PlayerInfo[playerid][Username]," has been kicked by the server (Quit at registration).");
  195. Kick(playerid);
  196. }
  197. OnPlayerRegister(playerid,inputtext);
  198. }
  199.  
  200. case(DIALOG_LOGIN):
  201. {
  202. if(!response) return ShowPlayerDialog(playerid,DIALOG_CHANGENICK,DIALOG_STYLE_INPUT,"Account registration","Please fill in a nickname:","OK","Quit");
  203. if(GetPVarInt(playerid,"attempt") == MAX_LOGIN_ATTEMPTS)
  204. {
  205. SendClientMessageToAllEx(color_gray,"ss",PlayerInfo[playerid][Username]," has been kicked by the server (Failed to login).");
  206. Kick(playerid);
  207. } else {
  208. if(!strlen(inputtext))
  209. {
  210. SendClientMessageEx(playerid,color_red,"sisis","You have failed to login (attempt ",GetPVarInt(playerid,"attempt") +1,"/",MAX_LOGIN_ATTEMPTS,").");
  211. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","This account is registered! Please fill in a password to join.","Login","Change username");
  212. SetPVarInt(playerid,"attempt",GetPVarInt(playerid,"attempt") +1);
  213. printf("%s failed to login (attempt %i/%i).",PlayerInfo[playerid][Username],GetPVarInt(playerid,"attempt"),MAX_LOGIN_ATTEMPTS);
  214. }
  215. new buffer[129];WP_Hash(buffer,sizeof buffer,inputtext);
  216. if(!strcmp(buffer,PlayerInfo[playerid][Password]))
  217. {
  218. if(PlayerInfo[playerid][Level] > 0)
  219. {
  220. SendClientMessageEx(playerid,color_green,"sis","You have succesfully logged in as level ",PlayerInfo[playerid][Level]," admin!");
  221. } else SendClientMessage(playerid,color_green,"You have succesfully logged in.");
  222. SendClientMessageToAllEx(color_green,"ss",PlayerInfo[playerid][Username]," has logged in, welcome back!");
  223. printf("%s has logged in.",PlayerInfo[playerid][Username]);
  224. } else {
  225. SendClientMessageEx(playerid,color_red,"sisis","You have failed to login (attempt ",GetPVarInt(playerid,"attempt") +1,"/",MAX_LOGIN_ATTEMPTS,").");
  226. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Account registration","This account is registered! Please fill in a password to join.","Login","Change username");
  227. SetPVarInt(playerid,"attempt",GetPVarInt(playerid,"attempt") +1);
  228. printf("%s failed to login (attempt %i/%i).",PlayerInfo[playerid][Username],GetPVarInt(playerid,"attempt"),MAX_LOGIN_ATTEMPTS);
  229. }
  230. }
  231. }
  232.  
  233. case(DIALOG_CHANGENICK):
  234. {
  235. if(!response)
  236. {
  237. SendClientMessageToAllEx(color_gray,"ss",PlayerInfo[playerid][Username]," has been kicked by the server (Quit at registration).");
  238. Kick(playerid);
  239. }
  240. if(!strlen(inputtext))
  241. {
  242. SendClientMessage(playerid,color_red,"Account registration: Please fill in a valid username!");
  243. ShowPlayerDialog(playerid,DIALOG_CHANGENICK,DIALOG_STYLE_INPUT,"Account registration","Please fill in a nickname:","OK","Quit");
  244. }
  245. SetPlayerName(playerid,inputtext);
  246. OnPlayerConnect(playerid);
  247. }
  248. case(DIALOG_REPORT):
  249. {
  250. if(!response) return 1;
  251. new id = GetPVarInt(playerid,"selectedid");
  252. new reason[64];format(reason,sizeof reason,"%s",inputtext);
  253. if(!strlen(reason)) return SendClientMessage(playerid,color_red,"No valid reason.");
  254. new counter = 0;for(new i = 0;i<MAX_PLAYERS;i++)
  255. {
  256. if(!IsPlayerConnected(i)) continue;
  257. if(PlayerInfo[i][Level] > 0)
  258. {
  259. SendClientMessageEx(i,color_orange,"sssisssisss","Incomming report from ",PlayerInfo[playerid][Username],"(",playerid,") Reporting ",PlayerInfo[id][Username],"(",id,"), Reason: ",reason,".");
  260. counter++;
  261. }
  262. }
  263. printf("%s has reported %s (Reason:%s)",PlayerInfo[playerid][Username],PlayerInfo[id][Username],reason);
  264. return SendClientMessageEx(playerid,color_orange,"sis","Your report has been sent to all online administrators (",counter," at the moment).");
  265. }
  266. case(DIALOG_ADMIN):
  267. {
  268. if(!response) return 1;
  269. new id = GetPVarInt(playerid,"selectedid");
  270. switch(listitem)
  271. {
  272. case 0://spectate
  273. {
  274. if(GetPVarInt(playerid,"spectating") == 1) return SendClientMessage(playerid,color_red,"You are already spectating! Please use /stop to turn spectatemode off.");
  275. TogglePlayerSpectating(playerid,1);
  276. SetPVarInt(playerid,"spectating",1);
  277. if(IsPlayerInAnyVehicle(id))
  278. {
  279. SetPVarInt(playerid,"state",1);
  280. PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
  281. } else {
  282. SetPVarInt(playerid,"state",0);
  283. PlayerSpectatePlayer(playerid,id);
  284. }
  285. UpdateSpectateTimer[playerid] = SetTimerEx("UpdateAdminSpectate",1000,true,"ii",playerid,id);
  286. return SendClientMessageEx(playerid,color_green,"sss","You are now spectating ",PlayerInfo[id][Username]," . You can use /stop to switch back to normal mode.");
  287. }
  288. case 1: //disarm
  289. {
  290. ResetPlayerWeapons(id);
  291. return SendClientMessageToAllEx(color_red,"ssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} disarmed ",PlayerInfo[id][Username],".");
  292. }
  293. case 2://mute
  294. {
  295. if(PlayerInfo[id][Muted] == 1) return SendClientMessage(playerid,color_red,"Player is already muted!");
  296. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} muted ",PlayerInfo[id][Username],".");
  297. PlayerInfo[id][Muted] = 1;
  298. return MutePlayer(id);
  299. }
  300. case 3://unmute
  301. {
  302. if(PlayerInfo[id][Muted] == 0) return SendClientMessage(playerid,color_red,"Player is not muted!");
  303. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} unmuted ",PlayerInfo[id][Username],".");
  304. PlayerInfo[id][Muted] = 0;
  305. return UnMutePlayer(id);
  306. }
  307. case 4://freeze
  308. {
  309. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} froze ",PlayerInfo[id][Username],".");
  310. return TogglePlayerControllable(id,0);
  311. }
  312. case 5://unfreeze
  313. {
  314. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} unfroze ",PlayerInfo[id][Username],".");
  315. return TogglePlayerControllable(id,1);
  316. }
  317. case 6://jail
  318. {
  319. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} jailed ",PlayerInfo[id][Username],".");
  320. PlayerInfo[id][Jailed] = 1;
  321. return JailPlayer(id);
  322. }
  323. case 7: //unjail
  324. {
  325. if(PlayerInfo[id][Jailed] == 0) return SendClientMessage(playerid,color_red,"Player is not jailed!");
  326. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} unjailed ",PlayerInfo[id][Username],".");
  327. PlayerInfo[id][Jailed] = 0;
  328. return UnJailPlayer(id);
  329. }
  330. case 8://kick
  331. {
  332. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} kicked ",PlayerInfo[id][Username],".");
  333. return Kick(id);
  334. }
  335. case 9://get
  336. {
  337. new Float:x,Float:y,Float:z;GetPlayerPos(playerid,x,y,z);x = x +2;
  338. SetPlayerPos(id,x,y,z);
  339. SendClientMessageEx(playerid,color_green,"sss","You have teleported ",PlayerInfo[id][Username]," to your position!");
  340. return SendClientMessageEx(id,color_green,"sss","Administrator ",PlayerInfo[playerid][Username]," has teleported you to his position!");
  341. }
  342. case 10://goto
  343. {
  344. new Float:x,Float:y,Float:z;GetPlayerPos(id,x,y,z);x = x +2;
  345. SetPlayerPos(playerid,x,y,z);
  346. return SendClientMessageEx(playerid,color_red,"sss","You have teleported to ",PlayerInfo[id][Username],"'s position!");
  347. }
  348. case 11://annoy
  349. {
  350. if(cow_victim != -1) return SendClientMessage(playerid,color_red,"Sorry! It seems like your cow has already been stolen by another administrator.");
  351. #if ALLOW_ANNOY == false
  352. return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  353. #else
  354. AnnoyPlayer(id);
  355. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} has released his cow on ",PlayerInfo[id][Username]," !!!");
  356. return SendClientMessageEx(playerid,color_green,"sss","You have released your cow on ",PlayerInfo[id][Username],"! please use /catchcow to bring him back.");
  357. #endif
  358. }
  359. case 12://ban
  360. {
  361. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} banned ",PlayerInfo[id][Username],".");
  362. return Ban(id);
  363. }
  364. }
  365. }
  366. }
  367. return 0;
  368. }
  369. //================================================================================================================
  370. //Player commands:
  371. COMMAND:in(playerid,params[])
  372. {
  373. return SendClientMessageEx(playerid,gCOLOR_RED,"sf","Speed: ",GetVehicleSpeed(GetPlayerVehicleID(playerid),0));
  374. }
  375.  
  376. COMMAND:test(playerid,params[])
  377. {
  378. return PutPlayerInVehicle(playerid,GetClosestVehicleForPlayer(playerid),0);
  379. }
  380.  
  381. COMMAND:reconnect(playerid,params[])
  382. {
  383. SendClientMessage(playerid,gCOLOR_RED,"You will now be reconnected to the server, DO NOT LEAVE!");
  384. SetPlayerToReconnect(playerid);
  385. return 1;
  386. }
  387. COMMAND:changepassword(playerid,params[])
  388. {
  389. new oldpass[129],newpass[129];
  390. if(sscanf(params,"s[32]s[32]",oldpass,newpass)) return SendClientMessage(playerid,color_red,"USAGE: /changepassword [oldpassword] [newpassword]");
  391. WP_Hash(oldpass,sizeof oldpass,oldpass);
  392. if(strcmp(PlayerInfo[playerid][Password],oldpass)) return SendClientMessage(playerid,color_red,"ERROR! Your current password does not match with your entered password!");
  393. #if USE_MYSQL_DATABASE == true
  394. WP_Hash(PlayerInfo[playerid][Password],129,newpass);
  395. #else
  396. WP_Hash(PlayerInfo[playerid][Password],129,newpass);
  397. #endif
  398. SaveUser(playerid);
  399. return SendClientMessage(playerid,color_green,"Your password has succesfully been changed.");
  400. }
  401. COMMAND:stats(playerid,params[])
  402. {
  403. SendClientMessage(playerid,color_green,"Your current stats:");
  404. SendClientMessageEx(playerid,color_yellow,"sis","Score: ",GetPlayerScore(playerid),".");
  405. SendClientMessageEx(playerid,color_yellow,"sis","Money: ",GetPlayerMoney(playerid),".");
  406. return 1;
  407. }
  408.  
  409. COMMAND:whois(playerid,params[])
  410. {
  411. new id;
  412. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /whois [playerid]");
  413. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  414. SendClientMessageEx(playerid,color_orange,"sis","Who is ID ",id,".");
  415. SendClientMessageEx(playerid,color_yellow,"sss","Username: {FFFFFF}",PlayerInfo[id][Username],".");
  416. switch(PlayerInfo[id][Level])
  417. {
  418. case 0:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Player.");
  419. case 1:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Moderator.");
  420. case 2:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Administrator.");
  421. case 3:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Server owner.");
  422. }
  423. SendClientMessageEx(playerid,color_yellow,"sis","Score: ",GetPlayerScore(id),".");
  424. SendClientMessageEx(playerid,color_yellow,"sis","Money: ",GetPlayerMoney(id),".");
  425. SendClientMessageEx(playerid,color_yellow,"sss","IP: ",GetPlayerIpEx(id),".");
  426. return 1;
  427. }
  428.  
  429. COMMAND:whowas(playerid,params[])
  430. {
  431. new pName[MAX_PLAYER_NAME];
  432. if(sscanf(params,"s[32]",pName)) return SendClientMessage(playerid,color_red,"USAGE: /whowas [playername]");
  433.  
  434. #if USE_MYSQL_DATABASE == true
  435. new query[128];format(query,sizeof query,"SELECT * FROM users WHERE Username = '%s'",pName);
  436. if(yoursql_countrows(query) != 1) return SendClientMessage(playerid,color_red,"User not found in our database!");
  437. format(query,sizeof query,"Username = '%s'",pName);
  438. sscanf(yoursql_receive("users",query),"p<|>e<s[32]s[129]iiiiis[32]>",TempInfo);
  439. #else
  440. new file[64];format(file,sizeof file,"Users/%s.ini",pName);
  441. if(!fexist(file)) return SendClientMessage(playerid,color_red,"User not found in our database!");
  442. INI_ParseFile(file, "YINI_TEMPLOAD", .bExtra = true, .extra = playerid);
  443. #endif
  444.  
  445. SendClientMessageEx(playerid,color_orange,"sss","Who was ",pName,".");
  446. SendClientMessageEx(playerid,color_yellow,"sss","Username: {FFFFFF}",TempInfo[Username],".");
  447. switch(TempInfo[Level])
  448. {
  449. case 0:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Player.");
  450. case 1:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Moderator.");
  451. case 2:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Administrator.");
  452. case 3:SendClientMessage(playerid,color_yellow,"Level: {FFFFFF}Server owner.");
  453. }
  454. SendClientMessageEx(playerid,color_yellow,"sis","Score: ",TempInfo[Score],".");
  455. SendClientMessageEx(playerid,color_yellow,"sis","Money: ",TempInfo[Money],".");
  456. SendClientMessageEx(playerid,color_yellow,"sss","IP: ",TempInfo[Ip],".");
  457. format(TempInfo[Username],32," ");
  458. format(TempInfo[Password],192," ");
  459. format(TempInfo[Muted],32," ");
  460. format(TempInfo[Jailed],32," ");
  461. format(TempInfo[Score],32," ");
  462. format(TempInfo[Money],32," ");
  463. format(TempInfo[Level],32," ");
  464. format(TempInfo[Ip],32," ");
  465. return 1;
  466. }
  467. forward YINI_TEMPLOAD(playerid,Name[],Value[]);
  468. public YINI_TEMPLOAD(playerid,Name[],Value[])
  469. {
  470. if(!strcmp(Name,"Username")){format(TempInfo[Username],32,"%s",Value);}
  471. if(!strcmp(Name,"Score")){TempInfo[Score] = strval(Value);}
  472. if(!strcmp(Name,"Money")){TempInfo[Money] = strval(Value);}
  473. if(!strcmp(Name,"Level")){TempInfo[Level] = strval(Value);}
  474. if(!strcmp(Name,"Ip")){format(TempInfo[Ip],32,"%s",Value);}
  475. return 1;
  476. }
  477.  
  478. COMMAND:report(playerid,params[])
  479. {
  480. new id,reason[64];
  481. if(sscanf(params,"is[64]",id,reason)) return SendClientMessage(playerid,color_red,"USAGE: /report [playerid] [reason]");
  482. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  483. new counter = 0;for(new i = 0;i<MAX_PLAYERS;i++)
  484. {
  485. if(!IsPlayerConnected(i)) continue;
  486. if(PlayerInfo[i][Level] > 0)
  487. {
  488. SendClientMessageEx(i,color_orange,"sssisssisss","Incomming report from ",PlayerInfo[playerid][Username],"(",playerid,") Reporting ",PlayerInfo[id][Username],"(",id,"), Reason: ",reason,".");
  489. counter++;
  490. }
  491. }
  492. printf("%s has reported %s (Reason:%s)",PlayerInfo[playerid][Username],PlayerInfo[id][Username],reason);
  493. return SendClientMessageEx(playerid,color_orange,"sis","Your report has been sent to all online administrators (",counter," at the moment).");
  494. }
  495. COMMAND:admins(playerid,params[])
  496. {
  497. #if ALLOW_ADMINS == false
  498. return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  499. #else
  500. new counter = 0;
  501. SendClientMessage(playerid,color_green,"Online admins:");
  502. for(new i = 0;i<MAX_PLAYERS;i++)
  503. {
  504. if(!IsPlayerConnected(i)) continue;
  505. if(PlayerInfo[i][Level] > 0)
  506. {
  507. SendClientMessageEx(playerid,color_orange,"s",PlayerInfo[i][Username]);
  508. counter++;
  509. }
  510. }
  511. if(counter == 0)
  512. {
  513. SendClientMessage(playerid,color_red,"There are no admins online!");
  514. }
  515. return 1;
  516. #endif
  517. }
  518.  
  519. COMMAND:acmds(playerid,params[])
  520. {
  521. if(PlayerInfo[playerid][Level] == 0) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  522. SendClientMessage(playerid,color_orange,"Moderator (Level 1 and up):");
  523. SendClientMessage(playerid,color_yellow,"/a /countdown /whois /announce /spectate /disarm /(un)mute /(un)freeze /(un)jail /kick");
  524. SendClientMessage(playerid,color_orange,"Administrator (Level 2 and up):");
  525. SendClientMessage(playerid,color_yellow,"/veh /get /goto /giveweapon /setmoney /setscore /explode /ban /banip /annoy");
  526. SendClientMessage(playerid,color_orange,"Owner (Level 3):");
  527. SendClientMessage(playerid,color_yellow,"/setlevel /unbanip");
  528. return 1;
  529. }
  530.  
  531. //================================================================================================================
  532. //Moderator commands
  533. COMMAND:a(playerid,params[])
  534. {
  535. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  536. new text[128];
  537. if(sscanf(params,"s[128]",text)) return SendClientMessage(playerid,color_red,"USAGE: /a [text]");
  538. for(new i = 0;i<MAX_PLAYERS;i++)
  539. {
  540. if(!IsPlayerConnected(i)) continue;
  541. if(PlayerInfo[i][Level] < 1) continue;
  542. SendClientMessageEx(i,color_yellow,"ssss","Adminchat: ",PlayerInfo[playerid][Username],": {FFFFFF}",text);
  543. }
  544. return 1;
  545. }
  546.  
  547. COMMAND:countdown(playerid,params[])
  548. {
  549. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  550. if(CountDownInProgress == true) return SendClientMessage(playerid,color_red,"There is already a countdown in progress!");
  551. CountDownInProgress = true;
  552. SetTimer("countdown",1000,false);
  553. SendClientMessageToAllEx(color_red,"sss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} has started a countdown!");
  554. return 1;
  555. }
  556. forward countdown();
  557. public countdown()
  558. {
  559. if(countdown_counter == 0){countdown_counter = 5;CountDownInProgress = false;return GameTextForAll("GO GO GO!",1000,6);}
  560. new str[32];format(str,sizeof str,"~g~%i",countdown_counter);
  561. GameTextForAll(str,1000,6);
  562. countdown_counter--;
  563. return SetTimer("countdown",1000,false);
  564. }
  565.  
  566.  
  567. COMMAND:announce(playerid,params[])
  568. {
  569. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  570. new msg[128];
  571. if(sscanf(params,"s",msg)) return SendClientMessage(playerid,color_red,"USAGE: /announce [text]");
  572. SendClientMessageToAllEx(color_yellow,"ss","ANNOUNCEMENT: ",msg);
  573. return GameTextForAll(msg,5000,4);
  574. }
  575. COMMAND:spectate(playerid,params[])
  576. {
  577. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  578. new id;
  579. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /spectate [id]");
  580. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  581. if(id == playerid) return SendClientMessage(playerid,color_red,"You cannot spectate yourself!");
  582. if(GetPVarInt(playerid,"spectating") == 1) return SendClientMessage(playerid,color_red,"You are already spectating! Please use /stop to turn spectatemode off.");
  583. TogglePlayerSpectating(playerid,1);
  584. SetPVarInt(playerid,"spectating",1);
  585. if(IsPlayerInAnyVehicle(id))
  586. {
  587. SetPVarInt(playerid,"state",1);
  588. PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
  589. } else {
  590. SetPVarInt(playerid,"state",0);
  591. PlayerSpectatePlayer(playerid,id);
  592. }
  593. UpdateSpectateTimer[playerid] = SetTimerEx("UpdateAdminSpectate",1000,true,"ii",playerid,id);
  594. return SendClientMessageEx(playerid,color_green,"sss","You are now spectating ",PlayerInfo[id][Username]," . You can use /stop to switch back to normal mode.");
  595. }
  596. forward UpdateAdminSpectate(playerid,id);
  597. public UpdateAdminSpectate(playerid,id)
  598. {
  599. if(GetPVarInt(playerid,"state") == 1 && !IsPlayerInAnyVehicle(id))
  600. {
  601. PlayerSpectatePlayer(playerid,id);
  602. SetPVarInt(playerid,"state",0);
  603. } else if (GetPVarInt(playerid,"state") == 0 && IsPlayerInAnyVehicle(id)) {
  604. PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
  605. SetPVarInt(playerid,"state",1);
  606. }
  607. }
  608.  
  609. COMMAND:stop(playerid,params[])
  610. {
  611. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  612. if(GetPVarInt(playerid,"spectating") == 0) return SendClientMessage(playerid,color_red,"You are not spectating a player! use /spectate [ID] to spectate a player.");
  613. TogglePlayerSpectating(playerid,0);
  614. SetPVarInt(playerid,"spectating",0);
  615. KillTimer(UpdateSpectateTimer[playerid]);
  616. return 1;
  617. }
  618.  
  619. COMMAND:disarm(playerid,params[])
  620. {
  621. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  622. new id;
  623. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /disarm [playerid]");
  624. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  625. ResetPlayerWeapons(id);
  626. SendClientMessageToAllEx(color_red,"ssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} disarmed ",PlayerInfo[id][Username],".");
  627. return 1;
  628. }
  629.  
  630. COMMAND:mute(playerid,params[])
  631. {
  632. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  633. new id,reason[64];
  634. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /mute [id] [reason]");
  635. sscanf(params,"is[64]",id,reason);
  636. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  637. if(PlayerInfo[id][Muted] == 1) return SendClientMessage(playerid,color_red,"Player is already muted!");
  638. if(!strlen(reason))
  639. {
  640. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} muted ",PlayerInfo[id][Username],".");
  641. } else {
  642. SendClientMessageToAllEx(color_red,"sssssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} muted ",PlayerInfo[id][Username]," Reason:",reason,".");
  643. }
  644. PlayerInfo[id][Muted] = 1;
  645. MutePlayer(id);
  646. return 1;
  647. }
  648. COMMAND:unmute(playerid,params[])
  649. {
  650. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  651. new id;
  652. if(sscanf(params,"i",id))return SendClientMessage(playerid,color_red,"USAGE: /unmute [id]");
  653. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  654. if(PlayerInfo[id][Muted] == 0) return SendClientMessage(playerid,color_red,"Player is not muted!");
  655. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} unmuted ",PlayerInfo[id][Username],".");
  656. PlayerInfo[id][Muted] = 0;
  657. UnMutePlayer(playerid);
  658. return 1;
  659. }
  660.  
  661. COMMAND:freeze(playerid,params[])
  662. {
  663. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  664. new id,reason[64];
  665. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /freeze [id] [reason]");
  666. sscanf(params,"is[64]",id,reason);
  667. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  668. if(!strlen(reason))
  669. {
  670. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} froze ",PlayerInfo[id][Username],".");
  671. } else {
  672. SendClientMessageToAllEx(color_red,"sssssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} froze ",PlayerInfo[id][Username]," Reason:",reason,".");
  673. }
  674. TogglePlayerControllable(id,0);
  675. return 1;
  676. }
  677. COMMAND:unfreeze(playerid,params[])
  678. {
  679. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  680. new id;
  681. if(sscanf(params,"i",id))return SendClientMessage(playerid,color_red,"USAGE: /unfreeze [id]");
  682. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  683. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} unfroze ",PlayerInfo[id][Username],".");
  684. TogglePlayerControllable(id,1);
  685. return 1;
  686. }
  687.  
  688. COMMAND:jail(playerid,params[])
  689. {
  690. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  691. new id,reason[64];
  692. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /jail [id] [reason]");
  693. sscanf(params,"is[64]",id,reason);
  694. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  695. if(!strlen(reason))
  696. {
  697. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} jailed ",PlayerInfo[id][Username],".");
  698. } else {
  699. SendClientMessageToAllEx(color_red,"sssssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} jailed ",PlayerInfo[id][Username]," Reason:",reason,".");
  700. }
  701. PlayerInfo[id][Jailed] = 1;
  702. JailPlayer(id);
  703. return 1;
  704. }
  705. COMMAND:unjail(playerid,params[])
  706. {
  707. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  708. new id;
  709. if(sscanf(params,"i",id))return SendClientMessage(playerid,color_red,"USAGE: /unjail [id]");
  710. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  711. if(PlayerInfo[id][Jailed] == 0) return SendClientMessage(playerid,color_red,"Player is not jailed!");
  712. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} unjailed ",PlayerInfo[id][Username],".");
  713. PlayerInfo[id][Jailed] = 0;
  714. UnJailPlayer(id);
  715. return 1;
  716. }
  717.  
  718. COMMAND:kick(playerid,params[])
  719. {
  720. if(PlayerInfo[playerid][Level] < 1) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  721. new id,reason[64];
  722. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /kick [id] [reason]");
  723. sscanf(params,"is[64]",id,reason);
  724. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  725. if(!strlen(reason))
  726. {
  727. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} kicked ",PlayerInfo[id][Username],".");
  728. } else {
  729. SendClientMessageToAllEx(color_red,"sssssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} kicked ",PlayerInfo[id][Username]," Reason:",reason,".");
  730. }
  731. return Kick(id);
  732. }
  733.  
  734. //================================================================================================================
  735. //Administrator commands
  736. COMMAND:veh(playerid,params[])
  737. {
  738. #if ALLOW_VEH == false
  739. return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  740. #else
  741. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  742. new vehicle[32],c1 = -1,c2 = -1;
  743. if(sscanf(params,"s[24]",vehicle)) return SendClientMessage(playerid,color_red,"USAGE: /veh [vehiclename] [color1] [color2]");
  744. sscanf(params,"s[24]ii",vehicle,c1,c2);
  745. new model = GetVehicleModelIdByName(vehicle);
  746. if(model == 0) return SendClientMessage(playerid,color_red,"Sorry! Cannot find a vehicle with your entered vehiclename.");
  747. new Float:x,Float:y,Float:z;
  748. GetPlayerPos(playerid,x,y,z);
  749. CreateVehicle(model,x+5,y,z,0,c1,c2,-1);
  750. SendClientMessageEx(playerid,color_orange,"sss","You succesfully spawned a ",vehicle," !");
  751. printf("%s has spawned a %s.",PlayerInfo[playerid][Username],vehicle);
  752. return 1;
  753. #endif
  754. }
  755.  
  756. COMMAND:get(playerid,params[])
  757. {
  758. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  759. new id;
  760. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /get [playerid]");
  761. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  762. new Float:x,Float:y,Float:z;GetPlayerPos(playerid,x,y,z);x = x +2;
  763. SetPlayerPos(id,x,y,z);
  764. SendClientMessageEx(playerid,color_green,"sss","You have teleported ",PlayerInfo[id][Username]," to your position!");
  765. SendClientMessageEx(id,color_green,"sss","Administrator ",PlayerInfo[playerid][Username]," has teleported you to his position!");
  766. return 1;
  767. }
  768. COMMAND:goto(playerid,params[])
  769. {
  770. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  771. new id;
  772. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /goto [playerid]");
  773. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  774. new Float:x,Float:y,Float:z;GetPlayerPos(id,x,y,z);x = x +2;
  775. SetPlayerPos(playerid,x,y,z);
  776. SendClientMessageEx(playerid,color_green,"sss","You have teleported to ",PlayerInfo[id][Username],"'s position!");
  777. return 1;
  778. }
  779.  
  780. COMMAND:giveweapon(playerid,params[])
  781. {
  782. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  783. new id,weapon[32],ammo;
  784. if(sscanf(params,"is[32]i",id,weapon,ammo)) return SendClientMessage(playerid,color_red,"USAGE: /giveweapon [playerid] [weaponname] [ammo]");
  785. new wid = GetWeaponIdByName(weapon);
  786. if(wid == -1) return SendClientMessage(playerid,color_red,"Invalid weapon name!");
  787. GivePlayerWeapon(id,wid,ammo);
  788. SendClientMessageEx(id,color_green,"sssss","Administrator ",PlayerInfo[playerid][Username]," gave you a ",weapon,"!");
  789. SendClientMessageEx(playerid,color_green,"sssss","You have given ",PlayerInfo[id][Username]," a ",weapon,".");
  790. return 1;
  791. }
  792.  
  793. COMMAND:setmoney(playerid,params[])
  794. {
  795. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  796. new id,value;
  797. if(sscanf(params,"ii",id,value)) return SendClientMessage(playerid,color_red,"USAGE: /setmoney [playerid] [value]");
  798. SetPlayerMoney(id,value);
  799. SendClientMessageEx(id,color_green,"sssis","Administrator ",PlayerInfo[playerid][Username]," has changed your money to ",value," !");
  800. SendClientMessageEx(playerid,color_green,"sssis","You have succesfully changed ",PlayerInfo[id][Username],"'s money to ",value," .");
  801. return 1;
  802. }
  803.  
  804. COMMAND:setscore(playerid,params[])
  805. {
  806. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  807. new id,value;
  808. if(sscanf(params,"ii",id,value)) return SendClientMessage(playerid,color_red,"USAGE: /setscore [playerid] [value]");
  809. SetPlayerScore(id,value);
  810. SendClientMessageEx(id,color_green,"sssis","Administrator ",PlayerInfo[playerid][Username]," has changed your score to ",value," !");
  811. SendClientMessageEx(playerid,color_green,"sssis","You have succesfully changed ",PlayerInfo[id][Username],"'s score to ",value," .");
  812. return 1;
  813. }
  814.  
  815. COMMAND:explode(playerid,params[])
  816. {
  817. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  818. new id;
  819. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /explode [playerid]");
  820. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  821. new Float:x,Float:y,Float:z;GetPlayerPos(id,x,y,z);
  822. CreateExplosion(x,y,z,0,5);
  823. CreateExplosion(x,y+3,z,0,7);
  824. CreateExplosion(x+3,y,z,0,8);
  825. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} made ",PlayerInfo[id][Username]," go boom!");
  826. return 1;
  827. }
  828.  
  829. COMMAND:ban(playerid,params[])
  830. {
  831. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  832. new id,reason[64];
  833. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /ban [id] [reason]");
  834. sscanf(params,"is[64]",id,reason);
  835. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  836. if(!strlen(reason))
  837. {
  838. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} banned ",PlayerInfo[id][Username],".");
  839. } else {
  840. SendClientMessageToAllEx(color_red,"sssssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} banned ",PlayerInfo[id][Username]," Reason:",reason,".");
  841. }
  842. return Ban(id);
  843. }
  844.  
  845. COMMAND:banip(playerid,params[])
  846. {
  847. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  848. new ip[32];if(sscanf(params,"s[32]",ip)) return SendClientMessage(playerid,color_red,"USAGE: /banip [ip]");
  849. new str[64];format(str,sizeof str,"banip %s",ip);
  850. SendRconCommand(str);
  851. SendClientMessageEx(playerid,color_green,"sss","You have succesfully banned ",ip," !");
  852. printf("%s has banned %s.",PlayerInfo[playerid][Username],ip);
  853. return 1;
  854. }
  855.  
  856. COMMAND:annoy(playerid,params[])
  857. {
  858. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  859. new id;
  860. if(sscanf(params,"i",id)) return SendClientMessage(playerid,color_red,"USAGE: /annoy [playerid]");
  861. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  862. if(cow_victim != -1) return SendClientMessage(playerid,color_red,"Sorry! It seems like your cow has already been stolen by another administrator.");
  863. #if ALLOW_ANNOY == false
  864. return SendClientMessage(playerid,color_red,"Sorry! This feature has been disabled.");
  865. #else
  866. AnnoyPlayer(id);
  867. SendClientMessageToAllEx(color_red,"sssss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} has released his cow on ",PlayerInfo[id][Username]," !!!");
  868. SendClientMessageEx(playerid,color_green,"sss","You have released your cow on ",PlayerInfo[id][Username],"! please use /catchcow to bring him back.");
  869. return 1;
  870. #endif
  871. }
  872. COMMAND:catchcow(playerid,params[])
  873. {
  874. if(PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  875. if(cow_victim == -1) return SendClientMessage(playerid,color_red,"You cannot catch the cow if it isnt released yet!");
  876. StopAnnoying();
  877. SendClientMessageToAllEx(color_red,"sss","***Administrator ",PlayerInfo[playerid][Username],"{FFFFFF} has brought his cow back to the farm!");
  878. return 1;
  879. }
  880.  
  881. //================================================================================================================
  882. //Server owner commands
  883. COMMAND:setlevel(playerid,params[])
  884. {
  885. if(PlayerInfo[playerid][Level] < 3&& !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  886. new id,level;if(sscanf(params,"ii",id,level)) return SendClientMessage(playerid,color_red,"USAGE: /setlevel [playerid] [level 0/3]");
  887. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,color_red,"Player not connected.");
  888. if(level > 3) return SendClientMessage(playerid,color_red,"Error! You can only pick between level 0/3 (0: Player - 1: Moderator - 2: Administrator - 3: Owner)");
  889. if(PlayerInfo[id][Level] < level)
  890. {
  891. PlayerInfo[id][Level] = level;
  892. SendClientMessageEx(playerid,color_green,"sssis","You have promoted ",PlayerInfo[id][Username]," succesfully to level ",level,".");
  893. SendClientMessageEx(id,color_green,"sis","Congratulations! You have been promoted to level ",level,".");
  894. } else {
  895. PlayerInfo[id][Level] = level;
  896. SendClientMessageEx(playerid,color_green,"sssis","You have demoted ",PlayerInfo[id][Username]," succesfully to level ",level,".");
  897. SendClientMessageEx(id,color_green,"sis","You have been demoted to level ",level,".");
  898. }
  899. SaveUser(id);
  900. return 1;
  901. }
  902.  
  903. COMMAND:unbanip(playerid,params[])
  904. {
  905. if(PlayerInfo[playerid][Level] < 3 ) return SendClientMessage(playerid,color_red,"You have no permission to use this command!");
  906. new ip[32];if(sscanf(params,"s[32]",ip)) return SendClientMessage(playerid,color_red,"USAGE: /unbanip [ip]");
  907. new str[64];format(str,sizeof str,"unbanip %s",ip);
  908. SendRconCommand(str);
  909. SendClientMessageEx(playerid,color_green,"sss","You have succesfully unbanned ",ip," !");
  910. printf("%s has unbanned %s.",PlayerInfo[playerid][Username],ip);
  911. return 1;
  912. }
  913.  
  914. //================================================================================================================
  915. //stocks for admin script
  916. stock OnPlayerRegister(playerid,password[])
  917. {
  918. GetPlayerName(playerid,PlayerInfo[playerid][Username],MAX_PLAYER_NAME);
  919. WP_Hash(PlayerInfo[playerid][Password],129,password);
  920. PlayerInfo[playerid][Muted] = 0;
  921. PlayerInfo[playerid][Score] = GetPlayerScore(playerid);
  922. PlayerInfo[playerid][Money] = GetPlayerMoney(playerid);
  923. PlayerInfo[playerid][Level] = 0;
  924. format(PlayerInfo[playerid][Ip],32,"%s",GetPlayerIpEx(playerid));
  925. #if USE_MYSQL_DATABASE == true
  926. yoursql_insert("users","ssiiiiis",yoursql_escape_string(PlayerInfo[playerid][Username]),PlayerInfo[playerid][Password],PlayerInfo[playerid][Muted],PlayerInfo[playerid][Jailed],PlayerInfo[playerid][Score],PlayerInfo[playerid][Money],PlayerInfo[playerid][Level],PlayerInfo[playerid][Ip]);
  927. #else
  928. new string[128];format(string,sizeof string,"Users/%s.ini",PlayerInfo[playerid][Username]);
  929. new INI:handler = INI_Open(string);
  930. INI_WriteString(handler,"Username",PlayerInfo[playerid][Username]);
  931. INI_WriteString(handler,"Password",PlayerInfo[playerid][Password]);
  932. INI_WriteInt(handler,"Muted",PlayerInfo[playerid][Muted]);
  933. INI_WriteInt(handler,"Jailed",PlayerInfo[playerid][Jailed]);
  934. INI_WriteInt(handler,"Score",GetPlayerScore(playerid));
  935. INI_WriteInt(handler,"Money",GetPlayerMoney(playerid));
  936. INI_WriteInt(handler,"Level",0);
  937. INI_WriteString(handler,"Ip",GetPlayerIpEx(playerid));
  938. INI_Close(handler);
  939. #endif
  940. printf("%s has registered an account.",PlayerInfo[playerid][Username]);
  941. SendClientMessageToAllEx(color_green,"ss",PlayerInfo[playerid][Username]," has registered an account, welcome!");
  942. }
  943.  
  944. stock LoadUser(playerid,pName[])
  945. {
  946. new identifier[64];
  947. #if USE_MYSQL_DATABASE == true
  948. format(identifier,sizeof identifier,"Username = '%s'",pName);
  949. sscanf(yoursql_receive("users",identifier),"p<|>e<s[32]s[129]iiiiis[12]>",PlayerInfo[playerid]);
  950. #else
  951. format(identifier,sizeof identifier,"Users/%s.ini",pName);
  952. INI_ParseFile(identifier, "YINI_LOAD", .bExtra = true, .extra = playerid);
  953. #endif
  954. SetPlayerScore(playerid,PlayerInfo[playerid][Score]);
  955. SetPlayerMoney(playerid,PlayerInfo[playerid][Money]);
  956. return 1;
  957. }
  958.  
  959. forward YINI_LOAD(playerid,Name[],Value[]);
  960. public YINI_LOAD(playerid,Name[],Value[])
  961. {
  962. if(!strcmp(Name,"Username")){format(PlayerInfo[playerid][Username],32,"%s",Value);}
  963. if(!strcmp(Name,"Password")){format(PlayerInfo[playerid][Password],129,"%s",Value);}
  964. if(!strcmp(Name,"Muted")){PlayerInfo[playerid][Muted] = strval(Value);}
  965. if(!strcmp(Name,"Jailed")){PlayerInfo[playerid][Jailed] = strval(Value);}
  966. if(!strcmp(Name,"Score")){PlayerInfo[playerid][Score] = strval(Value);}
  967. if(!strcmp(Name,"Money")){PlayerInfo[playerid][Money] = strval(Value);}
  968. if(!strcmp(Name,"Level")){PlayerInfo[playerid][Level] = strval(Value);}
  969. if(!strcmp(Name,"Ip")){format(PlayerInfo[playerid][Ip],32,"%s",Value);}
  970. return 1;
  971. }
  972.  
  973. stock SaveUser(playerid)
  974. {
  975. new string[320];
  976. #if USE_MYSQL_DATABASE == true
  977. format(string,sizeof string,"password = '%s', muted = %i, jailed = %i, score = %i, money = %i, level = %i, Ip = '%s'",yoursql_escape_string(PlayerInfo[playerid][Password]),PlayerInfo[playerid][Muted],PlayerInfo[playerid][Jailed],GetPlayerScore(playerid),GetPlayerMoney(playerid),PlayerInfo[playerid][Level],GetPlayerIpEx(playerid));
  978. new identifier[32];format(identifier,sizeof identifier,"Username = '%s'",PlayerInfo[playerid][Username]);
  979. yoursql_update("users",string,identifier);
  980. #else
  981. format(string,sizeof string,"Users/%s.ini",PlayerInfo[playerid][Username]);
  982. new INI:handler = INI_Open(string);
  983. INI_WriteString(handler,"Password",PlayerInfo[playerid][Password]);
  984. INI_WriteInt(handler,"Muted",PlayerInfo[playerid][Muted]);
  985. INI_WriteInt(handler,"Jailed",PlayerInfo[playerid][Jailed]);
  986. INI_WriteInt(handler,"Score",GetPlayerScore(playerid));
  987. INI_WriteInt(handler,"Money",GetPlayerMoney(playerid));
  988. INI_WriteInt(handler,"Level",PlayerInfo[playerid][Level]);
  989. INI_Close(handler);
  990. #endif
  991. }
  992. //================================================================================================================
  993. //Parts from Hiddos's annoying cow script
  994. stock AnnoyPlayer(playerid)
  995. {
  996. object_cow = CreateObject(16442, 0, 0, 0, 0, 0, 0);
  997. cow_victim = playerid;
  998. new Float:Pos[4];
  999. if(IsPlayerInAnyVehicle(cow_victim)) GetVehiclePos(GetPlayerVehicleID(cow_victim), Pos[0], Pos[1], Pos[2]);
  1000. else GetPlayerPos(cow_victim, Pos[0], Pos[1], Pos[2]);
  1001. Pos[0] += float(random(30) - 15);
  1002. Pos[1] += float(random(30) - 15);
  1003. StopObject(object_cow);
  1004. SetObjectPos(object_cow, Pos[0], Pos[1], Pos[2] - 7.5);
  1005. MoveObject(object_cow, Pos[0], Pos[1], Pos[2], 5.0);
  1006. movecow_timer = SetTimer("MoveCow", 2000, true);
  1007. }
  1008. stock StopAnnoying()
  1009. {
  1010. KillTimer(movecow_timer);
  1011. DestroyObject(object_cow); //Bai bai cow :(
  1012. cow_victim = -1;
  1013. }
  1014. stock Float:GetPlayerSpeed(playerid)
  1015. {
  1016. new Float:x,Float:y,Float:z;
  1017. if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
  1018. else GetPlayerVelocity(playerid,x,y,z);
  1019. return floatsqroot(x*x+y*y+z*z) * 48.5;
  1020. }
  1021. forward MoveCow();
  1022. public MoveCow()
  1023. {
  1024. if(cow_victim == -1) return;
  1025. new Float:Pos[7];
  1026. GetObjectPos(object_cow, Pos[0], Pos[1], Pos[2]);
  1027. if(IsPlayerInAnyVehicle(cow_victim)) GetVehiclePos(GetPlayerVehicleID(cow_victim), Pos[3], Pos[4], Pos[5]);
  1028. else GetPlayerPos(cow_victim, Pos[3], Pos[4], Pos[5]);
  1029. Pos[3] += float(random(10) - 5);
  1030. Pos[4] += float(random(10) - 5);
  1031. Pos[6] = atan( floatdiv(abs(Pos[4] - Pos[1]), abs(Pos[3] - Pos[0])) );
  1032.  
  1033. if(Pos[3] < Pos[0] && Pos[4] < Pos[1]) Pos[6] += 180;
  1034. else if(!(Pos[3] > Pos[0] && Pos[4] > Pos[1]))
  1035. {
  1036. Pos[6] *= float(-1);
  1037. Pos[6] += float((Pos[3] > Pos[0] && Pos[4] < Pos[1]) ? (90) : (270));
  1038. Pos[6] -= float(90);
  1039. }
  1040. SetObjectRot(object_cow, 0, 0, Pos[6]);
  1041. MoveObject(object_cow, Pos[3], Pos[4], Pos[5] + 1.2, GetPlayerSpeed(cow_victim) + 7.8);
  1042. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement