Mareste limita de stack de la obiecte de la 200 -> la cat vrei tu!
Cu ajutorul tutorialului de mai jos vei putea sa maresti limita de stack al itemelor din inventar, astfel in loc de standardul de 200 obiecte / stack, vei putea aduna si 10,000 bucati intr-un singur stack.
Tutorialul este Full si Testat!
Are adaptare si pentru cei care folosesc serverfiles + sursele de la Martysama!![]()
*Poze / Video:
*Link download / Code:
Deschidem sursa binary si mergem in Packet.h
Cautam (in typedef struct command_item_drop2):
BYTE count;Cautam (in typedef struct command_item_move):
BYTE num;
Cautam (in typedef struct SShopItemTable):
BYTE count;Cautam (in typedef struct packet_set_item2):
BYTE count;Cautam (in typedef struct packet_update_item):
BYTE count;Cautam (in typedef struct SEquipmentItemSet):
BYTE count;
Modificam cu:
Deschidem PythonNetworkPhaseGame.cpp si mergem in functia -> RecvExchangePacket
Cautam:
CPythonExchange::Instance().SetItemToSelf(iSlotIndex, exchange_packet.arg1, (BYTE) exchange_packet.arg3);Cautam:
CPythonExchange::Instance().SetItemToTarget(iSlotIndex, exchange_packet.arg1, (BYTE) exchange_packet.arg3);Deschidem PythonExchange.cpp: si cautam:
BYTE CPythonExchange::GetItemCountFromTarget(BYTE pos)Cautam:
BYTE CPythonExchange::GetItemCountFromSelf(BYTE pos)Cautam:
void CPythonExchange::SetItemToTarget(DWORD pos, DWORD vnum, BYTE count)Cautam:
void CPythonExchange::SetItemToSelf(DWORD pos, DWORD vnum, BYTE count)Deschidem PythonExchange.h si cautam:
BYTE GetItemCountFromTarget(BYTE pos);
BYTE GetItemCountFromSelf(BYTE pos);
void SetItemToTarget(DWORD pos, DWORD vnum, BYTE count);
void SetItemToSelf(DWORD pos, DWORD vnum, BYTE count);
BYTE item_count[EXCHANGE_ITEM_MAX_NUM];Deschidem PythonNetworkStreamPhaseGameItem.cpp si cautam:
bool CPythonNetworkStream::SendShopSellPacketNewDupa, cautam:
bool CPythonNetworkStream::SendItemMovePacket(TItemPos pos, TItemPos change_pos, BYTE num)
bool CPythonNetworkStream::SendSafeBoxItemMovePacket(BYTE bySourcePos, BYTE byTargetPos, BYTE byCount)Deschidem acum fisierul PythonPlayerModule.cpp si cautam:
PyObject * playerSetItemCount(PyObject* poSelf, PyObject* poArgs)Deschidem dupa PythonNetworkStreamModule.cpp si cautam:
PyObject* netSendItemMovePacket(PyObject* poSelf, PyObject* poArgs)Deschidem acum GameType.h si cautam (in typedef struct packet_item)
BYTE count;Cautam (in typedef struct packet_shop_item)
BYTE count;Deschidem dupa AbstractPlayer.h si cautam:
virtual void SetItemCount(TItemPos itemPos, BYTE byCount) = 0;Dupa, deschidem PythonPlayer.cpp si cautam:
void CPythonPlayer::SetItemCount(TItemPos Cell, BYTE byCount)Mergem in PythonPlayer.h si cautam:
void SetItemCount(TItemPos Cell, BYTE byCount);Deschidem fisierul PythonNetworkStream.h si cautam:
bool SendSafeBoxItemMovePacket(BYTE bySourcePos, BYTE byTargetPos, BYTE byCount);
bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);
bool SendItemMovePacket(TItemPos pos, TItemPos change_pos, BYTE num);Acum in sursa game, deschidem common/tables.h si cautam:
typedef struct SShopItemTableBYTE count;Deschidem common/item_lenght.h si aici putem modifica limita de stack cu ce vrem noi: (max ~60k)
ITEM_MAX_COUNT = 200,
Deschidem packet.h si cautam (in typedef struct command_item_drop2):
BYTE count;Cautam (in typedef struct command_item_move):
BYTE count;Cautam (in typedef struct packet_item_set):
BYTE count;Cautam (in typedef struct packet_item_update):
BYTE count;Cautam (in struct packet_shop_item):
BYTE count;Cautam (in typedef struct pakcet_view_equip):
BYTE count;Acum mergem in fisierul input_main.cpp si cautam:
int CInputMain::Shop(LPCHARACTER ch, const char * data, size_t uiBytes)Mergem acum in shop_manager.cpp si cautam:
void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)Deschidem shop.h si cautam (in typedef struct shop_item)
BYTE count;Deschidem shop_manager.h si cautam:
void Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount=0);Deschidem fisierul char_item.cpp si cautam:
bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)Cautam:
bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)Cautam mai jos:
count = MIN(200 - item2->GetCount(), count);Cautam:
LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool bMsg)Mai jos gasim:
BYTE bCount2 = MIN(200 - item->GetCount(), bCount);In functia PickupItem cautam:
BYTE bCount = item->GetCount();Tot in functia asta cautam:
BYTE bCount2 = MIN(200 - item2->GetCount(), bCount);Deschidem char.h si cautam:
bool DropItem(TItemPos Cell, BYTE bCount=0);
bool MoveItem(TItemPos pos, TItemPos change_pos, BYTE num);
LPITEM AutoGiveItem(DWORD dwItemVnum, BYTE bCount=1, int iRarePct = -1, bool bMsg = true);Deschidem fisierul item.cpp si mergem la functia -> DWORD CItem::GetCount() unde cautam:
return MIN(m_dwCount, 200);Deschidem safebox.cpp si cautam:
bool CSafebox::MoveItem(BYTE bCell, BYTE bDestCell, BYTE count)Mai jos gasim:
count = MIN(200 - item2->GetCount(), count);Deschidem safebox.h si cautam:
bool MoveItem(BYTE bCell, BYTE bDestCell, BYTE count);Deschidem oxevent.cpp si cautam:
bool COXEventManager::GiveItemToAttender(DWORD dwItemVnum, BYTE count)Deschidem OxEvent.h si cautam:
bool GiveItemToAttender(DWORD dwItemVnum, BYTE count);Nota! Daca ai Martysama trebuie sa faci si ce e mai jos in Spoiler:


la acest mesaj și conținutul se va afișa automat.




