Advertisement
didimk

Sistema de Administração by:didimk

Jan 21st, 2017
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.71 KB | None | 0 0
  1. #include <a_samp>
  2. #include <dof2>
  3. #include <zcmd>
  4. #include <sscanf2>
  5.  
  6. native gpci (playerid, Serial [], len);
  7.  
  8. #define PASTA_BANIDOS "Banidos/%s.txt"
  9. #define CONTAS "Contas/%s.ini"
  10. #define SCM SendClientMessage
  11. #define scm SendClientMessage
  12. #define scmt SendClientMessageToAll
  13. #define DialogNoResponse 8266
  14. #define ServerAtt "hostname Zombie Apocalypse SA:MP [0.3.7]"
  15. #define KickP(%0) SetTimerEx("KickPlayer", 500, false, "i", %0)
  16. //=======CORES=================
  17. #define COLOR_WHITE 0xFFFFFFFF
  18. #define COLOR_RED 0xAA3333AA
  19. #define COLOR_PM 0xDFDF00FF
  20. #define COLOR_LIGHTRED 0xFF6347AA
  21. #define Amarelo 0xFFFF00AA
  22. #define Vermelho 0xFF0000AA
  23. #define Neutra 0x92A3AFFF
  24. #define Error 0xFF0000FF
  25.  
  26. enum Informacoes
  27. {
  28. Admin,
  29. Matou,
  30. Score,
  31. Avisos,
  32. bool:Spectando,
  33. Morreu,
  34. Dinheiro
  35. }
  36.  
  37. new Player[MAX_PLAYERS][Informacoes];
  38. new pInfo[MAX_PLAYERS][Informacoes];
  39.  
  40. #if defined FILTERSCRIPT
  41.  
  42. public OnFilterScriptInit()
  43. {
  44. print("\n--------------------------------------");
  45. print(" Admin system by: didimk157");
  46. print("--------------------------------------\n");
  47. return 1;
  48. }
  49.  
  50. public OnFilterScriptExit()
  51. {
  52. return 1;
  53. }
  54.  
  55. #else
  56.  
  57. main()
  58. {
  59. print("\n----------------------------------");
  60. print(" Admin system by: didimk157");
  61. print("----------------------------------\n");
  62. }
  63.  
  64. #endif
  65.  
  66. public OnPlayerConnect(playerid)
  67. {
  68. return 1;
  69. }
  70.  
  71. public OnPlayerDisconnect(playerid, reason)
  72. {
  73. return 1;
  74. }
  75.  
  76. public OnPlayerSpawn(playerid)
  77. {
  78. return 1;
  79. }
  80.  
  81. public OnPlayerDeath(playerid, killerid, reason)
  82. {
  83. return 1;
  84. }
  85.  
  86. public OnVehicleSpawn(vehicleid)
  87. {
  88. return 1;
  89. }
  90.  
  91. public OnVehicleDeath(vehicleid, killerid)
  92. {
  93. return 1;
  94. }
  95.  
  96. public OnPlayerText(playerid, text[])
  97. {
  98. return 1;
  99. }
  100.  
  101. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
  102. {
  103. static Name[24];
  104. GetPlayerName(playerid,Name,24);
  105. printf("[COMANDOS]: Player %s Digitou | Comando: %s",Name,cmdtext);
  106. if (!success)
  107. return SendClientMessage(playerid,-1,"Comando executado não existe.");
  108. return 1;
  109. }
  110. //==============================================================================
  111. //==============================================================================
  112. //==============================================================================
  113. //==============================================================================
  114. //==============================ADMINS CMDS=====================================
  115. //==============================================================================
  116. //==============================================================================
  117. //==============================================================================
  118. //==============================================================================
  119. //==============================================================================
  120. CMD:espiar(playerid, params[])
  121. {
  122. if(pInfo[playerid][Admin]>=1)
  123. {
  124. if(sscanf(params,"u", params[0])) return SendClientMessage(playerid, -1, "[SERVER]: Use: /espiar [Player ID]");
  125. if(params[0] == playerid) return SendClientMessage(playerid, -1, "[SERVER]: Você não pode utilizar o comando em sí mesmo.");
  126. if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "[SERVER]: Jogador offline");
  127. TogglePlayerSpectating(playerid, 1);
  128. if(IsPlayerInAnyVehicle(params[0])) PlayerSpectateVehicle(playerid, params[0]);
  129. else PlayerSpectatePlayer(playerid, params[0]);
  130. SetPlayerInterior(playerid, GetPlayerInterior(params[0]));
  131. SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0]));
  132. SendClientMessage(playerid, -1, "[SERVER]: Para terminar de espiar Use: /pespiar");
  133. pInfo[playerid][Spectando] = true;
  134. }
  135. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  136. return 1;
  137. }
  138.  
  139. CMD:pespiar(playerid)
  140. {
  141. if(pInfo[playerid][Admin]>=1)
  142. {
  143. if(pInfo[playerid][Spectando] == false) return SendClientMessage(playerid, -1, "[SERVER]: Você não está espiando nenhum jogador!");
  144. pInfo[playerid][Spectando] = false;
  145. TogglePlayerSpectating(playerid, 0);
  146. SetPlayerInterior(playerid, 0);
  147. SetPlayerVirtualWorld(playerid, 0);
  148. }
  149. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  150. return 1;
  151. }
  152.  
  153. CMD:cban(playerid, params[])
  154. {
  155. new plid;
  156. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho,"[x] Você não tem permissão!");
  157. if(sscanf(params, "d", plid)) return SendClientMessage(playerid, Vermelho, "[x] Digite: /cban [id]");
  158. if(!IsPlayerConnected(plid)) return SendClientMessage(playerid, Vermelho, "[x] Este player não está conectado!");
  159. BanSerial(plid);
  160. SendClientMessage(plid, Vermelho,"Flw formata o pc e volta ótario");
  161. Ban(plid);
  162. return 1;
  163. }
  164.  
  165. CMD:daradmin(playerid, params[])
  166. {
  167. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Logue-se na RCON.");
  168. new pid, alevel, str[128];
  169. if(sscanf(params,"ui", pid, alevel)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /daradmin [ID] [level]");
  170. {
  171. if((alevel<=5)&&(alevel>=0))
  172. {
  173. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Jogador não conectado.");
  174. format(str, sizeof(str), "Você deu a %s level %i Admin!", PlayerName(pid), alevel);
  175. SendClientMessage(playerid, COLOR_RED, str);
  176. format(str, sizeof(str), "Você recebeu level %i admin.!", alevel);
  177. SendClientMessage(pid, COLOR_RED, str);
  178. pInfo[pid][Admin] = alevel;
  179. DOF2_SetInt(Contas(playerid), "Admin", Player[playerid][Admin]);
  180. }
  181. else SendClientMessage(playerid, COLOR_WHITE, "Nível inválido tente novamente 1-5");
  182. }
  183. return 1;
  184. }
  185.  
  186. CMD:avisar(playerid, params[])
  187. {
  188. new pid;
  189. new str[128];
  190. new reason;
  191. if(sscanf(params, "us", pid, reason)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /Avisar [ID] [Motivo]");
  192. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Jogador não conectado.");
  193. if(pInfo[playerid][Admin]>=1)
  194. {
  195. if(pInfo[pid][Admin]>=pInfo[playerid][Admin]) return SendClientMessage(playerid, COLOR_WHITE, "O jogador tem um rank admin maior que o seu!");
  196. if(pInfo[pid][Avisos]>=4)
  197. {
  198. pInfo[pid][Avisos]++;
  199. //pInfo[pid][pBanned]++;
  200. SetBanPlayer(playerid, 3 , "Limite de Avisos");
  201. format(str, sizeof(str), "ADMCMD: %s foi avisado por %s. Motivo: %s", PlayerName(pid), PlayerName(playerid), reason);
  202. SendClientMessageToAll(COLOR_RED, str);
  203. format(str, sizeof(str), "AUTO-BAN: %s foi banido automaticamente. Motivo: muitas advertências.", PlayerName(pid));
  204. SendClientMessageToAll(COLOR_RED, str);
  205. Kick(pid);
  206. }
  207. else
  208. {
  209. pInfo[pid][Avisos]++;
  210. format(str, sizeof(str), "ADMCMD: %s foi avisado por %s. Motivo: %s", PlayerName(pid), PlayerName(playerid), reason);
  211. SendClientMessageToAll(COLOR_RED, str);
  212. }
  213. }
  214. return 1;
  215. }
  216.  
  217. CMD:kick(playerid, params[])
  218. {
  219. new pid;
  220. new str[128];
  221. new reason;
  222. if(sscanf(params,"us", pid, reason)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [Player ID] [Reason]");
  223. if (pInfo[playerid][Admin]>=1)
  224. {
  225. if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, COLOR_RED, "Jogador não conectado.");
  226. if(pInfo[playerid][Admin]<=pInfo[pid][Admin]) return SendClientMessage(playerid, COLOR_RED, "O jogador tem um rank admin maior que o seu!");
  227. format(str, sizeof(str), "Você expulsou %s. Motivo: %s", PlayerName(pid), reason);
  228. SendClientMessage(playerid, COLOR_RED, str);
  229. format(str, sizeof(str), "%s Foi expulso por %s. Motivo: %s", PlayerName(pid), PlayerName(playerid), reason);
  230. SendClientMessage(playerid, COLOR_RED, str);
  231. Kick(playerid);
  232. }
  233. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVIDOR: Você deve ser um administrador para usar esse comando!");
  234. return 1;
  235. }
  236.  
  237. CMD:kickall(playerid, params[])
  238. {
  239. if (pInfo[playerid][Admin]==5)
  240. {
  241. SendRconCommand(ServerAtt);
  242. for(new i; i < MAX_PLAYERS; i++)
  243. Kick(i);
  244. }
  245.  
  246. return 1;
  247. }
  248.  
  249. CMD:tapa(playerid, params[])
  250. {
  251. if(pInfo[playerid][Admin]>=2)
  252. {
  253. new Players, string[128], name[24],reason[128];
  254. GetPlayerName(playerid, name, sizeof(name));
  255. if(sscanf(params, "us", Players, reason)) return SendClientMessage(playerid, Error, "SERVER: /tapa [playerid] [razão]");
  256. if(Players == INVALID_PLAYER_ID) return SendClientMessage(playerid, Error, "ERROR: Jogador não Conectado.");
  257. new Float:X, Float:Y, Float:Z;
  258. GetPlayerPos(Players, X, Y, Z);
  259. SetPlayerPos(Players, X, Y, Z+9);
  260. format(string, sizeof(string), "SERVER: %s: {FFFFFF}%s(%d) {d42525}deu um tapa em você. (Razão: {FFFFFF}%s{d42525} )", GetAdminName(playerid), name, playerid, reason);
  261. SendClientMessage(Players,Error,string);
  262. }
  263. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  264. return 1;
  265. }
  266.  
  267. CMD:ir(playerid, params[])
  268. {
  269. if(pInfo[playerid][Admin]>=2)
  270. {
  271. new id = strval(params);
  272. if(id == playerid) return SendClientMessage(playerid, 0xFF0000AA, "Você não pode ir em sí mesmo !!!");
  273. if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "O Jogador não está conectado");
  274. new Float:X, Float:Y, Float:Z, Pname[24];
  275. GetPlayerPos(id, X, Y, Z);
  276. GetPlayerName(id, Pname, 24);
  277. SetPlayerPos(playerid, X, Y, Z);
  278. new String[56];
  279. format(String, sizeof(String), "Você seguio o jogador %s[ID:%d]", Pname, id);
  280. SendClientMessage(playerid, 0xFF0000AA, String);
  281. }
  282. return 1;
  283. }
  284.  
  285. CMD:trazer(playerid,params[])
  286. {
  287. if(pInfo[playerid][Admin]>=2)
  288. {
  289. new targetid;
  290. if(sscanf(params, "u", targetid)) return SCM(playerid,-1," /trazer [playerid]");
  291. if(!IsPlayerConnected(targetid)) return SCM(playerid,-1," Jogador não conectado");
  292.  
  293. new Float:x, Float:y, Float:z;
  294. GetPlayerPos(playerid, x, y, z);
  295. SetPlayerPos(targetid, x, y, z+1);
  296.  
  297. new str[128];
  298. format(str,sizeof(str)," O %s %s Teleportou %s para este local!",GetAdminName(playerid),PlayerName(playerid),PlayerName(targetid));
  299. SCM(targetid,-1,str);
  300.  
  301. if(IsPlayerInAnyVehicle(targetid))
  302. {
  303. SetVehiclePos(GetPlayerVehicleID(targetid),x,y,z);
  304. }
  305. }
  306. return 1;
  307. }
  308.  
  309. CMD:ip(playerid, params[])
  310. {
  311. if(pInfo[playerid][Admin]>=4)
  312. {
  313. new targetid,playerip[16],string[64];
  314. if(sscanf(params, "u", targetid, playerip)) return SCM(playerid,-1,"* {FFFFFF}/ip [playerid]");
  315. if(!IsPlayerConnected(targetid)) return SCM(playerid,-1,"* {FFFFFF}Jogador não conectado");
  316.  
  317. GetPlayerIp(targetid, playerip, sizeof(playerip));
  318. format(string, sizeof(string), "* IP do Jogador %s é %s", PlayerName(targetid), playerip);
  319. SCM(playerid, -1, string);
  320. }
  321. else {
  322. SCM(playerid,-1,"*{FFFFFF} Você não tem permissão para utilizar este comando!");
  323. }
  324. return 1;
  325. }
  326.  
  327. CMD:achat(playerid, params[])
  328. {
  329. new Name[24], string[128], Texto[128];
  330. if(pInfo[playerid][Admin]>=1) return SendClientMessage(playerid, -1, "Você precisa ser um administrador para digitar o comando!");
  331. if(sscanf(params, "s", Texto)) return SendClientMessage(playerid, -1, "Use: /ca [Texto]");
  332. GetPlayerName (playerid, Name, sizeof(Name));
  333. format (string, sizeof(string), "{FFFFFF}(ADMIN CHAT) {37DB45}%s[%d] says:{FFFFFF} %s", Name,playerid, Texto);
  334. for(new i = 0; i < GetMaxPlayers(); i++)
  335. {
  336.  
  337. if(IsPlayerConnected(i))
  338. {
  339.  
  340. if(Player[i][Admin] == Player[playerid][Admin])
  341. {
  342.  
  343. SendClientMessage(i, -1, string);
  344. }
  345. }
  346. }
  347. return 1;
  348. }
  349.  
  350. CMD:cv(playerid, params[])
  351. {
  352. if(pInfo[playerid][Admin]>=2)
  353. {
  354. new idveiculo, Float:Pos[3];
  355. if(sscanf(params, "d", idveiculo)) return SendClientMessage(playerid, -1, "{FF0000}ERRO: use /cv [id veiculo]");
  356. GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  357. CreateVehicle(idveiculo, Pos[0], Pos[1], Pos[2], 1515, 6, 1, 99999);
  358. GameTextForPlayer(playerid, "Veiculo Criado", 3000, 3);
  359. }
  360. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  361. return 1;
  362. }
  363.  
  364. CMD:dinheiro(playerid,params[])
  365. {
  366. new id,value;
  367. if(!IsPlayerAdmin(playerid)) return scm(playerid,Error,"Você não é administrador!");
  368. if(sscanf(params,"dd",id,value)) return scm(playerid,Neutra,"Uso correto: /dinheiro [id]");
  369. GivePlayerMoney(id,(id) +value);
  370. return 1;
  371. }
  372.  
  373. CMD:darvida(playerid,params[])
  374. {
  375. if(pInfo[playerid][Admin]>=2)
  376. {
  377. new vida, colete, id;
  378. scm(playerid,Neutra,"Você setou a vida de um player");
  379. if(sscanf(params,"dd",vida,id)) return scm(playerid,Neutra,"Uso correto: /darvida [id] [vida] [colete]");
  380. SetPlayerHealth(vida,id);
  381. SetPlayerArmour(colete,id);
  382. scm(playerid,-1,"Sua vida foi setada!");
  383. }
  384. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  385. return 1;
  386. }
  387.  
  388. CMD:anunciar(playerid,params[])
  389. {
  390. if(pInfo[playerid][Admin]>=2)
  391. {
  392. new Name[24], string[128], Texto[128];
  393. if(sscanf(params, "s", Texto)) return SendClientMessage(playerid, Amarelo, "Use: /anunciar [Texto]");
  394. GetPlayerName (playerid, Name, sizeof(Name));
  395. format (string, sizeof(string), "{FFFFFF}* {3E9EFF}(Admin) {FFFF00}%s[%d] says:{FFFF00}{FFFFFF} %s{FFFFFF}", Name,playerid, Texto);
  396. for(new i = 0; i < GetMaxPlayers(); i++)
  397. SendClientMessage(i, -1, string);
  398. }
  399. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  400. return 1;
  401. }
  402.  
  403. CMD:comandosadm(playerid,params[])
  404. {
  405. if(pInfo[playerid][Admin]>=1)
  406. {
  407. scm(playerid,Neutra,"Comandos:");
  408. scm(playerid,Amarelo,"/darvida /anunciar /ir /dinheiro /trazer /dinheiro /anunciar /espiar");
  409. }
  410. else SendClientMessage(playerid, COLOR_LIGHTRED, "SERVER: Você deve ser um administrador para usar esse comando!");
  411. return 1;
  412. }
  413.  
  414. CMD:pm(playerid,params[]) // CMD for PM'ing someone
  415. {
  416. new pid;
  417. new msg[128];
  418. new str[128];
  419. if(sscanf(params, "us[128]", pid, msg)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /pm [ID] [Mensagem]");
  420. if(playerid == pid) return SendClientMessage(playerid,COLOR_RED,"Não mande mensagem para você mesmo!");
  421. format(str, sizeof(str), "Mensagem De %s: %s", PlayerName(playerid), msg);
  422. SendClientMessage(pid, COLOR_PM, str);
  423. format(str, sizeof(str), "Mensagem Para %s: %s", PlayerName(pid), msg);
  424. SendClientMessage(playerid, COLOR_PM, str);
  425. return 1;
  426. }
  427.  
  428. CMD:kill(playerid,params[])
  429. {
  430. SetPlayerHealth(playerid,0);
  431. scm(playerid,Vermelho,"Você se matou!");
  432. return 1;
  433. }
  434.  
  435. CMD:creditos(playerid, params[])
  436. {
  437. new str[1300];
  438. strcat(str,"{FAD91B}Creditos do Modo de Jogo:\n\n");
  439. strcat(str,"{07F1F1}Gamemode por: {FFFFFF}didimk\n\n");
  440. strcat(str,"{07F1F1}Ajuda do: {FFFFFF}forum.Sa-mp.com\n\n");
  441. strcat(str,"{07F1F1}Data de criação: {FFFFFF}14/01/2017\n\n");
  442. strcat(str,"{07F1F1}Por Favor: {FFFFFF}Não remova os creditos\n\n");
  443. strcat(str,"{FAD91B}Creditos do Modo de Jogo:\n\n");
  444. ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_MSGBOX, "{07F1F1}Creditos a Gamemode", str, "Fechar", "");
  445. return 1;
  446. }
  447.  
  448. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  449. {
  450. return 1;
  451. }
  452.  
  453. stock GetAdminName(playerid)
  454. {
  455. new adminname[128];
  456. switch(pInfo[playerid][Admin])
  457. {
  458. case 0: adminname = "Player";
  459. case 1: adminname = "Moderador";
  460. case 2: adminname = "Moderator";
  461. case 3: adminname = "Administrador";
  462. case 4: adminname = "Diretor";
  463. case 5: adminname = "Dono";
  464. }
  465. return adminname;
  466. }
  467.  
  468. stock Contas(playerid)
  469. {
  470. new arquivo[40], name[MAX_PLAYER_NAME];
  471. GetPlayerName(playerid, name, 32);
  472. format(arquivo, 40, "Contas/%s.ini", name);
  473. return arquivo;
  474. }
  475.  
  476. stock CarregarPlayer(playerid)
  477. {
  478. new pArquivos[50];
  479. format(pArquivos, sizeof(pArquivos), CONTAS, PegarNome(playerid));
  480. if(DOF2_FileExists(pArquivos))
  481. {
  482. Player[playerid][Matou] = DOF2_GetInt(pArquivos, "Matou");
  483. Player[playerid][Dinheiro] = DOF2_GetInt(pArquivos, "Dinheiro");
  484. Player[playerid][Admin] = DOF2_GetInt(pArquivos, "Admin");
  485. Player[playerid][Avisos] = DOF2_GetInt(pArquivos, "Avisos");
  486. SetPlayerScore(playerid, DOF2_GetInt(pArquivos, "Score"));
  487. GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
  488. }
  489. return 1;
  490. }
  491.  
  492. stock SalvarContas(playerid)
  493. {
  494. if(!DOF2_FileExists(Contas(playerid))) DOF2_CreateFile(Contas(playerid));
  495. else
  496. {
  497. Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
  498. DOF2_SetInt(Contas(playerid), "Senha", Player[playerid][Senha]);
  499. DOF2_SetInt(Contas(playerid), "Matou", Player[playerid][Matou]);
  500. DOF2_SetInt(Contas(playerid), "Morreu", Player[playerid][Morreu]);
  501. DOF2_SetInt(Contas(playerid), "Dinheiro", Player[playerid][Dinheiro]);
  502. DOF2_SetInt(Contas(playerid), "Admin", Player[playerid][Admin]);
  503. DOF2_SetInt(Contas(playerid), "Avisos", Player[playerid][Avisos]);
  504. DOF2_SaveFile();
  505. }
  506. return 1;
  507. }
  508.  
  509. stock PegarNome(playerid)
  510. {
  511. new Name[MAX_PLAYER_NAME];
  512. GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  513. return Name;
  514. }
  515.  
  516.  
  517. BanSerial(playerid)
  518. {
  519. new Serial[256];
  520. gpci(playerid,Serial,sizeof(Serial));
  521. DOF2_GetInt(Serial,"BanSerial.ini");
  522. }
  523.  
  524. stock PlayerName(playerid)
  525. {
  526. new PlayerNameLevel[MAX_PLAYERS];
  527. GetPlayerName(playerid, PlayerNameLevel, MAX_PLAYERS);
  528. return PlayerNameLevel;
  529. }
  530.  
  531. stock SendMessageToAllAdmins(message[], color)
  532. {
  533.  
  534. for(new i = 0; i < MAX_PLAYERS; i++)
  535. {
  536. if(pInfo[i][Admin] < 1)
  537. {
  538. SCM(i, color, message);
  539. }
  540. }
  541. return 1;
  542. }
  543.  
  544.  
  545. stock SetBanPlayer(banid, days, const reason[]) // banir o player
  546. {
  547. new file[128] , file2[50] , file3[50], a, m , d , h , mi , s;
  548. getdate(a,m,d);
  549. gettime(h,mi,s);
  550. format(file , sizeof(file), PASTA_BANIDOS , GetNameId(banid));
  551. format(file2, sizeof(file2), "%02d/%02d/%d - %02d:%02d:%02d", d , m , a , h , mi , s);
  552. format(file3, sizeof(file3), "%s", reason);
  553. new time = (gettime() + days * 86400);
  554. DOF2_CreateFile(file);
  555. DOF2_SetString(file , "Admin" , "ADMIN - BOT");
  556. DOF2_SetString(file , "Banido" , GetNameId(banid));
  557. DOF2_SetInt(file, "Dias", time);
  558. DOF2_SetString(file, "Data", file2);
  559. DOF2_SetString(file, "Motivo", file3);
  560. DOF2_SaveFile();
  561. GameTextForPlayer(banid, "~r~BANIDO" , 5000 , 5);
  562. SetTimerEx("KickEx" , 500 , false , "i" , banid);
  563. return 1;
  564. }
  565.  
  566. stock GetNameId(playerid)
  567. {
  568. new name[MAX_PLAYER_NAME+1];
  569. GetPlayerName(playerid, name , MAX_PLAYER_NAME+1);
  570. return name;
  571. }
  572.  
  573. stock OnPlayerCheckBan(playerid) // checar se está banido
  574. {
  575. new file[50];
  576. format(file , sizeof(file), PASTA_BANIDOS , GetNameId(playerid));
  577.  
  578. if(DOF2_FileExists(file))
  579. {
  580.  
  581. new AdminBan[25] , Days , Data[50] , Motivo[64] , string[200];
  582. format(AdminBan, sizeof(AdminBan), DOF2_GetString(file, "Admin"));
  583. Days = DOF2_GetInt(file , "Dias");
  584. format(Data, sizeof(Data), DOF2_GetString(file, "Data"));
  585. format(Motivo, sizeof(Motivo), DOF2_GetString(file, "Motivo"));
  586. if(gettime() > Days) DOF2_RemoveFile(file);
  587. else
  588. {
  589. format(string, sizeof(string), "{FFFF00}Admin: {FFFFFF}%s\n{FFFF00}Conta Banida: {FFFFFF}%s\n{FFFF00}Dias Restante: {FFFFFF}%s\n{FFFF00}Data: {FFFFFF}%s\n{FFFF00}Motivo: {FFFFFF}%s", AdminBan , GetNameId(playerid), ConverterNumeros(Days - gettime()) , Data , Motivo);
  590. ShowPlayerDialog(playerid, 9898 , DIALOG_STYLE_MSGBOX , "{FFFFFF}Conta {FF0000}Banida", string , "Fechar" , "");
  591. SetTimerEx("KickEx", 500 , false , "i" , playerid);
  592. }
  593. }
  594. return 1;
  595. }
  596.  
  597. stock RemoveBanPlayer(const bannick[]) // remover o ban
  598. {
  599. new file[50];
  600. format(file , sizeof(file), PASTA_BANIDOS , bannick);
  601. if(DOF2_FileExists(file)) DOF2_RemoveFile(file);
  602. else printf("Essa conta %s não está banida", bannick);
  603. return 1;
  604. }
  605.  
  606. stock EditBanPlayer(const bannick[] , days , const reason[]) // editar o ban
  607. {
  608. new file[50] , file2[50];
  609. format(file , sizeof(file), PASTA_BANIDOS , bannick);
  610. if(DOF2_FileExists(file))
  611. {
  612. format(file2, sizeof(file2), "%s", reason);
  613. new time = (gettime() + days * 86400);
  614. DOF2_SetInt(file, "Dias" , time);
  615. DOF2_SetString(file, "Motivo" , file2);
  616. }
  617. else print("Essa Conta não está banida");
  618. return 1;
  619. }
  620.  
  621. stock ConverterNumeros(n) // by DanDRT
  622. {
  623. new dia, hr, mn, seg, resto;
  624. resto = n;
  625. seg = resto % 60;
  626. resto /= 60;
  627. mn = resto % 60;
  628. resto /= 60;
  629. hr = resto % 24;
  630. resto /= 24;
  631. dia = resto;
  632. new str[50];
  633. format(str, sizeof(str), "%ddias, %02dh %02dm %02ds", dia, hr, mn, seg);
  634. return str;
  635. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement