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


я правильно понял? этот вывод урона никак не привязан к местоположению таргета
если так то можно ли как то привязать? на сколько я знаю можно изменить размер текста в зависимости от расстояние между таргетом и игроком, но как сделать что бы урон вылетал именно над таргетом пока не могу найти
 
Я так понимаю для интерлюдии это не актуально?) В общем то все получилось скомпилировать, но еффекта нет, подебажить бы...)
 
Я так понимаю для интерлюдии это не актуально?) В общем то все получилось скомпилировать, но еффекта нет, подебажить бы...)
замени в свитчах значения на те, что прилетают в интерлюдии и всё.
как узнать? открой файл systemmsg.dat и вместо
case 2261: //player msg
case 2281: //summoner msg
будут другие числа
 
замени в свитчах значения на те, что прилетают в интерлюдии и всё.
как узнать? открой файл systemmsg.dat и вместо
case 2261: //player msg
case 2281: //summoner msg
будут другие числа
Большое спасибо, чекну))
 
замени в свитчах значения на те, что прилетают в интерлюдии и всё.
как узнать? открой файл systemmsg.dat и вместо
case 2261: //player msg
case 2281: //summoner msg
будут другие числа
Поменял Id-шки результату 0 к сожалению, я думал что не так как то вывожу через интерфейc, но там просто по сути указываешь скрипт и название самого окна. ну и 28 текст боксов, не знаю проверял? что меня смущало то что не находит метода GetTextBoxHandle, и компиляция падает ошибка OnScreenDmgMsgWnd.uc(14) : Error, Bad or missing expression in '='
Проверяю скомпелировался ли файл нормально ли, есть класс, да действительно класс есть с функциями все как полагается. Ну очень странно.
 
Все верно метод GetTextBoxHandle идет только с HF. Но можно заменить его. Прикол в том что все скомпелировалось ошибок нет клиент запускается, но все равно не выводится ничего на экран.. :( //debug тоже ничего не показывает при компеляции :(
 
Все верно метод GetTextBoxHandle идет только с HF. Но можно заменить его. Прикол в том что все скомпелировалось ошибок нет клиент запускается, но все равно не выводится ничего на экран.. :( //debug тоже ничего не показывает при компеляции :(
GetTextBoxHandle идет только с HF. Да, всё верно. я и забыл

Скинь код uc скрипта и xdat ну или код скрипта для xdat editor-а (мне дико лень тыкать все эти 29 элементы)
 
У тебя не правильно парсит параметры попробуй сделать так.
C++:
ParseString(a_Param, "Param1", DamageToPlayer);
 
Для Interlude:

Урон по вам думаю сами прикрутите.

1721286300629.webp
C++:
/******************************************
Дата 18.07.2024 11:47

  Разработчик: BITHACK

  Copyright (c) Ваша компания

 Описание скрипта:....

*******************************************/
class OnScreenDmgMsgWnd extends UICommonAPI;
const MAX_DAMAGE_MESSAGE = 28;

 var TextBoxHandle DamageText[MAX_DAMAGE_MESSAGE];
 var int i;
 var Color WhiteColor;


function OnLoad() {

    RegisterEvent(EV_SystemMessage);

 for (i = 0; i < MAX_DAMAGE_MESSAGE; i++) {
    DamageText[i] = TextBoxHandle(GetHandle("OnScreenDmgMsgWnd.D-" $ 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(WhiteColor, a_param);
 break;
    }
    }

function DamageUI(Color DColor, string a_param) {
 local String DamageToPlayer;

 for (i = 0; i < MAX_DAMAGE_MESSAGE; i++) {
 if (DamageText[i].GetText() == "" || DamageText[i].GetAlpha() <= 0) {
    DamageText[i].SetText("");
    DamageText[i].SetAlpha(255);
    ParseString(a_Param, "Param1", DamageToPlayer);
    DamageText[i].SetText(DamageToPlayer);
    DamageText[i].SetAnchor("OnScreenDmgMsgWnd", "BottomCenter", "BottomCenter", -120 + Rand(150), Rand(100));
    DamageText[i].ClearAnchor();
    DamageText[i].Move(-100, -1500, 8f);
    DamageText[i].SetTextColor(DColor);
    DamageText[i].SetAlpha(0, 4f);
 break;
    }
    }
    }

    defaultproperties {
    WhiteColor=(B=255,G=255,R=255,A=255)
    }
 

Вложения

    finfan

    Баллов: 17
    У меня тоже появилось желания поиметь себя в зад и попробовать отделить криты от обычных ударов
Для Interlude:

Урон по вам думаю сами прикрутите.

Посмотреть вложение 75551
C++:
/******************************************
Дата 18.07.2024 11:47

  Разработчик: BITHACK

  Copyright (c) Ваша компания

 Описание скрипта:....

*******************************************/
class OnScreenDmgMsgWnd extends UICommonAPI;
const MAX_DAMAGE_MESSAGE = 28;

 var TextBoxHandle DamageText[MAX_DAMAGE_MESSAGE];
 var int i;
 var Color WhiteColor;


function OnLoad() {

    RegisterEvent(EV_SystemMessage);

 for (i = 0; i < MAX_DAMAGE_MESSAGE; i++) {
    DamageText[i] = TextBoxHandle(GetHandle("OnScreenDmgMsgWnd.D-" $ 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(WhiteColor, a_param);
 break;
    }
    }

function DamageUI(Color DColor, string a_param) {
 local String DamageToPlayer;

 for (i = 0; i < MAX_DAMAGE_MESSAGE; i++) {
 if (DamageText[i].GetText() == "" || DamageText[i].GetAlpha() <= 0) {
    DamageText[i].SetText("");
    DamageText[i].SetAlpha(255);
    ParseString(a_Param, "Param1", DamageToPlayer);
    DamageText[i].SetText(DamageToPlayer);
    DamageText[i].SetAnchor("OnScreenDmgMsgWnd", "BottomCenter", "BottomCenter", -120 + Rand(150), Rand(100));
    DamageText[i].ClearAnchor();
    DamageText[i].Move(-100, -1500, 8f);
    DamageText[i].SetTextColor(DColor);
    DamageText[i].SetAlpha(0, 4f);
 break;
    }
    }
    }

    defaultproperties {
    WhiteColor=(B=255,G=255,R=255,A=255)
    }
Большое спасибо, да урон по себе не нужен)) я специально выкосил его) Сейчас гляну где мой косяк)
 
Ну и если, внезапно, появилось желание поиметь себя в зад (как у меня, неожиданно!), то можно даже отделять обычные удары от свер-урона (скилы, криты):

1741890037703.webp

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)
    }
 
Назад
Сверху