Guest User

Untitled

a guest
Dec 13th, 2010
866
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.95 KB | None | 0 0
  1.  
  2.     //--------------[Packer Script]----------------//
  3.    //---------------[By KayLuz]-------------------//
  4.   //------------------[V0.2]---------------------//
  5.  //---------------------------------------------//
  6.  
  7.  
  8. #include <a_samp>
  9. #include <zcmd>
  10. #include <sscanf2>
  11. #pragma tabsize 0
  12. new
  13.     prevcar[MAX_PLAYERS],
  14.     slots[MAX_VEHICLES][5],
  15.     veh,
  16.     string[125],
  17.     useslot,
  18.     nearest,
  19.     Float:X, Float:Y, Float:Z, Float:A;
  20.    
  21. forward GetClosestCar(playerid);
  22. forward GetDistanceToCar(playerid,carid);
  23.  
  24. /*new InvalidVehicles[60] = {  Work In Progress
  25.     403, 406, 407, 408, 409, 417, 425, 430, 431, 432, 433, 435, 437, 443, 444,
  26.     446, 447, 449, 450, 452, 453, 454, 455, 456, 457, 463, 469, 472, 473,
  27.     476, 484, 486, 487, 488, 493, 497, 511, 512, 513, 514, 515, 519, 520,
  28.     524, 532, 537, 538, 548, 553, 557, 589, 570, 578, 584, 590, 591, 592,
  29.     593, 595, 601
  30. }*/
  31.  
  32.  
  33.  
  34. public GetClosestCar(playerid){ //By Darkrealm
  35.     if (!IsPlayerConnected(playerid)){
  36.         return -1;
  37.     }
  38.     new Float:prevdist = 8.000;
  39.     for (new carid = 0; carid < MAX_VEHICLES; carid++){
  40.         if(!IsVehicleInUse(carid)){
  41.             new Float:dist = GetDistanceToCar(playerid,carid);
  42.             if ((dist < prevdist)){
  43.                  prevdist = dist;
  44.                  prevcar[playerid] = carid;
  45.             }
  46.         }
  47.     }
  48.     return prevcar[playerid];
  49. }
  50. public GetDistanceToCar(playerid,carid){ //By Darkrealm
  51.     new Float:dis;
  52.     new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
  53.     if (!IsPlayerConnected(playerid)) {
  54.     return -1;
  55.     }
  56.     GetPlayerPos(playerid,x1,y1,z1);
  57.     if(!IsVehicleInUse(carid)){
  58.         GetVehiclePos(carid,x2,y2,z2);
  59.         dis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  60.         return floatround(dis);
  61.     }else{
  62.         return 1;
  63.     }
  64. }
  65. IsVehicleInUse(vehicleid){
  66.     new temp;
  67.     for(new i=0;i<GetMaxPlayers();i++){
  68.         if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i)==PLAYER_STATE_DRIVER){temp++;}
  69.     }
  70.     if(temp > 0){ return true; } else return false;
  71. }
  72. public OnPlayerSpawn(playerid)
  73. {
  74.     return 1;
  75. }
  76. forward LoadVehicle(playerid);
  77. public LoadVehicle(playerid)
  78. {
  79.     veh = GetPlayerVehicleID(playerid);
  80.     nearest = GetClosestCar(playerid);
  81.     PlayerPlaySound(playerid, 1056, X, Y, Z);
  82.     if(GetVehicleModel(veh) == 443)
  83.     {
  84.         if(nearest > 0)
  85.         {
  86.             slots[veh][useslot] = nearest;
  87.             SetVehicleVirtualWorld(slots[veh][useslot], 19);
  88.             SetVehiclePos(slots[veh][useslot], 1878.3353,-1380.3011,13.5722);
  89.             SendClientMessage(playerid, 0xFF0000FF, "*Vehicle loaded on the back*");
  90.             format(string, 125, "[Vehicle Loaded] Slot Used %d | Vehicle ID: %d",  useslot, slots[veh][useslot]);
  91.             SendClientMessage(playerid, 0x33CCFFFF, string);
  92.             useslot = 0;
  93.             return 1;
  94.         }
  95.         else SendClientMessage(playerid, 0xFF0000FF, "There is no vehicle close enough");
  96.     }
  97.     else SendClientMessage(playerid, 0xFF0000FF, "*You Must Be In A Packer*");return 1;
  98. }
  99. public OnGameModeInit()
  100. {
  101.     print("______________Packer System V0.2 Loaded__________________");
  102.     for(new v=1;v<MAX_VEHICLES;v++)
  103.     {
  104.         slots[v][1] = -1;
  105.         slots[v][2] = -1;
  106.         slots[v][3] = -1;
  107.         slots[v][4] = -1;
  108.     }
  109. }
  110. public OnPlayerDisconnect(playerid, reason)
  111. {
  112.     return 1;
  113. }
  114. COMMAND:packer(playerid, params[])
  115. {
  116.         new packer;
  117.         GetPlayerPos(playerid, X,Y,Z);
  118.         veh = CreateVehicle(443, X+3,Y+3,Z, 0.0, 6, 6, 60000);
  119.         slots[packer][1] = -1;
  120.         slots[packer][2] = -1;
  121.         slots[packer][3] = -1;
  122.         slots[packer][4] = -1;
  123.         return 1;
  124. }
  125. COMMAND:loadv(playerid, params[])
  126. {
  127.     veh = GetPlayerVehicleID(playerid);
  128.     if(GetVehicleModel(veh) == 443)
  129.     {
  130.         if(slots[veh][1] == -1)
  131.         {
  132.             useslot = 1;
  133.             SetTimerEx("LoadVehicle",2800,0,"i",playerid);
  134.             SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
  135.             return 1;
  136.  
  137.         }
  138.         else if(slots[veh][2] == -1)
  139.         {
  140.             useslot = 2;
  141.             SetTimerEx("LoadVehicle",2500,0,"i",playerid);
  142.             SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
  143.             return 1;
  144.         }
  145.         else if(slots[veh][3] == -1)
  146.         {
  147.             useslot = 3;
  148.             SetTimerEx("LoadVehicle",2500,0,"i",playerid);
  149.             SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
  150.             return 1;
  151.         }
  152.         else if(slots[veh][4] == -1)
  153.         {
  154.             useslot = 4;
  155.             SetTimerEx("LoadVehicle",2500,0,"i",playerid);
  156.             SendClientMessage(playerid, 0xFF0000FF, "*Attempting To Load Vehicle....*");
  157.             return 1;
  158.         }
  159.         else SendClientMessage(playerid, 0xFF0000FF, "*Packer Is Full*");
  160.     }
  161.     else SendClientMessage(playerid, 0xFF0000FF, "*You Must Be In A Packer*");return 1;
  162. }
  163.  
  164. COMMAND:unloadv(playerid, params[])
  165. {
  166.     new aslots;
  167.     new tmp[256];
  168.     aslots = strval(tmp);
  169.     veh = GetPlayerVehicleID(playerid);
  170.     PlayerPlaySound(playerid, 1056, X, Y, Z);
  171.     if (sscanf(params, "i", aslots)) return SendClientMessage(playerid, 0xFF0000FF, "[ERROR] Right Usage: /unload [Slot 1-4]");
  172.     if(slots[veh][aslots] >= 0)
  173.     {
  174.         format(string, 125, "[Vehicle Unloaded] Slot %d Unloaded | Vehicle ID:%d",  aslots, slots[veh][aslots]);
  175.         SendClientMessage(playerid, 0x33CCFFFF, string);
  176.         GetPlayerPos(playerid, X, Y, Z);
  177.         SetVehiclePos(slots[veh][aslots], X, Y+10, Z);
  178.         GetVehicleZAngle(veh, A);
  179.         SetVehicleZAngle(slots[veh][aslots],A);
  180.         SetVehicleVirtualWorld(slots[veh][aslots], 0);
  181.         slots[veh][aslots] = -1;
  182.         return 1;
  183.     }
  184.     else SendClientMessage(playerid, 0xFF0000FF, "* There is no vehicle in that slot | Try Another *"); return 1;
  185. }
  186. COMMAND:vslot(playerid, params[])
  187. {
  188.     new aslots;
  189.     new tmp[256];
  190.     aslots = strval(tmp);
  191.     veh = GetPlayerVehicleID(playerid);
  192.     if (sscanf(params, "i", aslots)) return SendClientMessage(playerid, 0xFF0000FF, "[ERROR] Right Usage: /vslot [Slot 1-4]");
  193.     if(slots[veh][aslots] >= 0)
  194.     {
  195.         format(string, 125, "[Vehicle View]Packer Slot %d Contains Vehicle ID:%d", aslots, slots[veh][aslots]);
  196.         SendClientMessage(playerid, 0x33CCFFFF, string);
  197.         return 1;
  198.     }
  199.     else SendClientMessage(playerid, 0xFF0000FF, "* There is no vehicle in that slot | Try Another *"); return 1;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment