Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Release] IGCN Season 9.5 (src-x9.5 9.5.1.15) SRC (April/2016)

Joined
Aug 29, 2011
Messages
512
Reaction score
33
IGCN Season 9.5 (src-x9.5 9.5.1.15) SRC (April/2016)

or30n
Expired items are equiped or in your inventory?

it is equipped, it expires and it does not delete. Then I put it in the inventory and it stays there. So I have to sell to erase it.


Enviado do meu iPhone usando Tapatalk
 
Last edited:
Joined
Jun 12, 2005
Messages
746
Reaction score
69
I've tried too to fix it but no luck. The only solution now is just to sell the item. I don't remember, if the item expired, continues to exist as equipped or move in inventory? Cause if it moves in inventory its ok somehow, but if it stays as equipped then need fix.
 
Experienced Elementalist
Joined
Sep 20, 2012
Messages
288
Reaction score
74
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.
 
Joined
Aug 29, 2011
Messages
512
Reaction score
33
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.

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
 
Last edited by a moderator:
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
@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 items (alot) to check its expired time. For a big 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)
 
Joined
Aug 29, 2011
Messages
512
Reaction score
33
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)

Could you share your fix?


Enviado do meu iPhone usando Tapatalk
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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
 
Joined
Aug 29, 2011
Messages
512
Reaction score
33
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
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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

Deleted after select character, or players sell it
 
Experienced Elementalist
Joined
Sep 20, 2012
Messages
288
Reaction score
74
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.
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
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
 
Joined
Aug 29, 2011
Messages
512
Reaction score
33
IGCN Season 9.5 (src-x9.5 9.5.1.15) SRC (April/2016)

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.



so if it is possible you could share the code to fix the bug that crashes the DataServer ?? % n,% s,% d when used in frindsystem and cashshop gift.


Enviado do meu iPhone usando Tapatalk
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
I liked that post item thing xD... Can that work in season 6 muemu??? can you share the code dude or articles about that?

Nope, I'm not ready to share this. Still in developing mode...
If you use Season 6, you can try this PostItem : http://forum.ragezone.com/f197/muserver-ss6ep3-post-item-ranktitle-1133736/
just tortured my PC again: -.-
BhmsdXv - [Release] IGCN Season 9.5  (src-x9.5 9.5.1.15) SRC (April/2016) - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Dec 25, 2012
Messages
43
Reaction score
2
Can you share how to fix "% n" in Source Code?
-------------
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!
 
Newbie Spellweaver
Joined
Feb 7, 2018
Messages
45
Reaction score
0
open dataserver battlecore..

Hi michi28,

I have opened data server battlecore and game server battle core already. However, the Data Server battle Core windows show NOT RESPONDING status.

Can you help me fix that error,

Thanks,
--Taly
 
Experienced Elementalist
Joined
May 4, 2017
Messages
219
Reaction score
318
-------------
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!
you can try:
1. easy way: code a hook (in client) that change passing arg _strText in SetLevelText(_strText). Something like text "450" -> "400 (50)" : 400 normal lvl + 50 Master lvl.
2. hard war: I suggest you don't think about it... You have to mess up with the CharacterFrame.ozg interface re-design, create new label&textBox& function SetMasterLevelText for MasterLevel display. Then code a hook to SetLevelText, whenever client call that function, you will change arg _strText to normal level ("450"->"400") + call SetMasterLevelText right after which sent your masterLevel text ("50")...
 
Back
Top