SideBar

CapitainHook

Единомышленник
Участник
Сообщения
176
Розыгрыши
0
Репутация
14
Реакции
78
Баллы
170
interface Fafurion 166
Код:
// ============================================================================
// SideBarWnd.uc — Sidebar completa com RandomCraftWndTest no slot 5 (Attend)
// - "btnAttend" agora abre/fecha RandomCraftWndTest
// - Visibilidade do slot 5: SHOW_RANDOM_CRAFT (novo) OU SHOW_ATTEND_CHECK (legado)
// - Restante da barra preservado (Shop, VIP, Auction, PC Event, AutoFarm, HuntPass)
// ============================================================================
class SideBarWnd extends UICommonAPI;

const WINDOWS_MAX       = 7;
const TOPPING_ICON_WH   = 22;
const WINDOW_H_MIN      = 2;
const WINDOW_H_GAP      = 2;

var WindowHandle Me;
var WindowHandle btns;
var WindowHandle SideBarButtons;
var WindowHandle SideBarButtons2;
var WindowHandle SideBarButtons3;
var WindowHandle SideBarButtons4;
var WindowHandle SideBarButtons5;   // <- Random Craft (reuso do Attend)
var WindowHandle SideBarButtons6;
var WindowHandle SideBarButtons7;

var ButtonHandle zzbtnmin;
var ButtonHandle zzbtnRaidInfo;
var ButtonHandle zzbtnRanking;
var ButtonHandle zzbtnEvent;
var ButtonHandle btnFarm;

var bool zzisanswer;
var array<WindowHandle> allWindow;

var string m_SideBarButtons;
var TextureHandle DonateTex;
var ButtonHandle zzbtnDonate;

var string m_SideBarButtons2;
var string m_btns;
var TextureHandle IngameVIPIcon_Tex;
var ButtonHandle btnVip;

var string m_SideBarButtons3;
var TextureHandle auctiontext;
var ButtonHandle btnAuction;

var string m_SideBarButtons4;
var TextureHandle PceventTex;
var ButtonHandle btnpapoints;

var string m_SideBarButtons5;
var TextureHandle AttendTex;     // pode ser usado como ícone do Random Craft
var ButtonHandle btnAttend;      // agora abre RandomCraftWndTest

var string m_SideBarButtons6;
var TextureHandle HuntTex;
var ButtonHandle btnhunt;

var string m_SideBarButtons7;
var TextureHandle HuntPassTex;
var ButtonHandle btnhuntpass;
var TextureHandle sideanima;

var string m_me;
var int m_TotalPoint;
var bool isAfterStatusNormaEvent;
var bool isShowSideBarWnd;

// Chaves vindas do servidor (InterfaceConfigs)
var string SHOW_NEW_SIDE;
var string SHOW_PRIME_SHOP;
var string SHOW_VIP;
var string SHOW_AUCTION;
var string SHOW_PC_EVENT;
var string SHOW_ATTEND_CHECK;      // legado
var string SHOW_AUTOFARM_TOGGLE;
var string SHOW_HUNT_PASS;
// opcional (nova) para Random Craft
var string SHOW_RANDOM_CRAFT_KEY;

var bool AUTOFARM_TOGGLE_VISIBILITY;


// -----------------------------
// Registro de eventos
// -----------------------------
function OnRegisterEvent()
{
    RegisterEvent(150);
    RegisterEvent(161);
    RegisterEvent(950);
    RegisterEvent(180);
    RegisterEvent(4110);
    RegisterEvent(1910);
    RegisterEvent(531);
    RegisterEvent(9310);
    RegisterEvent(9320);
    RegisterEvent(40);
    RegisterEvent(8000);
    RegisterEvent(10930);
    RegisterEvent(10940);
    RegisterEvent(11060);
    RegisterEvent(20256);
    RegisterEvent(9015);
    RegisterEvent(20150);
    RegisterEvent(2900);
    RegisterEvent(98716);
    RegisterEvent(37669); // InterfaceConfigs
    RegisterEvent(39000);
}

// -----------------------------
// Carregamento / Inicialização
// -----------------------------
function OnLoad()
{
    Me = GetWindowHandle(m_me);
    OnDefaultPosition();
    if (Me != None) Me.ShowWindow();

    zzbtnmin      = GetButtonHandle("SideBarWnd.btnMin");
    if (zzbtnmin != None) zzbtnmin.SetTooltipCustomType(MakeTooltipSimpleText("Minimize"));

    zzbtnRaidInfo = GetButtonHandle("SideBarWnd.btnRaidInfo");
    zzbtnRanking  = GetButtonHandle("SideBarWnd.btnRanking");
    zzbtnEvent    = GetButtonHandle("SideBarWnd.btnEvent");
    btnFarm       = GetButtonHandle("SideBarWnd.btnFarm2a");

    HideWindow("SideBarWnd.ExpandBG1"); // ok se não existir
    btns = GetWindowHandle(m_btns);

    // 1 - Prime Shop
    SideBarButtons = GetWindowHandle(m_SideBarButtons);
    zzbtnDonate = GetButtonHandle(m_SideBarButtons $ ".btnDonate");
    if (zzbtnDonate != None)
        zzbtnDonate.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9060)));
    DonateTex = GetTextureHandle(m_SideBarButtons $ ".DonateTex");

    // 2 - VIP
    SideBarButtons2 = GetWindowHandle(m_SideBarButtons2);
    btnVip = GetButtonHandle(m_SideBarButtons2 $ ".btnVip");
    IngameVIPIcon_Tex = GetTextureHandle(m_SideBarButtons2 $ ".IngameVIPIcon_Tex");

    // 3 - Auction
    SideBarButtons3 = GetWindowHandle(m_SideBarButtons3);
    btnAuction = GetButtonHandle(m_SideBarButtons3 $ ".btnAuction");
    if (btnAuction != None)
        btnAuction.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9061)));
    auctiontext = GetTextureHandle(m_SideBarButtons3 $ ".auctiontext");

    // 4 - PC Café
    SideBarButtons4 = GetWindowHandle(m_SideBarButtons4);
    btnpapoints = GetButtonHandle(m_SideBarButtons4 $ ".btnpapoints");
    PceventTex = GetTextureHandle(m_SideBarButtons4 $ ".PceventTex");

    // 5 - Random Craft (reuso do Attend)
    SideBarButtons5 = GetWindowHandle(m_SideBarButtons5);
    btnAttend = GetButtonHandle(m_SideBarButtons5 $ ".btnAttend");
    if (btnAttend != None)
        btnAttend.SetTooltipCustomType(MakeTooltipSimpleText("Random Craft"));
    AttendTex = GetTextureHandle(m_SideBarButtons5 $ ".AttendTex"); // ícone opcional

    // 6 - AutoFarm Toggle
    SideBarButtons6 = GetWindowHandle(m_SideBarButtons6);
    btnhunt = GetButtonHandle(m_SideBarButtons6 $ ".btnhunt");
    if (btnhunt != None)
        btnhunt.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9063)));
    HuntTex = GetTextureHandle(m_SideBarButtons6 $ ".HuntTex");

    // 7 - Hunt Pass
    SideBarButtons7 = GetWindowHandle(m_SideBarButtons7);
    btnhuntpass = GetButtonHandle(m_SideBarButtons7 $ ".btnhuntpass");
    if (btnhuntpass != None)
        btnhuntpass.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9065)));
    HuntPassTex = GetTextureHandle(m_SideBarButtons7 $ ".HuntTexpass");

    setWindowOrder();

    sideanima = GetTextureHandle("SideBarWnd.btns.SideBarButtons7.Huntpassani");
    if (sideanima != None) sideanima.HideWindow();

    InitializeSidebarDefaults();
    HandleInitialState();
    initishowhide();
    newsidebar();

    // força esconder na tela de login
    if (Me != None) Me.HideWindow();

    // garante escondido antes de qualquer evento
    HideWindow("AutoPlay");
    HideWindow("AutoPlay.Anim1CircleExpand");
    HideWindow("AutoPlay.Anim2CoreExpand");
    HideWindow("AutoPlay.DrawerButtons");
    HideWindow("AutoSkillWnd");
}

// defaults no Option.ini
function InitializeSidebarDefaults()
{
    if (!GetOptionBool("Giranforge", "SHOW_NEW_SIDE"))
        SetOptionBool("Giranforge", "SHOW_NEW_SIDE", true);

    if (!GetOptionBool("Giranforge", "SHOW_PRIME_SHOP"))
        SetOptionBool("Giranforge", "SHOW_PRIME_SHOP", true);
    if (!GetOptionBool("Giranforge", "SHOW_VIP"))
        SetOptionBool("Giranforge", "SHOW_VIP", true);
    if (!GetOptionBool("Giranforge", "SHOW_AUTOFARM_TOGGLE"))
        SetOptionBool("Giranforge", "SHOW_AUTOFARM_TOGGLE", true);

    // liga Random Craft por padrão se nada definido
    if (!GetOptionBool("Giranforge", "SHOW_RANDOM_CRAFT") && !GetOptionBool("Giranforge", "SHOW_ATTEND_CHECK"))
        SetOptionBool("Giranforge", "SHOW_RANDOM_CRAFT", true);

    RefreshINI("Option.ini");
}

// -----------------------------
// Exibição condicional
// -----------------------------
function newsidebar()
{
    if (Me == None) return;
    if (GetOptionBool("Giranforge", "SHOW_NEW_SIDE"))
    {
        Me.ShowWindow();
        HandleInitialState();
    }
    else
    {
        Me.HideWindow();
    }
}

function OnEvent(int Event_ID, string param)
{    if (Event_ID == 40)
    {
        // força autoplay OFF no login
        HideWindow("AutoPlay");
        HideWindow("AutoPlay.Anim1CircleExpand");
        HideWindow("AutoPlay.Anim2CoreExpand");
        HideWindow("AutoPlay.DrawerButtons");
        HideWindow("AutoSkillWnd");
        return;
    }

    switch (Event_ID)
    {
        case 2900: OnDefaultPosition(); break;
        case 20150: HandleVipInfo(param); break;
        case 150: newsidebar(); initishowhide(); break;
        case 39000: newsidebar(); break;
        case 1910: HandlePCCafePointInfo(param); break;
        case 37669: HandleInterfaceConfigs(param); break;
        case 40:
            if (Me != None) Me.HideWindow();
            break;
        default: break;
    }
}

// -----------------------------
// Lógica de dados / helpers
// -----------------------------
function HandlePCCafePointInfo(string param)
{
    ParseInt(param, "TotalPoint", m_TotalPoint);
    RefreshPcCafeInfo();
}

function RefreshPcCafeInfo()
{
    local string FullPointText;
    FullPointText = MakeCostString(string(m_TotalPoint));
    if (btnpapoints != None)
        btnpapoints.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9066) @ FullPointText));
}

function OnDefaultPosition()
{
    if (Me != None)
        Me.SetAnchor("", "CenterRight", "CenterRight", -10, 0);
}

function HandleVipInfo(string param)
{
    local int nCurrVipLevel;
    ParseInt(param, "CurrVipLevel", nCurrVipLevel);
    GetTextureHandle("SideBarWnd.btns.SideBarButtons.IngameVIPIcon_Tex").SetTexture(
        "L2UI_NewTex.SideBar.SideBar_BRVIPIcon" $ string(nCurrVipLevel));
    if (btnVip != None)
        btnVip.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9067) @ string(nCurrVipLevel)));
}

function setWindowOrder()
{
    local int i;
    i = 0;
    allWindow.Length = 7;
    allWindow[i++] = SideBarButtons;   // 1
    allWindow[i++] = SideBarButtons2;  // 2
    allWindow[i++] = SideBarButtons3;  // 3
    allWindow[i++] = SideBarButtons4;  // 4
    allWindow[i++] = SideBarButtons5;  // 5 (Random Craft)
    allWindow[i++] = SideBarButtons6;  // 6
    allWindow[i++] = SideBarButtons7;  // 7
}

function setWindowShowHide(WindowHandle tmpWnd, optional bool isShow)
{
    local int nWndWidth, nWndHeight, i, nWndHMax;
    local Rect rectWnd;

    if (tmpWnd == None || btns == None) return;

    if (isShow) tmpWnd.ShowWindow();
    else        tmpWnd.HideWindow();

    rectWnd = btns.GetRect();
    isShowSideBarWnd = false;
    nWndHMax = 0;

    for (i = 0; i < allWindow.Length; ++i)
    {
        if (allWindow[i] != None && allWindow[i].IsShowWindow())
        {
            allWindow[i].GetWindowSize(nWndWidth, nWndHeight);
            allWindow[i].MoveTo(rectWnd.nX, rectWnd.nY + nWndHMax);
            nWndHMax = nWndHMax + nWndHeight;
            isShowSideBarWnd = true;
        }
    }

    btns.SetWindowSize(rectWnd.nWidth, nWndHMax + 2);
    if (Me != None) Me.ShowWindow();
}

function HandleInterfaceConfigs(string param)
{
    local array<string> splitArr;
    local bool showNewSide, showPrime, showVip, showAuction, showPcEvent,
               showAttendLegacy, showAutoFarm, showHuntPass, showRandomCraft;

    ParseString(param, "NewSide",        SHOW_NEW_SIDE);
    ParseString(param, "PrimeShop",      SHOW_PRIME_SHOP);
    ParseString(param, "VIP",            SHOW_VIP);
    ParseString(param, "Auction",        SHOW_AUCTION);
    ParseString(param, "PCEvent",        SHOW_PC_EVENT);
    ParseString(param, "AttendCheck",    SHOW_ATTEND_CHECK);       // legado
    ParseString(param, "AutoFarmToggle", SHOW_AUTOFARM_TOGGLE);
    ParseString(param, "HuntPass",       SHOW_HUNT_PASS);
    // opcional, se seu servidor enviar explicitamente:
    ParseString(param, "RandomCraft",    SHOW_RANDOM_CRAFT_KEY);

    Split(SHOW_HUNT_PASS, ";", splitArr);
    if (splitArr.Length > 0) SHOW_HUNT_PASS = splitArr[0];

    Split(SHOW_RANDOM_CRAFT_KEY, ";", splitArr);
    if (splitArr.Length > 0) SHOW_RANDOM_CRAFT_KEY = splitArr[0];

    showNewSide      = (SHOW_NEW_SIDE == "true");
    showPrime        = (SHOW_PRIME_SHOP == "true");
    showVip          = (SHOW_VIP == "true");
    showAuction      = (SHOW_AUCTION == "true");
    showPcEvent      = (SHOW_PC_EVENT == "true");
    showAttendLegacy = (SHOW_ATTEND_CHECK == "true");
    showAutoFarm     = (SHOW_AUTOFARM_TOGGLE == "true");
    showHuntPass     = (SHOW_HUNT_PASS == "true");
    showRandomCraft  = (SHOW_RANDOM_CRAFT_KEY == "true");

    SetOptionBool("Giranforge", "SHOW_NEW_SIDE",        showNewSide);
    SetOptionBool("Giranforge", "SHOW_PRIME_SHOP",      showPrime);
    SetOptionBool("Giranforge", "SHOW_VIP",             showVip);
    SetOptionBool("Giranforge", "SHOW_AUCTION",         showAuction);
    SetOptionBool("Giranforge", "SHOW_PC_EVENT",        showPcEvent);
    SetOptionBool("Giranforge", "SHOW_AUTOFARM_TOGGLE", showAutoFarm);
    SetOptionBool("Giranforge", "SHOW_HUNT_PASS",       showHuntPass);

    // se servidor mandar RandomCraft, usa; senão mantém legado
    if (SHOW_RANDOM_CRAFT_KEY != "")
        SetOptionBool("Giranforge", "SHOW_RANDOM_CRAFT", showRandomCraft);
    else
        SetOptionBool("Giranforge", "SHOW_ATTEND_CHECK", showAttendLegacy);

    RefreshINI("Option.ini");
    HandleInitialState();
    initishowhide();
    newsidebar();
}

function HandleInitialState()
{
    local bool showRC;

    setWindowShowHide(SideBarButtons,  GetOptionBool("Giranforge", "SHOW_PRIME_SHOP"));
    setWindowShowHide(SideBarButtons2, GetOptionBool("Giranforge", "SHOW_VIP"));
    setWindowShowHide(SideBarButtons3, GetOptionBool("Giranforge", "SHOW_AUCTION"));
    setWindowShowHide(SideBarButtons4, GetOptionBool("Giranforge", "SHOW_PC_EVENT"));

    // Random Craft visível se qualquer uma das chaves estiver true
    showRC = GetOptionBool("Giranforge", "SHOW_RANDOM_CRAFT") || GetOptionBool("Giranforge", "SHOW_ATTEND_CHECK");
    setWindowShowHide(SideBarButtons5, showRC);

    setWindowShowHide(SideBarButtons6, GetOptionBool("Giranforge", "SHOW_AUTOFARM_TOGGLE"));
    setWindowShowHide(SideBarButtons7, GetOptionBool("Giranforge", "SHOW_HUNT_PASS"));
}

function OnShow() { /* intencionalmente vazio */ }

// -----------------------------
// Helpers de toggle
// -----------------------------
function toggleWindow(string winName, optional bool withFocus, optional bool playSoundFx)
{
    if (IsShowWindow(winName))
    {
        HideWindow(winName);
        if (playSoundFx) PlaySound("InterfaceSound.system_close_01");
    }
    else
    {
        if (withFocus) ShowWindowWithFocus(winName);
        else           ShowWindow(winName);
        if (playSoundFx) PlaySound("InterfaceSound.system_open_01");
    }
}

// -----------------------------
// Botões
// -----------------------------
function OnClickButton(string param)
{
    switch (param)
    {
        case "btnDonate":
            toggleWindow("IngameShopWnd", true, true);
            break;

        case "btnVip":
            toggleWindow("VipInfoWnd", true, true);
            break;

        case "btnpapoints":
            Class'PCCafeAPI'.static.RequestOpenWndWithoutNPC();
            break;

        case "btnEvent":
            ExecuteCommand(".menu");
            break;

        case "Letters":
            RequestBypassToServer("scripts_services.Interface:openHtml mods/lucky/40079.htm");
            break;

        case "btnMin":
            xxminexpand();
            break;

        case "btnhunt":
            ToggleAutoPlayWindows();
            break;

        case "btnAuction":
            if (GetOptionBool("Giranforge", "SHOW_AUCTION"))
                toggleWindow("SellingAgencyWnd", true, true);
            break;

        // *** Agora abre/fecha a janela principal do Random Craft ***
        case "btnAttend":
            toggleWindow("RandomCraftWndTest", true, true);
            break;

        case "btnhuntpass":
            toggleWindow("L2PassWnd", true, true);
            break;
    }
}

// -----------------------------
// AutoPlay / AutoSkill toggle
// -----------------------------
function ToggleAutoPlayWindows()
{
    if (IsShowWindow("AutoPlay"))
    {
        HideWindow("AutoPlay");
        HideWindow("AutoSkillWnd");
        PlaySound("InterfaceSound.system_close_01");

        if (btnhunt != None)
            btnhunt.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9064)));

        if (HuntTex != None)
            HuntTex.SetTexture("L2UI_NewTex.AutomaticPlay.CombatBTNOff_Normal");

        SetOptionBool("Giranforge", "AUTOFARM_TOGGLE_VISIBILITY", false);
        RefreshINI("Option.ini");
    }
    else
    {
        ShowWindowWithFocus("AutoPlay");
        if (GetOptionBool("Giranforge", "AUTO_SKILL"))
            ShowWindowWithFocus("AutoSkillWnd");

        PlaySound("InterfaceSound.system_open_01");

        if (btnhunt != None)
            btnhunt.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9063)));

        if (HuntTex != None)
            HuntTex.SetTexture("L2UI_NewTex.AutomaticPlay.CombatBTNON_Normal");

        SetOptionBool("Giranforge", "AUTOFARM_TOGGLE_VISIBILITY", true);
        RefreshINI("Option.ini");
    }
}

function initishowhide()
{
    if (GetOptionBool("Giranforge", "AUTOFARM_TOGGLE_VISIBILITY"))
    {
        ShowWindowWithFocus("AutoPlay");
        ShowWindowWithFocus("AutoSkillWnd");

        if (btnhunt != None)
            btnhunt.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9063)));

        if (HuntTex != None)
            HuntTex.SetTexture("L2UI_NewTex.AutomaticPlay.CombatBTNON_Normal");
    }
    else
    {
        HideWindow("AutoPlay");
        HideWindow("AutoSkillWnd");

        if (btnhunt != None)
            btnhunt.SetTooltipCustomType(MakeTooltipSimpleText(GetSystemString(9064)));

        if (HuntTex != None)
            HuntTex.SetTexture("L2UI_NewTex.AutomaticPlay.CombatBTNOff_Normal");
    }
}

// -----------------------------
// Expand/Minimize
// -----------------------------
function xxminexpand()
{
    if (IsShowWindow("SideBarWnd.btns"))
    {
        GetButtonHandle("SideBarWnd.btnMin").SetTexture(
            "L2UI_NewTex.SideBar.SidebarExpandBtn_N",
            "L2UI_NewTex.SideBar.SidebarExpandBtn_D",
            "L2UI_NewTex.SideBar.SidebarExpandBtn_O"
        );
        HideWindow("SideBarWnd.btns");
        HideWindow("SideBarWnd.ExpandBG");
        ShowWindow("SideBarWnd.ExpandBG1");
        if (zzbtnmin != None)
            zzbtnmin.SetTooltipCustomType(MakeTooltipSimpleText("Expand"));
    }
    else
    {
        GetButtonHandle("SideBarWnd.btnMin").SetTexture(
            "L2UI_NewTex.SideBar.SidebarMinBtn_N",
            "L2UI_NewTex.SideBar.SidebarMinBtn_D",
            "L2UI_NewTex.SideBar.SidebarMinBtn_O"
        );
        ShowWindow("SideBarWnd.btns");
        ShowWindow("SideBarWnd.ExpandBG");
        HideWindow("SideBarWnd.ExpandBG1");
        if (zzbtnmin != None)
            zzbtnmin.SetTooltipCustomType(MakeTooltipSimpleText("Minimize"));
    }
}

// -----------------------------
// Defaults
// -----------------------------
defaultproperties
{
    m_SideBarButtons="SideBarWnd.btns.SideBarButtons"
    m_SideBarButtons2="SideBarWnd.btns.SideBarButtons2"
    m_btns="SideBarWnd.btns"
    m_SideBarButtons3="SideBarWnd.btns.SideBarButtons3"
    m_SideBarButtons4="SideBarWnd.btns.SideBarButtons4"
    m_SideBarButtons5="SideBarWnd.btns.SideBarButtons5"   // slot 5 = Random Craft
    m_SideBarButtons6="SideBarWnd.btns.SideBarButtons6"
    m_SideBarButtons7="SideBarWnd.btns.SideBarButtons7"
    m_me="SideBarWnd"
}

Hi everyone, can someone tell me how to add `.attendance` or `bypass action="bypass user_attendance"` to the sidebar button 5?
 
Последнее редактирование модератором:
function OnClickButton(string param)

Код:
        case "button5":
            requestBypassToServer("user_attendance");
            break;
 
Назад
Сверху Снизу