←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Wywolywanie freezetime w funkcji 2.0

  • +
  • -
MAGNET's Photo MAGNET 04.07.2013

Siemka

Przedtem myślałem, że już sobie z tym freezetimem poradzę, ale plug wpleciony w drugi powoduje jego nie działanie.

Proszę o pokazanie mi, jak zablokować WSAD

Quote

  • +
  • -
d0naciak's Photo d0naciak 04.07.2013

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>

new bool:g_bFreeze[33];

public plugin_init()
{
    register_plugin("freeze", "0.1", "d0naciak")
    
    register_forward(FM_CmdStart, "fw_CmdStart");
}

public client_putinserver(id)
    g_bFreeze[id] = false;
    
public fw_CmdStart(id, iUc)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
    
    if(g_bFreeze[id])
    {
        new iButtons = get_uc(iUc, UC_Buttons);
        
        if(iButtons & IN_RUN)
        {
            set_pev(id, pev_buttons, iButtons & ~IN_RUN);
        }
    }
    
    return FMRES_IGNORED;
}

stock set_freeze(id, iSet)
{
    if(iSet == 1)
    {
        g_bFreeze[id] = true;
        
        set_pev(id, pev_buttons, pev(id, pev_buttons) & ~IN_RUN);
    }
    else
    {
        g_bFreeze[id] = false;
    }
}

 

Uzywaj funkcji set_freeze to ustawiania freeza

set_freeze(id, iSet)
 
id - index gracza
iSet - po ustawieniu na 1 daje freeza, na 0 przywraca mozliwosc poruszania sie

 

Jak dziala/nie dziala daj znac (nietestowane)

Quote

  • +
  • -
MAGNET's Photo MAGNET 04.07.2013

Zmiennej nie dodałeś ;)

Zaraz przetestuje i dam znać

Quote

  • +
  • -
d0naciak's Photo d0naciak 04.07.2013

jest wszystko co potrzeba, tylko nie wiadomo czy zadziała xD

Quote

  • +
  • -
MAGNET's Photo MAGNET 04.07.2013

Nie kompilowalo sie :D
Quote

  • +
  • -
d0naciak's Photo d0naciak 04.07.2013

to nie brak zmiennej, to zle nawyki z mojej strony. Kod poprawiony

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>

new bool:g_bFreeze[33];

public plugin_init()
{
    register_plugin("freeze", "0.1", "d0naciak")
    
    register_forward(FM_CmdStart, "fw_CmdStart");
}

public client_putinserver(id)
    g_bFreeze[id] = false;

public fw_CmdStart(id, iUc)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
    
    if(g_bFreeze[id])
    {
        new iButtons = get_uc(iUc, UC_Buttons);
        
        if(iButtons & IN_RUN)
        {
            set_pev(id, pev_button, iButtons & ~IN_RUN);
        }
    }
    
    return FMRES_IGNORED;
}

stock set_freeze(id, iSet)
{
    if(iSet == 1)
    {
        g_bFreeze[id] = true;
        
        set_pev(id, pev_button, pev(id, pev_button) & ~IN_RUN);
    }
    else
    {
        g_bFreeze[id] = false;
    }
}
Quote

  • +
  • -
MAGNET's Photo MAGNET 05.07.2013

Nie działa mi :(

Przypisałem SB pod komende say /freeze i nic sie nie stało niestety :(

Quote

  • +
  • -
d0naciak's Photo d0naciak 07.07.2013

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>

new const g_iKeysToBlock[5] = { IN_RUN, IN_MOVELEFT, IN_MOVERIGHT, IN_FORWARD, IN_BACK };
new bool:g_bFreeze[33];

public plugin_init()
{
    register_plugin("freeze", "0.1", "d0naciak")
    
    register_forward(FM_CmdStart, "fw_CmdStart");
}

public client_putinserver(id)
    g_bFreeze[id] = false;

public fw_CmdStart(id, iUc)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
    
    if(g_bFreeze[id])
    {
        new iButtons = get_uc(iUc, UC_Buttons);

        for(new i = 0; i <= 4; i++)
            iButtons &= ~g_iKeysToBlock[i];
            
        set_uc(iUc, UC_Buttons, iButtons);
            
        return FMRES_HANDLED;
    }
    
    return FMRES_IGNORED;
}

stock set_freeze(id, iSet)
{
    if(iSet == 1)
    {
        g_bFreeze[id] = true;
        
        new iButtons = pev(id, pev_button);

        for(new i = 0; i <= 4; i++)
            iButtons &= ~g_iKeysToBlock[i];
            
        set_pev(id, pev_button, iButtons);
    }
    else
    {
        g_bFreeze[id] = false;
    }
}
Quote

  • +
  • -
Filip1512's Photo Filip1512 07.07.2013

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>

new const g_iKeysToBlock[5] = { IN_RUN, IN_MOVELEFT, IN_MOVERIGHT, IN_FORWARD, IN_BACK };
new bool:g_bFreeze[33];

public plugin_init()
{
    register_plugin("freeze", "0.1", "d0naciak")
    
    register_forward(FM_CmdStart, "fw_CmdStart");
}

public client_putinserver(id)
    g_bFreeze[id] = false;

public fw_CmdStart(id, iUc)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
    
    if(g_bFreeze[id])
    {
        new iButtons = get_uc(iUc, UC_Buttons);

        for(new i = 0; i <= 4; i++)
            iButtons &= ~g_iKeysToBlock[i];
            
        set_uc(iUc, UC_Buttons, iButtons);
            
        return FMRES_HANDLED;
    }
    
    return FMRES_IGNORED;
}

stock set_freeze(id, iSet)
{
    if(iSet == 1)
    {
        g_bFreeze[id] = true;
        
        new iButtons = pev(id, pev_button);

        for(new i = 0; i <= 4; i++)
            iButtons &= ~g_iKeysToBlock[i];
            
        set_pev(id, pev_button, iButtons);
    }
    else
    {
        g_bFreeze[id] = false;
    }
}


Ten kod zadziała nawet jeśli modyfikujemy prędkość gracza poprzez set_user_maxspeed?
Quote

  • +
  • -
BlackPerfum's Photo BlackPerfum 07.07.2013

Tak gdyż nie wpływa na prędkość poruszania się tylko na przyciski które używa gracz

Quote

  • +
  • -
d0naciak's Photo d0naciak 07.07.2013

To tak jakby wklepać unbind klawiszów WASD - po prostu gracz ma zablokowane ich używanie - a prędkość chodu nie ma tu nic do rzeczy

Quote