#define HITBOXES 8
new g_aHits[33][sizeof HITBOXES]
public CBasePlayer_TakeDamage(const pevVictim, pevInflictor, pevAttacker, Float:damage, bitsDamageType)
{
if(is_valid_player(pevAttacker))
{
if(pevAttacker != pevVictim && rg_is_player_can_takedamage(pevVictim, pevAttacker))
{
new value = get_member(pevAttacker, m_LastHitGroup)
g_aHits[pevAttacker][value]++
}
return;
}
}
public CmdMe(id)
{
new len, szText[128]
if(g_aHits[id][HIT_HEAD])
len += formatex(szText[len], charsmax(szText) - len, " HS %i", g_aHits[id][HIT_HEAD])
if(g_aHits[id][HIT_CHEST])
len += formatex(szText[len], charsmax(szText) - len, " CH %i", g_aHits[id][HIT_CHEST])
if(g_aHits[id][HIT_STOMACH])
len += formatex(szText[len], charsmax(szText) - len, " ST %i", g_aHits[id][HIT_STOMACH])
if(g_aHits[id][HIT_LEFTARM])
len += formatex(szText[len], charsmax(szText) - len, " LA %i", g_aHits[id][HIT_LEFTARM])
if(g_aHits[id][HIT_RIGHTARM])
len += formatex(szText[len], charsmax(szText) - len, " RA %i", g_aHits[id][HIT_RIGHTARM])
if(g_aHits[id][HIT_LEFTLEG])
len += formatex(szText[len], charsmax(szText) - len, " LL %i", g_aHits[id][HIT_LEFTLEG])
if(g_aHits[id][HIT_RIGHTLEG])
len += formatex(szText[len], charsmax(szText) - len, " RL %i", g_aHits[id][HIT_RIGHTLEG])
client_print_color(id,print_team_default, "%s", szText)
return PLUGIN_HANDLED
}
обнуление данных игрока на спауне есть?у меня в коде так и есть, отсюда просто копировал...
пока нет, не могу понять как правильно обнулить двумерный[DOUBLEPOST=1507974527][/DOUBLEPOST]вообще какаято ерунда с подсчетом, попал 12 раз пишет и пишет что попал буд-то только в голову 6 раз(хотя вообще в нее ни разу не попал) и больше ни кудаобнуление данных игрока на спауне есть?
обнуляется, спасибо!попробуй так
arrayset(g_aHits[id], 0, sizeof g_aHits[])
if(g_aHits[id][HIT_HEAD])
len += formatex(szText[len], charsmax(szText) - len, " П.нога %i", g_aHits[id][HIT_HEAD])
if(g_aHits[id][HIT_RIGHTLEG])
len += formatex(szText[len], charsmax(szText) - len, " голова %i", g_aHits[id][HIT_RIGHTLEG])
#include <amxmodx>
#include <reapi>
#define PLUGIN "Say Me"
#define VERSION "1.0"
#define AUTHOR "BeasT"
#define is_valid_player(%0) (0 < %0 < 33)
#define HITBOXES 8
new g_aHits[33][HITBOXES]
new Float:g_Damage[33], g_Hits[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true)
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true)
register_clcmd("say /me", "CmdMe")
register_clcmd("say_team /me", "CmdMe")
}
public CBasePlayer_TakeDamage(const pevVictim, pevInflictor, pevAttacker, Float:damage, bitsDamageType)
{
if(is_valid_player(pevAttacker))
{
if(pevAttacker != pevVictim && rg_is_player_can_takedamage(pevVictim, pevAttacker))
{
new value = get_member(pevAttacker, m_LastHitGroup)
g_Damage[pevAttacker] += damage
g_Hits[pevAttacker] ++
g_aHits[pevAttacker][value]++
}
return;
}
}
public CmdMe(id)
{
new len, szText[128]
if(g_aHits[id][HIT_HEAD])
len += formatex(szText[len], charsmax(szText) - len, " HS %i", g_aHits[id][HIT_HEAD])
if(g_aHits[id][HIT_CHEST])
len += formatex(szText[len], charsmax(szText) - len, " CH %i", g_aHits[id][HIT_CHEST])
if(g_aHits[id][HIT_STOMACH])
len += formatex(szText[len], charsmax(szText) - len, " ST %i", g_aHits[id][HIT_STOMACH])
if(g_aHits[id][HIT_LEFTARM])
len += formatex(szText[len], charsmax(szText) - len, " LA %i", g_aHits[id][HIT_LEFTARM])
if(g_aHits[id][HIT_RIGHTARM])
len += formatex(szText[len], charsmax(szText) - len, " RA %i", g_aHits[id][HIT_RIGHTARM])
if(g_aHits[id][HIT_LEFTLEG])
len += formatex(szText[len], charsmax(szText) - len, " LL %i", g_aHits[id][HIT_LEFTLEG])
if(g_aHits[id][HIT_RIGHTLEG])
len += formatex(szText[len], charsmax(szText) - len, " RL %i", g_aHits[id][HIT_RIGHTLEG])
client_print_color(id,print_team_default, "Вы нанесли %.0f урона попаданий %s", g_Damage[id], g_Hits[id], szText)
return PLUGIN_HANDLED
}
public CBasePlayer_Spawn(id)
{
g_Damage[id] = 0.0
g_Hits[id] = 0
arrayset(g_aHits[id], 0, sizeof g_aHits[])
}
игроков 32, не знаю каким образом вылазит эта ошибка, но бывает она редко, т.е. не постоянная, каким образом вылазит за пределы массива мне не понятноd3m37r4, скорее принципиально) Но так будет правильнее если мы хотим подставить вместо 32 конкретное значение MaxClients) Что я кстати и советую сделать BeasT
Может просто максимальное кол-во слотов меньше 32
Кстати, может быть проблема в value? Можно попробовать добавить условие value <= HITBOXES...