noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
Hikaye Ekle

Dans Edince Silahın Gitmesi (Webzen Updates)

  • Konuyu başlatan Konuyu başlatan cBaraN
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 45
  • Görüntüleme Görüntüleme 6K

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
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

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst