Русское сообщество по скриптингу

Не выводится информация

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Не выводится информация

Сообщение komykyda3a4em » 15 окт 2020, 20:16

Нашел плагин на просторах интернета который должен атакеру человеку/зомби выводить информацию о виктиме(хп и броня). Плагин сам информацию по непонятной мне причине не выводит. Все раскидано все вписано все модули от amxmodx последней версии. Прошу помочь разобраться в проблеме заранее благодарю за любую оказанную помощь :thumbs_up

Код: Выделить всё
#include <amxmodx>
#include <hamsandwich>
#include <zombieplague>

public plugin_init()
{
    
register_plugin("[ZP] Addon: Show Health, Armor For Zombie""0.1""WPMG Team")
    
RegisterHam(Ham_TakeDamage"player""Player_TakeDamage"1)
}

public 
Player_TakeDamage(victiminflictorattackerFloat:damage)
{
    if(!
is_user_alive(attacker) || !zp_get_user_zombie(attacker))
        return;

    new 
armor get_user_armor(victim);

    if(
armor)
        
client_print(attackerprint_center"Health: %d^tArmor: %d"get_user_health(victim), armor)
    else
        
client_print(attackerprint_center"Health: %d"get_user_health(victim))
Аватара пользователя
komykyda3a4em
 
Сообщения: 2
Зарегистрирован: 06 окт 2020, 13:23
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Не выводится информация

Сообщение komykydaza4em » 17 окт 2020, 16:38

АП в связи с актуальностью проблемы :-)
Аватара пользователя
komykydaza4em
 
Сообщения: 3
Зарегистрирован: 06 окт 2020, 12:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Не выводится информация

Сообщение flymic24 » 17 окт 2020, 17:20

Код: Выделить всё
#include <amxmodx>
#include <reapi>

public plugin_init() {
    
RegisterHookChain(RG_CBasePlayer_TakeDamage"CBasePlayer_TakeDamage", .post true);
}

public 
CBasePlayer_TakeDamage(const pevVictimpevInflictorpevAttackerFloat:flDamagebitsDamageType)    {
    if(!
is_user_connected(pevAttacker) || !is_user_connected(pevVictim))
        return 
HC_CONTINUE;
    
    new 
Float:fArmor;    get_entvar(pevVictimvar_armorvaluefArmor);
    new 
Float:fHealth;    get_entvar(pevVictimvar_healthfHealth);
    
    if (
fHealth <= 0.0)
        return 
HC_CONTINUE;
    
    if(
fArmor 0.0)
        
client_print(pevAttackerprint_center"Health: %0.0f^tArmor: %0.0f"fHealthfArmor);
    else
        
client_print(pevAttackerprint_center"Health: %0.0f"fHealth);
        
    return 
HC_CONTINUE;
}
 
Аватара пользователя
flymic24
 
Сообщения: 197
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 69 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Не выводится информация

Сообщение komykydaza4em » 17 окт 2020, 18:04

flymic24 писал(а):
Код: Выделить всё
#include <amxmodx>
#include <reapi>

public plugin_init() {
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post = true);
}

public CBasePlayer_TakeDamage(const pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)    {
    if(!is_user_connected(pevAttacker) || !is_user_connected(pevVictim))
        return HC_CONTINUE;
    
    new Float
:fArmor;    get_entvar(pevVictim, var_armorvalue, fArmor);
    new Float:fHealth;    get_entvar(pevVictim, var_health, fHealth);
    
    if 
(fHealth <= 0.0)
        return HC_CONTINUE;
    
    if
(fArmor > 0.0)
        client_print(pevAttacker, print_center, "Health: %0.0f^tArmor: %0.0f", fHealth, fArmor);
    else
        client_print
(pevAttacker, print_center, "Health: %0.0f", fHealth);
        
    return HC_CONTINUE
;
}


Спасибо дома протестирую только вопрос почему через другой модуль а не через хам?
Аватара пользователя
komykydaza4em
 
Сообщения: 3
Зарегистрирован: 06 окт 2020, 12:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Не выводится информация

Сообщение komykyda3a4em » 17 окт 2020, 23:15

flymic24 писал(а):
Код: Выделить всё
#include <amxmodx>
#include <reapi>

public plugin_init() {
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post = true);
}

public CBasePlayer_TakeDamage(const pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)    {
    if(!is_user_connected(pevAttacker) || !is_user_connected(pevVictim))
        return HC_CONTINUE;
    
    new Float
:fArmor;    get_entvar(pevVictim, var_armorvalue, fArmor);
    new Float:fHealth;    get_entvar(pevVictim, var_health, fHealth);
    
    if 
(fHealth <= 0.0)
        return HC_CONTINUE;
    
    if
(fArmor > 0.0)
        client_print(pevAttacker, print_center, "Health: %0.0f^tArmor: %0.0f", fHealth, fArmor);
    else
        client_print
(pevAttacker, print_center, "Health: %0.0f", fHealth);
        
    return HC_CONTINUE
;
}
 


Извиняюсь за дабл пост. Установил reapi последней версии но при компиляции выдает ошибки и игра не запускается.


Updated. Скачал reapi из топика по ссылке Вы должны зарегистрироваться, чтобы видеть ссылки. плагин скомпилировался без ошибок при тестировании плагина при попытке запуска игры происходит вылет
Аватара пользователя
komykyda3a4em
 
Сообщения: 2
Зарегистрирован: 06 окт 2020, 13:23
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Не выводится информация

Сообщение flymic24 » 18 окт 2020, 10:12

Полный плагин в студию!
Название функций RG_CBasePlayerWeapon_DefaultDeploy
RG_CBasePlayerWeapon_DefaultReload
RG_CBasePlayerWeapon_DefaultShotgunReload
Превышают длину более 31 символа!
Аватара пользователя
flymic24
 
Сообщения: 197
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 69 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Не выводится информация

Сообщение fl0wer » 18 окт 2020, 12:11

flymic24, с какой целью на реапи переписал, сломал логику для зомби и выводишь во флоатах?
Аватара пользователя
fl0wer
 
Сообщения: 1672
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 239 раз.
Поблагодарили: 501 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: Не выводится информация

Сообщение flymic24 » 18 окт 2020, 15:04

fl0wer, Идём в ногу со временем (Более актуальные amx 1.9.0, ReHlds, ReApi) не принципиально в прочем заменой парой функций перейти на Ham обратно

Цитирую ТЗ: плагин ... должен атакеру человеку/зомби выводить информацию о виктиме(хп и броня)
Исходя из ТЗ информация должна выводится как при атаке человека так и при атаке зомби!

Не стал извращаться с округлением float в int, поскольку получаемая переменная float, так и вывел!

Поправь есть в чем ошибся ... всегда рад обоснованной критике!
Аватара пользователя
flymic24
 
Сообщения: 197
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 69 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Не выводится информация

Сообщение fl0wer » 18 окт 2020, 15:57

Ааа, а я думал мы в ванг играем почему у ТС именно этот плагин не работает, хоть он и рабочий.

flymic24 писал(а):Не стал извращаться с округлением float в int, поскольку получаемая переменная float, так и вывел!

Некрасиво в игре смотрится.

Добавлено спустя 3 минуты 58 секунд:
flymic24 писал(а):Поправь есть в чем ошибся ... всегда рад обоснованной критике!

Виктима незачем чекать на коннект, так он всегда валиден.
Не хватает проверки, что аттакер не виктим.
И при меньше 0.0 хп, лучше выводить 0 хп, а не "последние положителное хп", более логично.
Аватара пользователя
fl0wer
 
Сообщения: 1672
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 239 раз.
Поблагодарили: 501 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: Не выводится информация

Сообщение komykydaza4em » 18 окт 2020, 19:19

flymic24 писал(а):Полный плагин в студию!
Название функций RG_CBasePlayerWeapon_DefaultDeploy
RG_CBasePlayerWeapon_DefaultReload
RG_CBasePlayerWeapon_DefaultShotgunReload
Превышают длину более 31 символа!

В общем поставил фикс на амхмодх 1.8.2 все заработало правда компилит так же с ошибками но у зомби если бьешь по виктиму даже если у него есть броня инфа не отображается но вот если бить ласт хумана то инфа отображается а хотелось конечно чтобы в обоих случаях отображалось
Аватара пользователя
komykydaza4em
 
Сообщения: 3
Зарегистрирован: 06 окт 2020, 12:48
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5