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

error 017: undefined symbol ""  [Решено]

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

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

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

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

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

error 017: undefined symbol ""  [Решено]

Сообщение Threexeni » 08 апр 2019, 16:17

В общем, исправлял опечатки в скрипте, в итоге не могу скомпилировать
Ошибки: Вы должны зарегистрироваться, чтобы видеть ссылки.
Все ошибки связаны с undefined symbol, смотрел строчки где вылезли эти ошибки, не могу понять что там не так, пожалуйста помогите, ну или хотябы покажите на примере 1 из этих ошибок, а дальше я сам как нибудь попробую
Сам код:
Код: Выделить всё
#include AmxModX
#include JBE_core
#include FakeMeta
#include HamSandwich

#define RegisterMenu(%1,%2,%3) register_menucmd(register_menuid(%1),%3,%2)

#define TaskId_Regen 12125
#define MAX_PLAYERS 32

/* -> Бит суммы для игроков -> */
#define SetBit(%0,%1)                 ((%0) |= (1 << (%1)))
#define ClearBit(%0,%1)             ((%0) &= ~(1 << (%1)))
#define IsSetBit(%0,%1)             ((%0) & (1 << (%1)))
#define InvertBit(%0,%1)             ((%0) ^= (1 << (%1)))
#define IsNotSetBit(%0,%1)             (~(%0) & (1 << (%1)))

/* -> Массивы для меню из игроков -> */
new g_iMenuPlayers[MAX_PLAYERS + 1][32], g_iMenuPosition[MAX_PLAYERS + 1];

enum _: eBLOCK
{
    REGEN,
    MODE
};

new g_iBitUserIsType[eBLOCK], g_iUserRespawnNum[MAX_PLAYERS], g_iGodModeType[MAX_PLAYERS + 1], g_iUserPoints[MAX_PLAYERS + 1],
g_iDayMode, g_iMaxPlayers, g_iSyncText;

public plugin_natives()
{
    register_native( "Open_KnyazMenu", "Show_KnyazMenu", 1 );
    register_native( "Open_CreateMenu", "Show_CreatorMenu", 1 );
    register_native( "Open_GodModeMenu", "Show_GodModeMenu", 1 );
    register_native( "Open_Respawn_Menu", "Cmd_OpenResspawnMenu", 1 );
    register_native( "Open_StrongMenu", "Show_StrongMenu", 1 );
}

public plugin_init()
{
    get_license();
    register_plugin("[UJBL] Privileges Addon", "vk/krisiso", "ToJI9IHGaa");

    new iBits = (1<<0|1<<1|1<<2|1<<9);
    
    RegisterMenu
("Show_KnyazMenu", "Handle_KnyazMenu", iBits);
    
    iBits 
|= (1<<3|1<<4);
    
    RegisterMenu
("Show_CreatorMenu", "Handle_CreatorMenu", iBits);
    RegisterMenu("Show_GodModeMenu", "Handle_GodModeMenu", iBits);

    iBits |= (1<<5|1<<6|1<<7|1<<8);
    
    RegisterMenu
("Show_RespawnMenu", "Handle_RespawnMenu", iBits);
    RegisterMenu("Show_GodModeList", "Handle_GodModeList", iBits);
    RegisterMenu("Show_StrongMenu", "Handle_Strong1Menu", iBits);
        
    register_logevent
("LogEvent_RoundStart",2,"1=Round_Start");
    
    g_iMaxPlayers 
= get_maxplayers();
    g_iSyncText = CreateHudSyncObj();
}
public LogEvent_RoundStart()
{
    for( new pId = 1; pId <= g_iMaxPlayers; pId++ )
    {
        if( jbe_get_privileges_flags( pId ) & FLAGS_KNYAZ )
        {    
            if
( task_exists( pId + TaskId_Regen ) ) remove_task( pId + TaskId_Regen );
            static iMode, iInvisible; jbe_get_user_rendering( pId, iMode, iMode, iMode, iMode, iMode, iInvisible );
            if( iMode == kRenderTransAlpha && iInvisible == 70 ) jbe_set_user_rendering( pId, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100 );        
            
            g_iBitUserIsType
[ REGEN ] = 0;
            g_iUserRespawnNum[ pId ] = 3;
        }
    }
}

#define TaskId_UpPoints 12421
public client_putinserver( pId )
{
    if( jbe_get_privileges_flags( pId ) & FLAGS_STRONG ) 
    
{
        set_task( 300.0, "fnUpPoints", pId + TaskId_UpPoints, _, _, "b" );
        if( !is_linux_server() ) g_iUserPoints[ pId ] = 999;
    }
}

public client_disconnect( pId )
{
    if( task_exists( pId + TaskId_UpPoints ) )
    {
        remove_task( pId + TaskId_UpPoints );
        g_iUserPoints[ pId ] = 0;
    }
}

public fnUpPoints( pId ) 
{
    pId -= TaskId_UpPoints;
    new iNum = random_num( 1, 3 );
    g_iUserPoints[ pId ] += iNum;
    UTIL_SayText( pId, "Вы получили: !g%d !tPresent Points!y. Теперь их у Вас: !g%d", iNum, g_iUserPoints[ pId ] );
}
    
public Show_StrongMenu
( pId )
{
    #define PP[%1] g_iUserPoints[%1]
    #define AddItem(%1) iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, %1 )
    #define AddBit(%1) iKeys |= ( 1<<%1 )
    
    jbe_informer_offset_up
( pId );
    new szMenu[ 512 ], iLen, iKeys = ( 1<<);
    iLen = formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yStrong Menu^nВаши \rPresentPoints: \w%d^n^n", PP[ pId ] );
    
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( PP[ pId ] > 0 )
    {
        AddItem( "\r(1)\y | \w250$\R\r[ 1PP ]^n" );
        AddBit( 0 );
    }
    else AddItem( "\r(1)\y | \d250$\R\r[ 1PP ]^n" );    
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( pev( pId, pev_health ) >= 500.0 || pev( pId, pev_armorvalue ) >= 255.0 )
        AddItem("\r(2)\y | \dHealth & Armor Pack\r(У Вас много HP/AP)\R[ 1PP ]^n");
    else
    
{
        if( PP[ pId ] > 0 )
        {
            AddItem("\r(2)\y | \wHealth & Armor Pack\R\r[ 1PP ]^n");
            AddBit( 1 );
        }
        else AddItem("\r(2)\y | \dHealth & Armor Pack\R\r[ 1PP ]^n");
    }
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( PP[ pId ] > 1 )
    {
        AddItem( "\r(3)\y | \wСпец комплект\R\r[ 2PP ]^n" );
        AddBit( 2 );
    }
    else AddItem( "\r(3)\y | \dСпец комплект\R\r[ 2PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( PP[ pId ] > 0 )
    {
        AddItem( "\r(4)\y | \wTeleport на spawn\R\r[ 1PP ]^n" );
        AddBit( 3 );
    }
    else AddItem( "\r(4)\y | \dTeleport на spawn\R\r[ 1PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( PP[ pId ] > 0 )
    {
        AddItem( "\r(5)\y | \wOpen door (По прицелу)\R\r[ 1PP ]^n" );
        AddBit( 4 );
    }
    else AddItem( "\r(5)\y | \dOpen door (По прицелу)\R\r[ 1PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( PP[ pId ] > 1 )
    {
        AddItem( "\r(6)\y | \wПодмена мест (Случайный игрок)\R\r[ 2PP ]^n" );
        AddBit( 5 );
    }
    else AddItem( "\r(6)\y | \dПодмена мест (Случайный игрок)\R\r[ 2PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( PP[ pId ] > 2 )
    {
        AddItem( "\r(7)\y | \wСлучайное оружие\R\r[ 3PP ]^n" );
        AddBit( 6 );
    }
    else AddItem( "\r(7)\y | \dСлуайное оружие\R\r[ 3PP ]^n" );
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    static iMode, iInvisible; jbe_get_user_rendering( pId, iMode, iMode, iMode, iMode, iMode, iInvisible);
    if( iMode == kRenderTransAlpha && iInvisible == 100 )
        AddItem( "\r(8)\y | \dПолная невидимость \r(Активно)\R[ 4PP ]^n" );
    else 
    
{
        if( PP[ pId ] > 3 )
        {
            AddItem( "\r(8)\y | \wПолная невидимость\R\r[ 4PP ]^n" );
            AddBit( 7 );
        }
        else AddItem( "\r(8)\y | \dПолная невидимость\R\r[ 4PP ]^n" );
    }
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////
//    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    AddItem( "^n\r(0)\y | \wВыход^n" );
    
    return show_menu
( pId, iKeys, szMenu, -1, "Show_StrongMenu" );
}

public Handle_Strong1Menu( pId, iKey )
{
    switch( iKey )
    {
        case 0:
        {
            jbe_set_user_money( pId, jbe_get_user_money( pId ) + 250, 1 );
            g_iUserPoints[ pId ]--;
            return Show_StrongMenu( pId );
        }
        case 1: 
        
{
            set_pev( pId, pev_health, 500.0 );
            set_pev( pId, pev_armorvalue, 255.0 );
            g_iUserPoints[ pId ]--;
        }
        
        case 2
:
        {
            switch( jbe_get_user_team( pId ) )
            {
                case 1: 
                
{
                    drop_user_weapons( pId, 0 ); jbe_set_user_rendering( pId, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 20 );
                    fm_give_item( pId, "item_kevlar" ); set_pev( pId, pev_armorvalue, pev( pId, pev_armorvalue ) + 70.0 );
                    new iItemId = fm_give_item( pId, "weapon_usp" ); fm_give_item( pId, "weapon_flashbang" );
                    if( iItemId ) set_pdata_int( iItemId, 51, 30, 4 );    
                
}
                case 2:
                {
                    drop_user_weapons( pId, 1 ); set_pev( pId, pev_health, pev( pId, pev_health ) + 70.0 );
                    
                    if
( fm_give_item( pId, "weapon_hegrenade" ) ) 
                    
{
                        client_cmd( pId, "weapon_hegrenade" );
                        set_pdata_int( pId, 388, 5, 5 );
                    }
                    
                    if
( fm_give_item( pId, "weapon_m4a1" ) ) 
                    
{
                        client_cmd( pId, "weapon_m4a1" );
                        set_pdata_int( pId, 380, 200, 5 );
                    }
                }
            }
            
            g_iUserPoints
[ pId ] -= 2;
        }
        
        case 3
:
        {
            new iEntity;
            switch( jbe_get_user_team( pId ) )
            {
                case 1: iEntity = engfunc( EngFunc_FindEntityByString, iEntity, "classname", "info_player_deathmatch" );
                case 2: iEntity = engfunc( EngFunc_FindEntityByString, iEntity, "classname", "info_player_start" );
            }
            if( !iEntity ) return Show_StrongMenu( pId );
            new Float: vecOrigin[ 3 ]; pev( iEntity, pev_origin, vecOrigin );
            set_pev( pId, pev_origin, vecOrigin );
            
            g_iUserPoints
[ pId ]--;
        }
        
        case 4
:        
        
{
            new iEntity, iBody; get_user_aiming( pId, iEntity, iBody, 30 );
            if( !pev_valid( iEntity ) ) return Show_StrongMenu( pId );
            
            new szClassName
[ 32 ]; pev( iEntity, pev_classname, szClassName, charsmax( szClassName ) );
            if( szClassName[ 5 ] == 'd' && szClassName[ 6 ] == 'o' && szClassName[ 7 ] == 'o' && szClassName[ 8 ] == 'r' )
            {
                client_print( pId, print_center, "<<<< OPENED >>>>" );
                dllfunc( DLLFunc_Use, iEntity, pId );
            }
            else return Show_StrongMenu( pId );
            
            g_iUserPoints
[ pId ]--;
        }
        
        case 5
:
        {
            new iPlayers[ 32 ], iNum, pTarget;
            for( pTarget = 1; pTarget <= g_iMaxPlayers; pTarget++ )
            {
                if( !jbe_is_user_alive( pTarget ) || pTarget == pId ) continue;
                iPlayers[ iNum++ ] = pTarget;
            }
            
            if
( !iNum )
            {
                client_print( pId, print_center, "<<<< No Players >>>>" );
                return Show_StrongMenu( pId );
            }
            
            new Float
: vecOriginTarget[ 3 ], Float: vecOrigin[ 3 ]; pTarget = iPlayers[ random_num( 1, iNum - 1 ) ];
            pev( pTarget, pev_origin, vecOriginTarget ); pev( pId, pev_origin, vecOrigin );
            set_pev( pId, pev_origin, vecOriginTarget ); set_pev( pTarget, pev_origin, vecOrigin );
            
            client_print
( pTarget, print_center, "<<<< Кто-то поменялся с вами позициями! >>>>" );
            
            g_iUserPoints
[ pId ] -= 2;
        }
        
        case 6
:
        {
            drop_user_weapons( pId, 1 ); drop_user_weapons( pId, 0 );
            new szWeapons[][] = { "weapon_m4a1", "weapon_usp", "weapon_ak47", "weapon_glock18", "weapon_m249" };
            fm_give_item( pId, szWeapons[ random_num( 0, 4 ) ] );
            
            g_iUserPoints
[ pId ] -= 3;
        }
        
        case 7
:
        {
            jbe_set_user_rendering( pId, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100 );
            client_print( pId, print_center, "<<<< Вы невидимы! >>>>" );
            
            g_iUserPoints
[ pId ] -= 4;
        }
    }
    return PLUGIN_HANDLED;
}

public Show_KnyazMenu( id )
{
    jbe_informer_offset_up(id);
    static iMode, iInvisible; jbe_get_user_rendering(id, iMode, iMode, iMode, iMode, iMode, iInvisible);
    
    new szMenu
[340], iLen, iKeys = (1<<0|1<<1|1<<9);
    iLen = formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y%L^n^n", id, "JBE_KNYAZ_TITLE");
    FormatMenu("\r(1) \y|  \w%L^n", id, "JBE_KNYAZ_REGENERATION", IsSetBit(g_iBitUserIsType[REGEN], id) ? "Включено" : "Выключено");
    FormatMenu("\r(2) \y|  \w%L^n", id, "JBE_KNYAZ_INVISIBLE", (iMode == kRenderTransAlpha && iInvisible == 70) ? "Включено" : "Выключено");
    
    if
(g_iUserRespawnNum[id] > 0)
    {
        FormatMenu("\r(3) \y| \w %L \r[%d]^n", id, "JBE_RESPAWN_MENU", g_iUserRespawnNum[id]);
        iKeys |= (1<<2);
    }
    else FormatMenu("\r(3) \y| \d %L \r(0) \y| ^n", id, "JBE_RESPAWN_MENU");
    FormatMenu("^n\r(0) \y| \w Выход");
    return ShowMenu("Show_KnyazMenu");
}
public Handle_KnyazMenu(id, iKey)
{
    switch(iKey)
    {
        case 0:
        {
            if(IsSetBit(g_iBitUserIsType[REGEN], id)) remove_task(id + TaskId_Regen);
            else set_task(10.0, "Regenerations", id + TaskId_Regen, _, _, "b");
            
            InvertBit
(g_iBitUserIsType[REGEN], id);
        }
        case 1:
        {
            static iMode, iInvisible;
            jbe_get_user_rendering(id, iMode, iMode, iMode, iMode, iMode, iInvisible);
            if(iMode == kRenderTransAlpha && iInvisible == 70) jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100);
            else jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 70);
        }
        case 2: return Show_RespawnMenu(id, g_iMenuPosition[id] = 0);    
        case 9
: return PLUGIN_HANDLED;
    }
    return Show_KnyazMenu(id);
}
public Regenerations(id)
{
    id -= TaskId_Regen;
    if(jbe_get_status_duel() || jbe_get_day_mode() == 3 || !jbe_is_user_alive(id)) 
    
{
        remove_task(id + TaskId_Regen);
        return;
    }
    if(pev(id, pev_health) >= 100) 
    
{
        client_print(id, print_center, "[Князь Меню] Регенерация завершена.");
        remove_task(id + TaskId_Regen);
        return;
    }
    set_pev(id, pev_health, pev(id, pev_health) + 5.0);
}
public Show_CreatorMenu(id)
{
    jbe_informer_offset_up(id);    
    new szMenu
[516], iLen, iKeys = (1<<0|1<<1|1<<2|1<<3|1<<9), Float: fGravity;
    pev(id, pev_gravity, fGravity);
    iLen = formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y%L^n^n", id, "JBE_CREATOR_TITLE");
    
    iLen 
+= formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n^n", id, "JBE_CREATER_TYPE", IsNotSetBit(g_iBitUserIsType[MODE], id) ? "Забрать" : "Дать");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_CREATE_HEALTH", pev(id, pev_health));
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n^n", id, "JBE_CREATE_ARMOR", pev(id, pev_armorvalue));
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n^n", id, "JBE_CREATE_GRAVITY", fGravity);
    if(!jbe_is_user_alive(id))
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n^n",id, "JBE_RESPAWN_CREATE");
        iKeys |= (1<<4);
    }
    else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L^n^n",id, "JBE_RESPAWN_CREATE");
    FormatMenu("^n\r(0) \y| \w Выход");
    return ShowMenu("Show_CreatorMenu");
}
public Handle_CreatorMenu(id, iKey)
{
    switch(iKey)
    {
        case 0: InvertBit(g_iBitUserIsType[MODE], id);
        case 1: 
        
{
            if(IsSetBit(g_iBitUserIsType[MODE], id))
            {
                if(pev(id, pev_health) >= 160) client_print(id, print_center, "У Вас много жизней!");
                else set_pev(id, pev_health, pev(id, pev_health) + 5.0);
            }
            else
            
{
                if(pev(id, pev_health) < 6) client_print(id, print_center, "У Вас мало жизней!");
                else set_pev(id, pev_health, pev(id, pev_health) - 5.0);
            }
        }
        case 2:
        {
            if(IsSetBit(g_iBitUserIsType[MODE], id))
            {
                if(pev(id, pev_armorvalue) >= 160) client_print(id, print_center, "У Вас много брони!");
                else set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + 5.0);
            }
            else
            
{
                if(pev(id, pev_armorvalue) < 6) client_print(id, print_center, "У Вас мало брони!");
                else set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) - 5.0);
            }
        }
        case 3:
        {
            new Float: fGravity;
            pev(id, pev_gravity, fGravity);
            
            if
(IsSetBit(g_iBitUserIsType[MODE], id))
            {
                if(fGravity <= 0.5) client_print(id, print_center, "Слишком большая гравитация!");
                else 
                
{
                    fGravity -= 0.05;
                    set_pev(id, pev_gravity, fGravity);
                }
            }
            else
            
{
                if(fGravity >= 1.0) client_print(id, print_center, "Слишком маленькая гравитация!");
                else 
                
{
                    fGravity += 0.05;
                    set_pev(id, pev_gravity, fGravity);
                }
            }
        }
        case 4: ExecuteHam(Ham_CS_RoundRespawn, id);
        case 9: return PLUGIN_HANDLED;
    }
    return Show_CreatorMenu(id);
}

public Show_GodModeMenu(id)
{
    jbe_informer_offset_up(id);
    
    new szMenu
[700], iLen;
    iLen = formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y%L^n^n", id, "JBE_GODMODE_TITLE");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n^n", id, "JBE_GODMODE_TYPE", IsNotSetBit(g_iBitUserIsType[MODE], id) ? "Забрать" : "Дать");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_GODMODE_HEALTH");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n^n", id, "JBE_GODMODE_ARMOR");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n^n", id, "JBE_GODMODE_GRAVITY");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%s\r%L^n^n", g_iDayMode ? "Ночь | ":"День | ", id, "JBE_GODMODE_DEYMODE");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");

    return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<9), szMenu, -1, "Show_GodModeMenu");    
}
public Handle_GodModeMenu(id, iNum)
{
    switch(iNum)
    {
        case 0:
        {
            InvertBit(g_iBitUserIsType[MODE], id);
            return Show_GodModeMenu(id);
        }
        case 1:
        {
            g_iGodModeType[id] = 1;
            return Show_GodModeList(id, g_iMenuPosition[id] = 0);
        }
        case 2:
        {
            g_iGodModeType[id] = 2;
            return Show_GodModeList(id, g_iMenuPosition[id] = 0);
        }
        case 3:
        {
            g_iGodModeType[id] = 3;
            return Show_GodModeList(id, g_iMenuPosition[id] = 0);
        }
        case 4:
        {
            DayMode_Setting();
            return Show_GodModeMenu(id);
        }
        case 5: return Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
    }
    return PLUGIN_HANDLED;
}
public Cmd_OpenResspawnMenu(id) Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
public Show_RespawnMenu(id, iPos)
{
    
    if
(iPos < 0) return PLUGIN_HANDLED;
    if(~jbe_get_privileges_flags(id) & FLAGS_GOD && !g_iUserRespawnNum[id])
    {
        client_print(0, print_center, "У Вас закончились попытки возрождения!");
        return Show_KnyazMenu(id);
    }    

    jbe_informer_offset_up
(id);
    new iPlayersNum;
    
    for
(new i = 1; i <= g_iMaxPlayers; i++)
    {
        if(!jbe_get_user_team(i) || jbe_get_user_team(i) >= 3 || jbe_is_user_alive(i)) continue;
        g_iMenuPlayers[id][iPlayersNum++] = i;    
    
}
    new iStart = iPos * 8;
    if(iStart > iPlayersNum) iStart = iPlayersNum;
    iStart = iStart - (iStart % 8);
    g_iMenuPosition[id] = iStart / 8;
    new iEnd = iStart + 8;
    if(iEnd > iPlayersNum) iEnd = iPlayersNum;
    new szMenu[1024], iLen, iPagesNum = (iPlayersNum / 8 + ((iPlayersNum % 8) ? 1 : 0));
    switch(iPagesNum)
    {
        case 0:
        {    
            client_print
(id, print_center, "%L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");            
            return PLUGIN_HANDLED
;
        }
        default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_RESPAWN_MENU", iPos + 1, iPagesNum);
    }
    new szName[32], i, iKeys = (1<<9), b;
    for(new a = iStart; a < iEnd; a++)
    {
        i = g_iMenuPlayers[id][a];
        get_user_name(i, szName, charsmax(szName));
        iKeys |= (1<<b);
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
    }
    for(new i = b; i < 8; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
    if(iEnd < iPlayersNum)
    {
        iKeys |= (1<<8);
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
    }
    else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
    return show_menu(id, iKeys, szMenu, -1, "Show_RespawnMenu");
}
public Handle_RespawnMenu(id, iKey)
{
    switch(iKey)
    {
        case 8: return Show_RespawnMenu(id, ++g_iMenuPosition[id]);
        case 9: return Show_RespawnMenu(id, --g_iMenuPosition[id]);
        default:
        {
            new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * 8 + iKey];
            
            if
(jbe_is_user_alive(iTarget)) 
            
{
                client_print(id, print_center, "Игрок уже оживлён!");
                return Show_RespawnMenu(id, g_iMenuPosition[id] = 0);
            }
            
            if
(jbe_is_user_connected(iTarget))
            {                
                g_iUserRespawnNum
[id]--;
                ExecuteHam(Ham_CS_RoundRespawn, iTarget);
                new szName[2][32];
                get_user_name(id, szName[0], charsmax(szName[]));
                get_user_name(iTarget, szName[1], charsmax(szName[]));
                
                set_hudmessage
( 102, 69, 0, -1.0, 0.16, 0, 0.0, 0.9, 0.1, 3.0, -);
                for(new pPlayer = 1; pPlayer <= g_iMaxPlayers; pPlayer++)
                {
                    if(!jbe_is_user_connected(pPlayer)) continue;
                    ShowSyncHudMsg( pPlayer, g_iSyncText, "Администратор [ %s ] ^nвозродил игрока [ %s ]", szName[0], szName[1] );
                }            
            
}
            
            return Show_RespawnMenu
(id, g_iMenuPosition[id]);
        }
    }
    return PLUGIN_HANDLED;
}

Show_GodModeList(id, iPos)
{
    if( iPos < 0 ) return PLUGIN_HANDLED;
    jbe_informer_offset_up( id );
    
    new iPlayersNum
;
    for(new i = 1; i <= get_maxplayers(); i++)
    {
        if(!jbe_is_user_alive(i) || jbe_get_user_team(i) >= 3 || !jbe_get_user_team(i)) continue;
        g_iMenuPlayers[id][iPlayersNum++] = i;
    }
    new iStart = iPos * 8;
    if(iStart > iPlayersNum) iStart = iPlayersNum;
    iStart = iStart - (iStart % 8);
    g_iMenuPosition[id] = iStart / 8;
    new iEnd = iStart + 8;
    if(iEnd > iPlayersNum) iEnd = iPlayersNum;
    new szMenu[1024], iLen, iPagesNum = (iPlayersNum / 8 + ((iPlayersNum % 8) ? 1 : 0));
    switch(iPagesNum)
    {
        case 0:
        {
            UTIL_SayText( id, "%L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID" );
            return Show_GodModeMenu(id);
        }
        default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_GODMODE_BONUS_MENU", iPos + 1, iPagesNum);
    }
    new szName[32], i, iKeys = (1<<9), b;
    for(new a = iStart; a < iEnd; a++)
    {
        i = g_iMenuPlayers[id][a];
        get_user_name(i, szName, charsmax(szName));
        iKeys |= (1<<b);
        switch(g_iGodModeType[id])
        {
            case 1: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s \d[\r%d\d]^n", ++b, szName, pev(i, pev_health));
            case 2: iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s\d[\r%d\d]^n", ++b, szName, pev(i, pev_armorvalue));
            case 3: 
            
{
                new Float: fGravity;
                pev(i, pev_gravity, fGravity);
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s\d[\r%f\d]^n", ++b, szName, fGravity);
            }
        }
    }
    for(new i = b; i < 8; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
    if(iEnd < iPlayersNum)
    {
        iKeys |= (1<<8);
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
    }
    else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
    return show_menu(id, iKeys, szMenu, -1, "Show_GodModeList");
}

public Handle_GodModeList(id, iKey)
{
    switch(iKey)
    {
        case 8: return Show_GodModeList(id, ++g_iMenuPosition[id]);
        case 9: return Show_GodModeList(id, --g_iMenuPosition[id]);
        default:
        {
            new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * 8 + iKey];
            
            if
(!jbe_is_user_connected(iTarget)) 
            
{
                client_print(id, print_center, "Игрок отключён!");
                return Show_GodModeList(id, g_iMenuPosition[id] = 0);
            }
            
            if
(!jbe_is_user_alive(iTarget)) 
            
{
                client_print(id, print_center, "Игрок мёртв!");
                return Show_GodModeList(id, g_iMenuPosition[id] = 0);
            }

            switch(g_iGodModeType[id])
            {
                case 1:
                {
                    if(IsSetBit(g_iBitUserIsType[MODE], id))
                    {
                        if(pev(iTarget, pev_health) >= 160) client_print(id, print_center, "У игрока много жизней!");
                        else set_pev(iTarget, pev_health, pev(iTarget, pev_health) + 5.0);
                    }
                    else
                    
{
                        if(pev(iTarget, pev_health) < 6) client_print(id, print_center, "У игрока мало жизней!");
                        else set_pev(iTarget, pev_health, pev(iTarget, pev_health) - 5.0);
                    }
                    return Show_GodModeList(id, g_iMenuPosition[id]);
                }
                case 2:
                {
                    if(IsSetBit(g_iBitUserIsType[MODE], id))
                    {
                        if(pev(iTarget, pev_armorvalue) >= 160) client_print(id, print_center, "У игрока много жизней!");
                        else set_pev(iTarget, pev_armorvalue, pev(iTarget, pev_armorvalue) + 5.0);
                    }
                    else
                    
{
                        if(pev(iTarget, pev_armorvalue) < 6) client_print(id, print_center, "У игрока мало жизней!");
                        else set_pev(iTarget, pev_armorvalue, pev(iTarget, pev_armorvalue) - 5.0);
                    }
                    return Show_GodModeList(id, g_iMenuPosition[id]);
                }
                case 3:
                {
                    new Float: fGravity;
                    pev(iTarget, pev_gravity, fGravity);
                    
                    if
(IsSetBit(g_iBitUserIsType[MODE], id))
                    {
                        if(fGravity <= 0.5) client_print(id, print_center, "Слишком большая гравитация!");
                        else 
                        
{
                            fGravity -= 0.05;
                            set_pev(iTarget, pev_gravity, fGravity);
                        }
                    }
                    else
                    
{
                        if(fGravity >= 1.0) client_print(id, print_center, "Слишком маленькая гравитация!");
                        else 
                        
{
                            fGravity += 0.05;
                            set_pev(iTarget, pev_gravity, fGravity);
                        }
                    }
                }
            }
            return Show_GodModeList(id, g_iMenuPosition[id]);
        }
    }
    return PLUGIN_HANDLED;
}

stock DayMode_Setting()
{
    switch(g_iDayMode)
    {
        case false: 
        
{
            engfunc( EngFunc_MessageBegin, MSG_ALL, 143, { 0.0, 0.0, 0.0 }, 0 );
            write_byte(20);          // Red
            write_byte(20);         // Green
            write_byte(20);         // Blue
            write_byte(10);                         // SD
            write_byte(41);                          // ED
            write_byte(95);                          // D1
            write_byte(59);                          // D2
            message_end();    
            g_iDayMode 
= true;
        }
        case true:
        {
            engfunc( EngFunc_MessageBegin, MSG_ALL, 143, { 0.0, 0.0, 0.0 }, 0 );
            write_byte(0);  // Red
            write_byte(0);  // Green
            write_byte(0);  // Blue
            write_byte(0);     // SD
            write_byte(0);  // ED
            write_byte(0);  // D1
            write_byte(0);  // D2
            message_end();
            g_iDayMode = false;
        }
    }
}

stock UTIL_SayText(pPlayer, const szMessage[], any:...)
{
    new szBuffer[ 190 ], iLen = format( szBuffer, charsmax( szBuffer ), "%L ", LANG_PLAYER, "JBE_CHAT_PREFIX" );
    
    if
( numargs() > 2 ) vformat( szBuffer[ iLen ], charsmax( szBuffer ), szMessage, 3 );
    else copy( szBuffer[ iLen ], charsmax( szBuffer ), szMessage );
    
    while
( replace( szBuffer, charsmax( szBuffer ), "!y", "^1" ) ) {}
    while( replace( szBuffer, charsmax( szBuffer ), "!t", "^3" ) ) {}
    while( replace( szBuffer, charsmax( szBuffer ), "!g", "^4" ) ) {}
    
    switch
( pPlayer )
    {
        case 0:
        {
            for( new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++ )
            {
                if( !jbe_is_user_connected( iPlayer ) ) continue;
                engfunc( EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, 76, { 0.0, 0.0, 0.0 }, iPlayer );
                write_byte( iPlayer );
                write_string( szBuffer );
                message_end();
            }
        }
        default:
        {
            engfunc( EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, 76, { 0.0, 0.0, 0.0 }, pPlayer );
            write_byte( pPlayer );
            write_string( szBuffer );
            message_end();
        }
    }
}

stock fm_give_item(pPlayer, const szItem[])
{
    new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
    if(!pev_valid(iEntity)) return 0;
    new Float:vecOrigin[3];
    pev(pPlayer, pev_origin, vecOrigin);
    set_pev(iEntity, pev_origin, vecOrigin);
    set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn, iEntity);
    dllfunc(DLLFunc_Touch, iEntity, pPlayer);
    if(pev(iEntity, pev_solid) != SOLID_NOT)
    {
        engfunc(EngFunc_RemoveEntity, iEntity);
        return -1;
    }
    return iEntity;
}

stock drop_user_weapons(pPlayer, iType)
{
    new iWeaponsId[32], iNum;
    get_user_weapons(pPlayer, iWeaponsId, iNum);
    if(iType) iType = (1<<CSW_GLOCK18|1<<CSW_USP|1<<CSW_P228|1<<CSW_DEAGLE|1<<CSW_ELITE|1<<CSW_FIVESEVEN);
    else iType = (1<<CSW_M3|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_TMP|1<<CSW_MP5NAVY|1<<CSW_UMP45|1<<CSW_P90|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AK47|1<<CSW_M4A1|1<<CSW_SCOUT|1<<CSW_SG552|1<<CSW_AUG|1<<CSW_AWP|1<<CSW_G3SG1|1<<CSW_SG550|1<<CSW_M249);
    for(new i; i < iNum; i++)
    {
        if(iType & (1<<iWeaponsId[i]))
        {
            new szWeaponName[24];
            get_weaponname(iWeaponsId[i], szWeaponName, charsmax(szWeaponName));
            engclient_cmd(pPlayer, "drop", szWeaponName);
        }
    }






P.S. Не знаю зачем пишу, просто на всякий случай, советую искать строки в Notepad++, чтобы не запутаться, да и быстрее
Аватара пользователя
Threexeni
 
Сообщения: 3
Зарегистрирован: 29 май 2018, 15:33
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn
Php

Re: error 017: undefined symbol ""

Сообщение артист666 » 08 апр 2019, 18:53

У тебя функций нет, или инклюд с нативами не подключен.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn


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

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

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