HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fun>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <dhudmessage>
  7. #include <cstrike>
  8.  
  9. #define PLUGIN "Stay On Feet!"
  10. #define VERSION "1.41"
  11. #define AUTHOR "DeRoiD"
  12.  
  13. #define DeszkaId 20150307
  14.  
  15. #pragma semicolon 1
  16.  
  17. new ElozoDeszka[200][32], EltuntDeszkak, Elok[2], Masodperc;
  18. new bool:Jatek, bool:Start;
  19. new El[33], Beallt[33], Dollar[33], Gravitacio[33], Sebesseg[33];
  20. new Bekapcsolva, DeszkaSzam;
  21. new Bot;
  22. new FajlUt[] = "addons/amxmodx/configs/stayonfeet_maps.ini";
  23. new Cvarok[8];
  24.  
  25. new const DeszkaSzinek[][] =
  26. {
  27. "0 255 0", "0 0 255", "255 0 0", "255 255 0",
  28. "255 0 255", "255 170 0", "0 127 255", "120 120 120",
  29. "0 255 127", "0 0 0", "255 255 255", "165 128 89"
  30. };
  31. new const SkyBox[][] =
  32. {
  33. "neb1", "neb6", "neb7",
  34. "xen8", "xen9", "xen10",
  35. "space", "night", "doom1"
  36. };
  37. new const EltunesiEffekt[][] =
  38. {
  39. "stayonfeet/boing1.wav",
  40. "stayonfeet/boing2.wav",
  41. "stayonfeet/boing3.wav"
  42. };
  43. new const HalalEffekt[][] =
  44. {
  45. "stayonfeet/halal1.wav",
  46. "stayonfeet/halal2.wav"
  47. };
  48. public plugin_precache()
  49. {
  50. for(new a; a < sizeof EltunesiEffekt; a++)
  51. {
  52. precache_sound(EltunesiEffekt[a]);
  53. }
  54. for(new b; b < sizeof HalalEffekt; b++)
  55. {
  56. precache_sound(HalalEffekt[b]);
  57. }
  58. }
  59. public plugin_init()
  60. {
  61. register_plugin(PLUGIN, VERSION, AUTHOR);
  62.  
  63. new PalyaNev[12];
  64. get_mapname(PalyaNev, 11);
  65.  
  66. if(equali(PalyaNev, "stayonfeet_"))
  67. Bekapcsolva = 1;
  68.  
  69. if(Bekapcsolva == 1)
  70. {
  71. register_logevent("KorNullazas", 2, "1=Round_End");
  72. register_logevent("KorKezdes", 2, "1=Round_Start");
  73. register_logevent("KorNullazas", 2, "0=World triggered", "1&Restart_Round_");
  74. register_logevent("KorNullazas", 2, "0=World triggered", "1=Game_Commencing");
  75.  
  76. register_event("Money", "PenzEvent", "b");
  77. register_event("CurWeapon","Kepessegek","be","1=1");
  78.  
  79. register_forward(FM_Touch, "PadloErintes");
  80. register_touch("padlo","player","PadloErintes");
  81.  
  82. RegisterHam(Ham_Spawn, "player", "UjraEledes", 1);
  83. RegisterHam(Ham_TakeDamage, "player", "Sebzes", 0);
  84.  
  85. register_message(get_user_msgid("ShowMenu"), "MenuTiltas");
  86. register_message(get_user_msgid("VGUIMenu"), "MenuTiltas");
  87.  
  88. register_clcmd("jointeam", "CsatlakozasTiltas");
  89. register_clcmd("joinclass", "CsatlakozasTiltas");
  90.  
  91. register_clcmd("say /bolt", "Bolt");
  92. register_clcmd("say_team /bolt", "Bolt");
  93. register_clcmd("say /shop", "Bolt");
  94. register_clcmd("say_team /shop", "Bolt");
  95.  
  96. set_task(5.0, "Ellenorzes", DeszkaId+4, _, _, "b");
  97. set_task(10.0, "UjraInditas");
  98.  
  99. Cvarok[0] = register_cvar("eltunesi_ido", "2.5");
  100. Cvarok[1] = register_cvar("tulelo_dollar", "3");
  101. Cvarok[2] = register_cvar("bolt_gravitacio", "0.6");
  102. Cvarok[3] = register_cvar("bolt_sebesseg", "320.0");
  103. Cvarok[4] = register_cvar("bolt_noclip_ido", "5.0");
  104. Cvarok[5] = register_cvar("kezdo_ido", "10");
  105. Cvarok[6] = register_cvar("stayonfeet_bot", "1");
  106. Cvarok[7] = register_cvar("deszka_szinek", "1");
  107.  
  108. PalyaBeallitasok();
  109. if(get_pcvar_num(Cvarok[6]) == 1)
  110. {
  111. BotKeszitese();
  112. }
  113. }
  114. register_dictionary("stayonfeet.txt");
  115. }
  116. public Kepessegek(id)
  117. {
  118. if(is_user_alive(id))
  119. {
  120. if(Gravitacio[id] == 1)
  121. set_user_gravity(id, Float:get_pcvar_float(Cvarok[2]));
  122. if(Sebesseg[id] == 1)
  123. set_user_maxspeed(id, get_pcvar_float(Cvarok[3]));
  124. }
  125. }
  126. public Bolt(id)
  127. {
  128. static String[64];
  129. formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLTCIM", Dollar[id]);
  130. new menu = menu_create(String, "BoltMenu" );
  131. formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT1");
  132. menu_additem(menu, String, "1");
  133. formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT2");
  134. menu_additem(menu, String, "2");
  135. formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT3");
  136. menu_additem(menu, String, "3");
  137. formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT4");
  138. menu_setprop(menu, MPROP_EXITNAME, String);
  139. menu_display(id, menu);
  140. }
  141. public BoltMenu(id, menu, item)
  142. {
  143. if(item == MENU_EXIT)
  144. {
  145. menu_destroy(menu);
  146. return;
  147. }
  148. new data[9], name[64], Gomb;
  149. new access, callback;
  150. menu_item_getinfo(menu, item, access, data,charsmax(data),
  151. name, charsmax(name), callback);
  152.  
  153. Gomb = str_to_num(data);
  154.  
  155. if(Gomb == 1)
  156. {
  157. if(Dollar[id] >= 3)
  158. {
  159. Gravitacio[id] = 1;
  160. set_user_gravity(id, Float:get_pcvar_float(Cvarok[2]));
  161. Dollar[id] -= 3;
  162. PenzEvent(id);
  163. set_dhudmessage(0, 255, 255, -1.0, 0.70, 0, 6.0, 3.0);
  164. show_dhudmessage(id, "%L", LANG_SERVER, "SIKERESVASARLAS");
  165. }
  166. else
  167. {
  168. set_dhudmessage(255, 42, 0, -1.0, 0.70, 0, 6.0, 3.0);
  169. show_dhudmessage(id, "%L", LANG_SERVER, "NINCSELEGDOLLAROD");
  170. }
  171. }
  172. if(Gomb == 2)
  173. {
  174. if(Dollar[id] >= 3)
  175. {
  176. Sebesseg[id] = 1;
  177. set_user_maxspeed(id, get_pcvar_float(Cvarok[3]));
  178. Dollar[id] -= 3;
  179. PenzEvent(id);
  180. set_dhudmessage(0, 255, 255, -1.0, 0.70, 0, 6.0, 3.0);
  181. show_dhudmessage(id, "%L", LANG_SERVER, "SIKERESVASARLAS");
  182. }
  183. else
  184. {
  185. set_dhudmessage(255, 42, 0, -1.0, 0.70, 0, 6.0, 3.0);
  186. show_dhudmessage(id, "%L", LANG_SERVER, "NINCSELEGDOLLAROD");
  187.  
  188. }
  189. }
  190. if(Gomb == 3)
  191. {
  192. if(Dollar[id] >= 6)
  193. {
  194. remove_task(id);
  195. set_task(get_pcvar_float(Cvarok[4]), "NoClipKi", id);
  196. set_user_noclip(id, 1);
  197. Dollar[id] -= 6;
  198. PenzEvent(id);
  199. set_dhudmessage(0, 255, 255, -1.0, 0.70, 0, 6.0, 3.0);
  200. show_dhudmessage(id,"%L", LANG_SERVER, "SIKERESVASARLAS");
  201. }
  202. else
  203. {
  204. set_dhudmessage(255, 42, 0, -1.0, 0.70, 0, 6.0, 3.0);
  205. show_dhudmessage(id, "%L", LANG_SERVER, "NINCSELEGDOLLAROD");
  206. }
  207. }
  208. }
  209. public NoClipKi(id)
  210. {
  211. set_user_noclip(id, 0);
  212. }
  213. public PenzEvent(id)
  214. {
  215. set_pdata_int(id, 115, 0) ;
  216. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Money"), _, id);
  217. write_long(Dollar[id]);
  218. write_byte(1);
  219. message_end();
  220. }
  221. public PalyaBeallitasok()
  222. {
  223. new Egbolt[32];
  224. format(Egbolt, charsmax(Egbolt), SkyBox[random(sizeof(SkyBox))]);
  225. server_cmd("sv_skyname %s", Egbolt);
  226. log_amx("||------------------------------||");
  227. log_amx("||-Stay On Feet! Author: DeRoiD-||");
  228. log_amx("||------Steam: deroidocska------||");
  229. log_amx("||------------------------------||");
  230.  
  231. if(!fopen(FajlUt, "r"))
  232. {
  233. new Uzenet[32];
  234. format(Uzenet, charsmax(Uzenet),"Not found: %s", FajlUt);
  235. set_fail_state(Uzenet);
  236. return;
  237. }
  238. new Fajl = fopen(FajlUt, "rt");
  239. new Sor[256], Lekeres[2][32], PalyaNev[32];
  240. while(!feof(Fajl))
  241. {
  242. fgets(Fajl, Sor, 255);
  243. if(Sor[0] == ';' || strlen(Sor) < 2)
  244. continue;
  245. parse(Sor, Lekeres[0], 31, Lekeres[1], 31);
  246. get_mapname(PalyaNev, 31);
  247. if(equal(Lekeres[0], PalyaNev))
  248. {
  249. DeszkaSzam = str_to_num(Lekeres[1]);
  250. break;
  251. }
  252. }
  253. fclose(Fajl);
  254. DeszkakBetoltese();
  255. }
  256. public CsatlakozasTiltas(id)
  257. {
  258. if(Beallt[id] == 1 && Bekapcsolva == 1)
  259. {
  260. return PLUGIN_HANDLED;
  261. }
  262. return PLUGIN_HANDLED;
  263. }
  264. public MenuTiltas()
  265. {
  266. return PLUGIN_HANDLED;
  267. }
  268. public BotKeszitese() {
  269. Bot = engfunc(EngFunc_CreateFakeClient, "Stay On Feet!");
  270. dllfunc(MetaFunc_CallGameEntity, "player", Bot);
  271. set_pev(Bot, pev_flags, FL_CLIENT);
  272. set_pev(Bot, pev_model, "");
  273. set_pev(Bot, pev_viewmodel2, "");
  274. set_pev(Bot, pev_modelindex, 0);
  275. set_pev(Bot, pev_renderfx, kRenderFxNone);
  276. set_pev(Bot, pev_rendermode, kRenderTransAlpha);
  277. set_pev(Bot, pev_renderamt, 0.0);
  278. cs_set_user_team(Bot, CS_TEAM_T);
  279. }
  280. public UjraInditas()
  281. {
  282. KorNullazas();
  283. set_pcvar_num(get_cvar_pointer("sv_restart"), 1);
  284. new Jatekosok[32], JatekosSzam, id;
  285. get_players(Jatekosok, JatekosSzam, "c");
  286. for(new i; i < JatekosSzam; i++)
  287. {
  288. id = Jatekosok[i];
  289. PenzEvent(id);
  290. }
  291. }
  292. public Ellenorzes()
  293. {
  294. if(Elok[1] > 1 && !Jatek && Start)
  295. {
  296. UjraInditas();
  297. }
  298. }
  299. public Hud()
  300. {
  301. new Jatekosok[32], JatekosSzam, id;
  302. get_players(Jatekosok, JatekosSzam, "c");
  303. for(new i; i < JatekosSzam; i++)
  304. {
  305. id = Jatekosok[i];
  306. set_hudmessage(255, 255, 255, -1.0, 0.05, 0, 1.0, 2.1);
  307. show_hudmessage(id, "%L", LANG_SERVER, "HUD", Elok[0], Elok[1], DeszkaSzam-EltuntDeszkak);
  308. PenzEvent(id);
  309. }
  310. }
  311. public UjraEledes(id)
  312. {
  313. if(is_user_alive(id) && !is_user_bot(id) && Bekapcsolva == 1)
  314. {
  315. if(cs_get_user_team(id) == CS_TEAM_T)
  316. cs_set_user_team(id, CS_TEAM_CT);
  317. if(!Jatek)
  318. {
  319. El[id] = 1;
  320. Elok[0]++;
  321. Elok[1]++;
  322. PenzEvent(id);
  323. }
  324. else
  325. {
  326. set_dhudmessage(255, 255, 255, 0.70, 0.80, 0, 6.0, 3.0);
  327. show_dhudmessage(id, "%L", LANG_SERVER, "JATEKVAN");
  328. user_silentkill(id);
  329. }
  330. }
  331. return PLUGIN_HANDLED;
  332. }
  333. public Sebzes(victim, inflictor, attacker, Float:damage)
  334. {
  335. if(!is_user_alive(attacker) || !is_user_connected(attacker) || attacker < 1 || attacker > 32 || Bekapcsolva == 0)
  336. return HAM_IGNORED;
  337.  
  338. if(Bekapcsolva == 1)
  339. return HAM_SUPERCEDE;
  340.  
  341. return HAM_IGNORED;
  342. }
  343. public client_connect(id)
  344. {
  345. El[id] = 0;
  346. }
  347. public client_putinserver(id)
  348. {
  349. if(is_user_bot(id) || Bekapcsolva == 0)
  350. return PLUGIN_HANDLED;
  351. Beallt[id] = 0;
  352. Dollar[id] = 0;
  353. Gravitacio[id] = 0;
  354. Sebesseg[id] = 0;
  355. set_task(0.1, "Beallitas", id);
  356. cs_set_user_money(id, 0);
  357. return PLUGIN_HANDLED;
  358. }
  359. public Beallitas(id)
  360. {
  361. engclient_cmd(id, "jointeam", "2");
  362. engclient_cmd(id, "joinclass", "5");
  363. Beallt[id] = 1;
  364. }
  365. public client_disconnect(id)
  366. {
  367. if(El[id] == 1)
  368. {
  369. El[id] = 0;
  370. Elok[0]--;
  371. Elok[1]--;
  372. }
  373. }
  374. public DeszkakBetoltese()
  375. {
  376. new Szam, DeszkaSzinSzam = -1;
  377. for(new bSzam; bSzam < DeszkaSzam; bSzam++)
  378. {
  379. Szam++;
  380. DeszkaSzinSzam++;
  381. if(DeszkaSzinSzam >= sizeof(DeszkaSzinek))
  382. {
  383. DeszkaSzinSzam = 0;
  384. }
  385. new DeszkaNeve[64], Deszka, Float:DeszkaSzin[3], SzinLekeres[3][16];
  386. parse(DeszkaSzinek[DeszkaSzinSzam], SzinLekeres[0], 4, SzinLekeres[1], 4, SzinLekeres[2], 4);
  387. if(get_pcvar_num(Cvarok[7]) == 1)
  388. {
  389. DeszkaSzin[0] = str_to_float(SzinLekeres[0]);
  390. DeszkaSzin[1] = str_to_float(SzinLekeres[1]);
  391. DeszkaSzin[2] = str_to_float(SzinLekeres[2]);
  392. }
  393. else if(get_pcvar_num(Cvarok[7]) == 0)
  394. {
  395. DeszkaSzin[0] = random_float(1.0, 255.0);
  396. DeszkaSzin[1] = random_float(1.0, 255.0);
  397. DeszkaSzin[2] = random_float(1.0, 255.0);
  398. }
  399. format(DeszkaNeve, 63, "d%d", Szam);
  400. Deszka = find_ent_by_tname(-1, DeszkaNeve);
  401. set_pev(Deszka, pev_solid, SOLID_BSP);
  402. set_pev(Deszka, pev_rendermode, kRenderTransColor);
  403. set_pev(Deszka, pev_rendercolor, Float: DeszkaSzin[0], DeszkaSzin[1], DeszkaSzin[2]);
  404. set_pev(Deszka, pev_renderamt, Float:{ 150.0 });
  405. }
  406. }
  407. public PadloErintes(Padlo, id)
  408. {
  409. if(!is_user_alive(id))
  410. return FMRES_IGNORED;
  411. new FunkcioNev[32];
  412. pev(Padlo, pev_classname, FunkcioNev, 31);
  413. if(equali(FunkcioNev, "trigger_hurt"))
  414. {
  415. new Nev[32];
  416. get_user_name(id, Nev, charsmax(Nev));
  417. set_dhudmessage(255, 255, 255, 0.70, 0.80, 0, 6.0, 3.0);
  418. show_dhudmessage(0, "%L", LANG_SERVER, "LEESSIK", Nev);
  419. emit_sound(id, CHAN_WEAPON, HalalEffekt[random(sizeof(HalalEffekt))], 1.0, ATTN_NORM, 0, PITCH_NORM);
  420. Elok[0]--;
  421. El[id] = 0;
  422. PenzEvent(id);
  423. }
  424. return FMRES_IGNORED;
  425. }
  426. public DeszkakUjratoltese()
  427. {
  428. new Szam;
  429. for(new bSzam; bSzam < DeszkaSzam; bSzam++)
  430. {
  431. Szam++;
  432. new DeszkaNeve[64], Deszka,Float:DeszkaSzin[3];
  433. DeszkaSzin[0] = random_float(1.0, 255.0);
  434. DeszkaSzin[1] = random_float(1.0, 255.0);
  435. DeszkaSzin[2] = random_float(1.0, 255.0);
  436. format(DeszkaNeve, 63, "d%d", Szam);
  437. Deszka = find_ent_by_tname(-1, DeszkaNeve);
  438. set_pev(Deszka, pev_solid, SOLID_BSP);
  439. set_pev(Deszka, pev_rendermode, kRenderTransColor);
  440. set_pev(Deszka, pev_renderamt, Float:{ 150.0 });
  441. }
  442. }
  443. public KorNullazas()
  444. {
  445. remove_task(DeszkaId);
  446. remove_task(DeszkaId+1);
  447. remove_task(DeszkaId+2);
  448. remove_task(DeszkaId+3);
  449. Jatek = false;
  450. Masodperc = 0;
  451. EltuntDeszkak = 0;
  452. Elok[0] = 0;
  453. Elok[1] = 0;
  454. DeszkakUjratoltese();
  455. DeszkakBlokk();
  456. new Jatekosok[32], JatekosSzam, id;
  457. get_players(Jatekosok, JatekosSzam, "c");
  458. for(new i; i < JatekosSzam; i++)
  459. {
  460. id = Jatekosok[i];
  461. Gravitacio[id] = 0;
  462. Sebesseg[id] = 0;
  463. }
  464. }
  465. public KorKezdes()
  466. {
  467. Jatek = false;
  468. Start = true;
  469. Masodperc = get_pcvar_num(Cvarok[5]);
  470. new Jatekosok[32], JatekosSzam;
  471. get_players(Jatekosok, JatekosSzam, "c");
  472. if(JatekosSzam > 1)
  473. {
  474. Start = false;
  475. Szamlalo();
  476. }
  477. else
  478. {
  479. set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 5.0);
  480. show_dhudmessage(0, "%L", LANG_SERVER, "NINCSELEGJATEKOS");
  481. }
  482.  
  483. }
  484. public Szamlalo()
  485. {
  486. if(Masodperc > 0)
  487. {
  488. Masodperc--;
  489. set_task(1.0, "Szamlalo", DeszkaId+2);
  490. client_print(0, print_center, "%L", LANG_SERVER, "KEZDOUZENET", Masodperc);
  491. }
  492. else
  493. {
  494. Jatek = true;
  495. remove_task(DeszkaId);
  496. remove_task(DeszkaId+1);
  497. remove_task(DeszkaId+2);
  498. remove_task(DeszkaId+3);
  499. set_task(0.1, "Eltunes", DeszkaId+3);
  500. set_task(1.0, "Hud", DeszkaId+1, _, _, "b");
  501. }
  502. }
  503. public DeszkakBlokk()
  504. {
  505. new Szam;
  506. for(new bSzam; bSzam < DeszkaSzam; bSzam++)
  507. {
  508. Szam++;
  509. format(ElozoDeszka[Szam], 31, "0");
  510. }
  511. }
  512. public Eltunes()
  513. {
  514. new Szam = random_num(1, DeszkaSzam);
  515. if(!equal(ElozoDeszka[Szam], "1") && DeszkaSzam-1 > EltuntDeszkak && Jatek && !Start)
  516. {
  517. new DeszkaNeve[64], Deszka;
  518. format(DeszkaNeve, 63, "d%d", Szam);
  519. Deszka = find_ent_by_tname(-1, DeszkaNeve);
  520. set_pev(Deszka, pev_solid, SOLID_NOT);
  521. set_pev(Deszka, pev_renderamt, Float:{ 0.0 });
  522. format(ElozoDeszka[Szam], 31, "1");
  523. EltuntDeszkak++;
  524. set_task(get_pcvar_float(Cvarok[0]), "Eltunes", DeszkaId+3);
  525. emit_sound(Deszka, CHAN_WEAPON, EltunesiEffekt[random(sizeof(EltunesiEffekt))], 1.0, ATTN_NORM, 0, PITCH_NORM);
  526. }
  527. else if(DeszkaSzam-1 > EltuntDeszkak && !Start)
  528. {
  529. set_task(0.0, "Eltunes", DeszkaId+3);
  530. }
  531. else
  532. {
  533. Jatek = false;
  534. new Tulelok[256], TulelokSzama;
  535. new Jatekosok[32], JatekosSzam, id;
  536. get_players(Jatekosok, JatekosSzam, "c");
  537. for(new i; i < JatekosSzam; i++)
  538. {
  539. id = Jatekosok[i];
  540. if(!is_user_alive(id) || !is_user_connected(id))
  541. continue;
  542. TulelokSzama++;
  543. new Nev[32];
  544. get_user_name(id, Nev, charsmax(Nev));
  545. format(Nev, charsmax(Nev), "%s ", Nev);
  546. add(Tulelok, 255, Nev);
  547. user_silentkill(id);
  548. set_user_frags(id, get_user_frags(id)+1);
  549. cs_set_user_deaths(id, cs_get_user_deaths(id)-1);
  550. Dollar[id] += get_pcvar_num(Cvarok[1]);
  551. PenzEvent(id);
  552. }
  553. if(TulelokSzama > 0)
  554. {
  555. set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 6.0);
  556. show_dhudmessage(0, "%L", LANG_SERVER, "TULELOK", Tulelok);
  557. }
  558. else
  559. {
  560. set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 6.0);
  561. show_dhudmessage(0, "%L", LANG_SERVER, "NINCSTULELOK");
  562. }
  563. }
  564. }
  565. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  566. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  567. */
  568.