hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.19. 15:25



Jelenlévő felhasználók

Jelenleg 232 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 232 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  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Segitség
HozzászólásElküldve: 2019.01.07. 13:11 
Offline
Újonc
Avatar

Csatlakozott: 2018.12.03. 13:16
Hozzászólások: 2
Megköszönt másnak: 1 alkalommal
Sziasztok Kérnek egy kis segitséget!
arrol lene szó hogy van kiki nek eza rush háloja és mikor egy mapon létre hozok egy rush vonalat a terroristáknak hogy ne ezt irja ki[Codebox=show_dhudmessage(players[i], "A Ct-k rusholhatnak!")=valami.sma][/Codebox] hanem azt hogy[Codebox=show_dhudmessage(players[i], "A Tk- rusholhatnak!")=valami.sma][/Codebox] ha valaki ezt nekem meg tudná oldani nagyon szépen meg köszöném :)


Csatolmányok:
amxmodx_18987-rush.sma [32.95 KiB]
Letöltve 60 alkalommal.
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Segitség
HozzászólásElküldve: 2019.01.07. 18:04 
Offline
Félisten
Avatar

Csatlakozott: 2016.03.06. 14:20
Hozzászólások: 964
Megköszönt másnak: 102 alkalommal
Megköszönték neki: 134 alkalommal
Tessék

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

_________________
 ! Moderátori megjegyzés (kiki):
Kérlek csekkold az aláírásra vonatkozó szabályokat!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Segitség
HozzászólásElküldve: 2019.01.07. 18:07 
Offline
Őstag
Avatar

Csatlakozott: 2017.08.21. 15:51
Hozzászólások: 1109
Megköszönt másnak: 36 alkalommal
Megköszönték neki: 195 alkalommal
Ha forráskódot kell javítani akkor megkérlek legközelebb ide nyiss témát ezzel kapcsolatban: Kezdőlap » Fórum » AMX Mod X » Scripting » Scripting
Fórum elérés: Scripting


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Segitség
HozzászólásElküldve: 2019.01.07. 19:05 
Offline
Újonc
Avatar

Csatlakozott: 2018.12.03. 13:16
Hozzászólások: 2
Megköszönt másnak: 1 alkalommal
The Peace írta:
Tessék

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


Köszönöm de én nem erre gondoltam pontosabban máskép fogalmazok egy mapon ha tk-nem rusholhatnak és ha egy másik mapon pedig a ct nem rusholhatnak akkor azt irja ki hogy mint pll a dust2 ct-rusholhatnak de ha pll egy másik mapot mondok mint a cs_familyguy-on létrehozok a tk-nek rush akkor azt irja ki a tk rusholhatnak :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Segitség
HozzászólásElküldve: 2019.01.07. 23:25 
Offline
Őstag
Avatar

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


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  [ 5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 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