daily pastebin goal
34%
SHARE
TWEET

Caravan by Mogly1

a guest Jan 2nd, 2019 92 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <ocmd>
  5. #include <sscanf2>
  6.  
  7. #define MAX_CARAVANS 100
  8.  
  9. enum Caravan_Enum
  10. {
  11.     id,
  12.     obj,
  13.     type,
  14.     Float:obx,
  15.     Float:oby,
  16.     Float:obz,
  17.     Float:carrot,
  18.     build
  19. };
  20. new Caravan[MAX_CARAVANS][Caravan_Enum];
  21.  
  22. ocmd:trailer(playerid,params[])//Hängt die angegeben Id an das Fahrzeug wo man drinne sitzt
  23. {
  24.     new trailerid, vehicleid=GetPlayerVehicleID(playerid);
  25.     if(sscanf(params, "d",trailerid)) return SendClientMessage(playerid,-1, "Verwendung: /trailer [Id]");
  26.     if(IsTrailerAttachedToVehicle(vehicleid))
  27.     {
  28.         DetachTrailerFromVehicle(vehicleid);
  29.     }
  30.     else
  31.     {
  32.         AttachTrailerToVehicle(trailerid, vehicleid);
  33.     }
  34.     return 1;
  35. }
  36.  
  37. ocmd:delct(playerid,params[])
  38. {
  39.     new Float:Pos[3];
  40.     for(new i=0;i<MAX_CARAVANS;i++)
  41.     {
  42.         if(Caravan[i][id]==0)continue;
  43.         if(Caravan[i][build]==0)
  44.         {
  45.             GetVehiclePos(Caravan[i][id],Pos[0],Pos[1],Pos[2]);
  46.             if(IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))
  47.             {
  48.                 DeleteCaravan(i);
  49.             }
  50.         }
  51.         else
  52.         {
  53.             if(IsPlayerInRangeOfPoint(playerid,5,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz]))
  54.             {
  55.                 DeleteCaravan(i);
  56.             }
  57.         }
  58.     }
  59.     return 1;
  60. }
  61.  
  62. ocmd:ctb(playerid,params[])
  63. {
  64.     new Float:VehPos[4];
  65.     GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
  66.     GetPlayerFacingAngle(playerid, VehPos[3]);
  67.     new i = GetFreeCaravan();
  68.     if(i == -1)return SendClientMessage(playerid,-1,"Keine Caravans mehr möglich");
  69.     CreateBigHoodie(i,VehPos[0],VehPos[1],VehPos[2],VehPos[3]);
  70.     return 1;
  71. }
  72. ocmd:cts(playerid,params[])
  73. {
  74.     new Float:VehPos[4];
  75.     GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
  76.     GetPlayerFacingAngle(playerid, VehPos[3]);
  77.     new i = GetFreeCaravan();
  78.     if(i == -1)return SendClientMessage(playerid,-1,"Keine Caravans mehr möglich");
  79.     CreateSmallHodie(i,VehPos[0],VehPos[1],VehPos[2],VehPos[3]);
  80.     return 1;
  81. }
  82.  
  83. ocmd:e(playerid,params[])
  84. {
  85.     new Float:Pos[3];
  86.     if(GetPlayerVirtualWorld(playerid)==0)
  87.     {
  88.         for(new i=0;i<MAX_CARAVANS;i++)
  89.         {
  90.             if(Caravan[i][id]==0)continue;
  91.             if(Caravan[i][build]==0)
  92.             {
  93.                 GetVehiclePos(Caravan[i][id],Pos[0],Pos[1],Pos[2]);
  94.                 if(IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))
  95.                 {
  96.                     GoInCaravan(playerid,i);
  97.                 }
  98.             }
  99.             else
  100.             {
  101.                 if(IsPlayerInRangeOfPoint(playerid,5,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz]))
  102.                 {
  103.                     GoInCaravan(playerid,i);
  104.                 }
  105.             }
  106.         }
  107.     }
  108.     else
  109.     {
  110.         if(IsPlayerInRangeOfPoint(playerid,3,271.884979,306.631988,999.148437) && !(GetPVarFloat(playerid,"Pos_X")==0 && GetPVarFloat(playerid,"Pos_Y")==0 && GetPVarFloat(playerid,"Pos_Z")==0))
  111.         {
  112.             SetPlayerPos(playerid,GetPVarFloat(playerid,"Pos_X"),GetPVarFloat(playerid,"Pos_Y"),GetPVarFloat(playerid,"Pos_Z"));
  113.             SetPlayerFacingAngle(playerid,GetPVarFloat(playerid,"Pos_R"));
  114.             SetPlayerVirtualWorld(playerid,0);
  115.             SetPlayerInterior(playerid,0);
  116.             SetPVarFloat(playerid,"Pos_X",0);
  117.             SetPVarFloat(playerid,"Pos_Y",0);
  118.             SetPVarFloat(playerid,"Pos_Z",0);
  119.             SetPVarFloat(playerid,"Pos_R",0);
  120.         }
  121.     }
  122.     return 1;
  123. }
  124.  
  125. ocmd:build(playerid,params[])
  126. {
  127.     new Float:Pos[3];
  128.     for(new i=0;i<MAX_CARAVANS;i++)
  129.     {
  130.         if(Caravan[i][id]==0)continue;
  131.         if(Caravan[i][build]==0)
  132.         {
  133.             GetVehiclePos(Caravan[i][id],Pos[0],Pos[1],Pos[2]);
  134.             if(IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))
  135.             {
  136.                 new Float:rot;
  137.                 GetVehicleZAngle(Caravan[i][id],rot);
  138.                 DestroyObject(Caravan[i][obj]);
  139.                 DestroyVehicle(Caravan[i][id]);
  140.                 new objectid;
  141.                 if(Caravan[i][type]==1)
  142.                 {
  143.                     objectid=3174;
  144.                 }
  145.                 else if(Caravan[i][type]==2)
  146.                 {
  147.                     objectid=3175;
  148.                 }
  149.                 else
  150.                 {
  151.                     return SendClientMessage(playerid,-1,"Error: fehler beim erstellen des Caravans");
  152.                 }
  153.                 Caravan[i][obj]=CreateObject(objectid, Pos[0],Pos[1],Pos[2], 0.0, 0.0, 0.0);
  154.                 EditObject(playerid, Caravan[i][obj]);
  155.                 Caravan[i][build]=1;
  156.                 Caravan[i][carrot]=rot;
  157.                 SetPVarInt(playerid,"Editing",1);
  158.                 SetPVarInt(playerid,"Obj",i);
  159.                 SetPVarFloat(playerid,"Obj_x",Pos[0]);
  160.                 SetPVarFloat(playerid,"Obj_y",Pos[1]);
  161.                 SetPVarFloat(playerid,"Obj_z",Pos[2]);
  162.                 break;
  163.             }
  164.         }
  165.         else
  166.         {
  167.             if(IsPlayerInRangeOfPoint(playerid,5,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz]))
  168.             {
  169.                 DestroyObject(Caravan[i][obj]);
  170.                 Caravan[i][build]=0;
  171.                 if(Caravan[i][type]==1)
  172.                 {
  173.                     CreateSmallHodie(i,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz],Caravan[i][carrot]);
  174.                 }
  175.                 if(Caravan[i][type]==2)
  176.                 {
  177.                     CreateBigHoodie(i,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz],Caravan[i][carrot]);
  178.                 }
  179.                 break;
  180.             }
  181.         }
  182.     }
  183.     return 1;
  184. }
  185.  
  186. stock DeleteCaravan(i)
  187. {
  188.     DestroyObject(Caravan[i][obj]);
  189.     if(Caravan[i][build]==0)
  190.     {
  191.         DestroyVehicle(Caravan[i][id]);
  192.     }
  193.     Caravan[i][id]=0;
  194.     Caravan[i][obj]=-1;
  195.     Caravan[i][type]=1;
  196.     Caravan[i][obx]=0;
  197.     Caravan[i][oby]=0;
  198.     Caravan[i][obz]=0;
  199.     Caravan[i][carrot]=0;
  200.     Caravan[i][build]=0;
  201.     return 1;
  202. }
  203.  
  204. stock CreateBigHoodie(i,Float:x,Float:y,Float:z,Float:r)
  205. {
  206.     Caravan[i][id] = CreateVehicle(611,x,y,z+1,r,0,0,-1);
  207.     Caravan[i][obj] = CreateObject(3175, 0,0,0-20, 0.0, 0.0, 0.0);
  208.     Caravan[i][type] = 2;
  209.     AttachObjectToVehicle(Caravan[i][obj],Caravan[i][id],0.000000,-2.5,-0.8,0.00000,0.000000,0.000000); //Trailer
  210.     return 1;
  211. }
  212.  
  213. stock CreateSmallHodie(i,Float:x,Float:y,Float:z,Float:r)
  214. {
  215.     Caravan[i][id] = CreateVehicle(611,x,y,z+1,r,0,0,-1);
  216.     Caravan[i][obj] = CreateObject(3174, 0,0,0-20, 0.0, 0.0, 0.0);
  217.     Caravan[i][type] = 1;
  218.     AttachObjectToVehicle(Caravan[i][obj],Caravan[i][id],0.000000,-1.399999,-0.7,0.000000,0.000000,0.000000); //trailersaml
  219.     return 1;
  220. }
  221.  
  222. stock GoInCaravan(playerid,i)
  223. {
  224.     new Float:x, Float:y, Float:z, Float:r;
  225.     GetPlayerPos(playerid,x,y,z);
  226.     GetPlayerFacingAngle(playerid,r);
  227.     SetPVarFloat(playerid,"Pos_X",x);
  228.     SetPVarFloat(playerid,"Pos_Y",y);
  229.     SetPVarFloat(playerid,"Pos_Z",z);
  230.     SetPVarFloat(playerid,"Pos_R",r);
  231.     SetPlayerPos(playerid,271.884979,306.631988,999.148437);
  232.     SetPlayerInterior(playerid,2);
  233.     SetPlayerVirtualWorld(playerid,i+1);
  234.     return 1;
  235. }
  236.  
  237. stock GetFreeCaravan()
  238. {
  239.     for(new i=0;i<MAX_CARAVANS;i++)
  240.     {
  241.         if(Caravan[i][id]==0)
  242.         {
  243.             return i;
  244.         }
  245.     }
  246.     return -1;
  247. }
  248.  
  249. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  250. {
  251.     new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
  252.     GetObjectPos(objectid, oldX, oldY, oldZ);
  253.     GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  254.     if(!playerobject) // If this is a global object, sync the position for other players
  255.     {
  256.         if(!IsValidObject(objectid)) return 1;
  257.         SetObjectPos(objectid, fX, fY, fZ);
  258.         SetObjectRot(objectid, fRotX, fRotY, fRotZ);
  259.     }
  260.  
  261.     if(response == EDIT_RESPONSE_FINAL)
  262.     {
  263.         if(GetPVarInt(playerid,"Editing")==1)
  264.         {
  265.             new Float:x=GetPVarFloat(playerid,"Obj_x"),
  266.             Float:y=GetPVarFloat(playerid,"Obj_y"),
  267.             Float:z=GetPVarFloat(playerid,"Obj_z");
  268.             if((x+5 > fX && fX > x-5) && (y+5 > fY && fY > y-5) && (z+5 > fZ && fZ > z-5))
  269.             {
  270.                 Caravan[GetPVarInt(playerid,"Obj")][obx]=fX;
  271.                 Caravan[GetPVarInt(playerid,"Obj")][oby]=fY;
  272.                 Caravan[GetPVarInt(playerid,"Obj")][obz]=fZ;
  273.             }
  274.             else
  275.             {
  276.                 new i = GetPVarInt(playerid,"Obj");
  277.                 DestroyObject(Caravan[i][obj]);
  278.                 if(Caravan[i][type]==1)
  279.                 {
  280.                     CreateSmallHodie(i,x,y,z,Caravan[i][carrot]);
  281.                     Caravan[i][build]=0;
  282.                 }
  283.                 if(Caravan[i][type]==2)
  284.                 {
  285.                     CreateBigHoodie(i,x,y,z,Caravan[i][carrot]);
  286.                     Caravan[i][build]=0;
  287.                 }
  288.                 return SendClientMessage(playerid,-1,"Du kannst den wagen nicht so weit vom Ausgangspunkt verschieben!");
  289.             }
  290.         }
  291.     }
  292.  
  293.     if(response == EDIT_RESPONSE_CANCEL)
  294.     {
  295.         //The player cancelled, so put the object back to it's old position
  296.         if(!playerobject) //Object is not a playerobject
  297.         {
  298.             SetObjectPos(objectid, oldX, oldY, oldZ);
  299.             SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  300.         }
  301.         else
  302.         {
  303.             SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
  304.             SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
  305.         }
  306.     }
  307.     return 1;
  308. }
  309.  
  310. public OnFilterScriptInit()
  311. {
  312.     print("\n--------------------------------------");
  313.     print("Caravan by Mogly1 loaded");
  314.     print("--------------------------------------\n");
  315.    
  316.     for(new i=0;i<MAX_CARAVANS;i++)
  317.     {
  318.         Caravan[i][id]=0;
  319.         Caravan[i][obj]=-1;
  320.         Caravan[i][type]=1;
  321.         Caravan[i][obx]=0;
  322.         Caravan[i][oby]=0;
  323.         Caravan[i][obz]=0;
  324.         Caravan[i][carrot]=0;
  325.         Caravan[i][build]=0;
  326.     }
  327.    
  328.     return 1;
  329. }
  330.  
  331. public OnFilterScriptExit()
  332. {
  333.     for(new i=0;i<MAX_CARAVANS;i++)
  334.     {
  335.         if(Caravan[i][id]==0)continue;
  336.         DeleteCaravan(i);
  337.     }
  338.     return 1;
  339. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top