hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.07.04. 17:52



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-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  [2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Freerun eldobja a fegyvert
HozzászólásElküldve:2012.08.21. 13:36 
Offline
Újonc

Csatlakozott:2011.07.22. 18:39
Hozzászólások:11
valaki megtudná csinálni hogy eldobja a fegyvert ha freerun van?



Kód:
  1. /*

  2. Manager of Buttons

  3. for DeathRun

  4.  

  5. Licence: GPL

  6. Description:

  7.         Allow admin to define how many times every button could be used by Menu.

  8.         Add to game (cvar controlled) FreeRun mode - during round with FR traps can`t

  9.         be used by defined teams (default Te).

  10.  

  11. */

  12. #include <amxmodx>

  13. #include <amxmisc>

  14. #include <hamsandwich>

  15. #include <fakemeta>

  16. #include <colorchat>

  17.  

  18. #define PLUGIN "Use button once"

  19. #define VERSION "1.3"

  20. #define AUTHOR "R3X"

  21.  

  22. #define MAX_BUTTONS 100

  23. #define KeysButtonsMenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // Keys: 137890

  24. #define KeysOptionsMenu (1<<0)|(1<<1)|(1<<8) //129

  25. #define KeysDelayMenu (1<<0)|(1<<1)|(1<<2)|(1<<8) //1239

  26.  

  27. #define ANNOUNCE_TASK 10000

  28.  

  29. #define m_flWait 44

  30.  

  31. //Main

  32.  

  33. new gEnt[MAX_BUTTONS];

  34. new gUsed[MAX_BUTTONS];

  35. new giPointer=0;

  36. new gOnStart[MAX_BUTTONS];

  37. new Float:gDefaultDelay[MAX_BUTTONS];

  38. new Float:gDelay[MAX_BUTTONS];

  39.  

  40. new gInMenu[33];

  41.  

  42. new gszFile[128];

  43.  

  44. new giSprite;

  45.  

  46. new gcvarDefault, gcvarTeam, gcvarFreeRun;

  47. new gcvarLimit, gcvarLimitMode, gcvarPrivilege;

  48. new gcvarMessage, gcvarRestore;

  49.  

  50. //VOTE

  51.  

  52. #define TASK_SHOWMENU 432

  53. #define TASK_RES 123

  54.  

  55. #define MAX_ROUNDS 999

  56.  

  57. #define KeysFFVote (1<<0)|(1<<1) // Keys: 12

  58.  

  59. new gcvarFRVoteTime;

  60.  

  61. new giVoteStart, giVoteTime;

  62.  

  63. new bool:gbFreeRun=false;

  64. new bool:gbVote=false;

  65.  

  66. #define VOTE_ON 0

  67. #define VOTE_OFF 1

  68.  

  69. new giVotes[33][2];

  70.  

  71. new giRounds=MAX_ROUNDS, giTime=0;

  72.  

  73. public plugin_init() {

  74.         register_plugin(PLUGIN, VERSION, AUTHOR);

  75.        

  76.         register_dictionary("common.txt");

  77.         register_dictionary("adminvote.txt");

  78.         register_dictionary("use_button_once.txt");

  79.        

  80.         register_menucmd(register_menuid("FRVote"), KeysFFVote, "PressedFRVote");

  81.         register_menucmd(register_menuid("ButtonsMenu"), KeysButtonsMenu, "PressedButtonsMenu");

  82.         register_menucmd(register_menuid("OptionsMenu"), KeysOptionsMenu, "PressedOptionsMenu");

  83.         register_menucmd(register_menuid("DelayMenu"), KeysDelayMenu, "PressedDelayMenu");

  84.        

  85.         register_clcmd("amx_buttons","cmd_amx_buttons",ADMIN_CFG,": Buttons Menu");

  86.        

  87.         //Default count of uses

  88.         gcvarDefault=register_cvar("amx_buttons_default","1");

  89.         //Who plugin analyze

  90.         //0 - anyone(plugin disabled?)

  91.         //1 - Te

  92.         //2 - Ct

  93.         //3 - Te+Ct

  94.         gcvarTeam=register_cvar("amx_buttons_team","1");

  95.         //Enabled FreeRun mode?

  96.         gcvarFreeRun=register_cvar("amx_buttons_freerun","1");

  97.         //Vote time

  98.         gcvarFRVoteTime=register_cvar("amx_freerun_votetime","10");

  99.        

  100.         //Type of limit

  101.         //0 - enabled after 'amx_freerun_limit' rounds

  102.         //1 - enabled after 'amx_freerun_limit' minutes

  103.         gcvarLimitMode=register_cvar("amx_freerun_limit_mode","0");

  104.         //Size of Limit

  105.         gcvarLimit=register_cvar("amx_freerun_limit","5");

  106.        

  107.         //Interval of message

  108.         gcvarMessage=register_cvar("amx_freerun_info","120.0",0,120.0);

  109.        

  110.         //Terrorist`s privilege

  111.         //if he use /free FreeRun will start without vote, can he?

  112.         gcvarPrivilege=register_cvar("amx_freerun_tt_privilege","1");

  113.        

  114.         //restore buttons on new round

  115.         gcvarRestore=register_cvar("amx_restore_buttons","1");

  116.        

  117.         register_clcmd("say /free","cmdVoteFreeRun");

  118.         register_clcmd("say_team /free","cmdVoteFreeRun");

  119.         register_clcmd("say free","cmdVoteFreeRun");

  120.         register_clcmd("say_team free","cmdVoteFreeRun");

  121.        

  122.         register_clcmd("say /freerun","cmdVoteFreeRun");

  123.         register_clcmd("say_team /freerun","cmdVoteFreeRun");

  124.         register_clcmd("say freerun","cmdVoteFreeRun");

  125.         register_clcmd("say_team freerun","cmdVoteFreeRun");

  126.        

  127.         register_clcmd("say /fr","cmdVoteFreeRun");

  128.         register_clcmd("say_team /fr","cmdVoteFreeRun");

  129.         register_clcmd("say fr","cmdVoteFreeRun");

  130.         register_clcmd("say_team fr","cmdVoteFreeRun");

  131.        

  132.         if( engfunc(EngFunc_FindEntityByString,-1 ,"classname", "func_button"))

  133.                 RegisterHam(Ham_Use, "func_button", "fwButtonUsed");

  134.  

  135.         if(engfunc(EngFunc_FindEntityByString,-1 ,"classname","func_rot_button"))

  136.                 RegisterHam(Ham_Use, "func_rot_button", "fwButtonUsed");

  137.                

  138.         if(engfunc(EngFunc_FindEntityByString,-1 ,"classname", "button_target"))

  139.                 RegisterHam(Ham_Use, "button_target", "fwButtonUsed");

  140.                

  141.         register_logevent( "ResetButtons", 2, "0=World triggered", "1=Round_Start");

  142.        

  143.         fillButtons("func_button");

  144.         fillButtons("func_rot_button");

  145.         fillButtons("button_target");

  146. }

  147. public plugin_cfg(){

  148.         setButtons();

  149.        

  150.         new iLen=0, iMax=charsmax(gszFile);

  151.         iLen=get_configsdir(gszFile, iMax );

  152.         iLen+=copy(gszFile[iLen], iMax-iLen, "/dr_buttons/");

  153.        

  154.         if(!dir_exists(gszFile)){

  155.                 set_fail_state("Not found dir: configs/dr_buttons");

  156.                 return;

  157.         }

  158.         new szMap[32];

  159.         get_mapname(szMap, 31);

  160.         formatex(gszFile[iLen], charsmax(gszFile)-iLen, "%s.ini", szMap);

  161.         if(!file_exists(gszFile)){

  162.                 return;

  163.         }

  164.         new szLine[51];

  165.         new szButton[4], szTimes[3], szDelay[5];

  166.         new Float:fDelay;

  167.         for(new i=0;read_file(gszFile, i, szLine, 50, iLen);i++){

  168.                 if(iLen==0) continue;

  169.                 trim(szLine);

  170.                 if(szLine[0]==';') continue;

  171.                 parse(szLine, szButton, 3, szTimes, 2, szDelay, 4);

  172.                 fDelay=szDelay[0]?str_to_float(szDelay):-1.0;

  173.                 set_start_value(str_to_num(szButton), str_to_num(szTimes), fDelay);

  174.         }

  175.         new Float:fInterval=get_pcvar_float(gcvarMessage);

  176.         if(fInterval > 0.0)

  177.                 set_task(120.0, "announceVote",ANNOUNCE_TASK,_,_,"b");

  178. }

  179. public plugin_precache(){

  180.         giSprite=precache_model("sprites/flare1.spr");

  181.        

  182. }

  183. public client_putinserver(id){

  184.         if(!is_user_bot(id))

  185.                 eventInGame(id);

  186. }

  187. public client_connect(id){

  188.         giVotes[id][VOTE_ON]=0;

  189.         giVotes[id][VOTE_OFF]=0;

  190. }

  191. public announceVote(){

  192.         if(get_pcvar_num(gcvarFreeRun))

  193.                 ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER, "ANNOUNCE");

  194. }

  195. setButtons(){

  196.         new iDef=get_pcvar_num(gcvarDefault);

  197.         for(new i=0;i<giPointer;i++){

  198.                 gUsed[i]=iDef;

  199.                 gOnStart[i]=iDef;

  200.                 gDelay[i]=get_pdata_float(gEnt[i],m_flWait);

  201.                 gDefaultDelay[i]=gDelay[i];

  202.         }

  203. }

  204. fillButtons(const szClass[]){

  205.         new ent = -1;

  206.         while((ent = engfunc(EngFunc_FindEntityByString,ent ,"classname", szClass)) != 0){

  207.                 gEnt[giPointer++]=ent;

  208.                 set_pev(ent, pev_iuser4, giPointer);

  209.         }

  210. }

  211. set_start_value(ent, times, Float:delay){

  212.         new index=get_ent_index(ent);

  213.         if(index!=-1){

  214.                 gOnStart[index]=times;

  215.                 if(delay>=0.0)

  216.                         gDelay[index]=delay;

  217.         }

  218. }

  219. get_ent_index(ent){

  220.         /*

  221.         for(new i=0;i<giPointer;i++)

  222.                 if(gEnt[i]==ent) return i;

  223.         return -1;

  224.         */

  225.         return pev(ent, pev_iuser4)-1;

  226. }

  227. restoreButton(ent){

  228.         if(pev(ent, pev_frame) > 0.0){

  229.                 new Float:Life;

  230.                 pev(ent, pev_nextthink, Life);

  231.                 set_pev(ent, pev_ltime, Life-0.01);

  232.         }

  233. }

  234. public ResetButtons(){

  235.         gbFreeRun=false;

  236.         gbVote=false;

  237.         new bool:bRestore=get_pcvar_num(gcvarRestore)!=0;

  238.         for(new i=0;i<MAX_BUTTONS;i++){

  239.                 gUsed[i]=gOnStart[i];

  240.                 if(bRestore){

  241.                         restoreButton(gEnt[i]);

  242.                 }

  243.         }

  244.         giRounds++;

  245. }

  246. public fwButtonUsed(this, idcaller, idactivator, use_type, Float:value){

  247.         if(idcaller!=idactivator) return HAM_IGNORED;

  248.        

  249.         if(pev(this, pev_frame) > 0.0)

  250.                  return HAM_IGNORED;

  251.         new index=get_ent_index(this);

  252.         if(index==-1)

  253.                 return HAM_IGNORED;

  254.         if(get_user_team(idcaller)&get_pcvar_num(gcvarTeam)){

  255.                

  256.                 if(gbFreeRun){

  257.                         ColorChat(idcaller,GREEN, "[FreeRun]^x01 %L",idcaller, "BUTTON_FREERUN");

  258.                         return HAM_SUPERCEDE;

  259.                 }

  260.                 else if(gUsed[index]<=0 && gOnStart[index]!=-1){

  261.                         ColorChat(idcaller,GREEN, "[Info]^x01 %L",idcaller,"BUTTON_NOMORE");

  262.                         return HAM_SUPERCEDE;

  263.                 }

  264.                 else{

  265.                         if(gUsed[index]>0)

  266.                                 if(--gUsed[index]){

  267.                                         ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_LEFT", gUsed[index]);

  268.                                 }else

  269.                                         ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_ENDOFLIMIT");

  270.                 }

  271.         }

  272.        

  273.         set_task(0.1,"setDelay",this);

  274.        

  275.         return HAM_IGNORED;

  276. }

  277. public setDelay(this){

  278.         new index=get_ent_index(this);

  279.         set_pev(this, pev_nextthink, pev(this, pev_ltime)+gDelay[index]+0.01);

  280. }

  281.  

  282. //MENU--------------

  283. public cmd_amx_buttons(id, level, cid){

  284.         if(!cmd_access(id, level, cid, 1))

  285.                 return PLUGIN_HANDLED;

  286.         if(giPointer==0)

  287.                 client_print(id, print_chat, "%L", id,"NO_BUTTONS");

  288.         else

  289.                 ShowButtonsMenu(id);

  290.         return PLUGIN_HANDLED;

  291. }

  292. ShowButtonsMenu(id, trace=1){

  293.         if(!is_user_alive(id)){

  294.                 client_print(id, print_center, "%L",id, "MUST_B_ALIVE");

  295.                 return;

  296.         }

  297.         new iNow=gInMenu[id];

  298.         new iKeys=(1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);

  299.         new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;

  300.         new szNoLimit[32];

  301.         formatex(szNoLimit,31,"(%L)",id,"NOLIMIT");

  302.         iLen=copy(szMenu, iMax,"\yButtons Menu^n");

  303.         iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);

  304.         iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %d %s^n\y1\w. %L ",id, "USAGE",gOnStart[iNow],(gOnStart[iNow]==-1)?szNoLimit:"", id, "MORE");

  305.        

  306.         if(gOnStart[iNow]>=0){

  307.                 iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");

  308.                 iKeys|=(1<<1);

  309.         }else

  310.                 iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");

  311.         iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n3. %L^n^n4. %L^n^n",id, "DELAY_EDITOR",id,"OPTIONS");

  312.        

  313.         iLen+=formatex(szMenu[iLen], iMax-iLen,"5. %sNo Clip\w^n",isNoClip(id)?"\r":"");

  314.         iLen+=formatex(szMenu[iLen], iMax-iLen,"6. %sGodMode\w^n",isGodMode(id)?"\r":"");

  315.        

  316.         iLen+=formatex(szMenu[iLen], iMax-iLen,"^n7. \r%L^n\w",id, "WORD_SAVE");

  317.        

  318.         if(iNow>0){

  319.                 iLen+=formatex(szMenu[iLen], iMax-iLen,"^n8. %L",id, "BACK");

  320.                 iKeys|=(1<<7);

  321.         }

  322.         if(iNow<giPointer-1){

  323.                 iLen+=formatex(szMenu[iLen], iMax-iLen,"^n9. %L",id, "WORD_NEXT");

  324.                 iKeys|=(1<<8);

  325.         }

  326.         iLen+=formatex(szMenu[iLen], iMax-iLen,"^n0. %L", id, "EXIT");

  327.         show_menu(id, iKeys, szMenu, -1, "ButtonsMenu");

  328.         if(trace){

  329.                 new Float:fOrigin[3], Float:fOrigin2[3];

  330.                 fm_get_brush_entity_origin(gEnt[gInMenu[id]], fOrigin);

  331.                 pev(id, pev_origin, fOrigin2);

  332.                 Create_TE_BEAMPOINTS(fOrigin, fOrigin2, giSprite, 0, 10, 20, 5, 1, 255, 0, 0, 100, 50);

  333.         }

  334. }

  335. bool:isNoClip(id)

  336.         return pev(id, pev_movetype)==MOVETYPE_NOCLIP;

  337.        

  338. bool:isGodMode(id)

  339.         return pev(id, pev_takedamage)==0.0;

  340.        

  341. public PressedButtonsMenu(id, key) {

  342.         if(!is_user_alive(id)){

  343.                 client_print(id, print_center, "%L",id,"MUST_B_ALIVE");

  344.                 return;

  345.         }

  346.         /* Menu:

  347.         * Buttons Menu

  348.         * Ent#<ent>

  349.         *

  350.         * Uzyc: <ile>

  351.         * 1. Wiecej 2. Mniej

  352.         *

  353.         * 3. Editor

  354.         *

  355.         * 4. Options

  356.         *

  357.         * 5. NoClip

  358.         * 6. GodMode

  359.         *

  360.         * 7. Zapisz

  361.         *

  362.         * 8. Poprzedni

  363.         * 9. Nastepny

  364.         * 0. Wyjdz

  365.         */

  366.         new trace=0;

  367.         switch (key) {

  368.                 case 0: { // 1

  369.                         gOnStart[gInMenu[id]]++;

  370.                 }

  371.                 case 1: { // 2

  372.                         gOnStart[gInMenu[id]]--;

  373.                 }

  374.                 case 2: { // 3

  375.                         ShowDelayMenu(id);

  376.                         return;

  377.                 }

  378.                 case 3:{ //4

  379.                         ShowOptionsMenu(id);

  380.                         return;

  381.                 }

  382.                 case 4:{ //5

  383.                         set_pev(id, pev_movetype, isNoClip(id)?MOVETYPE_WALK:MOVETYPE_NOCLIP)

  384.                 }

  385.                 case 5:{ //6

  386.                         set_pev(id, pev_takedamage, isGodMode(id)?1.0:0.0);

  387.                 }

  388.                 case 6: { // 7

  389.                         save2File(id);

  390.                 }

  391.                 case 7: { // 8

  392.                         gInMenu[id]--;

  393.                         trace=1;

  394.                 }

  395.                 case 8: { // 9

  396.                         gInMenu[id]++;

  397.                         trace=1;

  398.                 }

  399.                 case 9: { // 0

  400.                         return;

  401.                 }

  402.         }

  403.         ShowButtonsMenu(id, trace);

  404. }

  405. //--------------

  406. ShowOptionsMenu(id){

  407.         if(!is_user_alive(id)){

  408.                 client_print(id, print_center, "%L",id,"MUST_B_ALIVE");

  409.                 return;

  410.         }

  411.         new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;

  412.         iLen+=formatex(szMenu[iLen], iMax-iLen,"\yOptions^n^n");

  413.         iLen+=formatex(szMenu[iLen], iMax-iLen,"\w1. %L^n",id, "GOTO");

  414.         iLen+=formatex(szMenu[iLen], iMax-iLen,"2. %L^n^n",id, "NEAREST");

  415.         iLen+=formatex(szMenu[iLen], iMax-iLen,"9. %L",id, "BACK");

  416.         show_menu(id, KeysOptionsMenu, szMenu, -1, "OptionsMenu");

  417. }

  418. public PressedOptionsMenu(id, key){

  419.         if(!is_user_alive(id)){

  420.                 client_print(id, print_center, "%L",id,"MUST_B_ALIVE");

  421.                 return;

  422.         }

  423.         new trace=0;

  424.         switch (key) {

  425.                 case 0: { // 1

  426.                         go2Button(id);

  427.                 }

  428.                 case 1: { // 2

  429.                         gInMenu[id]=findTheClosest(id);

  430.                         trace=1;

  431.                 }

  432.         }

  433.         ShowButtonsMenu(id, trace);

  434. }

  435. //-------------

  436. ShowDelayMenu(id){

  437.         if(!is_user_alive(id)){

  438.                 client_print(id, print_center, "%L",id,"MUST_B_ALIVE");

  439.                 return;

  440.         }

  441.         new iNow=gInMenu[id];

  442.         new iKeys=(1<<0)|(1<<2)|(1<<8);

  443.         new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;

  444.         iLen=copy(szMenu, iMax,"\yDelay Menu^n");

  445.         iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);

  446.         iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %.1f^n",id, "CURRENT_DELAY", gDelay[iNow]);

  447.         iLen+=formatex(szMenu[iLen], iMax-iLen,"\y1\w. %L ",id, "MORE");

  448.         if(gDelay[iNow]>0.0){

  449.                 iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");

  450.                 iKeys|=(1<<1);

  451.         }else

  452.                 iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");

  453.         iLen+=formatex(szMenu[iLen], iMax-iLen,"^n3. %L",id, "DEFAULT");

  454.         iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n9. %L",id, "BACK");

  455.         show_menu(id, iKeys, szMenu, -1, "DelayMenu");

  456. }

  457. public PressedDelayMenu(id, key){

  458.         new iNow=gInMenu[id];

  459.         switch(key){

  460.                 case 0:{

  461.                         gDelay[iNow]+=1.0;

  462.                 }

  463.                 case 1:{

  464.                         gDelay[iNow]-=1.0;

  465.                         if(gDelay[iNow] < 0.0)

  466.                                 gDelay[iNow]=0.0;

  467.                 }

  468.                 case 2:{

  469.                         gDelay[iNow]=gDefaultDelay[iNow];

  470.                 }

  471.                 case 8:{

  472.                         ShowButtonsMenu(id, 0);

  473.                         return;

  474.                 }

  475.         }

  476.         ShowDelayMenu(id);

  477. }

  478. //-------------

  479. save2File(id){

  480.         if(file_exists(gszFile))

  481.                 delete_file(gszFile);

  482.         write_file(gszFile, ";<ent> <count> <delay>");

  483.         new szLine[35];

  484.         for(new i=0;i<giPointer;i++){

  485.                 formatex(szLine, 34, "%d %d %.1f",gEnt[i], gOnStart[i], gDelay[i]);

  486.                 write_file(gszFile, szLine);

  487.         }

  488.         client_print(id, print_center, "%L!",id,"WORD_SAVED");

  489. }

  490. findTheClosest(id){

  491.         new Float:fPlayerOrig[3];

  492.         pev(id, pev_origin, fPlayerOrig);

  493.         new Float:fOrigin[3];

  494.         fm_get_brush_entity_origin(gEnt[0], fOrigin);

  495.        

  496.         new Float:fRange=get_distance_f(fOrigin, fPlayerOrig), index=0;

  497.         new Float:fNewRange;

  498.         for(new i=1;i<giPointer;i++){

  499.                 fm_get_brush_entity_origin(gEnt[i], fOrigin);

  500.                 fNewRange=get_distance_f( fOrigin,  fPlayerOrig);

  501.                 if(fNewRange < fRange){

  502.                         fRange=fNewRange;

  503.                         index=i;

  504.                 }

  505.         }

  506.         return index;

  507. }

  508. go2Button(id, ent=-1){

  509.         if(ent==-1)

  510.                 ent=gInMenu[id];

  511.         ent=gEnt[ent];

  512.         if(!pev_valid(ent)){

  513.                 client_print(id, print_center, "%L",id,"NOTARGET");

  514.                 return;

  515.         }

  516.         new Float:fOrigin[3];

  517.         fm_get_brush_entity_origin(ent, fOrigin);

  518.         set_pev(id, pev_origin, fOrigin);

  519.         client_print(id, print_chat, "PS. No Clip :)");

  520. }

  521. //FreeRun

  522. public cmdVoteFreeRun(id){

  523.         if(get_pcvar_num(gcvarFreeRun)==0){

  524.                 ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_DISABLED");

  525.                 return PLUGIN_HANDLED;

  526.         }

  527.         if(gbVote){

  528.                 ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_VOTE_IS_NOW");

  529.                 return PLUGIN_HANDLED;

  530.         }

  531.         if(!is_user_alive(id)){

  532.                 client_print(id, print_center, "%L",id, "MUST_B_ALIVE");

  533.                 return PLUGIN_HANDLED;

  534.         }

  535.         if(get_pcvar_num(gcvarPrivilege)!=0 && !gbFreeRun && get_user_team(id)==1){

  536.                 ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_TT_DECIDED");

  537.                 makeFreeRun(true);

  538.                 return PLUGIN_HANDLED;

  539.         }

  540.         new iLimit=get_pcvar_num(gcvarLimit);

  541.         new iOffset=0;

  542.         if(get_pcvar_num(gcvarLimitMode)){

  543.                 iOffset = ( giTime + iLimit * 60 )  - get_systime();

  544.                 if( iOffset > 0 ){

  545.                         ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_TIME", iOffset/60, iOffset%60);

  546.                         return PLUGIN_HANDLED;

  547.                 }

  548.         }

  549.         else{

  550.                 iOffset =  min(MAX_ROUNDS, iLimit) - giRounds;

  551.                 if( iOffset > 0 ){

  552.                         ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_ROUNDS", iOffset);

  553.                         return PLUGIN_HANDLED;

  554.                 }

  555.         }

  556.        

  557.         makeVote();

  558.         return PLUGIN_CONTINUE;

  559. }

  560. //FREERUN

  561. public makeVote(){

  562.         giVoteTime=get_pcvar_num(gcvarFRVoteTime);

  563.         gbVote=true;

  564.         giVoteStart=get_systime();

  565.         set_task(float(giVoteTime), "resultsOfVote", TASK_RES);

  566.         new Players[32], playerCount;

  567.         new id;

  568.         get_players(Players, playerCount);

  569.         for (new i=0; i<playerCount; i++){

  570.                 id = Players[i];

  571.                 eventInGame(id);

  572.         }

  573.        

  574. }

  575. public resultsOfVote(tid){

  576.         gbVote=false;

  577.        

  578.         new giVotesOn=count(VOTE_ON);

  579.         new giVotesOff=count(VOTE_OFF);

  580.        

  581.         ColorChat(0,GREEN, "[FreeRun]^x01 %L %L(%d) vs %L(%d)",LANG_SERVER,"FREERUN_RESULTS",LANG_SERVER,"YES",giVotesOn,LANG_SERVER,"NO", giVotesOff);

  582.        

  583.         if( giVotesOn == giVotesOff ){

  584.                 ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER,"FREERUN_TIE");

  585.                 return;

  586.         }

  587.         makeFreeRun((giVotesOn > giVotesOff));

  588.         ColorChat(0,GREEN, "[FreeRun]^x01 %L ^x03%L",LANG_SERVER,"FREERUN_WINOPTION",LANG_SERVER, gbFreeRun?"YES":"NO");

  589. }

  590. makeFreeRun(bool:bFR=true){

  591.         gbFreeRun=bFR;

  592.         reset();

  593.         giRounds=0;

  594.         giTime=get_systime();

  595.        

  596.         if(gbFreeRun){

  597.                 set_hudmessage(0, 255, 255, 0.02, -1.0);

  598.                 show_hudmessage(0, "FreeRun!");

  599.         }

  600.        

  601. }

  602. count(VOTE_STATE){

  603.         new iCounter=0;

  604.         for(new i=1;i<33;i++)

  605.                 if(giVotes[i][VOTE_STATE])

  606.                         iCounter++;

  607.         return iCounter;

  608. }

  609. reset(){

  610.         for(new i=1;i<33;i++){

  611.                 giVotes[i][VOTE_ON]=0;

  612.                 giVotes[i][VOTE_OFF]=0;

  613.         }

  614. }

  615. public show_menu_(tid){

  616.         new id=tid-TASK_SHOWMENU;

  617.         new iTeam=get_user_team(id);

  618.         new menu_id, keys;

  619.         new menuUp = player_menu_info( id, menu_id, keys );

  620.         // Only display menu if another isn't shown

  621.         if ( iTeam && (menuUp <= 0 || menu_id < 0) ){

  622.                 new iTime=get_pcvar_num(gcvarFRVoteTime);

  623.                 new iOffset=get_systime()-giVoteStart;

  624.                 iTime-=iOffset;

  625.                 new szMenu[128];

  626.                 formatex(szMenu, 127, "\y%L^n^n\w1. %L^n2. %L",id,"FREERUN_VOTEMENU",id,"YES",id,"NO");

  627.                 show_menu(id, KeysFFVote, szMenu, iTime, "FRVote");

  628.         }else

  629.                 set_task(1.0, "show_menu_", tid);

  630. }

  631. public eventInGame(id){

  632.         if(giVotes[id][VOTE_ON] || giVotes[id][VOTE_OFF])

  633.                 return;

  634.         if(gbVote)

  635.                 set_task(1.0, "show_menu_", id+TASK_SHOWMENU);

  636. }

  637. public PressedFRVote(id, key) {

  638.         if(gbVote==false) return;

  639.         switch (key) {

  640.                 case VOTE_ON: { // 1

  641.                         giVotes[id][VOTE_ON]=1;

  642.                 }

  643.                 case VOTE_OFF: { // 2

  644.                         giVotes[id][VOTE_OFF]=1;

  645.                 }

  646.                 default:{

  647.                         return;

  648.                 }

  649.         }

  650.         new szName[32];

  651.         get_user_name(id, szName, 31);

  652.        

  653.         client_print(0, print_chat, "* %L",LANG_PLAYER,(key==VOTE_ON)?"VOTED_FOR":"VOTED_AGAINST", szName);

  654. }

  655.  

  656. stock Create_TE_BEAMPOINTS(Float:start[3], Float:end[3], iSprite, startFrame, frameRate, life, width, noise, red, green, blue, alpha, speed){

  657.         message_begin( MSG_BROADCAST, SVC_TEMPENTITY )

  658.         write_byte( TE_BEAMPOINTS )

  659.         write_coord( floatround(start[0]) )

  660.         write_coord( floatround(start[1]) )

  661.         write_coord( floatround(start[2]) )

  662.         write_coord( floatround(end[0]) )

  663.         write_coord( floatround(end[1]) )

  664.         write_coord( floatround(end[2]) )

  665.         write_short( iSprite )                  // model

  666.         write_byte( startFrame )                // start frame

  667.         write_byte( frameRate )                 // framerate

  668.         write_byte( life )                              // life

  669.         write_byte( width )                             // width

  670.         write_byte( noise )                             // noise

  671.         write_byte( red)                                // red

  672.         write_byte( green )                             // green

  673.         write_byte( blue )                              // blue

  674.         write_byte( alpha )                             // brightness

  675.         write_byte( speed )                             // speed

  676.         message_end()

  677. }

  678. stock fm_get_brush_entity_origin(ent, Float:fOrigin[3]){

  679.         new Float:fMins[3], Float:fMaxs[3];

  680.         pev(ent, pev_mins, fMins);

  681.         pev(ent, pev_maxs, fMaxs);

  682.        

  683.         for(new i=0;i<3;i++)

  684.                 fOrigin[i]=(fMins[i]+fMaxs[i])/2;

  685. }

  686.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Freerun eldobja a fegyvert
HozzászólásElküldve:2012.08.21. 13:50 
Offline
Félisten

Csatlakozott:2012.01.07. 21:10
Hozzászólások:850
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 154 alkalommal
Áthelyezve.

_________________
Megköszönni nem szégyen!
Csak kattints a Kép jelre. --->


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


Ki van itt

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