From c7cc44d4cbdf280ab7f8378699c5ca218941f282 Mon Sep 17 00:00:00 2001 From: "False.Genesis" Date: Sun, 28 Oct 2007 17:26:19 +0000 Subject: [PATCH] * added SendWorldPacket script func. --- src/Client/DefScriptInterface.cpp | 25 +++++++++++++++++++++++++ src/Client/DefScriptInterfaceInclude.h | 1 + 2 files changed, 26 insertions(+) diff --git a/src/Client/DefScriptInterface.cpp b/src/Client/DefScriptInterface.cpp index 40c44bb..418c0cd 100644 --- a/src/Client/DefScriptInterface.cpp +++ b/src/Client/DefScriptInterface.cpp @@ -50,6 +50,7 @@ void DefScriptPackage::_InitDefScriptInterface(void) AddFunc("getobjectvalue",&DefScriptPackage::SCGetObjectValue); AddFunc("getrace",&DefScriptPackage::SCGetRace); AddFunc("getclass",&DefScriptPackage::SCGetClass); + AddFunc("sendworldpacket",&DefScriptPackage::SCSendWorldPacket); } DefReturnResult DefScriptPackage::SCshdn(CmdSet& Set) @@ -857,6 +858,30 @@ DefReturnResult DefScriptPackage::SCGetClass(CmdSet &Set) return ""; } +DefReturnResult DefScriptPackage::SCSendWorldPacket(CmdSet &Set) +{ + WorldSession *ws = ((PseuInstance*)parentMethod)->GetWSession(); + if(!ws) + { + logerror("Invalid Script call: SCSendWorldPacket: WorldSession not valid"); + DEF_RETURN_ERROR; + } + ByteBuffer *bb = bytebuffers.GetNoCreate(_NormalizeVarName(Set.defaultarg,Set.myname)); + if(bb) + { + uint32 opcode = (uint32)DefScriptTools::toNumber(Set.arg[0]); + if(opcode) // prevent sending CMSG_NULL_ACTION + { + WorldPacket wp(opcode, bb->size()); + if(bb->size()) + wp.append(bb->contents(), bb->size()); + ws->SendWorldPacket(wp); + return true; + } + } + return false; +} + diff --git a/src/Client/DefScriptInterfaceInclude.h b/src/Client/DefScriptInterfaceInclude.h index fc591f6..c01aa6e 100644 --- a/src/Client/DefScriptInterfaceInclude.h +++ b/src/Client/DefScriptInterfaceInclude.h @@ -41,5 +41,6 @@ DefReturnResult SCPrintScript(CmdSet&); DefReturnResult SCGetObjectValue(CmdSet&); DefReturnResult SCGetRace(CmdSet&); DefReturnResult SCGetClass(CmdSet&); +DefReturnResult SCSendWorldPacket(CmdSet&); #endif \ No newline at end of file