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

Исправить ошибки в плагинах

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

В данном разделе форума разрешено создавать темы только с поиском исполнителя или заказчика.

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

Исправить ошибки в плагинах

Сообщение erzhan2396 » 17 мар 2017, 19:24

здравствуйте, помогите с плагинами(предлагайте ваши цены за работу) вот ошибки
плагин VIP Custom
L 03/10/2017 - 22:16:43: [AMXX] Displaying debug trace (plugin "vip_custom.amxx")
L 03/10/2017 - 22:16:43: [AMXX] Run time error 10: native error (native "get_pdata_cbase")
L 03/10/2017 - 22:16:43: [AMXX] [0] vip_custom.sma::refill (line 903)
L 03/10/2017 - 22:16:43: [AMXX] [1] vip_custom.sma::GiveItem (line 596)

Код: Выделить всё
// Copyright © 2015 Vaqtincha

/************************ V.I.P Custom Weapons *************************
*
*    Last update:
*      05/12/2015
*    
*    Cmds:
*    weaponmenu or (say /vipmenu) - Free guns menu
*    
*    Credits:
*    - Safety1st - for plugin "Weapon Menu Hardcoded" (edited by me)
*    - Eg@r4$il - for plugin "Admins are VIPs + grenades + kevlar" (edited by me)
*    - ZETA [M|E|N] - for plugin "VSVipPrefix"
*    - xPaw - for code "ScoreBoard "VIP" string"
*    - ConnorMcLeod for plugin "Bullet Damage" and cstrike_pdatas
*    - Subb98 for plugin "No fall damage"
*    - MrBone - for pieces of advice
*    - Patriot~ua~ - for ideas and testing
*    - c-s.net.ua members
*
***********************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

#define PLUGIN_NAME "V.I.P Custom Weapons"
#define PLUGIN_VERSION "1.0.0"
#define PLUGIN_AUTHOR "Vaqtincha"

// macro; %1 - variable being modified, %2 - player id
#define CheckFlag(%1,%2)  (%1 &   (1 << (%2 & 31)))
#define SetFlag(%1,%2)    (%1 |=  (1 << (%2 & 31)))
#define ClearFlag(%1,%2)  (%1 &= ~(1 << (%2 & 31)))

#define SetFlagConnected(%1)    g_bConnected |= 1<<(%1 & 31)
#define ClearFlagConnected(%1)    g_bConnected &= ~( 1<<(%1 & 31))
#define UserConnected(%1)        (g_bConnected &  1<<(%1 & 31))

#define cs_get_user_hasprim(%1,%2) (get_pdata_cbase(%1, m_rgpPlayerItems_CBasePlayer[%2])>0)
#define fm_get_user_money(%1)         get_pdata_int(%1, m_iAccount, XO_PLAYER)
#define fm_get_weapon_id(%1)         get_pdata_int(%1, m_iId, XO_WEAPON)
#define fm_set_weapon_ammo(%1,%2)    set_pdata_int(%1, m_iClip, %2, XO_WEAPON)

#if AMXX_VERSION_NUM < 183
    #define HasShield(%1)    (get_pdata_int(%1, m_iUserPrefs, XO_PLAYER) & m_bHasShield)
#else
    #define HasShield(%1)    get_pdata_bool(%1, m_bHasShield)
#endif

#define MAX_PLAYERS 32
#define IsPlayer(%1)    ( 1 <= %1 <= g_iMaxPlayers )

#define ITEM_DEAGLE     (1<<0)
#define ITEM_HE         (1<<1)
#define ITEM_SMOKE     (1<<2)
#define ITEM_FLASH     (1<<3)
#define ITEM_AMMO     (1<<4)
#define ITEM_ARMOR     (1<<5)
#define ITEM_DEFUSER (1<<6)

new Trie:vipChannels
new g_iAlive
[MAX_PLAYERS+1]
new bool:g_bAccess[MAX_PLAYERS+1]
new g_iPlayerPos[MAX_PLAYERS+1]
new g_iPlayerCol[MAX_PLAYERS+1]
new gbIsUsed, giCounter, g_bConnected, g_iMaxPlayers, target_map

new g_iKNFPluginId
, g_iDGLPluginId, g_iM4A1PluginId, g_iAK47PluginId, g_iAWPPluginId
new g_iDGLGive
, g_iM4A1Give, g_iAK47Give, g_iAWPGive
new g_iKNFReload
, g_iDGLReload, g_iM4A1Reload, g_iAK47Reload, g_iAWPReload

new alw_round_eq
, alw_round_fm, alw_round_m4ak, alw_round_awp, alw_round_buy
new vampire
, vampire_max, hp_bonus, hp_bonus_hs, item_flags, delay, damager, droptype
new dmgcolors
[3], scrtag, prefix, info, remove_limit, openmenu, nofall, recieved
new dglcost
, m4cost, akcost, awpcost
static flagaccess
, buyaccess

    
// Offsets
new const m_rgpPlayerItems_CBasePlayer[6] = {367, 368, ...}
#if AMXX_VERSION_NUM < 183
    const m_bHasShield = 1<<24
    const m_iUserPrefs 
= 510
#else
    const m_bHasShield = 2043
#endif
const m_pNext = 42
const m_iClip 
= 51
const m_iId 
= 43
const XO_PLAYER 
= 5
const XO_WEAPON 
= 4
#if cellbits == 32
    const m_iAccount = 115
#else
    const m_iAccount = 140
#endif

const MENUKEYS = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
    
|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
const KEY_EXIT 
= 10

const PRIMARY_WEAPONS_BIT_SUM 
= 1<<CSW_SCOUT|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_AUG|1<<CSW_UMP45
    
|1<<CSW_SG550|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AWP|1<<CSW_MP5NAVY|1<<CSW_M249|1<<CSW_M3
    
|1<<CSW_M4A1|1<<CSW_TMP|1<<CSW_G3SG1|1<<CSW_SG552|1<<CSW_AK47|1<<CSW_P90

const SECONDARY_WEAPONS_BIT_SUM 
= 1<<CSW_P228|1<<CSW_ELITE|1<<CSW_FIVESEVEN|1<<CSW_USP|1<<CSW_GLOCK18|1<<CSW_DEAGLE

const NOCLIP_WPN_BS 
= ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) 

    
// Max BP ammo for weapons
new const MAXBPAMMO[31] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90,
    90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100
}
    // Max clip for weapons
new const MAXCLIP[CSW_P90+1] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30,
    35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50
}
    // Ammo Type Names for weapons
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato",
    "", "9mm", "57mm", "45acp", "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm",
    "556natobox","buckshot", "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" 
}

new const Float:g_flCoords[][] = { {0.50, 0.40},{0.56, 0.44},{0.60, 0.50},
    {0.56, 0.56},{0.50, 0.60},{0.44, 0.56},{0.40, 0.50},{0.44, 0.44}
}

new const g_iColors[][] = { {0, 127, 255},/*blue*/{255, 127, 0},/*orange*/
    {127, 0, 255},/*purple*/{0, 255, 0},/*green*/{255, 24, 119},/*pink*/
    {228, 228, 228},/*gray*/{165, 42, 42},/*brown*/{255, 255, 0}/*yellow*/
}

new channels[8][] = { 
    
"#Cstrike_Chat_CT","#Cstrike_Chat_T","#Cstrike_Chat_CT_Dead","#Cstrike_Chat_T_Dead",
    "#Cstrike_Chat_Spec","#Cstrike_Chat_All","#Cstrike_Chat_AllDead","#Cstrike_Chat_AllSpec"
}

new newChannels[8][] = {
    "^4(^1Counter-Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4(^1Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD*^4(^1Counter-Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD*^4(^1Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4(^1Spectator^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD* ^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*SPEC* ^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2"
}


public plugin_init()
{
    new mapname[4]
    get_mapname(mapname, charsmax(mapname))
    if(equali(mapname, "de_") || equali(mapname, "cs_"))
    {
        target_map = true
    
}
    
    register_plugin
(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar("vip_custom_version", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
    register_concmd("vip_custom_reloadcfg", "cmdReloadCfg", ADMIN_CFG)
    register_dictionary ("vip_custom.txt" )
    loadconfig()
    g_iMaxPlayers = get_maxplayers()

    RegisterHam(Ham_Spawn, "player", "playerspawn_post", 1)
    RegisterHam(Ham_Killed, "player", "playerkilled_post", 1)
    
    if
(nofall) RegisterHam(Ham_TakeDamage, "player", "HamTakeDamagePlayerPre", 0)
    if(scrtag) register_message( get_user_msgid("ScoreAttrib"), "msgScoreAttrib" )
    if(damager) register_event("Damage", "Event_Damage", "b", "2>0", "3=0")
    if(prefix)
    {
        vipChannels = TrieCreate()
        for (new i = 0; i < 8; i++)
        {
            TrieSetString(vipChannels, channels[i], newChannels[i])
        }
        register_message(get_user_msgid("SayText"), "messageSayText")
    }
    if(target_map)
    {
        // Cmds
        register_clcmd( "weaponmenu", "MenuCommand" )
        register_clcmd( "say /vipmenu", "MenuCommand" )
        // Menu
        register_menucmd( register_menuid( "WeaponMenu" ),MENUKEYS, "MenuHandler" )
        register_menucmd( register_menuid( "BuyMenu" ),MENUKEYS, "MenuHandlerCustom" )
        // Events
        register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
        register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
        if(vampire) register_event( "DeathMsg", "Event_DeathMsg", "a")
        if(remove_limit) register_event( "BarTime", "event_bomb_planting", "be", "1=3")
    }
}

public cmdReloadCfg(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED

    set_task
(0.2, "delayed_load")
    return PLUGIN_HANDLED
}

public delayed_load()
{
    item_flags = 0
    loadconfig
()
    if( g_iKNFPluginId > 0 && g_iKNFReload > 0)
    {
        callfunc_begin_i(g_iKNFReload, g_iKNFPluginId)
        callfunc_end()
    }
    if( g_iDGLPluginId > 0 && g_iDGLReload > 0)
    {
        callfunc_begin_i(g_iDGLReload, g_iDGLPluginId)
        callfunc_end()
    }
    if(g_iM4A1PluginId > 0 && g_iM4A1Reload > 0)
    {        
        callfunc_begin_i
(g_iM4A1Reload, g_iM4A1PluginId)
        callfunc_end()
    }
    if(g_iAK47PluginId > 0 && g_iAK47Reload > 0)
    {
        callfunc_begin_i(g_iAK47Reload, g_iAK47PluginId)
        callfunc_end()
    }
    if(g_iAWPPluginId > 0 && g_iAWPReload > 0)
    {
        callfunc_begin_i(g_iAWPReload, g_iAWPPluginId)
        callfunc_end()
    }
}

public loadconfig()
{
    new ConfigFile[64], szMsg[128]     // "addons/amxmodx/configs/vip_custom.ini" 37
    get_localinfo("amxx_configsdir", ConfigFile, charsmax(ConfigFile))
    add(ConfigFile, charsmax(ConfigFile), "/vip_custom.ini")
    if( !file_exists(ConfigFile) )
    {
        formatex( szMsg, charsmax(szMsg), "%s Config File Not Found!", PLUGIN_NAME )
        set_fail_state(szMsg)
        return
    
}
    
    new fp 
= fopen(ConfigFile, "rt")
    if( fp )
    {
        new Datas[86], Setting[32], Value[15]
        while( !feof(fp) )
        {
            fgets(fp, Datas, charsmax(Datas))
            trim(Datas)
            if(!Datas[0] || Datas[0] == ';' || Datas[0] == '#' || Datas[0] == '/' || Datas[0] == '[')
            {
                continue
            
}
            new Sign[3]
            parse(Datas, Setting, charsmax(Setting), Sign, charsmax(Sign), Value, charsmax(Value))
            if( equali(Setting, "flag_access"))
            {
                flagaccess = read_flags(Value)
            }else if( equali(Setting, "buy_access")){
                buyaccess = read_flags(Value)
            }else if( equali(Setting, "give_item_flags"))
            {
                if (containi(Value, "p") != -1)
                {
                    item_flags |= ITEM_DEAGLE
                
}
                if (containi(Value, "h") != -1)
                {
                    item_flags |= ITEM_HE
                
}
                if (containi(Value, "s") != -1)
                {
                    item_flags |= ITEM_SMOKE
                
}
                if (containi(Value, "f") != -1)
                {
                    item_flags |= ITEM_FLASH
                
}    
                if 
(containi(Value, "a") != -1)
                {
                    item_flags |= ITEM_AMMO
                
}            
                if 
(containi(Value, "v") != -1)
                {
                    item_flags |= ITEM_ARMOR
                
}            
                if 
(containi(Value, "d") != -1)
                {
                    item_flags |= ITEM_DEFUSER
                
}
            }else if( equali(Setting, "allowed_round_equip")){
                alw_round_eq = str_to_num(Value)
            }else if( equali(Setting, "vip_tag")){
                scrtag = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vip_prefix")){
                prefix = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vip_info")){
                info = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "drop_type")){
                droptype = str_to_num(Value)
            }else if( equali(Setting, "no_fall_damage")){
                nofall = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "remove_limit")){
                remove_limit = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "bullet_damage")){
                damager = str_to_num(Value)
            }else if( equali(Setting, "bullet_damage_recieved")){
                recieved = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "bullet_damage_color")){
                new red[10], green[10], blue[10]
                parse(Value, red, charsmax(red), green, charsmax(green), blue, charsmax(blue))
                dmgcolors[0] = str_to_num(red)
                dmgcolors[1] = str_to_num(green)
                dmgcolors[2] = str_to_num(blue)
            }else if( equali(Setting, "vampire")){
                vampire = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vampire_max_hp")){
                vampire_max = str_to_num(Value)
            }else if( equali(Setting, "vampire_hp")){
                hp_bonus = str_to_num(Value)
            }else if( equali(Setting, "vampire_hp_hs")){
                hp_bonus_hs = str_to_num(Value)
            }else if( equali(Setting, "open_menu")){
                openmenu = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "close_delay")){
                delay = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_famas")){
                alw_round_fm = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_m4ak")){
                alw_round_m4ak = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_awp")){
                alw_round_awp = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_buymenu")){
                alw_round_buy = str_to_num(Value)
            }else if( equali(Setting, "deagle_cost")){
                dglcost = str_to_num(Value)
            }else if( equali(Setting, "m4a1_cost")){
                m4cost = str_to_num(Value)
            }else if( equali(Setting, "ak47_cost")){
                akcost = str_to_num(Value)
            }else if( equali(Setting, "awp_cost")){
                awpcost = str_to_num(Value)
            }
        }
        formatex( szMsg, charsmax(szMsg), "%s Config Successfully Loaded!", PLUGIN_NAME )
        server_print(szMsg)
    }
}

public plugin_cfg()
{
    g_iKNFPluginId = is_plugin_loaded("V.I.P Custom KNIFE")
    if( g_iKNFPluginId > 0 )
    {
        g_iKNFReload = get_func_id("loadconfig", g_iKNFPluginId)
    }
    g_iDGLPluginId = is_plugin_loaded("V.I.P Custom DEAGLE")
    if( g_iDGLPluginId > 0 )
    {
        g_iDGLGive = get_func_id("buyCMD", g_iDGLPluginId)
        g_iDGLReload = get_func_id("loadconfig", g_iDGLPluginId)
    }
    g_iM4A1PluginId = is_plugin_loaded("V.I.P Custom M4A1")
    if( g_iM4A1PluginId > 0 )
    {
        g_iM4A1Give = get_func_id("buyCMD", g_iM4A1PluginId)
        g_iM4A1Reload = get_func_id("loadconfig", g_iM4A1PluginId)
    }
    g_iAK47PluginId = is_plugin_loaded("V.I.P Custom AK-47")
    if( g_iAK47PluginId > 0 )
    {
        g_iAK47Give = get_func_id("buyCMD", g_iAK47PluginId)
        g_iAK47Reload = get_func_id("loadconfig", g_iAK47PluginId)
    }
    g_iAWPPluginId = is_plugin_loaded("V.I.P Custom AWP")
    if( g_iAWPPluginId > 0 )
    {
        g_iAWPGive = get_func_id("buyCMD", g_iAWPPluginId)
        g_iAWPReload = get_func_id("loadconfig", g_iAWPPluginId)
    }
}

public client_putinserver(id)
{
    g_iAlive[id] = 0
    g_bAccess
[id] = get_user_flags(id) & flagaccess ? true : false

    if
(info)
    {
        set_task(1.0, "vip_connected", id)
        if(target_map)
        {
            set_task(30.0, "vip_help", id)
        }
    }
    if(!is_user_hltv(id))
    {
        SetFlagConnected(id)
    }
}

public client_disconnect(id)
{
    ClearFlagConnected(id)
}

public playerspawn_post(id)
{
    g_iAlive[id] = is_user_alive(id)
    g_bAccess[id] = get_user_flags(id) & flagaccess ? true : false
    set_task
(0.2, "GiveItem", id + 6910)
}

public playerkilled_post(id, attacker, shouldgib)
{
    g_iAlive[id] = 0
}

public Event_NewRound()
{
    gbIsUsed = 0
    giCounter
++
}

public Event_NewGame()
{
    giCounter = 0
}

    // Vip connected info/help
public vip_connected(id)
{
    if(g_bAccess[id])
    {
        new name[32]
        get_user_name(id, name, 31)
        ChatColor(0, "%L", LANG_SERVER,"VIP_CONNECTED", name)
    }
}

public vip_help(id)
{
    if(g_bAccess[id])
    {
        new name[32]
        get_user_name(id, name, 31)
        ChatColor(id, "%L", LANG_SERVER,"VIP_HELP", name)
    }
}

    // ScoreBoard "VIP" String
public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
    static id; id = get_msg_arg_int(1)
    if(get_msg_arg_int(2) || !(g_bAccess[id]))
        return
    set_msg_arg_int
(2, ARG_BYTE, (1<<2))
}

    // [V.I.P] prefix and green chat
public messageSayText(msgid, msgdest, id)
{
    new channel[64]
    get_msg_arg_string(2, channel, charsmax(channel))
    
    if
(!TrieGetString(vipChannels, channel, channel, charsmax(channel)))
    {
        return
    
}
    new sender = get_msg_arg_int(1)
    if(g_bAccess[sender])
    {
        set_msg_arg_string(2, channel)
    }
}

public plugin_end()
{
    TrieDestroy(vipChannels)
}

    // Bullet Damage
public Event_Damage(iVictim)
{
    if((read_data(4) || read_data(5) || read_data(6)))
    {
        static damage; damage = read_data(2)
        if( recieved && IsPlayer(iVictim) && UserConnected(iVictim))
        {
            if(g_bAccess[iVictim])
            {
                set_hudmessage(255, 0, 0,  0.45, 0.50, 0, 6.0, 3.0, _, _, 3)
                show_hudmessage(iVictim, "%d", damage)
            }
        }
        new id = get_user_attacker(iVictim)
        if( IsPlayer(id) && UserConnected(id))
        {
            new iPos = ++g_iPlayerPos[id]
            if( iPos == sizeof(g_flCoords))
            {
                iPos = g_iPlayerPos[id] = 0
            
}
            new iCol = ++g_iPlayerCol[id]
            if( iCol == sizeof(g_iColors))
            {
                iCol = g_iPlayerCol[id] = 0
            
}
            if(g_bAccess[id])
            {
                switch(damager)
                {    case 1:{
                        set_hudmessage(dmgcolors[0], dmgcolors[1], dmgcolors[2], 0.51, 0.51, 0, 6.0, 3.0, _, _, 3)
                    }
                    case 2:{
                        set_hudmessage(dmgcolors[0], dmgcolors[1], dmgcolors[2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
                    }
                    case 3:{
                        set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
                    }
                }
                show_hudmessage(id, "%d", damage)
            }
        }
    }
}

    // Vampire
public Event_DeathMsg()
{
    new KillerId = read_data(1)
    new VictimId = read_data(2)
    new HeadShot = read_data(3)
    
    if
(KillerId == VictimId || !IsPlayer(KillerId)
    || !g_iAlive[KillerId] || !(g_bAccess[KillerId])
    || get_user_team(KillerId) == get_user_team(VictimId))
    {
        return
    
}
    
    new KillerHealth 
= get_user_health(KillerId)
    new KillerMaxHealth = vampire_max
    if
(KillerHealth < KillerMaxHealth)
    {
        new BonusKillerHealth = HeadShot ? hp_bonus_hs : hp_bonus
        new NewKillerHealth 
= min(KillerHealth + BonusKillerHealth, KillerMaxHealth)
        fm_set_user_health(KillerId, NewKillerHealth)
        set_hudmessage(0, 255, 100, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
        show_hudmessage(KillerId, "Healed +%d hp", NewKillerHealth - KillerHealth)
    }
}

    // Terrorist planter  :D
public event_bomb_planting(id)
{
    if(!g_iAlive[id] || !g_bAccess[id])
        return
    set_pev
(id, pev_maxspeed, 250.0)
}

    // No fall damage
public HamTakeDamagePlayerPre(victim, inflictor, attacker, Float:dmg, dmg_type)
{
    if(g_bAccess[victim])
    {
        if(dmg_type & (1<<5)/* dmg fall */)
        {
            return HAM_SUPERCEDE
        
}
    }
    return HAM_IGNORED
}

    // Equip/Deagle giving
public GiveItem(TaskID)
{
    new id = TaskID - 6910

    if
( !( g_bAccess[id]) || !g_iAlive[id])
    {
        return
    
}
    if(item_flags & ITEM_AMMO)
    {
        giveammo(id)
        refill(id)
    }
    if(!target_map)
    {
        return
    
}
    if(giCounter >= alw_round_eq)
    {
        if(item_flags & ITEM_DEAGLE)
        {
            if(user_has_weapon(id,CSW_DEAGLE))
            {
                ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35)
            }else{
                drop_weapons(id, 2)
                fm_give_item(id,"weapon_deagle")
                ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35)
            }
        }
        if(item_flags & ITEM_HE)
        {
            fm_give_item(id,"weapon_hegrenade")            
        
}
        if(item_flags & ITEM_SMOKE)
        {
            fm_give_item(id,"weapon_smokegrenade")
        }    
        if
(item_flags & ITEM_FLASH)
        {
            fm_give_item(id,"weapon_flashbang")
            fm_give_item(id,"weapon_flashbang")            
        
}
        if(item_flags & ITEM_ARMOR)
        {
            fm_give_item(id,"item_assaultsuit")
            fm_set_user_armor(id,100)
        }
        if(item_flags & ITEM_DEFUSER)
        {
            if(get_user_team(id) == 2)
            {
                fm_give_item(id,"item_thighpack")
            }
        }
    }
    if(openmenu)
    {
        if(!cs_get_user_hasprim(id, 1) && giCounter >= alw_round_fm)
        {
            MenuCommand(id)
        }
    }
}

    // Weapon Menu
public MenuCommand(id)
{
    new szMenu[512]         // it is maximum allowed menu size
    new iKeys
    new iLen 
= formatex( szMenu, charsmax(szMenu), "\y%L\R%L^t^n^n", LANG_SERVER,"WEAPONS_MENU", LANG_SERVER,"ROUND")
    
    new iItemsDisabled
    if
( !( g_bAccess[id]) || !g_iAlive[id] || CheckFlag( gbIsUsed, id ))
        iItemsDisabled = 1
        
    if
( iItemsDisabled || giCounter < alw_round_fm )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d1.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_FAMAS", alw_round_fm)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y1.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_FAMAS", alw_round_fm)
            iKeys |= MENU_KEY_1
        
}
    if( iItemsDisabled  || giCounter < alw_round_m4ak )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d2.^t%L\R\r%d^t^n", LANG_SERVER, "WEAPON_M4A1", alw_round_m4ak)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y2.^t\w%L\R\y%d^t^n", LANG_SERVER, "WEAPON_M4A1", alw_round_m4ak)
            iKeys |= MENU_KEY_2
        
}
    if( iItemsDisabled  || giCounter < alw_round_m4ak )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d3.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_AK-47", alw_round_m4ak)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y3.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_AK-47", alw_round_m4ak)
            iKeys |= MENU_KEY_3
        
}
    if( iItemsDisabled  || giCounter < alw_round_awp )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d4.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_AWP", alw_round_awp)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y4.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_AWP", alw_round_awp)
            iKeys |= MENU_KEY_4
        
}
    if(!( get_user_flags(id) & buyaccess) || !g_iAlive[id] || giCounter < alw_round_buy)
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\d5.^t%L^n", LANG_SERVER,"BUY_MENU")
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y5.^t\w%L^n", LANG_SERVER,"BUY_MENU")
            iKeys |= MENU_KEY_5    
        
}
        
    formatex
( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y0.^t\w%L", LANG_SERVER, "EXIT" )
    iKeys |=  MENU_KEY_0|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
    show_menu
( id, iKeys, szMenu, delay, .title = "WeaponMenu" )

    return PLUGIN_HANDLED
}

    // Custom Menu
public MenuCommandCustom(id)
{
    new szMenu[512]         // it is maximum allowed menu size
    new iKeys
    new usermoney 
= fm_get_user_money(id)
    new iLen = formatex( szMenu, charsmax(szMenu), "\y%L\R$^t^t%L^t^n^n", LANG_SERVER,"BUY_MENU", LANG_SERVER,"COST")

    new iItemsDisabled
    if
( !( get_user_flags(id) & buyaccess) || !g_iAlive[id] /*|| CheckFlag( gbIsUsed, id )*/)
        iItemsDisabled = 1
    
    if
( iItemsDisabled || g_iDGLPluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r1.^t%L^t^n", LANG_SERVER,"CUSTOM_DEAGLE")
        }else if( iItemsDisabled || usermoney < dglcost ){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d1.^t%L\R\r%d^t^n", LANG_SERVER,"CUSTOM_DEAGLE", dglcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y1.^t\w%L\R\y%d^t^n", LANG_SERVER,"CUSTOM_DEAGLE", dglcost)
            iKeys |= MENU_KEY_1
        
}
    if( iItemsDisabled || g_iM4A1PluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r2.^t%L^t^n", LANG_SERVER,"CUSTOM_M4A1")
        }else if( iItemsDisabled || usermoney < m4cost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d2.^t%L\R\r%d^t^n", LANG_SERVER,"CUSTOM_M4A1", m4cost)        
        
}else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y2.^t\w%L\R\y%d^t^n", LANG_SERVER,"CUSTOM_M4A1", m4cost)
            iKeys |= MENU_KEY_2
        
}
    if( iItemsDisabled || g_iAK47PluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r3.^t%L^t^n", LANG_SERVER, "CUSTOM_AK-47")
        }else if( iItemsDisabled || usermoney < akcost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d3.^t%L\R\r%d^t^n", LANG_SERVER, "CUSTOM_AK-47", akcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y3.^t\w%L\R\y%d^t^n", LANG_SERVER, "CUSTOM_AK-47", akcost)
            iKeys |= MENU_KEY_3
        
}
    if( iItemsDisabled || g_iAWPPluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r4.^t%L^t^n", LANG_SERVER, "CUSTOM_AWP")
        }else if( iItemsDisabled || usermoney < awpcost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d4.^t%L\R\r%d^t^n", LANG_SERVER, "CUSTOM_AWP", awpcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y4.^t\w%L\R\y%d^t^n", LANG_SERVER, "CUSTOM_AWP", awpcost)
            iKeys |= MENU_KEY_4
        
}
    if( !( g_bAccess[id]) || !g_iAlive[id])
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\d5.^t%L^n", LANG_SERVER,"BACK")
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y5.^t\w%L^n", LANG_SERVER,"BACK")
            iKeys |= MENU_KEY_5
        
}
        
    formatex
( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y0.^t\w%L", LANG_SERVER, "EXIT" )
    iKeys |=  MENU_KEY_0|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
    show_menu
( id, iKeys, szMenu, delay, .title = "BuyMenu" )

    return PLUGIN_HANDLED
}

    // Weapon Menu Func
public MenuHandler(id, key)
{
    if(key == KEY_EXIT - 1 || !g_iAlive[id])
        return PLUGIN_HANDLED

    switch
(key)
    {
        case 0:{
            if(user_has_weapon(id,CSW_FAMAS))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_famas")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 1:{
            if(user_has_weapon(id,CSW_M4A1))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_m4a1")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 2:{
            if(user_has_weapon(id,CSW_AK47))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_ak47")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "762nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 3:{
            if(user_has_weapon(id,CSW_AWP))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_awp")
                ExecuteHamB(Ham_GiveAmmo, id, 30, "338magnum", 30)
                SetFlag( gbIsUsed, id )
            }
        }
        case 4:{
            MenuCommandCustom(id)
        }
    }
    return PLUGIN_HANDLED
}

    // Custom Menu func
public MenuHandlerCustom(id, key)
{
    if(key == KEY_EXIT - 1 || !g_iAlive[id])
        return PLUGIN_HANDLED

    switch
(key)
    {
        case 0:{
            if(g_iDGLPluginId > 0 && g_iDGLGive > 0)
            {    
                callfunc_begin_i
(g_iDGLGive, g_iDGLPluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 1:{
            if(g_iM4A1PluginId > 0 && g_iM4A1Give > 0)
            {        
                callfunc_begin_i
(g_iM4A1Give, g_iM4A1PluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 2:{
            if(g_iAK47PluginId > 0 && g_iAK47Give > 0)
            {
                callfunc_begin_i(g_iAK47Give, g_iAK47PluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 3:{
            if(g_iAWPPluginId > 0 && g_iAWPGive > 0)
            {
                callfunc_begin_i(g_iAWPGive, g_iAWPPluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 4:{
            MenuCommand(id)
        }
    }
    return PLUGIN_HANDLED
}

//================================ STOCKS ==============================//

stock giveammo(id)
{
    new weap_ids[32], num_weaps
    num_weaps 
= 0
    get_user_weapons
(id, weap_ids, num_weaps)
    for (new i = 0; i < num_weaps; i++)
    {
        new weap_id = weap_ids[i]
        new ammo = MAXBPAMMO[weap_id]
        if(!( NOCLIP_WPN_BS & (1<<weap_id)))
        {
            ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weap_id], AMMOTYPE[weap_id], MAXBPAMMO[weap_id], ammo)
        }
    }
}

stock refill(id)
{
    for(new slot = 1; slot<= 2; slot++)
    {
        new iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer[slot])
        while( iWeapon > 0 )
        {
            new iId = fm_get_weapon_id(iWeapon)
            if( !( NOCLIP_WPN_BS & (1<<iId) ) )
            {
                fm_set_weapon_ammo(iWeapon, MAXCLIP[iId])
                iWeapon = get_pdata_cbase(iWeapon, m_pNext, XO_WEAPON)
            }
        }
    }
}

stock drop_weapons(id, dropwhat)
{
    static weapons[32], num, i, weaponid
    num 
= 0
    get_user_weapons
(id, weapons, num)

    for (= 0; i < num; i++)
    {
        weaponid = weapons[i]
        if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM) || HasShield(id)) 
        
|| (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM )))
        {
            static wname[32]
            get_weaponname(weaponid, wname, charsmax(wname))
            switch(droptype)
            {
                case 0: ham_strip_weapon(id, wname)
                case 1: engclient_cmd(id, "drop", wname)
            }
        }
    }
}

stock ham_strip_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0
    
    new wId 
= get_weaponid(weapon)
    if(!wId) return 0
    
    new wEnt
    while
((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
    if(!wEnt) return 0
    
    new iTmp
    if
(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
    
    if
(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0
    
    ExecuteHamB
(Ham_Item_Kill, wEnt)
    set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId))
    
    return 1
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32], i
    static msg
[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!n", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
   
    if
(id)players[0] = id; else get_players(players, count, "ch")
    {
        for(= 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()
            }
        }
    }
}

stock fm_set_user_armor(index, armor) 
{
    set_pev(index, pev_armorvalue, float(armor))
    return 1
}

stock fm_set_user_health(index, health) 
{
    health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index)
    return 1
}

stock fm_give_item(index, const item[]) 
{
    if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5))
        return 0
    
    new ent 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
    if (!pev_valid(ent))
        return 0
плагин Evil Army
L 03
/17/2017 - 18:02:12: [AMXX] Displaying debug trace (plugin "EvilArmy.amxx")
L 03/17/2017 - 18:02:12: [AMXX] Run time error 4: index out of bounds 
L 03
/17/2017 - 18:02:12: [AMXX]    [0] EvilArmy.sma::next_load_data (line 512)
L 03/17/2017 - 18:02:12: [AMXX]    [1] EvilArmy.sma::load_data (line 413)
L 03/17/2017 - 18:02:12: [AMXX]    [2] EvilArmy.sma::client_putinserver (line 296)
    new Float:origin[3]
    pev(index, pev_origin, origin)
    set_pev(ent, pev_origin, origin)
    set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
    dllfunc(DLLFunc_Spawn, ent)

    new save = pev(ent, pev_solid)
    dllfunc(DLLFunc_Touch, ent, index)
    if (pev(ent, pev_solid) != save)
        return ent

    engfunc
(EngFunc_RemoveEntity, ent)

    return -1
}
 

плагин Evil Army
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <fakemeta> 
#include <fakemeta_util>
#include <csx>

#define PLUGIN "EvilArmy"
#define VERSION "1.3 Fix 1"
#define AUTHOR "OverGame" //Исходник Arctic
#define ADM_MENU ADMIN_RCON

#pragma tabsize 0

new g_vault;
new Handle:g_SqlTuple;
new g_Error[512]; 
enum _
:PlData
{
    gId,gExp,gLevel,gTempKey
};
new gChatTop, g_bonus_score[33];
new g_type, g_enabled, g_recieved, bool:g_showrecieved, g_hudmsg1, g_hudmsg2;
new stats[8],bodyhits[8],irank;
new UserData[33][PlData];
new gMessage[256];
new g_MsgHud,MaxPlayers,levelUp[33],gSayText;
new bool:restr_blocked;
new const gRankNames[][] = 
{
    "I_0","I_1","I_2","I_3","I_4","I_5","I_6","I_7","I_8","I_9","I_10","I_11","I_12","I_13","I_14",        
    
"I_15","I_16","I_17","I_18","I_19","I_20"
};
new const gLevels[] = 
{
    0,15,30,60,100,180,350,750,999,1500,2200,2800,3200,3900,4500,5000,5500,6000,7000,8000
};
new const gNades[][] =
{
    {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1}
}
new const restrict_bonus[][] =
{
    "35hp",
    "most_wanted",
    "ka_wintershank"
};
new gRestrictMaps,gAdminGMsg,gBonusLevel,gFlash,gSmoke,gHe,gHpbylevel,gApbylevel,gEvilMenu,gHudColor,
gArmyChat,gSaveType,gTableName,gHost,gUser,gPassword,gDbName,gSlash,
gTk,gLostXpTk,gLevelUpmsg,gAllChat;
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_cvar("evil_army",VERSION, FCVAR_SERVER | FCVAR_SPONLY);
    register_clcmd("evil_setmenu","set_level_menu");
    register_clcmd("menu","menu_server");
    register_clcmd("say /menu","menu_server");
    register_clcmd("say /bonus","evil_army_menu");
    register_clcmd("say /rs","reset_score");
    set_cvar_string("evil_army",VERSION);
    gRestrictMaps     = register_cvar( "restrict_maps",         "0");
    gBonusLevel    = register_cvar( "level_bonus",         "0");
    gFlash        = register_cvar( "flash_nades",         "0");
    gSmoke        = register_cvar( "smoke_nades",         "1");
    gHe        = register_cvar( "he_nades",         "1");
    gHpbylevel    = register_cvar( "hp_by_level",         "3");
    gApbylevel    = register_cvar( "ap_by_level",         "5");
    gChatTop    = register_cvar( "chat_top",         "1");
    gArmyChat    = register_cvar( "army_chat",         "1");
    gEvilMenu    = register_cvar( "evil_menu",         "1");
    gHudColor    = register_cvar( "evil_chud",         "0");
    gAdminGMsg    = register_cvar( "admin_color",        "1");
    gSaveType     = register_cvar( "save_type",         "0");
    gSlash         = register_cvar( "slash_messages",         "1");
    g_type = register_cvar("amx_evildamage","1");
    g_recieved = register_cvar("amx_evildamage_recieved","1")    ;
    gTk         = register_cvar( "team_kill_lost_xp",       "1");
    gLostXpTk     = register_cvar( "lost_xp_val",         "3");
    gLevelUpmsg    = register_cvar( "level_up_msg",         "1");
    gAllChat    = register_cvar( "all_chat",         "1");    
    gHost        
= register_cvar( "mysql_host",         "127.0.0.1");
    gUser        = register_cvar( "mysql_user",         "root");
    gPassword    = register_cvar( "mysql_password",     "qwerty");
    gDbName        = register_cvar( "mysql_db_name",     "test");
    gTableName    = register_cvar( "mysql_table_name",     "evil_army");
    register_logevent( "EventRoundStart", 2, "1=Round_Start" );
    set_task(1.0,"Info",_,_,_, "b")
    register_event( "DeathMsg","EventDeath","a");
    register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0");    
    register_event
("HLTV", "on_new_round", "a", "1=0", "2=0");
    register_message(get_user_msgid("SayText"), "msg_SayText");
    gSayText = get_user_msgid ("SayText");
    g_MsgHud = CreateHudSyncObj();
    g_hudmsg1 = CreateHudSyncObj()    
    g_hudmsg2 
= CreateHudSyncObj()
    MaxPlayers = get_maxplayers();
    register_dictionary("evil_army.txt" );
    if(get_pcvar_num(gRestrictMaps))
    {
        new szMapName[64];
        get_mapname(szMapName,63);
        for(new a = 0; a < sizeof restrict_bonus; a++)
        {
            if(equal(szMapName, restrict_bonus[a]))
            {
                restr_blocked = true;
                log_amx("[Evil Army] weapon menu is blocked on map [%s].",restrict_bonus[a]);
                break;
            } else {
                restr_blocked = false;
            }    
        
}
    }
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            g_vault = nvault_open("evil_army");
        }
        case 1: 
        
{
            set_task(0.1, "sql_init");
        }
        default: 
        
{
            g_vault = nvault_open("evil_army");
        }
    }
    if(get_pcvar_num(gArmyChat))
    {
        register_clcmd("say", "hookSay") 
        register_clcmd
("say_team", "hookSayTeam");
    }
}
public plugin_cfg()
{
    new szCfgDir[64], szFile[192];
    get_configsdir(szCfgDir, charsmax(szCfgDir));
    formatex(szFile,charsmax(szFile),"%s/evil_army.cfg",szCfgDir);
    if(file_exists(szFile))
        server_cmd("exec %s", szFile);
}

public set_level_menu(id)
{
    if(get_user_flags(id) & ADM_MENU)
    {
        UserData[id][gTempKey] = 0;
        new players[32], num;
        get_players(players, num)
        new tempname[32], info[10];
        new players_menu = menu_create("Меню званий:", "set_level_hl")
        for(new i = 0; i < num; i++)
        {
            get_user_name(players[i], tempname, 31);
            num_to_str(players[i], info, 9);
            menu_additem(players_menu, tempname, info, 0);
        }
        
        menu_setprop
(players_menu, MPROP_BACKNAME, "Назад")
        menu_setprop(players_menu, MPROP_NEXTNAME, "Далее")
        menu_setprop(players_menu, MPROP_EXITNAME, "Выход")
        
        menu_display
(id, players_menu, 0);
    }
    return PLUGIN_CONTINUE
}
public set_level_hl(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], _access, callback;
    menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback);
    UserData[id][gTempKey] = str_to_num(data);
    set_level_pl(id);
    return PLUGIN_CONTINUE
}

public reset_score(id){
new name[33]
get_user_name(id, name, 32)
cs_set_user_deaths(id, 0)
set_user_frags(id, 0)
cs_set_user_deaths(id, 0)
set_user_frags(id, 0)
ColorChat(0,NORMAL,"^4[%L]^3%s^1, обнулил свой счет!", LANG_PLAYER, "PRIFIX", name)
}

public menu_server(id)
{
        if(get_pcvar_num(gEvilMenu) == 1){
        static s_MenuItem[255]
        formatex(s_MenuItem, charsmax(s_MenuItem), "\yМеню сервера^nВы: \r%L", LANG_PLAYER, gRankNames[UserData[id][gLevel]])
        new menu = menu_create(s_MenuItem, "func_menu_server")
 
        menu_additem
(menu, "\yОбнулить счет","1")
        menu_additem(menu, "\yЗабанить игрока","2")
        menu_additem(menu, "\yКупить админку","3")
        menu_additem(menu, "\yМеню армии","4")
        
        menu_setprop
(menu, MPROP_BACKNAME, "Назад")
        menu_setprop(menu, MPROP_NEXTNAME, "Далее")
        menu_setprop(menu, MPROP_EXITNAME, "Выход")
 
        menu_display
(id,menu,0)
        }
        return PLUGIN_HANDLED
}

public evil_army_menu(id)
{
        static s_MenuItem[255]
        formatex(s_MenuItem, charsmax(s_MenuItem), "\yМеню сервера^nБонусы: \r%d", g_bonus_score[id])
        new menu = menu_create(s_MenuItem, "func_evil_menu")
        if(get_user_flags(id) & ADM_MENU){
        menu_additem(menu, "\yВыдать звание","1")
        }else{
        menu_additem(menu, "\dВыдать звание","1")
        }
        if(g_bonus_score[id] > 1){
        menu_additem(menu, "\yЖизни [255]","2")
        }else{
        menu_additem(menu, "\dЖизни [255]","2")
        }
        if(g_bonus_score[id] > 1){
        menu_additem(menu, "\yБронежилет [255]","3")
        }else{
        menu_additem(menu, "\dБронежилет [255]","3")
        }
        if(cs_get_user_team(id) == CS_TEAM_CT){
        if(g_bonus_score[id] > 2){
        menu_additem(menu, "\yВзять AK-47","4")
        }else{
        menu_additem(menu, "\dВзять AK-47","4")
        }
        }else
        if(cs_get_user_team(id) == CS_TEAM_T){
        if(g_bonus_score[id] > 2){
        menu_additem(menu, "\yВзять M4A1","4")
        }else{
        menu_additem(menu, "\dВзять M4A1","4")
        }
        }
        
        
        menu_setprop
(menu, MPROP_BACKNAME, "Назад")
        menu_setprop(menu, MPROP_NEXTNAME, "Далее")
        menu_setprop(menu, MPROP_EXITNAME, "Выход")
 
        menu_display
(id,menu,0)
        return PLUGIN_HANDLED
}

public set_level_pl(id)
{
    static szText[1024];
    formatex(szText,charsmax(szText), "\r%L", id, "CHOOSE_RANKN");
    new menu = menu_create( szText, "set_level_phl");
    for(new i = 1; i < sizeof(gRankNames); i++)
    {
        new szItem[100],lang[10],num[5];
        format(lang,9,"I_%d",i);
        format(num,4,"%d",i);
        formatex(szItem,charsmax(szItem),"%L",id,lang);
        menu_additem(menu,szItem,num);
    }
    menu_setprop(menu, MPROP_BACKNAME, "Назад");
    menu_setprop(menu, MPROP_NEXTNAME, "Далее");
    menu_setprop(menu, MPROP_EXITNAME, "Выйти");
    menu_display( id, menu,0);
    return PLUGIN_CONTINUE;
}
public set_level_phl(id,menu,item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], _access, callback;
    menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback);
    new level = str_to_num(data);
    if(UserData[id][gTempKey] >= 1 && UserData[id][gTempKey] <= 32)
    {
        UserData[UserData[id][gTempKey]][gLevel] = level;
        UserData[UserData[id][gTempKey]][gExp] = gLevels[level-1];
        new szName[2][32];
        get_user_name(id, szName[0], 31);
        get_user_name(UserData[id][gTempKey], szName[1], 31);
        ColorChat(0,GREY,"^3Админ ^4%s ^3выдал звание ^4%L ^3игроку ^4%s^3.",szName[0],LANG_PLAYER,gRankNames[level],szName[1])
    } else {
        set_level_menu(id);
    }
    UserData[id][gTempKey] = 0;
    return PLUGIN_HANDLED;
}

public sql_init()
{
    new szTableName[64],szHost[64],szUser[64],szPassword[64],szDbName[64],ErrorCode;
    get_pcvar_string(gTableName,szTableName,63);
    get_pcvar_string(gHost,szHost,63);
    get_pcvar_string(gUser,szUser,63);
    get_pcvar_string(gPassword,szPassword,63);
    get_pcvar_string(gDbName,szDbName,63);
    g_SqlTuple = SQL_MakeDbTuple(szHost,szUser,szPassword,szDbName);
    new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error);

    new Handle:Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `%s`(`id` INT(10) NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`exp` INT(10) NOT NULL,`level` INT(10) NOT NULL,PRIMARY KEY (id));", szTableName)
    if(!SQL_Execute(Queries))
    {
        SQL_QueryError(Queries,g_Error,charsmax(g_Error))
        set_fail_state(g_Error);
    }
    SQL_QueryAndIgnore(SqlConnection, "DELETE FROM %s WHERE exp=0 and level=1;",szTableName);
    SQL_FreeHandle(Queries)
    SQL_FreeHandle(SqlConnection);
}

public plugin_end()
{
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            nvault_close(g_vault);
        }
        case 1: 
        
{
            if(g_SqlTuple != Empty_Handle)
                SQL_FreeHandle(g_SqlTuple);
        }
        default: 
        
{
            nvault_close(g_vault);
        }
    }
}

public client_putinserver(id)
{
    g_bonus_score[id] = 0;
    UserData[id] = UserData[0];
    load_data(id);
}

public client_disconnect(id)
{
    save_usr(id);
    UserData[id] = UserData[0];
}

public on_new_round()
{
    g_enabled = get_pcvar_num(g_type)
    if(get_pcvar_num(g_recieved)) g_showrecieved = true    
}

public on_damage(id)
{
    if(g_enabled)
    {        
        static attacker
; attacker = get_user_attacker(id)
        static damage; damage = read_data(2)        
        if
(g_showrecieved)
        {            
            set_hudmessage
(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
            ShowSyncHudMsg(id, g_hudmsg2, "Вам нанесли: %i^n", damage)        
        
}
        if(is_user_connected(attacker))
        {
            switch(g_enabled)
            {
                case 1: {
                    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
                    ShowSyncHudMsg(attacker, g_hudmsg1, "Вы нанесли: %i^n", damage)                
                
}
                case 2: {
                    if(fm_is_ent_visible(attacker,id))
                    {
                        set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
                        ShowSyncHudMsg(attacker, g_hudmsg1, "Вы нанесли: %i^n", damage)                
                    
}
                }
            }
        }
    }
}

public check_level(id)
{
    if(UserData[id][gLevel] <= 0)
        UserData[id][gLevel] = 1;
        
    if
(UserData[id][gExp] < 0)
        UserData[id][gExp] = 0;

    while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) 
    
{
        UserData[id][gLevel]++;
        levelUp[id] = 1;
        switch(get_pcvar_num(gLevelUpmsg))
        {
            case 1: 
            
{
                new szName[33];
                get_user_name(id, szName, 32);
                static buffer[192],len;
                len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 %L ^4%s^1",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"PLAYER",szName);
                len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); 
                len 
+= format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
                len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
                ColorChat(0,NORMAL,buffer);
            }
            case 2:
            {
                new szName[33];
                get_user_name(id, szName, 32);
                static buffer[192],len;
                len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 %L ^4%s^1",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"PLAYER",szName);
                len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); 
                len 
+= format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
                len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
                ColorChat(id,NORMAL,buffer);
            }
        }
    }
}
public EventDeath()
{
    new iKiller = read_data(1);
    new iVictim = read_data(2);
    new head = read_data(3);
    if(iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) && UserData[iKiller][gLevel] <= 19)
    {
        if(get_pcvar_num(gTk) && get_user_team(iKiller) == get_user_team(iVictim))
        {
            UserData[iKiller][gExp] -= get_pcvar_num(gLostXpTk);
            return PLUGIN_CONTINUE;
        }
        new weapon = get_user_weapon(iKiller);
        UserData[iKiller][gExp] += 1;
        if(weapon == CSW_KNIFE)
            UserData[iKiller][gExp] += 3;
            
        if
(head)
            UserData[iKiller][gExp] += 2;
            g_bonus_score[iKiller] += 1;

        if(weapon == CSW_HEGRENADE)
            UserData[iKiller][gExp] += 1;

        check_level(iKiller);
    }
    return PLUGIN_CONTINUE;
}
public EventRoundStart()
{
    for(new id = 1; id <= MaxPlayers; id++)
    {
        if(is_user_alive(id) && is_user_connected(id))
        {
            if(restr_blocked)
                return PLUGIN_CONTINUE;
            
            if
(get_pcvar_num(gFlash) && gNades[0][UserData[id][gLevel]])
                give_item(id,"weapon_flashbang");
            
            if
(get_pcvar_num(gSmoke) && gNades[1][UserData[id][gLevel]])
                give_item(id,"weapon_smokegrenade");
                
            if
(get_pcvar_num(gHe) && gNades[2][UserData[id][gLevel]])
                give_item(id,"weapon_hegrenade");
            
            if
(get_pcvar_num(gHpbylevel) != 0)
                set_user_health(id,get_user_health(id)+get_pcvar_num(gHpbylevel)*UserData[id][gLevel]);
                
            if
(get_pcvar_num(gApbylevel) != 0)
                set_user_armor(id,get_user_armor(id)+get_pcvar_num(gApbylevel)*UserData[id][gLevel]);    
                
            if
(levelUp[id] == 1 && get_pcvar_num(gBonusLevel))
            {
                GetWeapon(id);
                levelUp[id] = 0;
            }
        }
    }
    return PLUGIN_CONTINUE;
}
public load_data(id)
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            static data[256], timestamp;
            if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) )
            {
                next_load_data(id, data, sizeof(data) - 1);
                return;
            } else {
                register_player(id,"");
            }
        }
        case 1: 
        
{
            new szTableName[32],ErrorCode;
            new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            SQL_QuoteString(SqlConnection, szName, 32, szName);
            get_pcvar_string(gTableName,szTableName,31);
            if(SqlConnection == Empty_Handle)
            {
                log_amx(g_Error);
                return ;
            }
            new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id FROM %s WHERE name = '%s';",szTableName,szName)
            if(!SQL_Execute(Query))
            {
                SQL_QueryError(Query,g_Error,511);
                log_amx(g_Error);
                return ;
            }
            if(SQL_NumResults(Query) > 0 )
            {
                next_load_data(id, "", 0);
            } else {
                register_player(id,"");
            }
            SQL_FreeHandle(Query);
            SQL_FreeHandle(SqlConnection);
        }
        default: 
        
{
            static data[256], timestamp;
            if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) )
            {
                next_load_data(id, data, sizeof(data) - 1);
                return;
            } else {
                register_player(id,"");
            }
        }
    }
}
public next_load_data(id,data[],len)
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            replace_all(data,len,"|"," ");
            new exp[5],level[5];
            parse(data,exp,4,level,4);
            UserData[id][gExp]= str_to_num(exp);
            UserData[id][gLevel]= str_to_num(level);
        }
        case 1: 
        
{
            new szTableName[32],ErrorCode;
            new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            SQL_QuoteString(SqlConnection, szName, 32, szName);
            get_pcvar_string(gTableName,szTableName,31);
            if(SqlConnection == Empty_Handle)
            {
                log_amx(g_Error);
                return ;
            }
            new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id,exp,level FROM %s WHERE name = '%s';",szTableName,szName)
            if(!SQL_Execute(Query))
            {
                SQL_QueryError(Query,g_Error,511)
                log_amx(g_Error)
            }
            if( SQL_NumResults(Query) > 0)
            {
                UserData[id][gId]= SQL_ReadResult(Query,0); 
                UserData
[id][gExp]= SQL_ReadResult(Query,1); 
                UserData
[id][gLevel]= SQL_ReadResult(Query,2); 
            
}
            SQL_FreeHandle(Query);
            SQL_FreeHandle(SqlConnection);
        }
        default: 
        
{
            replace_all(data,len,"|"," ");
            new exp[5],level[5];
            parse(data,exp,4,level,4);
            UserData[id][gExp]= str_to_num(exp);
            UserData[id][gLevel]= str_to_num(level);
        }
    }
    if(UserData[id][gLevel] <= 0)
        UserData[id][gLevel] = 1;

    while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) 
        UserData
[id][gLevel]++;
}
public register_player(id,data[])
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            UserData[id][gExp]= 0
            UserData
[id][gLevel]= 1;
        }
        case 1: 
        
{
            new szTableName[32],ErrorCode;
            new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            SQL_QuoteString(SqlConnection, szName, 32, szName);
            get_pcvar_string(gTableName,szTableName,31);
            if(SqlConnection == Empty_Handle)
            {
                log_amx(g_Error);
                return ;
            }
            new Handle:Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO %s (`id`,`name`,`exp`,`level`) VALUES (NULL,'%s','0','1');",szTableName,szName);
            if(!SQL_Execute(Query))
            {
                SQL_QueryError(Query,g_Error,511)
                log_amx(g_Error)
            }
            SQL_FreeHandle(Query);
            SQL_FreeHandle(SqlConnection);
            UserData[id][gExp] = 0;
            UserData[id][gLevel] = 1;
        }
        default: 
        
{
            UserData[id][gExp]= 0
            UserData
[id][gLevel]= 1;
        }
    }
}
public save_usr(id)
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            static data[256];
            formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]);
            nvault_set(g_vault, szName, data);
        }
        case 1: 
        
{
            new saveq[256],szTableName[32];
            get_pcvar_string(gTableName,szTableName,31);
            format(saveq,255,"UPDATE `%s` SET `exp`='%d',`level`='%d' WHERE `id`='%d';", szTableName,UserData[id][gExp],UserData[id][gLevel],UserData[id][gId])
            SQL_ThreadQuery(g_SqlTuple,"QueryHandler",saveq);
        }
        default: 
        
{
            static data[256];
            formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]);
            nvault_set(g_vault, szName, data);
        }
    }
}
public hookSay(id)
{
    if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
        return PLUGIN_CONTINUE;

    new message[192],Len;
    read_args(message, 191);
    remove_quotes(message);
    if(is_admin_msg(message))
        return PLUGIN_CONTINUE;
    
    if
(is_empty_message(message))
    {
        ColorChat(id,NORMAL,"^4[^3%L^4]^1 %L",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"EMPTY_MSG")
        return PLUGIN_HANDLED
    
}
    if(get_pcvar_num(gSlash))
    {
        if(is_has_slash(message))
            return PLUGIN_HANDLED_MAIN
    
}
    new szName[32];
    get_user_name(id,szName,31);
    irank = get_user_stats(id,stats,bodyhits)
    if(is_user_admin(id))
    {
    if(get_pcvar_num(gChatTop) == 0){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }else
    if(get_pcvar_num(gChatTop) == 1){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3Топ: %d^4][^3%L^4] ",irank,LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }
        switch(get_pcvar_num(gAdminGMsg))
        {
            case 1:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message);
            }
            case 2:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message);
            }
            default:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
            }
        }
        Chat(id,0,get_pcvar_num(gAllChat));
    }
    else 
    
{
    if(get_pcvar_num(gChatTop) == 0){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }else
    if(get_pcvar_num(gChatTop) == 1){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3Топ: %d^4][^3%L^4] ",irank,LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
        Chat(id,0,get_pcvar_num(gAllChat));
    }
    return PLUGIN_HANDLED_MAIN
}
public hookSayTeam(id)
{
    if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
        return PLUGIN_CONTINUE;

    new message[192],Len;
    read_args(message, 191);
    remove_quotes(message);
    if(is_admin_msg(message))
        return PLUGIN_CONTINUE;
        
    if
(is_empty_message(message))
    {
        ColorChat(id,GREY,"^4[^3%L^4]^1 %L",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"EMPTY_MSG");
        return PLUGIN_HANDLED
    
}
    if(get_pcvar_num(gSlash))
    {
        if(is_has_slash(message))
            return PLUGIN_HANDLED_MAIN
    
}
    new szName[32];
    get_user_name(id,szName,31);
    if(is_user_admin(id))
    {
        Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ^3%s^4 : ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]],szName);        
        switch
(get_pcvar_num(gAdminGMsg))
        {
            case 1:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message);
            }
            case 2:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message);
            }
            default:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
            }
        }
        Chat(id,1,get_pcvar_num(gAllChat));
    }
    else 
    
{
        Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
        Chat(id,1,get_pcvar_num(gAllChat));
    }
    return PLUGIN_HANDLED_MAIN
}
stock is_admin_msg(const Message[])
{
    if(Message[0] == '@')
        return true;
        
    return false
;
}
stock is_empty_message(const Message[])
{
    if(equal(Message, "") || !strlen(Message))
        return true;
        
    return false
;
}
stock Chat(id,team,chat_type)
{
    if(team)
    {
        if(chat_type)
        {
            for(new i = 1; i <= MaxPlayers; i++)
            {
                if(!is_user_connected(i))
                    continue
            
                if
(get_user_team(id) == get_user_team(i))
                    send_message(gMessage, id, i);
            }
        } else {
            if(is_user_alive(id))
            {
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || !is_user_alive(i))
                        continue
                
                    if
(get_user_team(id) == get_user_team(i))
                        send_message(gMessage, id, i);
                }
            } else if(!is_user_alive(id)){
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || is_user_alive(i))
                        continue
                
                    if
(get_user_team(id) == get_user_team(i))
                        send_message(gMessage, id, i);
                }
            }
        }
    } else{
        if(chat_type)
        {
            for(new i = 1; i <= MaxPlayers; i++)
            {
                if(!is_user_connected(i))
                    continue
            
                send_message
(gMessage, id, i);
            }
        } else {
            if(is_user_alive(id))
            {
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || !is_user_alive(i))
                        continue
                
                    send_message
(gMessage, id, i);
                }
            } else if(!is_user_alive(id)){
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || is_user_alive(i))
                        continue
                
                    send_message
(gMessage, id, i);
                }
            }
        }
    }
}
stock send_message(const message[], const id, const i)
{
    message_begin(MSG_ONE, gSayText, {0, 0, 0}, i)
    write_byte(id)
    write_string(message)
    message_end()
}
stock is_has_slash(const Message[])
{
    if(Message[0] == '/')
        return true;
        
    return false
;
}

public client_infochanged(id)
{
    new newname[32],oldname[32]
    get_user_info(id, "name", newname,31)
    get_user_name(id,oldname,31)
    if(!is_user_connected(id) || is_user_bot(id)) 
        return PLUGIN_CONTINUE
        
    if
(!equali(newname, oldname))
    {
        set_user_info(id,"name",oldname);
        log_amx("namechange BLOCKED.");
        return PLUGIN_HANDLED
    
}
    return PLUGIN_CONTINUE
}
public msg_SayText()
{
    new arg[32]
    get_msg_arg_string(2, arg, 31)
    if(containi(arg,"name")!=-1)
        return PLUGIN_HANDLED

    return PLUGIN_CONTINUE
}
public plugin_natives()
{
    register_native("get_user_exp", "native_get_user_exp", 1);
    register_native("get_user_lvl", "native_get_user_lvl", 1);
    register_native("set_user_exp", "native_set_user_exp", 1);
    register_native("set_user_lvl", "native_set_user_lvl", 1);
    register_native("get_user_rankname", "native_get_user_rankname", 1);
}
public native_set_user_exp(id,num)
{
    UserData[id][gExp] = num;
}
public native_set_user_lvl(id,num)
{
    UserData[id][gLevel] = num;
}
public native_get_user_exp(id)
{
    return UserData[id][gExp];
}
public native_get_user_lvl(id)
{
    return UserData[id][gLevel];
}
public native_get_user_rankname(id)
{
    static szRankName[64];
    format(szRankName, charsmax(szRankName), "%L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    return szRankName;
}
public Info()
{
    for(new id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_bot(id) && is_user_connected(id))
        {
            if(get_pcvar_num(gHudColor) == 0){
            set_hudmessage(203, 44, 49, 0.01, 0.20, 0, 1.0, 1.0, _, _, -1);
            }else
            if(get_pcvar_num(gHudColor) == 1){
            set_hudmessage(136, 255, 85, 0.01, 0.20, 0, 1.0, 1.0, _, _, -1);
            }
            
            static buffer
[192], len;
            len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
            len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
            if(UserData[id][gLevel] <= 19)
            {
                len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_XP",UserData[id][gExp],gLevels[UserData[id][gLevel]]);
            } else {
                len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX");
            }
            irank = get_user_stats(id,stats,bodyhits)
            ShowSyncHudMsg(id, g_MsgHud, "%s^n%L^n%L", buffer, LANG_PLAYER, "PL_RANK", irank, get_statsnum(), LANG_PLAYER, "GROUP_VK");
        }
    }
    return PLUGIN_CONTINUE
}
public GetWeapon(id)
{
    new szText[700 char];
    formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE");
    new menu = menu_create( szText, "gw_menu" );
    formatex( szText, charsmax( szText ), "awp");
    menu_additem( menu, szText, "1", 0 );
    formatex( szText, charsmax( szText ), "ak-47");
    menu_additem( menu, szText, "2", 0 );
    formatex( szText, charsmax( szText ), "m4a1");
    menu_additem( menu, szText, "3", 0 );
    formatex( szText, charsmax( szText ), "famas");
    menu_additem( menu, szText, "4", 0 );
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu,0);
    return PLUGIN_CONTINUE;
}
public gw_menu(id,menu,item)
{
    if( item == MENU_EXIT )
    {
        return PLUGIN_HANDLED;
    }
    
    new data
[ 6 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    new key = str_to_num( data );
    switch( key )
    {
        case 1:
        {
            give_item(id,"weapon_awp");
            cs_set_user_bpammo( id, CSW_AWP, 100);
        }
        case 2:
        {
            give_item(id,"weapon_ak47");
            cs_set_user_bpammo( id, CSW_AK47, 200);
        }
        case 3:
        {
            give_item(id,"weapon_m4a1");
            cs_set_user_bpammo( id, CSW_M4A1, 200);
        }
        case 4:
        {
            give_item(id,"weapon_famas");
            cs_set_user_bpammo( id, CSW_FAMAS, 200);
        }
    }
    
    return PLUGIN_HANDLED
;
}

public func_menu_server(id, menu, item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        
}
 
        new data
[6], iName[64], access, callback
        menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
 
        new key 
= str_to_num(data)
 
        switch
(key)
        {
        case 1:{
        reset_score(id)
               }
        case 2:{
        client_cmd(id, "say /voteban")
               }
        case 3:{
        client_cmd(id, "say /adminka")
               }
        case 4:{
        evil_army_menu(id)
               }
        }
        return PLUGIN_HANDLED
}

public func_evil_menu(id, menu, item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        
}
 
        new data
[6], iName[64], access, callback
        menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
 
        new key 
= str_to_num(data)
 
        switch
(key)
        {
        case 1:{
        if(get_user_flags(id) & ADM_MENU)
        set_level_menu(id)
               }
        case 2:{
        if(g_bonus_score[id] > 1){
        set_user_health(id, 255);
        g_bonus_score[id] -= 2;
               }
        }
        case 3:{
        if(g_bonus_score[id] > 1){
        set_user_armor(id, 255);
        g_bonus_score[id] -= 2;
               }
        }
        case 4:{
        if(cs_get_user_team(id) == CS_TEAM_CT){
        if(g_bonus_score[id] > 2){
        give_item(id,"weapon_ak47");
        cs_set_user_bpammo( id, CSW_AK47, 200);
        g_bonus_score[id] -= 3;
        }
        }else
        if(cs_get_user_team(id) == CS_TEAM_T){
        if(g_bonus_score[id] > 2){
        give_item(id,"weapon_m4a1");
        cs_set_user_bpammo( id, CSW_M4A1, 200);
        g_bonus_score[id] -= 3;
        }
        }
        }
        }
        return PLUGIN_HANDLED
}

public QueryHandler(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    switch(FailState)
    {
        case -2: log_amx("[Evil Army] Failed to connect (%d): %s", Errcode, Error);
        case -1: log_amx("[Evil Army] (%d): %s", Errcode, Error);
    }
    return PLUGIN_HANDLED
}
 

плагин amx_adminmodel
L 03/03/2017 - 02:39:54: Start of error session.
L 03/03/2017 - 02:39:54: Info (map "cs_mansion") (file "addons/amxmodx/logs/error_20170303.log")
L 03/03/2017 - 02:39:54: [CSTRIKE] Invalid player 24
L 03/03/2017 - 02:39:54: [AMXX] Displaying debug trace (plugin "amx_adminmodel.amxx")
L 03/03/2017 - 02:39:54: [AMXX] Run time error 10: native error (native "cs_get_user_team")
L 03/03/2017 - 02:39:54: [AMXX] [0] amx_adminmodel.sma::resetModel (line 74)
L 03/03/2017 - 02:44:49: [CSTRIKE] Invalid player 24

Код: Выделить всё
/*########################################################################## 
## 
## -- www.SteamTools.net 
##      ___   _____       ___  ___   _   __   _            ___  ___   _____   _      
##     /   | |  _  \     /   |/   | | | |  \ | |          /   |/   | |  _  \ | |      
##    / /| | | | | |    / /|   /| | | | |   \| |         / /|   /| | | | | | | |      
##   / / | | | | | |   / / |__/ | | | | | |\   |        / / |__/ | | | | | | | |      
##  / /  | | | |_| |  / /       | | | | | | \  |       / /       | | | |_| | | |___  
## /_/   |_| |_____/ /_/        |_| |_| |_|  \_|      /_/        |_| |_____/ |_____| 
##                                                        
##          |__                   |__  o _|_   ___   __ __  o |__,  ___  
##      --  |__) (__|     (__(__( |  ) |  |_, (__/_ |  )  ) | |  \ (__/_ 
##                  |                                                    
## 
##   Originated as a simple idea back in 2004, it was forgotten due to 
## lack of my 'Small' coding skills. However I have progressed in recent 
## months and somehow crossed that old post with this concept in it. So 
## naturally I challenged myself to see if I could do it, and voila! I 
## could :) 
## 
##   Once you join, you play a normal person for the first round, and for 
## all remaining rounds your CT or TE models are custom. They now read 
## "ADMIN" on front and back, and also have small "A" patches on the arms. 
## I designed these models myself, it's very easy, just bring the textures 
## into photoshop, tweak out, and replace. 
## 
##   Enjoy! 
## 
## 
## CHANGELOG 
##------------------------------------------------------------------------ 
## 2) v1.1.1 - Fixed missing event 
## 1) v1.1.0 - Fixed VIP and other model bugs 
## 
## 
## INSTALLATION 
##------------------------------------------------------------------------ 
## 1) Unzip (which you may have done already) 
## 2) Place 'amx_adminmodel.amxx' in 'cstrike/addons/amxmodx/plugins' 
## 3) Add a line in 'configs/plugins.ini' containing 'amx_adminmodel.amxx' 
## 4) Put the 'admin_ct' and 'admin_te' folders into 'cstrike/models' folder 
## 5) -- Visit www.SteamTools.net and enjoy your new plugin! 
## 
## 
## 
## THE CVARs 
##------------------------------------------------------------------------ 
## 
## No CVARs for this plugin :) 
## 
## 
##########################################################################*/
    


#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX Admin Model", "1.1.1", "whitemike")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/admin_ct/admin_ct.mdl")
        precache_model("models/player/admin_te/admin_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if (get_user_flags(id) & ADMIN_LEVEL_B) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "admin_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "admin_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}

плагин amx_vipmodel
L 03/05/2017 - 18:49:43: Start of error session.
L 03/05/2017 - 18:49:43: Info (map "cs_mansion_32") (file "addons/amxmodx/logs/error_20170305.log")
L 03/05/2017 - 18:49:43: [CSTRIKE] Invalid player 6
L 03/05/2017 - 18:49:43: [AMXX] Displaying debug trace (plugin "amx_vipmodel.amxx")
L 03/05/2017 - 18:49:43: [AMXX] Run time error 10: native error (native "cs_get_user_team")
L 03/05/2017 - 18:49:43: [AMXX] [0] amx_vipmodel.sma::resetModel (line 20)

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX VIP Model", "1.0", "Starik")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_te/vip_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if (get_user_flags(id) & ADMIN_LEVEL_C) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}

плагин lady admin
L 03/08/2017 - 12:05:14: Start of error session.
L 03/08/2017 - 12:05:14: Info (map "cs_mansion_32") (file "addons/amxmodx/logs/error_20170308.log")
L 03/08/2017 - 12:05:14: [CSTRIKE] Invalid player 1
L 03/08/2017 - 12:05:14: [AMXX] Displaying debug trace (plugin "lady_admin.amxx")
L 03/08/2017 - 12:05:14: [AMXX] Run time error 10: native error (native "cs_get_user_team")
L 03/08/2017 - 12:05:14: [AMXX] [0] lady_admin.sma::resetModel (line 20)
L 03/08/2017 - 13:56:01: [CSTRIKE] Invalid player 3

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX Admin Girl", "1.0", "whitemike & homorapian")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/ladyadmin/ladyadmin.mdl")
        precache_model("models/player/ladyadmin/ladyadmin.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if (get_user_flags(id) & ADMIN_LEVEL_G) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "ladyadmin")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "ladyadmin")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}


Добавлено спустя 1 минуту 16 секунд:
плагин evil army
L 03/17/2017 - 18:02:12: [AMXX] Displaying debug trace (plugin "EvilArmy.amxx")
L 03/17/2017 - 18:02:12: [AMXX] Run time error 4: index out of bounds
L 03/17/2017 - 18:02:12: [AMXX] [0] EvilArmy.sma::next_load_data (line 512)
L 03/17/2017 - 18:02:12: [AMXX] [1] EvilArmy.sma::load_data (line 413)
L 03/17/2017 - 18:02:12: [AMXX] [2] EvilArmy.sma::client_putinserver (line 296)

Название темы скорректировано, тема перемещена из раздела "Вопросы по AMXX и его плагинам" // Subb98
Аватара пользователя
erzhan2396
 
Сообщения: 8
Зарегистрирован: 17 янв 2017, 17:25
Откуда: Казахстан, Рудный
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Исправить ошибки в плагинах

Сообщение lop50956 » 17 мар 2017, 19:40

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX Admin Girl", "1.0", "whitemike & homorapian")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/ladyadmin/ladyadmin.mdl")
        precache_model("models/player/ladyadmin/ladyadmin.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if(!is_user_alive(id))return 0;
        if (get_user_flags(id) & ADMIN_LEVEL_G) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "ladyadmin")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "ladyadmin")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}


Добавлено спустя 1 минуту 20 секунд:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX VIP Model", "1.0", "Starik")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_te/vip_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if(!is_user_alive(id))return 0;
        if (get_user_flags(id) & ADMIN_LEVEL_C) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE


Добавлено спустя 1 минуту 21 секунду:
Код: Выделить всё
/*########################################################################## 
## 
## -- www.SteamTools.net 
##      ___   _____       ___  ___   _   __   _            ___  ___   _____   _      
##     /   | |  _  \     /   |/   | | | |  \ | |          /   |/   | |  _  \ | |      
##    / /| | | | | |    / /|   /| | | | |   \| |         / /|   /| | | | | | | |      
##   / / | | | | | |   / / |__/ | | | | | |\   |        / / |__/ | | | | | | | |      
##  / /  | | | |_| |  / /       | | | | | | \  |       / /       | | | |_| | | |___  
## /_/   |_| |_____/ /_/        |_| |_| |_|  \_|      /_/        |_| |_____/ |_____| 
##                                                        
##          |__                   |__  o _|_   ___   __ __  o |__,  ___  
##      --  |__) (__|     (__(__( |  ) |  |_, (__/_ |  )  ) | |  \ (__/_ 
##                  |                                                    
## 
##   Originated as a simple idea back in 2004, it was forgotten due to 
## lack of my 'Small' coding skills. However I have progressed in recent 
## months and somehow crossed that old post with this concept in it. So 
## naturally I challenged myself to see if I could do it, and voila! I 
## could :) 
## 
##   Once you join, you play a normal person for the first round, and for 
## all remaining rounds your CT or TE models are custom. They now read 
## "ADMIN" on front and back, and also have small "A" patches on the arms. 
## I designed these models myself, it's very easy, just bring the textures 
## into photoshop, tweak out, and replace. 
## 
##   Enjoy! 
## 
## 
## CHANGELOG 
##------------------------------------------------------------------------ 
## 2) v1.1.1 - Fixed missing event 
## 1) v1.1.0 - Fixed VIP and other model bugs 
## 
## 
## INSTALLATION 
##------------------------------------------------------------------------ 
## 1) Unzip (which you may have done already) 
## 2) Place 'amx_adminmodel.amxx' in 'cstrike/addons/amxmodx/plugins' 
## 3) Add a line in 'configs/plugins.ini' containing 'amx_adminmodel.amxx' 
## 4) Put the 'admin_ct' and 'admin_te' folders into 'cstrike/models' folder 
## 5) -- Visit www.SteamTools.net and enjoy your new plugin! 
## 
## 
## 
## THE CVARs 
##------------------------------------------------------------------------ 
## 
## No CVARs for this plugin :) 
## 
## 
##########################################################################*/
    


#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX Admin Model", "1.1.1", "whitemike")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/admin_ct/admin_ct.mdl")
        precache_model("models/player/admin_te/admin_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if(!is_user_alive(id))return 0;
        if (get_user_flags(id) & ADMIN_LEVEL_B) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "admin_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "admin_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}
Последний раз редактировалось lop50956 17 мар 2017, 19:49, всего редактировалось 1 раз.
Аватара пользователя
lop50956
 
Сообщения: 178
Зарегистрирован: 29 ноя 2016, 00:36
Забанен
Благодарил (а): 18 раз.
Поблагодарили: 16 раз.
Опыт программирования: Больше трех лет
Языки программирования: Php

Re: Исправить ошибки в плагинах

Сообщение erzhan2396 » 17 мар 2017, 19:46

так быстро) спасибо, сейчас проверю на сервере

Добавлено спустя 3 минуты 47 секунд:
lop50956 писал(а):
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX Admin Girl", "1.0", "whitemike & homorapian")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/ladyadmin/ladyadmin.mdl")
        precache_model("models/player/ladyadmin/ladyadmin.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if(!is_user_alive(id))return;
        if (get_user_flags(id) & ADMIN_LEVEL_G) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "ladyadmin")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "ladyadmin")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}


Добавлено спустя 1 минуту 20 секунд:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX VIP Model", "1.0", "Starik")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_te/vip_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if(!is_user_alive(id))return;
        if (get_user_flags(id) & ADMIN_LEVEL_C) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE


Добавлено спустя 1 минуту 21 секунду:
Код: Выделить всё
/*########################################################################## 
## 
## -- www.SteamTools.net 
##      ___   _____       ___  ___   _   __   _            ___  ___   _____   _      
##     /   | |  _  \     /   |/   | | | |  \ | |          /   |/   | |  _  \ | |      
##    / /| | | | | |    / /|   /| | | | |   \| |         / /|   /| | | | | | | |      
##   / / | | | | | |   / / |__/ | | | | | |\   |        / / |__/ | | | | | | | |      
##  / /  | | | |_| |  / /       | | | | | | \  |       / /       | | | |_| | | |___  
## /_/   |_| |_____/ /_/        |_| |_| |_|  \_|      /_/        |_| |_____/ |_____| 
##                                                        
##          |__                   |__  o _|_   ___   __ __  o |__,  ___  
##      --  |__) (__|     (__(__( |  ) |  |_, (__/_ |  )  ) | |  \ (__/_ 
##                  |                                                    
## 
##   Originated as a simple idea back in 2004, it was forgotten due to 
## lack of my 'Small' coding skills. However I have progressed in recent 
## months and somehow crossed that old post with this concept in it. So 
## naturally I challenged myself to see if I could do it, and voila! I 
## could :) 
## 
##   Once you join, you play a normal person for the first round, and for 
## all remaining rounds your CT or TE models are custom. They now read 
## "ADMIN" on front and back, and also have small "A" patches on the arms. 
## I designed these models myself, it's very easy, just bring the textures 
## into photoshop, tweak out, and replace. 
## 
##   Enjoy! 
## 
## 
## CHANGELOG 
##------------------------------------------------------------------------ 
## 2) v1.1.1 - Fixed missing event 
## 1) v1.1.0 - Fixed VIP and other model bugs 
## 
## 
## INSTALLATION 
##------------------------------------------------------------------------ 
## 1) Unzip (which you may have done already) 
## 2) Place 'amx_adminmodel.amxx' in 'cstrike/addons/amxmodx/plugins' 
## 3) Add a line in 'configs/plugins.ini' containing 'amx_adminmodel.amxx' 
## 4) Put the 'admin_ct' and 'admin_te' folders into 'cstrike/models' folder 
## 5) -- Visit www.SteamTools.net and enjoy your new plugin! 
## 
## 
## 
## THE CVARs 
##------------------------------------------------------------------------ 
## 
## No CVARs for this plugin :) 
## 
## 
##########################################################################*/
    


#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX Admin Model", "1.1.1", "whitemike")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/admin_ct/admin_ct.mdl")
        precache_model("models/player/admin_te/admin_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if(!is_user_alive(id))return;
        if (get_user_flags(id) & ADMIN_LEVEL_B) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "admin_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "admin_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}

не компилируюся вот ошибка
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

/hlds/web/www/amxxpc/work/scripting/amx_adminmodel.sma(73) : warning 209: function "resetModel" should return a value
/hlds/web/www/amxxpc/work/scripting/amx_adminmodel.sma(87) : error 078: function uses both "return" and "return <value>"

1 Error.
Could not locate output file /hlds/web/www/amxxpc/work/plugins/amx_adminmodel.amx (compile failed).
</value>
Аватара пользователя
erzhan2396
 
Сообщения: 8
Зарегистрирован: 17 янв 2017, 17:25
Откуда: Казахстан, Рудный
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Исправить ошибки в плагинах

Сообщение lop50956 » 17 мар 2017, 19:52

Код: Выделить всё
// Copyright © 2015 Vaqtincha

/************************ V.I.P Custom Weapons *************************
*
*    Last update:
*      05/12/2015
*    
*    Cmds:
*    weaponmenu or (say /vipmenu) - Free guns menu
*    
*    Credits:
*    - Safety1st - for plugin "Weapon Menu Hardcoded" (edited by me)
*    - Eg@r4$il - for plugin "Admins are VIPs + grenades + kevlar" (edited by me)
*    - ZETA [M|E|N] - for plugin "VSVipPrefix"
*    - xPaw - for code "ScoreBoard "VIP" string"
*    - ConnorMcLeod for plugin "Bullet Damage" and cstrike_pdatas
*    - Subb98 for plugin "No fall damage"
*    - MrBone - for pieces of advice
*    - Patriot~ua~ - for ideas and testing
*    - c-s.net.ua members
*
***********************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

#define PLUGIN_NAME "V.I.P Custom Weapons"
#define PLUGIN_VERSION "1.0.0"
#define PLUGIN_AUTHOR "Vaqtincha"

// macro; %1 - variable being modified, %2 - player id
#define CheckFlag(%1,%2)  (%1 &   (1 << (%2 & 31)))
#define SetFlag(%1,%2)    (%1 |=  (1 << (%2 & 31)))
#define ClearFlag(%1,%2)  (%1 &= ~(1 << (%2 & 31)))

#define SetFlagConnected(%1)    g_bConnected |= 1<<(%1 & 31)
#define ClearFlagConnected(%1)    g_bConnected &= ~( 1<<(%1 & 31))
#define UserConnected(%1)        (g_bConnected &  1<<(%1 & 31))

#define cs_get_user_hasprim(%1,%2) (get_pdata_cbase(%1, m_rgpPlayerItems_CBasePlayer[%2])>0)
#define fm_get_user_money(%1)         get_pdata_int(%1, m_iAccount, XO_PLAYER)
#define fm_get_weapon_id(%1)         get_pdata_int(%1, m_iId, XO_WEAPON)
#define fm_set_weapon_ammo(%1,%2)    set_pdata_int(%1, m_iClip, %2, XO_WEAPON)

#if AMXX_VERSION_NUM < 183
    #define HasShield(%1)    (get_pdata_int(%1, m_iUserPrefs, XO_PLAYER) & m_bHasShield)
#else
    #define HasShield(%1)    get_pdata_bool(%1, m_bHasShield)
#endif

#define MAX_PLAYERS 32
#define IsPlayer(%1)    ( 1 <= %1 <= g_iMaxPlayers )

#define ITEM_DEAGLE     (1<<0)
#define ITEM_HE         (1<<1)
#define ITEM_SMOKE     (1<<2)
#define ITEM_FLASH     (1<<3)
#define ITEM_AMMO     (1<<4)
#define ITEM_ARMOR     (1<<5)
#define ITEM_DEFUSER (1<<6)

new Trie:vipChannels
new g_iAlive
[MAX_PLAYERS+1]
new bool:g_bAccess[MAX_PLAYERS+1]
new g_iPlayerPos[MAX_PLAYERS+1]
new g_iPlayerCol[MAX_PLAYERS+1]
new gbIsUsed, giCounter, g_bConnected, g_iMaxPlayers, target_map

new g_iKNFPluginId
, g_iDGLPluginId, g_iM4A1PluginId, g_iAK47PluginId, g_iAWPPluginId
new g_iDGLGive
, g_iM4A1Give, g_iAK47Give, g_iAWPGive
new g_iKNFReload
, g_iDGLReload, g_iM4A1Reload, g_iAK47Reload, g_iAWPReload

new alw_round_eq
, alw_round_fm, alw_round_m4ak, alw_round_awp, alw_round_buy
new vampire
, vampire_max, hp_bonus, hp_bonus_hs, item_flags, delay, damager, droptype
new dmgcolors
[3], scrtag, prefix, info, remove_limit, openmenu, nofall, recieved
new dglcost
, m4cost, akcost, awpcost
static flagaccess
, buyaccess

    
// Offsets
new const m_rgpPlayerItems_CBasePlayer[6] = {367, 368, ...}
#if AMXX_VERSION_NUM < 183
    const m_bHasShield = 1<<24
    const m_iUserPrefs 
= 510
#else
    const m_bHasShield = 2043
#endif
const m_pNext = 42
const m_iClip 
= 51
const m_iId 
= 43
const XO_PLAYER 
= 5
const XO_WEAPON 
= 4
#if cellbits == 32
    const m_iAccount = 115
#else
    const m_iAccount = 140
#endif

const MENUKEYS = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
    
|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
const KEY_EXIT 
= 10

const PRIMARY_WEAPONS_BIT_SUM 
= 1<<CSW_SCOUT|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_AUG|1<<CSW_UMP45
    
|1<<CSW_SG550|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AWP|1<<CSW_MP5NAVY|1<<CSW_M249|1<<CSW_M3
    
|1<<CSW_M4A1|1<<CSW_TMP|1<<CSW_G3SG1|1<<CSW_SG552|1<<CSW_AK47|1<<CSW_P90

const SECONDARY_WEAPONS_BIT_SUM 
= 1<<CSW_P228|1<<CSW_ELITE|1<<CSW_FIVESEVEN|1<<CSW_USP|1<<CSW_GLOCK18|1<<CSW_DEAGLE

const NOCLIP_WPN_BS 
= ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) 

    
// Max BP ammo for weapons
new const MAXBPAMMO[31] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90,
    90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100
}
    // Max clip for weapons
new const MAXCLIP[CSW_P90+1] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30,
    35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50
}
    // Ammo Type Names for weapons
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato",
    "", "9mm", "57mm", "45acp", "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm",
    "556natobox","buckshot", "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" 
}

new const Float:g_flCoords[][] = { {0.50, 0.40},{0.56, 0.44},{0.60, 0.50},
    {0.56, 0.56},{0.50, 0.60},{0.44, 0.56},{0.40, 0.50},{0.44, 0.44}
}

new const g_iColors[][] = { {0, 127, 255},/*blue*/{255, 127, 0},/*orange*/
    {127, 0, 255},/*purple*/{0, 255, 0},/*green*/{255, 24, 119},/*pink*/
    {228, 228, 228},/*gray*/{165, 42, 42},/*brown*/{255, 255, 0}/*yellow*/
}

new channels[8][] = { 
    
"#Cstrike_Chat_CT","#Cstrike_Chat_T","#Cstrike_Chat_CT_Dead","#Cstrike_Chat_T_Dead",
    "#Cstrike_Chat_Spec","#Cstrike_Chat_All","#Cstrike_Chat_AllDead","#Cstrike_Chat_AllSpec"
}

new newChannels[8][] = {
    "^4(^1Counter-Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4(^1Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD*^4(^1Counter-Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD*^4(^1Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4(^1Spectator^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD* ^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*SPEC* ^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2"
}


public plugin_init()
{
    new mapname[4]
    get_mapname(mapname, charsmax(mapname))
    if(equali(mapname, "de_") || equali(mapname, "cs_"))
    {
        target_map = true
    
}
    
    register_plugin
(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar("vip_custom_version", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
    register_concmd("vip_custom_reloadcfg", "cmdReloadCfg", ADMIN_CFG)
    register_dictionary ("vip_custom.txt" )
    loadconfig()
    g_iMaxPlayers = get_maxplayers()

    RegisterHam(Ham_Spawn, "player", "playerspawn_post", 1)
    RegisterHam(Ham_Killed, "player", "playerkilled_post", 1)
    
    if
(nofall) RegisterHam(Ham_TakeDamage, "player", "HamTakeDamagePlayerPre", 0)
    if(scrtag) register_message( get_user_msgid("ScoreAttrib"), "msgScoreAttrib" )
    if(damager) register_event("Damage", "Event_Damage", "b", "2>0", "3=0")
    if(prefix)
    {
        vipChannels = TrieCreate()
        for (new i = 0; i < 8; i++)
        {
            TrieSetString(vipChannels, channels[i], newChannels[i])
        }
        register_message(get_user_msgid("SayText"), "messageSayText")
    }
    if(target_map)
    {
        // Cmds
        register_clcmd( "weaponmenu", "MenuCommand" )
        register_clcmd( "say /vipmenu", "MenuCommand" )
        // Menu
        register_menucmd( register_menuid( "WeaponMenu" ),MENUKEYS, "MenuHandler" )
        register_menucmd( register_menuid( "BuyMenu" ),MENUKEYS, "MenuHandlerCustom" )
        // Events
        register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
        register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
        if(vampire) register_event( "DeathMsg", "Event_DeathMsg", "a")
        if(remove_limit) register_event( "BarTime", "event_bomb_planting", "be", "1=3")
    }
}

public cmdReloadCfg(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED

    set_task
(0.2, "delayed_load")
    return PLUGIN_HANDLED
}

public delayed_load()
{
    item_flags = 0
    loadconfig
()
    if( g_iKNFPluginId > 0 && g_iKNFReload > 0)
    {
        callfunc_begin_i(g_iKNFReload, g_iKNFPluginId)
        callfunc_end()
    }
    if( g_iDGLPluginId > 0 && g_iDGLReload > 0)
    {
        callfunc_begin_i(g_iDGLReload, g_iDGLPluginId)
        callfunc_end()
    }
    if(g_iM4A1PluginId > 0 && g_iM4A1Reload > 0)
    {        
        callfunc_begin_i
(g_iM4A1Reload, g_iM4A1PluginId)
        callfunc_end()
    }
    if(g_iAK47PluginId > 0 && g_iAK47Reload > 0)
    {
        callfunc_begin_i(g_iAK47Reload, g_iAK47PluginId)
        callfunc_end()
    }
    if(g_iAWPPluginId > 0 && g_iAWPReload > 0)
    {
        callfunc_begin_i(g_iAWPReload, g_iAWPPluginId)
        callfunc_end()
    }
}

public loadconfig()
{
    new ConfigFile[64], szMsg[128]     // "addons/amxmodx/configs/vip_custom.ini" 37
    get_localinfo("amxx_configsdir", ConfigFile, charsmax(ConfigFile))
    add(ConfigFile, charsmax(ConfigFile), "/vip_custom.ini")
    if( !file_exists(ConfigFile) )
    {
        formatex( szMsg, charsmax(szMsg), "%s Config File Not Found!", PLUGIN_NAME )
        set_fail_state(szMsg)
        return
    
}
    
    new fp 
= fopen(ConfigFile, "rt")
    if( fp )
    {
        new Datas[86], Setting[32], Value[15]
        while( !feof(fp) )
        {
            fgets(fp, Datas, charsmax(Datas))
            trim(Datas)
            if(!Datas[0] || Datas[0] == ';' || Datas[0] == '#' || Datas[0] == '/' || Datas[0] == '[')
            {
                continue
            
}
            new Sign[3]
            parse(Datas, Setting, charsmax(Setting), Sign, charsmax(Sign), Value, charsmax(Value))
            if( equali(Setting, "flag_access"))
            {
                flagaccess = read_flags(Value)
            }else if( equali(Setting, "buy_access")){
                buyaccess = read_flags(Value)
            }else if( equali(Setting, "give_item_flags"))
            {
                if (containi(Value, "p") != -1)
                {
                    item_flags |= ITEM_DEAGLE
                
}
                if (containi(Value, "h") != -1)
                {
                    item_flags |= ITEM_HE
                
}
                if (containi(Value, "s") != -1)
                {
                    item_flags |= ITEM_SMOKE
                
}
                if (containi(Value, "f") != -1)
                {
                    item_flags |= ITEM_FLASH
                
}    
                if 
(containi(Value, "a") != -1)
                {
                    item_flags |= ITEM_AMMO
                
}            
                if 
(containi(Value, "v") != -1)
                {
                    item_flags |= ITEM_ARMOR
                
}            
                if 
(containi(Value, "d") != -1)
                {
                    item_flags |= ITEM_DEFUSER
                
}
            }else if( equali(Setting, "allowed_round_equip")){
                alw_round_eq = str_to_num(Value)
            }else if( equali(Setting, "vip_tag")){
                scrtag = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vip_prefix")){
                prefix = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vip_info")){
                info = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "drop_type")){
                droptype = str_to_num(Value)
            }else if( equali(Setting, "no_fall_damage")){
                nofall = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "remove_limit")){
                remove_limit = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "bullet_damage")){
                damager = str_to_num(Value)
            }else if( equali(Setting, "bullet_damage_recieved")){
                recieved = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "bullet_damage_color")){
                new red[10], green[10], blue[10]
                parse(Value, red, charsmax(red), green, charsmax(green), blue, charsmax(blue))
                dmgcolors[0] = str_to_num(red)
                dmgcolors[1] = str_to_num(green)
                dmgcolors[2] = str_to_num(blue)
            }else if( equali(Setting, "vampire")){
                vampire = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vampire_max_hp")){
                vampire_max = str_to_num(Value)
            }else if( equali(Setting, "vampire_hp")){
                hp_bonus = str_to_num(Value)
            }else if( equali(Setting, "vampire_hp_hs")){
                hp_bonus_hs = str_to_num(Value)
            }else if( equali(Setting, "open_menu")){
                openmenu = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "close_delay")){
                delay = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_famas")){
                alw_round_fm = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_m4ak")){
                alw_round_m4ak = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_awp")){
                alw_round_awp = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_buymenu")){
                alw_round_buy = str_to_num(Value)
            }else if( equali(Setting, "deagle_cost")){
                dglcost = str_to_num(Value)
            }else if( equali(Setting, "m4a1_cost")){
                m4cost = str_to_num(Value)
            }else if( equali(Setting, "ak47_cost")){
                akcost = str_to_num(Value)
            }else if( equali(Setting, "awp_cost")){
                awpcost = str_to_num(Value)
            }
        }
        formatex( szMsg, charsmax(szMsg), "%s Config Successfully Loaded!", PLUGIN_NAME )
        server_print(szMsg)
    }
}

public plugin_cfg()
{
    g_iKNFPluginId = is_plugin_loaded("V.I.P Custom KNIFE")
    if( g_iKNFPluginId > 0 )
    {
        g_iKNFReload = get_func_id("loadconfig", g_iKNFPluginId)
    }
    g_iDGLPluginId = is_plugin_loaded("V.I.P Custom DEAGLE")
    if( g_iDGLPluginId > 0 )
    {
        g_iDGLGive = get_func_id("buyCMD", g_iDGLPluginId)
        g_iDGLReload = get_func_id("loadconfig", g_iDGLPluginId)
    }
    g_iM4A1PluginId = is_plugin_loaded("V.I.P Custom M4A1")
    if( g_iM4A1PluginId > 0 )
    {
        g_iM4A1Give = get_func_id("buyCMD", g_iM4A1PluginId)
        g_iM4A1Reload = get_func_id("loadconfig", g_iM4A1PluginId)
    }
    g_iAK47PluginId = is_plugin_loaded("V.I.P Custom AK-47")
    if( g_iAK47PluginId > 0 )
    {
        g_iAK47Give = get_func_id("buyCMD", g_iAK47PluginId)
        g_iAK47Reload = get_func_id("loadconfig", g_iAK47PluginId)
    }
    g_iAWPPluginId = is_plugin_loaded("V.I.P Custom AWP")
    if( g_iAWPPluginId > 0 )
    {
        g_iAWPGive = get_func_id("buyCMD", g_iAWPPluginId)
        g_iAWPReload = get_func_id("loadconfig", g_iAWPPluginId)
    }
}

public client_putinserver(id)
{
    g_iAlive[id] = 0
    g_bAccess
[id] = get_user_flags(id) & flagaccess ? true : false

    if
(info)
    {
        set_task(1.0, "vip_connected", id)
        if(target_map)
        {
            set_task(30.0, "vip_help", id)
        }
    }
    if(!is_user_hltv(id))
    {
        SetFlagConnected(id)
    }
}

public client_disconnect(id)
{
    ClearFlagConnected(id)
}

public playerspawn_post(id)
{
    g_iAlive[id] = is_user_alive(id)
    g_bAccess[id] = get_user_flags(id) & flagaccess ? true : false
    set_task
(0.2, "GiveItem", id + 6910)
}

public playerkilled_post(id, attacker, shouldgib)
{
    g_iAlive[id] = 0
}

public Event_NewRound()
{
    gbIsUsed = 0
    giCounter
++
}

public Event_NewGame()
{
    giCounter = 0
}

    // Vip connected info/help
public vip_connected(id)
{
    if(g_bAccess[id])
    {
        new name[32]
        get_user_name(id, name, 31)
        ChatColor(0, "%L", LANG_SERVER,"VIP_CONNECTED", name)
    }
}

public vip_help(id)
{
    if(g_bAccess[id])
    {
        new name[32]
        get_user_name(id, name, 31)
        ChatColor(id, "%L", LANG_SERVER,"VIP_HELP", name)
    }
}

    // ScoreBoard "VIP" String
public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
    static id; id = get_msg_arg_int(1)
    if(get_msg_arg_int(2) || !(g_bAccess[id]))
        return
    set_msg_arg_int
(2, ARG_BYTE, (1<<2))
}

    // [V.I.P] prefix and green chat
public messageSayText(msgid, msgdest, id)
{
    new channel[64]
    get_msg_arg_string(2, channel, charsmax(channel))
    
    if
(!TrieGetString(vipChannels, channel, channel, charsmax(channel)))
    {
        return
    
}
    new sender = get_msg_arg_int(1)
    if(g_bAccess[sender])
    {
        set_msg_arg_string(2, channel)
    }
}

public plugin_end()
{
    TrieDestroy(vipChannels)
}

    // Bullet Damage
public Event_Damage(iVictim)
{
    if((read_data(4) || read_data(5) || read_data(6)))
    {
        static damage; damage = read_data(2)
        if( recieved && IsPlayer(iVictim) && UserConnected(iVictim))
        {
            if(g_bAccess[iVictim])
            {
                set_hudmessage(255, 0, 0,  0.45, 0.50, 0, 6.0, 3.0, _, _, 3)
                show_hudmessage(iVictim, "%d", damage)
            }
        }
        new id = get_user_attacker(iVictim)
        if( IsPlayer(id) && UserConnected(id))
        {
            new iPos = ++g_iPlayerPos[id]
            if( iPos == sizeof(g_flCoords))
            {
                iPos = g_iPlayerPos[id] = 0
            
}
            new iCol = ++g_iPlayerCol[id]
            if( iCol == sizeof(g_iColors))
            {
                iCol = g_iPlayerCol[id] = 0
            
}
            if(g_bAccess[id])
            {
                switch(damager)
                {    case 1:{
                        set_hudmessage(dmgcolors[0], dmgcolors[1], dmgcolors[2], 0.51, 0.51, 0, 6.0, 3.0, _, _, 3)
                    }
                    case 2:{
                        set_hudmessage(dmgcolors[0], dmgcolors[1], dmgcolors[2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
                    }
                    case 3:{
                        set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
                    }
                }
                show_hudmessage(id, "%d", damage)
            }
        }
    }
}

    // Vampire
public Event_DeathMsg()
{
    new KillerId = read_data(1)
    new VictimId = read_data(2)
    new HeadShot = read_data(3)
    
    if
(KillerId == VictimId || !IsPlayer(KillerId)
    || !g_iAlive[KillerId] || !(g_bAccess[KillerId])
    || get_user_team(KillerId) == get_user_team(VictimId))
    {
        return
    
}
    
    new KillerHealth 
= get_user_health(KillerId)
    new KillerMaxHealth = vampire_max
    if
(KillerHealth < KillerMaxHealth)
    {
        new BonusKillerHealth = HeadShot ? hp_bonus_hs : hp_bonus
        new NewKillerHealth 
= min(KillerHealth + BonusKillerHealth, KillerMaxHealth)
        fm_set_user_health(KillerId, NewKillerHealth)
        set_hudmessage(0, 255, 100, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
        show_hudmessage(KillerId, "Healed +%d hp", NewKillerHealth - KillerHealth)
    }
}

    // Terrorist planter  :D
public event_bomb_planting(id)
{
    if(!g_iAlive[id] || !g_bAccess[id])
        return
    set_pev
(id, pev_maxspeed, 250.0)
}

    // No fall damage
public HamTakeDamagePlayerPre(victim, inflictor, attacker, Float:dmg, dmg_type)
{
    if(g_bAccess[victim])
    {
        if(dmg_type & (1<<5)/* dmg fall */)
        {
            return HAM_SUPERCEDE
        
}
    }
    return HAM_IGNORED
}

    // Equip/Deagle giving
public GiveItem(TaskID)
{
    new id = TaskID - 6910

    if
( !( g_bAccess[id]) || !g_iAlive[id])
    {
        return
    
}
    if(item_flags & ITEM_AMMO)
    {
        giveammo(id)
        refill(id)
    }
    if(!target_map)
    {
        return
    
}
    if(giCounter >= alw_round_eq)
    {
        if(item_flags & ITEM_DEAGLE)
        {
            if(user_has_weapon(id,CSW_DEAGLE))
            {
                ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35)
            }else{
                drop_weapons(id, 2)
                fm_give_item(id,"weapon_deagle")
                ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35)
            }
        }
        if(item_flags & ITEM_HE)
        {
            fm_give_item(id,"weapon_hegrenade")            
        
}
        if(item_flags & ITEM_SMOKE)
        {
            fm_give_item(id,"weapon_smokegrenade")
        }    
        if
(item_flags & ITEM_FLASH)
        {
            fm_give_item(id,"weapon_flashbang")
            fm_give_item(id,"weapon_flashbang")            
        
}
        if(item_flags & ITEM_ARMOR)
        {
            fm_give_item(id,"item_assaultsuit")
            fm_set_user_armor(id,100)
        }
        if(item_flags & ITEM_DEFUSER)
        {
            if(get_user_team(id) == 2)
            {
                fm_give_item(id,"item_thighpack")
            }
        }
    }
    if(openmenu)
    {
        if(!cs_get_user_hasprim(id, 1) && giCounter >= alw_round_fm)
        {
            MenuCommand(id)
        }
    }
}

    // Weapon Menu
public MenuCommand(id)
{
    new szMenu[512]         // it is maximum allowed menu size
    new iKeys
    new iLen 
= formatex( szMenu, charsmax(szMenu), "\y%L\R%L^t^n^n", LANG_SERVER,"WEAPONS_MENU", LANG_SERVER,"ROUND")
    
    new iItemsDisabled
    if
( !( g_bAccess[id]) || !g_iAlive[id] || CheckFlag( gbIsUsed, id ))
        iItemsDisabled = 1
        
    if
( iItemsDisabled || giCounter < alw_round_fm )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d1.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_FAMAS", alw_round_fm)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y1.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_FAMAS", alw_round_fm)
            iKeys |= MENU_KEY_1
        
}
    if( iItemsDisabled  || giCounter < alw_round_m4ak )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d2.^t%L\R\r%d^t^n", LANG_SERVER, "WEAPON_M4A1", alw_round_m4ak)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y2.^t\w%L\R\y%d^t^n", LANG_SERVER, "WEAPON_M4A1", alw_round_m4ak)
            iKeys |= MENU_KEY_2
        
}
    if( iItemsDisabled  || giCounter < alw_round_m4ak )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d3.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_AK-47", alw_round_m4ak)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y3.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_AK-47", alw_round_m4ak)
            iKeys |= MENU_KEY_3
        
}
    if( iItemsDisabled  || giCounter < alw_round_awp )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d4.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_AWP", alw_round_awp)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y4.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_AWP", alw_round_awp)
            iKeys |= MENU_KEY_4
        
}
    if(!( get_user_flags(id) & buyaccess) || !g_iAlive[id] || giCounter < alw_round_buy)
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\d5.^t%L^n", LANG_SERVER,"BUY_MENU")
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y5.^t\w%L^n", LANG_SERVER,"BUY_MENU")
            iKeys |= MENU_KEY_5    
        
}
        
    formatex
( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y0.^t\w%L", LANG_SERVER, "EXIT" )
    iKeys |=  MENU_KEY_0|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
    show_menu
( id, iKeys, szMenu, delay, .title = "WeaponMenu" )

    return PLUGIN_HANDLED
}

    // Custom Menu
public MenuCommandCustom(id)
{
    new szMenu[512]         // it is maximum allowed menu size
    new iKeys
    new usermoney 
= fm_get_user_money(id)
    new iLen = formatex( szMenu, charsmax(szMenu), "\y%L\R$^t^t%L^t^n^n", LANG_SERVER,"BUY_MENU", LANG_SERVER,"COST")

    new iItemsDisabled
    if
( !( get_user_flags(id) & buyaccess) || !g_iAlive[id] /*|| CheckFlag( gbIsUsed, id )*/)
        iItemsDisabled = 1
    
    if
( iItemsDisabled || g_iDGLPluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r1.^t%L^t^n", LANG_SERVER,"CUSTOM_DEAGLE")
        }else if( iItemsDisabled || usermoney < dglcost ){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d1.^t%L\R\r%d^t^n", LANG_SERVER,"CUSTOM_DEAGLE", dglcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y1.^t\w%L\R\y%d^t^n", LANG_SERVER,"CUSTOM_DEAGLE", dglcost)
            iKeys |= MENU_KEY_1
        
}
    if( iItemsDisabled || g_iM4A1PluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r2.^t%L^t^n", LANG_SERVER,"CUSTOM_M4A1")
        }else if( iItemsDisabled || usermoney < m4cost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d2.^t%L\R\r%d^t^n", LANG_SERVER,"CUSTOM_M4A1", m4cost)        
        
}else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y2.^t\w%L\R\y%d^t^n", LANG_SERVER,"CUSTOM_M4A1", m4cost)
            iKeys |= MENU_KEY_2
        
}
    if( iItemsDisabled || g_iAK47PluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r3.^t%L^t^n", LANG_SERVER, "CUSTOM_AK-47")
        }else if( iItemsDisabled || usermoney < akcost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d3.^t%L\R\r%d^t^n", LANG_SERVER, "CUSTOM_AK-47", akcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y3.^t\w%L\R\y%d^t^n", LANG_SERVER, "CUSTOM_AK-47", akcost)
            iKeys |= MENU_KEY_3
        
}
    if( iItemsDisabled || g_iAWPPluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r4.^t%L^t^n", LANG_SERVER, "CUSTOM_AWP")
        }else if( iItemsDisabled || usermoney < awpcost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d4.^t%L\R\r%d^t^n", LANG_SERVER, "CUSTOM_AWP", awpcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y4.^t\w%L\R\y%d^t^n", LANG_SERVER, "CUSTOM_AWP", awpcost)
            iKeys |= MENU_KEY_4
        
}
    if( !( g_bAccess[id]) || !g_iAlive[id])
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\d5.^t%L^n", LANG_SERVER,"BACK")
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y5.^t\w%L^n", LANG_SERVER,"BACK")
            iKeys |= MENU_KEY_5
        
}
        
    formatex
( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y0.^t\w%L", LANG_SERVER, "EXIT" )
    iKeys |=  MENU_KEY_0|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
    show_menu
( id, iKeys, szMenu, delay, .title = "BuyMenu" )

    return PLUGIN_HANDLED
}

    // Weapon Menu Func
public MenuHandler(id, key)
{
    if(key == KEY_EXIT - 1 || !g_iAlive[id])
        return PLUGIN_HANDLED

    switch
(key)
    {
        case 0:{
            if(user_has_weapon(id,CSW_FAMAS))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_famas")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 1:{
            if(user_has_weapon(id,CSW_M4A1))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_m4a1")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 2:{
            if(user_has_weapon(id,CSW_AK47))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_ak47")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "762nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 3:{
            if(user_has_weapon(id,CSW_AWP))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_awp")
                ExecuteHamB(Ham_GiveAmmo, id, 30, "338magnum", 30)
                SetFlag( gbIsUsed, id )
            }
        }
        case 4:{
            MenuCommandCustom(id)
        }
    }
    return PLUGIN_HANDLED
}

    // Custom Menu func
public MenuHandlerCustom(id, key)
{
    if(key == KEY_EXIT - 1 || !g_iAlive[id])
        return PLUGIN_HANDLED

    switch
(key)
    {
        case 0:{
            if(g_iDGLPluginId > 0 && g_iDGLGive > 0)
            {    
                callfunc_begin_i
(g_iDGLGive, g_iDGLPluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 1:{
            if(g_iM4A1PluginId > 0 && g_iM4A1Give > 0)
            {        
                callfunc_begin_i
(g_iM4A1Give, g_iM4A1PluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 2:{
            if(g_iAK47PluginId > 0 && g_iAK47Give > 0)
            {
                callfunc_begin_i(g_iAK47Give, g_iAK47PluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 3:{
            if(g_iAWPPluginId > 0 && g_iAWPGive > 0)
            {
                callfunc_begin_i(g_iAWPGive, g_iAWPPluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 4:{
            MenuCommand(id)
        }
    }
    return PLUGIN_HANDLED
}

//================================ STOCKS ==============================//

stock giveammo(id)
{
    new weap_ids[32], num_weaps
    num_weaps 
= 0
    get_user_weapons
(id, weap_ids, num_weaps)
    for (new i = 0; i < num_weaps; i++)
    {
        new weap_id = weap_ids[i]
        new ammo = MAXBPAMMO[weap_id]
        if(!( NOCLIP_WPN_BS & (1<<weap_id)))
        {
            ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weap_id], AMMOTYPE[weap_id], MAXBPAMMO[weap_id], ammo)
        }
    }
}

stock refill(id)
{
    if(!is_user_alive(id))return;
    for(new slot = 1; slot<= 2; slot++)
    {
        new iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer[slot])
        if(pev_valid(iWeapon)!=2)continue;
        while( iWeapon > 0 )
        {
            new iId = fm_get_weapon_id(iWeapon)
            if( !( NOCLIP_WPN_BS & (1<<iId) ) )
            {
                fm_set_weapon_ammo(iWeapon, MAXCLIP[iId])
                iWeapon = get_pdata_cbase(iWeapon, m_pNext, XO_WEAPON)
            }
        }
    }
}

stock drop_weapons(id, dropwhat)
{
    static weapons[32], num, i, weaponid
    num 
= 0
    get_user_weapons
(id, weapons, num)

    for (= 0; i < num; i++)
    {
        weaponid = weapons[i]
        if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM) || HasShield(id)) 
        
|| (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM )))
        {
            static wname[32]
            get_weaponname(weaponid, wname, charsmax(wname))
            switch(droptype)
            {
                case 0: ham_strip_weapon(id, wname)
                case 1: engclient_cmd(id, "drop", wname)
            }
        }
    }
}

stock ham_strip_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0
    
    new wId 
= get_weaponid(weapon)
    if(!wId) return 0
    
    new wEnt
    while
((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
    if(!wEnt) return 0
    
    new iTmp
    if
(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
    
    if
(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0
    
    ExecuteHamB
(Ham_Item_Kill, wEnt)
    set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId))
    
    return 1
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32], i
    static msg
[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!n", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
   
    if
(id)players[0] = id; else get_players(players, count, "ch")
    {
        for(= 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()
            }
        }
    }
}

stock fm_set_user_armor(index, armor) 
{
    set_pev(index, pev_armorvalue, float(armor))
    return 1
}

stock fm_set_user_health(index, health) 
{
    health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index)
    return 1
}

stock fm_give_item(index, const item[]) 
{
    if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5))
        return 0
    
    new ent 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
    if (!pev_valid(ent))
        return 0

    new Float
:origin[3]
    pev(index, pev_origin, origin)
    set_pev(ent, pev_origin, origin)
    set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
    dllfunc(DLLFunc_Spawn, ent)

    new save = pev(ent, pev_solid)
    dllfunc(DLLFunc_Touch, ent, index)
    if (pev(ent, pev_solid) != save)
        return ent

    engfunc
(EngFunc_RemoveEntity, ent)

    return -1


Исправил плагины сверху

Добавлено спустя 3 минуты 48 секунд:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <fakemeta> 
#include <fakemeta_util>
#include <csx>

#define PLUGIN "EvilArmy"
#define VERSION "1.3 Fix 1"
#define AUTHOR "OverGame" //Исходник Arctic
#define ADM_MENU ADMIN_RCON

#pragma tabsize 0

new g_vault;
new 
Handle:g_SqlTuple;
new 
g_Error[512]; 
enum _:PlData
{
    
gId,gExp,gLevel,gTempKey
};
new 
gChatTopg_bonus_score[33];
new 
g_typeg_enabledg_recievedbool:g_showrecievedg_hudmsg1g_hudmsg2;
new 
stats[8],bodyhits[8],irank;
new 
UserData[33][PlData];
new 
gMessage[256];
new 
g_MsgHud,MaxPlayers,levelUp[33],gSayText;
new 
bool:restr_blocked;
new const 
gRankNames[][] = 
{
    
"I_0","I_1","I_2","I_3","I_4","I_5","I_6","I_7","I_8","I_9","I_10","I_11","I_12","I_13","I_14",        
    
"I_15","I_16","I_17","I_18","I_19","I_20"
};
new const 
gLevels[] = 
{
    
0,15,30,60,100,180,350,750,999,1500,2200,2800,3200,3900,4500,5000,5500,6000,7000,8000
};
new const 
gNades[][] =
{
    {
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {
0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1}
}
new const 
restrict_bonus[][] =
{
    
"35hp",
    
"most_wanted",
    
"ka_wintershank"
};
new 
gRestrictMaps,gAdminGMsg,gBonusLevel,gFlash,gSmoke,gHe,gHpbylevel,gApbylevel,gEvilMenu,gHudColor,
gArmyChat,gSaveType,gTableName,gHost,gUser,gPassword,gDbName,gSlash,
gTk,gLostXpTk,gLevelUpmsg,gAllChat;
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_cvar("evil_army",VERSIONFCVAR_SERVER FCVAR_SPONLY);
    
register_clcmd("evil_setmenu","set_level_menu");
    
register_clcmd("menu","menu_server");
    
register_clcmd("say /menu","menu_server");
    
register_clcmd("say /bonus","evil_army_menu");
    
register_clcmd("say /rs","reset_score");
    
set_cvar_string("evil_army",VERSION);
    
gRestrictMaps     register_cvar"restrict_maps",         "0");
    
gBonusLevel    register_cvar"level_bonus",         "0");
    
gFlash        register_cvar"flash_nades",         "0");
    
gSmoke        register_cvar"smoke_nades",         "1");
    
gHe        register_cvar"he_nades",         "1");
    
gHpbylevel    register_cvar"hp_by_level",         "3");
    
gApbylevel    register_cvar"ap_by_level",         "5");
    
gChatTop    register_cvar"chat_top",         "1");
    
gArmyChat    register_cvar"army_chat",         "1");
    
gEvilMenu    register_cvar"evil_menu",         "1");
    
gHudColor    register_cvar"evil_chud",         "0");
    
gAdminGMsg    register_cvar"admin_color",        "1");
    
gSaveType     register_cvar"save_type",         "0");
    
gSlash         register_cvar"slash_messages",         "1");
    
g_type register_cvar("amx_evildamage","1");
    
g_recieved register_cvar("amx_evildamage_recieved","1")    ;
    
gTk         register_cvar"team_kill_lost_xp",       "1");
    
gLostXpTk     register_cvar"lost_xp_val",         "3");
    
gLevelUpmsg    register_cvar"level_up_msg",         "1");
    
gAllChat    register_cvar"all_chat",         "1");    
    
gHost        register_cvar"mysql_host",         "127.0.0.1");
    
gUser        register_cvar"mysql_user",         "root");
    
gPassword    register_cvar"mysql_password",     "qwerty");
    
gDbName        register_cvar"mysql_db_name",     "test");
    
gTableName    register_cvar"mysql_table_name",     "evil_army");
    
register_logevent"EventRoundStart"2"1=Round_Start" );
    
set_task(1.0,"Info",_,_,_"b")
    
register_event"DeathMsg","EventDeath","a");
    
register_event("Damage""on_damage""b""2!0""3=0""4!0");    
    
register_event("HLTV""on_new_round""a""1=0""2=0");
    
register_message(get_user_msgid("SayText"), "msg_SayText");
    
gSayText get_user_msgid ("SayText");
    
g_MsgHud CreateHudSyncObj();
    
g_hudmsg1 CreateHudSyncObj()    
    
g_hudmsg2 CreateHudSyncObj()
    
MaxPlayers get_maxplayers();
    
register_dictionary("evil_army.txt" );
    if(
get_pcvar_num(gRestrictMaps))
    {
        new 
szMapName[64];
        
get_mapname(szMapName,63);
        for(new 
0sizeof restrict_bonusa++)
        {
            if(
equal(szMapNamerestrict_bonus[a]))
            {
                
restr_blocked true;
                
log_amx("[Evil Army] weapon menu is blocked on map [%s].",restrict_bonus[a]);
                break;
            } else {
                
restr_blocked false;
            }    
        }
    }
    switch(
get_pcvar_num(gSaveType))
    {
        case 
0
        {
            
g_vault nvault_open("evil_army");
        }
        case 
1
        {
            
set_task(0.1"sql_init");
        }
        default: 
        {
            
g_vault nvault_open("evil_army");
        }
    }
    if(
get_pcvar_num(gArmyChat))
    {
        
register_clcmd("say""hookSay"
        
register_clcmd("say_team""hookSayTeam");
    }
}
public 
plugin_cfg()
{
    new 
szCfgDir[64], szFile[192];
    
get_configsdir(szCfgDircharsmax(szCfgDir));
    
formatex(szFile,charsmax(szFile),"%s/evil_army.cfg",szCfgDir);
    if(
file_exists(szFile))
        
server_cmd("exec %s"szFile);
}

public 
set_level_menu(id)
{
    if(
get_user_flags(id) & ADM_MENU)
    {
        
UserData[id][gTempKey] = 0;
        new 
players[32], num;
        
get_players(playersnum)
        new 
tempname[32], info[10];
        new 
players_menu menu_create("Меню званий:""set_level_hl")
        for(new 
0numi++)
        {
            
get_user_name(players[i], tempname31);
            
num_to_str(players[i], info9);
            
menu_additem(players_menutempnameinfo0);
        }
        
        
menu_setprop(players_menuMPROP_BACKNAME"Назад")
        
menu_setprop(players_menuMPROP_NEXTNAME"Далее")
        
menu_setprop(players_menuMPROP_EXITNAME"Выход")
        
        
menu_display(idplayers_menu0);
    }
    return 
PLUGIN_CONTINUE
}
public 
set_level_hl(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], _accesscallback;
    
menu_item_getinfomenuitem_accessdatacharsmax(data), __callback);
    
UserData[id][gTempKey] = str_to_num(data);
    
set_level_pl(id);
    return 
PLUGIN_CONTINUE
}

public 
reset_score(id){
new 
name[33]
get_user_name(idname32)
cs_set_user_deaths(id0)
set_user_frags(id0)
cs_set_user_deaths(id0)
set_user_frags(id0)
ColorChat(0,NORMAL,"^4[%L]^3%s^1, обнулил свой счет!"LANG_PLAYER"PRIFIX"name)
}

public 
menu_server(id)
{
        if(
get_pcvar_num(gEvilMenu) == 1){
        static 
s_MenuItem[255]
        
formatex(s_MenuItemcharsmax(s_MenuItem), "\yМеню сервера^nВы: \r%L"LANG_PLAYERgRankNames[UserData[id][gLevel]])
        new 
menu menu_create(s_MenuItem"func_menu_server")
 
        
menu_additem(menu"\yОбнулить счет","1")
        
menu_additem(menu"\yЗабанить игрока","2")
        
menu_additem(menu"\yКупить админку","3")
        
menu_additem(menu"\yМеню армии","4")
        
        
menu_setprop(menuMPROP_BACKNAME"Назад")
        
menu_setprop(menuMPROP_NEXTNAME"Далее")
        
menu_setprop(menuMPROP_EXITNAME"Выход")
 
        
menu_display(id,menu,0)
        }
        return 
PLUGIN_HANDLED
}

public 
evil_army_menu(id)
{
        static 
s_MenuItem[255]
        
formatex(s_MenuItemcharsmax(s_MenuItem), "\yМеню сервера^nБонусы: \r%d"g_bonus_score[id])
        new 
menu menu_create(s_MenuItem"func_evil_menu")
        if(
get_user_flags(id) & ADM_MENU){
        
menu_additem(menu"\yВыдать звание","1")
        }else{
        
menu_additem(menu"\dВыдать звание","1")
        }
        if(
g_bonus_score[id] > 1){
        
menu_additem(menu"\yЖизни [255]","2")
        }else{
        
menu_additem(menu"\dЖизни [255]","2")
        }
        if(
g_bonus_score[id] > 1){
        
menu_additem(menu"\yБронежилет [255]","3")
        }else{
        
menu_additem(menu"\dБронежилет [255]","3")
        }
        if(
cs_get_user_team(id) == CS_TEAM_CT){
        if(
g_bonus_score[id] > 2){
        
menu_additem(menu"\yВзять AK-47","4")
        }else{
        
menu_additem(menu"\dВзять AK-47","4")
        }
        }else
        if(
cs_get_user_team(id) == CS_TEAM_T){
        if(
g_bonus_score[id] > 2){
        
menu_additem(menu"\yВзять M4A1","4")
        }else{
        
menu_additem(menu"\dВзять M4A1","4")
        }
        }
        
        
        
menu_setprop(menuMPROP_BACKNAME"Назад")
        
menu_setprop(menuMPROP_NEXTNAME"Далее")
        
menu_setprop(menuMPROP_EXITNAME"Выход")
 
        
menu_display(id,menu,0)
        return 
PLUGIN_HANDLED
}

public 
set_level_pl(id)
{
    static 
szText[1024];
    
formatex(szText,charsmax(szText), "\r%L"id"CHOOSE_RANKN");
    new 
menu menu_createszText"set_level_phl");
    for(new 
1sizeof(gRankNames); i++)
    {
        new 
szItem[100],lang[10],num[5];
        
format(lang,9,"I_%d",i);
        
format(num,4,"%d",i);
        
formatex(szItem,charsmax(szItem),"%L",id,lang);
        
menu_additem(menu,szItem,num);
    }
    
menu_setprop(menuMPROP_BACKNAME"Назад");
    
menu_setprop(menuMPROP_NEXTNAME"Далее");
    
menu_setprop(menuMPROP_EXITNAME"Выйти");
    
menu_displayidmenu,0);
    return 
PLUGIN_CONTINUE;
}
public 
set_level_phl(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], _accesscallback;
    
menu_item_getinfomenuitem_accessdatacharsmax(data), __callback);
    new 
level str_to_num(data);
    if(
UserData[id][gTempKey] >= && UserData[id][gTempKey] <= 32)
    {
        
UserData[UserData[id][gTempKey]][gLevel] = level;
        
UserData[UserData[id][gTempKey]][gExp] = gLevels[level-1];
        if(!
is_user_connected(id)||!is_user_connected(UserData[id][gTempKey]))return 1;
        new 
szName[2][32];
        
get_user_name(idszName[0], 31);
        
get_user_name(UserData[id][gTempKey], szName[1], 31);
        
ColorChat(0,GREY,"^3Админ ^4%s ^3выдал звание ^4%L ^3игроку ^4%s^3.",szName[0],LANG_PLAYER,gRankNames[level],szName[1])
    } else {
        
set_level_menu(id);
    }
    
UserData[id][gTempKey] = 0;
    return 
PLUGIN_HANDLED;
}

public 
sql_init()
{
    new 
szTableName[64],szHost[64],szUser[64],szPassword[64],szDbName[64],ErrorCode;
    
get_pcvar_string(gTableName,szTableName,63);
    
get_pcvar_string(gHost,szHost,63);
    
get_pcvar_string(gUser,szUser,63);
    
get_pcvar_string(gPassword,szPassword,63);
    
get_pcvar_string(gDbName,szDbName,63);
    
g_SqlTuple SQL_MakeDbTuple(szHost,szUser,szPassword,szDbName);
    new 
Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(
SqlConnection == Empty_Handle)
        
set_fail_state(g_Error);

    new 
Handle:Queries SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `%s`(`id` INT(10) NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`exp` INT(10) NOT NULL,`level` INT(10) NOT NULL,PRIMARY KEY (id));"szTableName)
    if(!
SQL_Execute(Queries))
    {
        
SQL_QueryError(Queries,g_Error,charsmax(g_Error))
        
set_fail_state(g_Error);
    }
    
SQL_QueryAndIgnore(SqlConnection"DELETE FROM %s WHERE exp=0 and level=1;",szTableName);
    
SQL_FreeHandle(Queries)
    
SQL_FreeHandle(SqlConnection);
}

public 
plugin_end()
{
    switch(
get_pcvar_num(gSaveType))
    {
        case 
0
        {
            
nvault_close(g_vault);
        }
        case 
1
        {
            if(
g_SqlTuple != Empty_Handle)
                
SQL_FreeHandle(g_SqlTuple);
        }
        default: 
        {
            
nvault_close(g_vault);
        }
    }
}

public 
client_putinserver(id)
{
    
g_bonus_score[id] = 0;
    
UserData[id] = UserData[0];
    
load_data(id);
}

public 
client_disconnect(id)
{
    
save_usr(id);
    
UserData[id] = UserData[0];
}

public 
on_new_round()
{
    
g_enabled get_pcvar_num(g_type)
    if(
get_pcvar_num(g_recieved)) g_showrecieved true    
}

public 
on_damage(id)
{
    if(
g_enabled)
    {        
        static 
attackerattacker get_user_attacker(id)
        static 
damagedamage read_data(2)        
        if(
g_showrecieved)
        {            
            
set_hudmessage(255000.450.5020.14.00.10.1, -1)
            
ShowSyncHudMsg(idg_hudmsg2"Вам нанесли: %i^n"damage)        
        }
        if(
is_user_connected(attacker))
        {
            switch(
g_enabled)
            {
                case 
1: {
                    
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
                    
ShowSyncHudMsg(attackerg_hudmsg1"Вы нанесли: %i^n"damage)                
                }
                case 
2: {
                    if(
fm_is_ent_visible(attacker,id))
                    {
                        
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
                        
ShowSyncHudMsg(attackerg_hudmsg1"Вы нанесли: %i^n"damage)                
                    }
                }
            }
        }
    }
}

public 
check_level(id)
{
    if(
UserData[id][gLevel] <= 0)
        
UserData[id][gLevel] = 1;
        
    if(
UserData[id][gExp] < 0)
        
UserData[id][gExp] = 0;

    while(
UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) 
    {
        
UserData[id][gLevel]++;
        
levelUp[id] = 1;
        switch(
get_pcvar_num(gLevelUpmsg))
        {
            case 
1
            {
                new 
szName[33];
                
get_user_name(idszName32);
                static 
buffer[192],len;
                
len format(buffercharsmax(buffer), "^4[^3%L^4]^1 %L ^4%s^1",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"PLAYER",szName);
                
len += format(buffer[len], charsmax(buffer) - len" %L",LANG_PLAYER,"NEW_LEVEL"); 
                
len += format(buffer[len], charsmax(buffer) - len" ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
                
len += format(buffer[len], charsmax(buffer) - len"%L",LANG_PLAYER,"CONTR");
                
ColorChat(0,NORMAL,buffer);
            }
            case 
2:
            {
                new 
szName[33];
                
get_user_name(idszName32);
                static 
buffer[192],len;
                
len format(buffercharsmax(buffer), "^4[^3%L^4]^1 %L ^4%s^1",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"PLAYER",szName);
                
len += format(buffer[len], charsmax(buffer) - len" %L",LANG_PLAYER,"NEW_LEVEL"); 
                
len += format(buffer[len], charsmax(buffer) - len" ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
                
len += format(buffer[len], charsmax(buffer) - len"%L",LANG_PLAYER,"CONTR");
                
ColorChat(id,NORMAL,buffer);
            }
        }
    }
}
public 
EventDeath()
{
    new 
iKiller read_data(1);
    new 
iVictim read_data(2);
    new 
head read_data(3);
    if(
iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) && UserData[iKiller][gLevel] <= 19)
    {
        if(
get_pcvar_num(gTk) && get_user_team(iKiller) == get_user_team(iVictim))
        {
            
UserData[iKiller][gExp] -= get_pcvar_num(gLostXpTk);
            return 
PLUGIN_CONTINUE;
        }
        new 
weapon get_user_weapon(iKiller);
        
UserData[iKiller][gExp] += 1;
        if(
weapon == CSW_KNIFE)
            
UserData[iKiller][gExp] += 3;
            
        if(
head)
            
UserData[iKiller][gExp] += 2;
            
g_bonus_score[iKiller] += 1;

        if(
weapon == CSW_HEGRENADE)
            
UserData[iKiller][gExp] += 1;

        
check_level(iKiller);
    }
    return 
PLUGIN_CONTINUE;
}
public 
EventRoundStart()
{
    for(new 
id 1id <= MaxPlayersid++)
    {
        if(
is_user_alive(id) && is_user_connected(id))
        {
            if(
restr_blocked)
                return 
PLUGIN_CONTINUE;
            
            if(
get_pcvar_num(gFlash) && gNades[0][UserData[id][gLevel]])
                
give_item(id,"weapon_flashbang");
            
            if(
get_pcvar_num(gSmoke) && gNades[1][UserData[id][gLevel]])
                
give_item(id,"weapon_smokegrenade");
                
            if(
get_pcvar_num(gHe) && gNades[2][UserData[id][gLevel]])
                
give_item(id,"weapon_hegrenade");
            
            if(
get_pcvar_num(gHpbylevel) != 0)
                
set_user_health(id,get_user_health(id)+get_pcvar_num(gHpbylevel)*UserData[id][gLevel]);
                
            if(
get_pcvar_num(gApbylevel) != 0)
                
set_user_armor(id,get_user_armor(id)+get_pcvar_num(gApbylevel)*UserData[id][gLevel]);    
                
            if(
levelUp[id] == && get_pcvar_num(gBonusLevel))
            {
                
GetWeapon(id);
                
levelUp[id] = 0;
            }
        }
    }
    return 
PLUGIN_CONTINUE;
}
public 
load_data(id)
{
    new 
szName[33];
    
get_user_name(id,szName,32);
    switch(
get_pcvar_num(gSaveType))
    {
        case 
0
        {
            static 
data[256], timestamp;
            if(
nvault_lookup(g_vaultszNamedatasizeof(data) - 1timestamp) )
            {
                
next_load_data(iddatasizeof(data) - 1);
                return;
            } else {
                
register_player(id,"");
            }
        }
        case 
1
        {
            new 
szTableName[32],ErrorCode;
            new 
Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            
SQL_QuoteString(SqlConnectionszName32szName);
            
get_pcvar_string(gTableName,szTableName,31);
            if(
SqlConnection == Empty_Handle)
            {
                
log_amx(g_Error);
                return ;
            }
            new 
Handle:Query SQL_PrepareQuery(SqlConnection,"SELECT id FROM %s WHERE name = '%s';",szTableName,szName)
            if(!
SQL_Execute(Query))
            {
                
SQL_QueryError(Query,g_Error,511);
                
log_amx(g_Error);
                return ;
            }
            if(
SQL_NumResults(Query) > )
            {
                
next_load_data(id""0);
            } else {
                
register_player(id,"");
            }
            
SQL_FreeHandle(Query);
            
SQL_FreeHandle(SqlConnection);
        }
        default: 
        {
            static 
data[256], timestamp;
            if(
nvault_lookup(g_vaultszNamedatasizeof(data) - 1timestamp) )
            {
                
next_load_data(iddatasizeof(data) - 1);
                return;
            } else {
                
register_player(id,"");
            }
        }
    }
}
public 
next_load_data(id,data[],len)
{
    new 
szName[33];
    
get_user_name(id,szName,32);
    switch(
get_pcvar_num(gSaveType))
    {
        case 
0
        {
            
replace_all(data,len,"|"," ");
            new 
exp[5],level[5];
            
parse(data,exp,4,level,4);
            
UserData[id][gExp]= str_to_num(exp);
            
UserData[id][gLevel]= str_to_num(level);
        }
        case 
1
        {
            new 
szTableName[32],ErrorCode;
            new 
Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            
SQL_QuoteString(SqlConnectionszName32szName);
            
get_pcvar_string(gTableName,szTableName,31);
            if(
SqlConnection == Empty_Handle)
            {
                
log_amx(g_Error);
                return ;
            }
            new 
Handle:Query SQL_PrepareQuery(SqlConnection,"SELECT id,exp,level FROM %s WHERE name = '%s';",szTableName,szName)
            if(!
SQL_Execute(Query))
            {
                
SQL_QueryError(Query,g_Error,511)
                
log_amx(g_Error)
            }
            if( 
SQL_NumResults(Query) > 0)
            {
                
UserData[id][gId]= SQL_ReadResult(Query,0); 
                
UserData[id][gExp]= SQL_ReadResult(Query,1); 
                
UserData[id][gLevel]= SQL_ReadResult(Query,2); 
            }
            
SQL_FreeHandle(Query);
            
SQL_FreeHandle(SqlConnection);
        }
        default: 
        {
            
replace_all(data,len,"|"," ");
            new 
exp[5],level[5];
            
parse(data,exp,4,level,4);
            
UserData[id][gExp]= str_to_num(exp);
            
UserData[id][gLevel]= str_to_num(level);
        }
    }
    if(
UserData[id][gLevel] <= 0)
        
UserData[id][gLevel] = 1;

    while(
UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) 
        
UserData[id][gLevel]++;
}
public 
register_player(id,data[])
{
    new 
szName[33];
    
get_user_name(id,szName,32);
    switch(
get_pcvar_num(gSaveType))
    {
        case 
0
        {
            
UserData[id][gExp]= 0
            UserData
[id][gLevel]= 1;
        }
        case 
1
        {
            new 
szTableName[32],ErrorCode;
            new 
Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            
SQL_QuoteString(SqlConnectionszName32szName);
            
get_pcvar_string(gTableName,szTableName,31);
            if(
SqlConnection == Empty_Handle)
            {
                
log_amx(g_Error);
                return ;
            }
            new 
Handle:Query SQL_PrepareQuery(SqlConnection,"INSERT INTO %s (`id`,`name`,`exp`,`level`) VALUES (NULL,'%s','0','1');",szTableName,szName);
            if(!
SQL_Execute(Query))
            {
                
SQL_QueryError(Query,g_Error,511)
                
log_amx(g_Error)
            }
            
SQL_FreeHandle(Query);
            
SQL_FreeHandle(SqlConnection);
            
UserData[id][gExp] = 0;
            
UserData[id][gLevel] = 1;
        }
        default: 
        {
            
UserData[id][gExp]= 0
            UserData
[id][gLevel]= 1;
        }
    }
}
public 
save_usr(id)
{
    new 
szName[33];
    
get_user_name(id,szName,32);
    switch(
get_pcvar_num(gSaveType))
    {
        case 
0
        {
            static 
data[256];
            
formatex(data255"|%i|%i|"UserData[id][gExp],UserData[id][gLevel]);
            
nvault_set(g_vaultszNamedata);
        }
        case 
1
        {
            new 
saveq[256],szTableName[32];
            
get_pcvar_string(gTableName,szTableName,31);
            
format(saveq,255,"UPDATE `%s` SET `exp`='%d',`level`='%d' WHERE `id`='%d';"szTableName,UserData[id][gExp],UserData[id][gLevel],UserData[id][gId])
            
SQL_ThreadQuery(g_SqlTuple,"QueryHandler",saveq);
        }
        default: 
        {
            static 
data[256];
            
formatex(data255"|%i|%i|"UserData[id][gExp],UserData[id][gLevel]);
            
nvault_set(g_vaultszNamedata);
        }
    }
}
public 
hookSay(id)
{
    if(
is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
        return 
PLUGIN_CONTINUE;

    new 
message[192],Len;
    
read_args(message191);
    
remove_quotes(message);
    if(
is_admin_msg(message))
        return 
PLUGIN_CONTINUE;
    
    if(
is_empty_message(message))
    {
        
ColorChat(id,NORMAL,"^4[^3%L^4]^1 %L",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"EMPTY_MSG")
        return 
PLUGIN_HANDLED
    
}
    if(
get_pcvar_num(gSlash))
    {
        if(
is_has_slash(message))
            return 
PLUGIN_HANDLED_MAIN
    
}
    new 
szName[32];
    
get_user_name(id,szName,31);
    
irank get_user_stats(id,stats,bodyhits)
    if(
is_user_admin(id))
    {
    if(
get_pcvar_num(gChatTop) == 0){
    
Len format(gMessage[Len], charsmax(gMessage) - 1"^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }else
    if(
get_pcvar_num(gChatTop) == 1){
    
Len format(gMessage[Len], charsmax(gMessage) - 1"^4[^3Топ: %d^4][^3%L^4] ",irank,LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }
        switch(
get_pcvar_num(gAdminGMsg))
        {
            case 
1:
            {
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s^4 : ",szName);
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"%s",message);
            }
            case 
2:
            {
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s^4 : ",szName);
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s",message);
            }
            default:
            {
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s^4 : ",szName);
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^1%s",message);
            }
        }
        
Chat(id,0,get_pcvar_num(gAllChat));
    }
    else 
    {
    if(
get_pcvar_num(gChatTop) == 0){
    
Len format(gMessage[Len], charsmax(gMessage) - 1"^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }else
    if(
get_pcvar_num(gChatTop) == 1){
    
Len format(gMessage[Len], charsmax(gMessage) - 1"^4[^3Топ: %d^4][^3%L^4] ",irank,LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }
        
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s^4 : ",szName);
        
Len += format(gMessage[Len], charsmax(gMessage) - 1"^1%s",message);
        
Chat(id,0,get_pcvar_num(gAllChat));
    }
    return 
PLUGIN_HANDLED_MAIN
}
public 
hookSayTeam(id)
{
    if(
is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
        return 
PLUGIN_CONTINUE;

    new 
message[192],Len;
    
read_args(message191);
    
remove_quotes(message);
    if(
is_admin_msg(message))
        return 
PLUGIN_CONTINUE;
        
    if(
is_empty_message(message))
    {
        
ColorChat(id,GREY,"^4[^3%L^4]^1 %L",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"EMPTY_MSG");
        return 
PLUGIN_HANDLED
    
}
    if(
get_pcvar_num(gSlash))
    {
        if(
is_has_slash(message))
            return 
PLUGIN_HANDLED_MAIN
    
}
    new 
szName[32];
    
get_user_name(id,szName,31);
    if(
is_user_admin(id))
    {
        
Len format(gMessage[Len], charsmax(gMessage) - 1"^3%L^1 ^4[^3%L^4] ^3%s^4 : ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]],szName);        
        switch(
get_pcvar_num(gAdminGMsg))
        {
            case 
1:
            {
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"%s",message);
            }
            case 
2:
            {
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s",message);
            }
            default:
            {
                
Len += format(gMessage[Len], charsmax(gMessage) - 1"^1%s",message);
            }
        }
        
Chat(id,1,get_pcvar_num(gAllChat));
    }
    else 
    {
        
Len format(gMessage[Len], charsmax(gMessage) - 1"^3%L^1 ^4[^3%L^4] ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
        
Len += format(gMessage[Len], charsmax(gMessage) - 1"^3%s^4 : ",szName);
        
Len += format(gMessage[Len], charsmax(gMessage) - 1"^1%s",message);
        
Chat(id,1,get_pcvar_num(gAllChat));
    }
    return 
PLUGIN_HANDLED_MAIN
}
stock is_admin_msg(const Message[])
{
    if(
Message[0] == '@')
        return 
true;
        
    return 
false;
}
stock is_empty_message(const Message[])
{
    if(
equal(Message"") || !strlen(Message))
        return 
true;
        
    return 
false;
}
stock Chat(id,team,chat_type)
{
    if(
team)
    {
        if(
chat_type)
        {
            for(new 
1<= MaxPlayersi++)
            {
                if(!
is_user_connected(i))
                    continue
            
                if(
get_user_team(id) == get_user_team(i))
                    
send_message(gMessageidi);
            }
        } else {
            if(
is_user_alive(id))
            {
                for(new 
1<= MaxPlayersi++)
                {
                    if(!
is_user_connected(i) || !is_user_alive(i))
                        continue
                
                    if(
get_user_team(id) == get_user_team(i))
                        
send_message(gMessageidi);
                }
            } else if(!
is_user_alive(id)){
                for(new 
1<= MaxPlayersi++)
                {
                    if(!
is_user_connected(i) || is_user_alive(i))
                        continue
                
                    if(
get_user_team(id) == get_user_team(i))
                        
send_message(gMessageidi);
                }
            }
        }
    } else{
        if(
chat_type)
        {
            for(new 
1<= MaxPlayersi++)
            {
                if(!
is_user_connected(i))
                    continue
            
                
send_message(gMessageidi);
            }
        } else {
            if(
is_user_alive(id))
            {
                for(new 
1<= MaxPlayersi++)
                {
                    if(!
is_user_connected(i) || !is_user_alive(i))
                        continue
                
                    
send_message(gMessageidi);
                }
            } else if(!
is_user_alive(id)){
                for(new 
1<= MaxPlayersi++)
                {
                    if(!
is_user_connected(i) || is_user_alive(i))
                        continue
                
                    
send_message(gMessageidi);
                }
            }
        }
    }
}
stock send_message(const message[], const id, const i)
{
    
message_begin(MSG_ONEgSayText, {000}, i)
    
write_byte(id)
    
write_string(message)
    
message_end()
}
stock is_has_slash(const Message[])
{
    if(
Message[0] == '/')
        return 
true;
        
    return 
false;
}

public 
client_infochanged(id)
{
    new 
newname[32],oldname[32]
    
get_user_info(id"name"newname,31)
    
get_user_name(id,oldname,31)
    if(!
is_user_connected(id) || is_user_bot(id)) 
        return 
PLUGIN_CONTINUE
        
    
if(!equali(newnameoldname))
    {
        
set_user_info(id,"name",oldname);
        
log_amx("namechange BLOCKED.");
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}
public 
msg_SayText()
{
    new 
arg[32]
    
get_msg_arg_string(2arg31)
    if(
containi(arg,"name")!=-1)
        return 
PLUGIN_HANDLED

    
return PLUGIN_CONTINUE
}
public 
plugin_natives()
{
    
register_native("get_user_exp""native_get_user_exp"1);
    
register_native("get_user_lvl""native_get_user_lvl"1);
    
register_native("set_user_exp""native_set_user_exp"1);
    
register_native("set_user_lvl""native_set_user_lvl"1);
    
register_native("get_user_rankname""native_get_user_rankname"1);
}
public 
native_set_user_exp(id,num)
{
    
UserData[id][gExp] = num;
}
public 
native_set_user_lvl(id,num)
{
    
UserData[id][gLevel] = num;
}
public 
native_get_user_exp(id)
{
    return 
UserData[id][gExp];
}
public 
native_get_user_lvl(id)
{
    return 
UserData[id][gLevel];
}
public 
native_get_user_rankname(id)
{
    static 
szRankName[64];
    
format(szRankNamecharsmax(szRankName), "%L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    return 
szRankName;
}
public 
Info()
{
    for(new 
id 1id <= MaxPlayersid++)
    {
        if(!
is_user_bot(id) && is_user_connected(id))
        {
            if(
get_pcvar_num(gHudColor) == 0){
            
set_hudmessage(20344490.010.2001.01.0__, -1);
            }else
            if(
get_pcvar_num(gHudColor) == 1){
            
set_hudmessage(136255850.010.2001.01.0__, -1);
            }
            
            static 
buffer[192], len;
            
len format(buffercharsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
            
len += format(buffer[len], charsmax(buffer) - len" %L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
            if(
UserData[id][gLevel] <= 19)
            {
                
len += format(buffer[len], charsmax(buffer) - len"^n%L",LANG_PLAYER,"PL_XP",UserData[id][gExp],gLevels[UserData[id][gLevel]]);
            } else {
                
len += format(buffer[len], charsmax(buffer) - len"^n%L",LANG_PLAYER,"PL_MAX");
            }
            
irank get_user_stats(id,stats,bodyhits)
            
ShowSyncHudMsg(idg_MsgHud"%s^n%L^n%L"bufferLANG_PLAYER"PL_RANK"irankget_statsnum(), LANG_PLAYER"GROUP_VK");
        }
    }
    return 
PLUGIN_CONTINUE
}
public 
GetWeapon(id)
{
    new 
szText[700 char];
    
formatexszTextcharsmaxszText ), "%L"id"GW_TITLE");
    new 
menu menu_createszText"gw_menu" );
    
formatexszTextcharsmaxszText ), "awp");
    
menu_additemmenuszText"1");
    
formatexszTextcharsmaxszText ), "ak-47");
    
menu_additemmenuszText"2");
    
formatexszTextcharsmaxszText ), "m4a1");
    
menu_additemmenuszText"3");
    
formatexszTextcharsmaxszText ), "famas");
    
menu_additemmenuszText"4");
    
menu_setpropmenuMPROP_EXITMEXIT_ALL );
    
menu_displayidmenu,0);
    return 
PLUGIN_CONTINUE;
}
public 
gw_menu(id,menu,item)
{
    if( 
item == MENU_EXIT )
    {
        return 
PLUGIN_HANDLED;
    }
    
    new 
data], iName64 ], accesscallback;
    
menu_item_getinfomenuitemaccessdatacharsmaxdata ), iNamecharsmaxiName ), callback );
    new 
key str_to_numdata );
    switch( 
key )
    {
        case 
1:
        {
            
give_item(id,"weapon_awp");
            
cs_set_user_bpammoidCSW_AWP100);
        }
        case 
2:
        {
            
give_item(id,"weapon_ak47");
            
cs_set_user_bpammoidCSW_AK47200);
        }
        case 
3:
        {
            
give_item(id,"weapon_m4a1");
            
cs_set_user_bpammoidCSW_M4A1200);
        }
        case 
4:
        {
            
give_item(id,"weapon_famas");
            
cs_set_user_bpammoidCSW_FAMAS200);
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
func_menu_server(idmenuitem)
{
        if(
item == MENU_EXIT)
        {
                
menu_destroy(menu)
                return 
PLUGIN_HANDLED
        
}
 
        new 
data[6], iName[64], accesscallback
        menu_item_getinfo
(menuitemaccessdata5iName63callback)
 
        new 
key str_to_num(data)
 
        switch(
key)
        {
        case 
1:{
        
reset_score(id)
               }
        case 
2:{
        
client_cmd(id"say /voteban")
               }
        case 
3:{
        
client_cmd(id"say /adminka")
               }
        case 
4:{
        
evil_army_menu(id)
               }
        }
        return 
PLUGIN_HANDLED
}

public 
func_evil_menu(idmenuitem)
{
        if(
item == MENU_EXIT)
        {
                
menu_destroy(menu)
                return 
PLUGIN_HANDLED
        
}
 
        new 
data[6], iName[64], accesscallback
        menu_item_getinfo
(menuitemaccessdata5iName63callback)
 
        new 
key str_to_num(data)
 
        switch(
key)
        {
        case 
1:{
        if(
get_user_flags(id) & ADM_MENU)
        
set_level_menu(id)
               }
        case 
2:{
        if(
g_bonus_score[id] > 1){
        
set_user_health(id255);
        
g_bonus_score[id] -= 2;
               }
        }
        case 
3:{
        if(
g_bonus_score[id] > 1){
        
set_user_armor(id255);
        
g_bonus_score[id] -= 2;
               }
        }
        case 
4:{
        if(
cs_get_user_team(id) == CS_TEAM_CT){
        if(
g_bonus_score[id] > 2){
        
give_item(id,"weapon_ak47");
        
cs_set_user_bpammoidCSW_AK47200);
        
g_bonus_score[id] -= 3;
        }
        }else
        if(
cs_get_user_team(id) == CS_TEAM_T){
        if(
g_bonus_score[id] > 2){
        
give_item(id,"weapon_m4a1");
        
cs_set_user_bpammoidCSW_M4A1200);
        
g_bonus_score[id] -= 3;
        }
        }
        }
        }
        return 
PLUGIN_HANDLED
}

public 
QueryHandler(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    switch(
FailState)
    {
        case -
2log_amx("[Evil Army] Failed to connect (%d): %s"ErrcodeError);
        case -
1log_amx("[Evil Army] (%d): %s"ErrcodeError);
    }
    return 
PLUGIN_HANDLED
}
  
Аватара пользователя
lop50956
 
Сообщения: 178
Зарегистрирован: 29 ноя 2016, 00:36
Забанен
Благодарил (а): 18 раз.
Поблагодарили: 16 раз.
Опыт программирования: Больше трех лет
Языки программирования: Php

Re: Исправить ошибки в плагинах

Сообщение erzhan2396 » 17 мар 2017, 19:54

lop50956 писал(а):
Код: Выделить всё
// Copyright © 2015 Vaqtincha

/************************ V.I.P Custom Weapons *************************
*
*    Last update:
*      05/12/2015
*    
*    Cmds:
*    weaponmenu or (say /vipmenu) - Free guns menu
*    
*    Credits:
*    - Safety1st - for plugin "Weapon Menu Hardcoded" (edited by me)
*    - Eg@r4$il - for plugin "Admins are VIPs + grenades + kevlar" (edited by me)
*    - ZETA [M|E|N] - for plugin "VSVipPrefix"
*    - xPaw - for code "ScoreBoard "VIP" string"
*    - ConnorMcLeod for plugin "Bullet Damage" and cstrike_pdatas
*    - Subb98 for plugin "No fall damage"
*    - MrBone - for pieces of advice
*    - Patriot~ua~ - for ideas and testing
*    - c-s.net.ua members
*
***********************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>

#define PLUGIN_NAME "V.I.P Custom Weapons"
#define PLUGIN_VERSION "1.0.0"
#define PLUGIN_AUTHOR "Vaqtincha"

// macro; %1 - variable being modified, %2 - player id
#define CheckFlag(%1,%2)  (%1 &   (1 << (%2 & 31)))
#define SetFlag(%1,%2)    (%1 |=  (1 << (%2 & 31)))
#define ClearFlag(%1,%2)  (%1 &= ~(1 << (%2 & 31)))

#define SetFlagConnected(%1)    g_bConnected |= 1<<(%1 & 31)
#define ClearFlagConnected(%1)    g_bConnected &= ~( 1<<(%1 & 31))
#define UserConnected(%1)        (g_bConnected &  1<<(%1 & 31))

#define cs_get_user_hasprim(%1,%2) (get_pdata_cbase(%1, m_rgpPlayerItems_CBasePlayer[%2])>0)
#define fm_get_user_money(%1)         get_pdata_int(%1, m_iAccount, XO_PLAYER)
#define fm_get_weapon_id(%1)         get_pdata_int(%1, m_iId, XO_WEAPON)
#define fm_set_weapon_ammo(%1,%2)    set_pdata_int(%1, m_iClip, %2, XO_WEAPON)

#if AMXX_VERSION_NUM < 183
    #define HasShield(%1)    (get_pdata_int(%1, m_iUserPrefs, XO_PLAYER) & m_bHasShield)
#else
    #define HasShield(%1)    get_pdata_bool(%1, m_bHasShield)
#endif

#define MAX_PLAYERS 32
#define IsPlayer(%1)    ( 1 <= %1 <= g_iMaxPlayers )

#define ITEM_DEAGLE     (1<<0)
#define ITEM_HE         (1<<1)
#define ITEM_SMOKE     (1<<2)
#define ITEM_FLASH     (1<<3)
#define ITEM_AMMO     (1<<4)
#define ITEM_ARMOR     (1<<5)
#define ITEM_DEFUSER (1<<6)

new Trie:vipChannels
new g_iAlive
[MAX_PLAYERS+1]
new bool:g_bAccess[MAX_PLAYERS+1]
new g_iPlayerPos[MAX_PLAYERS+1]
new g_iPlayerCol[MAX_PLAYERS+1]
new gbIsUsed, giCounter, g_bConnected, g_iMaxPlayers, target_map

new g_iKNFPluginId
, g_iDGLPluginId, g_iM4A1PluginId, g_iAK47PluginId, g_iAWPPluginId
new g_iDGLGive
, g_iM4A1Give, g_iAK47Give, g_iAWPGive
new g_iKNFReload
, g_iDGLReload, g_iM4A1Reload, g_iAK47Reload, g_iAWPReload

new alw_round_eq
, alw_round_fm, alw_round_m4ak, alw_round_awp, alw_round_buy
new vampire
, vampire_max, hp_bonus, hp_bonus_hs, item_flags, delay, damager, droptype
new dmgcolors
[3], scrtag, prefix, info, remove_limit, openmenu, nofall, recieved
new dglcost
, m4cost, akcost, awpcost
static flagaccess
, buyaccess

    
// Offsets
new const m_rgpPlayerItems_CBasePlayer[6] = {367, 368, ...}
#if AMXX_VERSION_NUM < 183
    const m_bHasShield = 1<<24
    const m_iUserPrefs 
= 510
#else
    const m_bHasShield = 2043
#endif
const m_pNext = 42
const m_iClip 
= 51
const m_iId 
= 43
const XO_PLAYER 
= 5
const XO_WEAPON 
= 4
#if cellbits == 32
    const m_iAccount = 115
#else
    const m_iAccount = 140
#endif

const MENUKEYS = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
    
|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
const KEY_EXIT 
= 10

const PRIMARY_WEAPONS_BIT_SUM 
= 1<<CSW_SCOUT|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_AUG|1<<CSW_UMP45
    
|1<<CSW_SG550|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AWP|1<<CSW_MP5NAVY|1<<CSW_M249|1<<CSW_M3
    
|1<<CSW_M4A1|1<<CSW_TMP|1<<CSW_G3SG1|1<<CSW_SG552|1<<CSW_AK47|1<<CSW_P90

const SECONDARY_WEAPONS_BIT_SUM 
= 1<<CSW_P228|1<<CSW_ELITE|1<<CSW_FIVESEVEN|1<<CSW_USP|1<<CSW_GLOCK18|1<<CSW_DEAGLE

const NOCLIP_WPN_BS 
= ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) 

    
// Max BP ammo for weapons
new const MAXBPAMMO[31] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90,
    90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100
}
    // Max clip for weapons
new const MAXCLIP[CSW_P90+1] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30,
    35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50
}
    // Ammo Type Names for weapons
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato",
    "", "9mm", "57mm", "45acp", "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm",
    "556natobox","buckshot", "556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" 
}

new const Float:g_flCoords[][] = { {0.50, 0.40},{0.56, 0.44},{0.60, 0.50},
    {0.56, 0.56},{0.50, 0.60},{0.44, 0.56},{0.40, 0.50},{0.44, 0.44}
}

new const g_iColors[][] = { {0, 127, 255},/*blue*/{255, 127, 0},/*orange*/
    {127, 0, 255},/*purple*/{0, 255, 0},/*green*/{255, 24, 119},/*pink*/
    {228, 228, 228},/*gray*/{165, 42, 42},/*brown*/{255, 255, 0}/*yellow*/
}

new channels[8][] = { 
    
"#Cstrike_Chat_CT","#Cstrike_Chat_T","#Cstrike_Chat_CT_Dead","#Cstrike_Chat_T_Dead",
    "#Cstrike_Chat_Spec","#Cstrike_Chat_All","#Cstrike_Chat_AllDead","#Cstrike_Chat_AllSpec"
}

new newChannels[8][] = {
    "^4(^1Counter-Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4(^1Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD*^4(^1Counter-Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD*^4(^1Terrorist^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4(^1Spectator^4) [^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*DEAD* ^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2",
    "^1*SPEC* ^4[^3V.I.P^4] ^3%s1^1 :  ^4%s2"
}


public plugin_init()
{
    new mapname[4]
    get_mapname(mapname, charsmax(mapname))
    if(equali(mapname, "de_") || equali(mapname, "cs_"))
    {
        target_map = true
    
}
    
    register_plugin
(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar("vip_custom_version", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
    register_concmd("vip_custom_reloadcfg", "cmdReloadCfg", ADMIN_CFG)
    register_dictionary ("vip_custom.txt" )
    loadconfig()
    g_iMaxPlayers = get_maxplayers()

    RegisterHam(Ham_Spawn, "player", "playerspawn_post", 1)
    RegisterHam(Ham_Killed, "player", "playerkilled_post", 1)
    
    if
(nofall) RegisterHam(Ham_TakeDamage, "player", "HamTakeDamagePlayerPre", 0)
    if(scrtag) register_message( get_user_msgid("ScoreAttrib"), "msgScoreAttrib" )
    if(damager) register_event("Damage", "Event_Damage", "b", "2>0", "3=0")
    if(prefix)
    {
        vipChannels = TrieCreate()
        for (new i = 0; i < 8; i++)
        {
            TrieSetString(vipChannels, channels[i], newChannels[i])
        }
        register_message(get_user_msgid("SayText"), "messageSayText")
    }
    if(target_map)
    {
        // Cmds
        register_clcmd( "weaponmenu", "MenuCommand" )
        register_clcmd( "say /vipmenu", "MenuCommand" )
        // Menu
        register_menucmd( register_menuid( "WeaponMenu" ),MENUKEYS, "MenuHandler" )
        register_menucmd( register_menuid( "BuyMenu" ),MENUKEYS, "MenuHandlerCustom" )
        // Events
        register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
        register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
        if(vampire) register_event( "DeathMsg", "Event_DeathMsg", "a")
        if(remove_limit) register_event( "BarTime", "event_bomb_planting", "be", "1=3")
    }
}

public cmdReloadCfg(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED

    set_task
(0.2, "delayed_load")
    return PLUGIN_HANDLED
}

public delayed_load()
{
    item_flags = 0
    loadconfig
()
    if( g_iKNFPluginId > 0 && g_iKNFReload > 0)
    {
        callfunc_begin_i(g_iKNFReload, g_iKNFPluginId)
        callfunc_end()
    }
    if( g_iDGLPluginId > 0 && g_iDGLReload > 0)
    {
        callfunc_begin_i(g_iDGLReload, g_iDGLPluginId)
        callfunc_end()
    }
    if(g_iM4A1PluginId > 0 && g_iM4A1Reload > 0)
    {        
        callfunc_begin_i
(g_iM4A1Reload, g_iM4A1PluginId)
        callfunc_end()
    }
    if(g_iAK47PluginId > 0 && g_iAK47Reload > 0)
    {
        callfunc_begin_i(g_iAK47Reload, g_iAK47PluginId)
        callfunc_end()
    }
    if(g_iAWPPluginId > 0 && g_iAWPReload > 0)
    {
        callfunc_begin_i(g_iAWPReload, g_iAWPPluginId)
        callfunc_end()
    }
}

public loadconfig()
{
    new ConfigFile[64], szMsg[128]     // "addons/amxmodx/configs/vip_custom.ini" 37
    get_localinfo("amxx_configsdir", ConfigFile, charsmax(ConfigFile))
    add(ConfigFile, charsmax(ConfigFile), "/vip_custom.ini")
    if( !file_exists(ConfigFile) )
    {
        formatex( szMsg, charsmax(szMsg), "%s Config File Not Found!", PLUGIN_NAME )
        set_fail_state(szMsg)
        return
    
}
    
    new fp 
= fopen(ConfigFile, "rt")
    if( fp )
    {
        new Datas[86], Setting[32], Value[15]
        while( !feof(fp) )
        {
            fgets(fp, Datas, charsmax(Datas))
            trim(Datas)
            if(!Datas[0] || Datas[0] == ';' || Datas[0] == '#' || Datas[0] == '/' || Datas[0] == '[')
            {
                continue
            
}
            new Sign[3]
            parse(Datas, Setting, charsmax(Setting), Sign, charsmax(Sign), Value, charsmax(Value))
            if( equali(Setting, "flag_access"))
            {
                flagaccess = read_flags(Value)
            }else if( equali(Setting, "buy_access")){
                buyaccess = read_flags(Value)
            }else if( equali(Setting, "give_item_flags"))
            {
                if (containi(Value, "p") != -1)
                {
                    item_flags |= ITEM_DEAGLE
                
}
                if (containi(Value, "h") != -1)
                {
                    item_flags |= ITEM_HE
                
}
                if (containi(Value, "s") != -1)
                {
                    item_flags |= ITEM_SMOKE
                
}
                if (containi(Value, "f") != -1)
                {
                    item_flags |= ITEM_FLASH
                
}    
                if 
(containi(Value, "a") != -1)
                {
                    item_flags |= ITEM_AMMO
                
}            
                if 
(containi(Value, "v") != -1)
                {
                    item_flags |= ITEM_ARMOR
                
}            
                if 
(containi(Value, "d") != -1)
                {
                    item_flags |= ITEM_DEFUSER
                
}
            }else if( equali(Setting, "allowed_round_equip")){
                alw_round_eq = str_to_num(Value)
            }else if( equali(Setting, "vip_tag")){
                scrtag = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vip_prefix")){
                prefix = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vip_info")){
                info = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "drop_type")){
                droptype = str_to_num(Value)
            }else if( equali(Setting, "no_fall_damage")){
                nofall = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "remove_limit")){
                remove_limit = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "bullet_damage")){
                damager = str_to_num(Value)
            }else if( equali(Setting, "bullet_damage_recieved")){
                recieved = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "bullet_damage_color")){
                new red[10], green[10], blue[10]
                parse(Value, red, charsmax(red), green, charsmax(green), blue, charsmax(blue))
                dmgcolors[0] = str_to_num(red)
                dmgcolors[1] = str_to_num(green)
                dmgcolors[2] = str_to_num(blue)
            }else if( equali(Setting, "vampire")){
                vampire = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "vampire_max_hp")){
                vampire_max = str_to_num(Value)
            }else if( equali(Setting, "vampire_hp")){
                hp_bonus = str_to_num(Value)
            }else if( equali(Setting, "vampire_hp_hs")){
                hp_bonus_hs = str_to_num(Value)
            }else if( equali(Setting, "open_menu")){
                openmenu = str_to_num(Value) ? true : false
            
}else if( equali(Setting, "close_delay")){
                delay = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_famas")){
                alw_round_fm = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_m4ak")){
                alw_round_m4ak = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_awp")){
                alw_round_awp = str_to_num(Value)
            }else if( equali(Setting, "allowed_round_buymenu")){
                alw_round_buy = str_to_num(Value)
            }else if( equali(Setting, "deagle_cost")){
                dglcost = str_to_num(Value)
            }else if( equali(Setting, "m4a1_cost")){
                m4cost = str_to_num(Value)
            }else if( equali(Setting, "ak47_cost")){
                akcost = str_to_num(Value)
            }else if( equali(Setting, "awp_cost")){
                awpcost = str_to_num(Value)
            }
        }
        formatex( szMsg, charsmax(szMsg), "%s Config Successfully Loaded!", PLUGIN_NAME )
        server_print(szMsg)
    }
}

public plugin_cfg()
{
    g_iKNFPluginId = is_plugin_loaded("V.I.P Custom KNIFE")
    if( g_iKNFPluginId > 0 )
    {
        g_iKNFReload = get_func_id("loadconfig", g_iKNFPluginId)
    }
    g_iDGLPluginId = is_plugin_loaded("V.I.P Custom DEAGLE")
    if( g_iDGLPluginId > 0 )
    {
        g_iDGLGive = get_func_id("buyCMD", g_iDGLPluginId)
        g_iDGLReload = get_func_id("loadconfig", g_iDGLPluginId)
    }
    g_iM4A1PluginId = is_plugin_loaded("V.I.P Custom M4A1")
    if( g_iM4A1PluginId > 0 )
    {
        g_iM4A1Give = get_func_id("buyCMD", g_iM4A1PluginId)
        g_iM4A1Reload = get_func_id("loadconfig", g_iM4A1PluginId)
    }
    g_iAK47PluginId = is_plugin_loaded("V.I.P Custom AK-47")
    if( g_iAK47PluginId > 0 )
    {
        g_iAK47Give = get_func_id("buyCMD", g_iAK47PluginId)
        g_iAK47Reload = get_func_id("loadconfig", g_iAK47PluginId)
    }
    g_iAWPPluginId = is_plugin_loaded("V.I.P Custom AWP")
    if( g_iAWPPluginId > 0 )
    {
        g_iAWPGive = get_func_id("buyCMD", g_iAWPPluginId)
        g_iAWPReload = get_func_id("loadconfig", g_iAWPPluginId)
    }
}

public client_putinserver(id)
{
    g_iAlive[id] = 0
    g_bAccess
[id] = get_user_flags(id) & flagaccess ? true : false

    if
(info)
    {
        set_task(1.0, "vip_connected", id)
        if(target_map)
        {
            set_task(30.0, "vip_help", id)
        }
    }
    if(!is_user_hltv(id))
    {
        SetFlagConnected(id)
    }
}

public client_disconnect(id)
{
    ClearFlagConnected(id)
}

public playerspawn_post(id)
{
    g_iAlive[id] = is_user_alive(id)
    g_bAccess[id] = get_user_flags(id) & flagaccess ? true : false
    set_task
(0.2, "GiveItem", id + 6910)
}

public playerkilled_post(id, attacker, shouldgib)
{
    g_iAlive[id] = 0
}

public Event_NewRound()
{
    gbIsUsed = 0
    giCounter
++
}

public Event_NewGame()
{
    giCounter = 0
}

    // Vip connected info/help
public vip_connected(id)
{
    if(g_bAccess[id])
    {
        new name[32]
        get_user_name(id, name, 31)
        ChatColor(0, "%L", LANG_SERVER,"VIP_CONNECTED", name)
    }
}

public vip_help(id)
{
    if(g_bAccess[id])
    {
        new name[32]
        get_user_name(id, name, 31)
        ChatColor(id, "%L", LANG_SERVER,"VIP_HELP", name)
    }
}

    // ScoreBoard "VIP" String
public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
    static id; id = get_msg_arg_int(1)
    if(get_msg_arg_int(2) || !(g_bAccess[id]))
        return
    set_msg_arg_int
(2, ARG_BYTE, (1<<2))
}

    // [V.I.P] prefix and green chat
public messageSayText(msgid, msgdest, id)
{
    new channel[64]
    get_msg_arg_string(2, channel, charsmax(channel))
    
    if
(!TrieGetString(vipChannels, channel, channel, charsmax(channel)))
    {
        return
    
}
    new sender = get_msg_arg_int(1)
    if(g_bAccess[sender])
    {
        set_msg_arg_string(2, channel)
    }
}

public plugin_end()
{
    TrieDestroy(vipChannels)
}

    // Bullet Damage
public Event_Damage(iVictim)
{
    if((read_data(4) || read_data(5) || read_data(6)))
    {
        static damage; damage = read_data(2)
        if( recieved && IsPlayer(iVictim) && UserConnected(iVictim))
        {
            if(g_bAccess[iVictim])
            {
                set_hudmessage(255, 0, 0,  0.45, 0.50, 0, 6.0, 3.0, _, _, 3)
                show_hudmessage(iVictim, "%d", damage)
            }
        }
        new id = get_user_attacker(iVictim)
        if( IsPlayer(id) && UserConnected(id))
        {
            new iPos = ++g_iPlayerPos[id]
            if( iPos == sizeof(g_flCoords))
            {
                iPos = g_iPlayerPos[id] = 0
            
}
            new iCol = ++g_iPlayerCol[id]
            if( iCol == sizeof(g_iColors))
            {
                iCol = g_iPlayerCol[id] = 0
            
}
            if(g_bAccess[id])
            {
                switch(damager)
                {    case 1:{
                        set_hudmessage(dmgcolors[0], dmgcolors[1], dmgcolors[2], 0.51, 0.51, 0, 6.0, 3.0, _, _, 3)
                    }
                    case 2:{
                        set_hudmessage(dmgcolors[0], dmgcolors[1], dmgcolors[2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
                    }
                    case 3:{
                        set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)
                    }
                }
                show_hudmessage(id, "%d", damage)
            }
        }
    }
}

    // Vampire
public Event_DeathMsg()
{
    new KillerId = read_data(1)
    new VictimId = read_data(2)
    new HeadShot = read_data(3)
    
    if
(KillerId == VictimId || !IsPlayer(KillerId)
    || !g_iAlive[KillerId] || !(g_bAccess[KillerId])
    || get_user_team(KillerId) == get_user_team(VictimId))
    {
        return
    
}
    
    new KillerHealth 
= get_user_health(KillerId)
    new KillerMaxHealth = vampire_max
    if
(KillerHealth < KillerMaxHealth)
    {
        new BonusKillerHealth = HeadShot ? hp_bonus_hs : hp_bonus
        new NewKillerHealth 
= min(KillerHealth + BonusKillerHealth, KillerMaxHealth)
        fm_set_user_health(KillerId, NewKillerHealth)
        set_hudmessage(0, 255, 100, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
        show_hudmessage(KillerId, "Healed +%d hp", NewKillerHealth - KillerHealth)
    }
}

    // Terrorist planter  :D
public event_bomb_planting(id)
{
    if(!g_iAlive[id] || !g_bAccess[id])
        return
    set_pev
(id, pev_maxspeed, 250.0)
}

    // No fall damage
public HamTakeDamagePlayerPre(victim, inflictor, attacker, Float:dmg, dmg_type)
{
    if(g_bAccess[victim])
    {
        if(dmg_type & (1<<5)/* dmg fall */)
        {
            return HAM_SUPERCEDE
        
}
    }
    return HAM_IGNORED
}

    // Equip/Deagle giving
public GiveItem(TaskID)
{
    new id = TaskID - 6910

    if
( !( g_bAccess[id]) || !g_iAlive[id])
    {
        return
    
}
    if(item_flags & ITEM_AMMO)
    {
        giveammo(id)
        refill(id)
    }
    if(!target_map)
    {
        return
    
}
    if(giCounter >= alw_round_eq)
    {
        if(item_flags & ITEM_DEAGLE)
        {
            if(user_has_weapon(id,CSW_DEAGLE))
            {
                ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35)
            }else{
                drop_weapons(id, 2)
                fm_give_item(id,"weapon_deagle")
                ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35)
            }
        }
        if(item_flags & ITEM_HE)
        {
            fm_give_item(id,"weapon_hegrenade")            
        
}
        if(item_flags & ITEM_SMOKE)
        {
            fm_give_item(id,"weapon_smokegrenade")
        }    
        if
(item_flags & ITEM_FLASH)
        {
            fm_give_item(id,"weapon_flashbang")
            fm_give_item(id,"weapon_flashbang")            
        
}
        if(item_flags & ITEM_ARMOR)
        {
            fm_give_item(id,"item_assaultsuit")
            fm_set_user_armor(id,100)
        }
        if(item_flags & ITEM_DEFUSER)
        {
            if(get_user_team(id) == 2)
            {
                fm_give_item(id,"item_thighpack")
            }
        }
    }
    if(openmenu)
    {
        if(!cs_get_user_hasprim(id, 1) && giCounter >= alw_round_fm)
        {
            MenuCommand(id)
        }
    }
}

    // Weapon Menu
public MenuCommand(id)
{
    new szMenu[512]         // it is maximum allowed menu size
    new iKeys
    new iLen 
= formatex( szMenu, charsmax(szMenu), "\y%L\R%L^t^n^n", LANG_SERVER,"WEAPONS_MENU", LANG_SERVER,"ROUND")
    
    new iItemsDisabled
    if
( !( g_bAccess[id]) || !g_iAlive[id] || CheckFlag( gbIsUsed, id ))
        iItemsDisabled = 1
        
    if
( iItemsDisabled || giCounter < alw_round_fm )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d1.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_FAMAS", alw_round_fm)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y1.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_FAMAS", alw_round_fm)
            iKeys |= MENU_KEY_1
        
}
    if( iItemsDisabled  || giCounter < alw_round_m4ak )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d2.^t%L\R\r%d^t^n", LANG_SERVER, "WEAPON_M4A1", alw_round_m4ak)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y2.^t\w%L\R\y%d^t^n", LANG_SERVER, "WEAPON_M4A1", alw_round_m4ak)
            iKeys |= MENU_KEY_2
        
}
    if( iItemsDisabled  || giCounter < alw_round_m4ak )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d3.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_AK-47", alw_round_m4ak)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y3.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_AK-47", alw_round_m4ak)
            iKeys |= MENU_KEY_3
        
}
    if( iItemsDisabled  || giCounter < alw_round_awp )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d4.^t%L\R\r%d^t^n", LANG_SERVER,"WEAPON_AWP", alw_round_awp)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y4.^t\w%L\R\y%d^t^n", LANG_SERVER,"WEAPON_AWP", alw_round_awp)
            iKeys |= MENU_KEY_4
        
}
    if(!( get_user_flags(id) & buyaccess) || !g_iAlive[id] || giCounter < alw_round_buy)
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\d5.^t%L^n", LANG_SERVER,"BUY_MENU")
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y5.^t\w%L^n", LANG_SERVER,"BUY_MENU")
            iKeys |= MENU_KEY_5    
        
}
        
    formatex
( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y0.^t\w%L", LANG_SERVER, "EXIT" )
    iKeys |=  MENU_KEY_0|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
    show_menu
( id, iKeys, szMenu, delay, .title = "WeaponMenu" )

    return PLUGIN_HANDLED
}

    // Custom Menu
public MenuCommandCustom(id)
{
    new szMenu[512]         // it is maximum allowed menu size
    new iKeys
    new usermoney 
= fm_get_user_money(id)
    new iLen = formatex( szMenu, charsmax(szMenu), "\y%L\R$^t^t%L^t^n^n", LANG_SERVER,"BUY_MENU", LANG_SERVER,"COST")

    new iItemsDisabled
    if
( !( get_user_flags(id) & buyaccess) || !g_iAlive[id] /*|| CheckFlag( gbIsUsed, id )*/)
        iItemsDisabled = 1
    
    if
( iItemsDisabled || g_iDGLPluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r1.^t%L^t^n", LANG_SERVER,"CUSTOM_DEAGLE")
        }else if( iItemsDisabled || usermoney < dglcost ){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d1.^t%L\R\r%d^t^n", LANG_SERVER,"CUSTOM_DEAGLE", dglcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y1.^t\w%L\R\y%d^t^n", LANG_SERVER,"CUSTOM_DEAGLE", dglcost)
            iKeys |= MENU_KEY_1
        
}
    if( iItemsDisabled || g_iM4A1PluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r2.^t%L^t^n", LANG_SERVER,"CUSTOM_M4A1")
        }else if( iItemsDisabled || usermoney < m4cost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d2.^t%L\R\r%d^t^n", LANG_SERVER,"CUSTOM_M4A1", m4cost)        
        
}else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y2.^t\w%L\R\y%d^t^n", LANG_SERVER,"CUSTOM_M4A1", m4cost)
            iKeys |= MENU_KEY_2
        
}
    if( iItemsDisabled || g_iAK47PluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r3.^t%L^t^n", LANG_SERVER, "CUSTOM_AK-47")
        }else if( iItemsDisabled || usermoney < akcost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d3.^t%L\R\r%d^t^n", LANG_SERVER, "CUSTOM_AK-47", akcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y3.^t\w%L\R\y%d^t^n", LANG_SERVER, "CUSTOM_AK-47", akcost)
            iKeys |= MENU_KEY_3
        
}
    if( iItemsDisabled || g_iAWPPluginId < 0 )
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\r4.^t%L^t^n", LANG_SERVER, "CUSTOM_AWP")
        }else if( iItemsDisabled || usermoney < awpcost){
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\d4.^t%L\R\r%d^t^n", LANG_SERVER, "CUSTOM_AWP", awpcost)
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "\y4.^t\w%L\R\y%d^t^n", LANG_SERVER, "CUSTOM_AWP", awpcost)
            iKeys |= MENU_KEY_4
        
}
    if( !( g_bAccess[id]) || !g_iAlive[id])
        {
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\d5.^t%L^n", LANG_SERVER,"BACK")
        }else{
            iLen += formatex( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y5.^t\w%L^n", LANG_SERVER,"BACK")
            iKeys |= MENU_KEY_5
        
}
        
    formatex
( szMenu[iLen], charsmax(szMenu) - iLen, "^n\y0.^t\w%L", LANG_SERVER, "EXIT" )
    iKeys |=  MENU_KEY_0|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
    show_menu
( id, iKeys, szMenu, delay, .title = "BuyMenu" )

    return PLUGIN_HANDLED
}

    // Weapon Menu Func
public MenuHandler(id, key)
{
    if(key == KEY_EXIT - 1 || !g_iAlive[id])
        return PLUGIN_HANDLED

    switch
(key)
    {
        case 0:{
            if(user_has_weapon(id,CSW_FAMAS))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_famas")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 1:{
            if(user_has_weapon(id,CSW_M4A1))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_m4a1")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 2:{
            if(user_has_weapon(id,CSW_AK47))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_ak47")
                ExecuteHamB(Ham_GiveAmmo, id, 90, "762nato", 90)
                SetFlag( gbIsUsed, id )
            }
        }
        case 3:{
            if(user_has_weapon(id,CSW_AWP))
            {
                client_print(id, print_center, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
            }
            else{
                drop_weapons(id, 1)
                fm_give_item(id,"weapon_awp")
                ExecuteHamB(Ham_GiveAmmo, id, 30, "338magnum", 30)
                SetFlag( gbIsUsed, id )
            }
        }
        case 4:{
            MenuCommandCustom(id)
        }
    }
    return PLUGIN_HANDLED
}

    // Custom Menu func
public MenuHandlerCustom(id, key)
{
    if(key == KEY_EXIT - 1 || !g_iAlive[id])
        return PLUGIN_HANDLED

    switch
(key)
    {
        case 0:{
            if(g_iDGLPluginId > 0 && g_iDGLGive > 0)
            {    
                callfunc_begin_i
(g_iDGLGive, g_iDGLPluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 1:{
            if(g_iM4A1PluginId > 0 && g_iM4A1Give > 0)
            {        
                callfunc_begin_i
(g_iM4A1Give, g_iM4A1PluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 2:{
            if(g_iAK47PluginId > 0 && g_iAK47Give > 0)
            {
                callfunc_begin_i(g_iAK47Give, g_iAK47PluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 3:{
            if(g_iAWPPluginId > 0 && g_iAWPGive > 0)
            {
                callfunc_begin_i(g_iAWPGive, g_iAWPPluginId)
                callfunc_push_int(id)
                callfunc_end()
                // SetFlag( gbIsUsed, id )
            }
        }
        case 4:{
            MenuCommand(id)
        }
    }
    return PLUGIN_HANDLED
}

//================================ STOCKS ==============================//

stock giveammo(id)
{
    new weap_ids[32], num_weaps
    num_weaps 
= 0
    get_user_weapons
(id, weap_ids, num_weaps)
    for (new i = 0; i < num_weaps; i++)
    {
        new weap_id = weap_ids[i]
        new ammo = MAXBPAMMO[weap_id]
        if(!( NOCLIP_WPN_BS & (1<<weap_id)))
        {
            ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weap_id], AMMOTYPE[weap_id], MAXBPAMMO[weap_id], ammo)
        }
    }
}

stock refill(id)
{
    if(!is_user_alive(id))return;
    for(new slot = 1; slot<= 2; slot++)
    {
        new iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer[slot])
        if(pev_valid(iWeapon)!=2)continue;
        while( iWeapon > 0 )
        {
            new iId = fm_get_weapon_id(iWeapon)
            if( !( NOCLIP_WPN_BS & (1<<iId) ) )
            {
                fm_set_weapon_ammo(iWeapon, MAXCLIP[iId])
                iWeapon = get_pdata_cbase(iWeapon, m_pNext, XO_WEAPON)
            }
        }
    }
}

stock drop_weapons(id, dropwhat)
{
    static weapons[32], num, i, weaponid
    num 
= 0
    get_user_weapons
(id, weapons, num)

    for (= 0; i < num; i++)
    {
        weaponid = weapons[i]
        if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM) || HasShield(id)) 
        
|| (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM )))
        {
            static wname[32]
            get_weaponname(weaponid, wname, charsmax(wname))
            switch(droptype)
            {
                case 0: ham_strip_weapon(id, wname)
                case 1: engclient_cmd(id, "drop", wname)
            }
        }
    }
}

stock ham_strip_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0
    
    new wId 
= get_weaponid(weapon)
    if(!wId) return 0
    
    new wEnt
    while
((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
    if(!wEnt) return 0
    
    new iTmp
    if
(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
    
    if
(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0
    
    ExecuteHamB
(Ham_Item_Kill, wEnt)
    set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId))
    
    return 1
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32], i
    static msg
[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!n", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
   
    if
(id)players[0] = id; else get_players(players, count, "ch")
    {
        for(= 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()
            }
        }
    }
}

stock fm_set_user_armor(index, armor) 
{
    set_pev(index, pev_armorvalue, float(armor))
    return 1
}

stock fm_set_user_health(index, health) 
{
    health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index)
    return 1
}

stock fm_give_item(index, const item[]) 
{
    if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5))
        return 0
    
    new ent 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
    if (!pev_valid(ent))
        return 0

    new Float
:origin[3]
    pev(index, pev_origin, origin)
    set_pev(ent, pev_origin, origin)
    set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
    dllfunc(DLLFunc_Spawn, ent)

    new save = pev(ent, pev_solid)
    dllfunc(DLLFunc_Touch, ent, index)
    if (pev(ent, pev_solid) != save)
        return ent

    engfunc
(EngFunc_RemoveEntity, ent)

    return -1
}


Исправил плагины сверху

Добавлено спустя 3 минуты 48 секунд:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <fakemeta> 
#include <fakemeta_util>
#include <csx>

#define PLUGIN "EvilArmy"
#define VERSION "1.3 Fix 1"
#define AUTHOR "OverGame" //Исходник Arctic
#define ADM_MENU ADMIN_RCON

#pragma tabsize 0

new g_vault;
new Handle:g_SqlTuple;
new g_Error[512]; 
enum _
:PlData
{
    gId,gExp,gLevel,gTempKey
};
new gChatTop, g_bonus_score[33];
new g_type, g_enabled, g_recieved, bool:g_showrecieved, g_hudmsg1, g_hudmsg2;
new stats[8],bodyhits[8],irank;
new UserData[33][PlData];
new gMessage[256];
new g_MsgHud,MaxPlayers,levelUp[33],gSayText;
new bool:restr_blocked;
new const gRankNames[][] = 
{
    "I_0","I_1","I_2","I_3","I_4","I_5","I_6","I_7","I_8","I_9","I_10","I_11","I_12","I_13","I_14",        
    
"I_15","I_16","I_17","I_18","I_19","I_20"
};
new const gLevels[] = 
{
    0,15,30,60,100,180,350,750,999,1500,2200,2800,3200,3900,4500,5000,5500,6000,7000,8000
};
new const gNades[][] =
{
    {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1},
    {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1}
}
new const restrict_bonus[][] =
{
    "35hp",
    "most_wanted",
    "ka_wintershank"
};
new gRestrictMaps,gAdminGMsg,gBonusLevel,gFlash,gSmoke,gHe,gHpbylevel,gApbylevel,gEvilMenu,gHudColor,
gArmyChat,gSaveType,gTableName,gHost,gUser,gPassword,gDbName,gSlash,
gTk,gLostXpTk,gLevelUpmsg,gAllChat;
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_cvar("evil_army",VERSION, FCVAR_SERVER | FCVAR_SPONLY);
    register_clcmd("evil_setmenu","set_level_menu");
    register_clcmd("menu","menu_server");
    register_clcmd("say /menu","menu_server");
    register_clcmd("say /bonus","evil_army_menu");
    register_clcmd("say /rs","reset_score");
    set_cvar_string("evil_army",VERSION);
    gRestrictMaps     = register_cvar( "restrict_maps",         "0");
    gBonusLevel    = register_cvar( "level_bonus",         "0");
    gFlash        = register_cvar( "flash_nades",         "0");
    gSmoke        = register_cvar( "smoke_nades",         "1");
    gHe        = register_cvar( "he_nades",         "1");
    gHpbylevel    = register_cvar( "hp_by_level",         "3");
    gApbylevel    = register_cvar( "ap_by_level",         "5");
    gChatTop    = register_cvar( "chat_top",         "1");
    gArmyChat    = register_cvar( "army_chat",         "1");
    gEvilMenu    = register_cvar( "evil_menu",         "1");
    gHudColor    = register_cvar( "evil_chud",         "0");
    gAdminGMsg    = register_cvar( "admin_color",        "1");
    gSaveType     = register_cvar( "save_type",         "0");
    gSlash         = register_cvar( "slash_messages",         "1");
    g_type = register_cvar("amx_evildamage","1");
    g_recieved = register_cvar("amx_evildamage_recieved","1")    ;
    gTk         = register_cvar( "team_kill_lost_xp",       "1");
    gLostXpTk     = register_cvar( "lost_xp_val",         "3");
    gLevelUpmsg    = register_cvar( "level_up_msg",         "1");
    gAllChat    = register_cvar( "all_chat",         "1");    
    gHost        
= register_cvar( "mysql_host",         "127.0.0.1");
    gUser        = register_cvar( "mysql_user",         "root");
    gPassword    = register_cvar( "mysql_password",     "qwerty");
    gDbName        = register_cvar( "mysql_db_name",     "test");
    gTableName    = register_cvar( "mysql_table_name",     "evil_army");
    register_logevent( "EventRoundStart", 2, "1=Round_Start" );
    set_task(1.0,"Info",_,_,_, "b")
    register_event( "DeathMsg","EventDeath","a");
    register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0");    
    register_event
("HLTV", "on_new_round", "a", "1=0", "2=0");
    register_message(get_user_msgid("SayText"), "msg_SayText");
    gSayText = get_user_msgid ("SayText");
    g_MsgHud = CreateHudSyncObj();
    g_hudmsg1 = CreateHudSyncObj()    
    g_hudmsg2 
= CreateHudSyncObj()
    MaxPlayers = get_maxplayers();
    register_dictionary("evil_army.txt" );
    if(get_pcvar_num(gRestrictMaps))
    {
        new szMapName[64];
        get_mapname(szMapName,63);
        for(new a = 0; a < sizeof restrict_bonus; a++)
        {
            if(equal(szMapName, restrict_bonus[a]))
            {
                restr_blocked = true;
                log_amx("[Evil Army] weapon menu is blocked on map [%s].",restrict_bonus[a]);
                break;
            } else {
                restr_blocked = false;
            }    
        
}
    }
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            g_vault = nvault_open("evil_army");
        }
        case 1: 
        
{
            set_task(0.1, "sql_init");
        }
        default: 
        
{
            g_vault = nvault_open("evil_army");
        }
    }
    if(get_pcvar_num(gArmyChat))
    {
        register_clcmd("say", "hookSay") 
        register_clcmd
("say_team", "hookSayTeam");
    }
}
public plugin_cfg()
{
    new szCfgDir[64], szFile[192];
    get_configsdir(szCfgDir, charsmax(szCfgDir));
    formatex(szFile,charsmax(szFile),"%s/evil_army.cfg",szCfgDir);
    if(file_exists(szFile))
        server_cmd("exec %s", szFile);
}

public set_level_menu(id)
{
    if(get_user_flags(id) & ADM_MENU)
    {
        UserData[id][gTempKey] = 0;
        new players[32], num;
        get_players(players, num)
        new tempname[32], info[10];
        new players_menu = menu_create("Меню званий:", "set_level_hl")
        for(new i = 0; i < num; i++)
        {
            get_user_name(players[i], tempname, 31);
            num_to_str(players[i], info, 9);
            menu_additem(players_menu, tempname, info, 0);
        }
        
        menu_setprop
(players_menu, MPROP_BACKNAME, "Назад")
        menu_setprop(players_menu, MPROP_NEXTNAME, "Далее")
        menu_setprop(players_menu, MPROP_EXITNAME, "Выход")
        
        menu_display
(id, players_menu, 0);
    }
    return PLUGIN_CONTINUE
}
public set_level_hl(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], _access, callback;
    menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback);
    UserData[id][gTempKey] = str_to_num(data);
    set_level_pl(id);
    return PLUGIN_CONTINUE
}

public reset_score(id){
new name[33]
get_user_name(id, name, 32)
cs_set_user_deaths(id, 0)
set_user_frags(id, 0)
cs_set_user_deaths(id, 0)
set_user_frags(id, 0)
ColorChat(0,NORMAL,"^4[%L]^3%s^1, обнулил свой счет!", LANG_PLAYER, "PRIFIX", name)
}

public menu_server(id)
{
        if(get_pcvar_num(gEvilMenu) == 1){
        static s_MenuItem[255]
        formatex(s_MenuItem, charsmax(s_MenuItem), "\yМеню сервера^nВы: \r%L", LANG_PLAYER, gRankNames[UserData[id][gLevel]])
        new menu = menu_create(s_MenuItem, "func_menu_server")
 
        menu_additem
(menu, "\yОбнулить счет","1")
        menu_additem(menu, "\yЗабанить игрока","2")
        menu_additem(menu, "\yКупить админку","3")
        menu_additem(menu, "\yМеню армии","4")
        
        menu_setprop
(menu, MPROP_BACKNAME, "Назад")
        menu_setprop(menu, MPROP_NEXTNAME, "Далее")
        menu_setprop(menu, MPROP_EXITNAME, "Выход")
 
        menu_display
(id,menu,0)
        }
        return PLUGIN_HANDLED
}

public evil_army_menu(id)
{
        static s_MenuItem[255]
        formatex(s_MenuItem, charsmax(s_MenuItem), "\yМеню сервера^nБонусы: \r%d", g_bonus_score[id])
        new menu = menu_create(s_MenuItem, "func_evil_menu")
        if(get_user_flags(id) & ADM_MENU){
        menu_additem(menu, "\yВыдать звание","1")
        }else{
        menu_additem(menu, "\dВыдать звание","1")
        }
        if(g_bonus_score[id] > 1){
        menu_additem(menu, "\yЖизни [255]","2")
        }else{
        menu_additem(menu, "\dЖизни [255]","2")
        }
        if(g_bonus_score[id] > 1){
        menu_additem(menu, "\yБронежилет [255]","3")
        }else{
        menu_additem(menu, "\dБронежилет [255]","3")
        }
        if(cs_get_user_team(id) == CS_TEAM_CT){
        if(g_bonus_score[id] > 2){
        menu_additem(menu, "\yВзять AK-47","4")
        }else{
        menu_additem(menu, "\dВзять AK-47","4")
        }
        }else
        if(cs_get_user_team(id) == CS_TEAM_T){
        if(g_bonus_score[id] > 2){
        menu_additem(menu, "\yВзять M4A1","4")
        }else{
        menu_additem(menu, "\dВзять M4A1","4")
        }
        }
        
        
        menu_setprop
(menu, MPROP_BACKNAME, "Назад")
        menu_setprop(menu, MPROP_NEXTNAME, "Далее")
        menu_setprop(menu, MPROP_EXITNAME, "Выход")
 
        menu_display
(id,menu,0)
        return PLUGIN_HANDLED
}

public set_level_pl(id)
{
    static szText[1024];
    formatex(szText,charsmax(szText), "\r%L", id, "CHOOSE_RANKN");
    new menu = menu_create( szText, "set_level_phl");
    for(new i = 1; i < sizeof(gRankNames); i++)
    {
        new szItem[100],lang[10],num[5];
        format(lang,9,"I_%d",i);
        format(num,4,"%d",i);
        formatex(szItem,charsmax(szItem),"%L",id,lang);
        menu_additem(menu,szItem,num);
    }
    menu_setprop(menu, MPROP_BACKNAME, "Назад");
    menu_setprop(menu, MPROP_NEXTNAME, "Далее");
    menu_setprop(menu, MPROP_EXITNAME, "Выйти");
    menu_display( id, menu,0);
    return PLUGIN_CONTINUE;
}
public set_level_phl(id,menu,item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], _access, callback;
    menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback);
    new level = str_to_num(data);
    if(UserData[id][gTempKey] >= 1 && UserData[id][gTempKey] <= 32)
    {
        UserData[UserData[id][gTempKey]][gLevel] = level;
        UserData[UserData[id][gTempKey]][gExp] = gLevels[level-1];
        if(!is_user_connected(id)||!is_user_connected(UserData[id][gTempKey]))return 1;
        new szName[2][32];
        get_user_name(id, szName[0], 31);
        get_user_name(UserData[id][gTempKey], szName[1], 31);
        ColorChat(0,GREY,"^3Админ ^4%s ^3выдал звание ^4%L ^3игроку ^4%s^3.",szName[0],LANG_PLAYER,gRankNames[level],szName[1])
    } else {
        set_level_menu(id);
    }
    UserData[id][gTempKey] = 0;
    return PLUGIN_HANDLED;
}

public sql_init()
{
    new szTableName[64],szHost[64],szUser[64],szPassword[64],szDbName[64],ErrorCode;
    get_pcvar_string(gTableName,szTableName,63);
    get_pcvar_string(gHost,szHost,63);
    get_pcvar_string(gUser,szUser,63);
    get_pcvar_string(gPassword,szPassword,63);
    get_pcvar_string(gDbName,szDbName,63);
    g_SqlTuple = SQL_MakeDbTuple(szHost,szUser,szPassword,szDbName);
    new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error);

    new Handle:Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `%s`(`id` INT(10) NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`exp` INT(10) NOT NULL,`level` INT(10) NOT NULL,PRIMARY KEY (id));", szTableName)
    if(!SQL_Execute(Queries))
    {
        SQL_QueryError(Queries,g_Error,charsmax(g_Error))
        set_fail_state(g_Error);
    }
    SQL_QueryAndIgnore(SqlConnection, "DELETE FROM %s WHERE exp=0 and level=1;",szTableName);
    SQL_FreeHandle(Queries)
    SQL_FreeHandle(SqlConnection);
}

public plugin_end()
{
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            nvault_close(g_vault);
        }
        case 1: 
        
{
            if(g_SqlTuple != Empty_Handle)
                SQL_FreeHandle(g_SqlTuple);
        }
        default: 
        
{
            nvault_close(g_vault);
        }
    }
}

public client_putinserver(id)
{
    g_bonus_score[id] = 0;
    UserData[id] = UserData[0];
    load_data(id);
}

public client_disconnect(id)
{
    save_usr(id);
    UserData[id] = UserData[0];
}

public on_new_round()
{
    g_enabled = get_pcvar_num(g_type)
    if(get_pcvar_num(g_recieved)) g_showrecieved = true    
}

public on_damage(id)
{
    if(g_enabled)
    {        
        static attacker
; attacker = get_user_attacker(id)
        static damage; damage = read_data(2)        
        if
(g_showrecieved)
        {            
            set_hudmessage
(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
            ShowSyncHudMsg(id, g_hudmsg2, "Вам нанесли: %i^n", damage)        
        
}
        if(is_user_connected(attacker))
        {
            switch(g_enabled)
            {
                case 1: {
                    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
                    ShowSyncHudMsg(attacker, g_hudmsg1, "Вы нанесли: %i^n", damage)                
                
}
                case 2: {
                    if(fm_is_ent_visible(attacker,id))
                    {
                        set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
                        ShowSyncHudMsg(attacker, g_hudmsg1, "Вы нанесли: %i^n", damage)                
                    
}
                }
            }
        }
    }
}

public check_level(id)
{
    if(UserData[id][gLevel] <= 0)
        UserData[id][gLevel] = 1;
        
    if
(UserData[id][gExp] < 0)
        UserData[id][gExp] = 0;

    while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) 
    
{
        UserData[id][gLevel]++;
        levelUp[id] = 1;
        switch(get_pcvar_num(gLevelUpmsg))
        {
            case 1: 
            
{
                new szName[33];
                get_user_name(id, szName, 32);
                static buffer[192],len;
                len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 %L ^4%s^1",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"PLAYER",szName);
                len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); 
                len 
+= format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
                len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
                ColorChat(0,NORMAL,buffer);
            }
            case 2:
            {
                new szName[33];
                get_user_name(id, szName, 32);
                static buffer[192],len;
                len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 %L ^4%s^1",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"PLAYER",szName);
                len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); 
                len 
+= format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
                len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
                ColorChat(id,NORMAL,buffer);
            }
        }
    }
}
public EventDeath()
{
    new iKiller = read_data(1);
    new iVictim = read_data(2);
    new head = read_data(3);
    if(iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) && UserData[iKiller][gLevel] <= 19)
    {
        if(get_pcvar_num(gTk) && get_user_team(iKiller) == get_user_team(iVictim))
        {
            UserData[iKiller][gExp] -= get_pcvar_num(gLostXpTk);
            return PLUGIN_CONTINUE;
        }
        new weapon = get_user_weapon(iKiller);
        UserData[iKiller][gExp] += 1;
        if(weapon == CSW_KNIFE)
            UserData[iKiller][gExp] += 3;
            
        if
(head)
            UserData[iKiller][gExp] += 2;
            g_bonus_score[iKiller] += 1;

        if(weapon == CSW_HEGRENADE)
            UserData[iKiller][gExp] += 1;

        check_level(iKiller);
    }
    return PLUGIN_CONTINUE;
}
public EventRoundStart()
{
    for(new id = 1; id <= MaxPlayers; id++)
    {
        if(is_user_alive(id) && is_user_connected(id))
        {
            if(restr_blocked)
                return PLUGIN_CONTINUE;
            
            if
(get_pcvar_num(gFlash) && gNades[0][UserData[id][gLevel]])
                give_item(id,"weapon_flashbang");
            
            if
(get_pcvar_num(gSmoke) && gNades[1][UserData[id][gLevel]])
                give_item(id,"weapon_smokegrenade");
                
            if
(get_pcvar_num(gHe) && gNades[2][UserData[id][gLevel]])
                give_item(id,"weapon_hegrenade");
            
            if
(get_pcvar_num(gHpbylevel) != 0)
                set_user_health(id,get_user_health(id)+get_pcvar_num(gHpbylevel)*UserData[id][gLevel]);
                
            if
(get_pcvar_num(gApbylevel) != 0)
                set_user_armor(id,get_user_armor(id)+get_pcvar_num(gApbylevel)*UserData[id][gLevel]);    
                
            if
(levelUp[id] == 1 && get_pcvar_num(gBonusLevel))
            {
                GetWeapon(id);
                levelUp[id] = 0;
            }
        }
    }
    return PLUGIN_CONTINUE;
}
public load_data(id)
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            static data[256], timestamp;
            if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) )
            {
                next_load_data(id, data, sizeof(data) - 1);
                return;
            } else {
                register_player(id,"");
            }
        }
        case 1: 
        
{
            new szTableName[32],ErrorCode;
            new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            SQL_QuoteString(SqlConnection, szName, 32, szName);
            get_pcvar_string(gTableName,szTableName,31);
            if(SqlConnection == Empty_Handle)
            {
                log_amx(g_Error);
                return ;
            }
            new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id FROM %s WHERE name = '%s';",szTableName,szName)
            if(!SQL_Execute(Query))
            {
                SQL_QueryError(Query,g_Error,511);
                log_amx(g_Error);
                return ;
            }
            if(SQL_NumResults(Query) > 0 )
            {
                next_load_data(id, "", 0);
            } else {
                register_player(id,"");
            }
            SQL_FreeHandle(Query);
            SQL_FreeHandle(SqlConnection);
        }
        default: 
        
{
            static data[256], timestamp;
            if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) )
            {
                next_load_data(id, data, sizeof(data) - 1);
                return;
            } else {
                register_player(id,"");
            }
        }
    }
}
public next_load_data(id,data[],len)
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            replace_all(data,len,"|"," ");
            new exp[5],level[5];
            parse(data,exp,4,level,4);
            UserData[id][gExp]= str_to_num(exp);
            UserData[id][gLevel]= str_to_num(level);
        }
        case 1: 
        
{
            new szTableName[32],ErrorCode;
            new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            SQL_QuoteString(SqlConnection, szName, 32, szName);
            get_pcvar_string(gTableName,szTableName,31);
            if(SqlConnection == Empty_Handle)
            {
                log_amx(g_Error);
                return ;
            }
            new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id,exp,level FROM %s WHERE name = '%s';",szTableName,szName)
            if(!SQL_Execute(Query))
            {
                SQL_QueryError(Query,g_Error,511)
                log_amx(g_Error)
            }
            if( SQL_NumResults(Query) > 0)
            {
                UserData[id][gId]= SQL_ReadResult(Query,0); 
                UserData
[id][gExp]= SQL_ReadResult(Query,1); 
                UserData
[id][gLevel]= SQL_ReadResult(Query,2); 
            
}
            SQL_FreeHandle(Query);
            SQL_FreeHandle(SqlConnection);
        }
        default: 
        
{
            replace_all(data,len,"|"," ");
            new exp[5],level[5];
            parse(data,exp,4,level,4);
            UserData[id][gExp]= str_to_num(exp);
            UserData[id][gLevel]= str_to_num(level);
        }
    }
    if(UserData[id][gLevel] <= 0)
        UserData[id][gLevel] = 1;

    while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) 
        UserData
[id][gLevel]++;
}
public register_player(id,data[])
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            UserData[id][gExp]= 0
            UserData
[id][gLevel]= 1;
        }
        case 1: 
        
{
            new szTableName[32],ErrorCode;
            new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
            SQL_QuoteString(SqlConnection, szName, 32, szName);
            get_pcvar_string(gTableName,szTableName,31);
            if(SqlConnection == Empty_Handle)
            {
                log_amx(g_Error);
                return ;
            }
            new Handle:Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO %s (`id`,`name`,`exp`,`level`) VALUES (NULL,'%s','0','1');",szTableName,szName);
            if(!SQL_Execute(Query))
            {
                SQL_QueryError(Query,g_Error,511)
                log_amx(g_Error)
            }
            SQL_FreeHandle(Query);
            SQL_FreeHandle(SqlConnection);
            UserData[id][gExp] = 0;
            UserData[id][gLevel] = 1;
        }
        default: 
        
{
            UserData[id][gExp]= 0
            UserData
[id][gLevel]= 1;
        }
    }
}
public save_usr(id)
{
    new szName[33];
    get_user_name(id,szName,32);
    switch(get_pcvar_num(gSaveType))
    {
        case 0: 
        
{
            static data[256];
            formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]);
            nvault_set(g_vault, szName, data);
        }
        case 1: 
        
{
            new saveq[256],szTableName[32];
            get_pcvar_string(gTableName,szTableName,31);
            format(saveq,255,"UPDATE `%s` SET `exp`='%d',`level`='%d' WHERE `id`='%d';", szTableName,UserData[id][gExp],UserData[id][gLevel],UserData[id][gId])
            SQL_ThreadQuery(g_SqlTuple,"QueryHandler",saveq);
        }
        default: 
        
{
            static data[256];
            formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]);
            nvault_set(g_vault, szName, data);
        }
    }
}
public hookSay(id)
{
    if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
        return PLUGIN_CONTINUE;

    new message[192],Len;
    read_args(message, 191);
    remove_quotes(message);
    if(is_admin_msg(message))
        return PLUGIN_CONTINUE;
    
    if
(is_empty_message(message))
    {
        ColorChat(id,NORMAL,"^4[^3%L^4]^1 %L",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"EMPTY_MSG")
        return PLUGIN_HANDLED
    
}
    if(get_pcvar_num(gSlash))
    {
        if(is_has_slash(message))
            return PLUGIN_HANDLED_MAIN
    
}
    new szName[32];
    get_user_name(id,szName,31);
    irank = get_user_stats(id,stats,bodyhits)
    if(is_user_admin(id))
    {
    if(get_pcvar_num(gChatTop) == 0){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }else
    if(get_pcvar_num(gChatTop) == 1){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3Топ: %d^4][^3%L^4] ",irank,LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }
        switch(get_pcvar_num(gAdminGMsg))
        {
            case 1:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message);
            }
            case 2:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message);
            }
            default:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
            }
        }
        Chat(id,0,get_pcvar_num(gAllChat));
    }
    else 
    
{
    if(get_pcvar_num(gChatTop) == 0){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }else
    if(get_pcvar_num(gChatTop) == 1){
    Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3Топ: %d^4][^3%L^4] ",irank,LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    }
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
        Chat(id,0,get_pcvar_num(gAllChat));
    }
    return PLUGIN_HANDLED_MAIN
}
public hookSayTeam(id)
{
    if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
        return PLUGIN_CONTINUE;

    new message[192],Len;
    read_args(message, 191);
    remove_quotes(message);
    if(is_admin_msg(message))
        return PLUGIN_CONTINUE;
        
    if
(is_empty_message(message))
    {
        ColorChat(id,GREY,"^4[^3%L^4]^1 %L",LANG_PLAYER,"PRIFIX",LANG_PLAYER,"EMPTY_MSG");
        return PLUGIN_HANDLED
    
}
    if(get_pcvar_num(gSlash))
    {
        if(is_has_slash(message))
            return PLUGIN_HANDLED_MAIN
    
}
    new szName[32];
    get_user_name(id,szName,31);
    if(is_user_admin(id))
    {
        Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ^3%s^4 : ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]],szName);        
        switch
(get_pcvar_num(gAdminGMsg))
        {
            case 1:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message);
            }
            case 2:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message);
            }
            default:
            {
                Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
            }
        }
        Chat(id,1,get_pcvar_num(gAllChat));
    }
    else 
    
{
        Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName);
        Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message);
        Chat(id,1,get_pcvar_num(gAllChat));
    }
    return PLUGIN_HANDLED_MAIN
}
stock is_admin_msg(const Message[])
{
    if(Message[0] == '@')
        return true;
        
    return false
;
}
stock is_empty_message(const Message[])
{
    if(equal(Message, "") || !strlen(Message))
        return true;
        
    return false
;
}
stock Chat(id,team,chat_type)
{
    if(team)
    {
        if(chat_type)
        {
            for(new i = 1; i <= MaxPlayers; i++)
            {
                if(!is_user_connected(i))
                    continue
            
                if
(get_user_team(id) == get_user_team(i))
                    send_message(gMessage, id, i);
            }
        } else {
            if(is_user_alive(id))
            {
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || !is_user_alive(i))
                        continue
                
                    if
(get_user_team(id) == get_user_team(i))
                        send_message(gMessage, id, i);
                }
            } else if(!is_user_alive(id)){
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || is_user_alive(i))
                        continue
                
                    if
(get_user_team(id) == get_user_team(i))
                        send_message(gMessage, id, i);
                }
            }
        }
    } else{
        if(chat_type)
        {
            for(new i = 1; i <= MaxPlayers; i++)
            {
                if(!is_user_connected(i))
                    continue
            
                send_message
(gMessage, id, i);
            }
        } else {
            if(is_user_alive(id))
            {
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || !is_user_alive(i))
                        continue
                
                    send_message
(gMessage, id, i);
                }
            } else if(!is_user_alive(id)){
                for(new i = 1; i <= MaxPlayers; i++)
                {
                    if(!is_user_connected(i) || is_user_alive(i))
                        continue
                
                    send_message
(gMessage, id, i);
                }
            }
        }
    }
}
stock send_message(const message[], const id, const i)
{
    message_begin(MSG_ONE, gSayText, {0, 0, 0}, i)
    write_byte(id)
    write_string(message)
    message_end()
}
stock is_has_slash(const Message[])
{
    if(Message[0] == '/')
        return true;
        
    return false
;
}

public client_infochanged(id)
{
    new newname[32],oldname[32]
    get_user_info(id, "name", newname,31)
    get_user_name(id,oldname,31)
    if(!is_user_connected(id) || is_user_bot(id)) 
        return PLUGIN_CONTINUE
        
    if
(!equali(newname, oldname))
    {
        set_user_info(id,"name",oldname);
        log_amx("namechange BLOCKED.");
        return PLUGIN_HANDLED
    
}
    return PLUGIN_CONTINUE
}
public msg_SayText()
{
    new arg[32]
    get_msg_arg_string(2, arg, 31)
    if(containi(arg,"name")!=-1)
        return PLUGIN_HANDLED

    return PLUGIN_CONTINUE
}
public plugin_natives()
{
    register_native("get_user_exp", "native_get_user_exp", 1);
    register_native("get_user_lvl", "native_get_user_lvl", 1);
    register_native("set_user_exp", "native_set_user_exp", 1);
    register_native("set_user_lvl", "native_set_user_lvl", 1);
    register_native("get_user_rankname", "native_get_user_rankname", 1);
}
public native_set_user_exp(id,num)
{
    UserData[id][gExp] = num;
}
public native_set_user_lvl(id,num)
{
    UserData[id][gLevel] = num;
}
public native_get_user_exp(id)
{
    return UserData[id][gExp];
}
public native_get_user_lvl(id)
{
    return UserData[id][gLevel];
}
public native_get_user_rankname(id)
{
    static szRankName[64];
    format(szRankName, charsmax(szRankName), "%L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
    return szRankName;
}
public Info()
{
    for(new id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_bot(id) && is_user_connected(id))
        {
            if(get_pcvar_num(gHudColor) == 0){
            set_hudmessage(203, 44, 49, 0.01, 0.20, 0, 1.0, 1.0, _, _, -1);
            }else
            if(get_pcvar_num(gHudColor) == 1){
            set_hudmessage(136, 255, 85, 0.01, 0.20, 0, 1.0, 1.0, _, _, -1);
            }
            
            static buffer
[192], len;
            len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
            len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]);
            if(UserData[id][gLevel] <= 19)
            {
                len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_XP",UserData[id][gExp],gLevels[UserData[id][gLevel]]);
            } else {
                len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX");
            }
            irank = get_user_stats(id,stats,bodyhits)
            ShowSyncHudMsg(id, g_MsgHud, "%s^n%L^n%L", buffer, LANG_PLAYER, "PL_RANK", irank, get_statsnum(), LANG_PLAYER, "GROUP_VK");
        }
    }
    return PLUGIN_CONTINUE
}
public GetWeapon(id)
{
    new szText[700 char];
    formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE");
    new menu = menu_create( szText, "gw_menu" );
    formatex( szText, charsmax( szText ), "awp");
    menu_additem( menu, szText, "1", 0 );
    formatex( szText, charsmax( szText ), "ak-47");
    menu_additem( menu, szText, "2", 0 );
    formatex( szText, charsmax( szText ), "m4a1");
    menu_additem( menu, szText, "3", 0 );
    formatex( szText, charsmax( szText ), "famas");
    menu_additem( menu, szText, "4", 0 );
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu,0);
    return PLUGIN_CONTINUE;
}
public gw_menu(id,menu,item)
{
    if( item == MENU_EXIT )
    {
        return PLUGIN_HANDLED;
    }
    
    new data
[ 6 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    new key = str_to_num( data );
    switch( key )
    {
        case 1:
        {
            give_item(id,"weapon_awp");
            cs_set_user_bpammo( id, CSW_AWP, 100);
        }
        case 2:
        {
            give_item(id,"weapon_ak47");
            cs_set_user_bpammo( id, CSW_AK47, 200);
        }
        case 3:
        {
            give_item(id,"weapon_m4a1");
            cs_set_user_bpammo( id, CSW_M4A1, 200);
        }
        case 4:
        {
            give_item(id,"weapon_famas");
            cs_set_user_bpammo( id, CSW_FAMAS, 200);
        }
    }
    
    return PLUGIN_HANDLED
;
}

public func_menu_server(id, menu, item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        
}
 
        new data
[6], iName[64], access, callback
        menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
 
        new key 
= str_to_num(data)
 
        switch
(key)
        {
        case 1:{
        reset_score(id)
               }
        case 2:{
        client_cmd(id, "say /voteban")
               }
        case 3:{
        client_cmd(id, "say /adminka")
               }
        case 4:{
        evil_army_menu(id)
               }
        }
        return PLUGIN_HANDLED
}

public func_evil_menu(id, menu, item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        
}
 
        new data
[6], iName[64], access, callback
        menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
 
        new key 
= str_to_num(data)
 
        switch
(key)
        {
        case 1:{
        if(get_user_flags(id) & ADM_MENU)
        set_level_menu(id)
               }
        case 2:{
        if(g_bonus_score[id] > 1){
        set_user_health(id, 255);
        g_bonus_score[id] -= 2;
               }
        }
        case 3:{
        if(g_bonus_score[id] > 1){
        set_user_armor(id, 255);
        g_bonus_score[id] -= 2;
               }
        }
        case 4:{
        if(cs_get_user_team(id) == CS_TEAM_CT){
        if(g_bonus_score[id] > 2){
        give_item(id,"weapon_ak47");
        cs_set_user_bpammo( id, CSW_AK47, 200);
        g_bonus_score[id] -= 3;
        }
        }else
        if(cs_get_user_team(id) == CS_TEAM_T){
        if(g_bonus_score[id] > 2){
        give_item(id,"weapon_m4a1");
        cs_set_user_bpammo( id, CSW_M4A1, 200);
        g_bonus_score[id] -= 3;
        }
        }
        }
        }
        return PLUGIN_HANDLED
}

public QueryHandler(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    switch(FailState)
    {
        case -2: log_amx("[Evil Army] Failed to connect (%d): %s", Errcode, Error);
        case -1: log_amx("[Evil Army] (%d): %s", Errcode, Error);
    }
    return PLUGIN_HANDLED
}

компилировал все исправленные плагины, все ошибки выдают
Аватара пользователя
erzhan2396
 
Сообщения: 8
Зарегистрирован: 17 янв 2017, 17:25
Откуда: Казахстан, Рудный
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Исправить ошибки в плагинах

Сообщение lop50956 » 17 мар 2017, 20:00

какие?
Аватара пользователя
lop50956
 
Сообщения: 178
Зарегистрирован: 29 ноя 2016, 00:36
Забанен
Благодарил (а): 18 раз.
Поблагодарили: 16 раз.
Опыт программирования: Больше трех лет
Языки программирования: Php

Re: Исправить ошибки в плагинах

Сообщение erzhan2396 » 17 мар 2017, 20:08

VIP CUSTOM
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

/hlds/web/www/amxxpc/work/scripting/vip_custom.sma(1) : error 010: invalid function or declaration

1 Error.
Could not locate output file /hlds/web/www/amxxpc/work/plugins/vip_custom.amx (compile failed).


Evil Army
1
2
3
4
5
6
7
8
9
10
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

/hlds/web/www/amxxpc/work/scripting/EvilArmy.sma(1) : error 010: invalid function or declaration
/hlds/web/www/amxxpc/work/scripting/EvilArmy.sma(704) : error 017: undefined symbol "get_user_stats"
/hlds/web/www/amxxpc/work/scripting/EvilArmy.sma(973) : error 017: undefined symbol "get_user_stats"
/hlds/web/www/amxxpc/work/scripting/EvilArmy.sma(974) : error 017: undefined symbol "get_statsnum"

4 Errors.
Could not locate output file /hlds/web/www/amxxpc/work/plugins/EvilArmy.amx (compile failed).

amx_adminmodel
1
2
3
4
5
6
7
8
9
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

/hlds/web/www/amxxpc/work/scripting/amx_adminmodel.sma(73) : warning 209: function "resetModel" should return a value
/hlds/web/www/amxxpc/work/scripting/amx_adminmodel.sma(87) : error 078: function uses both "return" and "return <value>"

1 Error.
Could not locate output file /hlds/web/www/amxxpc/work/plugins/amx_adminmodel.amx (compile failed).
</value>

amx_vipmodel
1
2
3
4
5
6
7
8
9
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

/hlds/web/www/amxxpc/work/scripting/amx_vipmodel.sma(19) : warning 209: function "resetModel" should return a value
/hlds/web/www/amxxpc/work/scripting/amx_vipmodel.sma(33) : error 078: function uses both "return" and "return <value>"

1 Error.
Could not locate output file /hlds/web/www/amxxpc/work/plugins/amx_vipmodel.amx (compile failed).
</value>

lady admin
1
2
3
4
5
6
7
8
9
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

/hlds/web/www/amxxpc/work/scripting/lady_admin.sma(19) : warning 209: function "resetModel" should return a value
/hlds/web/www/amxxpc/work/scripting/lady_admin.sma(33) : error 078: function uses both "return" and "return <value>"

1 Error.
Could not locate output file /hlds/web/www/amxxpc/work/plugins/lady_admin.amx (compile failed).
</value>
Аватара пользователя
erzhan2396
 
Сообщения: 8
Зарегистрирован: 17 янв 2017, 17:25
Откуда: Казахстан, Рудный
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Исправить ошибки в плагинах

Сообщение lop50956 » 17 мар 2017, 20:14

Испоользуй нормальный компилятор

И еще раз, первые 3 плагина скопируй нормально, там нет ошибок.
Аватара пользователя
lop50956
 
Сообщения: 178
Зарегистрирован: 29 ноя 2016, 00:36
Забанен
Благодарил (а): 18 раз.
Поблагодарили: 16 раз.
Опыт программирования: Больше трех лет
Языки программирования: Php

Re: Исправить ошибки в плагинах

Сообщение erzhan2396 » 17 мар 2017, 20:16

где компилировать?
я тут компилирую Вы должны зарегистрироваться, чтобы видеть ссылки.
Аватара пользователя
erzhan2396
 
Сообщения: 8
Зарегистрирован: 17 янв 2017, 17:25
Откуда: Казахстан, Рудный
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Исправить ошибки в плагинах

Сообщение Lethargy » 17 мар 2017, 21:18

erzhan2396 писал(а):где компилировать?
я тут компилирую Вы должны зарегистрироваться, чтобы видеть ссылки.


У них не правильный мёд, надо кушать официальный-расово-правильный мёд.
Вы должны зарегистрироваться, чтобы видеть ссылки.
Lawful evil ]:->

Были бы в языке pawn объекты, было бы круто. Почему нет объектов в павне?
Аватара пользователя
Lethargy
 
Сообщения: 179
Зарегистрирован: 12 мар 2017, 17:25
Благодарил (а): 34 раз.
Поблагодарили: 15 раз.
Языки программирования: За 3-4 часа любой язык

След.

Вернуться в Поиск исполнителей / заказчиков

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3