Guest User

Bert

a guest
Sep 2nd, 2008
696
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.32 KB | None | 0 0
  1. #include <a_samp>
  2. /*--------------------------------[ Airline Script ]--------------------------------
  3.  
  4. This entire script is made by Bert
  5. Commands, Functions, Everything - Bert
  6. Idea - San Andreas Pilots Server ( [SAP] ), Credits for the Idea go to them!!
  7.  
  8. ---------------------------------------------------------------------------------*/
  9. #define MAX_AIRPORTS 4
  10.  
  11. forward UnBusy(Airportid);
  12. forward TransMittingTakeoff(playerid);
  13. forward TransMittingLand(playerid);
  14. forward UnSOSSent(playerid);
  15. forward TransMittingSOS(playerid);
  16. forward AssignTailNumbers();
  17.  
  18. new IsSOSSent[MAX_PLAYERS];
  19. new Tailnumbers[11][] = {
  20. "CO2-SO",
  21. "CO2-S5",
  22. "H2O-2F",
  23. "H2O-3F",
  24. "NO4-OH",
  25. "NO4-KA",
  26. "H3O-69",
  27. "007-HQ",
  28. "KGB-13",
  29. "SOL-V2",
  30. "BBQ-69"
  31. };
  32. new Float:Airfields[MAX_AIRPORTS][2] = {
  33. {1471.412, 1483.09}, //LV
  34. {1751.681, -2464.032}, //LS
  35. {-1401.345, -233.5575}, //SF
  36. {163.4902, 2499.065} //AA
  37. };
  38. new String[128];
  39. new String2[128];
  40. new VehicleTailNumber[MAX_VEHICLES][2];
  41. new Airport[MAX_PLAYERS];
  42. new AirportNames[MAX_AIRPORTS][] = {
  43. "Las Venturas",
  44. "Los Santos",
  45. "San Fierro",
  46. "Abandoned"
  47. };
  48. new IsBusy[MAX_AIRPORTS];
  49. new IsPilot[MAX_PLAYERS] = 1;
  50.  
  51. public OnFilterScriptInit()
  52. {
  53. print("\n--------------------------------------");
  54. print(" Airtower Control Script by Bert");
  55. print("--------------------------------------\n");
  56.  
  57. AddStaticVehicle(519,1823.0800,-2628.3467,14.4658,1.1075,-1,-1); // LS1
  58. AddStaticVehicle(519,1752.4818,-2624.9763,14.4658,0.1762,-1,-1); // LS2
  59.  
  60. AddStaticVehicle(519,1308.3832,1326.1230,11.7424,271.8051,1,1); // LV1
  61. AddStaticVehicle(519,1308.9734,1361.9771,11.7392,269.6093,1,1); // LV2
  62.  
  63. AddStaticVehicle(519,-1597.7919,-275.8020,15.0705,34.3854,-1,-1); // SF1
  64. AddStaticVehicle(519,-1626.0074,-297.6174,15.0768,0.3330,-1,-1); // SF2
  65.  
  66. AddStaticVehicle(519,215.5439,2542.7646,17.4851,180.8997,-1,-1); // AA1
  67. AddStaticVehicle(519,190.8071,2543.5164,17.4219,176.9432,-1,-1); // AA2
  68.  
  69.  
  70. SetTimer("AssignTailNumbers", 10000, 0);
  71. print("Ten seconds after loading, tailnumbering will start");
  72.  
  73. return 1;
  74. }
  75.  
  76. public OnPlayerCommandText(playerid, cmdtext[])
  77. {
  78. new vehicleid = GetPlayerVehicleID(playerid);
  79. if (strcmp("/pilothelp", cmdtext, true, 10) == 0)
  80. {
  81. SendClientMessage(playerid, 0x33AA33AA, "With this script, you can roleplay you're an onduty pilot!");
  82. SendClientMessage(playerid, 0x33AA33AA, "commands: /land /takeoff /sos /pilotcredits");
  83. return 1;
  84. }
  85. if (strcmp("/pilotcredits", cmdtext, true, 10) == 0)
  86. {
  87. SendClientMessage(playerid, 0x33AA33AA, "Everything, including distance functions, is made by Bert");
  88. SendClientMessage(playerid, 0x33AA33AA, "Idea: [SAP] Server For Pilots scripted by [SAP]Ontario");
  89. return 1;
  90. }
  91. if (strcmp("/sos", cmdtext, true, 10) == 0)
  92. {
  93. SetTimerEx("TransMittingSOS", 5000, 0, "i", playerid);
  94. GameTextForPlayer(playerid, "~g~Transmitting...", 3500, 3);
  95. return 1;
  96. }
  97. if (strcmp("/pilotjob", cmdtext, true, 10) == 0)
  98. {
  99. if(IsPilot[playerid])
  100. {
  101. SendClientMessage(playerid, 0xFFFFFF, "You resigned as a pilot");
  102. IsPilot[playerid] = 0;
  103. }
  104. else
  105. {
  106. SendClientMessage(playerid, 0xFFFFFF, "You are now a pilot!");
  107. IsPilot[playerid] = 1;
  108. }
  109. return 1;
  110. }
  111. if (strcmp("/takeoff", cmdtext, true, 10) == 0)
  112. {
  113. if(IsPilot[playerid])
  114. {
  115. if(IsAirVehicle(vehicleid))
  116. {
  117. Airport[playerid] = GetClosestAirfield(playerid);
  118. SetTimerEx("TransMittingTakeoff", 5000, 0, "i", playerid);
  119. GameTextForPlayer(playerid, "~g~Transmitting...", 3500, 3);
  120. }
  121. else
  122. {
  123. SendClientMessage(playerid, 0xFFFFFF, "You are not in a air vehicle");
  124. }
  125. }
  126. else
  127. {
  128. SendClientMessage(playerid, 0xFFFFFF, "You are not a pilot");
  129. }
  130. return 1;
  131. }
  132. if (strcmp("/land", cmdtext, true, 10) == 0)
  133. {
  134. if(IsPilot[playerid])
  135. {
  136. if(IsAirVehicle(vehicleid))
  137. {
  138. Airport[playerid] = GetClosestAirfield(playerid);
  139. SetTimerEx("TransMittingLand", 5000, 0, "i", playerid);
  140. GameTextForPlayer(playerid, "~g~Transmitting...", 3500, 3);
  141. }
  142. else
  143. {
  144. SendClientMessage(playerid, 0xFFFFFF, "You are not in a air vehicle");
  145. }
  146. }
  147. else
  148. {
  149. SendClientMessage(playerid, 0xFFFFFF, "You are not a pilot");
  150. }
  151. return 1;
  152. }
  153. return 0;
  154. }
  155.  
  156. stock IsAirVehicle(carid)
  157. {
  158. new AirVeh[] = { 592, 577, 511, 512, 593,
  159. 520, 553, 476, 519, 460,
  160. 513, 548, 425, 417, 487,
  161. 488, 497, 563, 447, 469
  162. };
  163. for(new i = 0; i < sizeof(AirVeh); i++)
  164. {
  165. if(GetVehicleModel(carid) == AirVeh[i]) return 1;
  166. }
  167. return 0;
  168. }
  169.  
  170. stock GetClosestAirfield(playerid)
  171. {
  172. new Float:Dist;
  173. new Float:Dist2 = 9999;
  174. new AirfieldNumber;
  175. for(new i = 0; i < 4; i ++)
  176. {
  177. new Float:x, Float:y, Float:z, Float:x1, Float:y1;
  178. GetPlayerPos(playerid, x, y, z);
  179. x1 = x-Airfields[i][0];
  180. y1 = y-Airfields[i][1];
  181. Dist = floatsqroot(x1*x1+y1*y1);
  182. if(Dist < Dist2)
  183. {
  184. Dist2 = Dist;
  185. AirfieldNumber = i;
  186. }
  187. }
  188. return AirfieldNumber;
  189. }
  190.  
  191. public UnBusy(Airportid)
  192. IsBusy[Airportid] = 0;
  193.  
  194. public UnSOSSent(playerid)
  195. IsSOSSent[playerid] = 0;
  196.  
  197. public AssignTailNumbers()
  198. {
  199. for(new i = 0; i< MAX_VEHICLES; i++) SetVehicleToRespawn(i);
  200. print("All airvehicles have been assigned a tailnumber");
  201. }
  202.  
  203. public TransMittingSOS(playerid)
  204. {
  205. new MaxPlayers = GetMaxPlayers(), vehicleid = GetPlayerVehicleID(playerid), Float:x, Float:y, Float:z;
  206. GetPlayerPos(playerid, x, y, z);
  207. if(IsSOSSent[playerid] == 0)
  208. {
  209. for(new i = 0; i < MaxPlayers; i ++)
  210. {
  211. if(IsPilot[i])
  212. {
  213. format(String, 128, "~w~ATC: Flight ~b~'%d-%s' ~w~Sends SOS from: (%.0f, %.0f)", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], x, y);
  214. format(String2, 128, "ATC: Flight '%d-%s' Sends SOS from: (%.0f, %.0f)", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], x, y);
  215. SendClientMessage(i, 0xFFFFFF, String2);
  216. GameTextForPlayer(i, String, 6000, 4);
  217. }
  218. }
  219. IsSOSSent[playerid] = 1;
  220. SetTimerEx("UnSOSSent", 30000, 0, "i", playerid);
  221. }
  222. else
  223. {
  224. SendClientMessage(playerid, 0xFFFFFF, "You can use /sos only once half a minute!");
  225. }
  226. }
  227.  
  228. public TransMittingTakeoff(playerid)
  229. {
  230. new MaxPlayers = GetMaxPlayers();
  231. new vehicleid = GetPlayerVehicleID(playerid);
  232. if(IsBusy[Airport[playerid]] == 0)
  233. {
  234. for(new i = 0; i < MaxPlayers; i ++)
  235. {
  236. if(IsPilot[i])
  237. {
  238. if(i != playerid)
  239. {
  240. format(String, 128, "~w~ATC: Flight ~b~'%d-%s' ~w~is going to takeoff from ~r~%s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  241. format(String2, 128, "ATC: Flight '%d-%s' is going to takeoff from %s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  242. SendClientMessage(i, 0xFFFFFF, String2);
  243. GameTextForPlayer(i, String, 6000, 4);
  244. }
  245. else
  246. {
  247. format(String, 128, "~w~ATC: Flight ~b~'%d-%s' ~w~you are clear to takeoff from ~r~%s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  248. format(String2, 128, "ATC: Flight '%d-%s' you are clear to takeoff from %s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  249. SendClientMessage(i, 0xFFFFFF, String2);
  250. GameTextForPlayer(i, String, 6000, 4);
  251. }
  252. }
  253. }
  254. IsBusy[Airport[playerid]] = 1;
  255. SetTimerEx("UnBusy", 30000, 0, "i", Airport[playerid]);
  256. }
  257. else
  258. {
  259. format(String, 128, "The %s Airport is already busy with an other flight, hold on a minute!", AirportNames[Airport[playerid]]);
  260. format(String2, 128, "~g~The %s Airport is already busy", AirportNames[Airport[playerid]]);
  261. SendClientMessage(playerid, 0xFFFFFF, String);
  262. GameTextForPlayer(playerid, String2, 3000, 3);
  263. }
  264. }
  265.  
  266. public TransMittingLand(playerid)
  267. {
  268. new MaxPlayers = GetMaxPlayers();
  269. new vehicleid = GetPlayerVehicleID(playerid);
  270. if(IsBusy[Airport[playerid]] == 0)
  271. {
  272. for(new i = 0; i < MaxPlayers; i ++)
  273. {
  274. if(IsPilot[i])
  275. {
  276. if(i != playerid)
  277. {
  278. format(String, 128, "~w~ATC: Flight ~b~'%d-%s' ~w~is going to land on ~r~%s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  279. format(String2, 128, "ATC: Flight '%d-%s' is going to land on %s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  280. SendClientMessage(i, 0xFFFFFF, String2);
  281. GameTextForPlayer(i, String, 6000, 4);
  282. }
  283. else
  284. {
  285. format(String, 128, "~w~ATC: Flight ~b~'%d-%s' ~w~you are clear to land on ~r~%s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  286. format(String2, 128, "ATC: Flight '%d-%s' you are clear to land on %s Airport", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]], AirportNames[Airport[playerid]]);
  287. SendClientMessage(i, 0xFFFFFF, String2);
  288. GameTextForPlayer(i, String, 6000, 4);
  289. }
  290. }
  291. IsBusy[Airport[playerid]] = 1;
  292. SetTimerEx("UnBusy", 30000, 0, "i", Airport[playerid]);
  293. }
  294. }
  295. else
  296. {
  297. format(String, 128, "The %s Airport is already busy with an other flight, hold on a minute!", AirportNames[Airport[playerid]]);
  298. format(String2, 128, "~g~The %s Airport is already busy", AirportNames[Airport[playerid]]);
  299. SendClientMessage(playerid, 0xFFFFFF, String);
  300. GameTextForPlayer(playerid, String2, 3000, 4);
  301. }
  302. }
  303.  
  304. public OnVehicleSpawn(vehicleid)
  305. {
  306. if(IsAirVehicle(vehicleid))
  307. {
  308. VehicleTailNumber[vehicleid][0] = random(99);
  309. VehicleTailNumber[vehicleid][1] = random(11);
  310. }
  311. return 1;
  312. }
  313.  
  314. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  315. {
  316. if(IsAirVehicle(vehicleid))
  317. {
  318. format(String, sizeof(String), "Your tailnumber is '%d-%s'", VehicleTailNumber[vehicleid][0], Tailnumbers[VehicleTailNumber[vehicleid][1]]);
  319. SendClientMessage(playerid, 0xFFFFFF, String);
  320. }
  321. return 1;
  322. }
  323.  
  324. // 325 lines! all scripted by moi!
Advertisement
Add Comment
Please, Sign In to add comment