hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.23. 11:47



Jelenlévő felhasználók

Jelenleg 229 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 229 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Rush - Bomba
HozzászólásElküldve: 2015.07.07. 22:00 
Offline
Tud valamit

Csatlakozott: 2014.10.28. 15:46
Hozzászólások: 110
Megköszönt másnak: 13 alkalommal
Sziasztok!
Valaki ki venné a pluginból azt a részt ha le rakod a bombát akkor ne legyen rush?

Úgy szeretném ha le rakják a bombát akkor is legyen rush háló! "pálya bug miatt"

SMA Forráskód: [ Mindet kijelol ]
  1. /* Anti Rush by kiki | Support: http://www.hlmod.hu
  2.  * Verzió: 2.8
  3.  *
  4.  * Changelog: 1.0 - Alap verzió, csak dust2re, valamikor 2011-ben
  5.  * 2.0 - Bővített verzió, menü csinálása, zóna mód, visszalökés, és játékos megölése, cvarok létrehozása...stb
  6.  * 2.1 - Kisebb hibbák javítása
  7.  * 2.2 - Rush mehet mert... Indok megadása, új parancsok
  8.  * 2.3 - Üzenetek, és létfontosságú dolgok, csak akkor futnak le, ha van zóna létrehozva, olyan mapon ahol nincs, nem fognak megjelenni az üzenetek.
  9.  * 2.4 - Csapat beállítása 1-1 zónára. Ez jól jön a túszos, és egyéb pályákhoz.
  10.  * 2.5 - Konfig mappa átnevezve, nem kontabilis előző verzióval.
  11.  * 2.6 - ct elo jatekosok csekkolasa is <- terrorista zonahoz.
  12.  * 2.7 - Új cvar mely lehetővé teszi, hogy kiválaszt színes, vagy épp sima chat üzenetek jelenjenek meg.
  13.  * 2.8 - Villám effekt cvar, az ölőz zónához. Alapból ki van kapcsolva.
  14.  */
  15.  
  16.  
  17. #include <amxmodx>
  18. #include <amxmisc>
  19. #include <fakemeta>
  20. #include <xs>
  21. #if defined _dhudmessage_included
  22. #endinput
  23. #endif
  24.  
  25. #define _dhudmessage_included
  26.  
  27. #include <amxmodx>
  28.  
  29. stock __dhud_color;
  30. stock __dhud_x;
  31. stock __dhud_y;
  32. stock __dhud_effect;
  33. stock __dhud_fxtime;
  34. stock __dhud_holdtime;
  35. stock __dhud_fadeintime;
  36. stock __dhud_fadeouttime;
  37. stock __dhud_reliable;
  38.  
  39. stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
  40. {
  41. #define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
  42. #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )
  43.  
  44. __dhud_color = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
  45. __dhud_x = _:x;
  46. __dhud_y = _:y;
  47. __dhud_effect = effects;
  48. __dhud_fxtime = _:fxtime;
  49. __dhud_holdtime = _:holdtime;
  50. __dhud_fadeintime = _:fadeintime;
  51. __dhud_fadeouttime = _:fadeouttime;
  52. __dhud_reliable = _:reliable;
  53.  
  54. return 1;
  55. }
  56.  
  57. stock show_dhudmessage( index, const message[], any:... )
  58. {
  59. new buffer[ 128 ];
  60. new numArguments = numargs();
  61.  
  62. if( numArguments == 2 )
  63. {
  64. send_dhudMessage( index, message );
  65. }
  66. else if( index || numArguments == 3 )
  67. {
  68. vformat( buffer, charsmax( buffer ), message, 3 );
  69. send_dhudMessage( index, buffer );
  70. }
  71. else
  72. {
  73. new playersList[ 32 ], numPlayers;
  74. get_players( playersList, numPlayers, "ch" );
  75.  
  76. if( !numPlayers )
  77. {
  78. return 0;
  79. }
  80.  
  81. new Array:handleArrayML = ArrayCreate();
  82.  
  83. for( new i = 2, j; i < numArguments; i++ )
  84. {
  85. if( getarg( i ) == LANG_PLAYER )
  86. {
  87. while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
  88. j = 0;
  89.  
  90. if( GetLangTransKey( buffer ) != TransKey_Bad )
  91. {
  92. ArrayPushCell( handleArrayML, i++ );
  93. }
  94. }
  95. }
  96.  
  97. new size = ArraySize( handleArrayML );
  98.  
  99. if( !size )
  100. {
  101. vformat( buffer, charsmax( buffer ), message, 3 );
  102. send_dhudMessage( index, buffer );
  103. }
  104. else
  105. {
  106. for( new i = 0, j; i < numPlayers; i++ )
  107. {
  108. index = playersList[ i ];
  109.  
  110. for( j = 0; j < size; j++ )
  111. {
  112. setarg( ArrayGetCell( handleArrayML, j ), 0, index );
  113. }
  114.  
  115. vformat( buffer, charsmax( buffer ), message, 3 );
  116. send_dhudMessage( index, buffer );
  117. }
  118. }
  119.  
  120. ArrayDestroy( handleArrayML );
  121. }
  122.  
  123. return 1;
  124. }
  125.  
  126. stock send_dhudMessage( const index, const message[] )
  127. {
  128. message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
  129. {
  130. write_byte( strlen( message ) + 31 );
  131. write_byte( DRC_CMD_MESSAGE );
  132. write_byte( __dhud_effect );
  133. write_long( __dhud_color );
  134. write_long( __dhud_x );
  135. write_long( __dhud_y );
  136. write_long( __dhud_fadeintime );
  137. write_long( __dhud_fadeouttime );
  138. write_long( __dhud_holdtime );
  139. write_long( __dhud_fxtime );
  140. write_string( message );
  141. }
  142. message_end();
  143. }
  144.  
  145.  
  146. #define MAXZONAK 100
  147. #define ZONAMUTATAS 3333
  148. #define TASKRUSH 4444
  149. #define UnitsToMeters(%1) (%1*0.0254) //Unitot átrakja méterré!
  150. #define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
  151. #define write_coord_f(%1) ( engfunc( EngFunc_WriteCoord, %1 ) )
  152. #define null_vector ( Float:{ 0.0, 0.0, 0.0 } )
  153.  
  154. enum ZONAMOD
  155. {
  156. SEMMI,
  157. OLES,
  158. RUSH
  159. }
  160.  
  161. enum CSAPATOK
  162. {
  163. MINDENKI,
  164. TE,
  165. CT
  166. }
  167.  
  168. new tipus[ZONAMOD] = { SOLID_NOT, SOLID_TRIGGER, SOLID_TRIGGER }
  169. new zonaneve[ZONAMOD][] = { "zona_nincs", "zona_oles", "zona_rush"}
  170. new zonamod[ZONAMOD][] = { "NINCS", "JATEKOS MEGOLESE", "RUSH ZONA"}
  171. new csapatneve[CSAPATOK][] = { "zona_mindenki", "zona_te", "zona_ct"}
  172. new celcsapat[CSAPATOK][] = { "MINDENKI", "TERRORISTAK", "ZSARUK"}
  173.  
  174. new zone_color_red[3] = { 255, 0, 0 }
  175. new zone_color_green[3] = { 255, 255, 0 }
  176. new zone_color_blue[3] = { 0, 0, 255 }
  177.  
  178. new zonaszin[ZONAMOD][3] =
  179. {
  180. { 255, 0, 255 },
  181. { 255, 0, 0 },
  182. { 0, 255, 0 }
  183. }
  184.  
  185. new szerkeszto = 0
  186.  
  187. new zona[MAXZONAK]
  188. new maxzonak
  189. new ezazona
  190. new kordinata = 0 // 0 - X | 1 - Y | 2 - Z
  191. new kordinatak[3][] = { "X", "Y", "Z" }
  192.  
  193. new alaptavolsag=10 //Unitba kell megadni!
  194.  
  195. new spr_dot
  196. new light
  197. new smoke
  198. new villamlas
  199. new g_screenfade
  200.  
  201. new bool:rushmehet
  202.  
  203. new cvar_alivenum
  204. new cvar_time
  205. new cvar_menusounds
  206. new cvar_colorchat
  207. new cvar_thunder
  208.  
  209. public plugin_init()
  210. {
  211. register_plugin("Anti-Rush", "2.8", "kiki - hlmod.hu")
  212. register_cvar("Rush Vedo", "By kiki33", FCVAR_SERVER)
  213.  
  214. register_clcmd("say /rush", "rushmenu", ADMIN_MENU)
  215. register_clcmd("say_team /rush", "rushmenu", ADMIN_MENU)
  216. register_clcmd("say /antirush", "rushmenu", ADMIN_MENU)
  217. register_clcmd("say_team /antirush", "rushmenu", ADMIN_MENU)
  218. register_clcmd("antirush", "rushmenu", ADMIN_MENU)
  219.  
  220. register_logevent( "eRound_start", 2, "1=Round_Start" );
  221. register_event("SendAudio", "bomb_planted", "a", "2&%!MRAD_BOMBPL")
  222. register_logevent("eRoundEnd", 2, "1=Round_End")
  223.  
  224. register_forward(FM_Touch, "fw_touch")
  225.  
  226. g_screenfade = get_user_msgid("ScreenFade")
  227.  
  228. cvar_alivenum = register_cvar("rush_alive_players", "0") //Ha ketto vagy kevesebb terrorista el mehet a rush
  229. cvar_time = register_cvar("rush_time", "180.0") //Mennyi ido mulva lehessen korkezdestol rusholni. Erteke FLOAT!!!
  230. cvar_menusounds = register_cvar("rush_menusounds", "1") //Menuben a gombok nyomasara hangok jatszodnak le. Bekapcsolasa ajanlott! 1:be | 0:ki
  231. cvar_colorchat = register_cvar("rush_colorchat", "1"); //Színes chat üzenetek. 0:kikapcsolva 1: bekapcsolva
  232. cvar_thunder = register_cvar("rush_thundereffect", "0"); //Villámlás effekt őlős zónához. 0: kikapcsolva 1: bekapcsolva
  233.  
  234. set_task(1.0, "zonakbetoltese")
  235. }
  236.  
  237. public plugin_precache()
  238. {
  239. villamlas = precache_sound("ambience/thunder_clap.wav");
  240. precache_model("models/gib_skull.mdl")
  241. //precache_model("sprites/antirush/antirush.spr") HAMAROSAN
  242. light = precache_model("sprites/lgtning.spr")
  243. smoke = precache_model("sprites/steam1.spr")
  244. spr_dot = precache_model("sprites/dot.spr")
  245. }
  246.  
  247. public client_disconnect(id)
  248. {
  249. if (id == szerkeszto) zonakeltuntetese()
  250. }
  251.  
  252. public zonakmentese(id)
  253. {
  254. new zonafajl[200]
  255. new palya[50]
  256.  
  257. get_configsdir(zonafajl, 199)
  258. format(zonafajl, 199, "%s/antirush_by_kiki", zonafajl)
  259.  
  260. if (!dir_exists(zonafajl)) mkdir(zonafajl)
  261.  
  262. get_mapname(palya, 49)
  263. format(zonafajl, 199, "%s/%s.kordinatak", zonafajl, palya)
  264. delete_file(zonafajl)
  265.  
  266. zonakereses()
  267.  
  268. new szoveg[120];
  269. format(szoveg, 119, "; Ez a konfig a %s palyahoz tartozik!", palya)
  270.  
  271. write_file(zonafajl, "; Anti-Rush By kiki - hlmod.hu")
  272. write_file(zonafajl, szoveg)
  273. write_file(zonafajl, "")
  274.  
  275. for(new i = 0; i < maxzonak; i++)
  276. {
  277. new z = zona[i]
  278. new zm = pev(z, pev_iuser1)
  279. new csp = pev(z, pev_iuser2)
  280.  
  281. new Float:pos[3]
  282. pev(z, pev_origin, pos)
  283.  
  284. new Float:mins[3], Float:maxs[3]
  285. pev(z, pev_mins, mins)
  286. pev(z, pev_maxs, maxs)
  287.  
  288. new output[1200];
  289. format(output, 1199, "%s %s", zonaneve[ZONAMOD:zm], csapatneve[CSAPATOK:csp])
  290.  
  291. format(output, 1199, "%s %.1f %.1f %.1f", output, pos[0], pos[1], pos[2])
  292.  
  293. format(output, 1199, "%s %.0f %.0f %.0f", output, mins[0], mins[1], mins[2])
  294. format(output, 1199, "%s %.0f %.0f %.0f", output, maxs[0], maxs[1], maxs[2])
  295.  
  296. write_file(zonafajl, output)
  297. }
  298.  
  299. if(get_pcvar_num(cvar_colorchat)) print_color(id, "!g[ANTI-RUSH]!t Sikeres mentés...")
  300. else client_print(id, print_chat, "[ANTI-RUSH] Sikeres mentés...")
  301. }
  302.  
  303. public zonakbetoltese()
  304. {
  305. new zonafajl[200]
  306. new palya[50]
  307.  
  308. get_configsdir(zonafajl, 199)
  309. format(zonafajl, 199, "%s/antirush_by_kiki", zonafajl)
  310.  
  311. get_mapname(palya, 49)
  312. format(zonafajl, 199, "%s/%s.kordinatak", zonafajl, palya)
  313.  
  314. if (!file_exists(zonafajl))
  315. {
  316. log_to_file("ANTIRUSH-KIKI.log", "Nem talalok %s-en mentett zonakat", palya);
  317. return
  318. }
  319.  
  320. new input[1200], line = 0, len
  321.  
  322. while( (line = read_file(zonafajl , line , input , 127 , len) ) != 0 )
  323. {
  324. if (!strlen(input) || (input[0] == ';')) continue;
  325.  
  326. new data[20], zm = 0, csp = 0
  327. new Float:mins[3], Float:maxs[3], Float:pos[3]
  328.  
  329. strbreak(input, data, 20, input, 1199)
  330. zm = -1
  331. for(new i = 0; ZONAMOD:i < ZONAMOD; ZONAMOD:i++)
  332. {
  333. if (equal(data, zonaneve[ZONAMOD:i])) zm = i;
  334. }
  335.  
  336. strbreak(input, data, 20, input, 1199)
  337. csp = -1
  338. for(new i = 0; CSAPATOK:i < CSAPATOK; CSAPATOK:i++)
  339. {
  340. if (equal(data, csapatneve[CSAPATOK:i])) csp = i;
  341. }
  342.  
  343. if (zm == -1 || csp == -1)
  344. {
  345. log_to_file("ANTIRUSH-KIKI.log", "Felismerhetetlen sor: %s. Tovabblepes...", data);
  346. continue;
  347. }
  348.  
  349. strbreak(input, data, 20, input, 1199); pos[0] = str_to_float(data);
  350. strbreak(input, data, 20, input, 1199); pos[1] = str_to_float(data);
  351. strbreak(input, data, 20, input, 1199); pos[2] = str_to_float(data);
  352.  
  353. strbreak(input, data, 20, input, 1199); mins[0] = str_to_float(data);
  354. strbreak(input, data, 20, input, 1199); mins[1] = str_to_float(data);
  355. strbreak(input, data, 20, input, 1199); mins[2] = str_to_float(data);
  356. strbreak(input, data, 20, input, 1199); maxs[0] = str_to_float(data);
  357. strbreak(input, data, 20, input, 1199); maxs[1] = str_to_float(data);
  358. strbreak(input, data, 20, input, 1199); maxs[2] = str_to_float(data);
  359.  
  360. zonakeszites(pos, mins, maxs, zm, csp);
  361. }
  362.  
  363. zonakereses()
  364. zonakeltuntetese()
  365. }
  366.  
  367. public eRoundEnd()
  368. {
  369. if(zonaszam() >= 1)
  370. {
  371. rushmehet=true
  372. }
  373. }
  374.  
  375. public eRound_start()
  376. {
  377. if(zonaszam() >= 1)
  378. {
  379. rushmehet=false;
  380.  
  381. if(task_exists(TASKRUSH))
  382. {
  383. remove_task(TASKRUSH)
  384. }
  385.  
  386. set_task(get_pcvar_float(cvar_time), "rush_mehet", TASKRUSH)
  387.  
  388. new mennyi = floatround(get_pcvar_float(cvar_time))
  389. new players[32], num
  390. get_players(players,num)
  391. for(new i = 0; i < num; i++)
  392. {
  393. if(get_user_team(players[i]) == 2)
  394. {
  395. if(get_pcvar_num(cvar_colorchat)) print_color(players[i], "", mennyi)
  396. else client_print(players[i], print_chat, "[ANTI-RUSH] %d másodpercig nem rusholhatsz!", mennyi)
  397. }
  398. }
  399. }
  400. }
  401.  
  402. }
  403.  
  404. public fw_touch(zona, player)
  405. {
  406. if (szerkeszto) return FMRES_IGNORED
  407.  
  408. if (!pev_valid(zona) || !is_user_connected(player))
  409. return FMRES_IGNORED
  410.  
  411. if(zonaszam() >= 1)
  412. {
  413. static classname[33]
  414. pev(player, pev_classname, classname, 32)
  415. if (!equal(classname, "player"))
  416. return FMRES_IGNORED
  417.  
  418. pev(zona, pev_classname, classname, 32)
  419. if (!equal(classname, "rushzona"))
  420. return FMRES_IGNORED
  421.  
  422. new csapat = get_user_team(player)
  423.  
  424. if (csapat == 2 && get_alivetesnum() <= get_pcvar_num(cvar_alivenum) && rushmehet == false)
  425. {
  426. rush_mehet(2)
  427. return FMRES_IGNORED
  428. }
  429.  
  430. if(csapat == 1 && get_alivectsnum() <= get_pcvar_num(cvar_alivenum) && rushmehet == false)
  431. {
  432. rush_mehet(3)
  433. return FMRES_IGNORED
  434. }
  435.  
  436. if(rushmehet == false)
  437. {
  438. zonastuff(player, zona)
  439. }
  440. }
  441. return FMRES_IGNORED
  442. }
  443.  
  444. public zonastuff(jatekos, zona)
  445. {
  446. new ez = pev(zona, pev_iuser1)
  447. new csap = pev(zona, pev_iuser2)
  448. new csapat = get_user_team(jatekos)
  449.  
  450. if(ZONAMOD:ez == OLES && is_user_alive(jatekos))
  451. {
  452. if(CSAPATOK:csap == MINDENKI || csapat == 1 && CSAPATOK:csap == TE || csapat == 2 && CSAPATOK:csap == CT)
  453. {
  454. if(get_pcvar_num(cvar_thunder))
  455. {
  456. new j_poz[3], coord[3]
  457. get_user_origin(jatekos,j_poz);
  458. coord[0] = j_poz[0] + 150;
  459. coord[1] = j_poz[1] + 150;
  460. coord[2] = j_poz[2] + 800;
  461. create_thunder(coord,j_poz);
  462. spawnStaticSound( jatekos, j_poz, villamlas, VOL_NORM, ATTN_NORM, PITCH_NORM, .flags = 0 );
  463. user_kill(jatekos)
  464. }
  465. else user_kill(jatekos)
  466.  
  467. if(get_pcvar_num(cvar_colorchat)) print_color(jatekos, "!g[ANTI-RUSH]!t Meghaltál mert rusholni próbáltál!")
  468. else client_print(jatekos, print_chat, "[ANTI-RUSH] Meghaltál mert rusholni próbáltál!")
  469. }
  470. }
  471.  
  472. if(ZONAMOD:ez == RUSH && is_user_alive(jatekos))
  473. {
  474. if(CSAPATOK:csap == MINDENKI || (csapat == 1) && (CSAPATOK:csap == TE) || (csapat == 2) && (CSAPATOK:csap == CT))
  475. {
  476. new Float: velocity[3]
  477. new Float: DW
  478. pev(jatekos,pev_velocity,velocity)
  479. DW=vector_length ( velocity )+0.0001
  480. velocity[0]=(velocity[0]/DW)*(-500.0)
  481. velocity[1]=(velocity[1]/DW)*(-500.0)
  482. if(velocity[2]<0) velocity[2]=velocity[2]*(-1.0)+15.0
  483. set_pev(jatekos,pev_velocity,velocity)
  484. message_begin(MSG_ONE_UNRELIABLE, g_screenfade, {0,0,0}, jatekos)
  485. write_short(1<<12)
  486. write_short(5)
  487. write_short(0x0000)
  488. write_byte(255)
  489. write_byte(255)
  490. write_byte(255)
  491. write_byte(255)
  492. message_end()
  493. }
  494. }
  495. }
  496.  
  497. public zonakereses()
  498. {
  499. new entity = -1
  500. maxzonak = 0
  501. while( (entity = fm_find_ent_by_class(entity, "rushzona")) )
  502. {
  503. zona[maxzonak] = entity
  504. maxzonak++
  505. }
  506. }
  507.  
  508. public zonakmutatasa()
  509. {
  510. zonakereses()
  511.  
  512. for(new i = 0; i < maxzonak; i++)
  513. {
  514. new z = zona[i];
  515. remove_task(ZONAMUTATAS + z)
  516. set_pev(z, pev_solid, SOLID_NOT)
  517. set_task(0.2, "mutasdazonakat", ZONAMUTATAS + z, _, _, "b")
  518. }
  519. }
  520.  
  521. public zonakeltuntetese()
  522. {
  523. szerkeszto = 0
  524. for(new i = 0; i < maxzonak; i++)
  525. {
  526. new id = pev(zona[i], pev_iuser1)
  527. set_pev(zona[i], pev_solid, tipus[ZONAMOD:id])
  528. remove_task(ZONAMUTATAS + zona[i])
  529. }
  530. }
  531.  
  532. public rushmenu(id)
  533. {
  534. if (get_user_flags(id) & ADMIN_RCON)
  535. {
  536. szerkeszto = id
  537. zonakereses();
  538. zonakmutatasa();
  539.  
  540. set_task(0.1, "rushmenunyitas", id)
  541. }
  542.  
  543. return PLUGIN_HANDLED
  544. }
  545.  
  546. public rushmenunyitas(id)
  547. {
  548. new item1[1024], item2[1024], palya[50];
  549. get_mapname(palya, 49);
  550. format(item1, 1023, "\yAnti-Rush By kiki | http://www.hlmod.hu^n\wTalált zónák: \r%d\w | Pálya: \r%s", maxzonak, palya)
  551. format(item2, 1023, "\yAnti-Rush By kiki | http://www.hlmod.hu^n\wTalált zónák: \r%d\w | Pálya: \r%s^n\wZóna Index: \r%d", maxzonak, palya, ezazona)
  552.  
  553. if(maxzonak <= 0)
  554. {
  555. new menu = menu_create(item1, "alap_handler");
  556. menu_additem( menu, "\wÚj zóna készítése", "a", 0 );
  557. menu_setprop( menu, MPROP_EXITNAME, "Kilépés" );
  558. menu_setprop( menu, MPROP_NEXTNAME, "Következő" );
  559. menu_setprop( menu, MPROP_BACKNAME, "Vissza" );
  560. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL);
  561. menu_display(id, menu, 0 );
  562. }
  563. else
  564. {
  565. new menu = menu_create(item2, "alap_handler");
  566. new item3[120];
  567. format(item3, 119, "\wEnnek a zónának a szerkesztése: %d", ezazona)
  568. menu_additem( menu, "Új zóna készítése", "a", 0 );
  569. menu_addblank( menu, 0);
  570. menu_additem( menu, item3, "b", 0 );
  571. menu_additem( menu, "Előző zóna", "b", 0 );
  572. menu_additem( menu, "Következő zóna", "b", 0 );
  573. menu_additem( menu, "Kijelölt zóna \rtörlése", "b", 0 );
  574. menu_additem( menu, "Összes zóna mentése", "b", 0 );
  575. menu_setprop( menu, MPROP_EXITNAME, "Kilépés" );
  576. menu_setprop( menu, MPROP_NEXTNAME, "Következő" );
  577. menu_setprop( menu, MPROP_BACKNAME, "Vissza" );
  578. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL);
  579. menu_display(id, menu, 0 );
  580. }
  581.  
  582. if(get_pcvar_num(cvar_menusounds)) client_cmd(id, "spk sound/buttons/blip1.wav")
  583. }
  584.  
  585. public alap_handler(id, menu, item)
  586. {
  587. if ( item == MENU_EXIT )
  588. {
  589. szerkeszto = 0
  590. zonakeltuntetese()
  591. menu_destroy( menu );
  592. return PLUGIN_HANDLED;
  593. }
  594.  
  595. new szData[6], szName[64];
  596. new item_access, item_callback;
  597. menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
  598.  
  599. switch( szData[0] )
  600. {
  601. case 'a':
  602. {
  603. switch( item )
  604. {
  605. case 0:
  606. {
  607. if (maxzonak < MAXZONAK - 1)
  608. {
  609. ujzonajatekospoz(id);
  610. zonakmutatasa();
  611. rushmenunyitas(id);
  612. } else
  613. {
  614. if(get_pcvar_num(cvar_colorchat)) print_color(id, "!g[ANTI-RUSH]!t Nem lehet több zónát létrehozni!");
  615. else client_print(id, print_chat, "[ANTI-RUSH] Nem lehet több zónát létrehozni!")
  616. rushmenunyitas(id);
  617. }
  618. menu_destroy( menu );
  619. return PLUGIN_HANDLED;
  620. }
  621. }
  622. }
  623. case 'b':
  624. {
  625. switch( item )
  626. {
  627. case 1:
  628. {
  629. if (fm_is_valid_ent(zona[ezazona])) szerkesztesmenu(id); else rushmenunyitas(id);
  630. }
  631. case 2:
  632. {
  633. ezazona = (ezazona > 0) ? ezazona - 1 : ezazona;
  634. rushmenunyitas(id)
  635. }
  636. case 3:
  637. {
  638. ezazona = (ezazona < maxzonak - 1) ? ezazona + 1 : ezazona;
  639. rushmenunyitas(id)
  640. }
  641. case 4:
  642. {
  643. zonatorlese(id);
  644. }
  645. case 5:
  646. {
  647. zonakmentese(id)
  648. rushmenunyitas(id)
  649. }
  650. }
  651. }
  652. case 't':
  653. {
  654. switch( item )
  655. {
  656. case 0:
  657. {
  658. if(get_pcvar_num(cvar_colorchat)) print_color(id, "!g[ANTI-RUSH]!t Nem törölted ezt a zónát.");
  659. else client_print(id, print_chat, "[ANTI-RUSH] Nem törölted ezt a zónát.")
  660. rushmenunyitas(id)
  661. }
  662. case 1:
  663. {
  664. if(get_pcvar_num(cvar_colorchat)) print_color(id, "!g[ANTI-RUSH]!t A zóna törlése sikeres.");
  665. else client_print(id, print_chat, "[ANTI-RUSH] A zóna törlése sikeres.")
  666. fm_remove_entity(zona[ezazona])
  667. ezazona--;
  668. if (ezazona < 0) ezazona = 0;
  669. zonakereses()
  670. rushmenunyitas(id)
  671. }
  672. }
  673. }
  674. case 's':
  675. {
  676. switch( item )
  677. {
  678. case 0:
  679. {
  680. new zm = -1
  681. zm = pev(zona[ezazona], pev_iuser1)
  682. if (ZONAMOD:zm == RUSH) zm = 0; else zm++;
  683. set_pev(zona[ezazona], pev_iuser1, zm)
  684. szerkesztesmenu(id)
  685. }
  686. case 1:
  687. {
  688. new csp = -1
  689. csp = pev(zona[ezazona], pev_iuser2)
  690. if (CSAPATOK:csp == CT) csp = 0;
  691. else csp++;
  692. set_pev(zona[ezazona], pev_iuser2, csp)
  693. szerkesztesmenu(id)
  694. }
  695. case 2:
  696. {
  697. kordinata = (kordinata < 2) ? kordinata + 1 : 0
  698. szerkesztesmenu(id)
  699. }
  700. case 3:
  701. {
  702. r_kicsinyites()
  703. szerkesztesmenu(id)
  704. }
  705. case 4:
  706. {
  707. r_nagyitas()
  708. szerkesztesmenu(id)
  709. }
  710. case 5:
  711. {
  712. y_kicsinyites()
  713. szerkesztesmenu(id)
  714. }
  715. case 6:
  716. {
  717. y_nagyitas()
  718. szerkesztesmenu(id)
  719. }
  720. case 7:
  721. {
  722. alaptavolsag = (alaptavolsag < 100) ? alaptavolsag * 10 : 1
  723. szerkesztesmenu(id)
  724. }
  725. case 8:
  726. {
  727. rushmenunyitas(id)
  728. }
  729. }
  730. }
  731. }
  732.  
  733. menu_destroy( menu );
  734. return PLUGIN_HANDLED;
  735. }
  736.  
  737. public szerkesztesmenu(id)
  738. {
  739. new cim[120], jelenlegi[120], csapatm[120], mkord[120], tavolsag[120];
  740.  
  741. format(tavolsag, 119, "\wEltolás \y%.2f \wméterrel!", UnitsToMeters(alaptavolsag))
  742.  
  743. format(cim, 119, "\wZóna szerkesztése: \r%d", ezazona)
  744. new menu = menu_create(cim, "alap_handler" );
  745.  
  746. new zm = -1
  747. if (fm_is_valid_ent(zona[ezazona]))
  748. {
  749. zm = pev(zona[ezazona], pev_iuser1)
  750. }
  751.  
  752. if (zm != -1)
  753. {
  754. format(jelenlegi, 119, "\wJelenlegi mód: \r%s", zonamod[ZONAMOD:zm])
  755. menu_additem( menu, jelenlegi, "s", 0 );
  756. }
  757.  
  758. new csp = -1
  759. csp = pev(zona[ezazona], pev_iuser2)
  760. format(csapatm, 119, "\wCsapat: \r%s", celcsapat[CSAPATOK:csp])
  761. menu_additem( menu, csapatm, "s", 0 );
  762.  
  763. format(mkord, 119, "\wMéret változtatása a \y%s \wkordinátán!", kordinatak[kordinata])
  764. menu_additem( menu, mkord, "s", 0 );
  765. menu_addblank( menu, 0);
  766. menu_additem( menu, "\r Eltolás közepe fele", "s", 0 );
  767. menu_additem( menu, "\r Közepe felől nagyítás", "s", 0 );
  768. menu_additem( menu, "\y Eltolás közepe fele", "s", 0 );
  769. menu_additem( menu, "\y Közepe felől nagyítás", "s", 0 );
  770. menu_addblank( menu, 0);
  771. menu_additem( menu, tavolsag, "s", 0 );
  772. menu_addblank( menu, 0);
  773. menu_additem( menu, "\wVissza a főmenübe", "s", 0 );
  774.  
  775. menu_setprop( menu, MPROP_PERPAGE, 0 );
  776. menu_setprop( menu, MPROP_EXITNAME, "Kilépés" );
  777. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL);
  778.  
  779. menu_display(id, menu, 0 );
  780. if(get_pcvar_num(cvar_menusounds)) client_cmd(id, "spk sound/buttons/blip1.wav")
  781. }
  782.  
  783. public r_kicsinyites()
  784. {
  785. new entity = zona[ezazona]
  786.  
  787. new Float:pos[3]
  788. pev(entity, pev_origin, pos)
  789.  
  790. new Float:mins[3], Float:maxs[3]
  791. pev(entity, pev_mins, mins)
  792. pev(entity, pev_maxs, maxs)
  793.  
  794. if ((floatabs(mins[kordinata]) + maxs[kordinata]) < alaptavolsag + 1) return
  795.  
  796. mins[kordinata] += float(alaptavolsag) / 2.0
  797. maxs[kordinata] -= float(alaptavolsag) / 2.0
  798. pos[kordinata] += float(alaptavolsag) / 2.0
  799.  
  800. set_pev(entity, pev_origin, pos)
  801. fm_entity_set_size(entity, mins, maxs)
  802. }
  803.  
  804. public r_nagyitas()
  805. {
  806. new entity = zona[ezazona]
  807.  
  808. new Float:pos[3]
  809. pev(entity, pev_origin, pos)
  810.  
  811. new Float:mins[3], Float:maxs[3]
  812. pev(entity, pev_mins, mins)
  813. pev(entity, pev_maxs, maxs)
  814.  
  815. mins[kordinata] -= float(alaptavolsag) / 2.0
  816. maxs[kordinata] += float(alaptavolsag) / 2.0
  817. pos[kordinata] -= float(alaptavolsag) / 2.0
  818.  
  819. set_pev(entity, pev_origin, pos)
  820. fm_entity_set_size(entity, mins, maxs)
  821. }
  822.  
  823. public y_kicsinyites()
  824. {
  825. new entity = zona[ezazona]
  826.  
  827. new Float:pos[3]
  828. pev(entity, pev_origin, pos)
  829.  
  830. new Float:mins[3], Float:maxs[3]
  831. pev(entity, pev_mins, mins)
  832. pev(entity, pev_maxs, maxs)
  833.  
  834. if ((floatabs(mins[kordinata]) + maxs[kordinata]) < alaptavolsag + 1) return
  835.  
  836. mins[kordinata] += float(alaptavolsag) / 2.0
  837. maxs[kordinata] -= float(alaptavolsag) / 2.0
  838. pos[kordinata] -= float(alaptavolsag) / 2.0
  839.  
  840. set_pev(entity, pev_origin, pos)
  841. fm_entity_set_size(entity, mins, maxs)
  842. }
  843.  
  844. public y_nagyitas()
  845. {
  846. new entity = zona[ezazona]
  847.  
  848. new Float:pos[3]
  849. pev(entity, pev_origin, pos)
  850.  
  851. new Float:mins[3], Float:maxs[3]
  852. pev(entity, pev_mins, mins)
  853. pev(entity, pev_maxs, maxs)
  854.  
  855. mins[kordinata] -= float(alaptavolsag) / 2.0
  856. maxs[kordinata] += float(alaptavolsag) / 2.0
  857. pos[kordinata] += float(alaptavolsag) / 2.0
  858.  
  859. set_pev(entity, pev_origin, pos)
  860. fm_entity_set_size(entity, mins, maxs)
  861. }
  862.  
  863. public zonatorlese(id)
  864. {
  865. new cim[120];
  866. format(cim, 119, "\yFIGYELMEZTETÉS\w Törölni akarod ezt a zónát: %d ?", ezazona)
  867. new menu = menu_create(cim, "alap_handler" );
  868.  
  869. menu_additem( menu, "\wNem, nem szeretném törölni", "t", 0 );
  870. menu_additem( menu, "\rIgen, törölni szeretném", "t", 0 );
  871. menu_setprop( menu, MPROP_EXITNAME, "Kilépés" );
  872. menu_setprop( menu, MPROP_NEXTNAME, "Következő" );
  873. menu_setprop( menu, MPROP_BACKNAME, "Vissza" );
  874. menu_setprop( menu, MPROP_EXIT, MEXIT_ALL);
  875. menu_display(id, menu, 0 );
  876.  
  877.  
  878. if(get_pcvar_num(cvar_menusounds)) client_cmd(id, "spk sound/buttons/button10.wav")
  879. }
  880.  
  881. public zonakeszites(Float:position[3], Float:mins[3], Float:maxs[3], zm, csp)
  882. {
  883. new entity = fm_create_entity("info_target")
  884. set_pev(entity, pev_classname, "rushzona")
  885. fm_entity_set_model(entity, "models/gib_skull.mdl")
  886.  
  887. fm_entity_set_origin(entity, position)
  888.  
  889. set_pev(entity, pev_movetype, MOVETYPE_FLY)
  890. new id = pev(entity, pev_iuser1)
  891. if (szerkeszto)
  892. {
  893. set_pev(entity, pev_solid, SOLID_NOT)
  894. }
  895. else
  896. {
  897. set_pev(entity, pev_solid, tipus[ZONAMOD:id])
  898. }
  899.  
  900. fm_entity_set_size(entity, mins, maxs)
  901. fm_set_entity_visibility(entity, 0)
  902.  
  903. set_pev(entity, pev_iuser1, zm)
  904. set_pev(entity, pev_iuser2, csp)
  905.  
  906. return entity
  907. }
  908.  
  909. public ujzona(Float:position[3])
  910. {
  911. new Float:mins[3] = { -32.0, -32.0, -32.0 }
  912. new Float:maxs[3] = { 32.0, 32.0, 32.0 }
  913. return zonakeszites(position, mins, maxs, 0, 0);
  914. }
  915.  
  916. public ujzonajatekospoz(player)
  917. {
  918. new Float:position[3]
  919. pev(player, pev_origin, position)
  920.  
  921. new entity = ujzona(position)
  922. zonakereses()
  923.  
  924. for(new i = 0; i < maxzonak; i++) if (zona[i] == entity) ezazona = i;
  925. }
  926.  
  927. public mutasdazonakat(entity)
  928. {
  929. entity -= ZONAMUTATAS
  930. if ((!fm_is_valid_ent(entity)) || !szerkeszto) return
  931.  
  932. new Float:pos[3]
  933. pev(entity, pev_origin, pos)
  934. if (!fm_is_in_viewcone(szerkeszto, pos) && (entity != zona[ezazona])) return
  935.  
  936. new Float:editorpos[3]
  937. pev(szerkeszto, pev_origin, editorpos)
  938. new Float:hitpoint[3]
  939. fm_trace_line(-1, editorpos, pos, hitpoint)
  940.  
  941. if (entity == zona[ezazona]) DrawLine(editorpos[0], editorpos[1], editorpos[2] - 16.0, pos[0], pos[1], pos[2], { 255, 0, 0} )
  942.  
  943. new Float:dh = vector_distance(editorpos, pos) - vector_distance(editorpos, hitpoint)
  944. if ( (floatabs(dh) > 128.0) && (entity != zona[ezazona])) return
  945.  
  946. new Float:mins[3], Float:maxs[3]
  947. pev(entity, pev_mins, mins)
  948. pev(entity, pev_maxs, maxs)
  949.  
  950. mins[0] += pos[0]
  951. mins[1] += pos[1]
  952. mins[2] += pos[2]
  953. maxs[0] += pos[0]
  954. maxs[1] += pos[1]
  955. maxs[2] += pos[2]
  956.  
  957. new id = pev(entity, pev_iuser1)
  958.  
  959. new color[3]
  960. color[0] = (zona[ezazona] == entity) ? zone_color_blue[0] : zonaszin[ZONAMOD:id][0]
  961. color[1] = (zona[ezazona] == entity) ? zone_color_blue[1] : zonaszin[ZONAMOD:id][1]
  962. color[2] = (zona[ezazona] == entity) ? zone_color_blue[2] : zonaszin[ZONAMOD:id][2]
  963.  
  964. DrawLine(maxs[0], maxs[1], maxs[2], mins[0], maxs[1], maxs[2], color)
  965. DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], maxs[2], color)
  966. DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], maxs[1], mins[2], color)
  967.  
  968. DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], mins[2], color)
  969. DrawLine(mins[0], mins[1], mins[2], mins[0], maxs[1], mins[2], color)
  970. DrawLine(mins[0], mins[1], mins[2], mins[0], mins[1], maxs[2], color)
  971.  
  972. DrawLine(mins[0], maxs[1], maxs[2], mins[0], maxs[1], mins[2], color)
  973. DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], mins[2], color)
  974. DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], mins[2], color)
  975. DrawLine(maxs[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], color)
  976. DrawLine(maxs[0], mins[1], maxs[2], mins[0], mins[1], maxs[2], color)
  977. DrawLine(mins[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], color)
  978.  
  979. if (entity != zona[ezazona]) return
  980.  
  981. if (kordinata == 0) // X
  982. {
  983. DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], mins[2], zone_color_green)
  984. DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_green)
  985.  
  986. DrawLine(mins[0], maxs[1], maxs[2], mins[0], mins[1], mins[2], zone_color_red)
  987. DrawLine(mins[0], maxs[1], mins[2], mins[0], mins[1], maxs[2], zone_color_red)
  988. }
  989. if (kordinata == 1) // Y
  990. {
  991. DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_red)
  992. DrawLine(maxs[0], mins[1], mins[2], mins[0], mins[1], maxs[2], zone_color_red)
  993.  
  994. DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], maxs[2], zone_color_green)
  995. DrawLine(maxs[0], maxs[1], mins[2], mins[0], maxs[1], maxs[2], zone_color_green)
  996. }
  997. if (kordinata == 2) // Z
  998. {
  999. DrawLine(maxs[0], maxs[1], maxs[2], mins[0], mins[1], maxs[2], zone_color_green)
  1000. DrawLine(maxs[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_green)
  1001.  
  1002. DrawLine(maxs[0], maxs[1], mins[2], mins[0], mins[1], mins[2], zone_color_red)
  1003. DrawLine(maxs[0], mins[1], mins[2], mins[0], maxs[1], mins[2], zone_color_red)
  1004. }
  1005. }
  1006.  
  1007. public FX_Line(start[3], stop[3], color[3], brightness)
  1008. {
  1009. message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, szerkeszto)
  1010.  
  1011. write_byte( TE_BEAMPOINTS )
  1012.  
  1013. write_coord(start[0])
  1014. write_coord(start[1])
  1015. write_coord(start[2])
  1016.  
  1017. write_coord(stop[0])
  1018. write_coord(stop[1])
  1019. write_coord(stop[2])
  1020.  
  1021. write_short( spr_dot )
  1022.  
  1023. write_byte( 1 ) // framestart
  1024. write_byte( 1 ) // framerate
  1025. write_byte( 4 ) // life in 0.1's
  1026. write_byte( 5 ) // width
  1027. write_byte( 0 ) // noise
  1028.  
  1029. write_byte( color[0] ) // r, g, b
  1030. write_byte( color[1] ) // r, g, b
  1031. write_byte( color[2] ) // r, g, b
  1032.  
  1033. write_byte( brightness ) // brightness
  1034. write_byte( 0 ) // speed
  1035.  
  1036. message_end()
  1037. }
  1038.  
  1039. public DrawLine(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, color[3]) {
  1040. new start[3]
  1041. new stop[3]
  1042.  
  1043. start[0] = floatround( x1 )
  1044. start[1] = floatround( y1 )
  1045. start[2] = floatround( z1 )
  1046.  
  1047. stop[0] = floatround( x2 )
  1048. stop[1] = floatround( y2 )
  1049. stop[2] = floatround( z2 )
  1050.  
  1051. FX_Line(start, stop, color, 200)
  1052. }
  1053.  
  1054. stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") {
  1055. if (classname[0])
  1056. set_kvd(0, KV_ClassName, classname)
  1057. else {
  1058. new class[32]
  1059. pev(entity, pev_classname, class, sizeof class - 1)
  1060. set_kvd(0, KV_ClassName, class)
  1061. }
  1062.  
  1063. set_kvd(0, KV_KeyName, key)
  1064. set_kvd(0, KV_Value, value)
  1065. set_kvd(0, KV_fHandled, 0)
  1066.  
  1067. return dllfunc(DLLFunc_KeyValue, entity, 0)
  1068. }
  1069.  
  1070. stock fm_fake_touch(toucher, touched)
  1071. return dllfunc(DLLFunc_Touch, toucher, touched)
  1072.  
  1073. stock fm_DispatchSpawn(entity)
  1074. return dllfunc(DLLFunc_Spawn, entity)
  1075.  
  1076. stock fm_remove_entity(index)
  1077. return engfunc(EngFunc_RemoveEntity, index)
  1078.  
  1079. stock fm_find_ent_by_class(index, const classname[])
  1080. return engfunc(EngFunc_FindEntityByString, index, "classname", classname)
  1081.  
  1082. stock fm_is_valid_ent(index)
  1083. return pev_valid(index)
  1084.  
  1085. stock fm_entity_set_size(index, const Float:mins[3], const Float:maxs[3])
  1086. return engfunc(EngFunc_SetSize, index, mins, maxs)
  1087.  
  1088. stock fm_entity_set_model(index, const model[])
  1089. return engfunc(EngFunc_SetModel, index, model)
  1090.  
  1091. stock fm_create_entity(const classname[])
  1092. return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname))
  1093.  
  1094. stock fm_fakedamage(victim, const classname[], Float:takedmgdamage, damagetype) {
  1095. new class[] = "trigger_hurt"
  1096. new entity = fm_create_entity(class)
  1097. if (!entity)
  1098. return 0
  1099.  
  1100. new value[16]
  1101. float_to_str(takedmgdamage * 2, value, sizeof value - 1)
  1102. fm_set_kvd(entity, "dmg", value, class)
  1103.  
  1104. num_to_str(damagetype, value, sizeof value - 1)
  1105. fm_set_kvd(entity, "damagetype", value, class)
  1106.  
  1107. fm_set_kvd(entity, "origin", "8192 8192 8192", class)
  1108. fm_DispatchSpawn(entity)
  1109.  
  1110. set_pev(entity, pev_classname, classname)
  1111. fm_fake_touch(entity, victim)
  1112. fm_remove_entity(entity)
  1113.  
  1114. return 1
  1115. }
  1116.  
  1117. stock fm_entity_set_origin(index, const Float:origin[3]) {
  1118. new Float:mins[3], Float:maxs[3]
  1119. pev(index, pev_mins, mins)
  1120. pev(index, pev_maxs, maxs)
  1121. engfunc(EngFunc_SetSize, index, mins, maxs)
  1122.  
  1123. return engfunc(EngFunc_SetOrigin, index, origin)
  1124. }
  1125.  
  1126. stock fm_set_entity_visibility(index, visible = 1) {
  1127. set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)
  1128.  
  1129. return 1
  1130. }
  1131.  
  1132. stock bool:fm_is_in_viewcone(index, const Float:point[3]) {
  1133. new Float:angles[3]
  1134. pev(index, pev_angles, angles)
  1135. engfunc(EngFunc_MakeVectors, angles)
  1136. global_get(glb_v_forward, angles)
  1137. angles[2] = 0.0
  1138.  
  1139. new Float:origin[3], Float:diff[3], Float:norm[3]
  1140. pev(index, pev_origin, origin)
  1141. xs_vec_sub(point, origin, diff)
  1142. diff[2] = 0.0
  1143. xs_vec_normalize(diff, norm)
  1144.  
  1145. new Float:dot, Float:fov
  1146. dot = xs_vec_dot(norm, angles)
  1147. pev(index, pev_fov, fov)
  1148. if (dot >= floatcos(fov * M_PI / 360))
  1149. return true
  1150.  
  1151. return false
  1152. }
  1153.  
  1154. stock fm_trace_line(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3]) {
  1155. engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0)
  1156.  
  1157. new ent = get_tr2(0, TR_pHit)
  1158. get_tr2(0, TR_vecEndPos, ret)
  1159.  
  1160. return pev_valid(ent) ? ent : 0
  1161. }
  1162.  
  1163. stock print_color(const id, const input[], any:...)
  1164. {
  1165. new count = 1, players[32]
  1166. static msg[191]
  1167. vformat(msg, 190, input, 3)
  1168.  
  1169. replace_all(msg, 190, "!g", "^4")
  1170. replace_all(msg, 190, "!y", "^1")
  1171. replace_all(msg, 190, "!t", "^3")
  1172.  
  1173. if (id) players[0] = id; else get_players(players, count, "ch")
  1174. {
  1175. for (new i = 0; i < count; i++)
  1176. {
  1177. if (is_user_connected(players[i]))
  1178. {
  1179. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  1180. write_byte(players[i])
  1181. write_string(msg)
  1182. message_end()
  1183. }
  1184. }
  1185. }
  1186. return PLUGIN_HANDLED
  1187. }
  1188.  
  1189. stock get_alivetesnum()
  1190. {
  1191. new players[32], pnum;
  1192. get_players(players, pnum, "ae", "TERRORIST");
  1193. return pnum;
  1194. }
  1195.  
  1196. stock get_alivectsnum()
  1197. {
  1198. new players[32], pnum;
  1199. get_players(players, pnum, "ae", "CT");
  1200. return pnum;
  1201. }
  1202.  
  1203. stock zonaszam()
  1204. {
  1205. zonakereses()
  1206. return maxzonak;
  1207. }
  1208.  
  1209. stock create_thunder(vec1[3],vec2[3])
  1210. {
  1211. message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  1212. write_byte(0);
  1213. write_coord(vec1[0]);
  1214. write_coord(vec1[1]);
  1215. write_coord(vec1[2]);
  1216. write_coord(vec2[0]);
  1217. write_coord(vec2[1]);
  1218. write_coord(vec2[2]);
  1219. write_short(light);
  1220. write_byte(1);
  1221. write_byte(5);
  1222. write_byte(2);
  1223. write_byte(20);
  1224. write_byte(30);
  1225. write_byte(200);
  1226. write_byte(200);
  1227. write_byte(200);
  1228. write_byte(200);
  1229. write_byte(200);
  1230. message_end();
  1231.  
  1232. message_begin( MSG_PVS, SVC_TEMPENTITY,vec2);
  1233. write_byte(TE_SPARKS);
  1234. write_coord(vec2[0]);
  1235. write_coord(vec2[1]);
  1236. write_coord(vec2[2]);
  1237. message_end();
  1238.  
  1239. message_begin(MSG_BROADCAST,SVC_TEMPENTITY,vec2);
  1240. write_byte(TE_SMOKE);
  1241. write_coord(vec2[0]);
  1242. write_coord(vec2[1]);
  1243. write_coord(vec2[2]);
  1244. write_short(smoke);
  1245. write_byte(10);
  1246. write_byte(10)
  1247. message_end();
  1248. }
  1249.  
  1250. stock spawnStaticSound( const index, const origin[3], const soundIndex, const Float:vol, const Float:atten, const pitch, const flags )
  1251. {
  1252. message_begin( index ? MSG_ONE : MSG_ALL, SVC_SPAWNSTATICSOUND, .player = index );
  1253. {
  1254. write_coord_f( origin[0] );
  1255. write_coord_f( origin[1] );
  1256. write_coord_f( origin[2] );
  1257. write_short( soundIndex );
  1258. write_byte( clamp_byte( floatround( vol * 255 ) ) );
  1259. write_byte( clamp_byte( floatround( atten * 64 ) ) );
  1260. write_short( index );
  1261. write_byte( pitch );
  1262. write_byte( flags );
  1263. }
  1264. message_end();
  1265. }


A hozzászólást 1 alkalommal szerkesztették, utoljára Zeei 2015.07.07. 22:14-kor.
használd ilyenkor a [sma] kód [/sma] -t


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 52 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole