hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.16. 23:37



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot] 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  [ 10 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Plugin kérdés
HozzászólásElküldve: 2014.01.23. 20:18 
Offline
Felfüggesztve

Csatlakozott: 2013.08.09. 22:37
Hozzászólások: 571
Megköszönt másnak: 10 alkalommal
Megköszönték neki: 85 alkalommal
egy nagyon ütős kérdést teszek fel.

melyik plugin okozhatja azt hogy ha megtelik egy szerver lefagy? vagyis akkor fagy amikor mondjuk 31 játékos van és épp csatizik fel a utsó ember akkor lefagy a szerver?

log ha segít: MSG_ONE or MSG_ONE_UNRELIABLE with no target entity.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.23. 21:05 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
stupid írta:
egy nagyon ütős kérdést teszek fel.

melyik plugin okozhatja azt hogy ha megtelik egy szerver lefagy? vagyis akkor fagy amikor mondjuk 31 játékos van és épp csatizik fel a utsó ember akkor lefagy a szerver?

log ha segít: MSG_ONE or MSG_ONE_UNRELIABLE with no target entity.

Ez egy fogos kérdés mivel plugin listát nem kaptunk és amugyse fogja szerintem így meg mondani neked senki szemről max típpelnek. De én azt javaslom hogy 1-2 plugint szedj ki és várd meg míg full lesz. Azokal érdemesebb kezdeni amik szerited okozhatják a fagyást!

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 07:20 
Offline
Felfüggesztve

Csatlakozott: 2013.08.09. 22:37
Hozzászólások: 571
Megköszönt másnak: 10 alkalommal
Megköszönték neki: 85 alkalommal
norbee.16 írta:
stupid írta:
egy nagyon ütős kérdést teszek fel.

melyik plugin okozhatja azt hogy ha megtelik egy szerver lefagy? vagyis akkor fagy amikor mondjuk 31 játékos van és épp csatizik fel a utsó ember akkor lefagy a szerver?

log ha segít: MSG_ONE or MSG_ONE_UNRELIABLE with no target entity.

Ez egy fogos kérdés mivel plugin listát nem kaptunk és amugyse fogja szerintem így meg mondani neked senki szemről max típpelnek. De én azt javaslom hogy 1-2 plugint szedj ki és várd meg míg full lesz. Azokal érdemesebb kezdeni amik szerited okozhatják a fagyást!

jahm. kiszedném, ha nem mindegyik lenne fontos. de én azt kérdeztem hogy melyik plugin miatt fagyhat.
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. advanced_bans.amxx debug
  3. adminvote.amxx
  4. plmenu.amxx
  5. admin.amxx ; admin base (required for any admin-related)
  6. ;admin_sql.amxx ; admin base - SQL version (comment admin.amxx)
  7. ; Basic
  8.  
  9. admincmd.amxx ; basic admin console commands
  10. adminhelp.amxx ; help command for admin console commands
  11. adminslots.amxx ; slot reservation
  12. multilingual.amxx ; Multi-Lingual management
  13.  
  14. ; Menus
  15.  
  16. menufront.amxx ; front-end for admin menus
  17. cmdmenu.amxx ; command menu (speech, settings)
  18. ;telemenu.amxx ; teleport menu (Fun Module required!)
  19. mapsmenu.amxx ; maps menu (vote, changelevel)
  20. pluginmenu.amxx ; Menus for commands/cvars organized by plugin
  21.  
  22. ; Chat / Messages
  23.  
  24. adminchat.amxx ; console chat commands
  25. antiflood.amxx ; prevent clients from chat-flooding the server
  26. scrollmsg.amxx
  27. imessage.amxx
  28. ; Map related
  29.  
  30. nextmap.amxx ; displays next map in mapcycle
  31. timeleft.amxx ; displays time left on map
  32.  
  33. ; Configuration
  34.  
  35. pausecfg.amxx ; allows to pause and unpause some plugins
  36. statscfg.amxx ; allows to manage stats plugins via menu and commands
  37.  
  38. ; Counter-Strike
  39.  
  40. restmenu.amxx ; restrict weapons menu
  41. statsx.amxx ; stats on death or round end (CSX Module required!)
  42. miscstats.amxx ; bunch of events announcement for Counter-Strike
  43. stats_logging.amxx ; weapons stats logging (CSX Module required!)
  44.  
  45. multijump.amxx
  46. kesmod.amxx
  47. BunnyHopp.amxx
  48. amx_parachute.amxx
  49. replace_disconnected_t.amxx
  50. jelzo.amxx
  51. auto_join.amxx
  52. galileo.amxx
  53. pluginz_plug_advresetscore_advanced_resetscore.amxx
  54. zene.amxx debug
  55. New_respawn.amxx debug
  56. hirdetes.amxx
  57. fakefull_original.amxx debug
  58. tiltas.amxx
  59. csapatvalto.amxx
  60. elotag.amxx
  61. free.amxx debug
  62. DeathrunManager.amxx
  63. autobuy_crash_fix.amxx
  64. ad_manager.amxx
  65. floodprotect.amxx


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 07:41 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
Szerintem ez: New_respawn.amxx debug
De a debugolt pluginokra tippelek.

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 13:08 
Offline
Felfüggesztve

Csatlakozott: 2013.08.09. 22:37
Hozzászólások: 571
Megköszönt másnak: 10 alkalommal
Megköszönték neki: 85 alkalommal
norbee.16 írta:
Szerintem ez: New_respawn.amxx debug
De a debugolt pluginokra tippelek.

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <colorchat>
  4.  
  5. #define PLUGIN "rspw"
  6. #define VERSION "2.0"
  7. #define AUTHOR "nev"
  8.  
  9. public plugin_init() {
  10. register_plugin(PLUGIN, VERSION, AUTHOR)
  11. register_event("DeathMsg", "halalevent", "a")
  12. register_clcmd("say /ujra", "ujrael")
  13. register_clcmd("team_say /ujra", "ujrael")
  14. }
  15. public halalevent()
  16. {
  17. new id=read_data(2)
  18. set_task(3.0,"ujrael",id)
  19. }
  20. public ujrael(id)
  21. {
  22. if (!is_user_alive(id))
  23. {
  24. ExecuteHam(Ham_CS_RoundRespawn, id)
  25. }
  26. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 16:50 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
stupid írta:
norbee.16 írta:
Szerintem ez: New_respawn.amxx debug
De a debugolt pluginokra tippelek.

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <colorchat>
  4.  
  5. #define PLUGIN "rspw"
  6. #define VERSION "2.0"
  7. #define AUTHOR "nev"
  8.  
  9. public plugin_init() {
  10. register_plugin(PLUGIN, VERSION, AUTHOR)
  11. register_event("DeathMsg", "halalevent", "a")
  12. register_clcmd("say /ujra", "ujrael")
  13. register_clcmd("team_say /ujra", "ujrael")
  14. }
  15. public halalevent()
  16. {
  17. new id=read_data(2)
  18. set_task(3.0,"ujrael",id)
  19. }
  20. public ujrael(id)
  21. {
  22. if (!is_user_alive(id))
  23. {
  24. ExecuteHam(Ham_CS_RoundRespawn, id)
  25. }
  26. }

Egy debug logot is másolj már léci! :)

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 17:49 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.12.18. 13:57
Hozzászólások: 240
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 24 alkalommal
Nemis értem, hogy a No target enity szövegből mit nem lehet érteni.
Lehet nincs igazam, ne szekálj de szerintem nincs több enity.

_________________
Discord: KillStr3aK#4724 | GitHub
https://eternar.dev


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 18:41 
Offline
Felfüggesztve

Csatlakozott: 2013.08.09. 22:37
Hozzászólások: 571
Megköszönt másnak: 10 alkalommal
Megköszönték neki: 85 alkalommal
nem ad rá logot...

de ez talán segít:[AMXX] Displaying debug trace (plugin "free.amxx")
L 01/24/2014 - 17:28:15: [AMXX] Run time error 10: native error (native "player_menu_info")
L 01/24/2014 - 17:28:15: [AMXX] [0] 74b2a8dz.sma.p::show_menu_ (line 619)


+
SMA Forráskód: [ Mindet kijelol ]
  1. SZ_GetSpace: overflow on netchan->message


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 19:25 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
stupid írta:
nem ad rá logot...

de ez talán segít:[AMXX] Displaying debug trace (plugin "free.amxx")
L 01/24/2014 - 17:28:15: [AMXX] Run time error 10: native error (native "player_menu_info")
L 01/24/2014 - 17:28:15: [AMXX] [0] 74b2a8dz.sma.p::show_menu_ (line 619)


+
SMA Forráskód: [ Mindet kijelol ]
  1. SZ_GetSpace: overflow on netchan->message


Ezt még régen Silent javítót/bele írta hogy free körbe csak kés legyen.

Visszont azt javaslom hogy a hibás pluginokat javításd, mivel nekem is most 1 db hibás plugin miatt fagy a szerver! De ha dobsz egy pmt akkor 1-2be tudók is segíteni.

Lang:
http://.hlmod.hu/viewtopic.php?f=31&t=13880

SMA:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2.  
  3.  
  4. #include <amxmisc>
  5.  
  6.  
  7. #include <hamsandwich>
  8.  
  9.  
  10. #include <fakemeta>
  11.  
  12.  
  13. #include <colorchat>
  14.  
  15.  
  16. #include <fun>
  17.  
  18.  
  19.  
  20.  
  21.  
  22. #define PLUGIN "Use button once"
  23.  
  24.  
  25. #define VERSION "1.3"
  26.  
  27.  
  28. #define AUTHOR "R3X"
  29.  
  30.  
  31.  
  32.  
  33.  
  34. #define MAX_BUTTONS 100
  35.  
  36.  
  37. #define KeysButtonsMenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // Keys: 137890
  38.  
  39.  
  40. #define KeysOptionsMenu (1<<0)|(1<<1)|(1<<8) //129
  41.  
  42.  
  43. #define KeysDelayMenu (1<<0)|(1<<1)|(1<<2)|(1<<8) //1239
  44.  
  45.  
  46.  
  47.  
  48.  
  49. #define ANNOUNCE_TASK 10000
  50.  
  51.  
  52.  
  53.  
  54.  
  55. #define m_flWait 44
  56.  
  57.  
  58.  
  59.  
  60.  
  61. //Main
  62.  
  63.  
  64.  
  65.  
  66.  
  67. new gEnt[MAX_BUTTONS];
  68.  
  69.  
  70. new gUsed[MAX_BUTTONS];
  71.  
  72.  
  73. new giPointer=0;
  74.  
  75.  
  76. new gOnStart[MAX_BUTTONS];
  77.  
  78.  
  79. new Float:gDefaultDelay[MAX_BUTTONS];
  80.  
  81.  
  82. new Float:gDelay[MAX_BUTTONS];
  83.  
  84.  
  85.  
  86.  
  87.  
  88. new gInMenu[33];
  89.  
  90.  
  91.  
  92.  
  93.  
  94. new gszFile[128];
  95.  
  96.  
  97.  
  98.  
  99.  
  100. new giSprite;
  101.  
  102.  
  103.  
  104.  
  105.  
  106. new gcvarDefault, gcvarTeam, gcvarFreeRun;
  107.  
  108.  
  109. new gcvarLimit, gcvarLimitMode, gcvarPrivilege;
  110.  
  111.  
  112. new gcvarMessage, gcvarRestore;
  113.  
  114.  
  115.  
  116.  
  117.  
  118. //VOTE
  119.  
  120.  
  121.  
  122.  
  123.  
  124. #define TASK_SHOWMENU 432
  125.  
  126.  
  127. #define TASK_RES 123
  128.  
  129.  
  130.  
  131.  
  132.  
  133. #define MAX_ROUNDS 999
  134.  
  135.  
  136.  
  137.  
  138.  
  139. #define KeysFFVote (1<<0)|(1<<1) // Keys: 12
  140.  
  141.  
  142.  
  143.  
  144.  
  145. new gcvarFRVoteTime;
  146.  
  147.  
  148.  
  149.  
  150.  
  151. new giVoteStart, giVoteTime;
  152.  
  153.  
  154.  
  155.  
  156.  
  157. new bool:gbFreeRun=false;
  158.  
  159.  
  160. new bool:gbVote=false;
  161.  
  162.  
  163.  
  164.  
  165.  
  166. #define VOTE_ON 0
  167.  
  168.  
  169. #define VOTE_OFF 1
  170.  
  171.  
  172.  
  173.  
  174.  
  175. new giVotes[33][2];
  176.  
  177.  
  178.  
  179.  
  180.  
  181. new giRounds=MAX_ROUNDS, giTime=0;
  182.  
  183.  
  184.  
  185.  
  186.  
  187. new gCanFree;
  188.  
  189.  
  190.  
  191.  
  192.  
  193. public plugin_init() {
  194.  
  195.  
  196. register_plugin(PLUGIN, VERSION, AUTHOR);
  197.  
  198.  
  199.  
  200.  
  201.  
  202. register_dictionary("common.txt");
  203.  
  204.  
  205. register_dictionary("adminvote.txt");
  206.  
  207.  
  208. register_dictionary("use_button_once.txt");
  209.  
  210.  
  211.  
  212.  
  213.  
  214. register_menucmd(register_menuid("FRVote"), KeysFFVote, "PressedFRVote");
  215.  
  216.  
  217. register_menucmd(register_menuid("ButtonsMenu"), KeysButtonsMenu, "PressedButtonsMenu");
  218.  
  219.  
  220. register_menucmd(register_menuid("OptionsMenu"), KeysOptionsMenu, "PressedOptionsMenu");
  221.  
  222.  
  223. register_menucmd(register_menuid("DelayMenu"), KeysDelayMenu, "PressedDelayMenu");
  224.  
  225.  
  226.  
  227.  
  228.  
  229. register_clcmd("amx_buttons","cmd_amx_buttons",ADMIN_CFG,": Buttons Menu");
  230.  
  231.  
  232.  
  233.  
  234.  
  235. //Default count of uses
  236.  
  237.  
  238. gcvarDefault=register_cvar("amx_buttons_default","1");
  239.  
  240.  
  241. //Who plugin analyze
  242.  
  243.  
  244. //0 - anyone(plugin disabled?)
  245.  
  246.  
  247. //1 - Te
  248.  
  249.  
  250. //2 - Ct
  251.  
  252.  
  253. //3 - Te+Ct
  254.  
  255.  
  256. gcvarTeam=register_cvar("amx_buttons_team","1");
  257.  
  258.  
  259. //Enabled FreeRun mode?
  260.  
  261.  
  262. gcvarFreeRun=register_cvar("amx_buttons_freerun","1");
  263.  
  264.  
  265. //Vote time
  266.  
  267.  
  268. gcvarFRVoteTime=register_cvar("amx_freerun_votetime","10");
  269.  
  270.  
  271.  
  272.  
  273.  
  274. //Type of limit
  275.  
  276.  
  277. //0 - enabled after 'amx_freerun_limit' rounds
  278.  
  279.  
  280. //1 - enabled after 'amx_freerun_limit' minutes
  281.  
  282.  
  283. gcvarLimitMode=register_cvar("amx_freerun_limit_mode","0");
  284.  
  285.  
  286. //Size of Limit
  287.  
  288.  
  289. gcvarLimit=register_cvar("amx_freerun_limit","5");
  290.  
  291.  
  292.  
  293.  
  294.  
  295. //Interval of message
  296.  
  297.  
  298. gcvarMessage=register_cvar("amx_freerun_info","120.0",0,120.0);
  299.  
  300.  
  301.  
  302.  
  303.  
  304. //Terrorist`s privilege
  305.  
  306.  
  307. //if he use /free FreeRun will start without vote, can he?
  308.  
  309.  
  310. gcvarPrivilege=register_cvar("amx_freerun_tt_privilege","1");
  311.  
  312.  
  313.  
  314.  
  315.  
  316. //restore buttons on new round
  317.  
  318.  
  319. gcvarRestore=register_cvar("amx_restore_buttons","1");
  320.  
  321.  
  322.  
  323.  
  324.  
  325. register_clcmd("say /free","cmdVoteFreeRun");
  326.  
  327.  
  328. register_clcmd("say_team /free","cmdVoteFreeRun");
  329.  
  330.  
  331. register_clcmd("say free","cmdVoteFreeRun");
  332.  
  333.  
  334. register_clcmd("say_team free","cmdVoteFreeRun");
  335.  
  336.  
  337.  
  338.  
  339.  
  340. register_clcmd("say /freerun","cmdVoteFreeRun");
  341.  
  342.  
  343. register_clcmd("say_team /freerun","cmdVoteFreeRun");
  344.  
  345.  
  346. register_clcmd("say freerun","cmdVoteFreeRun");
  347.  
  348.  
  349. register_clcmd("say_team freerun","cmdVoteFreeRun");
  350.  
  351.  
  352.  
  353.  
  354.  
  355. register_clcmd("say /fr","cmdVoteFreeRun");
  356.  
  357.  
  358. register_clcmd("say_team /fr","cmdVoteFreeRun");
  359.  
  360.  
  361. register_clcmd("say fr","cmdVoteFreeRun");
  362.  
  363.  
  364. register_clcmd("say_team fr","cmdVoteFreeRun");
  365.  
  366.  
  367.  
  368.  
  369.  
  370. if( engfunc(EngFunc_FindEntityByString,-1 ,"classname", "func_button"))
  371.  
  372.  
  373. RegisterHam(Ham_Use, "func_button", "fwButtonUsed");
  374.  
  375.  
  376.  
  377.  
  378.  
  379. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname","func_rot_button"))
  380.  
  381.  
  382. RegisterHam(Ham_Use, "func_rot_button", "fwButtonUsed");
  383.  
  384.  
  385.  
  386.  
  387.  
  388. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname", "button_target"))
  389.  
  390.  
  391. RegisterHam(Ham_Use, "button_target", "fwButtonUsed");
  392.  
  393.  
  394.  
  395.  
  396.  
  397. register_logevent( "ResetButtons", 2, "0=World triggered", "1=Round_Start");
  398.  
  399.  
  400.  
  401.  
  402.  
  403. RegisterHam( Ham_Touch, "armoury_entity", "FwdHamPlayerPickup" );
  404.  
  405.  
  406. RegisterHam( Ham_Touch, "weaponbox", "FwdHamPlayerPickup" );
  407.  
  408.  
  409.  
  410.  
  411.  
  412. fillButtons("func_button");
  413.  
  414.  
  415. fillButtons("func_rot_button");
  416.  
  417.  
  418. fillButtons("button_target");
  419.  
  420.  
  421. }
  422.  
  423.  
  424.  
  425.  
  426.  
  427. public FwdHamPlayerPickup( iEntity, id )
  428.  
  429.  
  430. {
  431.  
  432.  
  433. if(gbFreeRun)
  434.  
  435.  
  436. return HAM_SUPERCEDE;
  437.  
  438.  
  439.  
  440.  
  441.  
  442. return HAM_IGNORED;
  443.  
  444.  
  445.  
  446.  
  447.  
  448. }
  449.  
  450.  
  451.  
  452.  
  453.  
  454. public plugin_cfg(){
  455.  
  456.  
  457. setButtons();
  458.  
  459.  
  460.  
  461.  
  462.  
  463. new iLen=0, iMax=charsmax(gszFile);
  464.  
  465.  
  466. iLen=get_configsdir(gszFile, iMax );
  467.  
  468.  
  469. iLen+=copy(gszFile[iLen], iMax-iLen, "/dr_buttons/");
  470.  
  471.  
  472.  
  473.  
  474.  
  475. if(!dir_exists(gszFile)){
  476.  
  477.  
  478. set_fail_state("Not found dir: configs/dr_buttons");
  479.  
  480.  
  481. return;
  482.  
  483.  
  484. }
  485.  
  486.  
  487. new szMap[32];
  488.  
  489.  
  490. get_mapname(szMap, 31);
  491.  
  492.  
  493. formatex(gszFile[iLen], charsmax(gszFile)-iLen, "%s.ini", szMap);
  494.  
  495.  
  496. if(!file_exists(gszFile)){
  497.  
  498.  
  499. return;
  500.  
  501.  
  502. }
  503.  
  504.  
  505. new szLine[51];
  506.  
  507.  
  508. new szButton[4], szTimes[3], szDelay[5];
  509.  
  510.  
  511. new Float:fDelay;
  512.  
  513.  
  514. for(new i=0;read_file(gszFile, i, szLine, 50, iLen);i++){
  515.  
  516.  
  517. if(iLen==0) continue;
  518.  
  519.  
  520. trim(szLine);
  521.  
  522.  
  523. if(szLine[0]==';') continue;
  524.  
  525.  
  526. parse(szLine, szButton, 3, szTimes, 2, szDelay, 4);
  527.  
  528.  
  529. fDelay=szDelay[0]?str_to_float(szDelay):-1.0;
  530.  
  531.  
  532. set_start_value(str_to_num(szButton), str_to_num(szTimes), fDelay);
  533.  
  534.  
  535. }
  536.  
  537.  
  538. new Float:fInterval=get_pcvar_float(gcvarMessage);
  539.  
  540.  
  541. if(fInterval > 0.0)
  542.  
  543.  
  544. set_task(120.0, "announceVote",ANNOUNCE_TASK,_,_,"b");
  545.  
  546.  
  547. }
  548.  
  549.  
  550. public plugin_precache(){
  551.  
  552.  
  553. giSprite=precache_model("sprites/flare1.spr");
  554.  
  555.  
  556.  
  557.  
  558.  
  559. }
  560.  
  561.  
  562. public client_putinserver(id){
  563.  
  564.  
  565. if(!is_user_bot(id))
  566.  
  567.  
  568. eventInGame(id);
  569.  
  570.  
  571. }
  572.  
  573.  
  574. public client_connect(id){
  575.  
  576.  
  577. giVotes[id][VOTE_ON]=0;
  578.  
  579.  
  580. giVotes[id][VOTE_OFF]=0;
  581.  
  582.  
  583. }
  584.  
  585.  
  586. public announceVote(){
  587.  
  588.  
  589. if(get_pcvar_num(gcvarFreeRun))
  590.  
  591.  
  592. ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER, "ANNOUNCE");
  593.  
  594.  
  595. }
  596.  
  597.  
  598. setButtons(){
  599.  
  600.  
  601. new iDef=get_pcvar_num(gcvarDefault);
  602.  
  603.  
  604. for(new i=0;i<giPointer;i++){
  605.  
  606.  
  607. gUsed[i]=iDef;
  608.  
  609.  
  610. gOnStart[i]=iDef;
  611.  
  612.  
  613. gDelay[i]=get_pdata_float(gEnt[i],m_flWait);
  614.  
  615.  
  616. gDefaultDelay[i]=gDelay[i];
  617.  
  618.  
  619. }
  620.  
  621.  
  622. }
  623.  
  624.  
  625. fillButtons(const szClass[]){
  626.  
  627.  
  628. new ent = -1;
  629.  
  630.  
  631. while((ent = engfunc(EngFunc_FindEntityByString,ent ,"classname", szClass)) != 0){
  632.  
  633.  
  634. gEnt[giPointer++]=ent;
  635.  
  636.  
  637. set_pev(ent, pev_iuser4, giPointer);
  638.  
  639.  
  640. }
  641.  
  642.  
  643. }
  644.  
  645.  
  646. set_start_value(ent, times, Float:delay){
  647.  
  648.  
  649. new index=get_ent_index(ent);
  650.  
  651.  
  652. if(index!=-1){
  653.  
  654.  
  655. gOnStart[index]=times;
  656.  
  657.  
  658. if(delay>=0.0)
  659.  
  660.  
  661. gDelay[index]=delay;
  662.  
  663.  
  664. }
  665.  
  666.  
  667. }
  668.  
  669.  
  670. get_ent_index(ent){
  671.  
  672.  
  673. /*
  674.  
  675.  
  676.   for(new i=0;i<giPointer;i++)
  677.  
  678.  
  679.   if(gEnt[i]==ent) return i;
  680.  
  681.  
  682.   return -1;
  683.  
  684.  
  685.   */
  686.  
  687.  
  688. return pev(ent, pev_iuser4)-1;
  689.  
  690.  
  691. }
  692.  
  693.  
  694. restoreButton(ent){
  695.  
  696.  
  697. if(pev(ent, pev_frame) > 0.0){
  698.  
  699.  
  700. new Float:Life;
  701.  
  702.  
  703. pev(ent, pev_nextthink, Life);
  704.  
  705.  
  706. set_pev(ent, pev_ltime, Life-0.01);
  707.  
  708.  
  709. }
  710.  
  711.  
  712. }
  713.  
  714.  
  715. public ResetButtons(){
  716.  
  717.  
  718. gbFreeRun=false;
  719.  
  720.  
  721. gCanFree = true;
  722.  
  723.  
  724. set_task(10.0, "CannotFree");
  725.  
  726.  
  727. gbVote=false;
  728.  
  729.  
  730. new bool:bRestore=get_pcvar_num(gcvarRestore)!=0;
  731.  
  732.  
  733. for(new i=0;i<MAX_BUTTONS;i++){
  734.  
  735.  
  736. gUsed[i]=gOnStart[i];
  737.  
  738.  
  739. if(bRestore){
  740.  
  741.  
  742. restoreButton(gEnt[i]);
  743.  
  744.  
  745. }
  746.  
  747.  
  748. }
  749.  
  750.  
  751. giRounds++;
  752.  
  753.  
  754. }
  755.  
  756.  
  757.  
  758.  
  759.  
  760. public CannotFree()
  761.  
  762.  
  763. {
  764.  
  765.  
  766. gCanFree = false;
  767.  
  768.  
  769. return PLUGIN_HANDLED;
  770.  
  771.  
  772. }
  773.  
  774.  
  775.  
  776.  
  777.  
  778. public fwButtonUsed(this, idcaller, idactivator, use_type, Float:value){
  779.  
  780.  
  781. if(idcaller!=idactivator) return HAM_IGNORED;
  782.  
  783.  
  784.  
  785.  
  786.  
  787. if(pev(this, pev_frame) > 0.0)
  788.  
  789.  
  790. return HAM_IGNORED;
  791.  
  792.  
  793. new index=get_ent_index(this);
  794.  
  795.  
  796. if(index==-1)
  797.  
  798.  
  799. return HAM_IGNORED;
  800.  
  801.  
  802. if(get_user_team(idcaller)&get_pcvar_num(gcvarTeam)){
  803.  
  804.  
  805.  
  806.  
  807.  
  808. if(gbFreeRun){
  809.  
  810.  
  811. ColorChat(idcaller,GREEN, "[FreeRun]^x01 %L",idcaller, "BUTTON_FREERUN");
  812.  
  813.  
  814. return HAM_SUPERCEDE;
  815.  
  816.  
  817. }
  818.  
  819.  
  820. else if(gUsed[index]<=0 && gOnStart[index]!=-1){
  821.  
  822.  
  823. ColorChat(idcaller,GREEN, "[Info]^x01 %L",idcaller,"BUTTON_NOMORE");
  824.  
  825.  
  826. return HAM_SUPERCEDE;
  827.  
  828.  
  829. }
  830.  
  831.  
  832. else{
  833.  
  834.  
  835. if(gUsed[index]>0)
  836.  
  837.  
  838. if(--gUsed[index]){
  839.  
  840.  
  841. ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_LEFT", gUsed[index]);
  842.  
  843.  
  844. }else
  845.  
  846.  
  847. ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_ENDOFLIMIT");
  848.  
  849.  
  850. }
  851.  
  852.  
  853. }
  854.  
  855.  
  856.  
  857.  
  858.  
  859. set_task(0.1,"setDelay",this);
  860.  
  861.  
  862.  
  863.  
  864.  
  865. return HAM_IGNORED;
  866.  
  867.  
  868. }
  869.  
  870.  
  871. public setDelay(this){
  872.  
  873.  
  874. new index=get_ent_index(this);
  875.  
  876.  
  877. set_pev(this, pev_nextthink, pev(this, pev_ltime)+gDelay[index]+0.01);
  878.  
  879.  
  880. }
  881.  
  882.  
  883.  
  884.  
  885.  
  886. //MENU--------------
  887.  
  888.  
  889. public cmd_amx_buttons(id, level, cid){
  890.  
  891.  
  892. if(!cmd_access(id, level, cid, 1))
  893.  
  894.  
  895. return PLUGIN_HANDLED;
  896.  
  897.  
  898. if(giPointer==0)
  899.  
  900.  
  901. client_print(id, print_chat, "%L", id,"NO_BUTTONS");
  902.  
  903.  
  904. else
  905.  
  906.  
  907. ShowButtonsMenu(id);
  908.  
  909.  
  910. return PLUGIN_HANDLED;
  911.  
  912.  
  913. }
  914.  
  915.  
  916. ShowButtonsMenu(id, trace=1){
  917.  
  918.  
  919. if(!is_user_alive(id)){
  920.  
  921.  
  922. client_print(id, print_center, "%L",id, "MUST_B_ALIVE");
  923.  
  924.  
  925. return;
  926.  
  927.  
  928. }
  929.  
  930.  
  931. new iNow=gInMenu[id];
  932.  
  933.  
  934. new iKeys=(1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);
  935.  
  936.  
  937. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  938.  
  939.  
  940. new szNoLimit[32];
  941.  
  942.  
  943. formatex(szNoLimit,31,"(%L)",id,"NOLIMIT");
  944.  
  945.  
  946. iLen=copy(szMenu, iMax,"\yButtons Menu^n");
  947.  
  948.  
  949. iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);
  950.  
  951.  
  952. iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %d %s^n\y1\w. %L ",id, "USAGE",gOnStart[iNow],(gOnStart[iNow]==-1)?szNoLimit:"", id, "MORE");
  953.  
  954.  
  955.  
  956.  
  957.  
  958. if(gOnStart[iNow]>=0){
  959.  
  960.  
  961. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");
  962.  
  963.  
  964. iKeys|=(1<<1);
  965.  
  966.  
  967. }else
  968.  
  969.  
  970. iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");
  971.  
  972.  
  973. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n3. %L^n^n4. %L^n^n",id, "DELAY_EDITOR",id,"OPTIONS");
  974.  
  975.  
  976.  
  977.  
  978.  
  979. iLen+=formatex(szMenu[iLen], iMax-iLen,"5. %sNo Clip\w^n",isNoClip(id)?"\r":"");
  980.  
  981.  
  982. iLen+=formatex(szMenu[iLen], iMax-iLen,"6. %sGodMode\w^n",isGodMode(id)?"\r":"");
  983.  
  984.  
  985.  
  986.  
  987.  
  988. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n7. \r%L^n\w",id, "WORD_SAVE");
  989.  
  990.  
  991.  
  992.  
  993.  
  994. if(iNow>0){
  995.  
  996.  
  997. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n8. %L",id, "BACK");
  998.  
  999.  
  1000. iKeys|=(1<<7);
  1001.  
  1002.  
  1003. }
  1004.  
  1005.  
  1006. if(iNow<giPointer-1){
  1007.  
  1008.  
  1009. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n9. %L",id, "WORD_NEXT");
  1010.  
  1011.  
  1012. iKeys|=(1<<8);
  1013.  
  1014.  
  1015. }
  1016.  
  1017.  
  1018. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n0. %L", id, "EXIT");
  1019.  
  1020.  
  1021. show_menu(id, iKeys, szMenu, -1, "ButtonsMenu");
  1022.  
  1023.  
  1024. if(trace){
  1025.  
  1026.  
  1027. new Float:fOrigin[3], Float:fOrigin2[3];
  1028.  
  1029.  
  1030. fm_get_brush_entity_origin(gEnt[gInMenu[id]], fOrigin);
  1031.  
  1032.  
  1033. pev(id, pev_origin, fOrigin2);
  1034.  
  1035.  
  1036. Create_TE_BEAMPOINTS(fOrigin, fOrigin2, giSprite, 0, 10, 20, 5, 1, 255, 0, 0, 100, 50);
  1037.  
  1038.  
  1039. }
  1040.  
  1041.  
  1042. }
  1043.  
  1044.  
  1045. bool:isNoClip(id)
  1046.  
  1047.  
  1048. return pev(id, pev_movetype)==MOVETYPE_NOCLIP;
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054. bool:isGodMode(id)
  1055.  
  1056.  
  1057. return pev(id, pev_takedamage)==0.0;
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063. public PressedButtonsMenu(id, key) {
  1064.  
  1065.  
  1066. if(!is_user_alive(id)){
  1067.  
  1068.  
  1069. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1070.  
  1071.  
  1072. return;
  1073.  
  1074.  
  1075. }
  1076.  
  1077.  
  1078. /* Menu:
  1079.  
  1080.  
  1081.   * Buttons Menu
  1082.  
  1083.  
  1084.   * Ent#<ent>
  1085.  
  1086.  
  1087.   *
  1088.  
  1089.  
  1090.   * Uzyc: <ile>
  1091.  
  1092.  
  1093.   * 1. Wiecej 2. Mniej
  1094.  
  1095.  
  1096.   *
  1097.  
  1098.  
  1099.   * 3. Editor
  1100.  
  1101.  
  1102.   *
  1103.  
  1104.  
  1105.   * 4. Options
  1106.  
  1107.  
  1108.   *
  1109.  
  1110.  
  1111.   * 5. NoClip
  1112.  
  1113.  
  1114.   * 6. GodMode
  1115.  
  1116.  
  1117.   *
  1118.  
  1119.  
  1120.   * 7. Zapisz
  1121.  
  1122.  
  1123.   *
  1124.  
  1125.  
  1126.   * 8. Poprzedni
  1127.  
  1128.  
  1129.   * 9. Nastepny
  1130.  
  1131.  
  1132.   * 0. Wyjdz
  1133.  
  1134.  
  1135.   */
  1136.  
  1137.  
  1138. new trace=0;
  1139.  
  1140.  
  1141. switch (key) {
  1142.  
  1143.  
  1144. case 0: { // 1
  1145.  
  1146.  
  1147. gOnStart[gInMenu[id]]++;
  1148.  
  1149.  
  1150. }
  1151.  
  1152.  
  1153. case 1: { // 2
  1154.  
  1155.  
  1156. gOnStart[gInMenu[id]]--;
  1157.  
  1158.  
  1159. }
  1160.  
  1161.  
  1162. case 2: { // 3
  1163.  
  1164.  
  1165. ShowDelayMenu(id);
  1166.  
  1167.  
  1168. return;
  1169.  
  1170.  
  1171. }
  1172.  
  1173.  
  1174. case 3:{ //4
  1175.  
  1176.  
  1177. ShowOptionsMenu(id);
  1178.  
  1179.  
  1180. return;
  1181.  
  1182.  
  1183. }
  1184.  
  1185.  
  1186. case 4:{ //5
  1187.  
  1188.  
  1189. set_pev(id, pev_movetype, isNoClip(id)?MOVETYPE_WALK:MOVETYPE_NOCLIP);
  1190.  
  1191.  
  1192. }
  1193.  
  1194.  
  1195. case 5:{ //6
  1196.  
  1197.  
  1198. set_pev(id, pev_takedamage, isGodMode(id)?1.0:0.0);
  1199.  
  1200.  
  1201. }
  1202.  
  1203.  
  1204. case 6: { // 7
  1205.  
  1206.  
  1207. save2File(id);
  1208.  
  1209.  
  1210. }
  1211.  
  1212.  
  1213. case 7: { // 8
  1214.  
  1215.  
  1216. gInMenu[id]--;
  1217.  
  1218.  
  1219. trace=1;
  1220.  
  1221.  
  1222. }
  1223.  
  1224.  
  1225. case 8: { // 9
  1226.  
  1227.  
  1228. gInMenu[id]++;
  1229.  
  1230.  
  1231. trace=1;
  1232.  
  1233.  
  1234. }
  1235.  
  1236.  
  1237. case 9: { // 0
  1238.  
  1239.  
  1240. return;
  1241.  
  1242.  
  1243. }
  1244.  
  1245.  
  1246. }
  1247.  
  1248.  
  1249. ShowButtonsMenu(id, trace);
  1250.  
  1251.  
  1252. }
  1253.  
  1254.  
  1255. //--------------
  1256.  
  1257.  
  1258. ShowOptionsMenu(id){
  1259.  
  1260.  
  1261. if(!is_user_alive(id)){
  1262.  
  1263.  
  1264. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1265.  
  1266.  
  1267. return;
  1268.  
  1269.  
  1270. }
  1271.  
  1272.  
  1273. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  1274.  
  1275.  
  1276. iLen+=formatex(szMenu[iLen], iMax-iLen,"\yOptions^n^n");
  1277.  
  1278.  
  1279. iLen+=formatex(szMenu[iLen], iMax-iLen,"\w1. %L^n",id, "GOTO");
  1280.  
  1281.  
  1282. iLen+=formatex(szMenu[iLen], iMax-iLen,"2. %L^n^n",id, "NEAREST");
  1283.  
  1284.  
  1285. iLen+=formatex(szMenu[iLen], iMax-iLen,"9. %L",id, "BACK");
  1286.  
  1287.  
  1288. show_menu(id, KeysOptionsMenu, szMenu, -1, "OptionsMenu");
  1289.  
  1290.  
  1291. }
  1292.  
  1293.  
  1294. public PressedOptionsMenu(id, key){
  1295.  
  1296.  
  1297. if(!is_user_alive(id)){
  1298.  
  1299.  
  1300. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1301.  
  1302.  
  1303. return;
  1304.  
  1305.  
  1306. }
  1307.  
  1308.  
  1309. new trace=0;
  1310.  
  1311.  
  1312. switch (key) {
  1313.  
  1314.  
  1315. case 0: { // 1
  1316.  
  1317.  
  1318. go2Button(id);
  1319.  
  1320.  
  1321. }
  1322.  
  1323.  
  1324. case 1: { // 2
  1325.  
  1326.  
  1327. gInMenu[id]=findTheClosest(id);
  1328.  
  1329.  
  1330. trace=1;
  1331.  
  1332.  
  1333. }
  1334.  
  1335.  
  1336. }
  1337.  
  1338.  
  1339. ShowButtonsMenu(id, trace);
  1340.  
  1341.  
  1342. }
  1343.  
  1344.  
  1345. //-------------
  1346.  
  1347.  
  1348. ShowDelayMenu(id){
  1349.  
  1350.  
  1351. if(!is_user_alive(id)){
  1352.  
  1353.  
  1354. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1355.  
  1356.  
  1357. return;
  1358.  
  1359.  
  1360. }
  1361.  
  1362.  
  1363. new iNow=gInMenu[id];
  1364.  
  1365.  
  1366. new iKeys=(1<<0)|(1<<2)|(1<<8);
  1367.  
  1368.  
  1369. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  1370.  
  1371.  
  1372. iLen=copy(szMenu, iMax,"\yDelay Menu^n");
  1373.  
  1374.  
  1375. iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);
  1376.  
  1377.  
  1378. iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %.1f^n",id, "CURRENT_DELAY", gDelay[iNow]);
  1379.  
  1380.  
  1381. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y1\w. %L ",id, "MORE");
  1382.  
  1383.  
  1384. if(gDelay[iNow]>0.0){
  1385.  
  1386.  
  1387. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");
  1388.  
  1389.  
  1390. iKeys|=(1<<1);
  1391.  
  1392.  
  1393. }else
  1394.  
  1395.  
  1396. iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");
  1397.  
  1398.  
  1399. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n3. %L",id, "DEFAULT");
  1400.  
  1401.  
  1402. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n9. %L",id, "BACK");
  1403.  
  1404.  
  1405. show_menu(id, iKeys, szMenu, -1, "DelayMenu");
  1406.  
  1407.  
  1408. }
  1409.  
  1410.  
  1411. public PressedDelayMenu(id, key){
  1412.  
  1413.  
  1414. new iNow=gInMenu[id];
  1415.  
  1416.  
  1417. switch(key){
  1418.  
  1419.  
  1420. case 0:{
  1421.  
  1422.  
  1423. gDelay[iNow]+=1.0;
  1424.  
  1425.  
  1426. }
  1427.  
  1428.  
  1429. case 1:{
  1430.  
  1431.  
  1432. gDelay[iNow]-=1.0;
  1433.  
  1434.  
  1435. if(gDelay[iNow] < 0.0)
  1436.  
  1437.  
  1438. gDelay[iNow]=0.0;
  1439.  
  1440.  
  1441. }
  1442.  
  1443.  
  1444. case 2:{
  1445.  
  1446.  
  1447. gDelay[iNow]=gDefaultDelay[iNow];
  1448.  
  1449.  
  1450. }
  1451.  
  1452.  
  1453. case 8:{
  1454.  
  1455.  
  1456. ShowButtonsMenu(id, 0);
  1457.  
  1458.  
  1459. return;
  1460.  
  1461.  
  1462. }
  1463.  
  1464.  
  1465. }
  1466.  
  1467.  
  1468. ShowDelayMenu(id);
  1469.  
  1470.  
  1471. }
  1472.  
  1473.  
  1474. //-------------
  1475.  
  1476.  
  1477. save2File(id){
  1478.  
  1479.  
  1480. if(file_exists(gszFile))
  1481.  
  1482.  
  1483. delete_file(gszFile);
  1484.  
  1485.  
  1486. write_file(gszFile, ";<ent> <count> <delay>");
  1487.  
  1488.  
  1489. new szLine[35];
  1490.  
  1491.  
  1492. for(new i=0;i<giPointer;i++){
  1493.  
  1494.  
  1495. formatex(szLine, 34, "%d %d %.1f",gEnt[i], gOnStart[i], gDelay[i]);
  1496.  
  1497.  
  1498. write_file(gszFile, szLine);
  1499.  
  1500.  
  1501. }
  1502.  
  1503.  
  1504. client_print(id, print_center, "%L!",id,"WORD_SAVED");
  1505.  
  1506.  
  1507. }
  1508.  
  1509.  
  1510. findTheClosest(id){
  1511.  
  1512.  
  1513. new Float:fPlayerOrig[3];
  1514.  
  1515.  
  1516. pev(id, pev_origin, fPlayerOrig);
  1517.  
  1518.  
  1519. new Float:fOrigin[3];
  1520.  
  1521.  
  1522. fm_get_brush_entity_origin(gEnt[0], fOrigin);
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528. new Float:fRange=get_distance_f(fOrigin, fPlayerOrig), index=0;
  1529.  
  1530.  
  1531. new Float:fNewRange;
  1532.  
  1533.  
  1534. for(new i=1;i<giPointer;i++){
  1535.  
  1536.  
  1537. fm_get_brush_entity_origin(gEnt[i], fOrigin);
  1538.  
  1539.  
  1540. fNewRange=get_distance_f( fOrigin, fPlayerOrig);
  1541.  
  1542.  
  1543. if(fNewRange < fRange){
  1544.  
  1545.  
  1546. fRange=fNewRange;
  1547.  
  1548.  
  1549. index=i;
  1550.  
  1551.  
  1552. }
  1553.  
  1554.  
  1555. }
  1556.  
  1557.  
  1558. return index;
  1559.  
  1560.  
  1561. }
  1562.  
  1563.  
  1564. go2Button(id, ent=-1){
  1565.  
  1566.  
  1567. if(ent==-1)
  1568.  
  1569.  
  1570. ent=gInMenu[id];
  1571.  
  1572.  
  1573. ent=gEnt[ent];
  1574.  
  1575.  
  1576. if(!pev_valid(ent)){
  1577.  
  1578.  
  1579. client_print(id, print_center, "%L",id,"NOTARGET");
  1580.  
  1581.  
  1582. return;
  1583.  
  1584.  
  1585. }
  1586.  
  1587.  
  1588. new Float:fOrigin[3];
  1589.  
  1590.  
  1591. fm_get_brush_entity_origin(ent, fOrigin);
  1592.  
  1593.  
  1594. set_pev(id, pev_origin, fOrigin);
  1595.  
  1596.  
  1597. client_print(id, print_chat, "PS. No Clip <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->");
  1598.  
  1599.  
  1600. }
  1601.  
  1602.  
  1603. //FreeRun
  1604.  
  1605.  
  1606. public cmdVoteFreeRun(id){
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612. if(!gCanFree)
  1613.  
  1614.  
  1615. {
  1616.  
  1617.  
  1618. ColorChat(id, GREEN, "FreeRun]^x01Letelt az ido, mar nem tudsz free kort inditani!");
  1619.  
  1620.  
  1621. return PLUGIN_HANDLED;
  1622.  
  1623.  
  1624. }
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630. if(get_pcvar_num(gcvarFreeRun)==0){
  1631.  
  1632.  
  1633. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_DISABLED");
  1634.  
  1635.  
  1636. return PLUGIN_HANDLED;
  1637.  
  1638.  
  1639. }
  1640.  
  1641.  
  1642. if(gbVote){
  1643.  
  1644.  
  1645. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_VOTE_IS_NOW");
  1646.  
  1647.  
  1648. return PLUGIN_HANDLED;
  1649.  
  1650.  
  1651. }
  1652.  
  1653.  
  1654. if(!is_user_alive(id)){
  1655.  
  1656.  
  1657. client_print(id, print_center, "%L",id, "MUST_B_ALIVE");
  1658.  
  1659.  
  1660. return PLUGIN_HANDLED;
  1661.  
  1662.  
  1663. }
  1664.  
  1665.  
  1666. if(get_pcvar_num(gcvarPrivilege)!=0 && !gbFreeRun && get_user_team(id)==1){
  1667.  
  1668.  
  1669. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_TT_DECIDED");
  1670.  
  1671.  
  1672. makeFreeRun(true);
  1673.  
  1674.  
  1675. return PLUGIN_HANDLED;
  1676.  
  1677.  
  1678. }
  1679.  
  1680.  
  1681. new iLimit=get_pcvar_num(gcvarLimit);
  1682.  
  1683.  
  1684. new iOffset=0;
  1685.  
  1686.  
  1687. if(get_pcvar_num(gcvarLimitMode)){
  1688.  
  1689.  
  1690. iOffset = ( giTime + iLimit * 60 ) - get_systime();
  1691.  
  1692.  
  1693. if( iOffset > 0 ){
  1694.  
  1695.  
  1696. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_TIME", iOffset/60, iOffset%60);
  1697.  
  1698.  
  1699. return PLUGIN_HANDLED;
  1700.  
  1701.  
  1702. }
  1703.  
  1704.  
  1705. }
  1706.  
  1707.  
  1708. else{
  1709.  
  1710.  
  1711. iOffset = min(MAX_ROUNDS, iLimit) - giRounds;
  1712.  
  1713.  
  1714. if( iOffset > 0 ){
  1715.  
  1716.  
  1717. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_ROUNDS", iOffset);
  1718.  
  1719.  
  1720. return PLUGIN_HANDLED;
  1721.  
  1722.  
  1723. }
  1724.  
  1725.  
  1726. }
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732. makeVote();
  1733.  
  1734.  
  1735. return PLUGIN_CONTINUE;
  1736.  
  1737.  
  1738. }
  1739.  
  1740.  
  1741. //FREERUN
  1742.  
  1743.  
  1744. public makeVote(){
  1745.  
  1746.  
  1747. giVoteTime=get_pcvar_num(gcvarFRVoteTime);
  1748.  
  1749.  
  1750. gbVote=true;
  1751.  
  1752.  
  1753. giVoteStart=get_systime();
  1754.  
  1755.  
  1756. set_task(float(giVoteTime), "resultsOfVote", TASK_RES);
  1757.  
  1758.  
  1759. new Players[32], playerCount;
  1760.  
  1761.  
  1762. new id;
  1763.  
  1764.  
  1765. get_players(Players, playerCount);
  1766.  
  1767.  
  1768. for (new i=0; i<playerCount; i++){
  1769.  
  1770.  
  1771. id = Players[i];
  1772.  
  1773.  
  1774. eventInGame(id);
  1775.  
  1776.  
  1777. }
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783. }
  1784.  
  1785.  
  1786. public resultsOfVote(tid){
  1787.  
  1788.  
  1789. gbVote=false;
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795. new giVotesOn=count(VOTE_ON);
  1796.  
  1797.  
  1798. new giVotesOff=count(VOTE_OFF);
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804. ColorChat(0,GREEN, "[FreeRun]^x01 %L %L(%d) vs %L(%d)",LANG_SERVER,"FREERUN_RESULTS",LANG_SERVER,"YES",giVotesOn,LANG_SERVER,"NO", giVotesOff);
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810. if( giVotesOn == giVotesOff ){
  1811.  
  1812.  
  1813. ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER,"FREERUN_TIE");
  1814.  
  1815.  
  1816. return;
  1817.  
  1818.  
  1819. }
  1820.  
  1821.  
  1822. makeFreeRun((giVotesOn > giVotesOff));
  1823.  
  1824.  
  1825. ColorChat(0,GREEN, "[FreeRun]^x01 %L ^x03%L",LANG_SERVER,"FREERUN_WINOPTION",LANG_SERVER, gbFreeRun?"YES":"NO");
  1826.  
  1827.  
  1828. }
  1829.  
  1830.  
  1831. makeFreeRun(bool:bFR=true){
  1832.  
  1833.  
  1834. gbFreeRun=bFR;
  1835.  
  1836.  
  1837. reset();
  1838.  
  1839.  
  1840. giRounds=0;
  1841.  
  1842.  
  1843. giTime=get_systime();
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849. if(gbFreeRun){
  1850.  
  1851.  
  1852. set_hudmessage(0, 255, 255, 0.02, -1.0);
  1853.  
  1854.  
  1855. show_hudmessage(0, "FreeRun!");
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861. new players[32], pnum;
  1862.  
  1863.  
  1864. get_players(players, pnum);
  1865.  
  1866.  
  1867. for(new i=0; i<pnum; i++)
  1868.  
  1869.  
  1870. {
  1871.  
  1872.  
  1873. new pid = players[i];
  1874.  
  1875.  
  1876. strip_user_weapons(pid);
  1877.  
  1878.  
  1879. give_item(pid, "weapon_knife");
  1880.  
  1881.  
  1882. }
  1883.  
  1884.  
  1885. }
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891. }
  1892.  
  1893.  
  1894. count(VOTE_STATE){
  1895.  
  1896.  
  1897. new iCounter=0;
  1898.  
  1899.  
  1900. for(new i=1;i<33;i++)
  1901.  
  1902.  
  1903. if(giVotes[i][VOTE_STATE])
  1904.  
  1905.  
  1906. iCounter++;
  1907.  
  1908.  
  1909. return iCounter;
  1910.  
  1911.  
  1912. }
  1913.  
  1914.  
  1915. reset(){
  1916.  
  1917.  
  1918. for(new i=1;i<33;i++){
  1919.  
  1920.  
  1921. giVotes[i][VOTE_ON]=0;
  1922.  
  1923.  
  1924. giVotes[i][VOTE_OFF]=0;
  1925.  
  1926.  
  1927. }
  1928.  
  1929.  
  1930. }
  1931.  
  1932.  
  1933. public show_menu_(tid){
  1934.  
  1935.  
  1936. new id=tid-TASK_SHOWMENU;
  1937.  
  1938.  
  1939. new iTeam=get_user_team(id);
  1940.  
  1941.  
  1942. new menu_id, keys;
  1943.  
  1944.  
  1945. new menuUp = player_menu_info( id, menu_id, keys );
  1946.  
  1947.  
  1948. // Only display menu if another isn't shown
  1949.  
  1950.  
  1951. if ( iTeam && (menuUp <= 0 || menu_id < 0) ){
  1952.  
  1953.  
  1954. new iTime=get_pcvar_num(gcvarFRVoteTime);
  1955.  
  1956.  
  1957. new iOffset=get_systime()-giVoteStart;
  1958.  
  1959.  
  1960. iTime-=iOffset;
  1961.  
  1962.  
  1963. new szMenu[128];
  1964.  
  1965.  
  1966. formatex(szMenu, 127, "\y%L^n^n\w1. %L^n2. %L",id,"FREERUN_VOTEMENU",id,"YES",id,"NO");
  1967.  
  1968.  
  1969. show_menu(id, KeysFFVote, szMenu, iTime, "FRVote");
  1970.  
  1971.  
  1972. }else
  1973.  
  1974.  
  1975. set_task(1.0, "show_menu_", tid);
  1976.  
  1977.  
  1978. }
  1979.  
  1980.  
  1981. public eventInGame(id){
  1982.  
  1983.  
  1984. if(giVotes[id][VOTE_ON] || giVotes[id][VOTE_OFF])
  1985.  
  1986.  
  1987. return;
  1988.  
  1989.  
  1990. if(gbVote)
  1991.  
  1992.  
  1993. set_task(1.0, "show_menu_", id+TASK_SHOWMENU);
  1994.  
  1995.  
  1996. }
  1997.  
  1998.  
  1999. public PressedFRVote(id, key) {
  2000.  
  2001.  
  2002. if(gbVote==false) return;
  2003.  
  2004.  
  2005. switch (key) {
  2006.  
  2007.  
  2008. case VOTE_ON: { // 1
  2009.  
  2010.  
  2011. giVotes[id][VOTE_ON]=1;
  2012.  
  2013.  
  2014. }
  2015.  
  2016.  
  2017. case VOTE_OFF: { // 2
  2018.  
  2019.  
  2020. giVotes[id][VOTE_OFF]=1;
  2021.  
  2022.  
  2023. }
  2024.  
  2025.  
  2026. default:{
  2027.  
  2028.  
  2029. return;
  2030.  
  2031.  
  2032. }
  2033.  
  2034.  
  2035. }
  2036.  
  2037.  
  2038. new szName[32];
  2039.  
  2040.  
  2041. get_user_name(id, szName, 31);
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047. client_print(0, print_chat, "* %L",LANG_PLAYER,(key==VOTE_ON)?"VOTED_FOR":"VOTED_AGAINST", szName);
  2048.  
  2049.  
  2050. }
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056. stock Create_TE_BEAMPOINTS(Float:start[3], Float:end[3], iSprite, startFrame, frameRate, life, width, noise, red, green, blue, alpha, speed){
  2057.  
  2058.  
  2059. message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  2060.  
  2061.  
  2062. write_byte( TE_BEAMPOINTS )
  2063.  
  2064.  
  2065. write_coord( floatround(start[0]) )
  2066.  
  2067.  
  2068. write_coord( floatround(start[1]) )
  2069.  
  2070.  
  2071. write_coord( floatround(start[2]) )
  2072.  
  2073.  
  2074. write_coord( floatround(end[0]) )
  2075.  
  2076.  
  2077. write_coord( floatround(end[1]) )
  2078.  
  2079.  
  2080. write_coord( floatround(end[2]) )
  2081.  
  2082.  
  2083. write_short( iSprite ) // model
  2084.  
  2085.  
  2086. write_byte( startFrame ) // start frame
  2087.  
  2088.  
  2089. write_byte( frameRate ) // framerate
  2090.  
  2091.  
  2092. write_byte( life ) // life
  2093.  
  2094.  
  2095. write_byte( width ) // width
  2096.  
  2097.  
  2098. write_byte( noise ) // noise
  2099.  
  2100.  
  2101. write_byte( red) // red
  2102.  
  2103.  
  2104. write_byte( green ) // green
  2105.  
  2106.  
  2107. write_byte( blue ) // blue
  2108.  
  2109.  
  2110. write_byte( alpha ) // brightness
  2111.  
  2112.  
  2113. write_byte( speed ) // speed
  2114.  
  2115.  
  2116. message_end()
  2117.  
  2118.  
  2119. }
  2120.  
  2121.  
  2122. stock fm_get_brush_entity_origin(ent, Float:fOrigin[3]){
  2123.  
  2124.  
  2125. new Float:fMins[3], Float:fMaxs[3];
  2126.  
  2127.  
  2128. pev(ent, pev_mins, fMins);
  2129.  
  2130.  
  2131. pev(ent, pev_maxs, fMaxs);
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137. for(new i=0;i<3;i++)
  2138.  
  2139.  
  2140. fOrigin[i]=(fMins[i]+fMaxs[i])/2;
  2141.  
  2142.  
  2143. }
  2144.  
  2145.  
  2146.  

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin kérdés
HozzászólásElküldve: 2014.01.24. 19:44 
Offline
Felfüggesztve

Csatlakozott: 2013.08.09. 22:37
Hozzászólások: 571
Megköszönt másnak: 10 alkalommal
Megköszönték neki: 85 alkalommal
norbee.16 írta:
stupid írta:
nem ad rá logot...

de ez talán segít:[AMXX] Displaying debug trace (plugin "free.amxx")
L 01/24/2014 - 17:28:15: [AMXX] Run time error 10: native error (native "player_menu_info")
L 01/24/2014 - 17:28:15: [AMXX] [0] 74b2a8dz.sma.p::show_menu_ (line 619)


+
SMA Forráskód: [ Mindet kijelol ]
  1. SZ_GetSpace: overflow on netchan->message


Ezt még régen Silent javítót/bele írta hogy free körbe csak kés legyen.

Visszont azt javaslom hogy a hibás pluginokat javításd, mivel nekem is most 1 db hibás plugin miatt fagy a szerver! De ha dobsz egy pmt akkor 1-2be tudók is segíteni.

Lang:
http://.hlmod.hu/viewtopic.php?f=31&t=13880

SMA:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2.  
  3.  
  4. #include <amxmisc>
  5.  
  6.  
  7. #include <hamsandwich>
  8.  
  9.  
  10. #include <fakemeta>
  11.  
  12.  
  13. #include <colorchat>
  14.  
  15.  
  16. #include <fun>
  17.  
  18.  
  19.  
  20.  
  21.  
  22. #define PLUGIN "Use button once"
  23.  
  24.  
  25. #define VERSION "1.3"
  26.  
  27.  
  28. #define AUTHOR "R3X"
  29.  
  30.  
  31.  
  32.  
  33.  
  34. #define MAX_BUTTONS 100
  35.  
  36.  
  37. #define KeysButtonsMenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // Keys: 137890
  38.  
  39.  
  40. #define KeysOptionsMenu (1<<0)|(1<<1)|(1<<8) //129
  41.  
  42.  
  43. #define KeysDelayMenu (1<<0)|(1<<1)|(1<<2)|(1<<8) //1239
  44.  
  45.  
  46.  
  47.  
  48.  
  49. #define ANNOUNCE_TASK 10000
  50.  
  51.  
  52.  
  53.  
  54.  
  55. #define m_flWait 44
  56.  
  57.  
  58.  
  59.  
  60.  
  61. //Main
  62.  
  63.  
  64.  
  65.  
  66.  
  67. new gEnt[MAX_BUTTONS];
  68.  
  69.  
  70. new gUsed[MAX_BUTTONS];
  71.  
  72.  
  73. new giPointer=0;
  74.  
  75.  
  76. new gOnStart[MAX_BUTTONS];
  77.  
  78.  
  79. new Float:gDefaultDelay[MAX_BUTTONS];
  80.  
  81.  
  82. new Float:gDelay[MAX_BUTTONS];
  83.  
  84.  
  85.  
  86.  
  87.  
  88. new gInMenu[33];
  89.  
  90.  
  91.  
  92.  
  93.  
  94. new gszFile[128];
  95.  
  96.  
  97.  
  98.  
  99.  
  100. new giSprite;
  101.  
  102.  
  103.  
  104.  
  105.  
  106. new gcvarDefault, gcvarTeam, gcvarFreeRun;
  107.  
  108.  
  109. new gcvarLimit, gcvarLimitMode, gcvarPrivilege;
  110.  
  111.  
  112. new gcvarMessage, gcvarRestore;
  113.  
  114.  
  115.  
  116.  
  117.  
  118. //VOTE
  119.  
  120.  
  121.  
  122.  
  123.  
  124. #define TASK_SHOWMENU 432
  125.  
  126.  
  127. #define TASK_RES 123
  128.  
  129.  
  130.  
  131.  
  132.  
  133. #define MAX_ROUNDS 999
  134.  
  135.  
  136.  
  137.  
  138.  
  139. #define KeysFFVote (1<<0)|(1<<1) // Keys: 12
  140.  
  141.  
  142.  
  143.  
  144.  
  145. new gcvarFRVoteTime;
  146.  
  147.  
  148.  
  149.  
  150.  
  151. new giVoteStart, giVoteTime;
  152.  
  153.  
  154.  
  155.  
  156.  
  157. new bool:gbFreeRun=false;
  158.  
  159.  
  160. new bool:gbVote=false;
  161.  
  162.  
  163.  
  164.  
  165.  
  166. #define VOTE_ON 0
  167.  
  168.  
  169. #define VOTE_OFF 1
  170.  
  171.  
  172.  
  173.  
  174.  
  175. new giVotes[33][2];
  176.  
  177.  
  178.  
  179.  
  180.  
  181. new giRounds=MAX_ROUNDS, giTime=0;
  182.  
  183.  
  184.  
  185.  
  186.  
  187. new gCanFree;
  188.  
  189.  
  190.  
  191.  
  192.  
  193. public plugin_init() {
  194.  
  195.  
  196. register_plugin(PLUGIN, VERSION, AUTHOR);
  197.  
  198.  
  199.  
  200.  
  201.  
  202. register_dictionary("common.txt");
  203.  
  204.  
  205. register_dictionary("adminvote.txt");
  206.  
  207.  
  208. register_dictionary("use_button_once.txt");
  209.  
  210.  
  211.  
  212.  
  213.  
  214. register_menucmd(register_menuid("FRVote"), KeysFFVote, "PressedFRVote");
  215.  
  216.  
  217. register_menucmd(register_menuid("ButtonsMenu"), KeysButtonsMenu, "PressedButtonsMenu");
  218.  
  219.  
  220. register_menucmd(register_menuid("OptionsMenu"), KeysOptionsMenu, "PressedOptionsMenu");
  221.  
  222.  
  223. register_menucmd(register_menuid("DelayMenu"), KeysDelayMenu, "PressedDelayMenu");
  224.  
  225.  
  226.  
  227.  
  228.  
  229. register_clcmd("amx_buttons","cmd_amx_buttons",ADMIN_CFG,": Buttons Menu");
  230.  
  231.  
  232.  
  233.  
  234.  
  235. //Default count of uses
  236.  
  237.  
  238. gcvarDefault=register_cvar("amx_buttons_default","1");
  239.  
  240.  
  241. //Who plugin analyze
  242.  
  243.  
  244. //0 - anyone(plugin disabled?)
  245.  
  246.  
  247. //1 - Te
  248.  
  249.  
  250. //2 - Ct
  251.  
  252.  
  253. //3 - Te+Ct
  254.  
  255.  
  256. gcvarTeam=register_cvar("amx_buttons_team","1");
  257.  
  258.  
  259. //Enabled FreeRun mode?
  260.  
  261.  
  262. gcvarFreeRun=register_cvar("amx_buttons_freerun","1");
  263.  
  264.  
  265. //Vote time
  266.  
  267.  
  268. gcvarFRVoteTime=register_cvar("amx_freerun_votetime","10");
  269.  
  270.  
  271.  
  272.  
  273.  
  274. //Type of limit
  275.  
  276.  
  277. //0 - enabled after 'amx_freerun_limit' rounds
  278.  
  279.  
  280. //1 - enabled after 'amx_freerun_limit' minutes
  281.  
  282.  
  283. gcvarLimitMode=register_cvar("amx_freerun_limit_mode","0");
  284.  
  285.  
  286. //Size of Limit
  287.  
  288.  
  289. gcvarLimit=register_cvar("amx_freerun_limit","5");
  290.  
  291.  
  292.  
  293.  
  294.  
  295. //Interval of message
  296.  
  297.  
  298. gcvarMessage=register_cvar("amx_freerun_info","120.0",0,120.0);
  299.  
  300.  
  301.  
  302.  
  303.  
  304. //Terrorist`s privilege
  305.  
  306.  
  307. //if he use /free FreeRun will start without vote, can he?
  308.  
  309.  
  310. gcvarPrivilege=register_cvar("amx_freerun_tt_privilege","1");
  311.  
  312.  
  313.  
  314.  
  315.  
  316. //restore buttons on new round
  317.  
  318.  
  319. gcvarRestore=register_cvar("amx_restore_buttons","1");
  320.  
  321.  
  322.  
  323.  
  324.  
  325. register_clcmd("say /free","cmdVoteFreeRun");
  326.  
  327.  
  328. register_clcmd("say_team /free","cmdVoteFreeRun");
  329.  
  330.  
  331. register_clcmd("say free","cmdVoteFreeRun");
  332.  
  333.  
  334. register_clcmd("say_team free","cmdVoteFreeRun");
  335.  
  336.  
  337.  
  338.  
  339.  
  340. register_clcmd("say /freerun","cmdVoteFreeRun");
  341.  
  342.  
  343. register_clcmd("say_team /freerun","cmdVoteFreeRun");
  344.  
  345.  
  346. register_clcmd("say freerun","cmdVoteFreeRun");
  347.  
  348.  
  349. register_clcmd("say_team freerun","cmdVoteFreeRun");
  350.  
  351.  
  352.  
  353.  
  354.  
  355. register_clcmd("say /fr","cmdVoteFreeRun");
  356.  
  357.  
  358. register_clcmd("say_team /fr","cmdVoteFreeRun");
  359.  
  360.  
  361. register_clcmd("say fr","cmdVoteFreeRun");
  362.  
  363.  
  364. register_clcmd("say_team fr","cmdVoteFreeRun");
  365.  
  366.  
  367.  
  368.  
  369.  
  370. if( engfunc(EngFunc_FindEntityByString,-1 ,"classname", "func_button"))
  371.  
  372.  
  373. RegisterHam(Ham_Use, "func_button", "fwButtonUsed");
  374.  
  375.  
  376.  
  377.  
  378.  
  379. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname","func_rot_button"))
  380.  
  381.  
  382. RegisterHam(Ham_Use, "func_rot_button", "fwButtonUsed");
  383.  
  384.  
  385.  
  386.  
  387.  
  388. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname", "button_target"))
  389.  
  390.  
  391. RegisterHam(Ham_Use, "button_target", "fwButtonUsed");
  392.  
  393.  
  394.  
  395.  
  396.  
  397. register_logevent( "ResetButtons", 2, "0=World triggered", "1=Round_Start");
  398.  
  399.  
  400.  
  401.  
  402.  
  403. RegisterHam( Ham_Touch, "armoury_entity", "FwdHamPlayerPickup" );
  404.  
  405.  
  406. RegisterHam( Ham_Touch, "weaponbox", "FwdHamPlayerPickup" );
  407.  
  408.  
  409.  
  410.  
  411.  
  412. fillButtons("func_button");
  413.  
  414.  
  415. fillButtons("func_rot_button");
  416.  
  417.  
  418. fillButtons("button_target");
  419.  
  420.  
  421. }
  422.  
  423.  
  424.  
  425.  
  426.  
  427. public FwdHamPlayerPickup( iEntity, id )
  428.  
  429.  
  430. {
  431.  
  432.  
  433. if(gbFreeRun)
  434.  
  435.  
  436. return HAM_SUPERCEDE;
  437.  
  438.  
  439.  
  440.  
  441.  
  442. return HAM_IGNORED;
  443.  
  444.  
  445.  
  446.  
  447.  
  448. }
  449.  
  450.  
  451.  
  452.  
  453.  
  454. public plugin_cfg(){
  455.  
  456.  
  457. setButtons();
  458.  
  459.  
  460.  
  461.  
  462.  
  463. new iLen=0, iMax=charsmax(gszFile);
  464.  
  465.  
  466. iLen=get_configsdir(gszFile, iMax );
  467.  
  468.  
  469. iLen+=copy(gszFile[iLen], iMax-iLen, "/dr_buttons/");
  470.  
  471.  
  472.  
  473.  
  474.  
  475. if(!dir_exists(gszFile)){
  476.  
  477.  
  478. set_fail_state("Not found dir: configs/dr_buttons");
  479.  
  480.  
  481. return;
  482.  
  483.  
  484. }
  485.  
  486.  
  487. new szMap[32];
  488.  
  489.  
  490. get_mapname(szMap, 31);
  491.  
  492.  
  493. formatex(gszFile[iLen], charsmax(gszFile)-iLen, "%s.ini", szMap);
  494.  
  495.  
  496. if(!file_exists(gszFile)){
  497.  
  498.  
  499. return;
  500.  
  501.  
  502. }
  503.  
  504.  
  505. new szLine[51];
  506.  
  507.  
  508. new szButton[4], szTimes[3], szDelay[5];
  509.  
  510.  
  511. new Float:fDelay;
  512.  
  513.  
  514. for(new i=0;read_file(gszFile, i, szLine, 50, iLen);i++){
  515.  
  516.  
  517. if(iLen==0) continue;
  518.  
  519.  
  520. trim(szLine);
  521.  
  522.  
  523. if(szLine[0]==';') continue;
  524.  
  525.  
  526. parse(szLine, szButton, 3, szTimes, 2, szDelay, 4);
  527.  
  528.  
  529. fDelay=szDelay[0]?str_to_float(szDelay):-1.0;
  530.  
  531.  
  532. set_start_value(str_to_num(szButton), str_to_num(szTimes), fDelay);
  533.  
  534.  
  535. }
  536.  
  537.  
  538. new Float:fInterval=get_pcvar_float(gcvarMessage);
  539.  
  540.  
  541. if(fInterval > 0.0)
  542.  
  543.  
  544. set_task(120.0, "announceVote",ANNOUNCE_TASK,_,_,"b");
  545.  
  546.  
  547. }
  548.  
  549.  
  550. public plugin_precache(){
  551.  
  552.  
  553. giSprite=precache_model("sprites/flare1.spr");
  554.  
  555.  
  556.  
  557.  
  558.  
  559. }
  560.  
  561.  
  562. public client_putinserver(id){
  563.  
  564.  
  565. if(!is_user_bot(id))
  566.  
  567.  
  568. eventInGame(id);
  569.  
  570.  
  571. }
  572.  
  573.  
  574. public client_connect(id){
  575.  
  576.  
  577. giVotes[id][VOTE_ON]=0;
  578.  
  579.  
  580. giVotes[id][VOTE_OFF]=0;
  581.  
  582.  
  583. }
  584.  
  585.  
  586. public announceVote(){
  587.  
  588.  
  589. if(get_pcvar_num(gcvarFreeRun))
  590.  
  591.  
  592. ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER, "ANNOUNCE");
  593.  
  594.  
  595. }
  596.  
  597.  
  598. setButtons(){
  599.  
  600.  
  601. new iDef=get_pcvar_num(gcvarDefault);
  602.  
  603.  
  604. for(new i=0;i<giPointer;i++){
  605.  
  606.  
  607. gUsed[i]=iDef;
  608.  
  609.  
  610. gOnStart[i]=iDef;
  611.  
  612.  
  613. gDelay[i]=get_pdata_float(gEnt[i],m_flWait);
  614.  
  615.  
  616. gDefaultDelay[i]=gDelay[i];
  617.  
  618.  
  619. }
  620.  
  621.  
  622. }
  623.  
  624.  
  625. fillButtons(const szClass[]){
  626.  
  627.  
  628. new ent = -1;
  629.  
  630.  
  631. while((ent = engfunc(EngFunc_FindEntityByString,ent ,"classname", szClass)) != 0){
  632.  
  633.  
  634. gEnt[giPointer++]=ent;
  635.  
  636.  
  637. set_pev(ent, pev_iuser4, giPointer);
  638.  
  639.  
  640. }
  641.  
  642.  
  643. }
  644.  
  645.  
  646. set_start_value(ent, times, Float:delay){
  647.  
  648.  
  649. new index=get_ent_index(ent);
  650.  
  651.  
  652. if(index!=-1){
  653.  
  654.  
  655. gOnStart[index]=times;
  656.  
  657.  
  658. if(delay>=0.0)
  659.  
  660.  
  661. gDelay[index]=delay;
  662.  
  663.  
  664. }
  665.  
  666.  
  667. }
  668.  
  669.  
  670. get_ent_index(ent){
  671.  
  672.  
  673. /*
  674.  
  675.  
  676.   for(new i=0;i<giPointer;i++)
  677.  
  678.  
  679.   if(gEnt[i]==ent) return i;
  680.  
  681.  
  682.   return -1;
  683.  
  684.  
  685.   */
  686.  
  687.  
  688. return pev(ent, pev_iuser4)-1;
  689.  
  690.  
  691. }
  692.  
  693.  
  694. restoreButton(ent){
  695.  
  696.  
  697. if(pev(ent, pev_frame) > 0.0){
  698.  
  699.  
  700. new Float:Life;
  701.  
  702.  
  703. pev(ent, pev_nextthink, Life);
  704.  
  705.  
  706. set_pev(ent, pev_ltime, Life-0.01);
  707.  
  708.  
  709. }
  710.  
  711.  
  712. }
  713.  
  714.  
  715. public ResetButtons(){
  716.  
  717.  
  718. gbFreeRun=false;
  719.  
  720.  
  721. gCanFree = true;
  722.  
  723.  
  724. set_task(10.0, "CannotFree");
  725.  
  726.  
  727. gbVote=false;
  728.  
  729.  
  730. new bool:bRestore=get_pcvar_num(gcvarRestore)!=0;
  731.  
  732.  
  733. for(new i=0;i<MAX_BUTTONS;i++){
  734.  
  735.  
  736. gUsed[i]=gOnStart[i];
  737.  
  738.  
  739. if(bRestore){
  740.  
  741.  
  742. restoreButton(gEnt[i]);
  743.  
  744.  
  745. }
  746.  
  747.  
  748. }
  749.  
  750.  
  751. giRounds++;
  752.  
  753.  
  754. }
  755.  
  756.  
  757.  
  758.  
  759.  
  760. public CannotFree()
  761.  
  762.  
  763. {
  764.  
  765.  
  766. gCanFree = false;
  767.  
  768.  
  769. return PLUGIN_HANDLED;
  770.  
  771.  
  772. }
  773.  
  774.  
  775.  
  776.  
  777.  
  778. public fwButtonUsed(this, idcaller, idactivator, use_type, Float:value){
  779.  
  780.  
  781. if(idcaller!=idactivator) return HAM_IGNORED;
  782.  
  783.  
  784.  
  785.  
  786.  
  787. if(pev(this, pev_frame) > 0.0)
  788.  
  789.  
  790. return HAM_IGNORED;
  791.  
  792.  
  793. new index=get_ent_index(this);
  794.  
  795.  
  796. if(index==-1)
  797.  
  798.  
  799. return HAM_IGNORED;
  800.  
  801.  
  802. if(get_user_team(idcaller)&get_pcvar_num(gcvarTeam)){
  803.  
  804.  
  805.  
  806.  
  807.  
  808. if(gbFreeRun){
  809.  
  810.  
  811. ColorChat(idcaller,GREEN, "[FreeRun]^x01 %L",idcaller, "BUTTON_FREERUN");
  812.  
  813.  
  814. return HAM_SUPERCEDE;
  815.  
  816.  
  817. }
  818.  
  819.  
  820. else if(gUsed[index]<=0 && gOnStart[index]!=-1){
  821.  
  822.  
  823. ColorChat(idcaller,GREEN, "[Info]^x01 %L",idcaller,"BUTTON_NOMORE");
  824.  
  825.  
  826. return HAM_SUPERCEDE;
  827.  
  828.  
  829. }
  830.  
  831.  
  832. else{
  833.  
  834.  
  835. if(gUsed[index]>0)
  836.  
  837.  
  838. if(--gUsed[index]){
  839.  
  840.  
  841. ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_LEFT", gUsed[index]);
  842.  
  843.  
  844. }else
  845.  
  846.  
  847. ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_ENDOFLIMIT");
  848.  
  849.  
  850. }
  851.  
  852.  
  853. }
  854.  
  855.  
  856.  
  857.  
  858.  
  859. set_task(0.1,"setDelay",this);
  860.  
  861.  
  862.  
  863.  
  864.  
  865. return HAM_IGNORED;
  866.  
  867.  
  868. }
  869.  
  870.  
  871. public setDelay(this){
  872.  
  873.  
  874. new index=get_ent_index(this);
  875.  
  876.  
  877. set_pev(this, pev_nextthink, pev(this, pev_ltime)+gDelay[index]+0.01);
  878.  
  879.  
  880. }
  881.  
  882.  
  883.  
  884.  
  885.  
  886. //MENU--------------
  887.  
  888.  
  889. public cmd_amx_buttons(id, level, cid){
  890.  
  891.  
  892. if(!cmd_access(id, level, cid, 1))
  893.  
  894.  
  895. return PLUGIN_HANDLED;
  896.  
  897.  
  898. if(giPointer==0)
  899.  
  900.  
  901. client_print(id, print_chat, "%L", id,"NO_BUTTONS");
  902.  
  903.  
  904. else
  905.  
  906.  
  907. ShowButtonsMenu(id);
  908.  
  909.  
  910. return PLUGIN_HANDLED;
  911.  
  912.  
  913. }
  914.  
  915.  
  916. ShowButtonsMenu(id, trace=1){
  917.  
  918.  
  919. if(!is_user_alive(id)){
  920.  
  921.  
  922. client_print(id, print_center, "%L",id, "MUST_B_ALIVE");
  923.  
  924.  
  925. return;
  926.  
  927.  
  928. }
  929.  
  930.  
  931. new iNow=gInMenu[id];
  932.  
  933.  
  934. new iKeys=(1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);
  935.  
  936.  
  937. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  938.  
  939.  
  940. new szNoLimit[32];
  941.  
  942.  
  943. formatex(szNoLimit,31,"(%L)",id,"NOLIMIT");
  944.  
  945.  
  946. iLen=copy(szMenu, iMax,"\yButtons Menu^n");
  947.  
  948.  
  949. iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);
  950.  
  951.  
  952. iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %d %s^n\y1\w. %L ",id, "USAGE",gOnStart[iNow],(gOnStart[iNow]==-1)?szNoLimit:"", id, "MORE");
  953.  
  954.  
  955.  
  956.  
  957.  
  958. if(gOnStart[iNow]>=0){
  959.  
  960.  
  961. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");
  962.  
  963.  
  964. iKeys|=(1<<1);
  965.  
  966.  
  967. }else
  968.  
  969.  
  970. iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");
  971.  
  972.  
  973. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n3. %L^n^n4. %L^n^n",id, "DELAY_EDITOR",id,"OPTIONS");
  974.  
  975.  
  976.  
  977.  
  978.  
  979. iLen+=formatex(szMenu[iLen], iMax-iLen,"5. %sNo Clip\w^n",isNoClip(id)?"\r":"");
  980.  
  981.  
  982. iLen+=formatex(szMenu[iLen], iMax-iLen,"6. %sGodMode\w^n",isGodMode(id)?"\r":"");
  983.  
  984.  
  985.  
  986.  
  987.  
  988. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n7. \r%L^n\w",id, "WORD_SAVE");
  989.  
  990.  
  991.  
  992.  
  993.  
  994. if(iNow>0){
  995.  
  996.  
  997. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n8. %L",id, "BACK");
  998.  
  999.  
  1000. iKeys|=(1<<7);
  1001.  
  1002.  
  1003. }
  1004.  
  1005.  
  1006. if(iNow<giPointer-1){
  1007.  
  1008.  
  1009. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n9. %L",id, "WORD_NEXT");
  1010.  
  1011.  
  1012. iKeys|=(1<<8);
  1013.  
  1014.  
  1015. }
  1016.  
  1017.  
  1018. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n0. %L", id, "EXIT");
  1019.  
  1020.  
  1021. show_menu(id, iKeys, szMenu, -1, "ButtonsMenu");
  1022.  
  1023.  
  1024. if(trace){
  1025.  
  1026.  
  1027. new Float:fOrigin[3], Float:fOrigin2[3];
  1028.  
  1029.  
  1030. fm_get_brush_entity_origin(gEnt[gInMenu[id]], fOrigin);
  1031.  
  1032.  
  1033. pev(id, pev_origin, fOrigin2);
  1034.  
  1035.  
  1036. Create_TE_BEAMPOINTS(fOrigin, fOrigin2, giSprite, 0, 10, 20, 5, 1, 255, 0, 0, 100, 50);
  1037.  
  1038.  
  1039. }
  1040.  
  1041.  
  1042. }
  1043.  
  1044.  
  1045. bool:isNoClip(id)
  1046.  
  1047.  
  1048. return pev(id, pev_movetype)==MOVETYPE_NOCLIP;
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054. bool:isGodMode(id)
  1055.  
  1056.  
  1057. return pev(id, pev_takedamage)==0.0;
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063. public PressedButtonsMenu(id, key) {
  1064.  
  1065.  
  1066. if(!is_user_alive(id)){
  1067.  
  1068.  
  1069. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1070.  
  1071.  
  1072. return;
  1073.  
  1074.  
  1075. }
  1076.  
  1077.  
  1078. /* Menu:
  1079.  
  1080.  
  1081.   * Buttons Menu
  1082.  
  1083.  
  1084.   * Ent#<ent>
  1085.  
  1086.  
  1087.   *
  1088.  
  1089.  
  1090.   * Uzyc: <ile>
  1091.  
  1092.  
  1093.   * 1. Wiecej 2. Mniej
  1094.  
  1095.  
  1096.   *
  1097.  
  1098.  
  1099.   * 3. Editor
  1100.  
  1101.  
  1102.   *
  1103.  
  1104.  
  1105.   * 4. Options
  1106.  
  1107.  
  1108.   *
  1109.  
  1110.  
  1111.   * 5. NoClip
  1112.  
  1113.  
  1114.   * 6. GodMode
  1115.  
  1116.  
  1117.   *
  1118.  
  1119.  
  1120.   * 7. Zapisz
  1121.  
  1122.  
  1123.   *
  1124.  
  1125.  
  1126.   * 8. Poprzedni
  1127.  
  1128.  
  1129.   * 9. Nastepny
  1130.  
  1131.  
  1132.   * 0. Wyjdz
  1133.  
  1134.  
  1135.   */
  1136.  
  1137.  
  1138. new trace=0;
  1139.  
  1140.  
  1141. switch (key) {
  1142.  
  1143.  
  1144. case 0: { // 1
  1145.  
  1146.  
  1147. gOnStart[gInMenu[id]]++;
  1148.  
  1149.  
  1150. }
  1151.  
  1152.  
  1153. case 1: { // 2
  1154.  
  1155.  
  1156. gOnStart[gInMenu[id]]--;
  1157.  
  1158.  
  1159. }
  1160.  
  1161.  
  1162. case 2: { // 3
  1163.  
  1164.  
  1165. ShowDelayMenu(id);
  1166.  
  1167.  
  1168. return;
  1169.  
  1170.  
  1171. }
  1172.  
  1173.  
  1174. case 3:{ //4
  1175.  
  1176.  
  1177. ShowOptionsMenu(id);
  1178.  
  1179.  
  1180. return;
  1181.  
  1182.  
  1183. }
  1184.  
  1185.  
  1186. case 4:{ //5
  1187.  
  1188.  
  1189. set_pev(id, pev_movetype, isNoClip(id)?MOVETYPE_WALK:MOVETYPE_NOCLIP);
  1190.  
  1191.  
  1192. }
  1193.  
  1194.  
  1195. case 5:{ //6
  1196.  
  1197.  
  1198. set_pev(id, pev_takedamage, isGodMode(id)?1.0:0.0);
  1199.  
  1200.  
  1201. }
  1202.  
  1203.  
  1204. case 6: { // 7
  1205.  
  1206.  
  1207. save2File(id);
  1208.  
  1209.  
  1210. }
  1211.  
  1212.  
  1213. case 7: { // 8
  1214.  
  1215.  
  1216. gInMenu[id]--;
  1217.  
  1218.  
  1219. trace=1;
  1220.  
  1221.  
  1222. }
  1223.  
  1224.  
  1225. case 8: { // 9
  1226.  
  1227.  
  1228. gInMenu[id]++;
  1229.  
  1230.  
  1231. trace=1;
  1232.  
  1233.  
  1234. }
  1235.  
  1236.  
  1237. case 9: { // 0
  1238.  
  1239.  
  1240. return;
  1241.  
  1242.  
  1243. }
  1244.  
  1245.  
  1246. }
  1247.  
  1248.  
  1249. ShowButtonsMenu(id, trace);
  1250.  
  1251.  
  1252. }
  1253.  
  1254.  
  1255. //--------------
  1256.  
  1257.  
  1258. ShowOptionsMenu(id){
  1259.  
  1260.  
  1261. if(!is_user_alive(id)){
  1262.  
  1263.  
  1264. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1265.  
  1266.  
  1267. return;
  1268.  
  1269.  
  1270. }
  1271.  
  1272.  
  1273. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  1274.  
  1275.  
  1276. iLen+=formatex(szMenu[iLen], iMax-iLen,"\yOptions^n^n");
  1277.  
  1278.  
  1279. iLen+=formatex(szMenu[iLen], iMax-iLen,"\w1. %L^n",id, "GOTO");
  1280.  
  1281.  
  1282. iLen+=formatex(szMenu[iLen], iMax-iLen,"2. %L^n^n",id, "NEAREST");
  1283.  
  1284.  
  1285. iLen+=formatex(szMenu[iLen], iMax-iLen,"9. %L",id, "BACK");
  1286.  
  1287.  
  1288. show_menu(id, KeysOptionsMenu, szMenu, -1, "OptionsMenu");
  1289.  
  1290.  
  1291. }
  1292.  
  1293.  
  1294. public PressedOptionsMenu(id, key){
  1295.  
  1296.  
  1297. if(!is_user_alive(id)){
  1298.  
  1299.  
  1300. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1301.  
  1302.  
  1303. return;
  1304.  
  1305.  
  1306. }
  1307.  
  1308.  
  1309. new trace=0;
  1310.  
  1311.  
  1312. switch (key) {
  1313.  
  1314.  
  1315. case 0: { // 1
  1316.  
  1317.  
  1318. go2Button(id);
  1319.  
  1320.  
  1321. }
  1322.  
  1323.  
  1324. case 1: { // 2
  1325.  
  1326.  
  1327. gInMenu[id]=findTheClosest(id);
  1328.  
  1329.  
  1330. trace=1;
  1331.  
  1332.  
  1333. }
  1334.  
  1335.  
  1336. }
  1337.  
  1338.  
  1339. ShowButtonsMenu(id, trace);
  1340.  
  1341.  
  1342. }
  1343.  
  1344.  
  1345. //-------------
  1346.  
  1347.  
  1348. ShowDelayMenu(id){
  1349.  
  1350.  
  1351. if(!is_user_alive(id)){
  1352.  
  1353.  
  1354. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  1355.  
  1356.  
  1357. return;
  1358.  
  1359.  
  1360. }
  1361.  
  1362.  
  1363. new iNow=gInMenu[id];
  1364.  
  1365.  
  1366. new iKeys=(1<<0)|(1<<2)|(1<<8);
  1367.  
  1368.  
  1369. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  1370.  
  1371.  
  1372. iLen=copy(szMenu, iMax,"\yDelay Menu^n");
  1373.  
  1374.  
  1375. iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);
  1376.  
  1377.  
  1378. iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %.1f^n",id, "CURRENT_DELAY", gDelay[iNow]);
  1379.  
  1380.  
  1381. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y1\w. %L ",id, "MORE");
  1382.  
  1383.  
  1384. if(gDelay[iNow]>0.0){
  1385.  
  1386.  
  1387. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");
  1388.  
  1389.  
  1390. iKeys|=(1<<1);
  1391.  
  1392.  
  1393. }else
  1394.  
  1395.  
  1396. iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");
  1397.  
  1398.  
  1399. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n3. %L",id, "DEFAULT");
  1400.  
  1401.  
  1402. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n9. %L",id, "BACK");
  1403.  
  1404.  
  1405. show_menu(id, iKeys, szMenu, -1, "DelayMenu");
  1406.  
  1407.  
  1408. }
  1409.  
  1410.  
  1411. public PressedDelayMenu(id, key){
  1412.  
  1413.  
  1414. new iNow=gInMenu[id];
  1415.  
  1416.  
  1417. switch(key){
  1418.  
  1419.  
  1420. case 0:{
  1421.  
  1422.  
  1423. gDelay[iNow]+=1.0;
  1424.  
  1425.  
  1426. }
  1427.  
  1428.  
  1429. case 1:{
  1430.  
  1431.  
  1432. gDelay[iNow]-=1.0;
  1433.  
  1434.  
  1435. if(gDelay[iNow] < 0.0)
  1436.  
  1437.  
  1438. gDelay[iNow]=0.0;
  1439.  
  1440.  
  1441. }
  1442.  
  1443.  
  1444. case 2:{
  1445.  
  1446.  
  1447. gDelay[iNow]=gDefaultDelay[iNow];
  1448.  
  1449.  
  1450. }
  1451.  
  1452.  
  1453. case 8:{
  1454.  
  1455.  
  1456. ShowButtonsMenu(id, 0);
  1457.  
  1458.  
  1459. return;
  1460.  
  1461.  
  1462. }
  1463.  
  1464.  
  1465. }
  1466.  
  1467.  
  1468. ShowDelayMenu(id);
  1469.  
  1470.  
  1471. }
  1472.  
  1473.  
  1474. //-------------
  1475.  
  1476.  
  1477. save2File(id){
  1478.  
  1479.  
  1480. if(file_exists(gszFile))
  1481.  
  1482.  
  1483. delete_file(gszFile);
  1484.  
  1485.  
  1486. write_file(gszFile, ";<ent> <count> <delay>");
  1487.  
  1488.  
  1489. new szLine[35];
  1490.  
  1491.  
  1492. for(new i=0;i<giPointer;i++){
  1493.  
  1494.  
  1495. formatex(szLine, 34, "%d %d %.1f",gEnt[i], gOnStart[i], gDelay[i]);
  1496.  
  1497.  
  1498. write_file(gszFile, szLine);
  1499.  
  1500.  
  1501. }
  1502.  
  1503.  
  1504. client_print(id, print_center, "%L!",id,"WORD_SAVED");
  1505.  
  1506.  
  1507. }
  1508.  
  1509.  
  1510. findTheClosest(id){
  1511.  
  1512.  
  1513. new Float:fPlayerOrig[3];
  1514.  
  1515.  
  1516. pev(id, pev_origin, fPlayerOrig);
  1517.  
  1518.  
  1519. new Float:fOrigin[3];
  1520.  
  1521.  
  1522. fm_get_brush_entity_origin(gEnt[0], fOrigin);
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528. new Float:fRange=get_distance_f(fOrigin, fPlayerOrig), index=0;
  1529.  
  1530.  
  1531. new Float:fNewRange;
  1532.  
  1533.  
  1534. for(new i=1;i<giPointer;i++){
  1535.  
  1536.  
  1537. fm_get_brush_entity_origin(gEnt[i], fOrigin);
  1538.  
  1539.  
  1540. fNewRange=get_distance_f( fOrigin, fPlayerOrig);
  1541.  
  1542.  
  1543. if(fNewRange < fRange){
  1544.  
  1545.  
  1546. fRange=fNewRange;
  1547.  
  1548.  
  1549. index=i;
  1550.  
  1551.  
  1552. }
  1553.  
  1554.  
  1555. }
  1556.  
  1557.  
  1558. return index;
  1559.  
  1560.  
  1561. }
  1562.  
  1563.  
  1564. go2Button(id, ent=-1){
  1565.  
  1566.  
  1567. if(ent==-1)
  1568.  
  1569.  
  1570. ent=gInMenu[id];
  1571.  
  1572.  
  1573. ent=gEnt[ent];
  1574.  
  1575.  
  1576. if(!pev_valid(ent)){
  1577.  
  1578.  
  1579. client_print(id, print_center, "%L",id,"NOTARGET");
  1580.  
  1581.  
  1582. return;
  1583.  
  1584.  
  1585. }
  1586.  
  1587.  
  1588. new Float:fOrigin[3];
  1589.  
  1590.  
  1591. fm_get_brush_entity_origin(ent, fOrigin);
  1592.  
  1593.  
  1594. set_pev(id, pev_origin, fOrigin);
  1595.  
  1596.  
  1597. client_print(id, print_chat, "PS. No Clip <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->");
  1598.  
  1599.  
  1600. }
  1601.  
  1602.  
  1603. //FreeRun
  1604.  
  1605.  
  1606. public cmdVoteFreeRun(id){
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612. if(!gCanFree)
  1613.  
  1614.  
  1615. {
  1616.  
  1617.  
  1618. ColorChat(id, GREEN, "FreeRun]^x01Letelt az ido, mar nem tudsz free kort inditani!");
  1619.  
  1620.  
  1621. return PLUGIN_HANDLED;
  1622.  
  1623.  
  1624. }
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630. if(get_pcvar_num(gcvarFreeRun)==0){
  1631.  
  1632.  
  1633. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_DISABLED");
  1634.  
  1635.  
  1636. return PLUGIN_HANDLED;
  1637.  
  1638.  
  1639. }
  1640.  
  1641.  
  1642. if(gbVote){
  1643.  
  1644.  
  1645. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_VOTE_IS_NOW");
  1646.  
  1647.  
  1648. return PLUGIN_HANDLED;
  1649.  
  1650.  
  1651. }
  1652.  
  1653.  
  1654. if(!is_user_alive(id)){
  1655.  
  1656.  
  1657. client_print(id, print_center, "%L",id, "MUST_B_ALIVE");
  1658.  
  1659.  
  1660. return PLUGIN_HANDLED;
  1661.  
  1662.  
  1663. }
  1664.  
  1665.  
  1666. if(get_pcvar_num(gcvarPrivilege)!=0 && !gbFreeRun && get_user_team(id)==1){
  1667.  
  1668.  
  1669. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_TT_DECIDED");
  1670.  
  1671.  
  1672. makeFreeRun(true);
  1673.  
  1674.  
  1675. return PLUGIN_HANDLED;
  1676.  
  1677.  
  1678. }
  1679.  
  1680.  
  1681. new iLimit=get_pcvar_num(gcvarLimit);
  1682.  
  1683.  
  1684. new iOffset=0;
  1685.  
  1686.  
  1687. if(get_pcvar_num(gcvarLimitMode)){
  1688.  
  1689.  
  1690. iOffset = ( giTime + iLimit * 60 ) - get_systime();
  1691.  
  1692.  
  1693. if( iOffset > 0 ){
  1694.  
  1695.  
  1696. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_TIME", iOffset/60, iOffset%60);
  1697.  
  1698.  
  1699. return PLUGIN_HANDLED;
  1700.  
  1701.  
  1702. }
  1703.  
  1704.  
  1705. }
  1706.  
  1707.  
  1708. else{
  1709.  
  1710.  
  1711. iOffset = min(MAX_ROUNDS, iLimit) - giRounds;
  1712.  
  1713.  
  1714. if( iOffset > 0 ){
  1715.  
  1716.  
  1717. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_ROUNDS", iOffset);
  1718.  
  1719.  
  1720. return PLUGIN_HANDLED;
  1721.  
  1722.  
  1723. }
  1724.  
  1725.  
  1726. }
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732. makeVote();
  1733.  
  1734.  
  1735. return PLUGIN_CONTINUE;
  1736.  
  1737.  
  1738. }
  1739.  
  1740.  
  1741. //FREERUN
  1742.  
  1743.  
  1744. public makeVote(){
  1745.  
  1746.  
  1747. giVoteTime=get_pcvar_num(gcvarFRVoteTime);
  1748.  
  1749.  
  1750. gbVote=true;
  1751.  
  1752.  
  1753. giVoteStart=get_systime();
  1754.  
  1755.  
  1756. set_task(float(giVoteTime), "resultsOfVote", TASK_RES);
  1757.  
  1758.  
  1759. new Players[32], playerCount;
  1760.  
  1761.  
  1762. new id;
  1763.  
  1764.  
  1765. get_players(Players, playerCount);
  1766.  
  1767.  
  1768. for (new i=0; i<playerCount; i++){
  1769.  
  1770.  
  1771. id = Players[i];
  1772.  
  1773.  
  1774. eventInGame(id);
  1775.  
  1776.  
  1777. }
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783. }
  1784.  
  1785.  
  1786. public resultsOfVote(tid){
  1787.  
  1788.  
  1789. gbVote=false;
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795. new giVotesOn=count(VOTE_ON);
  1796.  
  1797.  
  1798. new giVotesOff=count(VOTE_OFF);
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804. ColorChat(0,GREEN, "[FreeRun]^x01 %L %L(%d) vs %L(%d)",LANG_SERVER,"FREERUN_RESULTS",LANG_SERVER,"YES",giVotesOn,LANG_SERVER,"NO", giVotesOff);
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810. if( giVotesOn == giVotesOff ){
  1811.  
  1812.  
  1813. ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER,"FREERUN_TIE");
  1814.  
  1815.  
  1816. return;
  1817.  
  1818.  
  1819. }
  1820.  
  1821.  
  1822. makeFreeRun((giVotesOn > giVotesOff));
  1823.  
  1824.  
  1825. ColorChat(0,GREEN, "[FreeRun]^x01 %L ^x03%L",LANG_SERVER,"FREERUN_WINOPTION",LANG_SERVER, gbFreeRun?"YES":"NO");
  1826.  
  1827.  
  1828. }
  1829.  
  1830.  
  1831. makeFreeRun(bool:bFR=true){
  1832.  
  1833.  
  1834. gbFreeRun=bFR;
  1835.  
  1836.  
  1837. reset();
  1838.  
  1839.  
  1840. giRounds=0;
  1841.  
  1842.  
  1843. giTime=get_systime();
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849. if(gbFreeRun){
  1850.  
  1851.  
  1852. set_hudmessage(0, 255, 255, 0.02, -1.0);
  1853.  
  1854.  
  1855. show_hudmessage(0, "FreeRun!");
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861. new players[32], pnum;
  1862.  
  1863.  
  1864. get_players(players, pnum);
  1865.  
  1866.  
  1867. for(new i=0; i<pnum; i++)
  1868.  
  1869.  
  1870. {
  1871.  
  1872.  
  1873. new pid = players[i];
  1874.  
  1875.  
  1876. strip_user_weapons(pid);
  1877.  
  1878.  
  1879. give_item(pid, "weapon_knife");
  1880.  
  1881.  
  1882. }
  1883.  
  1884.  
  1885. }
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891. }
  1892.  
  1893.  
  1894. count(VOTE_STATE){
  1895.  
  1896.  
  1897. new iCounter=0;
  1898.  
  1899.  
  1900. for(new i=1;i<33;i++)
  1901.  
  1902.  
  1903. if(giVotes[i][VOTE_STATE])
  1904.  
  1905.  
  1906. iCounter++;
  1907.  
  1908.  
  1909. return iCounter;
  1910.  
  1911.  
  1912. }
  1913.  
  1914.  
  1915. reset(){
  1916.  
  1917.  
  1918. for(new i=1;i<33;i++){
  1919.  
  1920.  
  1921. giVotes[i][VOTE_ON]=0;
  1922.  
  1923.  
  1924. giVotes[i][VOTE_OFF]=0;
  1925.  
  1926.  
  1927. }
  1928.  
  1929.  
  1930. }
  1931.  
  1932.  
  1933. public show_menu_(tid){
  1934.  
  1935.  
  1936. new id=tid-TASK_SHOWMENU;
  1937.  
  1938.  
  1939. new iTeam=get_user_team(id);
  1940.  
  1941.  
  1942. new menu_id, keys;
  1943.  
  1944.  
  1945. new menuUp = player_menu_info( id, menu_id, keys );
  1946.  
  1947.  
  1948. // Only display menu if another isn't shown
  1949.  
  1950.  
  1951. if ( iTeam && (menuUp <= 0 || menu_id < 0) ){
  1952.  
  1953.  
  1954. new iTime=get_pcvar_num(gcvarFRVoteTime);
  1955.  
  1956.  
  1957. new iOffset=get_systime()-giVoteStart;
  1958.  
  1959.  
  1960. iTime-=iOffset;
  1961.  
  1962.  
  1963. new szMenu[128];
  1964.  
  1965.  
  1966. formatex(szMenu, 127, "\y%L^n^n\w1. %L^n2. %L",id,"FREERUN_VOTEMENU",id,"YES",id,"NO");
  1967.  
  1968.  
  1969. show_menu(id, KeysFFVote, szMenu, iTime, "FRVote");
  1970.  
  1971.  
  1972. }else
  1973.  
  1974.  
  1975. set_task(1.0, "show_menu_", tid);
  1976.  
  1977.  
  1978. }
  1979.  
  1980.  
  1981. public eventInGame(id){
  1982.  
  1983.  
  1984. if(giVotes[id][VOTE_ON] || giVotes[id][VOTE_OFF])
  1985.  
  1986.  
  1987. return;
  1988.  
  1989.  
  1990. if(gbVote)
  1991.  
  1992.  
  1993. set_task(1.0, "show_menu_", id+TASK_SHOWMENU);
  1994.  
  1995.  
  1996. }
  1997.  
  1998.  
  1999. public PressedFRVote(id, key) {
  2000.  
  2001.  
  2002. if(gbVote==false) return;
  2003.  
  2004.  
  2005. switch (key) {
  2006.  
  2007.  
  2008. case VOTE_ON: { // 1
  2009.  
  2010.  
  2011. giVotes[id][VOTE_ON]=1;
  2012.  
  2013.  
  2014. }
  2015.  
  2016.  
  2017. case VOTE_OFF: { // 2
  2018.  
  2019.  
  2020. giVotes[id][VOTE_OFF]=1;
  2021.  
  2022.  
  2023. }
  2024.  
  2025.  
  2026. default:{
  2027.  
  2028.  
  2029. return;
  2030.  
  2031.  
  2032. }
  2033.  
  2034.  
  2035. }
  2036.  
  2037.  
  2038. new szName[32];
  2039.  
  2040.  
  2041. get_user_name(id, szName, 31);
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047. client_print(0, print_chat, "* %L",LANG_PLAYER,(key==VOTE_ON)?"VOTED_FOR":"VOTED_AGAINST", szName);
  2048.  
  2049.  
  2050. }
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056. stock Create_TE_BEAMPOINTS(Float:start[3], Float:end[3], iSprite, startFrame, frameRate, life, width, noise, red, green, blue, alpha, speed){
  2057.  
  2058.  
  2059. message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  2060.  
  2061.  
  2062. write_byte( TE_BEAMPOINTS )
  2063.  
  2064.  
  2065. write_coord( floatround(start[0]) )
  2066.  
  2067.  
  2068. write_coord( floatround(start[1]) )
  2069.  
  2070.  
  2071. write_coord( floatround(start[2]) )
  2072.  
  2073.  
  2074. write_coord( floatround(end[0]) )
  2075.  
  2076.  
  2077. write_coord( floatround(end[1]) )
  2078.  
  2079.  
  2080. write_coord( floatround(end[2]) )
  2081.  
  2082.  
  2083. write_short( iSprite ) // model
  2084.  
  2085.  
  2086. write_byte( startFrame ) // start frame
  2087.  
  2088.  
  2089. write_byte( frameRate ) // framerate
  2090.  
  2091.  
  2092. write_byte( life ) // life
  2093.  
  2094.  
  2095. write_byte( width ) // width
  2096.  
  2097.  
  2098. write_byte( noise ) // noise
  2099.  
  2100.  
  2101. write_byte( red) // red
  2102.  
  2103.  
  2104. write_byte( green ) // green
  2105.  
  2106.  
  2107. write_byte( blue ) // blue
  2108.  
  2109.  
  2110. write_byte( alpha ) // brightness
  2111.  
  2112.  
  2113. write_byte( speed ) // speed
  2114.  
  2115.  
  2116. message_end()
  2117.  
  2118.  
  2119. }
  2120.  
  2121.  
  2122. stock fm_get_brush_entity_origin(ent, Float:fOrigin[3]){
  2123.  
  2124.  
  2125. new Float:fMins[3], Float:fMaxs[3];
  2126.  
  2127.  
  2128. pev(ent, pev_mins, fMins);
  2129.  
  2130.  
  2131. pev(ent, pev_maxs, fMaxs);
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137. for(new i=0;i<3;i++)
  2138.  
  2139.  
  2140. fOrigin[i]=(fMins[i]+fMaxs[i])/2;
  2141.  
  2142.  
  2143. }
  2144.  
  2145.  
  2146.  

kösz, ha jutok valamire megy a gomb :D


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


Ki van itt

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