- Joined
- Jun 12, 2005
- Messages
- 746
- Reaction score
- 69
Expired items are equiped or in your inventory?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
Expired items are equiped or in your inventory?
Expired Items are not supposed to be deleted. You have to sell them, so that's not a bug.
Can someone compile a list of bugs as of now?
I may have a go on working on those files for a bit.
void CPeriodItemEx::DGPeriodItemExDelete(PMSG_ANS_PERIODITEMEX_DELETE lpMsg)
{
int UserIndex = lpMsg->wUserIndex;
if (ObjectMaxRange(UserIndex) == FALSE)
{
return;
}
LPOBJ lpObj = &gObj[UserIndex];
if (lpObj->Connected < PLAYER_LOGGED)
{
return;
}
if (lpObj->Type != OBJ_USER)
{
return;
}
if (lpMsg->btResultCode)
{
}
else
{
g_Log.Add("[PeriodItemEx][Delete PeriodItem] OnRequest Delete PeriodItem Data. User Id : %s(%d), Name : %s, Result : %d",
lpObj->AccountID, lpObj->DBNumber, lpObj->Name, lpMsg->btResultCode);
}
}
void CPeriodItemEx::DGPeriodItemExExpiredItemList(PMSG_ANS_PERIODITEMEX_EXPIRED_ITEMLIST lpMsg)
{
int UserIndex = lpMsg->wUserIndex;
if (ObjectMaxRange(UserIndex) == FALSE)
{
return;
}
LPOBJ lpObj = &gObj[UserIndex];
if (lpObj->Connected < PLAYER_LOGGED)
{
return;
}
if (lpObj->Type != OBJ_USER)
{
return;
}
int pos = 0;
for (int i = 0; i < lpMsg->btExpiredItemCount; i++)
{
pos = this->GetItemFromInventory(lpObj, lpMsg->wItemCode[i], lpMsg->Serial[i]);
if (pos != -1)
{
g_Log.Add("[PeriodItemEx][SetExpiredItemList] OnRequest Expired Item Set Disable. User Id : %s(%d), Name : %s, Item : %s(%d), Serial : %I64d",
lpObj->AccountID, lpObj->DBNumber, lpObj->Name, ItemAttribute[lpMsg->wItemCode[i]].Name, lpMsg->wItemCode[i], lpMsg->Serial[i]);
this->SetDisableItemToExpire(lpObj, pos);
}
}
}
@solarismu
does anyone know how to fix the problem of not deleting the PeriodItem after they expired
I suggest don't to that. On my file right now, expired item should be deleted every select_character. With me, that's ok. Or just sell it to shop, or leave it there... no harm, cause expired item has no effect.
Technically, to correctly detect expired item on gameserver side, you have to make loop (every short amount of time) through all item to check its expired time. For a bug server, that's such a waste, not efficient at all... But it's able/easy to it.
2nd way, work with client side, make a trigger to send notice to server (should be harder)
No, cause I will never do that useless thingCould you share your fix?
Just Coded new stuff on s9+ (should work on higher season ^.^)
POST ITEM ^.^
see this.
No, cause I will never do that useless thing
What do you mean? The postitem? I've just coded, as I said .how does it work on your muserver ???
What do you mean? The postitem? I've just coded, as I said .
it cost me 2 precious nights.
cause season 9 & above use new flash interfaces, so much more harder to make it onseason9
No, my friend, I'm talking about the period item. wanted to know how it works on your muserver, when it expires it is deleted or is it for the player to sell ??
Enviado do meu iPhone usando Tapatalk
friend this is not true since in source code there is the function that should delete the item! but I do not know why it's not working.
Code:void CPeriodItemEx::DGPeriodItemExDelete(PMSG_ANS_PERIODITEMEX_DELETE lpMsg) { int UserIndex = lpMsg->wUserIndex; if (ObjectMaxRange(UserIndex) == FALSE) { return; } LPOBJ lpObj = &gObj[UserIndex]; if (lpObj->Connected < PLAYER_LOGGED) { return; } if (lpObj->Type != OBJ_USER) { return; } if (lpMsg->btResultCode) { } else { g_Log.Add("[PeriodItemEx][Delete PeriodItem] OnRequest Delete PeriodItem Data. User Id : %s(%d), Name : %s, Result : %d", lpObj->AccountID, lpObj->DBNumber, lpObj->Name, lpMsg->btResultCode); } } void CPeriodItemEx::DGPeriodItemExExpiredItemList(PMSG_ANS_PERIODITEMEX_EXPIRED_ITEMLIST lpMsg) { int UserIndex = lpMsg->wUserIndex; if (ObjectMaxRange(UserIndex) == FALSE) { return; } LPOBJ lpObj = &gObj[UserIndex]; if (lpObj->Connected < PLAYER_LOGGED) { return; } if (lpObj->Type != OBJ_USER) { return; } int pos = 0; for (int i = 0; i < lpMsg->btExpiredItemCount; i++) { pos = this->GetItemFromInventory(lpObj, lpMsg->wItemCode[i], lpMsg->Serial[i]); if (pos != -1) { g_Log.Add("[PeriodItemEx][SetExpiredItemList] OnRequest Expired Item Set Disable. User Id : %s(%d), Name : %s, Item : %s(%d), Serial : %I64d", lpObj->AccountID, lpObj->DBNumber, lpObj->Name, ItemAttribute[lpMsg->wItemCode[i]].Name, lpMsg->wItemCode[i], lpMsg->Serial[i]); this->SetDisableItemToExpire(lpObj, pos); } } }
Enviado do meu iPhone usando Tapatalk
Pffff, isn't there any real bug you want to fix? That is NOT A BUG as I previously said. That function "deletes" the items effect. It does not remove the item from the inventory. Take my advise and let it be that way, unless you want yet another way for abusers to find a dupe bug or something.
Webzen's mu also works that way, so NO BUG here.
he got the point. Why ppl alway want to fix something not is bug )
make your custom by anything you want, but dont call it bug haha
Pffff, isn't there any real bug you want to fix? That is NOT A BUG as I previously said. That function "deletes" the items effect. It does not remove the item from the inventory. Take my advise and let it be that way, unless you want yet another way for abusers to find a dupe bug or something.
Webzen's mu also works that way, so NO BUG here.
Just Coded new stuff on s9+ (should work on higher season ^.^)
POST ITEM ^.^
see this.
No, cause I will never do that useless thing
I liked that post item thing xD... Can that work in season 6 muemu??? can you share the code dude or articles about that?
open dataserver battlecore..
you can try:-------------
I want to split Level Master Level display in table C, how to do it! I mean, table C only shows up to 400 Normal Levels. Thank you for your help!