fixed compile error; added math functions to DefScript; removed old, commented out code
This commit is contained in:
parent
863e8e7944
commit
3b5f986d09
BIN
bin/db/chat
BIN
bin/db/chat
Binary file not shown.
@ -1,6 +1,5 @@
|
|||||||
#permission=255
|
#permission=255
|
||||||
|
|
||||||
|
|
||||||
// PSEUWOW DEF_SCRIPT STARTUP FILE
|
// PSEUWOW DEF_SCRIPT STARTUP FILE
|
||||||
|
|
||||||
OUT * DefScript StartUp [${@version_short}]...
|
OUT * DefScript StartUp [${@version_short}]...
|
||||||
|
|||||||
@ -11,7 +11,6 @@
|
|||||||
DefScriptPackage::DefScriptPackage()
|
DefScriptPackage::DefScriptPackage()
|
||||||
{
|
{
|
||||||
functionTable=_GetFunctionTable();
|
functionTable=_GetFunctionTable();
|
||||||
// printf("---> DefScriptPackage inited!\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DefScriptPackage::~DefScriptPackage()
|
DefScriptPackage::~DefScriptPackage()
|
||||||
@ -47,6 +46,18 @@ DefScriptFunctionTable *DefScriptPackage::_GetFunctionTable(void) const
|
|||||||
{"reloaddef",&DefScriptPackage::func_reloaddef},
|
{"reloaddef",&DefScriptPackage::func_reloaddef},
|
||||||
{"setscriptpermission",&DefScriptPackage::func_setscriptpermission},
|
{"setscriptpermission",&DefScriptPackage::func_setscriptpermission},
|
||||||
|
|
||||||
|
// mathematical functions:
|
||||||
|
{"toint",&DefScriptPackage::func_toint},
|
||||||
|
{"add",&DefScriptPackage::func_add},
|
||||||
|
{"sub",&DefScriptPackage::func_sub},
|
||||||
|
{"mul",&DefScriptPackage::func_mul},
|
||||||
|
{"div",&DefScriptPackage::func_div},
|
||||||
|
{"mod",&DefScriptPackage::func_mod},
|
||||||
|
{"pow",&DefScriptPackage::func_pow},
|
||||||
|
{"bitor",&DefScriptPackage::func_bitor},
|
||||||
|
{"bitand",&DefScriptPackage::func_bitand},
|
||||||
|
{"bitxor",&DefScriptPackage::func_bitxor},
|
||||||
|
|
||||||
|
|
||||||
// user functions:
|
// user functions:
|
||||||
{"pause",&DefScriptPackage::SCpause},
|
{"pause",&DefScriptPackage::SCpause},
|
||||||
|
|||||||
@ -9,6 +9,14 @@
|
|||||||
# define _DEFSC_DEBUG(code) /* code */
|
# define _DEFSC_DEBUG(code) /* code */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if COMPILER == COMPILER_MICROSOFT
|
||||||
|
typedef __int64 def_int64;
|
||||||
|
#else
|
||||||
|
typedef __int64_t def_int64;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include "VarSet.h"
|
#include "VarSet.h"
|
||||||
@ -119,6 +127,16 @@ private:
|
|||||||
bool func_eof(CmdSet);
|
bool func_eof(CmdSet);
|
||||||
bool func_shdn(CmdSet);
|
bool func_shdn(CmdSet);
|
||||||
bool func_setscriptpermission(CmdSet);
|
bool func_setscriptpermission(CmdSet);
|
||||||
|
bool func_toint(CmdSet);
|
||||||
|
bool func_add(CmdSet);
|
||||||
|
bool func_sub(CmdSet);
|
||||||
|
bool func_mul(CmdSet);
|
||||||
|
bool func_div(CmdSet);
|
||||||
|
bool func_mod(CmdSet);
|
||||||
|
bool func_pow(CmdSet);
|
||||||
|
bool func_bitor(CmdSet);
|
||||||
|
bool func_bitand(CmdSet);
|
||||||
|
bool func_bitxor(CmdSet);
|
||||||
|
|
||||||
// Useable own internal functions:
|
// Useable own internal functions:
|
||||||
bool SCpause(CmdSet);
|
bool SCpause(CmdSet);
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <math.h>
|
||||||
#include "DefScript.h"
|
#include "DefScript.h"
|
||||||
|
|
||||||
|
|
||||||
@ -135,3 +136,158 @@ bool DefScriptPackage::func_setscriptpermission(CmdSet Set)
|
|||||||
scriptPermissionMap[Set.arg[0]] = atoi(Set.defaultarg.c_str());
|
scriptPermissionMap[Set.arg[0]] = atoi(Set.defaultarg.c_str());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_toint(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myint = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myint;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_add(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
long long myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar += myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_sub(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar -= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_mul(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar *= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_div(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
if(myadd==0)
|
||||||
|
{
|
||||||
|
// TODO: some error handling
|
||||||
|
variables.Set(vname,"0");
|
||||||
|
}
|
||||||
|
myvar /= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_mod(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar %= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_pow(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
long double myd=(long double)myvar,mya=(long double)myadd;
|
||||||
|
myd = (long double)pow(myd,mya);
|
||||||
|
myvar = (def_int64)myd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_bitor(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar |= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_bitand(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar &= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DefScriptPackage::func_bitxor(CmdSet Set)
|
||||||
|
{
|
||||||
|
if(Set.arg[0].empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string vname=_NormalizeVarName(Set.arg[0], Set.myname);
|
||||||
|
def_int64 myvar = strtol(variables.Get(vname).c_str(), NULL, 10);
|
||||||
|
def_int64 myadd = strtol(Set.defaultarg.c_str(), NULL, 10);
|
||||||
|
myvar ^= myadd;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << myvar;
|
||||||
|
variables.Set(vname,ss.str());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|||||||
@ -92,6 +92,7 @@ bool DefScriptPackage::SCfollow(CmdSet Set){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DefScriptPackage::My_LoadUserPermissions(VarSet &vs)
|
void DefScriptPackage::My_LoadUserPermissions(VarSet &vs)
|
||||||
{
|
{
|
||||||
static char *prefix = "USERS::";
|
static char *prefix = "USERS::";
|
||||||
|
|||||||
@ -401,8 +401,6 @@ void WorldSession::_HandleMessageChatOpcode(WorldPacket& recvPacket)
|
|||||||
delete chat;
|
delete chat;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendChatMessage(CHAT_MSG_SAY, lang, chat->GetResult(), "");
|
|
||||||
|
|
||||||
/*if(msg=="lol")
|
/*if(msg=="lol")
|
||||||
SendChatMessage(CHAT_MSG_SAY,lang,"say \"lol\" if you have nothing else to say... lol xD","");
|
SendChatMessage(CHAT_MSG_SAY,lang,"say \"lol\" if you have nothing else to say... lol xD","");
|
||||||
else if(msg.length()>4 && msg.find("you?")!=std::string::npos)
|
else if(msg.length()>4 && msg.find("you?")!=std::string::npos)
|
||||||
|
|||||||
@ -243,9 +243,6 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\Client\DefScript\DefScriptFunctions.cpp">
|
RelativePath=".\Client\DefScript\DefScriptFunctions.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Client\DefScript\DefScriptFunctions.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Client\DefScript\VarSet.cpp">
|
RelativePath=".\Client\DefScript\VarSet.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
@ -5,19 +5,6 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
/*
|
|
||||||
char *triml(char *data,int count){
|
|
||||||
data=data+count;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
void nullify(char *ptr,int len){
|
|
||||||
int i;
|
|
||||||
for(i=0;i<len;i++)ptr[i]=0;
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
void printchex(std::string in, bool spaces=true){
|
void printchex(std::string in, bool spaces=true){
|
||||||
unsigned int len=0,i;
|
unsigned int len=0,i;
|
||||||
len=in.length();
|
len=in.length();
|
||||||
@ -39,142 +26,6 @@ void printchex(char *in, uint32 len, bool spaces=true){
|
|||||||
printf("]\n");
|
printf("]\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
char *strl(char *str,int count){
|
|
||||||
int i;
|
|
||||||
|
|
||||||
char *newstr;newstr=NewTempString(count);
|
|
||||||
count--;
|
|
||||||
for(i=0;i<=count;i++)newstr[i]=str[i];
|
|
||||||
return newstr;
|
|
||||||
} // do not forget to delete[]newstr; !!
|
|
||||||
|
|
||||||
char *strr(char *str,int count){
|
|
||||||
return triml(str,strlen(str)-count);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *trimr(char *str,int count){
|
|
||||||
return strl(str,strlen(str)-count);
|
|
||||||
} // do not forget to delete[]newstr; , it uses strl(...) function!
|
|
||||||
|
|
||||||
char *genrndstr(int len){
|
|
||||||
char *str;str=NewNullString(len);
|
|
||||||
char rnd;
|
|
||||||
int i;
|
|
||||||
for(i=0;i<=len-1;i++){
|
|
||||||
rnd=(char)rand()%255;
|
|
||||||
str[i]=rnd;
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
} // do not forget to delete[]str; !!
|
|
||||||
|
|
||||||
|
|
||||||
char *StrToHex(char *in,int len=-1){ // converts a string like "*,6%<1" to hex like "AB451Df51BE58A",
|
|
||||||
int i,i2=0; // where the resulting string is double the length!
|
|
||||||
char *newin,*buf;
|
|
||||||
if(len<0)len=strlen(in);
|
|
||||||
newin=NewTempString(len*2);
|
|
||||||
buf=NewTempString(2);
|
|
||||||
for(i=0;i<=len-1;i++){
|
|
||||||
sprintf(buf,"%x",(unsigned char)in[i]);
|
|
||||||
if(buf[0]==0&&buf[1]==0){
|
|
||||||
buf[0]='0';buf[1]='0';
|
|
||||||
}else if(buf[1]==0&&buf[0]!=0){
|
|
||||||
newin[i2++]='0';newin[i2++]=buf[0];
|
|
||||||
}else{
|
|
||||||
newin[i2++]=buf[0];newin[i2++]=buf[1];
|
|
||||||
}
|
|
||||||
nullify(buf,2);
|
|
||||||
}
|
|
||||||
//printf("## Converted '%s' to '%s'\n",in,newin);
|
|
||||||
return newin;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *HexToStr(char *in,int len=-1){
|
|
||||||
int i=0,i2=0,i3=0,newlen=0;char code;
|
|
||||||
char *newin,*buf;
|
|
||||||
buf=NewTempString(4);buf[0]='0';buf[1]='x'; // 0x??
|
|
||||||
bool odd=false;
|
|
||||||
if(len<0)len=strlen(in);
|
|
||||||
if(len%2!=0){odd=true;printf("HexToStr:: is ODD!\n");}
|
|
||||||
newlen=(odd)?((len/2)+1):(len/2);
|
|
||||||
newin=NewTempString(newlen);
|
|
||||||
|
|
||||||
if(odd){
|
|
||||||
buf[2]='0';buf[3]=in[i2++];
|
|
||||||
newin[0]=(char)strtol(buf,NULL,16);
|
|
||||||
for(i=1;i<newlen;i++){
|
|
||||||
buf[0]=in[i2++];buf[1]=in[i2++];
|
|
||||||
code=(char)strtol(buf,NULL,16);
|
|
||||||
newin[i]=code;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for(i=0;i<newlen;i++){
|
|
||||||
buf[0]=in[i2++];buf[1]=in[i2++];
|
|
||||||
code=(char)strtol(buf,NULL,16);
|
|
||||||
newin[i]=code;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newin;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
char *NewNullString(int len){
|
|
||||||
char *out=(char*)malloc((len+1)*sizeof(char));
|
|
||||||
if(out==NULL){
|
|
||||||
printf("ERROR: NewNullString:: malloc(%d) failed!",(len+1)*sizeof(char));
|
|
||||||
quitproc_error();
|
|
||||||
//throw("ERROR: NewNullString:: malloc() failed!");
|
|
||||||
}
|
|
||||||
//nullify(out,len);
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
char *Reverse(char *in,int len=-1){
|
|
||||||
char *out;
|
|
||||||
int i=0;
|
|
||||||
if(len<1)len=strlen(in);
|
|
||||||
out=NewTempString(len);
|
|
||||||
for(i=0;i<len;i++)out[i]=in[(len-1)-i];
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
void rawcpy(char *dest,char *src,int len=-1){
|
|
||||||
int i=0;
|
|
||||||
if(len<1)
|
|
||||||
strcpy(dest,src);
|
|
||||||
else {
|
|
||||||
for(i=0;i<len;i++)dest[i]=src[i]; // < or <= ?!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void rawcat(char *dest,char *more,int destlen=-1,int morelen=-1){
|
|
||||||
int i=0;
|
|
||||||
if(morelen<1)morelen=strlen(more);
|
|
||||||
if(destlen<1)destlen=strlen(dest);
|
|
||||||
for(i=0;i<morelen;i++)dest[i+destlen]=more[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrimQuotes(char *in){
|
|
||||||
unsigned int len=0,pos=0;
|
|
||||||
len=strlen(in)-1; // -1 because we want to access an array, which starts with 0, not 1
|
|
||||||
if(len<0)return;
|
|
||||||
if(len==0&&in[0]=='\"'){in[0]=0;return;}
|
|
||||||
if(in[0]=='\"'&&in[len]=='\"'){
|
|
||||||
for(pos=0;pos<=len;pos++){
|
|
||||||
in[pos]=in[pos+1];
|
|
||||||
if(in[pos]=='\"'){
|
|
||||||
in[pos]=0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
std::string stringToLower(std::string s)
|
std::string stringToLower(std::string s)
|
||||||
{
|
{
|
||||||
std::transform(s.begin(), s.end(), s.begin(), std::tolower);
|
std::transform(s.begin(), s.end(), s.begin(), std::tolower);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user