Andrew_Manu

Gamemode v0.3.7 (ES)

Feb 24th, 2018
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 69.54 KB | None | 0 0
  1. /*
  2.  *  CW/TG Mode
  3.  *  © por Denis 'QWER' Granec
  4.  *  Traducido de CZE a Español
  5.  *  > Sistema de Clan War <
  6.  *    >  www.pawno.cz  <
  7.  */
  8.  
  9. #include <a_samp>
  10. #undef MAX_PLAYERS
  11. #define MAX_PLAYERS 50
  12. #pragma tabsize 0
  13.  
  14. #define DEFAULT_HOME_NAME "Home"
  15. #define DEFAULT_AWAY_NAME "Away"
  16. #define DEFAULT_WEB "dominio web"
  17. #define DEFAULT_ROUNDS 3
  18. #define DEFAULT_ROUND_SCORE 30
  19. #define DEFAULT_WEAPON 26
  20.  
  21. #define IPFILE "ip/%s.txt"
  22.  
  23. #define TEAM_HOME 0
  24. #define TEAM_AWAY 1
  25. #define TEAM_SPEC 2
  26.  
  27. #define COLOR_RED 0xFF0000BB
  28. #define COLOR_GREEN 0x00FF00BB
  29.  
  30. #define QCMD:%1()          \
  31. forward cmd_%1(playerid,params[],bool:help); \
  32. public cmd_%1(playerid,params[],bool:help)
  33. #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  34. #define ForPlayers(%0) for(new %0; %0 <= Connects;%0++) if(IsPlayerConnected(%0))
  35. new bool:FALSE=false;
  36. #define SCMF(%0,%1,%2,%3) do{new _string[128]; format(_string,sizeof(_string),%2,%3); SendClientMessage(%0,%1,_string);} while(FALSE)
  37. #define SCMTAF(%0,%1,%2) do{new _string[128]; format(_string,sizeof(_string),%1,%2); SendClientMessageToAll(%0,_string);} while(FALSE)
  38. #define SCM SendClientMessage
  39. #define SCMTA SendClientMessageToAll
  40.  
  41. new Connects;
  42. new ServerMap;
  43. new Float:PlayerDM[4][3][4] =
  44. {
  45. {{1330.1001,2212.9092,12.0156,178.8035},{1411.2450,2124.0459,12.0156,88.8759},{1368.8029,2196.1875,14.2495,177.3583}},
  46. {{1586.5869,745.4418,10.8203,179.2617},{1746.8711,695.1851,10.8203,0.9733},{1663.3925,747.8785,19.9141,182.0584}},
  47. {{-1341.9940,-26.4392,14.1484,225.0088},{-1186.4745,-182.0161,14.1484,44.5505},{-1221.5259,-72.7803,27.3481,131.6112}},
  48. {{-2047.4285,-117.2283,35.2487,178.9484},{-2051.0955,-267.9533,35.3203,358.7801},{-2076.3069,-106.9902,40.2293,194.5918}}
  49. };
  50.  
  51. new Team[MAX_PLAYERS] = {-1,...};
  52. new TeamName[2][50];
  53. new Text:Textdraw0;
  54. new Text:Textdraw1[MAX_PLAYERS];
  55.  
  56. new Text:Textdraw01;
  57. new Text:Textdraw100;
  58. new Text:Textdraw2;
  59. new Text:Textdraw3;
  60. new Text:Textdraw4;
  61. new Text:Textdraw5;
  62. new Text:Textdraw6;
  63. new Text:Textdraw7;
  64. new Text:Textdraw8;
  65. new Text:Textdraw9;
  66. new Text:Textdraw10;
  67. new Text:Textdraw11;
  68. new Text:Textdraw12;
  69. new Text:Textdraw13;
  70. new Text:Textdraw14;
  71.  
  72. new TeamScore[2];
  73. new TeamRounds[2];
  74. new Count = -1;
  75. new MaxRounds;
  76. new MaxRoundScore;
  77. new TotalScore[2];
  78. new Object[9];
  79.  
  80. new Weapon;
  81.  
  82. new ServerPassword[50];
  83. new LockTeam;
  84. new Kills[MAX_PLAYERS],Deaths[MAX_PLAYERS],TeamKills[MAX_PLAYERS];
  85. new stopped;
  86.  
  87. new pDrunkLevelLast[MAX_PLAYERS];
  88. new pFPS[MAX_PLAYERS];
  89. new Spec[MAX_PLAYERS] = {-1,...};
  90. new Admin[MAX_PLAYERS];
  91. new Trening;
  92. new Owned[2];
  93.  
  94. new Cars[50];
  95. new CarsCount;
  96.  
  97. forward CountDownPublic();
  98. forward HideWin();
  99. forward LockedServerKick(playerid);
  100. forward PosRefresh();
  101. forward Test(playerid,Float:x,Float:y,Float:z,type);
  102.  
  103. new Float:Objects[9][4] ={
  104.  {1337.74, 2094.88, 20.58,180.0},
  105.  {1292.11, 2143.55, 20.14,90.0},
  106.  {1663.00, 8293.00, 734.00,0.0},
  107.  {1664.21, 734.22, 13.11,0.0},
  108.  {1663.94, 706.63, 13.11,180.04},
  109.  { -1234.09, -84.41, 16.39,-44.94},
  110.  {-1195.23, -131.88, 16.39,-44.94},
  111.  {-2096.01, -188.82, 37.45,90.04},
  112.  {-2011.62, -189.27, 37.45,-90.04}
  113. };
  114. //<><><><><><><><>><><><><><><><>><><><><><><><>><><><><><><><>><><><><><><><>//
  115.  
  116. main()
  117. {
  118.         print("\n===================================");
  119.         print(" GameMode: CW/TG Mode");
  120.         print(" Creador: QWER");
  121.         print(" Fecha: 08.08.2012");
  122.         print("====================================\n");
  123. }
  124.  
  125. stock PlayerSpectatePlayerEx(playerid,id){
  126.         new str[100];
  127.         format(str, 100, "~r~%s ~w~(%d)~n~Ant-TeclaCaminar   Sig-TeclaSaltar", Jmeno(id),id);
  128.         GameTextForPlayer(playerid, str, 60000, 4);
  129.         PlayerSpectatePlayer(playerid,id,0);
  130. }
  131. public OnGameModeInit()
  132. {
  133.         SetGameModeText("[Home] vs [Away]");
  134.  
  135.         AddPlayerClass(102,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  136.         AddPlayerClass(103,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  137.         AddPlayerClass(104,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  138.         AddPlayerClass(106,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  139.         AddPlayerClass(107,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  140.         AddPlayerClass(108,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  141.         AddPlayerClass(114,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  142.         AddPlayerClass(137,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  143.         AddPlayerClass(174,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  144.         AddPlayerClass(252,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  145.         AddPlayerClass(137,-1247.2589,-91.8672,14.1484,203.8234,0,0,0,0,0,0);
  146.        
  147.         Object[0] = CreateObject(7914, 1337.74, 2094.88, 20.58,   0.00, 0.00, 180.00);
  148.         Object[1] = CreateObject(7914, 1292.11, 2143.55, 20.14,   0.00, 0.00, 90.00);
  149.         Object[2] = CreateObject(7914, 1663.00, 8293.00, 734.00,   0.00, 0.00, 0.00);
  150.         Object[3] = CreateObject(7914, 1664.21, 734.22, 13.11,   0.00, 0.00, 0.00);
  151.         Object[4] = CreateObject(7914, 1663.94, 706.63, 13.11,   0.00, 0.00, 180.04);
  152.         Object[5] = CreateObject(7914, -1234.09, -84.41, 16.39,   0.00, 0.00, -44.94);
  153.         Object[6] = CreateObject(7914, -1195.23, -131.88, 16.39,   0.00, 0.00, -44.94);
  154.         Object[7] = CreateObject(7914, -2096.01, -188.82, 37.45,   0.00, 0.00, 90.04);
  155.         Object[8] = CreateObject(7914, -2011.62, -189.27, 37.45,   0.00, 0.00, -90.04);
  156.  
  157.         format(TeamName[0],50,"%s",DEFAULT_HOME_NAME);
  158.         format(TeamName[1],50,"%s",DEFAULT_AWAY_NAME);
  159.         Weapon = DEFAULT_WEAPON;
  160.         MaxRounds = DEFAULT_ROUNDS;
  161.         MaxRoundScore = DEFAULT_ROUND_SCORE;
  162.  
  163.         DisableInteriorEnterExits();
  164.         UsePlayerPedAnims();
  165.         RefreshObject();
  166.         SetTimer("PosRefresh",1500,true);
  167.        
  168.         new SpawnObject;
  169.         SpawnObject = CreateObject(19353, 2029.183471, 1007.522155, 12.245361, 0.000000, -92.499984, 178.099945);
  170.         SetObjectMaterial(SpawnObject, 0, 19341, "egg_texts", "easter_egg01", 0x00FFFFFF);
  171.         SpawnObject = CreateObject(19353, 2021.775878, 1006.701049, 16.422132, 0.000000, 0.000000, 0.000000);
  172.         SetObjectMaterialText(SpawnObject, "editar", 0, OBJECT_MATERIAL_SIZE_256x128,"Arial", 51, 0, 0xFFFF8200, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_LEFT);
  173.         SpawnObject = CreateObject(19353, 2021.775878, 1008.581396, 16.422132, 0.000000, 0.000000, 0.000000);
  174.         SetObjectMaterialText(SpawnObject, "editar", 0, OBJECT_MATERIAL_SIZE_256x128,"Arial", 51, 0, 0xFFFF8200, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_LEFT);
  175.  
  176.         Textdraw0 = TextDrawCreate(1.000000, 428.000000, "~n~");
  177.         TextDrawBackgroundColor(Textdraw0, 255);
  178.         TextDrawFont(Textdraw0, 1);
  179.         TextDrawLetterSize(Textdraw0, 0.350000, 1.000000);
  180.         TextDrawColor(Textdraw0, -1);
  181.         TextDrawSetOutline(Textdraw0, 0);
  182.         TextDrawSetProportional(Textdraw0, 1);
  183.         TextDrawSetShadow(Textdraw0, 1);
  184.         TextDrawUseBox(Textdraw0, 1);
  185.         TextDrawBoxColor(Textdraw0, 255);
  186.         TextDrawTextSize(Textdraw0, 675.000000, 0.000000);
  187.  
  188.         for(new i; i < MAX_PLAYERS;i++){
  189.         Textdraw1[i] = TextDrawCreate(313.000000, 428.000000, "~g~Green ~w~vs ~r~Red ~w~I Score: ~g~01~w~:~r~02 ~w~I Round: ~g~02~w~:~r~02 ~w~I  Kills: ~b~05 ~w~I Deaths: ~b~07 I Ratio: ~b~1.20 ~w~I Web: ~w~rsgame.cz");
  190.         TextDrawAlignment(Textdraw1[i], 2);
  191.         TextDrawBackgroundColor(Textdraw1[i], 255);
  192.         TextDrawFont(Textdraw1[i], 1);
  193.         TextDrawLetterSize(Textdraw1[i], 0.319999, 1.000000);
  194.         TextDrawColor(Textdraw1[i], -1);
  195.         TextDrawSetOutline(Textdraw1[i], 0);
  196.         TextDrawSetProportional(Textdraw1[i], 1);
  197.         TextDrawSetShadow(Textdraw1[i], 1);
  198.         }
  199.  
  200.         Textdraw01 = TextDrawCreate(-10.000000, 110.000000, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~");
  201.         TextDrawBackgroundColor(Textdraw01, 255);
  202.         TextDrawFont(Textdraw01, 1);
  203.         TextDrawLetterSize(Textdraw01, 0.500000, 1.000000);
  204.         TextDrawColor(Textdraw01, -1);
  205.         TextDrawSetOutline(Textdraw01, 0);
  206.         TextDrawSetProportional(Textdraw01, 1);
  207.         TextDrawSetShadow(Textdraw01, 1);
  208.         TextDrawUseBox(Textdraw01, 1);
  209.         TextDrawBoxColor(Textdraw01, 170);
  210.         TextDrawTextSize(Textdraw01, 650.000000, 0.000000);
  211.  
  212.         Textdraw100 = TextDrawCreate(202.000000, 108.000000, "Resultado total");
  213.         TextDrawBackgroundColor(Textdraw100, -1);
  214.         TextDrawFont(Textdraw100, 2);
  215.         TextDrawLetterSize(Textdraw100, 0.500000, 1.000000);
  216.         TextDrawColor(Textdraw100, 255);
  217.         TextDrawSetOutline(Textdraw100, 1);
  218.         TextDrawSetProportional(Textdraw100, 1);
  219.  
  220.         Textdraw2 = TextDrawCreate(50.000000, 110.000000, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~");
  221.         TextDrawBackgroundColor(Textdraw2, 255);
  222.         TextDrawFont(Textdraw2, 1);
  223.         TextDrawLetterSize(Textdraw2, 0.500000, 1.000000);
  224.         TextDrawColor(Textdraw2, -1);
  225.         TextDrawSetOutline(Textdraw2, 0);
  226.         TextDrawSetProportional(Textdraw2, 1);
  227.         TextDrawSetShadow(Textdraw2, 1);
  228.         TextDrawUseBox(Textdraw2, 1);
  229.         TextDrawBoxColor(Textdraw2, 136);
  230.         TextDrawTextSize(Textdraw2, 590.000000, 0.000000);
  231.  
  232.         Textdraw3 = TextDrawCreate(320.000000, 110.000000, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~");
  233.         TextDrawAlignment(Textdraw3, 2);
  234.         TextDrawBackgroundColor(Textdraw3, 255);
  235.         TextDrawFont(Textdraw3, 1);
  236.         TextDrawLetterSize(Textdraw3, 0.500000, 1.000000);
  237.         TextDrawColor(Textdraw3, -1);
  238.         TextDrawSetOutline(Textdraw3, 0);
  239.         TextDrawSetProportional(Textdraw3, 1);
  240.         TextDrawSetShadow(Textdraw3, 1);
  241.         TextDrawUseBox(Textdraw3, 1);
  242.         TextDrawBoxColor(Textdraw3, -16777046);
  243.         TextDrawTextSize(Textdraw3, 0.000000, 0.000000);
  244.  
  245.         Textdraw4 = TextDrawCreate(50.000000, 118.000000, "~g~Name                      Kills  Deaths  Ratio"); //Stats de Home
  246.         TextDrawBackgroundColor(Textdraw4, 255);
  247.         TextDrawFont(Textdraw4, 1);
  248.         TextDrawLetterSize(Textdraw4, 0.360000, 1.000000);
  249.         TextDrawColor(Textdraw4, -1);
  250.         TextDrawSetOutline(Textdraw4, 0);
  251.         TextDrawSetProportional(Textdraw4, 1);
  252.         TextDrawSetShadow(Textdraw4, 1);
  253.  
  254.         Textdraw5 = TextDrawCreate(323.000000, 118.000000, "~r~Name                      Kills  Deaths  Ratio"); //Stats de Away
  255.         TextDrawBackgroundColor(Textdraw5, 255);
  256.         TextDrawFont(Textdraw5, 1);
  257.         TextDrawLetterSize(Textdraw5, 0.360000, 1.000000);
  258.         TextDrawColor(Textdraw5, -1);
  259.         TextDrawSetOutline(Textdraw5, 0);
  260.         TextDrawSetProportional(Textdraw5, 1);
  261.         TextDrawSetShadow(Textdraw5, 1);
  262.  
  263.         Textdraw6 = TextDrawCreate(210.000000, 348.000000, "Match: Green vs Red~n~Win: Red~n~Round: 01:02~n~Total: 78:172~n~Type: 3x30"); //Info de la partida
  264.         TextDrawBackgroundColor(Textdraw6, 255);
  265.         TextDrawFont(Textdraw6, 1);
  266.         TextDrawLetterSize(Textdraw6, 0.500000, 1.000000);
  267.         TextDrawColor(Textdraw6, -1);
  268.         TextDrawSetOutline(Textdraw6, 0);
  269.         TextDrawSetProportional(Textdraw6, 1);
  270.         TextDrawSetShadow(Textdraw6, 1);
  271.         TextDrawUseBox(Textdraw6, 1);
  272.         TextDrawBoxColor(Textdraw6, 204);
  273.         TextDrawTextSize(Textdraw6, 471.000000, 1.000000);
  274.  
  275.         Textdraw7 = TextDrawCreate(50.000000, 128.000000, "Name~n~Name"); // Nombres > HOME
  276.         TextDrawBackgroundColor(Textdraw7, 255);
  277.         TextDrawFont(Textdraw7, 1);
  278.         TextDrawLetterSize(Textdraw7, 0.360000, 1.000000);
  279.         TextDrawColor(Textdraw7, -1);
  280.         TextDrawSetOutline(Textdraw7, 0);
  281.         TextDrawSetProportional(Textdraw7, 1);
  282.         TextDrawSetShadow(Textdraw7, 1);
  283.  
  284.         Textdraw8 = TextDrawCreate(205.000000, 128.000000, "08~n~07");// Kills > HOME
  285.         TextDrawBackgroundColor(Textdraw8, 255);
  286.         TextDrawFont(Textdraw8, 1);
  287.         TextDrawLetterSize(Textdraw8, 0.360000, 1.000000);
  288.         TextDrawColor(Textdraw8, -1);
  289.         TextDrawSetOutline(Textdraw8, 0);
  290.         TextDrawSetProportional(Textdraw8, 1);
  291.         TextDrawSetShadow(Textdraw8, 1);
  292.  
  293.         Textdraw9 = TextDrawCreate(246.000000, 128.000000, "08~n~07");// Muertes > HOME
  294.         TextDrawBackgroundColor(Textdraw9, 255);
  295.         TextDrawFont(Textdraw9, 1);
  296.         TextDrawLetterSize(Textdraw9, 0.360000, 1.000000);
  297.         TextDrawColor(Textdraw9, -1);
  298.         TextDrawSetOutline(Textdraw9, 0);
  299.         TextDrawSetProportional(Textdraw9, 1);
  300.         TextDrawSetShadow(Textdraw9, 1);
  301.  
  302.         Textdraw10 = TextDrawCreate(285.000000, 128.000000, "1.14~n~2.99");// Ratio > HOME
  303.         TextDrawBackgroundColor(Textdraw10, 255);
  304.         TextDrawFont(Textdraw10, 1);
  305.         TextDrawLetterSize(Textdraw10, 0.360000, 1.000000);
  306.         TextDrawColor(Textdraw10, -1);
  307.         TextDrawSetOutline(Textdraw10, 0);
  308.         TextDrawSetProportional(Textdraw10, 1);
  309.         TextDrawSetShadow(Textdraw10, 1);
  310.  
  311.         Textdraw11 = TextDrawCreate(323.000000, 128.000000, "Name~n~Name"); // Nombres > Away
  312.         TextDrawBackgroundColor(Textdraw11, 255);
  313.         TextDrawFont(Textdraw11, 1);
  314.         TextDrawLetterSize(Textdraw11, 0.360000, 1.000000);
  315.         TextDrawColor(Textdraw11, -1);
  316.         TextDrawSetOutline(Textdraw11, 0);
  317.         TextDrawSetProportional(Textdraw11, 1);
  318.         TextDrawSetShadow(Textdraw11, 1);
  319.  
  320.         Textdraw12 = TextDrawCreate(478.000000, 128.000000, "08~n~07"); // Kills > Away
  321.         TextDrawBackgroundColor(Textdraw12, 255);
  322.         TextDrawFont(Textdraw12, 1);
  323.         TextDrawLetterSize(Textdraw12, 0.360000, 1.000000);
  324.         TextDrawColor(Textdraw12, -1);
  325.         TextDrawSetOutline(Textdraw12, 0);
  326.         TextDrawSetProportional(Textdraw12, 1);
  327.         TextDrawSetShadow(Textdraw12, 1);
  328.  
  329.         Textdraw13 = TextDrawCreate(518.000000, 128.000000, "08~n~07"); // Muertes > Away
  330.         TextDrawBackgroundColor(Textdraw13, 255);
  331.         TextDrawFont(Textdraw13, 1);
  332.         TextDrawLetterSize(Textdraw13, 0.360000, 1.000000);
  333.         TextDrawColor(Textdraw13, -1);
  334.         TextDrawSetOutline(Textdraw13, 0);
  335.         TextDrawSetProportional(Textdraw13, 1);
  336.         TextDrawSetShadow(Textdraw13, 1);
  337.  
  338.         Textdraw14 = TextDrawCreate(559.000000, 128.000000, "1.14~n~2.99"); // Ratio > Away
  339.         TextDrawBackgroundColor(Textdraw14, 255);
  340.         TextDrawFont(Textdraw14, 1);
  341.         TextDrawLetterSize(Textdraw14, 0.360000, 1.000000);
  342.         TextDrawColor(Textdraw14, -1);
  343.         TextDrawSetOutline(Textdraw14, 0);
  344.         TextDrawSetProportional(Textdraw14, 1);
  345.         TextDrawSetShadow(Textdraw14, 1);
  346.         return 1;
  347. }
  348.  
  349. public PosRefresh(){
  350. ForPlayers(playerid){
  351. if(Team[playerid] == TEAM_SPEC){
  352. if(Spec[playerid] != -1) continue;
  353.  
  354. new Float:Z;
  355. GetPlayerPos(playerid, Z,Z,Z);
  356. if(ServerMap != 0) {
  357. if(Z < PlayerDM[ServerMap][TEAM_HOME][2]+1) SpawnPlayer(playerid);
  358. }else{
  359. if(Z < 12){
  360. SpawnPlayer(playerid);}}}}
  361. return true;
  362. }
  363. public OnGameModeExit()
  364. {
  365.         return 1;
  366. }
  367.  
  368. public OnPlayerRequestClass(playerid, classid)
  369. {
  370.   SetPlayerPos(playerid, 2030.4219,1007.3387,13.2771);
  371.   SetPlayerCameraPos(playerid, 2038.6110,1007.1172,13.2771);
  372.   SetPlayerCameraLookAt(playerid, 2030.4219,1007.3387,13.2771);
  373. return 1;
  374. }
  375.  
  376. public OnPlayerConnect(playerid)
  377. {
  378. new str[128];
  379. new cesta[50];
  380. format(cesta,50,IPFILE,Ip(playerid));
  381. new File:a;
  382. new name[MAX_PLAYER_NAME];
  383. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  384. fcreate(cesta);
  385. a = fopen(cesta,io_read);
  386. new nasiel;
  387. while(fread(a,str)){
  388. DelChar(str);
  389. if(!strcmp(name,str,false)){
  390. nasiel = 1;
  391. break;}}
  392. fclose(a);
  393. if(nasiel == 0){
  394. a = fopen(cesta,io_append);
  395. format(str,128,"%s\r\n",Jmeno(playerid));
  396. fwrite(a,str);
  397. fclose(a);
  398. }
  399.  
  400. Admin[playerid] = 0;
  401. Kills[playerid] = 0;
  402. Deaths[playerid] = 0;
  403. TeamKills[playerid] = 0;
  404. SCMTAF(0x00FF00AA,"Jugador %s se ha conectado al servidor.",Jmeno(playerid));
  405. pDrunkLevelLast[playerid]   = 0;
  406. pFPS[playerid]          = 0;
  407. Team[playerid] = -1;
  408. if(playerid > Connects) Connects = playerid;
  409. if(!ServerPassword[1]){
  410.     format(str,100,"%s\n%s\nEspectador",TeamName[0],TeamName[1]);
  411.         ShowPlayerDialog(playerid,1,2,"Elija un equipo",str,"Aceptar","");
  412. }else{
  413.  ShowPlayerDialog(playerid,2,1,"Locked","{FFFFFF}Pravdepodobne sa hrá nejaký zápas a preto je server zamknutý,\n zadaj heslo inak ta to do {FF0000}10{FFFFFF} sekund vyhodí zo servera","Vybrat","Opustit"); // de cualquier modo esta opción esta bugeada al presionar "ENTER".
  414.  SetTimerEx("LockedServerKick",10000,false,"i",playerid); // de cualquier modo esta opción esta bugeada al presionar "ENTER".
  415. }
  416.         RemoveBuildingForPlayer(playerid, 8087, 1667.7422, 723.2266, 21.0938, 0.25);
  417.         RemoveBuildingForPlayer(playerid, 712, 1555.4844, 710.5000, 19.3359, 0.25);
  418.         RemoveBuildingForPlayer(playerid, 3459, 1577.1953, 725.0156, 17.2188, 0.25);
  419.         RemoveBuildingForPlayer(playerid, 674, 1756.0234, 723.0078, 9.7656, 0.25);
  420.         RemoveBuildingForPlayer(playerid, 674, 1756.0234, 719.5781, 9.7656, 0.25);
  421.         RemoveBuildingForPlayer(playerid, 3459, 1758.2344, 725.6641, 17.1641, 0.25);
  422.         RemoveBuildingForPlayer(playerid, 7617, 1333.3828, 2075.9297, 22.8359, 0.25);
  423.         RemoveBuildingForPlayer(playerid, 645, 1323.4766, 2094.1797, 10.8750, 0.25);
  424.         RemoveBuildingForPlayer(playerid, 1278, 1349.7031, 2103.8516, 24.0078, 0.25);
  425.         RemoveBuildingForPlayer(playerid, 1278, 1302.8984, 2105.6953, 24.0078, 0.25);
  426.         RemoveBuildingForPlayer(playerid, 1278, 1396.5625, 2103.8516, 24.0078, 0.25);
  427.         RemoveBuildingForPlayer(playerid, 1278, 1301.8906, 2154.2344, 24.0078, 0.25);
  428.         RemoveBuildingForPlayer(playerid, 1278, 1301.8906, 2197.9688, 24.0078, 0.25);
  429.         RemoveBuildingForPlayer(playerid, 1278, 1351.7891, 2197.9688, 24.0078, 0.25);
  430.         RemoveBuildingForPlayer(playerid, 1278, 1396.5625, 2154.2422, 24.0078, 0.25);
  431.         SCM(playerid,0xFF0000AA,"((Pene Grande))");
  432.         SCM(playerid,0xFF0000AA,"->>> /help");
  433.         return 1;
  434. }
  435.  
  436. public OnPlayerDisconnect(playerid, reason)
  437. {
  438. if(playerid == Connects){
  439. warp:
  440. Connects--;
  441. if(!IsPlayerConnected(Connects) && Connects > 0) goto warp;
  442. }
  443.  
  444. if(reason == 0) SCMTAF(0x00FF00AA,"Jugador %s se desconectó del servidor.",Jmeno(playerid));
  445. else if(reason == 1) SCMTAF(0x00FF00AA,"Jugador %s se desconectó del servidor.",Jmeno(playerid));
  446. else SCMTAF(0x00FF00AA,"Jugador %s se desconectó del servidor. {FF0000}(kick /o ban)",Jmeno(playerid));
  447. return 1;
  448. }
  449.  
  450. public OnPlayerSpawn(playerid)
  451. {
  452. SetPlayerHealth(playerid,100);
  453. ResetPlayerWeapons(playerid);
  454. SetPlayerPos(playerid,PlayerDM[ServerMap][Team[playerid]][0],PlayerDM[ServerMap][Team[playerid]][1],PlayerDM[ServerMap][Team[playerid]][2]);
  455. SetPlayerFacingAngle(playerid,PlayerDM[ServerMap][Team[playerid]][3]);
  456. if(Team[playerid] != TEAM_SPEC){
  457. GivePlayerWeapon(playerid,Weapon,9998);
  458. }
  459. return 1;
  460. }
  461. public OnPlayerUpdate(playerid) {
  462.  
  463.     new drunknew;
  464.     drunknew = GetPlayerDrunkLevel(playerid);
  465.  
  466.     if (drunknew < 100) {
  467.         SetPlayerDrunkLevel(playerid, 2000);
  468.     } else {
  469.  
  470.         if (pDrunkLevelLast[playerid] != drunknew) {
  471.  
  472.             new wfps = pDrunkLevelLast[playerid] - drunknew;
  473.  
  474.             if ((wfps > 0) && (wfps < 200))
  475.                 pFPS[playerid] = wfps;
  476.  
  477.             pDrunkLevelLast[playerid] = drunknew;
  478.         }
  479.  
  480.     }
  481.  
  482. return 1;
  483. }
  484.  
  485. public OnPlayerText(playerid,text[]){
  486.  
  487. if(text[0] == '!'){
  488. new Name[25];
  489. GetPlayerName(playerid,Name,25);
  490. ForPlayers(i){
  491. if(Team[playerid] == Team[i]){
  492. SCMF(i,0xB88A00FF,"%s:{FFFFFF} %s",Name,text[1]);
  493. }
  494. }
  495. return 0;
  496. }
  497. if(GetPVarInt(playerid,"Muted") == 1){
  498. SCM(playerid,0xFF0000FF,"Estas muteado.");
  499. return 0;
  500. }
  501. return true;
  502. }
  503. forward SpecRefresh(playerid,specid);
  504. public SpecRefresh(playerid,specid){
  505. PlayerSpectatePlayerEx(specid, playerid);
  506. return true;
  507. }
  508.  
  509. public OnPlayerDeath(playerid, killerid, reason)
  510. {
  511. if(killerid == INVALID_PLAYER_ID) return SpawnPlayer(playerid);
  512. if(Team[playerid] == TEAM_SPEC) return SpawnPlayer(playerid);
  513. GameTextForPlayer(killerid,Jmeno(playerid),6000,1);
  514. Kills[killerid]++;
  515. Deaths[playerid]++;
  516. if(Team[playerid] == Team[killerid]) TeamKills[killerid]++;
  517. SpawnPlayer(playerid);
  518. SendDeathMessage(killerid,playerid,reason);
  519. SetPlayerScore(killerid,Kills[killerid]);
  520. ForPlayers(i) {
  521. if(Spec[i] == playerid){
  522. SetTimerEx("SpecRefresh",50,false,"ii",playerid,i);
  523. break;
  524. }
  525. }
  526. if(Trening == 1) {
  527. TeamScoreUpdate(playerid,killerid);
  528. }else{
  529. UpdateScoreBar();
  530. }
  531.         return 1;
  532. }
  533.  
  534. stock TeamScoreUpdate(playerid,killerid){
  535. new team;
  536. if(Team[playerid] == Team[killerid]){
  537. if(Team[playerid] == TEAM_HOME) team = TEAM_AWAY;
  538. else team = TEAM_HOME;
  539. SCMTAF(-1,"Team {FF0000}%s{FFFFFF} urobil team kill !",TeamName[Team[killerid]]);
  540. TeamScore[team]++;
  541. if(TeamScore[team] == MaxRoundScore){
  542. TeamRounds[team]++;
  543. SCMTA(COLOR_RED,"================================");
  544. SCMTAF(-1,"Equipo {FF0000}%s{FFFFFF} ha ganado.",TeamName[team]);
  545. SCMTAF(-1,"{00FF00}%s %d{FFFFFF}:{FF0000}%d %s",TeamName[TEAM_HOME],TeamScore[TEAM_HOME],TeamScore[TEAM_AWAY],TeamName[TEAM_AWAY]);
  546. SCMTA(COLOR_RED,"================================");
  547. TotalScore[TEAM_HOME] += TeamScore[TEAM_HOME];
  548. TotalScore[TEAM_AWAY] += TeamScore[TEAM_AWAY];
  549. TeamScore[TEAM_HOME] = 0;
  550. TeamScore[TEAM_AWAY] = 0;
  551.  
  552. if(TeamRounds[team] == MaxRounds || (TeamRounds[team]+TeamRounds[Team[playerid]]) == MaxRounds){
  553.  
  554. }else {
  555. CountDown(5);
  556. ForPlayers(i){
  557. SetPlayerHealth(i,100);
  558. SpawnPlayer(i);
  559. //odpocet
  560. }
  561. }
  562. }
  563. if(TeamRounds[team] == MaxRounds || (TeamRounds[team]+TeamRounds[Team[playerid]]) == MaxRounds){
  564. TeamWinClanWar();
  565. }else{
  566.  
  567. }
  568. }else{
  569. Owned[Team[playerid]] = 0;
  570. Owned[Team[killerid]]++;
  571. if(Owned[Team[killerid]] == 5){
  572. new str[128];
  573. format(str,128,"~r~Equipo ~w~%s~r~ violo a ~w~%s",TeamName[Team[killerid]],TeamName[Team[playerid]]);
  574. GameTextForAll(str, 7000,3);
  575. SCMTAF(-1,"El equipo {FF0000}%s{FFFFFF} le ha hecho owned a {FF0000}%s{FFFFFF}",TeamName[Team[killerid]],TeamName[Team[playerid]]);
  576. }
  577. team = Team[killerid];
  578. TeamScore[team]++;
  579. if(TeamScore[team] == MaxRoundScore){
  580. TeamRounds[team]++;
  581. SCMTA(COLOR_RED,"================================");
  582. SCMTAF(-1,"Equipo {FF0000}%s{FFFFFF} ha ganado.",TeamName[team]);
  583. SCMTAF(-1,"{00FF00}%s (%d) %d{FFFFFF}:{FF0000}%d (%d) %s",TeamName[TEAM_HOME],TeamRounds[TEAM_HOME],TeamScore[TEAM_HOME],TeamScore[TEAM_AWAY],TeamRounds[TEAM_AWAY],TeamName[TEAM_AWAY]);
  584. SCMTA(COLOR_RED,"================================");
  585. TotalScore[TEAM_HOME] += TeamScore[TEAM_HOME];
  586. TotalScore[TEAM_AWAY] += TeamScore[TEAM_AWAY];
  587. TeamScore[TEAM_HOME] = 0;
  588. TeamScore[TEAM_AWAY] = 0;
  589.  
  590. if(TeamRounds[team] == MaxRounds || (TeamRounds[team]+TeamRounds[Team[playerid]]) == MaxRounds){
  591.  
  592. }else {
  593. ForPlayers(i){
  594. SetPlayerHealth(i,100);
  595. SpawnPlayer(i);
  596. //odpocet
  597. }
  598. CountDown(5);
  599. }
  600. }
  601. if(TeamRounds[team] == MaxRounds || (TeamRounds[team]+TeamRounds[Team[playerid]]) == MaxRounds){
  602. TeamWinClanWar();
  603.  
  604. }
  605. }
  606. UpdateScoreBar();
  607. }
  608.  
  609. stock TeamWinClanWar(){
  610. ForPlayers(i){
  611. SetPlayerHealth(i,100);
  612. SetPlayerPos(i,PlayerDM[ServerMap][Team[i]][0],PlayerDM[ServerMap][Team[i]][1],PlayerDM[ServerMap][Team[i]][2]);
  613. SetPlayerFacingAngle(i,PlayerDM[ServerMap][Team[i]][3]);
  614. TogglePlayerControllable(i,0);
  615. }
  616. new win;
  617. if(TeamRounds[TEAM_HOME] > TeamRounds[TEAM_AWAY]) win = TEAM_HOME;
  618. else win = TEAM_AWAY;
  619. TeamWin(win);
  620. SCMTA(COLOR_RED,"================================");
  621. SCMTAF(-1,"Equipo {FF0000}%s{FFFFFF} gano la CW.",TeamName[win]);
  622. SCMTAF(-1,"Puntajes: {00FF00}%s %d{FFFFFF}:{FF0000}%d %s",TeamName[TEAM_HOME],TotalScore[TEAM_HOME],TotalScore[TEAM_AWAY],TeamName[TEAM_AWAY]);
  623. SCMTA(COLOR_RED,"================================");
  624. TotalScore[TEAM_HOME] = 0;
  625. TotalScore[TEAM_AWAY] = 0;
  626. TeamRounds[TEAM_HOME] = 0;
  627. TeamRounds[TEAM_AWAY] = 0;
  628. SetTimer("HideWin",30000,false);
  629. }
  630.  
  631. stock TeamWin(win){
  632. ClearKillList();
  633. TextDrawShowForAll(Textdraw01);
  634. TextDrawShowForAll(Textdraw100);
  635. TextDrawShowForAll(Textdraw2);
  636. TextDrawShowForAll(Textdraw3);
  637. TextDrawShowForAll(Textdraw4);
  638. TextDrawShowForAll(Textdraw5);
  639. new NameString[2][MAX_PLAYER_NAME*10];
  640. new KillString[2][MAX_PLAYER_NAME*10];
  641. new DeathString[2][MAX_PLAYER_NAME*10];
  642. new RatioString[2][MAX_PLAYER_NAME*10];
  643.  
  644.  
  645. ForPlayers(i){
  646. if(Team[i] != TEAM_SPEC){
  647. format(NameString[Team[i]],300,"%s%s~n~",NameString[Team[i]],Jmeno(i));
  648. format(KillString[Team[i]],300,"%s%d~n~",KillString[Team[i]],Kills[i]);
  649. format(DeathString[Team[i]],300,"%s%d~n~",DeathString[Team[i]],Deaths[i]);
  650. new Float:ratio;
  651. if(Deaths[i] == 0) ratio = Kills[i];
  652. else ratio = float(Kills[i])/float(Deaths[i]);
  653. format(RatioString[Team[i]],300,"%s%0.2f~n~",RatioString[Team[i]],ratio);
  654. }
  655.  
  656. }
  657. TextDrawSetString(Textdraw7,NameString[0]);
  658. TextDrawSetString(Textdraw8,KillString[0]);
  659. TextDrawSetString(Textdraw9,DeathString[0]);
  660. TextDrawSetString(Textdraw10,RatioString[0]);
  661. TextDrawSetString(Textdraw11,NameString[1]);
  662. TextDrawSetString(Textdraw12,KillString[1]);
  663. TextDrawSetString(Textdraw13,DeathString[1]);
  664. TextDrawSetString(Textdraw14,RatioString[1]);
  665. TextDrawShowForAll(Textdraw7);
  666. TextDrawShowForAll(Textdraw8);
  667. TextDrawShowForAll(Textdraw9);
  668. TextDrawShowForAll(Textdraw10);
  669. TextDrawShowForAll(Textdraw11);
  670. TextDrawShowForAll(Textdraw12);
  671. TextDrawShowForAll(Textdraw13);
  672. TextDrawShowForAll(Textdraw14);
  673. new winstr[5];
  674. if(win == 0) format(winstr,5,"~g~");
  675. else format(winstr,5,"~r~");
  676. new BigStr[1][1500];
  677. format(BigStr[0],1500,"Partida: ~g~%s ~w~vs ~r~%s~n~~w~Ganador: %s%s~n~~w~Rondas: ~g~%02d~w~:~r~%02d~n~~w~Total: ~g~%d~w~:~r~%d~n~~w~Tipo: ~r~%d~w~x~r~%02d~n~~w~Mapa: ~r~%s",TeamName[TEAM_HOME],TeamName[TEAM_AWAY],winstr,TeamName[win],TeamRounds[TEAM_HOME],TeamRounds[TEAM_AWAY],TotalScore[TEAM_HOME],TotalScore[TEAM_AWAY],MaxRounds,MaxRoundScore,ReturnDmName(ServerMap));
  678. TextDrawSetString(Textdraw6,BigStr[0]);
  679. TextDrawShowForAll(Textdraw6);
  680. }
  681.  
  682. stock CountDown(time){
  683. new str[10];
  684. format(str,10,"%d",time);
  685. GameTextForAll(str, 1000, 5);
  686. Count = time-1;
  687. ForPlayers(i){ TogglePlayerControllable(i,0); }
  688. SetTimer("CountDownPublic",1000,false);
  689. }
  690.  
  691. public CountDownPublic(){
  692. if(stopped == 1) return 0;
  693. if(Count > 0){
  694. new str[10];
  695. format(str,10,"%d",Count);
  696. GameTextForAll(str, 1000, 5);
  697. Count--;
  698. ForPlayers(i) { PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); }
  699. SetTimer("CountDownPublic",1000,false);
  700. }else{
  701. GameTextForAll("~r~GO GO GO", 1000, 5);
  702. ForPlayers(i){
  703. TogglePlayerControllable(i,1);
  704. SpawnPlayer(i);
  705. SetPlayerHealth(i,100);
  706. }
  707. RecreateObject();
  708. RefreshObject();
  709. Count = -1;
  710. }
  711. return true;
  712. }
  713.  
  714. stock UpdateScoreBar(){
  715. new str[256];
  716. ForPlayers(i){
  717. format(str,256,"E: ~g~%s ~w~vs ~r~%s ~w~- Ronda: ~g~%02d~w~:~r~%02d ~w~- Puntaje: ~g~%02d~w~:~r~%02d",TeamName[TEAM_HOME],TeamName[TEAM_AWAY],TeamRounds[TEAM_HOME],TeamRounds[TEAM_AWAY],TeamScore[TEAM_HOME],TeamScore[TEAM_AWAY]);
  718. new Float:ratio;
  719. if(Deaths[i] == 0) ratio = Kills[i];
  720. else ratio = float(Kills[i])/float(Deaths[i]);
  721. format(str,256,"%s ~w~-  Kills: ~b~%d ~w~- Muertes: ~b~%d ~w~I Ratio: ~b~%0.2f ~w~- Web: ~g~%s",str,Kills[i],Deaths[i],ratio,DEFAULT_WEB);
  722. TextDrawSetString(Textdraw1[i],str);
  723. }
  724. RefreshObject();
  725. }
  726.  
  727. stock UpdatePlayerScoreBar(i){
  728. new str[256];
  729. format(str,256,"E: ~g~%s ~w~vs ~r~%s ~w~- Ronda: ~g~%02d~w~:~r~%02d ~w~- Puntaje: ~g~%02d~w~:~r~%02d",TeamName[TEAM_HOME],TeamName[TEAM_AWAY],TeamRounds[TEAM_HOME],TeamRounds[TEAM_AWAY],TeamScore[TEAM_HOME],TeamScore[TEAM_AWAY]);
  730. new Float:ratio;
  731. if(Deaths[i] == 0) ratio = Kills[i];
  732. else ratio = float(Kills[i])/float(Deaths[i]);
  733. format(str,256,"%s ~w~I  Kills: ~b~%d ~w~- Muertes: ~b~%d ~w~- Ratio: ~b~%0.2f ~w~- Web: ~g~%s",str,Kills[i],Deaths[i],ratio,DEFAULT_WEB);
  734. TextDrawSetString(Textdraw1[i],str);
  735. }
  736.  
  737. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  738. {
  739.     if(dialogid == 1)
  740.     {
  741.         if(response) {
  742.                 switch(listitem){
  743.                 case 0:{
  744.                 if(LockTeam == 1){
  745.                 new str[100];
  746.                 format(str,100,"%s\n%s\nEspectador",TeamName[0],TeamName[1]);
  747.                 return ShowPlayerDialog(playerid,1,2,"{FF0000}Los equipos están bloqueados",str,"Aceptar","");
  748.                 }
  749.                 SCMTAF(COLOR_RED,"Jugador %s entro al equipo %s",Jmeno(playerid),TeamName[0]);
  750.                 Team[playerid] = TEAM_HOME;
  751.                 SetPlayerColor(playerid,0x003300FF);
  752.                 }
  753.                 case 1:{
  754.                 if(LockTeam == 1){
  755.                 new str[100];
  756.                 format(str,100,"%s\n%s\nEspectador",TeamName[0],TeamName[1]);
  757.                 return ShowPlayerDialog(playerid,1,2,"{FF0000}Los equipos están bloqueados",str,"Aceptar","");
  758.                 }
  759.                 SCMTAF(COLOR_RED,"Jugador %s entro al equipo %s",Jmeno(playerid),TeamName[1]);
  760.                 Team[playerid] = TEAM_AWAY;
  761.                 SetPlayerColor(playerid,0xFF0000FF);
  762.                 }
  763.                 case 2:{
  764.                 SCMTAF(COLOR_RED,"Jugador %s entro al equipo Espectador",Jmeno(playerid));
  765.                 Team[playerid] = TEAM_SPEC;
  766.                 SetPlayerColor(playerid,0xFFFF00FF);
  767.                 }
  768.                 }
  769.                 TextDrawShowForPlayer(playerid,Textdraw0);
  770.                 TextDrawShowForPlayer(playerid,Textdraw1[playerid]);
  771.                 UpdatePlayerScoreBar(playerid);
  772.                 if(GetPVarInt(playerid,"ClassSelected") == 1) SpawnPlayer(playerid);
  773.         }else{
  774.                 new str[100];
  775.                 format(str,100,"%s\n%s\nEspectador",TeamName[0],TeamName[1]);
  776.                 return ShowPlayerDialog(playerid,1,2,"{FF0000}Los equipos están bloqueados",str,"Aceptar","");
  777.                 }
  778.                 return 1;
  779.     }
  780. if(dialogid == 2){
  781. if(response){
  782. if(!strcmp(ServerPassword,inputtext,false)){
  783. new str[100];
  784. format(str,100,"%s\n%s\nEspectador",TeamName[0],TeamName[1]);
  785. ShowPlayerDialog(playerid,1,2,"Elija un equipo",str,"Aceptar","");
  786. Team[playerid] = 0;
  787. }else{
  788. return ShowPlayerDialog(playerid,2,1,"Locked","{FF0000}Zlé heslo\n{FFFFFF}Pravdepodobne sa hrá nejaký zápas a preto je server zamknutý,\n zadaj heslo inak ta to do {FF0000}10{FFFFFF} sekund vyhodí zo servera","Vybrat","Opustit"); // este sistema se descarta.
  789. }
  790. }else{
  791. SCMTAF(-1,"Hrác {FF0000}%s{FFFFFF} bol vyhodený - nezadal heslo",Jmeno(playerid)); // este sistema se descarta.
  792.  Kick(playerid);
  793. }
  794. }
  795.     return 0;
  796. }
  797.  
  798. public LockedServerKick(playerid){
  799. if(!IsPlayerConnected(playerid)) return 0;
  800. if(Team[playerid] == -1){
  801. SCMTAF(-1,"Hrác {FF0000}%s{FFFFFF} bol vyhodený - nezadal heslo",Jmeno(playerid)); // este sistema se descarta.
  802. Kick(playerid);
  803.  
  804. }
  805. return true;
  806. }
  807. QCMD:class(){
  808. new str[100];
  809. format(str,100,"%s\n%s\nEspectador",TeamName[0],TeamName[1]);
  810. ShowPlayerDialog(playerid,1,2,"Elija un equipo",str,"Aceptar","");
  811. SetPVarInt(playerid,"ClassSelected",1);
  812. return true;
  813. }
  814.  
  815. QCMD:dm(){
  816. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  817. if(isnull(params)) return SCM(playerid,COLOR_RED,"Comando correcto: /dm [ 0 - 3 ]");
  818. new id = strval(params);
  819. if(id > 3 || id < 0) return SCM(playerid,COLOR_RED,"Comando correcto: /dm [ 0 - 3 ]");
  820. ServerMap = id;
  821. SCMTAF(COLOR_RED,"Administrador %s cambio el mapa a %s",Jmeno(playerid),ReturnDmName(id));
  822. ForPlayers(i){
  823. SpawnPlayer(i);
  824. SetPlayerHealth(i,100);
  825. }
  826. return true;
  827. }
  828.  
  829. QCMD:stop(){
  830. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  831. ForPlayers(i){ TogglePlayerControllable(i,0); }
  832. stopped = 1;
  833. GameTextForAll("~r~~r~STOP", 1000, 5);
  834. return true;
  835. }
  836.  
  837. QCMD:start(){
  838. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  839. stopped = 0;
  840. if(Count > -1){
  841. new str[10];
  842. format(str,10,"%d",Count);
  843. GameTextForAll(str, 1000, 5);
  844. ForPlayers(i){ TogglePlayerControllable(i,0); }
  845. SetTimer("CountDownPublic",1000,false);
  846. }else{
  847. GameTextForAll("~g~~g~GO", 1000, 5);
  848. ForPlayers(i){ TogglePlayerControllable(i,1); }
  849. }
  850. return true;
  851. }
  852.  
  853. QCMD:count(){
  854. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  855. CountDown(strval(params));
  856. return true;
  857. }
  858.  
  859. QCMD:weapon(){
  860. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  861. if(isnull(params)) return SCM(playerid,COLOR_RED,"Comando correcto: /weapon [ 1 - 46 ]");
  862. new id = strval(params);
  863. if(id > 46 || id < 1) return SCM(playerid,COLOR_RED,"ID inválida: /weapon [ 1 - 46 ]");
  864. Weapon = id;
  865. new name[60];
  866. GetWeaponName(id,name,60);
  867. SCMTAF(COLOR_RED,"Administrador %s cambio al arma %s",Jmeno(playerid),name);
  868. ForPlayers(i){
  869. SpawnPlayer(i);
  870. SetPlayerHealth(i,100);
  871. }
  872. return true;
  873. }
  874.  
  875. QCMD:kill(){
  876. SCMTAF(-1,"Jugador {FF0000}%s{FFFFFF} se suicidó.",Jmeno(playerid));
  877. SetPlayerHealth(playerid,-1);
  878. return true;
  879. }
  880.  
  881. QCMD:jetpack(){
  882. if(Team[playerid] != TEAM_SPEC) return SCM(playerid,-1,"Este comando es solo para espectadores.");
  883. SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USEJETPACK);
  884. return true;
  885. }
  886.  
  887. QCMD:spec(){
  888. if(Team[playerid] != TEAM_SPEC) return SCM(playerid,-1,"Este comando es solo para espectadores.");
  889. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} /spec ID");
  890. new id = strval(params);
  891. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  892. Spec[playerid] = id;
  893. TogglePlayerSpectating(playerid, 1);
  894. PlayerSpectatePlayerEx(playerid, id);
  895. return true;
  896. }
  897.  
  898. QCMD:specoff(){
  899. Spec[playerid] = -1;
  900. TogglePlayerSpectating(playerid, 0);
  901. return true;
  902. }
  903.  
  904. QCMD:unbug(){
  905. SCMTAF(-1,"Jugador {FF0000}%s{FFFFFF} se ha desbugeado.",Jmeno(playerid));
  906. new Float:health;
  907. new Float:x, Float:y, Float:z;
  908. GetPlayerPos(playerid,x,y,z);
  909. GetPlayerHealth(playerid,health);
  910. SpawnPlayer(playerid);
  911. SetPlayerPos(playerid,x,y,z);
  912. SetPlayerHealth(playerid,health);
  913. return true;
  914. }
  915.  
  916. QCMD:return(){
  917. SCMTAF(-1,"Jugador {FF0000}%s{FFFFFF} se ha respawneado.",Jmeno(playerid));
  918. SpawnPlayer(playerid);
  919. SetPlayerHealth(playerid,100);
  920. return true;
  921. }
  922.  
  923. QCMD:teamname(){
  924. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  925. new team,name[50];
  926. if(sscanf(params,"is",team,name)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /teamname 0-1 [nombre]");
  927. if(team > 1 || team < 0) return SCM(playerid,0xFF0000FF,"Solo valor 1 o 0:{FFFFFF} /teamname 0-1 [nombre]");
  928. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha cambiado el nombre del equipo {FF0000}%s{FFFFFF} a {FF0000}%s",Jmeno(playerid),TeamName[team],name);
  929. format(TeamName[team],50,"%s",name);
  930. UpdateScoreBar();
  931. return true;
  932. }
  933.  
  934. QCMD:freeze(){
  935. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  936. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /freeze ID");
  937. new id = strval(params);
  938. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error: {FFFFFF} este jugador no está en línea.");
  939. TogglePlayerControllable(id,0);
  940. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha congelado a {FF0000}%s",Jmeno(playerid),Jmeno(id));
  941. return true;
  942. }
  943.  
  944. QCMD:unfreeze(){
  945. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  946. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto: {FFFFFF} /unfreeze ID");
  947. new id = strval(params);
  948. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no esta en línea.");
  949. TogglePlayerControllable(id,1);
  950. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha descongelado a {FF0000}%s",Jmeno(playerid),Jmeno(id));
  951. return true;
  952. }
  953.  
  954. QCMD:mute(){
  955. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  956. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /mute ID");
  957. new id = strval(params);
  958. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} este jugaor no está en línea");
  959. SetPVarInt(id,"Muted",1);
  960. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha muteado a {FF0000}%s",Jmeno(playerid),Jmeno(id));
  961. return true;
  962. }
  963. QCMD:unmute(){
  964. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  965. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /unmute ID");
  966. new id = strval(params);
  967. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  968. DeletePVar(id,"Muted");
  969. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha desmuteado a {FF0000}%s",Jmeno(playerid),Jmeno(id));
  970. return true;
  971. }
  972.  
  973. QCMD:ip(){
  974. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  975. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /unmute ID");
  976. new id = strval(params);
  977. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  978. new str[1000];
  979. new cesta[50];
  980. format(cesta,50,IPFILE,Ip(id));
  981. new File:a = fopen(cesta,io_read);
  982. new str2[128];
  983. format(str,1000,"El jugador %s tiene estos nicks:\n",Jmeno(id));
  984. while(fread(a,str2)){
  985. strcat(str,str2);
  986. }
  987. fclose(a);
  988. ShowPlayerDialog(playerid,3,0,"IP-AKA",str,"Ok","");
  989. return true;
  990. }
  991.  
  992. stock Ip(i){
  993. new x[20];
  994. GetPlayerIp(i,x,20);
  995. return x;
  996. }
  997.  
  998. QCMD:ban(){
  999. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1000. new id,dovod[100];
  1001. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /ban ID razón");
  1002. if(sscanf(params,"is",id,dovod)) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} /ban ID razón");
  1003. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1004. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha baneado a {FF0000}%s {FFFFFF} por la razón: {FF0000}%s",Jmeno(playerid),Jmeno(id),dovod);
  1005. BanEx(id,dovod);
  1006. return true;
  1007. }
  1008. QCMD:kick(){
  1009. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1010. new id,dovod[100];
  1011. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /kick ID razón");
  1012. if(sscanf(params,"is",id,dovod)) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} /kick ID razón");
  1013. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1014. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha kickeado a {FF0000}%s {FFFFFF}por la razón: FF0000}%s",Jmeno(playerid),Jmeno(id),dovod);
  1015. Kick(id);
  1016. return true;
  1017. }
  1018. QCMD:spawn(){
  1019. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1020. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /spawn ID");
  1021. new id = strval(params);
  1022. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea");
  1023. SpawnPlayer(id);
  1024. SetPlayerHealth(id,100);
  1025. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha respawneado a {FF0000}%s",Jmeno(playerid),Jmeno(id));
  1026. return true;
  1027. }
  1028. QCMD:spawnall(){
  1029. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1030. ForPlayers(i){
  1031. if(Team[i] != TEAM_SPEC){
  1032. SpawnPlayer(i);
  1033. SetPlayerHealth(i,100);
  1034. }
  1035. }
  1036. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha respawneado a todos los jugadores.",Jmeno(playerid));
  1037. return true;
  1038. }
  1039. QCMD:hp(){
  1040. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1041. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto: {FFFFFF} /hp ID");
  1042. new id = strval(params);
  1043. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1044. SetPlayerHealth(id,100);
  1045. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} le ha rellenado la vida a {FF0000}%s",Jmeno(playerid),Jmeno(id));
  1046. return true;
  1047. }
  1048. QCMD:hpall(){
  1049. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1050. ForPlayers(i){
  1051. SpawnPlayer(i);
  1052. SetPlayerHealth(i,100);
  1053. }
  1054. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} le ha rellenado la vida a todos los jugadores",Jmeno(playerid));
  1055. return true;
  1056. }
  1057.  
  1058. QCMD:pointsaway(){
  1059. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1060. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /pointsaway 0-30");
  1061. new id = strval(params);
  1062. if(id > 30 || id < 0) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /pointsaway 0-30");
  1063. TeamScore[TEAM_AWAY]  = id;
  1064. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha establecido el puntaje del equipo {FF0000}%s{FFFFFF} a {FF0000}%d",Jmeno(playerid),TeamName[TEAM_AWAY],id);
  1065. UpdateScoreBar();
  1066. return true;
  1067. }
  1068. QCMD:pointshome(){
  1069. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1070. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /pointshome 0-30");
  1071. new id = strval(params);
  1072. if(id > 30 || id < 0) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /pointshome 0-30");
  1073. TeamScore[TEAM_HOME]  = id;
  1074. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha establecido el puntaje del equipo {FF0000}%s{FFFFFF} a {FF0000}%d",Jmeno(playerid),TeamName[TEAM_HOME],id);
  1075. UpdateScoreBar();
  1076. return true;
  1077. }
  1078. QCMD:rounds(){
  1079. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1080. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /rounds 1-5");
  1081. new id = strval(params);
  1082. if(id > 5 || id < 1) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /rounds 1-5");
  1083. MaxRounds  = id;
  1084. SCMTAF(-1,"Administrátor {FF0000}%s{FFFFFF} ha establecido las rondas a {FF0000}%d",Jmeno(playerid),id);
  1085. SCMTAF(-1,"RS: %dx%d",MaxRounds,MaxRoundScore);
  1086. return true;
  1087. }
  1088. QCMD:roundscore(){
  1089. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1090. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /roundscore 1-100");
  1091. new id = strval(params);
  1092. if(id > 100 || id < 1) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /roundscore 1-100");
  1093. MaxRoundScore  = id;
  1094. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha establecido el score a {FF0000}%d",Jmeno(playerid),id);
  1095. SCMTAF(-1,"RS: %dx%d",MaxRounds,MaxRoundScore);
  1096. return true;
  1097. }
  1098. QCMD:home(){
  1099. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1100. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /home ID");
  1101. new id = strval(params);
  1102. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1103. Team[id] = TEAM_HOME;
  1104. SpawnPlayer(id);
  1105. SetPlayerColor(id,0x003300FF);
  1106. SetPlayerHealth(id,100);
  1107. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha enviado al jugador {FF0000}%s{FFFFFF} al equipo {FF0000}%s",Jmeno(playerid),Jmeno(id),TeamName[TEAM_HOME]);
  1108. return true;
  1109. }
  1110. QCMD:away(){
  1111. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1112. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /away ID");
  1113. new id = strval(params);
  1114. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1115. Team[id] = TEAM_AWAY;
  1116. SpawnPlayer(id);
  1117. SetPlayerColor(id,0xFF0000FF);
  1118. SetPlayerHealth(id,100);
  1119. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha enviado al jugador {FF0000}%s{FFFFFF} al equipo {FF0000}%s",Jmeno(playerid),Jmeno(id),TeamName[TEAM_AWAY]);
  1120. return true;
  1121. }
  1122. QCMD:reset(){
  1123. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1124. TeamScore[TEAM_HOME] = 0;
  1125. TeamScore[TEAM_AWAY] = 0;
  1126. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha reseteado el score de los equipos",Jmeno(playerid));
  1127. UpdateScoreBar();
  1128. return true;
  1129. }
  1130. QCMD:divak(){  // espectador
  1131. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1132. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /divak ID");
  1133. new id = strval(params);
  1134. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1135. Team[id] = TEAM_SPEC;
  1136. SpawnPlayer(id);
  1137. SetPlayerColor(id,0xFFFF00FF);
  1138. SetPlayerHealth(id,100);
  1139. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha enviado al jugador {FF0000}%s{FFFFFF} dal equipo {FF0000}Espectador",Jmeno(playerid),Jmeno(id));
  1140. return true;
  1141. }
  1142.  
  1143. QCMD:resetall(){
  1144. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1145. TeamScore[TEAM_HOME] = 0;
  1146. TeamScore[TEAM_AWAY] = 0;
  1147. TeamRounds[TEAM_HOME] = 0;
  1148. TeamRounds[TEAM_AWAY] = 0;
  1149. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha reseteado todo",Jmeno(playerid));
  1150. UpdateScoreBar();
  1151. return true;
  1152. }
  1153. QCMD:resetplayer(){
  1154. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1155. ForPlayers(i){
  1156. SetPlayerScore(i,0);
  1157. Kills[i] = 0;
  1158. Deaths[i] = 0;
  1159. TeamKills[i] = 0;
  1160. }
  1161. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha reseteado a los jugadores",Jmeno(playerid));
  1162. UpdateScoreBar();
  1163. return true;
  1164. }
  1165. QCMD:lockserver(){   // NO Y NO
  1166. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} Nemáš dostatocný admin level !");
  1167. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} /luckserver HESLO");
  1168. if(!params[2] || strlen(params) > 49) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} /luckserver HESLO");
  1169. format(ServerPassword,50,"%s",params);
  1170. SCMTAF(-1,"Administrátor {FF0000}%s{FFFFFF} nastavil heslo na servera {FF0000}%s",Jmeno(playerid),params);
  1171. return true;
  1172. }
  1173. QCMD:unlockserver(){  // NO Y NO
  1174. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} Nemáš dostatocný admin level !");
  1175. format(ServerPassword,50," ");
  1176. SCMTAF(-1,"Administrátor {FF0000}%s{FFFFFF} odomkol server",Jmeno(playerid));
  1177. return true;
  1178. }
  1179.  
  1180. QCMD:lockteam(){
  1181. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1182. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /lockteam 0-1");
  1183. new id = strval(params);
  1184. if(id > 1 || id < 0) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /luckserver 0-1");
  1185. LockTeam = id;
  1186. if( id == 1){SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha bloqueado los equipos",Jmeno(playerid));
  1187. }else{ SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha desbloqueado los equipos",Jmeno(playerid));
  1188. }
  1189. return true;
  1190. }
  1191.  
  1192. QCMD:fps(){
  1193. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1194. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /fps ID");
  1195. new id = strval(params);
  1196. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1197. SCMTAF(-1,"Jugador {FF0000}%s{FFFFFF} tiene {FF0000}%d {FFFFFF}FPS",Jmeno(id),GetPlayerFPS(id));
  1198. return true;
  1199. }
  1200.  
  1201.  
  1202. QCMD:fpsall(){
  1203. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel admin.");
  1204. ForPlayers(i){
  1205. SCMTAF(-1,"Jugador {FF0000}%s{FFFFFF} tiene {FF0000}%d {FFFFFF}FPS",Jmeno(i),GetPlayerFPS(i));
  1206. }
  1207. return true;
  1208. }
  1209.  
  1210. QCMD:register(){
  1211. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /register contraseña");
  1212. if(strlen(params) < 4) return SCM(playerid,0xFF0000FF,"Error, use una contraseña con más de 4 carácteres:{FFFFFF} /register contraseña");
  1213. new s[128];
  1214. format(s,128,"%s.txt",Jmeno(playerid));
  1215. if(fexist(s)) return SCM(playerid,0xFF0000FF,"Te has registrado ahora /login");
  1216. new File:f = fopen(s,io_write);
  1217. format(s,128,"%s\r\n0",qhash(params));
  1218. SetPVarString(playerid,"Pass",qhash(params));
  1219. fwrite(f,s);
  1220. fclose(f);
  1221. SetPVarInt(playerid,"Logged",1);
  1222. SCMF(playerid,-1,"Te has regitrado con la contraseña: {FF0000}%s",params);
  1223. return true;
  1224. }
  1225.  
  1226. QCMD:login(){
  1227. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /login contraseña");
  1228. new s[128];
  1229. format(s,128,"%s.txt",Jmeno(playerid));
  1230. if(!fexist(s)) return SCM(playerid,0xFF0000FF,"No te has registrado, /register");
  1231. new File:f = fopen(s,io_read);
  1232. fread(f,s);
  1233. DelChar(s);
  1234. if(strval(s) != num_hash(params)) return SCM(playerid,0xFF0000FF,"Contraseña inválida");
  1235. SetPVarString(playerid,"Pass",s);
  1236. fread(f,s);
  1237. Admin[playerid] = strval(s);
  1238. fclose(f);
  1239. SetPVarInt(playerid,"Logged",1);
  1240. SCMF(playerid,-1,"Te has logeado con administrador nivel: %d",Admin[playerid]);
  1241. return true;
  1242. }
  1243.  
  1244. QCMD:setadmin(){
  1245. new id,level;
  1246. if(!IsPlayerAdmin(playerid)){
  1247. if(Admin[playerid] < 2) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel 2.");
  1248.  
  1249. }
  1250. if(sscanf(params,"ii",id,level)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /setadmin id 0-2");
  1251. if(!IsPlayerConnected(id)) return  SCM(playerid,0xFF0000FF,"Error:{FFFFFF} este jugador no está en línea.");
  1252. if(level > 2 || level < 0) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /setadmin id 0-2");
  1253. if(GetPVarInt(id,"Logged") != 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} el jugador no está conectado o registrado.");
  1254. new get[128],s[50];
  1255. format(s,50,"%s.txt",Jmeno(id));
  1256. GetPVarString(id,"Pass",get,128);
  1257. new File:f = fopen(s,io_write);
  1258. format(s,128,"%s\r\n%d",get,level);
  1259. fwrite(f,s);
  1260. fclose(f);
  1261. Admin[id] = level;
  1262. SCMTAF(-1,"Administrador FF0000}%s{FFFFFF} ha dado al jugador {FF0000}%s {FFFFFF}nivel de administrador: {FF0000}%d",Jmeno(playerid),Jmeno(id),level);
  1263. return true;
  1264. }
  1265.  
  1266. QCMD:cw(){
  1267. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /cw 0-1");
  1268. new id = strval(params);
  1269. if(id > 1 || id < 0) return SCM(playerid,0xFF0000FF,"Carácter inválido:{FFFFFF} /cw 0-1");
  1270. if(id == 0) SCMTAF(-1,"Administrátor {FF0000}%s{FFFFFF} ha puesto modo {FF0000}TG {FFFFFF}, no se contaran los puntajes.",Jmeno(playerid),id);
  1271. else SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha puesto modo {FF0000}CW {FFFFFF}, se contaran los puntajes.",Jmeno(playerid),id);
  1272. Trening = id;
  1273. return true;
  1274. }
  1275.  
  1276. QCMD:help(){
  1277. new string[600];
  1278. strcat(string,"{FF0000}Para todos: {FFFFFF}/class /kill /return /unbug\n");
  1279. strcat(string,"{FFFFFF}/register /login /credits\n");
  1280. strcat(string,"{FFFF00}Spec: {FFFFFF}/spec /specoff /jetpack\n");
  1281. if(Admin[playerid] > 0){
  1282. strcat(string,"{FF0000}Nivel 1: {FFFFFF}/dm /stop /start /count /weapon\n");
  1283. strcat(string,"{FFFFFF}/teamname /freeze /unfreeze /mute /unmute\n");
  1284. strcat(string,"{FFFFFF}/ban /kick /spawn /spawnall /hp /hpall /cw\n");
  1285. strcat(string,"{FFFFFF}/pointshome /pointsaway /rounds /roundscore\n");
  1286. strcat(string,"{FFFFFF}/home /away /divak /reset /resetall\n");
  1287. strcat(string,"{FFFFFF}/resetplayer /car /dcar /refreshobject\n");
  1288. strcat(string,"{FFFFFF}/lockserver /unlockserver /lockteam /fps /fpsall\n");
  1289. strcat(string,"{FF0000}Nivel 2: {FFFFFF}/setadmin");
  1290. }
  1291. if(IsPlayerAdmin(playerid)){
  1292.  
  1293. strcat(string,"\n{FF0000}Rcon: pene");
  1294. }
  1295. ShowPlayerDialog(playerid,3,0,"Príkazy",string,"Exit","");
  1296. return true;
  1297. }
  1298.  
  1299. QCMD:credits(){
  1300. SCM(playerid,0x00FF00AA,"==================================");
  1301. SCM(playerid,0xFF0000AA,"Creador del GM:  {FFFFFF}QWER");
  1302. SCM(playerid,0xFF0000AA,"Tradución a Español:  {FFFFFF}Andrew_Manu");
  1303. SCM(playerid,0xFF0000AA,"{FFFFFF}[pawno.cz]");
  1304. SCM(playerid,0x00FF00AA,"====================================");
  1305. return true;
  1306. }
  1307.  
  1308. QCMD:refreshobject(){
  1309. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel.");
  1310. RecreateObject();
  1311. RefreshObject();
  1312. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha resfrescado los objetos",Jmeno(playerid));
  1313. return true;
  1314. }
  1315.  
  1316. QCMD:car(){
  1317. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel.");
  1318. if(isnull(params)) return SCM(playerid,0xFF0000FF,"Comando correcto:{FFFFFF} /car 400 - 611");
  1319. new id = strval(params);
  1320. if(id > 611 || id < 400) return SCM(playerid,0xFF0000FF,"ID Inválida:{FFFFFF} /car 400 - 611");
  1321. if(CarsCount == 50) return SCM(playerid,0xFF0000FF,"Použi:{FFFFFF} Už je 50 aut vytvorených, použi /dcar");
  1322. new Float:X,Float:Y,Float:Z,Float:A;
  1323. GetPlayerPos(playerid, X,Y,Z);
  1324. GetPlayerFacingAngle(playerid, A);
  1325. Cars[CarsCount] = CreateVehicle(id,X+5,Y+5,Z,A+90,random(128),random(128),-1);
  1326. CarsCount++;
  1327. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha creado un auto con ID %d",Jmeno(playerid),id);
  1328. return true;
  1329. }
  1330.  
  1331. QCMD:dcar(){
  1332. if(Admin[playerid] < 1) return SCM(playerid,0xFF0000FF,"Error:{FFFFFF} tú no tienes nivel.");
  1333. for(new i; i < CarsCount;i++){
  1334. DestroyVehicle(Cars[i]);
  1335. }
  1336. SCMTAF(-1,"Administrador {FF0000}%s{FFFFFF} ha eliminado los autos (%d)",Jmeno(playerid),CarsCount);
  1337. CarsCount = 0;
  1338. return true;
  1339. }
  1340.  
  1341. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys){
  1342. if(Spec[playerid] > -1){
  1343. if(newkeys == KEY_WALK){
  1344. new nasiel = -1;
  1345.  
  1346. for(new id=Spec[playerid]-1; id <= 0;id--){
  1347. if(IsPlayerConnected(id)){
  1348. if(GetPlayerState(id) != PLAYER_STATE_SPECTATING){
  1349. nasiel = id;
  1350. break;
  1351. }
  1352. }
  1353. }
  1354.  
  1355. if(nasiel != -1){
  1356. Spec[playerid] = nasiel;
  1357. TogglePlayerSpectating(playerid, 1);
  1358. PlayerSpectatePlayerEx(playerid, nasiel);
  1359. }else{
  1360. for(new id=Spec[playerid]+1; id <= Connects;id++){
  1361. if(id == Spec[playerid]) break;
  1362. if(IsPlayerConnected(id)){
  1363. if(GetPlayerState(id) != PLAYER_STATE_SPECTATING){
  1364. nasiel = id;
  1365. break;
  1366. }
  1367. }
  1368. }
  1369.  
  1370. if(nasiel != -1){
  1371. Spec[playerid] = nasiel;
  1372. TogglePlayerSpectating(playerid, 1);
  1373. PlayerSpectatePlayerEx(playerid, nasiel);
  1374. }
  1375.  
  1376. }
  1377. }
  1378. else if(newkeys == KEY_JUMP){
  1379. new nasiel = -1;
  1380.  
  1381. for(new id=Spec[playerid]+1; id <= Connects;id++){
  1382. if(id == Spec[playerid]) break;
  1383. if(IsPlayerConnected(id)){
  1384. if(GetPlayerState(id) != PLAYER_STATE_SPECTATING){
  1385. nasiel = id;
  1386. break;
  1387. }
  1388. }
  1389. }
  1390.  
  1391. if(nasiel != -1){
  1392. Spec[playerid] = nasiel;
  1393. TogglePlayerSpectating(playerid, 1);
  1394. PlayerSpectatePlayerEx(playerid, nasiel);
  1395. }else{
  1396. for(new id=Spec[playerid]-1; id <= 0;id--){
  1397. if(id == Spec[playerid]) break;
  1398. if(IsPlayerConnected(id)){
  1399. if(GetPlayerState(id) != PLAYER_STATE_SPECTATING){
  1400. nasiel = id;
  1401. break;
  1402. }
  1403. }
  1404. }
  1405.  
  1406. if(nasiel != -1){
  1407. Spec[playerid] = nasiel;
  1408. TogglePlayerSpectating(playerid, 1);
  1409. PlayerSpectatePlayerEx(playerid, nasiel);
  1410. }
  1411.  
  1412. }
  1413.  
  1414. }
  1415. }
  1416. return true;
  1417. }
  1418.  
  1419.  
  1420.  
  1421. public HideWin(){
  1422. TextDrawHideForAll(Textdraw01);
  1423. TextDrawHideForAll(Textdraw100);
  1424. TextDrawHideForAll(Textdraw2);
  1425. TextDrawHideForAll(Textdraw3);
  1426. TextDrawHideForAll(Textdraw4);
  1427. TextDrawHideForAll(Textdraw5);
  1428. TextDrawHideForAll(Textdraw6);
  1429. TextDrawHideForAll(Textdraw7);
  1430. TextDrawHideForAll(Textdraw8);
  1431. TextDrawHideForAll(Textdraw9);
  1432. TextDrawHideForAll(Textdraw10);
  1433. TextDrawHideForAll(Textdraw11);
  1434. TextDrawHideForAll(Textdraw12);
  1435. TextDrawHideForAll(Textdraw13);
  1436. TextDrawHideForAll(Textdraw14);
  1437. ForPlayers(i){ TogglePlayerControllable(i,1); }
  1438. return true;
  1439. }
  1440.  
  1441. stock ReturnDmName(id){
  1442. new s[25];
  1443. if(id == 0) format(s,25,"Campo de Baseball");
  1444. else if(id == 1) format(s,25,"Hangár");
  1445. else if(id == 2) format(s,25,"Aeropuerto");
  1446. else format(s,25,"Autoescuela");
  1447. return s;
  1448. }
  1449.  
  1450. public OnPlayerCommandText(playerid,cmdtext[]){
  1451. return OnPlayerCommand(playerid,cmdtext);
  1452. }
  1453.  
  1454. stock Jmeno(playerid){
  1455. new n[MAX_PLAYER_NAME];
  1456. GetPlayerName(playerid,n,MAX_PLAYER_NAME);
  1457. return n;
  1458. }
  1459.  
  1460. stock ClearKillList()
  1461. {
  1462.    for(new l=0; l<6; l++) SendDeathMessage(202, 202, 202);
  1463. }
  1464.  
  1465. stock RefreshObject(){
  1466. new str[100];
  1467. format(str,100,"{00FF00}%d{FFFFFF}:{FF0000}%d",TeamScore[TEAM_HOME],TeamScore[TEAM_AWAY]);
  1468. for(new i; i < 9;i++){
  1469. DestroyObject(Object[i]);
  1470. Object[i] = CreateObject(7914, Objects[i][0], Objects[i][1], Objects[i][2],   0.00, 0.00,  Objects[i][3]);
  1471. SetObjectMaterialText(Object[i],str, 0, OBJECT_MATERIAL_SIZE_256x128,"Arial", 60, 0, 0xFFFF8200, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  1472. }
  1473.  
  1474. }
  1475. /*
  1476.         Object[0] = CreateObject(7914, 1337.74, 2094.88, 20.58,   0.00, 0.00, 180.00);
  1477.         Object[1] = CreateObject(7914, 1292.11, 2143.55, 20.14,   0.00, 0.00, 90.00);
  1478.         Object[2] = CreateObject(7914, 1663.00, 8293.00, 734.00,   0.00, 0.00, 0.00);
  1479.         Object[3] = CreateObject(7914, 1664.21, 734.22, 13.11,   0.00, 0.00, 0.00);
  1480.         Object[4] = CreateObject(7914, 1663.94, 706.63, 13.11,   0.00, 0.00, 180.04);
  1481.         Object[5] = CreateObject(7914, -1234.09, -84.41, 16.39,   0.00, 0.00, -44.94);
  1482.         Object[6] = CreateObject(7914, -1195.23, -131.88, 16.39,   0.00, 0.00, -44.94);
  1483.         Object[7] = CreateObject(7914, -2096.01, -188.82, 37.45,   0.00, 0.00, 90.04);
  1484.         Object[8] = CreateObject(7914, -2011.62, -189.27, 37.45,   0.00, 0.00, -90.04);
  1485. */
  1486. stock RecreateObject(){
  1487. new str[100];
  1488. format(str,100,"{00FF00}%d{FFFFFF}:{FF0000}%d",TeamScore[TEAM_HOME],TeamScore[TEAM_AWAY]);
  1489. for(new i; i < 9;i++){
  1490. DestroyObject(Object[i]);
  1491. Object[i] = CreateObject(7914, Objects[i][0], Objects[i][1], Objects[i][2],   0.00, 0.00,  Objects[i][3]);
  1492. SetObjectMaterialText(Object[i],str, 0, OBJECT_MATERIAL_SIZE_256x128,"Arial", 60, 0, 0xFFFF8200, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  1493. }
  1494.  
  1495. }
  1496.  
  1497. stock OnPlayerCommand(playerid,command[])
  1498. {
  1499.         new     cmd[50],callback[55], params[128], size, len = strlen(command),help;
  1500.                 for(new i; i < len;i++){
  1501.                 if(command[i] != ' '){
  1502.                 if(command[i] >= 'A' && command[i] <= 'Z'){
  1503.                 command[i] += 32;
  1504.                 }
  1505.                 }else{
  1506.                 size = i;
  1507.                 break;
  1508.                 }}
  1509.  
  1510.                 if(size > 0){
  1511.                 strmid(cmd,command,1,size,50);
  1512.                 strmid(params,command,size+1,len,128);
  1513.                 }else{
  1514.                 format(cmd,50,command[1]);
  1515.                 }
  1516.  
  1517.         if(!params[0]) params = " ";
  1518.         if(!strcmp(params,"help")) help = 1;
  1519.         format(callback,50,"cmd_%s",cmd);
  1520.                 if(CallLocalFunction(callback,"isi",playerid,params,help))
  1521.         {
  1522.                 return true;
  1523.                         }else{
  1524.                         return false;
  1525.         }
  1526. }
  1527.  
  1528. stock GetPlayerFPS(playerid) return pFPS[playerid];
  1529.  
  1530.  
  1531. stock DelChar(tstring[])
  1532. {
  1533. new ln = strlen(tstring);
  1534. if(tstring[ln-2] == '\r')tstring[ln-2] = '\0';
  1535. if(tstring[ln-1] == '\n')tstring[ln-1] = '\0';
  1536. }
  1537.  
  1538. stock fcreate(file[])
  1539.     {
  1540.         if(fexist(file)) return false;
  1541.         new File:cFile = fopen(file,io_write);
  1542.         return fclose(cFile);
  1543.     }
  1544.  
  1545. stock num_hash(buf[])
  1546.  {
  1547.         new length=strlen(buf);
  1548.     new s1 = 1;
  1549.     new s2 = 0;
  1550.     new n;
  1551.     for (n=0; n<length; n++) {
  1552.        s1 = (s1 + buf[n]) % 65521;
  1553.        s2 = (s2 + s1)     % 65521;
  1554.     }
  1555.     return (s2 << 16) + s1;
  1556.  }
  1557.  
  1558. stock qhash(str2[]) {
  1559.    new tmpdasdsa[128];
  1560.    tmpdasdsa[0]=0;
  1561.    valstr(tmpdasdsa,num_hash(str2));
  1562.    return tmpdasdsa;
  1563. }
  1564.  
  1565.  
  1566. stock sscanf(string[], format[], {Float,_}:...)
  1567. {
  1568.         #if defined isnull
  1569.                 if (isnull(string))
  1570.         #else
  1571.                 if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1572.         #endif
  1573.                 {
  1574.                         return format[0];
  1575.                 }
  1576.         #pragma tabsize 4
  1577.         new
  1578.                 formatPos = 0,
  1579.                 stringPos = 0,
  1580.                 paramPos = 2,
  1581.                 paramCount = numargs(),
  1582.                 delim = ' ';
  1583.         while (string[stringPos] && string[stringPos] <= ' ')
  1584.         {
  1585.                 stringPos++;
  1586.         }
  1587.         while (paramPos < paramCount && string[stringPos])
  1588.         {
  1589.                 switch (format[formatPos++])
  1590.                 {
  1591.                         case '\0':
  1592.                         {
  1593.                                 return 0;
  1594.                         }
  1595.                         case 'i', 'd':
  1596.                         {
  1597.                                 new
  1598.                                         neg = 1,
  1599.                                         num = 0,
  1600.                                         ch = string[stringPos];
  1601.                                 if (ch == '-')
  1602.                                 {
  1603.                                         neg = -1;
  1604.                                         ch = string[++stringPos];
  1605.                                 }
  1606.                                 do
  1607.                                 {
  1608.                                         stringPos++;
  1609.                                         if ('0' <= ch <= '9')
  1610.                                         {
  1611.                                                 num = (num * 10) + (ch - '0');
  1612.                                         }
  1613.                                         else
  1614.                                         {
  1615.                                                 return -1;
  1616.                                         }
  1617.                                 }
  1618.                                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1619.                                 setarg(paramPos, 0, num * neg);
  1620.                         }
  1621.                         case 'h', 'x':
  1622.                         {
  1623.                                 new
  1624.                                         num = 0,
  1625.                                         ch = string[stringPos];
  1626.                                 do
  1627.                                 {
  1628.                                         stringPos++;
  1629.                                         switch (ch)
  1630.                                         {
  1631.                                                 case 'x', 'X':
  1632.                                                 {
  1633.                                                         num = 0;
  1634.                                                         continue;
  1635.                                                 }
  1636.                                                 case '0' .. '9':
  1637.                                                 {
  1638.                                                         num = (num << 4) | (ch - '0');
  1639.                                                 }
  1640.                                                 case 'a' .. 'f':
  1641.                                                 {
  1642.                                                         num = (num << 4) | (ch - ('a' - 10));
  1643.                                                 }
  1644.                                                 case 'A' .. 'F':
  1645.                                                 {
  1646.                                                         num = (num << 4) | (ch - ('A' - 10));
  1647.                                                 }
  1648.                                                 default:
  1649.                                                 {
  1650.                                                         return -1;
  1651.                                                 }
  1652.                                         }
  1653.                                 }
  1654.                                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  1655.                                 setarg(paramPos, 0, num);
  1656.                         }
  1657.                         case 'c':
  1658.                         {
  1659.                                 setarg(paramPos, 0, string[stringPos++]);
  1660.                         }
  1661.                         case 'f':
  1662.                         {
  1663.  
  1664.                                 new changestr[16], changepos = 0, strpos = stringPos;
  1665.                                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  1666.                                 {
  1667.                                         changestr[changepos++] = string[strpos++];
  1668.                                 }
  1669.                                 changestr[changepos] = '\0';
  1670.                                 setarg(paramPos,0,_:floatstr(changestr));
  1671.                         }
  1672.                         case 'p':
  1673.                         {
  1674.                                 delim = format[formatPos++];
  1675.                                 continue;
  1676.                         }
  1677.                         case '\'':
  1678.                         {
  1679.                                 new
  1680.                                         end = formatPos - 1,
  1681.                                         ch;
  1682.                                 while ((ch = format[++end]) && ch != '\'') {}
  1683.                                 if (!ch)
  1684.                                 {
  1685.                                         return -1;
  1686.                                 }
  1687.                                 format[end] = '\0';
  1688.                                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1689.                                 {
  1690.                                         if (format[end + 1])
  1691.                                         {
  1692.                                                 return -1;
  1693.                                         }
  1694.                                         return 0;
  1695.                                 }
  1696.                                 format[end] = '\'';
  1697.                                 stringPos = ch + (end - formatPos);
  1698.                                 formatPos = end + 1;
  1699.                         }
  1700.                         case 'u':
  1701.                         {
  1702.                                 new
  1703.                                         end = stringPos - 1,
  1704.                                         id = 0,
  1705.                                         bool:num = true,
  1706.                                         ch;
  1707.                                 while ((ch = string[++end]) && ch != delim)
  1708.                                 {
  1709.                                         if (num)
  1710.                                         {
  1711.                                                 if ('0' <= ch <= '9')
  1712.                                                 {
  1713.                                                         id = (id * 10) + (ch - '0');
  1714.                                                 }
  1715.                                                 else
  1716.                                                 {
  1717.                                                         num = false;
  1718.                                                 }
  1719.                                         }
  1720.                                 }
  1721.                                 if (num && IsPlayerConnected(id))
  1722.                                 {
  1723.                                         setarg(paramPos, 0, id);
  1724.                                 }
  1725.                                 else
  1726.                                 {
  1727.                                         #if !defined foreach
  1728.                                                 #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1729.                                                 #define __SSCANF_FOREACH__
  1730.                                         #endif
  1731.                                         string[end] = '\0';
  1732.                                         num = false;
  1733.                                         new
  1734.                                                 name[MAX_PLAYER_NAME];
  1735.                                         id = end - stringPos;
  1736.                                         foreach (Player, playerid)
  1737.                                         {
  1738.                                                 GetPlayerName(playerid, name, sizeof (name));
  1739.                                                 if (!strcmp(name, string[stringPos], true, id))
  1740.                                                 {
  1741.                                                         setarg(paramPos, 0, playerid);
  1742.                                                         num = true;
  1743.                                                         break;
  1744.                                                 }
  1745.                                         }
  1746.                                         if (!num)
  1747.                                         {
  1748.                                                 setarg(paramPos, 0, INVALID_PLAYER_ID);
  1749.                                         }
  1750.                                         string[end] = ch;
  1751.                                         #if defined __SSCANF_FOREACH__
  1752.                                                 #undef foreach
  1753.                                                 #undef __SSCANF_FOREACH__
  1754.                                         #endif
  1755.                                 }
  1756.                                 stringPos = end;
  1757.                         }
  1758.                         case 's', 'z':
  1759.                         {
  1760.                                 new
  1761.                                         i = 0,
  1762.                                         ch;
  1763.                                 if (format[formatPos])
  1764.                                 {
  1765.                                         while ((ch = string[stringPos++]) && ch != delim)
  1766.                                         {
  1767.                                                 setarg(paramPos, i++, ch);
  1768.                                         }
  1769.                                         if (!i)
  1770.                                         {
  1771.                                                 return -1;
  1772.                                         }
  1773.                                 }
  1774.                                 else
  1775.                                 {
  1776.                                         while ((ch = string[stringPos++]))
  1777.                                         {
  1778.                                                 setarg(paramPos, i++, ch);
  1779.                                         }
  1780.                                 }
  1781.                                 stringPos--;
  1782.                                 setarg(paramPos, i, '\0');
  1783.                         }
  1784.                         default:
  1785.                         {
  1786.                                 continue;
  1787.                         }
  1788.                 }
  1789.                 while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1790.                 {
  1791.                         stringPos++;
  1792.                 }
  1793.                 while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1794.                 {
  1795.                         stringPos++;
  1796.                 }
  1797.                 paramPos++;
  1798.         }
  1799.         do
  1800.         {
  1801.                 if ((delim = format[formatPos++]) > ' ')
  1802.                 {
  1803.                         if (delim == '\'')
  1804.                         {
  1805.                                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1806.                         }
  1807.                         else if (delim != 'z')
  1808.                         {
  1809.                                 return delim;
  1810.                         }
  1811.                 }
  1812.         }
  1813.         while (delim > ' ');
  1814.         return 0;
  1815. }
Advertisement
Add Comment
Please, Sign In to add comment