Advertisement
Guest User

Counter Strike

a guest
Sep 24th, 2011
640
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 89.95 KB | None | 0 0
  1. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  4. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  6.  
  7. #include a_samp
  8. #include foreach
  9.  
  10. #undef MAX_PLAYERS
  11. #undef MAX_VEHICLES
  12. #undef MAX_PICKUPS
  13.  
  14. #define MAX_PLAYERS 50
  15. #define MAX_VEHICLES 101
  16. #define MAX_PICKUPS 51
  17. #define MAX_MAP_NAME 20
  18. #define MAX_VEHICLE_PLATE 8
  19.  
  20. #include "../include/gl_common.inc"
  21. #include "../include/utils.inc"
  22.  
  23. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  24. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  25. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  26. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  27. Defines----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  28.  
  29. #define CorBranco 0xFFFFFFAA
  30. #define CorVermelho 0xFF0000AA
  31. #define CorVerde 0x00FF00AA
  32. #define CorAzul 0x0066FFAA
  33.  
  34. #define PastaMapas "CS/Mapas/"
  35. #define PastaVeiculos "CS/Mapas/Veiculos/"
  36. #define PastaPickups "CS/Mapas/Pickups/"
  37. #define PastaConfiguracao "CS/Mapas/Configuracao/"
  38. #define PastaLogs "CS/Logs/"
  39. #define PastaJogadores "CS/Jogadores/"
  40.  
  41. #define CORRER_RAPIDO true
  42.  
  43. #define TEMPO_MAPA 300 //Tempo em Segundos
  44. #define TEMPO_VOTACAO 10
  45.  
  46. #define TEAM_DESCONHECIDA 0
  47. #define TEAM_CONTRA 1
  48. #define TEAM_TERRORISTA 2
  49.  
  50. #define BOX_REGISTER 0
  51. #define BOX_LOGIN 1
  52. #define BOX_TEAM 2
  53. #define BOX_VOTACAO 3
  54.  
  55. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  56. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  57. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  58. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  59. Mapas------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  60.  
  61. new MapasExistentes[11][] = {
  62. {"port69"},
  63. {"smallville"},
  64. {"bombsite"},
  65. {"canals"},
  66. {"fabrica"},
  67. {"gridlock"},
  68. {"supermercado"},
  69. {"thebunker"},
  70. {"shopping"},
  71. {"terminal"},
  72. {"dra-park"}
  73. };
  74.  
  75. new CodeCorRandom[6][] = {
  76. {"{FFFFFF}"},
  77. {"{999999}"},
  78. {"{FF0000}"},
  79. {"{FFFF00}"},
  80. {"{00FF00}"},
  81. {"{0066FF}"}
  82. };
  83.  
  84. new bool:VotandoMapa[sizeof(MapasExistentes)];
  85. new VotacaoMapa[10][2]; //0 = ID do Mapa | 1 = N° de Votos
  86.  
  87. enum oInfo
  88. {
  89. oModel,
  90. Float:oPX,
  91. Float:oPY,
  92. Float:oPZ,
  93. Float:oRX,
  94. Float:oRY,
  95. Float:oRZ
  96. };
  97.  
  98. new ObjectInfo[MAX_OBJECTS][oInfo];
  99.  
  100. enum vInfo
  101. {
  102. vModel,
  103. Float:vPX,
  104. Float:vPY,
  105. Float:vPZ,
  106. Float:vRZ,
  107. vCor1,
  108. vCor2
  109. };
  110.  
  111. new VehicleInfo[MAX_VEHICLES][vInfo];
  112.  
  113. enum pInfo
  114. {
  115. pModel,
  116. Float:pPX,
  117. Float:pPY,
  118. Float:pPZ,
  119. pArmaSlot
  120. };
  121.  
  122. new PickupInfo[MAX_PICKUPS][pInfo];
  123.  
  124. enum mInfo
  125. {
  126. Float:mSpawnX[2],
  127. Float:mSpawnY[2],
  128. Float:mSpawnZ[2],
  129. Float:mSpawnA[2],
  130. mSpawnArmas[3],
  131. mSpawnBalas[3],
  132. mNomeMapa[MAX_MAP_NAME],
  133. mNomeCriador[MAX_PLAYER_NAME],
  134. mPlacaVeiculos[MAX_VEHICLE_PLATE],
  135. mMapString[128],
  136. mTempoRelogio,
  137. mTempoVotacao,
  138. mTeamKills[2],
  139. mTeamDeaths[2],
  140. mID,
  141. oCriados,
  142. vCriados,
  143. pCriados,
  144. bool:mBuy
  145. };
  146.  
  147. new MapInfo[mInfo];
  148.  
  149. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  150. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  151. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  152. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  153. Jogadores/Servidor-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  154.  
  155. forward RegisterPlayer(playerid, senha[]);
  156. forward LogPlayer(playerid, senha[]);
  157. forward SavePlayer(playerid);
  158. forward AtualizarNomes(playerid);
  159.  
  160. forward RelogioMapa();
  161. forward SecondUpdate();
  162.  
  163. enum iInfo
  164. {
  165. iSenha[64],
  166. iAdmin,
  167. iKills,
  168. iDeaths,
  169. bool:iLogado,
  170. bool:iSpawnado,
  171. bool:iShop,
  172. iMuted,
  173. iTeam,
  174. iSkin,
  175. iMoney
  176. };
  177.  
  178. new i_Info[MAX_PLAYERS][iInfo];
  179.  
  180. new Text:Carrinho[5];
  181. new Text:Mapa[2];
  182. new Text:TeamWinner[4];
  183. new Text:Relogio;
  184. new Text:FundoPreto;
  185.  
  186. new WeaponSlot[47] = {
  187. 0, //Mão 00
  188. 0, //Soco Ingles 01
  189. 1, //Taco de Golf 02
  190. 1, //Cacetete 03
  191. 1, //Faca 04
  192. 1, //Taco de Baseball 05
  193. 1, //Pá 06
  194. 1, //Taco de Cinuca 07
  195. 1, //Katana 08
  196. 1, //Moto-Serra 09
  197. 10,//Vibrador Roxo 10
  198. 10,//Vibrador Branco Pequeno 11
  199. 10,//Vibrador Branco Grande 12
  200. 10,//Vibrador 13
  201. 10,//Flores 14
  202. 10,//Bengala 15
  203. 8, //Granada 16
  204. 8, //Granada de Gás 17
  205. 8, //Molotov 18
  206. -1,// 19
  207. -1,// 20
  208. -1,// 21
  209. 2, //9mm 22
  210. 2, //9mm c/ silenciador 23
  211. 2, //Desert Eagle 24
  212. 3, //Shotgun 25
  213. 3, //Sawn-off Shotgun 26
  214. 3, //Combat Shotgun 27
  215. 4, //Micro SMG 28
  216. 4, //MP5 29
  217. 5, //AK-47 30
  218. 5, //M4 31
  219. 4, //Tec9 32
  220. 6, //Country Rifle 33
  221. 6, //Sniper Rifle 34
  222. 7, //Rocket Launcher 35
  223. 7, //HS Rocket Launcher 36
  224. 7, //Flamethrower 37
  225. 7, //Minigun 38
  226. 8, //Satchel Charge 39
  227. 12,//Detonador 40
  228. 9, //Lata de Spray 41
  229. 9, //Extintor de Incendio 42
  230. 9, //Camera 43
  231. 11,//Nightvision Goggles 44
  232. 11,//Thermal Goggles 45
  233. 11 //Paraquedas 46
  234. };
  235.  
  236. new WeaponModel[47] = {
  237. -1, //Mão 00
  238. 331,//Soco Ingles 01
  239. 333,//Taco de Golf 02
  240. 334,//Cacetete 03
  241. 335,//Faca 04
  242. 336,//Taco de Baseball 05
  243. 337,//Pá 06
  244. 338,//Taco de Cinuca 07
  245. 339,//Katana 08
  246. 341,//Moto-Serra 09
  247. 321,//Vibrador Roxo 10
  248. 322,//Vibrador Branco Pequeno 11
  249. 323,//Vibrador Branco Grande 12
  250. 324,//Vibrador 13
  251. 325,//Flores 14
  252. 326,//Bengala 15
  253. 342,//Granada 16
  254. 343,//Granada de Gás 17
  255. 344,//Molotov 18
  256. -1, // 19
  257. -1, // 20
  258. -1, // 21
  259. 346,//9mm 22
  260. 347,//9mm c/ silenciador 23
  261. 348,//Desert Eagle 24
  262. 349,//Shotgun 25
  263. 350,//Sawn-off Shotgun 26
  264. 351,//Combat Shotgun 27
  265. 352,//Micro MSG 28
  266. 353,//MP5 29
  267. 355,//AK-47 30
  268. 356,//M4 31
  269. 372,//Tec9 32
  270. 357,//Country Rifle 33
  271. 358,//Sniper Rifle 34
  272. 359,//Rocket Launcher 35
  273. 360,//HS Rocket Launcher 36
  274. 361,//Flamethrower 37
  275. 362,//Minigun 38
  276. 363,//Satchel Charge 39
  277. -1, //Detonador 40
  278. 365,//Lata de Spray 41
  279. 366,//Extintor de Incendio 42
  280. 367,//Camera 43
  281. -1, //Nightvision Goggles 44
  282. -1, //Thermal Goggles 45
  283. 371 //Paraquedas 46
  284. };
  285.  
  286. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  287. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  288. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  289. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  290. Funções Mapas----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  291.  
  292. forward CarregarMapa(id);
  293. forward CarregarVeiculos(id);
  294. forward CarregarPickups(id);
  295. forward CarregarConfiguracao(id);
  296.  
  297. forward LimparMapa();
  298.  
  299. public CarregarMapa(id)
  300. {
  301. new string[128],
  302. Info[7][64];
  303.  
  304. format(string, sizeof(string), "%s%s.txt", PastaMapas, MapasExistentes[id]);
  305.  
  306. if(!fexist(string))
  307. {
  308. SendClientMessageToAll(CorVermelho, "[MAPA: {00FFFF}Erro Fatal!{FF0000} {F5C00A} Mapa Inexistente.{FF0000}]");
  309. printf("[MAPA: Erro Fatal! Mapa Inexistente. (%d: %s)]", id, string);
  310. GameModeExit();
  311. return true;
  312. }
  313.  
  314. MapInfo[oCriados] = 0;
  315. MapInfo[vCriados] = 0;
  316. MapInfo[pCriados] = 0;
  317.  
  318. new File:Arquivo = fopen(string, io_read);
  319. for(new objectid = 0; objectid < MAX_OBJECTS; objectid++)
  320. {
  321. ObjectInfo[objectid][oModel] = 0;
  322. fread(Arquivo, string);
  323. split(string, Info, ',');
  324. ObjectInfo[objectid][oModel] = strval(Info[0]);
  325. if(ObjectInfo[objectid][oModel] != 0)
  326. {
  327. ObjectInfo[objectid][oPX] = floatstr(Info[1]);
  328. ObjectInfo[objectid][oPY] = floatstr(Info[2]);
  329. ObjectInfo[objectid][oPZ] = floatstr(Info[3]);
  330. ObjectInfo[objectid][oRX] = floatstr(Info[4]);
  331. ObjectInfo[objectid][oRY] = floatstr(Info[5]);
  332. ObjectInfo[objectid][oRZ] = floatstr(Info[6]);
  333. MapInfo[oCriados]++;
  334. }
  335. }
  336. fclose(Arquivo);
  337.  
  338. format(string, sizeof(string), "%s%s.txt", PastaVeiculos, MapasExistentes[id]);
  339.  
  340. if(fexist(string)) CarregarVeiculos(id);
  341.  
  342. format(string, sizeof(string), "%s%s.txt", PastaPickups, MapasExistentes[id]);
  343.  
  344. if(fexist(string)) CarregarPickups(id);
  345.  
  346. format(string, sizeof(string), "%s%s.txt", PastaConfiguracao, MapasExistentes[id]);
  347.  
  348. if(!fexist(string))
  349. {
  350. SendClientMessageToAll(CorVermelho, "[MAPA: {00FFFF}Erro Fatal!{FF0000} {F5C00A} Mapa sem Configuração.{FF0000}]");
  351. printf("[MAPA: Erro Fatal! Mapa sem Configuração. (%d: %s)]", id, MapasExistentes[id]);
  352. GameModeExit();
  353. return true;
  354. }
  355.  
  356. CarregarConfiguracao(id);
  357. return true;
  358. }
  359.  
  360. public CarregarVeiculos(id)
  361. {
  362. new string[128],
  363. Info[7][64];
  364.  
  365. format(string, sizeof(string), "%s%s.txt", PastaVeiculos, MapasExistentes[id]);
  366.  
  367. if(!fexist(string))
  368. {
  369. return true;
  370. }
  371.  
  372.  
  373. new File:Arquivo = fopen(string, io_read);
  374. for(new vehicleid = 0; vehicleid < MAX_VEHICLES; vehicleid++)
  375. {
  376. VehicleInfo[vehicleid][vModel] = 0;
  377. fread(Arquivo, string);
  378. split(string, Info, ',');
  379. VehicleInfo[vehicleid][vModel] = strval(Info[0]);
  380. if(VehicleInfo[vehicleid][vModel] != 0)
  381. {
  382. VehicleInfo[vehicleid][vPX] = floatstr(Info[1]);
  383. VehicleInfo[vehicleid][vPY] = floatstr(Info[2]);
  384. VehicleInfo[vehicleid][vPZ] = floatstr(Info[3]);
  385. VehicleInfo[vehicleid][vRZ] = floatstr(Info[4]);
  386. VehicleInfo[vehicleid][vCor1] = strval(Info[5]);
  387. VehicleInfo[vehicleid][vCor2] = strval(Info[6]);
  388. MapInfo[vCriados]++;
  389. }
  390. }
  391. fclose(Arquivo);
  392. return true;
  393. }
  394.  
  395. public CarregarPickups(id)
  396. {
  397. new string[128],
  398. Info[4][64];
  399.  
  400. format(string, sizeof(string), "%s%s.txt", PastaPickups, MapasExistentes[id]);
  401.  
  402. if(!fexist(string))
  403. {
  404. return true;
  405. }
  406.  
  407. new File:Arquivo = fopen(string, io_read);
  408. for(new pickupid = 0; pickupid < MAX_PICKUPS; pickupid++)
  409. {
  410. PickupInfo[pickupid][pModel] = 0;
  411. fread(Arquivo, string);
  412. split(string, Info, ',');
  413. PickupInfo[pickupid][pModel] = strval(Info[0]);
  414. if(PickupInfo[pickupid][pModel] != 0)
  415. {
  416. PickupInfo[pickupid][pPX] = floatstr(Info[1]);
  417. PickupInfo[pickupid][pPY] = floatstr(Info[2]);
  418. PickupInfo[pickupid][pPZ] = floatstr(Info[3]);
  419. PickupInfo[pickupid][pArmaSlot] = GetPickupWeaponSlot(pickupid);
  420. MapInfo[pCriados]++;
  421. }
  422. }
  423. fclose(Arquivo);
  424. return true;
  425. }
  426.  
  427. public CarregarConfiguracao(id)
  428. {
  429. new string[256],
  430. Info[18][64];
  431.  
  432. format(string, sizeof(string), "%s%s.txt", PastaConfiguracao, MapasExistentes[id]);
  433.  
  434. new File:Arquivo = fopen(string, io_read);
  435. {
  436. fread(Arquivo, string);
  437. split(string, Info, ',');
  438. MapInfo[mSpawnX][0] = floatstr(Info[0]);
  439. MapInfo[mSpawnY][0] = floatstr(Info[1]);
  440. MapInfo[mSpawnZ][0] = floatstr(Info[2]);
  441. MapInfo[mSpawnA][0] = floatstr(Info[3]);
  442. MapInfo[mSpawnX][1] = floatstr(Info[4]);
  443. MapInfo[mSpawnY][1] = floatstr(Info[5]);
  444. MapInfo[mSpawnZ][1] = floatstr(Info[6]);
  445. MapInfo[mSpawnA][1] = floatstr(Info[7]);
  446. MapInfo[mSpawnArmas][0] = strval(Info[8]);
  447. MapInfo[mSpawnBalas][0] = strval(Info[9]);
  448. MapInfo[mSpawnArmas][1] = strval(Info[10]);
  449. MapInfo[mSpawnBalas][1] = strval(Info[11]);
  450. MapInfo[mSpawnArmas][2] = strval(Info[12]);
  451. MapInfo[mSpawnBalas][2] = strval(Info[13]);
  452. strmid(MapInfo[mNomeMapa], Info[14], 0, strlen(Info[14]), 64);
  453. strmid(MapInfo[mNomeCriador], Info[15], 0, strlen(Info[15]), 64);
  454. strmid(MapInfo[mPlacaVeiculos], Info[16], 0, strlen(Info[16]), 64);
  455. MapInfo[mBuy] = bool:strval(Info[17]);
  456. }
  457. fclose(Arquivo);
  458.  
  459. MapInfo[mID] = id;
  460. MapInfo[mTempoRelogio] = TEMPO_MAPA;
  461. MapInfo[mTempoVotacao] = 0;
  462.  
  463. for(new o = 0; o < MapInfo[oCriados]; o++)
  464. {
  465. CreateObject(ObjectInfo[o][oModel], ObjectInfo[o][oPX], ObjectInfo[o][oPY], ObjectInfo[o][oPZ], ObjectInfo[o][oRX], ObjectInfo[o][oRY], ObjectInfo[o][oRZ]);
  466. }
  467. for(new v = 0; v < MapInfo[vCriados]; v++)
  468. {
  469. CreateVehicle(VehicleInfo[v][vModel], VehicleInfo[v][vPX], VehicleInfo[v][vPY], VehicleInfo[v][vPZ], VehicleInfo[v][vRZ], VehicleInfo[v][vCor1], VehicleInfo[v][vCor2], -1);
  470. SetVehicleNumberPlate(v, MapInfo[mPlacaVeiculos]);
  471. }
  472. for(new p = 0; p < MapInfo[pCriados]; p++)
  473. {
  474. CreatePickup(PickupInfo[p][pModel], 2, PickupInfo[p][pPX], PickupInfo[p][pPY], PickupInfo[p][pPZ]);
  475. }
  476.  
  477. printf("[MAPA: %s de %s. Placa dos Veiculos: %s.]", MapInfo[mNomeMapa], MapInfo[mNomeCriador], MapInfo[mPlacaVeiculos]);
  478. printf("[MAPA: Com %d objetos, %d veiculos e %d pickups. (%s%s.txt)]", MapInfo[oCriados], MapInfo[vCriados], MapInfo[pCriados], PastaMapas, MapasExistentes[id]);
  479. if(MapInfo[mBuy]) print("[MAPA: Shop On]");
  480. else print("[MAPA: Shop Off]");
  481. format(MapInfo[mMapString], sizeof(MapInfo[mMapString]), "[MAPA: {FF0000}%s{00FF00} de {F5C00A}%s{00FF00}.]", MapInfo[mNomeMapa], MapInfo[mNomeCriador]);
  482. SendClientMessageToAll(CorVerde, MapInfo[mMapString]);
  483. format(string, sizeof(string), "mapname %s", MapInfo[mNomeMapa]);
  484. SendRconCommand(string);
  485. format(string, sizeof(string), " %s ~g~de~y~ %s", MapInfo[mNomeMapa], MapInfo[mNomeCriador]);
  486. TextDrawSetString(Mapa[1], string);
  487. return true;
  488. }
  489.  
  490. public LimparMapa()
  491. {
  492. for(new o = 1; o <= MapInfo[oCriados]; o++)
  493. {
  494. DestroyObject(o);
  495. }
  496. MapInfo[oCriados] = 0;
  497. for(new v = 1; v <= MapInfo[vCriados]; v++)
  498. {
  499. DestroyVehicle(v);
  500. }
  501. MapInfo[vCriados] = 0;
  502. for(new p = 0; p < MapInfo[pCriados]; p++)
  503. {
  504. DestroyPickup(p);
  505. }
  506. MapInfo[pCriados] = 0;
  507. return true;
  508. }
  509.  
  510. public RelogioMapa()
  511. {
  512. if(MapInfo[mTempoRelogio] > 0)
  513. {
  514. new Tempo[20];
  515. MapInfo[mTempoRelogio] --;
  516. new Minutos = MapInfo[mTempoRelogio] / 60;
  517. new Segundos = MapInfo[mTempoRelogio] - (Minutos * 60);
  518. format(Tempo, sizeof(Tempo), "%d:%02d", Minutos, Segundos);
  519. TextDrawSetString(Relogio, Tempo);
  520. if(MapInfo[mTempoRelogio] == 0)
  521. {
  522. new RatioTeam1 = MapInfo[mTeamKills][0] - MapInfo[mTeamDeaths][0];
  523. new RatioTeam2 = MapInfo[mTeamKills][1] - MapInfo[mTeamDeaths][1];
  524. if(RatioTeam1 == RatioTeam2) //Draw
  525. {
  526. TextDrawShowForAllEx(TeamWinner[2]);
  527. TextDrawShowForAllEx(TeamWinner[3]);
  528. }
  529. else if(RatioTeam1 > RatioTeam2) //Team1 Wins
  530. {
  531. TextDrawShowForAllEx(TeamWinner[1]);
  532. TextDrawShowForAllEx(TeamWinner[3]);
  533. }
  534. else if(RatioTeam1 < RatioTeam2) //Team2 Wins
  535. {
  536. TextDrawShowForAllEx(TeamWinner[0]);
  537. TextDrawShowForAllEx(TeamWinner[3]);
  538. }
  539. IniciarVotacao();
  540. }
  541. }
  542. else
  543. {
  544. MapInfo[mTempoVotacao] --;
  545. if(MapInfo[mTempoVotacao] == 0)
  546. {
  547. new NumeroDeMapas = sizeof(MapasExistentes);
  548. new Vencedor = -1, VotosVencedor = 0;
  549. if(NumeroDeMapas < 10)
  550. {
  551. for(new i = 0; i < sizeof(MapasExistentes); i++)
  552. {
  553. if(VotacaoMapa[i][1] > Vencedor && VotacaoMapa[i][1] != 0) Vencedor = i;
  554. }
  555. if(Vencedor == -1)
  556. {
  557. LimparMapa();
  558. CarregarMapa(random(sizeof(MapasExistentes)));
  559. }
  560. else
  561. {
  562. LimparMapa();
  563. CarregarMapa(Vencedor);
  564. }
  565. }
  566. else
  567. {
  568. for(new i = 0; i < 10; i++)
  569. {
  570. if(VotacaoMapa[i][1] > VotosVencedor)
  571. {
  572. Vencedor = i;
  573. VotosVencedor = VotacaoMapa[i][1];
  574. }
  575. }
  576. if(Vencedor == -1)
  577. {
  578. LimparMapa();
  579. CarregarMapa(random(sizeof(MapasExistentes)));
  580. }
  581. else
  582. {
  583. LimparMapa();
  584. CarregarMapa(VotacaoMapa[Vencedor][0]);
  585. }
  586. }
  587. for(new i = 0; i < 10; i++)
  588. {
  589. VotacaoMapa[i][0] = -1;
  590. VotacaoMapa[i][1] = 0;
  591. }
  592. for(new i = 0; i < sizeof(MapasExistentes); i++) VotandoMapa[i] = false;
  593. foreach(Player, playerid)
  594. {
  595. if(i_Info[playerid][iLogado])
  596. {
  597. TextDrawShowForPlayer(playerid, FundoPreto);
  598. ShowPlayerDialog(playerid, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", "{0066FF}(00) Contra-Terrorista - Roupa SWAT\n{0066FF}(00) Contra-Terrorista - Roupa Policial\n{0066FF}(00) Contra-Terrorista - Roupa Exercito\n{FF0000}(00) Terrorista - Negro\n{FF0000}(00) Terrorista - Roupa Preta\n{FF0000}(00) Terrorista - Roupa de Drogado", "Escolher", "");
  599. TogglePlayerControllable(playerid, false);
  600. SetPlayerPos(playerid, 0.0, 0.0, 0.0);
  601. }
  602. }
  603. }
  604. new Tempo[20];
  605. format(Tempo, sizeof(Tempo), "0:%02d", MapInfo[mTempoVotacao]);
  606. TextDrawSetString(Relogio, Tempo);
  607. }
  608. return true;
  609. }
  610.  
  611. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  612. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  613. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  614. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  615. Logs-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  616.  
  617. stock SetLog(LogName[], Text[])
  618. {
  619. new LogFile[64], File:Log, Write_Text[128], Hoje[6];
  620. format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
  621. if(fexist(LogFile)) Log = fopen(LogFile, io_append);
  622. else Log = fopen(LogFile, io_write);
  623. getdate(Hoje[2], Hoje[1], Hoje[0]);
  624. gettime(Hoje[3], Hoje[4], Hoje[5]);
  625. format(Write_Text, sizeof(Write_Text), "[%02d/%02d/%04d - %02d:%02d:%02d] %s\r\n", Hoje[0], Hoje[1], Hoje[2], Hoje[3], Hoje[4], Hoje[5], Text);
  626. fwrite(Log, Write_Text);
  627. fclose(Log);
  628. }
  629.  
  630. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  631. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  632. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  633. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  634. Outros Stocks----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  635.  
  636. stock split(const strsrc[], strdest[][], delimiter)
  637. {
  638. new i, li,
  639. aNum,
  640. len;
  641. while(i <= strlen(strsrc))
  642. {
  643. if(strsrc[i] == delimiter || i == strlen(strsrc))
  644. {
  645. len = strmid(strdest[aNum], strsrc, li, i, 128);
  646. strdest[aNum][len] = 0;
  647. li = i + 1;
  648. aNum++;
  649. }
  650. i++;
  651. }
  652. return true;
  653. }
  654.  
  655. stock PegarChave(linha[])
  656. {
  657. new keyRes[128];
  658. keyRes[0] = 0;
  659. if(strfind(linha, "=", true) == -1) return keyRes;
  660. strmid(keyRes, linha, 0, strfind(linha, "=", true), sizeof(keyRes));
  661. return keyRes;
  662. }
  663.  
  664. stock PegarValor(linha[])
  665. {
  666. new valRes[128];
  667. valRes[0] = 0;
  668. if(strfind(linha, "=", true) == -1) return valRes;
  669. strmid(valRes, linha, strfind(linha, "=", true)+1, strlen(linha), sizeof(valRes));
  670. return valRes;
  671. }
  672.  
  673. stock Float:PegarVida(playerid)
  674. {
  675. new Float:pHealth;
  676. GetPlayerHealth(playerid, pHealth);
  677. return pHealth;
  678. }
  679.  
  680. stock Float:PegarColete(playerid)
  681. {
  682. new Float:pArmour;
  683. GetPlayerArmour(playerid, pArmour);
  684. return pArmour;
  685. }
  686.  
  687. stock GetWeaponSlotByID(weaponid)
  688. {
  689. return WeaponSlot[weaponid];
  690. }
  691.  
  692. stock GetWeaponModelByID(weaponid)
  693. {
  694. return WeaponModel[weaponid];
  695. }
  696.  
  697. stock GetPickupWeaponSlot(pickupid)
  698. {
  699. if(PickupInfo[pickupid][pModel] != 0 && PickupInfo[pickupid][pModel] != 1240 && PickupInfo[pickupid][pModel] != 1242)
  700. {
  701. for(new model = 0; model < sizeof(WeaponModel); model++)
  702. {
  703. if(PickupInfo[pickupid][pModel] == WeaponModel[model]) return WeaponSlot[model];
  704. }
  705. }
  706. return WeaponSlot[0];
  707. }
  708.  
  709. stock PlayerName(playerid)
  710. {
  711. new pName[MAX_PLAYER_NAME];
  712. format(pName, sizeof(pName), "Desconectado");
  713. if(IsPlayerConnected(playerid)) GetPlayerName(playerid, pName, sizeof(pName));
  714. return pName;
  715. }
  716.  
  717. stock ResetPlayerWeaponSkill(playerid)
  718. {
  719. SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 0);
  720. SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, 0);
  721. SetPlayerSkillLevel(playerid, WEAPONSKILL_DESERT_EAGLE, 0);
  722. SetPlayerSkillLevel(playerid, WEAPONSKILL_SHOTGUN, 0);
  723. SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 0);
  724. SetPlayerSkillLevel(playerid, WEAPONSKILL_SPAS12_SHOTGUN, 0);
  725. SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 0);
  726. SetPlayerSkillLevel(playerid, WEAPONSKILL_MP5, 0);
  727. SetPlayerSkillLevel(playerid, WEAPONSKILL_AK47, 0);
  728. SetPlayerSkillLevel(playerid, WEAPONSKILL_M4, 0);
  729. SetPlayerSkillLevel(playerid, WEAPONSKILL_SNIPERRIFLE, 0);
  730. return true;
  731. }
  732.  
  733. stock PegarNomeDoMapa(id)
  734. {
  735. new string[256],
  736. Info[18][64];
  737.  
  738. format(string, sizeof(string), "%s%s.txt", PastaConfiguracao, MapasExistentes[id]);
  739.  
  740. Info[14] = "Mapa Invalido";
  741. if(fexist(string))
  742. {
  743. new File:Arquivo = fopen(string, io_read);
  744. fread(Arquivo, string);
  745. split(string, Info, ',');
  746. fclose(Arquivo);
  747. }
  748. return Info[14];
  749. }
  750.  
  751. stock IniciarVotacao()
  752. {
  753. new NumeroDeMapas = sizeof(MapasExistentes),
  754. Mapas[256], str[64], rand, linha = 0;
  755. if(NumeroDeMapas < 10)
  756. {
  757. for(new i = 0; i < sizeof(MapasExistentes); i++)
  758. {
  759. if(i != MapInfo[mID])
  760. {
  761. VotacaoMapa[linha][0] = i;
  762. VotacaoMapa[linha][1] = 0;
  763. rand = random(4);
  764. format(str, sizeof(str), "%s%s\n", CodeCorRandom[rand], PegarNomeDoMapa(i));
  765. strcat(Mapas, str, sizeof(Mapas));
  766. linha ++;
  767. }
  768. }
  769. VotacaoMapa[linha][0] = MapInfo[mID];
  770. VotacaoMapa[linha][1] = 0;
  771. rand = random(4);
  772. format(str, sizeof(str), "%sJogar Novamente", CodeCorRandom[rand]);
  773. strcat(Mapas, str, sizeof(Mapas));
  774. }
  775. else
  776. {
  777. new i;
  778. while(linha < 9)
  779. {
  780. i = random(sizeof(MapasExistentes));
  781. if(!VotandoMapa[i] && i != MapInfo[mID])
  782. {
  783. VotacaoMapa[linha][0] = i;
  784. VotacaoMapa[linha][1] = 0;
  785. VotandoMapa[i] = true;
  786. rand = random(4);
  787. format(str, sizeof(str), "%s%s\n", CodeCorRandom[rand], PegarNomeDoMapa(i));
  788. strcat(Mapas, str, sizeof(Mapas));
  789. linha ++;
  790. }
  791. }
  792. VotacaoMapa[linha][0] = MapInfo[mID];
  793. VotacaoMapa[linha][1] = 0;
  794. rand = random(4);
  795. format(str, sizeof(str), "%sJogar Novamente", CodeCorRandom[rand]);
  796. strcat(Mapas, str, sizeof(Mapas));
  797. }
  798. MapInfo[mTempoRelogio] = 0;
  799. MapInfo[mTempoVotacao] = TEMPO_VOTACAO;
  800. foreach(Player, playerid)
  801. {
  802. if(i_Info[playerid][iLogado])
  803. {
  804. TextDrawShowForPlayer(playerid, FundoPreto);
  805. TogglePlayerControllable(playerid, false);
  806. ShowPlayerDialog(playerid, BOX_VOTACAO, DIALOG_STYLE_LIST, "Votacao", Mapas, "Votar", "");
  807. SetPlayerPos(playerid, 0.0, 0.0, 0.0);
  808. i_Info[playerid][iTeam] = TEAM_DESCONHECIDA;
  809. }
  810. }
  811. return true;
  812. }
  813.  
  814. stock TextDrawShowForAllEx(Text:TextDrawID)
  815. {
  816. foreach(Player, playerid) if(i_Info[playerid][iLogado]) TextDrawShowForPlayer(playerid, TextDrawID);
  817. return true;
  818. }
  819.  
  820. stock GivePlayerMoneyEx(playerid, money)
  821. {
  822. GivePlayerMoney(playerid, money);
  823. i_Info[playerid][iMoney] += money;
  824. return i_Info[playerid][iMoney];
  825. }
  826.  
  827. stock SetPlayerMoneyEx(playerid, money)
  828. {
  829. ResetPlayerMoney(playerid);
  830. GivePlayerMoney(playerid, money);
  831. i_Info[playerid][iMoney] = money;
  832. return i_Info[playerid][iMoney];
  833. }
  834.  
  835. stock GetPlayerMoneyEx(playerid)
  836. {
  837. return i_Info[playerid][iMoney];
  838. }
  839.  
  840. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  841. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  842. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  843. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  844. Funções Normais--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  845. main()
  846. {
  847. return true;
  848. }
  849. /*------------------------------------------------------------------------------
  850. --------------------------------------------------------------------------------
  851. ------------------------------------------------------------------------------*/
  852. public OnPlayerText(playerid, text[])
  853. {
  854. new LogString[128];
  855. format(LogString, sizeof(LogString), "%s: %s", PlayerName(playerid), text);
  856. SetLog("Chat", LogString);
  857. return true;
  858. }
  859. /*------------------------------------------------------------------------------
  860. --------------------------------------------------------------------------------
  861. ------------------------------------------------------------------------------*/
  862. public OnGameModeInit()
  863. {
  864. SetGameModeText("Brasil CounterStrike");
  865.  
  866. #if CORRER_RAPIDO == true
  867. UsePlayerPedAnims();
  868. #endif
  869. DisableInteriorEnterExits();
  870. EnableStuntBonusForAll(false);
  871. ShowPlayerMarkers(false);
  872.  
  873. //Carrinho de Compras
  874. Carrinho[0] = TextDrawCreate(15.000000, 210.000000, "l l l");
  875. Carrinho[1] = TextDrawCreate(14.000000, 210.000000, "-~n~-~n~-");
  876. Carrinho[2] = TextDrawCreate(9.000000, 210.000000, "-");
  877. Carrinho[3] = TextDrawCreate(9.000000, 213.000000, "-");
  878. Carrinho[4] = TextDrawCreate(15.000000, 225.000000, "| |");
  879.  
  880. TextDrawBackgroundColor(Carrinho[0], 255);
  881. TextDrawBackgroundColor(Carrinho[1], 255);
  882. TextDrawBackgroundColor(Carrinho[2], 255);
  883. TextDrawBackgroundColor(Carrinho[3], 255);
  884. TextDrawBackgroundColor(Carrinho[4], 255);
  885.  
  886. TextDrawFont(Carrinho[0], 1);
  887. TextDrawFont(Carrinho[1], 1);
  888. TextDrawFont(Carrinho[2], 1);
  889. TextDrawFont(Carrinho[3], 1);
  890. TextDrawFont(Carrinho[4], 1);
  891.  
  892. TextDrawLetterSize(Carrinho[0], 0.240000, 1.700000);
  893. TextDrawLetterSize(Carrinho[1], 1.219999, 0.599999);
  894. TextDrawLetterSize(Carrinho[2], 0.430000, 0.599999);
  895. TextDrawLetterSize(Carrinho[3], 0.430000, 0.599999);
  896. TextDrawLetterSize(Carrinho[4], 0.230000, 0.599999);
  897.  
  898. TextDrawColor(Carrinho[0], 16711935);
  899. TextDrawColor(Carrinho[1], 16711935);
  900. TextDrawColor(Carrinho[2], 16711935);
  901. TextDrawColor(Carrinho[3], 16711935);
  902. TextDrawColor(Carrinho[4], 16711935);
  903.  
  904. TextDrawSetOutline(Carrinho[0], 1);
  905. TextDrawSetOutline(Carrinho[1], 1);
  906. TextDrawSetOutline(Carrinho[2], 1);
  907. TextDrawSetOutline(Carrinho[3], 1);
  908. TextDrawSetOutline(Carrinho[4], 1);
  909.  
  910. TextDrawSetProportional(Carrinho[0], 1);
  911. TextDrawSetProportional(Carrinho[1], 1);
  912. TextDrawSetProportional(Carrinho[2], 1);
  913. TextDrawSetProportional(Carrinho[3], 1);
  914. TextDrawSetProportional(Carrinho[4], 1);
  915.  
  916. //Mapa
  917. Mapa[0] = TextDrawCreate(10.000000, 430.000000, "~g~Mapa:");
  918. TextDrawBackgroundColor(Mapa[0], 255);
  919. TextDrawFont(Mapa[0], 3);
  920. TextDrawLetterSize(Mapa[0], 0.500000, 1.000000);
  921. TextDrawColor(Mapa[0], -86);
  922. TextDrawSetOutline(Mapa[0], 1);
  923. TextDrawSetProportional(Mapa[0], 1);
  924.  
  925. Mapa[1] = TextDrawCreate(63.000000, 430.000000, " CounterStrike ~g~de~y~ Dr_Pawno");
  926. TextDrawBackgroundColor(Mapa[1], 255);
  927. TextDrawFont(Mapa[1], 0);
  928. TextDrawLetterSize(Mapa[1], 0.500000, 1.000000);
  929. TextDrawColor(Mapa[1], -86);
  930. TextDrawSetOutline(Mapa[1], 1);
  931. TextDrawSetProportional(Mapa[1], 1);
  932.  
  933. //Relógio
  934. Relogio = TextDrawCreate(555.000000, 53.000000, "5:00");
  935. TextDrawBackgroundColor(Relogio, 255);
  936. TextDrawFont(Relogio, 1);
  937. TextDrawLetterSize(Relogio, 0.500000, 1.000000);
  938. TextDrawColor(Relogio, -16776961);
  939. TextDrawSetOutline(Relogio, 1);
  940. TextDrawSetProportional(Relogio, 1);
  941.  
  942. //Preto
  943. FundoPreto = TextDrawCreate(650.000000, 0.000000, "Preto");
  944. TextDrawBackgroundColor(FundoPreto, 255);
  945. TextDrawFont(FundoPreto, 1);
  946. TextDrawLetterSize(FundoPreto, 0.500000, 50.200000);
  947. TextDrawColor(FundoPreto, 0);
  948. TextDrawSetOutline(FundoPreto, 0);
  949. TextDrawSetProportional(FundoPreto, 1);
  950. TextDrawSetShadow(FundoPreto, 0);
  951. TextDrawUseBox(FundoPreto, 1);
  952. TextDrawBoxColor(FundoPreto, 255);
  953. TextDrawTextSize(FundoPreto, -13.000000, 44.000000);
  954.  
  955. //Team Win
  956. TeamWinner[0] = TextDrawCreate(280.000000, 330.000000, "Terrorists");
  957. TextDrawBackgroundColor(TeamWinner[0], -1717986902);
  958. TextDrawFont(TeamWinner[0], 1);
  959. TextDrawLetterSize(TeamWinner[0], 0.500000, 1.000000);
  960. TextDrawColor(TeamWinner[0], 6488319);
  961. TextDrawSetOutline(TeamWinner[0], 1);
  962. TextDrawSetProportional(TeamWinner[0], 1);
  963.  
  964. TeamWinner[1] = TextDrawCreate(246.000000, 330.000000, "Counter Terrorists");
  965. TextDrawBackgroundColor(TeamWinner[1], -1717986358);
  966. TextDrawFont(TeamWinner[1], 1);
  967. TextDrawLetterSize(TeamWinner[1], 0.500000, 1.000000);
  968. TextDrawColor(TeamWinner[1], 6488319);
  969. TextDrawSetOutline(TeamWinner[1], 1);
  970. TextDrawSetProportional(TeamWinner[1], 1);
  971.  
  972. TeamWinner[2] = TextDrawCreate(281.000000, 330.000000, "No Team");
  973. TextDrawBackgroundColor(TeamWinner[2], -1717986902);
  974. TextDrawFont(TeamWinner[2], 1);
  975. TextDrawLetterSize(TeamWinner[2], 0.500000, 1.000000);
  976. TextDrawColor(TeamWinner[2], 6488319);
  977. TextDrawSetOutline(TeamWinner[2], 1);
  978. TextDrawSetProportional(TeamWinner[2], 1);
  979.  
  980. TeamWinner[3] = TextDrawCreate(305.000000, 348.000000, "Win");
  981. TextDrawBackgroundColor(TeamWinner[3], -1717986358);
  982. TextDrawFont(TeamWinner[3], 1);
  983. TextDrawLetterSize(TeamWinner[3], 0.500000, 1.000000);
  984. TextDrawColor(TeamWinner[3], 6750207);
  985. TextDrawSetOutline(TeamWinner[3], 1);
  986. TextDrawSetProportional(TeamWinner[3], 1);
  987.  
  988. //Mapa
  989. CarregarMapa(random(sizeof(MapasExistentes)));
  990. for(new i = 0; i < 10; i++)
  991. {
  992. VotacaoMapa[i][0] = -1;
  993. VotacaoMapa[i][1] = 0;
  994. }
  995. for(new i = 0; i < sizeof(MapasExistentes); i++) VotandoMapa[i] = false;
  996.  
  997. SetTimer("RelogioMapa", 1000, true);
  998. SetTimer("SecondUpdate", 1000, true);
  999. return true;
  1000. }
  1001. /*------------------------------------------------------------------------------
  1002. --------------------------------------------------------------------------------
  1003. ------------------------------------------------------------------------------*/
  1004. public OnPlayerConnect(playerid)
  1005. {
  1006. SetPlayerColor(playerid, 0xFFFFFFFF);
  1007. new string[128];
  1008. SetLog("Connects", PlayerName(playerid));
  1009. i_Info[playerid][iAdmin] = 0;
  1010. i_Info[playerid][iKills] = 0;
  1011. i_Info[playerid][iDeaths] = 0;
  1012. i_Info[playerid][iMuted] = 0;
  1013. i_Info[playerid][iMoney] = 5000;
  1014. i_Info[playerid][iLogado] = false;
  1015. i_Info[playerid][iSpawnado] = false;
  1016. i_Info[playerid][iTeam] = TEAM_DESCONHECIDA;
  1017. format(string, sizeof(string), "[INFO: {F5C00A}%s entrou no Servidor{00FF00}.]", PlayerName(playerid));
  1018. SendClientMessageToAll(CorVerde, string);
  1019. return true;
  1020. }
  1021. /*------------------------------------------------------------------------------
  1022. --------------------------------------------------------------------------------
  1023. ------------------------------------------------------------------------------*/
  1024. public OnPlayerDisconnect(playerid, reason)
  1025. {
  1026. new LogString[64],
  1027. string[128];
  1028. switch(reason)
  1029. {
  1030. case 0: format(LogString, sizeof(LogString), "%s: Problemas de Conexão/Crach.", PlayerName(playerid));
  1031. case 1: format(LogString, sizeof(LogString), "%s.", PlayerName(playerid));
  1032. case 2: format(LogString, sizeof(LogString), "%s: Kick/Ban.", PlayerName(playerid));
  1033. }
  1034. SetLog("Disconnects", LogString);
  1035. SavePlayer(playerid);
  1036. format(string, sizeof(string), "[INFO: {F5C00A}%s saiu do Servidor{00FF00}.]", PlayerName(playerid));
  1037. SendClientMessageToAll(CorVerde, string);
  1038. return true;
  1039. }
  1040. /*------------------------------------------------------------------------------
  1041. --------------------------------------------------------------------------------
  1042. ------------------------------------------------------------------------------*/
  1043. public OnPlayerRequestClass(playerid)
  1044. {
  1045. if(i_Info[playerid][iLogado]) return SpawnPlayer(playerid);
  1046.  
  1047. new string[128];
  1048. format(string, sizeof(string), "%s%s.txt", PastaJogadores, PlayerName(playerid));
  1049. if(!fexist(string))
  1050. {
  1051. ShowPlayerDialog(playerid, BOX_REGISTER, DIALOG_STYLE_INPUT, "Registrar:", "Coloque uma senha abaixo para se registrar:", "Registrar", "Sair");
  1052. }
  1053. else
  1054. {
  1055. ShowPlayerDialog(playerid, BOX_LOGIN, DIALOG_STYLE_INPUT, "Logar:", "Coloque sua senha abaixo para logar:", "Logar", "Sair");
  1056. }
  1057. return true;
  1058. }
  1059. /*------------------------------------------------------------------------------
  1060. --------------------------------------------------------------------------------
  1061. ------------------------------------------------------------------------------*/
  1062. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1063. {
  1064. if(dialogid == BOX_REGISTER) //ID 0
  1065. {
  1066. if(!response)
  1067. {
  1068. Kick(playerid);
  1069. return false;
  1070. }
  1071. if(!strlen(inputtext))
  1072. {
  1073. ShowPlayerDialog(playerid, BOX_REGISTER, DIALOG_STYLE_INPUT, "Registrar:", "Coloque uma senha abaixo para se registrar:", "Registrar", "Sair");
  1074. return false;
  1075. }
  1076. RegisterPlayer(playerid, inputtext);
  1077. return true;
  1078. }
  1079. else if(dialogid == BOX_LOGIN) //ID 1
  1080. {
  1081. if(!response)
  1082. {
  1083. Kick(playerid);
  1084. return false;
  1085. }
  1086. if(!strlen(inputtext))
  1087. {
  1088. ShowPlayerDialog(playerid, BOX_LOGIN, DIALOG_STYLE_INPUT, "Logar:", "Coloque sua senha abaixo para logar:", "Logar", "Sair");
  1089. return false;
  1090. }
  1091. LogPlayer(playerid, inputtext);
  1092. return true;
  1093. }
  1094. else if(dialogid == BOX_TEAM) //ID 2
  1095. {
  1096. if(listitem == 0)
  1097. {
  1098. i_Info[playerid][iSkin] = 285;
  1099. i_Info[playerid][iTeam] = TEAM_CONTRA;
  1100. SetPlayerColor(playerid, 0x0066FFFF);
  1101. }
  1102. else if(listitem == 1)
  1103. {
  1104. i_Info[playerid][iSkin] = 280;
  1105. i_Info[playerid][iTeam] = TEAM_CONTRA;
  1106. SetPlayerColor(playerid, 0x0066FFFF);
  1107. }
  1108. else if(listitem == 2)
  1109. {
  1110. i_Info[playerid][iSkin] = 287;
  1111. i_Info[playerid][iTeam] = TEAM_CONTRA;
  1112. SetPlayerColor(playerid, 0x0066FFFF);
  1113. }
  1114. else if(listitem == 3)
  1115. {
  1116. i_Info[playerid][iSkin] = 28;
  1117. i_Info[playerid][iTeam] = TEAM_TERRORISTA;
  1118. SetPlayerColor(playerid, 0xFF0000FF);
  1119. }
  1120. else if(listitem == 4)
  1121. {
  1122. i_Info[playerid][iSkin] = 294;
  1123. i_Info[playerid][iTeam] = TEAM_TERRORISTA;
  1124. SetPlayerColor(playerid, 0xFF0000FF);
  1125. }
  1126. else
  1127. {
  1128. i_Info[playerid][iSkin] = 293;
  1129. i_Info[playerid][iTeam] = TEAM_TERRORISTA;
  1130. SetPlayerColor(playerid, 0xFF0000FF);
  1131. }
  1132. SpawnPlayer(playerid);
  1133. return true;
  1134. }
  1135. else if(dialogid == BOX_VOTACAO) //ID 3
  1136. {
  1137. new string[128];
  1138. VotacaoMapa[listitem][1] ++;
  1139. format(string, sizeof(string), "Você votou no mapa %s.", PegarNomeDoMapa(VotacaoMapa[listitem][0]));
  1140. SendClientMessage(playerid, CorBranco, string);
  1141. SendClientMessage(playerid, CorBranco, "Espere o fim da votação ({FF0000}Relogio{FFFFFF}).");
  1142. }
  1143. return false;
  1144. }
  1145. /*------------------------------------------------------------------------------
  1146. --------------------------------------------------------------------------------
  1147. ------------------------------------------------------------------------------*/
  1148. public OnPlayerSpawn(playerid)
  1149. {
  1150. new iSpawn = i_Info[playerid][iTeam]-1;
  1151. SetPlayerPos(playerid, MapInfo[mSpawnX][iSpawn], MapInfo[mSpawnY][iSpawn], MapInfo[mSpawnZ][iSpawn]);
  1152. SetPlayerFacingAngle(playerid, MapInfo[mSpawnA][iSpawn]);
  1153. SetPlayerSkin(playerid, i_Info[playerid][iSkin]);
  1154. SetPlayerHealth(playerid, 100.0);
  1155. SetPlayerArmour(playerid, 0.0);
  1156. TextDrawHideForPlayer(playerid, FundoPreto);
  1157. TextDrawHideForPlayer(playerid, TeamWinner[0]);
  1158. TextDrawHideForPlayer(playerid, TeamWinner[1]);
  1159. TextDrawHideForPlayer(playerid, TeamWinner[2]);
  1160. TextDrawHideForPlayer(playerid, TeamWinner[3]);
  1161. ResetPlayerWeaponSkill(playerid);
  1162. ResetPlayerMoney(playerid);
  1163. GivePlayerMoney(playerid, i_Info[playerid][iMoney]);
  1164. if(MapInfo[mSpawnArmas][0] != 0) GivePlayerWeapon(playerid, MapInfo[mSpawnArmas][0], MapInfo[mSpawnBalas][0]);
  1165. if(MapInfo[mSpawnArmas][1] != 0) GivePlayerWeapon(playerid, MapInfo[mSpawnArmas][1], MapInfo[mSpawnBalas][1]);
  1166. if(MapInfo[mSpawnArmas][2] != 0) GivePlayerWeapon(playerid, MapInfo[mSpawnArmas][2], MapInfo[mSpawnBalas][2]);
  1167. if(!i_Info[playerid][iSpawnado]) i_Info[playerid][iSpawnado] = true;
  1168. return true;
  1169. }
  1170. /*------------------------------------------------------------------------------
  1171. --------------------------------------------------------------------------------
  1172. ------------------------------------------------------------------------------*/
  1173. public OnPlayerPickUpPickup(playerid, pickupid)
  1174. {
  1175. if(PickupInfo[pickupid][pModel] != 0 && PickupInfo[pickupid][pModel] != 1240 && PickupInfo[pickupid][pModel] != 1242)
  1176. {
  1177. new Armas[13][3];
  1178. for(new slot = 0; slot < sizeof(Armas); slot++)
  1179. {
  1180. GetPlayerWeaponData(playerid, slot, Armas[slot][0], Armas[slot][1]);
  1181. Armas[slot][2] = GetWeaponSlotByID(Armas[slot][0]);
  1182. if(Armas[slot][0] != 0 && PickupInfo[pickupid][pModel] != GetWeaponModelByID(Armas[slot][0]))
  1183. {
  1184. if(Armas[slot][2] == PickupInfo[pickupid][pArmaSlot])
  1185. {
  1186. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~w~Pressione ~g~TAB~w~ para pegar esta arma", 5000, 3);
  1187. }
  1188. }
  1189. }
  1190. }
  1191. return true;
  1192. }
  1193. /*------------------------------------------------------------------------------
  1194. --------------------------------------------------------------------------------
  1195. ------------------------------------------------------------------------------*/
  1196. public OnPlayerDeath(playerid, killerid, reason)
  1197. {
  1198. new iSpawn = i_Info[playerid][iTeam]-1,
  1199. LogString[64];
  1200. MapInfo[mTeamDeaths][iSpawn] ++;
  1201. i_Info[playerid][iDeaths] ++;
  1202. if(killerid != INVALID_PLAYER_ID || IsPlayerConnected(killerid))
  1203. {
  1204. new kSpawn = i_Info[killerid][iTeam]-1;
  1205. MapInfo[mTeamKills][kSpawn] ++;
  1206. i_Info[killerid][iKills] ++;
  1207. GivePlayerMoneyEx(killerid, 100);
  1208. format(LogString, sizeof(LogString), "%s matou %s. (%d)", PlayerName(killerid), PlayerName(playerid), reason);
  1209. }
  1210. else format(LogString, sizeof(LogString), "%s morreu. (%d)", PlayerName(killerid), reason);
  1211. SendDeathMessage(killerid, playerid, reason);
  1212. SetLog("Mortes_Assassinato", LogString);
  1213. return true;
  1214. }
  1215. /*------------------------------------------------------------------------------
  1216. --------------------------------------------------------------------------------
  1217. ------------------------------------------------------------------------------*/
  1218. public OnPlayerCommandText(playerid, cmdtext[])
  1219. {
  1220. new cmd[128], idx;
  1221. cmd = strtok(cmdtext, idx);
  1222. /*-------------------------------------------------------------------------\
  1223. | COMANDOS NORMAIS |
  1224. \-------------------------------------------------------------------------*/
  1225. if(!strcmp("/ajuda", cmd, true))
  1226. {
  1227. SendClientMessage(playerid, CorAzul, "Comandos:{FFFFFF} /Ajuda, /Stats, /Comprar, /Admins, /TrocarTime e /Creditos.");
  1228. if(i_Info[playerid][iAdmin] == 1) SendClientMessage(playerid, CorAzul, "Moderador:{FFFFFF} /Moderador.");
  1229. else if(i_Info[playerid][iAdmin] == 1) SendClientMessage(playerid, CorAzul, "Admin:{FFFFFF} /Admin.");
  1230. return 1;
  1231. }
  1232. if(!strcmp("/trocartime", cmd, true))
  1233. {
  1234. new Teams[2];
  1235. foreach(Player, i) if(i_Info[i][iLogado] && i_Info[i][iSpawnado] && i_Info[i][iTeam] != TEAM_DESCONHECIDA) Teams[i_Info[i][iTeam]-1] ++;
  1236. new Dialog[256];
  1237. format(Dialog, sizeof(Dialog), "{0066FF}(%02d) Contra-Terrorista - Roupa SWAT\n{0066FF}(%02d) Contra-Terrorista - Roupa Policial\n{0066FF}(%02d) Contra-Terrorista - Roupa Exercito\n{FF0000}(%02d) Terrorista - Negro\n{FF0000}(%02d) Terrorista - Roupa Preta\n{FF0000}(%02d) Terrorista - Roupa de Drogado", Teams[0], Teams[0], Teams[0], Teams[1], Teams[1], Teams[1]);
  1238. ShowPlayerDialog(playerid, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", Dialog, "Escolher", "");
  1239. return 1;
  1240. }
  1241. if(!strcmp("/creditos", cmd, true))
  1242. {
  1243. #define CreditosUsados
  1244. SendClientMessage(playerid, CorAzul, "Creditos:{FFFFFF} Dr_Pawno.");
  1245. return true;
  1246. }
  1247. if(!strcmp("/stats", cmd, true))
  1248. {
  1249. new string[128];
  1250. format(string, sizeof(string), "Seus Stats: Mortes: {FF0000}%04d{FFFFFF} - Assassinatos: {0066FF}%04d", i_Info[playerid][iDeaths], i_Info[playerid][iKills]);
  1251. SendClientMessage(playerid, CorBranco, string);
  1252. return 1;
  1253. }
  1254. if(!strcmp("/admins", cmd, true))
  1255. {
  1256. new bool:AdminsOnline = false,
  1257. string[128];
  1258. SendClientMessage(playerid, CorBranco, "Admins Online:");
  1259. foreach(Player, i)
  1260. {
  1261. if(i_Info[i][iAdmin] > 0)
  1262. {
  1263. if(i_Info[i][iAdmin] == 1) format(string, sizeof(string), "Moderador %s(%d).", PlayerName(i), i);
  1264. else if(i_Info[i][iAdmin] == 2) format(string, sizeof(string), "Admin %s(%d).", PlayerName(i), i);
  1265. SendClientMessage(playerid, CorBranco, string);
  1266. AdminsOnline = true;
  1267. }
  1268. }
  1269. if(!AdminsOnline)
  1270. {
  1271. SendClientMessage(playerid, CorBranco, "Não há admins online.");
  1272. }
  1273. return 1;
  1274. }
  1275. if(!strcmp("/comprar", cmd, true))
  1276. {
  1277. if(!i_Info[playerid][iShop]) return SendClientMessage(playerid, CorVermelho, "Você não pode comprar nada aqui.");
  1278. new tmp[128];
  1279. tmp = strtok(cmdtext, idx);
  1280. if(!strlen(tmp))
  1281. {
  1282. SendClientMessage(playerid, CorVermelho, "Use: /Comprar [Arma]");
  1283. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$050:{FFFF00} Bastao e Faca");
  1284. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$200:{FFFF00} Colete");
  1285. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$300:{FFFF00} Shotgun, 9mm e MP5");
  1286. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$500:{FFFF00} D.Eagle, AK-47 e M4");
  1287. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$700:{FFFF00} C.Shotgun, Tec9 e MicroSMG");
  1288. return true;
  1289. }
  1290. else if(!strcmp("Bastao", tmp, true))
  1291. {
  1292. if(GetPlayerMoneyEx(playerid) < 50) return SendClientMessage(playerid, CorVermelho, "Você não tem R$050.");
  1293. GivePlayerWeapon(playerid, 5, (3*1));
  1294. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou um Bastao por {009900}R$050.");
  1295. GivePlayerMoneyEx(playerid, -50);
  1296. return true;
  1297. }
  1298. else if(!strcmp("Faca", tmp, true))
  1299. {
  1300. if(GetPlayerMoneyEx(playerid) < 50) return SendClientMessage(playerid, CorVermelho, "Você não tem R$050.");
  1301. GivePlayerWeapon(playerid, 4, (3*1));
  1302. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma Faca por {009900}R$050.");
  1303. GivePlayerMoneyEx(playerid, -50);
  1304. return true;
  1305. }
  1306. else if(!strcmp("Colete", tmp, true))
  1307. {
  1308. if(GetPlayerMoneyEx(playerid) < 200) return SendClientMessage(playerid, CorVermelho, "Você não tem R$200.");
  1309. SetPlayerArmour(playerid, 100.0);
  1310. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou um Colete por {009900}R$200.");
  1311. GivePlayerMoneyEx(playerid, -200);
  1312. return true;
  1313. }
  1314. else if(!strcmp("Shotgun", tmp, true))
  1315. {
  1316. if(GetPlayerMoneyEx(playerid) < 300) return SendClientMessage(playerid, CorVermelho, "Você não tem R$300.");
  1317. GivePlayerWeapon(playerid, 25, (3*10));
  1318. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma Shotgun por {009900}R$300.");
  1319. GivePlayerMoneyEx(playerid, -300);
  1320. return true;
  1321. }
  1322. else if(!strcmp("9mm", tmp, true))
  1323. {
  1324. if(GetPlayerMoneyEx(playerid) < 300) return SendClientMessage(playerid, CorVermelho, "Você não tem R$300.");
  1325. GivePlayerWeapon(playerid, 22, (3*17));
  1326. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma 9mm por {009900}R$300.");
  1327. GivePlayerMoneyEx(playerid, -300);
  1328. return true;
  1329. }
  1330. else if(!strcmp("MP5", tmp, true))
  1331. {
  1332. if(GetPlayerMoneyEx(playerid) < 300) return SendClientMessage(playerid, CorVermelho, "Você não tem R$300.");
  1333. GivePlayerWeapon(playerid, 29, (3*30));
  1334. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma MP5 por {009900}R$300.");
  1335. GivePlayerMoneyEx(playerid, -300);
  1336. return true;
  1337. }
  1338. else if(!strcmp("D.Eagle", tmp, true))
  1339. {
  1340. if(GetPlayerMoneyEx(playerid) < 500) return SendClientMessage(playerid, CorVermelho, "Você não tem R$500.");
  1341. GivePlayerWeapon(playerid, 24, (3*7));
  1342. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma D.Eagle por {009900}R$500.");
  1343. GivePlayerMoneyEx(playerid, -500);
  1344. return true;
  1345. }
  1346. else if(!strcmp("AK-47", tmp, true))
  1347. {
  1348. if(GetPlayerMoneyEx(playerid) < 500) return SendClientMessage(playerid, CorVermelho, "Você não tem R$500.");
  1349. GivePlayerWeapon(playerid, 30, (3*30));
  1350. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma AK-47 por {009900}R$500.");
  1351. GivePlayerMoneyEx(playerid, -500);
  1352. return true;
  1353. }
  1354. else if(!strcmp("M4", tmp, true))
  1355. {
  1356. if(GetPlayerMoneyEx(playerid) < 500) return SendClientMessage(playerid, CorVermelho, "Você não tem R$500.");
  1357. GivePlayerWeapon(playerid, 31, (3*30));
  1358. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma M4 por {009900}R$500.");
  1359. GivePlayerMoneyEx(playerid, -500);
  1360. return true;
  1361. }
  1362. else if(!strcmp("C.Shotgun", tmp, true))
  1363. {
  1364. if(GetPlayerMoneyEx(playerid) < 700) return SendClientMessage(playerid, CorVermelho, "Você não tem R$500.");
  1365. GivePlayerWeapon(playerid, 27, (3*7));
  1366. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma C.Shotgun por {009900}R$500.");
  1367. GivePlayerMoneyEx(playerid, -700);
  1368. return true;
  1369. }
  1370. else if(!strcmp("Tec9", tmp, true))
  1371. {
  1372. if(GetPlayerMoneyEx(playerid) < 700) return SendClientMessage(playerid, CorVermelho, "Você não tem R$500.");
  1373. GivePlayerWeapon(playerid, 32, (3*50));
  1374. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma Tec9 por {009900}R$500.");
  1375. GivePlayerMoneyEx(playerid, -700);
  1376. return true;
  1377. }
  1378. else if(!strcmp("MicroSMG", tmp, true))
  1379. {
  1380. if(GetPlayerMoneyEx(playerid) < 700) return SendClientMessage(playerid, CorVermelho, "Você não tem R$500.");
  1381. GivePlayerWeapon(playerid, 28, (3*50));
  1382. SendClientMessage(playerid, CorAzul, "Loja{FFFFFF}: Você comprou uma MicroSMG por {009900}R$500.");
  1383. GivePlayerMoneyEx(playerid, -700);
  1384. return true;
  1385. }
  1386. else
  1387. {
  1388. SendClientMessage(playerid, CorVermelho, "Use: /Comprar [Arma]");
  1389. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$050{00FFFF}: Bastao e Faca");
  1390. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$200{00FFFF}: Colete");
  1391. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$300{00FFFF}: Shotgun, 9mm e MP5");
  1392. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$500{00FFFF}: D.Eagle, AK-47 e M4");
  1393. SendClientMessage(playerid, CorBranco, "Armas: {009900}R$700{00FFFF}: C.Shotgun, Tec9 e MicroSMG");
  1394. return true;
  1395. }
  1396. }
  1397. /*-------------------------------------------------------------------------\
  1398. | COMANDOS MODERADOR |
  1399. \-------------------------------------------------------------------------*/
  1400. if(!strcmp("/moderador", cmd, true))
  1401. {
  1402. if(i_Info[playerid][iAdmin] != 1) return SendClientMessage(playerid, CorVermelho, "Você não pode usar este comando.");
  1403. new tmp[128];
  1404. tmp = strtok(cmdtext, idx);
  1405. if(!strlen(tmp))
  1406. {
  1407. SendClientMessage(playerid, CorVermelho, "Use: /Moderador [Funcao]");
  1408. SendClientMessage(playerid, CorBranco, "Funcoes: {00FFFF}ChangeMap, SetMap, Mute, UnMute, StartPoll, GoTo, GetHere, Kick");
  1409. return true;
  1410. }
  1411. new LogString[128];
  1412. if(!strcmp("changemap", tmp, true))
  1413. {
  1414. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1415. new str[128];
  1416. format(str, sizeof(str), "[MAPA: {F5C00A}Mapa Trocado pelo Admin %s.{00FF00}]", PlayerName(playerid));
  1417. LimparMapa();
  1418. CarregarMapa(random(sizeof(MapasExistentes)));
  1419. SendClientMessageToAll(CorVerde, str);
  1420. printf("[MAPA: Mapa Trocado pelo Admin %s.]", PlayerName(playerid));
  1421. foreach(Player, i)
  1422. {
  1423. if(i_Info[i][iLogado])
  1424. {
  1425. TextDrawShowForPlayer(i, FundoPreto);
  1426. i_Info[i][iTeam] = TEAM_DESCONHECIDA;
  1427. ShowPlayerDialog(i, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", "{0066FF}(00) Contra-Terrorista - Roupa SWAT\n{0066FF}(00) Contra-Terrorista - Roupa Policial\n{0066FF}(00) Contra-Terrorista - Roupa Exercito\n{FF0000}(00) Terrorista - Negro\n{FF0000}(00) Terrorista - Roupa Preta\n{FF0000}(00) Terrorista - Roupa de Drogado", "Escolher", "");
  1428. TogglePlayerControllable(i, false);
  1429. SetPlayerPos(i, 0.0, 0.0, 0.0);
  1430. }
  1431. }
  1432. format(LogString, sizeof(LogString), "%s trocou de mapa.", PlayerName(playerid));
  1433. SetLog("Moderador", LogString);
  1434. return true;
  1435. }
  1436. else if(!strcmp("setmap", tmp, true))
  1437. {
  1438. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1439. tmp = strtok(cmdtext, idx);
  1440. if(!strlen(tmp))
  1441. {
  1442. SendClientMessage(playerid, CorVermelho, "Use: /Moderador SetMap [Nome]");
  1443. return true;
  1444. }
  1445. for(new m = 0; m < sizeof(MapasExistentes); m++)
  1446. {
  1447. if(!strcmp(MapasExistentes[m], tmp, true))
  1448. {
  1449. new str[128];
  1450. format(str, sizeof(str), "[MAPA: {F5C00A}Mapa Trocado pelo Admin %s.{00FF00}]", PlayerName(playerid));
  1451. LimparMapa();
  1452. CarregarMapa(m);
  1453. SendClientMessageToAll(CorVerde, str);
  1454. printf("[MAPA: Mapa Trocado pelo Admin %s.]", PlayerName(playerid));
  1455. foreach(Player, i)
  1456. {
  1457. if(i_Info[i][iLogado])
  1458. {
  1459. TextDrawShowForPlayer(i, FundoPreto);
  1460. i_Info[i][iTeam] = TEAM_DESCONHECIDA;
  1461. ShowPlayerDialog(i, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", "{0066FF}(00) Contra-Terrorista - Roupa SWAT\n{0066FF}(00) Contra-Terrorista - Roupa Policial\n{0066FF}(00) Contra-Terrorista - Roupa Exercito\n{FF0000}(00) Terrorista - Negro\n{FF0000}(00) Terrorista - Roupa Preta\n{FF0000}(00) Terrorista - Roupa de Drogado", "Escolher", "");
  1462. TogglePlayerControllable(i, false);
  1463. SetPlayerPos(i, 0.0, 0.0, 0.0);
  1464. }
  1465. }
  1466. format(LogString, sizeof(LogString), "%s trocou o mapa para %s (%d).", PlayerName(playerid), PegarNomeDoMapa(m), m);
  1467. SetLog("Moderador", LogString);
  1468. return true;
  1469. }
  1470. }
  1471. return SendClientMessage(playerid, CorVermelho, "Mapa Invalido.");
  1472. }
  1473. else if(!strcmp("mute", tmp, true))
  1474. {
  1475. tmp = strtok(cmdtext, idx);
  1476. if(!strlen(tmp))
  1477. {
  1478. SendClientMessage(playerid, CorVermelho, "Use: /Moderador Mute [Jogador] [Minutos]");
  1479. return true;
  1480. }
  1481. new i = ReturnUser(tmp);
  1482. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1483. tmp = strtok(cmdtext, idx);
  1484. if(!strlen(tmp))
  1485. {
  1486. SendClientMessage(playerid, CorVermelho, "Use: /Moderador Mute [Jogador] [Minutos]");
  1487. return true;
  1488. }
  1489. new t_cmd = strval(tmp);
  1490. if(t_cmd < 1 || t_cmd > 60) return SendClientMessage(playerid, CorVermelho, "Minutos Invalidos. Use de 1 á 60.");
  1491. i_Info[i][iMuted] = t_cmd * 60;
  1492. new str[128];
  1493. format(str, sizeof(str), "[ADMIN: {FF0000}Você foi Mutado pelo Admin %s.{FFFFFF}]", PlayerName(playerid));
  1494. SendClientMessage(i, CorBranco, str);
  1495. format(str, sizeof(str), "[ADMIN: {FF0000}Você mutou %s.{FFFFFF}]", PlayerName(i));
  1496. SendClientMessage(playerid, CorBranco, str);
  1497. format(LogString, sizeof(LogString), "%s mutou %s por %d minutos.", PlayerName(playerid), PlayerName(i), t_cmd);
  1498. SetLog("Moderador", LogString);
  1499. return true;
  1500. }
  1501. else if(!strcmp("unmute", tmp, true))
  1502. {
  1503. tmp = strtok(cmdtext, idx);
  1504. if(!strlen(tmp))
  1505. {
  1506. return SendClientMessage(playerid, CorVermelho, "Use: /Moderador UnMute [Jogador].");
  1507. }
  1508. new i = ReturnUser(tmp);
  1509. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1510. if(i_Info[i][iMuted] == 0) return SendClientMessage(playerid, CorVermelho, "Jogador não esta mutado.");
  1511. i_Info[i][iMuted] = 0;
  1512. new str[128];
  1513. format(str, sizeof(str), "[ADMIN: {00FFFF}Você foi Desmutado pelo Admin %s.{FFFFFF}]", PlayerName(playerid));
  1514. SendClientMessage(i, CorBranco, str);
  1515. format(str, sizeof(str), "[ADMIN: {00FFFF}Você desmutou %s.{FFFFFF}]", PlayerName(i));
  1516. SendClientMessage(playerid, CorBranco, str);
  1517. format(LogString, sizeof(LogString), "%s desmutou %s.", PlayerName(playerid), PlayerName(i));
  1518. SetLog("Moderador", LogString);
  1519. return true;
  1520. }
  1521. else if(!strcmp("startpoll", tmp, true))
  1522. {
  1523. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1524. new str[128];
  1525. format(str, sizeof(str), "[ADMIN: {00FFFF}%s Iniciou a Votação.{FFFFFF}]", PlayerName(playerid));
  1526. SendClientMessageToAll(CorBranco, str);
  1527. IniciarVotacao();
  1528. format(LogString, sizeof(LogString), "%s iniciou uma votação.", PlayerName(playerid));
  1529. SetLog("Moderador", LogString);
  1530. return true;
  1531. }
  1532. else if(!strcmp("goto", tmp, true))
  1533. {
  1534. tmp = strtok(cmdtext, idx);
  1535. if(!strlen(tmp))
  1536. {
  1537. return SendClientMessage(playerid, CorVermelho, "Use: /Moderador GoTo [Jogador].");
  1538. }
  1539. new i = ReturnUser(tmp);
  1540. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1541. if(!i_Info[i][iSpawnado] || i_Info[i][iTeam] == TEAM_DESCONHECIDA) return SendClientMessage(playerid, CorVermelho, "Jogador Não Spawnado.");
  1542. new str[128],
  1543. Float:PosX,
  1544. Float:PosY,
  1545. Float:PosZ;
  1546. GetPlayerPos(i, PosX, PosY, PosZ);
  1547. SetPlayerPos(playerid, PosX, PosY, PosZ+1.5);
  1548. format(str, sizeof(str), "[ADMIN: {00FFFF}%s foi até %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1549. SendClientMessageToAll(CorBranco, str);
  1550. format(LogString, sizeof(LogString), "%s foi até %s.", PlayerName(playerid), PlayerName(i));
  1551. SetLog("Moderador", LogString);
  1552. return true;
  1553. }
  1554. else if(!strcmp("gethere", tmp, true))
  1555. {
  1556. tmp = strtok(cmdtext, idx);
  1557. if(!strlen(tmp))
  1558. {
  1559. return SendClientMessage(playerid, CorVermelho, "Use: /Moderador GetHere [Jogador].");
  1560. }
  1561. new i = ReturnUser(tmp);
  1562. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1563. if(!i_Info[i][iSpawnado] || i_Info[i][iTeam] == TEAM_DESCONHECIDA) return SendClientMessage(playerid, CorVermelho, "Jogador Não Spawnado.");
  1564. new str[128],
  1565. Float:PosX,
  1566. Float:PosY,
  1567. Float:PosZ;
  1568. GetPlayerPos(playerid, PosX, PosY, PosZ);
  1569. SetPlayerPos(i, PosX, PosY, PosZ+1.5);
  1570. format(str, sizeof(str), "[ADMIN: {00FFFF}%s puxou %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1571. SendClientMessageToAll(CorBranco, str);
  1572. format(LogString, sizeof(LogString), "%s puxou %s.", PlayerName(playerid), PlayerName(i));
  1573. SetLog("Moderador", LogString);
  1574. return true;
  1575. }
  1576. else if(!strcmp("kick", tmp, true))
  1577. {
  1578. tmp = strtok(cmdtext, idx);
  1579. if(!strlen(tmp))
  1580. {
  1581. return SendClientMessage(playerid, CorVermelho, "Use: /Moderator Kick [Jogador].");
  1582. }
  1583. new i = ReturnUser(tmp);
  1584. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1585. if(!i_Info[i][iLogado]) return SendClientMessage(playerid, CorVermelho, "Jogador Não Logado.");
  1586. if(i_Info[i][iAdmin] > 0) return SendClientMessage(playerid, CorVermelho, "Você não pode kickar um Admin/Moderador.");
  1587. new str[128];
  1588. format(str, sizeof(str), "[ADMIN: {00FFFF}%s kickou %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1589. SendClientMessageToAll(CorBranco, str);
  1590. Kick(i);
  1591. format(LogString, sizeof(LogString), "%s kickou %s.", PlayerName(playerid), PlayerName(i));
  1592. SetLog("Moderador", LogString);
  1593. return true;
  1594. }
  1595. else
  1596. {
  1597. SendClientMessage(playerid, CorVermelho, "Use: /Moderador [Funcao]");
  1598. SendClientMessage(playerid, CorBranco, "Funcoes: {00FFFF}ChangeMap, SetMap, Mute, UnMute, StartPoll, GoTo, GetHere, Kick");
  1599. return true;
  1600. }
  1601. }
  1602. /*-------------------------------------------------------------------------\
  1603. | COMANDOS ADMIN |
  1604. \-------------------------------------------------------------------------*/
  1605. if(!strcmp("/admin", cmd, true))
  1606. {
  1607. if(i_Info[playerid][iAdmin] != 2) return SendClientMessage(playerid, CorVermelho, "Você não pode usar este comando.");
  1608. new tmp[128];
  1609. tmp = strtok(cmdtext, idx);
  1610. if(!strlen(tmp))
  1611. {
  1612. SendClientMessage(playerid, CorVermelho, "Use: /Admin [Funcao]");
  1613. SendClientMessage(playerid, CorBranco, "Funcoes: {00FFFF}ChangeMap, SetMap, Mute, UnMute, RestartServer GoToPos, StartPoll, SetMapTime");
  1614. SendClientMessage(playerid, CorBranco, "Funcoes: {00FFFF}GoTo, GetHere, SetMoney, GiveMoney, SetModerator, Kick, Ban");
  1615. return true;
  1616. }
  1617. new LogString[128];
  1618. if(!strcmp("changemap", tmp, true))
  1619. {
  1620. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1621. new str[128];
  1622. format(str, sizeof(str), "[MAPA: {F5C00A}Mapa Trocado pelo Admin %s.{00FF00}]", PlayerName(playerid));
  1623. LimparMapa();
  1624. CarregarMapa(random(sizeof(MapasExistentes)));
  1625. SendClientMessageToAll(CorVerde, str);
  1626. printf("[MAPA: Mapa Trocado pelo Admin %s.]", PlayerName(playerid));
  1627. foreach(Player, i)
  1628. {
  1629. if(i_Info[i][iLogado])
  1630. {
  1631. TextDrawShowForPlayer(i, FundoPreto);
  1632. i_Info[i][iTeam] = TEAM_DESCONHECIDA;
  1633. ShowPlayerDialog(i, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", "{0066FF}(00) Contra-Terrorista - Roupa SWAT\n{0066FF}(00) Contra-Terrorista - Roupa Policial\n{0066FF}(00) Contra-Terrorista - Roupa Exercito\n{FF0000}(00) Terrorista - Negro\n{FF0000}(00) Terrorista - Roupa Preta\n{FF0000}(00) Terrorista - Roupa de Drogado", "Escolher", "");
  1634. TogglePlayerControllable(i, false);
  1635. SetPlayerPos(i, 0.0, 0.0, 0.0);
  1636. }
  1637. }
  1638. format(LogString, sizeof(LogString), "%s trocou de mapa.", PlayerName(playerid));
  1639. SetLog("Admin", LogString);
  1640. return true;
  1641. }
  1642. else if(!strcmp("setmap", tmp, true))
  1643. {
  1644. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1645. tmp = strtok(cmdtext, idx);
  1646. if(!strlen(tmp))
  1647. {
  1648. SendClientMessage(playerid, CorVermelho, "Use: /Admin SetMap [Nome]");
  1649. return true;
  1650. }
  1651. for(new m = 0; m < sizeof(MapasExistentes); m++)
  1652. {
  1653. if(!strcmp(MapasExistentes[m], tmp, true))
  1654. {
  1655. new str[128];
  1656. format(str, sizeof(str), "[MAPA: {F5C00A}Mapa Trocado pelo Admin %s.{00FF00}]", PlayerName(playerid));
  1657. LimparMapa();
  1658. CarregarMapa(m);
  1659. SendClientMessageToAll(CorVerde, str);
  1660. printf("[MAPA: Mapa Trocado pelo Admin %s.]", PlayerName(playerid));
  1661. foreach(Player, i)
  1662. {
  1663. if(i_Info[i][iLogado])
  1664. {
  1665. TextDrawShowForPlayer(i, FundoPreto);
  1666. i_Info[i][iTeam] = TEAM_DESCONHECIDA;
  1667. ShowPlayerDialog(i, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", "{0066FF}(00) Contra-Terrorista - Roupa SWAT\n{0066FF}(00) Contra-Terrorista - Roupa Policial\n{0066FF}(00) Contra-Terrorista - Roupa Exercito\n{FF0000}(00) Terrorista - Negro\n{FF0000}(00) Terrorista - Roupa Preta\n{FF0000}(00) Terrorista - Roupa de Drogado", "Escolher", "");
  1668. TogglePlayerControllable(i, false);
  1669. SetPlayerPos(i, 0.0, 0.0, 0.0);
  1670. }
  1671. }
  1672. format(LogString, sizeof(LogString), "%s trocou o mapa para %s (%d).", PlayerName(playerid), PegarNomeDoMapa(m), m);
  1673. SetLog("Admin", LogString);
  1674. return true;
  1675. }
  1676. }
  1677. return SendClientMessage(playerid, CorVermelho, "Mapa Invalido.");
  1678. }
  1679. else if(!strcmp("mute", tmp, true))
  1680. {
  1681. tmp = strtok(cmdtext, idx);
  1682. if(!strlen(tmp))
  1683. {
  1684. SendClientMessage(playerid, CorVermelho, "Use: /Admin Mute [Jogador] [Minutos]");
  1685. return true;
  1686. }
  1687. new i = ReturnUser(tmp);
  1688. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1689. tmp = strtok(cmdtext, idx);
  1690. if(!strlen(tmp))
  1691. {
  1692. SendClientMessage(playerid, CorVermelho, "Use: /Admin Mute [Jogador] [Minutos]");
  1693. return true;
  1694. }
  1695. new t_cmd = strval(tmp);
  1696. if(t_cmd < 1 || t_cmd > 60) return SendClientMessage(playerid, CorVermelho, "Minutos Invalidos. Use de 1 á 60.");
  1697. i_Info[i][iMuted] = t_cmd * 60;
  1698. new str[128];
  1699. format(str, sizeof(str), "[ADMIN: {FF0000}Você foi Mutado pelo Admin %s.{FFFFFF}]", PlayerName(playerid));
  1700. SendClientMessage(i, CorBranco, str);
  1701. format(str, sizeof(str), "[ADMIN: {FF0000}Você mutou %s.{FFFFFF}]", PlayerName(i));
  1702. SendClientMessage(playerid, CorBranco, str);
  1703. format(LogString, sizeof(LogString), "%s mutou %s por %d minutos.", PlayerName(playerid), PlayerName(i), t_cmd);
  1704. SetLog("Admin", LogString);
  1705. return true;
  1706. }
  1707. else if(!strcmp("unmute", tmp, true))
  1708. {
  1709. tmp = strtok(cmdtext, idx);
  1710. if(!strlen(tmp))
  1711. {
  1712. return SendClientMessage(playerid, CorVermelho, "Use: /Admin UnMute [Jogador].");
  1713. }
  1714. new i = ReturnUser(tmp);
  1715. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1716. if(i_Info[i][iMuted] == 0) return SendClientMessage(playerid, CorVermelho, "Jogador não esta mutado.");
  1717. i_Info[i][iMuted] = 0;
  1718. new str[128];
  1719. format(str, sizeof(str), "[ADMIN: {00FFFF}Você foi Desmutado pelo Admin %s.{FFFFFF}]", PlayerName(playerid));
  1720. SendClientMessage(i, CorBranco, str);
  1721. format(str, sizeof(str), "[ADMIN: {00FFFF}Você desmutou %s.{FFFFFF}]", PlayerName(i));
  1722. SendClientMessage(playerid, CorBranco, str);
  1723. format(LogString, sizeof(LogString), "%s desmutou %s.", PlayerName(playerid), PlayerName(i));
  1724. SetLog("Admin", LogString);
  1725. return true;
  1726. }
  1727. else if(!strcmp("restartserver", tmp, true))
  1728. {
  1729. new str[128];
  1730. format(str, sizeof(str), "[ADMIN: {00FFFF}%s Reiniciou o Servidor.{FFFFFF}]", PlayerName(playerid));
  1731. SendClientMessageToAll(CorBranco, str);
  1732. format(LogString, sizeof(LogString), "%s reiniciou o server.", PlayerName(playerid));
  1733. SetLog("Admin", LogString);
  1734. GameModeExit();
  1735. return true;
  1736. }
  1737. else if(!strcmp("gotopos", tmp, true))
  1738. {
  1739. tmp = strtok(cmdtext, idx);
  1740. if(!strlen(tmp))
  1741. {
  1742. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GoToPos [X] [Y] [Z]");
  1743. }
  1744. new Float:i_X = floatstr(tmp);
  1745. tmp = strtok(cmdtext, idx);
  1746. if(!strlen(tmp))
  1747. {
  1748. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GoToPos [X] [Y] [Z]");
  1749. }
  1750. new Float:i_Y = floatstr(tmp);
  1751. tmp = strtok(cmdtext, idx);
  1752. if(!strlen(tmp))
  1753. {
  1754. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GoToPos [X] [Y] [Z]");
  1755. }
  1756. new Float:i_Z = floatstr(tmp);
  1757. SetPlayerPos(playerid, i_X, i_Y, i_Z);
  1758. format(LogString, sizeof(LogString), "%s foi até a posiçao %f, %f, %f.", PlayerName(playerid), i_X, i_Y, i_Z);
  1759. SetLog("Admin", LogString);
  1760. return true;
  1761. }
  1762. else if(!strcmp("startpoll", tmp, true))
  1763. {
  1764. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1765. new str[128];
  1766. format(str, sizeof(str), "[ADMIN: {00FFFF}%s Iniciou a Votação.{FFFFFF}]", PlayerName(playerid));
  1767. SendClientMessageToAll(CorBranco, str);
  1768. IniciarVotacao();
  1769. format(LogString, sizeof(LogString), "%s iniciou uma votação.", PlayerName(playerid));
  1770. SetLog("Admin", LogString);
  1771. return true;
  1772. }
  1773. else if(!strcmp("setmaptime", tmp, true))
  1774. {
  1775. if(MapInfo[mTempoRelogio] == 0) return SendClientMessage(playerid, CorVermelho, "Você não pode parar uma votação.");
  1776. tmp = strtok(cmdtext, idx);
  1777. if(!strlen(tmp) || strval(tmp) > 59 || strval(tmp) < 0)
  1778. {
  1779. return SendClientMessage(playerid, CorVermelho, "Use: /Admin SetMapTime [Minutos] [Segundos]");
  1780. }
  1781. new M = strval(tmp);
  1782. tmp = strtok(cmdtext, idx);
  1783. if(!strlen(tmp) || strval(tmp) > 59 || strval(tmp) < 0)
  1784. {
  1785. return SendClientMessage(playerid, CorVermelho, "Use: /Admin SetMapTime [Minutos] [Segundos]");
  1786. }
  1787. new S = strval(tmp),
  1788. Tempo = (M * 60) + S,
  1789. str[128];
  1790. MapInfo[mTempoRelogio] = Tempo;
  1791. format(str, sizeof(str), "[ADMIN: {00FFFF}%s trocou o tempo do mapa para %d minutos e %02d segundos.{FFFFFF}]", PlayerName(playerid), M, S);
  1792. SendClientMessageToAll(CorBranco, str);
  1793. format(LogString, sizeof(LogString), "%s trocou o tempo do mapa para %dm e %ds.", PlayerName(playerid), M, S);
  1794. SetLog("Admin", LogString);
  1795. return true;
  1796. }
  1797. else if(!strcmp("goto", tmp, true))
  1798. {
  1799. tmp = strtok(cmdtext, idx);
  1800. if(!strlen(tmp))
  1801. {
  1802. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GoTo [Jogador].");
  1803. }
  1804. new i = ReturnUser(tmp);
  1805. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1806. if(!i_Info[i][iSpawnado] || i_Info[i][iTeam] == TEAM_DESCONHECIDA) return SendClientMessage(playerid, CorVermelho, "Jogador Não Spawnado.");
  1807. new str[128],
  1808. Float:PosX,
  1809. Float:PosY,
  1810. Float:PosZ;
  1811. GetPlayerPos(i, PosX, PosY, PosZ);
  1812. SetPlayerPos(playerid, PosX, PosY, PosZ+1.5);
  1813. format(str, sizeof(str), "[ADMIN: {00FFFF}%s foi até %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1814. SendClientMessageToAll(CorBranco, str);
  1815. format(LogString, sizeof(LogString), "%s foi até %s.", PlayerName(playerid), PlayerName(i));
  1816. SetLog("Admin", LogString);
  1817. return true;
  1818. }
  1819. else if(!strcmp("gethere", tmp, true))
  1820. {
  1821. tmp = strtok(cmdtext, idx);
  1822. if(!strlen(tmp))
  1823. {
  1824. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GetHere [Jogador].");
  1825. }
  1826. new i = ReturnUser(tmp);
  1827. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1828. if(!i_Info[i][iSpawnado] || i_Info[i][iTeam] == TEAM_DESCONHECIDA) return SendClientMessage(playerid, CorVermelho, "Jogador Não Spawnado.");
  1829. new str[128],
  1830. Float:PosX,
  1831. Float:PosY,
  1832. Float:PosZ;
  1833. GetPlayerPos(playerid, PosX, PosY, PosZ);
  1834. SetPlayerPos(i, PosX, PosY, PosZ+1.5);
  1835. format(str, sizeof(str), "[ADMIN: {00FFFF}%s puxou %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1836. SendClientMessageToAll(CorBranco, str);
  1837. format(LogString, sizeof(LogString), "%s puxou %s.", PlayerName(playerid), PlayerName(i));
  1838. SetLog("Admin", LogString);
  1839. return true;
  1840. }
  1841. else if(!strcmp("setmoney", tmp, true))
  1842. {
  1843. tmp = strtok(cmdtext, idx);
  1844. if(!strlen(tmp))
  1845. {
  1846. return SendClientMessage(playerid, CorVermelho, "Use: /Admin SetMoney [Jogador] [Quantidade].");
  1847. }
  1848. new i = ReturnUser(tmp);
  1849. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1850. if(!i_Info[i][iLogado]) return SendClientMessage(playerid, CorVermelho, "Jogador Não Logado.");
  1851. tmp = strtok(cmdtext, idx);
  1852. if(!strlen(tmp))
  1853. {
  1854. return SendClientMessage(playerid, CorVermelho, "Use: /Admin SetMoney [Jogador] [Quantidade].");
  1855. }
  1856. new Quantidade = strval(tmp);
  1857. new str[128];
  1858. SetPlayerMoneyEx(i, Quantidade);
  1859. format(str, sizeof(str), "[ADMIN: {00FFFF}%s mudou o dinheiro de %s para %d.{FFFFFF}]", PlayerName(playerid), PlayerName(i), Quantidade);
  1860. SendClientMessageToAll(CorBranco, str);
  1861. format(LogString, sizeof(LogString), "%s mudou o dinheiro de %s para %d.", PlayerName(playerid), PlayerName(i), Quantidade);
  1862. SetLog("Admin", LogString);
  1863. return true;
  1864. }
  1865. else if(!strcmp("givemoney", tmp, true))
  1866. {
  1867. tmp = strtok(cmdtext, idx);
  1868. if(!strlen(tmp))
  1869. {
  1870. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GiveMoney [Jogador] [Quantidade].");
  1871. }
  1872. new i = ReturnUser(tmp);
  1873. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1874. if(!i_Info[i][iLogado]) return SendClientMessage(playerid, CorVermelho, "Jogador Não Logado.");
  1875. tmp = strtok(cmdtext, idx);
  1876. if(!strlen(tmp))
  1877. {
  1878. return SendClientMessage(playerid, CorVermelho, "Use: /Admin GiveMoney [Jogador] [Quantidade].");
  1879. }
  1880. new Quantidade = strval(tmp);
  1881. new str[128];
  1882. GivePlayerMoneyEx(i, Quantidade);
  1883. format(str, sizeof(str), "[ADMIN: {00FFFF}%s deu $%d para %s.{FFFFFF}]", PlayerName(playerid), Quantidade, PlayerName(i));
  1884. SendClientMessageToAll(CorBranco, str);
  1885. format(LogString, sizeof(LogString), "%s deu $%d para %s.", PlayerName(playerid), Quantidade, PlayerName(i));
  1886. SetLog("Admin", LogString);
  1887. return true;
  1888. }
  1889. else if(!strcmp("setmoderator", tmp, true))
  1890. {
  1891. tmp = strtok(cmdtext, idx);
  1892. if(!strlen(tmp))
  1893. {
  1894. return SendClientMessage(playerid, CorVermelho, "Use: /Admin SetModerator [Jogador].");
  1895. }
  1896. new i = ReturnUser(tmp);
  1897. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1898. if(!i_Info[i][iLogado]) return SendClientMessage(playerid, CorVermelho, "Jogador Não Logado.");
  1899. if(i_Info[i][iAdmin] > 0) return SendClientMessage(playerid, CorVermelho, "Este jogador já é Moderador/Admin.");
  1900. new str[128];
  1901. i_Info[i][iAdmin] = 1;
  1902. format(str, sizeof(str), "[ADMIN: {00FFFF}%s colocou %s de Moderador.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1903. SendClientMessageToAll(CorBranco, str);
  1904. format(LogString, sizeof(LogString), "%s colocou %s de Moderador.", PlayerName(playerid), PlayerName(i));
  1905. SetLog("Admin", LogString);
  1906. return true;
  1907. }
  1908. else if(!strcmp("kick", tmp, true))
  1909. {
  1910. tmp = strtok(cmdtext, idx);
  1911. if(!strlen(tmp))
  1912. {
  1913. return SendClientMessage(playerid, CorVermelho, "Use: /Admin Kick [Jogador].");
  1914. }
  1915. new i = ReturnUser(tmp);
  1916. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1917. if(!i_Info[i][iLogado]) return SendClientMessage(playerid, CorVermelho, "Jogador Não Logado.");
  1918. new str[128];
  1919. format(str, sizeof(str), "[ADMIN: {00FFFF}%s kickou %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1920. SendClientMessageToAll(CorBranco, str);
  1921. Kick(i);
  1922. format(LogString, sizeof(LogString), "%s kickou %s.", PlayerName(playerid), PlayerName(i));
  1923. SetLog("Admin", LogString);
  1924. return true;
  1925. }
  1926. else if(!strcmp("ban", tmp, true))
  1927. {
  1928. tmp = strtok(cmdtext, idx);
  1929. if(!strlen(tmp))
  1930. {
  1931. return SendClientMessage(playerid, CorVermelho, "Use: /Admin Ban [Jogador].");
  1932. }
  1933. new i = ReturnUser(tmp);
  1934. if(!IsPlayerConnected(i)) return SendClientMessage(playerid, CorVermelho, "Jogador Não Conectado.");
  1935. if(!i_Info[i][iLogado]) return SendClientMessage(playerid, CorVermelho, "Jogador Não Logado.");
  1936. new str[128];
  1937. format(str, sizeof(str), "[ADMIN: {00FFFF}%s baniu %s.{FFFFFF}]", PlayerName(playerid), PlayerName(i));
  1938. SendClientMessageToAll(CorBranco, str);
  1939. Kick(i);
  1940. format(LogString, sizeof(LogString), "%s baniu %s.", PlayerName(playerid), PlayerName(i));
  1941. SetLog("Admin", LogString);
  1942. return true;
  1943. }
  1944. else
  1945. {
  1946. SendClientMessage(playerid, CorVermelho, "Use: /Admin [Funcao]");
  1947. SendClientMessage(playerid, CorBranco, "Funcoes: {00FFFF}ChangeMap, SetMap, Mute, UnMute, RestartServer GoToPos, StartPoll, SetMapTime");
  1948. SendClientMessage(playerid, CorBranco, "Funcoes: {00FFFF}GoTo, GetHere, SetMoney, GiveMoney, SetModerator, Kick, Ban");
  1949. return true;
  1950. }
  1951. }
  1952. return SendClientMessage(playerid, CorVermelho, "Comando Invalido.");
  1953. }
  1954. /*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ #if !defined CreditosUsados /*
  1955. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ #error Os Creditos foram Removidos. /*
  1956. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ #endif /*
  1957. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1958. Forwards---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
  1959. public SecondUpdate()
  1960. {
  1961. foreach(Player, playerid)
  1962. {
  1963. if(i_Info[playerid][iMuted] != 0)
  1964. {
  1965. i_Info[playerid][iMuted]--;
  1966. if(i_Info[playerid][iMuted] <= 0)
  1967. {
  1968. SendClientMessage(playerid, CorBranco, "[INFO: {00FFFF}Você foi Desmutado.{FFFFFF}]");
  1969. i_Info[playerid][iMuted] = 0;
  1970. }
  1971. }
  1972. new iSpawn = i_Info[playerid][iTeam]-1;
  1973. if(IsPlayerInRangeOfPoint(playerid, 10.0, MapInfo[mSpawnX][iSpawn], MapInfo[mSpawnY][iSpawn], MapInfo[mSpawnZ][iSpawn]) && MapInfo[mBuy])
  1974. {
  1975. TextDrawShowForPlayer(playerid, Carrinho[0]);
  1976. TextDrawShowForPlayer(playerid, Carrinho[1]);
  1977. TextDrawShowForPlayer(playerid, Carrinho[2]);
  1978. TextDrawShowForPlayer(playerid, Carrinho[3]);
  1979. TextDrawShowForPlayer(playerid, Carrinho[4]);
  1980. i_Info[playerid][iShop] = true;
  1981. }
  1982. else
  1983. {
  1984. TextDrawHideForPlayer(playerid, Carrinho[0]);
  1985. TextDrawHideForPlayer(playerid, Carrinho[1]);
  1986. TextDrawHideForPlayer(playerid, Carrinho[2]);
  1987. TextDrawHideForPlayer(playerid, Carrinho[3]);
  1988. TextDrawHideForPlayer(playerid, Carrinho[4]);
  1989. i_Info[playerid][iShop] = false;
  1990. }
  1991. AtualizarNomes(playerid);
  1992. }
  1993. return true;
  1994. }
  1995. /*------------------------------------------------------------------------------
  1996. --------------------------------------------------------------------------------
  1997. ------------------------------------------------------------------------------*/
  1998. public RegisterPlayer(playerid, senha[])
  1999. {
  2000. new string[128];
  2001. format(string, sizeof(string), "%s%s.txt", PastaJogadores, PlayerName(playerid));
  2002. new File:Conta = fopen(string, io_write);
  2003. if(fexist(string))
  2004. {
  2005. strmid(i_Info[playerid][iSenha], senha, 0, strlen(senha), 128);
  2006. format(string, sizeof(string), "Senha=%s\n", i_Info[playerid][iSenha]); fwrite(Conta, string);
  2007. format(string, sizeof(string), "Admin=%d\n", i_Info[playerid][iAdmin]); fwrite(Conta, string);
  2008. format(string, sizeof(string), "Kills=%04d\n", i_Info[playerid][iKills]); fwrite(Conta, string);
  2009. format(string, sizeof(string), "Deaths=%04d\n", i_Info[playerid][iDeaths]); fwrite(Conta, string);
  2010. format(string, sizeof(string), "Muted=%04d\n", i_Info[playerid][iMuted]); fwrite(Conta, string);
  2011. format(string, sizeof(string), "Money=%04d\n", i_Info[playerid][iMoney]); fwrite(Conta, string);
  2012. }
  2013. fclose(Conta);
  2014. LogPlayer(playerid, senha);
  2015. return true;
  2016. }
  2017. /*------------------------------------------------------------------------------
  2018. --------------------------------------------------------------------------------
  2019. ------------------------------------------------------------------------------*/
  2020. public LogPlayer(playerid, senha[])
  2021. {
  2022. if(!IsPlayerConnected(playerid)) return true;
  2023. new string[64];
  2024. format(string, sizeof(string), "%s%s.txt", PastaJogadores, PlayerName(playerid));
  2025. if(fexist(string))
  2026. {
  2027. new File:Conta = fopen(string, io_read);
  2028. new Data[128];
  2029. new chave[128], valor[128];
  2030. fread(Conta, Data, sizeof(Data));
  2031. chave = PegarChave(Data);
  2032. if(strcmp(chave, "Senha", true) == 0)
  2033. {
  2034. valor = PegarValor(Data);
  2035. strmid(i_Info[playerid][iSenha], valor, 0, strlen(valor)-1, 255);
  2036. }
  2037. if(strcmp(i_Info[playerid][iSenha], senha, true) == 0)
  2038. {
  2039. while(fread(Conta, Data, sizeof(Data)))
  2040. {
  2041. chave = PegarChave(Data);
  2042. if(!strcmp(chave, "Admin", true)) { valor = PegarValor(Data); i_Info[playerid][iAdmin] = strval(valor); goto Pular; }
  2043. if(!strcmp(chave, "Kills", true)) { valor = PegarValor(Data); i_Info[playerid][iKills] = strval(valor); goto Pular; }
  2044. if(!strcmp(chave, "Deaths", true)) { valor = PegarValor(Data); i_Info[playerid][iDeaths] = strval(valor); goto Pular; }
  2045. if(!strcmp(chave, "Muted", true)) { valor = PegarValor(Data); i_Info[playerid][iMuted] = strval(valor); goto Pular; }
  2046. if(!strcmp(chave, "Money", true)) { valor = PegarValor(Data); i_Info[playerid][iMoney] = strval(valor); goto Pular; }
  2047. Pular:
  2048. }
  2049. i_Info[playerid][iLogado] = true;
  2050. new Teams[2];
  2051. foreach(Player, i) if(i_Info[i][iLogado] && i_Info[i][iSpawnado] && i_Info[i][iTeam] != TEAM_DESCONHECIDA) Teams[i_Info[i][iTeam]-1] ++;
  2052. new Dialog[256];
  2053. format(Dialog, sizeof(Dialog), "{0066FF}(%02d) Contra-Terrorista - Roupa SWAT\n{0066FF}(%02d) Contra-Terrorista - Roupa Policial\n{0066FF}(%02d) Contra-Terrorista - Roupa Exercito\n{FF0000}(%02d) Terrorista - Negro\n{FF0000}(%02d) Terrorista - Roupa Preta\n{FF0000}(%02d) Terrorista - Roupa de Drogado", Teams[0], Teams[0], Teams[0], Teams[1], Teams[1], Teams[1]);
  2054. ShowPlayerDialog(playerid, BOX_TEAM, DIALOG_STYLE_LIST, "Escolha seu Time:", Dialog, "Escolher", "");
  2055. TextDrawShowForPlayer(playerid, Relogio);
  2056. TextDrawShowForPlayer(playerid, FundoPreto);
  2057. TextDrawShowForPlayer(playerid, Mapa[0]);
  2058. TextDrawShowForPlayer(playerid, Mapa[1]);
  2059. GivePlayerMoney(playerid, i_Info[playerid][iMoney]);
  2060. }
  2061. else
  2062. {
  2063. ShowPlayerDialog(playerid, BOX_LOGIN, DIALOG_STYLE_INPUT, "Logar:", "Coloque sua senha abaixo para logar:", "Logar", "Sair");
  2064. }
  2065. fclose(Conta);
  2066. }
  2067. return true;
  2068. }
  2069. /*------------------------------------------------------------------------------
  2070. --------------------------------------------------------------------------------
  2071. ------------------------------------------------------------------------------*/
  2072. public SavePlayer(playerid)
  2073. {
  2074. if(!i_Info[playerid][iLogado]) return false;
  2075. new string[128];
  2076. format(string, sizeof(string), "%s%s.txt", PastaJogadores, PlayerName(playerid));
  2077. if(fexist(string))
  2078. {
  2079. new File:Conta = fopen(string, io_write);
  2080. format(string, sizeof(string), "Senha=%s\n", i_Info[playerid][iSenha]); fwrite(Conta, string);
  2081. format(string, sizeof(string), "Admin=%d\n", i_Info[playerid][iAdmin]); fwrite(Conta, string);
  2082. format(string, sizeof(string), "Kills=%04d\n", i_Info[playerid][iKills]); fwrite(Conta, string);
  2083. format(string, sizeof(string), "Deaths=%04d\n", i_Info[playerid][iDeaths]); fwrite(Conta, string);
  2084. format(string, sizeof(string), "Muted=%04d\n", i_Info[playerid][iMuted]); fwrite(Conta, string);
  2085. format(string, sizeof(string), "Money=%04d\n", i_Info[playerid][iMoney]); fwrite(Conta, string);
  2086. fclose(Conta);
  2087. }
  2088. return true;
  2089. }
  2090. /*------------------------------------------------------------------------------
  2091. --------------------------------------------------------------------------------
  2092. ------------------------------------------------------------------------------*/
  2093. public AtualizarNomes(playerid)
  2094. {
  2095. new Float:PosX,
  2096. Float:PosY,
  2097. Float:PosZ;
  2098. GetPlayerPos(playerid, PosX, PosY, PosZ);
  2099. foreach(Player, i)
  2100. {
  2101. if(!IsPlayerInRangeOfPoint(i, 10.0, PosX, PosY, PosZ) || i_Info[i][iTeam] != i_Info[playerid][iTeam] || !i_Info[i][iLogado] || !i_Info[i][iSpawnado] || i == playerid)
  2102. {
  2103. ShowPlayerNameTagForPlayer(playerid, i, false);
  2104. }
  2105. else
  2106. {
  2107. ShowPlayerNameTagForPlayer(playerid, i, true);
  2108. }
  2109. }
  2110. return true;
  2111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement