Guest User

Autohaus

a guest
Oct 1st, 2011
751
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.65 KB | None | 0 0
  1. //Autohaus von D4ywalker. Bitte Creadits drine lassen, sieht ja keiner ;)
  2.  
  3.  
  4. #include <a_samp>
  5.  
  6. #define MAX_CARS_AT_SHOP 30 //Hier schreiben, wieviele Wagen es im Shop MAXIMAL geben
  7.  
  8. new Float:carspawn[4],Float:bpcoords[3],csPickup,LoadedVehicles=-1,VehicleDoorStatus[MAX_VEHICLES],ReviewingVehicleID[MAX_PLAYERS]={-1,...},ShowingVehicle[MAX_PLAYERS]={-1,...};
  9.  
  10. new VehicleName[212][] = {
  11. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana",
  12. "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat",
  13. "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife",
  14. "Trailer 1", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo",
  15. "Seasparrow", "Pizzaboy", "Tram", "Trailer 2", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
  16. "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic", "Sanchez", "Sparrow",
  17. "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX", "Burrito",
  18. "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring",
  19. "Sandking", "Blista Compact", "Police Maverick", "Boxvillde", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B",
  20. "Bloodring Banger", "Rancher", "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster","Stunt", "Tanker",
  21. "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
  22. "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan", "Blade", "Freight", "Streak",
  23. "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck LA", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit",
  24. "Utility", "Nevada", "Yosemite", "Windsor", "Monster A", "Monster B", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance",
  25. "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway",
  26. "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer 3", "Emperor", "Wayfarer", "Euros", "Hotdog",
  27. "Club", "Freight Carriage", "Trailer 4", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)",
  28. "Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer A",
  29. "Luggage Trailer B", "Stairs", "Boxville", "Tiller", "Utility Trailer" };
  30.  
  31. enum e_PlayerVehicle
  32. {
  33. pvID,
  34. pvModel,
  35. Float:pvX,
  36. Float:pvY,
  37. Float:pvZ,
  38. Float:pvA,
  39. pvColor1,
  40. pvColor2,
  41. pvPaintjob,
  42. pvModSlot[14]
  43. }
  44. new PlayerVehicle[MAX_PLAYERS][2][e_PlayerVehicle];
  45.  
  46. enum e_ShopVehicle
  47. {
  48. svModel,
  49. svCost
  50. }
  51. new ShopVehicle[MAX_CARS_AT_SHOP][e_ShopVehicle];
  52.  
  53. enum e_VehicleReviewData
  54. {
  55. Float:vrVehiclePos[4],
  56. Float:vrCameraPos[3]
  57. }
  58. new VehicleReviewData[e_VehicleReviewData];
  59.  
  60. public OnFilterScriptInit()
  61. {
  62. //LOADING SHOP PICKUP AND CAR SPAWN COORDINATES
  63. new File:csfile,readline[256],bpModel;
  64. if(!fexist("carshop.cfg")) { //Die PickupID beim Shop, die Pickup Positionen und die Spawnpositionen vom Wagen, die der Spieler neulich gekauft hat
  65. csfile=fopen("carshop.cfg",io_write);
  66. fwrite(csfile,"shopPickup=1210\r\nbuyposX=0.0\r\nbuyposY=0.0\r\nbuyposZ=0.0\r\ncarspawnX=0.0\r\ncarspawnY=0.0\r\ncarspawnZ=0.0\r\ncarspawnA=0.0");
  67. fclose(csfile); }
  68. else {
  69. csfile=fopen("carshop.cfg",io_read);
  70. while(fread(csfile,readline)) {
  71. if(!strcmp(readline,"shopPickup=",true,11)) { bpModel=strval(strpart(readline,1,'=')); }
  72. else if(!strcmp(readline,"buyposX=",true,8)) { bpcoords[0]=floatstr(strpart(readline,1,'=')); }
  73. else if(!strcmp(readline,"buyposY=",true,8)) { bpcoords[1]=floatstr(strpart(readline,1,'=')); }
  74. else if(!strcmp(readline,"buyposZ=",true,8)) { bpcoords[2]=floatstr(strpart(readline,1,'=')); csPickup=CreatePickup(bpModel,2,bpcoords[0],bpcoords[1],bpcoords[2]); }
  75. else if(!strcmp(readline,"carspawnX=",true,10)) { carspawn[0]=floatstr(strpart(readline,1,'=')); }
  76. else if(!strcmp(readline,"carspawnY=",true,10)) { carspawn[1]=floatstr(strpart(readline,1,'=')); }
  77. else if(!strcmp(readline,"carspawnZ=",true,10)) { carspawn[2]=floatstr(strpart(readline,1,'=')); }
  78. else if(!strcmp(readline,"carspawnA=",true,10)) { carspawn[3]=floatstr(strpart(readline,1,'=')); } }
  79. fclose(csfile); }
  80.  
  81. if(!fexist("carshopreview.cfg")) { //falls "carshopreview.cfg" nicht existiert, werden die standart Review positionen genommen. Keine sorge, es ist an einem sehr schönen, sogar perfekten platz ;)
  82. VehicleReviewData[vrVehiclePos][0]=1937.6018;
  83. VehicleReviewData[vrVehiclePos][1]=1628.1865;
  84. VehicleReviewData[vrVehiclePos][2]=72.2850;
  85. VehicleReviewData[vrVehiclePos][3]=299.3142;
  86. VehicleReviewData[vrCameraPos][0]=1945.2854;
  87. VehicleReviewData[vrCameraPos][1]=1630.0295;
  88. VehicleReviewData[vrCameraPos][2]=75.5296;
  89. csfile=fopen("carshopreview.cfg",io_write);
  90. format(readline,sizeof(readline),"carPosAtReviewX=%f\r\ncarPosAtReviewY=%f\r\ncarPosAtReviewZ=%f\r\ncarPosAtReviewA=%f\r\ncamPosAtReviewX=%f\r\ncamPosAtReviewY=%f\r\ncamPosAtReviewZ=%f",VehicleReviewData[vrVehiclePos][0],VehicleReviewData[vrVehiclePos][1],VehicleReviewData[vrVehiclePos][2],VehicleReviewData[vrVehiclePos][3],VehicleReviewData[vrCameraPos][0],VehicleReviewData[vrCameraPos][1],VehicleReviewData[vrCameraPos][2]);
  91. fwrite(csfile,readline),fclose(csfile); }
  92. else {
  93. csfile=fopen("carshopreview.cfg",io_read);
  94. while(fread(csfile,readline)) {
  95. if(!strcmp(readline,"carPosAtReviewX=",true,16)) { VehicleReviewData[vrVehiclePos][0]=floatstr(strpart(readline,1,'=')); }
  96. else if(!strcmp(readline,"carPosAtReviewY=",true,16)) { VehicleReviewData[vrVehiclePos][1]=floatstr(strpart(readline,1,'=')); }
  97. else if(!strcmp(readline,"carPosAtReviewZ=",true,16)) { VehicleReviewData[vrVehiclePos][2]=floatstr(strpart(readline,1,'=')); }
  98. else if(!strcmp(readline,"carPosAtReviewA=",true,16)) { VehicleReviewData[vrVehiclePos][3]=floatstr(strpart(readline,1,'=')); }
  99. else if(!strcmp(readline,"camPosAtReviewX=",true,16)) { VehicleReviewData[vrCameraPos][0]=floatstr(strpart(readline,1,'=')); }
  100. else if(!strcmp(readline,"camPosAtReviewY=",true,16)) { VehicleReviewData[vrCameraPos][1]=floatstr(strpart(readline,1,'=')); }
  101. else if(!strcmp(readline,"camPosAtReviewZ=",true,16)) { VehicleReviewData[vrCameraPos][2]=floatstr(strpart(readline,1,'=')); } }
  102. fclose(csfile); }
  103.  
  104. if(!fexist("shopcars.cfg")) { //shopcars.cfg enthaltet die Wagen-ID's und Kosten, die im Shop verkauft werden.
  105. csfile=fopen("shopcars.cfg",io_write);
  106. fwrite(csfile,"--> Bitte schreibe hier die Wagen-id's und Kosten der Wagen, die verkauft werden sollen.\r\n--> In dieser Form:\r\n--> \"AUTOMODELLID KOSTEN\"");
  107. print("--> Bitte schreibe in scriptfiles/shopcars.cfg die Wagen-id's und Kosten der Wagen, die verkauft werden sollen.\r\n--> In dieser Form:\r\n--> \"AUTOMODELLID KOSTEN\"");
  108. fclose(csfile); }
  109. else {
  110. csfile=fopen("shopcars.cfg",io_read);
  111. for(new i=0;fread(csfile,readline);i++) {
  112. if(!strcmp(readline,"-->")) { print("--> Bitte schreibe in scriptfiles/shopcars.cfg die Wagen-id's und Kosten der Wagen, die verkauft werden sollen.\r\n--> In dieser Form:\r\n--> \"AUTOMODELLID KOSTEN\""); break; }
  113. ShopVehicle[i][svModel]=strval(strpart(readline,0)); ShopVehicle[i][svCost]=strval(strpart(readline,1));
  114. LoadedVehicles++; }
  115. fclose(csfile); }
  116.  
  117.  
  118. print("\r\n------------------------");
  119. print(" Dynamic Car-Shop Loaded!");
  120. print("--------------------------\r\n");
  121. return 1;
  122. }
  123.  
  124. public OnFilterScriptExit()
  125. {
  126. DestroyPickup(csPickup);
  127. return 1;
  128. }
  129.  
  130. public OnPlayerConnect(playerid)
  131. {
  132. LoadPlayerVehicle(playerid);
  133. return 1;
  134. }
  135.  
  136. public OnPlayerDisconnect(playerid, reason)
  137. {
  138. new readline[MAX_PLAYER_NAME];
  139. GetPlayerName(playerid,readline,sizeof(readline));
  140. format(readline,sizeof(readline),"PlayerVehicles/%s.car",readline);
  141. if(fexist(readline)) {
  142. DestroyVehicle(PlayerVehicle[playerid][0][pvID]);
  143. DestroyVehicle(PlayerVehicle[playerid][1][pvID]);
  144. SavePlayerVehicle(playerid); }
  145. if(ShowingVehicle[playerid]>-1) {
  146. SetPlayerVirtualWorld(playerid,0);
  147. DestroyVehicle(ReviewingVehicleID[playerid]);
  148. ReviewingVehicleID[playerid]=-1;
  149. ShowingVehicle[playerid]=-1; }
  150. return 1;
  151. }
  152.  
  153. public OnVehicleSpawn(vehicleid)
  154. {
  155. return 1;
  156. }
  157.  
  158. public OnPlayerCommandText(playerid, cmdtext[])
  159. {
  160. if(!strcmp(cmdtext,"/car",true,4))
  161. {
  162. new pChoise[5];
  163. strpack(pChoise,strpart(cmdtext,1));
  164. if(!strlen(pChoise))
  165. {
  166. SendClientMessage(playerid,0xFF6347AA,"BENUTZUNG: {FFFFFF}/car [aktion]");
  167. SendClientMessage(playerid,0xFF6347AA,"AKTIONEN:");
  168. SendClientMessage(playerid,0xFF6347AA,"'lock': {FFFFFF}Fahrzeug ab- und aufschließen.");
  169. SendClientMessage(playerid,0xFF6347AA,"'park': {FFFFFF}Fahrzeug parken.");
  170. SendClientMessage(playerid,0xFF6347AA,"'sell': {FFFFFF}Fahrzeug verkaufen.");
  171. return 1;
  172. }
  173. if(!strcmp(pChoise,"lock",true))
  174. {
  175. new vehtolock=0;
  176. if(!IsPlayerNearVehicle(playerid,PlayerVehicle[playerid][0][pvID],2.0) && !IsPlayerNearVehicle(playerid,PlayerVehicle[playerid][1][pvID],2.0)) { return SendClientMessage(playerid,0xFFFFFFFF,"Du bist nicht bei deinem Fahrzeug!"); }
  177. if(!IsPlayerNearVehicle(playerid,PlayerVehicle[playerid][0][pvID],2.0)) { vehtolock=1; }
  178. if(!VehicleDoorStatus[PlayerVehicle[playerid][vehtolock][pvID]]) { //falls der Wagen aufgeschlossen ist...:
  179. VehicleDoorStatus[PlayerVehicle[playerid][vehtolock][pvID]]=1;
  180. GameTextForPlayer(playerid,"~r~abgeschlossen",3000,6); }
  181. else { //...andernfalls...:
  182. VehicleDoorStatus[PlayerVehicle[playerid][vehtolock][pvID]]=0;
  183. GameTextForPlayer(playerid,"~g~aufgeschlossen",3000,6); }
  184. SetVehicleParamsForAll(PlayerVehicle[playerid][vehtolock][pvID],0,VehicleDoorStatus[PlayerVehicle[playerid][vehtolock][pvID]]);
  185. return 1;
  186. }
  187. if(!strcmp(pChoise,"sell",true))
  188. {
  189. new vehtosell,str[4],pName[MAX_PLAYER_NAME],string[64],i,File:csfile;
  190. if(!IsPlayerInRangeOfPoint(playerid,7.0,bpcoords[0],bpcoords[1],bpcoords[2]) || (!IsPlayerInVehicle(playerid,PlayerVehicle[playerid][0][pvID]) && !IsPlayerInVehicle(playerid,PlayerVehicle[playerid][1][pvID]))) { return SendClientMessage(playerid,0xFFFFFFFF,"Bitte steige in dein Wagen, fahre nahe dem Kaufpickup und tippe '/car sell'!"); }
  191. if(!IsPlayerInVehicle(playerid,PlayerVehicle[playerid][0][pvID])) { vehtosell=1; }
  192. PlayerVehicle[playerid][vehtosell][pvModel]=0;
  193. PlayerVehicle[playerid][vehtosell][pvX]=0.0;
  194. PlayerVehicle[playerid][vehtosell][pvY]=0.0;
  195. PlayerVehicle[playerid][vehtosell][pvZ]=0.0;
  196. PlayerVehicle[playerid][vehtosell][pvA]=0.0;
  197. PlayerVehicle[playerid][vehtosell][pvColor1]=0;
  198. PlayerVehicle[playerid][vehtosell][pvColor2]=0;
  199. PlayerVehicle[playerid][vehtosell][pvPaintjob]=0;
  200. for(i=0;i<13;i++) {
  201. PlayerVehicle[playerid][vehtosell][pvModSlot][i]=0; }
  202. SetPlayerPos(playerid,carspawn[0],carspawn[1],carspawn[2]);
  203. DestroyVehicle(PlayerVehicle[playerid][vehtosell][pvID]);
  204. PlayerVehicle[playerid][vehtosell][pvID]=0;
  205. format(str,4,"[%d",vehtosell);
  206. GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
  207. format(string,sizeof(string),"PlayerVehicles/%s.car",pName);
  208. csfile=fopen(string,io_read);
  209. for(i=0; fread(csfile,string); i++) { if(!strcmp(string,str,false,2)) { break; } }
  210. fclose(csfile);
  211. format(string,sizeof(string),"PlayerVehicles/%s.car",pName);
  212. fremoveline(string,i);
  213. csfile=fopen(string,io_read);
  214. fread(csfile,string),fclose(csfile);
  215. if(!strlen(string)) { format(string,sizeof(string),"PlayerVehicles/%s.car",pName); fremove(string); }
  216. for(i=0;i<MAX_CARS_AT_SHOP;i++) { if(ShopVehicle[i][svModel]==PlayerVehicle[playerid][vehtosell][pvModel]) break; }
  217. GivePlayerMoney(playerid,ShopVehicle[i][svCost]/2);
  218. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Du hast deinen Wagen zurück verkauft und hast die hälfte des Fahrzeugkosten zurück erhalten.");
  219. return 1;
  220. }
  221. if(!strcmp(pChoise,"park",true))
  222. {
  223. new vehtopark;
  224. if(!IsPlayerInVehicle(playerid,PlayerVehicle[playerid][0][pvID]) && !IsPlayerInVehicle(playerid,PlayerVehicle[playerid][1][pvID])) { return SendClientMessage(playerid,0xFFFFFFFF,"Bitte steige in dein Wagen, fahre nahe dem Kaufpickup und tippe '/car sell'!"); }
  225. if(!IsPlayerInVehicle(playerid,PlayerVehicle[playerid][0][pvID])) { vehtopark=1; }
  226. GetVehiclePos(PlayerVehicle[playerid][0][pvID],PlayerVehicle[playerid][vehtopark][pvX],PlayerVehicle[playerid][vehtopark][pvY],PlayerVehicle[playerid][vehtopark][pvZ]);
  227. GetVehicleZAngle(PlayerVehicle[playerid][0][pvID],PlayerVehicle[playerid][vehtopark][pvA]);
  228. SendClientMessage(playerid,0x9EC73D,"INFO: {FFFFFF}Dein Fahrzeug wurde hier {FF6347}erfolgreich {FFFFFF}geparkt!");
  229. SavePlayerVehicle(playerid);
  230. SendClientMessage(playerid,0x9EC73D,"INFO: {FFFFFF}Du kannst dein Fahrzeug nun wenn du dich einloggst, immer {33CCFF}hier {FFFFFF}finden!");
  231. return 1;
  232. }
  233. return 1;
  234. }
  235. return 0;
  236. }
  237.  
  238. public OnPlayerPickUpPickup(playerid, pickupid)
  239. {
  240. new string[64];
  241. if(pickupid==csPickup)
  242. {
  243. if(PlayerVehicle[playerid][0][pvModel] && PlayerVehicle[playerid][1][pvModel]) { return SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Du besitzt bereits 2 wagen! Du musst erst einen verkaufen, wenn du einen anderen kaufen willst."); }
  244. SetPlayerVirtualWorld(playerid,playerid); //jeder Spieler hat die Virtuelle welt von seiner spielerid. so hat jeder seine eigene virtuelle welt, und so gibt es auch kein Weg dass 2 spieler sich treffen, während sie wagen auswählen =)
  245. TogglePlayerControllable(playerid,0);
  246. SetPlayerPos(playerid,VehicleReviewData[vrVehiclePos][0],VehicleReviewData[vrVehiclePos][1],(VehicleReviewData[vrVehiclePos][2]-5));
  247. SetPlayerCameraPos(playerid,VehicleReviewData[vrCameraPos][0],VehicleReviewData[vrCameraPos][1],VehicleReviewData[vrCameraPos][2]);
  248. SetPlayerCameraLookAt(playerid,VehicleReviewData[vrVehiclePos][0],VehicleReviewData[vrVehiclePos][1],VehicleReviewData[vrVehiclePos][2]);
  249.  
  250. ShowingVehicle[playerid]=0;
  251. ReviewingVehicleID[playerid]=CreateVehicle(ShopVehicle[0][svModel],VehicleReviewData[vrVehiclePos][0],VehicleReviewData[vrVehiclePos][1],VehicleReviewData[vrVehiclePos][2],VehicleReviewData[vrVehiclePos][3],-1,-1,60);
  252. SetVehicleParamsForAll(ReviewingVehicleID[playerid],1,1);
  253. SetVehicleVirtualWorld(ReviewingVehicleID[playerid],playerid);
  254. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Benutze Maustaste Rechts & Links um dir die Wagen anzusehen.");
  255. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Benutze Enter/F um zu verlassen, ohne was zu kaufen.");
  256. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Benutze die Leertaste (Space), um das Fahrzeug zu kaufen, die du dir ansiehst.");
  257. format(string,sizeof(string),"~w~%s~n~~g~$%d",VehicleName[ShopVehicle[0][svModel]-400],ShopVehicle[0][svCost]);
  258. GameTextForPlayer(playerid,string,30000,4);
  259. }
  260. return 1;
  261. }
  262.  
  263. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  264. {
  265. new string[64];
  266. if(ShowingVehicle[playerid]>-1)
  267. {
  268. if((newkeys == KEY_FIRE) || (newkeys == KEY_HANDBRAKE)) //Vorheriger Fahrzeug / Nächster Fahrzeug
  269. {
  270. if(newkeys==KEY_FIRE) {
  271. ShowingVehicle[playerid]--;
  272. if(ShowingVehicle[playerid]<0) { ShowingVehicle[playerid]=LoadedVehicles; } }
  273. else if(newkeys==KEY_HANDBRAKE) {
  274. ShowingVehicle[playerid]++;
  275. if(ShowingVehicle[playerid]>LoadedVehicles) { ShowingVehicle[playerid]=0; } }
  276. DestroyVehicle(ReviewingVehicleID[playerid]);
  277. ReviewingVehicleID[playerid]=CreateVehicle(ShopVehicle[ShowingVehicle[playerid]][svModel],VehicleReviewData[vrVehiclePos][0],VehicleReviewData[vrVehiclePos][1],VehicleReviewData[vrVehiclePos][2],VehicleReviewData[vrVehiclePos][3],-1,-1,60);
  278. SetVehicleParamsForAll(ReviewingVehicleID[playerid],1,1);
  279. SetVehicleVirtualWorld(ReviewingVehicleID[playerid],playerid);
  280. format(string,sizeof(string),"~w~%s~n~~g~$%d",VehicleName[ShopVehicle[ShowingVehicle[playerid]][svModel]-400],ShopVehicle[ShowingVehicle[playerid]][svCost]);
  281. GameTextForPlayer(playerid,string,30000,4);
  282. return 1;
  283. }
  284. if(newkeys & KEY_SPRINT) //Kaufen
  285. {
  286. if(ShopVehicle[ShowingVehicle[playerid]][svCost]>GetPlayerMoney(playerid)) { return SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Du kannst dir diesen Wagen nicht leisten..."),SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Kein problem, schau weiter, wir haben eventuell noch billigere Modelle zu bieten, die du dir leisten kannst!"); }
  287. new pbvn=0;
  288. DestroyVehicle(ReviewingVehicleID[playerid]);
  289. ReviewingVehicleID[playerid]=-1;
  290. if(PlayerVehicle[playerid][0][pvModel]) { pbvn=1; }
  291. PlayerVehicle[playerid][pbvn][pvModel]=ShopVehicle[ShowingVehicle[playerid]][svModel];
  292. PlayerVehicle[playerid][pbvn][pvX]=carspawn[0];
  293. PlayerVehicle[playerid][pbvn][pvY]=carspawn[1];
  294. PlayerVehicle[playerid][pbvn][pvZ]=carspawn[2];
  295. PlayerVehicle[playerid][pbvn][pvA]=carspawn[3];
  296. PlayerVehicle[playerid][pbvn][pvColor1]=-1;
  297. PlayerVehicle[playerid][pbvn][pvColor2]=-1;
  298. PlayerVehicle[playerid][pbvn][pvPaintjob]=3;
  299. for(new i=0;i<14;i++) {
  300. PlayerVehicle[playerid][pbvn][pvModSlot][i]=-1; }
  301. GivePlayerMoney(playerid,-ShopVehicle[ShowingVehicle[playerid]][svCost]);
  302. SavePlayerVehicle(playerid);
  303. PlayerVehicle[playerid][pbvn][pvID]=CreateVehicle(PlayerVehicle[playerid][pbvn][pvModel],carspawn[0],carspawn[1],carspawn[2],carspawn[3],-1,-1,600000);
  304. SetVehicleParamsForAll(PlayerVehicle[playerid][pbvn][pvID],0,1);
  305. VehicleDoorStatus[PlayerVehicle[playerid][pbvn][pvID]]=1;
  306. SetPlayerVirtualWorld(playerid,0);
  307. SetPlayerPos(playerid,carspawn[0],carspawn[1],carspawn[2]+5);
  308. TogglePlayerControllable(playerid,1);
  309. GameTextForPlayer(playerid," ",1000,4);
  310. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Glückwunsch, du hast einen neuen Wagen gekauft!");
  311. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Benutze '/car' um alle Befehle für deinen Wagen zu sehen.");
  312. SendClientMessage(playerid,0x33CCFF,"AUTOHAUS: {FFFFFF}Dein Fahrzeug ist erstmal abgeschlossen, damit kein anderer vor dir einsteigt, benutze '/car lock' um es aufzuschließen.");
  313. SetCameraBehindPlayer(playerid);
  314. ShowingVehicle[playerid]=-1;
  315. return 1;
  316. }
  317. if(newkeys & KEY_SECONDARY_ATTACK) //Verlassen ohne etwas zu kaufen
  318. {
  319. SetPlayerPos(playerid,carspawn[0],carspawn[1],carspawn[2]);
  320. SetPlayerVirtualWorld(playerid,0);
  321. TogglePlayerControllable(playerid,1);
  322. SetCameraBehindPlayer(playerid);
  323. GameTextForPlayer(playerid," ",1000,4);
  324. DestroyVehicle(ReviewingVehicleID[playerid]);
  325. ReviewingVehicleID[playerid]=-1;
  326. ShowingVehicle[playerid]=-1;
  327. return 1;
  328. }
  329. }
  330. return 1;
  331. }
  332.  
  333. public OnPlayerUpdate(playerid)
  334. {
  335. return 1;
  336. }
  337.  
  338. public OnVehicleStreamIn(vehicleid, forplayerid)
  339. {
  340. for(new i,pcnt=GetMaxPlayers();i<pcnt;i++) {
  341. if(IsPlayerConnected(i)) {
  342. for(new x;x<2;x++) {
  343. if(PlayerVehicle[i][x][pvID]==vehicleid) {
  344. SetVehicleParamsForPlayer(vehicleid,forplayerid,0,VehicleDoorStatus[vehicleid]); } } } }
  345. return 1;
  346. }
  347.  
  348. /**********************************************************************************************
  349. **********************************************************************************************/
  350.  
  351. stock LoadPlayerVehicle(playerid) {
  352. new readline[256];
  353. GetPlayerName(playerid,readline,MAX_PLAYER_NAME);
  354. format(readline,sizeof(readline),"PlayerVehicles/%s.car",readline);
  355. if(fexist(readline)) {
  356. new File:csfile=fopen(readline,io_read);
  357. while(fread(csfile,readline)) {
  358. new lpvid;
  359. if(!strcmp(readline,"[0",false,2)) { lpvid=0; }
  360. else if(!strcmp(readline,"[1",false,2)) { lpvid=1; }
  361. PlayerVehicle[playerid][lpvid][pvModel]=strval(strpart(readline,1));
  362. PlayerVehicle[playerid][lpvid][pvX]=floatstr(strpart(readline,2));
  363. PlayerVehicle[playerid][lpvid][pvY]=floatstr(strpart(readline,3));
  364. PlayerVehicle[playerid][lpvid][pvZ]=floatstr(strpart(readline,4));
  365. PlayerVehicle[playerid][lpvid][pvA]=floatstr(strpart(readline,5));
  366. PlayerVehicle[playerid][lpvid][pvColor1]=strval(strpart(readline,6));
  367. PlayerVehicle[playerid][lpvid][pvColor2]=strval(strpart(readline,7));
  368. PlayerVehicle[playerid][lpvid][pvPaintjob]=strval(strpart(readline,8));
  369. PlayerVehicle[playerid][lpvid][pvID]=CreateVehicle(PlayerVehicle[playerid][lpvid][pvModel],PlayerVehicle[playerid][lpvid][pvX],PlayerVehicle[playerid][lpvid][pvY],PlayerVehicle[playerid][lpvid][pvZ],PlayerVehicle[playerid][lpvid][pvA],PlayerVehicle[playerid][lpvid][pvColor1],PlayerVehicle[playerid][lpvid][pvColor2],30);
  370. ChangeVehiclePaintjob(PlayerVehicle[playerid][lpvid][pvID],PlayerVehicle[playerid][lpvid][pvPaintjob]);
  371. for(new i=0;i<13;i++) {
  372. PlayerVehicle[playerid][lpvid][pvModSlot][i]=strval(strpart(readline,i+9));
  373. if(PlayerVehicle[playerid][lpvid][pvModSlot][i]!=-1) { AddVehicleComponent(PlayerVehicle[playerid][lpvid][pvID],PlayerVehicle[playerid][lpvid][pvModSlot][i]); } }
  374. fclose(csfile); } }
  375. return 1; }
  376.  
  377. stock SavePlayerVehicle(playerid) {
  378. new string[256],pName[MAX_PLAYER_NAME],File:pvfile;
  379. GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
  380. format(string,sizeof(string),"PlayerVehicles/%s.car",pName);
  381. pvfile=fopen(string,io_write);
  382. for(new i=0; i<2; i++) {
  383. if(PlayerVehicle[playerid][i][pvModel]) {
  384. new str[2][64];
  385. format(string,sizeof(string),"[%d] %d %f %f %f %f %d %d %d ",i,PlayerVehicle[playerid][i][pvModel],PlayerVehicle[playerid][i][pvX],PlayerVehicle[playerid][i][pvY],PlayerVehicle[playerid][i][pvZ],PlayerVehicle[playerid][i][pvA],PlayerVehicle[playerid][i][pvColor1],PlayerVehicle[playerid][i][pvColor2],PlayerVehicle[playerid][i][pvPaintjob]);
  386. format(str[0],64,"%d %d %d %d %d %d %d ",PlayerVehicle[playerid][i][pvModSlot][0],PlayerVehicle[playerid][i][pvModSlot][1],PlayerVehicle[playerid][i][pvModSlot][2],PlayerVehicle[playerid][i][pvModSlot][3],PlayerVehicle[playerid][i][pvModSlot][4],PlayerVehicle[playerid][i][pvModSlot][5],PlayerVehicle[playerid][i][pvModSlot][6]);
  387. format(str[1],64,"%d %d %d %d %d %d %d\r\n",PlayerVehicle[playerid][i][pvModSlot][7],PlayerVehicle[playerid][i][pvModSlot][8],PlayerVehicle[playerid][i][pvModSlot][9],PlayerVehicle[playerid][i][pvModSlot][10],PlayerVehicle[playerid][i][pvModSlot][11],PlayerVehicle[playerid][i][pvModSlot][12],PlayerVehicle[playerid][i][pvModSlot][13]);
  388. strins(string,str[0],strlen(string)),strins(string,str[1],strlen(string));
  389. fwrite(pvfile,string); } }
  390. return fclose(pvfile); }
  391.  
  392. /**********************************************************************************************
  393. **********************************************************************************************/
  394. stock IsPlayerNearVehicle(FXF_playerid, FXF_vehicleid, Float:radi) {
  395. new Float:FXF_oldposx, Float:FXF_oldposy, Float:FXF_oldposz,
  396. Float:FXF_tempposx, Float:FXF_tempposy, Float:FXF_tempposz,
  397. Float:x,Float:y,Float:z;
  398. GetPlayerPos(FXF_playerid,x,y,z);
  399. GetVehiclePos(FXF_vehicleid, FXF_oldposx, FXF_oldposy, FXF_oldposz);
  400. FXF_tempposx = (FXF_oldposx -x);
  401. FXF_tempposy = (FXF_oldposy -y);
  402. FXF_tempposz = (FXF_oldposz -z);
  403. if(((FXF_tempposx < radi) && (FXF_tempposx > -radi)) && ((FXF_tempposy < radi) && (FXF_tempposy > -radi)) && ((FXF_tempposz < radi) && (FXF_tempposz > -radi))) {
  404. return 1; }
  405. return 0; }
  406.  
  407. stock SetVehicleParamsForAll(vehicleid, objective, doorslocked) {
  408. for(new i=0;i<MAX_PLAYERS;i++) { SetVehicleParamsForPlayer(vehicleid,i,objective,doorslocked); } }
  409.  
  410. stock fremoveline(filedir[],line)
  411. {
  412. if(!fexist(filedir)) { return 0; }
  413. new rdline[256],str[1024],File:tmpfile = fopen(filedir,io_read);
  414. for(new i=0;fread(tmpfile,rdline); i++) {
  415. if(i==line) { continue; }
  416. strins(str,rdline,strlen(str)); }
  417. fclose(tmpfile),fremove(filedir);
  418. tmpfile=fopen(filedir,io_write);
  419. return fwrite(tmpfile,str),fclose(tmpfile),1;
  420. }
  421.  
  422. stock strpart(const string[], strpos=0, sep=' ') {
  423.  
  424. new tmpstr[128],cnt[2];
  425. format(tmpstr,128,"%s",string);
  426. for(new i=0,len=strlen(tmpstr); i<len; ++i) {
  427. if(tmpstr[i]==sep) {
  428. if(!strpos) { strdel(tmpstr,i,128); break; }
  429. else if(strpos==cnt[1]) { strdel(tmpstr,i,128); break; }
  430. else if(strpos==(cnt[1]+1)) { cnt[0]=i+1; strdel(tmpstr,0,cnt[0]); i=0; len=strlen(tmpstr); cnt[1]++; continue; }
  431. else { cnt[1]++; } } }
  432. if(!strcmp(tmpstr,string)) { tmpstr="\0"; }
  433. return tmpstr; }
  434.  
Advertisement
Add Comment
Please, Sign In to add comment