#2) Учимся делать урон на экране как взрослые ребята (??-HF)

Ну и если, внезапно, появилось желание поиметь себя в зад (как у меня, неожиданно!), то можно даже отделять обычные удары от свер-урона (скилы, криты):

Посмотреть вложение 85299

C#:
class OnScreenMessageDmgWnd extends UICommonAPI;
    const MAX_DAMAGE_MESSAGE = 9;

    var TextBoxHandle DamageText[MAX_DAMAGE_MESSAGE];
    var int i;
    var Color ColorNormalDam;
    var Color ColorOverDam;
 
    var int LastDam;
    var Color LastColor;


    function OnLoad() {

        RegisterEvent(EV_SystemMessage);

        for (i = 0; i < MAX_DAMAGE_MESSAGE; i++) {
            DamageText[i] = TextBoxHandle(GetHandle("DamageText" $ i));
            DamageText[i].SetText("");
        }
    }

    function OnEvent(int Event_ID, string a_param) {
        if (Event_ID == EV_SystemMessage) {
            HandleSystemMessage(a_param);
        }
    }

    function HandleSystemMessage(string a_Param) {
        local int SystemMsgIndex;

        ParseInt(a_Param, "Index", SystemMsgIndex);

        switch (SystemMsgIndex) {
            case 35:
            case 1015:
                DamageUI(a_param);
                break;
        }
    }

    function DamageUI(string a_param) {
        local Color TextColor;
        local String DamageToPlayer;
        local int CurDam;
        local float ScatterUpper;
        local float ScatterLower;
     
        ParseString(a_Param, "Param1", DamageToPlayer);
        CurDam = int(DamageToPlayer);
        ScatterUpper = LastDam * 1.2;
        ScatterLower = LastDam * 0.8;
     
        if(LastDam>0) {
            // Damage wasnt change
            if (CurDam >= ScatterLower && CurDam <= ScatterUpper) {
                TextColor = LastColor;
            } else {
                if (CurDam >= (ScatterLower * 2)) {
                    TextColor = ColorOverDam;
                } else {
                    TextColor = ColorNormalDam;
                }
            }        
        } else {
            TextColor = ColorNormalDam;
        }
     
        LastDam = CurDam;
        LastColor = TextColor;
     
        for (i = 0; i < MAX_DAMAGE_MESSAGE; i++) {
            if (DamageText[i].GetText() == "" || DamageText[i].GetAlpha() <= 0) {
                DamageText[i].SetText("");
                DamageText[i].SetAlpha(255);
                if(TextColor == ColorOverDam) {
                    DamageText[i].SetText(DamageToPlayer $ "!");
                } else {
                    DamageText[i].SetText(DamageToPlayer);
                }
                DamageText[i].SetAnchor("OnScreenMessageDmgWnd", "BottomCenter", "BottomCenter", -120 + Rand(150), Rand(100));
                DamageText[i].ClearAnchor();
                DamageText[i].Move(-100, -1500, 9f);
                DamageText[i].SetTextColor(TextColor);
                DamageText[i].SetAlpha(0, 48.6f);
                break;
            }
        }
    }

    defaultproperties {
        ColorNormalDam=(B=224,G=255,R=255,A=255)
        ColorOverDam=(B=1,G=215,R=255,A=255)
    }
Продолжу тему о имении себя в зад :LOL:
1772628897214.webp
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Последнее редактирование:
Желание нарастало, и нарастало:ROFLMAO:
1772633476337.webp 1772633495784.webp
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Ребята, подскажите где копать, если сам урон нужно вывести именно у таргета которого атакуешь. Чтобы показывал не относительно меня, а относительно моба. Клиент интерлюд
 

Вложения

  • Новый точечный рисунок.webp
    Новый точечный рисунок.webp
    286,3 КБ · Просмотры: 13
Ребята, подскажите где копать, если сам урон нужно вывести именно у таргета которого атакуешь. Чтобы показывал не относительно меня, а относительно моба. Клиент интерлюд
крепить на Pawn цели
 
Назад
Сверху Снизу