Некорректный подсчет урона ассиста

Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
Основная информация

Проблема: Некорректный подсчет урона ассиста

Ошибка:
Дают ассиста за нанесение меньшего урона, чем убийца
Дополнительная информация

Amx Mod X: ReAMXX

Билд:
Код:
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.3.0.605-dev
Build date: 22:55:56 Nov 8 2017 (1306)
Build from: https://github.com/dreamstalker/rehlds/commit/dab2663


ReGamedll:
Код:
ReGameDLL version: 5.3.0.269-dev
Build date: 22:20:07 Nov 12 2017
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/411761c


Список модулей:
PHP:
Currently loaded modules:
name version author status
[ 1] MySQL 1.8.3-Re AMX Mod X Dev Team running
[ 2] dummy_csx 1.0 AGHL.RU Dev Team running
[ 3] ReAimDetector 0.2.0 ReHLDS Team running
[ 4] FakeMeta 1.8.3-Re AMX Mod X Dev Team running
[ 5] Ham Sandwich 1.8.3-Re AMX Mod X Dev Team running
[ 6] ReAPI 5.2.0.139- Asmodai & s1lent running
[ 7] Engine 1.8.3-Re AMX Mod X Dev Team running
[ 8] CStrike 1.8.3-Re AMX Mod X Dev Team running
[ 9] nVault 1.8.3-Re AMX Mod X Dev Team running
[10] Sockets 1.8.3-Re HLSW Dev Team running
[11] Sockets2 1.8.1.3746 HLSW Dev Team running
11 modules, 11 correct


Список плагинов:
HTML:
[ReAPI] KiLL Assist     poka_4to_b  PRoSToTeM@        Kill_assist_rea  running


Список метамодулей:
PHP:
Currently loaded plugins:
description stat pend file vers src load unload
[ 1] Reunion RUN - reunion_mm_i386.so v0.1.75 ini Start Never
[ 2] WHBlocker RUN - whblocker_mm_i386.so v1.5.692 ini Chlvl ANY
[ 3] AMX Mod X RUN - amxmodx_mm_i386.so v1.8.3-Re ini Start ANY
[ 4] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC3 ini ANY ANY
[ 5] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 6] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 7] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 8] ReSRDetector RUN - resrdetector_mm_i386.so v0.1.0 ini Chlvl ANY
[ 9] MySQL RUN - mysql_amxx_i386.so v1.8.3-Re pl3 ANY ANY
[10] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.0 pl3 ANY Never
[11] FakeMeta RUN - fakemeta_amxx_i386.so v1.8.3-Re pl3 ANY ANY
[12] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.8.3-Re pl3 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386.so v5.2.0.139-dev pl3 ANY Never
[14] Engine RUN - engine_amxx_i386.so v1.8.3-Re pl3 ANY ANY
[15] CStrike RUN - cstrike_amxx_i386.so v1.8.3-Re pl3 ANY ANY
15 plugins, 15 running


Исходник:
Код:
#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define MONEY 300 // Выдавать $$
#define FRAG // +1 фраг
//#define SUPPORT_CSSTATS_MYSQL // Защитать фраг в статистику плагина от скальпеля
#define SUPPORT_AES_EXP // Выдавать опыт

#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32;
#endif
#if !defined MAX_NAME_SIZE
const MAX_NAME_SIZE = 32;
#endif
#if defined SUPPORT_CSSTATS_MYSQL
native csstats_set_user_value(index, ident, value);
native csstats_get_user_value(index, ident);
#endif
#if defined SUPPORT_AES_EXP
native aes_add_player_exp(id,exp,override = 0);
#endif

// who's whom
new Float:g_playerDamage[MAX_PLAYERS + 1][MAX_PLAYERS + 1];
new HookChain:g_deathNoticePostHook;

public plugin_init() {
register_plugin("[ReAPI] KiLL Assist", "poka_4to_beta", "PRoSToTeM@"); // edited by neugomon

// if(!is_regamedll() || !is_rehlds())
// set_fail_state("Needs CS ReGameDLL and ReHLDS");

RegisterHookChain(RG_CBasePlayer_Spawn, "OnPlayerSpawn_Post", true);
RegisterHookChain(RG_CBasePlayer_TakeDamage, "OnPlayerTakeDamage_Post", true);
RegisterHookChain(RG_CSGameRules_DeathNotice, "OnDeathNotice", false);
DisableHookChain((g_deathNoticePostHook = RegisterHookChain(RG_CSGameRules_DeathNotice, "OnDeathNotice_Post", true)));
}

public client_connect(playerEntIndex)
arrayset(_:g_playerDamage[playerEntIndex], 0, sizeof(g_playerDamage[]));

public OnPlayerSpawn_Post(playerEntIndex)
for(new i = 1; i <= MAX_PLAYERS; i++)
g_playerDamage[playerEntIndex] = 0.0;

public OnPlayerTakeDamage_Post(playerEntIndex, inflictorEntIndex, attackerEntIndex, Float:damage, damageType)
{
if(
attackerEntIndex != playerEntIndex &&
is_user_connected(attackerEntIndex) &&
rg_is_player_can_takedamage(attackerEntIndex, playerEntIndex)
) g_playerDamage[attackerEntIndex][playerEntIndex] += damage;
}

public OnDeathNotice(victimEntIndex, killerEntIndex, inflictorEntIndex)
{
if(
killerEntIndex != victimEntIndex &&
is_user_connected(killerEntIndex) &&
rg_is_player_can_takedamage(killerEntIndex, victimEntIndex)
)
{
new bestAttackerEntIndex = 0;
for (new i = 1, Float:maxDamage; i <= MAX_PLAYERS; i++) {
if (g_playerDamage[victimEntIndex] > maxDamage) {
maxDamage = g_playerDamage[victimEntIndex];
bestAttackerEntIndex = i;
}
}
// Assistant must have more damage than killer
if(
bestAttackerEntIndex != killerEntIndex &&
is_user_connected(bestAttackerEntIndex) &&
rg_is_player_can_takedamage(bestAttackerEntIndex, victimEntIndex) &&
get_member(bestAttackerEntIndex, m_iTeam) != TEAM_SPECTATOR
)
{
new name1[MAX_NAME_SIZE], name2[MAX_NAME_SIZE], name3[MAX_NAME_SIZE], name[MAX_NAME_SIZE];
get_entvar(killerEntIndex, var_netname, name1, charsmax(name1));
get_entvar(bestAttackerEntIndex, var_netname, name2, charsmax(name2));
get_entvar(victimEntIndex, var_netname, name3, charsmax(name3));
#if defined MONEY
rg_add_account(bestAttackerEntIndex, MONEY);
#endif
#if defined FRAG
set_entvar(bestAttackerEntIndex, var_frags, Float:get_entvar(bestAttackerEntIndex, var_frags) + 1.0);
#endif
#if defined SUPPORT_CSSTATS_MYSQL
csstats_set_user_value(bestAttackerEntIndex, 0, csstats_get_user_value(bestAttackerEntIndex, 0) + 1);
#endif
#if defined SUPPORT_AES_EXP
aes_add_player_exp(bestAttackerEntIndex, 1);
#endif
// TODO: cut nicknames if big length (> 14) and add ...
// TODO: UTF-8 cut correctly
if(strlen(name1) + strlen(name2) > 28) {
formatex(name, charsmax(name), "%.14s + %.14s", name1, name2);
} else {
formatex(name, charsmax(name), "%s + %s", name1, name2);
}

client_print_color(bestAttackerEntIndex, 0, "^1* Вы помогли ^3%s ^1убить ^3%s ^1.Ваш бонус -^4 1 фраг ^1+^4 1 опыт ^1+ ^4%d$", name1, name3, MONEY);

message_begin(MSG_ALL, SVC_UPDATEUSERINFO);
write_byte(killerEntIndex - 1);
write_long(get_user_userid(killerEntIndex));
write_char('\');
write_char('n');
write_char('a');
write_char('m');
write_char('e');
write_char('\');
write_string(name);
for(new i = 0; i < 16; i++)
write_byte(0);
message_end();

EnableHookChain(g_deathNoticePostHook);
}
}
}

public OnDeathNotice_Post(victimEntIndex, killerEntIndex, inflictorEntIndex)
{
rh_update_user_info(killerEntIndex);
DisableHookChain(g_deathNoticePostHook);
}


Комментарий:
Дают ассиста, даже при нанесении 11хп урона.
 

Вложения

Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
Pokemoshka, не понял, в чем ошибка?
убийца - это тот, кто нанес больше урона, ассист - это то, кто сделал меньше урона и не стал убийцей.
 
Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
Tranquillity, Ассист - тот кто нанес урона более 50%. Убийца - тот кто добил противника.А тут получается так, что даже нанеся 11хп урона ты все равно становишься ассистом
 
Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
Pokemoshka, нет. Assist - помогать, содействовать.
У цели 100хп. Два игрока нанесли ей урон, который привел к смерти.
Игрок А - нанес 51 урона и становится убийцей. Игрок В - нанес 49 урона и становится «помощником» убийцы.

Даже если игрок В нанесет 1 урон и дальше жертва умрет от суицида, игрок В станет ассистом.
 
Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
Tranquillity, Помощник по убийству присуждается игроку, который наносит значительный урон вражескому игроку до того, как другой член команды убивает атакующего. Чтобы получить помощника по убийству, «игрок 1» должен нанести не менее 50 урона или больше урона, тогда противник будет убит «игроком 2». Если все сделано правильно, в графе убийства будет отображаться «игрок 2 + игрок 1 <значок игрока оружия 2 игрока> враг»
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
В данном плагине ассистом становится игрок, нанесший максимальный урон, более чем нанес убийца. Не забывайте что урон может получить жертва от n игроков
 
Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
Sonyx, Проверял при игре 2 х 1. Я наносил 11хп урона , убийца убил, но мне дали ассиста (поэтому и задался этим вопросом)
 
Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
Кстати тема до сих пор актуальна))) Почему за нанесение любого урона противнику (не убивая его) дают ассиста?
 

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

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