* added long time forgotten script func "leavechannel"
* added script func "listchannel" (get all guids on players in a channel, query their names and store them in list macro @ChannelList. * fixed /me-like emotes (server will no longer treat them as crash attempt :D ) * stuffextract: added output of database names into SCP files.
This commit is contained in:
parent
8d261e5da0
commit
b7a4ae92c5
@ -7,7 +7,6 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "VarSet.h"
|
#include "VarSet.h"
|
||||||
#include "DefScript.h"
|
#include "DefScript.h"
|
||||||
#include "DefScriptTools.h"
|
|
||||||
|
|
||||||
using namespace DefScriptTools;
|
using namespace DefScriptTools;
|
||||||
|
|
||||||
@ -90,6 +89,7 @@ void DefScriptPackage::_InitFunctions(void)
|
|||||||
AddFunc("shdn",&DefScriptPackage::func_shdn);
|
AddFunc("shdn",&DefScriptPackage::func_shdn);
|
||||||
AddFunc("loaddef",&DefScriptPackage::func_loaddef);
|
AddFunc("loaddef",&DefScriptPackage::func_loaddef);
|
||||||
AddFunc("reloaddef",&DefScriptPackage::func_reloaddef);
|
AddFunc("reloaddef",&DefScriptPackage::func_reloaddef);
|
||||||
|
AddFunc("reloaddef",&DefScriptPackage::func_unloaddef);
|
||||||
AddFunc("setscriptpermission",&DefScriptPackage::func_setscriptpermission);
|
AddFunc("setscriptpermission",&DefScriptPackage::func_setscriptpermission);
|
||||||
AddFunc("toint",&DefScriptPackage::func_toint);
|
AddFunc("toint",&DefScriptPackage::func_toint);
|
||||||
AddFunc("add",&DefScriptPackage::func_add);
|
AddFunc("add",&DefScriptPackage::func_add);
|
||||||
@ -124,6 +124,8 @@ void DefScriptPackage::_InitFunctions(void)
|
|||||||
AddFunc("random",&DefScriptPackage::func_random);
|
AddFunc("random",&DefScriptPackage::func_random);
|
||||||
AddFunc("fileexists",&DefScriptPackage::func_fileexists);
|
AddFunc("fileexists",&DefScriptPackage::func_fileexists);
|
||||||
AddFunc("strfind",&DefScriptPackage::func_strfind);
|
AddFunc("strfind",&DefScriptPackage::func_strfind);
|
||||||
|
AddFunc("funcexists",&DefScriptPackage::func_funcexists);
|
||||||
|
AddFunc("scriptexists",&DefScriptPackage::func_scriptexists);
|
||||||
|
|
||||||
// list functions
|
// list functions
|
||||||
AddFunc("lpushback",&DefScriptPackage::func_lpushback);
|
AddFunc("lpushback",&DefScriptPackage::func_lpushback);
|
||||||
|
|||||||
@ -2,14 +2,14 @@
|
|||||||
#ifndef __DEFSCRIPT_H
|
#ifndef __DEFSCRIPT_H
|
||||||
#define __DEFSCRIPT_H
|
#define __DEFSCRIPT_H
|
||||||
|
|
||||||
|
#include "DefScriptDefines.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include "VarSet.h"
|
#include "VarSet.h"
|
||||||
#include "DynamicEvent.h"
|
#include "DynamicEvent.h"
|
||||||
#include "ListStorage.h"
|
#include "ListStorage.h"
|
||||||
|
#include "DefScriptTools.h"
|
||||||
#include "DefScriptDefines.h"
|
|
||||||
|
|
||||||
class DefScriptPackage;
|
class DefScriptPackage;
|
||||||
class DefScript;
|
class DefScript;
|
||||||
@ -169,6 +169,7 @@ private:
|
|||||||
DefReturnResult func_unset(CmdSet&);
|
DefReturnResult func_unset(CmdSet&);
|
||||||
DefReturnResult func_loaddef(CmdSet&);
|
DefReturnResult func_loaddef(CmdSet&);
|
||||||
DefReturnResult func_reloaddef(CmdSet&);
|
DefReturnResult func_reloaddef(CmdSet&);
|
||||||
|
DefReturnResult func_unloaddef(CmdSet&);
|
||||||
DefReturnResult func_out(CmdSet&);
|
DefReturnResult func_out(CmdSet&);
|
||||||
DefReturnResult func_eof(CmdSet&);
|
DefReturnResult func_eof(CmdSet&);
|
||||||
DefReturnResult func_shdn(CmdSet&);
|
DefReturnResult func_shdn(CmdSet&);
|
||||||
@ -204,6 +205,9 @@ private:
|
|||||||
DefReturnResult func_random(CmdSet&);
|
DefReturnResult func_random(CmdSet&);
|
||||||
DefReturnResult func_fileexists(CmdSet&);
|
DefReturnResult func_fileexists(CmdSet&);
|
||||||
DefReturnResult func_strfind(CmdSet&);
|
DefReturnResult func_strfind(CmdSet&);
|
||||||
|
DefReturnResult func_scriptexists(CmdSet&);
|
||||||
|
DefReturnResult func_funcexists(CmdSet&);
|
||||||
|
|
||||||
|
|
||||||
// list functions
|
// list functions
|
||||||
DefReturnResult func_lpushback(CmdSet&);
|
DefReturnResult func_lpushback(CmdSet&);
|
||||||
|
|||||||
@ -6,7 +6,6 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "DefScript.h"
|
#include "DefScript.h"
|
||||||
#include "DefScriptTools.h"
|
|
||||||
|
|
||||||
using namespace DefScriptTools;
|
using namespace DefScriptTools;
|
||||||
|
|
||||||
@ -66,6 +65,14 @@ DefReturnResult DefScriptPackage::func_reloaddef(CmdSet& Set){
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefReturnResult DefScriptPackage::func_unloaddef(CmdSet& Set)
|
||||||
|
{
|
||||||
|
if(!ScriptExists(Set.defaultarg))
|
||||||
|
return false;
|
||||||
|
this->DeleteScript(Set.defaultarg);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
DefReturnResult DefScriptPackage::func_unset(CmdSet& Set){
|
DefReturnResult DefScriptPackage::func_unset(CmdSet& Set){
|
||||||
DefReturnResult r;
|
DefReturnResult r;
|
||||||
r.ret=Set.defaultarg;
|
r.ret=Set.defaultarg;
|
||||||
@ -494,5 +501,17 @@ DefReturnResult DefScriptPackage::func_strfind(CmdSet& Set)
|
|||||||
return toString((uint64)pos);
|
return toString((uint64)pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefReturnResult DefScriptPackage::func_scriptexists(CmdSet& Set)
|
||||||
|
{
|
||||||
|
return ScriptExists(Set.defaultarg);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefReturnResult DefScriptPackage::func_funcexists(CmdSet& Set)
|
||||||
|
{
|
||||||
|
for(DefScriptFunctionTable::iterator i = _functable.begin(); i != _functable.end(); i++)
|
||||||
|
{
|
||||||
|
if(i->name == stringToLower(Set.defaultarg))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
@ -3,7 +3,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include "DefScript.h"
|
#include "DefScript.h"
|
||||||
#include "DefScriptTools.h"
|
|
||||||
|
|
||||||
using namespace DefScriptTools;
|
using namespace DefScriptTools;
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,8 @@ void DefScriptPackage::_InitDefScriptInterface(void)
|
|||||||
AddFunc("savecache",&DefScriptPackage::SCsavecache);
|
AddFunc("savecache",&DefScriptPackage::SCsavecache);
|
||||||
AddFunc("sendchatmessage",&DefScriptPackage::SCSendChatMessage);
|
AddFunc("sendchatmessage",&DefScriptPackage::SCSendChatMessage);
|
||||||
AddFunc("joinchannel",&DefScriptPackage::SCjoinchannel);
|
AddFunc("joinchannel",&DefScriptPackage::SCjoinchannel);
|
||||||
|
AddFunc("leavechannel",&DefScriptPackage::SCleavechannel);
|
||||||
|
AddFunc("listchannel",&DefScriptPackage::SClistchannel);
|
||||||
AddFunc("loadconf",&DefScriptPackage::SCloadconf);
|
AddFunc("loadconf",&DefScriptPackage::SCloadconf);
|
||||||
AddFunc("applyconf",&DefScriptPackage::SCapplyconf);
|
AddFunc("applyconf",&DefScriptPackage::SCapplyconf);
|
||||||
AddFunc("applypermissions",&DefScriptPackage::SCapplypermissions);
|
AddFunc("applypermissions",&DefScriptPackage::SCapplypermissions);
|
||||||
@ -167,6 +169,18 @@ DefReturnResult DefScriptPackage::SCjoinchannel(CmdSet& Set){
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefReturnResult DefScriptPackage::SClistchannel(CmdSet& Set){
|
||||||
|
if(Set.defaultarg.empty())
|
||||||
|
return false;
|
||||||
|
if(!(((PseuInstance*)parentMethod)->GetWSession()))
|
||||||
|
{
|
||||||
|
logerror("Invalid Script call: SClistchannel: WorldSession not valid");
|
||||||
|
DEF_RETURN_ERROR;
|
||||||
|
}
|
||||||
|
((PseuInstance*)parentMethod)->GetWSession()->GetChannels()->RequestList(Set.defaultarg);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
DefReturnResult DefScriptPackage::SCleavechannel(CmdSet& Set){
|
DefReturnResult DefScriptPackage::SCleavechannel(CmdSet& Set){
|
||||||
if(Set.defaultarg.empty())
|
if(Set.defaultarg.empty())
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
#define USING_DEFSCRIPT_EXTENSIONS true
|
#define USING_DEFSCRIPT_EXTENSIONS true
|
||||||
|
|
||||||
void _InitDefScriptInterface(void);
|
void _InitDefScriptInterface(void);
|
||||||
// Useable own internal functions:
|
// Usable own internal functions:
|
||||||
DefReturnResult SCpause(CmdSet&);
|
DefReturnResult SCpause(CmdSet&);
|
||||||
DefReturnResult SCSendChatMessage(CmdSet&);
|
DefReturnResult SCSendChatMessage(CmdSet&);
|
||||||
DefReturnResult SCsavecache(CmdSet&);
|
DefReturnResult SCsavecache(CmdSet&);
|
||||||
@ -12,6 +12,7 @@ DefReturnResult SCfollow(CmdSet&);
|
|||||||
DefReturnResult SCshdn(CmdSet&);
|
DefReturnResult SCshdn(CmdSet&);
|
||||||
DefReturnResult SCjoinchannel(CmdSet&);
|
DefReturnResult SCjoinchannel(CmdSet&);
|
||||||
DefReturnResult SCleavechannel(CmdSet&);
|
DefReturnResult SCleavechannel(CmdSet&);
|
||||||
|
DefReturnResult SClistchannel(CmdSet&);
|
||||||
DefReturnResult SCloadconf(CmdSet&);
|
DefReturnResult SCloadconf(CmdSet&);
|
||||||
DefReturnResult SCapplypermissions(CmdSet&);
|
DefReturnResult SCapplypermissions(CmdSet&);
|
||||||
DefReturnResult SCapplyconf(CmdSet&);
|
DefReturnResult SCapplyconf(CmdSet&);
|
||||||
|
|||||||
@ -11,25 +11,20 @@ void WorldSession::SendChatMessage(uint32 type, uint32 lang, std::string msg, st
|
|||||||
if((!_logged) || msg.empty())
|
if((!_logged) || msg.empty())
|
||||||
return;
|
return;
|
||||||
WorldPacket packet;
|
WorldPacket packet;
|
||||||
packet<<type<<lang;
|
packet << type << lang;
|
||||||
switch(type){
|
switch(type){
|
||||||
case CHAT_MSG_SAY:
|
|
||||||
case CHAT_MSG_YELL:
|
|
||||||
case CHAT_MSG_PARTY:
|
|
||||||
case CHAT_MSG_GUILD:
|
|
||||||
case CHAT_MSG_OFFICER: // not sure about that
|
|
||||||
packet<<msg;
|
|
||||||
break;
|
|
||||||
case CHAT_MSG_WHISPER:
|
case CHAT_MSG_WHISPER:
|
||||||
if(to.empty())
|
if(to.empty())
|
||||||
return;
|
return;
|
||||||
packet<<to<<msg;
|
packet << to << msg;
|
||||||
break;
|
break;
|
||||||
case CHAT_MSG_CHANNEL:
|
case CHAT_MSG_CHANNEL:
|
||||||
if(to.empty() /*|| !_channels->IsOnChannel(to)*/)
|
if(to.empty() /*|| !_channels->IsOnChannel(to)*/)
|
||||||
return;
|
return;
|
||||||
packet<<to<<msg;
|
packet << to << msg;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
packet << msg;
|
||||||
}
|
}
|
||||||
packet.SetOpcode(CMSG_MESSAGECHAT);
|
packet.SetOpcode(CMSG_MESSAGECHAT);
|
||||||
SendWorldPacket(packet);
|
SendWorldPacket(packet);
|
||||||
|
|||||||
@ -195,16 +195,20 @@ void Channel::HandleListRequest(WorldPacket& recvPacket)
|
|||||||
uint64 guid;
|
uint64 guid;
|
||||||
uint8 mode;
|
uint8 mode;
|
||||||
recvPacket >> unk >> size;
|
recvPacket >> unk >> size;
|
||||||
|
|
||||||
|
// store list of GUIDs in: @ChannelList
|
||||||
|
DefList *l = _worldSession->GetInstance()->GetScripts()->lists.Get("@ChannelList");
|
||||||
|
l->clear();
|
||||||
for(uint32 i = 0; i < size; i++)
|
for(uint32 i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
recvPacket >> guid >> mode;
|
recvPacket >> guid >> mode;
|
||||||
cpl[guid] = mode;
|
cpl[guid] = mode;
|
||||||
|
l->push_back(DefScriptTools::toString(guid));
|
||||||
}
|
}
|
||||||
|
|
||||||
// now we could do something with that list, but for now, only request names of unknown players
|
|
||||||
std::string pname;
|
std::string pname;
|
||||||
bool muted,mod;
|
bool muted,mod;
|
||||||
log("Player channel list, %u players:",size);
|
logcustom(0,WHITE,"Player channel list, %u players:",size);
|
||||||
for(ChannelPlayerList::iterator i = cpl.begin(); i != cpl.end(); i++)
|
for(ChannelPlayerList::iterator i = cpl.begin(); i != cpl.end(); i++)
|
||||||
{
|
{
|
||||||
pname = _worldSession->plrNameCache.GetName(i->first);
|
pname = _worldSession->plrNameCache.GetName(i->first);
|
||||||
@ -220,7 +224,7 @@ void Channel::HandleListRequest(WorldPacket& recvPacket)
|
|||||||
while(pname.length()<12)
|
while(pname.length()<12)
|
||||||
pname += " "; // for better formatting
|
pname += " "; // for better formatting
|
||||||
|
|
||||||
log("%s ["I64FMT"] %s %s",pname.c_str(),i->first,muted?"(muted)":"",mod?"(moderator)":"");
|
logcustom(0,WHITE,"%s ["I64FMT"] %s %s",pname.c_str(),i->first,muted?"(muted)":"",mod?"(moderator)":"");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -192,12 +192,16 @@ std::string AutoGetDataString(DBCFile::Iterator& it, const char* format, uint32
|
|||||||
|
|
||||||
|
|
||||||
// output a formatted scp file
|
// output a formatted scp file
|
||||||
void OutSCP(char *fn, SCPStorageMap& scp)
|
void OutSCP(char *fn, SCPStorageMap& scp, std::string dbName="")
|
||||||
{
|
{
|
||||||
std::fstream f;
|
std::fstream f;
|
||||||
f.open(fn, std::ios_base::out);
|
f.open(fn, std::ios_base::out);
|
||||||
if(f.is_open())
|
if(f.is_open())
|
||||||
{
|
{
|
||||||
|
if(dbName.length())
|
||||||
|
{
|
||||||
|
f << "#dbname=" << dbName << "\n";
|
||||||
|
}
|
||||||
for(SCPStorageMap::iterator mi = scp.begin(); mi != scp.end(); mi++)
|
for(SCPStorageMap::iterator mi = scp.begin(); mi != scp.end(); mi++)
|
||||||
{
|
{
|
||||||
f << "[" << mi->first << "]\n";
|
f << "[" << mi->first << "]\n";
|
||||||
@ -413,12 +417,12 @@ bool ConvertDBC(void)
|
|||||||
CreateDir("stuffextract/data/scp");
|
CreateDir("stuffextract/data/scp");
|
||||||
|
|
||||||
printf("Writing SCP files:\n");
|
printf("Writing SCP files:\n");
|
||||||
printf("emote.."); OutSCP(SCPDIR "/emote.scp",EmoteDataStorage);
|
printf("emote.."); OutSCP(SCPDIR "/emote.scp",EmoteDataStorage, "emote");
|
||||||
printf("race.."); OutSCP(SCPDIR "/race.scp",RaceDataStorage);
|
printf("race.."); OutSCP(SCPDIR "/race.scp",RaceDataStorage, "race");
|
||||||
printf("sound.."); OutSCP(SCPDIR "/sound.scp",SoundDataStorage);
|
printf("sound.."); OutSCP(SCPDIR "/sound.scp",SoundDataStorage, "sound");
|
||||||
printf("map.."); OutSCP(SCPDIR "/map.scp",MapDataStorage);
|
printf("map.."); OutSCP(SCPDIR "/map.scp",MapDataStorage, "map");
|
||||||
printf("area.."); OutSCP(SCPDIR "/area.scp",AreaDataStorage);
|
printf("area.."); OutSCP(SCPDIR "/area.scp",AreaDataStorage, "area");
|
||||||
printf("itemdisplayinfo."); OutSCP(SCPDIR "/itemdisplayinfo.scp",ItemDisplayInfoStorage);
|
printf("itemdisplayinfo."); OutSCP(SCPDIR "/itemdisplayinfo.scp",ItemDisplayInfoStorage, "itemdisplayinfo");
|
||||||
//...
|
//...
|
||||||
printf("DONE!\n");
|
printf("DONE!\n");
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ int main(int argc, char *argv[]);
|
|||||||
void ProcessCmdArgs(int argc, char *argv[]);
|
void ProcessCmdArgs(int argc, char *argv[]);
|
||||||
void PrintConfig(void);
|
void PrintConfig(void);
|
||||||
void PrintHelp(void);
|
void PrintHelp(void);
|
||||||
void OutSCP(char*, SCPStorageMap&);
|
void OutSCP(char*, SCPStorageMap&, std::string);
|
||||||
void OutMD5(char*, MD5FileMap&);
|
void OutMD5(char*, MD5FileMap&);
|
||||||
bool ConvertDBC(void);
|
bool ConvertDBC(void);
|
||||||
void ExtractMaps(void);
|
void ExtractMaps(void);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user