Jump to content

911reg

L2Client Developer
  • Posts

    349
  • Credits

  • Joined

  • Last visited

  • Days Won

    27
  • Feedback

    0%

Everything posted by 911reg

  1. sorry, unfortunately i've searched my whole fuckin drive and didn't find an unicode patch for C6
  2. basically, h5 dat files have a different structure, i'll lave some pics here: https://cdn.discordapp.com/attachments/975198663146106940/1022660595180384276/unknown.png https://cdn.discordapp.com/attachments/975198663146106940/1022660603413803162/unknown.png thre green ones are from Interlude, and the orange ones are from H5. (you'll need to zoom on them) and here are the 'adapted' versions https://www.mediafire.com/file/a3m40m5lqhxihc2/text.txt/file you can figure out how to adapt them by just looking at these lines
  3. Hey, kinda late but still. Reply if you still need to know how to do this, might be able to help you out
  4. added another link, lemme know. the H5 one seems to be working fine btw
  5. wdym? the link doesn't work for you? edit: virustotal scan use at your own risk, can't tell if you'll get any problem with these. here's another link
  6. Hey, i have some patches for unicode support, though i dont have a specific one for C6; dunno if any of them would work for c6. Here they are, in case you wanna take a look. link credits to Fyyre.
  7. if you can't manage to do a compiler for prot. 24 i'd suggest you to move on to 110 or somethin', otherwise you'll be really limited >> sadly, again, there's nothing you can do from xdat alone, at least for tooltips. in case you wanna try to buy it, you should talk to Spectre or Celestine on their discord
  8. you need to modify interface.u > tooltip.uc, you can't do anything from interface.xdat. actually, that image comes from l2aqua's interface, those guys shared their interface compiler a while ago, here's the script: class Tooltip extends UICommonAPI; const TOOLTIP_MINIMUM_WIDTH = 144; const TOOLTIP_SETITEM_MAX = 3; const ATTRIBUTE_FIRE = 0; const ATTRIBUTE_WATER = 1; const ATTRIBUTE_WIND = 2; const ATTRIBUTE_EARTH = 3; const ATTRIBUTE_HOLY = 4; const ATTRIBUTE_UNHOLY = 5; var CustomTooltip m_Tooltip; var DrawItemInfo m_Info; var Array<int> AttackAttLevel; var Array<int> AttackAttCurrValue; var Array<int> AttackAttMaxValue; //모든 공격 속성의 레벨, 현재레벨에서의 값, 현재레벨에서의 최대값을 여기에 저장한다. var Array<int> DefAttLevel; var Array<int> DefAttCurrValue; var Array<int> DefAttMaxValue; //모든 방어 속성의 레벨, 현재레벨에서의 값, 현재레벨에서의 최대값을 여기에 저장한다. var int NowAttrLv; var int NowMaxValue; var int NowValue; var bool BoolSelect; function OnRegisterEvent() { RegisterEvent( EV_RequestTooltipInfo ); } function OnLoad() { BoolSelect = true; // 숏컷 툴팁 켜기/끄기 기본값을 켜기로(TTP#41925) 2010.8.23 - winkey if(CREATE_ON_DEMAND==0) OnRegisterEvent(); } function OnEvent(int Event_ID, string param) { switch( Event_ID ) { case EV_RequestTooltipInfo: //debug("툴팁이벤트 넘어오냐"); HandleRequestTooltipInfo(param); break; } } function setBoolSelect( bool b ) { BoolSelect = b; } function HandleRequestTooltipInfo(string param) { local String TooltipType; local int SourceType; local ETooltipSourceType eSourceType; ClearTooltip(); if (!ParseString(param, "TooltipType", TooltipType)) return; if (!ParseInt(param, "SourceType", SourceType)) return; eSourceType = ETooltipSourceType(SourceType); //AddSystemMessageString(""$TooltipType); //AddSystemMessageString(""$eSourceType); ////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// Normal Tooltip ///////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// //debug("Tooltip타입:"$TooltipType); if (TooltipType == "Text") { ReturnTooltip_NTT_TEXT(param, eSourceType, false); } else if (TooltipType == "Description") { ReturnTooltip_NTT_TEXT(param, eSourceType, true); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// ItemWnd Tooltip //////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// else if (TooltipType == "Action") { ReturnTooltip_NTT_ACTION(param, eSourceType); } else if (TooltipType == "Skill") { ReturnTooltip_NTT_SKILL(param, eSourceType); } else if (TooltipType == "NormalItem") { ReturnTooltip_NTT_NORMALITEM(param, eSourceType); } else if (TooltipType == "Shortcut") { ReturnTooltip_NTT_SHORTCUT(param, eSourceType); } else if (TooltipType == "AbnormalStatus") { ReturnTooltip_NTT_ABNORMALSTATUS(param, eSourceType); } else if (TooltipType == "RecipeManufacture") { ReturnTooltip_NTT_RECIPE_MANUFACTURE(param, eSourceType); } else if (TooltipType == "Recipe") { ReturnTooltip_NTT_RECIPE(param, eSourceType, false); } else if (TooltipType == "RecipePrice") { ReturnTooltip_NTT_RECIPE(param, eSourceType, true); } else if (TooltipType == "Inventory" || TooltipType == "InventoryPrice1" || TooltipType == "InventoryPrice2" || TooltipType == "InventoryPrice1HideEnchant" || TooltipType == "InventoryPrice1HideEnchantStackable" || TooltipType == "InventoryPrice2PrivateShop" || TooltipType == "InventoryWithIcon" || TooltipType == "InventoryPawnViewer") // PawnViewer용 추가 - lancelot 2007. 10. 16. { //~ debug("툴팁보여주세요."); ReturnTooltip_NTT_ITEM(param, TooltipType, eSourceType); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////// ListCtrl Tooltip /////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// //선준 수정(2010.02.22 ~ 03.08) 완료 else if ( TooltipType == "RoomList" ) { ReturnTooltip_NTT_ROOMLIST(param, eSourceType); } else if ( TooltipType == "UserList" ) { ReturnTooltip_NTT_USERLIST(param, eSourceType); } else if (TooltipType == "PartyMatch") { ReturnTooltip_NTT_PARTYMATCH(param, eSourceType); } else if (TooltipType == "UnionList") { ReturnTooltip_NTT_UNIONLIST(param, eSourceType); } else if (TooltipType == "QuestInfo") { ReturnTooltip_NTT_QUESTINFO(param, eSourceType); } else if (TooltipType == "QuestList") { ReturnTooltip_NTT_QUESTLIST(param, eSourceType); } else if (TooltipType == "RaidList") { ReturnTooltip_NTT_RAIDLIST(param, eSourceType); } else if (TooltipType == "ClanInfo") { ReturnTooltip_NTT_CLANINFO(param, eSourceType); } //선준 수정( 10.03.30 ) 완료 //우편함에 툴팁 추가. else if (TooltipType == "PostInfo") { ReturnTooltip_NTT_POSTINFO(param, eSourceType); } ///////////////////////////////////////////////////// // MANOR else if (TooltipType == "ManorSeedInfo" || TooltipType == "ManorCropInfo" || TooltipType == "ManorSeedSetting" || TooltipType == "ManorCropSetting" || TooltipType == "ManorDefaultInfo" || TooltipType == "ManorCropSell") { ReturnTooltip_NTT_MANOR(param, TooltipType, eSourceType); } // [퀘스트 아이템 툴팁 추가] else if (TooltipType == "QuestItem") { ReturnTooltip_NTT_QUESTREWARDS(param, eSourceType); } } function bool IsEnchantableItem(EItemParamType Type) { return (Type == ITEMP_WEAPON || Type == ITEMP_ARMOR || Type == ITEMP_ACCESSARY || Type == ITEMP_SHIELD); } function ClearTooltip() { m_Tooltip.SimpleLineCount = 0; m_Tooltip.MinimumWidth = 0; m_Tooltip.DrawList.Remove(0, m_Tooltip.DrawList.Length); } function StartItem() { local DrawItemInfo infoClear; m_Info = infoClear; } function EndItem() { m_Tooltip.DrawList.Length = m_Tooltip.DrawList.Length + 1; m_Tooltip.DrawList[m_Tooltip.DrawList.Length-1] = m_Info; } ///////////////////////////////////////////////////////////////////////////////// // TEXT function ReturnTooltip_NTT_TEXT(string param, ETooltipSourceType eSourceType, bool bDesc) { local string strText; local int ID; if (eSourceType == NTST_TEXT) { if (ParseString( param, "Text", strText)) { if (Len(strText)>0) { if (bDesc) { m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = strText; EndItem(); } else { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = strText; EndItem(); } } } else if (ParseInt( param, "ID", ID)) { if (ID>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_ID = ID; EndItem(); } } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // INVENTORY Etc function ReturnTooltip_NTT_ITEM(string param, String TooltipType, ETooltipSourceType eSourceType) { local ItemInfo Item; local EItemType eItemType; local EEtcItemType eEtcItemType; local bool bLargeWidth; local string SlotString; local string strTmp; local int nTmp; local int idx; //제련효과 //local string ItemName; local int Quality; local int ColorR; local int ColorG; local int ColorB; local string strDesc1; local string strDesc2; local string strDesc3; // 보급형 아이템 //local int ItemNameClass; //셋트아이템 //~ local array<ItemID> arrItemID; local int SetID; //~ local int SetID2; //아데나읽어주기 local string strAdena; local string strAdenaComma; local color AdenaColor; local ItemID tmpItemID; local bool FirstTime1; if (eSourceType == NTST_ITEM) { ParamToItemInfo(param, Item); SlotString = GetSlotTypeString(Item.ItemType, Item.SlotBitType, Item.ArmorType); eItemType = EItemType(Item.ItemType); eEtcItemType = EEtcItemType(Item.ItemSubType); if( Item.consumeType == 0 ) { //item icon StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.u_nTextureWidth = 32; m_Info.u_nTextureHeight = 32; m_Info.u_strTexture = Item.IconName; EndItem(); if( Item.IconPanel == "InventoryTabs.pvp_tab" && Item.Enchanted > 0 ) Item.IconPanel = "InventoryTabs.pvp_tab_enchant"$Item.Enchanted; else if( Item.IconPanel == "" && Item.Enchanted > 0 ) Item.IconPanel = "InventoryTabs.tab_enchant"$Item.Enchanted; StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.nOffSetX = -32; m_Info.u_nTextureWidth = 32; m_Info.u_nTextureHeight = 32; m_Info.u_strTexture = Item.IconPanel; EndItem(); if( Item.Enchanted > 0 ) { //item enchant StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 5; m_Info.t_strText = "+"$Item.Enchanted; m_Info.t_color.R =230; m_Info.t_color.G =164; m_Info.t_color.B =8; m_Info.t_color.A =255; EndItem(); } if( (Item.refineryOp1 != 0 || Item.refineryOp2 != 0) && InStr(Caps(Item.Description), Caps("masterwork") ) != (-1) ) { //item name StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 4; m_Info.t_strText = "Augmented "$Item.Name; m_Info.t_color.R =70; m_Info.t_color.G =247; m_Info.t_color.B =135; m_Info.t_color.A =255; EndItem(); } else if( Item.refineryOp1 != 0 || Item.refineryOp2 != 0 ) { //item name StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 4; m_Info.t_strText = "Augmented "$Item.Name; m_Info.t_color.R =70; m_Info.t_color.G =243; m_Info.t_color.B =237; m_Info.t_color.A =255; EndItem(); } else if( InStr(Caps(Item.Description), Caps("masterwork") ) != (-1) ) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 4; m_Info.t_strText = ""$Item.Name; m_Info.t_color.R =243; m_Info.t_color.G =241; m_Info.t_color.B =70; m_Info.t_color.A =255; EndItem(); } else { //item name StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 4; m_Info.t_strText = Item.Name; EndItem(); } //item special ability if( Item.AdditionalName != "" ) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 4; m_Info.t_strText = Item.AdditionalName; m_Info.t_color.R =229; m_Info.t_color.G =195; m_Info.t_color.B =95; m_Info.t_color.A =255; EndItem(); } //item grade icon AddTooltipItemGrade(Item); strTmp = GetWeaponTypeString(Item.WeaponType); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.bLineBreak = true; m_Info.nOffSetX = 36; m_Info.nOffSetY = -11; if( strTmp != "" ) m_Info.t_strText = strTmp$" / "$SlotString; else m_Info.t_strText = SlotString; m_Info.t_color.R =175; m_Info.t_color.G =154; m_Info.t_color.B =120; m_Info.t_color.A =255; EndItem(); m_Tooltip.SimpleLineCount = 2; if (TooltipType == "InventoryPrice1" || TooltipType == "InventoryPrice1HideEnchant" || TooltipType == "InventoryPrice1HideEnchantStackable") { strAdena = Int64ToString(Item.Price); strAdenaComma = MakeCostString(strAdena); AdenaColor = GetNumericColor(strAdenaComma); //가격 : xxx,xxx,xxx AddTooltipItemOption(322, strAdenaComma $ " ", true, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); //"아데나" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID= 469; EndItem(); //SimpleTooltip을 가격까지 보여준다. m_Tooltip.SimpleLineCount = 3; //읽어주기 스트링 if (Item.Price>IntToInt64(0)) { m_Tooltip.SimpleLineCount = 4; AddTooltipItemOption(0, "(" $ ConvertNumToText(strAdena) $ ")", false, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); } } //InventoryPrice2 타입 if (TooltipType == "InventoryPrice2" || TooltipType == "InventoryPrice2PrivateShop") { strAdena = Int64ToString(Item.Price); strAdenaComma = MakeCostString(strAdena); AdenaColor = GetNumericColor(strAdenaComma); //가격 : 1개당 AddTooltipItemOption2(322, 468, true, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); //"xxx,xxx,xxx " StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_strText = " " $ strAdenaComma $ " "; EndItem(); //"아데나" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID= 469; EndItem(); //SimpleTooltip을 가격까지 보여준다. m_Tooltip.SimpleLineCount = 3; //읽어주기 스트링 if (Item.Price>IntToInt64(0)) { m_Tooltip.SimpleLineCount = 4; //"(" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_strText = "("; EndItem(); //"1개당" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID = 468; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_strText = " " $ ConvertNumToText(strAdena) $ ")"; EndItem(); } } //InventoryPrice2PrivateShop 타입 if (TooltipType == "InventoryPrice2PrivateShop") { if (IsStackableItem(Item.ConsumeType) && Item.Reserved64 > IntToInt64(0)) { //"구매개수 : xx" AddTooltipItemOption(808, Int64ToString(Item.Reserved64), true, true, false); } } } else { if (TooltipType == "InventoryWithIcon") { StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.u_nTextureWidth = 32; m_Info.u_nTextureHeight = 32; m_Info.u_strTexture = Item.IconName; EndItem(); if( Item.consumeType != 0 && Int(Int64ToString(Item.ItemNum)) > 0 && Item.ID.ClassID != 57 && Item.ID.ClassID != 5575 ) Item.IconPanel = "InventoryTabs.tab_consumables"$Min(100, Int(Int64ToString(Item.ItemNum))); StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.nOffSetX = -32; m_Info.u_nTextureWidth = 32; m_Info.u_nTextureHeight = 32; m_Info.u_strTexture = Item.IconPanel; EndItem(); AddTooltipItemBlank(4); } StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; //m_Info.t_strText = ""$Item.Name$"("$Int64ToString(Item.ItemNum)$")"; m_Info.t_strText = ""$Item.Name; EndItem(); if (Item.AdditionalName != "") { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = Item.AdditionalName; m_Info.nOffSetX = 4; m_Info.t_color.R =229; m_Info.t_color.G =195; m_Info.t_color.B =95; m_Info.t_color.A =255; EndItem(); } if( Int64ToInt(Item.ItemNum) > 0 ) AddTooltipItemCount(Item); if (IsAdena(Item.ID)) { m_Tooltip.SimpleLineCount = 2; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_strText = "(" $ ConvertNumToText(Int64ToString(Item.ItemNum)) $ ")"; EndItem(); } if (TooltipType == "InventoryPrice1" || TooltipType == "InventoryPrice1HideEnchant" || TooltipType == "InventoryPrice1HideEnchantStackable") { strAdena = Int64ToString(Item.Price); strAdenaComma = MakeCostString(strAdena); AdenaColor = GetNumericColor(strAdenaComma); //가격 : xxx,xxx,xxx AddTooltipItemOption(322, strAdenaComma $ " ", true, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); //"아데나" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID= 469; EndItem(); //SimpleTooltip을 가격까지 보여준다. m_Tooltip.SimpleLineCount = 2; //읽어주기 스트링 if (Item.Price>IntToInt64(0)) { m_Tooltip.SimpleLineCount = 3; AddTooltipItemOption(0, "(" $ ConvertNumToText(strAdena) $ ")", false, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); } } //InventoryPrice2 타입 if (TooltipType == "InventoryPrice2" || TooltipType == "InventoryPrice2PrivateShop") { strAdena = Int64ToString(Item.Price); strAdenaComma = MakeCostString(strAdena); AdenaColor = GetNumericColor(strAdenaComma); //가격 : 1개당 AddTooltipItemOption2(322, 468, true, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); //"xxx,xxx,xxx " StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_strText = " " $ strAdenaComma $ " "; EndItem(); //"아데나" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID= 469; EndItem(); //SimpleTooltip을 가격까지 보여준다. m_Tooltip.SimpleLineCount = 2; //읽어주기 스트링 if (Item.Price>IntToInt64(0)) { m_Tooltip.SimpleLineCount = 3; //"(" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_strText = "("; EndItem(); //"1개당" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID = 468; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_strText = " " $ ConvertNumToText(strAdena) $ ")"; EndItem(); } } //InventoryPrice2PrivateShop 타입 if (TooltipType == "InventoryPrice2PrivateShop") { if (IsStackableItem(Item.ConsumeType) && Item.Reserved64 > IntToInt64(0)) { //"구매개수 : xx" AddTooltipItemOption(808, Int64ToString(Item.Reserved64), true, true, false); } } } AddTooltipItemBlank(4); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); switch (eItemType) { // 1. WEAPON case ITEM_WEAPON: bLargeWidth = true; //Physical Damage //AddTooltipItemOptionDamage(94, String(GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.PhysicalDamage)), true, true, false); AddTooltipItemOptionDamage(94, Item, true, true, false); //Masical Damage //AddTooltipItemOptionDamage(98, String(GetMagicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.MagicalDamage)), true, true, false); AddTooltipItemOptionDamage(98, Item, true, true, false); //Attack Speed AddTooltipItemOption(111, GetAttackSpeedString(Item.AttackSpeed), true, true, false); //SoulShot Count if (Item.SoulshotCount>0) { AddTooltipItemOption(404, "X " $ Item.SoulshotCount, true, true, false); } //SpiritShot Count if (Item.SpiritShotCount>0) { AddTooltipItemOption(496, "X " $ Item.SpiritshotCount, true, true, false); } //Weight if (Item.Weight==0) AddTooltipItemOption(52, " 0 ", true, true, false); else AddTooltipItemOption(52, String(Item.Weight), true, true, false); //AddTooltipItemOption(52, String(Item.Weight), true, true, false); //MP Consume if (Item.MpConsume != 0) { AddTooltipItemOption(320, String(Item.MpConsume), true, true, false); } //제련효과 if (Item.RefineryOp1 != 0 || Item.RefineryOp2 != 0) { AddTooltipItemBlank(4); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); //컬러값 취득 if (Item.RefineryOp2 != 0) { Quality = class'UIDATA_REFINERYOPTION'.static.GetQuality( Item.RefineryOp2 ); GetRefineryColor(Quality, ColorR, ColorG, ColorB); } if (Item.RefineryOp1 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp1, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } if (Item.RefineryOp2 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp2, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } //"교환/드롭 불가" AddTooltipItemOption(1491, "", true, false, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } break; // 2. ARMOR case ITEM_ARMOR: bLargeWidth = true; // Sheild if ( Item.SlotBitType == 256 && Item.ArmorType == 4 ) // ArmorType == 4 is sigil.. { if (Item.PhysicalDefense != 0) AddTooltipItemOptionDef(95, Item, true, true, false); //Avoid Modify if (Item.AvoidModify != 0) AddTooltipItemOption(97, String(Item.AvoidModify), true, true, false); //Weight if (Item.Weight != 0) { AddTooltipItemOption(52, String(Item.Weight), true, true, false); AddTooltipItemBlank(4); } } else if (Item.SlotBitType == 256 || Item.SlotBitType == 128) //SBT_LHAND or SBT_RHAND { //Shield Defense //debug("Shield Defense" $ Item.ShieldDefense); if (Item.ShieldDefense != 0) AddTooltipItemOptionDef(95, Item, true, true, false, true); //Shield Defense Rate //debug("Shield Defense Rate" $ Item.ShieldDefenseRate); if (Item.ShieldDefenseRate != 0) AddTooltipItemOption(317, String(Item.ShieldDefenseRate), true, true, false); //Avoid Modify //debug("Avoid Modify" $ Item.AvoidModify); if (Item.AvoidModify != 0) AddTooltipItemOption(97, String(Item.AvoidModify), true, true, false); //Weight //debug("Weight" $ Item.Weight); if (Item.Weight != 0) { AddTooltipItemOption(52, String(Item.Weight), true, true, false); AddTooltipItemBlank(4); } } // Magical Armor else if (IsMagicalArmor(Item.ID)) { //MP Bonus AddTooltipItemOption(388, String(Item.MpBonus), true, true, false); //Physical Defense if (Item.SlotBitType == 65536) { } else if ( Item.SlotBitType == 524288) { } else if ( Item.SlotBitType == 262144) { } else { if (Item.PhysicalDefense != 0) AddTooltipItemOptionDef(95, Item, true, true, false); } //Weight if (Item.Weight != 0) { AddTooltipItemOption(52, String(Item.Weight), true, true, false); AddTooltipItemBlank(4); } } // Physical Armor else { //Physical Defense if (Item.SlotBitType == 65536) { } else if ( Item.SlotBitType == 524288) { } else if ( Item.SlotBitType == 262144) { } else { if (Item.PhysicalDefense != 0) AddTooltipItemOptionDef(95, Item, true, true, false); } //Weight if (Item.Weight != 0) { AddTooltipItemOption(52, String(Item.Weight), true, true, false); AddTooltipItemBlank(4); } } //제련효과 if (Item.RefineryOp1 != 0 || Item.RefineryOp2 != 0) { //빈공간 AddTooltipItemBlank(12); //"[제련효과]" AddTooltipItemOption(1490, "", true, false, false); SetTooltipItemColor(255, 255, 255, 0); //컬러값 취득 if (Item.RefineryOp2 != 0) { Quality = class'UIDATA_REFINERYOPTION'.static.GetQuality( Item.RefineryOp2 ); GetRefineryColor(Quality, ColorR, ColorG, ColorB); } if (Item.RefineryOp1 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp1, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } if (Item.RefineryOp2 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp2, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } //빈공간 AddTooltipItemBlank(12); } break; // 3. ACCESSARY case ITEM_ACCESSARY: bLargeWidth = true; //Magical Defense // 탈리스만은 아이템 마방을 보여주지 않는다. // 왼팔찌 오른팔찌도 마방을 보여주지 않는다. if ((Item.SlotBitType != 4194304 ) && (Item.SlotBitType != 1048576 ) && (Item.SlotBitType != 2097152 )) AddTooltipItemOptionDef(99, Item, true, true, false); if (Item.Weight == 0) AddTooltipItemOption(52, " 0 ", true, true, false); else AddTooltipItemOption(52, String(Item.Weight), true, true, false); //debug ("Refinery Result Accessotires" @ Item.RefineryOp1); //제련효과 if (Item.RefineryOp1 != 0 || Item.RefineryOp2 != 0) { //빈공간 AddTooltipItemBlank(3); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); //컬러값 취득 if (Item.RefineryOp2 != 0) { Quality = class'UIDATA_REFINERYOPTION'.static.GetQuality( Item.RefineryOp2 ); GetRefineryColor(Quality, ColorR, ColorG, ColorB); } if (Item.RefineryOp1 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp1, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } if (Item.RefineryOp2 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.RefineryOp2, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } //빈공간 AddTooltipItemBlank(1); } break; // 4. QUEST case ITEM_QUESTITEM: bLargeWidth = true; //Slot Type if (Len(SlotString)>0) AddTooltipItemOption(0, SlotString, false, true, false); break; // 5. ETC case ITEM_ETCITEM: bLargeWidth = true; if (eEtcItemType == ITEME_PET_COLLAR) { //Pet Name if (Item.Damaged == 0) nTmp = 971; else nTmp = 970; AddTooltipItemOption2(969, nTmp, true, true, false); //Pet Level AddTooltipItemOption(88, String(Item.Enchanted), true, true, false); } else if (eEtcItemType == ITEME_TICKET_OF_LORD) { AddTooltipItemOption(972, String(Item.Enchanted), true, true, false); } else if (eEtcItemType == ITEME_LOTTO) { // 복권에서는 bless가 회차, 몬스터레이스에서는 Enchant가 회차입니다. 주의하세요! - lancelot 2008. 11. 11. // 회차 AddTooltipItemOption(670, String(Item.Blessed), true, true, false); // 선택번호 AddTooltipItemOption(671, GetLottoString(Item.Enchanted, Item.Damaged), true, true, false); } else if (eEtcItemType == ITEME_RACE_TICKET) { // 회차 AddTooltipItemOption(670, String(Item.Enchanted), true, true, false); // 선택번호 AddTooltipItemOption(671, GetRaceTicketString(Item.Blessed), true, true, false); //Money AddTooltipItemOption(744, String(Item.Damaged*100), true, true, false); } //Weight //~ if (Item.Price!=0) if (Item.Weight==0) AddTooltipItemOption(52, " 0 ", true, true, false); else AddTooltipItemOption(52, String(Item.Weight), true, true, false); break; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// // [칠월칠석, 방어구 각인] item enchant option - by jin 09/08/05 if (Item.EnchantOption1 != 0 || Item.EnchantOption2 != 0 || Item.EnchantOption3 != 0) { //빈공간 AddTooltipItemBlank(12); //"[인챈트효과]" AddTooltipItemOption(2214, "", true, false, false); SetTooltipItemColor(255, 255, 255, 0); //컬러값 취득 if (Item.EnchantOption1 != 0) { // [칠월칠석, 방어구각인] 각인 효과는 일단 무조건 1번 색상을 사용. - by jin 09/08/06 GetRefineryColor(1, ColorR, ColorG, ColorB); } if (Item.EnchantOption1 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.EnchantOption1, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } if (Item.EnchantOption2 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.EnchantOption2, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } if (Item.EnchantOption3 != 0) { strDesc1 = ""; strDesc2 = ""; strDesc3 = ""; if (class'UIDATA_REFINERYOPTION'.static.GetOptionDescription( Item.EnchantOption3, strDesc1, strDesc2, strDesc3 )) { if (Len(strDesc1)>0) { AddTooltipItemOption(0, strDesc1, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc2)>0) { AddTooltipItemOption(0, strDesc2, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } if (Len(strDesc3)>0) { AddTooltipItemOption(0, strDesc3, false, true, false); SetTooltipItemColor(ColorR, ColorG, ColorB, 0); } } } //빈공간 AddTooltipItemBlank(12); } //내구도 아이템 if (Item.CurrentDurability >= 0 && Item.Durability > 0) { bLargeWidth = true; //빈공간 AddTooltipItemBlank(12); //<투영 병기 정보> AddTooltipItemOption(1492, "", true, false, false); SetTooltipItemColor(255, 255, 255, 0); //사용가능 시간 StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 1493; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; if (Item.CurrentDurability+1 <= 5) { m_Info.t_color.R = 255; m_Info.t_color.G = 0; m_Info.t_color.B = 0; } else { m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; } m_Info.t_color.A = 255; m_Info.t_strText = " " $ Item.CurrentDurability $ "/" $ Item.Durability; EndItem(); //"교환/드롭 불가" AddTooltipItemOption(1491, "", true, false, false); //빈공간 if (Len(Item.Description)>0) { AddTooltipItemBlank(12); } } //branch //에너지 정보 if (Item.BR_MaxEnergy > 0) { //bLargeWidth = true; //빈공간 AddTooltipItemBlank(12); //<에너지 정보> AddTooltipItemOption(5065, "", true, false, false); SetTooltipItemColor(255, 255, 255, 0); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 5066; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.bLineBreak = true; if ( Item.BR_CurrentEnergy==0 || (Item.BR_MaxEnergy / Item.BR_CurrentEnergy > 10) ) { m_Info.t_color.R = 255; m_Info.t_color.G = 0; m_Info.t_color.B = 0; } else { m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; } m_Info.t_color.A = 255; //m_Info.t_strText = " " $ Item.BR_CurrentEnergy $ "/" $ Item.BR_MaxEnergy; m_Info.t_strText = " " ; ParamAdd(m_Info.Condition, "Type", "CurrentEnergy"); EndItem(); } //end of branch if( Item.ID.ClassID == 57 || Item.ID.ClassID == 5575 ) { AddTooltipItemOption(52, " 0 ", true, true, false); } //설명 if (Len(Item.Description)>0) { AddTooltipItemBlank(3); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); bLargeWidth = true; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); AddTooltipItemBlank(4); } ///////////////////////////////////////////////////////////////////////////////////////// // 셋트 아이템 정보 if (IsValidItemID(Item.ID)) { for (idx=0; idx<TOOLTIP_SETITEM_MAX; idx++) { //셋트아이템 리스트 for (SetID=0; SetID<class'UIDATA_ITEM'.static.GetSetItemNum(Item.ID, idx); SetID++) //0,1,2번 세트아이템효과 에 대해서 각각 몇가지의 세트가 완비되야하나.. { bLargeWidth = true; if (!class'UIDATA_ITEM'.static.IsExistSetItem(Item.ID, idx, SetID)) { if( !FirstTime1 ) { if( Len(Item.Description)==0 ) AddTooltipItemBlank(0); AddTooltipItemBlank(0); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); FirstTime1=true; } tmpItemID.classID = class'UIDATA_ITEM'.static.GetSetItemFirstID(Item.ID, idx, SetID); if (tmpItemID.classID > 0) { StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.u_strTexture = class'UIDATA_ITEM'.static.GetItemTextureName(tmpItemID); m_Info.u_nTextureWidth = 16; m_Info.u_nTextureHeight = 16; m_Info.u_nTextureUWidth = 32; m_Info.u_nTextureUHeight = 32; m_Info.nOffSetY = 5; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; EndItem(); strTmp = class'UIDATA_ITEM'.static.GetItemName(tmpItemID); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.nOffSetX = 4; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 112; m_Info.t_color.G = 115; m_Info.t_color.B = 123; m_Info.t_color.A = 255; m_Info.t_strText = strTmp; ParamAdd(m_info.Condition, "SetItemNum", string(idx)); ParamAdd(m_Info.Condition, "Type", "Equip"); ParamAddItemID(m_Info.Condition, Item.ID); ParamAdd(m_Info.Condition, "CurTypeID", string(SetID)); //비교할 아이템의 Type 예(0번:흉갑 1번:각반 2번:헬멧 3번:팔 4번 다리 ..ItemName.txt에 들어있는순서 ParamAdd(m_Info.Condition, "NormalColor", "112,115,123"); ParamAdd(m_Info.Condition, "EnableColor", "176,185,205"); EndItem(); } } } //셋트효과 strTmp = class'UIDATA_ITEM'.static.GetSetItemEffectDescription(Item.ID, idx); if (Len(strTmp)>0) { bLargeWidth = true; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 128; m_Info.t_color.G = 127; m_Info.t_color.B = 103; m_Info.t_color.A = 255; m_Info.t_strText = strTmp; ParamAdd(m_Info.Condition, "Type", "SetEffect"); ParamAddItemID(m_Info.Condition, Item.ID); ParamAdd(m_Info.Condition, "EffectID", String(idx)); ParamAdd(m_Info.Condition, "NormalColor", "128,127,103"); ParamAdd(m_Info.Condition, "EnableColor", "183,178,122"); EndItem(); } } //인첸트 셋트효과 strTmp = class'UIDATA_ITEM'.static.GetSetItemEnchantEffectDescription(Item.ID); if (Len(strTmp)>0) { bLargeWidth = true; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 74; m_Info.t_color.G = 92; m_Info.t_color.B = 104; m_Info.t_color.A = 255; m_Info.t_strText = strTmp; ParamAdd(m_Info.Condition, "Type", "EnchantEffect"); ParamAddItemID(m_Info.Condition, Item.ID); ParamAdd(m_Info.Condition, "NormalColor", "74,92,104"); ParamAdd(m_Info.Condition, "EnableColor", "111,146,169"); EndItem(); AddTooltipItemBlank(3); } } //퀘스트 정보를 표시한다. AddTooltipItemQuestList(Item); // 속성 게이지를 그려준다. AddTooltipItemAttributeGage(Item); // 기간제 아이템 if ( Item.CurrentPeriod > 0) { //빈공간 AddTooltipItemBlank(12); //<기간제 아이템> AddTooltipItemOption(1739, "", true, false, false); SetTooltipItemColor(255, 255, 255, 0); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 1199; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = " : "; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = "" $ MakeTimeStr(Item.CurrentPeriod); ParamAdd(m_Info.Condition, "Type", "PeriodTime"); EndItem(); } } else { return; } if (bLargeWidth) m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; if(TooltipType == "InventoryPawnViewer") // PawnViewer용 추가 - lancelot 2007. 10. 16. { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.bLineBreak = true; m_Info.t_strText ="ID : "$string(Item.Id.classID); EndItem(); } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // ACTION function ReturnTooltip_NTT_ACTION(string param, ETooltipSourceType eSourceType) { local ItemInfo Item; local ItemInfo TheItemInfo; local MacroInfo TheMacroInfo; local int i; if (eSourceType == NTST_ITEM) { ParseString( param, "Name", Item.Name); ParseString( param, "Description", Item.Description); ParamToItemInfo(param, TheItemInfo); //액션 이름 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = Item.Name; m_Info.t_color.R = 202; m_Info.t_color.G = 174; m_Info.t_color.B = 115; m_Info.t_color.A = 255; EndItem(); //액션 설명 if (Len(Item.Description)>0) { m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = false; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); } if( class'UIDATA_MACRO'.static.GetMacroInfo(TheItemInfo.ID, TheMacroInfo) ) { for( i=0; i<12; i++ ) { if( TheMacroInfo.CommandList[i] == "" ) break; StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.bLineBreak = true; m_Info.t_strText = TheMacroInfo.CommandList[i]; m_Info.t_color.R =169; m_Info.t_color.G =149; m_Info.t_color.B =117; m_Info.t_color.A =255; EndItem(); } } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // SKILL function ReturnTooltip_NTT_SKILL(string param, ETooltipSourceType eSourceType) { local ItemInfo Item; local EItemParamType eItemParamType; local EShortCutItemType eShortCutType; local int nTmp; local int SkillLevel; debug("툴팁들어오나"); if (eSourceType == NTST_ITEM) { ParseItemID( param, Item.ID ); ParseString( param, "Name", Item.Name); ParseString( param, "AdditionalName", Item.AdditionalName); ParseString( param, "Description", Item.Description); ParseInt( param, "Level", Item.Level); eShortCutType = EShortCutItemType(Item.ItemSubType); eItemParamType = EItemParamType(Item.ItemType); SkillLevel = Item.Level; m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; //아이템 이름 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = Item.Name; EndItem(); // 인챈트시 변환된 레벨을 원래 레벨로 변환시켜준다. if (Len(Item.AdditionalName)>0) { SkillLevel = class'UIDATA_SKILL'.static.GetEnchantSkillLevel( Item.ID, Item.Level ); } //ex) " Lv " StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = " "; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 88; EndItem(); //스킬 레빌 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = " " $ SkillLevel; EndItem(); // 인챈트 내용을 뿌려주는 곳은 이곳 if (Len(Item.AdditionalName)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetX = 5; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 217; m_Info.t_color.B = 105; m_Info.t_color.A = 255; m_Info.t_strText = Item.AdditionalName; EndItem(); } //Operate Type StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = class'UIDATA_SKILL'.static.GetOperateType( Item.ID, Item.Level ); EndItem(); //소모HP nTmp = class'UIDATA_SKILL'.static.GetHpConsume( Item.ID, Item.Level ); if (nTmp>0) { AddTooltipItemOption(1195, String(nTmp), true, true, false); } //소모MP nTmp = class'UIDATA_SKILL'.static.GetMpConsume( Item.ID, Item.Level ); if (nTmp>0) { AddTooltipItemOption(320, String(nTmp), true, true, false); } //유효거리 nTmp = class'UIDATA_SKILL'.static.GetCastRange( Item.ID, Item.Level ); if (nTmp>=0) { AddTooltipItemOption(321, String(nTmp), true, true, false); } //설명 if (Len(Item.Description)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // ABNORMALSTATUS function ReturnTooltip_NTT_ABNORMALSTATUS(string param, ETooltipSourceType eSourceType) { local ItemInfo Item; local int ShowLevel; local EItemParamType eItemParamType; local EShortCutItemType eShortCutType; if (eSourceType == NTST_ITEM) { ParseItemID( param, Item.ID ); ParseString( param, "Name", Item.Name); ParseString( param, "AdditionalName", Item.AdditionalName); ParseString( param, "Description", Item.Description); ParseInt( param, "Level", Item.Level); ParseInt( param, "Reserved", Item.Reserved); eShortCutType = EShortCutItemType(Item.ItemSubType); eItemParamType = EItemParamType(Item.ItemType); m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; //아이템 이름 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = Item.Name; EndItem(); ShowLevel = Item.Level; if (Len(Item.AdditionalName)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetX = 5; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 217; m_Info.t_color.B = 105; m_Info.t_color.A = 255; m_Info.t_strText = Item.AdditionalName; EndItem(); ShowLevel = class'UIDATA_SKILL'.static.GetEnchantSkillLevel( Item.ID, Item.Level ); } //ex) " Lv " StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = " "; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 88; EndItem(); //스킬 레벨 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = " " $ ShowLevel; EndItem(); //남은시간 if (!IsDeBuff(Item.ID, Item.Level) && Item.Reserved>=0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 1199; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = " : "; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = MakeBuffTimeStr(Item.Reserved); ParamAdd(m_Info.Condition, "Type", "RemainTime"); EndItem(); } //설명 if (Len(Item.Description)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // NORMALITEM function ReturnTooltip_NTT_NORMALITEM(string param, ETooltipSourceType eSourceType) { local ItemInfo Item; if (eSourceType == NTST_ITEM) { ParseString( param, "Name", Item.Name); ParseString( param, "Description", Item.Description); ParseString( param, "AdditionalName", Item.AdditionalName); ParseInt( param, "CrystalType", Item.CrystalType); //아이템 이름 AddTooltipItemName(Item.Name, Item, 1); //Grade Mark AddTooltipItemGrade(Item); //설명 if (Len(Item.Description)>0) { m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // RECIPE function ReturnTooltip_NTT_RECIPE(string param, ETooltipSourceType eSourceType, bool bShowPrice) { local ItemInfo Item; local string strAdena; local string strAdenaComma; local color AdenaColor; if (eSourceType == NTST_ITEM) { ParseString( param, "Name", Item.Name); ParseString( param, "Description", Item.Description); ParseString( param, "AdditionalName", Item.AdditionalName); ParseInt( param, "CrystalType", Item.CrystalType); ParseInt( param, "Weight", Item.Weight); ParseINT64( param, "Price", Item.Price); //아이템 이름 AddTooltipItemName(Item.Name, Item, 1); //Grade Mark AddTooltipItemGrade(Item); //가격 if (bShowPrice) { strAdena = Int64ToString(Item.Price); strAdenaComma = MakeCostString(strAdena); AdenaColor = GetNumericColor(strAdenaComma); //가격 : xxx,xxx,xxx AddTooltipItemOption(641, strAdenaComma $ " ", true, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); //"아데나" StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color = AdenaColor; m_Info.t_ID= 469; EndItem(); //읽어주기 스트링 AddTooltipItemOption(0, "(" $ ConvertNumToText(strAdena) $ ")", false, true, false); SetTooltipItemColor(AdenaColor.R, AdenaColor.G, AdenaColor.B, 0); } //Weight AddTooltipItemOption(52, String(Item.Weight), true, true, false); //설명 if (Len(Item.Description)>0) { m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // SHORTCUT function ReturnTooltip_NTT_SHORTCUT(string param, ETooltipSourceType eSourceType) { local ItemInfo Item; local EItemParamType eItemParamType; local EShortCutItemType eShortCutType; local string ItemName; local ShortcutCommandItem commandItem; local int shortcutID; local string strShort; local int i; local ItemInfo TheItemInfo; local MacroInfo TheMacroInfo; local ShortcutAssignWnd Script; Script = ShortcutAssignWnd( GetScript( "OptionWnd.ShortcutTab" ) ); strShort = "<" $ GetSystemString(1523) $ ": "; if (eSourceType == NTST_ITEM) { if( BoolSelect ) { ParseInt( param, "ItemSubType", Item.ItemSubType); ParseString( param, "Name", Item.Name); ParseInt( param, "RefineryOp1", Item.RefineryOp1); ParseInt( param, "RefineryOp2", Item.RefineryOp2); eShortCutType = EShortCutItemType(Item.ItemSubType); //아이템 이름 취득 ItemName = class'UIDATA_ITEM'.static.GetRefineryItemName( Item.Name, Item.RefineryOp1, Item.RefineryOp2 ); switch (eShortCutType) { case SCIT_ITEM: ReturnTooltip_NTT_ITEM(param, "inventory", eSourceType); break; case SCIT_SKILL: ReturnTooltip_NTT_SKILL(param, eSourceType); break; case SCIT_ACTION: case SCIT_MACRO: if (eSourceType == NTST_ITEM) { ParseString( param, "Name", Item.Name); ParseString( param, "Description", Item.Description); ParamToItemInfo(param, TheItemInfo); m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; //액션 이름 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = Item.Name; m_Info.t_color.R =202; m_Info.t_color.G =174; m_Info.t_color.B =115; m_Info.t_color.A =255; EndItem(); //액션 설명 if( class'UIDATA_MACRO'.static.GetMacroInfo(TheItemInfo.ID, TheMacroInfo) ) { for( i=0; i<12; i++ ) { if( TheMacroInfo.CommandList[i] == "" ) break; StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.bLineBreak = true; m_Info.t_strText = TheMacroInfo.CommandList[i]; m_Info.t_color.R =169; m_Info.t_color.G =149; m_Info.t_color.B =117; m_Info.t_color.A =255; EndItem(); } } } else { return; } ReturnTooltipInfo(m_Tooltip); break; case SCIT_RECIPE: case SCIT_BOOKMARK: //아이템 이름 m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; StartItem(); m_Info.eType = DIT_TEXT; //m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_strText = ItemName; EndItem(); break; default: break; } ParseINT(param, "ShortcutID", shortcutID); if( GetOptionBool( "Game", "EnterChatting" ) ) { class'ShortcutAPI'.static.GetAssignedKeyFromCommand("TempStateShortcut", "UseShortcutItem Num=" $ shortcutID, commandItem); } else { class'ShortcutAPI'.static.GetAssignedKeyFromCommand("GamingStateShortcut", "UseShortcutItem Num=" $ shortcutID, commandItem); } //단축키 설명... if( commandItem.subkey1 != "" ) { strShort = strShort $ Script.GetUserReadableKeyName( commandItem.subkey1 ) $ "+"; } if( commandItem.subkey2 != "" ) { strShort = strShort $ Script.GetUserReadableKeyName( commandItem.subkey2 ) $ "+"; } if( commandItem.Key != "" ) { strShort = strShort $ Script.GetUserReadableKeyName( commandItem.Key ) $ ">"; } if( commandItem.subkey1 == "" && commandItem.subkey2 == "" && commandItem.Key == "" ) { strShort = strShort $ GetSystemString(27) $">"; } //줄추가~ AddTooltipItemBlank(2); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); if( ItemName != "" ) { AddTooltipItemBlank(5); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_strText = strShort; EndItem(); AddTooltipItemBlank(4); ReturnTooltipInfo(m_Tooltip); } return; } else { ParseItemID( param, Item.ID ); ParseString( param, "Name", Item.Name); ParseString( param, "AdditionalName", Item.AdditionalName); ParseInt( param, "Level", Item.Level); ParseInt( param, "Reserved", Item.Reserved); ParseInt( param, "Enchanted", Item.Enchanted); ParseInt( param, "ItemType", Item.ItemType); ParseInt( param, "ItemSubType", Item.ItemSubType); ParseInt( param, "CrystalType", Item.CrystalType); ParseInt( param, "ConsumeType", Item.ConsumeType); ParseInt( param, "RefineryOp1", Item.RefineryOp1); ParseInt( param, "RefineryOp2", Item.RefineryOp2); ParseINT64( param, "ItemNum", Item.ItemNum); ParseInt( param, "MpConsume", Item.MpConsume); //branch ParseInt ( param, "IsBRPremium", Item.IsBRPremium); //end of branch eShortCutType = EShortCutItemType(Item.ItemSubType); eItemParamType = EItemParamType(Item.ItemType); //아이템 이름 취득 ItemName = class'UIDATA_ITEM'.static.GetRefineryItemName( Item.Name, Item.RefineryOp1, Item.RefineryOp2 ); switch (eShortCutType) { case SCIT_ITEM: //branch AddPrimeItemSymbol(Item); //end of branch //인첸트 ex) "+10" AddTooltipItemEnchant(Item); //아이템 이름 AddTooltipItemName(ItemName, Item, 1); //Grade Mark AddTooltipItemGrade(Item); //아이템 갯수 AddTooltipItemCount(Item); break; case SCIT_SKILL: //아이템 이름 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = ItemName; EndItem(); if (Len(Item.AdditionalName)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetX = 5; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 217; m_Info.t_color.B = 105; m_Info.t_color.A = 255; m_Info.t_strText = Item.AdditionalName; EndItem(); Item.Level = class'UIDATA_SKILL'.static.GetEnchantSkillLevel( Item.ID, Item.Level ); } //ex) " Lv " StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = " "; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = 88; EndItem(); //스킬 레빌 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = " " $ Item.Level; EndItem(); //MP소모량 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = " ("; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_ID = 91; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = ":" $ Item.MpConsume $ ")"; EndItem(); break; case SCIT_ACTION: case SCIT_MACRO: case SCIT_RECIPE: case SCIT_BOOKMARK: //아이템 이름 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = ItemName; EndItem(); break; } } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // RECIPE_MANUFACTURE function ReturnTooltip_NTT_RECIPE_MANUFACTURE(string param, ETooltipSourceType eSourceType) { local ItemInfo Item; if (eSourceType == NTST_ITEM) { ParseString( param, "Name", Item.Name); ParseString( param, "Description", Item.Description); ParseString( param, "AdditionalName", Item.AdditionalName); ParseINT64( param, "Reserved64", Item.Reserved64); ParseInt( param, "CrystalType", Item.CrystalType); ParseINT64( param, "ItemNum", Item.ItemNum); m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; //아이템 이름 AddTooltipItemName(Item.Name, Item, 1); //Grade Mark AddTooltipItemGrade(Item); //ex) "필요수 : 2" AddTooltipItemOption(736, Int64ToString(Item.Reserved64), true, true, false); //ex) "보유수 : 0" AddTooltipItemOption(737, Int64ToString(Item.ItemNum), true, true, false); //설명 if (Len(Item.Description)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = Item.Description; EndItem(); } } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // PLEDGEINFO function ReturnTooltip_NTT_CLANINFO(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //ex) "직업 : 엘븐메이지" AddTooltipItemOption(391, GetClassType(int(record.LVDataList[2].szData)), true, true, true); } else { return; } ReturnTooltipInfo(m_Tooltip); } //선준 수정(2010.03.30) 완료 function ReturnTooltip_NTT_POSTINFO(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //ex) "직업 : 엘븐메이지" AddTooltipItemOption(391, GetClassType(int(record.LVDataList[1].szData)), true, true, true); } else { return; } ReturnTooltipInfo(m_Tooltip); } //선준 수정(2010.02.22 ~ 03.08) 완료 ///////////////////////////////////////////////////////////////////////////////// // ROOMLIST function ReturnTooltip_NTT_ROOMLIST(string param, ETooltipSourceType eSourceType) { local int i; local LVDataRecord record; local int len; m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH + 40; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); len = int( record.LVDataList[6].szData ); for( i = 0 ; i < len ; i++ ) { StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.u_nTextureWidth = 11; m_Info.u_nTextureHeight = 11; m_Info.u_strTexture = GetClassIconName( record.LVDataList[7 + i].nReserved1 ); EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = false; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = " " $ record.LVDataList[7 + i].szData; EndItem(); if( i != len - 1 ) { AddTooltipItemBlank(2); } } //ex) "직업 : 엘븐메이지" //AddTooltipItemOption(391, GetClassType(int(record.LVDataList[2].szData)), true, true, true); } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // USERLIST function ReturnTooltip_NTT_USERLIST(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH + 80; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //ex) "직업 : 엘븐메이지" AddTooltipItemOption(391, GetClassType(int(record.LVDataList[1].szData)), true, true, true); AddTooltipItemBlank(0); //ex)귀속 지역 : StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = GetSystemString( 2276 ) $ " : "; EndItem(); //설명 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; if( record.LVDataList[5].szData == "" ) { m_Info.t_strText = GetSystemString( 27 ); } else { m_Info.t_strText = record.LVDataList[5].szData; } EndItem(); } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // PARTYMATCH function ReturnTooltip_NTT_PARTYMATCH(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH + 80; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //ex) "직업 : 엘븐메이지" AddTooltipItemOption(391, GetClassType(int(record.LVDataList[1].szData)), true, true, true); //선준 수정(2010.02.22 ~ 03.08) 완료 //ex)현재 위치 : 글루디오 AddTooltipItemOption(471, GetZoneNameWithZoneID(int(record.LVDataList[3].szReserved)), true, true, true); /* AddTooltipItemBlank(0); //귀속지역 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = false; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = GetSystemString( 2276 ) @ ":"; EndItem(); //설명 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; if( record.LVDataList[4].szData == "" ) { //m_Info.bLineBreak = true; m_Info.t_strText = "" @ GetSystemString( 27 ); } else { m_Info.bLineBreak = true; m_Info.t_strText = record.LVDataList[4].szData; } EndItem(); */ AddTooltipItemBlank(0); //ex)귀속 지역 : StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = GetSystemString( 2276 ) $ " : "; //m_Info.t_strText = "귀속 지역 : "; EndItem(); //설명 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; if( record.LVDataList[4].szReserved == "" ) { m_Info.t_strText = GetSystemString( 27 ); } else { m_Info.t_strText = record.LVDataList[4].szReserved; } EndItem(); } else { return; } ReturnTooltipInfo(m_Tooltip); } //선준 추가 UNION 예전 직업만 나오는 경우. ///////////////////////////////////////////////////////////////////////////////// // UINONLIST function ReturnTooltip_NTT_UNIONLIST(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //ex) "직업 : 엘븐메이지" AddTooltipItemOption(391, GetClassType(int(record.LVDataList[1].szData)), true, true, true); } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // QUESTLIST function ReturnTooltip_NTT_QUESTLIST(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; local int nTmp; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //퀘스트 이름 AddTooltipItemOption(1200, record.LVDataList[0].szData, true, true, true); //반복성 switch(record.LVDataList[3].nReserved1) { case 0: case 2: nTmp = 861; break; case 1: case 3: nTmp = 862; break; } AddTooltipItemOption2(1202, nTmp, true, true, false); } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // RAIDLIST function ReturnTooltip_NTT_RAIDLIST(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); if (Len(record.szReserved)<1) return; m_Tooltip.MinimumWidth = TOOLTIP_MINIMUM_WIDTH; //레이드 설명 StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = false; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = record.szReserved; EndItem(); } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // QUESTINFO function ReturnTooltip_NTT_QUESTINFO(string param, ETooltipSourceType eSourceType) { local LVDataRecord record; local int nTmp; local int Width1; local int Width2; local int Height; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); //퀘스트 이름 AddTooltipItemOption(1200, record.LVDataList[0].szData, true, true, true); //수행조건 AddTooltipItemOption(1201, record.LVDataList[1].szData, true, true, false); //Width결정! GetTextSizeDefault(GetSystemString(1200) $ " : " $ record.LVDataList[0].szData, Width1, Height); GetTextSizeDefault(GetSystemString(1201) $ " : " $ record.LVDataList[1].szData, Width2, Height); if (Width2>Width1) Width1 = Width2; if (TOOLTIP_MINIMUM_WIDTH>Width1) Width1 = TOOLTIP_MINIMUM_WIDTH; m_Tooltip.MinimumWidth = Width1 + 30; //추천레벨 AddTooltipItemOption(922, record.LVDataList[2].szData, true, true, false); //반복성 switch(record.LVDataList[3].nReserved1) { case 0: case 2: nTmp = 861; break; case 1: case 3: nTmp = 862; break; } AddTooltipItemOption2(1202, nTmp, true, true, false); //퀘스트설명 StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = false; m_Info.bLineBreak = true; m_Info.t_color.R = 178; m_Info.t_color.G = 190; m_Info.t_color.B = 207; m_Info.t_color.A = 255; m_Info.t_strText = record.szReserved; EndItem(); } else { return; } ReturnTooltipInfo(m_Tooltip); } ///////////////////////////////////////////////////////////////////////////////// // MANOR function ReturnTooltip_NTT_MANOR(string param, string TooltipType, ETooltipSourceType eSourceType) { local LVDataRecord record; local int idx1; local int idx2; local int idx3; if (eSourceType == NTST_LIST) { ParamToRecord( param, record ); if (TooltipType == "ManorSeedInfo") { idx1 = 4; idx2 = 5; idx3 = 6; } else if (TooltipType == "ManorCropInfo") { idx1 = 5; idx2 = 6; idx3 = 7; } else if (TooltipType == "ManorSeedSetting") { idx1 = 7; idx2 = 8; idx3 = 9; } else if (TooltipType == "ManorCropSetting") { idx1 = 9; idx2 = 10; idx3 = 11; } else if (TooltipType == "ManorDefaultInfo") { idx1 = 1; idx2 = 4; idx3 = 5; } else if (TooltipType == "ManorCropSell") { idx1 = 7; idx2 = 8; idx3 = 9; } // 씨앗 or 작물 이름 AddTooltipItemOption(0, record.LVDataList[0].szData, false, true, true); // 레벨 AddTooltipItemOption(537, record.LVDataList[idx1].szData, true, true, false); // 보상 타입1 AddTooltipItemOption(1134, record.LVDataList[idx2].szData, true, true, false); // 보상 타입2 AddTooltipItemOption(1135, record.LVDataList[idx3].szData, true, true, false); } else { return; } ReturnTooltipInfo(m_Tooltip); } // [퀘스트 아이템 툴팁 추가] function ReturnTooltip_NTT_QUESTREWARDS(string param, ETooltipSourceType eSourceType) { // [퀘스트 아이템 툴팁 추가] 이 부분에 퀘스트 아이템 툴팁에 걸맞는 코드가 들어가면 될 것 같습니다. // 2009.10.14 // ReturnTooltip_NTT_ITEM(param, "Inventoty", eSourceType); ReturnTooltip_NTT_ITEM(param, "QuestReward", eSourceType); } //"XXX : YYYY" 형태의 TooltipItem을 편하게 추가해 준다. function AddTooltipItemOption(int TitleID, string Content, bool bTitle, bool bContent, bool IamFirst) { if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = TitleID; EndItem(); } if (Content != "0") { if (bContent) { if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = " : "; EndItem(); } StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; if (!bTitle) m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = Content; EndItem(); } } } function AddTooltipItemOptionDef(int TitleID, ItemInfo Item, bool bTitle, bool bContent, bool IamFirst, optional bool isShield) { local int FullDamage, DefaultDamage, Diffirence; if( isShield ) { FullDamage = GetShieldDefense(Item.CrystalType, Item.Enchanted, Item.ShieldDefense); DefaultDamage = GetShieldDefense(Item.CrystalType, 0, Item.ShieldDefense); Diffirence = FullDamage - DefaultDamage; } else if( TitleID == 95 ) { FullDamage = GetPhysicalDefense(Item.CrystalType, Item.Enchanted, Item.PhysicalDefense); DefaultDamage = GetPhysicalDefense(Item.CrystalType, 0, Item.PhysicalDefense); Diffirence = FullDamage - DefaultDamage; } else { FullDamage = GetMagicalDefense(Item.CrystalType, Item.Enchanted, Item.MagicalDefense); DefaultDamage = GetMagicalDefense(Item.CrystalType, 0, Item.MagicalDefense); Diffirence = FullDamage - DefaultDamage; } if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 255; m_Info.t_color.B = 255; m_Info.t_color.A = 255; m_Info.t_ID = TitleID; EndItem(); } if (FullDamage != 0) { if (bContent) { if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 255; m_Info.t_color.B = 255; m_Info.t_color.A = 255; m_Info.t_strText = " : "; EndItem(); } StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; if (!bTitle) m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 207; m_Info.t_color.G = 148; m_Info.t_color.B = 11; m_Info.t_color.A = 255; m_Info.t_strText = ""$FullDamage; EndItem(); if( Diffirence != 0 ) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; if (!bTitle) m_Info.bLineBreak = true; m_Info.nOffSetX = 4; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 208; m_Info.t_color.G = 180; m_Info.t_color.B = 119; m_Info.t_color.A = 255; m_Info.t_strText = "("$DefaultDamage$" + "$Diffirence$")"; EndItem(); } } } } function AddTooltipItemOptionDamage(int TitleID, ItemInfo Item, bool bTitle, bool bContent, bool IamFirst) { local int FullDamage, DefaultDamage, Diffirence; if( TitleID == 94 ) { FullDamage = GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.PhysicalDamage); DefaultDamage = GetPhysicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, 0, Item.PhysicalDamage); Diffirence = FullDamage - DefaultDamage; } else { FullDamage = GetMagicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, Item.Enchanted, Item.MagicalDamage); DefaultDamage = GetMagicalDamage(Item.WeaponType, Item.SlotBitType, Item.CrystalType, 0, Item.MagicalDamage); Diffirence = FullDamage - DefaultDamage; } if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 255; m_Info.t_color.B = 255; m_Info.t_color.A = 255; m_Info.t_ID = TitleID; EndItem(); } if (FullDamage != 0) { if (bContent) { if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 255; m_Info.t_color.B = 255; m_Info.t_color.A = 255; m_Info.t_strText = " : "; EndItem(); } StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; if (!bTitle) m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 207; m_Info.t_color.G = 148; m_Info.t_color.B = 11; m_Info.t_color.A = 255; m_Info.t_strText = ""$FullDamage; EndItem(); if( Diffirence != 0 ) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; if (!bTitle) m_Info.bLineBreak = true; m_Info.nOffSetX = 4; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 208; m_Info.t_color.G = 180; m_Info.t_color.B = 119; m_Info.t_color.A = 255; m_Info.t_strText = "("$DefaultDamage$" + "$Diffirence$")"; EndItem(); } } } } //"XXX : YYYY" 형태의 TooltipItem을 편하게 추가해 준다. //SYSSTRING : SYSSTRING function AddTooltipItemOption2(int TitleID, int ContentID, bool bTitle, bool bContent, bool IamFirst) { if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_ID = TitleID; EndItem(); } if (bContent) { if (bTitle) { StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.t_strText = " : "; EndItem(); } StartItem(); m_Info.eType = DIT_TEXT; if (!IamFirst) m_Info.nOffSetY = 6; if (!bTitle) m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_ID = ContentID; EndItem(); } } //아이템의 색상을 다시 설정해준다. function SetTooltipItemColor(int R, int G, int B, int Offset) { local int idx; idx = m_Tooltip.DrawList.Length-1-Offset; m_Tooltip.DrawList[idx].t_color.R = R; m_Tooltip.DrawList[idx].t_color.G = G; m_Tooltip.DrawList[idx].t_color.B = B; m_Tooltip.DrawList[idx].t_color.A = 255; } //빈공간의 TooltipItem을 추가한다. function AddTooltipItemBlank(int Height) { StartItem(); m_Info.eType = DIT_BLANK; m_Info.b_nHeight = Height; EndItem(); } //인첸트 function AddTooltipItemEnchant(ItemInfo Item) { local EItemParamType eItemParamType; eItemParamType = EItemParamType(Item.ItemType); if (Item.Enchanted>0 && IsEnchantableItem(eItemParamType)) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 176; m_Info.t_color.G = 155; m_Info.t_color.B = 121; m_Info.t_color.A = 255; m_Info.t_strText = "+" $ Item.Enchanted $ " "; EndItem(); } } //아이템 이름 + AdditionalName function AddTooltipItemName(string Name, ItemInfo Item, int AddTooltipItemName) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; switch (AddTooltipItemName) { case 0: m_Info.t_color.R = 137; m_Info.t_color.G = 137; m_Info.t_color.B = 137; m_Info.t_color.A = 255; break; case 1: m_Info.t_color.R = 255; m_Info.t_color.G = 255; m_Info.t_color.B = 255; m_Info.t_color.A = 255; break; case 2: m_Info.t_color.R = 255; m_Info.t_color.G = 251; m_Info.t_color.B = 4; m_Info.t_color.A = 255; break; case 3: m_Info.t_color.R = 255; m_Info.t_color.G = 0; m_Info.t_color.B = 255; m_Info.t_color.A = 255; break; } m_Info.t_strText = Name; EndItem(); //Additional Name if (Len(Item.AdditionalName)>0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_color.R = 255; m_Info.t_color.G = 217; m_Info.t_color.B = 105; m_Info.t_color.A = 255; m_Info.t_strText = " " $ Item.AdditionalName; EndItem(); } } //Grade Mark function AddTooltipItemGrade(ItemInfo Item) { local string TextureName; TextureName = GetItemGradeTextureName(Item.CrystalType); //debug ("TextureName" @ TextureName); //debug (TextureName @ Item.CrystalType @ GetItemGradeTextureName(Item.CrystalType)); if (Len(TextureName)>0) { StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.nOffSetX = 2; m_Info.nOffSetY = 0; //S80 그레이드일 경우에 한해 아이콘 텍스쳐 크기를 2배로 늘린다. //debug ("텍스쳐 이름"@ Item.CrystalType ); if (Item.CrystalType == 6 || Item.CrystalType == 7) { m_Info.u_nTextureWidth = 32; m_Info.u_nTextureHeight = 16; m_Info.u_nTextureUWidth = 32; m_Info.u_nTextureUHeight = 16; //debug (TextureName @ Item.CrystalType @ GetItemGradeTextureName(Item.CrystalType)); } //기타 그레이드에 대해 아이콘 텍스쳐 크기를 세팅한다. else { m_Info.u_nTextureWidth = 16; m_Info.u_nTextureHeight = 16; m_Info.u_nTextureUWidth = 16; m_Info.u_nTextureUHeight = 16; } m_Info.u_strTexture = TextureName; EndItem(); } } //Stackable Count function AddTooltipItemCount(ItemInfo Item) { if (IsStackableItem(Item.ConsumeType)) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.t_bDrawOneLine = true; m_Info.t_strText = " (" $ MakeCostString(Int64ToString(Item.ItemNum)) $ ")"; EndItem(); } } //제련 색상 function GetRefineryColor(int Quality, out int R, out int G, out int B) { switch (Quality) { case 1: R = 187; G = 181; B = 138; break; case 2: R = 132; G = 174; B = 216; break; case 3: R = 193; G = 112; B = 202; break; case 4: R = 225; G = 109; B = 109; break; default: R = 187; G = 181; B = 138; break; } } //속성 게이지 그려주기 function AddTooltipItemAttributeGage(ItemInfo Item) { local int i; //local int highAttrValue[6]; local Array<string> textureName, tooltipStr; local bool FirstTime; for(i = 0; i < 6; i++) { textureName[i] = ""; tooltipStr[i] = ""; } NowAttrLv =0; NowMaxValue =0; NowValue =0; // 공격 아이템 속성 if (Item.AttackAttributeValue > 0) { //AddSystemMessageString("1"); SetAttackAttribute(Item.AttackAttributeValue,ATTRIBUTE_FIRE); SetAttackAttribute(Item.AttackAttributeValue,ATTRIBUTE_WATER); SetAttackAttribute(Item.AttackAttributeValue,ATTRIBUTE_WIND); SetAttackAttribute(Item.AttackAttributeValue,ATTRIBUTE_EARTH); SetAttackAttribute(Item.AttackAttributeValue,ATTRIBUTE_HOLY); SetAttackAttribute(Item.AttackAttributeValue,ATTRIBUTE_UNHOLY); //레벨과 현제값등을 구한다. switch(Item.AttackAttributeType) { case ATTRIBUTE_FIRE: textureName[ATTRIBUTE_FIRE] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_FIRE"; tooltipStr[ATTRIBUTE_FIRE] =GetSystemString(1622) $ " Lv " $ String(AttackAttLevel[ATTRIBUTE_FIRE]) $ " ("$ GetSystemString(1622) $ " " $ GetSystemString(55) $ " " $ String(Item.AttackAttributeValue) $")"; break; case ATTRIBUTE_WATER: textureName[ATTRIBUTE_WATER] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_WATER"; tooltipStr[ATTRIBUTE_WATER] =GetSystemString(1623) $ " Lv " $ String(AttackAttLevel[ATTRIBUTE_WATER]) $ " ("$ GetSystemString(1623) $ " " $ GetSystemString(55) $ " " $String(Item.AttackAttributeValue) $ ")"; break; case ATTRIBUTE_WIND: textureName[ATTRIBUTE_WIND] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_WIND"; tooltipStr[ATTRIBUTE_WIND] =GetSystemString(1624) $ " Lv " $ String(AttackAttLevel[ATTRIBUTE_WIND]) $ " ("$ GetSystemString(1624) $ " " $ GetSystemString(55) $ " " $String(Item.AttackAttributeValue) $ ")"; break; case ATTRIBUTE_EARTH: textureName[ATTRIBUTE_EARTH] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_EARTH"; tooltipStr[ATTRIBUTE_EARTH] =GetSystemString(1625) $ " Lv " $ String(AttackAttLevel[ATTRIBUTE_EARTH]) $ " ("$ GetSystemString(1625) $ " " $ GetSystemString(55) $ " " $ String(Item.AttackAttributeValue) $")"; break; case ATTRIBUTE_HOLY: textureName[ATTRIBUTE_HOLY] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_DIVINE"; tooltipStr[ATTRIBUTE_HOLY] =GetSystemString(1626) $ " Lv " $ String(AttackAttLevel[ATTRIBUTE_HOLY]) $ " ("$ GetSystemString(1626) $ " " $ GetSystemString(55) $ " " $String(Item.AttackAttributeValue) $ ")"; break; case ATTRIBUTE_UNHOLY: textureName[ATTRIBUTE_UNHOLY] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_DARK"; tooltipStr[ATTRIBUTE_UNHOLY] =GetSystemString(1627) $ " Lv " $ String(AttackAttLevel[ATTRIBUTE_UNHOLY]) $ " ("$ GetSystemString(1627) $ " " $ GetSystemString(55) $ " " $String(Item.AttackAttributeValue) $ ")"; break; } } else // 방어 아이템 속성 { //AddSystemMessageString("2"); SetDefAttribute(Item.DefenseAttributeValueFire,ATTRIBUTE_FIRE); SetDefAttribute(Item.DefenseAttributeValueWater,ATTRIBUTE_WATER); SetDefAttribute(Item.DefenseAttributeValueWind,ATTRIBUTE_WIND); SetDefAttribute(Item.DefenseAttributeValueEarth,ATTRIBUTE_EARTH); SetDefAttribute(Item.DefenseAttributeValueHoly,ATTRIBUTE_HOLY); SetDefAttribute(Item.DefenseAttributeValueUnholy,ATTRIBUTE_UNHOLY); //레벨과 현제값등을 구한다. if(Item.DefenseAttributeValueFire != 0) //파이어 속성 툴팁 그리기 { textureName[ATTRIBUTE_FIRE] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_FIRE"; tooltipStr[ATTRIBUTE_FIRE] =GetSystemString(1623) $ " Lv " $ String(DefAttLevel[ATTRIBUTE_FIRE]) $ " ("$ GetSystemString(1622) $ " " $ GetSystemString(54) $ " " $ String(Item.DefenseAttributeValueFire) $")"; } if(Item.DefenseAttributeValueWater != 0) //물 속성 툴팁 그리기 { textureName[ATTRIBUTE_WATER] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_WATER"; tooltipStr[ATTRIBUTE_WATER] =GetSystemString(1622) $ " Lv " $ String(DefAttLevel[ATTRIBUTE_WATER]) $ " ("$ GetSystemString(1623) $ " " $ GetSystemString(54) $ " " $String(Item.DefenseAttributeValueWater) $ ")"; } if(Item.DefenseAttributeValueWind != 0) //바람 속성 툴팁 그리기 { textureName[ATTRIBUTE_WIND] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_WIND"; tooltipStr[ATTRIBUTE_WIND] =GetSystemString(1625) $ " Lv " $ String(DefAttLevel[ATTRIBUTE_WIND]) $ " ("$ GetSystemString(1624) $ " " $ GetSystemString(54) $ " " $String(Item.DefenseAttributeValueWind) $")"; } if(Item.DefenseAttributeValueEarth != 0) //땅 속성 툴팁 그리기 { textureName[ATTRIBUTE_EARTH] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_EARTH"; tooltipStr[ATTRIBUTE_EARTH] =GetSystemString(1624) $ " Lv " $ String(DefAttLevel[ATTRIBUTE_EARTH]) $ " ("$ GetSystemString(1625) $ " " $ GetSystemString(54) $ " " $String(Item.DefenseAttributeValueEarth) $ ")"; } if(Item.DefenseAttributeValueHoly != 0) //신성 속성 툴팁 그리기 { textureName[ATTRIBUTE_HOLY] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_DIVINE"; tooltipStr[ATTRIBUTE_HOLY] =GetSystemString(1627) $ " Lv " $ String(DefAttLevel[ATTRIBUTE_HOLY]) $ " ("$ GetSystemString(1626) $ " " $ GetSystemString(54) $ " " $ String(Item.DefenseAttributeValueHoly) $")"; } if(Item.DefenseAttributeValueUnholy != 0) //암흑 속성 툴팁 그리기 { textureName[ATTRIBUTE_UNHOLY] = "L2UI_CT1.Gauges.Gauge_DF_Attribute_DARK"; tooltipStr[ATTRIBUTE_UNHOLY] =GetSystemString(1626) $ " Lv " $ String(DefAttLevel[ATTRIBUTE_UNHOLY]) $ " ("$ GetSystemString(1627) $ " " $ GetSystemString(54) $ " " $String(Item.DefenseAttributeValueUnholy) $ ")"; } // 방어 아이템 속성 } if (Item.AttackAttributeValue > 0)//공격속성일경우 { for(i = 0; i < 6; i++) { if(tooltipStr[i] == "") continue; AddTooltipItemBlank(0); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_strText = tooltipStr[i]; EndItem(); //텍스쳐 두장을 겹쳐 그려야 한다. StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 0; m_Info.nOffSetY = 2; m_Info.u_nTextureWidth = 140; m_Info.u_nTextureHeight = 7; m_Info.u_strTexture = textureName[i] $ "_BG"; EndItem(); StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 0; m_Info.nOffSetY = -7; m_Info.u_nTextureWidth = AttackAttCurrValue[i] * 140 / AttackAttMaxValue[i] ; if( m_Info.u_nTextureWidth > 140) m_Info.u_nTextureWidth = 140; //넘어가면 걍 140이라는.. ㅋ m_Info.u_nTextureHeight = 7; m_Info.u_strTexture = textureName[i]; EndItem(); AddTooltipItemBlank(4); } } else{ //방어 속성일 경우 for(i = 0; i < 6; i++) { if(tooltipStr[i] == "") continue; if(!FirstTime) { AddTooltipItemBlank(0); StartItem(); m_Info.eType = DIT_SPLITLINE; m_Info.u_nTextureWidth = TOOLTIP_MINIMUM_WIDTH; m_Info.u_nTextureHeight = 1; m_Info.u_strTexture ="L2ui_ch3.tooltip_line"; EndItem(); FirstTime=true; } StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_strText = tooltipStr[i]; EndItem(); //텍스쳐 두장을 겹쳐 그려야 한다. StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 0; m_Info.nOffSetY = 2; m_Info.u_nTextureWidth = 140; m_Info.u_nTextureHeight = 7; m_Info.u_strTexture = textureName[i] $ "_BG"; EndItem(); StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.nOffSetX = 0; m_Info.nOffSetY = -7; m_Info.u_nTextureWidth = DefAttCurrValue[i] * 140 / DefAttMaxValue[i] ; if( m_Info.u_nTextureWidth > 140) m_Info.u_nTextureWidth = 140; //넘어가면 걍 140이라는.. ㅋ m_Info.u_nTextureHeight = 7; m_Info.u_strTexture = textureName[i]; EndItem(); } if( FirstTime ) AddTooltipItemBlank(4); } } // function StartItem() // { // local DrawItemInfo infoClear; // m_Info = infoClear; // } // // function EndItem() // { // m_Tooltip.DrawList.Length = m_Tooltip.DrawList.Length + 1; // m_Tooltip.DrawList[m_Tooltip.DrawList.Length-1] = m_Info; // } //퀘스트 아이템의 퀘스트 이름 표시 function AddTooltipItemQuestList(ItemInfo Item) { local int i; //<관련 퀘스트> if(Item.RelatedQuestID[0] != 0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 10; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_strText = GetSystemString(1721); EndItem(); } for(i = 0 ; i<MAX_RELATED_QUEST ; i++) { if(Item.RelatedQuestID[i] != 0) { StartItem(); m_Info.eType = DIT_TEXT; m_Info.nOffSetY = 6; m_Info.t_color.R = 163; m_Info.t_color.G = 163; m_Info.t_color.B = 163; m_Info.t_color.A = 255; m_Info.bLineBreak = true; m_Info.t_bDrawOneLine = true; m_Info.t_strText = class'UIDATA_QUEST'.static.GetQuestName(Item.RelatedQuestID[i]);; EndItem(); } } } // 속성의 레벨값을 전역변수에 저장 //자료가 많아서 전역변수에 집어넣는다. function SetAttackAttribute(int Attvalue, int type) { if( AttValue >= 375) // 9렙 375 ~ 450 { AttackAttLevel[type] = 9; AttackAttMaxValue[type] = 75; AttackAttCurrValue[type] = AttValue - 375; } else if( AttValue >= 325) // 8렙 325 ~ 375 { AttackAttLevel[type] = 8; AttackAttMaxValue[type] = 50; AttackAttCurrValue[type] = AttValue - 325; } else if( AttValue >= 300) // 7렙 300 ~ 325 { AttackAttLevel[type] = 7; AttackAttMaxValue[type] = 25; AttackAttCurrValue[type] = AttValue - 300; } else if( AttValue >= 225) // 6렙 225 ~ 300 { AttackAttLevel[type] = 6; AttackAttMaxValue[type] = 75; AttackAttCurrValue[type] = AttValue - 225; } else if( AttValue >= 175) // 5렙 175 ~ 225 { AttackAttLevel[type] = 5; AttackAttMaxValue[type] = 50; AttackAttCurrValue[type] = AttValue - 175; } else if( AttValue >= 150) // 4렙 150 ~ 175 { AttackAttLevel[type] = 4; AttackAttMaxValue[type] = 25; AttackAttCurrValue[type] = AttValue - 150; } else if( AttValue >= 75) // 3렙 75 ~ 150 { AttackAttLevel[type] = 3; AttackAttMaxValue[type] = 75; AttackAttCurrValue[type] = AttValue - 75; } else if( AttValue >= 25) // 2렙 25~ 75 { AttackAttLevel[type] = 2; AttackAttMaxValue[type] = 50; AttackAttCurrValue[type] = AttValue - 25; } else // else 0~ 25 { AttackAttLevel[type] = 1; AttackAttMaxValue[type] = 25; AttackAttCurrValue[type] = AttValue; } } // 속성의 레벨값을 전역변수에 저장 //자료가 많아서 전역변수에 집어넣는다. function SetDefAttribute(int Defvalue, int type) { if( DefValue >= 150) // 9렙 150~180 { DefAttLevel[type] = 9; DefAttMaxValue[type] = 30; DefAttCurrValue[type] = DefValue - 150; } else if( DefValue >= 132) // 8렙 132 ~ 150 { DefAttLevel[type] = 8; DefAttMaxValue[type] = 18; DefAttCurrValue[type] = DefValue - 132; } else if( DefValue >= 120) // 7렙 120 ~ 132 { DefAttLevel[type] = 7; DefAttMaxValue[type] = 12; DefAttCurrValue[type] = DefValue - 120; } else if( DefValue >= 90) // 6렙 90 ~ 120 { DefAttLevel[type] = 6; DefAttMaxValue[type] = 30; DefAttCurrValue[type] = DefValue - 90; } else if( DefValue >= 72) // 5렙 72 ~ 90 { DefAttLevel[type] = 5; DefAttMaxValue[type] = 18; DefAttCurrValue[type] = DefValue - 72; } else if( DefValue >= 60) // 4렙 60 ~ 72 { DefAttLevel[type] = 4; DefAttMaxValue[type] = 12; DefAttCurrValue[type] = DefValue - 60; } else if( DefValue >= 30) // 3렙 30 ~ 60 { DefAttLevel[type] = 3; DefAttMaxValue[type] = 30; DefAttCurrValue[type] = DefValue - 30; } else if( DefValue >= 12) // 2렙 // 12 ~ 30 { DefAttLevel[type] = 2; DefAttMaxValue[type] = 18; DefAttCurrValue[type] = DefValue - 12; } else // else // 0~ 12 { DefAttLevel[type] = 1; DefAttMaxValue[type] = 12; DefAttCurrValue[type] = DefValue; } } //branch function AddPrimeItemSymbol(ItemInfo Item) { local string TextureName; if (Item.IsBRPremium != 2) return; TextureName = GetPrimeItemSymbolName(); if (Len(TextureName)>0) { StartItem(); m_Info.eType = DIT_TEXTURE; m_Info.nOffSetX = 2; m_Info.nOffSetY = 0; m_Info.u_nTextureWidth = 16; m_Info.u_nTextureHeight = 16; m_Info.u_nTextureUWidth = 16; m_Info.u_nTextureUHeight = 16; m_Info.u_strTexture = TextureName; EndItem(); } } //end of branch defaultproperties { }
  9. Fuck, so, is the .exe file detected as a virus cuz of the higher unemployment rate in greece? so many twists, i got lost
  10. You already got all the answers you needed, so out of curiosity, why do you want to use "original, untouched" files? patched systems have literally the same functionality
  11. you can set it to 0, but the values will still be there, if you wanna make them disappear there's no other way than deleting them from interface.u
  12. You can edit ugx files using L2Tool, i think https://github.com/acmi/l2tool
  13. well then, again, you can do some workaround with the server sided bleed abnormal effect
  14. I suppose you could do something like changing soulshot effects, what do you wanna do exactly? a passive skill for a single class or something like that? also, which client are you using? Either way, it should be possible to do something that from the server's source, you could take a look at abnormal effects and try to do some workaround with em
  15. simply put all the files inside your client's root folder, then edit hf.bat like this: l2mapconv.exe preview "YOUR LINEAGE 2 ROOT FOLDER" 22_22 pause here's a map with coords so you can look for whatever map you want, credits to deMEV the client's folder should end up looking like this: example of generated geodata on a custom map
  16. There are some 'ways', which chronicle are you playing? or are you playing official? edit: either way, you can just use XDatEditor to increase the size of the ingame font, or even the size of some windows, but that's gonna take a lot of time, i'd suggest you to just edit the font sizes, here's an example of what you can do: the icon on the top right corner is 32x32, so you get an idea of how big the text is here's a link, in case you're interested https://disk.yandex.ru/d/W8JN8-KhCQGEYg
  17. Which chronicle are you using? are you using any custom interface? either way, what you're looking for is inside L2Font-e.utx, in your SysTextures folder. You need to change these images
  18. it's not through .xdat, it's through interface.u, you can simply copy eMommy's code and add it to the script in case you don't have any sources, you can download that one. It should be the same process regardless of the chronicle you're using
  19. try this one instead, i cleaned it off a bit so it's really lite, just make sure to put it in your client's root folder, otherwise some texture dependencies might get fucked up. Plus you can directly open the client's utx files without having to decrypt them https://drive.google.com/file/d/1jTiNqL6R-Bq5ISJUNG-sMIzcO5YN_5d2/view?usp=sharing
  20. http://akumu.ru/lineage2/patch-maker.html
  21. wdym? simply add a new line like this
  22. nah, it doesn't. We did this on our server, i.e.
  23. There is no player name in systemmsg-e.dat. You could simply add an empty string and add $c1 on it, for example, and then tell the server to send the new ID and replace $c1 with the player's name. i.e.: $c1 has obtained $s3 $s2. $c1 = player name (your char or anyone else's char) $s3 = item quantity $s2 = item name
  24. if you wanna open retail files you can just use L2Editor either way, give more details on what you want to do exactly or ppl won't be able to help
×
×
  • Create New...