Guest User

Gungame by Music4You

a guest
Jul 15th, 2013
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.59 KB | None | 0 0
  1. /*
  2. =============================================================================================
  3. =- Samp GunGame Filterscript by Items4Landwirt™ aka. Music4You™                             =
  4. =- erstellt mit PawnFox                                                                     =
  5. =- Youtube Kanal von Music4You          https://www.youtube.com/user/Music4You43            =
  6. =- Youtube Kanal von Items4Sacred       https://www.youtube.com/user/items4sacred           =
  7. =- Youtube Kanal von Metalletsplay666   https://www.youtube.com/user/MetalLetsPlay666       =
  8. =============================================================================================
  9.  
  10. Die Credits müssen enthalten bleiben!
  11. es ist verboten das Script erneut zu Releasen, Verkaufen oder es als sein eigenes Auszugeben.
  12.  
  13. Ansonsten Viel Spaß mit dem System!
  14.  
  15.  
  16.  
  17.  
  18. forward IsPlayerAnAdmin(playerid);
  19. public IsPlayerAnAdmin(playerid)
  20. {
  21.     if(SpielerInfo[playerid][Adminlevel] == 5)
  22.     {
  23.         return 1;
  24.     }
  25.     return 0;
  26. }
  27. könnt ihr in euern gamemode, damit ihr bei ggkick etc. nicht als rcon eingeloogt sein müsst
  28.  
  29. */
  30. #define FILTERSCRIPT
  31.  
  32. //================== Includes ==================
  33. #include <a_samp>
  34. #include <ocmd>
  35.  
  36. //================== Defines ==================
  37. #define SERVERNAME  "Name" //hier euer Servername
  38. #define EINGANG 1310.2686,-1367.6049,13.5383 //ort für den eingangspickup
  39. #define LABELCOLOR 0xFFC800FF //farbe des textlabels
  40.  
  41. #define SCM SendClientMessage
  42. #define rot 0xFF2800FF
  43. #define gruen 0x55FF00FF
  44.  
  45. #define DIALOG_AUSWAHL 10000
  46. #define DIALOG_AUSWAHLI 10001
  47. #define DIALOG_SPAWNBLAU 10002
  48. #define DIALOG_SPAWNROT 10003
  49. #define DIALOG_GGSTAT 10004
  50.  
  51. //================== News ==================
  52. new Blau[MAX_PLAYERS];
  53. new Rot[MAX_PLAYERS];
  54. new inarena[MAX_PLAYERS];
  55.  
  56. enum gungama
  57. {
  58.     Vorgun,
  59.     Besuch,
  60. }
  61. new SpielerGungame[MAX_PLAYERS][gungama];
  62.  
  63. public OnFilterScriptInit()
  64. {
  65.     print("\n====================================================");
  66.     print(" GunGame Filterscript by Items4Landwirt aka. Music4You");
  67.     print("====================================================\n");
  68.    
  69.     CreatePickup(1239, 1, EINGANG, -1);
  70.    
  71.     Create3DTextLabel("Tippe /enter um das Gungame zu betreten", LABELCOLOR, EINGANG ,40.0, 0, 0);
  72.     Create3DTextLabel("Spawn Team Blau", LABELCOLOR, -1132.2053,1057.8324,1346.4128 ,40.0, 0, 0);
  73.     Create3DTextLabel("Spawn Team Rot", LABELCOLOR, -974.1260,1060.9028,1345.6761 ,40.0, 0, 0);
  74.     return 1;
  75. }
  76.  
  77. public OnFilterScriptExit()
  78. {
  79.     return 1;
  80. }
  81.  
  82. public OnPlayerSpawn(playerid)
  83. {
  84.     if(inarena[playerid]==1)
  85.     {
  86.         if(Blau[playerid]==1)
  87.         {
  88.             ShowPlayerDialog(playerid,DIALOG_SPAWNBLAU,DIALOG_STYLE_MSGBOX,"Spawnauswahl","Du bist in dem Gungame Mode gestorben, möchtest du wieder dahin zurück?\nWenn nein Spawnst du vor der vor der Gungame halle.\n\n"#SERVERNAME"","Ok","Ablehnen");
  89.         }
  90.         else if(Rot[playerid]==1)
  91.         {
  92.             ShowPlayerDialog(playerid,DIALOG_SPAWNBLAU,DIALOG_STYLE_MSGBOX,"Spawnauswahl","Du bist in dem Gungame Mode gestorben, möchtest du wieder dahin zurück?\nWenn nein Spawnst du vor der vor der Gungame halle.\n\n"#SERVERNAME"","Ok","Ablehnen");
  93.         }
  94.     }
  95.     return 1;
  96. }
  97.  
  98. public OnPlayerDeath(playerid, killerid, reason)
  99. {
  100.     new string[128],win[128],killmsg[128];
  101.     if(inarena[playerid]==1)
  102.     {
  103.         if(GetPlayerWeapon(killerid) == 23)
  104.         {
  105.             ResetPlayerWeapons(killerid);
  106.             GivePlayerWeapon(killerid,24,100);
  107.         }
  108.         else if(GetPlayerWeapon(killerid) == 24)
  109.         {
  110.             ResetPlayerWeapons(killerid);
  111.             GivePlayerWeapon(killerid,22,100);
  112.         }
  113.         else if(GetPlayerWeapon(killerid) == 22)
  114.         {
  115.             ResetPlayerWeapons(killerid);
  116.             GivePlayerWeapon(killerid,25,100);
  117.         }
  118.         else if(GetPlayerWeapon(killerid) == 25)
  119.         {
  120.             ResetPlayerWeapons(killerid);
  121.             GivePlayerWeapon(killerid,27,100);
  122.         }
  123.         else if(GetPlayerWeapon(killerid) == 27)
  124.         {
  125.             ResetPlayerWeapons(killerid);
  126.             GivePlayerWeapon(killerid,28,100);
  127.         }
  128.         else if(GetPlayerWeapon(killerid) == 28)
  129.         {
  130.             ResetPlayerWeapons(killerid);
  131.             GivePlayerWeapon(killerid,29,100);
  132.         }
  133.         else if(GetPlayerWeapon(killerid) == 29)
  134.         {
  135.             ResetPlayerWeapons(killerid);
  136.             GivePlayerWeapon(killerid,32,100);
  137.         }
  138.         else if(GetPlayerWeapon(killerid) == 32)
  139.         {
  140.             ResetPlayerWeapons(killerid);
  141.             GivePlayerWeapon(killerid,30,100);
  142.         }
  143.         else if(GetPlayerWeapon(killerid) == 30)
  144.         {
  145.             ResetPlayerWeapons(killerid);
  146.             GivePlayerWeapon(killerid,31,100);
  147.         }
  148.         else if(GetPlayerWeapon(killerid) == 31)
  149.         {
  150.             ResetPlayerWeapons(killerid);
  151.             GivePlayerWeapon(killerid,34,100);
  152.         }
  153.         else if(GetPlayerWeapon(killerid) == 34)
  154.         {
  155.             ResetPlayerWeapons(killerid);
  156.             GivePlayerWeapon(killerid,16,100);
  157.         }
  158.         else if(GetPlayerWeapon(killerid) == 16)
  159.         {
  160.             ResetPlayerWeapons(killerid);
  161.             GivePlayerWeapon(killerid,4,100);
  162.         }
  163.         else if(GetPlayerWeapon(killerid) == 4)
  164.         {
  165.             for(new i=0; i<inarena[i]; i++)
  166.             {
  167.                 if(!IsPlayerConnected(i))continue;
  168.                 {
  169.                     format(win,sizeof(win),"[GunGame] %s hat das Spiel gewonnen!",SpielerName(killerid));
  170.                     SCM(i,gruen,win);
  171.                     SetPlayerPos(i,EINGANG);
  172.                     ResetPlayerWeapons(i);
  173.                     Blau[i]=0;
  174.                     Rot[i]=0;
  175.                     inarena[i]=0;
  176.                 }
  177.             }
  178.         }
  179.        
  180.         SpielerGungame[playerid][Vorgun] = GetPlayerWeapon(playerid);
  181.        
  182.         for(new i=0; i<inarena[i]; i++)
  183.         {
  184.             if(!IsPlayerConnected(i))continue;
  185.             {
  186.                 format(killmsg,sizeof(killmsg),"[GunGame] %s hat den Spieler %s mit der Waffe %s getötet",SpielerName(killerid),SpielerName(playerid),waffenname(killerid));
  187.                 SCM(i,gruen,win);
  188.             }
  189.         }
  190.        
  191.         format(string,sizeof(string),"Du bist nun auf der %s",waffenname(killerid));
  192.         SCM(killerid,gruen,string);
  193.     }
  194.     return 1;
  195. }
  196. ocmd:enter(playerid,params[])
  197. {
  198.     if(!IsPlayerInRangeOfPoint(playerid, 7.0, EINGANG)) return SCM(playerid,rot,"Du bist nicht am Gungame punkt!");
  199.     ShowPlayerDialog(playerid,DIALOG_AUSWAHL,DIALOG_STYLE_MSGBOX,"Gungame","Herzlich Wilkommen im GunGame mode von "#SERVERNAME"\n\nUm mitspielen zu können musst du diese Regeln akzeptieren:\nBeim betreten/verlassen werden dir alle Waffen entzogen, es gibt keine möglichkeit diese wiederzubekommen.\nEs ist verboten zu Hacken\nEs ist verboten jemanden zuzuflamen nur weil er besser ist!","Zustimmen","Abbrechen");
  200.     return 1;
  201. }
  202. ocmd:exit(playerid,params[])
  203. {
  204.     if(inarena[playerid]!=1) return SCM(playerid,rot,"Du bist nicht in der Gungame Halle");
  205.     SetPlayerPos(playerid,1310.4305,-1370.0978,13.5714);
  206.     SetPlayerInterior(playerid,0);
  207.     ResetPlayerWeapons(playerid);
  208.     return 1;
  209. }
  210. ocmd:ggkick(playerid,params[])
  211. {
  212.     new pID,string[128],msg[128],reason[128];
  213.     if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("IsPlayerAnAdmin","i",playerid)) return SCM(playerid,rot,"Du bist nicht Befugt!");
  214.     if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, rot, "Benutze: /ggkick [ID] [Grund]");
  215.     format(string,sizeof(string),"Du wurdest von %s vom Gungame gekickt, Grund:",SpielerName(playerid),reason);
  216.     SCM(pID,rot,string);
  217.     SetPlayerPos(playerid,1310.4305,-1370.0978,13.5714);
  218.     SetPlayerInterior(playerid,0);
  219.     ResetPlayerWeapons(playerid);
  220.    
  221.     for(new i=0; i<inarena[i]; i++)
  222.     {
  223.         if(!IsPlayerConnected(i))continue;
  224.         {
  225.             format(msg,sizeof(msg),"[GunGame] %s hat den Spieler %s aus dem Gungame gekickt, Grund: %s",SpielerName(playerid),SpielerName(pID),reason);
  226.             SCM(i,rot,msg);
  227.         }
  228.     }
  229.     return 1;
  230. }
  231.  
  232. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  233. {
  234.     switch(dialogid)
  235.     {
  236.         case DIALOG_AUSWAHL:
  237.         {
  238.             if(response)
  239.             {
  240.                 ShowPlayerDialog(playerid,DIALOG_AUSWAHLI,DIALOG_STYLE_MSGBOX,"Teamauswahl","Willkommen bei der Teamauswahl von "#SERVERNAME"\n\nHier kannst du dein Teamauswählen","Rot","Blau");
  241.             }
  242.             else return SCM(playerid,rot,"Du hast den Gungamemode verlassen");
  243.         }
  244.         case DIALOG_AUSWAHLI:
  245.         {
  246.             if(response)
  247.             {
  248.                 Rot[playerid]=1;
  249.                 inarena[playerid]=1;
  250.                 SCM(playerid,gruen,"Du hast dich für das Rote Team entschieden");
  251.                 SCM(playerid,gruen,"Du kannst die Halle mit /exit verlassen");
  252.                 SetPlayerPos(playerid,-974.1260,1060.9028,1345.6761);
  253.                 SetPlayerInterior(playerid,10);
  254.                 GivePlayerWeapon(playerid,23,100);
  255.                 return 1;
  256.             }
  257.             else
  258.             {
  259.                
  260.                 Blau[playerid]=1;
  261.                 inarena[playerid]=1;
  262.                 SCM(playerid,gruen,"Du hast dich für das Blaue Team entschieden");
  263.                 SCM(playerid,gruen,"Du kannst die Halle mit /exit verlassen");
  264.                 SetPlayerPos(playerid,-1132.2053,1057.8324,1346.4128);
  265.                 SetPlayerInterior(playerid,10);
  266.                 GivePlayerWeapon(playerid,23,100);
  267.                 return 1;
  268.             }
  269.         }
  270.         case DIALOG_SPAWNBLAU:
  271.         {
  272.             if(response)
  273.             {
  274.                 SetPlayerPos(playerid,-1132.2053,1057.8324,1346.4128);
  275.                 SetPlayerInterior(playerid,10);
  276.                 GivePlayerWeapon(playerid,SpielerGungame[playerid][Vorgun],500);
  277.             }
  278.         }
  279.         case DIALOG_SPAWNROT:
  280.         {
  281.             if(response)
  282.             {
  283.                 SetPlayerPos(playerid,-974.1260,1060.9028,1345.6761);
  284.                 SetPlayerInterior(playerid,10);
  285.                 GivePlayerWeapon(playerid,SpielerGungame[playerid][Vorgun],500);
  286.             }
  287.         }
  288.     }
  289.     return 0;
  290. }
  291.  
  292. stock waffenname(killerid)
  293. {
  294.     new weapname[50];
  295.     if(GetPlayerWeaponState(killerid) ==23) weapname = ("Silent Pistol");
  296.     if(GetPlayerWeaponState(killerid) ==24) weapname = ("Deagle");
  297.     if(GetPlayerWeaponState(killerid) ==22) weapname = ("Dual Pistols");
  298.     if(GetPlayerWeaponState(killerid) ==25) weapname = ("Shot Gun");
  299.     if(GetPlayerWeaponState(killerid) ==27) weapname = ("Auto Shot Gun");
  300.     if(GetPlayerWeaponState(killerid) ==28) weapname = ("UZI");
  301.     if(GetPlayerWeaponState(killerid) ==29) weapname = ("MP 5");
  302.     if(GetPlayerWeaponState(killerid) ==32) weapname = ("Hand Gun");
  303.     if(GetPlayerWeaponState(killerid) ==30) weapname = ("AK - 47");
  304.     if(GetPlayerWeaponState(killerid) ==31) weapname = ("M4");
  305.     if(GetPlayerWeaponState(killerid) ==34) weapname = ("Sniper");
  306.     if(GetPlayerWeaponState(killerid) ==16) weapname = ("Nade Level");
  307.     if(GetPlayerWeaponState(killerid) ==4) weapname = ("Knife Level");
  308.     return weapname;
  309. }
  310.  
  311. stock SpielerName(playerid)
  312. {
  313.     new name[MAX_PLAYER_NAME];
  314.     GetPlayerName(playerid,name,sizeof(name));
  315.     return name;
  316. }
  317.  
  318. stock sscanf(string[], format[], {Float,_}:...)
  319. {
  320.     #if defined isnull
  321.     if (isnull(string))
  322.         #else
  323.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  324.             #endif
  325.     {
  326.         return format[0];
  327.     }
  328.     #pragma tabsize 4
  329.     new
  330.         formatPos = 0,
  331.     stringPos = 0,
  332.     paramPos = 2,
  333.     paramCount = numargs(),
  334.     delim = ' ';
  335.     while (string[stringPos] && string[stringPos] <= ' ')
  336.     {
  337.         stringPos++;
  338.     }
  339.     while (paramPos < paramCount && string[stringPos])
  340.     {
  341.         switch (format[formatPos++])
  342.         {
  343.             case '\0':
  344.                 {
  345.                     return 0;
  346.                 }
  347.             case 'i', 'd':
  348.                 {
  349.                     new
  350.                         neg = 1,
  351.                     num = 0,
  352.                     ch = string[stringPos];
  353.                     if (ch == '-')
  354.                     {
  355.                         neg = -1;
  356.                         ch = string[++stringPos];
  357.                     }
  358.                     do
  359.                     {
  360.                         stringPos++;
  361.                         if ('0' <= ch <= '9')
  362.                         {
  363.                             num = (num * 10) + (ch - '0');
  364.                         }
  365.                         else
  366.                         {
  367.                             return -1;
  368.                         }
  369.                     }
  370.                     while ((ch = string[stringPos]) > ' ' && ch != delim);
  371.                     setarg(paramPos, 0, num * neg);
  372.                 }
  373.             case 'h', 'x':
  374.                 {
  375.                     new
  376.                         num = 0,
  377.                     ch = string[stringPos];
  378.                     do
  379.                     {
  380.                         stringPos++;
  381.                         switch (ch)
  382.                         {
  383.                             case 'x', 'X':
  384.                                 {
  385.                                     num = 0;
  386.                                     continue;
  387.                                 }
  388.                             case '0' .. '9':
  389.                                 {
  390.                                     num = (num << 4) | (ch - '0');
  391.                                 }
  392.                             case 'a' .. 'f':
  393.                                 {
  394.                                     num = (num << 4) | (ch - ('a' - 10));
  395.                                 }
  396.                             case 'A' .. 'F':
  397.                                 {
  398.                                     num = (num << 4) | (ch - ('A' - 10));
  399.                                 }
  400.                             default:
  401.                                 {
  402.                                     return -1;
  403.                                 }
  404.                         }
  405.                     }
  406.                     while ((ch = string[stringPos]) > ' ' && ch != delim);
  407.                     setarg(paramPos, 0, num);
  408.                 }
  409.             case 'c':
  410.                 {
  411.                     setarg(paramPos, 0, string[stringPos++]);
  412.                 }
  413.             case 'f':
  414.                 {
  415.  
  416.                     new changestr[16], changepos = 0, strpos = stringPos;
  417.                     while(changepos < 16 && string[strpos] && string[strpos] != delim)
  418.                     {
  419.                         changestr[changepos++] = string[strpos++];
  420.                     }
  421.                     changestr[changepos] = '\0';
  422.                     setarg(paramPos,0,_:floatstr(changestr));
  423.                 }
  424.             case 'p':
  425.                 {
  426.                     delim = format[formatPos++];
  427.                     continue;
  428.                 }
  429.             case '\'':
  430.                 {
  431.                     new
  432.                         end = formatPos - 1,
  433.                     ch;
  434.                     while ((ch = format[++end]) && ch != '\'') {}
  435.                     if (!ch)
  436.                     {
  437.                         return -1;
  438.                     }
  439.                     format[end] = '\0';
  440.                     if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  441.                     {
  442.                         if (format[end + 1])
  443.                         {
  444.                             return -1;
  445.                         }
  446.                         return 0;
  447.                     }
  448.                     format[end] = '\'';
  449.                     stringPos = ch + (end - formatPos);
  450.                     formatPos = end + 1;
  451.                 }
  452.             case 'u':
  453.                 {
  454.                     new
  455.                         end = stringPos - 1,
  456.                     id = 0,
  457.                     bool:num = true,
  458.                     ch;
  459.                     while ((ch = string[++end]) && ch != delim)
  460.                     {
  461.                         if (num)
  462.                         {
  463.                             if ('0' <= ch <= '9')
  464.                             {
  465.                                 id = (id * 10) + (ch - '0');
  466.                             }
  467.                             else
  468.                             {
  469.                                 num = false;
  470.                             }
  471.                         }
  472.                     }
  473.                     if (num && IsPlayerConnected(id))
  474.                     {
  475.                         setarg(paramPos, 0, id);
  476.                     }
  477.                     else
  478.                     {
  479.                         #if !defined foreach
  480.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  481.                         #define __SSCANF_FOREACH__
  482.                         #endif
  483.                         string[end] = '\0';
  484.                         num = false;
  485.                         new
  486.                             name[MAX_PLAYER_NAME];
  487.                         id = end - stringPos;
  488.                         foreach (Player, playerid)
  489.                         {
  490.                             GetPlayerName(playerid, name, sizeof (name));
  491.                             if (!strcmp(name, string[stringPos], true, id))
  492.                             {
  493.                                 setarg(paramPos, 0, playerid);
  494.                                 num = true;
  495.                                 break;
  496.                             }
  497.                         }
  498.                         if (!num)
  499.                         {
  500.                             setarg(paramPos, 0, INVALID_PLAYER_ID);
  501.                         }
  502.                         string[end] = ch;
  503.                         #if defined __SSCANF_FOREACH__
  504.                         #undef foreach
  505.                         #undef __SSCANF_FOREACH__
  506.                         #endif
  507.                     }
  508.                     stringPos = end;
  509.                 }
  510.             case 's', 'z':
  511.                 {
  512.                     new
  513.                         i = 0,
  514.                     ch;
  515.                     if (format[formatPos])
  516.                     {
  517.                         while ((ch = string[stringPos++]) && ch != delim)
  518.                         {
  519.                             setarg(paramPos, i++, ch);
  520.                         }
  521.                         if (!i)
  522.                         {
  523.                             return -1;
  524.                         }
  525.                     }
  526.                     else
  527.                     {
  528.                         while ((ch = string[stringPos++]))
  529.                         {
  530.                             setarg(paramPos, i++, ch);
  531.                         }
  532.                     }
  533.                     stringPos--;
  534.                     setarg(paramPos, i, '\0');
  535.                 }
  536.             default:
  537.                 {
  538.                     continue;
  539.                 }
  540.         }
  541.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  542.         {
  543.             stringPos++;
  544.         }
  545.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  546.         {
  547.             stringPos++;
  548.         }
  549.         paramPos++;
  550.     }
  551.     do
  552.     {
  553.         if ((delim = format[formatPos++]) > ' ')
  554.         {
  555.             if (delim == '\'')
  556.             {
  557.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  558.             }
  559.             else if (delim != 'z')
  560.             {
  561.                 return delim;
  562.             }
  563.         }
  564.     }
  565.     while (delim > ' ');
  566.     return 0;
  567. }
Advertisement
Add Comment
Please, Sign In to add comment