Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <ocmd>
- #include <sscanf2>
- #define MAX_CARAVANS 100
- enum Caravan_Enum
- {
- id,
- obj,
- type,
- Float:obx,
- Float:oby,
- Float:obz,
- Float:carrot,
- build
- };
- new Caravan[MAX_CARAVANS][Caravan_Enum];
- ocmd:trailer(playerid,params[])//Hängt die angegeben Id an das Fahrzeug wo man drinne sitzt
- {
- new trailerid, vehicleid=GetPlayerVehicleID(playerid);
- if(sscanf(params, "d",trailerid)) return SendClientMessage(playerid,-1, "Verwendung: /trailer [Id]");
- if(IsTrailerAttachedToVehicle(vehicleid))
- {
- DetachTrailerFromVehicle(vehicleid);
- }
- else
- {
- AttachTrailerToVehicle(trailerid, vehicleid);
- }
- return 1;
- }
- ocmd:delct(playerid,params[])
- {
- new Float:Pos[3];
- for(new i=0;i<MAX_CARAVANS;i++)
- {
- if(Caravan[i][id]==0)continue;
- if(Caravan[i][build]==0)
- {
- GetVehiclePos(Caravan[i][id],Pos[0],Pos[1],Pos[2]);
- if(IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))
- {
- DeleteCaravan(i);
- }
- }
- else
- {
- if(IsPlayerInRangeOfPoint(playerid,5,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz]))
- {
- DeleteCaravan(i);
- }
- }
- }
- return 1;
- }
- ocmd:ctb(playerid,params[])
- {
- new Float:VehPos[4];
- GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
- GetPlayerFacingAngle(playerid, VehPos[3]);
- new i = GetFreeCaravan();
- if(i == -1)return SendClientMessage(playerid,-1,"Keine Caravans mehr möglich");
- CreateBigHoodie(i,VehPos[0],VehPos[1],VehPos[2],VehPos[3]);
- return 1;
- }
- ocmd:cts(playerid,params[])
- {
- new Float:VehPos[4];
- GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
- GetPlayerFacingAngle(playerid, VehPos[3]);
- new i = GetFreeCaravan();
- if(i == -1)return SendClientMessage(playerid,-1,"Keine Caravans mehr möglich");
- CreateSmallHodie(i,VehPos[0],VehPos[1],VehPos[2],VehPos[3]);
- return 1;
- }
- ocmd:e(playerid,params[])
- {
- new Float:Pos[3];
- if(GetPlayerVirtualWorld(playerid)==0)
- {
- for(new i=0;i<MAX_CARAVANS;i++)
- {
- if(Caravan[i][id]==0)continue;
- if(Caravan[i][build]==0)
- {
- GetVehiclePos(Caravan[i][id],Pos[0],Pos[1],Pos[2]);
- if(IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))
- {
- GoInCaravan(playerid,i);
- }
- }
- else
- {
- if(IsPlayerInRangeOfPoint(playerid,5,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz]))
- {
- GoInCaravan(playerid,i);
- }
- }
- }
- }
- else
- {
- 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))
- {
- SetPlayerPos(playerid,GetPVarFloat(playerid,"Pos_X"),GetPVarFloat(playerid,"Pos_Y"),GetPVarFloat(playerid,"Pos_Z"));
- SetPlayerFacingAngle(playerid,GetPVarFloat(playerid,"Pos_R"));
- SetPlayerVirtualWorld(playerid,0);
- SetPlayerInterior(playerid,0);
- SetPVarFloat(playerid,"Pos_X",0);
- SetPVarFloat(playerid,"Pos_Y",0);
- SetPVarFloat(playerid,"Pos_Z",0);
- SetPVarFloat(playerid,"Pos_R",0);
- }
- }
- return 1;
- }
- ocmd:build(playerid,params[])
- {
- new Float:Pos[3];
- for(new i=0;i<MAX_CARAVANS;i++)
- {
- if(Caravan[i][id]==0)continue;
- if(Caravan[i][build]==0)
- {
- GetVehiclePos(Caravan[i][id],Pos[0],Pos[1],Pos[2]);
- if(IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))
- {
- new Float:rot;
- GetVehicleZAngle(Caravan[i][id],rot);
- DestroyObject(Caravan[i][obj]);
- DestroyVehicle(Caravan[i][id]);
- new objectid;
- if(Caravan[i][type]==1)
- {
- objectid=3174;
- }
- else if(Caravan[i][type]==2)
- {
- objectid=3175;
- }
- else
- {
- return SendClientMessage(playerid,-1,"Error: fehler beim erstellen des Caravans");
- }
- Caravan[i][obj]=CreateObject(objectid, Pos[0],Pos[1],Pos[2], 0.0, 0.0, 0.0);
- EditObject(playerid, Caravan[i][obj]);
- Caravan[i][build]=1;
- Caravan[i][carrot]=rot;
- SetPVarInt(playerid,"Editing",1);
- SetPVarInt(playerid,"Obj",i);
- SetPVarFloat(playerid,"Obj_x",Pos[0]);
- SetPVarFloat(playerid,"Obj_y",Pos[1]);
- SetPVarFloat(playerid,"Obj_z",Pos[2]);
- break;
- }
- }
- else
- {
- if(IsPlayerInRangeOfPoint(playerid,5,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz]))
- {
- DestroyObject(Caravan[i][obj]);
- Caravan[i][build]=0;
- if(Caravan[i][type]==1)
- {
- CreateSmallHodie(i,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz],Caravan[i][carrot]);
- }
- if(Caravan[i][type]==2)
- {
- CreateBigHoodie(i,Caravan[i][obx],Caravan[i][oby],Caravan[i][obz],Caravan[i][carrot]);
- }
- break;
- }
- }
- }
- return 1;
- }
- stock DeleteCaravan(i)
- {
- DestroyObject(Caravan[i][obj]);
- if(Caravan[i][build]==0)
- {
- DestroyVehicle(Caravan[i][id]);
- }
- Caravan[i][id]=0;
- Caravan[i][obj]=-1;
- Caravan[i][type]=1;
- Caravan[i][obx]=0;
- Caravan[i][oby]=0;
- Caravan[i][obz]=0;
- Caravan[i][carrot]=0;
- Caravan[i][build]=0;
- return 1;
- }
- stock CreateBigHoodie(i,Float:x,Float:y,Float:z,Float:r)
- {
- Caravan[i][id] = CreateVehicle(611,x,y,z+1,r,0,0,-1);
- Caravan[i][obj] = CreateObject(3175, 0,0,0-20, 0.0, 0.0, 0.0);
- Caravan[i][type] = 2;
- AttachObjectToVehicle(Caravan[i][obj],Caravan[i][id],0.000000,-2.5,-0.8,0.00000,0.000000,0.000000); //Trailer
- return 1;
- }
- stock CreateSmallHodie(i,Float:x,Float:y,Float:z,Float:r)
- {
- Caravan[i][id] = CreateVehicle(611,x,y,z+1,r,0,0,-1);
- Caravan[i][obj] = CreateObject(3174, 0,0,0-20, 0.0, 0.0, 0.0);
- Caravan[i][type] = 1;
- AttachObjectToVehicle(Caravan[i][obj],Caravan[i][id],0.000000,-1.399999,-0.7,0.000000,0.000000,0.000000); //trailersaml
- return 1;
- }
- stock GoInCaravan(playerid,i)
- {
- new Float:x, Float:y, Float:z, Float:r;
- GetPlayerPos(playerid,x,y,z);
- GetPlayerFacingAngle(playerid,r);
- SetPVarFloat(playerid,"Pos_X",x);
- SetPVarFloat(playerid,"Pos_Y",y);
- SetPVarFloat(playerid,"Pos_Z",z);
- SetPVarFloat(playerid,"Pos_R",r);
- SetPlayerPos(playerid,271.884979,306.631988,999.148437);
- SetPlayerInterior(playerid,2);
- SetPlayerVirtualWorld(playerid,i+1);
- return 1;
- }
- stock GetFreeCaravan()
- {
- for(new i=0;i<MAX_CARAVANS;i++)
- {
- if(Caravan[i][id]==0)
- {
- return i;
- }
- }
- return -1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
- GetObjectPos(objectid, oldX, oldY, oldZ);
- GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
- if(!playerobject) // If this is a global object, sync the position for other players
- {
- if(!IsValidObject(objectid)) return 1;
- SetObjectPos(objectid, fX, fY, fZ);
- SetObjectRot(objectid, fRotX, fRotY, fRotZ);
- }
- if(response == EDIT_RESPONSE_FINAL)
- {
- if(GetPVarInt(playerid,"Editing")==1)
- {
- new Float:x=GetPVarFloat(playerid,"Obj_x"),
- Float:y=GetPVarFloat(playerid,"Obj_y"),
- Float:z=GetPVarFloat(playerid,"Obj_z");
- if((x+5 > fX && fX > x-5) && (y+5 > fY && fY > y-5) && (z+5 > fZ && fZ > z-5))
- {
- Caravan[GetPVarInt(playerid,"Obj")][obx]=fX;
- Caravan[GetPVarInt(playerid,"Obj")][oby]=fY;
- Caravan[GetPVarInt(playerid,"Obj")][obz]=fZ;
- }
- else
- {
- new i = GetPVarInt(playerid,"Obj");
- DestroyObject(Caravan[i][obj]);
- if(Caravan[i][type]==1)
- {
- CreateSmallHodie(i,x,y,z,Caravan[i][carrot]);
- Caravan[i][build]=0;
- }
- if(Caravan[i][type]==2)
- {
- CreateBigHoodie(i,x,y,z,Caravan[i][carrot]);
- Caravan[i][build]=0;
- }
- return SendClientMessage(playerid,-1,"Du kannst den wagen nicht so weit vom Ausgangspunkt verschieben!");
- }
- }
- }
- if(response == EDIT_RESPONSE_CANCEL)
- {
- //The player cancelled, so put the object back to it's old position
- if(!playerobject) //Object is not a playerobject
- {
- SetObjectPos(objectid, oldX, oldY, oldZ);
- SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
- }
- else
- {
- SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
- SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
- }
- }
- return 1;
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Caravan by Mogly1 loaded");
- print("--------------------------------------\n");
- for(new i=0;i<MAX_CARAVANS;i++)
- {
- Caravan[i][id]=0;
- Caravan[i][obj]=-1;
- Caravan[i][type]=1;
- Caravan[i][obx]=0;
- Caravan[i][oby]=0;
- Caravan[i][obz]=0;
- Caravan[i][carrot]=0;
- Caravan[i][build]=0;
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i=0;i<MAX_CARAVANS;i++)
- {
- if(Caravan[i][id]==0)continue;
- DeleteCaravan(i);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement