interface Fafurion 166
Hi everyone, can someone tell me how to add `.attendance` or `bypass action="bypass user_attendance"` to the sidebar button 5?
Код:
// ============================================================================
// 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?
Последнее редактирование модератором:

