OciXCrom's Custom VIP Extras

Неодобрените плъгини биват прехвърляни в този раздел. Не препоръчваме да ги ползвате, тъй като най-вероятно съдържат бъгове или същестуват такива плъгини, които вършат по-добра работа от тези тук.
Потребителски аватар

aBorisoff
Потребител
Потребител
Мнения: 14
Регистриран: 15 апр 2017, 15:36

Re: OciXCrom's Custom VIP Extras

Мнение от aBorisoff » 26 апр 2017, 16:35

Компилирах го локално, а относно сървъра - хоства се под Linux.

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5253
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

Re: OciXCrom's Custom VIP Extras

Мнение от OciXCrom TM » 26 апр 2017, 16:37

AMXX версия? Ползваш ли ReHLDS?

Потребителски аватар

aBorisoff
Потребител
Потребител
Мнения: 14
Регистриран: 15 апр 2017, 15:36

Re: OciXCrom's Custom VIP Extras

Мнение от aBorisoff » 26 апр 2017, 16:39

Amxx - 1.8.2
На ReHLDS.

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5253
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

Re: OciXCrom's Custom VIP Extras

Мнение от OciXCrom TM » 26 апр 2017, 16:47

Явно библиотеката за премахване оръжия не работи на ReHLDS. Опитай по този начин (ползвал съм функциите на rehlds):

Код: Избери всички

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <reapi>

#define PLUGIN_NAME "VIP Extras"
#define PLUGIN_VERSION "2.2b"
#define PLUGIN_AUTHOR "OciXCrom"

#define MODELS_PATH "models/player"
#define SOUND_MENU "items/gunpickup2.wav"

new flag_vip, flag_skin, wait, maxhealth, maxmoney, menu_enabled, menu_maxuses, menu_spawn
new get_health, get_armor, health_amount, armor_amount, get_deagle, he_amount, flash_amount, smoke_amount, get_transparency, transparency_amount
new get_m4a1, get_ak47, get_awp, get_g3sg1, get_sg550, menu_m4a1, menu_ak47, menu_awp, menu_g3sg1, menu_sg550
new menu_health, menu_armor, menu_deagle, menu_transparency, menu_speed, menu_gravity, menu_moredamage
new get_skin_t, get_skin_ct, skin_name_t, skin_name_ct, get_speed, speed_amount, get_gravity, gravity_amount, get_moredamage, moredamage_multiplier
new killbonus_health_normal, killbonus_health_headshot, killbonus_money_normal, killbonus_money_headshot
new skin_t[32], skin_ct[32], menu_uses[33]
new bool:user_moredamage[33]

new bool:skin_t_active
new bool:skin_ct_active

new const szPrefix[] = "^4[^3VIP Extras^4]"

enum Color
{
    NORMAL = 1, // clients scr_concolor cvar color
    GREEN, // Green Color
    TEAM_COLOR, // Red, grey, blue
    GREY, // grey
    RED, // Red
    BLUE, // Blue
}

new TeamNames[][] = 
{
    "",
    "TERRORIST",
    "CT",
    "SPECTATOR"
}

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar("CustomVIPExtras", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
    RegisterHam(Ham_TakeDamage, "player", "player_damage")
    register_event("DeathMsg", "player_killed", "a")
    register_event("CurWeapon", "change_weapon", "be", "1=1")
    
    register_clcmd("say /vm", "vip_menu")
    register_clcmd("say_team /vm", "vip_menu")
    register_clcmd("say /vipmenu", "vip_menu")
    register_clcmd("say_team /vipmenu", "vip_menu")
    
    wait = register_cvar("ve_wait", "0.5")
    flag_vip = register_cvar("ve_vipflag", "o")
    flag_skin = register_cvar("ve_skinflag", "b")
    menu_enabled = register_cvar("ve_menu_enabled", "0")
    menu_maxuses = register_cvar("ve_menu_maxuses", "1")
    menu_spawn = register_cvar("ve_menu_spawn", "1")
    
    get_health = register_cvar("ve_get_health", "1")
    get_armor = register_cvar("ve_get_armor", "1")
    get_deagle = register_cvar("ve_get_deagle", "1")
    get_transparency = register_cvar("ve_get_transparency", "0")
    get_speed = register_cvar("ve_get_speed", "0")
    get_gravity = register_cvar("ve_get_gravity", "0")
    get_m4a1 = register_cvar("ve_get_m4a1", "0")
    get_ak47 = register_cvar("ve_get_ak47", "0")
    get_awp = register_cvar("ve_get_awp", "0")
    get_g3sg1 = register_cvar("ve_get_g3sg1", "0")
    get_sg550 = register_cvar("ve_get_sg550", "0")
    get_moredamage = register_cvar("ve_get_moredamage", "0")
    
    menu_health = register_cvar("ve_menu_health", "1")
    menu_armor = register_cvar("ve_menu_armor", "1")
    menu_deagle = register_cvar("ve_menu_deagle", "1")
    menu_transparency = register_cvar("ve_menu_transparency", "1")
    menu_speed = register_cvar("ve_menu_speed", "1")
    menu_gravity = register_cvar("ve_menu_gravity", "1")
    menu_m4a1 = register_cvar("ve_menu_m4a1", "1")
    menu_ak47 = register_cvar("ve_menu_ak47", "1")
    menu_awp = register_cvar("ve_menu_awp", "1")
    menu_g3sg1 = register_cvar("ve_menu_g3sg1", "1")
    menu_sg550 = register_cvar("ve_menu_sg550", "1")
    menu_moredamage = register_cvar("ve_menu_moredamage", "1")
    
    health_amount = register_cvar("ve_health_amount", "150")
    armor_amount = register_cvar("ve_armor_amount", "100")
    he_amount = register_cvar("ve_he_amount", "1")
    flash_amount = register_cvar("ve_flash_amount", "2")
    smoke_amount = register_cvar("ve_smoke_amount", "1")
    transparency_amount = register_cvar("ve_transparency_amount", "75")
    speed_amount = register_cvar("ve_speed_amount", "300.0")
    gravity_amount = register_cvar("ve_gravity_amount", "0.5")
    moredamage_multiplier = register_cvar("ve_moredamage_multiplier", "2")
    
    killbonus_health_normal = register_cvar("ve_killbonus_health_normal", "5")
    killbonus_health_headshot = register_cvar("ve_killbonus_health_headshot", "10")
    killbonus_money_normal = register_cvar("ve_killbonus_money_normal", "300")
    killbonus_money_headshot = register_cvar("ve_killbonus_money_headshot", "500")
    maxhealth = register_cvar("ve_max_health", "200")
    maxmoney = register_cvar("ve_max_money", "16000")
}

public change_weapon(id)
    if(user_has_flag(id, flag_vip) && get_pcvar_num(get_speed) == 1) set_user_maxspeed(id, get_pcvar_float(speed_amount))

public player_spawn(id)
{
    if(is_user_alive(id))
    {
        menu_uses[id] = 0
        user_moredamage[id] = false
        cs_reset_user_model(id)
        set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
        
        if(get_pcvar_num(menu_enabled) > 0 && get_pcvar_num(menu_spawn) == 1)
            vip_menu(id)
    }
    
    set_task(get_pcvar_float(wait), "vip_set", id)
}

public vip_set(id)
{
    if(!is_user_alive(id))
        return
    
    if(user_has_flag(id, flag_skin))
    {
        switch(get_user_team(id))
        {
            case 1: if(skin_t_active) cs_set_user_model(id, skin_t)
            case 2: if(skin_ct_active) cs_set_user_model(id, skin_ct)
        }
    }
    
    if(get_pcvar_num(menu_enabled) == 1)
        return
    
    if(user_has_flag(id, flag_vip))
    {
        if(get_pcvar_num(get_health) == 1)
            vip_equip(id, 0)
            
        if(get_pcvar_num(get_armor) == 1)
            vip_equip(id, 1)
        
        if(get_pcvar_num(get_deagle) == 1)
            vip_equip(id, 2)
            
        new he = get_pcvar_num(he_amount)
        new flash = get_pcvar_num(flash_amount)
        new smoke = get_pcvar_num(smoke_amount)
        
        if(he > 0)
            vip_equip(id, 3)
            
        if(flash > 0)
            vip_equip(id, 4)
        
        if(smoke > 0)
            vip_equip(id, 5)
        
        if(get_pcvar_num(get_transparency) == 1)
            vip_equip(id, 6)
        
        if(get_pcvar_num(get_speed) == 1)
            vip_equip(id, 7)
            
        if(get_pcvar_num(get_gravity) == 1)
            vip_equip(id, 8)
        
        if(get_pcvar_num(get_m4a1) == 1)
            vip_equip(id, 9)
        
        if(get_pcvar_num(get_ak47) == 1)
            vip_equip(id, 10)
            
        if(get_pcvar_num(get_awp) == 1)
            vip_equip(id, 11)
            
        if(get_pcvar_num(get_g3sg1) == 1)
            vip_equip(id, 12)
        
        if(get_pcvar_num(get_sg550) == 1)
            vip_equip(id, 13)
        
        if(get_pcvar_num(get_moredamage) == 1)
            vip_equip(id, 14)
    }
}

public vip_equip(id, item)
{
    switch(item)
    {
        case 0: set_user_health(id, get_pcvar_num(health_amount))
        case 1: set_user_armor(id, get_pcvar_num(armor_amount))
        case 2:
        {
            rg_remove_items_by_slot(id, PISTOL_SLOT)
            give_item(id, "weapon_deagle")
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
        }
        case 3:
        {
            give_item(id, "weapon_hegrenade")
            cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(he_amount))
        }
        case 4:
        {
            give_item(id, "weapon_flashbang")
            cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(flash_amount))
        }
        case 5:
        {
            give_item(id, "weapon_smokegrenade")
            cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(smoke_amount))
        }
        case 6: set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num(transparency_amount))
        case 7: set_user_maxspeed(id, get_pcvar_float(speed_amount))
        case 8: set_user_gravity(id, get_pcvar_float(gravity_amount))
        case 9:
        {
            rg_remove_items_by_slot(id, PRIMARY_WEAPON_SLOT)
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90)
        }
        case 10:
        {
            rg_remove_items_by_slot(id, PRIMARY_WEAPON_SLOT)
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90)
        }
        case 11:
        {
            rg_remove_items_by_slot(id, PRIMARY_WEAPON_SLOT)
            give_item(id, "weapon_awp")
            cs_set_user_bpammo(id, CSW_AWP, 30)
        }
        case 12:
        {
            rg_remove_items_by_slot(id, PRIMARY_WEAPON_SLOT)
            give_item(id, "weapon_g3sg1")
            cs_set_user_bpammo(id, CSW_G3SG1, 90)
        }
        case 13:
        {
            rg_remove_items_by_slot(id, PRIMARY_WEAPON_SLOT)
            give_item(id, "weapon_sg550")
            cs_set_user_bpammo(id, CSW_SG550, 90)
        }
        case 14:
            user_moredamage[id] = true
    }
}

public vip_menu(id)
{
    if(get_pcvar_num(menu_enabled) == 0)
    {
        ColorChat(id, TEAM_COLOR, "%s ^1The ^4VIP Menu ^1is currently ^3disabled^1.", szPrefix)
        return PLUGIN_HANDLED
    }
    
    if(!user_has_flag(id, flag_vip))
    {
        ColorChat(id, TEAM_COLOR, "%s ^1You have ^3no access ^1to this command.", szPrefix)
        return PLUGIN_HANDLED
    }
    
    if(!is_user_alive(id))
    {
        ColorChat(id, TEAM_COLOR, "%s ^1You need to be ^3alive^1!", szPrefix)
        return PLUGIN_HANDLED
    }
    
    if(menu_uses[id] == get_pcvar_num(menu_maxuses))
    {
        ColorChat(id, TEAM_COLOR, "%s ^1You can use the menu only ^4%i ^1time(s).", szPrefix, get_pcvar_num(menu_maxuses))
        return PLUGIN_HANDLED
    }
    
    new title[100], item[50]
    formatex(title, charsmax(title), "\yOciXCrom's \rCustom VIP Extras\d")
    
    new vipmenu = menu_create(title, "vipmenu_handler")
    
    if(get_pcvar_num(menu_health) == 1)
    {
        formatex(item, charsmax(item), "Health Points \y(+%i)", get_pcvar_num(health_amount))
        menu_additem(vipmenu, item, "0", 0)
    }
    
    if(get_pcvar_num(menu_armor) == 1)
    {
        formatex(item, charsmax(item), "Armor Points \y(+%i)", get_pcvar_num(armor_amount))
        menu_additem(vipmenu, item, "1", 0)
    }
    
    if(get_pcvar_num(menu_deagle) == 1)
    {
        formatex(item, charsmax(item), "Deagle \y(Full Ammo)")
        menu_additem(vipmenu, item, "2", 0)
    }
    
    if(get_pcvar_num(he_amount) > 0)
    {
        formatex(item, charsmax(item), "He Grenade \y(%ix)", get_pcvar_num(he_amount))
        menu_additem(vipmenu, item, "3", 0)
    }
    
    if(get_pcvar_num(flash_amount) > 0)
    {
        formatex(item, charsmax(item), "Flash Grenade \y(%ix)", get_pcvar_num(flash_amount))
        menu_additem(vipmenu, item, "4", 0)
    }
    
    if(get_pcvar_num(smoke_amount) > 0)
    {
        formatex(item, charsmax(item), "Smoke Grenade \y(%ix)", get_pcvar_num(smoke_amount))
        menu_additem(vipmenu, item, "5", 0)
    }
    
    if(get_pcvar_num(menu_transparency) == 1)
    {
        formatex(item, charsmax(item), "Transparency \y(%i%)", get_pcvar_num(transparency_amount))
        menu_additem(vipmenu, item, "6", 0)
    }
    
    if(get_pcvar_num(menu_speed) == 1)
    {
        formatex(item, charsmax(item), "Faster Speed \y(%i)", get_pcvar_num(speed_amount))
        menu_additem(vipmenu, item, "7", 0)
    }
    
    if(get_pcvar_num(menu_gravity) == 1)
    {
        formatex(item, charsmax(item), "Low Gravity \y(%f)", get_pcvar_float(gravity_amount))
        menu_additem(vipmenu, item, "8", 0)
    }
    
    if(get_pcvar_num(menu_m4a1) == 1)
    {
        formatex(item, charsmax(item), "M4A1 \y(Full Ammo)")
        menu_additem(vipmenu, item, "9", 0)
    }
    
    if(get_pcvar_num(menu_ak47) == 1)
    {
        formatex(item, charsmax(item), "AK47 \y(Full Ammo)")
        menu_additem(vipmenu, item, "10", 0)
    }
    
    if(get_pcvar_num(menu_awp) == 1)
    {
        formatex(item, charsmax(item), "AWP \y(Sniper)")
        menu_additem(vipmenu, item, "11", 0)
    }
    
    if(get_pcvar_num(menu_g3sg1) == 1)
    {
        formatex(item, charsmax(item), "G3SG1 \y(Automatic Sniper)")
        menu_additem(vipmenu, item, "12", 0)
    }
    
    if(get_pcvar_num(menu_sg550) == 1)
    {
        formatex(item, charsmax(item), "SG550 \y(Automatic Sniper)")
        menu_additem(vipmenu, item, "13", 0)
    }
    
    if(get_pcvar_num(menu_moredamage) == 1)
    {
        formatex(item, charsmax(item), "More Damage \y(%ix)", get_pcvar_num(moredamage_multiplier))
        menu_additem(vipmenu, item, "14", 0)
    }
    
    menu_setprop(vipmenu, MPROP_EXITNAME, "\rClose the Menu")
    menu_setprop(vipmenu, MPROP_BACKNAME, "\rGo to the \yPrevious \rPage")
    menu_setprop(vipmenu, MPROP_NEXTNAME, "\rGo to the \yNext \rPage")
    menu_setprop(vipmenu, MPROP_EXIT, MEXIT_ALL)
    
    menu_display(id, vipmenu, 0)
    return PLUGIN_HANDLED
}

public vipmenu_handler(id, vipmenu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(vipmenu)
        return PLUGIN_HANDLED
    }
    
    new data[6], iName[64], access, callback
    menu_item_getinfo(vipmenu, item, access, data, charsmax(data), iName, charsmax(iName), callback)

    new key = str_to_num(data)
    vip_equip(id, key)
    menu_uses[id]++
    
    ColorChat(id, TEAM_COLOR, "%s ^1You have successfully used the ^3VIP Menu^1 (^4%i^1/^4%i^1)", szPrefix, menu_uses[id], get_pcvar_num(menu_maxuses))
    emit_sound(id, CHAN_ITEM, SOUND_MENU, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    
    menu_destroy(vipmenu)
    return PLUGIN_HANDLED
}

public player_killed()
{
    new attacker = read_data(1)
    new victim = read_data(2)
    
    if(!is_user_connected(attacker) || !is_user_connected(victim) || attacker == victim || !user_has_flag(attacker, flag_vip))
        return
    
    new headshot = read_data(3)
    
    new health = get_user_health(attacker)
    new money = cs_get_user_money(attacker)
    
    new reward_health = headshot ? get_pcvar_num(killbonus_health_headshot) : get_pcvar_num(killbonus_health_normal)
    new reward_money = headshot ? get_pcvar_num(killbonus_money_headshot) : get_pcvar_num(killbonus_money_normal)
    
    new health_max = get_pcvar_num(maxhealth)
    new money_max = get_pcvar_num(maxmoney)
    
    set_user_health(attacker, health + reward_health)
    cs_set_user_money(attacker, money + reward_money)
    
    if(get_user_health(attacker) > health_max) set_user_health(attacker, health_max)
    if(cs_get_user_money(attacker) > money_max) cs_set_user_money(attacker, money_max)
}

public player_damage(victim, inflictor, attacker, Float:damage, damage_bits)
{
    if(is_user_connected(attacker))
        if(user_moredamage[attacker] && attacker != victim)
            SetHamParamFloat(4, damage * get_pcvar_float(moredamage_multiplier))
}

public plugin_precache()
{
    get_skin_t = register_cvar("ve_get_skin_t", "0")
    get_skin_ct = register_cvar("ve_get_skin_ct", "0")
    
    skin_name_t = register_cvar("ve_skin_name_t", "vip")
    skin_name_ct = register_cvar("ve_skin_name_ct", "smith")

    skin_t_active = (get_pcvar_num(get_skin_t) == 1) ? true : false
    skin_ct_active = (get_pcvar_num(get_skin_ct) == 1) ? true : false
    
    if(skin_t_active)
    {
        new skin1[50]
        get_pcvar_string(skin_name_t, skin_t, charsmax(skin_t))
        formatex(skin1, charsmax(skin1), "%s/%s/%s.mdl", MODELS_PATH, skin_t, skin_t)
        precache_model(skin1)
    }
    
    if(skin_ct_active)
    {
        new skin2[50]
        get_pcvar_string(skin_name_ct, skin_ct, charsmax(skin_ct))
        formatex(skin2, charsmax(skin2), "%s/%s/%s.mdl", MODELS_PATH, skin_ct, skin_ct)
        precache_model(skin2)
    }
    
    precache_sound(SOUND_MENU)
}

stock user_has_flag(id, cvar)
{
    new flags[32]
    get_flags(get_user_flags(id), flags, charsmax(flags))
    
    new vip_flag[2]
    get_pcvar_string(cvar, vip_flag, charsmax(vip_flag))
    
    return (contain(flags, vip_flag) != -1) ? true : false
}

/* ======================================================================================================= */
/* ColorChat */
/* ======================================================================================================= */
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
    if( !get_playersnum() ) return;
    
    new message[256];

    switch(type)
    {
        case NORMAL: // clients scr_concolor cvar color
        {
            message[0] = 0x01;
        }
        case GREEN: // Green
        {
            message[0] = 0x04;
        }
        default: // White, Red, Blue
        {
            message[0] = 0x03;
        }
    }

    vformat(message[1], 251, msg, 4);

    replace_all(message, 191, "!n", "^x01")
    replace_all(message, 191, "!t", "^x03")
    replace_all(message, 191, "!g", "^x04")
    
    // Make sure message is not longer than 192 character. Will crash the server.
    message[192] = '^0';

    new team, ColorChange, index, MSG_Type;
    
    if(id)
    {
        MSG_Type = MSG_ONE;
        index = id;
    } else {
        index = FindPlayer();
        MSG_Type = MSG_ALL;
    }
    
    team = get_user_team(index);
    ColorChange = ColorSelection(index, MSG_Type, type);

    ShowColorMessage(index, MSG_Type, message);
        
    if(ColorChange)
    {
        Team_Info(index, MSG_Type, TeamNames[team]);
    }
}

ShowColorMessage(id, type, message[])
{
    static bool:saytext_used;
    static get_user_msgid_saytext;
    if(!saytext_used)
    {
        get_user_msgid_saytext = get_user_msgid("SayText");
        saytext_used = true;
    }
    message_begin(type, get_user_msgid_saytext, _, id);
    write_byte(id)        
    write_string(message);
    message_end();    
}

Team_Info(id, type, team[])
{
    static bool:teaminfo_used;
    static get_user_msgid_teaminfo;
    if(!teaminfo_used)
    {
        get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
        teaminfo_used = true;
    }
    message_begin(type, get_user_msgid_teaminfo, _, id);
    write_byte(id);
    write_string(team);
    message_end();

    return 1;
}

ColorSelection(index, type, Color:Type)
{
    switch(Type)
    {
        case RED:
        {
            return Team_Info(index, type, TeamNames[1]);
        }
        case BLUE:
        {
            return Team_Info(index, type, TeamNames[2]);
        }
        case GREY:
        {
            return Team_Info(index, type, TeamNames[0]);
        }
    }

    return 0;
}

FindPlayer()
{
    new i = -1;

    while(i <= get_maxplayers())
    {
        if(is_user_connected(++i))
            return i;
    }

    return -1;
}

Потребителски аватар

aBorisoff
Потребител
Потребител
Мнения: 14
Регистриран: 15 апр 2017, 15:36

Re: OciXCrom's Custom VIP Extras

Мнение от aBorisoff » 26 апр 2017, 17:01

Сега не може да се избират оръжия... смисъл не ги дава :d

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5253
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

Re: OciXCrom's Custom VIP Extras

Мнение от OciXCrom TM » 26 апр 2017, 17:13

Има ли някакви грешки в конзолата на сървъра? Не мога да тествам, тъй като нямам изтеглено сървър с rehlds.

Потребителски аватар

aBorisoff
Потребител
Потребител
Мнения: 14
Регистриран: 15 апр 2017, 15:36

Re: OciXCrom's Custom VIP Extras

Мнение от aBorisoff » 26 апр 2017, 17:16

(native "rg_remove_items_by_slot") - debug not enabled!

дори и при пуснат debug е същото :D

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5253
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

Re: OciXCrom's Custom VIP Extras

Мнение от OciXCrom TM » 26 апр 2017, 17:20

При пуснат debug трябва да покаже какъв е проблемът. Сега видях обаче, че е имало функция, която автоматично замества оръжието в слота, тъй че опитай пак:

Код: Избери всички

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <reapi>

#define PLUGIN_NAME "VIP Extras"
#define PLUGIN_VERSION "2.2b"
#define PLUGIN_AUTHOR "OciXCrom"

#define MODELS_PATH "models/player"
#define SOUND_MENU "items/gunpickup2.wav"

new flag_vip, flag_skin, wait, maxhealth, maxmoney, menu_enabled, menu_maxuses, menu_spawn
new get_health, get_armor, health_amount, armor_amount, get_deagle, he_amount, flash_amount, smoke_amount, get_transparency, transparency_amount
new get_m4a1, get_ak47, get_awp, get_g3sg1, get_sg550, menu_m4a1, menu_ak47, menu_awp, menu_g3sg1, menu_sg550
new menu_health, menu_armor, menu_deagle, menu_transparency, menu_speed, menu_gravity, menu_moredamage
new get_skin_t, get_skin_ct, skin_name_t, skin_name_ct, get_speed, speed_amount, get_gravity, gravity_amount, get_moredamage, moredamage_multiplier
new killbonus_health_normal, killbonus_health_headshot, killbonus_money_normal, killbonus_money_headshot
new skin_t[32], skin_ct[32], menu_uses[33]
new bool:user_moredamage[33]

new bool:skin_t_active
new bool:skin_ct_active

new const szPrefix[] = "^4[^3VIP Extras^4]"

enum Color
{
    NORMAL = 1, // clients scr_concolor cvar color
    GREEN, // Green Color
    TEAM_COLOR, // Red, grey, blue
    GREY, // grey
    RED, // Red
    BLUE, // Blue
}

new TeamNames[][] = 
{
    "",
    "TERRORIST",
    "CT",
    "SPECTATOR"
}

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar("CustomVIPExtras", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
    RegisterHam(Ham_TakeDamage, "player", "player_damage")
    register_event("DeathMsg", "player_killed", "a")
    register_event("CurWeapon", "change_weapon", "be", "1=1")
    
    register_clcmd("say /vm", "vip_menu")
    register_clcmd("say_team /vm", "vip_menu")
    register_clcmd("say /vipmenu", "vip_menu")
    register_clcmd("say_team /vipmenu", "vip_menu")
    
    wait = register_cvar("ve_wait", "0.5")
    flag_vip = register_cvar("ve_vipflag", "o")
    flag_skin = register_cvar("ve_skinflag", "b")
    menu_enabled = register_cvar("ve_menu_enabled", "0")
    menu_maxuses = register_cvar("ve_menu_maxuses", "1")
    menu_spawn = register_cvar("ve_menu_spawn", "1")
    
    get_health = register_cvar("ve_get_health", "1")
    get_armor = register_cvar("ve_get_armor", "1")
    get_deagle = register_cvar("ve_get_deagle", "1")
    get_transparency = register_cvar("ve_get_transparency", "0")
    get_speed = register_cvar("ve_get_speed", "0")
    get_gravity = register_cvar("ve_get_gravity", "0")
    get_m4a1 = register_cvar("ve_get_m4a1", "0")
    get_ak47 = register_cvar("ve_get_ak47", "0")
    get_awp = register_cvar("ve_get_awp", "0")
    get_g3sg1 = register_cvar("ve_get_g3sg1", "0")
    get_sg550 = register_cvar("ve_get_sg550", "0")
    get_moredamage = register_cvar("ve_get_moredamage", "0")
    
    menu_health = register_cvar("ve_menu_health", "1")
    menu_armor = register_cvar("ve_menu_armor", "1")
    menu_deagle = register_cvar("ve_menu_deagle", "1")
    menu_transparency = register_cvar("ve_menu_transparency", "1")
    menu_speed = register_cvar("ve_menu_speed", "1")
    menu_gravity = register_cvar("ve_menu_gravity", "1")
    menu_m4a1 = register_cvar("ve_menu_m4a1", "1")
    menu_ak47 = register_cvar("ve_menu_ak47", "1")
    menu_awp = register_cvar("ve_menu_awp", "1")
    menu_g3sg1 = register_cvar("ve_menu_g3sg1", "1")
    menu_sg550 = register_cvar("ve_menu_sg550", "1")
    menu_moredamage = register_cvar("ve_menu_moredamage", "1")
    
    health_amount = register_cvar("ve_health_amount", "150")
    armor_amount = register_cvar("ve_armor_amount", "100")
    he_amount = register_cvar("ve_he_amount", "1")
    flash_amount = register_cvar("ve_flash_amount", "2")
    smoke_amount = register_cvar("ve_smoke_amount", "1")
    transparency_amount = register_cvar("ve_transparency_amount", "75")
    speed_amount = register_cvar("ve_speed_amount", "300.0")
    gravity_amount = register_cvar("ve_gravity_amount", "0.5")
    moredamage_multiplier = register_cvar("ve_moredamage_multiplier", "2")
    
    killbonus_health_normal = register_cvar("ve_killbonus_health_normal", "5")
    killbonus_health_headshot = register_cvar("ve_killbonus_health_headshot", "10")
    killbonus_money_normal = register_cvar("ve_killbonus_money_normal", "300")
    killbonus_money_headshot = register_cvar("ve_killbonus_money_headshot", "500")
    maxhealth = register_cvar("ve_max_health", "200")
    maxmoney = register_cvar("ve_max_money", "16000")
}

public change_weapon(id)
    if(user_has_flag(id, flag_vip) && get_pcvar_num(get_speed) == 1) set_user_maxspeed(id, get_pcvar_float(speed_amount))

public player_spawn(id)
{
    if(is_user_alive(id))
    {
        menu_uses[id] = 0
        user_moredamage[id] = false
        cs_reset_user_model(id)
        set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
        
        if(get_pcvar_num(menu_enabled) > 0 && get_pcvar_num(menu_spawn) == 1)
            vip_menu(id)
    }
    
    set_task(get_pcvar_float(wait), "vip_set", id)
}

public vip_set(id)
{
    if(!is_user_alive(id))
        return
    
    if(user_has_flag(id, flag_skin))
    {
        switch(get_user_team(id))
        {
            case 1: if(skin_t_active) cs_set_user_model(id, skin_t)
            case 2: if(skin_ct_active) cs_set_user_model(id, skin_ct)
        }
    }
    
    if(get_pcvar_num(menu_enabled) == 1)
        return
    
    if(user_has_flag(id, flag_vip))
    {
        if(get_pcvar_num(get_health) == 1)
            vip_equip(id, 0)
            
        if(get_pcvar_num(get_armor) == 1)
            vip_equip(id, 1)
        
        if(get_pcvar_num(get_deagle) == 1)
            vip_equip(id, 2)
            
        new he = get_pcvar_num(he_amount)
        new flash = get_pcvar_num(flash_amount)
        new smoke = get_pcvar_num(smoke_amount)
        
        if(he > 0)
            vip_equip(id, 3)
            
        if(flash > 0)
            vip_equip(id, 4)
        
        if(smoke > 0)
            vip_equip(id, 5)
        
        if(get_pcvar_num(get_transparency) == 1)
            vip_equip(id, 6)
        
        if(get_pcvar_num(get_speed) == 1)
            vip_equip(id, 7)
            
        if(get_pcvar_num(get_gravity) == 1)
            vip_equip(id, 8)
        
        if(get_pcvar_num(get_m4a1) == 1)
            vip_equip(id, 9)
        
        if(get_pcvar_num(get_ak47) == 1)
            vip_equip(id, 10)
            
        if(get_pcvar_num(get_awp) == 1)
            vip_equip(id, 11)
            
        if(get_pcvar_num(get_g3sg1) == 1)
            vip_equip(id, 12)
        
        if(get_pcvar_num(get_sg550) == 1)
            vip_equip(id, 13)
        
        if(get_pcvar_num(get_moredamage) == 1)
            vip_equip(id, 14)
    }
}

public vip_equip(id, item)
{
    switch(item)
    {
        case 0: set_user_health(id, get_pcvar_num(health_amount))
        case 1: set_user_armor(id, get_pcvar_num(armor_amount))
        case 2:
        {
            rg_give_item(id, "weapon_deagle", GT_REPLACE)
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
        }
        case 3:
        {
            rg_give_item(id, "weapon_hegrenade")
            cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(he_amount))
        }
        case 4:
        {
            rg_give_item(id, "weapon_flashbang")
            cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(flash_amount))
        }
        case 5:
        {
            rg_give_item(id, "weapon_smokegrenade")
            cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(smoke_amount))
        }
        case 6: set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num(transparency_amount))
        case 7: set_user_maxspeed(id, get_pcvar_float(speed_amount))
        case 8: set_user_gravity(id, get_pcvar_float(gravity_amount))
        case 9:
        {
            rg_give_item(id, "weapon_m4a1", GT_REPLACE)
            cs_set_user_bpammo(id, CSW_M4A1, 90)
        }
        case 10:
        {
            rg_give_item(id, "weapon_ak47", GT_REPLACE)
            cs_set_user_bpammo(id, CSW_AK47, 90)
        }
        case 11:
        {
            rg_give_item(id, "weapon_awp", GT_REPLACE)
            cs_set_user_bpammo(id, CSW_AWP, 30)
        }
        case 12:
        {
            rg_give_item(id, "weapon_g3sg1", GT_REPLACE)
            cs_set_user_bpammo(id, CSW_G3SG1, 90)
        }
        case 13:
        {
            rg_give_item(id, "weapon_sg550", GT_REPLACE)
            cs_set_user_bpammo(id, CSW_SG550, 90)
        }
        case 14:
            user_moredamage[id] = true
    }
}

public vip_menu(id)
{
    if(get_pcvar_num(menu_enabled) == 0)
    {
        ColorChat(id, TEAM_COLOR, "%s ^1The ^4VIP Menu ^1is currently ^3disabled^1.", szPrefix)
        return PLUGIN_HANDLED
    }
    
    if(!user_has_flag(id, flag_vip))
    {
        ColorChat(id, TEAM_COLOR, "%s ^1You have ^3no access ^1to this command.", szPrefix)
        return PLUGIN_HANDLED
    }
    
    if(!is_user_alive(id))
    {
        ColorChat(id, TEAM_COLOR, "%s ^1You need to be ^3alive^1!", szPrefix)
        return PLUGIN_HANDLED
    }
    
    if(menu_uses[id] == get_pcvar_num(menu_maxuses))
    {
        ColorChat(id, TEAM_COLOR, "%s ^1You can use the menu only ^4%i ^1time(s).", szPrefix, get_pcvar_num(menu_maxuses))
        return PLUGIN_HANDLED
    }
    
    new title[100], item[50]
    formatex(title, charsmax(title), "\yOciXCrom's \rCustom VIP Extras\d")
    
    new vipmenu = menu_create(title, "vipmenu_handler")
    
    if(get_pcvar_num(menu_health) == 1)
    {
        formatex(item, charsmax(item), "Health Points \y(+%i)", get_pcvar_num(health_amount))
        menu_additem(vipmenu, item, "0", 0)
    }
    
    if(get_pcvar_num(menu_armor) == 1)
    {
        formatex(item, charsmax(item), "Armor Points \y(+%i)", get_pcvar_num(armor_amount))
        menu_additem(vipmenu, item, "1", 0)
    }
    
    if(get_pcvar_num(menu_deagle) == 1)
    {
        formatex(item, charsmax(item), "Deagle \y(Full Ammo)")
        menu_additem(vipmenu, item, "2", 0)
    }
    
    if(get_pcvar_num(he_amount) > 0)
    {
        formatex(item, charsmax(item), "He Grenade \y(%ix)", get_pcvar_num(he_amount))
        menu_additem(vipmenu, item, "3", 0)
    }
    
    if(get_pcvar_num(flash_amount) > 0)
    {
        formatex(item, charsmax(item), "Flash Grenade \y(%ix)", get_pcvar_num(flash_amount))
        menu_additem(vipmenu, item, "4", 0)
    }
    
    if(get_pcvar_num(smoke_amount) > 0)
    {
        formatex(item, charsmax(item), "Smoke Grenade \y(%ix)", get_pcvar_num(smoke_amount))
        menu_additem(vipmenu, item, "5", 0)
    }
    
    if(get_pcvar_num(menu_transparency) == 1)
    {
        formatex(item, charsmax(item), "Transparency \y(%i%)", get_pcvar_num(transparency_amount))
        menu_additem(vipmenu, item, "6", 0)
    }
    
    if(get_pcvar_num(menu_speed) == 1)
    {
        formatex(item, charsmax(item), "Faster Speed \y(%i)", get_pcvar_num(speed_amount))
        menu_additem(vipmenu, item, "7", 0)
    }
    
    if(get_pcvar_num(menu_gravity) == 1)
    {
        formatex(item, charsmax(item), "Low Gravity \y(%f)", get_pcvar_float(gravity_amount))
        menu_additem(vipmenu, item, "8", 0)
    }
    
    if(get_pcvar_num(menu_m4a1) == 1)
    {
        formatex(item, charsmax(item), "M4A1 \y(Full Ammo)")
        menu_additem(vipmenu, item, "9", 0)
    }
    
    if(get_pcvar_num(menu_ak47) == 1)
    {
        formatex(item, charsmax(item), "AK47 \y(Full Ammo)")
        menu_additem(vipmenu, item, "10", 0)
    }
    
    if(get_pcvar_num(menu_awp) == 1)
    {
        formatex(item, charsmax(item), "AWP \y(Sniper)")
        menu_additem(vipmenu, item, "11", 0)
    }
    
    if(get_pcvar_num(menu_g3sg1) == 1)
    {
        formatex(item, charsmax(item), "G3SG1 \y(Automatic Sniper)")
        menu_additem(vipmenu, item, "12", 0)
    }
    
    if(get_pcvar_num(menu_sg550) == 1)
    {
        formatex(item, charsmax(item), "SG550 \y(Automatic Sniper)")
        menu_additem(vipmenu, item, "13", 0)
    }
    
    if(get_pcvar_num(menu_moredamage) == 1)
    {
        formatex(item, charsmax(item), "More Damage \y(%ix)", get_pcvar_num(moredamage_multiplier))
        menu_additem(vipmenu, item, "14", 0)
    }
    
    menu_setprop(vipmenu, MPROP_EXITNAME, "\rClose the Menu")
    menu_setprop(vipmenu, MPROP_BACKNAME, "\rGo to the \yPrevious \rPage")
    menu_setprop(vipmenu, MPROP_NEXTNAME, "\rGo to the \yNext \rPage")
    menu_setprop(vipmenu, MPROP_EXIT, MEXIT_ALL)
    
    menu_display(id, vipmenu, 0)
    return PLUGIN_HANDLED
}

public vipmenu_handler(id, vipmenu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(vipmenu)
        return PLUGIN_HANDLED
    }
    
    new data[6], iName[64], access, callback
    menu_item_getinfo(vipmenu, item, access, data, charsmax(data), iName, charsmax(iName), callback)

    new key = str_to_num(data)
    vip_equip(id, key)
    menu_uses[id]++
    
    ColorChat(id, TEAM_COLOR, "%s ^1You have successfully used the ^3VIP Menu^1 (^4%i^1/^4%i^1)", szPrefix, menu_uses[id], get_pcvar_num(menu_maxuses))
    emit_sound(id, CHAN_ITEM, SOUND_MENU, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    
    menu_destroy(vipmenu)
    return PLUGIN_HANDLED
}

public player_killed()
{
    new attacker = read_data(1)
    new victim = read_data(2)
    
    if(!is_user_connected(attacker) || !is_user_connected(victim) || attacker == victim || !user_has_flag(attacker, flag_vip))
        return
    
    new headshot = read_data(3)
    
    new health = get_user_health(attacker)
    new money = cs_get_user_money(attacker)
    
    new reward_health = headshot ? get_pcvar_num(killbonus_health_headshot) : get_pcvar_num(killbonus_health_normal)
    new reward_money = headshot ? get_pcvar_num(killbonus_money_headshot) : get_pcvar_num(killbonus_money_normal)
    
    new health_max = get_pcvar_num(maxhealth)
    new money_max = get_pcvar_num(maxmoney)
    
    set_user_health(attacker, health + reward_health)
    cs_set_user_money(attacker, money + reward_money)
    
    if(get_user_health(attacker) > health_max) set_user_health(attacker, health_max)
    if(cs_get_user_money(attacker) > money_max) cs_set_user_money(attacker, money_max)
}

public player_damage(victim, inflictor, attacker, Float:damage, damage_bits)
{
    if(is_user_connected(attacker))
        if(user_moredamage[attacker] && attacker != victim)
            SetHamParamFloat(4, damage * get_pcvar_float(moredamage_multiplier))
}

public plugin_precache()
{
    get_skin_t = register_cvar("ve_get_skin_t", "0")
    get_skin_ct = register_cvar("ve_get_skin_ct", "0")
    
    skin_name_t = register_cvar("ve_skin_name_t", "vip")
    skin_name_ct = register_cvar("ve_skin_name_ct", "smith")

    skin_t_active = (get_pcvar_num(get_skin_t) == 1) ? true : false
    skin_ct_active = (get_pcvar_num(get_skin_ct) == 1) ? true : false
    
    if(skin_t_active)
    {
        new skin1[50]
        get_pcvar_string(skin_name_t, skin_t, charsmax(skin_t))
        formatex(skin1, charsmax(skin1), "%s/%s/%s.mdl", MODELS_PATH, skin_t, skin_t)
        precache_model(skin1)
    }
    
    if(skin_ct_active)
    {
        new skin2[50]
        get_pcvar_string(skin_name_ct, skin_ct, charsmax(skin_ct))
        formatex(skin2, charsmax(skin2), "%s/%s/%s.mdl", MODELS_PATH, skin_ct, skin_ct)
        precache_model(skin2)
    }
    
    precache_sound(SOUND_MENU)
}

stock user_has_flag(id, cvar)
{
    new flags[32]
    get_flags(get_user_flags(id), flags, charsmax(flags))
    
    new vip_flag[2]
    get_pcvar_string(cvar, vip_flag, charsmax(vip_flag))
    
    return (contain(flags, vip_flag) != -1) ? true : false
}

/* ======================================================================================================= */
/* ColorChat */
/* ======================================================================================================= */
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
    if( !get_playersnum() ) return;
    
    new message[256];

    switch(type)
    {
        case NORMAL: // clients scr_concolor cvar color
        {
            message[0] = 0x01;
        }
        case GREEN: // Green
        {
            message[0] = 0x04;
        }
        default: // White, Red, Blue
        {
            message[0] = 0x03;
        }
    }

    vformat(message[1], 251, msg, 4);

    replace_all(message, 191, "!n", "^x01")
    replace_all(message, 191, "!t", "^x03")
    replace_all(message, 191, "!g", "^x04")
    
    // Make sure message is not longer than 192 character. Will crash the server.
    message[192] = '^0';

    new team, ColorChange, index, MSG_Type;
    
    if(id)
    {
        MSG_Type = MSG_ONE;
        index = id;
    } else {
        index = FindPlayer();
        MSG_Type = MSG_ALL;
    }
    
    team = get_user_team(index);
    ColorChange = ColorSelection(index, MSG_Type, type);

    ShowColorMessage(index, MSG_Type, message);
        
    if(ColorChange)
    {
        Team_Info(index, MSG_Type, TeamNames[team]);
    }
}

ShowColorMessage(id, type, message[])
{
    static bool:saytext_used;
    static get_user_msgid_saytext;
    if(!saytext_used)
    {
        get_user_msgid_saytext = get_user_msgid("SayText");
        saytext_used = true;
    }
    message_begin(type, get_user_msgid_saytext, _, id);
    write_byte(id)        
    write_string(message);
    message_end();    
}

Team_Info(id, type, team[])
{
    static bool:teaminfo_used;
    static get_user_msgid_teaminfo;
    if(!teaminfo_used)
    {
        get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
        teaminfo_used = true;
    }
    message_begin(type, get_user_msgid_teaminfo, _, id);
    write_byte(id);
    write_string(team);
    message_end();

    return 1;
}

ColorSelection(index, type, Color:Type)
{
    switch(Type)
    {
        case RED:
        {
            return Team_Info(index, type, TeamNames[1]);
        }
        case BLUE:
        {
            return Team_Info(index, type, TeamNames[2]);
        }
        case GREY:
        {
            return Team_Info(index, type, TeamNames[0]);
        }
    }

    return 0;
}

FindPlayer()
{
    new i = -1;

    while(i <= get_maxplayers())
    {
        if(is_user_connected(++i))
            return i;
    }

    return -1;
} 
Ако не стане, покажи цялата грешка с активиран debug.

Потребителски аватар

aBorisoff
Потребител
Потребител
Мнения: 14
Регистриран: 15 апр 2017, 15:36

Re: OciXCrom's Custom VIP Extras

Мнение от aBorisoff » 26 апр 2017, 17:44

Вече работи, благодаря!

Потребителски аватар

camarossblack
Потребител
Потребител
Мнения: 6
Регистриран: 13 юли 2017, 22:30

Re: OciXCrom's Custom VIP Extras

Мнение от camarossblack » 17 юли 2017, 02:15

Здравейте,

Имам въпрос относно този плъгин. Някой пробвал ли го е. Има ли въпросния проблем, както при мен. Плъгина си работи идеално, но когато тръгна да сменям моделите на ВИП играчите (слагам нови скинове), както трябва и сменя мапа и сървъра крашва ? Постоянно преглеждам да не допускам аз грешки, но няма. Пробвал съм с доста скинове и с нито един не стана, всеки път крашва.

Отговори

Върни се в “Неодобрени/стари плъгини”

Кой е на линия

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