Неверное считывание урона.

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
11
Реакции
0
Помог
1 раз(а)
Ошибка
неверно показывает нанесенный урон, и полученный урон.
ОС
Linux
Amx Mod X
AMX Mod X 1.10.0.5435 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Aug 7 2021 08:32:30
Built from: https://github.com/alliedmodders/amxmodx/commit/36d5aa9
Build ID: 5435:36d5aa9
Core mode: JIT+ASM32
Билд
version
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.11.0.776-dev
Build date: 19:37:50 Apr 20 2022 (2930)
Build from: https://github.com/dreamstalker/rehlds/commit/3dc9f8c
ReGamedll
game version
ReGameDLL version: 5.21.0.546-dev
Build date: 15:32:48 Dec 28 2021
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/09a6c61
Версия Metamod
meta version
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
Список метамодулей
meta list
Currently loaded plugins:
description stat pend file vers src load unload
[ 1] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC5 ini ANY ANY
[ 2] Reunion RUN - reunion_mm_i386.so v0.1.92d ini Start Never
[ 3] AMX Mod X RUN - amxmodx_mm_i386.so v1.10.0.5435 ini Start ANY
[ 4] WHBlocker RUN - whblocker_mm_i386.so v1.5.697 ini Chlvl ANY
[ 5] Rechecker RUN - rechecker_mm_i386.so v2.7 ini Chlvl ANY
[ 6] Fun RUN - fun_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[ 7] Engine RUN - engine_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[ 8] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[ 9] GeoIP RUN - geoip_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[10] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[11] CSX RUN - csx_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[12] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386.so v5.21.0.252-dev pl3 ANY Never
[14] IPHub Client RUN - iphubclient_amxx_i386.so v1.0.1 pl3 ANY Never
[15] gRIP RUN - grip_amxx_i386.so v0.1.5 Beta pl3 ANY ANY
[16] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl3 ANY Never
[17] MySQL RUN - mysql_amxx_i386.so v1.9.0.5271 pl3 ANY ANY
17 plugins, 17 running
Список плагинов
amxx plugins
Currently loaded plugins:
id name version author url file status
[ 1] 0 Accuracy Fix 3.0 Numb unknown accuracy_fi running
[ 2] 1 Spray fix 1.0.0 Maxpain unknown spray_fix.a running
[ 3] 3 ReAimDetector API 0.2.2 ReHLDS Team unknown reaimdetect running
[ 4] 4 Lite Bans 2.2 neygomon unknown lite_bans_o running
[ 5] 5 Advanced Client Checke 0.3.6 Mistrick unknown cmdchecker. running
[ 6] 6 Bypass Guard 1.0.1 mx?! unknown bypass_guar running
[ 7] 7 [BG] Provider: IPHub-C 1.1 mx?! unknown bg_provider running
[ 8] 8 Family Sharing 0.2b Denzer unknown family_shar running
[ 9] 9 Unreal Cheater Cry 1.0.8 Karaulov unknown unreal_chea running
[ 10] 10 Check Button 2.1 Juice/Inj unknown checkbutton running
[ 11] 11 Movechecker Bhop Check 1.0 Garey unknown abunai_sgsc running
[ 12] 12 Cvars Checker 0.1 hedqi unknown minmodels_c running
[ 13] 13 [ReAPI] AdminFreeLook 1.0 ReHLDS Team unknown adminfreelo running
[ 14] 14 AdminListen 2.5 /dev/ urandom V unknown amx_adminli running
[ 15] 15 UserManager 1.0 CrAsH unknown UserManager running
[ 16] 16 Admin ESP 0.2 Kost & miRror unknown admin_esp_m running
[ 17] 17 Admin Commands 1.9.0.5263 AMXX Dev Team unknown admincmd.am running
[ 18] 18 Commands Menu 1.9.0.5263 AMXX Dev Team unknown cmdmenu.amx running
[ 19] 19 Players Menu 1.9.0.5263 AMXX Dev Team unknown plmenu.amxx running
[ 20] 20 Maps Menu 1.9.0.5263 AMXX Dev Team unknown mapsmenu.am running
[ 21] 21 Admin Chat 1.9.0.5263 AMXX Dev Team unknown adminchat.a running
[ 22] 22 Admin Votes 1.9.0.5263 AMXX Dev Team unknown adminvote.a running
[ 23] 23 Nextmap Chooser 1.9.0.5263 AMXX Dev Team unknown mapchooser. running
[ 24] 24 Rush Mode 1.1.14 Sho0ter unknown rush.amxx running
[ 25] 25 Block 'Fire in the hol 0.1 Safety1st unknown block_fire_ running
[ 26] 26 unknown unknown unknown unknown brushblock. running
[ 27] 27 Free Defuserkit 1.1. tuty unknown freedefuser running
[ 28] 28 Run boost 1.1 EFFx unknown RunBoost.am running
[ 29] 29 Voices Management 1.0.0 Maxpain unknown voices_mana running
[ 30] 30 Ad From Server 1.0 BadMandarin unknown ad_from_ser running
[ 31] 31 Damager 1.0 Prayer unknown damager.amx running
[ 32] 32 Admin Prefixes 3.0 m0skVi4a ;] unknown AdminPrefix running
[ 33] 33 block ip 0.2 legenda unknown amx_blockip running
[ 34] 34 Advanced Gag 1.9.0 neygomon unknown amx_gag.amx running
[ 35] 35 Restrict Weapons 1.8.2 Leo_[BH] unknown restmenu.am running
35 plugins, 35 running
Автор плагина
b0t.
Версия плагина
1.2
Исходный код
#include <amxmodx>
#include <reapi>

new const VERSION[] = "1.2";

#define MAX_DMG_100 //Максимальный нанёсённый урон по одному противнику = 100.
#define SHOT_A_GRENADE //Засчитывать урон от гранаты за попадание.

enum _:GAME_DATA {
SHOT,
DAMAGE
};

new p_iGameData[33][33][GAME_DATA],bool:p_bChat[33];

public plugin_init() {
register_plugin("GameInfo",VERSION,"b0t.");

RegisterHookChain(RG_CBasePlayer_TakeDamage,"RG_CBasePlayerTakeDamage_Post", .post = true);
RegisterHookChain(RG_RoundEnd,"RG_RoundEnd_Post", .post = true);

register_clcmd("say /damageinfo", "Info_Menu");
}

public RG_CBasePlayerTakeDamage_Post(const pVictim,const iInflictor,const pAttacker,const Float:fDamage,const iBitDamage) {
if(!is_user_connected(pVictim) || !is_user_connected(pAttacker))
return HC_CONTINUE;

if(get_member(pAttacker,m_iTeam) == get_member(pVictim,m_iTeam))
return HC_CONTINUE;

p_iGameData[pAttacker][pVictim][DAMAGE] += floatround(fDamage);

#if defined MAX_DMG_100
if(p_iGameData[pAttacker][pVictim][DAMAGE] > 100)
p_iGameData[pAttacker][pVictim][DAMAGE] = 100;
#endif

#if !defined SHOT_A_GRENADE
if(iBitDamage & DMG_GRENADE)
return HC_CONTINUE;
#endif

p_iGameData[pAttacker][pVictim][SHOT]++;

return HC_CONTINUE;
}

public RG_RoundEnd_Post() {
for(new iPlayer=1;iPlayer<=MaxClients;iPlayer++) {
if(!is_user_connected(iPlayer))
continue;

UTIL_ShowRoundInfo(iPlayer);
UTIL__ResetVars(iPlayer);
}
}

public Info_Menu(const pId) {
new i_Menu = menu_create("\yИнформер меню", "Damager_Handler");

menu_additem(i_Menu, "\wПоказывать информацию об уроне в консоли", "1", 0);
menu_additem(i_Menu, "\wПоказывать информацию об уроне в чате", "2", 0);

menu_setprop(i_Menu, MPROP_NEXTNAME, "Дальше");
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
menu_setprop(i_Menu, MPROP_EXITNAME, "Закрыть");

menu_display(pId, i_Menu, 0);
}

public Damager_Handler(const pId, const iMenu, const iItem) {
if(iItem == MENU_EXIT) {
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}

new s_Data[6], s_Name[64], i_Access, i_Callback;
menu_item_getinfo(iMenu, iItem, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback);

new iKey = str_to_num(s_Data);
switch(iKey) {
case 1: p_bChat[pId] = false;
case 2: p_bChat[pId] = true;
}

menu_destroy(iMenu);
return PLUGIN_HANDLED;
}

public client_putinserver(id) {
UTIL__ResetVars(id);
}

stock UTIL_ShowRoundInfo(const id) {
new szMessage[256];

for(new iPlayer=1;iPlayer<=MaxClients;iPlayer++) {
if(!is_user_connected(iPlayer) || iPlayer == id)
continue;

if(p_iGameData[id][iPlayer][DAMAGE] == 0 && p_iGameData[iPlayer][id][DAMAGE] == 0)
continue;

formatex(szMessage,charsmax(szMessage),
"<MM> (%i with %i) damage, (%i with %i) taken, %n (%iHP)",

p_iGameData[id][iPlayer][DAMAGE],p_iGameData[id][iPlayer][SHOT],
p_iGameData[iPlayer][id][DAMAGE],p_iGameData[iPlayer][id][SHOT],
iPlayer,!is_user_alive(iPlayer) ? 0 : floatround(Float:get_entvar(iPlayer,var_health))
);

switch(p_bChat[id]) {
case false: client_print(id,print_console,szMessage);
case true: client_print_color(id,print_team_default,szMessage);
}
}
}

stock UTIL__ResetVars(const id) {
for(new i=1;i<=MaxClients;i++) {
p_iGameData[id][i][SHOT] = 0;
p_iGameData[id][i][DAMAGE] = 0;
}
}
Всем ку, столкнулся с такой проблемой как, получаю от плагина неверный урон, может найдутся умельцы которые помогут.
upd: хочу обратиться к Garey, за помощью в такой проблеме.

вот проблема:
Снимок.PNG
 
В этой теме было размещено решение! Перейти к решению.
Последнее редактирование:
Сообщения
156
Реакции
15
Помог
4 раз(а)
Каким образом проверял? Сам лично падал, нанося себе урон при этом? Или каким образом?
 
Сообщения
11
Реакции
0
Помог
1 раз(а)
Benzogang_BabyTape, меня убивали.
прикрепленный скрин на нем, и есть баг)

(100 with 1) - как я мог нанести 100 хп, когда меня собственно убили)
(52 with 2) - урон от игрока который меня убил, странно почему 52 с 2, когда меня убили с 1 в голову)
 
Сообщения
156
Реакции
15
Помог
4 раз(а)
yUkk,
#define MAX_DMG_100 // Максимальный нанёсённый урон по одному противнику = 100.
Если тебе наносят больше 100 урона - урон будет установлен на 100.
Закомментируй этот кусок кода, и проверь урон еще раз.
 
Сообщения
156
Реакции
15
Помог
4 раз(а)
yUkk, ну в данный момент я вижу что он не закомментирован, перепроверь еще раз.
 
Сообщения
11
Реакции
0
Помог
1 раз(а)
Benzogang_BabyTape, я знаю, что он не закомментирован, я скинул код без всех поправок своих.
а так, я это делал уже.
 
Сообщения
156
Реакции
15
Помог
4 раз(а)
Пробуй.
Вроде все кулл.
C++:
#include <amxmodx>
#include <reapi>

new const VERSION[] = "1.2";

//#define MAX_DMG_100        //Максимальный нанёсённый урон по одному противнику = 100.
#define SHOT_A_GRENADE        //Засчитывать урон от гранаты за попадание.
//#define DEBUG_SECTION         // Дебаг секция (для разработчиков).

enum _:GAME_DATA {
    SHOT,
    DAMAGE
};

new p_iGameData[33][33][GAME_DATA],bool:p_bChat[33];

public plugin_init() {
    register_plugin("[ReAPI] Addon: GameInfo",VERSION,"b0t.");

    RegisterHookChain(RG_CBasePlayer_TakeDamage,"RG_CBasePlayerTakeDamage_Post", .post = true);
    RegisterHookChain(RG_RoundEnd,"RG_RoundEnd_Post", .post = true);

    register_clcmd("say /damageinfo", "CheckStatus");
}

public RG_CBasePlayerTakeDamage_Post(const pVictim,const iInflictor,const pAttacker,const Float:fDamage,const iBitDamage) {
    if(!is_user_connected(pVictim) || !is_user_connected(pAttacker))
        return HC_CONTINUE;
    
    if(get_member(pAttacker,m_iTeam) == get_member(pVictim,m_iTeam))
        return HC_CONTINUE;

    p_iGameData[pAttacker][pVictim][DAMAGE] += floatround(fDamage);
    
    #if defined MAX_DMG_100
        if(p_iGameData[pAttacker][pVictim][DAMAGE] > 100)
            p_iGameData[pAttacker][pVictim][DAMAGE] = 100;
    #endif

    #if !defined SHOT_A_GRENADE
        if(iBitDamage & DMG_GRENADE)
            return HC_CONTINUE;
    #endif
        
    p_iGameData[pAttacker][pVictim][SHOT]++;
    
    #if defined DEBUG_SECTION
        client_print_color(pAttacker,print_team_default,"DEBUG: Shoot Count By Attacker:^4 %i",p_iGameData[pAttacker][pVictim][SHOT]);
        client_print_color(pAttacker,print_team_default,"DEBUG: Shoot Count By Victim:^4 %i",p_iGameData[pVictim][pAttacker][SHOT]);
        
        client_print_color(pAttacker,print_team_default,"DEBUG: Give Damage By Attacker:^4 %i",p_iGameData[pAttacker][pVictim][DAMAGE]);
        client_print_color(pAttacker,print_team_default,"DEBUG: Give Damage By Victim:^4 %i",p_iGameData[pVictim][pAttacker][DAMAGE]);
    #endif
    
    return HC_CONTINUE;
}

public RG_RoundEnd_Post() {
    for(new iPlayer=1;iPlayer<=MaxClients;iPlayer++) {
        if(!is_user_connected(iPlayer))
            continue;
        
        RequestFrame("UTIL_ShowRoundInfo",iPlayer);
        set_task(2.0, "UTIL__ResetVars", iPlayer);
    }
}
public CheckStatus(id) {
    p_bChat[id] = !p_bChat[id];
    client_print_color(id,print_team_default,"^1[^4Инфо^1] Отображение в -^4 %s",p_bChat[id] ? "чат" : "консоль");
}

public client_putinserver(id) {
    UTIL__ResetVars(id);
}

public UTIL_ShowRoundInfo(const id) {
    new szMessage[256];

    for(new iPlayer=1;iPlayer<=MaxClients;iPlayer++) {
        if(!is_user_connected(iPlayer) || iPlayer == id)
            continue;
            
        if(p_iGameData[id][iPlayer][DAMAGE] == 0 && p_iGameData[iPlayer][id][DAMAGE] == 0)
            continue;
        
        formatex(szMessage,charsmax(szMessage),
            "<MM> (%i with %i) damage, (%i with %i) taken, %n (%iHP)",
            
            p_iGameData[id][iPlayer][DAMAGE],p_iGameData[id][iPlayer][SHOT],
            p_iGameData[iPlayer][id][DAMAGE],p_iGameData[iPlayer][id][SHOT],
            iPlayer,!is_user_alive(iPlayer) ? 0 : floatround(Float:get_entvar(iPlayer,var_health))
        );
        
        switch(p_bChat[id]) {
            case false:client_print(id,print_console,szMessage);
            case true:client_print_color(id,print_team_default,szMessage);
        }
    }
}

public UTIL__ResetVars(const id) {
    new i;
    
    for(i=1;i<=MaxClients;i++) {
        p_iGameData[id][i][SHOT] = 0;
        p_iGameData[id][i][DAMAGE] = 0;
    }
}
 
Статус
В этой теме нельзя размещать новые ответы.

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

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