Guest User

Untitled

a guest
Apr 8th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #define FILTERSCRIPT
  3.  
  4. #include <a_samp>
  5. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  6.  
  7. #define COLOR_PINK 0xFF00FFFF
  8. #define COLOR_BLUE 0x006AFFFF
  9.  
  10. #define COLOR_GREEN 0x00FF54FF
  11. #define COLOR_RED 0xFF2100FF
  12.  
  13. new Float:XX;
  14. new Float:YY;
  15. new Float:ZZ;
  16.  
  17. new event = 0;
  18. new intID;
  19. new joinable = 0;
  20. new joined[MAX_PLAYERS] = 0;
  21.  
  22. new etimer;
  23.  
  24. public OnFilterScriptInit()
  25. {
  26.     print("\n--------------------------------------");
  27.     print("Event system by [AK]Nazgul");
  28.     print("--------------------------------------\n");
  29.     return 1;
  30. }
  31.  
  32. public OnFilterScriptExit()
  33. {
  34.     return 1;
  35. }
  36.  
  37.  
  38.  
  39.  
  40.  
  41. public OnPlayerDeath(playerid, killerid, reason)
  42. {
  43.     joined[playerid] = 0;
  44.     return 1;
  45. }
  46.  
  47.  
  48.  
  49. public OnPlayerCommandText(playerid, cmdtext[])
  50. {
  51.     dcmd(event, 5, cmdtext);
  52.     dcmd(eweapon, 7, cmdtext);
  53.     dcmd(winner, 6, cmdtext);
  54.     dcmd(start, 5, cmdtext);
  55.     dcmd(join, 4, cmdtext);
  56.     dcmd(eventover, 9, cmdtext);
  57.     return 0;
  58. }
  59.  
  60. //=======================================dcmd=================================
  61.  
  62.     dcmd_event(playerid,params[])
  63.     {
  64.         if(event == 0)
  65.         {
  66.             if(IsPlayerAdmin(playerid))
  67.             {
  68.                 new message33[64];
  69.                 if(sscanf(params,"s",message33)) return SendClientMessage(playerid,COLOR_RED,"Usage: /event [name]");
  70.                 new string[128];
  71.                 format(string,sizeof(string),"~g~ %s has started. ~n~ ~y~Type /join to join the event",message33);
  72.                 GameTextForAll(string,10000,3);
  73.                 SendClientMessageToAll(COLOR_GREEN,"You have 1 minute to join");
  74.                 etimer = SetTimer("Eventtimer",60000,false);
  75.                 event = 1;
  76.                 GetPlayerPos(playerid,XX,YY,ZZ);
  77.                 intID = GetPlayerInterior(playerid);
  78.                 joinable = 1;
  79.                 return 1;
  80.             }
  81.             else{SendClientMessage(playerid,COLOR_RED,"You can't use this command!"); return 1;}
  82.         }
  83.         else if(event == 1)
  84.         {
  85.             SendClientMessage(playerid,COLOR_PINK,"An event is already running!");
  86.             return 1;
  87.         }
  88.  
  89.     }
  90.  
  91.     dcmd_join(playerid,params[])
  92.     {
  93.         if(joinable == 1 && joined[playerid] == 0)
  94.         {
  95.  
  96.             SetPlayerPos(playerid, XX, YY, ZZ);
  97.             SetPlayerInterior(playerid,intID);
  98.             TogglePlayerControllable(playerid,false);
  99.             ResetPlayerWeapons(playerid);
  100.             SetPlayerHealth(playerid,100);
  101.             joined[playerid] = 1;
  102.             SendClientMessage(playerid,COLOR_BLUE,"You have joined the event.");
  103.             return 1;
  104.         }
  105.         else if(joinable == 0 || event == 0)
  106.         {
  107.             SendClientMessage(playerid,COLOR_BLUE,"There are no events or the current event is already running");
  108.             return 1;
  109.         }
  110.        
  111.     }
  112.     dcmd_eventover(playerid,params[])
  113.     {
  114.         if(IsPlayerAdmin(playerid))
  115.         {
  116.             event = 0;
  117.             KillTimer(etimer);
  118.             SendClientMessageToAll(COLOR_BLUE,"The event has ended!");
  119.             for(new i = 0;i<MAX_PLAYERS; i++)
  120.             {
  121.  
  122.                 if(joined[i] == 1)
  123.                 {
  124.  
  125.                     joined[i] = 0;
  126.                     SetPlayerInterior(i,0);
  127.                     SpawnPlayer(i);
  128.                 }
  129.             }
  130.             return 1;
  131.         }
  132.         else{SendClientMessage(playerid,COLOR_RED,"You can't use this command!"); return 1;}
  133.     }
  134.  
  135.     dcmd_start(playerid,params[])
  136.     {
  137.         if(IsPlayerAdmin(playerid))
  138.         {
  139.             if(event == 1)
  140.             {
  141.                 for(new i = 0; i<MAX_PLAYERS; i++)
  142.                 {
  143.                     TogglePlayerControllable(i,true);
  144.                     GameTextForAll("~g~EVENT STARTS",2000,3);
  145.  
  146.                 }
  147.                 return 1;
  148.             }
  149.             else{SendClientMessage(playerid,COLOR_RED,"There is no event running."); return 1;}
  150.  
  151.         }
  152.         else{SendClientMessage(playerid,COLOR_RED,"You can't use this command!"); return 1;}
  153.     }
  154.  
  155.     dcmd_eweapon(playerid,params[])
  156.     {
  157.         if(IsPlayerAdmin(playerid))
  158.         {
  159.             new wID;
  160.             if(sscanf(params,"i",wID)) return SendClientMessage(playerid,COLOR_RED,"Usage: /eweapon [weaponid]");
  161.             for(new i = 0; i<MAX_PLAYERS; i++)
  162.             {
  163.                 if(joined[i]==1)
  164.                 {
  165.                     GivePlayerWeapon(i,wID,9999);
  166.                 }
  167.             }
  168.  
  169.             return 1;
  170.         }
  171.         else{SendClientMessage(playerid,COLOR_RED,"You can't use this command!"); return 1;}
  172.     }
  173.     dcmd_winner(playerid,params[])
  174.     {
  175.         if(event == 1)
  176.         {
  177.             if(IsPlayerAdmin(playerid))
  178.             {
  179.                 new price, winner;
  180.                 if(sscanf(params,"ui",winner,price)) return SendClientMessage(playerid,COLOR_RED,"Usage: /winner [ID] [Price]");
  181.                 new str[128];
  182.                 format(str,128,"{40E0D0}%s (%i) has won the event, and gained %d",PlayerName(winner),winner,price);
  183.                 SendClientMessageToAll(-1,str);
  184.                 GivePlayerMoney(winner,price);
  185.                 return 1;
  186.             }
  187.             else{SendClientMessage(playerid,COLOR_RED,"You can't use this command!"); return 1;}
  188.         }
  189.         else{SendClientMessage(playerid,COLOR_RED,"There is no event running."); return 1;}
  190.     }
  191.  
  192.     forward Eventtimer(playerid);
  193.     public Eventtimer(playerid)
  194.     {
  195.         joinable = 0;
  196.         SendClientMessageToAll(COLOR_BLUE,"The event can no longer be joined!");
  197.     }
  198.  
  199. //============================================================================
  200.  
  201. stock PlayerName(playerid)
  202. {
  203.     new name[MAX_PLAYER_NAME];
  204.     GetPlayerName(playerid,name,sizeof(name)); return name;
  205. }
  206. stock sscanf(string[], format[], {Float,_}:...)
  207. {
  208.     #if defined isnull
  209.         if (isnull(string))
  210.     #else
  211.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  212.     #endif
  213.         {
  214.             return format[0];
  215.         }
  216.     #pragma tabsize 4
  217.     new
  218.         formatPos = 0,
  219.         stringPos = 0,
  220.         paramPos = 2,
  221.         paramCount = numargs(),
  222.         delim = ' ';
  223.     while (string[stringPos] && string[stringPos] <= ' ')
  224.     {
  225.         stringPos++;
  226.     }
  227.     while (paramPos < paramCount && string[stringPos])
  228.     {
  229.         switch (format[formatPos++])
  230.         {
  231.             case '\0':
  232.             {
  233.                 return 0;
  234.             }
  235.             case 'i', 'd':
  236.             {
  237.                 new
  238.                     neg = 1,
  239.                     num = 0,
  240.                     ch = string[stringPos];
  241.                 if (ch == '-')
  242.                 {
  243.                     neg = -1;
  244.                     ch = string[++stringPos];
  245.                 }
  246.                 do
  247.                 {
  248.                     stringPos++;
  249.                     if ('0' <= ch <= '9')
  250.                     {
  251.                         num = (num * 10) + (ch - '0');
  252.                     }
  253.                     else
  254.                     {
  255.                         return -1;
  256.                     }
  257.                 }
  258.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  259.                 setarg(paramPos, 0, num * neg);
  260.             }
  261.             case 'h', 'x':
  262.             {
  263.                 new
  264.                     num = 0,
  265.                     ch = string[stringPos];
  266.                 do
  267.                 {
  268.                     stringPos++;
  269.                     switch (ch)
  270.                     {
  271.                         case 'x', 'X':
  272.                         {
  273.                             num = 0;
  274.                             continue;
  275.                         }
  276.                         case '0' .. '9':
  277.                         {
  278.                             num = (num << 4) | (ch - '0');
  279.                         }
  280.                         case 'a' .. 'f':
  281.                         {
  282.                             num = (num << 4) | (ch - ('a' - 10));
  283.                         }
  284.                         case 'A' .. 'F':
  285.                         {
  286.                             num = (num << 4) | (ch - ('A' - 10));
  287.                         }
  288.                         default:
  289.                         {
  290.                             return -1;
  291.                         }
  292.                     }
  293.                 }
  294.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  295.                 setarg(paramPos, 0, num);
  296.             }
  297.             case 'c':
  298.             {
  299.                 setarg(paramPos, 0, string[stringPos++]);
  300.             }
  301.             case 'f':
  302.             {
  303.  
  304.                 new changestr[16], changepos = 0, strpos = stringPos;
  305.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  306.                 {
  307.                     changestr[changepos++] = string[strpos++];
  308.                     }
  309.                 changestr[changepos] = '\0';
  310.                 setarg(paramPos,0,_:floatstr(changestr));
  311.             }
  312.             case 'p':
  313.             {
  314.                 delim = format[formatPos++];
  315.                 continue;
  316.             }
  317.             case '\'':
  318.             {
  319.                 new
  320.                     end = formatPos - 1,
  321.                     ch;
  322.                 while ((ch = format[++end]) && ch != '\'') {}
  323.                 if (!ch)
  324.                 {
  325.                     return -1;
  326.                 }
  327.                 format[end] = '\0';
  328.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  329.                 {
  330.                     if (format[end + 1])
  331.                     {
  332.                         return -1;
  333.                     }
  334.                     return 0;
  335.                 }
  336.                 format[end] = '\'';
  337.                 stringPos = ch + (end - formatPos);
  338.                 formatPos = end + 1;
  339.             }
  340.             case 'u':
  341.             {
  342.                 new
  343.                     end = stringPos - 1,
  344.                     id = 0,
  345.                     bool:num = true,
  346.                     ch;
  347.                 while ((ch = string[++end]) && ch != delim)
  348.                 {
  349.                     if (num)
  350.                     {
  351.                         if ('0' <= ch <= '9')
  352.                         {
  353.                             id = (id * 10) + (ch - '0');
  354.                         }
  355.                         else
  356.                         {
  357.                             num = false;
  358.                         }
  359.                     }
  360.                 }
  361.                 if (num && IsPlayerConnected(id))
  362.                 {
  363.                     setarg(paramPos, 0, id);
  364.                 }
  365.                 else
  366.                 {
  367.                     #if !defined foreach
  368.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  369.                         #define __SSCANF_FOREACH__
  370.                     #endif
  371.                     string[end] = '\0';
  372.                     num = false;
  373.                     new
  374.                         name[MAX_PLAYER_NAME];
  375.                     id = end - stringPos;
  376.                     foreach (Player, playerid)
  377.                     {
  378.                         GetPlayerName(playerid, name, sizeof (name));
  379.                         if (!strcmp(name, string[stringPos], true, id))
  380.                         {
  381.                             setarg(paramPos, 0, playerid);
  382.                             num = true;
  383.                             break;
  384.                         }
  385.                     }
  386.                     if (!num)
  387.                     {
  388.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  389.                     }
  390.                     string[end] = ch;
  391.                     #if defined __SSCANF_FOREACH__
  392.                         #undef foreach
  393.                         #undef __SSCANF_FOREACH__
  394.                     #endif
  395.                 }
  396.                 stringPos = end;
  397.             }
  398.             case 's', 'z':
  399.             {
  400.                 new
  401.                     i = 0,
  402.                     ch;
  403.                 if (format[formatPos])
  404.                 {
  405.                     while ((ch = string[stringPos++]) && ch != delim)
  406.                     {
  407.                         setarg(paramPos, i++, ch);
  408.                     }
  409.                     if (!i)
  410.                     {
  411.                         return -1;
  412.                     }
  413.                 }
  414.                 else
  415.                 {
  416.                     while ((ch = string[stringPos++]))
  417.                     {
  418.                         setarg(paramPos, i++, ch);
  419.                     }
  420.                 }
  421.                 stringPos--;
  422.                 setarg(paramPos, i, '\0');
  423.             }
  424.             default:
  425.             {
  426.                 continue;
  427.             }
  428.         }
  429.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  430.         {
  431.             stringPos++;
  432.         }
  433.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  434.         {
  435.             stringPos++;
  436.         }
  437.         paramPos++;
  438.     }
  439.     do
  440.     {
  441.         if ((delim = format[formatPos++]) > ' ')
  442.         {
  443.             if (delim == '\'')
  444.             {
  445.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  446.             }
  447.             else if (delim != 'z')
  448.             {
  449.                 return delim;
  450.             }
  451.         }
  452.     }
  453.     while (delim > ' ');
  454.     return 0;
  455. }
Advertisement
Add Comment
Please, Sign In to add comment