From 0d5e55fc67d9984364d83b50afa16ce84063fb95 Mon Sep 17 00:00:00 2001 From: "False.Genesis" Date: Tue, 27 Feb 2007 21:03:58 +0000 Subject: [PATCH] * added 2 .def files: "sayguild" & "sayparty" * removed debug output for object update * auto-query unknown items worn by players --- bin/scripts/sayguild.def | 12 ++++++ bin/scripts/sayparty.def | 12 ++++++ src/Client/World/CMSGConstructor.cpp | 1 - src/Client/World/UpdateData.cpp | 60 +++++++++++++++------------- src/Client/World/WorldSession.cpp | 8 ++++ src/Client/World/WorldSession.h | 1 + 6 files changed, 65 insertions(+), 29 deletions(-) create mode 100644 bin/scripts/sayguild.def create mode 100644 bin/scripts/sayparty.def diff --git a/bin/scripts/sayguild.def b/bin/scripts/sayguild.def new file mode 100644 index 0000000..59c8777 --- /dev/null +++ b/bin/scripts/sayguild.def @@ -0,0 +1,12 @@ +#permission=255 +// setup some default values +SET,lang ${@0} +SET,msg ${@def} + +default,lang 0 + +LOGDEBUG * Saying '${msg}' in lang ${lang} + +SENDCHATMESSAGE,3,${lang},{${msg}} +UNSET lang +UNSET msg \ No newline at end of file diff --git a/bin/scripts/sayparty.def b/bin/scripts/sayparty.def new file mode 100644 index 0000000..caf37e3 --- /dev/null +++ b/bin/scripts/sayparty.def @@ -0,0 +1,12 @@ +#permission=255 +// setup some default values +SET,lang ${@0} +SET,msg ${@def} + +default,lang 0 + +LOGDEBUG * Saying '${msg}' in lang ${lang} + +SENDCHATMESSAGE,1,${lang},{${msg}} +UNSET lang +UNSET msg \ No newline at end of file diff --git a/src/Client/World/CMSGConstructor.cpp b/src/Client/World/CMSGConstructor.cpp index 6606de9..550604f 100644 --- a/src/Client/World/CMSGConstructor.cpp +++ b/src/Client/World/CMSGConstructor.cpp @@ -74,7 +74,6 @@ void WorldSession::SendQueryItem(uint32 id, uint64 guid) // is it a guid? not su packet << id << guid; packet.SetOpcode(CMSG_ITEM_QUERY_SINGLE); SendWorldPacket(packet); - // to prevent opcode spam, we need to make a list with already requested items } void WorldSession::SendSetSelection(uint64 guid) diff --git a/src/Client/World/UpdateData.cpp b/src/Client/World/UpdateData.cpp index 81ff0ec..b7b4f20 100644 --- a/src/Client/World/UpdateData.cpp +++ b/src/Client/World/UpdateData.cpp @@ -15,8 +15,6 @@ void WorldSession::_HandleCompressedUpdateObjectOpcode(WorldPacket& recvPacket) { - //printf("-> COMPRESSED_UPDATE_OBJECT, pktlen=%u\n",recvPacket.size()); - //recvPacket.hexlike(); uint32 realsize; recvPacket >> realsize; ZCompressor z; @@ -26,7 +24,7 @@ void WorldSession::_HandleCompressedUpdateObjectOpcode(WorldPacket& recvPacket) z.Inflate(); if(z.Compressed()) { - logerror("_HandleCompressedUpdateObjectOpcode(): Inflate() failed!"); + logerror("_HandleCompressedUpdateObjectOpcode(): Inflate() failed! size=%u realsize=%u",z.size(),realsize); return; } WorldPacket wp; @@ -43,11 +41,9 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket) uint32 usize, ublocks; uint64 uguid; recvPacket >> ublocks >> unk8; - logdebug("UpdateObject: ublocks=%u unk=%u",ublocks,unk8); while(recvPacket.rpos() < recvPacket.size()) { recvPacket >> utype; - logdebug("-UpdateObject: utype=%u",utype); switch(utype) { case UPDATETYPE_VALUES: @@ -64,7 +60,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket) if(obj) this->_MovementUpdate(obj->GetTypeId(),uguid,recvPacket); else - logerror("--Got UpdateObject_Movement for unknown object "I64FMT,uguid); + logerror("Got UpdateObject_Movement for unknown object "I64FMT,uguid); } break; @@ -74,7 +70,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket) uguid = recvPacket.GetPackedGuid(); uint8 objtypeid; recvPacket >> objtypeid; - logdebug("--Create Object type %u with guid "I64FMT,objtypeid,uguid); + logdebug("Create Object type %u with guid "I64FMT,objtypeid,uguid); @@ -137,6 +133,8 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket) this->_MovementUpdate(objtypeid, uguid, recvPacket); this->_ValuesUpdate(uguid, recvPacket); + + _QueryObjectProto(uguid); } break; @@ -146,19 +144,18 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket) for(uint16 i=0;i> flags; - logdebug("--- flags:%X",flags); if(objtypeid==TYPEID_PLAYER) { recvPacket >> flags2 >> time; - logdebug("--- flags2=0x%X time=%u",flags2,time); if (flags2 & 0x02000000) // On a transport { @@ -187,7 +182,6 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r } recvPacket >> unkf; - logdebug("--- DEBUG: %f == 0 ?",unkf); if(flags2 & 0x2000) // Self update { @@ -197,12 +191,7 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r recvPacket >> unkf; recvPacket >> unkf; } - recvPacket >> speedWalk >> speedRun >> speedSwimBack >> speedSwim >> speedWalkBack >> speedTurn; - - logdebug("--- TYPEID_PLAYER: walk=%f run=%f swimb=%f swim=%f walkb=%f turn=%f",speedWalk,speedRun,speedSwimBack,speedSwim,speedWalkBack,speedTurn); - logdebug("--- TYPEID_PLAYER: OnTransport=%s x=%f y=%f z=%f o=%f", flags2 & 0x02000000 ? "true" : "false", x, y, z, o); - } if(objtypeid==TYPEID_UNIT) { @@ -218,8 +207,6 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r recvPacket >> unkf >> unkf >> unkf; // Some x, y, z value } } - logdebug("--- TYPEID_UNIT: walk=%f run=%f swimb=%f swim=%f walkb=%f turn=%f",speedWalk,speedRun,speedSwimBack,speedSwim,speedWalkBack,speedTurn); - logdebug("--- TYPEID_UNIT: flag=%s x=%f y=%f z=%f o=%f", flags2 & 0x400000 ? "true" : "false", x, y, z, o); } if( (objtypeid==TYPEID_CORPSE) || (objtypeid==TYPEID_GAMEOBJECT) || (objtypeid==TYPEID_DYNAMICOBJECT)) { @@ -235,7 +222,6 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r } recvPacket >> unk32; // (uint32)0x1 - logdebug("--- REFERENCE: %u (should be = 1)",unk32); if ((GUID_HIPART(uguid) == HIGHGUID_TRANSPORT)) { @@ -258,8 +244,6 @@ void WorldSession::_ValuesUpdate(uint64 uguid, WorldPacket& recvPacket) valuesCount = obj->GetValuesCount(); recvPacket >> blockcount; masksize = blockcount << 2; // each sizeof(uint32) == <4> * sizeof(uint8) // 1<<2 == <4> - logdebug("--UPDATETYPE_VALUES: guid="I64FMT" values=%u blockcount=%u masksize=%d",uguid,valuesCount,blockcount, masksize); - UpdateMask umask; uint32 *updateMask = new uint32[blockcount]; umask.SetCount(masksize); @@ -288,14 +272,34 @@ void WorldSession::_ValuesUpdate(uint64 uguid, WorldPacket& recvPacket) obj->SetUInt32Value(i, value); } - - logdebug("--- Value (%d): %d", i, value); } } } else { - logerror("--Got UpdateObject_Values for unknown object "I64FMT,uguid); + logerror("Got UpdateObject_Values for unknown object "I64FMT,uguid); } +} + +void WorldSession::_QueryObjectProto(uint64 guid) +{ + Object *obj = objmgr.GetObj(guid); + if(obj) + { + switch(obj->GetTypeId()) + { + case TYPEID_ITEM: + case TYPEID_CONTAINER: + { + ItemProto *proto = objmgr.GetItemProto(obj->GetEntry()); + if(!proto) + { + logdebug("Found unknown item: GUID="I64FMT" entry=%u",obj->GetGUID(),obj->GetEntry()); + SendQueryItem(obj->GetEntry(),obj->GetGUID()); // not sure if sending GUID is correct + } + } + // case ... + } + } } \ No newline at end of file diff --git a/src/Client/World/WorldSession.cpp b/src/Client/World/WorldSession.cpp index 7dff293..e4acec3 100644 --- a/src/Client/World/WorldSession.cpp +++ b/src/Client/World/WorldSession.cpp @@ -446,6 +446,14 @@ void WorldSession::_HandleMessageChatOpcode(WorldPacket& recvPacket) { logcustom(0,WHITE,"TO %s [%s]: %s",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); } + else if (type==CHAT_MSG_GUILD ) + { + logcustom(0,WHITE,"GUILD: %s [%s]: %s",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); + } + else if (type==CHAT_MSG_PARTY ) + { + logcustom(0,WHITE,"PARTY: %s [%s]: %s",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); + } else { logcustom(0,WHITE,"UNK CHAT TYPE (%u): %s [%s]: %s",type,plrname.c_str(),LookupName(lang,langNames),msg.c_str()); diff --git a/src/Client/World/WorldSession.h b/src/Client/World/WorldSession.h index 0d5ca81..9c58f0f 100644 --- a/src/Client/World/WorldSession.h +++ b/src/Client/World/WorldSession.h @@ -95,6 +95,7 @@ private: void _MovementUpdate(uint8 objtypeid, uint64 guid, WorldPacket& recvPacket); // Helper for _HandleUpdateObjectOpcode void _ValuesUpdate(uint64 uguid, WorldPacket& recvPacket); // ... + void _QueryObjectProto(uint64 guid); PseuInstance *_instance; WorldSocket *_socket;