
Стаж: 11 лет
Сообщений: 146
Благодарностей: 14
Полезность: 69
|
Цитата(Safety1st @ 26.10.2014, 10:38)  Заново перекомпилируйте и установите оба плагина, чтобы строка с ошибкой совпадала с исходником. Сейчас не совпадает. Код /*=============================================================================== =========== * * (\ ----- Версии ----- /) * * 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(); } } } } Код #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)
|