xSaG 15 Posted July 3, 2015 Share Posted July 3, 2015 (edited) Hey, enter and search char_battle.cpp void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) and comment line iCount = iCount - MIN(iCount, dwArrowCount); Exemple: //iCount = iCount - MIN(iCount, dwArrowCount); Edited July 3, 2015 by xSaG 1 Link to comment Share on other sites More sharing options...
dreammaker 3 Posted July 14, 2015 Share Posted July 14, 2015 Someone tried it ? Any problems ? Link to comment Share on other sites More sharing options...
Think 117 Posted July 15, 2015 Share Posted July 15, 2015 (edited) Someone tried it ? Any problems ? Considering he's just commenting a line, I can't see how that would not work, so yeah, no problems. While you are at it, you can also delete the line that goes afterwards, you don't need to SetCount to the same count you already had. Edited July 15, 2015 by Think Link to comment Share on other sites More sharing options...
dreammaker 3 Posted July 16, 2015 Share Posted July 16, 2015 Someone tried it ? Any problems ? Considering he's just commenting a line, I can't see how that would not work, so yeah, no problems. While you are at it, you can also delete the line that goes afterwards, you don't need to SetCount to the same count you already had. Can you give full code block ? I dont understand c++, most likely l'll make mistakes and this will make me crazy. Thank you Think Link to comment Share on other sites More sharing options...
Former Staff flygun 304 Posted July 16, 2015 Former Staff Share Posted July 16, 2015 open "char_battle.cpp" from game folder in server source and search for void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) it'll be like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); iCount = iCount - MIN(iCount, dwArrowCount); pkArrow->SetCount(iCount); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } make it look like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } 1 Link to comment Share on other sites More sharing options...
Haya 4 Posted July 21, 2015 Share Posted July 21, 2015 (edited) Hello, what problème? no time Edited August 19, 2022 by Metin2 Dev Core X - External 2 Internal 1 Link to comment Share on other sites More sharing options...
Premium Galet 509 Posted July 21, 2015 Premium Share Posted July 21, 2015 (edited) Hello, what problème? no time Tu ne l'as pas mit dans les protos. You don't add any time in the protos Edited August 19, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Vesley 1 Posted July 21, 2015 Share Posted July 21, 2015 (edited) Hello, what problème? no time Tu ne l'as pas mit dans les protos. You don't add any time in the protos I have this problem too and in proto i have this: 79503 quiver_15_days ITEM_WEAPON WEAPON_ARROW 1 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_STACK NONE WEAR_ARROW NONE 0 0 0 0 0 REAL_TIME 1296000 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 4 0 25 0 0 0 0 0 Edited August 19, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Haya 4 Posted July 21, 2015 Share Posted July 21, 2015 my proto 79503 quiver_15_days ITEM_WEAPON WEAPON_ARROW 1 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_STACK NONE WEAR_ARROW NONE 0 0 0 0 0 REAL_TIME 1296000 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 4 0 25 0 0 0 0 0 Link to comment Share on other sites More sharing options...
Think 117 Posted July 22, 2015 Share Posted July 22, 2015 You will need to tell the client that your quiver has a REAL_TIME flag in its socket and it's not some stone or something like that (which is what is expected on weapons). Edit uiTooltip Link to comment Share on other sites More sharing options...
Haya 4 Posted July 22, 2015 Share Posted July 22, 2015 possible to have part of uitooltip ? please Link to comment Share on other sites More sharing options...
xSaG 15 Posted July 22, 2015 Author Share Posted July 22, 2015 uitooltip """"""#1) Search: if item.ITEM_TYPE_WEAPON == itemType:#2) Delete their declaration and paste: if item.ITEM_TYPE_WEAPON == itemType: self.__AppendLimitInformation() self.AppendSpace(5) if item.WEAPON_FAN == itemSubType: self.__AppendMagicAttackInfo() self.__AppendAttackPowerInfo() else: self.__AppendAttackPowerInfo() self.__AppendMagicAttackInfo() self.__AppendAffectInformation() self.__AppendAttributeInformation(attrSlot) self.AppendWearableInformation() if itemSubType != item.WEAPON_UNLIMITED_ARROW: self.__AppendMetinSlotInfo(metinSlot) else: bHasRealtimeFlag = 0 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 if bHasRealtimeFlag == 1: self.AppendMallItemLastTime(metinSlot[0])"""""" Link to comment Share on other sites More sharing options...
Haya 4 Posted July 22, 2015 Share Posted July 22, 2015 i'm sorry no work Link to comment Share on other sites More sharing options...
Vesley 1 Posted July 22, 2015 Share Posted July 22, 2015 i'm sorry no work yes its working--- Link to comment Share on other sites More sharing options...
Haya 4 Posted July 22, 2015 Share Posted July 22, 2015 possible link uitooltip please? Thank Link to comment Share on other sites More sharing options...
Night 366 Posted July 22, 2015 Share Posted July 22, 2015 open "char_battle.cpp" from game folder in server source and search for void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) it'll be like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); iCount = iCount - MIN(iCount, dwArrowCount); pkArrow->SetCount(iCount); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } make it look like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } btw this : if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } is basicly mmmmmmm useless Link to comment Share on other sites More sharing options...
dreammaker 3 Posted July 22, 2015 Share Posted July 22, 2015 btw this : if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } is basicly mmmmmmm useless Is this part useless ? Can you explain pls Link to comment Share on other sites More sharing options...
Former Staff flygun 304 Posted July 22, 2015 Former Staff Share Posted July 22, 2015 open "char_battle.cpp" from game folder in server source and search for void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) it'll be like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); iCount = iCount - MIN(iCount, dwArrowCount); pkArrow->SetCount(iCount); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } make it look like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } btw this : if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } is basicly mmmmmmm useless yeah it/s useless but this is not useless if (pkNewArrow) EquipItem(pkNewArrow); it'll attach new group of arrows when the first count to 0 so it can be written like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); LPITEM pkNewArrow = FindSpecifyItem(dwVnum); if (iCount == 0) if (pkNewArrow) EquipItem(pkNewArrow); } Link to comment Share on other sites More sharing options...
ScreamMyName 100 Posted July 22, 2015 Share Posted July 22, 2015 open "char_battle.cpp" from game folder in server source and search for void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) it'll be like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); iCount = iCount - MIN(iCount, dwArrowCount); pkArrow->SetCount(iCount); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } make it look like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } } btw this : if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); } is basicly mmmmmmm useless yeah it/s useless but this is not useless if (pkNewArrow) EquipItem(pkNewArrow); it'll attach new group of arrows when the first count to 0 so it can be written like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { int iCount = pkArrow->GetCount(); DWORD dwVnum = pkArrow->GetVnum(); LPITEM pkNewArrow = FindSpecifyItem(dwVnum); if (iCount == 0) if (pkNewArrow) EquipItem(pkNewArrow); } It is useless if you have a infinite arrow it will never end therefore you won't need EquipItem(pkNewArrow) because you will always have one. Link to comment Share on other sites More sharing options...
Former Staff flygun 304 Posted July 22, 2015 Former Staff Share Posted July 22, 2015 (edited) OMG i'm soo stupid ... i forgot that this topic i about infinity arrows i just saw night's comment so it can be written like this void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount) { DWORD dwVnum = pkArrow->GetVnum(); } Edited July 22, 2015 by flygun Link to comment Share on other sites More sharing options...
Think 117 Posted July 23, 2015 Share Posted July 23, 2015 ... no. You don't need to do anything in UseArrow, you don't even need to keep the UseArrow function. Link to comment Share on other sites More sharing options...
Chris90909090909090 50 Posted July 26, 2015 Share Posted July 26, 2015 And arrow effect? Link to comment Share on other sites More sharing options...
Haya 4 Posted July 26, 2015 Share Posted July 26, 2015 Hello, possible to make a full and clear tutorial is about ? With proto client, server and effect? thank you Link to comment Share on other sites More sharing options...
dreammaker 3 Posted July 26, 2015 Share Posted July 26, 2015 Hello, possible to make a full and clear tutorial is about ? With proto client, server and effect? thank you Can somebody make it clear ? Newbies (like me) will confuse about what to do.Pls make a simple tutoial.Thanks Link to comment Share on other sites More sharing options...
Rideas 167 Posted July 28, 2015 Share Posted July 28, 2015 (edited) void CHARACTER::UseArrow(LPITEM pkArrow, DWORD dwArrowCount){ iCount = iCount - MIN(iCount, dwArrowCount); if (pkArrow->GetVnum() != 88005) pkArrow->SetCount(iCount); DWORD dwVnum = pkArrow->GetVnum(); int iCount = pkArrow->GetCount(); if (iCount == 0) { LPITEM pkNewArrow = FindSpecifyItem(dwVnum); sys_log(0, "UseArrow : FindSpecifyItem %u %p", dwVnum, get_pointer(pkNewArrow)); if (pkNewArrow) EquipItem(pkNewArrow); }} Edited July 28, 2015 by Rideas Link to comment Share on other sites More sharing options...
Recommended Posts