hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 407 felhasználó van jelen :: 2 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], Majestic-12 [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  [1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: FreeRound átírás...
HozzászólásElküldve:2012.08.07. 21:42 
Offline
Őstag
Avatar

Csatlakozott:2012.02.14. 15:09
Hozzászólások:1423
Megköszönték neki: 2 alkalommal
Valaki átírná, hogy ha megnyom 1 gombot utána ne adhasson Free kört ?
és esetleg ha lenyom 1 gombot kiírja ugyanoda ahová a freeroundot, hogy NEM FREE!

Kód:
  1.     #include <amxmodx>

  2.     #include <amxmisc>

  3.     #include <hamsandwich>

  4.     #include <fakemeta>

  5.     #include <colorchat>

  6.      

  7.     #define PLUGIN "Use button once"

  8.     #define VERSION "1.3"

  9.     #define AUTHOR "R3X"

  10.      

  11.     #define MAX_BUTTONS 100

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

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

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

  15.      

  16.     #define ANNOUNCE_TASK 10000

  17.      

  18.     #define m_flWait 44

  19.      

  20.     //Main

  21.      

  22.     new gEnt[MAX_BUTTONS];

  23.     new gUsed[MAX_BUTTONS];

  24.     new giPointer=0;

  25.     new gOnStart[MAX_BUTTONS];

  26.     new Float:gDefaultDelay[MAX_BUTTONS];

  27.     new Float:gDelay[MAX_BUTTONS];

  28.      

  29.     new gInMenu[33];

  30.      

  31.     new gszFile[128];

  32.      

  33.     new giSprite;

  34.      

  35.     new gcvarDefault, gcvarTeam, gcvarFreeRun;

  36.     new gcvarLimit, gcvarLimitMode, gcvarPrivilege;

  37.     new gcvarMessage, gcvarRestore;

  38.      

  39.     //VOTE

  40.      

  41.     #define TASK_SHOWMENU 432

  42.     #define TASK_RES 123

  43.      

  44.     #define MAX_ROUNDS 999

  45.      

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

  47.      

  48.     new gcvarFRVoteTime;

  49.      

  50.     new giVoteStart, giVoteTime;

  51.      

  52.     new bool:gbFreeRun=false;

  53.     new bool:gbVote=false;

  54.      

  55.     #define VOTE_ON 0

  56.     #define VOTE_OFF 1

  57.      

  58.     new giVotes[33][2];

  59.      

  60.     new giRounds=MAX_ROUNDS, giTime=0;

  61.      

  62.     public plugin_init() {

  63.             register_plugin(PLUGIN, VERSION, AUTHOR);

  64.            

  65.             register_dictionary("common.txt");

  66.             register_dictionary("adminvote.txt");

  67.             register_dictionary("use_button_once.txt");

  68.            

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

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

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

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

  73.            

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

  75.            

  76.             //Default count of uses

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

  78.             //Who plugin analyze

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

  80.             //1 - Te

  81.             //2 - Ct

  82.             //3 - Te+Ct

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

  84.             //Enabled FreeRun mode?

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

  86.             //Vote time

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

  88.            

  89.             //Type of limit

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

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

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

  93.             //Size of Limit

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

  95.            

  96.             //Interval of message

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

  98.            

  99.             //Terrorist`s privilege

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

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

  102.            

  103.             //restore buttons on new round

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

  105.            

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

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

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

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

  110.            

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

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

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

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

  115.            

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

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

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

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

  120.            

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

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

  123.      

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

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

  126.                    

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

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

  129.                    

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

  131.             register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");

  132.             fillButtons("func_button");

  133.             fillButtons("func_rot_button");

  134.             fillButtons("button_target");

  135.     }

  136.     public plugin_cfg(){

  137.             setButtons();

  138.            

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

  140.             iLen=get_configsdir(gszFile, iMax );

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

  142.            

  143.             if(!dir_exists(gszFile)){

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

  145.                     return;

  146.             }

  147.             new szMap[32];

  148.             get_mapname(szMap, 31);

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

  150.             if(!file_exists(gszFile)){

  151.                     return;

  152.             }

  153.             new szLine[51];

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

  155.             new Float:fDelay;

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

  157.                     if(iLen==0) continue;

  158.                     trim(szLine);

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

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

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

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

  163.             }

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

  165.             if(fInterval > 0.0)

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

  167.     }

  168.     public plugin_precache(){

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

  170.            

  171.     }

  172.     public client_putinserver(id){

  173.             if(!is_user_bot(id))

  174.                     eventInGame(id);

  175.     }

  176.     public client_connect(id){

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

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

  179.     }

  180.     public announceVote(){

  181.             if(get_pcvar_num(gcvarFreeRun))

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

  183.     }

  184.     setButtons(){

  185.             new iDef=get_pcvar_num(gcvarDefault);

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

  187.                     gUsed[i]=iDef;

  188.                     gOnStart[i]=iDef;

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

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

  191.             }

  192.     }

  193.     fillButtons(const szClass[]){

  194.             new ent = -1;

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

  196.                     gEnt[giPointer++]=ent;

  197.                     set_pev(ent, pev_iuser4, giPointer);

  198.             }

  199.     }

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

  201.             new index=get_ent_index(ent);

  202.             if(index!=-1){

  203.                     gOnStart[index]=times;

  204.                     if(delay>=0.0)

  205.                             gDelay[index]=delay;

  206.             }

  207.     }

  208.     get_ent_index(ent){

  209.             /*

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

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

  212.             return -1;

  213.             */

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

  215.     }

  216.     restoreButton(ent){

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

  218.                     new Float:Life;

  219.                     pev(ent, pev_nextthink, Life);

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

  221.             }

  222.     }

  223.     public ResetButtons(){

  224.             gbFreeRun=false;

  225.             gbVote=false;

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

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

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

  229.                     if(bRestore){

  230.                             restoreButton(gEnt[i]);

  231.                     }

  232.             }

  233.             giRounds++;

  234.     }

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

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

  237.            

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

  239.                      return HAM_IGNORED;

  240.             new index=get_ent_index(this);

  241.             if(index==-1)

  242.                     return HAM_IGNORED;

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

  244.                    

  245.                     if(gbFreeRun){

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

  247.                             return HAM_SUPERCEDE;

  248.                     }

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

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

  251.                             return HAM_SUPERCEDE;

  252.                     }

  253.                     else{

  254.                             if(gUsed[index]>0)

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

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

  257.                                     }else

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

  259.                     }

  260.             }

  261.            

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

  263.            

  264.             return HAM_IGNORED;

  265.     }

  266.     public setDelay(this){

  267.             new index=get_ent_index(this);

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

  269.     }

  270.      

  271.     //MENU--------------

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

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

  274.                     return PLUGIN_HANDLED;

  275.             if(giPointer==0)

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

  277.             else

  278.                     ShowButtonsMenu(id);

  279.             return PLUGIN_HANDLED;

  280.     }

  281.     ShowButtonsMenu(id, trace=1){

  282.             if(!is_user_alive(id)){

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

  284.                     return;

  285.             }

  286.             new iNow=gInMenu[id];

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

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

  289.             new szNoLimit[32];

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

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

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

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

  294.            

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

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

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

  298.             }else

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

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

  301.            

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

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

  304.            

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

  306.            

  307.             if(iNow>0){

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

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

  310.             }

  311.             if(iNow<giPointer-1){

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

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

  314.             }

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

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

  317.             if(trace){

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

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

  320.                     pev(id, pev_origin, fOrigin2);

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

  322.             }

  323.     }

  324.     bool:isNoClip(id)

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

  326.            

  327.     bool:isGodMode(id)

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

  329.            

  330.     public PressedButtonsMenu(id, key) {

  331.             if(!is_user_alive(id)){

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

  333.                     return;

  334.             }

  335.             /* Menu:

  336.             * Buttons Menu

  337.             * Ent#<ent>

  338.             *

  339.             * Uzyc: <ile>

  340.             * 1. Wiecej 2. Mniej

  341.             *

  342.             * 3. Editor

  343.             *

  344.             * 4. Options

  345.             *

  346.             * 5. NoClip

  347.             * 6. GodMode

  348.             *

  349.             * 7. Zapisz

  350.             *

  351.             * 8. Poprzedni

  352.             * 9. Nastepny

  353.             * 0. Wyjdz

  354.             */

  355.             new trace=0;

  356.             switch (key) {

  357.                     case 0: { // 1

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

  359.                     }

  360.                     case 1: { // 2

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

  362.                     }

  363.                     case 2: { // 3

  364.                             ShowDelayMenu(id);

  365.                             return;

  366.                     }

  367.                     case 3:{ //4

  368.                             ShowOptionsMenu(id);

  369.                             return;

  370.                     }

  371.                     case 4:{ //5

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

  373.                     }

  374.                     case 5:{ //6

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

  376.                     }

  377.                     case 6: { // 7

  378.                             save2File(id);

  379.                     }

  380.                     case 7: { // 8

  381.                             gInMenu[id]--;

  382.                             trace=1;

  383.                     }

  384.                     case 8: { // 9

  385.                             gInMenu[id]++;

  386.                             trace=1;

  387.                     }

  388.                     case 9: { // 0

  389.                             return;

  390.                     }

  391.             }

  392.             ShowButtonsMenu(id, trace);

  393.     }

  394.     //--------------

  395.     ShowOptionsMenu(id){

  396.             if(!is_user_alive(id)){

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

  398.                     return;

  399.             }

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

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

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

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

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

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

  406.     }

  407.     public PressedOptionsMenu(id, key){

  408.             if(!is_user_alive(id)){

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

  410.                     return;

  411.             }

  412.             new trace=0;

  413.             switch (key) {

  414.                     case 0: { // 1

  415.                             go2Button(id);

  416.                     }

  417.                     case 1: { // 2

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

  419.                             trace=1;

  420.                     }

  421.             }

  422.             ShowButtonsMenu(id, trace);

  423.     }

  424.     //-------------

  425.     ShowDelayMenu(id){

  426.             if(!is_user_alive(id)){

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

  428.                     return;

  429.             }

  430.             new iNow=gInMenu[id];

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

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

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

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

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

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

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

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

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

  440.             }else

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

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

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

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

  445.     }

  446.     public PressedDelayMenu(id, key){

  447.             new iNow=gInMenu[id];

  448.             switch(key){

  449.                     case 0:{

  450.                             gDelay[iNow]+=1.0;

  451.                     }

  452.                     case 1:{

  453.                             gDelay[iNow]-=1.0;

  454.                             if(gDelay[iNow] < 0.0)

  455.                                     gDelay[iNow]=0.0;

  456.                     }

  457.                     case 2:{

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

  459.                     }

  460.                     case 8:{

  461.                             ShowButtonsMenu(id, 0);

  462.                             return;

  463.                     }

  464.             }

  465.             ShowDelayMenu(id);

  466.     }

  467.     //-------------

  468.     save2File(id){

  469.             if(file_exists(gszFile))

  470.                     delete_file(gszFile);

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

  472.             new szLine[35];

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

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

  475.                     write_file(gszFile, szLine);

  476.             }

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

  478.     }

  479.     findTheClosest(id){

  480.             new Float:fPlayerOrig[3];

  481.             pev(id, pev_origin, fPlayerOrig);

  482.             new Float:fOrigin[3];

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

  484.            

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

  486.             new Float:fNewRange;

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

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

  489.                     fNewRange=get_distance_f( fOrigin,  fPlayerOrig);

  490.                     if(fNewRange < fRange){

  491.                             fRange=fNewRange;

  492.                             index=i;

  493.                     }

  494.             }

  495.             return index;

  496.     }

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

  498.             if(ent==-1)

  499.                     ent=gInMenu[id];

  500.             ent=gEnt[ent];

  501.             if(!pev_valid(ent)){

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

  503.                     return;

  504.             }

  505.             new Float:fOrigin[3];

  506.             fm_get_brush_entity_origin(ent, fOrigin);

  507.             set_pev(id, pev_origin, fOrigin);

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

  509.     }

  510.     //FreeRun

  511.     public cmdVoteFreeRun(id){

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

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

  514.                     return PLUGIN_HANDLED;

  515.             }

  516.             if(gbVote){

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

  518.                     return PLUGIN_HANDLED;

  519.             }

  520.             if(!is_user_alive(id)){

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

  522.                     return PLUGIN_HANDLED;

  523.             }

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

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

  526.                     makeFreeRun(true);

  527.                     return PLUGIN_HANDLED;

  528.             }

  529.             new iLimit=get_pcvar_num(gcvarLimit);

  530.             new iOffset=0;

  531.             if(get_pcvar_num(gcvarLimitMode)){

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

  533.                     if( iOffset > 0 ){

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

  535.                             return PLUGIN_HANDLED;

  536.                     }

  537.             }

  538.             else{

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

  540.                     if( iOffset > 0 ){

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

  542.                             return PLUGIN_HANDLED;

  543.                     }

  544.             }

  545.            

  546.             makeVote();

  547.             return PLUGIN_CONTINUE;

  548.     }

  549.     //FREERUN

  550.     public makeVote(){

  551.             giVoteTime=get_pcvar_num(gcvarFRVoteTime);

  552.             gbVote=true;

  553.             giVoteStart=get_systime();

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

  555.             new Players[32], playerCount;

  556.             new id;

  557.             get_players(Players, playerCount);

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

  559.                     id = Players[i];

  560.                     eventInGame(id);

  561.             }

  562.            

  563.     }

  564.     public resultsOfVote(tid){

  565.             gbVote=false;

  566.            

  567.             new giVotesOn=count(VOTE_ON);

  568.             new giVotesOff=count(VOTE_OFF);

  569.            

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

  571.            

  572.             if( giVotesOn == giVotesOff ){

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

  574.                     return;

  575.             }

  576.             makeFreeRun((giVotesOn > giVotesOff));

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

  578.     }

  579.     makeFreeRun(bool:bFR=true){

  580.             gbFreeRun=bFR;

  581.             reset();

  582.             giRounds=0;

  583.             giTime=get_systime();

  584.            

  585.      

  586.            

  587.     }

  588.     count(VOTE_STATE){

  589.             new iCounter=0;

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

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

  592.                             iCounter++;

  593.             return iCounter;

  594.     }

  595.     reset(){

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

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

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

  599.             }

  600.     }

  601.     public show_menu_(tid){

  602.             new id=tid-TASK_SHOWMENU;

  603.             new iTeam=get_user_team(id);

  604.             new menu_id, keys;

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

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

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

  608.                     new iTime=get_pcvar_num(gcvarFRVoteTime);

  609.                     new iOffset=get_systime()-giVoteStart;

  610.                     iTime-=iOffset;

  611.                     new szMenu[128];

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

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

  614.             }else

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

  616.     }

  617.     public eventInGame(id){

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

  619.                     return;

  620.             if(gbVote)

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

  622.     }

  623.     public PressedFRVote(id, key) {

  624.             if(gbVote==false) return;

  625.             switch (key) {

  626.                     case VOTE_ON: { // 1

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

  628.                     }

  629.                     case VOTE_OFF: { // 2

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

  631.                     }

  632.                     default:{

  633.                             return;

  634.                     }

  635.             }

  636.             new szName[32];

  637.             get_user_name(id, szName, 31);

  638.            

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

  640.     }

  641.      

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

  643.             message_begin( MSG_BROADCAST, SVC_TEMPENTITY )

  644.             write_byte( TE_BEAMPOINTS )

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

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

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

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

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

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

  651.             write_short( iSprite )                  // model

  652.             write_byte( startFrame )                // start frame

  653.             write_byte( frameRate )                 // framerate

  654.             write_byte( life )                              // life

  655.             write_byte( width )                             // width

  656.             write_byte( noise )                             // noise

  657.             write_byte( red)                                // red

  658.             write_byte( green )                             // green

  659.             write_byte( blue )                              // blue

  660.             write_byte( alpha )                             // brightness

  661.             write_byte( speed )                             // speed

  662.             message_end()

  663.     }

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

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

  666.             pev(ent, pev_mins, fMins);

  667.             pev(ent, pev_maxs, fMaxs);

  668.            

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

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

  671.     }

  672.      

  673.     public fw_PlayerPreThink(id)

  674.     {

  675.             if(gbFreeRun){

  676.                     set_hudmessage(0, 255, 255, 0.02, 0.20, 0, 6.0, 1.0)

  677.                     show_hudmessage(id, "Free Run")

  678.             }

  679.     }

_________________
Kép


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


Ki van itt

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