Jump to content
  • 0

Community board's top button handlers


Question

11 answers to this question

Recommended Posts

  • 0
Posted

The all buttons on the top of community board window locates inside interface.xdat as Tabs in TabControl element of BoardWnd scheme.

 

You need XDAT Editor for making changes. How to use this tool a lot a videos and manuals.

  • Upvote 1
  • 0
Posted

Depends, if you just want to edit their name sysstring-e.dat is your file. If you want to edit the bypass name you should do what root mentioned. If though you want to edit/create bypasses for each button you should do it server side.

  • 0
Posted
8 hours ago, Zake said:

Depends, if you just want to edit their name sysstring-e.dat is your file. If you want to edit the bypass name you should do what root mentioned. If though you want to edit/create bypasses for each button you should do it server side.

I want to change their bypass, I want for example, if the memo takes you to your notes to take you somewhere else

  • 0
Posted
12 hours ago, Jobalabido said:

I want to change their bypass, I want for example, if the memo takes you to your notes to take you somewhere else

requestbypasstoserver may help you find where cb bypasses are handled. Usually its under gameserver/communityboard. Although which pack do you use?

  • 0
Posted
2 hours ago, Zake said:

requestbypasstoserver may help you find where cb bypasses are handled. Usually its under gameserver/communityboard. Although which pack do you use?

mobius

  • 0
Posted (edited)

For changing bypass commands for Community board need edit Interface scripts into client side and all places from server side scripts and classes.

 

From my PoV this act of madness and better way is delete the tab system from client side and use usual HTML viewer as uses for NPC dialogues. This will give more deployment for making own Community board command ierarchy.

 

But you can be disagree with me and continue to write shitcode because it easy and isn't requeres a lot of knowledge.

 

I'm sure/belive what all client modifications available even for classic clients.

Edited by Rootware
Fix text typos.
  • 0
Posted
5 hours ago, Rootware said:

For changing bypass commands for Community board need edit Interface scripts into client side and all places from server side scripts and classes.

 

From my PoV this act of madness and better way is delete the tab system from client side and use usual HTML viewer as uses for NPC dialogues. This will give more deployment for making own Community board command ierarchy.

 

But you can be disagree with me and continue to write shitcode because it easy and isn't requeres a lot of knowledge.

 

I'm sure/belive what all client modifications available even for classic clients.

 

what about ShowBoard packet? afaik it affects most CB bypasses

  • 0
Posted
16 hours ago, xdem said:

 

what about ShowBoard packet? afaik it affects most CB bypasses

 

I know what i said. That packet do nothing w/o client side edit. Look at this before:

class BoardWnd extends UIScriptEx;

var bool	m_bShow;
var bool	m_bBtnLock;
var string 	m_Command[8];

var HtmlHandle	m_hBoardWndHtmlViewer;

var TabHandle	m_hBoardWndTabCtrl;

function OnRegisterEvent()
{
	RegisterEvent( EV_ShowBBS );
	RegisterEvent( EV_ShowBoardPacket );
}

function OnLoad()
{
	if(CREATE_ON_DEMAND==0)
		OnRegisterEvent();


	m_hBoardWndHtmlViewer=GetHtmlHandle("BoardWnd.HtmlViewer");
	m_hBoardWndTabCtrl=GetTabHandle("BoardWnd.TabCtrl");

	m_bShow = false;
	m_bBtnLock = false;
}

function OnShow()
{
	m_bShow = true;
}

function OnHide()
{
	m_bShow = false;
	class'UIAPI_WINDOW'.static.SetFocus("ChatWnd");
	
}

function OnEvent(int Event_ID, string param)
{
	if (Event_ID == EV_ShowBBS)
	{
		HandleShowBBS(param);
	}
	else if (Event_ID == EV_ShowBoardPacket)
	{
		HandleShowBoardPacket(param);
	}
}

function OnClickButton( string strID )
{	
	Debug( "-->" @ strID );


	switch( strID )
	{
	case "btnBookmark":
		OnClickBookmark();
		break;
	}
	
	//ЕЗ№цЖ° Е¬ёЇ
	if (Left(strID, 7) == "TabCtrl")
	{
		strID = Mid(strID, 7);
		if (!class'UIAPI_WINDOW'.static.IsMinimizedWindow( "BoardWnd" ))
		{
			ShowBBSTab(int(strID));
		}
	}
}

//ГК±вИ­
function Clear()
{
	
}

function HandleShowBBS(string param)
{
	local int Index;
	local int Init;
	
	ParseInt(param, "Index", Index);
	ParseInt(param, "Init", Init);
	
	//ГК±в»уЕВ·О ї©ґВ°Ў? (SystemMenu·ОєОЕН)
	if (Init>0)
	{
		if (m_bShow)
		{
			//АМ№М єёАМ°н АЦАёёй ґЭґВґЩ.
			PlayConsoleSound(IFST_WINDOW_CLOSE);
			class'UIAPI_WINDOW'.static.HideWindow("BoardWnd");
			return;
		}
		else
		{
			if (!m_hBoardWndHtmlViewer.IsPageLock())
			{
				m_hBoardWndHtmlViewer.SetPageLock(true);
				m_hBoardWndTabCtrl.SetTopOrder(0, false);
				m_hBoardWndHtmlViewer.Clear();
				RequestBBSBoard();
			}
		}
		
		//іЄБЯїЎ HandleShowBoardPacketїЎј­ ShowWindowё¦ ЗСґЩ.
	}
	else
	{
		m_hBoardWndTabCtrl.SetTopOrder(Index, false);
		m_hBoardWndHtmlViewer.Clear();
		ShowBBSTab(Index);
	}
}

function HandleShowBoardPacket(string param)
{
	local int idx;
	local int OK;
	local string Address;
	
	ParseInt(param, "OK", OK);
	if (OK<1)
	{
		class'UIAPI_WINDOW'.static.HideWindow("BoardWnd");
		return;
	}
	
	//Clear
	for (idx=0; idx<8; idx++)
		m_Command[idx] = "";
	
	ParseString(param, "Command1", m_Command[0]);
	ParseString(param, "Command2", m_Command[1]);
	ParseString(param, "Command3", m_Command[2]);
	ParseString(param, "Command4", m_Command[3]);
	ParseString(param, "Command5", m_Command[4]);
	ParseString(param, "Command6", m_Command[5]);
	ParseString(param, "Command7", m_Command[6]);
	ParseString(param, "Command8", m_Command[7]);
	m_bBtnLock = false;
	
	ParseString(param, "Address", Address);
	m_hBoardWndHtmlViewer.SetHtmlBuffData(Address);
	if (!m_bShow)
	{
		PlayConsoleSound(IFST_WINDOW_OPEN);
		class'UIAPI_WINDOW'.static.ShowWindow("BoardWnd");
		class'UIAPI_WINDOW'.static.SetFocus("BoardWnd");
	}
}

function ShowBBSTab(int Index)
{
	local string strBypass;
	local EControlReturnType Ret;
	
	switch( Index )
	{
	//ГіАЅАё·О
	case 0:
		strBypass = "bypass _bbshome";
		break; 
	//Бс°ЬГЈ±в
	case 1:
		strBypass = "bypass _bbsgetfav"; 
		break;
	//ИЁЖдАМБц ёµЕ©(10.1.11 №®ј±БШ јцБ¤)
	case 2:
		strBypass = "bypass _bbslink";
		break;
	//БцїЄёµЕ©
	case 3:
		strBypass = "bypass _bbsloc";
		break;
	//ЗчёНёµЕ©
	case 4:
		strBypass = "bypass _bbsclan";
		break;
	//ёЮёр
	case 5:
		strBypass = "bypass _bbsmemo";
		break;
	//ёЮАП
	case 6:
		strBypass = "bypass _maillist_0_1_0_"; 
		break;
	//ДЈ±ё°ьё®
	case 7:
		strBypass = "bypass _friendlist_0_"; 
		break;
	}
	
	if (Len(strBypass)>0)
	{
		Ret = m_hBoardWndHtmlViewer.ControllerExecution(strBypass);
		if (Ret == CRTT_CONTROL_USE)
		{
			m_bBtnLock = true;
		}
	}	
}

function OnClickBookmark()
{
	local EControlReturnType Ret;
	
	if (Len(m_Command[7])>0 && !m_bBtnLock)
	{
		Ret = m_hBoardWndHtmlViewer.ControllerExecution(m_Command[7]);
		if (Ret == CRTT_CONTROL_USE)
		{
			m_bBtnLock = true;
		}
	}
}
defaultproperties
{
}

 

All bypasses is hardcoded.

  • 0
Posted (edited)

@Jobalabido

 

Let us know if you've fixed the handlers so we can provide you the help you need.

Thanks in advance!

Edited by SectoneART
Guest
This topic is now closed to further replies.


  • Posts

    • Lineage2Network - Interlude Reimagined   Embark on a revitalized journey through the classic Interlude era with Lineage2.Network. Our server is meticulously crafted by veteran players to deliver a seamless and engaging experience, blending the nostalgia of the Chaotic Chronicle with modern enhancements.     Server details   Chronicle: Interlude + Classic Rates: EXP x30 | Adena x10 | Drop x10 | Spoil x10     Server features   Daily Missions - complete special tasks for daily rewards Attendance Rewards - get rewards for online time Custom Events - TVT, DM, CTF NPC buffer duration - 2 hours   Mana Potions - restores 1000 MP, 10s cooldown Ring of Core additional stats: +1 STR Earring of Orfen additional stats: +1 INT Shadow Earring of Zaken - 7 days Shadow Ring of Queen Ant - 7 days   Max buff count - 24 (20 + 4 with Divine Inspiration) Noblesse, Heroic Valor, Flames of Invincibility and Celestial Shield don't take buff slot Reworked Cancel, Mage and Warrior Banes – removed buffs reappear after 30s Block Buffs - block all incoming buffs except from self/party Sweeper Festival added to Spoiler class   Subclass – retail or purchasable Noblesse – retail or purchasable up to Barakiel; collect 8 fragments for full staff 1st & 2nd class free, 3rd needs 700 Halisha Marks or is purchasable New Olympiad System: new stadiums with NPC buffer,  1 week period.     Key dates     Beta Launch: April 14, 2025 Official Launch: May 9, 2025     Check out full server details in our website And visit our discord   Join us and be part of community where classic gameplay meets innovative updates. Whether you're a solo adventurer or part of a formidable clan, Lineage2.Network offers a dynamic and balanced environment for all.  
    • Good day. Our game currency store is looking for suppliers of adena and items on a project such as L2REBORN x10. We also sell Epic jewelry and various items on this project L2REBORN x10. There are items and adena on L2REBORN x1. For all questions, write to us in discord - goddardshop
    • AdvExt64 are the only one real L2OFF Developpers still alive. Athena Project is L2J. L2Reborn is Java for their Interlude Seasonal & Essence servers, the rest are fully L2OFF. If you want a pro L2OFF implementation of Protocol 110, your only option is AdvExt64 and be ready to get out your cash, you have to order them a special creation, it will not be cheap at all. If you want a more okish implementation, you can use the one shared here on MXC.
  • Topics

×
×
  • Create New...