Advertisement
Guest User

Untitled

a guest
Aug 4th, 2012
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 12.02 KB | None | 0 0
  1. /*
  2.     TheO´s Dynamic Weapons script
  3.     mit diesem Filterscript
  4.     könnt ihr Ingame mit einem
  5.     Befehl waffen Pickups erstellen
  6.     dieses Script dürft ihr edetieren
  7.     und Veröffentlichen sobald mein
  8.     Name drinn vorkommt "TheO"
  9.     (c) 2012 by Theo
  10.     Wer das Copyright löscht muss mit einem
  11.     Schlechten Gewissen weiter scripten...
  12.    
  13.     Mit freundlichen Grüßen
  14.  
  15.     TheO
  16.    
  17.     Erstellungs Datum: 2 August 2012
  18. */
  19.  
  20. #include <a_samp>
  21. #include <ocmd>
  22. #include <dini>
  23.  
  24. new wID[MAX_PLAYERS];
  25. new mun[MAX_PLAYERS];
  26.  
  27. #pragma unused ret_memcpy
  28. #pragma tabsize 0
  29.  
  30. #define MAX_WAFFEN 100 //Anpassen
  31.  
  32.  
  33. enum WeaponInfo
  34. {
  35.     Float:x,
  36.     Float:y,
  37.     Float:z,
  38.     Text3D:Label,
  39.     Pickup,
  40.     WeapID,
  41.     Mun
  42. }
  43.  
  44. new wInfo[MAX_WAFFEN][WeaponInfo];
  45.  
  46. public OnFilterScriptInit()
  47. {
  48.     print("\n--------------------------------------");
  49.     print(" Theo´s Dynamic Weapons sind geladen....");
  50.     print("--------------------------------------\n");
  51.  
  52.     for(new i =1; i < MAX_WAFFEN; i++)
  53.     {
  54.         LoadWaffen(i);
  55.     }
  56.     return true;
  57. }
  58.  
  59. public OnFilterScriptExit()
  60. {
  61.     for(new i = 1; i < MAX_WAFFEN; i++)
  62.     {
  63.         DestroyPickup(wInfo[i][Pickup]);
  64.         Delete3DTextLabel(wInfo[i][Label]);
  65.     }
  66.     return true;
  67. }
  68.  
  69.  
  70. public OnPlayerConnect(playerid)
  71. {
  72.     SendClientMessage(playerid,-1,"{FF0019}Dieses Script benutzt: Dynamic Weapons (c) by TheO");
  73.     return true;
  74. }
  75.  
  76. stock CreateWaffe(Float:X,Float:Y,Float:Z,WeaponID,Munni)
  77. {
  78.     new Wdatei[64];
  79.     for(new i = 1; i < MAX_WAFFEN; i++)
  80.     {
  81.         format(Wdatei,sizeof(Wdatei),"/Weaps/Wpickup:%d.txt",i);
  82.         {
  83.             if(!fexist(Wdatei))
  84.             {
  85.                 dini_Create(Wdatei);
  86.                 dini_FloatSet(Wdatei,"PosX",X);
  87.                 dini_FloatSet(Wdatei,"PosY",Y);
  88.                 dini_FloatSet(Wdatei,"PosZ",Z);
  89.                 dini_IntSet(Wdatei,"WaffenID",WeaponID);
  90.                 dini_IntSet(Wdatei,"Munni",Munni);
  91.                 return LoadWaffen(i);
  92.             }
  93.         }
  94.     }
  95.     return true;
  96. }
  97.  
  98. stock LoadWaffen(waffenid)
  99. {
  100.     new Wdatei[64];
  101.     format(Wdatei,sizeof(Wdatei),"/Weaps/Wpickup:%d.txt",waffenid);
  102.     if(!fexist(Wdatei))return 0;
  103.     wInfo[waffenid][x] = dini_Float(Wdatei,"PosX");
  104.     wInfo[waffenid][y] = dini_Float(Wdatei,"PosY");
  105.     wInfo[waffenid][z] = dini_Float(Wdatei,"PosZ");
  106.     wInfo[waffenid][WeapID] = dini_Int(Wdatei,"WaffenID");
  107.     wInfo[waffenid][Mun] = dini_Int(Wdatei,"Munni");
  108.     new WaffenName[128];
  109.     switch(wInfo[waffenid][WeapID])
  110.     {
  111.         case 0:{WaffenName="Faust";}
  112.         case 1:{WaffenName="Schlagring";}
  113.         case 2:{WaffenName="Golfschläger";}
  114.         case 3:{WaffenName="Schlagstock";}
  115.         case 4:{WaffenName="Messer";}
  116.         case 5:{WaffenName="Baseballschläger";}
  117.         case 6:{WaffenName="Schaufel";}
  118.         case 7:{WaffenName="Billiard";}
  119.         case 8:{WaffenName="Katana";}
  120.         case 9:{WaffenName="Kettensäge";}
  121.         case 10:{WaffenName="2end Dildo";}
  122.         case 11:{WaffenName="Dildo";}
  123.         case 12:{WaffenName="Vibrator";}
  124.         case 13:{WaffenName="Silber Vibrator";}
  125.         case 14:{WaffenName="Blumen";}
  126.         case 15:{WaffenName="Gehstock";}
  127.         case 16:{WaffenName="Granate";}
  128.         case 17:{WaffenName="Rauch Granate";}
  129.         case 18:{WaffenName="Molotov";}
  130.         case 22:{WaffenName="9mm";}
  131.         case 23:{WaffenName="Schaldämpfer 9mm";}
  132.         case 24:{WaffenName="Deagle";}
  133.         case 25:{WaffenName="Shrot";}
  134.         case 26:{WaffenName="Abgesegte Schrot";}
  135.         case 27:{WaffenName="Combat Schrot";}
  136.         case 28:{WaffenName="Uzi";}
  137.         case 29:{WaffenName="MP5";}
  138.         case 30:{WaffenName="AK-47";}
  139.         case 31:{WaffenName="M4";}
  140.         case 32:{WaffenName="Tec9";}
  141.         case 33:{WaffenName="Country Rifle";}
  142.         case 34:{WaffenName="Sniper";}
  143.         case 35:{WaffenName="Racketenwerfer";}
  144.         case 36:{WaffenName="Bazooka";}
  145.         case 37:{WaffenName="Flamenwerfer";}
  146.         case 38:{WaffenName="Minigun";}
  147.         case 39:{WaffenName="Satchel Charge";}
  148.         case 40:{WaffenName="Detonator";}
  149.         case 41:{WaffenName="Spraydose";}
  150.         case 42:{WaffenName="Feuerlöscher";}
  151.         case 43:{WaffenName="Kamera";}
  152.         case 44:{WaffenName="Nachtsicht";}
  153.         case 45:{WaffenName="Nachtsicht";}
  154.         case 46:{WaffenName="Fallschirm";}
  155.  
  156.     }
  157.     new string[128];
  158.     format(string,sizeof(string),"{FF0019}WaffenPunkt\n {FFFFFF}Waffe: {FFE600}%s \n{FFFFFF}Munnition: {FFE600}%d",WaffenName,wInfo[waffenid][Mun]);
  159.     wInfo[waffenid][Label] = Create3DTextLabel(string,-1,wInfo[waffenid][x],wInfo[waffenid][y],wInfo[waffenid][z],20,0,0);
  160.     wInfo[waffenid][Pickup] = CreatePickup(1239,1,wInfo[waffenid][x],wInfo[waffenid][y],wInfo[waffenid][z],0);
  161.     return printf("Waffenid: %d wurde mit %d Munition geladen.",wInfo[waffenid][WeapID],wInfo[waffenid][Mun]);
  162. }
  163.  
  164. stock KillWaffen(wid)
  165. {
  166.     DestroyPickup(wInfo[wid][Pickup]);
  167.     return Delete3DTextLabel(wInfo[wid][Label]);
  168. }
  169.  
  170. ocmd:werstellen(playerid,params[])
  171. {
  172.     if(IsPlayerAdmin(playerid))
  173.     {
  174.         ShowPlayerDialog(playerid,4999,DIALOG_STYLE_INPUT,"{C05723}t{FFFFFF}Dynamic Weapons ID","{FFFFFF}Bitte gebe hier die Waffen ID ein","Oke","Abbrechen");
  175.     }
  176.     return true;
  177. }
  178.  
  179. ocmd:wdelete(playerid,params[])
  180. {
  181.     if(IsPlayerAdmin(playerid))
  182.     {
  183.         for(new i = 0; i < MAX_WAFFEN; i++)
  184.         {
  185.             if(IsPlayerInRangeOfPoint(playerid,3,wInfo[i][x],wInfo[i][y],wInfo[i][z]))
  186.             {
  187.                 new Wdatei[64];
  188.                 format(Wdatei,sizeof(Wdatei),"/Weaps/Wpickup:%d.txt",i);
  189.                 if(fexist(Wdatei))
  190.                 {
  191.                     dini_Remove(Wdatei);
  192.                     KillWaffen(i);
  193.                     SendClientMessage(playerid,-1,"{FF0019}TheO sagt: {FFFFFF}Erfolgreich gelöscht.");
  194.                     return print("Waffe wurde gelöscht");
  195.                 }
  196.                
  197.             }
  198.         }
  199.     }
  200.     else
  201.     {
  202.         SendClientMessage(playerid,-1,"{FF0019}TheO sagt: {FFFFFF}Diesen Befehl darfst du nicht Benutzen.");
  203.     }
  204.     return true;
  205. }
  206.  
  207.  
  208. public OnPlayerPickUpPickup(playerid, pickupid)
  209. {
  210.     for(new i = 1; i < MAX_WAFFEN; i++)
  211.     {
  212.         if(wInfo[i][Pickup] == pickupid)
  213.         {
  214.             if(GetPlayerWeapon(playerid) == wInfo[i][WeapID])
  215.             {
  216.                 SendClientMessage(playerid,-1,"{FF0019}TheO sagt: {FFFFFF}Diese Waffe hast du bereits.");
  217.                 return 1;
  218.             }
  219.             else
  220.             {
  221.                 GivePlayerWeapon(playerid,wInfo[i][WeapID],wInfo[i][Mun]);
  222.                 new string[128];
  223.                 format(string,sizeof(string),"{FF0019}TheO sagt: {FFFFFF}Du erhälst die WaffenID: %d mit %d Munition",wInfo[i][WeapID],wInfo[i][Mun]);
  224.                 SendClientMessage(playerid,-1,string);
  225.                 return 1;
  226.             }
  227.         }
  228.     }
  229.     return true;
  230. }
  231.  
  232. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  233. {
  234.     if(dialogid == 4999)
  235.     {
  236.         if(response == 1)
  237.         {
  238.             if(!strlen(inputtext))
  239.             {
  240.                 SendClientMessage(playerid,-1,"{FF0019}TheO sagt: {FFFFFF}Bitte gebe eine WaffenID ein oder Klicke Abrechen.");
  241.                 ShowPlayerDialog(playerid,4999,DIALOG_STYLE_INPUT,"{C05723}t{FFFFFF}Dynamic Weapons ID","{FFFFFF}Bitte gebe hier die Waffen ID ein","Oke","Abbrechen");
  242.             }
  243.             else
  244.             {
  245.                 wID[playerid] = strval(inputtext);
  246.                 ShowPlayerDialog(playerid,3999,DIALOG_STYLE_INPUT,"{C05723}t{FFFFFF}Dynamic Weapons Munni","{FFFFFF}Bitte gebe hier die Waffen Munition ein","Oke","Abbrechen");
  247.             }
  248.         }
  249.         else
  250.         {
  251.             return true;
  252.         }
  253.     }
  254.     if(dialogid == 3999)
  255.     {
  256.         if(response == 1)
  257.         {
  258.             if(!strlen(inputtext))
  259.             {
  260.                 SendClientMessage(playerid,-1,"{FF0019}TheO sagt: {FFFFFF}Bitte gebe die Anzahl der Munition an oder Klicke Abrechen.");
  261.                 ShowPlayerDialog(playerid,3999,DIALOG_STYLE_INPUT,"{C05723}t{FFFFFF}Dynamic Weapons Munni","{FFFFFF}Bitte gebe hier die Waffen Munition ein","Oke","Abbrechen");
  262.             }
  263.             else
  264.             {
  265.                 mun[playerid] = strval(inputtext);
  266.                 new Float:A,Float:B,Float:C;
  267.                 GetPlayerPos(playerid,A,B,C);
  268.                 CreateWaffe(A,B,C,wID[playerid],mun[playerid]);
  269.  
  270.             }
  271.         }
  272.         else
  273.         {
  274.             return true;
  275.         }
  276.     }
  277.     return true;
  278. }
  279.  
  280.  
  281.  
  282. stock sscanf(sstring[], format[], {Float,_}:...)
  283. {
  284.     #if defined isnull
  285.         if (isnull(sstring))
  286.     #else
  287.         if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
  288.     #endif
  289.         {
  290.             return format[0];
  291.         }
  292.     #pragma tabsize 4
  293.     new
  294.         formatPos = 0,
  295.         sstringPos = 0,
  296.         paramPos = 2,
  297.         paramCount = numargs(),
  298.         delim = ' ';
  299.     while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
  300.     {
  301.         sstringPos++;
  302.     }
  303.     while (paramPos < paramCount && sstring[sstringPos])
  304.     {
  305.         switch (format[formatPos++])
  306.         {
  307.             case '\0':
  308.             {
  309.                 return 0;
  310.             }
  311.             case 'i', 'd':
  312.             {
  313.                 new
  314.                     neg = 1,
  315.                     num = 0,
  316.                     ch = sstring[sstringPos];
  317.                 if (ch == '-')
  318.                 {
  319.                     neg = -1;
  320.                     ch = sstring[++sstringPos];
  321.                 }
  322.                 do
  323.                 {
  324.                     sstringPos++;
  325.                     if ('0' <= ch <= '9')
  326.                     {
  327.                         num = (num * 10) + (ch - '0');
  328.                     }
  329.                     else
  330.                     {
  331.                         return -1;
  332.                     }
  333.                 }
  334.                 while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  335.                 setarg(paramPos, 0, num * neg);
  336.             }
  337.             case 'h', 'x':
  338.             {
  339.                 new
  340.                     num = 0,
  341.                     ch = sstring[sstringPos];
  342.                 do
  343.                 {
  344.                     sstringPos++;
  345.                     switch (ch)
  346.                     {
  347.                         case 'x', 'X':
  348.                         {
  349.                             num = 0;
  350.                             continue;
  351.                         }
  352.                         case '0' .. '9':
  353.                         {
  354.                             num = (num << 4) | (ch - '0');
  355.                         }
  356.                         case 'a' .. 'f':
  357.                         {
  358.                             num = (num << 4) | (ch - ('a' - 10));
  359.                         }
  360.                         case 'A' .. 'F':
  361.                         {
  362.                             num = (num << 4) | (ch - ('A' - 10));
  363.                         }
  364.                         default:
  365.                         {
  366.                             return -1;
  367.                         }
  368.                     }
  369.                 }
  370.                 while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  371.                 setarg(paramPos, 0, num);
  372.             }
  373.             case 'c':
  374.             {
  375.                 setarg(paramPos, 0, sstring[sstringPos++]);
  376.             }
  377.             case 'f':
  378.             {
  379.  
  380.                 new changestr[16], changepos = 0, strpos = sstringPos;
  381.                 while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
  382.                 {
  383.                     changestr[changepos++] = sstring[strpos++];
  384.                     }
  385.                 changestr[changepos] = '\0';
  386.                 setarg(paramPos,0,_:floatstr(changestr));
  387.             }
  388.             case 'p':
  389.             {
  390.                 delim = format[formatPos++];
  391.                 continue;
  392.             }
  393.             case '\'':
  394.             {
  395.                 new
  396.                     end = formatPos - 1,
  397.                     ch;
  398.                 while ((ch = format[++end]) && ch != '\'') {}
  399.                 if (!ch)
  400.                 {
  401.                     return -1;
  402.                 }
  403.                 format[end] = '\0';
  404.                 if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
  405.                 {
  406.                     if (format[end + 1])
  407.                     {
  408.                         return -1;
  409.                     }
  410.                     return 0;
  411.                 }
  412.                 format[end] = '\'';
  413.                 sstringPos = ch + (end - formatPos);
  414.                 formatPos = end + 1;
  415.             }
  416.             case 'u':
  417.             {
  418.                 new
  419.                     end = sstringPos - 1,
  420.                     id = 0,
  421.                     bool:num = true,
  422.                     ch;
  423.                 while ((ch = sstring[++end]) && ch != delim)
  424.                 {
  425.                     if (num)
  426.                     {
  427.                         if ('0' <= ch <= '9')
  428.                         {
  429.                             id = (id * 10) + (ch - '0');
  430.                         }
  431.                         else
  432.                         {
  433.                             num = false;
  434.                         }
  435.                     }
  436.                 }
  437.                 if (num && IsPlayerConnected(id))
  438.                 {
  439.                     setarg(paramPos, 0, id);
  440.                 }
  441.                 else
  442.                 {
  443.                     #if !defined foreach
  444.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  445.                         #define __SSCANF_FOREACH__
  446.                     #endif
  447.                     sstring[end] = '\0';
  448.                     num = false;
  449.                     new
  450.                         name[MAX_PLAYER_NAME];
  451.                     id = end - sstringPos;
  452.                     foreach (Player, playerid)
  453.                     {
  454.                         GetPlayerName(playerid, name, sizeof (name));
  455.                         if (!strcmp(name, sstring[sstringPos], true, id))
  456.                         {
  457.                             setarg(paramPos, 0, playerid);
  458.                             num = true;
  459.                             break;
  460.                         }
  461.                     }
  462.                     if (!num)
  463.                     {
  464.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  465.                     }
  466.                     sstring[end] = ch;
  467.                     #if defined __SSCANF_FOREACH__
  468.                         #undef foreach
  469.                         #undef __SSCANF_FOREACH__
  470.                     #endif
  471.                 }
  472.                 sstringPos = end;
  473.             }
  474.             case 's', 'z':
  475.             {
  476.                 new
  477.                     i = 0,
  478.                     ch;
  479.                 if (format[formatPos])
  480.                 {
  481.                     while ((ch = sstring[sstringPos++]) && ch != delim)
  482.                     {
  483.                         setarg(paramPos, i++, ch);
  484.                     }
  485.                     if (!i)
  486.                     {
  487.                         return -1;
  488.                     }
  489.                 }
  490.                 else
  491.                 {
  492.                     while ((ch = sstring[sstringPos++]))
  493.                     {
  494.                         setarg(paramPos, i++, ch);
  495.                     }
  496.                 }
  497.                 sstringPos--;
  498.                 setarg(paramPos, i, '\0');
  499.             }
  500.             default:
  501.             {
  502.                 continue;
  503.             }
  504.         }
  505.         while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
  506.         {
  507.             sstringPos++;
  508.         }
  509.         while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
  510.         {
  511.             sstringPos++;
  512.         }
  513.         paramPos++;
  514.     }
  515.     do
  516.     {
  517.         if ((delim = format[formatPos++]) > ' ')
  518.         {
  519.             if (delim == '\'')
  520.             {
  521.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  522.             }
  523.             else if (delim != 'z')
  524.             {
  525.                 return delim;
  526.             }
  527.         }
  528.     }
  529.     while (delim > ' ');
  530.     return 0;
  531. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement