Ошибка плагина "deatmatch_mods_vote_1.0"

Сообщения
21
Реакции
3
Ошибка
L 03/02/2025 - 17:18:33: Info (map "cs_mansion") (file "addons/amxmodx/logs/error_20250302.log")
L 03/02/2025 - 17:18:33: [AMXX] Run time error 4 (plugin "deatmatch_mods_vote_1.0.amxx") - debug not enabled!
L 03/02/2025 - 17:18:33: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
ОС
Linux
Amx Mod X
1.9.0
Билд
3.13.0.788
ReGamedll
5.26.0.688
Версия Metamod
1.3.0.149
Список метамодулей
[ 1] Reunion                RUN   -    reunion_mm_i386.so          v0.2.0.13        ini  Start Never
[ 2] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 3] Rechecker RUN - rechecker_mm_i386.so v2.7 ini Chlvl ANY
[ 4] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5294 ini Start ANY
[ 5] Revoice RUN - revoice_mm_i386.so v0.1.0.34 ini Start Never
[ 6] Placeholders disabler RUN - plfix_mm_i386.so v0.0.3 ini Start Never
[ 7] WHBlocker RUN - whblocker_mm_i386.so v1.5.697 ini Chlvl ANY
[ 8] ReAPI RUN - reapi_amxx_i386.so v5.24.0.300-dev pl4 ANY Never
[ 9] hackdetector RUN - hackdetector_amxx_i386.so v0.15.328.lite pl4 ANY ANY
[10] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl4 ANY Never
[11] MySQL RUN - mysql_amxx_i386.so v1.9.0.5294 pl4 ANY ANY
[12] Engine RUN - engine_amxx_i386.so v1.9.0.5294 pl4 ANY ANY
[13] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5294 pl4 ANY ANY
[14] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5294 pl4 ANY ANY
[15] CSX RUN - csx_amxx_i386.so v1.9.0.5294 pl4 ANY ANY
[16] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5294 pl4 ANY ANY
Список плагинов
-
Автор плагина
Neeeeeeeeel.
Версия плагина
v 1.0
Исходный код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

enum _:TASKS
{
TASK_VOTE_INIT = 1445,
TASK_VOTE_TIME,
TASK_VOTE_COUNTDOWN
};

enum _:MODES
{
NORMAL = 0,
HEAD
};

#define get_percent(%1,%2) ( ( %1 ) * 100 ) / ( %1 + %2 )

#define SERVER_TAG "DM VOTE"

new g_iMaxPlayers, g_iOnlyHead, g_iVoteTime, g_iVoteCountdown = 7;

new cvar_votetime, cvar_blockknife_dmg, cvar_voteinit_time;

new g_vote[ 2 ], g_hasvoted[ 33 ];

new const sound_countdown[ ][ ] = {
"misc/one.wav",
"misc/two.wav",
"misc/three.wav",
"misc/four.wav",
"misc/five.wav"
};

public plugin_precache( )
{
for( new i = 0; i < sizeof sound_countdown; i++ )
precache_sound( sound_countdown[ i ] );
}

public plugin_init( )
{
register_plugin( "DeatMatch Mod's Vote", "v1.0", "Neeeeeeeeeel.-" );

register_dictionary( "dm_vote.txt" );

cvar_votetime = register_cvar( "dm_vote_time", "15" );

cvar_blockknife_dmg = register_cvar( "dm_block_knife_dmg", "1" );

cvar_voteinit_time = register_cvar( "dm_voteinit_time", "40" );

RegisterHam( Ham_TraceAttack, "player", "fw_TraceAttack" );

g_iMaxPlayers = get_maxplayers( );

set_task( get_pcvar_float( cvar_voteinit_time ), "show_vote", TASK_VOTE_INIT );
}

public client_putinserver( id )
g_hasvoted[ id ] = 0;

public show_vote( )
{
if( g_iVoteCountdown == 7 )
{
g_iVoteCountdown--;
set_task( 1.0, "show_vote", TASK_VOTE_COUNTDOWN, _, _, "b" );

return PLUGIN_HANDLED;
}

else if( g_iVoteCountdown )
{
set_hudmessage( 85, 255, 0, -1.0, 0.09, 1, 6.0, 1.0 );

if( g_iVoteCountdown != 1 )
{
for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
show_hudmessage( i, "%L", i, "VOTE_STARTS_IN", g_iVoteCountdown - 1 )
}

PlaySound( g_iVoteCountdown - 2 );

g_iVoteCountdown--;

return PLUGIN_HANDLED;
}

else
{
for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
show_hudmessage( i, "%L", i, "VOTE_STARTING" )
}
}
}

remove_task( TASK_VOTE_COUNTDOWN );

g_iVoteTime = get_pcvar_num( cvar_votetime );

set_task( 1.0, "time_vote", TASK_VOTE_TIME, _, _, "b" );

for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
show_menu_vote( i );
}

return PLUGIN_HANDLED;
}

public time_vote( )
{
if( !g_iVoteTime )
{
remove_task( TASK_VOTE_TIME );

finish_vote( );

return PLUGIN_HANDLED;
}

set_hudmessage( 85, 255, 0, -1.0, 0.09, 1, 6.0, 1.0 );

for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
show_hudmessage( i, "%L", i, "VOTE_FINISHS_IN", g_iVoteTime );
}

g_iVoteTime--;

return PLUGIN_HANDLED;
}

public finish_vote( )
{
new result = g_vote[ HEAD ] == g_vote[ NORMAL ] ? 0 : 1;

for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
{
if( !result )
ChatColor( i, "!g[%s] %L", SERVER_TAG, i, "VOTE_NOWINNER" );

else
{
ChatColor( i, "!g[%s] %L", SERVER_TAG, i, "VOTE_FINISH", ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ HEAD ], g_vote[ NORMAL ] ) : 0, ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ NORMAL ], g_vote[ HEAD ] ) : 0 );
ChatColor( i, "!g[%s] %L", SERVER_TAG, i, "VOTE_RESULT", g_vote [ HEAD ] > g_vote[ NORMAL ] ? "ХедШот" : "Нормальный" );
}
}
}

g_iOnlyHead = g_vote[ HEAD ] > g_vote[ NORMAL ] ? true : false;

set_cvar_num( "sv_restart", 1 );
}

public PlaySound( sound )
client_cmd( 0, "spk ^"%s^"", sound_countdown[ sound ] );

public show_menu_vote( id )
{
new data[ 64 ];
formatex( data, charsmax( data ), "%L", id, "VOTE_MENU_TITLE" );

new Menu = menu_create( data, "menu_vote" );

formatex( data, charsmax( data ), "Нормальный \r[\y%d%%\r]", ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ NORMAL ], g_vote[ HEAD ] ) : 0 );
menu_additem( Menu, data, "1" );

formatex( data, charsmax( data ), "ХедШот \r[\y%d%%\r]", ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ HEAD ], g_vote[ NORMAL ] ) : 0 );
menu_additem( Menu, data, "2" );

menu_setprop( Menu, MPROP_EXIT, MEXIT_NEVER );

menu_display( id, Menu );
}

public menu_vote( id, Menu, item )
{
if( g_hasvoted[ id ] )
return PLUGIN_HANDLED;

new uName[ 33 ];
get_user_name( id, uName, charsmax( uName ) );

if( item > 1 ) //bugfix
item = 0;

g_vote[ item ]++;

ChatColor( 0, "!g[%s] %L", SERVER_TAG, id, "VOTE_HAS_CHOOSEN", uName, !item ? "Нормальный" : "ХедШот" );

for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
show_menu_vote( i );
}

g_hasvoted[ id ] = true;

return PLUGIN_HANDLED;
}

public fw_TraceAttack( victim, attacker, Float:damage, Float:direction[3], trace, damageBits )
{
if( get_user_weapon( attacker ) == CSW_KNIFE && get_pcvar_num( cvar_blockknife_dmg ) )
return HAM_SUPERCEDE;

else if( g_iOnlyHead && victim != attacker && ( 1 <= attacker <= g_iMaxPlayers ) && get_tr2( trace, 9/*TR_iHitGroup*/ ) != HIT_HEAD )
{
set_tr2( trace, TR_flFraction, 1.0 );
return HAM_SUPERCEDE;
}

return HAM_IGNORED;
}

stock ChatColor( const id, const input[ ], any:... )
{
new count = 1, players[ 32 ];
static msg[ 191 ];
vformat( msg, 190, input, 3 );

replace_all( msg, 190, "!g", "^4" );
replace_all( msg, 190, "!y", "^1" );
replace_all( msg, 190, "!team", "^3" );
replace_all( msg, 190, "!team2", "^0" );

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( );
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/
Подскажите в чем проблема и как решить?
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
techno, в plugins.ini дописать deatmatch_mods_vote_1.0.amxx debug и показать потом ошибку
 
Последнее редактирование:
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
@techno,как появится скинешь
 
Сообщения
21
Реакции
3
Code_0xABC,
L 03/03/2025 - 10:21:18: [AMXX] Displaying debug trace (plugin "deatmatch_mods_vote_1.0.amxx", version "v1.0")
L 03/03/2025 - 10:21:18: [AMXX] Run time error 4: index out of bounds
L 03/03/2025 - 10:21:18: [AMXX] [0] deatmatch_mods_vote_1.0.sma::menu_vote (line 198)
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
techno, мeжду 197 и 198 строкой, допиши это. И покажи значение которое вывовидит в консоль сервера, во время ошибки.
server_print("******** %i", item)
Думаю ты поймешь размерность этого массива g_vote[ 2 ] и если в обработчике, параметром item будет значение, например -1 или ниже, то будет прилетать ошибка
 
Последнее редактирование:
Сообщения
21
Реакции
3
Code_0xABC, честно не силен в этом и не понял что нужно сделать. Если можно по подробнее пожалуйста
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
мeжду 197 и 198 строкой, это server_print("******** %i", item)
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу