Advertisement
havasi01

Untitled

May 3rd, 2014
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.37 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <zcmd>
  4.  
  5. #define MAX_RACES 100
  6. #define MAX_CHECKPOINTS 50
  7. #define MAX_RACE_PLAYERS 10
  8. enum
  9. {
  10. DIALOG_NEXT = 1520,
  11. DIALOG_MENU = 1521,
  12. DIALOG_NAME = 1522,
  13. DIALOG_VEHICLE = 1523,
  14. DIALOG_TYPE = 1525,
  15. DIALOG_TIME = 1526,
  16. DIALOG_ROUND = 1527,
  17. DIALOG_SAVE = 1528,
  18. DIALOG_RACES = 1529,
  19. DIALOG_DATA = 1530
  20. }
  21.  
  22. enum rdata
  23. {
  24. name[128],
  25. vehicle,
  26. type,
  27. typee[128],
  28. round,
  29. time,
  30. angle,
  31. allcp
  32. }
  33. enum cpdata
  34. {
  35. Float:X,
  36. Float:Y,
  37. Float:Z
  38. }
  39. new checkpoint[MAX_RACES][MAX_CHECKPOINTS][cpdata];
  40. new race[MAX_RACES][rdata];
  41. new raceid;
  42. new cpid;
  43. new rcpid[MAX_PLAYERS];
  44. new car[MAX_RACES];
  45. new care[MAX_VEHICLES];
  46. new RaceStarted;
  47. new car2;
  48. new getround[MAX_PLAYERS];
  49. new DisableJoin;
  50. new win;
  51. new RaceTimer;
  52. new cvalue[MAX_PLAYERS];
  53. new ctimer[MAX_PLAYERS];
  54. new rname[128],rtime,rround,rveh,rtype,rallcp,rangle;
  55. new Float:rcpx[MAX_CHECKPOINTS],Float:rcpy[MAX_CHECKPOINTS],Float:rcpz[MAX_CHECKPOINTS];
  56. new jracers;
  57. new bool:RaceEditor;
  58. new goback[MAX_PLAYERS];
  59. new ccc;
  60. new VehicleNames[212][] = {
  61. {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
  62. {"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
  63. {"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
  64. {"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
  65. {"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
  66. {"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
  67. {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
  68. {"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
  69. {"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
  70. {"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
  71. {"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
  72. {"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
  73. {"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
  74. {"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
  75. {"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
  76. {"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
  77. {"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
  78. {"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
  79. {"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
  80. {"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
  81. {"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
  82. {"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
  83. {"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
  84. {"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
  85. {"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
  86. {"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
  87. {"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
  88. {"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
  89. {"Utility Trailer"}
  90. };
  91.  
  92. public OnFilterScriptInit()
  93. {
  94. raceid = 0;
  95. win = 1;
  96. cpid = 1;
  97. RaceEditor = false;
  98. return 1;
  99. }
  100. CMD:createrace(playerid)
  101. {
  102. if(GetPVarInt(playerid,"TakeCP") == 1) return SendClientMessage(playerid,-1,"Valaki már használja ezt a vesenykészítő módot!");
  103. ShowPlayerDialog(playerid,DIALOG_NEXT,DIALOG_STYLE_MSGBOX,"Verseny készítés:","Itt versenyt készíthetsz!\nHa befejezted a /race paranccsal tudod elindítani!","Folytatás","Mégse");
  104. return 1;
  105. }
  106. CMD:launchrace(playerid)
  107. {
  108. new string[128],str[128],c = 0;
  109. new File:rlist = fopen("Races.list", io_read);
  110. if(!fexist("Races.list")) return printf("Nincs telepítve a szerver mappájába a Races.list fájlt!");
  111. while(fread(rlist, string))
  112. {
  113. strdel(string,strlen(string)-2,strlen(string));
  114. format(str,sizeof(str),"%s%s\n",str,string);
  115. c++;
  116. }
  117. fclose(rlist);
  118. ShowPlayerDialog(playerid,DIALOG_RACES,DIALOG_STYLE_LIST,"Versenyek:",str,"Választ","Mégsem");
  119. return 1;
  120. }
  121. CMD:joinrace(playerid)
  122. {
  123. if(DisableJoin == 1) return SendClientMessage(playerid,-1,"Már a verseny elindult!");
  124. if(RaceStarted == 0) return SendClientMessage(playerid,-1,"Jelenleg egy verseny sincs elindítva!");
  125. if(jracers == MAX_RACE_PLAYERS) return SendClientMessage(playerid,-1,"Tele van ez a verseny!");
  126. else if(GetPVarInt(playerid,"PlayerJoined") == 1) return SendClientMessage(playerid,-1,"Már csatlakoztál a versenyhez!");
  127. else
  128. {
  129. SetPVarInt(playerid,"PlayerJoined",1);
  130. SetPVarInt(playerid,"PlayerSor",jracers);
  131. SendClientMessage(playerid,-1,"Csatlakoztál egy versenyhez!");
  132. jracers++;
  133. }
  134. return 1;
  135. }
  136. CMD:leaverace(playerid)
  137. {
  138. SetPVarInt(playerid,"PlayerJoined",0);
  139. SendClientMessage(playerid,-1,"Kiléptél a versenyből!");
  140. DestroyVehicle(care[playerid]);
  141. jracers--;
  142. if(jracers < 2)
  143. {
  144. RaceStarted = 0;
  145. jracers = 0;
  146. KillTimer(RaceTimer);
  147. for(new i;i<MAX_VEHICLES;i++) DestroyVehicle(care[i]);
  148. SendClientMessageToAll(-1,"Sajnos nem lett elég jelentkező, így a verseny nem indul el!");
  149. }
  150. }
  151. public OnFilterScriptExit()
  152. {
  153. return 1;
  154. }
  155.  
  156. public OnPlayerConnect(playerid)
  157. {
  158. return 1;
  159. }
  160.  
  161. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  162. {
  163. switch(dialogid)
  164. {
  165. case DIALOG_RACES:
  166. {
  167. if(response)
  168. {
  169. if(RaceStarted == 1)return SendClientMessage(playerid,-1,"{f01313}HIBA! Már egy verseny elindult!");
  170. new str[128],string[128],strex[128],stre[128],c = 0,cs = 0,cpc = 0;
  171. new File:rlist = fopen("Races.list", io_read);
  172. if(!fexist("Races.list")) return printf("HIBA: Races.list nem található");
  173. while(fread(rlist, strex))
  174. {
  175. strdel(strex,strlen(strex)-2,strlen(strex));
  176. if(cs == listitem)
  177. {
  178. format(str,sizeof(str),"Races/%s.race",strex);
  179. format(rname,sizeof(rname),"%s",strex);
  180. }
  181. cs++;
  182. }
  183. fclose(rlist);
  184. new File:frace = fopen(str, io_read);
  185. if(!fexist(str)) return printf("HIBA: NEM TALÁLHATÓ A FILE!");
  186. while(fread(frace, string))
  187. {
  188. if(c == 0)
  189. {
  190. sscanf(string, "p<|>ddddddf",rtype,rround,rveh,rallcp,rtime,rangle,rangle);
  191. }
  192. else
  193. {
  194. sscanf(string, "p<|>fff",rcpx[cpc],rcpy[cpc],rcpz[cpc]);
  195. cpc++;
  196. }
  197. c++;
  198. }
  199. fclose(frace);
  200. format(stre,sizeof(stre),"Verseny név: %s\nEllenőrzőpontok száma: %d\nVerseny típusa: %d\nKörök száma: %d\nJármű: %s\nVerseny ideje: %d",rname,rallcp,rtype,rround,VehicleNames[rveh-400],rtime);
  201. ShowPlayerDialog(playerid,DIALOG_DATA,DIALOG_STYLE_MSGBOX,"Verseny adatok",stre,"Indítás","Vissza");
  202. }
  203. }
  204. case DIALOG_DATA:
  205. {
  206. if(response)
  207. {
  208. new pname[MAX_PLAYER_NAME],string[256];
  209. GetPlayerName(playerid,pname,sizeof(pname));
  210. format(string,sizeof(string),"{2dcf27}%s {ffffff}elindította a {3097c7}%s {ffffff}nevű versenyt, ami {ff0000}30 másodperc múlva kezdődik!",pname,rname);
  211. SendClientMessageToAll(-1,string);
  212. SendClientMessageToAll(-1,"{2dcf27}INFO: {ffffff}A {ff0000}/joinrace {ffffff}paranccsal tudsz jelentkezni a versenyre!");
  213. SetTimer("StartedRace",30000,0);
  214. RaceStarted = 1;
  215. }
  216. }
  217. case DIALOG_NEXT:
  218. {
  219. if(response)
  220. {
  221. if(RaceEditor == true) return SendClientMessage(playerid,-1,"Valaki már használja a versenykészítő módot!");
  222. RaceEditor = false;
  223. ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_INPUT,"Név","Kérlek add meg a verseny nevét","Megad","");
  224. raceid++;
  225. }
  226. }
  227. case DIALOG_NAME:
  228. {
  229. if(!response) ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_INPUT,"Név","Kérlek add meg a verseny nevét","Megad","");
  230. if(response)
  231. {
  232. new string[64],str[128];
  233. format(str,sizeof(str),"%s",inputtext);
  234. race[raceid][name] = str;
  235. if(fexist("Races.list"))
  236. {
  237. new File:rlist = fopen("Races.list", io_read);
  238. while(fread(rlist, string))
  239. {
  240. strdel(string,sizeof(string)-2,sizeof(string));
  241. if(strcmp(string,race[raceid][name], true) == 0) return ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_INPUT,"Név","{f01313}HIBA: már létezik ez a név. Adj meg egy másikat!","Megad","");
  242. }
  243. fclose(rlist);
  244. }
  245. ShowPlayerDialog(playerid,DIALOG_VEHICLE,DIALOG_STYLE_INPUT,"Jármű","Add meg a jármű nevét vagy az id-jét.","Megad","Vissza");
  246. }
  247. }
  248. case DIALOG_VEHICLE:
  249. {
  250. if(!response) return ShowPlayerDialog(playerid,DIALOG_NAME,DIALOG_STYLE_INPUT,"Név","Kérlek add meg a verseny nevét","Megad","");
  251. if(response)
  252. {
  253. if(!IsNumeric(inputtext)) car[raceid] = GetVehicleModelIDFromName(inputtext);
  254. else car[raceid] = strval(inputtext);
  255. if(car[raceid] < 400 || car[raceid] > 611) return ShowPlayerDialog(playerid,DIALOG_VEHICLE,DIALOG_STYLE_INPUT,"Jármű","{f01313}HIBA! A jármű nem létezik! Próbáld újra.","Megad","Vissza");
  256. race[raceid][vehicle] = car[raceid];
  257. ShowPlayerDialog(playerid,DIALOG_TYPE,DIALOG_STYLE_LIST,"Add meg a típusát","Normál\nRepülő mód","Választ","Vissza");
  258. }
  259. }
  260. case DIALOG_TYPE:
  261. {
  262. if(!response) return ShowPlayerDialog(playerid,DIALOG_VEHICLE,DIALOG_STYLE_LIST,"Add meg a típusát","Normál\nRepülő mód","Választ","Vissza");
  263. if(response)
  264. {
  265. ShowPlayerDialog(playerid,DIALOG_TIME,DIALOG_STYLE_INPUT,"Idő","Hány perces legyen a verseny?","Megad","Vissza");
  266. if(listitem == 0)
  267. {
  268. new str[128];
  269. format(str,sizeof(str),"Normál");
  270. race[raceid][typee] = str;
  271. race[raceid][type] = 0;
  272. }
  273. if(listitem == 1)
  274. {
  275. new str[128];
  276. format(str,sizeof(str),"Repülő mód");
  277. race[raceid][typee] = str;
  278. race[raceid][type] = 3;
  279. }
  280. }
  281. }
  282. case DIALOG_TIME:
  283. {
  284. if(!response) return ShowPlayerDialog(playerid,DIALOG_TYPE,DIALOG_STYLE_INPUT,"Idő","Hány perces legyen a verseny?","Megad","Vissza");
  285. if(response)
  286. {
  287. race[raceid][time] = strval(inputtext);
  288. ShowPlayerDialog(playerid,DIALOG_ROUND,DIALOG_STYLE_INPUT,"Idő","Add meg a körök számát!","Megad","Vissza");
  289. }
  290.  
  291. }
  292. case DIALOG_ROUND:
  293. {
  294. if(!response)return ShowPlayerDialog(playerid,DIALOG_TIME,DIALOG_STYLE_INPUT,"Idő","Add meg a körök számát!","Megad","Vissza");
  295. if(response)
  296. {
  297. new Float:gX,Float:gY,Float:gZ;
  298. race[raceid][round] = strval(inputtext);
  299. SetPVarInt(playerid,"TakeCP",1);
  300. GetPlayerPos(playerid,gX,gY,gZ);
  301. car2 = CreateVehicle(race[raceid][vehicle],gX,gY,gZ,0,1,1,60);
  302. PutPlayerInVehicle(playerid,car2,0);
  303. cpid = 1;
  304. SendClientMessage(playerid,-1,"Rakd le az ellenőrzőpontokat a Bal egérgomb segítségével!");
  305. SendClientMessage(playerid,-1,"Ha végeztél nyomd meg a \"+\" gombot!");
  306. }
  307. }
  308. case DIALOG_SAVE:
  309. {
  310. RaceEditor = false;
  311. if(!response)return SendClientMessage(playerid,-1,"A versenyt nem sikerült lementeni!");
  312. if(response)
  313. {
  314. new string[128],str[128],str2[1700];
  315. format(string,sizeof(string),"%s\r\n",race[raceid][name]);
  316. format(str,sizeof(str),"Races/%s.race",race[raceid][name]);
  317. new File:rlist = fopen("Races.list", io_append);
  318. new File:rfile = fopen(str, io_write);
  319. if(!fexist("Races.list")) fcreate("Races.list");
  320. format(str2,sizeof(str2),"%d|%d|%d|%d|%d|%f\r\n",race[raceid][type],race[raceid][round],race[raceid][vehicle],race[raceid][allcp],race[raceid][time],race[raceid][angle]);
  321. fcreate(str);
  322. for(new i;i<=race[raceid][allcp];i++)
  323. {
  324. if(i == 0) continue;
  325. format(str2,sizeof(str2),"%s%f|%f|%f|\r\n",str2,checkpoint[raceid][i][X],checkpoint[raceid][i][Y],checkpoint[raceid][i][Z]);
  326. }
  327. fwrite(rfile,str2);
  328. fwrite(rlist,string);
  329. fclose(rfile);
  330. fclose(rlist);
  331. SendClientMessage(playerid,-1,"A Verseny el lett mentve!");
  332. }
  333. }
  334. }
  335. return 1;
  336. }
  337. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  338. {
  339. if(GetPVarInt(playerid,"TakeCP") == 1)
  340. {
  341. new Float:rX,Float:rY,Float:rZ;
  342. GetPlayerPos(playerid,rX,rY,rZ);
  343. if(IsKeyJustDown(KEY_FIRE,newkeys,oldkeys))
  344. {
  345. if(cpid == 1)
  346. {
  347. new Float:Angle;
  348. SendClientMessage(playerid,-1,"{20d62f}Start Lerakva");
  349. checkpoint[raceid][cpid][X] = rX;
  350. checkpoint[raceid][cpid][Y] = rY;
  351. checkpoint[raceid][cpid][Z] = rZ;
  352. SetPlayerCheckpoint(playerid,rX,rY,rZ,7.5);
  353. GetPlayerFacingAngle(playerid,Angle);
  354. Angle = race[raceid][angle];
  355. cpid++;
  356. }
  357. else
  358. {
  359. if(cpid == MAX_CHECKPOINTS-2)
  360. {
  361. SendClientMessage(playerid,-1,"Elérted a max ellenőrzőpont limitet!");
  362. SendClientMessage(playerid,-1,"{20d62f}Cél lerakva!");
  363. checkpoint[raceid][cpid][X] = rX;
  364. checkpoint[raceid][cpid][Y] = rY;
  365. checkpoint[raceid][cpid][Z] = rZ;
  366. DestroyVehicle(car2);
  367. race[raceid][allcp] = cpid;
  368. new string[128];
  369. SetPVarInt(playerid,"TakeCP",0);
  370. format(string,sizeof(string),"Név: %s\nTípus: %s\nKör: %d\nJármű: %s\nEllenőrzőpontok: %d db\nVersenyidő: %d perc\n\nElszeretnéd menteni a versenyt?",race[raceid][name],race[raceid][typee],race[raceid][round],VehicleNames[car[raceid]-400],cpid,race[raceid][time]);
  371. ShowPlayerDialog(playerid,DIALOG_SAVE,DIALOG_STYLE_MSGBOX,"Mentés",string,"Igen","Nem");
  372. cpid = 1;
  373. DisablePlayerCheckpoint(playerid);
  374. }
  375. else
  376. {
  377. new str[50];
  378. format(str,sizeof(str),"{20d62f}%d. ellenőrzőpont lerakva!",cpid);
  379. SendClientMessage(playerid,-1,str);
  380. checkpoint[raceid][cpid][X] = rX;
  381. checkpoint[raceid][cpid][Y] = rY;
  382. checkpoint[raceid][cpid][Z] = rZ;
  383. SetPlayerCheckpoint(playerid,rX,rY,rZ,7.5);
  384. }
  385. cpid++;
  386. }
  387. }
  388. if(IsKeyJustDown(KEY_SUBMISSION,newkeys,oldkeys))
  389. {
  390. if(cpid < 3)
  391. {
  392. SendClientMessage(playerid,-1,"{ff0009}Kevés ellenőrzőpont!");
  393. }
  394. else
  395. {
  396. SendClientMessage(playerid,-1,"{20d62f}Cél lerakva!");
  397. checkpoint[raceid][cpid][X] = rX;
  398. checkpoint[raceid][cpid][Y] = rY;
  399. checkpoint[raceid][cpid][Z] = rZ;
  400. DestroyVehicle(car2);
  401. race[raceid][allcp] = cpid;
  402. new string[128];
  403. SetPVarInt(playerid,"TakeCP",0);
  404. format(string,sizeof(string),"Név: %s\nTípus: %s\nKör: %d\nJármű: %s\nCheckPointok: %d db\nVersenyidő: %d perc\n\nElszeretnéd menteni a versenyt?",race[raceid][name],race[raceid][typee],race[raceid][round],VehicleNames[car[raceid]-400],cpid,race[raceid][time]);
  405. ShowPlayerDialog(playerid,DIALOG_SAVE,DIALOG_STYLE_MSGBOX,"Mentés",string,"Igen","Nem");
  406. cpid = 1;
  407. DisablePlayerCheckpoint(playerid);
  408. }
  409. }
  410. }
  411. }
  412.  
  413. GetVehicleModelIDFromName(vname[])
  414. {
  415. for(new i = 0; i < 211; i++)
  416. {
  417. if ( strfind(VehicleNames[i], vname, true) != -1 )
  418. return i + 400;
  419. }
  420. return -1;
  421. }
  422. stock IsNumeric(string[])
  423. {
  424. for (new i = 0, j = strlen(string);
  425. i < j; i++)
  426. {
  427. if (string[i] > '9' || string[i] < '0')
  428. return 0;
  429. }
  430. return 1;
  431. }
  432. IsKeyJustDown(key, newkeys, oldkeys)
  433. {
  434. if((newkeys & key) && !(oldkeys & key)) return 1;
  435. return 0;
  436. }
  437. public OnPlayerEnterRaceCheckpoint(playerid)
  438. {
  439. rcpid[playerid]++;
  440. if(rcpid[playerid] == rallcp-1)
  441. {
  442. if(rtype == 0)
  443. {
  444. return SetPlayerRaceCheckpoint(playerid,1,rcpx[rcpid[playerid]],rcpy[rcpid[playerid]],rcpz[rcpid[playerid]],rcpx[rcpid[playerid]+1],rcpy[rcpid[playerid]+1],rcpz[rcpid[playerid]+1],8.0);
  445. }
  446. else if(rtype == 3)
  447. {
  448. return SetPlayerRaceCheckpoint(playerid,4,rcpx[rcpid[playerid]],rcpy[rcpid[playerid]],rcpz[rcpid[playerid]],rcpx[rcpid[playerid]+1],rcpy[rcpid[playerid]+1],rcpz[rcpid[playerid]+1],8.0);
  449. }
  450. }
  451. if(rcpid[playerid] == rallcp)
  452. {
  453. new wname[MAX_PLAYER_NAME],string[128];
  454. GetPlayerName(playerid,wname,sizeof(wname));
  455. if(rround > 1)
  456. {
  457. if(rround != getround[playerid])
  458. {
  459. format(string,sizeof(string),"{20d62f}%s {ffffff}ért be {ff0000}legelsőnek {ffffff}a célba! Jutalma {1253fa}500$.",wname);
  460. rcpid[playerid] = 0;
  461. getround[playerid]++;
  462. SetPlayerRaceCheckpoint(playerid,0,rcpx[rcpid[playerid]],rcpy[rcpid[playerid]],rcpz[rcpid[playerid]],rcpx[rcpid[playerid]+1],rcpy[rcpid[playerid]+1],rcpz[rcpid[playerid]+1],8.0);
  463. return 0;
  464. }
  465. }
  466. if(win == 0)
  467. {
  468. format(string,sizeof(string),"{20d62f}%s {ffffff}ért be {ff0000}legelsőnek {ffffff}a célba! Jutalma {1253fa}500$.",wname);
  469. GivePlayerMoney(playerid,500);
  470. SendClientMessageToAll(-1,string);
  471. DestroyVehicle(care[playerid]);
  472. SetPVarInt(playerid,"JoinedPlayer",0);
  473. DisablePlayerRaceCheckpoint(playerid);
  474. jracers--;
  475. win++;
  476. }
  477. else if(win == 1)
  478. {
  479. format(string,sizeof(string),"{20d62f}%s {ffffff}ért be {ff0000}másodiknak {ffffff}a célba! Jutalma {1253fa}100$.",wname);
  480. SendClientMessageToAll(-1,string);
  481. DestroyVehicle(care[playerid]);
  482. GivePlayerMoney(playerid,100);
  483. DestroyVehicle(care[playerid]);
  484. SetPVarInt(playerid,"JoinedPlayer",0);
  485. DisablePlayerRaceCheckpoint(playerid);
  486. jracers--;
  487. win++;
  488. }
  489. else
  490. {
  491. format(string,sizeof(string),"{20d62f}%s {ffffff}beért a célba! Helyezése: {ff0000}%d.",wname,win+1);
  492. SendClientMessageToAll(-1,string);
  493. DestroyVehicle(care[playerid]);
  494. SetPVarInt(playerid,"JoinedPlayer",0);
  495. DisablePlayerRaceCheckpoint(playerid);
  496. jracers--;
  497. win++;
  498. }
  499. getround[playerid] = 0;
  500. }
  501. else
  502. {
  503. SetPlayerRaceCheckpoint(playerid,rtype,rcpx[rcpid[playerid]],rcpy[rcpid[playerid]],rcpz[rcpid[playerid]],rcpx[rcpid[playerid]+1],rcpy[rcpid[playerid]+1],rcpz[rcpid[playerid]+1],8.0);
  504. }
  505. if(ccc == 0)
  506. {
  507. if(jracers == 0)
  508. {
  509. SendClientMessageToAll(-1,"A Verseny véget ért!");
  510. RaceStarted = 0;
  511. DisableJoin = 0;
  512. KillTimer(RaceTimer);
  513. for(new i;i<MAX_PLAYERS;i++) rcpid[i] = 0;
  514. for(new i;i<MAX_PLAYERS;i++) SetPVarInt(i,"PlayerJoined",0);
  515. jracers = 0;
  516. rallcp = 0;
  517. ccc++;
  518. }
  519. }
  520. return 1;
  521. }
  522.  
  523. forward StartedRace();
  524. public StartedRace()
  525. {
  526. if(jracers < 0)
  527. {
  528. SendClientMessageToAll(-1,"Sajnos nem lett elég jelentkező, így a verseny elmarad!");
  529. RaceStarted = 0;
  530. for(new i;i<MAX_PLAYERS;i++) SetPVarInt(i,"PlayerJoined",0);
  531. jracers = 0;
  532. return 0;
  533. }
  534. DisableJoin = 1;
  535. RaceTimer = SetTimer("RaceeTimer",rtime*60000,0);
  536. for(new i;i<=MAX_RACE_PLAYERS;i++)
  537. {
  538. if(GetPVarInt(i,"PlayerJoined") == 1)
  539. {
  540. SendClientMessage(i,-1,"A Verseny kezdődik!");
  541. rcpid[i] = 0;
  542. win = 0;
  543. getround[i] = 0;
  544. SetPlayerRaceCheckpoint(i,0,rcpx[rcpid[i]],rcpy[rcpid[i]],rcpz[rcpid[i]],rcpx[rcpid[i]+1],rcpy[rcpid[i]+1],rcpz[rcpid[i]+1],8.0);
  545.  
  546. if(GetPVarInt(i,"PlayerSor") == 0)
  547. {
  548. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  549. rcpx[0] += (4 * floatsin(-rangle, degrees));
  550. rcpy[0] += (4 * floatcos(-rangle, degrees));
  551. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  552. }
  553. if(GetPVarInt(i,"PlayerSor") == 1)
  554. {
  555. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  556. rcpx[0] += (4 * floatsin(-rangle, degrees));
  557. rcpy[0] += (-8 * floatcos(-rangle, degrees));
  558. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  559. }
  560. if(GetPVarInt(i,"PlayerSor") == 2)
  561. {
  562. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  563. rcpx[0] += (10 * floatsin(-rangle, degrees));
  564. rcpy[0] += (4 * floatcos(-rangle, degrees));
  565. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  566. }
  567. if(GetPVarInt(i,"PlayerSor") == 3)
  568. {
  569. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  570. rcpx[0] += (10 * floatsin(-rangle, degrees));
  571. rcpy[0] += (-8 * floatcos(-rangle, degrees));
  572. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  573. }
  574. if(GetPVarInt(i,"PlayerSor") == 4)
  575. {
  576. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  577. rcpx[0] += (16 * floatsin(-rangle, degrees));
  578. rcpy[0] += (4 * floatcos(-rangle, degrees));
  579. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  580. }
  581. if(GetPVarInt(i,"PlayerSor") == 5)
  582. {
  583. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  584. rcpx[0] += (16 * floatsin(-rangle, degrees));
  585. rcpy[0] += (-8 * floatcos(-rangle, degrees));
  586. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  587. }
  588. if(GetPVarInt(i,"PlayerSor") == 6)
  589. {
  590. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  591. rcpx[0] += (22 * floatsin(-rangle, degrees));
  592. rcpy[0] += (4 * floatcos(-rangle, degrees));
  593. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  594. }
  595. if(GetPVarInt(i,"PlayerSor") == 7)
  596. {
  597. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  598. rcpx[0] += (22 * floatsin(-rangle, degrees));
  599. rcpy[0] += (-8 * floatcos(-rangle, degrees));
  600. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  601. }
  602. if(GetPVarInt(i,"PlayerSor") == 8)
  603. {
  604. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  605. rcpx[0] += (28 * floatsin(-rangle, degrees));
  606. rcpy[0] += (4 * floatcos(-rangle, degrees));
  607. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  608. }
  609. if(GetPVarInt(i,"PlayerSor") == 9)
  610. {
  611. SetPlayerPos(i,rcpx[0],rcpy[0],rcpz[0]);
  612. rcpx[0] += (28 * floatsin(-rangle, degrees));
  613. rcpy[0] += (-8 * floatcos(-rangle, degrees));
  614. care[i] = CreateVehicle(rveh,rcpx[0],rcpy[0],rcpz[0],rangle,0,0,0);
  615. }
  616. PutPlayerInVehicle(i,care[i],0);
  617. TogglePlayerControllable(i,0);
  618. SetTimerEx("Delay",5000,0,"i",i);
  619. }
  620. }
  621. return 1;
  622. }
  623. forward RaceeTimer();
  624. public RaceeTimer()
  625. {
  626. SendClientMessageToAll(-1,"A Verseny véget ért!");
  627. RaceStarted = 0;
  628. DisableJoin = 0;
  629. KillTimer(RaceTimer);
  630. for(new i;i<MAX_PLAYERS;i++)
  631. {
  632. rcpid[i] = 0;
  633. DestroyVehicle(care[i]);
  634. SetPVarInt(i,"PlayerJoined",0);
  635. }
  636. jracers = 0;
  637. rallcp = 0;
  638. ccc++;
  639. return 1;
  640. }
  641. public OnPlayerExitVehicle(playerid, vehicleid)
  642. {
  643. if(GetPVarInt(playerid,"JoinedPlayer") == 1)
  644. {
  645. goback[playerid] = SetTimerEx("GoBack",10000,0,"i",playerid);
  646. }
  647. return 1;
  648. }
  649. public OnPlayerEnterVehicle(playerid, vehicleid)
  650. {
  651. if(GetPVarInt(playerid,"JoinedPlayer") == 1)
  652. {
  653. KillTimer(goback[playerid]);
  654. }
  655. return 1;
  656. }
  657. forward GoBack(playerid);
  658. public GoBack(playerid)
  659. {
  660. KillTimer(goback[playerid]);
  661. SetPVarInt(playerid,"PlayerJoined",0);
  662. SendClientMessage(playerid,-1,"Kiestél a versenyből!");
  663. DestroyVehicle(care[playerid]);
  664. jracers--;
  665. if(jracers < 2)
  666. {
  667. RaceStarted = 0;
  668. jracers = 0;
  669. KillTimer(RaceTimer);
  670. for(new i;i<MAX_VEHICLES;i++) DestroyVehicle(care[i]);
  671. SendClientMessageToAll(-1,"Sajnos nem lett elég jelentkező, így a verseny elmarad!");
  672. }
  673. return 1;
  674. }
  675. forward Delay(playerid);
  676. public Delay(playerid)
  677. {
  678. cvalue[playerid] = 5;
  679. ctimer[playerid] = SetTimerEx("cou_down",1000,1,"i",playerid);
  680. return 1;
  681. }
  682. forward cou_down(playerid);
  683. public cou_down(playerid)
  684. {
  685. new str[128];
  686. if(cvalue[playerid] == 0)
  687. {
  688. TogglePlayerControllable(playerid,1);
  689. KillTimer(ctimer[playerid]);
  690. return GameTextForPlayer(playerid,"~g~GO!",4000,3);
  691. }
  692. else
  693. {
  694. format(str,sizeof(str),"~r~%d",cvalue);
  695. GameTextForPlayer(playerid,str,4000,3);
  696. }
  697. cvalue[playerid]--;
  698. return 1;
  699. }
  700. forward fcreate(filename[]);
  701. public fcreate(filename[])
  702. {
  703. if (fexist(filename)){return false;}
  704. new File:fhandle = fopen(filename,io_write);
  705. fclose(fhandle);
  706. return true;
  707. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement