Предложения за плъгини

Всичко свързано с AMX mod (X), плъгини, проблеми с плъгини, заявки и тн.
Потребителски аватар
MuHaBaM
Member
Мнения: 56
Регистриран: ср май 25, 2016 12:50 pm
Баланс: Locked

съб юли 23, 2016 1:07 pm

[quote="TheRedShoko"]Как така автоматично?... Безсмислено е на 10секунди да блокира стрелбата на всички играчи... Поне аз така разбирам това "автоматично парализиране". ScreenFade ще го махна, след като ми отговориш на предишния въпрос.[/quote]

Как така "всички хора"? Не съм споменавал никаде, че трябва да парализира всички хора... О, чакай.. Аз не споменах за дистанцията, моя грешка, извинявай! Еми, добре.. Да е с бутон, но може ли да ми добавиш съобщение, когато взема зомбито да пише каква способност има и с кое копче се парализира? Подобно на това: [BB] Zombie Class: Paralyze. Sposobnost: Paralyze human's. Button: E. За моделите.. Още не съм избрал.

Потребителски аватар
TheRedShoko
Member
Мнения: 50
Регистриран: пет мар 25, 2016 2:54 pm
Баланс: Locked

вт юли 26, 2016 12:43 pm

Код: Трябва да си влязъл в системата, за да можеш да виждаш линковете

#include <amxmodx>
#include <fakemeta_util>
#include <basebuilder>

new const szClassInfo[][] =
{
    "Paralyze Zombie",
    "\r[Paralyze\r]",
    "bb_zombie_paralyze",
    "models/bb_basebuilder/bb_v_paralyze.mdl",
    "3600",
    "275",
    "0.8",
    "1.1"
}

new const szSprite[] = "sprites/paralyzed.spr";

new iZombieClass, bool:blRoundStarted, Float:flLastUsedTime[33], bool:blUserParalyzed[33];
new p_flParalyzeTime, p_flAbilityTime, iParalyzeSpr;

public plugin_init()
{
    register_plugin("[BB] Zombie Class: Paralyze Zombie", "1.0", "TheRedShoko");
    
    register_event("DeathMsg", "eventDeathMsg", "a")
    
    register_forward(FM_PlayerPreThink, "fwPlayerPreThink");

    p_flParalyzeTime = register_cvar("bb_paralyze_hold", "3.0");     //Продължителност на парализирането.
    p_flAbilityTime = register_cvar("bb_paralyze_ability", "10.0");     //През колко секунди да може да се използва парализирането
}

public plugin_precache()
{
    iZombieClass = bb_register_zombie_class(szClassInfo[0], szClassInfo[1], szClassInfo[2], szClassInfo[3], str_to_num(szClassInfo[4]), str_to_num(szClassInfo[5]),
    str_to_float(szClassInfo[6]), str_to_float(szClassInfo[7]));

    iParalyzeSpr = precache_model(szSprite);
}

public client_disconnect(id)
{
    blUserParalyzed[id] = false;
}

public client_putinserver(id)
{
    blUserParalyzed[id] = false;
}

public bb_zombie_class_picked(id, iClass)
{
    if (iClass == iZombieClass && bb_is_user_zombie(id))
    {
        ColorMessage(id, "^x04[BaseBuilder]^x01 Press^x04 E^x01 to paralyze a human.")
    }
}

public bb_zombie_class_set(id, iClass)
{
    if (iClass == iZombieClass && bb_is_user_zombie(id))
    {
        ColorMessage(id, "^x04[BaseBuilder]^x01 Press^x04 E^x01 to paralyze a human.")
    }
}

public bb_round_started()
{
    blRoundStarted = true;
}

public bb_buildphase_started()
{
    blRoundStarted = false;
}

public fwPlayerPreThink(id)
{
    new iButtons, iOldButtons;
    pev(id, pev_button, iButtons);
    pev(id, pev_oldbuttons, iOldButtons);
    
    if (bb_is_user_zombie(id) && blRoundStarted && bb_get_user_zombie_class(id) == iZombieClass && iButtons & IN_USE && !(iOldButtons & IN_USE))
    {
        static iAiming, iBody, Float:flCoolDown;
        get_user_aiming(id, iAiming, iBody);
        flCoolDown = get_pcvar_float(p_flAbilityTime);
        
        if (!is_user_connected(iAiming))
        {
            return FMRES_IGNORED;
        }
        
        if (get_gametime() - flLastUsedTime[id] < flCoolDown)
        {
            client_print(id, print_center, "Wait %i seconds!", flCoolDown - (get_gametime() - flLastUsedTime[id]));
            
            return FMRES_IGNORED;
        }
        
        flLastUsedTime[id] = get_gametime();
        
        blUserParalyzed[iAiming] = true;
        
        createEffects(iAiming);
        
        set_task(get_pcvar_float(p_flParalyzeTime), "unParalyzePlayer", iAiming);
        
        return FMRES_IGNORED;
    }
    else if (!bb_is_user_zombie(id) && blRoundStarted && blUserParalyzed[id])
    {
        set_pev(id, pev_button, iButtons & ~IN_ATTACK);
    }
    
    return FMRES_IGNORED;
}

public eventDeathMsg()
{
    blUserParalyzed[read_data(2)] = false;
}

public unParalyzePlayer(id)
{
    blUserParalyzed[id] = false;
}
        
createEffects(id)
{
    message_begin(MSG_ALL, SVC_TEMPENTITY);
    write_byte(TE_PLAYERATTACHMENT);
    write_byte(id);
    write_coord(60);
    write_short(iParalyzeSpr);
    write_short(30);
    message_end();
}

stock ColorMessage(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    if (id) players[0] = id; else get_players(players , count , "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE , get_user_msgid ("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
Така? Нямах време тези дни...
Последна промяна от xvi на нед яну 22, 2017 7:01 pm, променено общо 1 път.

Отговори

Върни се в “AMX Mod (X)”

  • Информация
  • Кой е на линия

    Потребители, разглеждащи този форум: Няма регистрирани потребители и 0 госта