Guest User

Untitled

a guest
Jun 25th, 2014
901
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3.  
  4. #define MAX_CARAVANE 20
  5.  
  6. enum CaraInfo
  7. {
  8. Float:cPosition[3],
  9. Float:cAngle,
  10.  
  11. cCarAttach,
  12. cObject,
  13.  
  14. cProprietaire[MAX_PLAYER_NAME],
  15. }
  16. new CaravaneInfo[MAX_CARAVANE][CaraInfo],
  17. CaravaneAttach[MAX_VEHICLES] = -1,
  18. nbCaravane;
  19.  
  20.  
  21. native IsValidVehicle(vehicleid);
  22.  
  23. public OnFilterScriptInit()
  24. {
  25. for(new i = 0; i < MAX_VEHICLES; i++)
  26. {
  27. CaravaneAttach[i] = -1;
  28. }
  29. return 1;
  30. }
  31.  
  32.  
  33. stock SpawnCaravane(playerid)
  34. {
  35. new nom[MAX_PLAYER_NAME+1];
  36. GetPlayerName(playerid, nom, sizeof(nom));
  37. for(new i = 0; i < nbCaravane; i++)
  38. {
  39. if(strcmp(CaravaneInfo[i][cProprietaire], nom) == 0)
  40. {
  41. SetPlayerPos(playerid,CaravaneInfo[nbCaravane][cPosition][0],CaravaneInfo[nbCaravane][cPosition][1],CaravaneInfo[nbCaravane][cPosition][2]);
  42. return 1;
  43. }
  44. }
  45. return SendClientMessage(playerid,-1,"[Erreur]: Aucune caravane ne vous appartient");
  46. }
  47.  
  48. stock BuyCaravane(id,nom[])
  49. {
  50. for(new i = 0; i < nbCaravane; i++)
  51. {
  52. if(strcmp(CaravaneInfo[i][cProprietaire], nom) == 0)
  53. {
  54. return 1;
  55. }
  56. }
  57. format(CaravaneInfo[id][cProprietaire], MAX_PLAYER_NAME, "%s",nom);
  58. return 1;
  59. }
  60.  
  61. stock CreateCaravane(Float:positionx,Float:positiony,Float:positionz,Float:positiona)
  62. {
  63. if(nbCaravane >= MAX_CARAVANE) return printf("La limite de caravane (%d) a été atteinte.",MAX_CARAVANE);
  64.  
  65. CaravaneInfo[nbCaravane][cPosition][0] = positionx;
  66. CaravaneInfo[nbCaravane][cPosition][1] = positiony;
  67. CaravaneInfo[nbCaravane][cPosition][2] = positionz;
  68.  
  69. CaravaneInfo[nbCaravane][cAngle] = positiona;
  70. CaravaneInfo[nbCaravane][cCarAttach] = -1;
  71.  
  72. format(CaravaneInfo[nbCaravane][cProprietaire], MAX_PLAYER_NAME, "Personne");
  73.  
  74. CaravaneInfo[nbCaravane][cObject] = CreateObject(3172,positionx,positiony,positionz,positiona,0.0,0.0);
  75.  
  76. nbCaravane++;
  77. return 1;
  78. }
  79.  
  80. stock LoadCaravane(id)
  81. {
  82.  
  83. /* Code du chargement SQL ou Y_INI comme vous voulez :) */
  84.  
  85.  
  86. printf("[Caravane info]: La caravane id %d à été chargé, elle appartient à %s",id,CaravaneInfo[nbCaravane][cProprietaire]);
  87.  
  88. if(CaravaneInfo[nbCaravane][cCarAttach] != -1)
  89. {
  90. if(IsValidVehicle(CaravaneInfo[nbCaravane][cCarAttach]))
  91. {
  92. CaravaneInfo[nbCaravane][cObject] = CreateObject(3172,0.0,0.0,0.0,0.0,0.0,0.0);
  93. AttachObjectToVehicle(CaravaneInfo[nbCaravane][cObject], CaravaneInfo[nbCaravane][cCarAttach], 0.0, -7.6, -1.0, 0.0, 0.0, 180);
  94. CaravaneAttach[CaravaneInfo[nbCaravane][cCarAttach]] = nbCaravane;
  95. }
  96. else
  97. {
  98. CaravaneInfo[nbCaravane][cCarAttach] = -1;
  99. CaravaneAttach[CaravaneInfo[nbCaravane][cCarAttach]] = -1;
  100. }
  101. }
  102.  
  103. nbCaravane++;
  104. return 1;
  105. }
  106.  
  107. stock AttachCaravane(playerid)
  108. {
  109. if(IsPlayerInCaravane(playerid) == -1) return 1;
  110. if(!IsPlayerInAnyVehicle(playerid)) return 1;
  111. if(CaravaneAttach[GetPlayerVehicleID(playerid)] != -1) return 1;
  112.  
  113. new caravane = IsPlayerInCaravane(playerid);
  114. new vehicleid = GetPlayerVehicleID(playerid);
  115.  
  116. CaravaneAttach[vehicleid] = caravane;
  117.  
  118. AttachObjectToVehicle(CaravaneInfo[caravane][cObject],vehicleid, 0.0, -7.5, -0.8, 0.0, 0.0, 180);
  119.  
  120. return 1;
  121. }
  122.  
  123. stock DetachCaravane(playerid)
  124. {
  125. if(!IsPlayerInAnyVehicle(playerid)) return 1;
  126. if(CaravaneAttach[GetPlayerVehicleID(playerid)] == -1) return 1;
  127.  
  128. new caravane = IsPlayerInCaravane(playerid);
  129. new vehicleid = GetPlayerVehicleID(playerid);
  130. new Float:Pos[3],Float:angle;
  131.  
  132. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  133. GetVehicleZAngle(vehicleid,angle);
  134.  
  135. CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][0] = Pos[0]-7.2;
  136. CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][1] = Pos[1]-0.8;
  137. CaravaneInfo[CaravaneAttach[vehicleid]][cPosition][2] = Pos[2];
  138.  
  139. CaravaneInfo[CaravaneAttach[vehicleid]][cAngle] = angle-90;
  140. CaravaneInfo[CaravaneAttach[vehicleid]][cCarAttach] = -1;
  141.  
  142.  
  143. DestroyObject(CaravaneInfo[CaravaneAttach[vehicleid]][cObject]);
  144.  
  145. 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);
  146.  
  147. CaravaneAttach[vehicleid] = -1;
  148. return 1;
  149. }
  150.  
  151. stock IsPlayerInCaravane(playerid)
  152. {
  153. for(new i = 0; i < nbCaravane; i++)
  154. {
  155. if(IsPlayerInRangeOfPoint(playerid,7.0,CaravaneInfo[i][cPosition][0],CaravaneInfo[i][cPosition][1],CaravaneInfo[i][cPosition][2]))
  156. {
  157. return i;
  158. }
  159. }
  160. return -1;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment