Advertisement
darklight

DInv

Oct 31st, 2011
541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 16.06 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define Barriere "Fraktion" //Ändere den Namen in den Anführungszeichen (" ") in den PVar, welcher für die Fraktionsabfrage genutzt wird.
  4.  
  5. stock GetVehicleRights(vehicleid)
  6. {
  7.     switch(vehicleid)
  8.     {
  9.         //Hier kommt die Abfrage herein, welche Personen den
  10.         //Kofferraum welcher Fahrzeuge benutzen dürfen.
  11.         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  12.         //----Beispiel:                                                                                                     //
  13.         //----switch(vehicleid)                                                                                             //
  14.         //----{                                                                                                             //
  15.         //----  case 1 .. 10: return 1;  Der Kofferraum von VehicleID 1 - 10 ist jetzt nur noch für Fraktion 1 verfügbar.   //
  16.         //----  case 11 .. 24: return 2;  Der Kofferraum von VehicleID 11 - 24 ist jetzt nur noch für Fraktion 2 verfügbar. //
  17.         //----}                                                                                                             //
  18.         //----return -1;                                                                                                    //
  19.         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  20.              
  21.     }
  22.     return -1;
  23. }
  24.  
  25. /////////////////////////////////////////////////////////////////////////
  26. //----Ab hier nichts mehr ändern, außer du kennst dich mit Pawn aus----//
  27. /////////////////////////////////////////////////////////////////////////
  28.  
  29. #define Verstauen (1)
  30. #define Entnehmen (2)
  31.  
  32. enum vehdata
  33. {
  34.     WeaponID,
  35.     Munition
  36. }
  37. new VehicleSlot[MAX_VEHICLES][4][vehdata];
  38. new FormatString[1024];
  39.  
  40. public OnFilterScriptInit()
  41. {
  42.     print("\n--------------------------------------");
  43.     print(" WeaponInventar by Darklight ");
  44.     print("--------------------------------------\n");
  45.     for(new i=0;i<MAX_VEHICLES;i++)
  46.     {
  47.         for(new a=0;a!=4;a++)
  48.         {
  49.             VehicleSlot[i][a][WeaponID] = 0;
  50.             VehicleSlot[i][a][Munition] = 0;
  51.         }
  52.     }
  53.     return 1;
  54. }
  55.  
  56. public OnVehicleSpawn(vehicleid)
  57. {
  58.     for(new a=0;a!=4;a++)
  59.     {
  60.         VehicleSlot[vehicleid][a][WeaponID] = 0;
  61.         VehicleSlot[vehicleid][a][Munition] = 0;
  62.     }
  63.     return 1;
  64. }
  65.  
  66. public OnVehicleDeath(vehicleid, killerid)
  67. {
  68.     for(new a=0;a!=4;a++)
  69.     {
  70.         VehicleSlot[vehicleid][a][WeaponID] = 0;
  71.         VehicleSlot[vehicleid][a][Munition] = 0;
  72.     }
  73.     return 1;
  74. }
  75.  
  76. stock Float:GetVehicleBootDistance(vehicle)
  77. {
  78.     new Float:distance;
  79.     switch(vehicle)
  80.     {
  81.         case 400: distance = 2.90;
  82.         case 401: distance = 3.08;
  83.         case 402: distance = 3.24;
  84.         case 404: distance = 3.26;
  85.         case 405: distance = 3.34;
  86.         case 409: distance = 4.39;
  87.         case 410: distance = 2.77;
  88.         case 411: distance = 2.91;
  89.         case 412: distance = 3.99;
  90.         case 413: distance = 3.15;
  91.         case 415: distance = 2.90;
  92.         case 418: distance = 3.18;
  93.         case 419: distance = 3.46;
  94.         case 420: distance = 3.29;
  95.         case 421: distance = 3.55;
  96.         case 426: distance = 3.30;
  97.         case 429: distance = 2.95;
  98.         case 434: distance = 2.49;
  99.         case 436: distance = 3.11;
  100.         case 438: distance = 3.26;
  101.         case 439: distance = 2.99;
  102.         case 442: distance = 3.66;
  103.         case 445: distance = 3.30;
  104.         case 451: distance = 3.06;
  105.         case 458: distance = 3.42;
  106.         case 466: distance = 3.35;
  107.         case 467: distance = 3.55;
  108.         case 474: distance = 3.38;
  109.         case 475: distance = 3.25;
  110.         case 477: distance = 3.20;
  111.         case 479: distance = 3.43;
  112.         case 480: distance = 2.98;
  113.         case 483: distance = 3.44;
  114.         case 489: distance = 3.16;
  115.         case 490: distance = 3.76;
  116.         case 491: distance = 3.50;
  117.         case 492: distance = 3.44;
  118.         case 495: distance = 2.80;
  119.         case 496: distance = 2.66;
  120.         case 504: distance = 3.40;
  121.         case 505: distance = 3.16;
  122.         case 506: distance = 2.87;
  123.         case 507: distance = 3.36;
  124.         case 516: distance = 3.46;
  125.         case 517: distance = 3.42;
  126.         case 518: distance = 3.33;
  127.         case 526: distance = 2.94;
  128.         case 527: distance = 2.89;
  129.         case 529: distance = 3.20;
  130.         case 533: distance = 3.02;
  131.         case 534: distance = 3.44;
  132.         case 536: distance = 3.51;
  133.         case 540: distance = 3.40;
  134.         case 541: distance = 2.70;
  135.         case 542: distance = 3.49;
  136.         case 545: distance = 2.76;
  137.         case 546: distance = 3.19;
  138.         case 547: distance = 3.25;
  139.         case 549: distance = 3.02;
  140.         case 550: distance = 3.26;
  141.         case 551: distance = 3.66;
  142.         case 555: distance = 2.86;
  143.         case 558: distance = 2.91;
  144.         case 559: distance = 2.76;
  145.         case 560: distance = 2.88;
  146.         case 561: distance = 3.23;
  147.         case 562: distance = 2.82;
  148.         case 565: distance = 2.61;
  149.         case 566: distance = 3.52;
  150.         case 567: distance = 3.67;
  151.         case 575: distance = 3.27;
  152.         case 576: distance = 3.57;
  153.         case 579: distance = 3.46;
  154.         case 580: distance = 3.24;
  155.         case 585: distance = 3.55;
  156.         case 589: distance = 2.83;
  157.         case 596: distance = 3.30;
  158.         case 597: distance = 3.31;
  159.         case 598: distance = 3.26;
  160.         case 599: distance = 3.18;
  161.         case 600: distance = 3.24;
  162.         case 602: distance = 3.08;
  163.         case 603: distance = 3.15;
  164.         case 604: distance = 3.44;
  165.         case 605: distance = 3.15;
  166.  
  167.     }
  168.     return distance;
  169. }
  170.  
  171. public OnPlayerCommandText(playerid, cmdtext[])
  172. {
  173.     if(strcmp("/verstauen",cmdtext,true,10) == 0)
  174.     {
  175.         if(!IsPlayerNearVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF," Du befindest dich nicht in der Nähe eines Vehikels.");
  176.         if(GetPVarInt(playerid,Barriere) != GetVehicleRights(GetClosestVehicle(playerid))) return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
  177.         new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance;
  178.         SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid));
  179.         bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle")));
  180.         GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]);
  181.         distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]);
  182.         if(bootdistance-0.20 < distance && distance < bootdistance+0.20)
  183.         {
  184.             GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
  185.             SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective);
  186.             ShowPlayerDialog(playerid,Verstauen,DIALOG_STYLE_MSGBOX,"Verstauen - Menü",GetVehicleSlotDataV(playerid),"Verstauen","Abbrechen");
  187.         }
  188.         return 1;
  189.     }
  190.     if(strcmp("/entnehmen",cmdtext,true,10) == 0)
  191.     {
  192.         if(!IsPlayerNearVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF," Du befindest dich nicht in der Nähe eines Vehikels.");
  193.         if(GetPVarInt(playerid,Barriere) != GetVehicleRights(GetClosestVehicle(playerid))) return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
  194.         new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance;
  195.         SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid));
  196.         bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle")));
  197.         GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]);
  198.         distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]);
  199.         if(bootdistance-0.20 < distance && distance < bootdistance+0.20)
  200.         {
  201.             GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
  202.             SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective);
  203.             ShowPlayerDialog(playerid,Entnehmen,DIALOG_STYLE_INPUT,"Entnehmen - Menü",GetVehicleSlotDataE(playerid),"Entnehmen","Abbrechen");
  204.         }
  205.         return 1;
  206.     }
  207.     return 0;
  208. }
  209.  
  210. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  211. {
  212.     switch(dialogid)
  213.     {
  214.         case Verstauen:
  215.         {
  216.             new engine,lights,alarm,doors,bonnet,boot,objective;
  217.             if(!response)
  218.             {
  219.                 GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
  220.                 SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,0,objective);
  221.                 return DeletePVar(playerid,"ClosestVehicle");
  222.             }
  223.             if(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][WeaponID] == 0)
  224.             {
  225.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][WeaponID] = GetPlayerWeapon(playerid);
  226.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][Munition] = GetPlayerAmmo(playerid);
  227.                 RemovePlayerWeapon(playerid,GetPlayerWeapon(playerid));
  228.             }
  229.             else if(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][WeaponID] == 0)
  230.             {
  231.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][WeaponID] = GetPlayerWeapon(playerid);
  232.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][Munition] = GetPlayerAmmo(playerid);
  233.                 RemovePlayerWeapon(playerid,GetPlayerWeapon(playerid));
  234.             }
  235.             else if(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][WeaponID] == 0)
  236.             {
  237.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][WeaponID] = GetPlayerWeapon(playerid);
  238.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][Munition] = GetPlayerAmmo(playerid);
  239.                 RemovePlayerWeapon(playerid,GetPlayerWeapon(playerid));
  240.             }
  241.             else if(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][WeaponID] == 0)
  242.             {
  243.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][WeaponID] = GetPlayerWeapon(playerid);
  244.                 VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][Munition] = GetPlayerAmmo(playerid);
  245.                 RemovePlayerWeapon(playerid,GetPlayerWeapon(playerid));
  246.             }
  247.             GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
  248.             SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,0,objective);
  249.             DeletePVar(playerid,"ClosestVehicle");
  250.         }
  251.         case Entnehmen:
  252.         {
  253.             new slot,Ammo[4],WName1[64],WName2[64],WName3[64],WName4[64],engine,lights,alarm,doors,bonnet,boot,objective;
  254.             if(!response)
  255.             {
  256.                 GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
  257.                 return SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,0,objective);
  258.             }
  259.             if(IsNumeric(inputtext))
  260.             {
  261.                 WName1 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][WeaponID]);
  262.                 WName2 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][WeaponID]);
  263.                 WName3 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][WeaponID]);
  264.                 WName4 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][WeaponID]);
  265.                 Ammo[0] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][Munition];
  266.                 Ammo[1] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][Munition];
  267.                 Ammo[2] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][Munition];
  268.                 Ammo[3] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][Munition];
  269.                 format(FormatString,sizeof(FormatString),"\t!! Ihre Eingabe war keine Ziffer !!\n\nMomentane Waffen im Kofferraum:\n\n\tSlot 1: %s - %d\n\tSlot 2: %s - %d\n\tSlot 3: %s - %d\n\tSlot 4: %s - %d\n\nGib den Slot der Waffe an, welche du entnehmen willst:",WName1,Ammo[0],WName2,Ammo[1],WName3,Ammo[2],WName4,Ammo[3]);
  270.                 return ShowPlayerDialog(playerid,Entnehmen,DIALOG_STYLE_INPUT,"Entnehmen - Menü",FormatString,"Entnehmen","Abbrechen");
  271.             }
  272.             slot = strval(inputtext);
  273.             printf("%d",slot);
  274.             if(1 > slot && slot > 4) return SendClientMessage(playerid,0xFFFFFFFF," Ihre Eingabe war kleiner als 1 oder höher als 4. ");
  275.             slot = slot -1;
  276.             GivePlayerWeapon(playerid,VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][slot][WeaponID],VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][slot][Munition]);
  277.             VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][slot][WeaponID] = 0;
  278.             VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][slot][Munition] = 0;
  279.             GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
  280.             SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,0,objective);
  281.         }
  282.     }
  283.     return 1;
  284. }
  285.  
  286. stock GetVehicleSlotDataV(playerid)
  287. {
  288.     new Ammo[4],WName1[64],WName2[64],WName3[64],WName4[64];
  289.     WName1 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][WeaponID]);
  290.     WName2 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][WeaponID]);
  291.     WName3 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][WeaponID]);
  292.     WName4 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][WeaponID]);
  293.     Ammo[0] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][Munition];
  294.     Ammo[1] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][Munition];
  295.     Ammo[2] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][Munition];
  296.     Ammo[3] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][Munition];
  297.     format(FormatString,sizeof(FormatString),"Momentane Waffen im Kofferraum:\n\n\tSlot 1: %s - %d\n\tSlot 2: %s - %d\n\tSlot 3: %s - %d\n\tSlot 4: %s - %d\n\nMöchtest du deine %s mit %d Munition verstauen ?",WName1,Ammo[0],WName2,Ammo[1],WName3,Ammo[2],WName4,Ammo[3],WeaponName(GetPlayerWeapon(playerid)),GetPlayerAmmo(playerid));
  298.     return FormatString;
  299. }
  300. stock GetVehicleSlotDataE(playerid)
  301. {
  302.     new Ammo[4],WName1[64],WName2[64],WName3[64],WName4[64];
  303.     WName1 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][WeaponID]);
  304.     WName2 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][WeaponID]);
  305.     WName3 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][WeaponID]);
  306.     WName4 = WeaponName(VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][WeaponID]);
  307.     Ammo[0] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][0][Munition];
  308.     Ammo[1] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][1][Munition];
  309.     Ammo[2] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][2][Munition];
  310.     Ammo[3] = VehicleSlot[GetPVarInt(playerid,"ClosestVehicle")][3][Munition];
  311.     format(FormatString,sizeof(FormatString),"Momentane Waffen im Kofferraum:\n\n\tSlot 1: %s - %d\n\tSlot 2: %s - %d\n\tSlot 3: %s - %d\n\tSlot 4: %s - %d\n\nGib den Slot der Waffe an, welche du entnehmen willst:",WName1,Ammo[0],WName2,Ammo[1],WName3,Ammo[2],WName4,Ammo[3]);
  312.     return FormatString;
  313. }
  314. stock GetClosestVehicle(playerid, &Float:dis = (Float:0x7F800000))
  315. {
  316.     dis = (Float:0x7F800000);
  317.     new Float:X, Float:Y, Float:Z;
  318.     if(GetPlayerPos(playerid, X, Y, Z))
  319.     {
  320.         new vehicleid = INVALID_VEHICLE_ID;
  321.         for(new v, Float:temp, Float:VX, Float:VY, Float:VZ; v != MAX_VEHICLES; v++)
  322.         {
  323.             if(GetVehiclePos(v, VX, VY, VZ))
  324.             {
  325.                 VX -= X, VY -= Y, VZ -= Z;
  326.                 temp = VX * VX + VY * VY + VZ * VZ;
  327.                 if(temp < dis) dis = temp, vehicleid = v;
  328.             }
  329.         }
  330.         dis = floatpower(dis, 0.5);
  331.         return vehicleid;
  332.     }
  333.     return INVALID_VEHICLE_ID;
  334. }
  335. stock IsPlayerNearVehicle(playerid)
  336. {
  337.     new Float:Pos[3];
  338.     for(new i=0;i<MAX_VEHICLES;i++)
  339.     {
  340.         GetVehiclePos(i,Pos[0],Pos[1],Pos[2]);
  341.         IsPlayerInRangeOfPoint(playerid,3.5,Pos[0],Pos[1],Pos[2]);
  342.         return 1;
  343.     }
  344.     return -1;
  345. }
  346. stock WeaponName(weaponid)
  347. {
  348.     new string[64];
  349.     GetWeaponName(weaponid,string,64);
  350.     return string;
  351. }
  352. stock RemovePlayerWeapon(playerid, weaponid)
  353. {
  354.     new plyWeapons[12];
  355.     new plyAmmo[12];
  356.     for(new slot=0; slot != 12; slot++)
  357.     {
  358.         new wep, ammo;
  359.         GetPlayerWeaponData(playerid, slot, wep, ammo);
  360.  
  361.         if(wep != weaponid)
  362.         {
  363.             GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
  364.         }
  365.     }
  366.     ResetPlayerWeapons(playerid);
  367.     for(new slot = 0; slot != 12; slot++)
  368.     {
  369.         GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
  370.     }
  371. }
  372. stock IsNumeric(const string[])
  373. {
  374.     new length=strlen(string);
  375.     if(length==0)
  376.     {
  377.         return 0;
  378.     }
  379.     for (new i=0; i<length; i++)
  380.     {
  381.         if (!((string[i] <= '9' && string[i] >= '0') || (i==0 && (string[i]=='-' || string[i]=='+'))))
  382.         {
  383.             return false;
  384.         }
  385.     }
  386.     return 0;
  387. }
  388.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement