Иконка ресурса

[ZP 4.3] Addon: Anti-Armor For First Zombie 2023-01-22

Нет прав для скачивания
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
ImmortalAmxx, Делай обнову) хватит быть занятым
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
C++:
#include <AmxModX>
#include <ZombiePlague>
#include <ReApi>

const ZombieCount = 2;    // Количество зомби, при котором функция не будут работать.

public plugin_init() {

    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
}

public CBasePlayer_TakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, bitsDamageType) {
    if(zp_get_zombie_count() >= ZombieCount)
    // || zp_get_user_last_human(iVictim)
    //а последнего человека нельзя с одного удара заразить?    в описании это не указано
        return;

    if(zp_get_user_first_zombie(iAttacker)) {
        rg_set_user_armor(iVictim, 0, ARMOR_NONE);
        //ExecuteHamB(Ham_TakeDamage, iVictim, iInflictor, iAttacker, flDamage, bitsDamageType);
        //если поствить плагин выше плагина мода, то в мод придёт значение pev_armorvalue = ARMOR_NONE, и будет заражение сразу,
        //т.к. return HAM_SUPERCEDE там будет только при pev_armorvalue > 0
    }
}
Разве не так?
 
Сообщения
889
Реакции
149
Помог
25 раз(а)
//ExecuteHamB(Ham_TakeDamage, iVictim, iInflictor, iAttacker, flDamage, bitsDamageType); //если поствить плагин выше плагина мода, то в мод придёт значение pev_armorvalue = ARMOR_NONE, и будет заражение сразу, //т.к. return HAM_SUPERCEDE там будет только при pev_armorvalue > 0
Не знал про такое. Спасибо за наводку.
 
Сообщения
889
Реакции
149
Помог
25 раз(а)
zhorzh78, проверил, не хочет работать без хамовского тейк демеджа.

Вобщем, похоже хамовский тейк демедж через ExecuteHam все таки нужен, иначе просто не видит, что зомби наносит урон. Мб только у меня такой баг. Хз. Урон по факту проходит только по последнему игрока, то есть, когда отнимается хп. По этому и нужен хам.
 
Последнее редактирование:
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
ImmortalAmxx, в pre отлавливал? Потому что в чистом 4.3 в pre выставляются все значения для урона
 
Сообщения
182
Реакции
4
Что-то часто появлялась ошибка:
C++:
L 03/28/2023 - 05:52:31: [AMXX] Displaying debug trace (plugin "zp43_first_zombie_antiarmor.amxx", version "1.4")
L 03/28/2023 - 05:52:31: [AMXX] Run time error 3: stack error
Попробовал сделать так:
C++:
#include <AmxModX>
#include <ZombiePlague>
#include <HamSandWich>
#include <ReApi>

const ZombieCount = 2; // Количество зомби, при котором функция не будет работать.
new bool:g_IsDamageHooked = false;

public plugin_init() {
    register_plugin("[ZPA]: Anti-Armor", "1.4", "ImmortalAmxx");
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
}

public CBasePlayer_TakeDamage(iVictim, iInflictor, iAttacker, float:flDamage, bitsDamageType) {

    if (!is_user_connected(iAttacker) || g_IsDamageHooked || !is_user_connected(iVictim) || zp_get_zombie_count() >= ZombieCount || zp_get_user_last_human(iVictim))
        return;
       
    if (zp_get_user_first_zombie(iAttacker)) {
        g_IsDamageHooked = true;
        rg_set_user_armor(iVictim, 0, ARMOR_NONE);
        ExecuteHamB(Ham_TakeDamage, iVictim, iInflictor, iAttacker, flDamage, bitsDamageType);
        g_IsDamageHooked = false;
    }
}
Тестируем уже более 4-х дней, полёт нормальный.
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
SlovePRO, эта ошибка связана с памятью, а не достаточно этого?

Код:
--RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
++RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage");

--ExecuteHamB(Ham_TakeDamage, iVictim, iInflictor, iAttacker, flDamage, bitsDamageType);
 
Последнее редактирование:
Сообщения
12
Реакции
2
Great hook but i have errors

L 2024-12-08 - 18:39:01: Początek sesji błędu.
L 2024-12-08 - 18:39:01: Informacje (mapa „de_dust2”) (plik „addons/amxmodx/logs/error_20240812.log”)
L 2024-12-08 - 18:39:01: [ReAPI] RegisterHookChain: funkcja (CBasePlayer_TakeDamage) jest niedostępna, wymagany jest ReGameDLL.
L 2024-12-08 - 18:39:01: [AMXX] Wyświetlanie śladu debugowania (wtyczka 'zp43_first_zombie_antiarmor.amxx', wersja '1.4')
L 2024-12-08 - 18:39:01: [AMXX] Błąd wykonania 10: błąd natywny (natywny „RegisterHookChain”)
L 2024-12-08 - 18:39:01: [AMXX] [0] zp43_first_zombie_antiarmor.sma::plugin_init (linia 11)


Linia 11:
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
Do u have maybe fix?
 
Последнее редактирование:

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

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