Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
Kemer Envanter Sorunları Fix, 5x+ Envanter Sorunları Fix İtem taşma Sorunları fix. Dragon soul Fix.
Aşşağıdaki Kodları Uyguladığımızda Kısaca Neler yapmış olduk.
1. Kemer Envanterinde Kullanılmayan Slotlar Kullanıma Açıldı.
2. Kemer Envanterinde İtem var iken Kemer Değişmez veya Çıkmaz.
3. 5x 8x 9x 12x 15x 18x Envanterli Oyun yapılabilir hale getirildi.
4. Ticaret Yaparken İtem Taşma Sorunu Fixlendi.
5. Dragon soul Sistem yuvaları Düzenli hale geldi.
6. Aklıma gelmeyen Daha bir çok Slot Envanter sorunları Çözülecektir.
Aşşağıdaki Anlatımları Kesinlikle en az 5x Envanter kullananların eklemesi gerekir. 4 envanter Kullanıcılarının eklemesine gerek yoktur. Çünki 4 envanter ile sınırı Aşmıyorsunuz.
Asıl sorun Game'lerde BYTE ve 255 olarak yapılandırılması ve bunları UINT ve 1000 yaparak tüm sorunlara elveda diyeceğiz.
Şimdi Başlayalım
common/tables.h Açılır ve Aratılır
Değiştirilir.
game/src/char.h Açılır ve Aratılır
Değiştirilir
1.Aratılır
1.Değiştirilir
2.Aratılır
2.Değiştirilir
3.Aratılır
3.Değiştirilir
4.Aratılır
4.Değiştirilir
5.Aratılır
5.Değiştirilir
6.Aratılır
6.Değiştirilir
7.Aratılır
7.Değiştirilir
8.Aratılır
8.Değiştirilir
9.Aratılır
9.Değiştirilir
10.Aratılır
10.Değiştirilir
game/src/char_battle.cpp Açılır ve Aratılır 2x defa Aratın
Değiştirilir 2x
Aratılır 2x defa Aratın
Değiştirilir 2x
game/src/char_item.cpp Açılır ve Aratılır
Değiştirilir
1.Aratılır
1.Değiştirilir
2.Aratılır
2.Değiştirilir
3.Aratılır
3.Değiştirilir
4.Aratılır 2x Aratılır
4.Değiştirilir 2x
5.Aratılır 2x Aratılır
5.Değiştirilir 2x
6.Aratılır 3x Aratılır
6.Değiştirilir 3x
7.Aratılır
7.Değiştirilir
8.Aratılır
8.Değiştirilir
9.Aratılır
9.Değiştirilir
10.Aratılır
10.Değiştirilir
11.Aratılır
11.Değiştirilir
12.Aratılır
12.Değiştirilir
13.Aratılır
13.Değiştirilir
14.Aratılır
14.Değiştirilir
game/src/char_quickslot.cpp Açılır ve Aratılır
Değiştirilir
1.Aratılır
1.Değiştirilir
2.Aratılır
2.Değiştirilir
3.Aratılır
3.Değiştirilir
4.Aratılır
4.Değiştirilir
5.Aratılır
5.Değiştirilir
6.Aratılır
6.Değiştirilir
game/src/cmd_general.cpp Açın ve Aratın
Değiştirin
game/src/cmd_gm.cpp Açın ve Aratın
Değiştirin
Aratılır 3x Aratın
Değiştirin 3x
game/src/exchange.cpp Açın ve Aratın
Değiştirin
game/src/fishing.cpp Açın ve Aratın 2x Aratın
Değiştirin
game/src/input_main.cpp Açın ve Aratın
Değiştirin
1.Aratın
1.Değiştirin
2.Aratın
2.Değiştirin
3.Aratın
3.Değiştirin
game/src/item.cpp Açın ve Aratın
Değiştirin
1.Aratın
1.Değiştirin
2.Aratın
2.Değiştirin
game/src/item.h Açın ve Aratın
Değiştirin
game/src/item_manager.cpp Açın ve Aratın
Değiştirin
game/src/minig.cpp Açın ve 2x Aratın
Değiştirin 2.x
game/src/packet.h Açın ve Aratın
Değiştirin
1.Aratın
1.Değiştirin
2.Aratın
2.Değiştirin
3.Aratın
3.Değiştirin
4.Aratın
4.Değiştirin
5.Aratın
5.Değiştirin
6.Aratın
6.Değiştirin
7.Aratın
7.Değiştirin
8.Aratın
8.Değiştirin
9.Aratın
9.Değiştirin
game/src/questlua_global.cpp Açın ve 2x Aratın
Değiştirin 2x
game/src/questlua_item.cpp Açın ve Aratın
Değiştirin
game/src/questlua_pc.cpp Açın ve Aratın
Değiştirin
game/src/safebox.cpp Açın ve Aratın
Değiştirin
Aratın
Değiştirin
game/src/safebox.h Açın ve Aratın
Değiştirin
Aratın
Değiştirin
game/src/shop.cpp Açın ve Aratın
Değiştirin
game/src/shop_manager.cpp Açın ve Aratın
Değiştirin
game/src/shop_manager.h Açın ve Aratın
Değiştirin
Game SRC'de İşimiz Bitti
Client Source:
Client/UserInterface/AbstractPlayer.h Açalım ve Aratalım
Değiştirin
Client/UserInterface/GameType.h Açalım ve Aratalım
Değiştirin
Client/UserInterface/Packet.h Açalım ve Aratalım
Değiştirin
1.Aratın
1.Değiştirin
2.Aratın
2.Değiştirin
3.Aratın
3.Değiştirin
4.Aratın 2 defa var ise 2 sinide değiştirin
4.Değiştirin kaç tane varsa
5.Aratın
5.Değiştirin
6.Aratın
6.Değiştirin
7.Aratın
7.Değiştirin
8.Aratın
8.Değiştirin
9.Aratın
9.Değiştirin
Client/UserInterface/PythonNetworkStream.h Açın ve Aratın
Değiştirin
1.Aratın
1.Değiştirin
2.Aratın
2.Değiştirin
3.Aratın
3.Değiştirin
4.Aratın
4.Değiştirin
Client/UserInterface/PythonNetworkStreamPhaseGame.cpp Açın ve Aratın
Değiştirin
Client/UserInterface/PythonNetworkStreamPhaseGameItem.cpp Açın ve Aratın
Değiştirin
Üstteki Değiştirdiğimiz Kodun Hemen Altındaki Kod Bloğunu Tamamen Alttaki kod ile Değiştirin
Aratın
Değiştirin
Aratın
Değiştirin
Aratın
Değiştirin
Client/UserInterface/PythonPlayer.cpp Açılır ve Aratılır
Değiştirin
1.Aratın
1.Değiştirin
2.Aratın
2.Değiştirin
3.Aratın
3.Değiştirin
4.Aratın
4.Değiştirin
Client/UserInterface/PythonPlayer.h Açılır ve Aratılır
Değiştirin
Sorun yaşayan ve yazım hataları olan kısımlar mevcut ise konu altından bildirin yardımcı olayım. İyi kullanımlar.
Aşşağıdaki Kodları Uyguladığımızda Kısaca Neler yapmış olduk.
1. Kemer Envanterinde Kullanılmayan Slotlar Kullanıma Açıldı.
2. Kemer Envanterinde İtem var iken Kemer Değişmez veya Çıkmaz.
3. 5x 8x 9x 12x 15x 18x Envanterli Oyun yapılabilir hale getirildi.
4. Ticaret Yaparken İtem Taşma Sorunu Fixlendi.
5. Dragon soul Sistem yuvaları Düzenli hale geldi.
6. Aklıma gelmeyen Daha bir çok Slot Envanter sorunları Çözülecektir.
Aşşağıdaki Anlatımları Kesinlikle en az 5x Envanter kullananların eklemesi gerekir. 4 envanter Kullanıcılarının eklemesine gerek yoktur. Çünki 4 envanter ile sınırı Aşmıyorsunuz.
Asıl sorun Game'lerde BYTE ve 255 olarak yapılandırılması ve bunları UINT ve 1000 yaparak tüm sorunlara elveda diyeceğiz.
Şimdi Başlayalım
common/tables.h Açılır ve Aratılır
Kod:
typedef struct SQuickslot{
BYTE type;
BYTE pos;
} TQuickslot;
Değiştirilir.
Kod:
typedef struct SQuickslot{
BYTE type;
UINT pos;
} TQuickslot;
game/src/char.h Açılır ve Aratılır
Kod:
BYTE bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
Değiştirilir
Kod:
UINT bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
1.Aratılır
Kod:
void SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos);
1.Değiştirilir
Kod:
void SyncQuickslot(BYTE bType, UINT bOldPos, UINT bNewPos);
2.Aratılır
Kod:
bool GetQuickslot(BYTE pos, TQuickslot ** ppSlot);
2.Değiştirilir
Kod:
bool GetQuickslot(UINT pos, TQuickslot ** ppSlot);
3.Aratılır
Kod:
bool SetQuickslot(BYTE pos, TQuickslot & rSlot);
3.Değiştirilir
Kod:
bool SetQuickslot(UINT pos, TQuickslot & rSlot);
4.Aratılır
Kod:
bool DelQuickslot(BYTE pos);
4.Değiştirilir
Kod:
bool DelQuickslot(UINT pos);
5.Aratılır
Kod:
bool SwapQuickslot(BYTE a, BYTE b);
5.Değiştirilir
Kod:
bool SwapQuickslot(UINT a, UINT b);
6.Aratılır
Kod:
void ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos);
6.Değiştirilir
Kod:
void ChainQuickslotItem(LPITEM pItem, BYTE bType, UINT bOldPos);
7.Aratılır
Kod:
void SetWear(BYTE bCell, LPITEM item);
7.Değiştirilir
Kod:
void SetWear(UINT bCell, LPITEM item);
8.Aratılır
Kod:
LPITEM GetWear(BYTE bCell) const;
8.Değiştirilir
Kod:
LPITEM GetWear(UINT bCell) const;
9.Aratılır
Kod:
bool RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell = -1);
9.Değiştirilir
Kod:
bool RefineInformation(UINT bCell, BYTE bType, int iAdditionalCell = -1);
10.Aratılır
Kod:
bool SwapItem(BYTE bCell, BYTE bDestCell);
10.Değiştirilir
Kod:
bool SwapItem(UINT bCell, UINT bDestCell);
game/src/char_battle.cpp Açılır ve Aratılır 2x defa Aratın
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 255);
Değiştirilir 2x
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 1000);
Aratılır 2x defa Aratın
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, WEAR_UNIQUE1, 255);
Değiştirilir 2x
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, WEAR_UNIQUE1, 1000);
game/src/char_item.cpp Açılır ve Aratılır
Kod:
LPITEM CHARACTER::GetWear(BYTE bCell) const
Değiştirilir
Kod:
LPITEM CHARACTER::GetWear(UINT bCell) const
1.Aratılır
Kod:
void CHARACTER::SetWear(BYTE bCell, LPITEM item)
1.Değiştirilir
Kod:
void CHARACTER::SetWear(UINT bCell, LPITEM item)
2.Aratılır
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
2.Değiştirilir
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 1000);
3.Aratılır
Kod:
BYTE bCell = Cell.cell;
3.Değiştirilir
Kod:
UINT bCell = Cell.cell;
4.Aratılır 2x Aratılır
Kod:
if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell)
4.Değiştirilir 2x
Kod:
if (m_pointsInstant.bItemGrid[bCell] == (UINT)iExceptionCell)
5.Aratılır 2x Aratılır
Kod:
BYTE p = bCell + (5 * j);
5.Değiştirilir 2x
Kod:
UINT p = bCell + (5 * j);
6.Aratılır 3x Aratılır
Kod:
BYTE bCell = item->GetCell();
6.Değiştirilir 3x
Kod:
UINT bCell = item->GetCell();
7.Aratılır
Kod:
bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
7.Değiştirilir
Kod:
bool CHARACTER::RefineInformation(UINT bCell, BYTE bType, int iAdditionalCell)
8.Aratılır
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255);
8.Değiştirilir
Kod:
SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 1000);
9.Aratılır
Kod:
bool CHARACTER::SwapItem(BYTE bCell, BYTE bDestCell)
9.Değiştirilir
Kod:
bool CHARACTER::SwapItem(UINT bCell, UINT bDestCell)
10.Aratılır
Kod:
BYTE bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
10.Değiştirilir
Kod:
INT bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
11.Aratılır
Kod:
BYTE bInvenCell = item1->GetCell();
11.Değiştirilir
Kod:
UINT bInvenCell = item1->GetCell();
12.Aratılır
Kod:
BYTE bCell1 = item1->GetCell();
12.Değiştirilir
Kod:
UINT bCell1 = item1->GetCell();
13.Aratılır
Kod:
BYTE bCell2 = item2->GetCell();
13.Değiştirilir
Kod:
UINT bCell2 = item2->GetCell();
14.Aratılır
Kod:
BYTE bOldCell = item->GetCell();
14.Değiştirilir
Kod:
UINT bOldCell = item->GetCell();
game/src/char_quickslot.cpp Açılır ve Aratılır
Kod:
void CHARACTER::SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos)
Değiştirilir
Kod:
void CHARACTER::SyncQuickslot(BYTE bType, UINT bOldPos, UINT bNewPos)
1.Aratılır
Kod:
if (bNewPos == 255)
1.Değiştirilir
Kod:
if (bNewPos == 1000)
2.Aratılır
Kod:
bool CHARACTER::GetQuickslot(BYTE pos, TQuickslot ** ppSlot)
2.Değiştirilir
Kod:
bool CHARACTER::GetQuickslot(UINT pos, TQuickslot ** ppSlot)
3.Aratılır
Kod:
bool CHARACTER::SetQuickslot(BYTE pos, TQuickslot & rSlot)
3.Değiştirilir
Kod:
bool CHARACTER::SetQuickslot(UINT pos, TQuickslot & rSlot)
4.Aratılır
Kod:
bool CHARACTER::DelQuickslot(BYTE pos)
4.Değiştirilir
Kod:
bool CHARACTER::DelQuickslot(UINT pos)
5.Aratılır
Kod:
bool CHARACTER::SwapQuickslot(BYTE a, BYTE b)
5.Değiştirilir
Kod:
bool CHARACTER::SwapQuickslot(UINT a, UINT b)
6.Aratılır
Kod:
void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos)
6.Değiştirilir
Kod:
void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, UINT bOldPos)
game/src/cmd_general.cpp Açın ve Aratın
Kod:
for (BYTE i=0; i<INVENTORY_MAX_NUM; ++i)
Değiştirin
Kod:
for (UINT i=0; i<INVENTORY_MAX_NUM; ++i)
game/src/cmd_gm.cpp Açın ve Aratın
Kod:
ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
Değiştirin
Kod:
ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 1000);
Aratılır 3x Aratın
Kod:
BYTE cell = 0;
Değiştirin 3x
Kod:
UINT cell = 0;
game/src/exchange.cpp Açın ve Aratın
Kod:
m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:
m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/fishing.cpp Açın ve Aratın 2x Aratın
Kod:
BYTE bCell = rod->GetCell();
Değiştirin
Kod:
UINT bCell = rod->GetCell();
game/src/input_main.cpp Açın ve Aratın
Kod:
if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
Değiştirin
Kod:
if (uiBytes < sizeof(UINT) + sizeof(BYTE))
1.Aratın
Kod:
BYTE pos = *(c_pData++);
BYTE count = *(c_pData);
1.Değiştirin
Kod:
UINT pos = *reinterpret_cast<const UINT*>(c_pData++);
BYTE count = *(c_pData);
2.Aratın
Kod:
CShopManager::instance().Sell(ch, pos, count);
return sizeof(BYTE) + sizeof(BYTE);
2.Değiştirin
Kod:
CShopManager::instance().Sell(ch, pos, count);
return sizeof(UINT) + sizeof(BYTE);
3.Aratın
Kod:
ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, p->ItemPos.cell, 255);
3.Değiştirin
Kod:
ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, p->ItemPos.cell, 1000);
game/src/item.cpp Açın ve Aratın
Kod:
pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, wCell, 255);
Değiştirin
Kod:
pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, wCell, 1000);
1.Aratın
Kod:
m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, m_wCell, 255);
1.Değiştirin
Kod:
m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, m_wCell, 1000);
2.Aratın
Kod:
bool CItem::EquipTo(LPCHARACTER ch, BYTE bWearCell)
2.Değiştirin
Kod:
bool CItem::EquipTo(LPCHARACTER ch, UINT bWearCell)
game/src/item.h Açın ve Aratın
Kod:
bool EquipTo(LPCHARACTER ch, BYTE bWearCell);
Değiştirin
Kod:
bool EquipTo(LPCHARACTER ch, UINT bWearCell);
game/src/item_manager.cpp Açın ve Aratın
Kod:
o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:
o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/minig.cpp Açın ve 2x Aratın
Kod:
BYTE bCell = rkOldPick.GetCell();
Değiştirin 2.x
Kod:
UINT bCell = rkOldPick.GetCell();
game/src/packet.h Açın ve Aratın
Kod:
typedef struct command_quickslot_add{
BYTE header;
BYTE pos;
TQuickslot slot;
Değiştirin
Kod:
typedef struct command_quickslot_add{
BYTE header;
UINT pos;
TQuickslot slot;
1.Aratın
Kod:
typedef struct command_quickslot_del{
BYTE header;
BYTE pos;
} TPacketCGQuickslotDel;
1.Değiştirin
Kod:
typedef struct command_quickslot_del{
BYTE header;
UINT pos;
} TPacketCGQuickslotDel;
2.Aratın
Kod:
typedef struct command_quickslot_swap{
BYTE header;
BYTE pos;
BYTE change_pos;
} TPacketCGQuickslotSwap;
2.Değiştirin
Kod:
typedef struct command_quickslot_swap{
BYTE header;
UINT pos;
UINT change_pos;
} TPacketCGQuickslotSwap;
3.Aratın
Kod:
typedef struct packet_item_del{
BYTE header;
BYTE pos;
} TPacketGCItemDel;
3.Değiştirin
Kod:
typedef struct packet_item_del{
BYTE header;
UINT pos;
} TPacketGCItemDel;
4.Aratın
Kod:
struct packet_quickslot_add{
BYTE header;
BYTE pos;
TQuickslot slot;
};
4.Değiştirin
Kod:
struct packet_quickslot_add{
BYTE header;
UINT pos;
TQuickslot slot;
};
5.Aratın
Kod:
struct packet_quickslot_del{
BYTE header;
BYTE pos;
};
5.Değiştirin
Kod:
struct packet_quickslot_del{
BYTE header;
UINT pos;
};
6.Aratın
Kod:
struct packet_quickslot_swap{
BYTE header;
BYTE pos;
BYTE pos_to;
};
6.Değiştirin
Kod:
struct packet_quickslot_swap{
BYTE header;
UINT pos;
UINT pos_to;
};
7.Aratın
Kod:
typedef struct SPacketCGRefine{
BYTE header;
BYTE pos;
BYTE type;
} TPacketCGRefine;
7.Değiştirin
Kod:
typedef struct SPacketCGRefine{
BYTE header;
UINT pos;
BYTE type;
} TPacketCGRefine;
8.Aratın
Kod:
typedef struct SPacketCGRequestRefineInfo{
BYTE header;
BYTE pos;
} TPacketCGRequestRefineInfo;
8.Değiştirin
Kod:
typedef struct SPacketCGRequestRefineInfo{
BYTE header;
UINT pos;
} TPacketCGRequestRefineInfo;
9.Aratın
Kod:
typedef struct SPacketGCRefineInformaion{
BYTE header;
BYTE type;
BYTE pos;
DWORD src_vnum;
DWORD result_vnum;
BYTE material_count;
9.Değiştirin
Kod:
typedef struct SPacketGCRefineInformaion{
BYTE header;
BYTE type;
UINT pos;
DWORD src_vnum;
DWORD result_vnum;
BYTE material_count;
game/src/questlua_global.cpp Açın ve 2x Aratın
Kod:
BYTE bCell = (BYTE) lua_tonumber(L,-1);
Değiştirin 2x
Kod:
UINT bCell = lua_tonumber(L, -1);
game/src/questlua_item.cpp Açın ve Aratın
Kod:
BYTE bCell = pItem->GetCell();
Değiştirin
Kod:
UINT bCell = pItem->GetCell();
game/src/questlua_pc.cpp Açın ve Aratın
Kod:
BYTE bCell = (BYTE)lua_tonumber(L, 1);
Değiştirin
Kod:
UINT bCell = lua_tonumber(L, 1);
game/src/safebox.cpp Açın ve Aratın
Kod:
LPITEM CSafebox::GetItem(BYTE bCell)
Değiştirin
Kod:
LPITEM CSafebox::GetItem(INT bCell)
Aratın
Kod:
bool CSafebox::MoveItem(BYTE bCell, BYTE bDestCell, BYTE count)
Değiştirin
Kod:
bool CSafebox::MoveItem(INT bCell, INT bDestCell, BYTE count)
game/src/safebox.h Açın ve Aratın
Kod:
bool MoveItem(BYTE bCell, BYTE bDestCell, BYTE count);
Değiştirin
Kod:
bool MoveItem(INT bCell, INT bDestCell, BYTE count);
Aratın
Kod:
LPITEM GetItem(BYTE bCell);
Değiştirin
Kod:
LPITEM GetItem(INT bCell);
game/src/shop.cpp Açın ve Aratın
Kod:
m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:
m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/shop_manager.cpp Açın ve Aratın
Kod:
void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
Değiştirin
Kod:
void CShopManager::Sell(LPCHARACTER ch, UINT bCell, BYTE bCount)
game/src/shop_manager.h Açın ve Aratın
Kod:
void Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount=0);
Değiştirin
Kod:
void Sell(LPCHARACTER ch, UINT bCell, BYTE bCount = 0);
Game SRC'de İşimiz Bitti
Client Source:
Client/UserInterface/AbstractPlayer.h Açalım ve Aratalım
Kod:
virtual void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition) = 0;
Değiştirin
Kod:
virtual void AddQuickSlot(int QuickslotIndex, char IconType, INT IconPosition) = 0;
Client/UserInterface/GameType.h Açalım ve Aratalım
Kod:
typedef struct SQuickSlot {
BYTE Type;
BYTE Position;
} TQuickSlot;
Değiştirin
Kod:
typedef struct SQuickSlot {
BYTE Type;
UINT Position;
} TQuickSlot;
Client/UserInterface/Packet.h Açalım ve Aratalım
Kod:
typedef struct command_quickslot_add{
BYTE header;
BYTE pos;
TQuickSlot slot;
}TPacketCGQuickSlotAdd;
Değiştirin
Kod:
typedef struct command_quickslot_add{
BYTE header;
UINT pos;
TQuickSlot slot;
}TPacketCGQuickSlotAdd;
1.Aratın
Kod:
typedef struct command_quickslot_del{
BYTE header;
BYTE pos;
}TPacketCGQuickSlotDel;
1.Değiştirin
Kod:
typedef struct command_quickslot_del{
BYTE header;
UINT pos;
}TPacketCGQuickSlotDel;
2.Aratın
Kod:
typedef struct command_quickslot_swap{
BYTE header;
BYTE pos;
BYTE change_pos;
}TPacketCGQuickSlotSwap;
2.Değiştirin
Kod:
typedef struct command_quickslot_swap{
BYTE header;
UINT pos;
UINT change_pos;
}TPacketCGQuickSlotSwap;
3.Aratın
Kod:
typedef struct SPacketCGRefine{
BYTE header;
BYTE pos;
BYTE type;
} TPacketCGRefine;
3.Değiştirin
Kod:
typedef struct SPacketCGRefine{
BYTE header;
UINT pos;
BYTE type;
} TPacketCGRefine;
4.Aratın 2 defa var ise 2 sinide değiştirin
Kod:
typedef struct packet_item_del{
BYTE header;
BYTE pos;
} TPacketGCItemDel;
4.Değiştirin kaç tane varsa
Kod:
typedef struct packet_item_del{
BYTE header;
UINT pos;
} TPacketGCItemDel;
5.Aratın
Kod:
typedef struct packet_quickslot_add{
BYTE header;
BYTE pos;
TQuickSlot slot;
} TPacketGCQuickSlotAdd;
5.Değiştirin
Kod:
typedef struct packet_quickslot_add{
BYTE header;
UINT pos;
TQuickSlot slot;
} TPacketGCQuickSlotAdd;
6.Aratın
Kod:
typedef struct packet_quickslot_del{
BYTE header;
BYTE pos;
} TPacketGCQuickSlotDel;
6.Değiştirin
Kod:
typedef struct packet_quickslot_del{
BYTE header;
UINT pos;
} TPacketGCQuickSlotDel;
7.Aratın
Kod:
typedef struct packet_quickslot_swap{
BYTE header;
BYTE pos;
BYTE change_pos;
} TPacketGCQuickSlotSwap;
7.Değiştirin
Kod:
typedef struct packet_quickslot_swap{
BYTE header;
UINT pos;
UINT change_pos;
} TPacketGCQuickSlotSwap;
8.Aratın
Kod:
typedef struct SPacketGCRefineInformation{
BYTE header;
BYTE pos;
TRefineTable refine_table;
} TPacketGCRefineInformation;
8.Değiştirin
Kod:
typedef struct SPacketGCRefineInformation{
BYTE header;
UINT pos;
TRefineTable refine_table;
} TPacketGCRefineInformation;
9.Aratın
Kod:
typedef struct SPacketGCRefineInformationNew{
BYTE header;
BYTE type;
BYTE pos;
TRefineTable refine_table;
} TPacketGCRefineInformationNew;
9.Değiştirin
Kod:
typedef struct SPacketGCRefineInformationNew{
BYTE header;
BYTE type;
UINT pos;
TRefineTable refine_table;
} TPacketGCRefineInformationNew;
Client/UserInterface/PythonNetworkStream.h Açın ve Aratın
Kod:
bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos);
Kod:
bool SendQuickSlotAddPacket(UINT wpos, BYTE type, UINT pos);
1.Aratın
Kod:
bool SendQuickSlotDelPacket(BYTE wpos);
Kod:
bool SendQuickSlotDelPacket(UINT wpos);
2.Aratın
Kod:
bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
Kod:
bool SendQuickSlotMovePacket(UINT wpos, UINT change_pos);
3.Aratın
Kod:
bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);
Kod:
bool SendShopSellPacketNew(UINT bySlot, BYTE byCount);
4.Aratın
Kod:
bool SendRefinePacket(BYTE byPos, BYTE byType);
Kod:
bool SendRefinePacket(UINT byPos, BYTE byType);
Client/UserInterface/PythonNetworkStreamPhaseGame.cpp Açın ve Aratın
Kod:
bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType)
Kod:
bool CPythonNetworkStream::SendRefinePacket(UINT byPos, BYTE byType)
Client/UserInterface/PythonNetworkStreamPhaseGameItem.cpp Açın ve Aratın
Kod:
bool CPythonNetworkStream::SendShopSellPacketNew(BYTE bySlot, BYTE byCount)
Kod:
bool CPythonNetworkStream::SendShopSellPacketNew(UINT bySlot, BYTE byCount)
Kod:
{ if (!__CanActMainInstance())
return true;
if (__IsEquipItemInSlot(pos))
{
if (CPythonExchange::Instance().isTrading())
{
if (pos.IsEquipCell() || change_pos.IsEquipCell())
{
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_AppendNotifyMessage", Py_BuildValue("(s)", "CANNOT_EQUIP_EXCHANGE"));
return true;
}
}
if (CPythonShop::Instance().IsOpen())
{
if (pos.IsEquipCell() || change_pos.IsEquipCell())
{
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_AppendNotifyMessage", Py_BuildValue("(s)", "CANNOT_EQUIP_SHOP"));
return true;
}
}
if (__IsPlayerAttacking())
return true;
}
__PlayInventoryItemDropSound(pos);
TPacketCGItemMove itemMovePacket;
itemMovePacket.header = HEADER_CG_ITEM_MOVE;
itemMovePacket.pos = pos;
itemMovePacket.change_pos = change_pos;
itemMovePacket.num = num;
if (!Send(sizeof(TPacketCGItemMove), &itemMovePacket))
{
Tracen("SendItemMovePacket Error");
return false;
}
return SendSequence();
}
Aratın
Kod:
bool CPythonNetworkStream::SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos)
Kod:
bool CPythonNetworkStream::SendQuickSlotAddPacket(UINT wpos, BYTE type, UINT pos)
Aratın
Kod:
bool CPythonNetworkStream::SendQuickSlotDelPacket(BYTE pos)
Kod:
bool CPythonNetworkStream::SendQuickSlotDelPacket(UINT pos)
Aratın
Kod:
bool CPythonNetworkStream::SendQuickSlotMovePacket(BYTE pos, BYTE change_pos)
Kod:
bool CPythonNetworkStream::SendQuickSlotMovePacket(UINT pos, UINT change_pos)
Client/UserInterface/PythonPlayer.cpp Açılır ve Aratılır
Kod:
for (BYTE i = 0; i < QUICKSLOT_MAX_NUM; ++i)
Kod:
for (UINT i = 0; i < QUICKSLOT_MAX_NUM; ++i)
1.Aratın
Kod:
rkNetStream.SendQuickSlotMovePacket((BYTE) dwGlobalSrcSlotIndex, (BYTE)dwGlobalDstSlotIndex);
Kod:
rkNetStream.SendQuickSlotMovePacket((UINT) dwGlobalSrcSlotIndex, (UINT)dwGlobalDstSlotIndex);
2.Aratın
Kod:
rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos);
Kod:
rkNetStream.SendQuickSlotAddPacket((UINT)dwGlobalSlotIndex, (BYTE)dwWndType, (UINT)dwWndItemPos);
3.Aratın
Kod:
rkNetStream.SendQuickSlotDelPacket((BYTE)dwGlobalSlotIndex);
Kod:
rkNetStream.SendQuickSlotDelPacket((UINT)dwGlobalSlotIndex);
4.Aratın
Kod:
void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, char IconPosition)
Kod:
void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, INT IconPosition)
Client/UserInterface/PythonPlayer.h Açılır ve Aratılır
Kod:
void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition);
Kod:
void AddQuickSlot(int QuickslotIndex, char IconType, INT IconPosition);
Sorun yaşayan ve yazım hataları olan kısımlar mevcut ise konu altından bildirin yardımcı olayım. İyi kullanımlar.
En Çok Reaksiyon Alan Mesajlar
Teşekkürler faydalı. Bu konularla ilgilenmisken sorunsuz 4 lü envanter anlatimi paylasirsan iyi olur python/game ve client tabanli, çünkü 5 envanteri 4 e cevirmek isteyen cok ve forumda dogru ve sorunsuz anlatim yok.
Konu ile ilgili bir yere not ettim müsait olduğum bir vakittte onunda anlatımını yaparız.
Kemer Envanter Sorunları Fix, 5x+ Envanter Sorunları Fix İtem taşma Sorunları fix. Dragon soul Fix.
Aşşağıdaki Kodları Uyguladığımızda Kısaca Neler yapmış olduk.
1. Kemer Envanterinde Kullanılmayan Slotlar Kullanıma Açıldı.
2. Kemer Envanterinde İtem var iken Kemer Değişmez veya Çıkmaz.
3. 5x 8x 9x 12x 15x 18x Envanterli Oyun yapılabilir hale getirildi.
4. Ticaret Yaparken İtem Taşma Sorunu Fixlendi.
5. Dragon soul Sistem yuvaları Düzenli hale geldi.
6. Aklıma gelmeyen Daha bir çok Slot Envanter sorunları Çözülecektir.
Aşşağıdaki Anlatımları Kesinlikle en az 5x Envanter kullananların eklemesi gerekir. 4 envanter Kullanıcılarının eklemesine gerek yoktur. Çünki 4 envanter ile sınırı Aşmıyorsunuz.
Asıl sorun Game'lerde BYTE ve 255 olarak yapılandırılması ve bunları UINT ve 1000 yaparak tüm sorunlara elveda diyeceğiz.
Şimdi Başlayalım
common/tables.h Açılır ve Aratılır
Kod:typedef struct SQuickslot{ BYTE type; BYTE pos; } TQuickslot;
Değiştirilir.
Kod:typedef struct SQuickslot{ BYTE type; UINT pos; } TQuickslot;
game/src/char.h Açılır ve Aratılır
Kod:BYTE bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
Değiştirilir
Kod:UINT bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
1.Aratılır
Kod:void SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos);
1.Değiştirilir
Kod:void SyncQuickslot(BYTE bType, UINT bOldPos, UINT bNewPos);
2.Aratılır
Kod:bool GetQuickslot(BYTE pos, TQuickslot ** ppSlot);
2.Değiştirilir
Kod:bool GetQuickslot(UINT pos, TQuickslot ** ppSlot);
3.Aratılır
Kod:bool SetQuickslot(BYTE pos, TQuickslot & rSlot);
3.Değiştirilir
Kod:bool SetQuickslot(UINT pos, TQuickslot & rSlot);
4.Aratılır
Kod:bool DelQuickslot(BYTE pos);
4.Değiştirilir
Kod:bool DelQuickslot(UINT pos);
5.Aratılır
Kod:bool SwapQuickslot(BYTE a, BYTE b);
5.Değiştirilir
Kod:bool SwapQuickslot(UINT a, UINT b);
6.Aratılır
Kod:void ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos);
6.Değiştirilir
Kod:void ChainQuickslotItem(LPITEM pItem, BYTE bType, UINT bOldPos);
7.Aratılır
Kod:void SetWear(BYTE bCell, LPITEM item);
7.Değiştirilir
Kod:void SetWear(UINT bCell, LPITEM item);
8.Aratılır
Kod:LPITEM GetWear(BYTE bCell) const;
8.Değiştirilir
Kod:LPITEM GetWear(UINT bCell) const;
9.Aratılır
Kod:bool RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell = -1);
9.Değiştirilir
Kod:bool RefineInformation(UINT bCell, BYTE bType, int iAdditionalCell = -1);
10.Aratılır
Kod:bool SwapItem(BYTE bCell, BYTE bDestCell);
10.Değiştirilir
Kod:bool SwapItem(UINT bCell, UINT bDestCell);
game/src/char_battle.cpp Açılır ve Aratılır 2x defa Aratın
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 255);
Değiştirilir 2x
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 1000);
Aratılır 2x defa Aratın
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, WEAR_UNIQUE1, 255);
Değiştirilir 2x
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, WEAR_UNIQUE1, 1000);
game/src/char_item.cpp Açılır ve Aratılır
Kod:LPITEM CHARACTER::GetWear(BYTE bCell) const
Değiştirilir
Kod:LPITEM CHARACTER::GetWear(UINT bCell) const
1.Aratılır
Kod:void CHARACTER::SetWear(BYTE bCell, LPITEM item)
1.Değiştirilir
Kod:void CHARACTER::SetWear(UINT bCell, LPITEM item)
2.Aratılır
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
2.Değiştirilir
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 1000);
3.Aratılır
Kod:BYTE bCell = Cell.cell;
3.Değiştirilir
Kod:UINT bCell = Cell.cell;
4.Aratılır 2x Aratılır
Kod:if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell)
4.Değiştirilir 2x
Kod:if (m_pointsInstant.bItemGrid[bCell] == (UINT)iExceptionCell)
5.Aratılır 2x Aratılır
Kod:BYTE p = bCell + (5 * j);
5.Değiştirilir 2x
Kod:UINT p = bCell + (5 * j);
6.Aratılır 3x Aratılır
Kod:BYTE bCell = item->GetCell();
6.Değiştirilir 3x
Kod:UINT bCell = item->GetCell();
7.Aratılır
Kod:bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
7.Değiştirilir
Kod:bool CHARACTER::RefineInformation(UINT bCell, BYTE bType, int iAdditionalCell)
8.Aratılır
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255);
8.Değiştirilir
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 1000);
9.Aratılır
Kod:bool CHARACTER::SwapItem(BYTE bCell, BYTE bDestCell)
9.Değiştirilir
Kod:bool CHARACTER::SwapItem(UINT bCell, UINT bDestCell)
10.Aratılır
Kod:BYTE bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
10.Değiştirilir
Kod:INT bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
11.Aratılır
Kod:BYTE bInvenCell = item1->GetCell();
11.Değiştirilir
Kod:UINT bInvenCell = item1->GetCell();
12.Aratılır
Kod:BYTE bCell1 = item1->GetCell();
12.Değiştirilir
Kod:UINT bCell1 = item1->GetCell();
13.Aratılır
Kod:BYTE bCell2 = item2->GetCell();
13.Değiştirilir
Kod:UINT bCell2 = item2->GetCell();
14.Aratılır
Kod:BYTE bOldCell = item->GetCell();
14.Değiştirilir
Kod:UINT bOldCell = item->GetCell();
game/src/char_quickslot.cpp Açılır ve Aratılır
Kod:void CHARACTER::SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos)
Değiştirilir
Kod:void CHARACTER::SyncQuickslot(BYTE bType, UINT bOldPos, UINT bNewPos)
1.Aratılır
Kod:if (bNewPos == 255)
1.Değiştirilir
Kod:if (bNewPos == 1000)
2.Aratılır
Kod:bool CHARACTER::GetQuickslot(BYTE pos, TQuickslot ** ppSlot)
2.Değiştirilir
Kod:bool CHARACTER::GetQuickslot(UINT pos, TQuickslot ** ppSlot)
3.Aratılır
Kod:bool CHARACTER::SetQuickslot(BYTE pos, TQuickslot & rSlot)
3.Değiştirilir
Kod:bool CHARACTER::SetQuickslot(UINT pos, TQuickslot & rSlot)
4.Aratılır
Kod:bool CHARACTER::DelQuickslot(BYTE pos)
4.Değiştirilir
Kod:bool CHARACTER::DelQuickslot(UINT pos)
5.Aratılır
Kod:bool CHARACTER::SwapQuickslot(BYTE a, BYTE b)
5.Değiştirilir
Kod:bool CHARACTER::SwapQuickslot(UINT a, UINT b)
6.Aratılır
Kod:void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos)
6.Değiştirilir
Kod:void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, UINT bOldPos)
game/src/cmd_general.cpp Açın ve Aratın
Kod:for (BYTE i=0; i<INVENTORY_MAX_NUM; ++i)
Değiştirin
Kod:for (UINT i=0; i<INVENTORY_MAX_NUM; ++i)
game/src/cmd_gm.cpp Açın ve Aratın
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
Değiştirin
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 1000);
Aratılır 3x Aratın
Kod:BYTE cell = 0;
Değiştirin 3x
Kod:UINT cell = 0;
game/src/exchange.cpp Açın ve Aratın
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/fishing.cpp Açın ve Aratın 2x Aratın
Kod:BYTE bCell = rod->GetCell();
Değiştirin
Kod:UINT bCell = rod->GetCell();
game/src/input_main.cpp Açın ve Aratın
Kod:if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
Değiştirin
Kod:if (uiBytes < sizeof(UINT) + sizeof(BYTE))
1.Aratın
Kod:BYTE pos = *(c_pData++); BYTE count = *(c_pData);
1.Değiştirin
Kod:UINT pos = *reinterpret_cast<const UINT*>(c_pData++); BYTE count = *(c_pData);
2.Aratın
Kod:CShopManager::instance().Sell(ch, pos, count); return sizeof(BYTE) + sizeof(BYTE);
2.Değiştirin
Kod:CShopManager::instance().Sell(ch, pos, count); return sizeof(UINT) + sizeof(BYTE);
3.Aratın
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, p->ItemPos.cell, 255);
3.Değiştirin
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, p->ItemPos.cell, 1000);
game/src/item.cpp Açın ve Aratın
Kod:pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, wCell, 255);
Değiştirin
Kod:pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, wCell, 1000);
1.Aratın
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, m_wCell, 255);
1.Değiştirin
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, m_wCell, 1000);
2.Aratın
Kod:bool CItem::EquipTo(LPCHARACTER ch, BYTE bWearCell)
2.Değiştirin
Kod:bool CItem::EquipTo(LPCHARACTER ch, UINT bWearCell)
game/src/item.h Açın ve Aratın
Kod:bool EquipTo(LPCHARACTER ch, BYTE bWearCell);
Değiştirin
Kod:bool EquipTo(LPCHARACTER ch, UINT bWearCell);
game/src/item_manager.cpp Açın ve Aratın
Kod:o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/minig.cpp Açın ve 2x Aratın
Kod:BYTE bCell = rkOldPick.GetCell();
Değiştirin 2.x
Kod:UINT bCell = rkOldPick.GetCell();
game/src/packet.h Açın ve Aratın
Kod:typedef struct command_quickslot_add{ BYTE header; BYTE pos; TQuickslot slot;
Değiştirin
Kod:typedef struct command_quickslot_add{ BYTE header; UINT pos; TQuickslot slot;
1.Aratın
Kod:typedef struct command_quickslot_del{ BYTE header; BYTE pos; } TPacketCGQuickslotDel;
1.Değiştirin
Kod:typedef struct command_quickslot_del{ BYTE header; UINT pos; } TPacketCGQuickslotDel;
2.Aratın
Kod:typedef struct command_quickslot_swap{ BYTE header; BYTE pos; BYTE change_pos; } TPacketCGQuickslotSwap;
2.Değiştirin
Kod:typedef struct command_quickslot_swap{ BYTE header; UINT pos; UINT change_pos; } TPacketCGQuickslotSwap;
3.Aratın
Kod:typedef struct packet_item_del{ BYTE header; BYTE pos; } TPacketGCItemDel;
3.Değiştirin
Kod:typedef struct packet_item_del{ BYTE header; UINT pos; } TPacketGCItemDel;
4.Aratın
Kod:struct packet_quickslot_add{ BYTE header; BYTE pos; TQuickslot slot; };
4.Değiştirin
Kod:struct packet_quickslot_add{ BYTE header; UINT pos; TQuickslot slot; };
5.Aratın
Kod:struct packet_quickslot_del{ BYTE header; BYTE pos; };
5.Değiştirin
Kod:struct packet_quickslot_del{ BYTE header; UINT pos; };
6.Aratın
Kod:struct packet_quickslot_swap{ BYTE header; BYTE pos; BYTE pos_to; };
6.Değiştirin
Kod:struct packet_quickslot_swap{ BYTE header; UINT pos; UINT pos_to; };
7.Aratın
Kod:typedef struct SPacketCGRefine{ BYTE header; BYTE pos; BYTE type; } TPacketCGRefine;
7.Değiştirin
Kod:typedef struct SPacketCGRefine{ BYTE header; UINT pos; BYTE type; } TPacketCGRefine;
8.Aratın
Kod:typedef struct SPacketCGRequestRefineInfo{ BYTE header; BYTE pos; } TPacketCGRequestRefineInfo;
8.Değiştirin
Kod:typedef struct SPacketCGRequestRefineInfo{ BYTE header; UINT pos; } TPacketCGRequestRefineInfo;
9.Aratın
Kod:typedef struct SPacketGCRefineInformaion{ BYTE header; BYTE type; BYTE pos; DWORD src_vnum; DWORD result_vnum; BYTE material_count;
9.Değiştirin
Kod:typedef struct SPacketGCRefineInformaion{ BYTE header; BYTE type; UINT pos; DWORD src_vnum; DWORD result_vnum; BYTE material_count;
game/src/questlua_global.cpp Açın ve 2x Aratın
Kod:BYTE bCell = (BYTE) lua_tonumber(L,-1);
Değiştirin 2x
Kod:UINT bCell = lua_tonumber(L, -1);
game/src/questlua_item.cpp Açın ve Aratın
Kod:BYTE bCell = pItem->GetCell();
Değiştirin
Kod:UINT bCell = pItem->GetCell();
game/src/questlua_pc.cpp Açın ve Aratın
Kod:BYTE bCell = (BYTE)lua_tonumber(L, 1);
Değiştirin
Kod:UINT bCell = lua_tonumber(L, 1);
game/src/safebox.cpp Açın ve Aratın
Kod:LPITEM CSafebox::GetItem(BYTE bCell)
Değiştirin
Kod:LPITEM CSafebox::GetItem(INT bCell)
Aratın
Kod:bool CSafebox::MoveItem(BYTE bCell, BYTE bDestCell, BYTE count)
Değiştirin
Kod:bool CSafebox::MoveItem(INT bCell, INT bDestCell, BYTE count)
game/src/safebox.h Açın ve Aratın
Kod:bool MoveItem(BYTE bCell, BYTE bDestCell, BYTE count);
Değiştirin
Kod:bool MoveItem(INT bCell, INT bDestCell, BYTE count);
Aratın
Kod:LPITEM GetItem(BYTE bCell);
Değiştirin
Kod:LPITEM GetItem(INT bCell);
game/src/shop.cpp Açın ve Aratın
Kod:m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/shop_manager.cpp Açın ve Aratın
Kod:void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
Değiştirin
Kod:void CShopManager::Sell(LPCHARACTER ch, UINT bCell, BYTE bCount)
game/src/shop_manager.h Açın ve Aratın
Kod:void Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount=0);
Değiştirin
Kod:void Sell(LPCHARACTER ch, UINT bCell, BYTE bCount = 0);
Game SRC'de İşimiz Bitti
Client Source:
Client/UserInterface/AbstractPlayer.h Açalım ve Aratalım
Kod:virtual void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition) = 0;
Değiştirin
Kod:virtual void AddQuickSlot(int QuickslotIndex, char IconType, INT IconPosition) = 0;
Client/UserInterface/GameType.h Açalım ve Aratalım
Kod:typedef struct SQuickSlot { BYTE Type; BYTE Position; } TQuickSlot;
Değiştirin
Kod:typedef struct SQuickSlot { BYTE Type; UINT Position; } TQuickSlot;
Client/UserInterface/Packet.h Açalım ve Aratalım
Kod:typedef struct command_quickslot_add{ BYTE header; BYTE pos; TQuickSlot slot; }TPacketCGQuickSlotAdd;
Değiştirin
Kod:typedef struct command_quickslot_add{ BYTE header; UINT pos; TQuickSlot slot; }TPacketCGQuickSlotAdd;
1.Aratın
Kod:typedef struct command_quickslot_del{ BYTE header; BYTE pos; }TPacketCGQuickSlotDel;
1.Değiştirin
Kod:typedef struct command_quickslot_del{ BYTE header; UINT pos; }TPacketCGQuickSlotDel;
2.Aratın
Kod:typedef struct command_quickslot_swap{ BYTE header; BYTE pos; BYTE change_pos; }TPacketCGQuickSlotSwap;
2.Değiştirin
Kod:typedef struct command_quickslot_swap{ BYTE header; UINT pos; UINT change_pos; }TPacketCGQuickSlotSwap;
3.Aratın
Kod:typedef struct SPacketCGRefine{ BYTE header; BYTE pos; BYTE type; } TPacketCGRefine;
3.Değiştirin
Kod:typedef struct SPacketCGRefine{ BYTE header; UINT pos; BYTE type; } TPacketCGRefine;
4.Aratın 2 defa var ise 2 sinide değiştirin
Kod:typedef struct packet_item_del{ BYTE header; BYTE pos; } TPacketGCItemDel;
4.Değiştirin kaç tane varsa
Kod:typedef struct packet_item_del{ BYTE header; UINT pos; } TPacketGCItemDel;
5.Aratın
Kod:typedef struct packet_quickslot_add{ BYTE header; BYTE pos; TQuickSlot slot; } TPacketGCQuickSlotAdd;
5.Değiştirin
Kod:typedef struct packet_quickslot_add{ BYTE header; UINT pos; TQuickSlot slot; } TPacketGCQuickSlotAdd;
6.Aratın
Kod:typedef struct packet_quickslot_del{ BYTE header; BYTE pos; } TPacketGCQuickSlotDel;
6.Değiştirin
Kod:typedef struct packet_quickslot_del{ BYTE header; UINT pos; } TPacketGCQuickSlotDel;
7.Aratın
Kod:typedef struct packet_quickslot_swap{ BYTE header; BYTE pos; BYTE change_pos; } TPacketGCQuickSlotSwap;
7.Değiştirin
Kod:typedef struct packet_quickslot_swap{ BYTE header; UINT pos; UINT change_pos; } TPacketGCQuickSlotSwap;
8.Aratın
Kod:typedef struct SPacketGCRefineInformation{ BYTE header; BYTE pos; TRefineTable refine_table; } TPacketGCRefineInformation;
8.Değiştirin
Kod:typedef struct SPacketGCRefineInformation{ BYTE header; UINT pos; TRefineTable refine_table; } TPacketGCRefineInformation;
9.Aratın
Kod:typedef struct SPacketGCRefineInformationNew{ BYTE header; BYTE type; BYTE pos; TRefineTable refine_table; } TPacketGCRefineInformationNew;
9.Değiştirin
Kod:typedef struct SPacketGCRefineInformationNew{ BYTE header; BYTE type; UINT pos; TRefineTable refine_table; } TPacketGCRefineInformationNew;
Client/UserInterface/PythonNetworkStream.h Açın ve Aratın
DeğiştirinKod:bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos);
Kod:bool SendQuickSlotAddPacket(UINT wpos, BYTE type, UINT pos);
1.Aratın
1.DeğiştirinKod:bool SendQuickSlotDelPacket(BYTE wpos);
Kod:bool SendQuickSlotDelPacket(UINT wpos);
2.Aratın
2.DeğiştirinKod:bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
Kod:bool SendQuickSlotMovePacket(UINT wpos, UINT change_pos);
3.Aratın
3.DeğiştirinKod:bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);
Kod:bool SendShopSellPacketNew(UINT bySlot, BYTE byCount);
4.Aratın
4.DeğiştirinKod:bool SendRefinePacket(BYTE byPos, BYTE byType);
Kod:bool SendRefinePacket(UINT byPos, BYTE byType);
Client/UserInterface/PythonNetworkStreamPhaseGame.cpp Açın ve Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType)
Kod:bool CPythonNetworkStream::SendRefinePacket(UINT byPos, BYTE byType)
Client/UserInterface/PythonNetworkStreamPhaseGameItem.cpp Açın ve Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendShopSellPacketNew(BYTE bySlot, BYTE byCount)
Üstteki Değiştirdiğimiz Kodun Hemen Altındaki Kod Bloğunu Tamamen Alttaki kod ile DeğiştirinKod:bool CPythonNetworkStream::SendShopSellPacketNew(UINT bySlot, BYTE byCount)
Kod:{ if (!__CanActMainInstance()) return true; if (__IsEquipItemInSlot(pos)) { if (CPythonExchange::Instance().isTrading()) { if (pos.IsEquipCell() || change_pos.IsEquipCell()) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_AppendNotifyMessage", Py_BuildValue("(s)", "CANNOT_EQUIP_EXCHANGE")); return true; } } if (CPythonShop::Instance().IsOpen()) { if (pos.IsEquipCell() || change_pos.IsEquipCell()) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_AppendNotifyMessage", Py_BuildValue("(s)", "CANNOT_EQUIP_SHOP")); return true; } } if (__IsPlayerAttacking()) return true; } __PlayInventoryItemDropSound(pos); TPacketCGItemMove itemMovePacket; itemMovePacket.header = HEADER_CG_ITEM_MOVE; itemMovePacket.pos = pos; itemMovePacket.change_pos = change_pos; itemMovePacket.num = num; if (!Send(sizeof(TPacketCGItemMove), &itemMovePacket)) { Tracen("SendItemMovePacket Error"); return false; } return SendSequence(); }
Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos)
Kod:bool CPythonNetworkStream::SendQuickSlotAddPacket(UINT wpos, BYTE type, UINT pos)
Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendQuickSlotDelPacket(BYTE pos)
Kod:bool CPythonNetworkStream::SendQuickSlotDelPacket(UINT pos)
Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendQuickSlotMovePacket(BYTE pos, BYTE change_pos)
Kod:bool CPythonNetworkStream::SendQuickSlotMovePacket(UINT pos, UINT change_pos)
Client/UserInterface/PythonPlayer.cpp Açılır ve Aratılır
DeğiştirinKod:for (BYTE i = 0; i < QUICKSLOT_MAX_NUM; ++i)
Kod:for (UINT i = 0; i < QUICKSLOT_MAX_NUM; ++i)
1.Aratın
1.DeğiştirinKod:rkNetStream.SendQuickSlotMovePacket((BYTE) dwGlobalSrcSlotIndex, (BYTE)dwGlobalDstSlotIndex);
Kod:rkNetStream.SendQuickSlotMovePacket((UINT) dwGlobalSrcSlotIndex, (UINT)dwGlobalDstSlotIndex);
2.Aratın
2.DeğiştirinKod:rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos);
Kod:rkNetStream.SendQuickSlotAddPacket((UINT)dwGlobalSlotIndex, (BYTE)dwWndType, (UINT)dwWndItemPos);
3.Aratın
3.DeğiştirinKod:rkNetStream.SendQuickSlotDelPacket((BYTE)dwGlobalSlotIndex);
Kod:rkNetStream.SendQuickSlotDelPacket((UINT)dwGlobalSlotIndex);
4.Aratın
4.DeğiştirinKod:void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, char IconPosition)
Kod:void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, INT IconPosition)
Client/UserInterface/PythonPlayer.h Açılır ve Aratılır
DeğiştirinKod:void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition);
Kod:void AddQuickSlot(int QuickslotIndex, char IconType, INT IconPosition);
Sorun yaşayan ve yazım hataları olan kısımlar mevcut ise konu altından bildirin yardımcı olayım. İyi kullanımlar.
Paylaşım için teşekkürler.
Teşekkürler faydalı. Bu konularla ilgilenmisken sorunsuz 4 lü envanter anlatimi paylasirsan iyi olur python/game ve client tabanli, çünkü 5 envanteri 4 e cevirmek isteyen cok ve forumda dogru ve sorunsuz anlatim yok.
Teşekkürler.
Kısa kod kadar sıkıcı bir şey yok ya
Kısa kod kadar sıkıcı bir şey yok ya

Kemer Envanter Sorunları Fix, 5x+ Envanter Sorunları Fix İtem taşma Sorunları fix. Dragon soul Fix.
Aşşağıdaki Kodları Uyguladığımızda Kısaca Neler yapmış olduk.
1. Kemer Envanterinde Kullanılmayan Slotlar Kullanıma Açıldı.
2. Kemer Envanterinde İtem var iken Kemer Değişmez veya Çıkmaz.
3. 5x 8x 9x 12x 15x 18x Envanterli Oyun yapılabilir hale getirildi.
4. Ticaret Yaparken İtem Taşma Sorunu Fixlendi.
5. Dragon soul Sistem yuvaları Düzenli hale geldi.
6. Aklıma gelmeyen Daha bir çok Slot Envanter sorunları Çözülecektir.
Aşşağıdaki Anlatımları Kesinlikle en az 5x Envanter kullananların eklemesi gerekir. 4 envanter Kullanıcılarının eklemesine gerek yoktur. Çünki 4 envanter ile sınırı Aşmıyorsunuz.
Asıl sorun Game'lerde BYTE ve 255 olarak yapılandırılması ve bunları UINT ve 1000 yaparak tüm sorunlara elveda diyeceğiz.
Şimdi Başlayalım
common/tables.h Açılır ve Aratılır
Kod:typedef struct SQuickslot{ BYTE type; BYTE pos; } TQuickslot;
Değiştirilir.
Kod:typedef struct SQuickslot{ BYTE type; UINT pos; } TQuickslot;
game/src/char.h Açılır ve Aratılır
Kod:BYTE bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
Değiştirilir
Kod:UINT bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
1.Aratılır
Kod:void SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos);
1.Değiştirilir
Kod:void SyncQuickslot(BYTE bType, UINT bOldPos, UINT bNewPos);
2.Aratılır
Kod:bool GetQuickslot(BYTE pos, TQuickslot ** ppSlot);
2.Değiştirilir
Kod:bool GetQuickslot(UINT pos, TQuickslot ** ppSlot);
3.Aratılır
Kod:bool SetQuickslot(BYTE pos, TQuickslot & rSlot);
3.Değiştirilir
Kod:bool SetQuickslot(UINT pos, TQuickslot & rSlot);
4.Aratılır
Kod:bool DelQuickslot(BYTE pos);
4.Değiştirilir
Kod:bool DelQuickslot(UINT pos);
5.Aratılır
Kod:bool SwapQuickslot(BYTE a, BYTE b);
5.Değiştirilir
Kod:bool SwapQuickslot(UINT a, UINT b);
6.Aratılır
Kod:void ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos);
6.Değiştirilir
Kod:void ChainQuickslotItem(LPITEM pItem, BYTE bType, UINT bOldPos);
7.Aratılır
Kod:void SetWear(BYTE bCell, LPITEM item);
7.Değiştirilir
Kod:void SetWear(UINT bCell, LPITEM item);
8.Aratılır
Kod:LPITEM GetWear(BYTE bCell) const;
8.Değiştirilir
Kod:LPITEM GetWear(UINT bCell) const;
9.Aratılır
Kod:bool RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell = -1);
9.Değiştirilir
Kod:bool RefineInformation(UINT bCell, BYTE bType, int iAdditionalCell = -1);
10.Aratılır
Kod:bool SwapItem(BYTE bCell, BYTE bDestCell);
10.Değiştirilir
Kod:bool SwapItem(UINT bCell, UINT bDestCell);
game/src/char_battle.cpp Açılır ve Aratılır 2x defa Aratın
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 255);
Değiştirilir 2x
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 1000);
Aratılır 2x defa Aratın
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, WEAR_UNIQUE1, 255);
Değiştirilir 2x
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, WEAR_UNIQUE1, 1000);
game/src/char_item.cpp Açılır ve Aratılır
Kod:LPITEM CHARACTER::GetWear(BYTE bCell) const
Değiştirilir
Kod:LPITEM CHARACTER::GetWear(UINT bCell) const
1.Aratılır
Kod:void CHARACTER::SetWear(BYTE bCell, LPITEM item)
1.Değiştirilir
Kod:void CHARACTER::SetWear(UINT bCell, LPITEM item)
2.Aratılır
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
2.Değiştirilir
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 1000);
3.Aratılır
Kod:BYTE bCell = Cell.cell;
3.Değiştirilir
Kod:UINT bCell = Cell.cell;
4.Aratılır 2x Aratılır
Kod:if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell)
4.Değiştirilir 2x
Kod:if (m_pointsInstant.bItemGrid[bCell] == (UINT)iExceptionCell)
5.Aratılır 2x Aratılır
Kod:BYTE p = bCell + (5 * j);
5.Değiştirilir 2x
Kod:UINT p = bCell + (5 * j);
6.Aratılır 3x Aratılır
Kod:BYTE bCell = item->GetCell();
6.Değiştirilir 3x
Kod:UINT bCell = item->GetCell();
7.Aratılır
Kod:bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
7.Değiştirilir
Kod:bool CHARACTER::RefineInformation(UINT bCell, BYTE bType, int iAdditionalCell)
8.Aratılır
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255);
8.Değiştirilir
Kod:SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 1000);
9.Aratılır
Kod:bool CHARACTER::SwapItem(BYTE bCell, BYTE bDestCell)
9.Değiştirilir
Kod:bool CHARACTER::SwapItem(UINT bCell, UINT bDestCell)
10.Aratılır
Kod:BYTE bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
10.Değiştirilir
Kod:INT bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
11.Aratılır
Kod:BYTE bInvenCell = item1->GetCell();
11.Değiştirilir
Kod:UINT bInvenCell = item1->GetCell();
12.Aratılır
Kod:BYTE bCell1 = item1->GetCell();
12.Değiştirilir
Kod:UINT bCell1 = item1->GetCell();
13.Aratılır
Kod:BYTE bCell2 = item2->GetCell();
13.Değiştirilir
Kod:UINT bCell2 = item2->GetCell();
14.Aratılır
Kod:BYTE bOldCell = item->GetCell();
14.Değiştirilir
Kod:UINT bOldCell = item->GetCell();
game/src/char_quickslot.cpp Açılır ve Aratılır
Kod:void CHARACTER::SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos)
Değiştirilir
Kod:void CHARACTER::SyncQuickslot(BYTE bType, UINT bOldPos, UINT bNewPos)
1.Aratılır
Kod:if (bNewPos == 255)
1.Değiştirilir
Kod:if (bNewPos == 1000)
2.Aratılır
Kod:bool CHARACTER::GetQuickslot(BYTE pos, TQuickslot ** ppSlot)
2.Değiştirilir
Kod:bool CHARACTER::GetQuickslot(UINT pos, TQuickslot ** ppSlot)
3.Aratılır
Kod:bool CHARACTER::SetQuickslot(BYTE pos, TQuickslot & rSlot)
3.Değiştirilir
Kod:bool CHARACTER::SetQuickslot(UINT pos, TQuickslot & rSlot)
4.Aratılır
Kod:bool CHARACTER::DelQuickslot(BYTE pos)
4.Değiştirilir
Kod:bool CHARACTER::DelQuickslot(UINT pos)
5.Aratılır
Kod:bool CHARACTER::SwapQuickslot(BYTE a, BYTE b)
5.Değiştirilir
Kod:bool CHARACTER::SwapQuickslot(UINT a, UINT b)
6.Aratılır
Kod:void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, BYTE bOldPos)
6.Değiştirilir
Kod:void CHARACTER::ChainQuickslotItem(LPITEM pItem, BYTE bType, UINT bOldPos)
game/src/cmd_general.cpp Açın ve Aratın
Kod:for (BYTE i=0; i<INVENTORY_MAX_NUM; ++i)
Değiştirin
Kod:for (UINT i=0; i<INVENTORY_MAX_NUM; ++i)
game/src/cmd_gm.cpp Açın ve Aratın
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255);
Değiştirin
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 1000);
Aratılır 3x Aratın
Kod:BYTE cell = 0;
Değiştirin 3x
Kod:UINT cell = 0;
game/src/exchange.cpp Açın ve Aratın
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/fishing.cpp Açın ve Aratın 2x Aratın
Kod:BYTE bCell = rod->GetCell();
Değiştirin
Kod:UINT bCell = rod->GetCell();
game/src/input_main.cpp Açın ve Aratın
Kod:if (uiBytes < sizeof(BYTE) + sizeof(BYTE))
Değiştirin
Kod:if (uiBytes < sizeof(UINT) + sizeof(BYTE))
1.Aratın
Kod:BYTE pos = *(c_pData++); BYTE count = *(c_pData);
1.Değiştirin
Kod:UINT pos = *reinterpret_cast<const UINT*>(c_pData++); BYTE count = *(c_pData);
2.Aratın
Kod:CShopManager::instance().Sell(ch, pos, count); return sizeof(BYTE) + sizeof(BYTE);
2.Değiştirin
Kod:CShopManager::instance().Sell(ch, pos, count); return sizeof(UINT) + sizeof(BYTE);
3.Aratın
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, p->ItemPos.cell, 255);
3.Değiştirin
Kod:ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, p->ItemPos.cell, 1000);
game/src/item.cpp Açın ve Aratın
Kod:pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, wCell, 255);
Değiştirin
Kod:pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, wCell, 1000);
1.Aratın
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, m_wCell, 255);
1.Değiştirin
Kod:m_pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, m_wCell, 1000);
2.Aratın
Kod:bool CItem::EquipTo(LPCHARACTER ch, BYTE bWearCell)
2.Değiştirin
Kod:bool CItem::EquipTo(LPCHARACTER ch, UINT bWearCell)
game/src/item.h Açın ve Aratın
Kod:bool EquipTo(LPCHARACTER ch, BYTE bWearCell);
Değiştirin
Kod:bool EquipTo(LPCHARACTER ch, UINT bWearCell);
game/src/item_manager.cpp Açın ve Aratın
Kod:o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/minig.cpp Açın ve 2x Aratın
Kod:BYTE bCell = rkOldPick.GetCell();
Değiştirin 2.x
Kod:UINT bCell = rkOldPick.GetCell();
game/src/packet.h Açın ve Aratın
Kod:typedef struct command_quickslot_add{ BYTE header; BYTE pos; TQuickslot slot;
Değiştirin
Kod:typedef struct command_quickslot_add{ BYTE header; UINT pos; TQuickslot slot;
1.Aratın
Kod:typedef struct command_quickslot_del{ BYTE header; BYTE pos; } TPacketCGQuickslotDel;
1.Değiştirin
Kod:typedef struct command_quickslot_del{ BYTE header; UINT pos; } TPacketCGQuickslotDel;
2.Aratın
Kod:typedef struct command_quickslot_swap{ BYTE header; BYTE pos; BYTE change_pos; } TPacketCGQuickslotSwap;
2.Değiştirin
Kod:typedef struct command_quickslot_swap{ BYTE header; UINT pos; UINT change_pos; } TPacketCGQuickslotSwap;
3.Aratın
Kod:typedef struct packet_item_del{ BYTE header; BYTE pos; } TPacketGCItemDel;
3.Değiştirin
Kod:typedef struct packet_item_del{ BYTE header; UINT pos; } TPacketGCItemDel;
4.Aratın
Kod:struct packet_quickslot_add{ BYTE header; BYTE pos; TQuickslot slot; };
4.Değiştirin
Kod:struct packet_quickslot_add{ BYTE header; UINT pos; TQuickslot slot; };
5.Aratın
Kod:struct packet_quickslot_del{ BYTE header; BYTE pos; };
5.Değiştirin
Kod:struct packet_quickslot_del{ BYTE header; UINT pos; };
6.Aratın
Kod:struct packet_quickslot_swap{ BYTE header; BYTE pos; BYTE pos_to; };
6.Değiştirin
Kod:struct packet_quickslot_swap{ BYTE header; UINT pos; UINT pos_to; };
7.Aratın
Kod:typedef struct SPacketCGRefine{ BYTE header; BYTE pos; BYTE type; } TPacketCGRefine;
7.Değiştirin
Kod:typedef struct SPacketCGRefine{ BYTE header; UINT pos; BYTE type; } TPacketCGRefine;
8.Aratın
Kod:typedef struct SPacketCGRequestRefineInfo{ BYTE header; BYTE pos; } TPacketCGRequestRefineInfo;
8.Değiştirin
Kod:typedef struct SPacketCGRequestRefineInfo{ BYTE header; UINT pos; } TPacketCGRequestRefineInfo;
9.Aratın
Kod:typedef struct SPacketGCRefineInformaion{ BYTE header; BYTE type; BYTE pos; DWORD src_vnum; DWORD result_vnum; BYTE material_count;
9.Değiştirin
Kod:typedef struct SPacketGCRefineInformaion{ BYTE header; BYTE type; UINT pos; DWORD src_vnum; DWORD result_vnum; BYTE material_count;
game/src/questlua_global.cpp Açın ve 2x Aratın
Kod:BYTE bCell = (BYTE) lua_tonumber(L,-1);
Değiştirin 2x
Kod:UINT bCell = lua_tonumber(L, -1);
game/src/questlua_item.cpp Açın ve Aratın
Kod:BYTE bCell = pItem->GetCell();
Değiştirin
Kod:UINT bCell = pItem->GetCell();
game/src/questlua_pc.cpp Açın ve Aratın
Kod:BYTE bCell = (BYTE)lua_tonumber(L, 1);
Değiştirin
Kod:UINT bCell = lua_tonumber(L, 1);
game/src/safebox.cpp Açın ve Aratın
Kod:LPITEM CSafebox::GetItem(BYTE bCell)
Değiştirin
Kod:LPITEM CSafebox::GetItem(INT bCell)
Aratın
Kod:bool CSafebox::MoveItem(BYTE bCell, BYTE bDestCell, BYTE count)
Değiştirin
Kod:bool CSafebox::MoveItem(INT bCell, INT bDestCell, BYTE count)
game/src/safebox.h Açın ve Aratın
Kod:bool MoveItem(BYTE bCell, BYTE bDestCell, BYTE count);
Değiştirin
Kod:bool MoveItem(INT bCell, INT bDestCell, BYTE count);
Aratın
Kod:LPITEM GetItem(BYTE bCell);
Değiştirin
Kod:LPITEM GetItem(INT bCell);
game/src/shop.cpp Açın ve Aratın
Kod:m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
Değiştirin
Kod:m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 1000);
game/src/shop_manager.cpp Açın ve Aratın
Kod:void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
Değiştirin
Kod:void CShopManager::Sell(LPCHARACTER ch, UINT bCell, BYTE bCount)
game/src/shop_manager.h Açın ve Aratın
Kod:void Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount=0);
Değiştirin
Kod:void Sell(LPCHARACTER ch, UINT bCell, BYTE bCount = 0);
Game SRC'de İşimiz Bitti
Client Source:
Client/UserInterface/AbstractPlayer.h Açalım ve Aratalım
Kod:virtual void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition) = 0;
Değiştirin
Kod:virtual void AddQuickSlot(int QuickslotIndex, char IconType, INT IconPosition) = 0;
Client/UserInterface/GameType.h Açalım ve Aratalım
Kod:typedef struct SQuickSlot { BYTE Type; BYTE Position; } TQuickSlot;
Değiştirin
Kod:typedef struct SQuickSlot { BYTE Type; UINT Position; } TQuickSlot;
Client/UserInterface/Packet.h Açalım ve Aratalım
Kod:typedef struct command_quickslot_add{ BYTE header; BYTE pos; TQuickSlot slot; }TPacketCGQuickSlotAdd;
Değiştirin
Kod:typedef struct command_quickslot_add{ BYTE header; UINT pos; TQuickSlot slot; }TPacketCGQuickSlotAdd;
1.Aratın
Kod:typedef struct command_quickslot_del{ BYTE header; BYTE pos; }TPacketCGQuickSlotDel;
1.Değiştirin
Kod:typedef struct command_quickslot_del{ BYTE header; UINT pos; }TPacketCGQuickSlotDel;
2.Aratın
Kod:typedef struct command_quickslot_swap{ BYTE header; BYTE pos; BYTE change_pos; }TPacketCGQuickSlotSwap;
2.Değiştirin
Kod:typedef struct command_quickslot_swap{ BYTE header; UINT pos; UINT change_pos; }TPacketCGQuickSlotSwap;
3.Aratın
Kod:typedef struct SPacketCGRefine{ BYTE header; BYTE pos; BYTE type; } TPacketCGRefine;
3.Değiştirin
Kod:typedef struct SPacketCGRefine{ BYTE header; UINT pos; BYTE type; } TPacketCGRefine;
4.Aratın 2 defa var ise 2 sinide değiştirin
Kod:typedef struct packet_item_del{ BYTE header; BYTE pos; } TPacketGCItemDel;
4.Değiştirin kaç tane varsa
Kod:typedef struct packet_item_del{ BYTE header; UINT pos; } TPacketGCItemDel;
5.Aratın
Kod:typedef struct packet_quickslot_add{ BYTE header; BYTE pos; TQuickSlot slot; } TPacketGCQuickSlotAdd;
5.Değiştirin
Kod:typedef struct packet_quickslot_add{ BYTE header; UINT pos; TQuickSlot slot; } TPacketGCQuickSlotAdd;
6.Aratın
Kod:typedef struct packet_quickslot_del{ BYTE header; BYTE pos; } TPacketGCQuickSlotDel;
6.Değiştirin
Kod:typedef struct packet_quickslot_del{ BYTE header; UINT pos; } TPacketGCQuickSlotDel;
7.Aratın
Kod:typedef struct packet_quickslot_swap{ BYTE header; BYTE pos; BYTE change_pos; } TPacketGCQuickSlotSwap;
7.Değiştirin
Kod:typedef struct packet_quickslot_swap{ BYTE header; UINT pos; UINT change_pos; } TPacketGCQuickSlotSwap;
8.Aratın
Kod:typedef struct SPacketGCRefineInformation{ BYTE header; BYTE pos; TRefineTable refine_table; } TPacketGCRefineInformation;
8.Değiştirin
Kod:typedef struct SPacketGCRefineInformation{ BYTE header; UINT pos; TRefineTable refine_table; } TPacketGCRefineInformation;
9.Aratın
Kod:typedef struct SPacketGCRefineInformationNew{ BYTE header; BYTE type; BYTE pos; TRefineTable refine_table; } TPacketGCRefineInformationNew;
9.Değiştirin
Kod:typedef struct SPacketGCRefineInformationNew{ BYTE header; BYTE type; UINT pos; TRefineTable refine_table; } TPacketGCRefineInformationNew;
Client/UserInterface/PythonNetworkStream.h Açın ve Aratın
DeğiştirinKod:bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos);
Kod:bool SendQuickSlotAddPacket(UINT wpos, BYTE type, UINT pos);
1.Aratın
1.DeğiştirinKod:bool SendQuickSlotDelPacket(BYTE wpos);
Kod:bool SendQuickSlotDelPacket(UINT wpos);
2.Aratın
2.DeğiştirinKod:bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
Kod:bool SendQuickSlotMovePacket(UINT wpos, UINT change_pos);
3.Aratın
3.DeğiştirinKod:bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);
Kod:bool SendShopSellPacketNew(UINT bySlot, BYTE byCount);
4.Aratın
4.DeğiştirinKod:bool SendRefinePacket(BYTE byPos, BYTE byType);
Kod:bool SendRefinePacket(UINT byPos, BYTE byType);
Client/UserInterface/PythonNetworkStreamPhaseGame.cpp Açın ve Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType)
Kod:bool CPythonNetworkStream::SendRefinePacket(UINT byPos, BYTE byType)
Client/UserInterface/PythonNetworkStreamPhaseGameItem.cpp Açın ve Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendShopSellPacketNew(BYTE bySlot, BYTE byCount)
Üstteki Değiştirdiğimiz Kodun Hemen Altındaki Kod Bloğunu Tamamen Alttaki kod ile DeğiştirinKod:bool CPythonNetworkStream::SendShopSellPacketNew(UINT bySlot, BYTE byCount)
Kod:{ if (!__CanActMainInstance()) return true; if (__IsEquipItemInSlot(pos)) { if (CPythonExchange::Instance().isTrading()) { if (pos.IsEquipCell() || change_pos.IsEquipCell()) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_AppendNotifyMessage", Py_BuildValue("(s)", "CANNOT_EQUIP_EXCHANGE")); return true; } } if (CPythonShop::Instance().IsOpen()) { if (pos.IsEquipCell() || change_pos.IsEquipCell()) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_AppendNotifyMessage", Py_BuildValue("(s)", "CANNOT_EQUIP_SHOP")); return true; } } if (__IsPlayerAttacking()) return true; } __PlayInventoryItemDropSound(pos); TPacketCGItemMove itemMovePacket; itemMovePacket.header = HEADER_CG_ITEM_MOVE; itemMovePacket.pos = pos; itemMovePacket.change_pos = change_pos; itemMovePacket.num = num; if (!Send(sizeof(TPacketCGItemMove), &itemMovePacket)) { Tracen("SendItemMovePacket Error"); return false; } return SendSequence(); }
Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos)
Kod:bool CPythonNetworkStream::SendQuickSlotAddPacket(UINT wpos, BYTE type, UINT pos)
Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendQuickSlotDelPacket(BYTE pos)
Kod:bool CPythonNetworkStream::SendQuickSlotDelPacket(UINT pos)
Aratın
DeğiştirinKod:bool CPythonNetworkStream::SendQuickSlotMovePacket(BYTE pos, BYTE change_pos)
Kod:bool CPythonNetworkStream::SendQuickSlotMovePacket(UINT pos, UINT change_pos)
Client/UserInterface/PythonPlayer.cpp Açılır ve Aratılır
DeğiştirinKod:for (BYTE i = 0; i < QUICKSLOT_MAX_NUM; ++i)
Kod:for (UINT i = 0; i < QUICKSLOT_MAX_NUM; ++i)
1.Aratın
1.DeğiştirinKod:rkNetStream.SendQuickSlotMovePacket((BYTE) dwGlobalSrcSlotIndex, (BYTE)dwGlobalDstSlotIndex);
Kod:rkNetStream.SendQuickSlotMovePacket((UINT) dwGlobalSrcSlotIndex, (UINT)dwGlobalDstSlotIndex);
2.Aratın
2.DeğiştirinKod:rkNetStream.SendQuickSlotAddPacket((BYTE)dwGlobalSlotIndex, (BYTE)dwWndType, (BYTE)dwWndItemPos);
Kod:rkNetStream.SendQuickSlotAddPacket((UINT)dwGlobalSlotIndex, (BYTE)dwWndType, (UINT)dwWndItemPos);
3.Aratın
3.DeğiştirinKod:rkNetStream.SendQuickSlotDelPacket((BYTE)dwGlobalSlotIndex);
Kod:rkNetStream.SendQuickSlotDelPacket((UINT)dwGlobalSlotIndex);
4.Aratın
4.DeğiştirinKod:void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, char IconPosition)
Kod:void CPythonPlayer::AddQuickSlot(int QuickSlotIndex, char IconType, INT IconPosition)
Client/UserInterface/PythonPlayer.h Açılır ve Aratılır
DeğiştirinKod:void AddQuickSlot(int QuickslotIndex, char IconType, char IconPosition);
Kod:void AddQuickSlot(int QuickslotIndex, char IconType, INT IconPosition);
Sorun yaşayan ve yazım hataları olan kısımlar mevcut ise konu altından bildirin yardımcı olayım. İyi kullanımlar.
Teşekkürler faydalı. Bu konularla ilgilenmisken sorunsuz 4 lü envanter anlatimi paylasirsan iyi olur python/game ve client tabanli, çünkü 5 envanteri 4 e cevirmek isteyen cok ve forumda dogru ve sorunsuz anlatim yok.
Konu ile ilgili bir yere not ettim müsait olduğum bir vakittte onunda anlatımını yaparız.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 14
- Görüntüleme
- 640
- Cevaplar
- 9
- Görüntüleme
- 494
- Cevaplar
- 15
- Görüntüleme
- 780
- Soru
- Cevaplar
- 1
- Görüntüleme
- 249