Русское сообщество по скриптингу

Не работает VIPMENU

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Не работает VIPMENU

Сообщение BESPERSPEKTIBN9AK » 22 янв 2023, 17:13

Логов с ошибками нету.. Не знаю почему не работает

Код: Выделить всё
#include AmxModx
#include FakeMeta
#include HamSandWich
#include Cstrike

#define AUTHOR "Exe4nik"
#define VERSION "1.0"
#define PLUGIN "VipMenu Public"

#define MinRoundToOpenMenu        2
#define VipFlagGold    "t"
#define AWP_LIMIT    10    

enum _:eVipType    {    Null 0,    ViP,    ViPGold    };
enum _:eGoldList{    Knife 0,    Deagle,    AwpScoutAk47,    M4A1    };

#define Damage_Awp        1.1
#define Damage_Ak4        1.2
#define Damage_M4A1        1.2
#define Damage_Deagle    2.0
#define Damage_Scout    1.2

#define DROP_TYPE    2    // 1 - обычный дроп. 2 - удаляется из рук вообще

new szGoldV[eGoldList][32] = 
{
    
"models/v_knife.mdl",
    
"models/v_deagle.mdl",
    
"models/weaponsVIP/v_awp.mdl",
    
"models/weaponsVIP/v_ak47.mdl",
    
"models/weaponsVIP/v_scout.mdl",
    
"models/weaponsVIP/v_m4a1.mdl"
};

new 
szGoldP[eGoldList][32] = 
{
    
"models/p_knife.mdl",
    
"models/p_deagle.mdl",
    
"models/p_awp.mdl",
    
"models/p_ak47.mdl",
    
"models/p_scout.mdl",
    
"models/p_m4a1.mdl"
};

new 
szGoldW[eGoldList][32] = 
{
    
"",
    
"models/w_deagle.mdl",
    
"models/w_awp.mdl",
    
"models/w_ak47.mdl",
    
"models/w_scout.mdl",
    
"models/w_m4a1.mdl"
};

enum _:eKeyGold{
    
_Deagle 36895,
    
_Awp,
    
_Scout,
    
_Ak47,
    
_M4A1
};

new 
iRoundNumiVipFlag[33];

public 
plugin_precache()
{
    for(new 
0sizeof(szGoldV); i++)    if (szGoldV[i][0])    precache_model(szGoldV[i]);
    for(new 
0sizeof(szGoldP); i++)    if (szGoldP[i][0])    precache_model(szGoldP[i]);
    for(new 
0sizeof(szGoldW); i++)    if (szGoldW[i][0])    precache_model(szGoldW[i]);
}

public 
plugin_init()
{
    
register_plugin("AUTHOR""VERSION""PLUGIN");
    
register_menucmd(register_menuid("Show_VipMenu"), 1023"Handle_VipMenu");
    
register_clcmd("say /vipmenu""Show_VipMenu");
    
RegisterHam(Ham_Item_Deploy,    "weapon_knife",    "HamHook_Knife_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_ak47",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_awp",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_m4a1",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_scout",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_deagle","HamHook_Item_Deploy",    true);
    
    
RegisterHam(Ham_Touch,    "weapon_ak47",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_m4a1",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_scout",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_awp",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_deagle","HamHook_Item_AttachToPlayer",    false);
    
    
RegisterHam(Ham_TraceAttack,    "func_breakable",    "HamHook_Entity_TraceAttack",     false);
    
RegisterHam(Ham_TraceAttack,    "hostage_entity",    "HamHook_Entity_TraceAttack",     false);
    
RegisterHam(Ham_TraceAttack,    "info_target",         "HamHook_Entity_TraceAttack",    false);
    
RegisterHam(Ham_TraceAttack,    "player",             "HamHook_Entity_TraceAttack",    false);
    
    
register_event("TextMsg",    "Event_RoundRestart",    "a",    "2&#Game_C",    "2&#Game_w");
    
register_event("HLTV",        "Event_RoundStart",        "a",    "1=0",            "2=0");
    
    
register_forward(FM_SetModel"Fakemeta_SetModel")
}

public 
Show_VipMenu(id)
{
    if (!
is_user_alive(id) || iVipFlag[id] <= Null)
        return 
PLUGIN_HANDLED;
    
    if (
iRoundNum MinRoundToOpenMenu)
    {
        
UtilChatColor(id"!g[!yViP!g] !yМеню не доступно. Жди ещё !team%i !yраунд"MinRoundToOpenMenu iRoundNum);
        return 
PLUGIN_HANDLED;
    }
    
    static 
szMenu[512], iLen;
    
iLen formatex(szMenucharsmax(szMenu), "\r[\wMA\r] VIP меню^n^n");
    
    if (
iVipFlag[id] == ViPGold)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w1\r] \dВзять AK47^n");
        
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w2\r] \dВзять Scout^n");

        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w3\r] \dВзять M4A1^n");

        if(
iRoundNum AWP_LIMIT)
            
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w4\r] \dВзять AWP \r[c %d раунда]^n"AWP_LIMIT);
        else
            
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w4\r] \wВзять AWP^n");
    }
    
    
formatex(szMenu[iLen], charsmax(szMenu) - iLen"^n\r[\w0\r] \wВыход");
    
set_pdata_int(id2050);
    
    
show_menu(id1023szMenu, -1"Vip Menu");
    
    return 
PLUGIN_HANDLED;
}

public 
Handle_VipMenu(idiKey)
{
    if (!
is_user_alive(id))
        return 
PLUGIN_HANDLED;
    
    new 
iNewKey iKey 1;
    
    static 
szWeaponName[][] = {    """Gold AK""Gold Scout""Gold M4""Gold AWP"    };
    static 
szChoosedWP[][] = {    """weapon_ak47""weapon_scout""weapon_m4a1""weapon_awp"    };
    static 
szChoosedBP[] = {    090909030    };
    static 
iGoldKey[] = {    0_Ak47_Scout_M4A1_Awp    };
    static 
iRoundLimit[] = {    0AWP_LIMIT    };
    
    switch (
iNewKey)
    {
        case 
1..3:    give_item_ex2(idszChoosedWP[iNewKey], szChoosedBP[iNewKey], true);
        case 
4..6:
        {
            
            if (
iRoundNum iRoundLimit[iNewKey 3])
            {
                
UtilChatColor(id"!g[!yViP!g] !yДоступно только с !g%i !yраунда"iRoundLimit[iNewKey 3]);
                return 
PLUGIN_HANDLED;                
            }
            else
            {
                
give_item_ex2(idszChoosedWP[iNewKey 3], szChoosedBP[iNewKey 3], trueiGoldKey[iNewKey 3]);
            }
        }
        default:    return 
PLUGIN_HANDLED;
    }
    
    
UtilChatColor(id"!g[!yViP!g] !yВы получили: !g[!team%s!g]"szWeaponName[iNewKey]);
    
    return 
PLUGIN_HANDLED;
}

public 
HamHook_Item_Deploy(const iItem)
{
    if (
pev_valid(iItem) != 2)
        return 
HAM_IGNORED;

    new 
iIndex 0;
    switch(
pev(iItempev_impulse))
    {
        case 
_Ak47:    iIndex Ak47;
        case 
_Awp:    iIndex Awp;
        case 
_M4A1:    iIndex M4A1;
        case 
_ScoutiIndex Scout;
        case 
_Deagle:    iIndex Deagle;
        default: return 
HAM_IGNORED;
    }
    if (
iIndex)
    {
        new 
iPlayer get_pdata_cbase(iItem414);
        
set_pev(iPlayerpev_viewmodel2szGoldViIndex ]);
        
set_pev(iPlayerpev_weaponmodel2szGoldPiIndex ]);
    }
    
    return 
HAM_IGNORED;
}

public 
HamHook_Entity_TraceAttack(const iEntity, const iAttackerFloat:flDamage)
{
    if (!
is_user_alive(iAttacker) || !pev_valid(iEntity))
        return 
HAM_IGNORED;
    
    new 
iItem get_pdata_cbase(iAttacker3735);
    
    if (!
pev_valid(iItem))    return HAM_IGNORED;
    
    new 
Float:iIndex;
    
    switch(
pev(iItempev_impulse))
    {
        case 
_Ak47:    iIndex Damage_Ak4;
        case 
_Awp:    iIndex Damage_Awp;
        case 
_M4A1:    iIndex Damage_M4A1;
        case 
_Scout:    iIndex Damage_Scout;
        case 
_Deagle:    iIndex Damage_Deagle;
        default: return 
HAM_IGNORED;
    }
    
    if (
iIndex)    SetHamParamFloat(3flDamage iIndex);
    
    return 
HAM_IGNORED;
}

public 
HamHook_Player_Spawn(const iPlayer)
{
    if (!
is_user_alive(iPlayer) || is_user_bot(iPlayer))
        return 
HAM_IGNORED;
    
    if (
iVipFlag[iPlayer] <= Null)
        return 
HAM_IGNORED;
    
    
give_item_ex2(iPlayer"weapon_hegrenade"1);
    
give_item_ex2(iPlayer"weapon_flashbang"2);
    
give_item_ex2(iPlayer"weapon_smokegrenade"1);
    
    if (!
user_has_weapon(iPlayerCSW_DEAGLE))
    {
        
give_item_ex2(iPlayer"weapon_deagle"35true, (iVipFlag[iPlayer] == ViPGold) ? _Deagle Null);
    }
    
    
cs_set_user_armor(iPlayer100CS_ARMOR_VESTHELM);
    
    return 
HAM_IGNORED;
}

public 
HamHook_Item_AttachToPlayer(const iItem, const iPlayer)
{
    if (!
pev_valid(iItem))
        return 
HAM_IGNORED;
    
    switch(
pev(iItempev_impulse))
    {
        case 
_Deagle.._M4A1:
        {
            if (
iVipFlag[iPlayer] != ViPGold)
                return 
HAM_SUPERCEDE;
        }
        default: return 
HAM_IGNORED;
    }
    
    return 
HAM_IGNORED;
}

public 
Event_RoundRestart()    iRoundNum 0;
public 
Event_RoundStart()    iRoundNum++;

public 
Fakemeta_SetModel(const iEntityszModel[])
{
    if(!
pev_valid(iEntity))
        return 
FMRES_IGNORED;
    
    new 
szClassName[32];
    
pev(iEntitypev_classnameszClassNamecharsmax(szClassName));
    
    if (!
equali(szClassName"weaponbox"))
        return 
FMRES_IGNORED;
    
    for(new 
iSlotiWeaponiIndexiSlot 6iSlot++)
    {
        
iWeapon get_pdata_cbase(iEntity34 iSlot4);
        
        if (
pev_valid(iWeapon))
        {
            switch(
pev(iWeaponpev_impulse))
            {
                case 
_Ak47:    iIndex Ak47;
                case 
_Awp:    iIndex Awp;
                case 
_M4A1:    iIndex M4A1;
                case 
_Scout:    iIndex Scout;
                case 
_Deagle:    iIndex Deagle;
            }
            
            if (
iIndex)
            {
                
engfunc(EngFunc_SetModeliEntityszGoldW[iIndex]);
                return 
FMRES_SUPERCEDE;
            }
        }
    }
    
    return 
FMRES_IGNORED;
}

stock give_item_ex2(iPlayer, const szWeaponName[], iAmmo 0bool:bDrop falseiKey 0)
{
    if (!
equal(szWeaponName"weapon_"7))
        return 
false;
    
    new 
iWeapon engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringszWeaponName));
    
    if (!
pev_valid(iWeapon))
        return 
false;
    
    if (
bDrop)
    {
        new 
szWeapon32 ],
            
iSlot ExecuteHamB(Ham_Item_ItemSlotiWeapon),
            
iItem get_pdata_cbase(iPlayer367 iSlot5);
        
        while ((
pev_valid(iItem) == 2))
        {
            
pev(iItempev_classnameszWeaponcharsmax(szWeapon));
            
            switch(
DROP_TYPE)
            {
                case 
1:    engclient_cmd(iPlayer"drop"szWeapon);
                case 
2ham_strip_weapon(iPlayerszWeapon);
            }
            
            
iItem get_pdata_cbase(iItem424);
        }
    }
    
    
set_pev(iWeaponpev_spawnflagspev(iWeaponpev_spawnflags) | SF_NORESPAWN);
    
    if (
iKey 0)    set_pev(iWeaponpev_impulseiKey);
    if (
iAmmo 0)    cs_set_user_bpammo(iPlayerget_weaponid(szWeaponName), iAmmo);
    
    
dllfunc(DLLFunc_SpawniWeapon);
    
dllfunc(DLLFunc_TouchiWeaponiPlayer);
    
    return 
true;
}

stock GetUserFlags(const iPlayer)
{
    if (!
is_user_connected(iPlayer))
        return -
1;
    
    new 
iFlags get_user_flags(iPlayer);
    new 
iReturnBit;
    
    if (
iFlags read_flags(VipFlagGold))
    {
        
iVipFlag[iPlayer] = ViPGold;
        
iReturnBit ViPGold;
    }
    else if (
iFlags read_flags(VipFlagGold))
    {
        
iVipFlag[iPlayer] = ViP;
        
iReturnBit ViP;
    }
    else
    {
        
iVipFlag[iPlayer] = Null;
        
iReturnBit Null;
    }
    
    return 
iReturnBit;
}

public 
HamHook_Knife_Deploy(const iItem)
{
    if (
pev_valid(iItem) != 2)
        return 
HAM_IGNORED;
    
    new 
iPlayer get_pdata_cbase(iItem414);
    
    if(
iVipFlag[iPlayer] != ViPGold)
        return 
HAM_IGNORED;
    
    
set_pev(iPlayerpev_viewmodel2szGoldVKnife ]);
    
set_pev(iPlayerpev_weaponmodel2szGoldPKnife ]);
    
    return 
HAM_IGNORED;
}

stock ham_strip_weapon(idweapon[])
{
    if(!
equal(weapon,"weapon_",7)) return 0
    
    
new wId get_weaponid(weapon)
    if(!
wId) return 0
    
    
new wEnt
    
while((wEnt engfunc(EngFunc_FindEntityByStringwEnt"classname"weapon)) && pev(wEntpev_owner) != id) {}
    if(!
wEnt) return 0
    
    
new iTmp
    
if(get_user_weapon(idiTmpiTmp) == wIdExecuteHamB(Ham_Weapon_RetireWeaponwEnt)
    
    if(!
ExecuteHamB(Ham_RemovePlayerItemidany:wEnt)) return 0
    
    ExecuteHamB
(Ham_Item_KillwEnt)
    
set_pev(idpev_weaponspev(idpev_weapons) & ~(1<<wId))
    
    return 
1
}

stock UtilChatColor(const iPlayer, const szInput[], any:...)
{
    new 
iCount 1szPlayers[32];
    static 
szMessage[191];
    
    
vformat(szMessagecharsmax(szMessage), szInput3);
    
    
replace_all(szMessagecharsmax(szMessage), "!g""^4");    // Green Color
    
replace_all(szMessagecharsmax(szMessage), "!y""^1");    // Default Color
    
replace_all(szMessagecharsmax(szMessage), "!team""^3");    // Team Color
    
    
static g_SayText;
    if (!
g_SayText)    g_SayText get_user_msgid("SayText");
    
    if(
iPlayerszPlayers[0] = iPlayer; else get_players(szPlayersiCount"ch");
    {
        for(new 
0iCounti++)
        {
            if(!
is_user_connected(szPlayers[i]))    continue;
            
            
message_begin(MSG_ONE_UNRELIABLEg_SayText_szPlayers[i]);
            
write_byte(szPlayers[i]);
            
write_string(szMessage);
            
message_end();
        }
    }
Аватара пользователя
BESPERSPEKTIBN9AK
 
Сообщения: 28
Зарегистрирован: 19 окт 2020, 17:47
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: С++

Re: Не работает VIPMENU

Сообщение БиЗоН » 22 янв 2023, 18:13

Что значит не работает? Не открывается меню или что? Нужно конкретизировать проблемы, а не заставлять гадать о них других людей.
Как минимум, первое, что бросилось в глаза:

Регистрируется меню с названием-индексом Show_VipMenu
Код: Выделить всё
register_menucmd(register_menuid("Show_VipMenu"), 1023"Handle_VipMenu"); 

А используется название-индекс Vip Menu
Код: Выделить всё
show_menu(id1023szMenu, -1"Vip Menu"); 


Дальше смотреть не стал.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: Не работает VIPMENU

Сообщение [N][E][M][E][C] » 22 янв 2023, 19:16

Это переделкины))), вроде поменял и сам незнает что менял
Код: Выделить всё
#include AmxModx
#include FakeMeta
#include HamSandWich
#include Cstrike

#define AUTHOR "Exe4nik"
#define VERSION "1.0"
#define PLUGIN "VipMenu Public"

#define MinRoundToOpenMenu        2
#define VipFlagGold    "t"
#define AWP_LIMIT    10

enum _:eVipType    {    Null 0,    ViP,    ViPGold    };
enum _:eGoldList{    Knife 0,    Deagle,    AwpScoutAk47,    M4A1    };

#define Damage_Awp        1.1
#define Damage_Ak4        1.2
#define Damage_M4A1        1.2
#define Damage_Deagle    2.0
#define Damage_Scout    1.2

#define DROP_TYPE    2    // 1 - обычный дроп. 2 - удаляется из рук вообще

new szGoldV[eGoldList][32] = 
{
    
"models/v_knife.mdl",
    
"models/v_deagle.mdl",
    
"models/weaponsVIP/v_awp.mdl",
    
"models/weaponsVIP/v_ak47.mdl",
    
"models/weaponsVIP/v_scout.mdl",
    
"models/weaponsVIP/v_m4a1.mdl"
};

new 
szGoldP[eGoldList][32] = 
{
    
"models/p_knife.mdl",
    
"models/p_deagle.mdl",
    
"models/p_awp.mdl",
    
"models/p_ak47.mdl",
    
"models/p_scout.mdl",
    
"models/p_m4a1.mdl"
};

new 
szGoldW[eGoldList][32] =
{
    
"",
    
"models/w_deagle.mdl",
    
"models/w_awp.mdl",
    
"models/w_ak47.mdl",
    
"models/w_scout.mdl",
    
"models/w_m4a1.mdl"
};

enum _:eKeyGold{
    
_Deagle 36895,
    
_Awp,
    
_Scout,
    
_Ak47,
    
_M4A1
};

new 
iRoundNumiVipFlag[33];

public 
plugin_precache()
{
    for(new 
0sizeof(szGoldV); i++)    if (szGoldV[i][0])    precache_model(szGoldV[i]);
    for(new 
0sizeof(szGoldP); i++)    if (szGoldP[i][0])    precache_model(szGoldP[i]);
    for(new 
0sizeof(szGoldW); i++)    if (szGoldW[i][0])    precache_model(szGoldW[i]);
}

public 
plugin_init()
{
    
register_plugin("AUTHOR""VERSION""PLUGIN");
    
register_menucmd(register_menuid("Vip_Menu"), 1023"Handle_VipMenu");
    
register_clcmd("say /vipmenu""Show_VipMenu");
    
RegisterHam(Ham_Item_Deploy,    "weapon_knife",    "HamHook_Knife_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_ak47",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_awp",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_m4a1",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_scout",    "HamHook_Item_Deploy",    true);
    
RegisterHam(Ham_Item_Deploy,    "weapon_deagle","HamHook_Item_Deploy",    true);
    
    
RegisterHam(Ham_Touch,    "weapon_ak47",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_m4a1",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_scout",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_awp",    "HamHook_Item_AttachToPlayer",    false);
    
RegisterHam(Ham_Touch,    "weapon_deagle","HamHook_Item_AttachToPlayer",    false);
    
    
RegisterHam(Ham_TraceAttack,    "func_breakable",    "HamHook_Entity_TraceAttack",     false);
    
RegisterHam(Ham_TraceAttack,    "hostage_entity",    "HamHook_Entity_TraceAttack",     false);
    
RegisterHam(Ham_TraceAttack,    "info_target",         "HamHook_Entity_TraceAttack",    false);
    
RegisterHam(Ham_TraceAttack,    "player",             "HamHook_Entity_TraceAttack",    false);
    
    
register_event("TextMsg",    "Event_RoundRestart",    "a",    "2&#Game_C",    "2&#Game_w");
    
register_event("HLTV",        "Event_RoundStart",        "a",    "1=0",            "2=0");
    
    
register_forward(FM_SetModel"Fakemeta_SetModel")
}

public 
Show_VipMenu(id)
{
    if (!
is_user_alive(id) || iVipFlag[id] <= Null)
        return 
PLUGIN_HANDLED;

    if (
iRoundNum MinRoundToOpenMenu)
    {
        
UtilChatColor(id"!g[!yViP!g] !yМеню не доступно. Жди ещё !team%i !yраунд"MinRoundToOpenMenu iRoundNum);
        return 
PLUGIN_HANDLED;
    }

    static 
szMenu[512], iLen;
    
iLen formatex(szMenucharsmax(szMenu), "\r[\wMA\r] VIP меню^n^n");

    if (
iVipFlag[id] == ViPGold)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w1\r] \dВзять AK47^n");
        
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w2\r] \dВзять Scout^n");

        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w3\r] \dВзять M4A1^n");

        if(
iRoundNum AWP_LIMIT)
            
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w4\r] \dВзять AWP \r[c %d раунда]^n"AWP_LIMIT);
        else
            
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r[\w4\r] \wВзять AWP^n");
    }
    
    
formatex(szMenu[iLen], charsmax(szMenu) - iLen"^n\r[\w0\r] \wВыход");
    
set_pdata_int(id2050);

    
show_menu(id1023szMenu, -1"Vip_Menu");
    
    return 
PLUGIN_HANDLED;
}

public 
Handle_VipMenu(idiKey)
{
    if (!
is_user_alive(id))
        return 
PLUGIN_HANDLED;

    new 
iNewKey iKey 1;
    
    static 
szWeaponName[][] = {    """Gold AK""Gold Scout""Gold M4""Gold AWP"    };
    static 
szChoosedWP[][] = {    """weapon_ak47""weapon_scout""weapon_m4a1""weapon_awp"    };
    static 
szChoosedBP[] = {    090909030    };
    static 
iGoldKey[] = {    0_Ak47_Scout_M4A1_Awp    };
    static 
iRoundLimit[] = {    0AWP_LIMIT    };
    
    switch (
iNewKey)
    {
        case 
1..3:    give_item_ex2(idszChoosedWP[iNewKey], szChoosedBP[iNewKey], true);
        case 
4..6:
        {
            
            if (
iRoundNum iRoundLimit[iNewKey 3])
            {
                
UtilChatColor(id"!g[!yViP!g] !yДоступно только с !g%i !yраунда"iRoundLimit[iNewKey 3]);
                return 
PLUGIN_HANDLED;
            }
            else
            {
                
give_item_ex2(idszChoosedWP[iNewKey 3], szChoosedBP[iNewKey 3], trueiGoldKey[iNewKey 3]);
            }
        }
        default:    return 
PLUGIN_HANDLED;
    }

    
UtilChatColor(id"!g[!yViP!g] !yВы получили: !g[!team%s!g]"szWeaponName[iNewKey]);
    
    return 
PLUGIN_HANDLED;
}

public 
HamHook_Item_Deploy(const iItem)
{
    if (
pev_valid(iItem) != 2)
        return 
HAM_IGNORED;

    new 
iIndex 0;
    switch(
pev(iItempev_impulse))
    {
        case 
_Ak47:    iIndex Ak47;
        case 
_Awp:    iIndex Awp;
        case 
_M4A1:    iIndex M4A1;
        case 
_ScoutiIndex Scout;
        case 
_Deagle:    iIndex Deagle;
        default: return 
HAM_IGNORED;
    }
    if (
iIndex)
    {
        new 
iPlayer get_pdata_cbase(iItem414);
        
set_pev(iPlayerpev_viewmodel2szGoldViIndex ]);
        
set_pev(iPlayerpev_weaponmodel2szGoldPiIndex ]);
    }

    return 
HAM_IGNORED;
}

public 
HamHook_Entity_TraceAttack(const iEntity, const iAttackerFloat:flDamage)
{
    if (!
is_user_alive(iAttacker) || !pev_valid(iEntity))
        return 
HAM_IGNORED;
    
    new 
iItem get_pdata_cbase(iAttacker3735);
    
    if (!
pev_valid(iItem))    return HAM_IGNORED;

    new 
Float:iIndex;
    
    switch(
pev(iItempev_impulse))
    {
        case 
_Ak47:    iIndex Damage_Ak4;
        case 
_Awp:    iIndex Damage_Awp;
        case 
_M4A1:    iIndex Damage_M4A1;
        case 
_Scout:    iIndex Damage_Scout;
        case 
_Deagle:    iIndex Damage_Deagle;
        default: return 
HAM_IGNORED;
    }

    if (
iIndex)    SetHamParamFloat(3flDamage iIndex);
    
    return 
HAM_IGNORED;
}

public 
HamHook_Player_Spawn(const iPlayer)
{
    if (!
is_user_alive(iPlayer) || is_user_bot(iPlayer))
        return 
HAM_IGNORED;
    
    if (
iVipFlag[iPlayer] <= Null)
        return 
HAM_IGNORED;
    
    
give_item_ex2(iPlayer"weapon_hegrenade"1);
    
give_item_ex2(iPlayer"weapon_flashbang"2);
    
give_item_ex2(iPlayer"weapon_smokegrenade"1);
    
    if (!
user_has_weapon(iPlayerCSW_DEAGLE))
    {
        
give_item_ex2(iPlayer"weapon_deagle"35true, (iVipFlag[iPlayer] == ViPGold) ? _Deagle Null);
    }
    
    
cs_set_user_armor(iPlayer100CS_ARMOR_VESTHELM);

    return 
HAM_IGNORED;
}

public 
HamHook_Item_AttachToPlayer(const iItem, const iPlayer)
{
    if (!
pev_valid(iItem))
        return 
HAM_IGNORED;
    
    switch(
pev(iItempev_impulse))
    {
        case 
_Deagle.._M4A1:
        {
            if (
iVipFlag[iPlayer] != ViPGold)
                return 
HAM_SUPERCEDE;
        }
        default: return 
HAM_IGNORED;
    }

    return 
HAM_IGNORED;
}

public 
Event_RoundRestart()    iRoundNum 0;
public 
Event_RoundStart()    iRoundNum++;

public 
Fakemeta_SetModel(const iEntityszModel[])
{
    if(!
pev_valid(iEntity))
        return 
FMRES_IGNORED;
    
    new 
szClassName[32];
    
pev(iEntitypev_classnameszClassNamecharsmax(szClassName));
    
    if (!
equali(szClassName"weaponbox"))
        return 
FMRES_IGNORED;
    
    for(new 
iSlotiWeaponiIndexiSlot 6iSlot++)
    {
        
iWeapon get_pdata_cbase(iEntity34 iSlot4);

        if (
pev_valid(iWeapon))
        {
            switch(
pev(iWeaponpev_impulse))
            {
                case 
_Ak47:    iIndex Ak47;
                case 
_Awp:    iIndex Awp;
                case 
_M4A1:    iIndex M4A1;
                case 
_Scout:    iIndex Scout;
                case 
_Deagle:    iIndex Deagle;
            }
            
            if (
iIndex)
            {
                
engfunc(EngFunc_SetModeliEntityszGoldW[iIndex]);
                return 
FMRES_SUPERCEDE;
            }
        }
    }
    
    return 
FMRES_IGNORED;
}

stock give_item_ex2(iPlayer, const szWeaponName[], iAmmo 0bool:bDrop falseiKey 0)
{
    if (!
equal(szWeaponName"weapon_"7))
        return 
false;

    new 
iWeapon engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringszWeaponName));
    
    if (!
pev_valid(iWeapon))
        return 
false;
    
    if (
bDrop)
    {
        new 
szWeapon32 ],
            
iSlot ExecuteHamB(Ham_Item_ItemSlotiWeapon),
            
iItem get_pdata_cbase(iPlayer367 iSlot5);
        
        while ((
pev_valid(iItem) == 2))
        {
            
pev(iItempev_classnameszWeaponcharsmax(szWeapon));

            switch(
DROP_TYPE)
            {
                case 
1:    engclient_cmd(iPlayer"drop"szWeapon);
                case 
2ham_strip_weapon(iPlayerszWeapon);
            }

            
iItem get_pdata_cbase(iItem424);
        }
    }
    
    
set_pev(iWeaponpev_spawnflagspev(iWeaponpev_spawnflags) | SF_NORESPAWN);

    if (
iKey 0)    set_pev(iWeaponpev_impulseiKey);
    if (
iAmmo 0)    cs_set_user_bpammo(iPlayerget_weaponid(szWeaponName), iAmmo);

    
dllfunc(DLLFunc_SpawniWeapon);
    
dllfunc(DLLFunc_TouchiWeaponiPlayer);

    return 
true;
}

stock GetUserFlags(const iPlayer)
{
    if (!
is_user_connected(iPlayer))
        return -
1;
    
    new 
iFlags get_user_flags(iPlayer);
    new 
iReturnBit;
    
    if (
iFlags read_flags(VipFlagGold))
    {
        
iVipFlag[iPlayer] = ViPGold;
        
iReturnBit ViPGold;
    }
    else if (
iFlags read_flags(VipFlagGold))
    {
        
iVipFlag[iPlayer] = ViP;
        
iReturnBit ViP;
    }
    else
    {
        
iVipFlag[iPlayer] = Null;
        
iReturnBit Null;
    }

    return 
iReturnBit;
}

public 
HamHook_Knife_Deploy(const iItem)
{
    if (
pev_valid(iItem) != 2)
        return 
HAM_IGNORED;
    
    new 
iPlayer get_pdata_cbase(iItem414);
    
    if(
iVipFlag[iPlayer] != ViPGold)
        return 
HAM_IGNORED;
    
    
set_pev(iPlayerpev_viewmodel2szGoldVKnife ]);
    
set_pev(iPlayerpev_weaponmodel2szGoldPKnife ]);
    
    return 
HAM_IGNORED;
}

stock ham_strip_weapon(idweapon[])
{
    if(!
equal(weapon,"weapon_",7)) return 0
    
    
new wId get_weaponid(weapon)
    if(!
wId) return 0
    
    
new wEnt
    
while((wEnt engfunc(EngFunc_FindEntityByStringwEnt"classname"weapon)) && pev(wEntpev_owner) != id) {}
    if(!
wEnt) return 0

    
new iTmp
    
if(get_user_weapon(idiTmpiTmp) == wIdExecuteHamB(Ham_Weapon_RetireWeaponwEnt)

    if(!
ExecuteHamB(Ham_RemovePlayerItemidany:wEnt)) return 0
    
    ExecuteHamB
(Ham_Item_KillwEnt)
    
set_pev(idpev_weaponspev(idpev_weapons) & ~(1<<wId))
    
    return 
1
}

stock UtilChatColor(const iPlayer, const szInput[], any:...)
{
    new 
iCount 1szPlayers[32];
    static 
szMessage[191];

    
vformat(szMessagecharsmax(szMessage), szInput3);

    
replace_all(szMessagecharsmax(szMessage), "!g""^4");    // Green Color
    
replace_all(szMessagecharsmax(szMessage), "!y""^1");    // Default Color
    
replace_all(szMessagecharsmax(szMessage), "!team""^3");    // Team Color

    
static g_SayText;
    if (!
g_SayText)    g_SayText get_user_msgid("SayText");
    
    if(
iPlayerszPlayers[0] = iPlayer; else get_players(szPlayersiCount"ch");
    {
        for(new 
0iCounti++)
        {
            if(!
is_user_connected(szPlayers[i]))    continue;
            
            
message_begin(MSG_ONE_UNRELIABLEg_SayText_szPlayers[i]);
            
write_byte(szPlayers[i]);
            
write_string(szMessage);
            
message_end();
        }
    }
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10