Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.18 KB | None | 0 0
  1. // This is a comment
  2. // Yes I do understand that
  3.  
  4. // uncomment the line below if you want to write a filterscript
  5. // which one?
  6.  
  7. /*CREDITS: Wups - For help fixing bugs in middle stage
  8. Stommpy - A friend with who we started this game and script
  9. Thanks for people who helped me to test it:
  10. Damien
  11. Lakiuz*/
  12.  
  13. #include <a_samp>
  14. #define FOREACH_NO_BOTS
  15. #include <foreach>
  16. #define RENK_YESIL 0x33AA33AA
  17. #define RENK_KIRMIZI 0xAA3333AA
  18. #define RENK_BEYAZ 0xFFFFFFAA
  19. #define DEFAULT_TIME 15
  20. #define DIALOGID 15000
  21.  
  22. new
  23. bool:copchase=false,
  24. bool:katilmayauygun=false,
  25. bool:AutoFix=false,
  26. bool:yapabilirmi=false,
  27. g_Polis,
  28. katildi[MAX_PLAYERS],
  29. Noobie[MAX_PLAYERS],
  30. g_Kacan[MAX_PLAYERS],
  31. CoolDown[MAX_PLAYERS],
  32. g_TarafindanBaslatildi = -1,
  33. KacmaModu = 1,
  34. KacmaSuresi = 60,
  35. KacmaZaman,
  36. Katilimcilar,
  37. Text:Info,
  38. Iterator:Dalyviai<MAX_PLAYERS>
  39. ;
  40.  
  41. public OnFilterScriptInit()
  42. {
  43. print("\n--------------------------------------");
  44. print(" Chase game FS by Awdrius Loaded");
  45. print("--------------------------------------\n");
  46.  
  47. Info=TextDrawCreate(390,5,"Chaser Will be HERE!");
  48. TextDrawColor(Info,0xFFFFFFFF);
  49. TextDrawSetShadow(Info,0);
  50. TextDrawSetOutline(Info,1);
  51. TextDrawLetterSize(Info,0.5,2);
  52. TextDrawBackgroundColor(Info,0x00000040);
  53. TextDrawFont(Info,1);
  54. for(new i;i<MAX_PLAYERS;i++)
  55. {
  56. if(IsPlayerConnected(i))
  57. {
  58. g_Polis++;
  59. Iter_Add(Player,i);
  60. }
  61. }
  62. return 1;
  63. }
  64.  
  65. public OnFilterScriptExit()
  66. {
  67. CloseChase();
  68. TextDrawDestroy(Info);
  69. return 1;
  70. }
  71.  
  72.  
  73. public OnPlayerConnect(playerid)
  74. {
  75. g_Polis++;
  76. SetPlayerColor(playerid, 0x80808000);
  77. if(copchase)
  78. {
  79. SendClientMessage(playerid, RENK_YESIL, "[COPCHASE] Katılmak için /copchase kullanabilirsin.");
  80. Noobie[playerid]=true;
  81. }
  82. return 1;
  83. }
  84.  
  85. public OnPlayerDisconnect(playerid, reason)
  86. {
  87. Iter_Remove(Dalyviai,playerid);
  88. if(g_TarafindanBaslatildi == playerid && (copchase || katilmayauygun))
  89. {
  90. SendClientMessageToAll(0x33AA33AA,"[COPCHASE] Oyun modu bitti, çünkü yaratan kişi oyundan çıktı.");
  91. foreach(Player, i)
  92. {
  93. katildi[i]=false;
  94. g_Kacan[i]=0;
  95. Iter_Remove(Dalyviai,i);
  96. }
  97. copchase=false;
  98. katilmayauygun=false;
  99. }
  100. g_Polis--;
  101. katildi[playerid]=false;
  102. Noobie[playerid]=false;
  103. if(g_Polis<2 && (copchase || katilmayauygun))
  104. {
  105. SendClientMessageToAll(0x33AA33AA,"[COPCHASE] Oyun bitti.");
  106. foreach(Player, i)
  107. {
  108. katildi[i]=false;
  109. g_Kacan[i]=0;
  110. Iter_Remove(Dalyviai,i);
  111. }
  112. katilmayauygun=false;
  113. copchase=false;
  114. }
  115. else
  116. {
  117. if(g_Kacan[playerid]==1)
  118. {
  119. new chaser;
  120. chaser=Iter_Random(Dalyviai);
  121. while(katildi[chaser]!=1)
  122. {
  123. chaser=Iter_Random(Dalyviai);
  124. }
  125. new name[MAX_PLAYER_NAME], msg[128];
  126. GetPlayerName(chaser,name,sizeof(name));
  127. TextDrawSetString(Text:Info, msg);
  128. TextDrawShowForAll(Text:Info);
  129. g_Kacan[chaser]=1;
  130. g_Kacan[playerid]=0;
  131. }
  132. }
  133. return 1;
  134. }
  135.  
  136.  
  137. public OnPlayerCommandText(playerid, cmdtext[])
  138. {
  139. if (strcmp("/copchase", cmdtext, true) == 0)
  140. {
  141. if(!copchase && !katilmayauygun)
  142. {
  143. if(g_Polis>1)
  144. {
  145. if(!IsPlayerAdmin(playerid))
  146. {
  147. new a;
  148. foreach(Player, i)
  149. {
  150. if(IsPlayerAdmin(i)) a++;
  151. }
  152. yapabilirmi = (a<1);
  153. }
  154. if(IsPlayerAdmin(playerid) || yapabilirmi)
  155. {
  156. new MainMenu[200];
  157. format(MainMenu,sizeof(MainMenu),"Mod [%s]\nOyun süresi [%imin]\nAutoFix[%s]\nOyunu başlat", ((KacmaModu == 1) ? ("Bir kaçan") : ("Son kaçana kadar")), ((KacmaZaman == 0) ? DEFAULT_TIME : (KacmaZaman/60000)), ((AutoFix == false) ? ("Kapalı") : ("Açık")));
  158. ShowPlayerDialog(playerid,DIALOGID,DIALOG_STYLE_LIST,"COPCHASE",MainMenu,"Seç","Çık");
  159. }
  160. else SendClientMessage(playerid,RENK_KIRMIZI,"[COPCHASE] Herhangi bir yetkili aktif değil.");
  161. return 1;
  162. }
  163. else SendClientMessage(playerid, RENK_KIRMIZI, "[COPCHASE] Zaten bir oyundasın.");
  164. }
  165. else
  166. {
  167. if(IsPlayerAdmin(playerid) || (yapabilirmi && g_TarafindanBaslatildi == playerid))
  168. {
  169. new name[MAX_PLAYER_NAME],msg[64];
  170. GetPlayerName(playerid,name,sizeof(name));
  171. format(msg,sizeof(msg),"[COPCHASE] %s oyunu durdurdu.",name);
  172. SendClientMessageToAll(RENK_KIRMIZI,msg);
  173. CloseChase();
  174. KillTimer(CloseChase());
  175. }
  176. else SendClientMessage(playerid,RENK_KIRMIZI,"[COPCHASE] Oyun zaten başladı!");
  177. }
  178. return 1;
  179. }
  180.  
  181. if (strcmp("/join", cmdtext, true) == 0)
  182. {
  183. if(!katilmayauygun && !Noobie[playerid]) return SendClientMessage(playerid,RENK_KIRMIZI,"[COPCHASE] Katılma şu anda devredışı!");
  184. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,RENK_KIRMIZI,"[COPCHASE] Bu komutu kullanabilmek için bir araçta olmalısın.");
  185. if(!katildi[playerid])
  186. {
  187. if(Noobie[playerid])
  188. {
  189. SetPlayerColor(playerid, RENK_BEYAZ);
  190. new name[MAX_PLAYER_NAME], msg[128];
  191. for(new i;i<MAX_PLAYERS;i++)
  192. {
  193. if(g_Kacan[i]==1) GetPlayerName(i,name,sizeof(name));
  194. }
  195. if(KacmaModu==1)
  196. {
  197. format(msg,sizeof(msg),"Kacan - %s",name);
  198. TextDrawSetString(Text:Info, msg);
  199. TextDrawShowForPlayer(playerid,Text:Info);
  200. }
  201. }
  202. new msg[70];
  203. katildi[playerid]=true;
  204. Katilimcilar++;
  205. Iter_Add(Dalyviai, playerid);
  206. format(msg,sizeof(msg),"[COPCHASE] Copchase oyunun başarıyla katıldın, %d saniye sonra kayıtlar kapanacak.",KacmaSuresi);
  207. SendClientMessage(playerid,RENK_YESIL,msg);
  208. }
  209. else if(katildi[playerid])
  210. {
  211. if(Noobie[playerid])
  212. {
  213. SetPlayerColor(playerid,0x80808000);
  214. }
  215. katildi[playerid]=false;
  216. Katilimcilar--;
  217. Iter_Remove(Dalyviai, playerid);
  218. SendClientMessage(playerid,RENK_YESIL,"[COPCHASE] Oyundan başarıyla çıktınız.");
  219. }
  220. return 1;
  221. }
  222. return 0;
  223. }
  224.  
  225. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  226. {
  227. if(dialogid == DIALOGID)
  228. {
  229. if(response)
  230. {
  231. if(listitem == 0)
  232. {
  233. ShowPlayerDialog(playerid,DIALOGID+1,DIALOG_STYLE_LIST,"Copchase","Bir kaçan\nSon kaçana kadar","Seç","Geri");
  234. return 1;
  235. }
  236. else if(listitem == 1)
  237. {
  238. ShowPlayerDialog(playerid, DIALOGID+2, DIALOG_STYLE_INPUT , "Copchase", "Lütfen oyun dakikasını gir. (1>)", "Seç", "Geri");
  239. return 1;
  240. }
  241. else if(listitem == 2)
  242. {
  243. ShowPlayerDialog(playerid, DIALOGID+3, DIALOG_STYLE_LIST , "AutoFix", "Kapalı\nAktif","Seç","Geri");
  244. return 1;
  245. }
  246. else if(listitem == 3)
  247. {
  248. SendClientMessageToAll(RENK_YESIL,"[COPCHASE] Oyun moduna katılmak için /copchase komutunu kullanın.");
  249. g_TarafindanBaslatildi = playerid;
  250. katilmayauygun=true;
  251. SetTimer("CloseReg",KacmaSuresi*1000,false);
  252. SetTimer("CountDown",1000,true);
  253. return 1;
  254. }
  255. }
  256. return 1;
  257. }
  258. if(dialogid == DIALOGID+1)
  259. {
  260. if(response)
  261. {
  262. if(listitem == 0) KacmaModu=1;
  263. else if(listitem == 1)
  264. {
  265. if(g_Polis>2) KacmaModu=2;
  266. else
  267. {
  268. KacmaModu=1;
  269. SendClientMessage(playerid,RENK_KIRMIZI,"[COPCHASE] Oyunun başlaması için en az 3 kişi gerekli.");
  270. }
  271. }
  272. }
  273. new MainMenu[200];
  274. format(MainMenu,sizeof(MainMenu),"Mod [%s]\nOyun süresi [%imin]\nAutoFix[%s]\nOyunu başlat", ((KacmaModu == 1) ? ("Bir kaçan") : ("Son kaçana kadar")), ((KacmaZaman == 0) ? DEFAULT_TIME : (KacmaZaman/60000)), ((AutoFix == false) ? ("Kapalı") : ("Açık")));
  275. ShowPlayerDialog(playerid,DIALOGID,DIALOG_STYLE_LIST,"COPCHASE",MainMenu,"Seç","Çık");
  276. return 1;
  277. }
  278. if(dialogid == DIALOGID+2)
  279. {
  280. if(response)
  281. {
  282. if(IsNumeric(inputtext)) KacmaZaman=strval(inputtext)*60000;
  283. }
  284. new MainMenu[200];
  285. format(MainMenu,sizeof(MainMenu),"Mod [%s]\nOyun süresi [%imin]\nAutoFix[%s]\nOyunu başlat", ((KacmaModu == 1) ? ("Bir kaçan") : ("Son kaçana kadar")), ((KacmaZaman == 0) ? DEFAULT_TIME : (KacmaZaman/60000)), ((AutoFix == false) ? ("Kapalı") : ("Açık")));
  286. ShowPlayerDialog(playerid,DIALOGID,DIALOG_STYLE_LIST,"COPCHASE",MainMenu,"Seç","Çık");
  287. }
  288. if(dialogid == DIALOGID+3)
  289. {
  290. if(response)
  291. {
  292. if(listitem == 0) AutoFix=false;
  293. else if(listitem == 1) AutoFix=true;
  294. }
  295. new MainMenu[200];
  296. format(MainMenu,sizeof(MainMenu),"Mod [%s]\nOyun süresi [%imin]\nAutoFix[%s]\nOyunu başlat", ((KacmaModu == 1) ? ("Bir kaçan") : ("Son kaçana kadar")), ((KacmaZaman == 0) ? DEFAULT_TIME : (KacmaZaman/60000)), ((AutoFix == false) ? ("Kapalı") : ("Açık")));
  297. ShowPlayerDialog(playerid,DIALOGID,DIALOG_STYLE_LIST,"COPCHASE",MainMenu,"Seç","Çık");
  298. }
  299. return 1;
  300. }
  301.  
  302. public OnVehicleDamageStatusUpdate(vehicleid, playerid)
  303. {
  304. new Float:vehx, Float:vehy, Float:vehz;
  305. GetVehiclePos(vehicleid, vehx, vehy, vehz);
  306. if(AutoFix && copchase) RepairVehicle(vehicleid);
  307. foreach(Player, i)
  308. {
  309. if (GetPlayerState(i) == PLAYER_STATE_DRIVER && playerid != i)
  310. {
  311. if(katildi[playerid] && katildi[i] && copchase)
  312. {
  313. if(IsPlayerInRangeOfPoint(i, 10.0, vehx, vehy, vehz))
  314. {
  315. new vehicleid2 = GetPlayerVehicleID(i);
  316. if(KacmaModu==1)
  317. {
  318. new params[14];
  319. new msg[128],runner[MAX_PLAYER_NAME];
  320. if(g_Kacan[playerid] == 1 && CoolDown[playerid]==0)
  321. {
  322. g_Kacan[i]=1;
  323. g_Kacan[playerid]=0;
  324. GetPlayerName(i,runner,sizeof(runner));
  325. SetPlayerColor(i, RENK_KIRMIZI);
  326. SetPlayerColor(playerid, RENK_BEYAZ);
  327. GetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  328. SetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],false);
  329. GetVehicleParamsEx(vehicleid2,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  330. SetVehicleParamsEx(vehicleid2,params[0],params[1],params[2],params[3],params[4],params[5],true);
  331. TogglePlayerControllable(i,false);
  332. CoolDown[i]=5;
  333. SetTimerEx("Ready",5000,0,"i",i);
  334. SendClientMessage(i,RENK_KIRMIZI,"Beş saniye boyunca donduruldun!");
  335. }
  336. else if(g_Kacan[i] == 1 && CoolDown[i]==0)
  337. {
  338. g_Kacan[playerid]=1;
  339. g_Kacan[i]=0;
  340. GetPlayerName(playerid,runner,sizeof(runner));
  341. SetPlayerColor(playerid, RENK_KIRMIZI);
  342. SetPlayerColor(i, RENK_BEYAZ);
  343. GetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  344. SetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],true);
  345. GetVehicleParamsEx(vehicleid2,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  346. SetVehicleParamsEx(vehicleid2,params[0],params[1],params[2],params[3],params[4],params[5],false);
  347. TogglePlayerControllable(playerid,false);
  348. CoolDown[playerid]=5;
  349. SetTimerEx("Ready",5000,0,"i",playerid);
  350. SendClientMessage(playerid,RENK_KIRMIZI,"Beş saniye boyunca donduruldun!");
  351. }
  352. format(msg,sizeof(msg),"Kacan - %s",runner);
  353. TextDrawSetString(Text:Info, msg);
  354. foreach(Player,y)
  355. {
  356. if(katildi[y]) TextDrawShowForPlayer(y,Text:Info);
  357. }
  358. break;
  359. }
  360. if(KacmaModu==2)
  361. {
  362. if(g_Kacan[i]==1 && g_Kacan[playerid]==1) break;
  363. new params[7];
  364. GetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  365. SetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],true);
  366. GetVehicleParamsEx(vehicleid2,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  367. SetVehicleParamsEx(vehicleid2,params[0],params[1],params[2],params[3],params[4],params[5],true);
  368. new msg[128],runner[MAX_PLAYER_NAME],chaser[MAX_PLAYER_NAME];
  369. Katilimcilar--;
  370. if(Katilimcilar<2)
  371. {
  372. foreach(Player,f)
  373. {
  374. if(g_Kacan[f]==0) GetPlayerName(f,runner,sizeof(runner));
  375. }
  376. format(msg,sizeof(msg),"%s adlı kişi copchase oyununu kazandı!",runner);
  377. SendClientMessageToAll(RENK_YESIL, msg);
  378. CloseChase();
  379. }
  380. if(g_Kacan[playerid] == 1)
  381. {
  382. g_Kacan[i]=1;
  383. GetPlayerName(i,runner,sizeof(runner));
  384. GetPlayerName(playerid,chaser,sizeof(chaser));
  385. SetPlayerColor(i, RENK_KIRMIZI);
  386. }
  387. else if(g_Kacan[i] == 1)
  388. {
  389. g_Kacan[playerid]=1;
  390. GetPlayerName(playerid,runner,sizeof(runner));
  391. GetPlayerName(i,chaser,sizeof(chaser));
  392. SetPlayerColor(playerid, RENK_KIRMIZI);
  393. }
  394. format(msg,sizeof(msg),"[COPCHASE] %s adlı kişi %s adlı kişiyi yakaladı.",chaser,runner);
  395. foreach(Player,y)
  396. {
  397. if(katildi[y]) SendClientMessage(y, RENK_YESIL, msg);
  398. }
  399. break;
  400. }
  401. }
  402. }
  403. }
  404. }
  405. return 1;
  406. }
  407.  
  408. forward CloseReg();
  409. public CloseReg()
  410. {
  411. new Check;
  412. foreach(Player,i)
  413. {
  414. if(katildi[i]) Check++;
  415. }
  416. if(Check>1)
  417. {
  418. if(KacmaModu==1) PrepareChase();
  419. else
  420. {
  421. if(Check>2) PrepareChase();
  422. else
  423. {
  424. CloseChase();
  425. SendClientMessageToAll(RENK_KIRMIZI,"[COPCHASE] Oyun başlatılamadı çünkü çok az sayıda katılımcı var.");
  426. }
  427. }
  428. }
  429. else
  430. {
  431. CloseChase();
  432. SendClientMessageToAll(RENK_KIRMIZI,"[COPCHASE] Oyun başlatılamadı çünkü çok az sayıda katılımcı var.");
  433. }
  434. katilmayauygun=false;
  435. return 1;
  436. }
  437.  
  438. forward PrepareChase();
  439. public PrepareChase()
  440. {
  441. new chaser;
  442. chaser=Iter_Random(Dalyviai);
  443. while(katildi[chaser]!=1)
  444. {
  445. chaser=Iter_Random(Dalyviai);
  446. }
  447. foreach(Dalyviai, i)
  448. {
  449. new name[MAX_PLAYER_NAME], msg[60],chasem[100];
  450. if(katildi[i])
  451. {
  452. if(i != chaser) SetPlayerColor(i, RENK_BEYAZ);
  453. else SetPlayerColor(i, RENK_KIRMIZI);
  454. GetPlayerName(chaser,name,sizeof(name));
  455. format(chasem,sizeof(chasem),"[COPCHASE] Copchase oyunu başladı. Kaçan: %s",name);
  456. SendClientMessage(i, RENK_YESIL, chasem);
  457. if(KacmaModu==1)
  458. {
  459. format(msg,sizeof(msg),"Kacan - %s",name);
  460. TextDrawSetString(Text:Info, msg);
  461. TextDrawShowForPlayer(i,Text:Info);
  462. }
  463.  
  464. }
  465. }
  466. g_Kacan[chaser]=1;
  467. new params[7];
  468. new vehicleid = GetPlayerVehicleID(chaser);
  469. GetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  470. SetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],true);
  471. copchase=true;
  472. if(KacmaZaman<1) SetTimer("CloseChase",DEFAULT_TIME*60000,false);
  473. else SetTimer("CloseChase",KacmaZaman,false);
  474. return 1;
  475. }
  476.  
  477. forward CloseChase();
  478. public CloseChase()
  479. {
  480. if(copchase)
  481. {
  482. if(KacmaModu==1)
  483. {
  484. new name[MAX_PLAYER_NAME], msg[64];
  485. foreach(Player,f)
  486. {
  487. if(g_Kacan[f]==1) GetPlayerName(f,name,sizeof(name));
  488. }
  489. format(msg,sizeof(msg),"[COPCHASE] %s son kaçan kişi.",name);
  490. SendClientMessageToAll(RENK_YESIL, msg);
  491. }
  492. KacmaModu=1;
  493. KacmaZaman=0;
  494. Katilimcilar=0;
  495. AutoFix=false;
  496. for(new i;i<MAX_PLAYERS;i++)
  497. {
  498. if(katildi[i])
  499. {
  500. Iter_Remove(Dalyviai,i);
  501. katildi[i]=0;
  502. SetPlayerColor(i, 0x80808000);
  503. TextDrawHideForPlayer(i,Text:Info);
  504. if(g_Kacan[i]==1)
  505. {
  506. g_Kacan[i]=0;
  507. new vehicleid = GetPlayerVehicleID(i);
  508. new params[7];
  509. GetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],params[6]);
  510. SetVehicleParamsEx(vehicleid,params[0],params[1],params[2],params[3],params[4],params[5],false);
  511. }
  512. }
  513. }
  514. }
  515. copchase=false;
  516. }
  517.  
  518. forward CountDown();
  519. public CountDown()
  520. {
  521. new msg[64];
  522. KacmaSuresi--;
  523. if(KacmaSuresi % 30 == 0 && KacmaSuresi>1)
  524. {
  525. format(msg,sizeof(msg),"[COPCHASE] %d saniye sonra oyun başlayacak.",KacmaSuresi);
  526. SendClientMessageToAll(RENK_BEYAZ,msg);
  527. }
  528. else if(KacmaSuresi==10)
  529. {
  530. format(msg,sizeof(msg),"[COPCHASE] %d saniye sonra oyun başlayacak.",KacmaSuresi);
  531. SendClientMessageToAll(RENK_BEYAZ,msg);
  532. }
  533. else if(KacmaSuresi==1)
  534. {
  535. KillTimer(CountDown());
  536. }
  537. }
  538.  
  539.  
  540. forward Ready(playerid);
  541. public Ready(playerid)
  542. {
  543. TogglePlayerControllable(playerid,true);
  544. CoolDown[playerid]=0;
  545. }
  546.  
  547. IsNumeric(const string[])
  548. {
  549. for (new i = 0, j = strlen(string); i < j; i++)
  550. {
  551. if (string[i] > '9' || string[i] < '0') return 0;
  552. }
  553. return 1;
  554. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement