Jump to content
  • 0

Shop appear Enchant Level


Question

Posted (edited)

Hello guys im using L2JFrozen_1.5, i have make at the multisell to give the weapons +10, its works but does not appear the enchant level!!!
Maybe someone can help ?

 

lbrs0xm.jpg

 

i want it like this 

 

wgFb6cF.jpg

Edited by cyta5

5 answers to this question

Recommended Posts

  • 0
Posted
3 minutes ago, SweeTs said:

As far as I remember you have to modify client to display enchant value at multisell.

 

maybe you know which file ?

  • 0
Posted (edited)

Check here, did that years ago and it worked.

//================================================================================
// MultiSellWnd.
//================================================================================

class MultiSellWnd extends UICommonAPI;

var array<ItemList> m_itemLIst;
var int m_shopID;
var int pre_itemList;
struct ItemList
{
	var int MultiSellType;
	var int NeededItemNum;
	var array<ItemInfo> ItemInfoList;
	var array<NeededItem> NeededItemList;
};

struct NeededItem
{
	var int Id;
	var string Name;
	var int ‰;
	var string IconName;
	var int Enchant;
	var int CrystalType;
	var int ItemType;
	var int RefineryOp1;
	var int RefineryOp2;
};

const MULTISELLWND_DIALOG_OK=1122;

function OnLoad ()
{
	RegisterEvent(2530);
	RegisterEvent(2540);
	RegisterEvent(2550);
	RegisterEvent(2560);
	RegisterEvent(1710);
	pre_itemList = -1;
}

function OnEvent (int Event_ID, string 
)
{
	switch (Event_ID)
	{
		case 2530:
		HandleShopID(
		);
		break;
		case 2540:
		HandleItemList(
		);
		break;
		case 2550:
		HandleNeededItemList(
		);
		break;
		case 2560:
		HandleItemListEnd(
		);
		break;
		case 1710:
		HandleDialogOK();
		break;
		default:
		break;
	}
}

function OnShow ()
{
	Class'UIAPI_EDITBOX'.Clear("MultiSellWnd.ItemCountEdit");
}

function OnHide ()
{
}

function OnClickButton (string ControlName)
{
	if ( UnknownFunction122(ControlName,"OKButton") )
	{
		HandleOKButton();
	} else {
		if ( UnknownFunction122(ControlName,"CancelButton") )
		{
			Clear();
			HideWindow("MultiSellWnd");
		}
	}
}

function OnClickItem (string strID, int Index)
{
	local int ‹;
	local string 
;

	Class'UIAPI_MULTISELLITEMINFO'.Clear("MultiSellWnd.ItemInfo");
	Class'UIAPI_MULTISELLNEEDEDITEM'.Clear("MultiSellWnd.NeededItem");
	if ( UnknownFunction122(strID,"ItemList") )
	{
		if ( UnknownFunction130(UnknownFunction153(Index,0),UnknownFunction150(Index,m_itemLIst.Length)) )
		{
			 = 0;
			if ( UnknownFunction150(‹,m_itemLIst[Index].NeededItemList.Length) )
			{
				
				 = "";
				ParamAdd(
				,"Name",m_itemLIst[Index].NeededItemList[‹].Name);
				ParamAdd(
				,"ID",string(m_itemLIst[Index].NeededItemList[‹].Id));
				ParamAdd(
				,"Num",string(m_itemLIst[Index].NeededItemList[‹].‰));
				ParamAdd(
				,"Icon",m_itemLIst[Index].NeededItemList[‹].IconName);
				ParamAdd(
				,"Enchant",string(m_itemLIst[Index].NeededItemList[‹].Enchant));
				ParamAdd(
				,"CrystalType",string(m_itemLIst[Index].NeededItemList[‹].CrystalType));
				ParamAdd(
				,"ItemType",string(m_itemLIst[Index].NeededItemList[‹].ItemType));
				Class'UIAPI_MULTISELLNEEDEDITEM'.AddData("MultiSellWnd.NeededItem",
				);
				UnknownFunction163(‹);
				goto JL0086;
			}
			 = 0;
			if ( UnknownFunction150(‹,m_itemLIst[Index].NeededItemNum) )
			{
				Class'UIAPI_MULTISELLITEMINFO'.SetItemInfo("MultiSellWnd.ItemInfo",‹,m_itemLIst[Index].ItemInfoList[‹]);
				UnknownFunction163(‹);
				goto JL0230;
			}
			Class'UIAPI_EDITBOX'.Clear("MultiSellWnd.ItemCountEdit");
			if ( UnknownFunction154(m_itemLIst[Index].MultiSellType,0) )
			{
				Class'UIAPI_EDITBOX'.SetString("MultiSellWnd.ItemCountEdit","1");
				Class'UIAPI_WINDOW'.DisableWindow("MultiSellWnd.ItemCountEdit");
			} else {
				if ( UnknownFunction154(m_itemLIst[Index].MultiSellType,1) )
				{
					Class'UIAPI_EDITBOX'.SetString("MultiSellWnd.ItemCountEdit","1");
					Class'UIAPI_WINDOW'.EnableWindow("MultiSellWnd.ItemCountEdit");
				}
			}
			if ( UnknownFunction155(pre_itemList,Index) )
			{
				if ( DialogIsMine() )
				{
					DialogHide();
				}
			}
		}
	}
}

function Print ()
{
	local int ‹;
	local int 
;

	 = 0;
	if ( UnknownFunction150(‹,m_itemLIst.Length) )
	{
		
		 = 0;
		if ( UnknownFunction150(
		,m_itemLIst[‹].NeededItemList.Length) )
		{
			Debug(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112("Print (",string(‹)),","),string(
			)),"), "),m_itemLIst[‹].NeededItemList[
			].Name));
			UnknownFunction163(
			);
			goto JL001E;
		}
		UnknownFunction163(‹);
		goto JL0007;
	}
}

function HandleShopID (string 
)
{
	Clear();
	ParseInt(
	,"shopID",m_shopID);
}

function Clear ()
{
	m_itemLIst.Length = 0;
	Class'UIAPI_MULTISELLITEMINFO'.Clear("MultiSellWnd.ItemInfo");
	Class'UIAPI_MULTISELLNEEDEDITEM'.Clear("MultiSellWnd.NeededItem");
	Class'UIAPI_ITEMWINDOW'.Clear("MultiSellWnd.ItemList");
}

function HandleItemList (string 
)
{
	local ItemInfo Info;
	local int Index;
	local int †;
	local int ‹;
	local int ClassID;
	local bool bMatchFound;

	ParseInt(
	,"classID",ClassID);
	Class'UIDATA_ITEM'.GetItemInfo(ClassID,Info);
	Info.ClassID = ClassID;
	ParseInt(
	,"index",Index);
	ParseInt(
	,"type",†);
	ParseInt(
	,"ID",Info.Reserved);
	ParseInt(
	,"slotBitType",Info.SlotBitType);
	ParseInt(
	,"itemType",Info.ItemType);
	ParseInt(
	,"itemCount",Info.ItemNum);
	ParseInt(
	,"Enchant",Info.Enchanted);
	ParseInt(
	,"OutputRefineryOp1",Info.RefineryOp1);
	ParseInt(
	,"OutputRefineryOp2",Info.RefineryOp2);
	if ( UnknownFunction150(0,Info.Durability) )
	{
		Info.CurrentDurability = Info.Durability;
	}
	if ( UnknownFunction154(Index,0) )
	{
		 = m_itemLIst.Length;
		m_itemLIst.Length = UnknownFunction146(‹,1);
		m_itemLIst[‹].MultiSellType = †;
		m_itemLIst[‹].NeededItemNum = 1;
		m_itemLIst[‹].ItemInfoList.Length = UnknownFunction146(Index,1);
		m_itemLIst[‹].ItemInfoList[Index] = Info;
	} else {
		if ( UnknownFunction151(Index,0) )
		{
			bMatchFound = False;
			 = UnknownFunction147(m_itemLIst.Length,1);
			if ( UnknownFunction153(‹,0) )
			{
				if ( UnknownFunction130(UnknownFunction130(UnknownFunction154(m_itemLIst[‹].ItemInfoList[0].Reserved,Info.Reserved),UnknownFunction154(m_itemLIst[‹].ItemInfoList[0].RefineryOp1,Info.RefineryOp1)),UnknownFunction154(m_itemLIst[‹].ItemInfoList[0].RefineryOp2,Info.RefineryOp2)) )
				{
					bMatchFound = True;
				} else {
					UnknownFunction164(‹);
					goto JL0225;
				}
			}
			if ( bMatchFound )
			{
				if ( UnknownFunction152(m_itemLIst[‹].ItemInfoList.Length,Index) )
				{
					m_itemLIst[‹].ItemInfoList.Length = UnknownFunction146(Index,1);
				}
JL0225:
				m_itemLIst[‹].MultiSellType = †;
				m_itemLIst[‹].ItemInfoList[Index] = Info;
				UnknownFunction163(m_itemLIst[‹].NeededItemNum);
			} else {
				Debug("MultiSellWnd Error!!");
			}
		}
	}
}

function HandleNeededItemList (string 
)
{
	local NeededItem item;
	local int ‹;
	local int Id;
	local int Index;
	local int RefineryOp1;
	local int RefineryOp2;

	ParseInt(
	,"ID",Id);
	ParseInt(
	,"refineryOp1",RefineryOp1);
	ParseInt(
	,"refineryOp2",RefineryOp2);
	ParseInt(
	,"ClassID",item.Id);
	ParseInt(
	,"count",item.‰);
	ParseInt(
	,"enchant",item.Enchant);
	ParseInt(
	,"inputRefineryOp1",item.RefineryOp1);
	ParseInt(
	,"inputRefineryOp2",item.RefineryOp2);
	if ( UnknownFunction154(item.Id,-100) )
	{
		item.Name = GetSystemString(1277);
		item.IconName = "icon.etc_i.etc_pccafe_point_i00";
		item.Enchant = 0;
		item.ItemType = -1;
		item.Id = 0;
	} else {
		if ( UnknownFunction154(item.Id,-200) )
		{
			item.Name = GetSystemString(1311);
			item.IconName = "icon.etc_i.etc_bloodpledge_point_i00";
			item.Enchant = 0;
			item.ItemType = -1;
			item.Id = 0;
		} else {
			item.Name = Class'UIDATA_ITEM'.GetItemName(item.Id);
			item.IconName = Class'UIDATA_ITEM'.GetItemTextureName(item.Id);
		}
	}
	 = UnknownFunction147(m_itemLIst.Length,1);
	if ( UnknownFunction153(‹,0) )
	{
		if ( UnknownFunction130(UnknownFunction130(UnknownFunction154(m_itemLIst[‹].ItemInfoList[0].Reserved,Id),UnknownFunction154(m_itemLIst[‹].ItemInfoList[0].RefineryOp1,RefineryOp1)),UnknownFunction154(m_itemLIst[‹].ItemInfoList[0].RefineryOp2,RefineryOp2)) )
		{
			Index = m_itemLIst[‹].NeededItemList.Length;
			m_itemLIst[‹].NeededItemList.Length = UnknownFunction146(Index,1);
			item.ItemType = Class'UIDATA_ITEM'.GetItemDataType(item.Id);
			item.CrystalType = Class'UIDATA_ITEM'.GetItemCrystalType(item.Id);
			m_itemLIst[‹].NeededItemList[Index] = item;
		} else {
			UnknownFunction164(‹);
			goto JL0252;
		}
	}
}

function HandleItemListEnd (string 
)
{
	local WindowHandle m_inventoryWnd;

	m_inventoryWnd = GetHandle("InventoryWnd");
	if ( m_inventoryWnd.IsShowWindow() )
	{
		m_inventoryWnd.HideWindow();
	}
	ShowWindow("MultiSellWnd");
	Class'UIAPI_WINDOW'.SetFocus("MultiSellWnd");
	ShowItemList();
}

function ShowItemList ()
{
	local ItemInfo Info;
	local int ‹;

	 = 0;
	if ( UnknownFunction150(‹,m_itemLIst.Length) )
	{
		Info = m_itemLIst[‹].ItemInfoList[0];
		Class'UIAPI_ITEMWINDOW'.AddItem("MultiSellWnd.ItemList",Info);
		UnknownFunction163(‹);
		goto JL0007;
	}
}

function HandleOKButton ()
{
	local int SelectedIndex;
	local int ItemNum;

	SelectedIndex = Class'UIAPI_ITEMWINDOW'.GetSelectedNum("MultiSellWnd.ItemList");
	ItemNum = int(Class'UIAPI_EDITBOX'.GetString("MultiSellWnd.ItemCountEdit"));
	if ( UnknownFunction153(SelectedIndex,0) )
	{
		DialogSetReservedInt(SelectedIndex);
		DialogSetReservedInt2(ItemNum);
		DialogSetID(1122);
		DialogShow(4,GetSystemMessage(1383));
		pre_itemList = SelectedIndex;
	}
}

function HandleDialogOK ()
{
	local string 
;
	local int SelectedIndex;

	if ( DialogIsMine() )
	{
		SelectedIndex = DialogGetReservedInt();
		ParamAdd(
		,"ShopID",string(m_shopID));
		ParamAdd(
		,"ItemID",string(m_itemLIst[SelectedIndex].ItemInfoList[0].Reserved));
		ParamAdd(
		,"RefineryOp1",string(m_itemLIst[SelectedIndex].ItemInfoList[0].RefineryOp1));
		ParamAdd(
		,"RefineryOp2",string(m_itemLIst[SelectedIndex].ItemInfoList[0].RefineryOp2));
		ParamAdd(
		,"ItemCount",string(DialogGetReservedInt2()));
		ParamAdd(
		,"Enchant",string(DialogGetReservedInt2()));
		RequestMultiSellChoose(
		);
	}
}

You also need to implement the server side to send the enchant packet.

Edited by filimon

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Gemini Pro 18 Month Personal Gmail Upgrade Available We are now accepting new orders for Gemini Pro + Google One AI Pro 18 Month Plan.   Plan Details: ✅ 18 Months Validity ✅ Upgrade on Your Personal Gmail ✅ 5TB Google One Storage ✅ Gemini Pro / Google AI Pro Access ✅ Veo 3, NotebookLM, Google AI Features ✅ Family Sharing Support where available ✅ Fast Delivery: 10 minutes to 24 hours ✅ 24/7 KloudItem Support   Price: $15 One Time Payment   Important: Stock is limited, so please check availability before ordering.   Order & Support: Order from KloudItem or contact us through our official support channel. ------------------------------------------- CONTACT Order Here: BUY GEMINI PRO Email: support@klouditem.com Telegram Channel: @klouditemcom Telegram Support: klouditem All Contact: https://linktr.ee/klouditem Website: https://klouditem.com Hours: 24/7 -- Always online
    • Hello everyone,   A quick update from the Emerge team. The official launch of Emerge Eclipse x10 is just around the corner and we are currently finishing the final preparations to ensure a smooth and stable opening for all players. Our team has been working on performance improvements, network optimizations, and additional infrastructure to provide the best possible experience from day one.   🚀 Launch Date: 7 June 2026 🕕 Launch Time: 18:00 CET We would like to invite everyone to join our Discord community where all announcements, updates, events, and support information are posted first. 🌐 Website: https://l2emerge.com 💬 Discord: https://discord.gg/l2emerge Thank you for all the support and feedback during the preparation phase. We look forward to seeing both new and veteran Lineage II players on launch day. See you soon on Emerge!
    • Added an enchant NPC ( more infos on test server)     - remade autofarm system, more clever , more humanlike steps, catacomb mode in route farm and rewrite of route farming   - Updated Antibot to defend even more from more advanced adrenaline users ( not gonna write how 😂 )   - now dll of antibot will not be flagged from antivirus or defenders   - Updated some more the AI based Agent     Our discord https://discord.gg/acvqx9rbhy   L2R Off files / monthly subscription
    • Interlude will never be the same again. To celebrate our first 3 months online, L2 Detona proudly presents League of Lineage.   A brand-new game mode inspired by the world's biggest MOBAs, bringing lane battles, minions, towers, strategic objectives, and epic team fights into the world of Lineage 2. All of this while preserving the essence that made Interlude one of the most beloved chronicles in Lineage 2 history.   ⚔️ Destroy enemy towers. 🛡️ Defend your base. 👑 Lead your team to victory.   📅 Officially launching on June 12, 2026. 🔥 Jump into the action right now through System_Test and become one of the first players to experience League of Lineage. Server Rates XP: 500x SP: 500x Adena: 200x Server Features Full Official Interlude gameplay with custom modifications Exclusive MOBA Arena 3 Hour Buffs for comfortable gameplay No Class Change Quests Website: https://www.l2detona.com Images of project: https://imgur.com/a/Lajn9Ag
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..