Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Help me please: Run time error 10: native error

Статус пользователя DmitryLe
сообщение 26.10.2014, 0:58
Сообщение #1


Стаж: 13 лет

Сообщений: 33
Благодарностей: 1
Полезность: 24

Здравствуйте, прошу помощи, себе уже всю голову сломал.
Помогите пожалуйста.

Ошибки из консоля
Код
L 10/26/2014 - 01:36:18: Unhandled dynamic native error
L 10/26/2014 - 01:36:18: Invalid multi-lingual line (file "cstrike/addons/amxmodx/data/lang/Deathrun_Informer.txt" line 1)
L 10/26/2014 - 01:36:18: [AMXX] Displaying debug trace (plugin "DeathrunModes.amxx")
L 10/26/2014 - 01:36:18: [AMXX] Run time error 5: memory access
L 10/26/2014 - 01:36:18: [AMXX]    [0] DeathrunModes.sma::native_register_mode (line 215)
L 10/26/2014 - 01:36:18: Unhandled dynamic native error
L 10/26/2014 - 01:36:18: [AMXX] Displaying debug trace (plugin "DeathrunMoney.amxx")
L 10/26/2014 - 01:36:18: [AMXX] Run time error 10: native error (native "dm_register_mode")
L 10/26/2014 - 01:36:18: [AMXX]    [0] DeathrunMoney.sma::plugin_init (line 19)


DeathrunModes

Код
/*===============================================================================
===========
*
* (\ ----- Версии ----- /)
*
* 0.1 - Реализация.
* 0.2 - Добавлен квар настройки худ сообщений.
* 0.3 - Добавлен отсчёт в меню.
* 0.4 - Фикс.
* 0.5 - Квар худа заменён на авто-выбор дхуда для отдельного режима, 3-ий аргумент в регистрации.
* 0.6 - Фикс
* 0.7 - Добавлен 4-ый аргумент регистрации, сообщение худа.
* 0.8 - Добавлена натива dm_is_mode( const s_NameMode[ ] );
*
* (\ ----- Описание ----- /)
*
* 1. Плагин заменяет ваше стандартное меню террориста. ( Аналог extra items из zp )
* 2. Теперь вам не понадобится вписывать каждый режим самостоятельно.
* 3. Чтобы добавить режим в меню террориста, нужно его зарегистрировать.
* 4. Если вы хотите, чтобы при выборе режима писало дхуд сообщение,
*    При регистрации режима, 3-ий аргумент ставьте - true.
*
================================================================================
===========*/

#include < amxmodx >
#include < hamsandwich >
#include < dhudmessage >

#define RegisterMenu(%1,%2) register_menucmd(register_menuid(%1), 1023, %2)
#define TimerMenu 15

enum _:DataMode
{
        s_Name[ 64 ],
        iRounds,
        bool:bDhud,
        s_Message[ 256 ]
}

new
Array:g_ModesArray,

g_iNumModes,
g_iPlayerPage[ 33 ],
g_iRoundMode[ 20 ],
g_iCountdownTimer[ 33 ],

bool:g_bOpen,
bool:g_bModeIsUsed,
bool:g_bIsUseTimer,

Float:g_fLastGameTime[ 33 ],

g_Fwd_SelectedMode,
g_Fwd_Return,

iCvarDrMode,

r,
g,
b;

public plugin_init()
{
        register_plugin( "Deathrun_Modes", "0.8", "BlackSmoke" );
      
        register_event( "HLTV", "fw_RoundStart", "a", "1=0", "2=0" );
      
        RegisterMenu( "MenuModes", "ActionModesMenu" );
      
        RegisterHam( Ham_Spawn, "player", "fw_SpawnPlayer" );
      
        g_ModesArray = ArrayCreate( DataMode );
        g_Fwd_SelectedMode = CreateMultiForward( "dm_selected_mode", ET_IGNORE, FP_CELL, FP_CELL )
      
        iCvarDrMode = register_cvar( "deathrun_mode", "NONE" );
}

public fw_RoundStart()
{
        g_bOpen = false;
        g_bModeIsUsed = false;
        for( new i = 0; i < g_iNumModes; i++ )
        {
                if( g_iRoundMode[ i ] )
                {
                        g_iRoundMode[ i ]--
                }
        }
}

public fw_SpawnPlayer( id )
{
        if( get_user_team( id ) == 1 && !g_bOpen && !is_user_bot( id ) )
        {
                g_iCountdownTimer[ id ] = TimerMenu;
                g_bIsUseTimer = true;
                Show__ModesMenu( id, g_iPlayerPage[ id ] = 0 );
                g_bOpen = true;
                g_fLastGameTime[ id ] = get_gametime();
        }
}

public Show__ModesMenu( id, iPage )
{
        if( iPage < 0 )
        {
                return PLUGIN_HANDLED;
        }
      
        new s_Menu[ 512 ], iLen, iKey, Data[ DataMode ], iItem;
        new iStart = iPage * 8;
        new iEnd = iStart + 8;
        iKey |= (1 << 9)
        iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\yВы террорист \dВыберите режим^nУ вас осталось \r%d \dсек, чтобы подумать^n^n", g_iCountdownTimer[ id ] );
        if( iEnd > g_iNumModes )
        {
                iEnd = g_iNumModes;
        }
        for( new i = iStart; i < iEnd; i++ )
        {
                ArrayGetArray( g_ModesArray, i, Data );
                if( g_iRoundMode[ i ] )
                {
                        iKey &= ~(1 << iItem);
                        iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r%d. \d%s \r[\y%d\r]^n", ++iItem, Data[ s_Name ], g_iRoundMode[ i ] );
                }
                else
                {
                        iKey |= (1 << iItem);
                        iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r%d. \w%s^n", ++iItem, Data[ s_Name ] );
                }
        }
      
        if( iEnd < g_iNumModes )
        {
                iKey |= (1 << 8);
                iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "^n\r9. \wДалее^n\r0. \w%s", iPage ? "Назад" : "Выход" )
        }
        else
        {
                iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "^n\r0. \w%s", iPage ? "Назад" : "Выход" );
        }
      
        return show_menu( id, iKey, s_Menu, -1, "MenuModes" );
}

public ActionModesMenu( id, iKey )
{
        new Data[ DataMode ];
        switch( iKey )
        {
                case 8: Show__ModesMenu( id, ++g_iPlayerPage[ id ] )
                case 9: Show__ModesMenu( id, --g_iPlayerPage[ id ] )
                default:
                {
                        new iMode = g_iPlayerPage[ id ] * 8 + iKey;
                        if( g_iRoundMode[ iMode ] || g_bModeIsUsed )
                                return PLUGIN_HANDLED;
                              
                        ArrayGetArray( g_ModesArray, iMode, Data );
                      
                        g_iRoundMode[ iMode ] = Data[ iRounds ];
                        ExecuteForward(g_Fwd_SelectedMode, g_Fwd_Return, id, iMode);
                      
                        g_bModeIsUsed = true;
                        g_bIsUseTimer = false;
                        show_menu( id, 0, "^n" )
                      
                        Color_Print( 0, "!y[!gРежимы!y] !teamТеррорист выбрал режим: !g%s", Data[ s_Name ] );
                      
                        switch( random_num( 0, 2 ) )
                        {
                                case 0: r = 0, g = 255, b = 0;
                                case 1: r = 160, g = 78, b = 0;
                                case 2: r = 255, g = 255, b = 0;
                        }
                      
                        if( Data[ bDhud ] )
                        {
                                set_dhudmessage( r, g, b, 0.01, -0.45, 2, 2.0, 8.0, 0.05, 1.5 );
                                show_dhudmessage( 0, Data[ s_Message ] )
                        }
                }
        }
      
        return PLUGIN_HANDLED;
}

public plugin_natives()
{
        register_library( "deathrun_mode" );
        register_native( "dm_register_mode", "native_register_mode", 1 );
        register_native( "dm_is_mode", "native_is_mode", 1 );
}

public bool:native_is_mode( const s_ModeName[ ] )
{
        param_convert( 1 );
        new s_CvarValue[ 64 ];
        get_pcvar_string( iCvarDrMode, s_CvarValue, 63 );
        if( equali( s_ModeName, s_CvarValue ) )
        {
                return true;
        }
      
        return false;
}

public native_register_mode( s_ModeName[ 64 ], iRoundsDelay, bool:bDhudmsg, s_Msg[ 256 ] )
{
        param_convert( 1 );
        param_convert( 4 );
      
        new Data[ DataMode ];
        Data[ s_Name ] = s_ModeName;
        Data[ iRounds ] = iRoundsDelay;
        Data[ bDhud ] = bDhudmsg;
        Data[ s_Message ] = s_Msg;
        ArrayPushArray( g_ModesArray, Data );
      
        g_iNumModes++;
      
        return g_iNumModes-1;
}

public client_PreThink( id )
{
        if( !g_bIsUseTimer || get_user_team( id ) != 1 || (get_gametime() - g_fLastGameTime[ id ]) < 1.0 )
                return;
              
        if( g_iCountdownTimer[ id ] > 0 )
        {
                g_iCountdownTimer[ id ]--
                Show__ModesMenu( id, g_iPlayerPage[ id ] );
                g_fLastGameTime[ id ] = get_gametime();
        }
        else
        {
                g_bIsUseTimer = false;
                show_menu( id, 0, "^n" )
        }
}

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


DeathrunMoney


Код
#include < amxmodx >
#include < hamsandwich >
#include < deathrun_mode >
#include < cstrike >

#define NAME_MODE "Денежный"

new
id_mode_money,
bool:g_bMode;

public plugin_init( )
{
        register_plugin( "DeathrunMode_Money", "0.1", "BlackSmoke" );
        RegisterHam( Ham_Killed, "player", "fw__KilledPlayer" );
        register_clcmd( "/modeMONEY", "ClCmd__StartMode" );
        register_event( "HLTV", "fw__RoundStart", "a", "1=0", "2=0" );
      
        id_mode_money = dm_register_mode( NAME_MODE, 3, true, "Режим денежный" );
}

public fw__RoundStart( )
{
        g_bMode = false;
}

public dm_selected_mode( id, id_mode )
{
        if( id_mode == id_mode_money )
        {
                ClCmd__StartMode( id );
        }
}

public fw__KilledPlayer( victim, attacker )
{
        if( !is_user_connected( victim ) || get_user_team( victim ) != 2 || !g_bMode )
        {
                return HAM_IGNORED;
        }
      
        killed_counter_terrorist( victim );
      
        return HAM_IGNORED;
}

public ClCmd__StartMode( id )
{
        if( get_user_team( id ) != 1 || g_bMode )
        {
                return PLUGIN_HANDLED;
        }
        g_bMode = true;
        server_cmd( "deathrun_mode MONEYS" );
      
        return PLUGIN_HANDLED;
}

public killed_counter_terrorist( id )
{
        new s_Name[ 32 ], s_Players[ 32 ], iNum, iRnd = random_num( 150, 400 );
        get_user_name( id, s_Name, charsmax( s_Name ) );
        get_players( s_Players, iNum );
        client_print( 0, print_center, "Бонус за %s - $%i", s_Name, iRnd );
        for( new i; i < iNum; i++ )
        {
                if( get_user_team( s_Players[ i ] ) == 1 && g_bMode )
                {
                        cs_set_user_money( s_Players[ i ], cs_get_user_money( s_Players[ i ] ) + iRnd );
                }
        }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 26.10.2014, 1:09
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

deathrun_mode.inc в студию.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 1:17
Сообщение #3


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 1:09) *
deathrun_mode.inc в студию.


/**
* Регестрируем режим.
* @параметр s_ModeName - Название режима.
* @параметр iRoundsDelay - Раз в сколько раундов использовать.
* @параметр bDhudMsg - Показывать ли дхуд сообщение при выборе режима.
* @параметр s_Msg - Сообщение которое покажет при выборе.
* @возвращает - индекс режима.
*/
native dm_register_mode( s_ModeName[ 64 ], iRoundsDelay, bool:bDhudMsg, s_Msg[ 256 ] );

/**
* Проверяем режим
* Проверка идёт из квара deathrun_mode.
* @Параметр s_ModeName - Название
* @Возвращает - true or false.
*/
native bool:dm_is_mode( const s_ModeName[ ] )

/**
* Функция вызывается когда игрок выбирает режим.
* @параметр id - индекс игрока выбравший режим.
* @параметр id_mode - индекс выбранного режима.
*/
forward dm_selected_mode( id, id_mode );
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 26.10.2014, 2:04
Сообщение #4
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

В списке плагинов должен быть такой порядок:
Код
drun_modes.amxx
drun_money.amxx

А ещё лучше - в plugins.ini прописать только запуск drun_modes.amxx, а остальные, зависящие от него, подгружать конфигом plugins-dmode.ini : тогда вся их весёлая компания гарантированно будет в списке ниже 'главного' плагина.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 2:24
Сообщение #5


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 2:04) *
В списке плагинов должен быть такой порядок:
Код
drun_modes.amxx
drun_money.amxx

А ещё лучше - в plugins.ini прописать только запуск drun_modes.amxx, а остальные, зависящие от него, подгружать конфигом plugins-dmode.ini : тогда вся их весёлая компания гарантированно будет в списке ниже 'главного' плагина.


Они у меня и находятся ниже главного плагина

Код
DeathrunModes.amxx debug
DeathrunManager.amxx debug
DeathrunInformer.amxx
TransferMoneyLife.amxx
DeathrunDuels.amxx
;DeathrunInvis.amxx debug
;DeathrunVictim.amxx debug
DeathrunMoney.amxx debug
;DeathrunVampir.amxx debug
;DeathrunSnowballs.amxx
DeathrunShop.amxx
DeathrunBhop.amxx
SupplementBhop.amxx
DrTeamJoin.amxx
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 26.10.2014, 2:25
Сообщение #6
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

DRIVE37, я ТС'у объяснял.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 2:28
Сообщение #7


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 2:25) *
DRIVE37, я ТС'у объяснял.


ТС мой знакомый, который описал мою проблему пока я восстанавливал свой аккаунт
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DmitryLe
сообщение 26.10.2014, 2:31
Сообщение #8


Стаж: 13 лет

Сообщений: 33
Благодарностей: 1
Полезность: 24

Все верно, эта проблема его, я просто помог ускорить ее решение, написав от себя.

Отредактировал: DmitryLe, - 26.10.2014, 2:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 26.10.2014, 2:50
Сообщение #9
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

DRIVE37, дайте результаты команд amxx plugins и meta list.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 3:06
Сообщение #10


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 2:50) *
DRIVE37, дайте результаты команд amxx plugins и meta list.


AMX Plugins:

Код
Currently loaded plugins:
       name                    version     author            file             status  
[  1] Admin Base              1.8.1.3746  AMXX Dev Team     admin.amxx       running  
[  2] Admin Commands          1.8.1.3746  AMXX Dev Team     admincmd.amxx    running  
[  3] Admin Help              1.8.1.3746  AMXX Dev Team     adminhelp.amxx   running  
[  4] Slots Reservation       1.8.1.3746  AMXX Dev Team     adminslots.amxx  running  
[  5] Multi-Lingual System    1.8.1.3746  AMXX Dev Team     multilingual.am  running  
[  6] Menus Front-End         1.8.1.3746  AMXX Dev Team     menufront.amxx   running  
[  7] Commands Menu           1.8.1.3746  AMXX Dev Team     cmdmenu.amxx     running  
[  8] Players Menu            1.8.1.3746  AMXX Dev Team     plmenu.amxx      running  
[  9] Maps Menu               1.8.1.3746  AMXX Dev Team     mapsmenu.amxx    running  
[ 10] Plugin Menu             1.8.1.3746  AMXX Dev Team     pluginmenu.amxx  running  
[ 11] Admin Chat              1.8.1.3746  AMXX Dev Team     adminchat.amxx   running  
[ 12] Anti Flood              1.8.1.3746  AMXX Dev Team     antiflood.amxx   running  
[ 13] Scrolling Message       1.8.1.3746  AMXX Dev Team     scrollmsg.amxx   running  
[ 14] Info. Messages          1.8.1.3746  AMXX Dev Team     imessage.amxx    running  
[ 15] Admin Votes             1.8.1.3746  AMXX Dev Team     adminvote.amxx   running  
[ 16] NextMap                 1.8.1.3746  AMXX Dev Team     nextmap.amxx     running  
[ 17] Nextmap Chooser         1.8.1.3746  AMXX Dev Team     mapchooser.amxx  running  
[ 18] TimeLeft                1.8.1.3746  AMXX Dev Team     timeleft.amxx    running  
[ 19] Pause Plugins           1.8.1.3746  AMXX Dev Team     pausecfg.amxx    running  
[ 20] Stats Configuration     1.8.1.3746  AMXX Dev Team     statscfg.amxx    running  
[ 21] StatsX                  1.8.1.3746  AMXX Dev Team     statsx.amxx      running  
[ 22] Deathrun_Modes          0.8         BlackSmoke        DeathrunModes.a  debug    
[ 23] DR Manager                          BlackSmoke/xPaw   DeathrunManager  debug    
[ 24] Deathrun_Informer       0.1         BlackSmoke        DeathrunInforme  running  
[ 25] MoneyLife_Transfer      0.9         BlackSmoke        TransferMoneyLi  running  
[ 26] DeathRun Duels & Death  2.7         Sho0ter & PraVit  DeathrunDuels.a  running  
[ 27] DeathrunMode_Money      0.1         BlackSmoke        DeathrunMoney.a  debug    
[ 28] Deathrun_Shop_by_Black  1.2         BlackSmoke        DeathrunShop.am  running  
[ 29] Bhop                    1.2         BlackSmoke        DeathrunBhop.am  running  
[ 30] BannyHop_Menu           0.4         BlackSmoke        SupplementBhop.  running  
[ 31] KnifeMode               0.6         by BlackSmoke     DeathrunKnMode.  running  
[ 32] Team Join Management    0.3fix      Exolent&Alucard   DrTeamJoin.amxx  running  
32 plugins, 32 running



Meta List

Код
Currently loaded plugins:
      description      stat pend  file              vers      src   load  unlod
[ 1] AMX Mod X        RUN   -    amxmodx_mm_i386.  v1.8.1.3  ini   Start ANY  
[ 2] dproto_EF        RUN   -    dproto_i386.so    v0.9.391  ini   Start Never
[ 3] Fun              RUN   -    fun_amxx_i386.so  v1.8.1.3  pl1   ANY   ANY  
[ 4] Engine           RUN   -    engine_amxx_i386  v1.8.1.3  pl1   ANY   ANY  
[ 5] FakeMeta         RUN   -    fakemeta_amxx_i3  v1.8.1.3  pl1   ANY   ANY  
[ 6] CStrike          RUN   -    cstrike_amxx_i38  v1.8.1.3  pl1   ANY   ANY  
[ 7] CSX              RUN   -    csx_amxx_i386.so  v1.8.1.3  pl1   ANY   ANY  
[ 8] Ham Sandwich     RUN   -    hamsandwich_amxx  v1.8.1.3  pl1   ANY   ANY  
8 plugins, 8 running
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 26.10.2014, 10:38
Сообщение #11
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Заново перекомпилируйте и установите оба плагина, чтобы строка с ошибкой совпадала с исходником. Сейчас не совпадает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 18:38
Сообщение #12


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 10:38) *
Заново перекомпилируйте и установите оба плагина, чтобы строка с ошибкой совпадала с исходником. Сейчас не совпадает.


DeathrunModes

Код
/*===============================================================================
===========
*
* (\ ----- Версии ----- /)
*
* 0.1 - Реализация.
* 0.2 - Добавлен квар настройки худ сообщений.
* 0.3 - Добавлен отсчёт в меню.
* 0.4 - Фикс.
* 0.5 - Квар худа заменён на авто-выбор дхуда для отдельного режима, 3-ий аргумент в регистрации.
* 0.6 - Фикс
* 0.7 - Добавлен 4-ый аргумент регистрации, сообщение худа.
* 0.8 - Добавлена натива dm_is_mode( const s_NameMode[ ] );
*
* (\ ----- Описание ----- /)
*
* 1. Плагин заменяет ваше стандартное меню террориста. ( Аналог extra items из zp )
* 2. Теперь вам не понадобится вписывать каждый режим самостоятельно.
* 3. Чтобы добавить режим в меню террориста, нужно его зарегистрировать.
* 4. Если вы хотите, чтобы при выборе режима писало дхуд сообщение,
*    При регистрации режима, 3-ий аргумент ставьте - true.
*
================================================================================
===========*/

#include < amxmodx >
#include < hamsandwich >
#include < dhudmessage >

#define RegisterMenu(%1,%2) register_menucmd(register_menuid(%1), 1023, %2)
#define TimerMenu 15

enum _:DataMode
{
    s_Name[ 64 ],
    iRounds,
    bool:bDhud,
    s_Message[ 256 ]
}

new
Array:g_ModesArray,

g_iNumModes,
g_iPlayerPage[ 33 ],
g_iRoundMode[ 20 ],
g_iCountdownTimer[ 33 ],

bool:g_bOpen,
bool:g_bModeIsUsed,
bool:g_bIsUseTimer,

Float:g_fLastGameTime[ 33 ],

g_Fwd_SelectedMode,
g_Fwd_Return,

iCvarDrMode,

r,
g,
b;

public plugin_init()
{
    register_plugin( "Deathrun_Modes", "0.8", "BlackSmoke" );
    
    register_event( "HLTV", "fw_RoundStart", "a", "1=0", "2=0" );
    
    RegisterMenu( "MenuModes", "ActionModesMenu" );
    
    RegisterHam( Ham_Spawn, "player", "fw_SpawnPlayer" );
    
    g_ModesArray = ArrayCreate( DataMode );
    g_Fwd_SelectedMode = CreateMultiForward( "dm_selected_mode", ET_IGNORE, FP_CELL, FP_CELL )
    
    iCvarDrMode = register_cvar( "deathrun_mode", "NONE" );
}

public fw_RoundStart()
{
    g_bOpen = false;
    g_bModeIsUsed = false;
    for( new i = 0; i < g_iNumModes; i++ )
    {
        if( g_iRoundMode[ i ] )
        {
            g_iRoundMode[ i ]--
        }
    }
}

public fw_SpawnPlayer( id )
{
    if( get_user_team( id ) == 1 && !g_bOpen && !is_user_bot( id ) )
    {
        g_iCountdownTimer[ id ] = TimerMenu;
        g_bIsUseTimer = true;
        Show__ModesMenu( id, g_iPlayerPage[ id ] = 0 );
        g_bOpen = true;
        g_fLastGameTime[ id ] = get_gametime();
    }
}

public Show__ModesMenu( id, iPage )
{
    if( iPage < 0 )
    {
        return PLUGIN_HANDLED;
    }
    
    new s_Menu[ 512 ], iLen, iKey, Data[ DataMode ], iItem;
    new iStart = iPage * 8;
    new iEnd = iStart + 8;
    iKey |= (1 << 9)
    iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\yВы террорист \dВыберите режим^nУ вас осталось \r%d \dсек, чтобы подумать^n^n", g_iCountdownTimer[ id ] );
    if( iEnd > g_iNumModes )
    {
        iEnd = g_iNumModes;
    }
    for( new i = iStart; i < iEnd; i++ )
    {
        ArrayGetArray( g_ModesArray, i, Data );
        if( g_iRoundMode[ i ] )
        {
            iKey &= ~(1 << iItem);
            iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r%d. \d%s \r[\y%d\r]^n", ++iItem, Data[ s_Name ], g_iRoundMode[ i ] );
        }
        else
        {
            iKey |= (1 << iItem);
            iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r%d. \w%s^n", ++iItem, Data[ s_Name ] );
        }
    }
    
    if( iEnd < g_iNumModes )
    {
        iKey |= (1 << 8);
        iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "^n\r9. \wДалее^n\r0. \w%s", iPage ? "Назад" : "Выход" )
    }
    else
    {
        iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "^n\r0. \w%s", iPage ? "Назад" : "Выход" );
    }
    
    return show_menu( id, iKey, s_Menu, -1, "MenuModes" );
}

public ActionModesMenu( id, iKey )
{
    new Data[ DataMode ];
    switch( iKey )
    {
        case 8: Show__ModesMenu( id, ++g_iPlayerPage[ id ] )
        case 9: Show__ModesMenu( id, --g_iPlayerPage[ id ] )
        default:
        {
            new iMode = g_iPlayerPage[ id ] * 8 + iKey;
            if( g_iRoundMode[ iMode ] || g_bModeIsUsed )
                return PLUGIN_HANDLED;
                
            ArrayGetArray( g_ModesArray, iMode, Data );
            
            g_iRoundMode[ iMode ] = Data[ iRounds ];
            ExecuteForward(g_Fwd_SelectedMode, g_Fwd_Return, id, iMode);
            
            g_bModeIsUsed = true;
            g_bIsUseTimer = false;
            show_menu( id, 0, "^n" )
            
            Color_Print( 0, "!y[!gРежимы!y] !teamТеррорист выбрал режим: !g%s", Data[ s_Name ] );
            
            switch( random_num( 0, 2 ) )
            {
                case 0: r = 0, g = 255, b = 0;
                case 1: r = 160, g = 78, b = 0;
                case 2: r = 255, g = 255, b = 0;
            }
            
            if( Data[ bDhud ] )
            {
                set_dhudmessage( r, g, b, 0.01, -0.45, 2, 2.0, 8.0, 0.05, 1.5 );
                show_dhudmessage( 0, Data[ s_Message ] )
            }
        }
    }
    
    return PLUGIN_HANDLED;
}

public plugin_natives()
{
    register_library( "deathrun_mode" );
    register_native( "dm_register_mode", "native_register_mode", 1 );
    register_native( "dm_is_mode", "native_is_mode", 1 );
}

public bool:native_is_mode( const s_ModeName[ ] )
{
    param_convert( 1 );
    new s_CvarValue[ 64 ];
    get_pcvar_string( iCvarDrMode, s_CvarValue, 63 );
    if( equali( s_ModeName, s_CvarValue ) )
    {
        return true;
    }
    
    return false;
}

public native_register_mode( s_ModeName[ 64 ], iRoundsDelay, bool:bDhudmsg, s_Msg[ 256 ] )
{
    param_convert( 1 );
    param_convert( 4 );
    
    new Data[ DataMode ];
    Data[ s_Name ] = s_ModeName;
    Data[ iRounds ] = iRoundsDelay;
    Data[ bDhud ] = bDhudmsg;
    Data[ s_Message ] = s_Msg;
    ArrayPushArray( g_ModesArray, Data );
    
    g_iNumModes++;
    
    return g_iNumModes-1;
}

public client_PreThink( id )
{
    if( !g_bIsUseTimer || get_user_team( id ) != 1 || (get_gametime() - g_fLastGameTime[ id ]) < 1.0 )
        return;
        
    if( g_iCountdownTimer[ id ] > 0 )
    {
        g_iCountdownTimer[ id ]--
        Show__ModesMenu( id, g_iPlayerPage[ id ] );
        g_fLastGameTime[ id ] = get_gametime();
    }
    else
    {
        g_bIsUseTimer = false;
        show_menu( id, 0, "^n" )
    }
}

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



DeathrunMoney

Код
#include < amxmodx >
#include < hamsandwich >
#include < deathrun_mode >
#include < cstrike >

new
id_mode_money,
bool:g_bMode;

public plugin_init( )
{
    register_plugin( "DeathrunMode_Money", "0.1", "BlackSmoke" );
    RegisterHam( Ham_Killed, "player", "fw__KilledPlayer" );
    register_clcmd( "/modeMONEY", "ClCmd__StartMode" );
    register_event( "HLTV", "fw__RoundStart", "a", "1=0", "2=0" );
    
    id_mode_money = dm_register_mode( "Денежный", 3, true, "Режим денежный" );
}

public fw__RoundStart( )
{
    g_bMode = false;
}

public dm_selected_mode( id, id_mode )
{
    if( id_mode == id_mode_money )
    {
        ClCmd__StartMode( id );
    }
}

public fw__KilledPlayer( victim, attacker )
{
    if( !is_user_connected( victim ) || get_user_team( victim ) != 2 || !g_bMode )
    {
        return HAM_IGNORED;
    }
    
    killed_counter_terrorist( victim );
    
    return HAM_IGNORED;
}

public ClCmd__StartMode( id )
{
    if( get_user_team( id ) != 1 || g_bMode )
    {
        return PLUGIN_HANDLED;
    }
    g_bMode = true;
    server_cmd( "deathrun_mode MONEYS" );
    
    return PLUGIN_HANDLED;
}

public killed_counter_terrorist( id )
{
    new s_Name[ 32 ], s_Players[ 32 ], iNum, iRnd = random_num( 150, 400 );
    get_user_name( id, s_Name, charsmax( s_Name ) );
    get_players( s_Players, iNum );
    client_print( 0, print_center, "Бонус за %s - $%i", s_Name, iRnd );
    for( new i; i < iNum; i++ )
    {
        if( get_user_team( s_Players[ i ] ) == 1 && g_bMode )
        {
            cs_set_user_money( s_Players[ i ], cs_get_user_money( s_Players[ i ] ) + iRnd );
        }
    }
}



Логи

Код
L 10/26/2014 - 20:38:34: [AMXX] Displaying debug trace (plugin "DeathrunModes.amxx")
L 10/26/2014 - 20:38:34: [AMXX] Run time error 5: memory access
L 10/26/2014 - 20:38:34: [AMXX]    [0] DeathrunModes.sma::native_register_mode (line 215)
L 10/26/2014 - 20:38:34: Unhandled dynamic native error
L 10/26/2014 - 20:38:34: [AMXX] Displaying debug trace (plugin "DeathrunModes.amxx")
L 10/26/2014 - 20:38:34: [AMXX] Run time error 5: memory access
L 10/26/2014 - 20:38:34: [AMXX]    [0] DeathrunModes.sma::native_register_mode (line 215)
L 10/26/2014 - 20:38:34: Unhandled dynamic native error
L 10/26/2014 - 20:38:34: [AMXX] Displaying debug trace (plugin "DeathrunMoney.amxx")
L 10/26/2014 - 20:38:34: [AMXX] Run time error 10: native error (native "dm_register_mode")
L 10/26/2014 - 20:38:34: [AMXX]    [0] DeathrunMoney.sma::plugin_init (line 17)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 26.10.2014, 19:21
Сообщение #13
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Я не это сказал сделать. Строка 215 в 'DeathrunModes' - пуста, сами проверьте.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 19:26
Сообщение #14


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 19:21) *
Я не это сказал сделать. Строка 215 в 'DeathrunModes' - пуста, сами проверьте.


Проверил, у меня там вот эта строка 215

Код
Data[ s_Name ] = s_ModeName;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 26.10.2014, 19:48
Сообщение #15
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Такой попробуйте.

Прикрепленный файл  drun_modes_new.sma ( 7,55 килобайт ) Кол-во скачиваний: 71
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DRIVE37
сообщение 26.10.2014, 19:59
Сообщение #16


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Цитата(Safety1st @ 26.10.2014, 19:48) *
Такой попробуйте.

Прикрепленный файл  drun_modes_new.sma ( 7,55 килобайт ) Кол-во скачиваний: 71


Все заработало! Спасибо большое ;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gaara89
сообщение 12.6.2015, 13:19
Сообщение #17
Стаж: 10 лет

Сообщений: 3
Благодарностей: 1
Полезность: 0

Ап похожая ситуация ребята:
тык
L 06/12/2015 - 15:07:30: [AMXX] Displaying debug trace (plugin "army_ranks_ultimate.amxx")
L 06/12/2015 - 15:07:30: [AMXX] Run time error 10: native error (native "ArraySize")
L 06/12/2015 - 15:07:30: [AMXX] [0] army_ranks_ultimate.sma::GetUserLevel (line 769)
L 06/12/2015 - 15:07:30: [AMXX] [1] army_ranks_ultimate.sma::load_client_data (line 737)


Все что надо выложу. Спрашивайте.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: