Вообщем сделал миссрэйт.
Код вроде написан правильно. Но переменная "accuracy", всегда равна нулю. Я дебаг делал(выводил ее отдельно). Всегда 0. Пытался проверить выводить через "%f" символ, ничего не помогает(.
Работать должно так. Например я выстрелил 9 раз. Из них попал 4 раза.
Мы делим 4/9 = 0.444444. И умножим на 100. Получится 44.4444, округлим. Будет просто 44%.
Все бы хорошо. Если бы в коде делило 4 на 9. (Отдельно проверял деление попаданий на выстрелы). Помогите ребят).
Код
#include <sourcemod>
new Bullets[MAXPLAYERS+1], Attacks[MAXPLAYERS+1];
public OnPluginStart()
{
HookEvent("round_end", endround, EventHookMode_Pre);
HookEvent("player_hurt", Hurt);
HookEvent("weapon_fire", Fire);
}
public endround(Handle:event, const String:name[], bool:dontBroadcast)
{
for(new i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && Bullets[i] > 0)
{
new Float:accuracy = Attacks[i]/Bullets[i] * 100.0;
PrintToChat(i, "Damaged: %i. Miss: %i. Total: %i (Accuracy: %i percent)", Attacks[i], Bullets[i]-Attacks[i], Bullets[i], RoundFloat(accuracy));
Bullets[i] = 0;
Attacks[i] = 0;
}
}
}
public Action:Hurt(Handle:event, const String:name[], bool:dontBroadcast)
{
Attacks[GetClientOfUserId(GetEventInt(event, "attacker"))]++;
}
public Action:Fire(Handle:event, const String:name[], bool:dontBroadcast)
{
Bullets[GetClientOfUserId(GetEventInt(event, "userid"))]++;
}