В чём ошибка?

T591

Новичок
Сообщения
5
Реакции
0
Как компилировать? Разные компиляторы дают разную ошибку, не могу решить помогите пожалуйста.
CSS:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>
#include <hud>
#include <dhudmessage>
#include <WPMGPrintChatColor>
#include <yahooo_to_Core>
#include <yahooo_fixed>

#define PLUGIN    "Server"
#define AUTHOR    "trofian"
#define VERSION    "1.2"

#define VIP            ADMIN_LEVEL_G // s
#define ADMIN            ADMIN_LEVEL_H // t
#define BOSS            ADMIN_LEVEL_A // m
    
#define Player[%1][%2]            g_player_data[%1 - 1][%2]
#define Lang[%1]            g_lang_data[%1]

#define get_gun_owner(%1)        get_pdata_cbase(%1, 41, 4)
#define get_gun_in_hand(%1)        get_pdata_cbase(%1, 373, 5)
#define is_entity_player(%1)        (1<=%1<=g_maxplayers)
#define is_valid_knife(%1)        (0<=%1<total_knifes)

#define TASKID 133721

#define LANG_SIZE            128
#define KNIFE_NONE            -1

#define c_class_string             32
#define c_class_description         128
#define c_class_chatdescription     190
#define c_item_string_menu         64
#define c_item_string_chat         190
#define c_custom_item_max_txt        64

#define VIP_FLAG            ADMIN_LEVEL_G
#define RESET_ABIL_AFTER_SPAWN    5.0

//#define REMOVE_STRIP_ENT

const OUR_EXIT_ITEM = 1337

enum _:Crosshair_States
{
    CrossOff,           
    CrossHide,           
    CrossDefault,           
    CrossCannot,           
    CrossFar,           
    CrossTime,           
    CrossOk               
}

enum _:Player_Properties
{
    Knife,           
    WasChanged,       
    Crosshair        // Crosshair_State
}

enum _:Lang_Properties
{
    L_ItemAlreadyHave,
    L_ItemNotAvailable,
    L_ItemDead,
    L_ItemAlive,
    L_KnifeNextRound,
    L_KnifeAlreadyHave,
    L_DHUD_Spawn
}

new
g_player_data[32][Player_Properties],
g_lang_data[Lang_Properties][LANG_SIZE]

new
Array:KnifeTxt, Array:KnifeDescription, Array:KnifeChatDescription, Array:KnifeAbilCallback, Array:KnifeAbilResetTime,
Array:KnifeAbilMinDist, Array:KnifeAbilMaxDist, Array:KnifePropHp, Array:KnifePropSpeed, Array:KnifePropGravity,
Array:ShopItemMenuText, Array:ShopItemChatText, Array:ShopItemCallback, Array:ShopItemCost, Array:CustomMenuItemTXT,
Array:CustomMenuItemCallback, Array:CustomMenuItemMenuKey,

Float:g_PlayerLastUsedAbility[33],
g_iMainMenu, g_iShopMenu,
g_syncHudMessage,
g_maxplayers,

g_msgHideWeapon,

forward_abil_pre, forward_abil_post, forward_core_change_knife_pre, forward_core_change_knife_post,

total_knifes,

bool:in_reloading[33],

g_custom_menu_count

public plugin_natives()
{
    register_native("kc_register_knife", "_yah_register_knife", 0)
    
    register_native("kc_register_shop_item", "_yah_register_shop", 0)
    
    register_native("kc_register_custom_menu_item", "_yah_register_cust_menu", 0)
    
    register_native("kc_set_user_knife", "_yah_user_set_knife", 0)
    register_native("kc_get_user_knife", "_yah_user_get_knife", 0)
    
    register_native("kc_get_ability_last_reset", "_yah_get_ability_last_reset", 0)
    
    register_native("kc_get_info_ability", "_yah_get_info_ability", 0)
    
    register_native("kc_set_crosshair", "_yah_set_crosshair", 0)
    
    // g_CrosshairKnifeState
    register_native("kc_get_crosshair", "_yah_get_crosshair", 0)
    
    register_native("kc_reset_speed", "_yah_reset_speed", 0)
    
    register_native("kc_reset_gravity", "_yah_reset_gravity", 0)
    
    register_native("kc_get_user_max_hp", "_yah_get_user_max_hp", 0)
    
    register_native("kc_in_reloading", "_yah_in_reloading", 0)
}

public plugin_precache()
{
    precache_generic("sprites/SecondNewKnife/hud_cannot.spr")
    precache_generic("sprites/SecondNewKnife/hud_default.spr")
    precache_generic("sprites/SecondNewKnife/hud_far.spr")
    precache_generic("sprites/SecondNewKnife/hud_ok.spr")
    precache_generic("sprites/SecondNewKnife/hud_time.spr")
    
    precache_generic("sprites/SecondNewKnife/hud1.spr")
    precache_generic("sprites/SecondNewKnife/hud2.spr")
    precache_generic("sprites/SecondNewKnife/hud3.spr")
    precache_generic("sprites/SecondNewKnife/hud1_ammo.spr")
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    forward_abil_pre = CreateMultiForward("kc_ability_pre", ET_STOP, FP_CELL, FP_CELL)
    forward_abil_post = CreateMultiForward("kc_ability_post", ET_STOP, FP_CELL, FP_CELL)
    forward_core_change_knife_pre = CreateMultiForward("kc_change_knife_core_pre", ET_STOP, FP_CELL, FP_CELL)
    forward_core_change_knife_post = CreateMultiForward("kc_change_knife_core_post", ET_STOP, FP_CELL, FP_CELL)
    
    KnifeTxt             = ArrayCreate(c_class_string)
    KnifeDescription         = ArrayCreate(c_class_description)
    KnifeChatDescription        = ArrayCreate(c_class_chatdescription)
    KnifeAbilCallback        = ArrayCreate()
    KnifeAbilResetTime        = ArrayCreate()
    KnifeAbilMinDist        = ArrayCreate()
    KnifeAbilMaxDist        = ArrayCreate()
    
    KnifePropHp            = ArrayCreate()
    KnifePropGravity        = ArrayCreate()
    KnifePropSpeed            = ArrayCreate()
    
    ShopItemMenuText        = ArrayCreate(c_item_string_menu)
    ShopItemChatText        = ArrayCreate(c_item_string_chat)
    ShopItemCallback        = ArrayCreate()
    ShopItemCost            = ArrayCreate()
    
    CustomMenuItemTXT        = ArrayCreate(c_custom_item_max_txt)
    CustomMenuItemCallback        = ArrayCreate()
    CustomMenuItemMenuKey        = ArrayCreate(32)
    
    register_clcmd("chooseteam", "MainMenu")
    
    register_clcmd("say /knife", "show_knifes_menu")
    register_clcmd("say_team /knife", "show_knifes_menu")
    
    register_clcmd("say knife", "show_knifes_menu")
    register_clcmd("say_team knife", "show_knifes_menu")
    
    register_clcmd("say /knifes", "show_knifes_menu")
    register_clcmd("say_team /knifes", "show_knifes_menu")
    
    register_clcmd("say knifes", "show_knifes_menu")
    register_clcmd("say_team knifes", "show_knifes_menu")
    
    register_clcmd("say /menu", "show_knifes_menu")
    register_clcmd("say_team /menu", "show_knifes_menu")
    
    register_clcmd("say menu", "show_knifes_menu")
    register_clcmd("say_team menu", "show_knifes_menu")
    
    register_clcmd("say /shop", "show_shop_menu")
    register_clcmd("say_team /shop", "show_shop_menu")
    
    register_clcmd("say shop", "show_shop_menu")
    register_clcmd("say_team shop", "show_shop_menu")
    
    register_clcmd("say shopmenu", "show_shop_menu")
    register_clcmd("say_team shopmenu", "show_shop_menu")
    
    register_clcmd("say /shopmenu", "show_shop_menu")
    register_clcmd("say_team /shopmenu", "show_shop_menu")

        register_menucmd(register_menuid("Menu"), 1023, "MenuHandler")

        register_menucmd(register_menuid("Player"), 1023, "MenuPlayer");
    
    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "HAM_Secondary", 1)
    RegisterHam(Ham_Spawn, "player", "HAM_Player_Spawn", 1)
    RegisterHam(Ham_Killed, "player", "HAM_Player_killed", 1)
    RegisterHam(Ham_Player_PreThink, "player", "Ham_PreThink_player")
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "hook_knife_deploy_post", 1)
    
    register_event("CurWeapon", "CurWeapon", "be","1=1")
    register_event("HLTV", "HLTV", "a", "1=0", "2=0")
    
    register_logevent("RoundStart", 2, "1=Round_Start")
    
    g_syncHudMessage = CreateHudSyncObj()
    
    set_task(0.3, "create_knife_menu")
    set_task(0.3, "create_shop_menu")
    
    g_maxplayers = get_maxplayers()
    
    g_msgHideWeapon = get_user_msgid("HideWeapon")
    
    register_dictionary("Knife.txt")
    
    format(Lang[L_ItemAlreadyHave], LANG_SIZE-1, "%L", LANG_PLAYER, "ITEM_RET_HAVE")
    format(Lang[L_ItemNotAvailable], LANG_SIZE-1, "%L", LANG_PLAYER, "ITEM_RET_NOT")
    format(Lang[L_ItemDead], LANG_SIZE-1, "%L", LANG_PLAYER, "ITEM_RET_DEAD")
    format(Lang[L_ItemAlive], LANG_SIZE-1, "%L", LANG_PLAYER, "ITEM_RET_ALIVE")
    
    format(Lang[L_KnifeNextRound], LANG_SIZE-1, "%L", LANG_PLAYER, "KNIFE_NEXT_ROUND")
    format(Lang[L_KnifeAlreadyHave], LANG_SIZE-1, "%L", LANG_PLAYER, "KNIFE_ALREADY_HAVE")
    
    format(Lang[L_DHUD_Spawn], LANG_SIZE-1,"%L", LANG_PLAYER, "DHUD_BUY")
    
    #if defined REMOVE_STRIP_ENT
    set_task(0.5, "del_player_weaponstrip")
    #endif
}

#if defined REMOVE_STRIP_ENT
public del_player_weaponstrip()
{
    new ent = -1
    
    while((ent = find_ent_by_target(ent, "player_weaponstrip")))
    {
        remove_entity(ent)
        
        server_print("[%s] The player_weaponstrip was removed (id %d)", PLUGIN, ent)
    }
}
#endif

public hook_knife_deploy_post(gun)
{
    static id
    id = get_gun_owner(gun)
    
    if(!is_valid_knife(Player[id][Knife]))
        return
    
    static txt[c_class_string+4]
    ArrayGetString(KnifeTxt, Player[id][Knife], txt, charsmax(txt))
    
    if(equal(txt, "NULL", 4))
    {
        SetKnifeCrosshair(id, 0, CrossOff)
        yah_hud_change_to(id, "weapon_knife", "weapon_knife")
        return
    }   
    
    if(isCrossKnifeFullOff(id))
    {
        SetKnifeCrosshair(id, 0, CrossOff)
        yah_hud_change_to(id, "weapon_knife", txt)
        return
    }
    
    add(txt, charsmax(txt), "_def")
    SetKnifeCrosshair(id, 1, CrossDefault)
    yah_hud_change_to(id, "weapon_knife", txt)
}

//<Ability callback
public HAM_Secondary(gun)
{
    if(pev_valid(gun) != 2)
        return HAM_IGNORED
    
    static id, victim, body
    static Float:MinDist, Float:MaxDist
    static fwReturn_pre, abilReturn, fwReturn_post
    
    id = get_pdata_cbase(gun, 41, 4)
    
    if(g_PlayerLastUsedAbility[id] > get_gametime() || !is_user_alive(id))
        return HAM_IGNORED
    
    get_user_aiming(id, victim, body)
 
    if(!is_entity_player(victim))
        victim = -1
    else if(get_user_team(id) == get_user_team(victim))
        return HAM_IGNORED
    
    MinDist = ArrayGetCell(KnifeAbilMinDist, Player[id][Knife])
    MaxDist = ArrayGetCell(KnifeAbilMaxDist, Player[id][Knife])
    
    if(MinDist != -1.0 && MaxDist != -1.0 && !ka_is_thunder(id))
        if(victim == -1 || !(MinDist <= entity_range(id, victim) <= MaxDist))
            return HAM_IGNORED
    
    fwReturn_pre = PLUGIN_CONTINUE
    ExecuteForward(forward_abil_pre, fwReturn_pre, id, victim)
    if(fwReturn_pre == PLUGIN_HANDLED)
        return HAM_IGNORED
    
    ExecuteForward(ArrayGetCell(KnifeAbilCallback, Player[id][Knife]), abilReturn, id, victim)
    
    if(abilReturn != PLUGIN_HANDLED && abilReturn != PLUGIN_HANDLED_MAIN)
    {
        static Float:fSeconds, szSeconds[11], seconds
        
        fSeconds = ArrayGetCell(KnifeAbilResetTime, Player[id][Knife])
        float_to_str(fSeconds, szSeconds, charsmax(szSeconds))
        seconds = str_to_num(szSeconds)
        
        static divider
        
        if(ka_Zeus(id))
            divider = 10
        else
        {
            if(get_user_flags(id) & VIP_FLAG)
                divider = 2
            else
                divider = 1
        }
        
        static args[2]
        args[0] = id
        args[1] = seconds/divider
        set_task(0.0, "readout_hud", TASKID+id, args, 2)
        
        g_PlayerLastUsedAbility[id] = fSeconds/float(divider) + get_gametime()
        
        return HAM_IGNORED
    }

    ExecuteForward(forward_abil_post, fwReturn_post, id, victim)
    
    return HAM_IGNORED
}

public HAM_Player_Spawn(id)
{
    if(!is_user_alive(id))
        return
    
    if(Player[id][Knife] == KNIFE_NONE)
    {
        Player[id][Knife] = random_num(0, ArraySize(KnifeDescription)-1)
        Player[id][Knife] = random_num(0, ArraySize(KnifeDescription)-1)
        if(!is_user_bot(id))
            show_knifes_menu(id)
    }
    
    reset_glow(id)
    strip_and_give(id)
    
    set_task(1.0, "set_hp", id)
    set_task(1.0, "set_speed", id)
    set_task(1.0, "set_gravity", id)
    set_task(1.5, "show_dhud", id)
    
    remove_task(TASKID+id)
    g_PlayerLastUsedAbility[id] = get_gametime() + RESET_ABIL_AFTER_SPAWN
    
    static args[2]
    args[0] = id
    args[1] = floatround(RESET_ABIL_AFTER_SPAWN)
    set_task(0.0, "readout_hud", TASKID+id, args, 2)
    
    Player[id][WasChanged] = 0
}

public HAM_Player_killed(id)
    Player[id][Crosshair] = CrossOff

//<Hud if is
public Ham_PreThink_player(id)
{   
    if(ka_is_thunder(id))
        return
    
    if(Player[id][Crosshair] == CrossOff)
        return
    
    if(!is_user_alive(id))
        return
    
    if(get_user_weapon(id) != CSW_KNIFE || !is_valid_knife(Player[id][Knife]))
    {
        if(Player[id][Crosshair] > CrossHide)
            SetKnifeCrosshair(id, 0)
        return
    }
    
    static victim, body
    get_user_aiming(id, victim, body)
    
    static Float:MinDist, Float:MaxDist
    MinDist = ArrayGetCell(KnifeAbilMinDist, Player[id][Knife])
    MaxDist = ArrayGetCell(KnifeAbilMaxDist, Player[id][Knife])
    
    if(g_PlayerLastUsedAbility[id] >= get_gametime())
        SetKnifeCrosshair(id, 1, CrossTime)
    else if(!is_entity_player(victim) || get_user_team(id) == get_user_team(victim))
        SetKnifeCrosshair(id, 1)
    else if(!(MinDist <= entity_range(id, victim) <= MaxDist))
        SetKnifeCrosshair(id, 1, CrossFar)
    else if(Player[id][Crosshair] == CrossCannot)
        return
    else
        SetKnifeCrosshair(id, 1, CrossOk)
}

SetKnifeCrosshair(id, hide, cross=CrossDefault) // hide: 0 - ������ ������, 1 - ��������;
{
    if(!is_entity_player(id))
        return
        
    message_begin(MSG_ONE, g_msgHideWeapon, _, id)
    if(hide) write_byte(1<<7)
    else write_byte(1>>7)
    message_end()
    
    if(!hide)
    {
        if(cross == CrossOff)
            Player[id][Crosshair] = CrossOff
        else
            Player[id][Crosshair] = CrossHide
        return
    }
        
    static knife_txt[c_class_string+4]
    ArrayGetString(KnifeTxt, Player[id][Knife], knife_txt, charsmax(knife_txt))
    
    switch(cross)
    {
        case CrossDefault: formatex(knife_txt, charsmax(knife_txt), "%s_def", knife_txt)
        case CrossCannot: formatex(knife_txt, charsmax(knife_txt), "%s_cnot", knife_txt)
        case CrossFar: formatex(knife_txt, charsmax(knife_txt), "%s_far", knife_txt)
        case CrossTime: formatex(knife_txt, charsmax(knife_txt), "%s_time", knife_txt)
        case CrossOk: formatex(knife_txt, charsmax(knife_txt), "%s_ok", knife_txt)
    }
    
    if(Player[id][Crosshair] != cross)
        yah_hud_change_to(id, "weapon_knife", knife_txt)
    
    Player[id][Crosshair] = cross
}

isCrossKnifeFullOff(id)
{
    static Float:MinDist, Float:MaxDist
    MinDist = ArrayGetCell(KnifeAbilMinDist, Player[id][Knife])
    MaxDist = ArrayGetCell(KnifeAbilMaxDist, Player[id][Knife])
    
    if(MinDist == -1.0 && MaxDist == -1.0)
        return 1
    
    return 0
}

strip_and_give(id)
{
    engclient_cmd(id, "weapon_knife")
    
    static gun_in_hand
    gun_in_hand = get_gun_in_hand(id)
    if(gun_in_hand != -1)
    {
        ExecuteHamB(Ham_Item_Deploy, get_gun_in_hand(id))
        emit_sound(id, CHAN_ITEM, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
    }
    
    static knife_txt[c_class_string]
    ArrayGetString(KnifeTxt, Player[id][Knife], knife_txt, charsmax(knife_txt))
        
    if(!isCrossKnifeFullOff(id))
        SetKnifeCrosshair(id, 1)
    else
        SetKnifeCrosshair(id, 0)
}

public set_hp(id)
{
    if(!is_user_alive(id))
        return
    
    if(Player[id][Knife] == -1)
    {
        set_user_health(id, 100)
        return
    }
    
    set_user_health(id, ArrayGetCell(KnifePropHp, Player[id][Knife]))
}

public set_speed(id)
{
    if(!is_user_alive(id))
        return
    
    if(Player[id][Knife] == -1)
        return
    
    set_user_maxspeed(id, ArrayGetCell(KnifePropSpeed, Player[id][Knife]))
}

public set_gravity(id)
{
    if(!is_user_alive(id))
        return
    
    if(Player[id][Knife] == -1)
        return
    
    set_user_gravity(id, ArrayGetCell(KnifePropGravity, Player[id][Knife]))
}

public show_dhud(id)
{
    set_dhudmessage(11, 218, 81, -1.0, 0.70, 0, 1.0, 4.0, 0.1, 2.0)
    show_dhudmessage(id, "%s", Lang[L_DHUD_Spawn])
}   

public reset_glow(id) if(is_user_alive(id)) set_user_rendering(id)

public HLTV()
{
    for(new i=1; i<=g_maxplayers; i++)
        Player[i][WasChanged] = 0
}

public RoundStart()
{
    static i
    for(i=1; i<=g_maxplayers; i++)
    {
        if(!is_user_alive(i)) continue
        set_task(0.2, "set_speed", i)
    }
}

/*================================================================================
    Менюшки сервера
=================================================================================*/
public MainMenu(id)
{
   new szName[32];
   get_user_name(id, szName, charsmax(szName))
   new szMenu[2024], iLen;
   new KEYSMENU = MENU_KEY_0;
 
   if(get_user_flags(id) & BOSS)
   {
       iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yИгровое Меню \yツ^n\dЗдравствуй: \r%s^n\wВаша Привилегия\r: \d[\yБосс\d]^n^n", szName)
   }
   else  if(get_user_flags(id) & ADMIN)
   {
       iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yИгровое Меню \yツ^n\dЗдравствуй: \r%s^n\wВаша Привилегия\r: \d[\yАдмин\d]^n^n", szName)
   }
   else if(get_user_flags(id) & VIP)
   {
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yИгровое Меню \yツ^n\dЗдравствуй: \r%s^n\wВаша Привилегия\r: \d[\yВип\d]^n^n", szName)
   }
   else
   {
       iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yИгровое Меню \yツ^n\dЗдравствуй: \r%s^n\wВаша Привилегия\r: \d[\yИгрок\d]^n^n", szName)
   }
 
   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r1\y] \wМагазин^n^n")
   KEYSMENU |= MENU_KEY_1;
 
   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r2\y] \wВыбрать Нож^n")
   KEYSMENU |= MENU_KEY_2;
 
   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r3\y] \wОдеть Шапку^n")
   KEYSMENU |= MENU_KEY_3;

   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r4\y] \wВызвать на Дуель^n^n")
   KEYSMENU |= MENU_KEY_4;
   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r5\y] \wКупить \wПривилегии^n")
   KEYSMENU |= MENU_KEY_5;
   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r6\y] \wСменить Команду^n^n")
   KEYSMENU |= MENU_KEY_6;

   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r7\y] \wМеню Привилегий^n")
   KEYSMENU |= MENU_KEY_7;
   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r8\y] \wЛичный Кабинет^n^n")
   KEYSMENU |= MENU_KEY_8;

   iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r0\y] \wВыход^n^n\yПокупка Привилегии \d[\rvk/CS.NETWKNF\d]")
 
   show_menu(id, KEYSMENU, szMenu, -1, "Menu")
 
   return PLUGIN_HANDLED;
}
 
public MenuHandler(id, key)
{
   new SteamID[35]
   get_user_authid(id, SteamID, charsmax(SteamID))

   switch(++key)
   {
      case 1:
      {
         show_shop_menu(id)
      }
      case 2:
      {
         show_knifes_menu(id)
      }
      case 3:
      {
     client_cmd(id, "say /hats")
      }
      case 4:
      {
     client_cmd(id, "say /duel")
      }
      case 5:
      {
     if(equal( SteamID, "STEAM_0:1:21904396"))
         {
        ProtectorMenu(id)
        PrintChatColor(id, _, "!y[!gПокупка!y] Купить !tПривилегии !yВы можете в группе !tvk/CS.NETWKNF")
         }
         else
         {
        PrintChatColor(id, _, "!y[!gПокупка!y] Купить !tПривилегии !yВы можете в группе !tvk/CS.NETWKNF")
         }
      }
      case 6:
      {
         client_cmd(id, "goteamvyb")
      }
      case 7:
      {
     client_cmd(id, "privileges")
      }
      case 8:
      {
         client_cmd(id, "surf_kabinet")
      }
   }
   return PLUGIN_HANDLED;
}

public create_knife_menu()
{
    g_iMainMenu = menu_create("\r[\yCS.NETWKNF\r] \yНожи", "knifes_menu_handler")
    
    new iSize = ArraySize(KnifeDescription)
    new sTmpBuffer[c_class_description]
    new sNumStr[11]
    
    for(new i; i < iSize; i++)
    {
        ArrayGetString(KnifeDescription, i, sTmpBuffer, charsmax(sTmpBuffer))
        num_to_str(i+1, sNumStr, charsmax(sNumStr))
        
        menu_additem(g_iMainMenu, sTmpBuffer, sNumStr, 0)
    }
    
    new sTmpBuffer2[c_custom_item_max_txt]
    new sNumStr2[11]
    for(new i; i < ArraySize(CustomMenuItemTXT); i++)
    {
        ArrayGetString(CustomMenuItemTXT, i, sTmpBuffer2, charsmax(sTmpBuffer2))
        ArrayGetString(CustomMenuItemMenuKey, i, sNumStr2, charsmax(sNumStr2))
        
        menu_additem(g_iMainMenu, sTmpBuffer2, sNumStr2, 0)
    }

    new szExitItem[16]
    num_to_str( OUR_EXIT_ITEM, szExitItem, charsmax(szExitItem) )

    menu_additem( g_iMainMenu, "Выход", szExitItem )
    menu_setprop( g_iMainMenu, MPROP_PERPAGE, 0 )    // no paginating
    menu_setprop( g_iMainMenu, MPROP_EXIT, MEXIT_NEVER )
        
    //menu_setprop(g_iMainMenu, MPROP_PERPAGE, 0)
    //menu_setprop(g_iMainMenu, MPROP_NEXTNAME, "Вперёд")
    //menu_setprop(g_iMainMenu, MPROP_BACKNAME, "Назад")
    //menu_setprop(g_iMainMenu, MPROP_EXITNAME, "Выход")
    //menu_setprop(g_iMainMenu, MPROP_EXIT, MEXIT_ALL)
}

public show_knifes_menu(id)
{
    //menu_setprop(g_iMainMenu, MPROP_PERPAGE, 0)
    menu_display(id, g_iMainMenu, 0)
    
    return PLUGIN_HANDLED
}

public knifes_menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
        return PLUGIN_HANDLED
    
    static s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    static key, mreturn, strkey[11]
    key = str_to_num(s_Data)

    if(key == OUR_EXIT_ITEM)
        return PLUGIN_HANDLED
    
    for(new i; i < ArraySize(CustomMenuItemCallback); i++)
    {
        ArrayGetString(CustomMenuItemMenuKey, i, strkey, charsmax(strkey))
        if(str_to_num(strkey) == key)
        {
            ExecuteForward(ArrayGetCell(CustomMenuItemCallback, i), mreturn, id)
            return PLUGIN_CONTINUE
        }
    }
    
    change_knife_core(id, key-1)
    
    return PLUGIN_CONTINUE
}
//</Main Menu

//<Shop Menu
public create_shop_menu()
{
    g_iShopMenu = menu_create("\r[\yCS.NETWKNF\r] \yМагазин", "shop_menu_handler")
    
    new iSize = ArraySize(ShopItemMenuText)
    new sTmpBuffer[c_item_string_menu]
    new sTmpBufferAdd[c_item_string_menu+32]
    new sNumStr[11]
    
    for(new i; i < iSize; i++)
    {
        ArrayGetString(ShopItemMenuText, i, sTmpBuffer, charsmax(sTmpBuffer))
        num_to_str(i+1, sNumStr, charsmax(sNumStr))
        
        format(sTmpBufferAdd, charsmax(sTmpBufferAdd), "\y[\r$%d\y] \d- \w%s", ArrayGetCell(ShopItemCost, i), sTmpBuffer)
        
        menu_additem(g_iShopMenu, sTmpBufferAdd, sNumStr, 0)
    }
    
    menu_setprop(g_iShopMenu, MPROP_NEXTNAME, "Вперёд")
    menu_setprop(g_iShopMenu, MPROP_BACKNAME, "Назад")
    menu_setprop(g_iShopMenu, MPROP_EXITNAME, "Выход")
    menu_setprop(g_iShopMenu, MPROP_EXIT, MEXIT_ALL)
}

public show_shop_menu(id)
{
    menu_display(id, g_iShopMenu, 0)
    
    return PLUGIN_HANDLED
}

public shop_menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
        return PLUGIN_HANDLED
    
    static s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    static i_Key, player_money, item_cost
    static callbackId, result
    
    i_Key = str_to_num(s_Data)-1
    
    player_money = cs_get_user_money(id)
    item_cost = ArrayGetCell(ShopItemCost, i_Key)
    
    if(player_money < item_cost)
    {
        PrintChatColor(id, _, "!y[!gМагазин!y] %L", LANG_PLAYER, "ITEM_NOT_MONEY")
        return PLUGIN_HANDLED
    }
    
    callbackId = ArrayGetCell(ShopItemCallback, i_Key)
    ExecuteForward(callbackId, result, id)
    
    switch(result)
    {
        case 0..3: PrintChatColor(id, _, "!y[!gМагазин!y] %s", Lang[result])
    }
    
    if(result > -1) return PLUGIN_CONTINUE
    
    cs_set_user_money(id, player_money-item_cost)
    
    static chat_string[c_item_string_chat]
    ArrayGetString(ShopItemChatText, i_Key, chat_string, charsmax(chat_string))
    
    PrintChatColor(id, _, "!y[!gМагазин!y] %s", chat_string)
    
    return PLUGIN_CONTINUE
}
//<Shop Menu

public client_connect(id)
{
    client_cmd(id, "cl_backspeed %d; cl_forwardspeed %d; cl_sidespeed %d", 400, 400, 400)
    Player[id][Knife] = -1
    Player[id][WasChanged] = 0
}

public readout_hud(put_args[])
{
    static id, second
    id = put_args[0]
    second = put_args[1]

    static i
    for(i=1; i<=g_maxplayers; i++)
    {
        if(!is_user_connected(i) || is_user_alive(i))
            continue
        
        if(pev(i, pev_iuser2) == id)
        {
            if(second == 0)
            {
                set_hudmessage(255, 255, 255, 0.01, 0.73, 0, 0.0, 1.1, 0.0, 0.0, 3) // 3 - �����
                ShowSyncHudMsg(i, g_syncHudMessage, "Перезарядка завершена!", second)
            }
            else
            {
                set_hudmessage(255, 255, 255, 0.01, 0.73, 0, 0.0, 1.1, 0.0, 0.0, 3)
                ShowSyncHudMsg(i, g_syncHudMessage, "Перезарядка %d сек.", second)
            }
        }
    }
    
    if(second == 0)
    {
        set_hudmessage(255, 255, 255, 0.01, 0.73, 0, 0.0, 1.1, 0.0, 0.0, 3) // 3 - �����
        ShowSyncHudMsg(id, g_syncHudMessage, "Перезарядка завершена!", second)
        in_reloading[id] = false
        return PLUGIN_HANDLED
    }
    
    if(!is_user_alive(id))
    {
        in_reloading[id] = false
        return PLUGIN_HANDLED
    }
    
    set_hudmessage(255, 255, 255, 0.01, 0.73, 0, 0.0, 1.1, 0.0, 0.0, 3)
    ShowSyncHudMsg(id, g_syncHudMessage, "Перезарядка %d сек.", second)
    second--
    
    static args[2]
    args[0] = id
    args[1] = second
    in_reloading[id] = true
    set_task(1.0, "readout_hud", TASKID+id, args, 2)
    
    return PLUGIN_CONTINUE
}
// </�������

public CurWeapon(id) set_speed(id)

public change_knife_core(id, knifeId)
{
    new fwReturn_pre = PLUGIN_CONTINUE
    ExecuteForward(forward_core_change_knife_pre, fwReturn_pre, id, knifeId)
    if(fwReturn_pre == PLUGIN_HANDLED)
        return PLUGIN_HANDLED
    
    if(Player[id][WasChanged] && is_user_alive(id))
    {
        PrintChatColor(id, _, "!y[!gKnifeMod!y] %s", Lang[L_KnifeNextRound])
        return PLUGIN_HANDLED
    }
    
    if(Player[id][Knife] == knifeId)
    {
        PrintChatColor(id, _, "!y[!gKnifeMod!y] %s", Lang[L_KnifeAlreadyHave])
        return PLUGIN_HANDLED
    }
    
    static description[c_class_chatdescription]
    
    if(is_user_alive(id))
    {
        static user_hp
        user_hp = get_user_health(id)
        if(user_hp > ArrayGetCell(KnifePropHp, knifeId) || user_hp == ArrayGetCell(KnifePropHp, Player[id][Knife]))
            set_user_health(id, ArrayGetCell(KnifePropHp, knifeId))
        
        Player[id][Knife] = knifeId
        strip_and_give(id)
        
        set_speed(id)
        set_gravity(id)
        
        ArrayGetString(KnifeChatDescription, Player[id][Knife], description, charsmax(description))
        PrintChatColor(id, _, description)
    }
    else
    {
        Player[id][Knife] = knifeId
        
        ArrayGetString(KnifeChatDescription, Player[id][Knife], description, charsmax(description))
        PrintChatColor(id, _, description)
    }
    
    if(isCrossKnifeFullOff(id))
        Player[id][Crosshair] = CrossOff
    
    if(get_user_flags(id) & VIP_FLAG)
        Player[id][WasChanged] = 0
    else
        Player[id][WasChanged] = 1
    
    ExecuteForward(forward_core_change_knife_post, fwReturn_pre, id, knifeId)
    
    return PLUGIN_CONTINUE
}

public plugin_end()
{
    DestroyForward(forward_abil_pre)
    DestroyForward(forward_abil_post)
    DestroyForward(forward_core_change_knife_pre)
    DestroyForward(forward_core_change_knife_post)
}

// Natives
public _yah_register_knife(plugin, num_params)
{   
    new description[c_class_description]
    get_string(1, description, charsmax(description))
    
    new chatdescription[c_class_chatdescription]
    get_string(2, chatdescription, charsmax(chatdescription))
    
    new callback[33]
    get_string(3, callback, charsmax(callback))
    
    new Float:resetTime = get_param_f(4)
    
    new hp = get_param(5)
    new Float:gravity = get_param_f(6)
    new Float:speed = get_param_f(7)
    
    new knife_txt[c_class_string]
    get_string(8, knife_txt, charsmax(knife_txt))
    
    new Float:minDist = get_param_f(9)
    new Float:maxDist = get_param_f(10)
    
    // callback(user, victim)
    new fId = CreateOneForward(plugin, callback, FP_CELL, FP_CELL)
    if(fId < 0)
    {
        log_error(AMX_ERR_NATIVE, "[%s] (yah_register_knife) Callback ability function not found ('%s')", PLUGIN, callback)
        return -1
    }
    
    ArrayPushString(KnifeDescription, description)
    ArrayPushString(KnifeChatDescription, chatdescription)
    ArrayPushCell(KnifeAbilCallback, fId)
    ArrayPushCell(KnifeAbilResetTime, resetTime)
    ArrayPushCell(KnifePropHp, hp)
    ArrayPushCell(KnifePropGravity, gravity)
    ArrayPushCell(KnifePropSpeed, speed)
    ArrayPushString(KnifeTxt, knife_txt)
    ArrayPushCell(KnifeAbilMinDist, minDist)
    ArrayPushCell(KnifeAbilMaxDist, maxDist)
    
    if(!equal(knife_txt, "NULL"))
    {
        if(minDist != -1.0 && maxDist != -1.0)
        {
            new knife_txt_n[c_class_string+4]
            
            format(knife_txt_n, charsmax(knife_txt_n), "%s_def", knife_txt)
            yah_register_hud("weapon_knife", knife_txt_n)
            format(knife_txt_n, charsmax(knife_txt_n), "%s_ok",knife_txt)
            yah_register_hud("weapon_knife", knife_txt_n)
            format(knife_txt_n, charsmax(knife_txt_n), "%s_time", knife_txt)
            yah_register_hud("weapon_knife", knife_txt_n)
            format(knife_txt_n, charsmax(knife_txt_n), "%s_far", knife_txt)
            yah_register_hud("weapon_knife", knife_txt_n)
            format(knife_txt_n, charsmax(knife_txt_n), "%s_cnot", knife_txt)
            yah_register_hud("weapon_knife", knife_txt_n)
        }
        else
            yah_register_hud("weapon_knife", knife_txt)
    }
    
    total_knifes++
    
    return total_knifes-1
}

public _yah_register_shop(plugin, num_params)
{
    new callback[33]
    get_string(1, callback, charsmax(callback))
    
    new chat_text[c_item_string_chat]
    get_string(2, chat_text, charsmax(chat_text))
    
    new menu_text[c_item_string_menu]
    get_string(3, menu_text, charsmax(menu_text))
    
    new cost = get_param(4)
    
    new fId = CreateOneForward(plugin, callback, FP_CELL)
    if(fId < 0)
    {
        log_error(AMX_ERR_NATIVE, "[%s] (yah_register_shop) Callback shop function not found ('%s')", PLUGIN, callback)
        return 0
    }
    
    ArrayPushCell(ShopItemCallback, fId)
    ArrayPushCell(ShopItemCost, cost)
    ArrayPushString(ShopItemChatText, chat_text)
    ArrayPushString(ShopItemMenuText, menu_text)
    
    return 1
}

public _yah_register_cust_menu(plugin, num_params)
{
    new txt[c_custom_item_max_txt], callback[32]
    
    get_string(1, txt, charsmax(txt))
    get_string(2, callback, charsmax(callback))
    
    new fId = CreateOneForward(plugin, callback, FP_CELL)
    if(fId < 0)
    {
        log_error(AMX_ERR_NATIVE, "[%s] (yah_register_cust_menu) Callback menu function not found ('%s')", PLUGIN, callback)
        return 0
    }
    
    g_custom_menu_count++
    
    new item_str[11]
    formatex(item_str, charsmax(item_str), "6172%d", g_custom_menu_count)
    
    ArrayPushString(CustomMenuItemTXT, txt)
    ArrayPushString(CustomMenuItemMenuKey, item_str)
    ArrayPushCell(CustomMenuItemCallback, fId)
    
    return 1
}

public _yah_user_set_knife(plugin, num_params)
{
    static id, knife_id
    id = get_param(1)
    knife_id = get_param(2)
    
    if(!is_valid_knife(knife_id))
        return 0

    Player[id][Knife] = knife_id
    
    if(isCrossKnifeFullOff(id))
        Player[id][Crosshair] = CrossOff
    
    if(is_user_alive(id))
        strip_and_give(id)
    
    return 1
}

public _yah_user_get_knife(plugin, num_params)
    return Player[get_param(1)][Knife]

public Float:_yah_get_ability_last_reset(plugin, num_params)
    return Float:g_PlayerLastUsedAbility[get_param(1)]

public _yah_get_info_ability(plugin, num_params)
{
    static knife_id
    knife_id = get_param(1)
    
    if(!is_valid_knife(knife_id))
    {
        log_error(AMX_ERR_NATIVE, "[%s] (_yah_get_info_ability) Unknown knife id", PLUGIN)
        return
    }
    
    static Float:buffer[3]
    buffer[0] = ArrayGetCell(KnifeAbilResetTime, knife_id)
    buffer[1] = ArrayGetCell(KnifeAbilMinDist, knife_id)
    buffer[2] = ArrayGetCell(KnifeAbilMaxDist, knife_id)
    
    set_array_f(2, Float:buffer, 3)
}

public _yah_set_crosshair(plugin, num_params)
    SetKnifeCrosshair(get_param(1), get_param(2), get_param(3))

public _yah_get_crosshair(plugin, num_params)
    return Player[get_param(1)][Crosshair]

public _yah_reset_speed(plugin, num_params)
    set_speed(get_param(1))

public _yah_reset_gravity(plugin, num_params)
    set_gravity(get_param(1))

public _yah_get_user_max_hp(plugin, num_params)
{
    new id = get_param(1)
    if(is_valid_knife(Player[id][Knife]))
        return ArrayGetCell(KnifePropHp, Player[id][Knife])
        
    return 100
}

public _yah_in_reloading(plugin, num_params)
{
    new id = get_param(1)
    if(in_reloading[id])
        return true
    return false
}

stock SendCmd(const iClient, const szCommand[])
{
    message_begin(MSG_ONE, SVC_DIRECTOR, _, iClient)
    write_byte(strlen(szCommand) + 2);
    write_byte(10);
    write_string(szCommand);
    message_end();
}
 
Я не могу скомпилировать из-за отсутствия у меня include <hud>
Других ошибок нет
что это значит?
Сообщение автоматически объединено:

@Smith, как решить эту проблему?
 
@T591, там где вы брали плагин, должны быть соответственно инклуды. Если инклудов нет, то скомпилить не получится(если только не найти эти инклуды в интернете)
 
Сверху
Назад