Стаж: 14 лет
Сообщений: 359
Благодарностей: 14
Полезность: < 0
Установил два плагина, смысл которых выводить сообщения и информацию на экране в виде "
dhud_message ".
Первый установленный плагин выводит спектрам информацию в верху экрана об IP сервера, Клиентском-меню и сайте сервера.
Второй выводит за спектров на экран при наблюдении за игроками их ХП, Броню, Деньги, Патроны.
По отдельности они работают нормально, но вот вместе происходит следующее: первый плагин начинает мигать (появляться и исчезать), а второй работает нормально. Я так понимаю, второй плагин перебивает своим сообщение появление первого!?
Как исправить это, чтобы два разных текста от двух плагинов работали нормально и не исчезали?
Код:
#include <amxmodx> #include <amxmisc> new cvar_message, cvar_color, cvar_location, cvar_effects, cvar_show, cvar_cmd public plugin_init() { register_plugin("Spec message", "1.1", "asd12") cvar_message = register_cvar("amx_permanent_message", "Меню-Клиента - F5/nГруппа в VK: vk.com/snc.gaming/nIP адрес сервера: ") cvar_color = register_cvar("amx_permanent_message_color", "255 255 255") cvar_location = register_cvar("amx_permanent_message_location", "3") cvar_effects = register_cvar("amx_permanent_message_effects", "0") cvar_show = register_cvar("amx_permanent_message_show", "0") cvar_cmd = register_cvar("amx_permanent_message_cmd", "1") register_concmd("amx_perm_msg", "cmdChangeMsg", ADMIN_LEVEL_A) set_task(1.0, "show_hud", 0, "", 0, "b") } public show_hud() { new message[200], location, eff, show, players[32], inum static red, green, blue get_pcvar_string(cvar_message, message, charsmax(message)) get_hud_color(red, green, blue) location = get_pcvar_num(cvar_location) eff = clamp(get_pcvar_num(cvar_effects), 0, 2) show = get_pcvar_num(cvar_show) get_players(players, inum) replace_all(message, charsmax(message), "%new%", "^n") replace_all(message, charsmax(message), "/n", "^n") switch(location) { case 1: set_dhudmessage(red, green, blue, 0.01, 0.02, eff, 1.0, 1.0, 0.1, 0.2) case 2: set_dhudmessage(red, green, blue, -1.0, 0.02, eff, 1.0, 1.0, 0.1, 0.2) case 3: set_dhudmessage(red, green, blue, 0.99, 0.15, eff, 1.0, 1.0, 0.1, 0.2) case 4: set_dhudmessage(red, green, blue, 0.01, -1.0, eff, 1.0, 1.0, 0.1, 0.2) case 5: set_dhudmessage(red, green, blue, -1.0, -1.0, eff, 1.0, 1.0, 0.1, 0.2) case 6: set_dhudmessage(red, green, blue, 0.99, -1.0, eff, 1.0, 1.0, 0.1, 0.2) case 7: set_dhudmessage(red, green, blue, 0.01, 0.75, eff, 1.0, 1.0, 0.1, 0.2) case 8: set_dhudmessage(red, green, blue, -1.0, 0.75, eff, 1.0, 1.0, 0.1, 0.2) case 9: set_dhudmessage(red, green, blue, 0.99, 0.70, eff, 1.0, 1.0, 0.1, 0.2) } for(new i=0; i<inum; ++i) { switch(show) { case 0: show_dhudmessage(0, message) case 1: { if(!is_user_alive(players[i])) show_dhudmessage(players[i], message) } case 2: { if(is_user_alive(players[i])) show_dhudmessage(players[i], message) } case 3: { if(is_user_admin(players[i])) show_dhudmessage(players[i], message) } case 4: { if(!is_user_admin(players[i])) show_dhudmessage(players[i], message) } case 5: { if(is_user_admin(players[i]) && is_user_alive(players[i])) show_dhudmessage(players[i], message) } case 6: { if(is_user_admin(players[i]) && !is_user_alive(players[i])) show_dhudmessage(players[i], message) } case 7: { if(!is_user_admin(players[i]) && is_user_alive(players[i])) show_dhudmessage(players[i], message) } case 8: { if(!is_user_admin(players[i]) && !is_user_alive(players[i])) show_dhudmessage(players[i], message) } default: show_dhudmessage(0, message) } } return PLUGIN_CONTINUE } public cmdChangeMsg(id, level, cid) { if(!get_pcvar_num(cvar_cmd) || !cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED new args[200], name[32] read_args(args, charsmax(args)) remove_quotes(args) get_user_name(id, name, charsmax(name)) set_pcvar_string(cvar_message, args) log_amx("The admin ^"%s^" change the permanent message to ^"%s^"", name, args) return PLUGIN_CONTINUE } get_hud_color(&r, &g, &b) { new color[20] static red[5], green[5], blue[5] get_pcvar_string(cvar_color, color, charsmax(color)) parse(color, red, charsmax(red), green, charsmax(green), blue, charsmax(blue)) r = str_to_num(red) g = str_to_num(green) b = str_to_num(blue) }
Код:
#include <amxmodx> #include <engine> #define VERSION "0.0.1" #define PLUGIN "Spectator Hud Informations" #define MAX_PLAYERS 32 #define FIRST_PERSON_VIEW 4 new const g_iWeaponIdToAmmoId[] = { 0, 9, 0, 2, 12, 5, 14, 6, 4, 13, 10, 7, 6, 4, 4, 4, 6, 10, 1, 10, 3, 5, 4, 10, 2, 11, 8, 4, 2, 0, 7} new g_iHealth[MAX_PLAYERS+1] new g_iArmor[MAX_PLAYERS+1] new g_iMoney[MAX_PLAYERS+1] new g_iCurWeapon[MAX_PLAYERS+1] new g_iAmmo[MAX_PLAYERS+1] new g_iBpAmmo[MAX_PLAYERS+1][15] new g_dhud_color public plugin_init() { register_plugin(PLUGIN, VERSION, "ConnorMcLeod") register_cvar("amx_spec_hud_color", "250 250 250") register_event("Money", "Event_Money", "b") register_event("CurWeapon", "Event_CurWeapon", "b", "1=1") register_event("Health", "Event_Health", "b") register_event("Battery", "Event_Battery", "b") register_event("AmmoX", "Event_AmmoX", "b", "1<15") new szColor[12], szRed[4], szGreen[4], szBlue[4], r, g, b get_cvar_string("amx_spec_hud_color", szColor, charsmax(szColor)) parse(szColor, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue)) r = clamp( str_to_num(szRed), 0, 255) g = clamp( str_to_num(szGreen), 0, 255) b = clamp( str_to_num(szBlue), 0, 255) g_dhud_color = b + ( g << 8 ) + ( r << 16 ) new iEnt = create_entity("info_target") if( iEnt ) { entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1) entity_set_string(iEnt, EV_SZ_classname, "_hud_spec") register_think("_hud_spec", "UpdateSpecHud") } else { set_task(0.1, "UpdateSpecHud", .flags="b") } } public UpdateSpecHud( iEnt ) { if( iEnt ) { entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1) } static iAlivePlayers[32], iDeadPlayers[32], iAliveCount, iDeadCount, iAlivePlayer, iDeadPlayer, i static iAmmo static bool:bRetrievedValues, szMessage1[128], szMessage2[128], iLen1, iLen2 get_players(iAlivePlayers, iAliveCount, "a") if( !iAliveCount ) { return } get_players(iDeadPlayers, iDeadCount, "bch") if( !iDeadCount ) { return } for(--iAliveCount; iAliveCount>=0; iAliveCount--) { bRetrievedValues = false iAlivePlayer = iAlivePlayers[iAliveCount] for(i=0; i<iDeadCount; i++) { iDeadPlayer = iDeadPlayers[i] if( entity_get_int(iDeadPlayer, EV_INT_iuser2) == iAlivePlayer && entity_get_int(iDeadPlayer, EV_INT_iuser1) == FIRST_PERSON_VIEW ) { if( !bRetrievedValues ) { iLen1 = 31+ formatex(szMessage1, charsmax(szMessage1), "%3d HP^t^t^t%3d AP", g_iHealth[iAlivePlayer], g_iArmor[iAlivePlayer]) iAmmo = g_iAmmo[iAlivePlayer] if( iAmmo != -1 ) { iLen2 = 31 + formatex( szMessage2, charsmax(szMessage2), "$ %5d^n%3d|%3d", g_iMoney[iAlivePlayer], iAmmo, g_iBpAmmo[iAlivePlayer][ g_iWeaponIdToAmmoId[ g_iCurWeapon[iAlivePlayer] ] ] ) } else { iLen2 = 31 + formatex(szMessage2, charsmax(szMessage2), "$ %5d^n", g_iMoney[iAlivePlayer]) } bRetrievedValues = true } __show__dhudmessage(iDeadPlayer, szMessage1, iLen1, _:0.01, _:0.98) __show__dhudmessage(iDeadPlayer, szMessage2, iLen2, _:0.92, _:0.93) iDeadPlayers[i--] = iDeadPlayers[--iDeadCount] if( !iDeadCount ) { return } } } } } public Event_Money( id ) { g_iMoney[id] = read_data(1) } public Event_CurWeapon(id) { g_iCurWeapon[id] = read_data(2) g_iAmmo[id] = read_data(3) } public Event_AmmoX(id) { g_iBpAmmo[id][read_data(1)] = read_data(2) } public Event_Health(id) { g_iHealth[id] = read_data(1) } public Event_Battery(id) { g_iArmor[id] = read_data(1) } // code extracted from Director Hud Message include file // http://forums.alliedmods.net/showthread.php?t=149210 __show__dhudmessage(id, const szMessage[], iLen, x, y) { message_begin( MSG_ONE_UNRELIABLE , SVC_DIRECTOR, .player=id ) { write_byte( iLen ) write_byte( DRC_CMD_MESSAGE ) write_byte( 0 ) write_long( g_dhud_color ) write_long( x ) write_long( y ) write_long( 0x38D1B717 ) write_long( 0x38D1B717 ) write_long( 0x3DF5C28F ) write_long( 0 ) write_string( szMessage ) } message_end() }