Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define MAX_CARAVANE 20
- enum CaraInfo
- {
- Float:cPosition[3],
- Float:cAngle,
- cCarAttach,
- cObject,
- cProprietaire[MAX_PLAYER_NAME],
- }
- new CaravaneInfo[MAX_CARAVANE][CaraInfo],
- CaravaneAttach[MAX_VEHICLES] = -1,
- nbCaravane;
- native IsValidVehicle(vehicleid);
- public OnFilterScriptInit()
- {
- for(new i = 0; i < MAX_VEHICLES; i++)
- {
- CaravaneAttach[i] = -1;
- }
- return 1;
- }
- stock SpawnCaravane(playerid)
- {
- new nom[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, nom, sizeof(nom));
- for(new i = 0; i < nbCaravane; i++)
- {
- if(strcmp(CaravaneInfo[i][cProprietaire], nom) == 0)
- {
- SetPlayerPos(playerid,CaravaneInfo[nbCaravane][cPosition][0],CaravaneInfo[nbCaravane][cPosition][1],CaravaneInfo[nbCaravane][cPosition][2]);
- return 1;
- }
- }
- return SendClientMessage(playerid,-1,"[Erreur]: Aucune caravane ne vous appartient");
- }
- stock BuyCaravane(id,nom[])
- {
- for(new i = 0; i < nbCaravane; i++)
- {
- if(strcmp(CaravaneInfo[i][cProprietaire], nom) == 0)
- {
- return 1;
- }
- }
- format(CaravaneInfo[id][cProprietaire], MAX_PLAYER_NAME, "%s",nom);
- return 1;
- }
- stock CreateCaravane(Float:positionx,Float:positiony,Float:positionz,Float:positiona)
- {
- if(nbCaravane >= MAX_CARAVANE) return printf("La limite de caravane (%d) a été atteinte.",MAX_CARAVANE);
- CaravaneInfo[nbCaravane][cPosition][0] = positionx;
- CaravaneInfo[nbCaravane][cPosition][1] = positiony;
- CaravaneInfo[nbCaravane][cPosition][2] = positionz;
- CaravaneInfo[nbCaravane][cAngle] = positiona;
- CaravaneInfo[nbCaravane][cCarAttach] = -1;
- format(CaravaneInfo[nbCaravane][cProprietaire], MAX_PLAYER_NAME, "Personne");
- CaravaneInfo[nbCaravane][cObject] = CreateObject(3172,positionx,positiony,positionz,positiona,0.0,0.0);
- nbCaravane++;
- return 1;
- }
- stock LoadCaravane(id)
- {
- /* Code du chargement SQL ou Y_INI comme vous voulez :) */
- printf("[Caravane info]: La caravane id %d à été chargé, elle appartient à %s",id,CaravaneInfo[nbCaravane][cProprietaire]);
- if(CaravaneInfo[nbCaravane][cCarAttach] != -1)
- {
- if(IsValidVehicle(CaravaneInfo[nbCaravane][cCarAttach]))
- {
- CaravaneInfo[nbCaravane][cObject] = CreateObject(3172,0.0,0.0,0.0,0.0,0.0,0.0);
- AttachObjectToVehicle(CaravaneInfo[nbCaravane][cObject], CaravaneInfo[nbCaravane][cCarAttach], 0.0, -7.6, -1.0, 0.0, 0.0, 180);
- CaravaneAttach[CaravaneInfo[nbCaravane][cCarAttach]] = nbCaravane;
- }
- else
- {
- CaravaneInfo[nbCaravane][cCarAttach] = -1;
- CaravaneAttach[CaravaneInfo[nbCaravane][cCarAttach]] = -1;
- }
- }
- nbCaravane++;
- return 1;
- }
- stock AttachCaravane(playerid)
- {
- if(IsPlayerInCaravane(playerid) == -1) return 1;
- if(!IsPlayerInAnyVehicle(playerid)) return 1;
- if(CaravaneAttach[GetPlayerVehicleID(playerid)] != -1) return 1;
- new caravane = IsPlayerInCaravane(playerid);
- new vehicleid = GetPlayerVehicleID(playerid);
- CaravaneAttach[vehicleid] = caravane;
- AttachObjectToVehicle(CaravaneInfo[caravane][cObject],vehicleid, 0.0, -7.5, -0.8, 0.0, 0.0, 180);
- return 1;
- }
- stock DetachCaravane(playerid)
- {
- if(!IsPlayerInAnyVehicle(playerid)) return 1;
- if(CaravaneAttach[GetPlayerVehicleID(playerid)] == -1) return 1;
- new caravane = IsPlayerInCaravane(playerid);
- new vehicleid = GetPlayerVehicleID(playerid);
- new Float:Pos[3],Float:angle;
- GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
- GetVehicleZAngle(vehicleid,angle);
- CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][0] = Pos[0]-7.2;
- CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][1] = Pos[1]-0.8;
- CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][2] = Pos[2];
- CaravaneInfo[CaravaneAttach[vehicleid]][cAngle] = angle-90;
- CaravaneInfo[CaravaneAttach[vehicleid]][cCarAttach] = -1;
- DestroyObject(CaravaneInfo[CaravaneAttach[vehicleid]][cObject]);
- CaravaneInfo[nbCaravane][cObject] = CreateObject(3172,CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][0],CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][1],CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][2],CaravaneInfo[CaravaneAttach[vehicleid]][cAngle],0.0,0.0);
- CaravaneAttach[vehicleid] = -1;
- return 1;
- }
- stock IsPlayerInCaravane(playerid)
- {
- for(new i = 0; i < nbCaravane; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid,7.0,CaravaneInfo[i][cPosition][0],CaravaneInfo[i][cPosition][1],CaravaneInfo[i][cPosition][2]))
- {
- return i;
- }
- }
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment