LV
0
The default Mob DropInfo window lacked a scrollbar feature. With 15 possible drop slots, any extra items would overflow and render outside the window bounds.
I'm still tinkering with this, so I'll be sharing more updates here as I go.
~/Client/script/lua/forms/player.clu
search for this inside frmMonsterInfo:
Add this right below:
search for this: (and disable or remove it.)
on ~/UIStartForm.h
add this on top:
find and disable:
Replace with this
on ~/UIStartForm.cpp
find: void CStartMgr::CleanDropListForm()
Reemplace with this
Find: void CStartMgr::SetMonsterInfo()
Reemplace with this
Find: bool CStartMgr::Init()
Reemplace with this
Hovering over an item shows the preview just like any other screen in the client.
I'm still tinkering with this, so I'll be sharing more updates here as I go.
~/Client/script/lua/forms/player.clu
search for this inside frmMonsterInfo:
Code:
-- Close Button
btnClose = UI_CreateCompent..
Add this right below:
JavaScript:
-- Drop ListView w Scroll
listMobDrops = UI_CreateListView(frmMonsterInfo, "listMobDrops", 160, 400, 16, 51, 2, 2)
UI_SetPos(listMobDrops, 16, 51)
UI_SetSize(listMobDrops, 160, 400)
UI_SetListRowHeight(listMobDrops, 40)
UI_SetMargin(listMobDrops, 10, 0, 6, 0)
UI_ListSetItemMargin(listMobDrops, 0, 6)
UI_ListViewSetTitle(listMobDrops, 0, 40, "", 0, 0, 0, 0)
UI_ListViewSetTitle(listMobDrops, 1, 100, "", 0, 0, 0, 0)
UI_SetListIsMouseFollow(listMobDrops, TRUE)
-- Scroll bar
scrollid = UI_GetScroll(listMobDrops)
UI_SetSize(scrollid, 11, 1)
UI_LoadImage(scrollid, "texture/ui/PublicC.tga", COMPENT_BACK, 11, 1, 194, 13)
id = UI_GetScrollObj(scrollid, SCROLL_UP)
UI_LoadButtonImage(id, "texture/ui/PublicC.tga", 11, 9, 166, 0, TRUE)
UI_SetSize(id, 11, 9)
id = UI_GetScrollObj(scrollid, SCROLL_SCROLL)
UI_LoadImage(id, "texture/ui/PublicC.tga", COMPENT_BACK, 11, 43, 166, 10)
UI_SetSize(id, 11, 43)
id = UI_GetScrollObj(scrollid, SCROLL_DOWN)
UI_LoadButtonImage(id, "texture/ui/PublicC.tga", 11, 9, 166, 0, TRUE)
UI_SetSize(id, 11, 9)
search for this: (and disable or remove it.)
Code:
--for i = 0, 14 do
-- listMobDrops = UI_CreateCompent(frmMonsterInfo, COMMAND_ONE_TYPE, "listMobDrops"..i, 170, 37, 25, 56 + (i * 40))
-- UI_SetIsDrag(listMobDrops, TRUE)
--
-- LabMobItems = UI_CreateCompent(frmMonsterInfo, LABELEX_TYPE, "LabMobItems"..i, 85, 9, 64, 60 + (i * 40))
-- UI_SetTextColor(LabMobItems, COLOR_BLACK)
-- UI_SetLabelExFont(LabMobItems, DEFAULT_FONT, TRUE, COLOR_WHITE)
--
-- LabMobRates = UI_CreateCompent(frmMonsterInfo, LABELEX_TYPE, "LabMobRates"..i, 85, 9, 64, 74 + (i * 40))
-- UI_SetTextColor(LabMobRates, COLOR_BLACK)
-- UI_SetLabelExFont(LabMobRates, DEFAULT_FONT, TRUE, COLOR_WHITE)
--
-- checkDropFilter = UI_CreateCompent(frmMonsterInfo, CHECK_TYPE, "checkDropFilter"..i, 10, 10, 160, 68 + (i * 40))
-- UI_LoadImage(checkDropFilter, "texture/ui/corsairs/frmMonsterInfo.png", UNCHECKED, 10, 10, 412, 473)
-- UI_LoadImage(checkDropFilter, "texture/ui/corsairs/frmMonsterInfo.png", CHECKED, 10, 10, 393, 473)
--end
on ~/UIStartForm.h
add this on top:
C++:
#include "UIListView.h"
find and disable:
C++:
COneCommand* listMobDrops[15];
CLabelEx* LabMobItems[15];
CLabelEx* LabMobRates[15];
CCheckBox* checkDropFilter[15];
Replace with this
C++:
CListView* listMobDrops;
on ~/UIStartForm.cpp
find: void CStartMgr::CleanDropListForm()
C++:
void CStartMgr::CleanDropListForm()
{
for (int i = 0; i < defCHA_INIT_ITEM_NUM - 1; i++) {
if (listMobDrops[i]) {
listMobDrops[i]->DelCommand();
}
if (LabMobItems[i]) {
LabMobItems[i]->SetCaption("");
LabMobItems[i]->SetHint("");
}
if (LabMobRates[i]) LabMobRates[i]->SetCaption("");
if (checkDropFilter[i]) checkDropFilter[i]->SetIsShow(false);
}
}
Reemplace with this
C++:
void CStartMgr::CleanDropListForm()
{
if (listMobDrops) {
listMobDrops->GetList()->Clear();
}
}
Find: void CStartMgr::SetMonsterInfo()
C++:
for (int i = 0; i < max; i++) {
CItemRecord* rInfo = GetItemRecordInfo(vect[i][0]);
if (!rInfo)
continue;
CItemCommand* rItem = new CItemCommand(rInfo);
if (!rItem)
continue;
listMobDrops[i]->AddCommand(rItem);
listMobDrops[i]->SetIsEnabled(false);
const char* item_name = rInfo->szName;
char get_name[128] = {0};
sprintf(get_name, "%s", StringLimit(item_name, 16).c_str());
LabMobItems[i]->SetCaption(get_name);
float calcuDrop = (10000 / float(vect[i][1])) * g_DropBonus;
if (calcuDrop > 100) {
calcuDrop = 100;
}
char item_rate[25];
sprintf(item_rate, "%0.2f%%", calcuDrop);
LabMobRates[i]->SetCaption(item_rate);
if (!rInfo)
return;
if (checkDropFilter[i]) {
checkDropFilter[i]->nTag = rInfo->lID;
checkDropFilter[i]->SetIsShow(true);
checkDropFilter[i]->SetIsChecked(!g_lootFilter->HasFilteredItem(rInfo->lID));
}
}
Reemplace with this
C++:
listMobDrops->GetList()->Clear();
for (int i = 0; i < max; i++) {
CItemRecord* rInfo = GetItemRecordInfo(vect[i][0]);
if (!rInfo) continue;
float calcuDrop = (10000 / float(vect[i][1])) * g_DropBonus;
if (calcuDrop > 100) calcuDrop = 100;
char item_rate[32] = { 0 };
sprintf(item_rate, "%0.2f%%", calcuDrop);
CItemRow* pRow = listMobDrops->AddItemRow();
if (!pRow) continue;
CItemCommand* rItem = new CItemCommand(rInfo);
rItem->SetIsSolid(true);
rItem->SetIsValid(true);
pRow->SetIndex(0, rItem);
listMobDrops->pItem[i] = rItem;
char line[160] = { 0 };
sprintf(line, "%s\n%s", StringLimit(rInfo->szName, 16).c_str(), item_rate);
CItemEx* pText = new CItemEx(line, COLOR_BLACK);
pRow->SetIndex(1, pText);
}
listMobDrops->Refresh();
Find: bool CStartMgr::Init()
C++:
for (int i = 0; i < defCHA_INIT_ITEM_NUM - 1; i++) {
char buf_list[25] = {0};
sprintf(buf_list, "listMobDrops%d", i);
listMobDrops[i] = dynamic_cast<COneCommand*>(frmMonsterInfo->Find(buf_list));
if (!listMobDrops[i]) return false;
char buf_name[25] = {0};
sprintf(buf_name, "LabMobItems%d", i);
LabMobItems[i] = dynamic_cast<CLabelEx*>(frmMonsterInfo->Find(buf_name));
if (!LabMobItems[i]) return false;
char buf_rate[25] = {0};
sprintf(buf_rate, "LabMobRates%d", i);
LabMobRates[i] = dynamic_cast<CLabelEx*>(frmMonsterInfo->Find(buf_rate));
if (!LabMobRates[i]) return false;
char buf_filter[25] = {0};
sprintf(buf_filter, "checkDropFilter%d", i);
checkDropFilter[i] = static_cast<CCheckBox*>(frmMonsterInfo->Find(buf_filter));
if (checkDropFilter[i]) {
checkDropFilter[i]->evtCheckChange = _evtCheckLootFilter;
}
if (!checkDropFilter[i]) return false;
}
Reemplace with this
C++:
listMobDrops = dynamic_cast<CListView*>(frmMonsterInfo->Find("listMobDrops"));
if (!listMobDrops) return false;
listMobDrops->GetList()->SetIsChangeColor(false);
listMobDrops->_IsShowHint = true;
Hovering over an item shows the preview just like any other screen in the client.
