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