HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Teşekkürler.
Teşekkürler
Rica ederim ^^
TeşekkürlerBunu tersine mühendislik ile yazdım webzen ile bire bir işliyor ayrıca diğerinde dans ederken çift el takarsan çift el silahı kılıç gibi vuruyor binekte silah görünmez kalıyor vs. vs. vs. ayrıca event gereksiz (daima daha iyisi yazılır ama bence mantıksız)
Merhabalar,
Çook eskiden yaptığım birşeydi arkadaş paylaşmış sadece part 0 yapınca iş bitiyor sandı diye bende bugsuz halini paylaşayım dedimLinkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.'de denedim sorunsuz yani zaten eski bir webzen güncellemesi onlarda bu şekilde yapmıştı (sonradan sanırım değiştirdiler, ki ben şuan pek beğenmiyorum kodları ama işinizi görür) chatpacketleri çeviri verin size zahmet alışkanlık ingilizce kullanma şeysi zaten "Dans ederken silahınızı değiştiremezsiniz!" yazıyor.
Server part;
// game/src/Packet.h HEADER_GC_CHARACTER_POSITION arat bir yere koy
C++:HEADER_GC_UPDATE_PART = 50,
// } TPacketGCDragonSoulRefine;arat yapıştır
C++:typedef struct SPacketGCUpdatePart { BYTE bHeader; BYTE bPart; DWORD dwVID; DWORD dwVnum; } TPacketGCUpdatePart;
// char.cpp aç m_pointsInstant.iDragonSoulActiveDeck = -1; arat
C++:m_isDancing = false;
// pack.awPart[CHR_EQUIPPART_WEAPON] arat komple değiştir.
C++:pack.awPart[CHR_EQUIPPART_WEAPON] = m_isDancing ? 0 : GetPart(PART_WEAPON);
LPCHARACTER CHARACTER::FindCharacterInView(const char * c_pszName, bool bFindPCOnly) arat ve bir üstüne ekle
C++:void CHARACTER::UpdatePart(EParts Part, DWORD dwVnum) { TPacketGCUpdatePart p; p.bHeader = HEADER_GC_UPDATE_PART; p.bPart = Part; p.dwVID = GetVID(); p.dwVnum = dwVnum; PacketAround(&p, sizeof(p)); }
char.h aç ve arat void UpdatePacket(); altına ekle
C++:void UpdatePart(EParts Part, DWORD dwVnum);
char_item.cpp case ITEM_PICK: arat
C++:if (!item->IsEquipped()) { if ((item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; } } else { if ((item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; } UnequipItem(item); }
// EquipItem(item, DestCell.cell - INVENTORY_MAX_NUM); arat üstüne ekle
C++:if ((item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; }
sys_log(0, "%s: ITEM_MOVE %s (window: %d, cell : %d) -> (window:%d, cell %d) count %d", GetName(), item->GetName(), Cell.window_type, Cell.cell, DestCell.window_type, DestCell.cell, count); arat ve üstüne ekle
C++:if (item->IsEquipped() && (item->GetSubType() >= WEAPON_SWORD && item->GetSubType() <= WEAPON_CLAW) && m_isDancing) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't change weapon while dancing!")); return false; }
cmd_emotion.cpp ara ch->PacketAround(buf.read_peek(), buf.size());
C++:ch->m_isDancing = true; ch->UpdatePart(PART_WEAPON, 0); if (victim) { victim->m_isDancing = true; victim->UpdatePart(PART_WEAPON, 0); }
if (pinfo->bFunc == FUNC_MOVE) arat ch->Goto(pinfo->lX, pinfo->lY); bunun altına ekle
C++:if (ch->m_isDancing) { ch->m_isDancing = false; ch->UpdatePart(PART_WEAPON, ch->GetPart(PART_WEAPON)); }
aynı yerin else tırnağından sonrası satır şeysinede ekle
C++:if (ch->m_isDancing) { ch->m_isDancing = false; ch->UpdatePart(PART_WEAPON, ch->GetPart(PART_WEAPON)); }
// char_horse.cpp HorseSummon(false); arat ekle (ek binek zımbırtıları olan nerde summon ediyosa oraya yapıştırsın)
C++:if (m_isDancing) { m_isDancing = false; UpdatePart(PART_WEAPON, GetPart(PART_WEAPON)); }
client > userinterface>Packet.h HEADER_GC_CHARACTER_POSITION arat ekle
C++:HEADER_GC_UPDATE_PART = 50,
} TPacketGCDragonSoulRefine; arat
C++:typedef struct SPacketGCCharacterUpdatePart { BYTE bHeader; BYTE bPart; DWORD dwVID; DWORD dwVnum; } TPacketGCCharacterUpdatePart;
// userinterface > PythonNetworkStream.cpp Set(HEADER_GC_DRAGON_SOUL_REFINE,
C++:Set(HEADER_GC_UPDATE_PART, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCCharacterUpdatePart), STATIC_SIZE_PACKET));
// userinterface > PythonNetworkStream.h bool RecvDragonSoulRefine(); ara
C++:// Dance invisible weapon. bool RecvCharacterUpdatePart();
// userinterface > PythonNetworkStreamPhaseGame.cpp case HEADER_GC_DRAGON_SOUL_REFINE: ara
C++:case HEADER_GC_UPDATE_PART: ret = RecvCharacterUpdatePart(); break;
// userinterface > PythonNetworkStreamPhaseGame.cpp bool CPythonNetworkStream::RecvDungeon() ara fonksiyonun sonunda yeni bi fonksiyon oluştur
C++:bool CPythonNetworkStream::RecvCharacterUpdatePart() { TPacketGCCharacterUpdatePart p; if (!Recv(sizeof(p), &p)) return false; CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetInstancePtr(p.dwVID); if (!pkInst) return false; switch (p.bPart) { case CRaceData::PART_WEAPON: pkInst->SetWeapon(p.dwVnum, 0); break; default: break; } IAbstractPlayer& rkPlayer = IAbstractPlayer::GetSingleton(); rkPlayer.NotifyCharacterUpdate(p.dwVID); return true; }
Teşekkür ederiz birde pts log kapatma syslog syser kapatma fix varsa paylasırmısınız.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
Metin2 Hile İstek
Metin2 GF SendItemPickupPacket
- Cevaplar
- 11
- Görüntüleme
- 850
- Cevaplar
- 14
- Görüntüleme
- 637
- Cevaplar
- 3
- Görüntüleme
- 80
- Kilitli
- Cevaplar
- 16
- Görüntüleme
- 10K
- Cevaplar
- 2
- Görüntüleme
- 1K

