Модернизировать Damager

Сообщения
41
Реакции
1
Всем привет, в общем у меня такая идея возникла, а почему бы не сделать плагин damager с таким условием->
Тех задание: Для обычных игроков он показывает только звездочки вместо цифр, а для level_h показывает цифры?
Нашел такой код
, не знаю сгодится или нет или проще написать новый? Сразу говорю я в скриптинге newbie
Код:
#include <amxmodx>

#define DMG_TYPE 1             // Тип урона. (1 = Цифры, 2 = Звёздочка)
#define FLAG_ACCESS (ADMIN_BAN|ADMIN_LEVEL_H)     // Выдавать только указанным флагам.

public plugin_init()
{
    register_plugin("Lite Damager", "0.1", "AcE")
    register_event("Damage", "eDamage", "b", "2!0", "3=0", "4!0")
}

public eDamage(pVictim)
{
    static pAttacker, SyncHudMsg
    pAttacker = get_user_attacker(pVictim)
    if (!is_user_connected(pAttacker)) return

    #if defined FLAG_ACCESS
    if (!(get_user_flags(pAttacker) & FLAG_ACCESS)) return
    #endif

    if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)
    #if DMG_TYPE == 1
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    #endif
    #if DMG_TYPE == 2
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
    #endif
}
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Сойдёт, в принципе не имеет значение где выводить, принцип один и тот же.
 
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Проверяем нужный флаг > если есть то значит выводим сообщение с показом урона > если нет то выводим сообщение с показом звездочки.
 
Сообщения
41
Реакции
1
Проверяем нужный флаг > если есть то значит выводим сообщение с показом урона > если нет то выводим сообщение с показом звездочки.
прочитал, открыл сма, посмотрел, ага в принципи ничего особо не понятно, кроме знакомых англ слов, вывод: мне далеко до вас господа палочники и закорючечники ? пойду лучше почитаю азы...
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
N3UR0, довольно всё просто, в данном куске кода, вам нужно найти, что отвечает за показ урона (ShowSyncHudMsg - hudmessage), далее перед выводом hudmessage проверяете наличие флага if(get_user_flags(id)) & ADMIN_BAN) далее, если игрок не имеет флага то выводим (else) второй hudmessage со звездочкой
Код:
public eDamage(pVictim)
{
    static pAttacker, SyncHudMsg
    pAttacker = get_user_attacker(pVictim)
    if (!is_user_connected(pAttacker)) return

    #if defined FLAG_ACCESS
    if (!(get_user_flags(pAttacker) & FLAG_ACCESS)) return
    #endif

    if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)
    #if DMG_TYPE == 1
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    #endif
    #if DMG_TYPE == 2
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
    #endif
}
8 Апр 2020
И удалите
Код:
#define DMG_TYPE 1             // Тип урона. (1 = Цифры, 2 = Звёздочка)
и все что связано с данным дефайном.
8 Апр 2020
Далее, еще у тебя имеется кусок кода
Код:
#if defined FLAG_ACCESS
    if (!(get_user_flags(pAttacker) & FLAG_ACCESS)) return
    #endif
Условие такого: если атакующий не имеет FLAG_ACCESS то функция damager show не будет работать
 
Последнее редактирование:
Сообщения
41
Реакции
1
N3UR0, довольно всё просто...
Благодарю, очень подробно расписали! буду разбираться!
то получится скину сюда на обозрение, как говорится курам на смех, кишки порвёте) ждите щас будет огонь)))
 
Сообщения
41
Реакции
1
Шли годы... скриптеров не щадил вирус...
Короче такая хохма получилась. просидел я час над этим достоянием человечества, обещал поржать? ловите :crazy:
Код:
#include <amxmodx>

#define FLAG_ACCESS (ADMIN_BAN|ADMIN_LEVEL_H)     // цифры только для указанных флагов


public plugin_init()
{
    register_plugin("damageshow_free_reapi", "0.1", "ebanavrot")
    register_event("Damage", "eDamage", "b", "2!0", "3=0", "4!0")
}

public eDamage(pVictim)
{
    if (!(get_user_flags(id)) & FLAG_ACCESS))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    static pAttacker, SyncHudMsg
    pAttacker = get_user_attacker(pVictim)

    if (!is_user_connected(pAttacker)) return
    #if defined FLAG_ACCESS
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
    #endif

    if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)
    #endif
    else
}
компиля на 14 -15 строки матюгался, не пойму что там нитак? там все идеально!
 
Последнее редактирование:
Сообщения
41
Реакции
1
один на поправку пошел, далеко пойду... очень далеко
Код:
#include <amxmodx>

#define FLAG_ACCESS (ADMIN_BAN|ADMIN_LEVEL_H)     // цифры только для указанных флагов


public plugin_init()
{
    register_plugin("damageshow_free_reapi", "0.1", "ebanavrot")
    register_event("Damage", "eDamage", "b", "2!0", "3=0", "4!0")
}

public eDamage(pVictim)
{
    static pAttacker, SyncHudMsg
    pAttacker = get_user_attacker(pVictim)
    if (!is_user_connected(pAttacker)) return
  
    #if defined FLAG_ACCESS
    if (!(get_user_flags(pAttacker) & FLAG_ACCESS))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))

    #if defined ADMIN_ALL
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
    #endif

    if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)
    #endif
}
 
Последнее редактирование:
Сообщения
486
Реакции
89
Помог
5 раз(а)
N3UR0, я же вам более четко расписал.. #if defines и #endif тут вообще не нужны
Код:
    #if defined FLAG_ACCESS
    if (!(get_user_flags(pAttacker) & FLAG_ACCESS))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))

    #if defined ADMIN_LEVEL_H
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
    #endif

    if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)
    #endif
9 Апр 2020
Перечитайте моё сообщение
9 Апр 2020
А я вас, если что поправлю
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Код:
#pragma semicolon 1

#include <amxmodx>
#include <reapi>

new g_iHudSync_Damage;

public plugin_init()
{
    register_plugin("Show Damage", "1.0.0", "fl0wer");

    RegisterHookChain(RG_CBasePlayer_TakeDamage, "@CBasePlayer_TakeDamage_Post", true);

    g_iHudSync_Damage = CreateHudSyncObj();
}

@CBasePlayer_TakeDamage_Post(id, inflictor, attacker, Float:damage, bitsDamageType)
{
    if (!is_user_connected(attacker))
        return;

    if (!rg_is_player_can_takedamage(id, attacker))
        return;

    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1);

    if (get_user_flags(attacker) & (ADMIN_BAN | ADMIN_LEVEL_H))
        ShowSyncHudMsg(attacker, g_iHudSync_Damage, "%.0f", damage);
    else
        ShowSyncHudMsg(attacker, g_iHudSync_Damage, "*");
}
Трушный урон, учет FFA и флага.
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
fl0wer, если урон он гранаты, иногда нулик будет показывать.
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
d3m37r4, когда иногда?
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
fl0wer, хизе, лень копаться. В теме с дамагером steelzzz было.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
fl0wer, тогда, когда урон будет нанесен < 1.0, покажет 0, довольно часто замечал
 
Сообщения
41
Реакции
1
WILL_BE, а если так?
Код:
// цифры только для указанных флагов
#include <amxmodx>

public plugin_init()
{
    register_plugin("damageshow_free_reapi", "0.1", "ebanavrot")
    register_event("Damage", "eDamage", "b", "2!0", "3=0", "4!0")
}

public eDamage(pVictim)
{
    static pAttacker, SyncHudMsg
    pAttacker = get_user_attacker(pVictim)
    if (!is_user_connected(pAttacker)) return
    
    if (!(get_user_flags(pAttacker) & (ADMIN_BAN|ADMIN_LEVEL_H) ))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    else
    if (!(get_user_flags(pAttacker) & ADMIN_ALL))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")

    if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)

}
компильнуло
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
Код:
    if (!(get_user_flags(pAttacker) & (ADMIN_BAN|ADMIN_LEVEL_H) ))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    else
    if (!(get_user_flags(pAttacker) & ADMIN_ALL))
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
После else не нужно if(...
!
- это отрицание флага, то есть сейчас у тебя написано, если игрок не имеет флагов (ADMIN_BAN|ADMIN_LEVEL_H), то будет показывать цифры.
9 Апр 2020
И что еще за if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
9 Апр 2020
Код:
    if(get_user_flags(pAttacker) & (ADMIN_BAN|ADMIN_LEVEL_H))
        ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    else
        ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")

    SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)
9 Апр 2020
Если же у вас операций в if(... более одной, то следует добавлять скобки - { }
Пример:
Код:
if(get_user_flags(pAttacker) & (ADMIN_BAN|ADMIN_LEVEL_H))
{
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    client_print(pAttacker, print_chat, "Вы Админ и имеете доступ к цифровому дамагеру!")
}
else
{
    ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
}
 
Сообщения
41
Реакции
1
это обязательно добавлять?
client_print(pAttacker, print_chat, "Вы Админ и имеете доступ к цифровому дамагеру!")
на данном этапе компильнул это, не проверял, что скажешь?
Код:
#include <amxmodx>

public plugin_init()
{
    register_plugin("damageshow_free_reapi_rehlds", "0.1", "nogymal_cgelol")
    register_event("Damage", "eDamage", "b", "2!0", "3=0", "4!0")
}

public eDamage(pVictim)
{
    static pAttacker, SyncHudMsg
    pAttacker = get_user_attacker(pVictim)
    if (is_user_connected(pAttacker)) return
  
    if(get_user_flags(pAttacker) & (ADMIN_BAN|ADMIN_LEVEL_H))
    {
        ShowSyncHudMsg(pAttacker, SyncHudMsg, "%i^n", read_data(2))
    }
    else
    {
        ShowSyncHudMsg(pAttacker, SyncHudMsg, "*^n")
    }
    SyncHudMsg = CreateHudSyncObj()
    set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 1.5, 0.02, 0.02, -1)

}
в конце еще чтото нужно добавить? return?
 

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

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