fixed compile error; added math functions to DefScript; removed old, commented out code

This commit is contained in:
False.Genesis 2007-01-17 14:46:44 +00:00
parent 863e8e7944
commit 3b5f986d09
9 changed files with 188 additions and 157 deletions

Binary file not shown.

View File

@ -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}]...

View File

@ -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},

View File

@ -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);

View File

@ -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;
}

View File

@ -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::";

View File

@ -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)

View File

@ -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>

View 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);