Advertisement
Guest User

Dynamic Admin by Music4You

a guest
Aug 4th, 2013
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.93 KB | None | 0 0
  1. /*
  2. Adminsystem by Items4Landwirt aka Music4You
  3.  
  4. - Es ist verboten meinen Namen aus dem Skript zu löschen!
  5. - Es ist verboten Dieses Skript nocheinmal zu veröffentlichen
  6. - Es ist verboten Dieses Skript als eigenes auszugeben.
  7.  
  8. Ich danke BlackAce für sein gutes Tutorial für SQLlite.
  9. http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/tutorials/121557-sqlite-die-alternative-zu-mysql/
  10.  
  11. Nun noch ein Paar YT Kanäle, von guten Freunden
  12. Music4You http://www.youtube.com/user/Music4You43
  13. Items4Sacred http://www.youtube.com/user/items4sacred
  14. Metalletsplay666 http://www.youtube.com/user/MetalLetsPlay666
  15.  
  16. */
  17. #define FILTERSCRIPT
  18.  
  19. ////=============== Includes ===============
  20. #include <a_samp>
  21. #include <ocmd>
  22. #include <banfix>
  23.  
  24. //=============== Defines ===============
  25. #define rot 0xFF0A00FF
  26. #define gruen 0x4BB400FF
  27. #define grau 0x8C8C8CFF
  28. #define blau 0x007DFFFF
  29.  
  30. #define SCM SendClientMessage
  31. #define SCMT SendClientMessageToAll
  32.  
  33. #define MSG DIALOG_STYLE_MSGBOX
  34. #define LIST DIALOG_STYLE_LIST
  35. #define INPUT DIALOG_STYLE_INPUT
  36.  
  37. #define Bangrund 999
  38. #define report 1000
  39. #define amenu 1001
  40. #define rang 1002
  41. #define eingabe 1003
  42. #define cmdlist 1004
  43. #define adeingabe 1005
  44.  
  45. #define MAX_CMD 30
  46.  
  47. ////=============== News ===============
  48. new DB:Data;
  49. new bool:insup[MAX_PLAYERS]=false;
  50. new bool:sup[MAX_PLAYERS]=false;
  51. new bool:adinsup[MAX_PLAYERS]=false;
  52. new tag,monat,jahr;
  53. new stunde,minuten,sekunde;
  54. new ids;
  55.  
  56. new arang1[1][32];
  57. new arang2[1][32];
  58. new arang3[1][32];
  59. new arang4[1][32];
  60.  
  61. new arang[MAX_PLAYERS];
  62. new adcmd[MAX_PLAYERS];
  63.  
  64. new supporter;
  65. new frager;
  66.  
  67.  
  68. enum administator
  69. {
  70. Adminlevel,
  71. banned,
  72. bangrund[128],
  73. BanAdmin[MAX_PLAYER_NAME]
  74. }
  75. new AdminInfo[MAX_PLAYERS][administator];
  76.  
  77. enum cmds
  78. {
  79. kick,
  80. ban,
  81. opensup,
  82. closesup,
  83. mute,
  84. unmute,
  85. veh,
  86. restart,
  87. makeadmin,
  88. deladmin,
  89. gotos,
  90. amenus
  91. }
  92. new CInfo[MAX_CMD][cmds];
  93.  
  94. public OnFilterScriptInit()
  95. {
  96. print("\n======================================================");
  97. print(" SQLLite Dynamic Admin by Music4You aka Items4Landwirt");
  98. print("======================================================\n");
  99.  
  100. Data = db_open("admin.db");
  101. db_query(Data,"CREATE TABLE IF NOT EXISTS `admin`(`Name`,`Adminlevel`)");
  102. db_query(Data,"CREATE TABLE IF NOT EXISTS `rank`(`arang1`,`arang2`,`arang3`,`arang4`)");
  103. db_query(Data,"CREATE TABLE IF NOT EXISTS `logs`(`Typ`,`Admin`,`Spieler`,`Grund`,`Datum`,`Uhrzeit`)");
  104. db_query(Data,"CREATE TABLE IF NOT EXISTS `bans`(`Name`,`IP`,`BanAdmin`,`Grund`,`banned`,`Datum`,`Uhrzeit`)");
  105. db_query(Data,"CREATE TABLE IF NOT EXISTS `cmds`(`kick`,`ban`,`gotos`,`opensup`,`closesup`,`mute`,`unmute`,`veh`,`restart`,`makeadmin`,`amenus`)");
  106.  
  107. updaterang();
  108.  
  109. return 1;
  110. }
  111.  
  112. public OnFilterScriptExit()
  113. {
  114. return 1;
  115. }
  116.  
  117. public OnPlayerConnect(playerid)
  118. {
  119. new DBResult:Result, str[512];
  120. format(str, sizeof(str), "SELECT * FROM `admin` WHERE Name = '%s'",SpielerName(playerid));
  121. Result = db_query(Data,str);
  122.  
  123. db_get_field_assoc(Result,"Adminlevel",str,sizeof(str));
  124. AdminInfo[playerid][Adminlevel]=strval(str);
  125. db_free_result(Result);
  126. return 1;
  127. }
  128.  
  129. public OnPlayerDisconnect(playerid, reason)
  130. {
  131. return 1;
  132. }
  133. public OnPlayerRequestClass(playerid, classid)
  134. {
  135. new DBResult:Result, str[512],string[512];
  136. format(str, sizeof(str), "SELECT * FROM `bans` WHERE Name = '%s'",SpielerName(playerid));
  137. Result = db_query(Data,str);
  138.  
  139. db_get_field_assoc(Result,"banned",str,sizeof(str));
  140. AdminInfo[playerid][banned]=strval(str);
  141. db_get_field_assoc(Result,"Grund",str,sizeof(str));
  142. format(AdminInfo[playerid][bangrund],MAX_PLAYER_NAME,"%s",str);
  143. db_get_field_assoc(Result,"BanAdmin",str,sizeof(str));
  144. format(AdminInfo[playerid][BanAdmin],MAX_PLAYER_NAME,"%s",str);
  145. db_free_result(Result);
  146.  
  147. if(AdminInfo[playerid][banned]==1)
  148. {
  149. for(new t=0;t<MAX_TEXT_DRAWS;t++)
  150. {
  151. if(t != INVALID_TEXT_DRAW) TextDrawHideForPlayer(playerid,Text:t);
  152. }
  153. for(new t=0;t<MAX_PLAYER_TEXT_DRAWS;t++)
  154. {
  155. if(t != INVALID_TEXT_DRAW) PlayerTextDrawHide(playerid,PlayerText:t);
  156. }
  157. format(string,sizeof(string),"%s, Du wurdest Permanent vom Server Gebannt\nDer Grund des des Admins %s war: %s",SpielerName(playerid),AdminInfo[playerid][BanAdmin],AdminInfo[playerid][bangrund]);
  158. ShowPlayerDialog(playerid,Bangrund,MSG,"Ban",string,"Verlassen","");
  159. Kick(playerid);
  160. }
  161. return 1;
  162. }
  163.  
  164. public OnPlayerText(playerid, text[])
  165. {
  166. if(GetPVarInt(playerid,"Mute")==1)
  167. {
  168. SCM(playerid,rot,"Du bist gemutet!");
  169. }
  170. if(insup[playerid]==true)
  171. {
  172. new string[128];
  173. format(string, sizeof(string),"[%s]: %s", SpielerName(playerid), text);
  174. SCM(supporter,blau,string);
  175. }
  176. if(adinsup[playerid]==true)
  177. {
  178. new string[128];
  179. format(string, sizeof(string),"[Admin %s]: %s", SpielerName(playerid), text);
  180. SCM(frager,blau,string);
  181. }
  182. }
  183. ocmd:a(playerid,params[])
  184. {
  185. new text[128],string[128];
  186. if(!PlayerIsAdmin(playerid,1)) return SCM(playerid,rot,"Du bist nicht Befugt");
  187. if(sscanf(params,"s",text)) return SCM(playerid, grau,"/a [Text]");
  188. format(string,sizeof(string),"Adminchat [%s] [%s]: %s",adminrang(playerid),SpielerName(playerid),text);
  189. SAM(blau,string);
  190. return 1;
  191. }
  192. ocmd:kick(playerid,params[])
  193. {
  194. new pID,string[128],reason[128],query[256];
  195. if(CInfo[ids][kick]<= AdminInfo[playerid][Adminlevel])
  196. {
  197. if(sscanf(params,"us", pID,reason)) return SCM(playerid, grau,"/kick [ID][Grund]");
  198. if(pID == INVALID_PLAYER_ID) return SCM(playerid,rot,"Ungültiger Spieler!");
  199. gettime(stunde,minuten,sekunde);
  200. getdate(jahr,monat,tag);
  201.  
  202.  
  203. format(string,sizeof(string),"[%s] %s hat %s vom Server Gekickt, Grund: %s",adminrang(playerid),AdminInfo[playerid][Adminlevel],SpielerName(playerid),SpielerName(pID),reason);
  204. SCMT(rot,string);
  205.  
  206. format(query,sizeof(query),"INSERT INTO `logs` (`Typ`, `Admin`,`Spieler`,`Grund`,`Uhrzeit`,`Datum`) VALUES ('Kick', '%s','%s','%s','%02d:%02d:%02d','%04d-%02d-%02d')", SpielerName(playerid),SpielerName(pID),reason,stunde,minuten,sekunde,jahr,monat,tag);
  207. db_query(Data,query);
  208.  
  209. Kick(pID);
  210. }
  211. else
  212. {
  213. SCM(playerid,rot,"Du bist nicht Befugt");
  214. }
  215. return 1;
  216. }
  217. ocmd:goto(playerid,params[])
  218. {
  219. new pID,string[128],string2[128],Float:x, Float:y, Float:z;
  220. if(CInfo[ids][gotos]<= AdminInfo[playerid][Adminlevel])
  221. {
  222. if(sscanf(params,"u",pID))return SCM(playerid,grau,"/goto [ID/Name]");
  223. new car = GetPlayerVehicleID(playerid);
  224. GetPlayerPos(pID,x,y,z);
  225. SetPlayerInterior(playerid,GetPlayerInterior(pID));
  226. SetPlayerPos(playerid,x+2,y+2,z+2);
  227. if(IsPlayerInAnyVehicle(playerid))
  228. {
  229. SetVehiclePos(GetPlayerVehicleID(playerid), x+2, y+2, z+2);
  230. PutPlayerInVehicle(playerid,car,0);
  231. }
  232. {
  233. format(string,128,"Du hast dich zu %s teleportiert.",SpielerName(pID));
  234. format(string2,128,"[%s] %s hat sich zu dir teleportiert.",adminrang(playerid),SpielerName(playerid));
  235. SCM(pID,gruen,string2);
  236. SCM(playerid,gruen,string);
  237. }
  238. }
  239. else
  240. {
  241. SCM(playerid,rot,"Du bist nicht Befugt");
  242. }
  243. return 1;
  244. }
  245. ocmd:sup(playerid,params[])
  246. {
  247. if(insup[playerid]==true) return SCM(playerid,rot,"Du hast bereits ein Ticket offen");
  248. ShowPlayerDialog(playerid,report,DIALOG_STYLE_INPUT,"Support","Herzlich Wilkommen im Supportsystem\nGebe nun deine Supportnachricht ein\n\nMissbrauche diese Funktion nicht, es wird bestraft!","Weiter","Abbrechen");
  249. return 1;
  250. }
  251. ocmd:opensup(playerid,params[])
  252. {
  253. new pID,string[128];
  254. if(CInfo[ids][opensup]<= AdminInfo[playerid][Adminlevel])
  255. {
  256. if(sscanf(params,"u",pID)) return SCM(playerid,grau,"/opensup [ID]");
  257. if(pID == INVALID_PLAYER_ID) return SCM(playerid,rot,"Ungültiger Spieler!");
  258. if(sup[pID]==false) return SCM(playerid,rot,"Der Spieler hat kein Supportticket offen");
  259.  
  260. format(string,sizeof(string),"[%s] %s hat dein Support Ticket Geöffnet, du kannst nun freu im Chat schreiben",adminrang(playerid),SpielerName(playerid));
  261. SCM(pID,blau,string);
  262.  
  263. insup[pID]=true;
  264. adinsup[playerid]=true;
  265. sup[pID]=false;
  266. supporter = playerid;
  267. frager = pID;
  268. }
  269. else
  270. {
  271. SCM(playerid,rot,"Du bist nicht Befugt");
  272. }
  273. return 1;
  274. }
  275. ocmd:closesup(playerid,params[])
  276. {
  277. new pID,string[128];
  278. if(CInfo[ids][closesup]<= AdminInfo[playerid][Adminlevel])
  279. {
  280. if(sscanf(params,"u",pID)) return SCM(playerid,grau,"/closesup [ID]");
  281. if(pID == INVALID_PLAYER_ID) return SCM(playerid,rot,"Ungültiger Spieler!");
  282. if(insup[pID]==false) return SCM(playerid,rot,"Der Spieler ist nicht im Support");
  283.  
  284. format(string,sizeof(string),"[%s] %s hat dein Support Ticket Geschlossen",adminrang(playerid),SpielerName(playerid));
  285. SCM(pID,blau,string);
  286.  
  287. insup[pID]=false;
  288. adinsup[playerid]=false;
  289.  
  290. supporter = 0;
  291. frager = 0;
  292. }
  293. else
  294. {
  295. SCM(playerid,rot,"Du bist nicht Befugt");
  296. }
  297. return 1;
  298. }
  299. ocmd:op(playerid,params[])
  300. {
  301. new text[128],string[128];
  302. if(!PlayerIsAdmin(playerid,1)) return SCM(playerid,rot,"Du bist nicht Befugt");
  303. if(sscanf(params,"s",text)) return SCM(playerid, grau,"/op [Text]");
  304. format(string,sizeof(string),"(([%s]%s: %s))",adminrang(playerid),SpielerName(playerid),text);
  305. SCMT(gruen,string);
  306. return 1;
  307. }
  308. ocmd:mute(playerid,params[])
  309. {
  310. new pID,string[128],query[256];
  311. if(CInfo[ids][mute]<= AdminInfo[playerid][Adminlevel])
  312. {
  313. if(sscanf(params,"u",pID))return SCM(playerid,grau,"/mute [Spielername/ID]");
  314. if(pID == INVALID_PLAYER_ID) return SCM(playerid,rot,"Ungültiger Spieler!");
  315. SetPVarInt(pID,"Mute",1);
  316. format(string,sizeof(string),"Du wurdest von [%s] %s gemutet",adminrang(playerid),SpielerName(playerid));
  317. SCM(pID,rot,string);
  318. format(string,sizeof(string),"Du hast erfolgreich User %s gemutet",SpielerName(pID));
  319. SCM(playerid,rot,string);
  320.  
  321. gettime(stunde,minuten,sekunde);
  322. getdate(jahr,monat,tag);
  323.  
  324. format(query,sizeof(query),"INSERT INTO `logs` (`Typ`, `Admin`,`Spieler`,`Grund`,`Uhrzeit`,`Datum`) VALUES ('Mute', '%s','%s','/','%02d:%02d:%02d','%04d-%02d-%02d')", SpielerName(playerid),SpielerName(pID),stunde,minuten,sekunde,jahr,monat,tag);
  325. db_query(Data,query);
  326. }
  327. else
  328. {
  329. SCM(playerid,rot,"Du bist nicht Befugt");
  330. }
  331. return 1;
  332. }
  333. ocmd:unmute(playerid,params[])
  334. {
  335. new pID,string[128];
  336. if(CInfo[ids][unmute]<= AdminInfo[playerid][Adminlevel])
  337. {
  338. if(sscanf(params,"u",pID))return SCM(playerid,grau,"/unmute [Spielername/ID]");
  339. if(!IsPlayerConnected(pID)) return SCM(playerid,rot,"Der Spieler ist nicht online");
  340. SetPVarInt(pID,"Mute",0);
  341. format(string,sizeof(string),"Du wurdest von [%s] %s entmutet",adminrang(playerid),SpielerName(playerid));
  342. SCM(pID,rot,string);
  343. format(string,sizeof(string),"Du hast erfolgreich User %s entmutet",SpielerName(pID));
  344. SCM(playerid,rot,string);
  345. }
  346. else
  347. {
  348. SCM(playerid,rot,"Du bist nicht Befugt");
  349. }
  350. return 1;
  351. }
  352. ocmd:veh(playerid,params[])
  353. {
  354. new ModelID, color[2],Float:VehPos[4], vehicleid;
  355. if(CInfo[ids][veh]<= AdminInfo[playerid][Adminlevel])
  356. {
  357. if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,grau,"Du bist nicht zu Fuss");
  358. if(sscanf(params, "ddd",ModelID,color[0],color[1])) return SendClientMessage(playerid,grau, "/veh [Fahrzeug ID] [Farbe1] [Farbe2]");
  359. if(ModelID < 400 || ModelID > 611) return SendClientMessage(playerid,grau, "Die Fahrzeug Id muss von 400 bis 611 sein");
  360. GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
  361. GetPlayerFacingAngle(playerid, VehPos[3]);
  362. vehicleid = CreateVehicle(ModelID,VehPos[0],VehPos[1],VehPos[2],VehPos[3],color[0],color[1],-1);
  363. LinkVehicleToInterior(vehicleid,GetPlayerInterior(playerid));
  364. SetVehicleVirtualWorld(vehicleid,GetPlayerVirtualWorld(playerid));
  365. PutPlayerInVehicle(playerid, vehicleid, 0);
  366. }
  367. else
  368. {
  369. SCM(playerid,rot,"Du bist nicht Befugt");
  370. }
  371. return 1;
  372. }
  373. ocmd:ban(playerid,params[])
  374. {
  375. new pID,string[128],String[128],reason[128],query[512],Query[512];
  376. if(CInfo[ids][ban]<= AdminInfo[playerid][Adminlevel])
  377. {
  378. if(sscanf(params,"us", pID,reason)) return SCM(playerid, grau,"/ban [ID][Grund]");
  379. if(pID == INVALID_PLAYER_ID) return SCM(playerid,rot,"Ungültiger Spieler!");
  380.  
  381. format(string,sizeof(string),"[%s] %s hat %s vom Server Gebannt, Grund: %s",adminrang(playerid),SpielerName(playerid),SpielerName(pID),reason);
  382. SCMT(rot,string);
  383.  
  384. format(String,sizeof(String),"%s, Du wurdest Permanent vom Server Gebannt\nDer Grund des des Admins %s war: %s",SpielerName(pID),SpielerName(playerid),reason);
  385. ShowPlayerDialog(playerid,Bangrund,MSG,"Ban",String,"Verlassen","");
  386.  
  387.  
  388. gettime(stunde,minuten,sekunde);
  389. getdate(jahr,monat,tag);
  390.  
  391. format(query,sizeof(query),"INSERT INTO `logs` (`Typ`, `Admin`,`Spieler`,`Grund`,`Uhrzeit`,`Datum`) VALUES ('Ban', '%s','%s','%s','%02d:%02d:%02d','%04d-%02d-%02d')", SpielerName(playerid),SpielerName(pID),reason,stunde,minuten,sekunde,jahr,monat,tag);
  392. format(Query,sizeof(Query),"INSERT INTO `bans` (`Name`, `IP`,`BanAdmin`,`Grund`,`banned`) VALUES ('%s','%s','%s','%s','1')", SpielerName(pID),SpielerIP(pID),SpielerName(playerid),reason);
  393. db_query(Data,query);
  394. db_query(Data,Query);
  395.  
  396. Kick(pID);
  397. }
  398. else
  399. {
  400. SCM(playerid,rot,"Du bist nicht Befugt");
  401. }
  402. return 1;
  403. }
  404. ocmd:restart(playerid,params[])
  405. {
  406. new reason[128],string[128],query[128];
  407. if(CInfo[ids][restart]<= AdminInfo[playerid][Adminlevel])
  408. {
  409. if(sscanf(params,"s", reason)) return SCM(playerid, grau,"/restart [Grund]");
  410.  
  411. format(string,sizeof(string),"Der Server wird in 1 Minute Restartet, Grund: %s",reason);
  412. SCMT(rot,string);
  413.  
  414. gettime(stunde,minuten,sekunde);
  415. getdate(jahr,monat,tag);
  416.  
  417. format(query,sizeof(query),"INSERT INTO `logs` (`Typ`, `Admin`,`Spieler`,`Grund`,`Uhrzeit`,`Datum`) VALUES ('Restart', '%s','/','%s','%02d:%02d:%02d','%04d-%02d-%02d')", SpielerName(playerid),reason,stunde,minuten,sekunde,jahr,monat,tag);
  418. db_query(Data,query);
  419.  
  420. SetTimer("gmx",60000,false);
  421. }
  422. else
  423. {
  424. SCM(playerid,rot,"Du bist nicht Befugt");
  425. }
  426. return 1;
  427. }
  428. ocmd:makeadmin(playerid,params[])
  429. {
  430. new pID,level,string[128],strings[128],query[128],Query[128];
  431. if(CInfo[ids][makeadmin]<= AdminInfo[playerid][Adminlevel])
  432. {
  433. if(sscanf(params,"ud", pID, level)) return SCM(playerid, grau,"/setadmin [ID] [Level]");
  434. if(pID == INVALID_PLAYER_ID) return SCM(playerid,rot,"Ungültiger Spieler!");
  435.  
  436. AdminInfo[pID][Adminlevel] = level;
  437. format(string,sizeof(string),"[%s] %s hat dir das Adminlevel %d gegeben",adminrang(playerid),SpielerName(playerid),level);
  438. SCM(pID,gruen,string);
  439. format(strings,sizeof(strings),"du hast %s das Adminlevel %d gegeben",SpielerName(pID),level);
  440. SCM(playerid,gruen,strings);
  441.  
  442. format(query, sizeof(query), "UPDATE `admin` SET Adminlevel = '%d' WHERE Name = '%s'", level, SpielerName(playerid));
  443. db_query(Data,query);
  444.  
  445. AdminInfo[pID][Adminlevel] = level;
  446. format(string,sizeof(string),"[%s] %s hat dir das Adminlevel %d gegeben",adminrang(playerid),SpielerName(playerid),level);
  447. SCM(pID,gruen,string);
  448. format(strings,sizeof(strings),"du hast %s das Adminlevel %d gegeben",SpielerName(pID),level);
  449. SCM(playerid,gruen,strings);
  450.  
  451.  
  452. gettime(stunde,minuten,sekunde);
  453. getdate(jahr,monat,tag);
  454.  
  455. format(Query,sizeof(Query),"INSERT INTO `logs` (`Typ`, `Admin`,`Spieler`,`Grund`,`Uhrzeit`,`Datum`) VALUES ('Makeadmin', '%s','%s','/','%02d:%02d:%02d','%04d-%02d-%02d')", SpielerName(playerid),SpielerName(pID),stunde,minuten,sekunde,jahr,monat,tag);
  456. db_query(Data,Query);
  457. }
  458. else
  459. {
  460. SCM(playerid,rot,"Du bist nicht Befugt");
  461. }
  462. return 1;
  463. }
  464. ocmd:amenu(playerid,params[])
  465. {
  466. if(CInfo[ids][amenus]<= AdminInfo[playerid][Adminlevel])
  467. {
  468. ShowPlayerDialog(playerid,amenu,LIST,"Adminmenu","Adminränge\nAdminbefehle","Auswählen","Abbrechen");
  469. }
  470. else
  471. {
  472. SCM(playerid,rot,"Du bist nicht Befugt");
  473. }
  474. return 1;
  475. }
  476.  
  477.  
  478. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  479. {
  480. switch(dialogid)
  481. {
  482. case report:
  483. {
  484. if(response)
  485. {
  486. if(!strlen(inputtext)) return 1;
  487. new string[128];
  488. format(string,sizeof(string),"[SUPPORT] Spieler: %s, Frage: %s",SpielerName(playerid),inputtext);
  489. SAM(gruen,string);
  490. SCM(playerid,gruen,"Deine Supportanfrage ist nun an alle Admins gegangen, habe etwas Gedult");
  491. sup[playerid]=true;
  492. }
  493. }
  494. case amenu:
  495. {
  496. if(response)
  497. {
  498. switch(listitem)
  499. {
  500. case 0:
  501. {
  502. new string[400],id;
  503. format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s",arang1[id],arang2[id],arang3[id],arang4[id]);
  504. ShowPlayerDialog(playerid,rang,LIST,"Rangmenu",string,"Auswählen","Abbrechen");
  505. }
  506. case 1:
  507. {
  508. new string[500];
  509. format(string,sizeof(string),"Kick: %d\nBan: %d\nopensup: %d\nclosesup: %d\nmute: %d\nunmute: %d\nveh: %d\nrestart: %d\nmakeadmin: %d\ngoto: %d\namenu: %d",
  510. CInfo[ids][kick],CInfo[ids][ban],CInfo[ids][opensup],CInfo[ids][closesup],CInfo[ids][mute],CInfo[ids][unmute],CInfo[ids][veh],CInfo[ids][restart],CInfo[ids][makeadmin],CInfo[ids][gotos],CInfo[ids][amenus]);
  511. ShowPlayerDialog(playerid,cmdlist,LIST,"Admin CMD List",string,"Auswählen","Abbrechen");
  512. }
  513. }
  514. }
  515. }
  516. case cmdlist:
  517. {
  518. if(response)
  519. {
  520. switch(listitem)
  521. {
  522. case 0:
  523. {
  524. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Kick Command ein","Weiter","Abbrechen");
  525. adcmd[playerid]=1;
  526. }
  527. case 1:
  528. {
  529. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Ban Command ein","Weiter","Abbrechen");
  530. adcmd[playerid]=2;
  531. }
  532. case 2:
  533. {
  534. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Opensup Command ein","Weiter","Abbrechen");
  535. adcmd[playerid]=3;
  536. }
  537. case 3:
  538. {
  539. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Closesup Command ein","Weiter","Abbrechen");
  540. adcmd[playerid]=4;
  541. }
  542. case 4:
  543. {
  544. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Mute Command ein","Weiter","Abbrechen");
  545. adcmd[playerid]=5;
  546. }
  547. case 5:
  548. {
  549. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den UnMute Command ein","Weiter","Abbrechen");
  550. adcmd[playerid]=6;
  551. }
  552. case 6:
  553. {
  554. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Veh Command ein","Weiter","Abbrechen");
  555. adcmd[playerid]=7;
  556. }
  557. case 7:
  558. {
  559. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Restart Command ein","Weiter","Abbrechen");
  560. adcmd[playerid]=8;
  561. }
  562. case 8:
  563. {
  564. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Makeadmin Command ein","Weiter","Abbrechen");
  565. adcmd[playerid]=9;
  566. }
  567. case 9:
  568. {
  569. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Goto Command ein","Weiter","Abbrechen");
  570. adcmd[playerid]=10;
  571. }
  572. case 10:
  573. {
  574. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Amenu Command ein","Weiter","Abbrechen");
  575. adcmd[playerid]=11;
  576. }
  577. case 11:
  578. {
  579. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Catm Command ein","Weiter","Abbrechen");
  580. adcmd[playerid]=12;
  581. }
  582. case 12:
  583. {
  584. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Delatm Command ein","Weiter","Abbrechen");
  585. adcmd[playerid]=13;
  586. }
  587. case 13:
  588. {
  589. ShowPlayerDialog(playerid,adeingabe,INPUT,"CMD Rang","Nun das benötigte Adminlevel (1-4) für den Delallatm Command ein","Weiter","Abbrechen");
  590. adcmd[playerid]=14;
  591. }
  592. }
  593. }
  594. }
  595. case adeingabe:
  596. {
  597. if(response)
  598. {
  599. new query[256],string[128];
  600. if(adcmd[playerid]==1)
  601. {
  602. format(query, sizeof(query), "UPDATE `cmds` SET kick = '%s'",inputtext);
  603. format(string, sizeof(string), "Du hast den Kick Command auf Adminlevel %s gesetzt",inputtext);
  604. db_query(Data,query);
  605. SCM(playerid,gruen,string);
  606. adcmd[playerid]=0;
  607. }
  608. else if(adcmd[playerid]==2)
  609. {
  610. format(query, sizeof(query), "UPDATE `cmds` SET ban = '%s'",inputtext);
  611. format(string, sizeof(string), "Du hast den Ban Command auf Adminlevel %s gesetzt",inputtext);
  612. db_query(Data,query);
  613. SCM(playerid,gruen,string);
  614. adcmd[playerid]=0;
  615. }
  616. else if(adcmd[playerid]==3)
  617. {
  618. format(query, sizeof(query), "UPDATE `cmds` SET opensup = '%s'",inputtext);
  619. format(string, sizeof(string), "Du hast den Opensup Command auf Adminlevel %s gesetzt",inputtext);
  620. db_query(Data,query);
  621. SCM(playerid,gruen,string);
  622. adcmd[playerid]=0;
  623. }
  624. else if(adcmd[playerid]==4)
  625. {
  626. format(query, sizeof(query), "UPDATE `cmds` SET closesup = '%s'",inputtext);
  627. format(string, sizeof(string), "Du hast den Closesup Command auf Adminlevel %s gesetzt",inputtext);
  628. db_query(Data,query);
  629. SCM(playerid,gruen,string);
  630. adcmd[playerid]=0;
  631. }
  632. else if(adcmd[playerid]==5)
  633. {
  634. format(query, sizeof(query), "UPDATE `cmds` SET mute = '%s'",inputtext);
  635. format(string, sizeof(string), "Du hast den Mute Command auf Adminlevel %s gesetzt",inputtext);
  636. db_query(Data,query);
  637. SCM(playerid,gruen,string);
  638. adcmd[playerid]=0;
  639. }
  640. else if(adcmd[playerid]==6)
  641. {
  642. format(query, sizeof(query), "UPDATE `cmds` SET unmute = '%s'",inputtext);
  643. format(string, sizeof(string), "Du hast den UnMute Command auf Adminlevel %s gesetzt",inputtext);
  644. db_query(Data,query);
  645. SCM(playerid,gruen,string);
  646. adcmd[playerid]=0;
  647. }
  648. else if(adcmd[playerid]==7)
  649. {
  650. format(query, sizeof(query), "UPDATE `cmds` SET veh = '%s'",inputtext);
  651. format(string, sizeof(string), "Du hast den Veh Command auf Adminlevel %s gesetzt",inputtext);
  652. db_query(Data,query);
  653. SCM(playerid,gruen,string);
  654. adcmd[playerid]=0;
  655. }
  656. else if(adcmd[playerid]==8)
  657. {
  658. format(query, sizeof(query), "UPDATE `cmds` SET restart = '%s'",inputtext);
  659. format(string, sizeof(string), "Du hast den Restart Command auf Adminlevel %s gesetzt",inputtext);
  660. db_query(Data,query);
  661. SCM(playerid,gruen,string);
  662. adcmd[playerid]=0;
  663. }
  664. else if(adcmd[playerid]==9)
  665. {
  666. format(query, sizeof(query), "UPDATE `cmds` SET makeadmin = '%s'",inputtext);
  667. format(string, sizeof(string), "Du hast den Makeadmin Command auf Adminlevel %s gesetzt",inputtext);
  668. db_query(Data,query);
  669. SCM(playerid,gruen,string);
  670. adcmd[playerid]=0;
  671. }
  672. else if(adcmd[playerid]==10)
  673. {
  674. format(query, sizeof(query), "UPDATE `cmds` SET gotos = '%s'",inputtext);
  675. format(string, sizeof(string), "Du hast den Goto Command auf Adminlevel %s gesetzt",inputtext);
  676. db_query(Data,query);
  677. SCM(playerid,gruen,string);
  678. adcmd[playerid]=0;
  679. }
  680. else if(adcmd[playerid]==11)
  681. {
  682. format(query, sizeof(query), "UPDATE `cmds` SET amenus = '%s'",inputtext);
  683. format(string, sizeof(string), "Du hast den Amenu Command auf Adminlevel %s gesetzt",inputtext);
  684. db_query(Data,query);
  685. SCM(playerid,gruen,string);
  686. adcmd[playerid]=0;
  687. }
  688. else if(adcmd[playerid]==12)
  689. {
  690. format(query, sizeof(query), "UPDATE `cmds` SET catm = '%s'",inputtext);
  691. format(string, sizeof(string), "Du hast den Catm Command auf Adminlevel %s gesetzt",inputtext);
  692. db_query(Data,query);
  693. SCM(playerid,gruen,string);
  694. adcmd[playerid]=0;
  695. }
  696. else if(adcmd[playerid]==13)
  697. {
  698. format(query, sizeof(query), "UPDATE `cmds` SET delatm = '%s'",inputtext);
  699. format(string, sizeof(string), "Du hast den Delatm Command auf Adminlevel %s gesetzt",inputtext);
  700. db_query(Data,query);
  701. SCM(playerid,gruen,string);
  702. adcmd[playerid]=0;
  703. }
  704. else if(adcmd[playerid]==14)
  705. {
  706. format(query, sizeof(query), "UPDATE `cmds` SET delallatm = '%s'",inputtext);
  707. format(string, sizeof(string), "Du hast den Delallatm Command auf Adminlevel %s gesetzt",inputtext);
  708. db_query(Data,query);
  709. SCM(playerid,gruen,string);
  710. adcmd[playerid]=0;
  711. }
  712. updatecmdlist();
  713. }
  714. }
  715. case rang:
  716. {
  717. if(response)
  718. {
  719. switch(listitem)
  720. {
  721. case 0:
  722. {
  723. ShowPlayerDialog(playerid,eingabe,INPUT,"Rangeingabe","Gebe nun den Namen für den Adminrang 1 ein","Weiter","Abbrechen");
  724. arang[playerid]=1;
  725. }
  726. case 1:
  727. {
  728. ShowPlayerDialog(playerid,eingabe,INPUT,"Rangeingabe","Gebe nun den Namen für den Adminrang 2 ein","Weiter","Abbrechen");
  729. arang[playerid]=2;
  730. }
  731. case 2:
  732. {
  733. ShowPlayerDialog(playerid,eingabe,INPUT,"Rangeingabe","Gebe nun den Namen für den Adminrang 3 ein","Weiter","Abbrechen");
  734. arang[playerid]=3;
  735. }
  736. case 3:
  737. {
  738. ShowPlayerDialog(playerid,eingabe,INPUT,"Rangeingabe","Gebe nun den Namen für den Adminrang 4 ein","Weiter","Abbrechen");
  739. arang[playerid]=4;
  740. }
  741. }
  742. }
  743. }
  744. case eingabe:
  745. {
  746. if(response)
  747. {
  748. new query[256],string[128];
  749. if(arang[playerid]==1)
  750. {
  751. format(query, sizeof(query), "UPDATE `rank` SET arang1 = '%s'",inputtext);
  752. format(string, sizeof(string), "Du hast den Adminrang 1 in %s umbenannt'",inputtext);
  753. db_query(Data,query);
  754. SCM(playerid,gruen,string);
  755. arang[playerid]=0;
  756. }
  757. else if(arang[playerid]==2)
  758. {
  759. format(query, sizeof(query), "UPDATE `rank` SET arang2 = '%s'",inputtext);
  760. format(string, sizeof(string), "Du hast den Adminrang 2 in %s umbenannt'",inputtext);
  761. db_query(Data,query);
  762. SCM(playerid,gruen,string);
  763. arang[playerid]=0;
  764. }
  765. else if(arang[playerid]==3)
  766. {
  767. format(query, sizeof(query), "UPDATE `rank` SET arang3 = '%s'",inputtext);
  768. format(string, sizeof(string), "Du hast den Adminrang 3 in %s umbenannt'",inputtext);
  769. db_query(Data,query);
  770. SCM(playerid,gruen,string);
  771. arang[playerid]=0;
  772. }
  773. else if(arang[playerid]==4)
  774. {
  775. format(query, sizeof(query), "UPDATE `rank` SET arang4 = '%s'",inputtext);
  776. format(string, sizeof(string), "Du hast den Adminrang 4 in %s umbenannt'",inputtext);
  777. db_query(Data,query);
  778. SCM(playerid,gruen,string);
  779. arang[playerid]=0;
  780. }
  781. updaterang();
  782. }
  783. }
  784. }
  785. return 0;
  786. }
  787.  
  788. stock SpielerName(playerid)
  789. {
  790. new name[MAX_PLAYER_NAME];
  791. GetPlayerName(playerid,name,sizeof(name));
  792. return name;
  793. }
  794. stock PlayerIsAdmin(playerid,level)
  795. {
  796. if(AdminInfo[playerid][Adminlevel] >= level) return 1;
  797. return 0;
  798. }
  799. stock SpielerIP(playerid)
  800. {
  801. new getip[16];
  802. GetPlayerIp(playerid,getip,sizeof(getip));
  803. return getip;
  804. }
  805. stock SAM(farbe,text[])
  806. {
  807. for(new i=0;i<MAX_PLAYERS;i++)
  808. {
  809. if(AdminInfo[i][Adminlevel]>=1)
  810. {
  811. SCM(i,farbe,text);
  812. return 1;
  813. }
  814. }
  815. return 1;
  816. }
  817. stock updaterang()
  818. {
  819. new DBResult:Result, str[512],id=0;
  820. format(str, sizeof(str), "SELECT * FROM `rank`");
  821. Result = db_query(Data,str);
  822.  
  823. db_get_field_assoc(Result,"arang1",str,sizeof(str));
  824. format(arang1[id],21,"%s",str);
  825. db_get_field_assoc(Result,"arang2",str,sizeof(str));
  826. format(arang2[id],21,"%s",str);
  827. db_get_field_assoc(Result,"arang3",str,sizeof(str));
  828. format(arang3[id],21,"%s",str);
  829. db_get_field_assoc(Result,"arang4",str,sizeof(str));
  830. format(arang4[id],21,"%s",str);
  831. }
  832. stock updatecmdlist()
  833. {
  834. new DBResult:Result, str[1000];
  835. format(str, sizeof(str), "SELECT * FROM `cmds`");
  836. Result = db_query(Data,str);
  837.  
  838. db_get_field_assoc(Result,"kick",str,sizeof(str));
  839. CInfo[ids][kick]=strval(str);
  840. db_get_field_assoc(Result,"ban",str,sizeof(str));
  841. CInfo[ids][ban]=strval(str);
  842. db_get_field_assoc(Result,"gotos",str,sizeof(str));
  843. CInfo[ids][gotos]=strval(str);
  844. db_get_field_assoc(Result,"opensup",str,sizeof(str));
  845. CInfo[ids][opensup]=strval(str);
  846. db_get_field_assoc(Result,"closesup",str,sizeof(str));
  847. CInfo[ids][closesup]=strval(str);
  848. db_get_field_assoc(Result,"mute",str,sizeof(str));
  849. CInfo[ids][mute]=strval(str);
  850. db_get_field_assoc(Result,"unmute",str,sizeof(str));
  851. CInfo[ids][unmute]=strval(str);
  852. db_get_field_assoc(Result,"veh",str,sizeof(str));
  853. CInfo[ids][veh]=strval(str);
  854. db_get_field_assoc(Result,"restart",str,sizeof(str));
  855. CInfo[ids][restart]=strval(str);
  856. db_get_field_assoc(Result,"makeadmin",str,sizeof(str));
  857. CInfo[ids][makeadmin]=strval(str);
  858. db_get_field_assoc(Result,"amenus",str,sizeof(str));
  859. CInfo[ids][amenus]=strval(str);
  860. db_free_result(Result);
  861. }
  862. stock adminrang(playerid)
  863. {
  864. new adminr[50],id;
  865. if (AdminInfo[playerid][Adminlevel] == 1) adminr = (arang1[id]);
  866. if (AdminInfo[playerid][Adminlevel] == 2) adminr = (arang2[id]);
  867. if (AdminInfo[playerid][Adminlevel] == 3) adminr = (arang3[id]);
  868. if (AdminInfo[playerid][Adminlevel] == 4) adminr = (arang4[id]);
  869. return adminr;
  870. }
  871.  
  872. forward gmx();
  873. public gmx()
  874. {
  875. SendRconCommand("gmx");
  876. }
  877.  
  878. stock sscanf(string[], format[], {Float,_}:...)
  879. {
  880. #if defined isnull
  881. if (isnull(string))
  882. #else
  883. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  884. #endif
  885. {
  886. return format[0];
  887. }
  888. #pragma tabsize 4
  889. new
  890. formatPos = 0,
  891. stringPos = 0,
  892. paramPos = 2,
  893. paramCount = numargs(),
  894. delim = ' ';
  895. while (string[stringPos] && string[stringPos] <= ' ')
  896. {
  897. stringPos++;
  898. }
  899. while (paramPos < paramCount && string[stringPos])
  900. {
  901. switch (format[formatPos++])
  902. {
  903. case '\0':
  904. {
  905. return 0;
  906. }
  907. case 'i', 'd':
  908. {
  909. new
  910. neg = 1,
  911. num = 0,
  912. ch = string[stringPos];
  913. if (ch == '-')
  914. {
  915. neg = -1;
  916. ch = string[++stringPos];
  917. }
  918. do
  919. {
  920. stringPos++;
  921. if ('0' <= ch <= '9')
  922. {
  923. num = (num * 10) + (ch - '0');
  924. }
  925. else
  926. {
  927. return -1;
  928. }
  929. }
  930. while ((ch = string[stringPos]) > ' ' && ch != delim);
  931. setarg(paramPos, 0, num * neg);
  932. }
  933. case 'h', 'x':
  934. {
  935. new
  936. num = 0,
  937. ch = string[stringPos];
  938. do
  939. {
  940. stringPos++;
  941. switch (ch)
  942. {
  943. case 'x', 'X':
  944. {
  945. num = 0;
  946. continue;
  947. }
  948. case '0' .. '9':
  949. {
  950. num = (num << 4) | (ch - '0');
  951. }
  952. case 'a' .. 'f':
  953. {
  954. num = (num << 4) | (ch - ('a' - 10));
  955. }
  956. case 'A' .. 'F':
  957. {
  958. num = (num << 4) | (ch - ('A' - 10));
  959. }
  960. default:
  961. {
  962. return -1;
  963. }
  964. }
  965. }
  966. while ((ch = string[stringPos]) > ' ' && ch != delim);
  967. setarg(paramPos, 0, num);
  968. }
  969. case 'c':
  970. {
  971. setarg(paramPos, 0, string[stringPos++]);
  972. }
  973. case 'f':
  974. {
  975.  
  976. new changestr[16], changepos = 0, strpos = stringPos;
  977. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  978. {
  979. changestr[changepos++] = string[strpos++];
  980. }
  981. changestr[changepos] = '\0';
  982. setarg(paramPos,0,_:floatstr(changestr));
  983. }
  984. case 'p':
  985. {
  986. delim = format[formatPos++];
  987. continue;
  988. }
  989. case '\'':
  990. {
  991. new
  992. end = formatPos - 1,
  993. ch;
  994. while ((ch = format[++end]) && ch != '\'') {}
  995. if (!ch)
  996. {
  997. return -1;
  998. }
  999. format[end] = '\0';
  1000. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1001. {
  1002. if (format[end + 1])
  1003. {
  1004. return -1;
  1005. }
  1006. return 0;
  1007. }
  1008. format[end] = '\'';
  1009. stringPos = ch + (end - formatPos);
  1010. formatPos = end + 1;
  1011. }
  1012. case 'u':
  1013. {
  1014. new
  1015. end = stringPos - 1,
  1016. id = 0,
  1017. bool:num = true,
  1018. ch;
  1019. while ((ch = string[++end]) && ch != delim)
  1020. {
  1021. if (num)
  1022. {
  1023. if ('0' <= ch <= '9')
  1024. {
  1025. id = (id * 10) + (ch - '0');
  1026. }
  1027. else
  1028. {
  1029. num = false;
  1030. }
  1031. }
  1032. }
  1033. if (num && IsPlayerConnected(id))
  1034. {
  1035. setarg(paramPos, 0, id);
  1036. }
  1037. else
  1038. {
  1039. #if !defined foreach
  1040. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1041. #define __SSCANF_FOREACH__
  1042. #endif
  1043. string[end] = '\0';
  1044. num = false;
  1045. new
  1046. name[MAX_PLAYER_NAME];
  1047. id = end - stringPos;
  1048. foreach (Player, playerid)
  1049. {
  1050. GetPlayerName(playerid, name, sizeof (name));
  1051. if (!strcmp(name, string[stringPos], true, id))
  1052. {
  1053. setarg(paramPos, 0, playerid);
  1054. num = true;
  1055. break;
  1056. }
  1057. }
  1058. if (!num)
  1059. {
  1060. setarg(paramPos, 0, INVALID_PLAYER_ID);
  1061. }
  1062. string[end] = ch;
  1063. #if defined __SSCANF_FOREACH__
  1064. #undef foreach
  1065. #undef __SSCANF_FOREACH__
  1066. #endif
  1067. }
  1068. stringPos = end;
  1069. }
  1070. case 's', 'z':
  1071. {
  1072. new
  1073. i = 0,
  1074. ch;
  1075. if (format[formatPos])
  1076. {
  1077. while ((ch = string[stringPos++]) && ch != delim)
  1078. {
  1079. setarg(paramPos, i++, ch);
  1080. }
  1081. if (!i)
  1082. {
  1083. return -1;
  1084. }
  1085. }
  1086. else
  1087. {
  1088. while ((ch = string[stringPos++]))
  1089. {
  1090. setarg(paramPos, i++, ch);
  1091. }
  1092. }
  1093. stringPos--;
  1094. setarg(paramPos, i, '\0');
  1095. }
  1096. default:
  1097. {
  1098. continue;
  1099. }
  1100. }
  1101. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1102. {
  1103. stringPos++;
  1104. }
  1105. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1106. {
  1107. stringPos++;
  1108. }
  1109. paramPos++;
  1110. }
  1111. do
  1112. {
  1113. if ((delim = format[formatPos++]) > ' ')
  1114. {
  1115. if (delim == '\'')
  1116. {
  1117. while ((delim = format[formatPos++]) && delim != '\'') {}
  1118. }
  1119. else if (delim != 'z')
  1120. {
  1121. return delim;
  1122. }
  1123. }
  1124. }
  1125. while (delim > ' ');
  1126. return 0;
  1127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement