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
|
||||
|
||||
|
||||
// PSEUWOW DEF_SCRIPT STARTUP FILE
|
||||
|
||||
OUT * DefScript StartUp [${@version_short}]...
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
DefScriptPackage::DefScriptPackage()
|
||||
{
|
||||
functionTable=_GetFunctionTable();
|
||||
// printf("---> DefScriptPackage inited!\n");
|
||||
}
|
||||
|
||||
DefScriptPackage::~DefScriptPackage()
|
||||
@ -47,6 +46,18 @@ DefScriptFunctionTable *DefScriptPackage::_GetFunctionTable(void) const
|
||||
{"reloaddef",&DefScriptPackage::func_reloaddef},
|
||||
{"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:
|
||||
{"pause",&DefScriptPackage::SCpause},
|
||||
|
||||
@ -9,6 +9,14 @@
|
||||
# define _DEFSC_DEBUG(code) /* code */
|
||||
#endif
|
||||
|
||||
#if COMPILER == COMPILER_MICROSOFT
|
||||
typedef __int64 def_int64;
|
||||
#else
|
||||
typedef __int64_t def_int64;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#include <map>
|
||||
#include <deque>
|
||||
#include "VarSet.h"
|
||||
@ -119,6 +127,16 @@ private:
|
||||
bool func_eof(CmdSet);
|
||||
bool func_shdn(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:
|
||||
bool SCpause(CmdSet);
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <math.h>
|
||||
#include "DefScript.h"
|
||||
|
||||
|
||||
@ -135,3 +136,158 @@ bool DefScriptPackage::func_setscriptpermission(CmdSet Set)
|
||||
scriptPermissionMap[Set.arg[0]] = atoi(Set.defaultarg.c_str());
|
||||
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)
|
||||
{
|
||||
static char *prefix = "USERS::";
|
||||
|
||||
@ -401,8 +401,6 @@ void WorldSession::_HandleMessageChatOpcode(WorldPacket& recvPacket)
|
||||
delete chat;
|
||||
}
|
||||
|
||||
SendChatMessage(CHAT_MSG_SAY, lang, chat->GetResult(), "");
|
||||
|
||||
/*if(msg=="lol")
|
||||
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)
|
||||
|
||||
@ -243,9 +243,6 @@
|
||||
<File
|
||||
RelativePath=".\Client\DefScript\DefScriptFunctions.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Client\DefScript\DefScriptFunctions.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Client\DefScript\VarSet.cpp">
|
||||
</File>
|
||||
|
||||
@ -5,19 +5,6 @@
|
||||
#include <time.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){
|
||||
unsigned int len=0,i;
|
||||
len=in.length();
|
||||
@ -39,142 +26,6 @@ void printchex(char *in, uint32 len, bool spaces=true){
|
||||
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::transform(s.begin(), s.end(), s.begin(), std::tolower);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user