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

"Abstract" interface for Interlude

  • Автор темы Автор темы Petr
  • Дата начала Дата начала
Люцера сборка, у файтера при автофарме если соску вставить в вверхний маленькие панели оттуда они не работают, нужно только в панель положить как обычно чтобы они работали. По стрелку именно во время крит урона соски срабатывают....
Попробуйте добавить в InventoryWnd.uc
В функцию OnLoad
C-подобный:
    RegisterEvent(EV_SystemMessage);
В функцию OnEvent
C-подобный:
        case EV_SystemMessage:
            HandleSystemMessage(param);
            break;
И добавить функцию
C-подобный:
function HandleSystemMessage( string a_Param )
{
    local int Index, Param1, Param2;
 
    ParseInt(a_Param, "Index", Index);
    ParseInt(a_Param, "Param1", Param1);
    ParseInt(a_Param, "Param2", Param2);

    if ( Index == 35 || Index == 1015 )
        ExecuteEvent(70694);
}

Так же изменения в SkillGaugeWnd.uc
добавьте в начало переменную
C-подобный:
var bool isSpiritShotEnabled;
В функцию OnLoad
C-подобный:
RegisterEvent(EV_SystemMessage);
isSpiritShotEnabled = False;
В функцию OnEvent
C-подобный:
        case EV_SystemMessage:
            HandleSystemMessage(a_Param);
            break;
Добавить функцию
C-подобный:
function HandleSystemMessage( string a_Param )
{
    local int Index, Param1, Param2;
 
    ParseInt(a_Param, "Index", Index);
    ParseInt(a_Param, "Param1", Param1);
    ParseInt(a_Param, "Param2", Param2);
    if ( Index == 533 )
        isSpiritShotEnabled = True;
}
И заменить функцию HandleReceiveMagicSkillUse (для правильного вычисления полоски каста) на:
C-подобный:
function HandleReceiveMagicSkillUse( string a_Param )
{
    local int attackerID, skillID, skillLv;
    local UserInfo playerInfo;
    local SkillInfo skillInfo;
    local float speed;
    local float skillAnimTime;
    ParseInt(a_Param, "AttackerID", attackerID);
    ParseInt(a_Param, "SkillID", skillID);
    GetPlayerInfo(playerInfo);
    skillLv = GetPlayerSkillLevel(skillID); // for skills with '#hitTime'
    GetSkillInfo(skillID, skillLv, skillInfo);
    if ( skillInfo.CastStyle != 0 )
    {
        skillAnimTime = skillInfo.HitTime;
        if ( !IsStaticHitTime(skillID) )
        {
            if ( skillInfo.isMagic == 1 )
                speed = playerInfo.nMagicCastingSpeed;
            else
                speed = playerInfo.nPhysicalAttackSpeed;
            skillAnimTime = (skillAnimTime / speed) * 333;
        }
        if ( skillInfo.isMagic == 1 && isSpiritShotEnabled )
        {
            skillAnimTime = skillAnimTime * 0.7;
            isSpiritShotEnabled = False;
        }
        if ( (skillAnimTime < 0.5) && (skillInfo.HitTime > 0.5) )
            skillAnimTime = 0.5;
        if ( playerInfo.nID == attackerID && skillInfo.HitTime > 0f )
        {
            ResetBar();
            Me.ShowWindow();
            textSkill.SetTextColor(SetColor(230, 213, 164));
            textSkill.SetText(skillInfo.SkillName);
            texLightBar.Move(200, 0, skillAnimTime);
            Me.SetTimer(TIMER_HIDE, int(skillAnimTime * 1000.0f) + 100);
            GotoState('StartCastState');
        }
    }
}
 
Последнее редактирование:
Looks like we need systexture files: everything looks black, and the buttons have no UI. Please help.
 
Нужна ли запятая в цыфрах урона и опыта на экране?
 

Вложения

  • screendamage.webp
    screendamage.webp
    154,8 КБ · Просмотры: 127
  • screenxpsp.webp
    screenxpsp.webp
    129,9 КБ · Просмотры: 144
Нужна ли запятая в цыфрах урона и опыта на экране?

Кажется, использование запятой будет правильным. :)

Это действительно великолепно. Благодаря вам смотреть на это очень приятно. Ещё раз благодарю за то, что поделились. Подскажите, пожалуйста, как можно отключить окно отладки после входа в игру?

В RusAcis всё работает хорошо без проблем с элементальными снарядами. PTS протестирую!
 
Petr, а как, кстати, урон устроен, парс с пакета и ворлд ту скрин анчор текста/текстур? Влом смотреть, а интересно. )0))
 
Petr, а как, кстати, урон устроен, парс с пакета и ворлд ту скрин анчор текста/текстур? Влом смотреть, а интересно. )0))
да, как и везде)

p.s Я видел в классе Actor и Pawn интересности касаемые дамага но пока туда сильно не лез
 
Последнее редактирование:
I'm getting a critical error when trying to spawn a custom monster. What could be the problem?
 
I'm getting a critical error when trying to spawn a custom monster. What could be the problem?
It's all about the texture of this monster, of course.


Without the interface I can see all the custom monsters, but with the interface I'm getting a critical error.
Try to collect your thoughts, develop a tactic, MAKE A SCREENSHOT OF THE ERROR, and show it here, I'm not a clairvoyant
 
Without the interface I can see all the custom monsters, but with the interface I'm getting a critical error.
 
Оверпостинг
Попробуйте добавить в InventoryWnd.uc
В функцию OnLoad
C-подобный:
    RegisterEvent(EV_SystemMessage);
В функцию OnEvent
C-подобный:
        case EV_SystemMessage:
            HandleSystemMessage(param);
            break;
И добавить функцию
C-подобный:
function HandleSystemMessage( string a_Param )
{
    local int Index, Param1, Param2;
 
    ParseInt(a_Param, "Index", Index);
    ParseInt(a_Param, "Param1", Param1);
    ParseInt(a_Param, "Param2", Param2);

    if ( Index == 35 || Index == 1015 )
        ExecuteEvent(70694);
}

Так же изменения в SkillGaugeWnd.uc
добавьте в начало переменную
C-подобный:
var bool isSpiritShotEnabled;
В функцию OnLoad
C-подобный:
RegisterEvent(EV_SystemMessage);
isSpiritShotEnabled = False;
В функцию OnEvent
C-подобный:
        case EV_SystemMessage:
            HandleSystemMessage(a_Param);
            break;
Добавить функцию
C-подобный:
function HandleSystemMessage( string a_Param )
{
    local int Index, Param1, Param2;
 
    ParseInt(a_Param, "Index", Index);
    ParseInt(a_Param, "Param1", Param1);
    ParseInt(a_Param, "Param2", Param2);
    if ( Index == 533 )
        isSpiritShotEnabled = True;
}
И заменить функцию HandleReceiveMagicSkillUse (для правильного вычисления полоски каста) на:
C-подобный:
function HandleReceiveMagicSkillUse( string a_Param )
{
    local int attackerID, skillID, skillLv;
    local UserInfo playerInfo;
    local SkillInfo skillInfo;
    local float speed;
    local float skillAnimTime;
    ParseInt(a_Param, "AttackerID", attackerID);
    ParseInt(a_Param, "SkillID", skillID);
    GetPlayerInfo(playerInfo);
    skillLv = GetPlayerSkillLevel(skillID); // for skills with '#hitTime'
    GetSkillInfo(skillID, skillLv, skillInfo);
    if ( skillInfo.CastStyle != 0 )
    {
        skillAnimTime = skillInfo.HitTime;
        if ( !IsStaticHitTime(skillID) )
        {
            if ( skillInfo.isMagic == 1 )
                speed = playerInfo.nMagicCastingSpeed;
            else
                speed = playerInfo.nPhysicalAttackSpeed;
            skillAnimTime = (skillAnimTime / speed) * 333;
        }
        if ( skillInfo.isMagic == 1 && isSpiritShotEnabled )
        {
            skillAnimTime = skillAnimTime * 0.7;
            isSpiritShotEnabled = False;
        }
        if ( (skillAnimTime < 0.5) && (skillInfo.HitTime > 0.5) )
            skillAnimTime = 0.5;
        if ( playerInfo.nID == attackerID && skillInfo.HitTime > 0f )
        {
            ResetBar();
            Me.ShowWindow();
            textSkill.SetTextColor(SetColor(230, 213, 164));
            textSkill.SetText(skillInfo.SkillName);
            texLightBar.Move(200, 0, skillAnimTime);
            Me.SetTimer(TIMER_HIDE, int(skillAnimTime * 1000.0f) + 100);
            GotoState('StartCastState');
        }
    }
}
Спасибо , но
Критует часто после этого.
General protection fault!

History: UUIDATA_ITEM::execGetSetItemIDList <- UObject::execClassContext <- (ToolTip Transient.ToolTip0 @ Function Interface.ToolTip.AddDescTooltip : 001F) <- UObject::ProcessEvent <- (ToolTip Transient.ToolTip0, Function Interface.ToolTip.OnEvent) <- XMLUIManager::ExecuteUIEvent <- NCTooltipManager::MakeTooltipInfo <- NCItemWnd::OnPostPaint <- NCVirtualWndMain::PostDrawChildWindow <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::Draw <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- MainLoop

Попробуйте добавить в InventoryWnd.uc
В функцию OnLoad
C-подобный:
    RegisterEvent(EV_SystemMessage);
В функцию OnEvent
C-подобный:
        case EV_SystemMessage:
            HandleSystemMessage(param);
            break;
И добавить функцию
C-подобный:
function HandleSystemMessage( string a_Param )
{
    local int Index, Param1, Param2;
 
    ParseInt(a_Param, "Index", Index);
    ParseInt(a_Param, "Param1", Param1);
    ParseInt(a_Param, "Param2", Param2);

    if ( Index == 35 || Index == 1015 )
        ExecuteEvent(70694);
}

Так же изменения в SkillGaugeWnd.uc
добавьте в начало переменную
C-подобный:
var bool isSpiritShotEnabled;
В функцию OnLoad
C-подобный:
RegisterEvent(EV_SystemMessage);
isSpiritShotEnabled = False;
В функцию OnEvent
C-подобный:
        case EV_SystemMessage:
            HandleSystemMessage(a_Param);
            break;
Добавить функцию
C-подобный:
function HandleSystemMessage( string a_Param )
{
    local int Index, Param1, Param2;
 
    ParseInt(a_Param, "Index", Index);
    ParseInt(a_Param, "Param1", Param1);
    ParseInt(a_Param, "Param2", Param2);
    if ( Index == 533 )
        isSpiritShotEnabled = True;
}
И заменить функцию HandleReceiveMagicSkillUse (для правильного вычисления полоски каста) на:
C-подобный:
function HandleReceiveMagicSkillUse( string a_Param )
{
    local int attackerID, skillID, skillLv;
    local UserInfo playerInfo;
    local SkillInfo skillInfo;
    local float speed;
    local float skillAnimTime;
    ParseInt(a_Param, "AttackerID", attackerID);
    ParseInt(a_Param, "SkillID", skillID);
    GetPlayerInfo(playerInfo);
    skillLv = GetPlayerSkillLevel(skillID); // for skills with '#hitTime'
    GetSkillInfo(skillID, skillLv, skillInfo);
    if ( skillInfo.CastStyle != 0 )
    {
        skillAnimTime = skillInfo.HitTime;
        if ( !IsStaticHitTime(skillID) )
        {
            if ( skillInfo.isMagic == 1 )
                speed = playerInfo.nMagicCastingSpeed;
            else
                speed = playerInfo.nPhysicalAttackSpeed;
            skillAnimTime = (skillAnimTime / speed) * 333;
        }
        if ( skillInfo.isMagic == 1 && isSpiritShotEnabled )
        {
            skillAnimTime = skillAnimTime * 0.7;
            isSpiritShotEnabled = False;
        }
        if ( (skillAnimTime < 0.5) && (skillInfo.HitTime > 0.5) )
            skillAnimTime = 0.5;
        if ( playerInfo.nID == attackerID && skillInfo.HitTime > 0f )
        {
            ResetBar();
            Me.ShowWindow();
            textSkill.SetTextColor(SetColor(230, 213, 164));
            textSkill.SetText(skillInfo.SkillName);
            texLightBar.Move(200, 0, skillAnimTime);
            Me.SetTimer(TIMER_HIDE, int(skillAnimTime * 1000.0f) + 100);
            GotoState('StartCastState');
        }
    }
}
И еще когда у магов соски включаешь из маленькой панели часто он сперва юзает скилл а потом соску не успевает соска прожаться до скила из за этого замедляется скорость каста умений, а в обычной панели проблем с этим нет, не подскажешь где проблема?
 
Последнее редактирование модератором:
И еще когда у магов соски включаешь из маленькой панели часто он сперва юзает скилл а потом соску не успевает соска прожаться до скила из за этого замедляется скорость каста умений, а в обычной панели проблем с этим нет, не подскажешь где проблема?
Когда включаешь соски он сразу их юзает, как она может не успевать? Это если ты включаешь каст а потом панель то естественно соска уже не сработает на первый удар
 
Спасибо , но
Критует часто после этого.
General protection fault!

History: UUIDATA_ITEM::execGetSetItemIDList <- UObject::execClassContext <- (ToolTip Transient.ToolTip0 @ Function Interface.ToolTip.AddDescTooltip : 001F) <- UObject::ProcessEvent <- (ToolTip Transient.ToolTip0, Function Interface.ToolTip.OnEvent) <- XMLUIManager::ExecuteUIEvent <- NCTooltipManager::MakeTooltipInfo <- NCItemWnd::OnPostPaint <- NCVirtualWndMain::PostDrawChildWindow <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::ConsolePostRender <- UGameEngine::Draw <- UWindowsViewport::Repaint <- UWindowsClient::Tick <- ClientTick <- UGameEngine::Tick <- UpdateWorld <- MainLoop


И еще когда у магов соски включаешь из маленькой панели часто он сперва юзает скилл а потом соску не успевает соска прожаться до скила из за этого замедляется скорость каста умений, а в обычной панели проблем с этим нет, не подскажешь где проблема?
Сервер стандартный без наворотов скорости итд? А вообще больше похоже на пинг.
 
Сервер стандартный без наворотов скорости итд? А вообще больше похоже на пинг.
Это больше похоже что какие-то кастом итемы продаются или за них покупка идёт. Он же не уточнил в каком моменте критует
 
Когда включаешь соски он сразу их юзает, как она может не успевать? Это если ты включаешь каст а потом панель то естественно соска уже не сработает на первый удар
В панели с этим проблем нет, но в мини панели во время использования умений соски не всегда используются перед кастованием скила, иногда сперва скилл кастуется потом сразу соски, а обычном панели которые мы всегда привыкли юзать там таких проблем нет, всегда первым используется соски а потом каст ну я имею ввиду то что успеваются соски использоваться
 
Все изображения и файлы загружайте только на наш сервер!
Alguém pode adicionar o botão para selecionar a quantidade de encantamento na interface xdat?


Seria algo parecido com isso nesses campos vermelhos, ou onde você achar melhor para que a interface não perca sua essência e qualidade.

I'm sending the one I worked on because it already has the button codes where the interface pulls them from.
 
Заметил проблему в этом интерфейсе: клавиши F1-F12 жестко привязаны к панели, выбранной в настройках. Из-за этого при переключении вкладок (1-10) умения на кнопках F1-F12 не меняются, что неудобно для тех, кто привык к классике Interlude.

Я обновил логику в Shortcut.uc, сделав её "умной".

Как это работает:
  • Если в настройках Shortcut Bind выбран "First Panel", клавиши F1-F12 будут переключаться вместе с активной страницей (классический стиль L2).
  • Если выбрать любую другую панель (2-10), клавиши останутся закрепленными за этой панелью (статический стиль).
Установка:Замените содержимое вашего Shortcut.uc на код ниже и скомпилируйте интерфейс.

Код:
class Shortcut extends UIScript;

const CHAT_WINDOW_NORMAL = 0;
const CHAT_WINDOW_TRADE = 1;
const CHAT_WINDOW_PARTY = 2;
const CHAT_WINDOW_CLAN = 3;
const CHAT_WINDOW_ALLY = 4;
const CHAT_WINDOW_COUNT = 5;
const CHAT_WINDOW_SYSTEM = 5;

var MenuWnd menuScript;
var ChatWnd chatScript;   
var ShortcutBindWnd shortcutBindScript;
var ShortcutWnd ShortcutWndScript;

var bool useFPad;
var bool useNumpad;
var bool useQwerty;

var int ComboNum1;
var int ComboNum2;
var int ComboNum3;

function OnLoad()
{
    RegisterEvent( EV_ShortcutCommand );
    RegisterEvent( 70700 );
    chatScript = ChatWnd( GetScript("ChatWnd") );
    menuScript = MenuWnd( GetScript( "MenuWnd" ) );
    shortcutBindScript = ShortcutBindWnd( GetScript( "ShortcutBindWnd" ) );
    shortcutWndScript = ShortcutWnd( GetScript( "ShortcutWnd" ) );
}

function OnEvent( int a_EventID, string a_Param )
{
    switch ( a_EventID )
    {
        case EV_ShortcutCommand:
            HandleShortcutCommand( a_Param );
            break;
        case 70700:
            InitShortcut();
            break;
    }
}

function HandleShortcutCommand( string a_Param )
{
    local string Command;
    
    if ( ParseString( a_Param, "Command", Command ) )
    {
        switch ( Command )
        {
            case "CloseAllWindow":       
                HandleCloseAllWindow();
                break;
            case "ShowChatWindow":
                HandleShowChatWindow();
                break;
            case "SetPrevChatType":
                HandleSetPrevChatType();
                break;
            case "SetNextChatType":
                HandleSetNextChatType();
                break;
            case "ShowDetailStatusWnd":
                menuScript.ToggleCharacterWnd();
                break;
            case "ShowSkillWnd":
                class'UIAPI_TEXTURECTRL'.static.SetTexture("MainMenuWnd.IconNotify", "");
                menuScript.ToggleSkillsAndActionWnd(0);
                break;
            case "ShowActionWnd":
                menuScript.ToggleSkillsAndActionWnd(1);
                break;
            case "ShowQuestWnd":
                menuScript.ToggleQuestWnd();
                break;
            case "ShowClanWnd":
                menuScript.ToggleClanWnd();
                break;
            case "ShowOptionWnd": 
                HandleOptionWnd();
                break;
            default:
                if ( Left(Command, 11) == "UseShortcut" )
                    HandleShortcutBind(Command);
                break;
        }
    }
}

function HandleShortcutBind( string Name )
{
    local string targetPageF;
    local string targetPageNum;
    local string targetPageQW;

    if ( ComboNum1 == 1 ) {
        targetPageF = string(ShortcutWndScript.CurrentShortcutPage + 1);
    } else {
        targetPageF = string(ComboNum1);
    }

    targetPageNum = string(ComboNum2);
    targetPageQW = string(ComboNum3);

    switch ( Name )
    {
        case "UseShortcutNum=0":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 1");
            break;
        case "UseShortcutNum=1":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 2");
            break;
        case "UseShortcutNum=2":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 3");
            break;
        case "UseShortcutNum=3":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 4");
            break;
        case "UseShortcutNum=4":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 5");
            break;
        case "UseShortcutNum=5":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 6");
            break;
        case "UseShortcutNum=6":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 7");
            break;
        case "UseShortcutNum=7":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 8");
            break;
        case "UseShortcutNum=8":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 9");
            break;
        case "UseShortcutNum=9":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 10");
            break;
        case "UseShortcutNum=10":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 11");
            break;
        case "UseShortcutNum=11":
            if ( useFPad ) ExecuteCommand("/useshortcut " $ targetPageF $ " 12");
            break;

        case "UseShortcutNum=12":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 1");       
            break;
        case "UseShortcutNum=13":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 2");           
            break;
        case "UseShortcutNum=14":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 3");           
            break;
        case "UseShortcutNum=15":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 4");           
            break;
        case "UseShortcutNum=16":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 5");           
            break;
        case "UseShortcutNum=17":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 6");           
            break;
        case "UseShortcutNum=18":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 7");           
            break;
        case "UseShortcutNum=19":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 8");
            break;
        case "UseShortcutNum=20":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 9");           
            break;
        case "UseShortcutNum=21":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 10");       
            break;
        case "UseShortcutNum=22":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 11");
            break;
        case "UseShortcutNum=23":
            if ( useNumpad ) ExecuteCommand("/useshortcut " $ targetPageNum $ " 12");           
            break;

        case "UseShortcutNum=24":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 1");           
            break;
        case "UseShortcutNum=25":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 2");           
            break;
        case "UseShortcutNum=26":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 3");           
            break;
        case "UseShortcutNum=27":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 4");           
            break;
        case "UseShortcutNum=28":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 5");           
            break;
        case "UseShortcutNum=29":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 6");           
            break;
        case "UseShortcutNum=30":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 7");           
            break;
        case "UseShortcutNum=31":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 8");           
            break;
        case "UseShortcutNum=32":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 9");           
            break;
        case "UseShortcutNum=33":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 10");           
            break;
        case "UseShortcutNum=34":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 11");           
            break;
        case "UseShortcutNum=35":
            if ( useQwerty ) ExecuteCommand("/useshortcut " $ targetPageQW $ " 12");           
            break;
    }
}

function InitShortcut()
{
    local string pos, end;

    useFPad = GetOptionBool("Key", "UseFPad");
    useNumpad = GetOptionBool("Key", "UseNumpad");
    useQwerty = GetOptionBool("Key", "UseQwerty");
    ComboNum1 = GetOptionInt("Key", "Panel1");
    ComboNum2 = GetOptionInt("Key", "Panel2");
    ComboNum3 = GetOptionInt("Key", "Panel3");
    pos = "Horizontal";
    end = "";
    if ( IsShortcutVertical() )
    {
        pos = "Vertical";
        end = "_v";
    }
    class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$".Shortcut_keybind", "");
    class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$"_1.Shortcut_keybind", "");
    class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$"_2.Shortcut_keybind", "");
    class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$"_3.Shortcut_keybind", "");
    class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$"_4.Shortcut_keybind", "");
    if ( useQwerty && GetOptionBool("Game", "EnterChatting") )
        class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$strPanelNum(ComboNum3)$".Shortcut_keybind", "L2UI_CH3.ShortcutWnd.shortcut_keybindqw"$end);
    if ( useNumpad && GetOptionBool("Game", "EnterChatting") )
        class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$strPanelNum(ComboNum2)$".Shortcut_keybind", "L2UI_CH3.ShortcutWnd.shortcut_keybind12"$end);
    if ( useFPad )
        class'UIAPI_TEXTURECTRL'.static.SetTexture("ShortcutWnd.ShortcutWnd"$pos$strPanelNum(ComboNum1)$".Shortcut_keybind", "L2UI_CH3.ShortcutWnd.shortcut_keybindf1f2"$end);
}

function string strPanelNum( int ComboNum )
{
    if ( ComboNum == 1 )
        return "";       
    else
        return "_"$string(ComboNum - 1);   
}

function HandleShowChatWindow()
{
    local WindowHandle chatWnd;
    chatWnd = GetHandle( "ChatWnd" );
    
    if ( chatWnd.IsShowWindow() )
    {
        chatWnd.HideWindow();
        if ( GetOptionBool("Game", "SystemMsgWnd") )
            class'UIAPI_WINDOW'.static.HideWindow("SystemMsgWnd");
    }
    else
    {
        chatWnd.ShowWindow();
        if ( GetOptionBool("Game", "SystemMsgWnd") )
            class'UIAPI_WINDOW'.static.ShowWindow("SystemMsgWnd");
    }
}

function HandleOptionWnd()
{
    if ( class'UIAPI_WINDOW'.static.IsShowWindow("OptionWnd") )
    {
        PlayConsoleSound(IFST_WINDOW_CLOSE);
        class'UIAPI_WINDOW'.static.HideWindow("OptionWnd");
    }
    else
    {
        PlayConsoleSound(IFST_WINDOW_OPEN);
        class'UIAPI_WINDOW'.static.ShowWindow("OptionWnd");
        class'UIAPI_WINDOW'.static.SetFocus("OptionWnd");
    }
}

function HandleSetPrevChatType()
{
    switch ( chatScript.m_chatType )   
    {
        case CHAT_WINDOW_NORMAL:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(4, True);
            chatScript.HandleTabClick("ChatTabCtrl4");
            break;
        case CHAT_WINDOW_TRADE:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(0, True);
            chatScript.HandleTabClick("ChatTabCtrl0");
            break;
        case CHAT_WINDOW_PARTY:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(1, True);
            chatScript.HandleTabClick("ChatTabCtrl1");
            break;
        case CHAT_WINDOW_CLAN:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.SetTopOrder(2, True);
            chatScript.HandleTabClick("ChatTabCtrl2");
            break;
        case CHAT_WINDOW_ALLY:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.SetTopOrder(3, True);
            chatScript.HandleTabClick("ChatTabCtrl3");
            break;       
    }
}

function HandleSetNextChatType()
{
    switch ( chatScript.m_chatType )   
    {
        case CHAT_WINDOW_NORMAL:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(1, True);
            chatScript.HandleTabClick("ChatTabCtrl1");
            break;
        case CHAT_WINDOW_TRADE:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(2, True);
            chatScript.HandleTabClick("ChatTabCtrl2");
            break;
        case CHAT_WINDOW_PARTY:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(3, True);
            chatScript.HandleTabClick("ChatTabCtrl3");
            break;
        case CHAT_WINDOW_CLAN:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_NORMAL);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.SetTopOrder(4, True);
            chatScript.HandleTabClick("ChatTabCtrl4");
            break;
        case CHAT_WINDOW_ALLY:
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_TRADE);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_PARTY);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_CLAN);
            chatScript.ChatTabCtrl.MergeTab(CHAT_WINDOW_ALLY);
            chatScript.ChatTabCtrl.SetTopOrder(0, True);
            chatScript.HandleTabClick("ChatTabCtrl0");
            break;       
    }
}

function HandleCloseAllWindow()
{
    class'UIAPI_WINDOW'.static.HideWindow( "SystemMenuWnd" );
}

function bool IsShortcutVertical()
{
    return ShortcutWndScript.IsVertical();
}

defaultproperties
{
}
 
Анонс! Обвновление в разработке
- Окно заточки (добавлена автозаточка), скорость анимации простой заточки слегка ускорена

- Окно ГМа (обновлён интерфейс)

- Урон на экране (убрано слово Critical) теперь простой урон белый, криты (маг и физ) жёлтые и больше и цифры с Essense. Добавлены запятые. Так же урон цепляется за соседних мобов а не как попало (ещё есть баги)
- И так же можете видеть обновление окна прогресса каста

- И небольшое обновление дизайна окошка смерти

- Так же была исправлена цифра 7 на 105 для отображения иконок макросов без применения поля description (иконки новых иконок были чёрными)
ScreenShot01545.webp
 
Последнее редактирование:
Пожалуйста помогите я никак не справляюсь, в мини панели у магов при использования ссосок со скорость кастом проблемы, в обычном панели все идеально но в мини панели во время каста скорость каста не тот, соска активируется именно вовремя использования каста а не до использования. Я все перепробовал уже бес толку...
 
Назад
Сверху Снизу