Здравствуйте народ.
Делаю небольшую менюшку для своего паблик сервера и там есть такая фишка что игроки могут делать некторые настройки. Вкл/выкл подсветку экрана сделал, работает норм, решил добавить дамагер. Дабы не тыркаться с нативами решил все всунуть в один плагин(так удобнее) и тут-то возникло некоторое затруднение.
Перенес код дамагера из
abd в свою менюшку все работает, но не показывается урон который наносит игрок, урон который нанесли игроку показывается норм.
Тестирую на голом локальном сервере с подботами. никаких других плагинов с hudами нет
Код:
#define get_bit(%1,%2) ((%1) & (1 << ((%2) - 1))) #define set_bit(%1,%2) ((%1) |= (1 << ((%2) - 1))) #define clr_bit(%1,%2) ((%1) &= ~(1 << ((%2) - 1))) new giMenuV[MAX_PLAYERS + 1] enum _:SETTING { SCREAN, DAMAGE }; new g_iBitMenuUsed,g_iBitFirstSet,giType[MAX_PLAYERS + 1][SETTING],gVault new g_type, g_enabled, g_recieved, bool:g_showrecieved, g_hudmsg1, g_hudmsg2 public plugin_init() { register_plugin(PLUGINAME, VERSION, AUTHOR) register_clcmd("menu", "menu_pub") register_clcmd("say /menu", "menu_pub") register_clcmd("nightvision", "menu_pub"); register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0") register_event("HLTV", "on_new_round", "a", "1=0", "2=0") register_event("DeathMsg", "death", "a", "1>0") g_type = register_cvar("amx_bulletdamage","2") g_recieved = register_cvar("amx_bulletdamage_recieved","1") g_hudmsg1 = CreateHudSyncObj() g_hudmsg2 = CreateHudSyncObj() } public death() { new i_Killer = read_data(1) if(giType[i_Killer][SCREAN] == 1) ScreenFade(i_Killer) } public on_new_round() { g_enabled = get_pcvar_num(g_type) if(get_pcvar_num(g_recieved)) g_showrecieved = true } public on_damage(id) { if(g_enabled && (giType[id][DAMAGE] == 1)) { static attacker; attacker = get_user_attacker(id) static damage; damage = read_data(2) if(g_showrecieved) { set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1) ShowSyncHudMsg(id, g_hudmsg2, "%i^n", damage) } if(is_user_connected(attacker)) { switch(g_enabled) { case 1: { set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1) ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage) } case 2: { if(fm_is_ent_visible(attacker,id)) { set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1) ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage) } } } } } } public plugin_cfg() { gVault = nvault_open("menu"); if(gVault == INVALID_HANDLE) set_fail_state("[Menu] Can't open nVault file!"); nvault_prune(gVault,0,get_systime() - (30 * 86400)); } public plugin_end() { nvault_close(gVault); } public client_putinserver(id) { set_bit(g_iBitFirstSet,id); static szSteamId[32],s_Key[2][40]; get_user_authid(id,szSteamId,charsmax(szSteamId)); formatex(s_Key[0],39,"%sV_1",szSteamId); formatex(s_Key[1],39,"%sV_2",szSteamId); giType[id][SCREAN] = nvault_get(gVault,s_Key[0]); giType[id][DAMAGE] = nvault_get(gVault,s_Key[1]); set_bit(g_iBitFirstSet,id); } public client_disconnect(id) { static szSteamId[32],s_Key[2][40],nVaultData[2][8]; get_user_authid(id,szSteamId,charsmax(szSteamId)); formatex(s_Key[0],39,"%sV_1",szSteamId); formatex(nVaultData[0],7,"%d",giType[id][SCREAN]); formatex(s_Key[1],39,"%sV_2",szSteamId); formatex(nVaultData[1],7,"%d",giType[id][DAMAGE]); nvault_set(gVault,s_Key[0],nVaultData[0]); nvault_set(gVault,s_Key[1],nVaultData[1]); clr_bit(g_iBitMenuUsed,id); clr_bit(g_iBitFirstSet,id); } stock ScreenFade( id ) { message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), {0,0,0}, id ) write_short( 1<<10 ) write_short( 1<<10 ) write_short( 0x0000 ) write_byte( 0 ) write_byte( 0 ) write_byte( 200 ) write_byte( 40 ) message_end( ) }Весь код так же прилагаю файлом. Спасибо всем кто откликнется)