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!
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 dedim kendi sunucumda 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
// } TPacketGCDragonSoulRefine;arat yapıştır
// char.cpp aç m_pointsInstant.iDragonSoulActiveDeck = -1; arat
// pack.awPart[CHR_EQUIPPART_WEAPON] arat komple değiştir.
LPCHARACTER CHARACTER::FindCharacterInView(const char * c_pszName, bool bFindPCOnly) arat ve bir üstüne ekle
char.h aç ve arat void UpdatePacket(); altına ekle
char_item.cpp case ITEM_PICK: arat
// EquipItem(item, DestCell.cell - INVENTORY_MAX_NUM); arat üstüne ekle
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
cmd_emotion.cpp ara ch->PacketAround(buf.read_peek(), buf.size());
if (pinfo->bFunc == FUNC_MOVE) arat ch->Goto(pinfo->lX, pinfo->lY); bunun altına ekle
aynı yerin else tırnağından sonrası satır şeysinede ekle
// char_horse.cpp HorseSummon(false); arat ekle (ek binek zımbırtıları olan nerde summon ediyosa oraya yapıştırsın)
client > userinterface>Packet.h HEADER_GC_CHARACTER_POSITION arat ekle
} TPacketGCDragonSoulRefine; arat
// userinterface > PythonNetworkStream.cpp Set(HEADER_GC_DRAGON_SOUL_REFINE,
// userinterface > PythonNetworkStream.h bool RecvDragonSoulRefine(); ara
// userinterface > PythonNetworkStreamPhaseGame.cpp case HEADER_GC_DRAGON_SOUL_REFINE: ara
// userinterface > PythonNetworkStreamPhaseGame.cpp bool CPythonNetworkStream::RecvDungeon() ara fonksiyonun sonunda yeni bi fonksiyon oluştur
Çook eskiden yaptığım birşeydi arkadaş paylaşmış sadece part 0 yapınca iş bitiyor sandı diye bende bugsuz halini paylaşayım dedim kendi sunucumda 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;
}
Moderatör tarafında düzenlendi:
En Çok Reaksiyon Alan Mesajlar
Ahaha tamda az önce biri istemişti denk geldi.
libthecore > src > log.c
Öğeyi görmek için üye olmalısınız.
int fonksiyon return false mi dönüyor xD
Teşekkürler.
int fonksiyon return false mi dönüyor xD
Farketmemişim gece "void pt_log(const char *format, ...)" arat va_list args; den sonra return; koy ayrıca döner dönse bile sıfır döner cahel xD ayrıca postu paylaşırken senin geleceğini bilmem... nabıyon la köylü, hala herşeyi quest flagla yazmaya devam mı? xD
Teşekkürler.
Teşekkürler.
Teşekkürler
Rica ederim ^^
Bunu 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)
Ş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
- 851
- 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

