ShopHats: Авто снятие после смерти

Сообщения
3
Реакции
-2
Как сделать вот в этом плагине снятие шапок после смерти
Код:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <engine>

#define PLUGIN "Hats shop"
#define VERSION "1.1"
#define AUTHOR "R-2"

#define ypon 1.4 //На сколько умножать урон от атак. Если нанёс 50 то 50*1.4=70 урона

#define HATS1         4500 //цена шапки Скорость
#define HATS2         5000 //цена шапки Гравитация
#define HATS3         6500 //цена шапки скорость + грава
#define HATS4         8000 //цена шапки Дамаг
#define HATS5         10000 //VIP шапка Невидимость 50%
#define HATS6         10000 //Супер VIP шапка, все умелки

#define FLAG_VIP ADMIN_LEVEL_C //флаг доступа на покупку шапки 5 (вип)
#define FLAG_SVIP ADMIN_LEVEL_G //флаг доступа на покупку шапки 6 (Супер вип)

new Ent[33]
new OffSkill[33]
new g_speed[33]
new g_grava[33]
new g_damag[33]
new g_invis[33]

new const chebur[] = "models/shopr2/cheburashka.mdl"
new const cow[ ] = "models/shopr2/cow.mdl"
new const demon[ ] = "models/shopr2/demon.mdl"
new const elf[ ] = "models/shopr2/elf.mdl"
new const gena[ ] = "models/shopr2/gena.mdl"
new const kotan[ ] = "models/shopr2/kotan.mdl"

new const pristavka[ ] = "GoodGame"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Item_PreFrame, "player", "PreFrame_Post", 1)
    RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage")
    
    register_logevent("round_end", 2, "1=Round_End")
    register_clcmd("say /hats","hats_menu")
}

public plugin_precache( )
{
    precache_model(chebur)
    precache_model(cow)
    precache_model(demon)
    precache_model(elf)
    precache_model(gena)
    precache_model(kotan)
}

public round_end()
{
    for(new id = 1; id <= get_maxplayers(); id++)
    {
        if(OffSkill[id] > 0) OffSkill[id] -= 1
        
        
        if(OffSkill[id] <= 0 && (g_grava[id] || g_speed[id] || g_damag[id] || g_invis[id])){
        color_chat(id, "!y[!g%s!y] !tУ вас закончился срок шапки.", pristavka)
        remove_hat(id)
        g_speed[id] = false
        g_damag[id] = false
        g_invis[id] = false
        g_grava[id] = false
        set_user_rendering(id)
        set_user_gravity(id, 1.0)
        ExecuteHam(Ham_Item_PreFrame, id)
        }
    }
}

public client_disconnect(id){
    remove_hat(id)
    g_speed[id] = false
    g_invis[id] = false
    g_damag[id] = false
    g_grava[id] = false
}

public client_connect(id){
    g_speed[id] = false
    g_invis[id] = false
    g_damag[id] = false
    g_grava[id] = false
}

public hats_menu(id)
{
    if(get_user_team(id) == 3){
    color_chat(id, "!tВыберите !gкоманду !tчтобы открыть Магазин")
    return PLUGIN_HANDLED
    }
    
    if(!is_user_alive(id)){
    color_chat(id, "!gТы же мёртв! !tНафига тебе шапка, ты !yПРО!t, я в тебя верю !g:D")
    return PLUGIN_HANDLED
    }
 

    new szText[ 555 char ];
    new money = cs_get_user_money(id)
    formatex( szText, charsmax( szText ), "\yМагазин шапочек:^nВаш счёт: %d", money)
    new i_Menuh = menu_create(szText, "menu_hats")
    
    
    if(money >= HATS1 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yГена \d[\rСкорость\w+\d] \w| \y%d\r$", HATS1) 
    else if(money <= HATS1 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dГена | \y%d\r$", HATS1)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dГена \w[\rВы мертвы\w]")
    menu_additem(i_Menuh, szText, "1", 0)
    
    if(money >= HATS2 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yЧебурашка \d[\rГравитация\w+\d] \w| \y%d\r$", HATS2)
    else if(money <= HATS2 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dЧебурашка | \y%d\r$", HATS2)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dЧебурашка \w[\rВы мертвы!\w]")
    menu_additem(i_Menuh, szText, "2", 0)
  
    if(money >= HATS3 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yКорова \d[\rСкор\w+ \rГрав\w+\d] \w| \y%d\r$", HATS3)   
    else if(money <= HATS3 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dКорова | \y%d\r$", HATS3)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dКорова \w[\rВы мертвы!\w]")
    menu_additem(i_Menuh, szText, "3", 0)
    
    if(money >= HATS4 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yДемон \d[\rУрон\w+\d] \w| \y%d\r$", HATS4)
    else if(money <= HATS4 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dДемон | \y%d\r$", HATS4)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dДемон \w[\rВы мертвы!\w]")
    menu_additem(i_Menuh, szText, "4", 0)

    if(get_user_flags(id) & FLAG_VIP || get_user_flags(id) & FLAG_SVIP)
    menu_addtext(i_Menuh,"^n\rVIP\w: ",0)
    else
    menu_addtext(i_Menuh,"^n\yVIP: \d[\rНет доступа\d]\w: ",0)
    
    if(money >= HATS5 && is_user_alive(id) && get_user_flags(id) & FLAG_VIP)
    formatex( szText, charsmax( szText ), "\yЭльф \d[\rНевидимость\d] \w| \y%d\r$", HATS5)
    else if(!is_user_alive(id) && get_user_flags(id) & FLAG_VIP)
    formatex( szText, charsmax( szText ), "\dЭльф \w[\rВы мертвы!\w]")
    else if(money <= HATS5 && get_user_flags(id) & FLAG_VIP)
    formatex( szText, charsmax( szText ), "\dЭльф \w| \y%d\r$", HATS5)
    else if(!(get_user_flags(id) & FLAG_VIP))
    formatex( szText, charsmax( szText ), "\dЭльф \w[\rНет доступа\w]")
    menu_additem(i_Menuh, szText, "5", 0)
    
    if(get_user_flags(id) & FLAG_VIP || get_user_flags(id) & FLAG_SVIP)
    menu_addtext(i_Menuh,"^n\rСупер VIP\w: ",0)
    else
    menu_addtext(i_Menuh,"^n\yСупер VIP \d[\rНет доступа\d]\w: ",0)

    if(money >= HATS5 && is_user_alive(id) && get_user_flags(id) & FLAG_SVIP)
    formatex( szText, charsmax( szText ), "\yКотан \d[\rВесь комплект\d] \w| \y%d\r$", HATS6)   
    else if(!is_user_alive(id) && get_user_flags(id) & FLAG_SVIP)
    formatex( szText, charsmax( szText ), "\dКотан \w[\rВы мертвы!\w]")
    else if(money <= HATS6 && get_user_flags(id) & FLAG_SVIP)
    formatex( szText, charsmax( szText ), "\dКотан \w| \y%d\r$", HATS6)
    else if(!(get_user_flags(id) & FLAG_SVIP))
    formatex( szText, charsmax( szText ), "\dКотан \w[\rНет доступа\w]")
    menu_additem(i_Menuh, szText, "6", 0)
    
    menu_setprop(i_Menuh, MPROP_EXITNAME, "Выход")
    menu_setprop(i_Menuh, MPROP_EXIT, MEXIT_ALL)

    menu_display(id, i_Menuh, 0)
    
    return PLUGIN_HANDLED
 }
 
public menu_hats(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback

    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

    new i_Key = str_to_num(s_Data)
    new money = cs_get_user_money(id)
    
      
    switch(i_Key)
    {
        case 2:
        { 
        
        if(Ent[id] > 0)
        {
                color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
                return PLUGIN_HANDLED
        }   
    
        if(!is_user_alive(id))
        {
           color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
           return PLUGIN_HANDLED
        }

        if(money < HATS2)
        {
           color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
           return PLUGIN_HANDLED
        }
        
        if(Ent[id] < 1)
        {
                Ent[id] = create_entity("info_target")
                if(is_valid_ent(id))
                {
                    OffSkill[id] = 2
                        entity_set_model(Ent[id] , chebur)
                        entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                        entity_set_edict(Ent[id], EV_ENT_aiment, id)
                set_user_gravity(id, 0.5)
                g_grava[id] = true
                cs_set_user_money(id, money - HATS2)
                color_chat(id, "!y[!g%s!y] !tВы одели шапку !gЧебурашки", pristavka)
                color_chat(id, "!y[!g%s!y] !tВы получили способность !gГравитация!y+", pristavka)
            
                }
        }
    
        }
        case 1:
        {
        if(Ent[id] > 0)
        {
                color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
                return PLUGIN_HANDLED
        }
    
        if(!is_user_alive(id))
        {
           color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
           return PLUGIN_HANDLED
        }

        if(money < HATS1)
        {
           color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
           return PLUGIN_HANDLED
        }
    
        if(Ent[id] < 1)
        {
                Ent[id] = create_entity("info_target")
                if(is_valid_ent(id))
                {
                    OffSkill[id] = 2
                        entity_set_model(Ent[id] , gena)
                        entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                        entity_set_edict(Ent[id], EV_ENT_aiment, id)
            g_speed[id] = true
            set_user_maxspeed(id, 360.0)
            cs_set_user_money(id, money - HATS1)
                                                
                color_chat(id, "!y[!g%s!y] !tВы одели шапку !gГеныча", pristavka)
                color_chat(id, "!y[!g%s!y] !tВы получили способность !gСкорость!y+", pristavka)
                }
        }
        }
        case 3:
        {
        if(Ent[id] > 0)
        {
                color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
                return PLUGIN_HANDLED
        }
    
        if(!is_user_alive(id))
        {
           color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
           return PLUGIN_HANDLED
        }

        if(money < HATS3)
        {
           color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
           return PLUGIN_HANDLED
        }
    
        if(Ent[id] < 1)
        {
                Ent[id] = create_entity("info_target")
                if(is_valid_ent(id))
                {
                    OffSkill[id] = 2
                        entity_set_model(Ent[id] , cow)
                        entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                        entity_set_edict(Ent[id], EV_ENT_aiment, id)
            set_user_gravity(id, 0.5)
            g_speed[id] = true
            g_grava[id] = true
            set_user_maxspeed(id, 360.0)   
            cs_set_user_money(id, money - HATS3)
            color_chat(id, "!y[!g%s!y] !tВы одели шапку !gКоровы", pristavka)
            color_chat(id, "!y[!g%s!y] !tВы получили способность !gГравитация!y+ !t| !gСкорость!y+", pristavka)
                }
        }       
        }
        case 4:
        {
        if(Ent[id] > 0)
        {
                color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
                return PLUGIN_HANDLED   
        }   
        
        if(!is_user_alive(id))
        {
           color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
           return PLUGIN_HANDLED
        }

        if(money < HATS4)
        {
           color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
           return PLUGIN_HANDLED
        }   
        

        if(Ent[id] < 1)
        {
                Ent[id] = create_entity("info_target")
                if(is_valid_ent(id))
                {
                    OffSkill[id] = 2
                        entity_set_model(Ent[id] , demon)
                        entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                        entity_set_edict(Ent[id], EV_ENT_aiment, id)
            g_damag[id] = true           
            cs_set_user_money(id, money - HATS4)
            color_chat(id, "!y[!g%s!y] !tВы одели шапку !gДемона", pristavka)
            color_chat(id, "!y[!g%s!y] !tВы получили способность !gУрон!y+", pristavka)
                }
        }
        }
        case 5:
        {
        if(!(get_user_flags(id) & FLAG_VIP))
        {
           color_chat(id, "!y[!g%s!y] !gУ вас нет доступа на покупку данной шапки.", pristavka)
           return PLUGIN_HANDLED
    
        }
    
        if(Ent[id] > 0)
        {
                color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
        
                return PLUGIN_HANDLED
        }
    
        if(!is_user_alive(id))
        {
           color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
           return PLUGIN_HANDLED
        }   
    
        
        if(money < HATS5){
           color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
           return PLUGIN_HANDLED
        }
        
        if(Ent[id] < 1)
        {
                Ent[id] = create_entity("info_target")
                if(is_valid_ent(id))
                {
                    OffSkill[id] = 4
                        entity_set_model(Ent[id] , elf)
                        entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                        entity_set_edict(Ent[id], EV_ENT_aiment, id)
            
                    set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)   
                    g_invis[id] = true
            cs_set_user_money(id, money - HATS5)
                        
            color_chat(id, "!y[!g%s!y] !tВы одели шапку !gЭльфа", pristavka)
            color_chat(id, "!y[!g%s!y] !tВы получили способность !gНевидимость!y 50%", pristavka)
                }
        }
        }
        case 6:
        {
        if(!(get_user_flags(id) & FLAG_SVIP))
        {
           color_chat(id, "!y[!g%s!y] !gУ вас нет доступа на покупку данной шапки.", pristavka)
           return PLUGIN_HANDLED
    
        }
    
        
        if(Ent[id] > 0)
        {
                color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
                return PLUGIN_HANDLED
        }
    
    
        if(!is_user_alive(id))
        {
           color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
           return PLUGIN_HANDLED
        }
    
        if(money < HATS6){
           color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
           return PLUGIN_HANDLED
        }
        
        if(Ent[id] < 1)
        {
                Ent[id] = create_entity("info_target")
                if(is_valid_ent(id))
                {
                    OffSkill[id] = 4
                        entity_set_model(Ent[id] , kotan)
                        entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                        entity_set_edict(Ent[id], EV_ENT_aiment, id)
            set_user_maxspeed(id, 360.0)
            set_user_gravity(id, 0.5)
            set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
            g_speed[id] = true
            g_grava[id] = true
            g_invis[id] = true
            g_damag[id] = true
            cs_set_user_money(id, money - HATS6)
            
            color_chat(id, "!y[!g%s!y] !tВы одели шапку !gКота", pristavka)
            color_chat(id, "!y[!g%s!y] !tВы получили все способности !y[!gПолноценный комплект!y]", pristavka)
            
                }
        }       
        }
    }
 
    menu_destroy(menu)
    return PLUGIN_HANDLED
 }
 
 public remove_hat(id)
{
    if(Ent[id] > 0)
    {
        remove_entity(Ent[id])
        Ent[id] = 0
    }
}



public PreFrame_Post(id)
{
    if(!is_user_connected(id) || !is_user_alive(id))
        return

    if(g_speed[id])
        set_user_maxspeed(id, 360.0)
        
    if(g_grava[id])
             set_user_gravity(id, 0.5)
        
        
        if(g_invis[id])
             set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
}

public Player_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
        return HAM_IGNORED

    if(!g_damag[attacker])
        return HAM_IGNORED

    SetHamParamFloat(4, damage * ypon)
    
    return HAM_IGNORED
}

stock color_chat(const id, const input[], any:...)
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^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();
            }
        }
    }
}
я нашел (я так думаю) то что отвечает за снятие в конце раунда, меняю round_end на kill и не открывается меню

Код:
register_logevent("round_end", 2, "1=Round_End")


public round_end()
{
    for(new id = 1; id <= get_maxplayers(); id++)
    {
        if(OffSkill[id] > 0) OffSkill[id] -= 1
        
        
        if(OffSkill[id] <= 0 && (g_grava[id] || g_speed[id] || g_damag[id] || g_invis[id])){
        color_chat(id, "!y[!g%s!y] !tУ вас закончился срок шапки.", pristavka)
        remove_hat(id)
        g_speed[id] = false
        g_damag[id] = false
        g_invis[id] = false
        g_grava[id] = false
        set_user_rendering(id)
        set_user_gravity(id, 1.0)
        ExecuteHam(Ham_Item_PreFrame, id)
        }
    }
}
Помогите кто нибудь
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу