* fixed object update

* re-added language lookup in chat messages, for example "say,Gnomish pwnt". note they are CASE-sensitive and depend on which language name is set in /data/scp/language.scp!
This commit is contained in:
False.Genesis 2007-05-26 23:03:32 +00:00
parent de2614fa80
commit 7ea59ad349
3 changed files with 28 additions and 22 deletions

View File

@ -11,6 +11,7 @@
#include "CacheHandler.h"
#include "SCPDatabase.h"
void DefScriptPackage::_InitDefScriptInterface(void)
{
AddFunc("pause",&DefScriptPackage::SCpause);
@ -64,21 +65,17 @@ DefReturnResult DefScriptPackage::SCSendChatMessage(CmdSet& Set){
std::stringstream ss;
uint32 type=atoi(Set.arg[0].c_str());
uint32 lang=atoi(Set.arg[1].c_str());
// TODO: need better database support to get the lang id from a given name
/*ss << lang;
ss << lang;
if(ss.str()!=Set.arg[1]) // given lang is NOT a number
{
for(uint32 i=0;i<=33;i++)
{
((PseuInstance*)parentMethod)->dbmgr.GetDB("language").GetFieldByValue("name"
if(!stricmp(Set.arg[1].c_str(),LookupName(i,langNames)))
{
lang=i;
break;
}
}
}*/
uint32 dblang;
dblang = ((PseuInstance*)parentMethod)->dbmgr.GetDB("language").GetFieldByValue("name",Set.arg[1]);
logdev("looking up language id for lang '%s', found %i",Set.arg[1].c_str(),dblang);
if(dblang != -1)
lang = dblang;
}
std::string msg=Set.arg[2];
std::string to=Set.arg[3];
((PseuInstance*)parentMethod)->GetWSession()->SendChatMessage(type,lang,msg,to);

View File

@ -2,7 +2,7 @@
#define DEFSCRIPTINTERFACEINCLUDE_H
#define USING_DEFSCRIPT_EXTENSIONS true
void _InitDefScriptInterface();
void _InitDefScriptInterface(void);
// Useable own internal functions:
DefReturnResult SCpause(CmdSet&);
DefReturnResult SCSendChatMessage(CmdSet&);

View File

@ -167,7 +167,7 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r
{
uint8 flags;
uint32 unk32,flags2,time,transtime,higuid;
float unkf,x,y,z,o,tx,ty,tz,to;
float unkfx,unkfy,unkfz,x,y,z,o,tx,ty,tz,to;
uint64 transguid;
// uint64 fullguid; // see below
float speedWalk, speedRun, speedSwimBack, speedSwim, speedWalkBack, speedTurn, speedFly, speedFlyBack;
@ -189,26 +189,35 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r
{
if(flags & UPDATEFLAG_TRANSPORT)
{
recvPacket >> unkf >> unkf >> unkf >> o; // 3x (float)0 followed by orientation
recvPacket >> unkfx >> unkfy >> unkfz >> o; // 3x (float)0 followed by orientation
logdev("TRANSPORT_FLOATS @ flags: x=%f y=%f z=%f o=%f",unkfx,unkfy,unkfz,o);
}
else
{
recvPacket >> x >> y >> z >> o;
logdev("FLOATS: x=%f y=%f z=%f o=%f",x,y,z,o);
}
}
if(flags & UPDATEFLAG_LIVING)
{
if(flags2 & FLAGS2_TRANSPORT)
{
recvPacket >> transguid >> tx >> ty >> tz >> to;
recvPacket >> unk32; // added in 2.0.3
logdev("TRANSPORT_FLOATS @ flags2: x=%f y=%f z=%f o=%f",tx,ty,tz,to);
}
}
if(flags & UPDATEFLAG_LIVING)
{
recvPacket >> unk32;
/*
// not sure if this is/was correct, MaNGOS doesnt use it anymore
if(flags2 & 0x2000) // 0x2000 = ??
{
recvPacket >> unkf >> unkf >> unkf >> unkf;
}
*/
recvPacket >> speedWalk >> speedRun >> speedSwimBack >> speedSwim;
recvPacket >> speedWalkBack >> speedFly >> speedFlyBack >> speedTurn; // fly added in 2.0.x
if(u)
@ -237,8 +246,8 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r
if(flags & UPDATEFLAG_HIGHGUID)
{
recvPacket >> higuid; // 2.0.6 - high guid was there, unk for 2.0.12
// not sure if this is correct
obj->SetUInt32Value(OBJECT_FIELD_GUID+1,higuid); // note that this sets only the high part of the guid
// not sure if this is correct, MaNGOS sends 0 always.
//obj->SetUInt32Value(OBJECT_FIELD_GUID+1,higuid); // note that this sets only the high part of the guid
}
if(flags & UPDATEFLAG_FULLGUID)