summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-03-28 17:29:02 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-03-28 17:29:02 +0000
commite1792fb0a2b7c51c30ec3f54cedcaa012fb009f7 (patch)
tree270a68526ed8e2afc03684415ed19894c1faa30f
parent21b1ce2948355586285f4fa3f5f1fc979cb03fb5 (diff)
downloadhercules-e1792fb0a2b7c51c30ec3f54cedcaa012fb009f7.tar.gz
hercules-e1792fb0a2b7c51c30ec3f54cedcaa012fb009f7.tar.bz2
hercules-e1792fb0a2b7c51c30ec3f54cedcaa012fb009f7.tar.xz
hercules-e1792fb0a2b7c51c30ec3f54cedcaa012fb009f7.zip
- Added defines script_getnum and script_getstr to further simplify variable reading code.
- Applied mass replacing of text to enforce usage of script_hasdata, script_getnum, script_getstr and data_isstring defines where possible. - Cleaned up the 'input' command code. - Minor other cleanups in script.c - Removed OPTION_SIGHTTRASHER as there's no indication this value exists. - Corrected OPTION_XMAS since 2007 clients have split it up from OPTION_FLYING (on previous clients both were the same option value) - Removed GRF_PATH_FILENAME references (it wasn't used anymore) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10085 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--Changelog-Trunk.txt4
-rw-r--r--src/map/map.c4
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/script.c1321
-rw-r--r--src/map/status.c6
-rw-r--r--src/map/status.h6
6 files changed, 663 insertions, 679 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 9aac6d038..d236dd6e9 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -3,7 +3,9 @@ Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
-2007/03/28
+2007/03/29
+ * Corrected OPTION_XMAS since 2007 clients have split it up from
+ OPTION_FLYING (on previous clients both were the same option value).
* Corrected statp array not being long enough to actually hold the status
points of ALL levels up to and including MAX_LEVEL. Fixes reaching final
level and resetting giving you an unpredictable amount of status points.
diff --git a/src/map/map.c b/src/map/map.c
index 1018a1cec..fba8faa88 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -110,7 +110,6 @@ char *ATCOMMAND_CONF_FILENAME;
char *CHARCOMMAND_CONF_FILENAME;
char *SCRIPT_CONF_NAME;
char *MSG_CONF_NAME;
-char *GRF_PATH_FILENAME;
// 極力 staticでロ?カルに?める
static struct dbt * id_db=NULL;
@@ -3222,7 +3221,6 @@ int do_init(int argc, char *argv[]) {
CHARCOMMAND_CONF_FILENAME = "conf/charcommand_athena.conf";
SCRIPT_CONF_NAME = "conf/script_athena.conf";
MSG_CONF_NAME = "conf/msg_athena.conf";
- GRF_PATH_FILENAME = "conf/grf-files.txt";
srand(gettick());
@@ -3243,8 +3241,6 @@ int do_init(int argc, char *argv[]) {
SCRIPT_CONF_NAME = argv[i+1];
else if (strcmp(argv[i],"--msg_config") == 0 || strcmp(argv[i],"--msg-config") == 0)
MSG_CONF_NAME = argv[i+1];
- else if (strcmp(argv[i],"--grf_path_file") == 0 || strcmp(argv[i],"--grf-path-file") == 0)
- GRF_PATH_FILENAME = argv[i+1];
#ifndef TXT_ONLY
else if (strcmp(argv[i],"--inter_config") == 0 || strcmp(argv[i],"--inter-config") == 0)
INTER_CONF_NAME = argv[i+1];
diff --git a/src/map/map.h b/src/map/map.h
index fa78fb05d..5765361fc 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -1439,7 +1439,6 @@ extern char *ATCOMMAND_CONF_FILENAME;
extern char *CHARCOMMAND_CONF_FILENAME;
extern char *SCRIPT_CONF_NAME;
extern char *MSG_CONF_NAME;
-extern char *GRF_PATH_FILENAME;
extern char *map_server_dns;
diff --git a/src/map/script.c b/src/map/script.c
index 0403cf212..1fc0604ae 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -64,7 +64,8 @@
#define script_lastdata(st) ( (st)->end - (st)->start - 1 )
/// Pushes an int into the stack
#define script_pushint(st,val) push_val((st)->stack, C_INT, (val))
-
+#define script_getnum(st,val) conv_num(st, script_getdata(st,val))
+#define script_getstr(st,val) conv_str(st, script_getdata(st,val))
//
// struct script_data* data;
//
@@ -78,7 +79,7 @@
#define FETCH(n, t) \
if( script_hasdata(st,n) ) \
- (t)=conv_num(st,script_getdata(st,n));
+ (t)=script_getnum(st,n);
#define SCRIPT_BLOCK_SIZE 512
enum { LABEL_NEXTLINE=1,LABEL_START };
@@ -3879,7 +3880,7 @@ struct script_function buildin_func[] = {
BUILDIN_DEF(getarg,"i"),
BUILDIN_DEF(jobchange,"i*"),
BUILDIN_DEF(jobname,"i"),
- BUILDIN_DEF(input,"*"),
+ BUILDIN_DEF(input,"v"),
BUILDIN_DEF(warp,"sii"),
BUILDIN_DEF(areawarp,"siiiisii"),
BUILDIN_DEF(warpchar,"siii"), // [LuzZza]
@@ -4206,7 +4207,7 @@ struct script_function buildin_func[] = {
BUILDIN_FUNC(mes)
{
struct map_session_data *sd = script_rid2sd(st);
- const char *mes = conv_str(st, script_getdata(st,2));
+ const char *mes = script_getstr(st, 2);
if (sd)
clif_scriptmes(sd, st->oid, mes);
return 0;
@@ -4226,7 +4227,7 @@ BUILDIN_FUNC(goto)
return 1;
}
- pos=conv_num(st,script_getdata(st,2));
+ pos=script_getnum(st,2);
st->pos=pos;
st->state=GOTO;
return 0;
@@ -4239,7 +4240,7 @@ BUILDIN_FUNC(goto)
BUILDIN_FUNC(callfunc)
{
struct script_code *scr, *oldscr;
- const char *str=conv_str(st,script_getdata(st,2));
+ const char *str=script_getstr(st,2);
if( (scr=strdb_get(userfunc_db,(unsigned char*)str)) ){
int i,j;
@@ -4286,7 +4287,7 @@ BUILDIN_FUNC(callfunc)
*/
BUILDIN_FUNC(callsub)
{
- int pos=conv_num(st,script_getdata(st,2));
+ int pos=script_getnum(st,2);
int i,j;
if(st->stack->stack_data[st->start+2].type != C_POS && st->stack->stack_data[st->start+2].type != C_USERFUNC_POS) {
ShowError("script: callsub: not label !\n");
@@ -4330,7 +4331,7 @@ BUILDIN_FUNC(callsub)
*/
BUILDIN_FUNC(getarg)
{
- int num=conv_num(st,script_getdata(st,2));
+ int num=script_getnum(st,2);
int max,stsp;
if( st->stack->defsp<5 || st->stack->stack_data[st->stack->defsp-1].type!=C_RETINFO ){
ShowWarning("script:getarg without callfunc or callsub!\n");
@@ -4354,7 +4355,7 @@ BUILDIN_FUNC(getarg)
*/
BUILDIN_FUNC(return)
{
- if(st->end>st->start+2){ // 戻り値有り
+ if(script_hasdata(st,2)){ // 戻り値有り
struct script_data *sd;
push_copy(st->stack,st->start+2);
sd = &st->stack->stack_data[st->stack->sp-1];
@@ -4472,7 +4473,7 @@ BUILDIN_FUNC(menu)
return 1;
}
pc_setreg(sd,add_str("@menu"),sd->npc_menu);
- st->pos=conv_num(st,script_getdata(st,sd->npc_menu*2+1));
+ st->pos=script_getnum(st,sd->npc_menu*2+1);
st->state=GOTO;
}
}
@@ -4492,8 +4493,8 @@ BUILDIN_FUNC(rand)
if( script_hasdata(st,3) )
{// min,max
- min = conv_num(st, script_getdata(st,2));
- max = conv_num(st, script_getdata(st,3));
+ min = script_getnum(st,2);
+ max = script_getnum(st,3);
if( max < min )
swap(min, max);
range = max - min + 1;
@@ -4501,7 +4502,7 @@ BUILDIN_FUNC(rand)
else
{// range
min = 0;
- range = conv_num(st, script_getdata(st,2));
+ range = script_getnum(st,2);
}
if( range <= 1 )
script_pushint(st, min);
@@ -4523,9 +4524,9 @@ BUILDIN_FUNC(warp)
nullpo_retr(0, sd);
- str=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
+ str=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
if(strcmp(str,"Random")==0)
pc_randomwarp(sd,3);
else if(strcmp(str,"SavePoint")==0){
@@ -4563,14 +4564,14 @@ BUILDIN_FUNC(areawarp)
const char *mapname;
int x0,y0,x1,y1;
- mapname=conv_str(st,script_getdata(st,2));
- x0=conv_num(st,script_getdata(st,3));
- y0=conv_num(st,script_getdata(st,4));
- x1=conv_num(st,script_getdata(st,5));
- y1=conv_num(st,script_getdata(st,6));
- str=conv_str(st,script_getdata(st,7));
- x=conv_num(st,script_getdata(st,8));
- y=conv_num(st,script_getdata(st,9));
+ mapname=script_getstr(st,2);
+ x0=script_getnum(st,3);
+ y0=script_getnum(st,4);
+ x1=script_getnum(st,5);
+ y1=script_getnum(st,6);
+ str=script_getstr(st,7);
+ x=script_getnum(st,8);
+ y=script_getnum(st,9);
if( (m=map_mapname2mapid(mapname))< 0)
return 0;
@@ -4599,10 +4600,10 @@ BUILDIN_FUNC(warpchar)
struct map_session_data *sd, **pl_allsd;
int users;
- str=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
- a=conv_num(st,script_getdata(st,5));
+ str=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
+ a=script_getnum(st,5);
pl_allsd = map_getallusers(&users);
@@ -4639,10 +4640,10 @@ BUILDIN_FUNC(warpparty)
unsigned short mapindex;
struct map_session_data *pl_sd;
struct party_data *p=NULL;
- str=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
- p_id=conv_num(st,script_getdata(st,5));
+ str=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
+ p_id=script_getnum(st,5);
if(p_id < 1)
return 0;
p = party_search(p_id);
@@ -4723,10 +4724,10 @@ BUILDIN_FUNC(warpguild)
struct map_session_data *pl_sd, **pl_allsd;
int users;
struct map_session_data *sd;
- str=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
- g=conv_num(st,script_getdata(st,5));
+ str=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
+ g=script_getnum(st,5);
sd=script_rid2sd(st);
if(map[sd->bl.m].flag.noreturn || map[sd->bl.m].flag.nowarpto)
@@ -4810,8 +4811,8 @@ BUILDIN_FUNC(heal)
sd = script_rid2sd(st);
if (!sd) return 0;
- hp=conv_num(st,script_getdata(st,2));
- sp=conv_num(st,script_getdata(st,3));
+ hp=script_getnum(st,2);
+ sp=script_getnum(st,3);
status_heal(&sd->bl, hp, sp, 1);
return 0;
}
@@ -4824,8 +4825,8 @@ BUILDIN_FUNC(itemheal)
struct map_session_data *sd;
int hp,sp;
- hp=conv_num(st,script_getdata(st,2));
- sp=conv_num(st,script_getdata(st,3));
+ hp=script_getnum(st,2);
+ sp=script_getnum(st,3);
if(potion_flag==1) {
potion_hp = hp;
@@ -4846,8 +4847,8 @@ BUILDIN_FUNC(percentheal)
{
int hp,sp;
- hp=conv_num(st,script_getdata(st,2));
- sp=conv_num(st,script_getdata(st,3));
+ hp=script_getnum(st,2);
+ sp=script_getnum(st,3);
if(potion_flag==1) {
potion_per_hp = hp;
@@ -4867,9 +4868,9 @@ BUILDIN_FUNC(jobchange)
{
int job, upper=-1;
- job=conv_num(st,script_getdata(st,2));
- if( st->end>st->start+3 )
- upper=conv_num(st,script_getdata(st,3));
+ job=script_getnum(st,2);
+ if( script_hasdata(st,3) )
+ upper=script_getnum(st,3);
if ((job >= 0 && job < MAX_PC_CLASS))
{
@@ -4887,7 +4888,7 @@ BUILDIN_FUNC(jobchange)
*/
BUILDIN_FUNC(jobname)
{
- int class_=conv_num(st,script_getdata(st,2));
+ int class_=script_getnum(st,2);
push_str(st->stack,C_CONSTSTR,job_name(class_));
return 0;
}
@@ -4899,46 +4900,37 @@ BUILDIN_FUNC(jobname)
BUILDIN_FUNC(input)
{
struct map_session_data *sd = script_rid2sd(st);
- int num = (st->end>st->start+2)? st->stack->stack_data[st->start+2].u.num: 0;
- char *name = (st->end>st->start+2)? str_buf+str_data[num&0x00ffffff].str: "";
- char postfix=name[strlen(name)-1];
+ struct script_data *data = script_getdata(st,2);
+ int num = data->u.num;
+ char *name=str_buf+str_data[num&0x00ffffff].str;
+ char postfix = name[strlen(name)-1];
- nullpo_retr(0, sd);
+ if (!sd) return 1;
+
+ if( data->type!=C_NAME ){
+ ShowError("script: buildin_input: given argument is not a variable!\n");
+ return 1;
+ }
if(sd->state.menu_or_input){
sd->state.menu_or_input=0;
- if( postfix=='$' ){
- // 文字列
- if(st->end>st->start+2){ // 引数1個
- set_reg(st,sd,num,name,(void*)sd->npc_str,st->stack->stack_data[st->start+2].ref);
- }else{
- ShowError("buildin_input: string discarded !!\n");
- return 1;
- }
+ if( postfix=='$' )
+ {
+ set_reg(st,sd,num,name,(void*)sd->npc_str,
+ st->stack->stack_data[st->start+2].ref);
return 0;
}
- // commented by Lupus (check Value Number Input fix in clif.c)
- // readded by Yor: set ammount to 0 instead of cancel trade.
- // ** Fix by fritz :X keeps people from abusing old input bugs
- if (sd->npc_amount < 0) { //** If input amount is less then 0
-// clif_tradecancelled(sd); // added "Deal has been cancelled" message by Valaris
-// buildin_close(st); // ** close
- sd->npc_amount = 0;
- } else if ((unsigned int)sd->npc_amount > battle_config.vending_max_value) // new fix by Yor
- sd->npc_amount = battle_config.vending_max_value;
+ // Yor, Lupus & Fritz have messed with this.
+ // Basicly it prevents negative input since most scripts do not account for them.
+ sd->npc_amount = cap_value(sd->npc_amount, 0, battle_config.vending_max_value);
- // 数値
- if(st->end>st->start+2){ // 引数1個
- set_reg(st,sd,num,name,(void*)sd->npc_amount,st->stack->stack_data[st->start+2].ref);
- } else {
- // ragemu互換のため
- //pc_setreg(sd,add_str("l14"),sd->npc_amount);
- }
+ set_reg(st,sd,num,name,(void*)sd->npc_amount,
+ st->stack->stack_data[st->start+2].ref);
return 0;
}
//state.menu_or_input = 0
st->state=RERUNLINE;
- if(postfix=='$')
+ if( postfix=='$' )
clif_scriptinputstr(sd,st->oid);
else
clif_scriptinput(sd,st->oid);
@@ -4968,11 +4960,11 @@ BUILDIN_FUNC(set)
if( postfix=='$' ){
// 文字列
- const char *str = conv_str(st,script_getdata(st,3));
+ const char *str = script_getstr(st,3);
set_reg(st,sd,num,name,(void*)str,st->stack->stack_data[st->start+2].ref);
}else{
// 数値
- int val = conv_num(st,script_getdata(st,3));
+ int val = script_getnum(st,3);
set_reg(st,sd,num,name,(void*)val,st->stack->stack_data[st->start+2].ref);
}
@@ -5020,7 +5012,7 @@ BUILDIN_FUNC(cleararray)
char *name=str_buf+str_data[num&0x00ffffff].str;
char prefix=*name;
char postfix=name[strlen(name)-1];
- int sz=conv_num(st,script_getdata(st,4));
+ int sz=script_getnum(st,4);
int i;
void *v;
@@ -5032,9 +5024,9 @@ BUILDIN_FUNC(cleararray)
sd=script_rid2sd(st);
if( postfix=='$' )
- v=(void*)conv_str(st,script_getdata(st,3));
+ v=(void*)script_getstr(st,3);
else
- v=(void*)conv_num(st,script_getdata(st,3));
+ v=(void*)script_getnum(st,3);
for(i=0;i<sz;i++)
set_reg(st,sd,num+(i<<24),name,v,st->stack->stack_data[st->start+2].ref);
@@ -5055,7 +5047,7 @@ BUILDIN_FUNC(copyarray)
char *name2=str_buf+str_data[num2&0x00ffffff].str;
char prefix2=*name2;
char postfix2=name2[strlen(name2)-1];
- int sz=conv_num(st,script_getdata(st,4));
+ int sz=script_getnum(st,4);
int i;
if( prefix!='$' && prefix!='@' && prefix!='.' ){
@@ -5144,8 +5136,8 @@ BUILDIN_FUNC(deletearray)
int i,sz=getarraysize(st,num,postfix,st->stack->stack_data[st->start+2].ref)-(num>>24)-count+1;
- if( (st->end > st->start+3) )
- count=conv_num(st,script_getdata(st,3));
+ if( script_hasdata(st,3) )
+ count=script_getnum(st,3);
if( prefix!='$' && prefix!='@' && prefix!='.' ){
ShowWarning("buildin_deletearray: illegal scope !\n");
@@ -5179,7 +5171,7 @@ BUILDIN_FUNC(deletearray)
BUILDIN_FUNC(getelementofarray)
{
if( st->stack->stack_data[st->start+2].type==C_NAME ){
- int i=conv_num(st,script_getdata(st,3));
+ int i=script_getnum(st,3);
if(i>127 || i<0){
ShowWarning("script: getelementofarray (operator[]): param2 illegal number %d\n",i);
script_pushint(st,0);
@@ -5203,8 +5195,8 @@ BUILDIN_FUNC(setlook)
{
int type,val;
- type=conv_num(st,script_getdata(st,2));
- val=conv_num(st,script_getdata(st,3));
+ type=script_getnum(st,2);
+ val=script_getnum(st,3);
pc_changelook(script_rid2sd(st),type,val);
@@ -5219,8 +5211,8 @@ BUILDIN_FUNC(cutin)
{
int type;
- conv_str(st,script_getdata(st,2));
- type=conv_num(st,script_getdata(st,3));
+ script_getstr(st,2);
+ type=script_getnum(st,3);
clif_cutin(script_rid2sd(st),st->stack->stack_data[st->start+2].u.str,type);
@@ -5235,11 +5227,11 @@ BUILDIN_FUNC(viewpoint)
{
int type,x,y,id,color;
- type=conv_num(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
- id=conv_num(st,script_getdata(st,5));
- color=conv_num(st,script_getdata(st,6));
+ type=script_getnum(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
+ id=script_getnum(st,5);
+ color=script_getnum(st,6);
clif_viewpoint(script_rid2sd(st),st->oid,type,x,y,id,color);
@@ -5266,7 +5258,7 @@ BUILDIN_FUNC(countitem)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data;
if( (item_data = itemdb_searchname(name)) != NULL)
@@ -5311,7 +5303,7 @@ BUILDIN_FUNC(countitem2)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data;
if( (item_data = itemdb_searchname(name)) != NULL)
@@ -5319,13 +5311,13 @@ BUILDIN_FUNC(countitem2)
}else
nameid=conv_num(st,data);
- iden=conv_num(st,script_getdata(st,3));
- ref=conv_num(st,script_getdata(st,4));
- attr=conv_num(st,script_getdata(st,5));
- c1=conv_num(st,script_getdata(st,6));
- c2=conv_num(st,script_getdata(st,7));
- c3=conv_num(st,script_getdata(st,8));
- c4=conv_num(st,script_getdata(st,9));
+ iden=script_getnum(st,3);
+ ref=script_getnum(st,4);
+ attr=script_getnum(st,5);
+ c1=script_getnum(st,6);
+ c2=script_getnum(st,7);
+ c3=script_getnum(st,8);
+ c4=script_getnum(st,9);
if (nameid>=500) //if no such ID then skip this iteration
for(i=0;i<MAX_INVENTORY;i++){
@@ -5365,7 +5357,7 @@ BUILDIN_FUNC(checkweight)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
if( item_data )
@@ -5373,7 +5365,7 @@ BUILDIN_FUNC(checkweight)
}else
nameid=conv_num(st,data);
- amount=conv_num(st,script_getdata(st,3));
+ amount=script_getnum(st,3);
if ( amount<=0 || nameid<500 ) { //if get wrong item ID or amount<=0, don't count weight of non existing items
script_pushint(st,0);
ShowError("buildin_checkweight: Wrong item ID or amount.\n");
@@ -5442,7 +5434,7 @@ BUILDIN_FUNC(getitem)
}
// <amount>
- if( (amount=conv_num(st, script_getdata(st,3))) <= 0)
+ if( (amount=script_getnum(st,3)) <= 0)
return 0; //return if amount <=0, skip the useles iteration
memset(&it,0,sizeof(it));
@@ -5453,7 +5445,7 @@ BUILDIN_FUNC(getitem)
it.identify=itemdb_isidentified(nameid);
if( script_hasdata(st,4) )
{// <character ID>
- sd=map_id2sd(conv_num(st,script_getdata(st,4)));
+ sd=map_id2sd(script_getnum(st,4));
} else
{// attached player
sd=script_rid2sd(st);
@@ -5492,25 +5484,26 @@ BUILDIN_FUNC(getitem2)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
- nameid=UNKNOWN_ITEM_ID;
if( item_data )
nameid=item_data->nameid;
+ else
+ nameid=UNKNOWN_ITEM_ID;
}else
nameid=conv_num(st,data);
- amount=conv_num(st,script_getdata(st,3));
- iden=conv_num(st,script_getdata(st,4));
- ref=conv_num(st,script_getdata(st,5));
- attr=conv_num(st,script_getdata(st,6));
- c1=conv_num(st,script_getdata(st,7));
- c2=conv_num(st,script_getdata(st,8));
- c3=conv_num(st,script_getdata(st,9));
- c4=conv_num(st,script_getdata(st,10));
- if( st->end>st->start+11 ) //アイテムを指定したIDに渡す
- sd=map_id2sd(conv_num(st,script_getdata(st,11)));
+ amount=script_getnum(st,3);
+ iden=script_getnum(st,4);
+ ref=script_getnum(st,5);
+ attr=script_getnum(st,6);
+ c1=script_getnum(st,7);
+ c2=script_getnum(st,8);
+ c3=script_getnum(st,9);
+ c4=script_getnum(st,10);
+ if( script_hasdata(st,11) ) //アイテムを指定したIDに渡す
+ sd=map_id2sd(script_getnum(st,11));
if(sd == NULL) //アイテムを渡す相手がいなかったらお帰り
return 0;
@@ -5583,7 +5576,7 @@ BUILDIN_FUNC(getnameditem)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
if( item_data == NULL)
@@ -5603,7 +5596,7 @@ BUILDIN_FUNC(getnameditem)
data=script_getdata(st,3);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ) //Char Name
+ if( data_isstring(data) ) //Char Name
tsd=map_nick2sd(conv_str(st,data));
else //Char Id was given
tsd=map_charid2sd(conv_num(st,data));
@@ -5643,7 +5636,7 @@ BUILDIN_FUNC(grouprandomitem)
{
int group;
- group = conv_num(st,script_getdata(st,2));
+ group = script_getnum(st,2);
script_pushint(st,itemdb_searchrandomid(group));
return 0;
}
@@ -5662,19 +5655,20 @@ BUILDIN_FUNC(makeitem)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
- nameid=UNKNOWN_ITEM_ID;
if( item_data )
nameid=item_data->nameid;
+ else
+ nameid=UNKNOWN_ITEM_ID;
}else
nameid=conv_num(st,data);
- amount=conv_num(st,script_getdata(st,3));
- mapname =conv_str(st,script_getdata(st,4));
- x =conv_num(st,script_getdata(st,5));
- y =conv_num(st,script_getdata(st,6));
+ amount=script_getnum(st,3);
+ mapname =script_getstr(st,4);
+ x =script_getnum(st,5);
+ y =script_getnum(st,6);
if(strcmp(mapname,"this")==0)
{
@@ -5717,7 +5711,7 @@ BUILDIN_FUNC(delitem)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
//nameid=UNKNOWN_ITEM_ID;
@@ -5726,7 +5720,7 @@ BUILDIN_FUNC(delitem)
}else
nameid=conv_num(st,data);
- amount=conv_num(st,script_getdata(st,3));
+ amount=script_getnum(st,3);
if (nameid<500 || amount<=0 ) {//by Lupus. Don't run FOR if u got wrong item ID or amount<=0
//eprintf("wrong item ID or amount<=0 : delitem %i,\n",nameid,amount);
@@ -5822,7 +5816,7 @@ BUILDIN_FUNC(delitem2)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
//nameid=UNKNOWN_ITEM_ID;
@@ -5831,14 +5825,14 @@ BUILDIN_FUNC(delitem2)
}else
nameid=conv_num(st,data);
- amount=conv_num(st,script_getdata(st,3));
- iden=conv_num(st,script_getdata(st,4));
- ref=conv_num(st,script_getdata(st,5));
- attr=conv_num(st,script_getdata(st,6));
- c1=conv_num(st,script_getdata(st,7));
- c2=conv_num(st,script_getdata(st,8));
- c3=conv_num(st,script_getdata(st,9));
- c4=conv_num(st,script_getdata(st,10));
+ amount=script_getnum(st,3);
+ iden=script_getnum(st,4);
+ ref=script_getnum(st,5);
+ attr=script_getnum(st,6);
+ c1=script_getnum(st,7);
+ c2=script_getnum(st,8);
+ c3=script_getnum(st,9);
+ c4=script_getnum(st,10);
if (!itemdb_exists(nameid) || amount<=0 ) {//by Lupus. Don't run FOR if u got wrong item ID or amount<=0
//eprintf("wrong item ID or amount<=0 : delitem %i,\n",nameid,amount);
@@ -5913,9 +5907,9 @@ BUILDIN_FUNC(readparam)
int type;
struct map_session_data *sd;
- type=conv_num(st,script_getdata(st,2));
- if( st->end>st->start+3 )
- sd=map_nick2sd(conv_str(st,script_getdata(st,3)));
+ type=script_getnum(st,2);
+ if( script_hasdata(st,3) )
+ sd=map_nick2sd(script_getstr(st,3));
else
sd=script_rid2sd(st);
@@ -5937,9 +5931,9 @@ BUILDIN_FUNC(getcharid)
int num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
- if( st->end>st->start+3 )
- sd=map_nick2sd(conv_str(st,script_getdata(st,3)));
+ num=script_getnum(st,2);
+ if( script_hasdata(st,3) )
+ sd=map_nick2sd(script_getstr(st,3));
else
sd=script_rid2sd(st);
if(sd==NULL || num<0 || num>3){
@@ -5981,7 +5975,7 @@ BUILDIN_FUNC(getpartyname)
char *name;
int party_id;
- party_id=conv_num(st,script_getdata(st,2));
+ party_id=script_getnum(st,2);
name=buildin_getpartyname_sub(party_id);
if(name != NULL)
push_str(st->stack,C_STR,name);
@@ -5999,10 +5993,10 @@ BUILDIN_FUNC(getpartymember)
struct party_data *p;
int i,j=0,type=0;
- p=party_search(conv_num(st,script_getdata(st,2)));
+ p=party_search(script_getnum(st,2));
- if( st->end>st->start+3 )
- type=conv_num(st,script_getdata(st,3));
+ if( script_hasdata(st,3) )
+ type=script_getnum(st,3);
if(p!=NULL){
for(i=0;i<MAX_PARTY;i++){
@@ -6036,9 +6030,9 @@ BUILDIN_FUNC(getpartyleader)
int party_id, type = 0, i=0;
struct party_data *p;
- party_id=conv_num(st,script_getdata(st,2));
- if( st->end>st->start+3 )
- type=conv_num(st,script_getdata(st,3));
+ party_id=script_getnum(st,2);
+ if( script_hasdata(st,3) )
+ type=script_getnum(st,3);
p=party_search(party_id);
@@ -6097,7 +6091,7 @@ char *buildin_getguildname_sub(int guild_id)
BUILDIN_FUNC(getguildname)
{
char *name;
- int guild_id=conv_num(st,script_getdata(st,2));
+ int guild_id=script_getnum(st,2);
name=buildin_getguildname_sub(guild_id);
if(name != NULL)
push_str(st->stack,C_STR,name);
@@ -6128,7 +6122,7 @@ char *buildin_getguildmaster_sub(int guild_id)
BUILDIN_FUNC(getguildmaster)
{
char *master;
- int guild_id=conv_num(st,script_getdata(st,2));
+ int guild_id=script_getnum(st,2);
master=buildin_getguildmaster_sub(guild_id);
if(master!=0)
push_str(st->stack,C_STR,master);
@@ -6141,7 +6135,7 @@ BUILDIN_FUNC(getguildmasterid)
{
char *master;
struct map_session_data *sd=NULL;
- int guild_id=conv_num(st,script_getdata(st,2));
+ int guild_id=script_getnum(st,2);
master=buildin_getguildmaster_sub(guild_id);
if(master!=0){
if((sd=map_nick2sd(master)) == NULL){
@@ -6170,7 +6164,7 @@ BUILDIN_FUNC(strcharinfo)
push_str(st->stack,C_CONSTSTR,"");
return 0;
}
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
switch(num){
case 0:
push_str(st->stack,C_STR,aStrdup(sd->status.name));
@@ -6216,7 +6210,7 @@ BUILDIN_FUNC(getequipid)
ShowError("getequipid: sd == NULL\n");
return 0;
}
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0){
item=sd->inventory_data[i];
@@ -6243,7 +6237,7 @@ BUILDIN_FUNC(getequipname)
buf=(char *)aMallocA(64*sizeof(char));
sd=script_rid2sd(st);
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0){
item=sd->inventory_data[i];
@@ -6270,7 +6264,7 @@ BUILDIN_FUNC(getbrokenid)
sd=script_rid2sd(st);
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
for(i=0; i<MAX_INVENTORY; i++) {
if(sd->status.inventory[i].attribute==1){
brokencounter++;
@@ -6299,7 +6293,7 @@ BUILDIN_FUNC(repair)
sd=script_rid2sd(st);
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
for(i=0; i<MAX_INVENTORY; i++) {
if(sd->status.inventory[i].attribute==1){
repaircounter++;
@@ -6325,7 +6319,7 @@ BUILDIN_FUNC(getequipisequiped)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
if ((num - 1) >= (sizeof(equip) / sizeof(equip[0])))
@@ -6350,7 +6344,7 @@ BUILDIN_FUNC(getequipisenableref)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0 && sd->inventory_data[i] && !sd->inventory_data[i]->flag.no_refine)
@@ -6372,7 +6366,7 @@ BUILDIN_FUNC(getequipisidentify)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0)
@@ -6392,7 +6386,7 @@ BUILDIN_FUNC(getequiprefinerycnt)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0)
@@ -6412,7 +6406,7 @@ BUILDIN_FUNC(getequipweaponlv)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0 && sd->inventory_data[i])
@@ -6432,7 +6426,7 @@ BUILDIN_FUNC(getequippercentrefinery)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0 && sd->status.inventory[i].nameid && sd->status.inventory[i].refine < MAX_REFINE)
@@ -6452,7 +6446,7 @@ BUILDIN_FUNC(successrefitem)
int i,num,ep;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0) {
@@ -6505,7 +6499,7 @@ BUILDIN_FUNC(failedrefitem)
int i,num;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0) {
@@ -6535,7 +6529,7 @@ BUILDIN_FUNC(statusup)
int type;
struct map_session_data *sd;
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
sd=script_rid2sd(st);
pc_statusup(sd,type);
@@ -6550,8 +6544,8 @@ BUILDIN_FUNC(statusup2)
int type,val;
struct map_session_data *sd;
- type=conv_num(st,script_getdata(st,2));
- val=conv_num(st,script_getdata(st,3));
+ type=script_getnum(st,2);
+ val=script_getnum(st,3);
sd=script_rid2sd(st);
pc_statusup2(sd,type,val);
@@ -6576,28 +6570,28 @@ BUILDIN_FUNC(bonus)
if( sd == NULL )
return 1; // no player attached
- type = conv_num(st, script_getdata(st,2));
+ type = script_getnum(st,2);
switch( script_lastdata(st) ){
case 3:
- val = conv_num(st, script_getdata(st,3));
+ val = script_getnum(st,3);
pc_bonus(sd, type, val);
break;
case 4:
- type2 = conv_num(st, script_getdata(st,3));
- val = conv_num(st, script_getdata(st,4));
+ type2 = script_getnum(st,3);
+ val = script_getnum(st,4);
pc_bonus2(sd, type, type2, val);
break;
case 5:
- type2 = conv_num(st, script_getdata(st,3));
- type3 = conv_num(st, script_getdata(st,4));
- val = conv_num(st, script_getdata(st,5));
+ type2 = script_getnum(st,3);
+ type3 = script_getnum(st,4);
+ val = script_getnum(st,5);
pc_bonus3(sd, type, type2, type3, val);
break;
case 6:
- type2 = conv_num(st, script_getdata(st,3));
- type3 = conv_num(st, script_getdata(st,4));
- type4 = conv_num(st, script_getdata(st,5));
- val = conv_num(st, script_getdata(st,6));
+ type2 = script_getnum(st,3);
+ type3 = script_getnum(st,4);
+ type4 = script_getnum(st,5);
+ val = script_getnum(st,6);
pc_bonus4(sd, type, type2, type3, type4, val);
break;
default:
@@ -6621,10 +6615,10 @@ BUILDIN_FUNC(skill)
if( sd == NULL )
return 1;// no player attached, report source
- id = conv_num(st, script_getdata(st,2));
- level = conv_num(st, script_getdata(st,3));
+ id = script_getnum(st,2);
+ level = script_getnum(st,3);
if( script_hasdata(st,4) )
- flag = conv_num(st, script_getdata(st,4));
+ flag = script_getnum(st,4);
pc_skill(sd, id, level, flag);
return 0;
@@ -6644,10 +6638,10 @@ BUILDIN_FUNC(addtoskill)
if( sd == NULL )
return 1;// no player attached, report source
- id = conv_num(st, script_getdata(st,2));
- level = conv_num(st, script_getdata(st,3));
+ id = script_getnum(st,2);
+ level = script_getnum(st,3);
if( script_hasdata(st,4) )
- flag = conv_num(st, script_getdata(st,4));
+ flag = script_getnum(st,4);
pc_skill(sd, id, level, flag);
return 0;
@@ -6666,8 +6660,8 @@ BUILDIN_FUNC(guildskill)
if( sd == NULL )
return 1;// no player attached, report source
- id = conv_num(st, script_getdata(st,2));
- level = conv_num(st, script_getdata(st,3));
+ id = script_getnum(st,2);
+ level = script_getnum(st,3);
for( i=0; i < level; i++ )
guild_skillup(sd, id);
@@ -6685,7 +6679,7 @@ BUILDIN_FUNC(getskilllv)
if( sd == NULL )
return 1;// no player attached, report source
- id = conv_num(st, script_getdata(st,2));
+ id = script_getnum(st,2);
script_pushint(st, pc_checkskill(sd,id));
return 0;
@@ -6699,8 +6693,8 @@ BUILDIN_FUNC(getgdskilllv)
int skill_id;
struct guild* g;
- guild_id = conv_num(st, script_getdata(st,2));
- skill_id = conv_num(st, script_getdata(st,3));
+ guild_id = script_getnum(st,2);
+ skill_id = script_getnum(st,3);
g = guild_search(guild_id);
if( g == NULL )
script_pushint(st, -1);
@@ -6752,7 +6746,7 @@ BUILDIN_FUNC(checkoption)
if( sd == NULL )
return 1;// no player attached, report source
- option = conv_num(st, script_getdata(st,2));
+ option = script_getnum(st,2);
if( sd->sc.option&option )
script_pushint(st, 1);
else
@@ -6772,7 +6766,7 @@ BUILDIN_FUNC(checkoption1)
if( sd == NULL )
return 1;// no player attached, report source
- opt1 = conv_num(st, script_getdata(st,2));
+ opt1 = script_getnum(st,2);
if( sd->sc.opt1 == opt1 )
script_pushint(st, 1);
else
@@ -6792,7 +6786,7 @@ BUILDIN_FUNC(checkoption2)
if( sd == NULL )
return 1;// no player attached, report source
- opt2 = conv_num(st, script_getdata(st,2));
+ opt2 = script_getnum(st,2);
if( sd->sc.opt2&opt2 )
script_pushint(st, 1);
else
@@ -6813,9 +6807,9 @@ BUILDIN_FUNC(setoption)
if( sd == NULL )
return 1;// no player attached, report source
- option = conv_num(st, script_getdata(st,2));
+ option = script_getnum(st,2);
if( script_hasdata(st,3) )
- flag = conv_num(st, script_getdata(st,3));
+ flag = script_getnum(st,3);
else if( !option ){// Request to remove everything.
flag = 0;
option = OPTION_CART|OPTION_FALCON|OPTION_RIDING;
@@ -6861,7 +6855,7 @@ BUILDIN_FUNC(setcart)
return 1;// no player attached, report source
if( script_hasdata(st,2) )
- type = conv_num(st, script_getdata(st,2));
+ type = script_getnum(st,2);
pc_setcart(sd, type);
return 0;
@@ -6898,7 +6892,7 @@ BUILDIN_FUNC(setfalcon)
return 1;// no player attached, report source
if( script_hasdata(st,2) )
- flag = conv_num(st, script_getdata(st,2));
+ flag = script_getnum(st,2);
pc_setfalcon(sd, flag);
@@ -6936,7 +6930,7 @@ BUILDIN_FUNC(setriding)
return 1;// no player attached, report source
if( script_hasdata(st,2) )
- flag = conv_num(st, script_getdata(st,2));
+ flag = script_getnum(st,2);
pc_setriding(sd, flag);
return 0;
@@ -6957,9 +6951,9 @@ BUILDIN_FUNC(savepoint)
if( sd == NULL )
return 1;// no player attached, report source
- str = conv_str(st, script_getdata(st,2));
- x = conv_num(st, script_getdata(st,3));
- y = conv_num(st, script_getdata(st,4));
+ str = script_getstr(st, 2);
+ x = script_getnum(st,3);
+ y = script_getnum(st,4);
map = mapindex_name2id(str);
if( map )
pc_setsavepoint(sd, map, x, y);
@@ -6977,7 +6971,7 @@ BUILDIN_FUNC(gettimetick) /* Asgard Version */
time_t timer;
struct tm *t;
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
switch(type){
case 2:
@@ -7013,7 +7007,7 @@ BUILDIN_FUNC(gettime) /* Asgard Version */
time_t timer;
struct tm *t;
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
time(&timer);
t=localtime(&timer);
@@ -7061,8 +7055,8 @@ BUILDIN_FUNC(gettimestr)
int maxlen;
time_t now = time(NULL);
- fmtstr=conv_str(st,script_getdata(st,2));
- maxlen=conv_num(st,script_getdata(st,3));
+ fmtstr=script_getstr(st,2);
+ maxlen=script_getnum(st,3);
tmpstr=(char *)aMallocA((maxlen+1)*sizeof(char));
strftime(tmpstr,maxlen,fmtstr,localtime(&now));
@@ -7100,8 +7094,8 @@ BUILDIN_FUNC(itemskill)
int id,lv;
struct map_session_data *sd=script_rid2sd(st);
- id=conv_num(st,script_getdata(st,2));
- lv=conv_num(st,script_getdata(st,3));
+ id=script_getnum(st,2);
+ lv=script_getnum(st,3);
// 詠唱中にスキルアイテムは使用できない
if(sd->ud.skilltimer != -1)
@@ -7121,7 +7115,7 @@ BUILDIN_FUNC(produce)
int trigger;
struct map_session_data *sd=script_rid2sd(st);
- trigger=conv_num(st,script_getdata(st,2));
+ trigger=script_getnum(st,2);
clif_skill_produce_mix_list(sd, trigger);
return 0;
}
@@ -7132,13 +7126,9 @@ BUILDIN_FUNC(produce)
BUILDIN_FUNC(makepet)
{
struct map_session_data *sd = script_rid2sd(st);
- struct script_data *data;
int id,pet_id;
- data=script_getdata(st,2);
- get_val(st,data);
-
- id=conv_num(st,data);
+ id=script_getnum(st,2);
pet_id = search_petDB_index(id, PET_CLASS);
@@ -7164,8 +7154,8 @@ BUILDIN_FUNC(getexp)
struct map_session_data *sd = script_rid2sd(st);
int base=0,job=0;
- base=conv_num(st,script_getdata(st,2));
- job =conv_num(st,script_getdata(st,3));
+ base=script_getnum(st,2);
+ job =script_getnum(st,3);
if(base<0 || job<0)
return 0;
if(sd)
@@ -7183,7 +7173,7 @@ BUILDIN_FUNC(guildgetexp)
struct map_session_data *sd = script_rid2sd(st);
int exp;
- exp = conv_num(st,script_getdata(st,2));
+ exp = script_getnum(st,2);
if(exp < 0)
return 0;
if(sd && sd->status.guild_id > 0)
@@ -7202,8 +7192,8 @@ BUILDIN_FUNC(guildchangegm)
int guild_id;
const char *name;
- guild_id = conv_num(st,script_getdata(st,2));
- name = conv_str(st,script_getdata(st,3));
+ guild_id = script_getnum(st,2);
+ name = script_getstr(st,3);
sd=map_nick2sd(name);
if (!sd)
@@ -7223,14 +7213,14 @@ BUILDIN_FUNC(monster)
int class_,amount,x,y;
const char *str,*map,*event="";
- map =conv_str(st,script_getdata(st,2));
- x =conv_num(st,script_getdata(st,3));
- y =conv_num(st,script_getdata(st,4));
- str =conv_str(st,script_getdata(st,5));
- class_=conv_num(st,script_getdata(st,6));
- amount=conv_num(st,script_getdata(st,7));
- if( st->end>st->start+8 ){
- event=conv_str(st,script_getdata(st,8));
+ map =script_getstr(st,2);
+ x =script_getnum(st,3);
+ y =script_getnum(st,4);
+ str =script_getstr(st,5);
+ class_=script_getnum(st,6);
+ amount=script_getnum(st,7);
+ if( script_hasdata(st,8) ){
+ event=script_getstr(st,8);
check_event(st, event);
}
@@ -7250,16 +7240,16 @@ BUILDIN_FUNC(areamonster)
int class_,amount,x0,y0,x1,y1;
const char *str,*map,*event="";
- map =conv_str(st,script_getdata(st,2));
- x0 =conv_num(st,script_getdata(st,3));
- y0 =conv_num(st,script_getdata(st,4));
- x1 =conv_num(st,script_getdata(st,5));
- y1 =conv_num(st,script_getdata(st,6));
- str =conv_str(st,script_getdata(st,7));
- class_=conv_num(st,script_getdata(st,8));
- amount=conv_num(st,script_getdata(st,9));
- if( st->end>st->start+10 ){
- event=conv_str(st,script_getdata(st,10));
+ map =script_getstr(st,2);
+ x0 =script_getnum(st,3);
+ y0 =script_getnum(st,4);
+ x1 =script_getnum(st,5);
+ y1 =script_getnum(st,6);
+ str =script_getstr(st,7);
+ class_=script_getnum(st,8);
+ amount=script_getnum(st,9);
+ if( script_hasdata(st,10) ){
+ event=script_getstr(st,10);
check_event(st, event);
}
@@ -7289,8 +7279,8 @@ BUILDIN_FUNC(killmonster)
{
const char *mapname,*event;
int m,allflag=0;
- mapname=conv_str(st,script_getdata(st,2));
- event=conv_str(st,script_getdata(st,3));
+ mapname=script_getstr(st,2);
+ event=script_getstr(st,3);
if(strcmp(event,"All")==0)
allflag = 1;
else
@@ -7311,7 +7301,7 @@ BUILDIN_FUNC(killmonsterall)
{
const char *mapname;
int m;
- mapname=conv_str(st,script_getdata(st,2));
+ mapname=script_getstr(st,2);
if( (m=map_mapname2mapid(mapname))<0 )
return 0;
@@ -7332,23 +7322,23 @@ BUILDIN_FUNC(clone)
unsigned int duration = 0;
const char *map,*event="";
- map=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
- event=conv_str(st,script_getdata(st,5));
- char_id=conv_num(st,script_getdata(st,6));
+ map=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
+ event=script_getstr(st,5);
+ char_id=script_getnum(st,6);
- if( st->end>st->start+7 )
- master_id=conv_num(st,script_getdata(st,7));
+ if( script_hasdata(st,7) )
+ master_id=script_getnum(st,7);
- if( st->end>st->start+8 )
- mode=conv_num(st,script_getdata(st,8));
+ if( script_hasdata(st,8) )
+ mode=script_getnum(st,8);
- if( st->end>st->start+9 )
- flag=conv_num(st,script_getdata(st,9));
+ if( script_hasdata(st,9) )
+ flag=script_getnum(st,9);
- if( st->end>st->start+10 )
- duration=conv_num(st,script_getdata(st,10));
+ if( script_hasdata(st,10) )
+ duration=script_getnum(st,10);
check_event(st, event);
@@ -7378,7 +7368,7 @@ BUILDIN_FUNC(clone)
BUILDIN_FUNC(doevent)
{
const char *event;
- event=conv_str(st,script_getdata(st,2));
+ event=script_getstr(st,2);
check_event(st, event);
npc_event(map_id2sd(st->rid),event,0);
return 0;
@@ -7390,7 +7380,7 @@ BUILDIN_FUNC(doevent)
BUILDIN_FUNC(donpcevent)
{
const char *event;
- event=conv_str(st,script_getdata(st,2));
+ event=script_getstr(st,2);
check_event(st, event);
npc_event_do(event);
return 0;
@@ -7403,8 +7393,8 @@ BUILDIN_FUNC(addtimer)
{
const char *event;
int tick;
- tick=conv_num(st, script_getdata(st,2));
- event=conv_str(st, script_getdata(st,3));
+ tick=script_getnum(st,2);
+ event=script_getstr(st, 3);
check_event(st, event);
pc_addeventtimer(script_rid2sd(st),tick,event);
return 0;
@@ -7416,7 +7406,7 @@ BUILDIN_FUNC(addtimer)
BUILDIN_FUNC(deltimer)
{
const char *event;
- event=conv_str(st, script_getdata(st,2));
+ event=script_getstr(st, 2);
check_event(st, event);
pc_deleventtimer(script_rid2sd(st),event);
return 0;
@@ -7429,8 +7419,8 @@ BUILDIN_FUNC(addtimercount)
{
const char *event;
int tick;
- event=conv_str(st, script_getdata(st,2));
- tick=conv_num(st, script_getdata(st,3));
+ event=script_getstr(st, 2);
+ tick=script_getnum(st,3);
check_event(st, event);
pc_addeventtimercount(script_rid2sd(st),event,tick);
return 0;
@@ -7446,8 +7436,8 @@ BUILDIN_FUNC(initnpctimer)
int flag = 0;
if( script_hasdata(st,3) )
{ //Two arguments: NPC name and attach flag.
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
- flag = conv_num(st, script_getdata(st,3));
+ nd = npc_name2id(script_getstr(st, 2));
+ flag = script_getnum(st,3);
} else
if( script_hasdata(st,2) )
{ //Check if argument is numeric (flag) or string (npc name)
@@ -7455,10 +7445,10 @@ BUILDIN_FUNC(initnpctimer)
data = script_getdata(st,2);
get_val(st,data);
if( data_isstring(data) ) //NPC name
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
+ nd = npc_name2id(script_getstr(st, 2));
else if( data_isint(data) ) { //Flag
nd = (struct npc_data *)map_id2bl(st->oid);
- flag = conv_num(st, script_getdata(st,3));
+ flag = script_getnum(st,3);
} else {
ShowError("initnpctimer: invalid argument type #1 (needs be int or string)).\n");
return 1;
@@ -7486,8 +7476,8 @@ BUILDIN_FUNC(startnpctimer)
int flag = 0;
if( script_hasdata(st,3) )
{ //Two arguments: NPC name and attach flag.
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
- flag = conv_num(st, script_getdata(st,3));
+ nd = npc_name2id(script_getstr(st, 2));
+ flag = script_getnum(st,3);
} else
if( script_hasdata(st,2) )
{ //Check if argument is numeric (flag) or string (npc name)
@@ -7495,10 +7485,10 @@ BUILDIN_FUNC(startnpctimer)
data = script_getdata(st,2);
get_val(st,data);
if( data_isstring(data) ) //NPC name
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
+ nd = npc_name2id(script_getstr(st, 2));
else if( data_isint(data) ) { //Flag
nd = (struct npc_data *)map_id2bl(st->oid);
- flag = conv_num(st, script_getdata(st,3));
+ flag = script_getnum(st,3);
} else {
ShowError("startnpctimer: invalid argument type #1 (needs be int or string)).\n");
return 1;
@@ -7525,8 +7515,8 @@ BUILDIN_FUNC(stopnpctimer)
int flag = 0;
if( script_hasdata(st,3) )
{ //Two arguments: NPC name and attach flag.
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
- flag = conv_num(st, script_getdata(st,3));
+ nd = npc_name2id(script_getstr(st, 2));
+ flag = script_getnum(st,3);
} else
if( script_hasdata(st,2) )
{ //Check if argument is numeric (flag) or string (npc name)
@@ -7534,10 +7524,10 @@ BUILDIN_FUNC(stopnpctimer)
data = script_getdata(st,2);
get_val(st,data);
if( data_isstring(data) ) //NPC name
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
+ nd = npc_name2id(script_getstr(st, 2));
else if( data_isint(data) ) { //Flag
nd = (struct npc_data *)map_id2bl(st->oid);
- flag = conv_num(st, script_getdata(st,3));
+ flag = script_getnum(st,3);
} else {
ShowError("stopnpctimer: invalid argument type #1 (needs be int or string)).\n");
return 1;
@@ -7560,10 +7550,10 @@ BUILDIN_FUNC(getnpctimer)
{
struct npc_data *nd;
struct map_session_data *sd;
- int type=conv_num(st, script_getdata(st,2));
+ int type=script_getnum(st,2);
int val=0;
if( script_hasdata(st,3) )
- nd = npc_name2id(conv_str(st,script_getdata(st,3)));
+ nd = npc_name2id(script_getstr(st,3));
else
nd = (struct npc_data *)map_id2bl(st->oid);
@@ -7602,9 +7592,9 @@ BUILDIN_FUNC(setnpctimer)
{
int tick;
struct npc_data *nd;
- tick=conv_num(st,script_getdata(st,2));
+ tick=script_getnum(st,2);
if( script_hasdata(st,3) )
- nd=npc_name2id(conv_str(st,script_getdata(st,3)));
+ nd=npc_name2id(script_getstr(st,3));
else
nd=(struct npc_data *)map_id2bl(st->oid);
@@ -7623,7 +7613,7 @@ BUILDIN_FUNC(attachnpctimer)
nd=(struct npc_data *)map_id2bl(st->oid);
if( script_hasdata(st,2) )
- sd=map_nick2sd(conv_str(st,script_getdata(st,2)));
+ sd=map_nick2sd(script_getstr(st,2));
else
sd = script_rid2sd(st);
@@ -7642,7 +7632,7 @@ BUILDIN_FUNC(detachnpctimer)
{
struct npc_data *nd;
if( script_hasdata(st,2) )
- nd=npc_name2id(conv_str(st,script_getdata(st,2)));
+ nd=npc_name2id(script_getstr(st,2));
else
nd=(struct npc_data *)map_id2bl(st->oid);
@@ -7673,10 +7663,10 @@ BUILDIN_FUNC(announce)
{
const char *str, *color=NULL;
int flag;
- str=conv_str(st,script_getdata(st,2));
- flag=conv_num(st,script_getdata(st,3));
- if (st->end>st->start+4)
- color=conv_str(st,script_getdata(st,4));
+ str=script_getstr(st,2);
+ flag=script_getnum(st,3);
+ if (script_hasdata(st,4))
+ color=script_getstr(st,4);
if(flag&0x0f){
struct block_list *bl=(flag&0x08)? map_id2bl(st->oid) :
@@ -7716,11 +7706,11 @@ BUILDIN_FUNC(mapannounce)
const char *mapname,*str, *color=NULL;
int flag,m;
- mapname=conv_str(st,script_getdata(st,2));
- str=conv_str(st,script_getdata(st,3));
- flag=conv_num(st,script_getdata(st,4));
- if (st->end>st->start+5)
- color=conv_str(st,script_getdata(st,5));
+ mapname=script_getstr(st,2);
+ str=script_getstr(st,3);
+ flag=script_getnum(st,4);
+ if (script_hasdata(st,5))
+ color=script_getstr(st,5);
if( (m=map_mapname2mapid(mapname))<0 )
return 0;
@@ -7739,15 +7729,15 @@ BUILDIN_FUNC(areaannounce)
int flag,m;
int x0,y0,x1,y1;
- map=conv_str(st,script_getdata(st,2));
- x0=conv_num(st,script_getdata(st,3));
- y0=conv_num(st,script_getdata(st,4));
- x1=conv_num(st,script_getdata(st,5));
- y1=conv_num(st,script_getdata(st,6));
- str=conv_str(st,script_getdata(st,7));
- flag=conv_num(st,script_getdata(st,8));
- if (st->end>st->start+9)
- color=conv_str(st,script_getdata(st,9));
+ map=script_getstr(st,2);
+ x0=script_getnum(st,3);
+ y0=script_getnum(st,4);
+ x1=script_getnum(st,5);
+ y1=script_getnum(st,6);
+ str=script_getstr(st,7);
+ flag=script_getnum(st,8);
+ if (script_hasdata(st,9))
+ color=script_getstr(st,9);
if( (m=map_mapname2mapid(map))<0 )
return 0;
@@ -7763,7 +7753,7 @@ BUILDIN_FUNC(areaannounce)
*/
BUILDIN_FUNC(getusers)
{
- int flag=conv_num(st,script_getdata(st,2));
+ int flag=script_getnum(st,2);
struct block_list *bl=map_id2bl((flag&0x08)?st->oid:st->rid);
int val=0;
switch(flag&0x07){
@@ -7809,8 +7799,8 @@ BUILDIN_FUNC(getmapguildusers)
int m, gid;
int i=0,c=0;
struct guild *g = NULL;
- str=conv_str(st, script_getdata(st,2));
- gid=conv_num(st, script_getdata(st,3));
+ str=script_getstr(st,2);
+ gid=script_getnum(st,3);
if ((m = map_mapname2mapid(str)) < 0) { // map id on this server (m == -1 if not in actual map-server)
script_pushint(st,-1);
return 0;
@@ -7836,7 +7826,7 @@ BUILDIN_FUNC(getmapusers)
{
const char *str;
int m;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
if( (m=map_mapname2mapid(str))< 0){
script_pushint(st,-1);
return 0;
@@ -7858,11 +7848,11 @@ BUILDIN_FUNC(getareausers)
{
const char *str;
int m,x0,y0,x1,y1,users=0;
- str=conv_str(st,script_getdata(st,2));
- x0=conv_num(st,script_getdata(st,3));
- y0=conv_num(st,script_getdata(st,4));
- x1=conv_num(st,script_getdata(st,5));
- y1=conv_num(st,script_getdata(st,6));
+ str=script_getstr(st,2);
+ x0=script_getnum(st,3);
+ y0=script_getnum(st,4);
+ x1=script_getnum(st,5);
+ y1=script_getnum(st,6);
if( (m=map_mapname2mapid(str))< 0){
script_pushint(st,-1);
return 0;
@@ -7894,15 +7884,15 @@ BUILDIN_FUNC(getareadropitem)
int m,x0,y0,x1,y1,item,amount=0;
struct script_data *data;
- str=conv_str(st,script_getdata(st,2));
- x0=conv_num(st,script_getdata(st,3));
- y0=conv_num(st,script_getdata(st,4));
- x1=conv_num(st,script_getdata(st,5));
- y1=conv_num(st,script_getdata(st,6));
+ str=script_getstr(st,2);
+ x0=script_getnum(st,3);
+ y0=script_getnum(st,4);
+ x1=script_getnum(st,5);
+ y1=script_getnum(st,6);
data=script_getdata(st,7);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
item=UNKNOWN_ITEM_ID;
@@ -7927,7 +7917,7 @@ BUILDIN_FUNC(getareadropitem)
BUILDIN_FUNC(enablenpc)
{
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
npc_enable(str,1);
return 0;
}
@@ -7938,7 +7928,7 @@ BUILDIN_FUNC(enablenpc)
BUILDIN_FUNC(disablenpc)
{
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
npc_enable(str,0);
return 0;
}
@@ -7974,7 +7964,7 @@ BUILDIN_FUNC(disablearena) // Added by RoVeRT
BUILDIN_FUNC(hideoffnpc)
{
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
npc_enable(str,2);
return 0;
}
@@ -7985,7 +7975,7 @@ BUILDIN_FUNC(hideoffnpc)
BUILDIN_FUNC(hideonnpc)
{
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
npc_enable(str,4);
return 0;
}
@@ -7997,11 +7987,11 @@ BUILDIN_FUNC(sc_start)
{
struct block_list *bl;
int type,tick,val1,val4=0;
- type=conv_num(st,script_getdata(st,2));
- tick=conv_num(st,script_getdata(st,3));
- val1=conv_num(st,script_getdata(st,4));
- if( st->end>st->start+5 ) //指定したキャラを状態異常にする
- bl = map_id2bl(conv_num(st,script_getdata(st,5)));
+ type=script_getnum(st,2);
+ tick=script_getnum(st,3);
+ val1=script_getnum(st,4);
+ if( script_hasdata(st,5) ) //指定したキャラを状態異常にする
+ bl = map_id2bl(script_getnum(st,5));
else
bl = map_id2bl(st->rid);
@@ -8031,12 +8021,12 @@ BUILDIN_FUNC(sc_start2)
{
struct block_list *bl;
int type,tick,val1,val4=0,per;
- type=conv_num(st,script_getdata(st,2));
- tick=conv_num(st,script_getdata(st,3));
- val1=conv_num(st,script_getdata(st,4));
- per=conv_num(st,script_getdata(st,5));
- if( st->end>st->start+6 ) //指定したキャラを状態異常にする
- bl = map_id2bl(conv_num(st,script_getdata(st,6)));
+ type=script_getnum(st,2);
+ tick=script_getnum(st,3);
+ val1=script_getnum(st,4);
+ per=script_getnum(st,5);
+ if( script_hasdata(st,6) ) //指定したキャラを状態異常にする
+ bl = map_id2bl(script_getnum(st,6));
else
bl = map_id2bl(st->rid);
@@ -8070,14 +8060,14 @@ BUILDIN_FUNC(sc_start4)
{
struct block_list *bl;
int type,tick,val1,val2,val3,val4;
- type=conv_num(st,script_getdata(st,2));
- tick=conv_num(st,script_getdata(st,3));
- val1=conv_num(st,script_getdata(st,4));
- val2=conv_num(st,script_getdata(st,5));
- val3=conv_num(st,script_getdata(st,6));
- val4=conv_num(st,script_getdata(st,7));
- if( st->end>st->start+8 )
- bl = map_id2bl(conv_num(st,script_getdata(st,8)));
+ type=script_getnum(st,2);
+ tick=script_getnum(st,3);
+ val1=script_getnum(st,4);
+ val2=script_getnum(st,5);
+ val3=script_getnum(st,6);
+ val4=script_getnum(st,7);
+ if( script_hasdata(st,8) )
+ bl = map_id2bl(script_getnum(st,8));
else
bl = map_id2bl(st->rid);
@@ -8107,7 +8097,7 @@ BUILDIN_FUNC(sc_end)
{
struct block_list *bl;
int type;
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
bl = map_id2bl(st->rid);
if (potion_flag==1 && potion_target)
@@ -8129,10 +8119,10 @@ BUILDIN_FUNC(getscrate)
struct block_list *bl;
int sc_def=0,type,rate;
- type=conv_num(st,script_getdata(st,2));
- rate=conv_num(st,script_getdata(st,3));
- if( st->end>st->start+4 ) //指定したキャラの耐性を計算する
- bl = map_id2bl(conv_num(st,script_getdata(st,4)));
+ type=script_getnum(st,2);
+ rate=script_getnum(st,3);
+ if( script_hasdata(st,4) ) //指定したキャラの耐性を計算する
+ bl = map_id2bl(script_getnum(st,4));
else
bl = map_id2bl(st->rid);
@@ -8152,8 +8142,9 @@ BUILDIN_FUNC(getscrate)
*/
BUILDIN_FUNC(debugmes)
{
- conv_str(st,script_getdata(st,2));
- ShowDebug("script debug : %d %d : %s\n",st->rid,st->oid,st->stack->stack_data[st->start+2].u.str);
+ const char *str;
+ str=script_getstr(st,2);
+ ShowDebug("script debug : %d %d : %s\n",st->rid,st->oid,str);
return 0;
}
@@ -8165,7 +8156,7 @@ BUILDIN_FUNC(catchpet)
{
int pet_id;
struct map_session_data *sd;
- pet_id= conv_num(st,script_getdata(st,2));
+ pet_id= script_getnum(st,2);
sd=script_rid2sd(st);
pet_catch_process1(sd,pet_id);
return 0;
@@ -8190,8 +8181,8 @@ BUILDIN_FUNC(homunculus_evolution)
BUILDIN_FUNC(eaclass)
{
int class_;
- if( st->end>st->start+2 )
- class_ = conv_num(st,script_getdata(st,2));
+ if( script_hasdata(st,2) )
+ class_ = script_getnum(st,2);
else {
struct map_session_data *sd;
sd=script_rid2sd(st);
@@ -8207,10 +8198,10 @@ BUILDIN_FUNC(eaclass)
BUILDIN_FUNC(roclass)
{
- int class_ =conv_num(st,script_getdata(st,2));
+ int class_ =script_getnum(st,2);
int sex;
- if( st->end>st->start+3 )
- sex = conv_num(st,script_getdata(st,3));
+ if( script_hasdata(st,3) )
+ sex = script_getnum(st,3);
else {
struct map_session_data *sd;
if (st->rid && (sd=script_rid2sd(st)))
@@ -8242,7 +8233,7 @@ BUILDIN_FUNC(resetlvl)
{
struct map_session_data *sd;
- int type=conv_num(st,script_getdata(st,2));
+ int type=script_getnum(st,2);
sd=script_rid2sd(st);
pc_resetlvl(sd,type);
@@ -8293,15 +8284,15 @@ BUILDIN_FUNC(changebase)
struct map_session_data *sd=NULL;
int vclass;
- if( st->end>st->start+3 )
- sd=map_id2sd(conv_num(st,script_getdata(st,3)));
+ if( script_hasdata(st,3) )
+ sd=map_id2sd(script_getnum(st,3));
else
sd=script_rid2sd(st);
if(sd == NULL)
return 0;
- vclass = conv_num(st,script_getdata(st,2));
+ vclass = script_getnum(st,2);
if(vclass == JOB_WEDDING)
{
if (!battle_config.wedding_modifydisplay || //Do not show the wedding sprites
@@ -8353,27 +8344,27 @@ BUILDIN_FUNC(waitingroom)
{
const char *name,*ev="";
int limit, trigger = 0,pub=1;
- name=conv_str(st,script_getdata(st,2));
- limit= conv_num(st,script_getdata(st,3));
+ name=script_getstr(st,2);
+ limit= script_getnum(st,3);
if(limit==0)
pub=3;
- if( (st->end > st->start+5) ){
+ if( script_hasdata(st,5) ){
struct script_data* data=script_getdata(st,5);
get_val(st,data);
- if(data->type==C_INT){
- // 新Athena仕様(旧Athena仕様と互換性あり)
- ev=conv_str(st,script_getdata(st,4));
- trigger=conv_num(st,script_getdata(st,5));
- }else{
+ if( data_isstring(data) ){
// eathena仕様
- trigger=conv_num(st,script_getdata(st,4));
- ev=conv_str(st,script_getdata(st,5));
+ trigger=script_getnum(st,4);
+ ev=script_getstr(st,5);
+ }else{
+ // 新Athena仕様(旧Athena仕様と互換性あり)
+ ev=script_getstr(st,4);
+ trigger=script_getnum(st,5);
}
}else{
// 旧Athena仕様
- if( st->end > st->start+4 )
- ev=conv_str(st,script_getdata(st,4));
+ if( script_hasdata(st,4) )
+ ev=script_getstr(st,4);
}
chat_createnpcchat( (struct npc_data *)map_id2bl(st->oid),
limit,pub,trigger,name,(int)strlen(name)+1,ev);
@@ -8389,11 +8380,11 @@ BUILDIN_FUNC(globalmes)
struct npc_data *nd = (struct npc_data *)bl;
const char *name=NULL,*mes;
- mes=conv_str(st,script_getdata(st,2)); // メッセージの取得
+ mes=script_getstr(st,2); // メッセージの取得
if(mes==NULL) return 0;
- if(st->end>st->start+3){ // NPC名の取得(123#456)
- name=conv_str(st,script_getdata(st,3));
+ if(script_hasdata(st,3)){ // NPC名の取得(123#456)
+ name=script_getstr(st,3);
} else {
name=nd->name;
}
@@ -8409,8 +8400,8 @@ BUILDIN_FUNC(globalmes)
BUILDIN_FUNC(delwaitingroom)
{
struct npc_data *nd;
- if( st->end > st->start+2 )
- nd=npc_name2id(conv_str(st,script_getdata(st,2)));
+ if( script_hasdata(st,2) )
+ nd=npc_name2id(script_getstr(st,2));
else
nd=(struct npc_data *)map_id2bl(st->oid);
chat_deletenpcchat(nd);
@@ -8425,8 +8416,8 @@ BUILDIN_FUNC(waitingroomkickall)
struct npc_data *nd;
struct chat_data *cd;
- if( st->end > st->start+2 )
- nd=npc_name2id(conv_str(st,script_getdata(st,2)));
+ if( script_hasdata(st,2) )
+ nd=npc_name2id(script_getstr(st,2));
else
nd=(struct npc_data *)map_id2bl(st->oid);
@@ -8445,8 +8436,8 @@ BUILDIN_FUNC(enablewaitingroomevent)
struct npc_data *nd;
struct chat_data *cd;
- if( st->end > st->start+2 )
- nd=npc_name2id(conv_str(st,script_getdata(st,2)));
+ if( script_hasdata(st,2) )
+ nd=npc_name2id(script_getstr(st,2));
else
nd=(struct npc_data *)map_id2bl(st->oid);
@@ -8465,8 +8456,8 @@ BUILDIN_FUNC(disablewaitingroomevent)
struct npc_data *nd;
struct chat_data *cd;
- if( st->end > st->start+2 )
- nd=npc_name2id(conv_str(st,script_getdata(st,2)));
+ if( script_hasdata(st,2) )
+ nd=npc_name2id(script_getstr(st,2));
else
nd=(struct npc_data *)map_id2bl(st->oid);
@@ -8484,9 +8475,9 @@ BUILDIN_FUNC(getwaitingroomstate)
struct npc_data *nd;
struct chat_data *cd;
int val=0,type;
- type=conv_num(st,script_getdata(st,2));
- if( st->end > st->start+3 )
- nd=npc_name2id(conv_str(st,script_getdata(st,3)));
+ type=script_getnum(st,2);
+ if( script_hasdata(st,3) )
+ nd=npc_name2id(script_getstr(st,3));
else
nd=(struct npc_data *)map_id2bl(st->oid);
@@ -8533,12 +8524,12 @@ BUILDIN_FUNC(warpwaitingpc)
return 0;
n=cd->trigger&0x7f;
- str=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
+ str=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
- if( st->end > st->start+5 )
- n=conv_num(st,script_getdata(st,5));
+ if( script_hasdata(st,5) )
+ n=script_getnum(st,5);
for(i=0;i<n;i++){
sd=cd->usersd[0];
@@ -8566,7 +8557,7 @@ BUILDIN_FUNC(warpwaitingpc)
*/
BUILDIN_FUNC(attachrid)
{
- st->rid=conv_num(st,script_getdata(st,2));
+ st->rid=script_getnum(st,2);
script_pushint(st,(map_id2sd(st->rid)!=NULL));
return 0;
}
@@ -8586,7 +8577,7 @@ BUILDIN_FUNC(detachrid)
BUILDIN_FUNC(isloggedin)
{
push_val(st->stack,C_INT, map_id2sd(
- conv_num(st,script_getdata(st,2)) )!=NULL );
+ script_getnum(st,2) )!=NULL );
return 0;
}
@@ -8601,10 +8592,10 @@ BUILDIN_FUNC(setmapflagnosave)
unsigned short mapindex;
const char *str,*str2;
- str=conv_str(st,script_getdata(st,2));
- str2=conv_str(st,script_getdata(st,3));
- x=conv_num(st,script_getdata(st,4));
- y=conv_num(st,script_getdata(st,5));
+ str=script_getstr(st,2);
+ str2=script_getstr(st,3);
+ x=script_getnum(st,4);
+ y=script_getnum(st,5);
m = map_mapname2mapid(str);
mapindex = mapindex_name2id(str2);
@@ -8624,10 +8615,10 @@ BUILDIN_FUNC(setmapflag)
const char *str;
const char *val=NULL;
- str=conv_str(st,script_getdata(st,2));
- i=conv_num(st,script_getdata(st,3));
- if(st->end>st->start+4){
- val=conv_str(st,script_getdata(st,4));
+ str=script_getstr(st,2);
+ i=script_getnum(st,3);
+ if(script_hasdata(st,4)){
+ val=script_getstr(st,4);
}
m = map_mapname2mapid(str);
if(m >= 0) {
@@ -8776,8 +8767,8 @@ BUILDIN_FUNC(removemapflag)
int m,i;
const char *str;
- str=conv_str(st,script_getdata(st,2));
- i=conv_num(st,script_getdata(st,3));
+ str=script_getstr(st,2);
+ i=script_getnum(st,3);
m = map_mapname2mapid(str);
if(m >= 0) {
switch(i) {
@@ -8929,7 +8920,7 @@ BUILDIN_FUNC(pvpon)
const char *str;
struct map_session_data *pl_sd=NULL, **pl_allsd;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
m = map_mapname2mapid(str);
if(m >= 0 && !map[m].flag.pvp) {
map[m].flag.pvp = 1;
@@ -8971,7 +8962,7 @@ BUILDIN_FUNC(pvpoff)
int m;
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
m = map_mapname2mapid(str);
if(m < 0 || !map[m].flag.pvp)
return 0; //fixed Lupus
@@ -8991,7 +8982,7 @@ BUILDIN_FUNC(gvgon)
int m;
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
m = map_mapname2mapid(str);
if(m >= 0 && !map[m].flag.gvg) {
map[m].flag.gvg = 1;
@@ -9005,7 +8996,7 @@ BUILDIN_FUNC(gvgoff)
int m;
const char *str;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
m = map_mapname2mapid(str);
if(m >= 0 && map[m].flag.gvg) {
map[m].flag.gvg = 0;
@@ -9025,12 +9016,12 @@ BUILDIN_FUNC(emotion)
int type;
int player=0;
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
if(type < 0 || type > 100)
return 0;
- if( st->end>st->start+3 )
- player=conv_num(st,script_getdata(st,3));
+ if( script_hasdata(st,3) )
+ player=script_getnum(st,3);
if (player) {
struct map_session_data *sd = script_rid2sd(st);
@@ -9071,9 +9062,9 @@ static int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap)
BUILDIN_FUNC(maprespawnguildid)
{
- const char *mapname=conv_str(st,script_getdata(st,2));
- int g_id=conv_num(st,script_getdata(st,3));
- int flag=conv_num(st,script_getdata(st,4));
+ const char *mapname=script_getstr(st,2);
+ int g_id=script_getnum(st,3);
+ int flag=script_getnum(st,4);
int m=map_mapname2mapid(mapname);
@@ -9115,7 +9106,7 @@ BUILDIN_FUNC(agitcheck)
BUILDIN_FUNC(flagemblem)
{
- int g_id=conv_num(st,script_getdata(st,2));
+ int g_id=script_getnum(st,2);
if(g_id < 0) return 0;
@@ -9129,7 +9120,7 @@ BUILDIN_FUNC(getcastlename)
char mapname[MAP_NAME_LENGTH];
struct guild_castle *gc;
- strncpy(mapname, conv_str(st,script_getdata(st,2)), MAP_NAME_LENGTH);
+ strncpy(mapname, script_getstr(st,2), MAP_NAME_LENGTH);
gc = guild_mapname2gc(mapname);
if(gc)
@@ -9142,16 +9133,16 @@ BUILDIN_FUNC(getcastlename)
BUILDIN_FUNC(getcastledata)
{
char mapname[MAP_NAME_LENGTH];
- int index=conv_num(st,script_getdata(st,3));
+ int index=script_getnum(st,3);
const char *event=NULL;
struct guild_castle *gc;
int i;
- strncpy(mapname, conv_str(st,script_getdata(st,2)), MAP_NAME_LENGTH);
+ strncpy(mapname, script_getstr(st,2), MAP_NAME_LENGTH);
gc = guild_mapname2gc(mapname);
- if(st->end>st->start+4 && index==0 && gc) {
- event=conv_str(st,script_getdata(st,4));
+ if(script_hasdata(st,4) && index==0 && gc) {
+ event=script_getstr(st,4);
check_event(st, event);
guild_addcastleinfoevent(gc->castle_id,17,event);
}
@@ -9210,11 +9201,11 @@ BUILDIN_FUNC(getcastledata)
BUILDIN_FUNC(setcastledata)
{
char mapname[MAP_NAME_LENGTH];
- int index=conv_num(st,script_getdata(st,3));
- int value=conv_num(st,script_getdata(st,4));
+ int index=script_getnum(st,3);
+ int value=script_getnum(st,4);
struct guild_castle *gc;
- strncpy(mapname, conv_str(st,script_getdata(st,2)), MAP_NAME_LENGTH);
+ strncpy(mapname, script_getstr(st,2), MAP_NAME_LENGTH);
gc = guild_mapname2gc(mapname);
if(gc) {
@@ -9285,11 +9276,11 @@ BUILDIN_FUNC(setcastledata)
*/
BUILDIN_FUNC(requestguildinfo)
{
- int guild_id=conv_num(st,script_getdata(st,2));
+ int guild_id=script_getnum(st,2);
const char *event=NULL;
- if( st->end>st->start+3 ){
- event=conv_str(st,script_getdata(st,3));
+ if( script_hasdata(st,3) ){
+ event=script_getstr(st,3);
check_event(st, event);
}
@@ -9308,7 +9299,7 @@ BUILDIN_FUNC(getequipcardcnt)
struct map_session_data *sd;
int c=MAX_SLOTS;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(itemdb_isspecial(sd->status.inventory[i].card[0]))
@@ -9338,7 +9329,7 @@ BUILDIN_FUNC(successremovecards)
struct item item_tmp;
int c=MAX_SLOTS;
- num=conv_num(st,script_getdata(st,2));
+ num=script_getnum(st,2);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(itemdb_isspecial(sd->status.inventory[i].card[0]))
@@ -9406,8 +9397,8 @@ BUILDIN_FUNC(failedremovecards)
struct item item_tmp;
int c=MAX_SLOTS;
- num=conv_num(st,script_getdata(st,2));
- typefail=conv_num(st,script_getdata(st,3));
+ num=script_getnum(st,2);
+ typefail=script_getnum(st,3);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(itemdb_isspecial(sd->status.inventory[i].card[0]))
@@ -9492,16 +9483,16 @@ BUILDIN_FUNC(mapwarp) // Added by RoVeRT
const char *str;
const char *mapname;
unsigned int index;
- mapname=conv_str(st,script_getdata(st,2));
- str=conv_str(st,script_getdata(st,3));
- x=conv_num(st,script_getdata(st,4));
- y=conv_num(st,script_getdata(st,5));
- if(st->end > st->start+7){
- check_val=conv_num(st,script_getdata(st,6));
- check_ID=conv_num(st,script_getdata(st,7));
+ mapname=script_getstr(st,2);
+ str=script_getstr(st,3);
+ x=script_getnum(st,4);
+ y=script_getnum(st,5);
+ if(script_hasdata(st,7)){
+ check_val=script_getnum(st,6);
+ check_ID=script_getnum(st,7);
}
- if( (m=map_mapname2mapid(mapname))< 0)
+ if((m=map_mapname2mapid(mapname))< 0)
return 0;
if(!(index=mapindex_name2id(str)))
@@ -9541,8 +9532,8 @@ BUILDIN_FUNC(cmdothernpc) // Added by RoVeRT
{
const char *npc,*command;
- npc=conv_str(st,script_getdata(st,2));
- command=conv_str(st,script_getdata(st,3));
+ npc=script_getstr(st,2);
+ command=script_getstr(st,3);
npc_command(map_id2sd(st->rid),npc,command);
return 0;
@@ -9580,8 +9571,8 @@ BUILDIN_FUNC(mobcount) // Added by RoVeRT
{
const char *mapname,*event;
int m;
- mapname=conv_str(st,script_getdata(st,2));
- event=conv_str(st,script_getdata(st,3));
+ mapname=script_getstr(st,2);
+ event=script_getstr(st,3);
check_event(st, event);
if( (m=map_mapname2mapid(mapname))<0 ) {
@@ -9595,7 +9586,7 @@ BUILDIN_FUNC(mobcount) // Added by RoVeRT
}
BUILDIN_FUNC(marriage)
{
- const char *partner=conv_str(st,script_getdata(st,2));
+ const char *partner=script_getstr(st,2);
struct map_session_data *sd=script_rid2sd(st);
struct map_session_data *p_sd=map_nick2sd(partner);
@@ -9706,9 +9697,9 @@ BUILDIN_FUNC(warppartner)
return 0;
}
- str=conv_str(st,script_getdata(st,2));
- x=conv_num(st,script_getdata(st,3));
- y=conv_num(st,script_getdata(st,4));
+ str=script_getstr(st,2);
+ x=script_getnum(st,3);
+ y=script_getnum(st,4);
mapindex = mapindex_name2id(str);
if (mapindex) {
@@ -9726,11 +9717,14 @@ BUILDIN_FUNC(warppartner)
BUILDIN_FUNC(strmobinfo)
{
- int num=conv_num(st,script_getdata(st,2));
- int class_=conv_num(st,script_getdata(st,3));
+ int num=script_getnum(st,2);
+ int class_=script_getnum(st,3);
- if((class_>=0 && class_<=1000) || class_ >2000)
+ if(!mobdb_checkid(class_))
+ {
+ script_pushint(st,0);
return 0;
+ }
switch (num) {
case 1:
@@ -9772,25 +9766,25 @@ BUILDIN_FUNC(guardian)
const char *str,*map,*evt="";
struct script_data *data;
- map =conv_str(st,script_getdata(st,2));
- x =conv_num(st,script_getdata(st,3));
- y =conv_num(st,script_getdata(st,4));
- str =conv_str(st,script_getdata(st,5));
- class_=conv_num(st,script_getdata(st,6));
+ map =script_getstr(st,2);
+ x =script_getnum(st,3);
+ y =script_getnum(st,4);
+ str =script_getstr(st,5);
+ class_=script_getnum(st,6);
if( script_hasdata(st,8) )
{// "<event label>",<guardian index>
- evt=conv_str(st,script_getdata(st,7));
- guardian=conv_num(st,script_getdata(st,8));
+ evt=script_getstr(st,7);
+ guardian=script_getnum(st,8);
} else if( script_hasdata(st,7) ){
data=script_getdata(st,7);
get_val(st,data);
if( data_isstring(data) )
{// "<event label>"
- evt=conv_str(st,script_getdata(st,7));
+ evt=script_getstr(st,7);
} else if( data_isint(data) )
{// <guardian index>
- guardian=conv_num(st,script_getdata(st,7));
+ guardian=script_getnum(st,7);
} else {
ShowError("buildin_guardian: invalid data type for argument #8 (%d).", data->type);
report_src(st);
@@ -9810,7 +9804,7 @@ BUILDIN_FUNC(guardian)
*/
BUILDIN_FUNC(guardianinfo)
{
- int guardian=conv_num(st,script_getdata(st,2));
+ int guardian=script_getnum(st,2);
struct map_session_data *sd=script_rid2sd(st);
struct guild_castle *gc=guild_mapname2gc(map[sd->bl.m].name);
@@ -9840,7 +9834,7 @@ BUILDIN_FUNC(getitemname)
data=script_getdata(st,2);
get_val(st,data);
- if( data->type==C_STR || data->type==C_CONSTSTR ){
+ if( data_isstring(data) ){
const char *name=conv_str(st,data);
struct item_data *item_data = itemdb_searchname(name);
if( item_data )
@@ -9869,7 +9863,7 @@ BUILDIN_FUNC(getitemslots)
int item_id;
struct item_data *i_data;
- item_id=conv_num(st,script_getdata(st,2));
+ item_id=script_getnum(st,2);
i_data = itemdb_exists(item_id);
@@ -9909,8 +9903,8 @@ BUILDIN_FUNC(getiteminfo)
int *item_arr;
struct item_data *i_data;
- item_id = conv_num(st,script_getdata(st,2));
- n = conv_num(st,script_getdata(st,3));
+ item_id = script_getnum(st,2);
+ n = script_getnum(st,3);
i_data = itemdb_exists(item_id);
if (i_data && n>=0 && n<14) {
@@ -9951,9 +9945,9 @@ BUILDIN_FUNC(setiteminfo)
int *item_arr;
struct item_data *i_data;
- item_id = conv_num(st,script_getdata(st,2));
- n = conv_num(st,script_getdata(st,3));
- value = conv_num(st,script_getdata(st,4));
+ item_id = script_getnum(st,2);
+ n = script_getnum(st,3);
+ value = script_getnum(st,4);
i_data = itemdb_exists(item_id);
if (i_data && n>=0 && n<14) {
@@ -9983,8 +9977,8 @@ BUILDIN_FUNC(getequipcardid)
int i,num,slot;
struct map_session_data *sd;
- num=conv_num(st,script_getdata(st,2));
- slot=conv_num(st,script_getdata(st,3));
+ num=script_getnum(st,2);
+ slot=script_getnum(st,3);
sd=script_rid2sd(st);
i=pc_checkequip(sd,equip[num-1]);
if(i >= 0 && slot>=0 && slot<4)
@@ -10017,10 +10011,10 @@ BUILDIN_FUNC(petskillbonus)
} else //init
pd->bonus = (struct pet_bonus *) aMalloc(sizeof(struct pet_bonus));
- pd->bonus->type=conv_num(st,script_getdata(st,2));
- pd->bonus->val=conv_num(st,script_getdata(st,3));
- pd->bonus->duration=conv_num(st,script_getdata(st,4));
- pd->bonus->delay=conv_num(st,script_getdata(st,5));
+ pd->bonus->type=script_getnum(st,2);
+ pd->bonus->val=script_getnum(st,3);
+ pd->bonus->duration=script_getnum(st,4);
+ pd->bonus->delay=script_getnum(st,5);
if (pd->state.skillbonus == 1)
pd->state.skillbonus=0; // waiting state
@@ -10047,7 +10041,7 @@ BUILDIN_FUNC(petloot)
if(sd==NULL || sd->pd==NULL)
return 0;
- max=conv_num(st,script_getdata(st,2));
+ max=script_getnum(st,2);
if(max < 1)
max = 1; //Let'em loot at least 1 item.
@@ -10146,7 +10140,7 @@ BUILDIN_FUNC(disguise)
struct map_session_data *sd=script_rid2sd(st);
int id;
- id = conv_num(st,script_getdata(st,2));
+ id = script_getnum(st,2);
if (!mobdb_checkid(id) && !npcdb_checkid(id)) {
script_pushint(st,0);
@@ -10188,8 +10182,8 @@ BUILDIN_FUNC(classchange)
if(bl==NULL) return 0;
- _class=conv_num(st,script_getdata(st,2));
- type=conv_num(st,script_getdata(st,3));
+ _class=script_getnum(st,2);
+ type=script_getnum(st,3);
clif_class_change(bl,_class,type);
return 0;
}
@@ -10202,7 +10196,7 @@ BUILDIN_FUNC(misceffect)
{
int type;
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
if(st->oid && st->oid != fake_nd->bl.id) {
struct block_list *bl = map_id2bl(st->oid);
if (bl)
@@ -10227,8 +10221,8 @@ BUILDIN_FUNC(soundeffect)
int type=0;
- name=conv_str(st,script_getdata(st,2));
- type=conv_num(st,script_getdata(st,3));
+ name=script_getstr(st,2);
+ type=script_getnum(st,3);
if(sd){
if(!st->rid)
clif_soundeffect(sd,map_id2bl(st->oid),name,type);
@@ -10262,9 +10256,9 @@ BUILDIN_FUNC(soundeffectall)
struct block_list *bl;
int type, coverage, x0, y0, x1, y1;
- name=conv_str(st,script_getdata(st,2));
- type=conv_num(st,script_getdata(st,3));
- coverage=conv_num(st,script_getdata(st,4));
+ name=script_getstr(st,2);
+ type=script_getnum(st,3);
+ coverage=script_getnum(st,4);
if(!st->rid)
bl = map_id2bl(st->oid);
@@ -10275,12 +10269,12 @@ BUILDIN_FUNC(soundeffectall)
if(coverage < 23){
clif_soundeffectall(bl,name,type,coverage);
}else {
- if(st->end > st->start+9){
- map=conv_str(st,script_getdata(st,5));
- x0 = conv_num(st,script_getdata(st,6));
- y0 = conv_num(st,script_getdata(st,7));
- x1 = conv_num(st,script_getdata(st,8));
- y1 = conv_num(st,script_getdata(st,9));
+ if(script_hasdata(st,9)){
+ map= script_getstr(st,5);
+ x0 = script_getnum(st,6);
+ y0 = script_getnum(st,7);
+ x1 = script_getnum(st,8);
+ y1 = script_getnum(st,9);
map_foreachinarea(soundeffect_sub,map_mapname2mapid(map),x0,y0,x1,y1,BL_PC,name,type);
} else {
ShowError("buildin_soundeffectall: insufficient arguments for specific area broadcast.\n");
@@ -10310,8 +10304,8 @@ BUILDIN_FUNC(petrecovery)
} else //Init
pd->recovery = (struct pet_recovery *)aMalloc(sizeof(struct pet_recovery));
- pd->recovery->type=conv_num(st,script_getdata(st,2));
- pd->recovery->delay=conv_num(st,script_getdata(st,3));
+ pd->recovery->type=script_getnum(st,2);
+ pd->recovery->delay=script_getnum(st,3);
pd->recovery->timer=-1;
@@ -10345,10 +10339,10 @@ BUILDIN_FUNC(petheal)
pd->s_skill->id=0; //This id identifies that it IS petheal rather than pet_skillsupport
//Use the lv as the amount to heal
- pd->s_skill->lv=conv_num(st,script_getdata(st,2));
- pd->s_skill->delay=conv_num(st,script_getdata(st,3));
- pd->s_skill->hp=conv_num(st,script_getdata(st,4));
- pd->s_skill->sp=conv_num(st,script_getdata(st,5));
+ pd->s_skill->lv=script_getnum(st,2);
+ pd->s_skill->delay=script_getnum(st,3);
+ pd->s_skill->hp=script_getnum(st,4);
+ pd->s_skill->sp=script_getnum(st,5);
//Use delay as initial offset to avoid skill/heal exploits
if (battle_config.pet_equip_required && pd->pet.equip == 0)
@@ -10375,11 +10369,11 @@ BUILDIN_FUNC(petskillattack)
if (pd->a_skill == NULL)
pd->a_skill = (struct pet_skill_attack *)aMalloc(sizeof(struct pet_skill_attack));
- pd->a_skill->id=conv_num(st,script_getdata(st,2));
- pd->a_skill->lv=conv_num(st,script_getdata(st,3));
+ pd->a_skill->id=script_getnum(st,2);
+ pd->a_skill->lv=script_getnum(st,3);
pd->a_skill->div_ = 0;
- pd->a_skill->rate=conv_num(st,script_getdata(st,4));
- pd->a_skill->bonusrate=conv_num(st,script_getdata(st,5));
+ pd->a_skill->rate=script_getnum(st,4);
+ pd->a_skill->bonusrate=script_getnum(st,5);
return 0;
}
@@ -10400,11 +10394,11 @@ BUILDIN_FUNC(petskillattack2)
if (pd->a_skill == NULL)
pd->a_skill = (struct pet_skill_attack *)aMalloc(sizeof(struct pet_skill_attack));
- pd->a_skill->id=conv_num(st,script_getdata(st,2));
- pd->a_skill->lv=conv_num(st,script_getdata(st,3));
- pd->a_skill->div_ = conv_num(st,script_getdata(st,4));
- pd->a_skill->rate=conv_num(st,script_getdata(st,5));
- pd->a_skill->bonusrate=conv_num(st,script_getdata(st,6));
+ pd->a_skill->id=script_getnum(st,2);
+ pd->a_skill->lv=script_getnum(st,3);
+ pd->a_skill->div_ = script_getnum(st,4);
+ pd->a_skill->rate=script_getnum(st,5);
+ pd->a_skill->bonusrate=script_getnum(st,6);
return 0;
}
@@ -10434,11 +10428,11 @@ BUILDIN_FUNC(petskillsupport)
} else //init memory
pd->s_skill = (struct pet_skill_support *) aMalloc(sizeof(struct pet_skill_support));
- pd->s_skill->id=conv_num(st,script_getdata(st,2));
- pd->s_skill->lv=conv_num(st,script_getdata(st,3));
- pd->s_skill->delay=conv_num(st,script_getdata(st,4));
- pd->s_skill->hp=conv_num(st,script_getdata(st,5));
- pd->s_skill->sp=conv_num(st,script_getdata(st,6));
+ pd->s_skill->id=script_getnum(st,2);
+ pd->s_skill->lv=script_getnum(st,3);
+ pd->s_skill->delay=script_getnum(st,4);
+ pd->s_skill->hp=script_getnum(st,5);
+ pd->s_skill->sp=script_getnum(st,6);
//Use delay as initial offset to avoid skill/heal exploits
if (battle_config.pet_equip_required && pd->pet.equip == 0)
@@ -10457,8 +10451,8 @@ BUILDIN_FUNC(skilleffect)
{
struct map_session_data *sd;
- int skillid=conv_num(st,script_getdata(st,2));
- int skilllv=conv_num(st,script_getdata(st,3));
+ int skillid=script_getnum(st,2);
+ int skilllv=script_getnum(st,3);
sd=script_rid2sd(st);
clif_skill_nodamage(&sd->bl,&sd->bl,skillid,skilllv,1);
@@ -10474,10 +10468,10 @@ BUILDIN_FUNC(npcskilleffect)
{
struct block_list *bl= map_id2bl(st->oid);
- int skillid=conv_num(st,script_getdata(st,2));
- int skilllv=conv_num(st,script_getdata(st,3));
- int x=conv_num(st,script_getdata(st,4));
- int y=conv_num(st,script_getdata(st,5));
+ int skillid=script_getnum(st,2);
+ int skilllv=script_getnum(st,3);
+ int x=script_getnum(st,4);
+ int y=script_getnum(st,5);
if (bl)
clif_skill_poseffect(bl,skillid,skilllv,x,y,gettick());
@@ -10496,7 +10490,7 @@ BUILDIN_FUNC(specialeffect)
if(bl==NULL)
return 0;
- clif_specialeffect(bl,conv_num(st,script_getdata(st,2)), ((st->end > st->start+3)?conv_num(st,script_getdata(st,3)):AREA));
+ clif_specialeffect(bl,script_getnum(st,2), (script_hasdata(st,3)?script_getnum(st,3):AREA));
return 0;
}
@@ -10508,7 +10502,7 @@ BUILDIN_FUNC(specialeffect2)
if(sd==NULL)
return 0;
- clif_specialeffect(&sd->bl,conv_num(st,script_getdata(st,2)), ((st->end > st->start+3)?conv_num(st,script_getdata(st,3)):AREA));
+ clif_specialeffect(&sd->bl,script_getnum(st,2), (script_hasdata(st,3)?script_getnum(st,3):AREA));
return 0;
}
@@ -10552,7 +10546,7 @@ BUILDIN_FUNC(atcommand)
struct map_session_data *sd=NULL;
const char *cmd;
- cmd = conv_str(st,script_getdata(st,2));
+ cmd = script_getstr(st,2);
if (st->rid)
sd = script_rid2sd(st);
@@ -10589,7 +10583,7 @@ BUILDIN_FUNC(charcommand)
struct map_session_data *sd=NULL;
const char *cmd;
- cmd = conv_str(st,script_getdata(st,2));
+ cmd = script_getstr(st,2);
if (st->rid)
sd = script_rid2sd(st);
@@ -10631,7 +10625,7 @@ BUILDIN_FUNC(dispbottom)
{
struct map_session_data *sd=script_rid2sd(st);
const char *message;
- message=conv_str(st,script_getdata(st,2));
+ message=script_getstr(st,2);
if(sd)
clif_disp_onlyself(sd,message,(int)strlen(message));
return 0;
@@ -10670,7 +10664,7 @@ BUILDIN_FUNC(getpetinfo)
{
struct map_session_data *sd=script_rid2sd(st);
struct pet_data *pd;
- int type=conv_num(st,script_getdata(st,2));
+ int type=script_getnum(st,2);
if(sd && sd->status.pet_id && sd->pd){
pd = sd->pd;
@@ -10715,7 +10709,7 @@ BUILDIN_FUNC(checkequipedcard)
{
struct map_session_data *sd=script_rid2sd(st);
int n,i,c=0;
- c=conv_num(st,script_getdata(st,2));
+ c=script_getnum(st,2);
if(sd){
for(i=0;i<MAX_INVENTORY;i++){
@@ -10736,7 +10730,7 @@ BUILDIN_FUNC(checkequipedcard)
BUILDIN_FUNC(jump_zero)
{
int sel;
- sel=conv_num(st,script_getdata(st,2));
+ sel=script_getnum(st,2);
if(!sel) {
int pos;
if( st->stack->stack_data[st->start+3].type!=C_POS ){
@@ -10745,7 +10739,7 @@ BUILDIN_FUNC(jump_zero)
return 0;
}
- pos=conv_num(st,script_getdata(st,3));
+ pos=script_getnum(st,3);
st->pos=pos;
st->state=GOTO;
// printf("script: jump_zero: jumpto : %d\n",pos);
@@ -10861,7 +10855,7 @@ BUILDIN_FUNC(getmapmobs)
int count=0,c;
struct block_list *bl;
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
if(strcmp(str,"this")==0){
struct map_session_data *sd=script_rid2sd(st);
@@ -10904,9 +10898,9 @@ BUILDIN_FUNC(movenpc)
const char *npc;
int x,y;
- npc = conv_str(st,script_getdata(st,2));
- x = conv_num(st,script_getdata(st,3));
- y = conv_num(st,script_getdata(st,4));
+ npc = script_getstr(st,2);
+ x = script_getnum(st,3);
+ y = script_getnum(st,4);
if ((nd = npc_name2id(npc)) == NULL)
return -1;
@@ -10928,8 +10922,8 @@ BUILDIN_FUNC(message)
sd = script_rid2sd(st);
- player = conv_str(st,script_getdata(st,2));
- msg = conv_str(st,script_getdata(st,3));
+ player = script_getstr(st,2);
+ msg = script_getstr(st,3);
if((pl_sd=map_nick2sd((char *) player)) == NULL)
return 0;
@@ -10947,7 +10941,7 @@ BUILDIN_FUNC(npctalk)
char message[255];
struct npc_data *nd=(struct npc_data *)map_id2bl(st->oid);
- str=conv_str(st,script_getdata(st,2));
+ str=script_getstr(st,2);
if(nd) {
memcpy(message, nd->name, NAME_LENGTH);
@@ -10990,7 +10984,7 @@ BUILDIN_FUNC(npcspeed)
struct npc_data *nd=(struct npc_data *)map_id2bl(st->oid);
int x=0;
- x=conv_num(st,script_getdata(st,2));
+ x=script_getnum(st,2);
if(nd) {
nd->speed=x;
@@ -11004,8 +10998,8 @@ BUILDIN_FUNC(npcwalkto)
struct npc_data *nd=(struct npc_data *)map_id2bl(st->oid);
int x=0,y=0;
- x=conv_num(st,script_getdata(st,2));
- y=conv_num(st,script_getdata(st,3));
+ x=script_getnum(st,2);
+ y=script_getnum(st,3);
if(nd) {
unit_walktoxy(&nd->bl,x,y,0);
@@ -11036,7 +11030,7 @@ BUILDIN_FUNC(getlook)
struct map_session_data *sd;
sd=script_rid2sd(st);
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
val=-1;
switch(type){
case LOOK_HAIR: //1
@@ -11083,7 +11077,7 @@ BUILDIN_FUNC(getsavepoint)
sd=script_rid2sd(st);
- type=conv_num(st,script_getdata(st,2));
+ type=script_getnum(st,2);
x=sd->status.save_point.x;
y=sd->status.save_point.y;
@@ -11158,12 +11152,12 @@ BUILDIN_FUNC(getmapxy)
}
//??????????? >>> Possible needly check function parameters on C_STR,C_INT,C_INT <<< ???????????//
- type=conv_num(st,script_getdata(st,5));
+ type=script_getnum(st,5);
switch (type){
case 0: //Get Character Position
- if( st->end>st->start+6 )
- sd=map_nick2sd(conv_str(st,script_getdata(st,6)));
+ if( script_hasdata(st,6) )
+ sd=map_nick2sd(script_getstr(st,6));
else
sd=script_rid2sd(st);
@@ -11171,18 +11165,18 @@ BUILDIN_FUNC(getmapxy)
bl = &sd->bl;
break;
case 1: //Get NPC Position
- if( st->end > st->start+6 )
+ if( script_hasdata(st,6) )
{
struct npc_data *nd;
- nd=npc_name2id(conv_str(st,script_getdata(st,6)));
+ nd=npc_name2id(script_getstr(st,6));
if (nd)
bl = &nd->bl;
} else //In case the origin is not an npc?
bl=map_id2bl(st->oid);
break;
case 2: //Get Pet Position
- if(st->end>st->start+6)
- sd=map_nick2sd(conv_str(st,script_getdata(st,6)));
+ if(script_hasdata(st,6))
+ sd=map_nick2sd(script_getstr(st,6));
else
sd=script_rid2sd(st);
@@ -11192,8 +11186,8 @@ BUILDIN_FUNC(getmapxy)
case 3: //Get Mob Position
break; //Not supported?
case 4: //Get Homun Position
- if(st->end>st->start+6)
- sd=map_nick2sd(conv_str(st,script_getdata(st,6)));
+ if(script_hasdata(st,6))
+ sd=map_nick2sd(script_getstr(st,6));
else
sd=script_rid2sd(st);
@@ -11254,9 +11248,10 @@ BUILDIN_FUNC(getmapxy)
*/
BUILDIN_FUNC(logmes)
{
+ const char *str;
if (log_config.npc <= 0 ) return 0;
- conv_str(st,script_getdata(st,2));
- log_npc(script_rid2sd(st),st->stack->stack_data[st->start+2].u.str);
+ str = script_getstr(st,2);
+ log_npc(script_rid2sd(st),str);
return 0;
}
@@ -11271,12 +11266,12 @@ BUILDIN_FUNC(summon)
sd=script_rid2sd(st);
if (!sd) return 0;
- str =conv_str(st,script_getdata(st,2));
- _class=conv_num(st,script_getdata(st,3));
- if( st->end>st->start+4 )
- timeout=conv_num(st,script_getdata(st,4));
- if( st->end>st->start+5 ){
- event=conv_str(st,script_getdata(st,5));
+ str =script_getstr(st,2);
+ _class=script_getnum(st,3);
+ if( script_hasdata(st,4) )
+ timeout=script_getnum(st,4);
+ if( script_hasdata(st,5) ){
+ event=script_getstr(st,5);
check_event(st, event);
}
@@ -11579,9 +11574,9 @@ BUILDIN_FUNC(adopt)
{
int ret;
- const char *parent1 = conv_str(st,script_getdata(st,2));
- const char *parent2 = conv_str(st,script_getdata(st,3));
- const char *child = conv_str(st,script_getdata(st,4));
+ const char *parent1 = script_getstr(st,2);
+ const char *parent2 = script_getstr(st,3);
+ const char *child = script_getstr(st,4);
struct map_session_data *p1_sd = map_nick2sd(parent1);
struct map_session_data *p2_sd = map_nick2sd(parent2);
@@ -11622,7 +11617,7 @@ BUILDIN_FUNC(unequip)
size_t num;
struct map_session_data *sd;
- num = conv_num(st,script_getdata(st,2)) - 1;
+ num = script_getnum(st,2) - 1;
sd=script_rid2sd(st);
if(sd!=NULL && num<10)
{
@@ -11641,7 +11636,7 @@ BUILDIN_FUNC(equip)
sd = script_rid2sd(st);
- nameid=conv_num(st,script_getdata(st,2));
+ nameid=script_getnum(st,2);
if((item_data = itemdb_exists(nameid)) == NULL)
{
if(battle_config.error_log)
@@ -11659,8 +11654,8 @@ BUILDIN_FUNC(autoequip)
{
int nameid, flag;
struct item_data *item_data;
- nameid=conv_num(st,script_getdata(st,2));
- flag=conv_num(st,script_getdata(st,3));
+ nameid=script_getnum(st,2);
+ flag=script_getnum(st,3);
if(nameid>=500 && (item_data = itemdb_search(nameid)) != NULL){
item_data->flag.autoequip = flag>0?1:0;
}
@@ -11671,8 +11666,8 @@ BUILDIN_FUNC(setbattleflag)
{
const char *flag, *value;
- flag = conv_str(st,script_getdata(st,2));
- value = conv_str(st,script_getdata(st,3));
+ flag = script_getstr(st,2);
+ value = script_getstr(st,3);
if (battle_set_value(flag, value) == 0)
ShowWarning("buildin_setbattleflag: unknown battle_config flag '%s'\n",flag);
@@ -11685,7 +11680,7 @@ BUILDIN_FUNC(setbattleflag)
BUILDIN_FUNC(getbattleflag)
{
const char *flag;
- flag = conv_str(st,script_getdata(st,2));
+ flag = script_getstr(st,2);
script_pushint(st,battle_get_value(flag));
return 0;
}
@@ -11696,7 +11691,7 @@ BUILDIN_FUNC(getbattleflag)
BUILDIN_FUNC(getstrlen)
{
- const char *str = conv_str(st,script_getdata(st,2));
+ const char *str = script_getstr(st,2);
int len = (str) ? (int)strlen(str) : 0;
script_pushint(st,len);
@@ -11708,8 +11703,8 @@ BUILDIN_FUNC(getstrlen)
//-------------------------------------------------------
BUILDIN_FUNC(charisalpha)
{
- const char *str=conv_str(st,script_getdata(st,2));
- int pos=conv_num(st,script_getdata(st,3));
+ const char *str=script_getstr(st,2);
+ int pos=script_getnum(st,3);
int val = ( str && pos>0 && (unsigned int)pos<strlen(str) ) ? ISALPHA( str[pos] ) : 0;
@@ -11723,9 +11718,9 @@ BUILDIN_FUNC(fakenpcname)
const char *name;
const char *newname;
int look;
- name = conv_str(st,script_getdata(st,2));
- newname = conv_str(st,script_getdata(st,3));
- look = conv_num(st,script_getdata(st,4));
+ name = script_getstr(st,2);
+ newname = script_getstr(st,3);
+ look = script_getnum(st,4);
if(look > 32767 || look < -32768) {
ShowError("buildin_fakenpcname: Invalid look value %d\n",look);
return 1; // Safety measure to prevent runtime errors
@@ -11737,7 +11732,7 @@ BUILDIN_FUNC(fakenpcname)
BUILDIN_FUNC(atoi)
{
const char *value;
- value = conv_str(st,script_getdata(st,2));
+ value = script_getstr(st,2);
script_pushint(st,atoi(value));
return 0;
}
@@ -11749,8 +11744,8 @@ BUILDIN_FUNC(compare)
{
const char *message;
const char *cmpstring;
- message = conv_str(st,script_getdata(st,2));
- cmpstring = conv_str(st,script_getdata(st,3));
+ message = script_getstr(st,2);
+ cmpstring = script_getstr(st,3);
script_pushint(st,(stristr(message,cmpstring) != NULL));
return 0;
}
@@ -11762,7 +11757,7 @@ BUILDIN_FUNC(compare)
BUILDIN_FUNC(sqrt)
{
double i, a;
- i = conv_num(st, script_getdata(st,2));
+ i = script_getnum(st,2);
a = sqrt(i);
script_pushint(st,(int)a);
return 0;
@@ -11771,8 +11766,8 @@ BUILDIN_FUNC(sqrt)
BUILDIN_FUNC(pow)
{
double i, a, b;
- a = conv_num(st, script_getdata(st,2));
- b = conv_num(st, script_getdata(st,3));
+ a = script_getnum(st,2);
+ b = script_getnum(st,3);
i = pow(a,b);
script_pushint(st,(int)i);
return 0;
@@ -11781,10 +11776,10 @@ BUILDIN_FUNC(distance)
{
int x0, y0, x1, y1;
- x0 = conv_num(st, script_getdata(st,2));
- y0 = conv_num(st, script_getdata(st,3));
- x1 = conv_num(st, script_getdata(st,4));
- y1 = conv_num(st, script_getdata(st,5));
+ x0 = script_getnum(st,2);
+ y0 = script_getnum(st,3);
+ x1 = script_getnum(st,4);
+ y1 = script_getnum(st,5);
script_pushint(st,distance(x0-x1, y0-y1));
return 0;
@@ -11793,10 +11788,10 @@ BUILDIN_FUNC(distance)
BUILDIN_FUNC(checkcell)
{
int m;
- const char *map = conv_str(st, script_getdata(st,2));
+ const char *map = script_getstr(st, 2);
m = mapindex_name2id(map);
if(m){
- script_pushint(st,map_getcell(m, conv_num(st, script_getdata(st,3)), conv_num(st, script_getdata(st,4)),conv_num(st, script_getdata(st,5))));
+ script_pushint(st,map_getcell(m, script_getnum(st,3), script_getnum(st,4),script_getnum(st,5)));
} else {
script_pushint(st,0);
}
@@ -11817,8 +11812,8 @@ BUILDIN_FUNC(setd)
char varname[100];
const char *value, *buffer;
int elem;
- buffer = conv_str(st, script_getdata(st,2));
- value = conv_str(st, script_getdata(st,3));
+ buffer = script_getstr(st, 2);
+ value = script_getstr(st, 3);
if(sscanf(buffer, "%[^[][%d]", varname, &elem) < 2)
elem = 0;
@@ -11844,7 +11839,7 @@ BUILDIN_FUNC(query_sql)
struct { char * dst_var_name; char type; } row[32];
struct map_session_data *sd = (st->rid)? script_rid2sd(st) : NULL;
- query = conv_str(st,script_getdata(st,2));
+ query = script_getstr(st,2);
strcpy(tmp_sql, query);
if(mysql_query(&mmysql_handle,tmp_sql)){
ShowSQL("DB error - %s\n",mysql_error(&mmysql_handle));
@@ -11920,7 +11915,7 @@ BUILDIN_FUNC(escape_sql)
{
const char *query;
char *t_query;
- query = conv_str(st,script_getdata(st,2));
+ query = script_getstr(st,2);
t_query = aMallocA((strlen(query)*2+1)*sizeof(char));
jstrescapecpy(t_query,query);
@@ -11935,7 +11930,7 @@ BUILDIN_FUNC(getd)
//struct script_data dat;
int elem;
- buffer = conv_str(st, script_getdata(st,2));
+ buffer = script_getstr(st, 2);
if(sscanf(buffer, "%[^[][%d]", varname, &elem) < 2)
elem = 0;
@@ -11954,7 +11949,7 @@ BUILDIN_FUNC(petstat)
struct map_session_data *sd = NULL;
struct pet_data *pd;
char *tmp;
- int flag = conv_num(st, script_getdata(st,2));
+ int flag = script_getnum(st,2);
sd = script_rid2sd(st);
if(!sd || !sd->status.pet_id || !sd->pd){
if(flag == 2)
@@ -11999,9 +11994,9 @@ BUILDIN_FUNC(callshop)
script_pushint(st,0);
return 0;
}
- shopname = conv_str(st, script_getdata(st,2));
- if( st->end>st->start+3 )
- flag = conv_num(st, script_getdata(st,3));
+ shopname = script_getstr(st, 2);
+ if( script_hasdata(st,3) )
+ flag = script_getnum(st,3);
nd = npc_name2id(shopname);
if (!nd || nd->bl.type!=BL_NPC || nd->bl.subtype!=SHOP) {
ShowError("buildin_callshop: Shop [%s] not found (or NPC is not shop type)", shopname);
@@ -12035,7 +12030,7 @@ BUILDIN_FUNC(npcshopitem)
int i = 3;
int amount;
- const char* npcname = conv_str(st, script_getdata(st,2));
+ const char* npcname = script_getstr(st, 2);
nd = npc_name2id(npcname);
if(!nd || nd->bl.subtype!=SHOP)
@@ -12058,10 +12053,10 @@ BUILDIN_FUNC(npcshopitem)
n = 0;
- while (st->end > st->start + i) {
- nd->u.shop_item[n].nameid = conv_num(st, script_getdata(st,i));
+ while (script_hasdata(st,i)) {
+ nd->u.shop_item[n].nameid = script_getnum(st,i);
i++;
- nd->u.shop_item[n].value = conv_num(st, script_getdata(st,i));
+ nd->u.shop_item[n].value = script_getnum(st,i);
i++;
n++;
}
@@ -12075,7 +12070,7 @@ BUILDIN_FUNC(npcshopadditem)
int i = 3;
int amount;
- const char* npcname = conv_str(st, script_getdata(st,2));
+ const char* npcname = script_getstr(st, 2);
nd = npc_name2id(npcname);
if (!nd || nd->bl.subtype!=SHOP)
@@ -12094,10 +12089,10 @@ BUILDIN_FUNC(npcshopadditem)
sizeof(nd->u.shop_item[0]) * (amount+n));
map_addiddb(&nd->bl);
- while(st->end > st->start + i){
- nd->u.shop_item[n].nameid = conv_num(st, script_getdata(st,i));
+ while(script_hasdata(st,i)){
+ nd->u.shop_item[n].nameid = script_getnum(st,i);
i++;
- nd->u.shop_item[n].value = conv_num(st, script_getdata(st,i));
+ nd->u.shop_item[n].value = script_getnum(st,i);
i++;
n++;
}
@@ -12117,7 +12112,7 @@ BUILDIN_FUNC(npcshopdelitem)
int i=3;
int size = 0;
- const char* npcname = conv_str(st, script_getdata(st,2));
+ const char* npcname = script_getstr(st, 2);
nd = npc_name2id(npcname);
if (!nd || nd->bl.subtype!=SHOP)
@@ -12129,9 +12124,9 @@ BUILDIN_FUNC(npcshopdelitem)
while (nd->u.shop_item[size].nameid)
size++;
- while (st->end > st->start+i) {
+ while (script_hasdata(st,i)) {
for(n=0;nd->u.shop_item[n].nameid && n < MAX_SHOPITEM;n++) {
- if (nd->u.shop_item[n].nameid == conv_num(st, script_getdata(st,i))) {
+ if (nd->u.shop_item[n].nameid == script_getnum(st,i)) {
// We're moving 1 extra empty block. Junk data is eliminated later.
memmove(&nd->u.shop_item[n], &nd->u.shop_item[n+1], sizeof(nd->u.shop_item[0])*(size-n));
}
@@ -12158,11 +12153,11 @@ BUILDIN_FUNC(npcshopdelitem)
BUILDIN_FUNC(npcshopattach)
{
struct npc_data *nd=NULL;
- const char* npcname = conv_str(st, script_getdata(st,2));
+ const char* npcname = script_getstr(st, 2);
int flag = 1;
if( script_hasdata(st,3) )
- flag = conv_num(st, script_getdata(st,3));
+ flag = script_getnum(st,3);
nd = npc_name2id(npcname);
@@ -12197,10 +12192,10 @@ BUILDIN_FUNC(setitemscript)
struct item_data *i_data;
struct script_code **dstscript;
- item_id = conv_num(st,script_getdata(st,2));
- script = conv_str(st,script_getdata(st,3));
+ item_id = script_getnum(st,2);
+ script = script_getstr(st,3);
if( script_hasdata(st,4) )
- n=conv_num(st,script_getdata(st,4));
+ n=script_getnum(st,4);
i_data = itemdb_exists(item_id);
if (!i_data || script==NULL || script[0]!='{') {
@@ -12230,9 +12225,9 @@ BUILDIN_FUNC(setitemscript)
BUILDIN_FUNC(addmonsterdrop)
{
int class_,item_id,chance;
- class_=conv_num(st,script_getdata(st,2));
- item_id=conv_num(st,script_getdata(st,3));
- chance=conv_num(st,script_getdata(st,4));
+ class_=script_getnum(st,2);
+ item_id=script_getnum(st,3);
+ chance=script_getnum(st,4);
if(class_>1000 && item_id>500 && chance>0) {
script_pushint(st,1);
} else {
@@ -12243,8 +12238,8 @@ BUILDIN_FUNC(addmonsterdrop)
BUILDIN_FUNC(delmonsterdrop)
{
int class_,item_id;
- class_=conv_num(st,script_getdata(st,2));
- item_id=conv_num(st,script_getdata(st,3));
+ class_=script_getnum(st,2);
+ item_id=script_getnum(st,3);
if(class_>1000 && item_id>500) {
script_pushint(st,1);
} else {
@@ -12263,14 +12258,14 @@ BUILDIN_FUNC(getmonsterinfo)
struct mob_db *mob;
int mob_id;
- mob_id = conv_num(st,script_getdata(st,2));
+ mob_id = script_getnum(st,2);
if (!mobdb_checkid(mob_id)) {
ShowError("buildin_getmonsterinfo: Wrong Monster ID: %i", mob_id);
script_pushint(st,-1);
return -1;
}
mob = mob_db(mob_id);
- switch ( conv_num(st,script_getdata(st,3)) ) {
+ switch ( script_getnum(st,3) ) {
case 0: //Name
push_str(st->stack,C_CONSTSTR,mob->jname);
break;
@@ -12347,8 +12342,8 @@ BUILDIN_FUNC(checkvending) // check vending [Nab4]
{
struct map_session_data *sd = NULL;
- if(st->end > st->start + 2)
- sd = map_nick2sd(conv_str(st,script_getdata(st,2)));
+ if(script_hasdata(st,2))
+ sd = map_nick2sd(script_getstr(st,2));
else
sd = script_rid2sd(st);
@@ -12365,8 +12360,8 @@ BUILDIN_FUNC(checkchatting) // check chatting [Marka]
{
struct map_session_data *sd = NULL;
- if(st->end > st->start + 2)
- sd = map_nick2sd(conv_str(st,script_getdata(st,2)));
+ if(script_hasdata(st,2))
+ sd = map_nick2sd(script_getstr(st,2));
else
sd = script_rid2sd(st);
@@ -12414,7 +12409,7 @@ int axtoi(const char *hexStg)
// [Lance] Hex string to integer converter
BUILDIN_FUNC(axtoi)
{
- const char *hex = conv_str(st,script_getdata(st,2));
+ const char *hex = script_getstr(st,2);
script_pushint(st,axtoi(hex));
return 0;
}
@@ -12423,7 +12418,7 @@ BUILDIN_FUNC(axtoi)
BUILDIN_FUNC(rid2name)
{
struct block_list *bl = NULL;
- int rid = conv_num(st, script_getdata(st,2));
+ int rid = script_getnum(st,2);
if((bl = map_id2bl(rid))){
switch(bl->type){
case BL_MOB:
@@ -12458,8 +12453,8 @@ BUILDIN_FUNC(pcblockmove)
int id, flag;
struct map_session_data *sd = NULL;
- id = conv_num(st, script_getdata(st,2));
- flag = conv_num(st, script_getdata(st,3));
+ id = script_getnum(st,2);
+ flag = script_getnum(st,3);
if(id)
sd = map_id2sd(id);
@@ -12478,8 +12473,8 @@ BUILDIN_FUNC(pcfollow)
struct map_session_data *sd = NULL;
- id = conv_num(st, script_getdata(st,2));
- targetid = conv_num(st, script_getdata(st,3));
+ id = script_getnum(st,2);
+ targetid = script_getnum(st,3);
if(id)
sd = map_id2sd(id);
@@ -12498,7 +12493,7 @@ BUILDIN_FUNC(pcstopfollow)
struct map_session_data *sd = NULL;
- id = conv_num(st, script_getdata(st,2));
+ id = script_getnum(st,2);
if(id)
sd = map_id2sd(id);
@@ -12520,13 +12515,13 @@ BUILDIN_FUNC(mobspawn)
const char *str,*map;
// Who?
- str =conv_str(st,script_getdata(st,2));
+ str =script_getstr(st,2);
// What?
- class_ =conv_num(st,script_getdata(st,3));
+ class_ =script_getnum(st,3);
// Where?
- map =conv_str(st,script_getdata(st,4));
- x =conv_num(st,script_getdata(st,5));
- y =conv_num(st,script_getdata(st,6));
+ map =script_getstr(st,4);
+ x =script_getnum(st,5);
+ y =script_getnum(st,6);
id = mob_once_spawn(map_id2sd(st->rid),map,x,y,str,class_,1,"");
script_pushint(st,id);
@@ -12538,7 +12533,7 @@ BUILDIN_FUNC(mobremove)
{
int id;
struct block_list *bl = NULL;
- id = conv_num(st, script_getdata(st,2));
+ id = script_getnum(st,2);
bl = map_id2bl(id);
if (bl && bl->type == BL_MOB)
@@ -12553,7 +12548,7 @@ BUILDIN_FUNC(getmobdata)
char *name;
struct mob_data *md = NULL;
struct map_session_data *sd = st->rid?map_id2sd(st->rid):NULL;
- id = conv_num(st, script_getdata(st,2));
+ id = script_getnum(st,2);
if(!(md = (struct mob_data *)map_id2bl(id)) || md->bl.type != BL_MOB || st->stack->stack_data[st->start+3].type!=C_NAME ){
ShowWarning("buildin_getmobdata: Error in argument!\n");
@@ -12599,7 +12594,7 @@ BUILDIN_FUNC(setmobdata)
{
struct block_list* mob_bl;
- mob_bl = map_id2bl(conv_num(st, script_getdata(st, 2)));
+ mob_bl = map_id2bl(script_getnum(st,2));
if( mob_bl != NULL && mob_bl->type == BL_MOB )
{
@@ -12607,8 +12602,8 @@ BUILDIN_FUNC(setmobdata)
int type;
int value;
- type = conv_num(st, script_getdata(st, 3));
- value = conv_num(st, script_getdata(st, 4));
+ type = script_getnum(st,3);
+ value = script_getnum(st,4);
switch( type )
{
@@ -12711,7 +12706,7 @@ BUILDIN_FUNC(mobassist)
struct block_list* mob_bl;
// get mob
- mob_bl = map_id2bl(conv_num(st, script_getdata(st,2)));
+ mob_bl = map_id2bl(script_getnum(st,2));
if( mob_bl != NULL && mob_bl->type == BL_MOB )
{
TBL_MOB* md = (TBL_MOB*)mob_bl;
@@ -12761,14 +12756,14 @@ BUILDIN_FUNC(mobattach)
{
struct block_list* mob_bl;
- mob_bl = map_id2bl(conv_num(st, script_getdata(st,2)));
+ mob_bl = map_id2bl(script_getnum(st,2));
if( mob_bl != NULL && mob_bl->type == BL_MOB )
{
TBL_MOB* md = (TBL_MOB*)mob_bl;
TBL_NPC* nd = NULL;
if( script_hasdata(st,3) )
- nd = npc_name2id(conv_str(st, script_getdata(st,3)));
+ nd = npc_name2id(script_getstr(st, 3));
else
{
struct block_list* npc_bl = map_id2bl(st->oid);
@@ -12792,20 +12787,20 @@ BUILDIN_FUNC(unitwalk)
{
struct block_list* bl;
- bl = map_id2bl(conv_num(st, script_getdata(st,2)));
+ bl = map_id2bl(script_getnum(st,2));
if( bl == NULL )
{
script_pushint(st, 0);
}
else if( script_hasdata(st,4) )
{
- int x = conv_num(st, script_getdata(st,3));
- int y = conv_num(st, script_getdata(st,4));
+ int x = script_getnum(st,3);
+ int y = script_getnum(st,4);
script_pushint(st, unit_walktoxy(bl,x,y,0));// We'll use harder calculations.
}
else
{
- int map_id = conv_num(st, script_getdata(st,3));
+ int map_id = script_getnum(st,3);
script_pushint(st, unit_walktobl(bl,map_id2bl(map_id),65025,1));
}
@@ -12817,7 +12812,7 @@ BUILDIN_FUNC(unitwalk)
/// unitkill <unit_id>;
BUILDIN_FUNC(unitkill)
{
- struct block_list* bl = map_id2bl(conv_num(st, script_getdata(st,2)));
+ struct block_list* bl = map_id2bl(script_getnum(st,2));
if( bl != NULL )
status_kill(bl);
@@ -12836,10 +12831,10 @@ BUILDIN_FUNC(unitwarp)
short y;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
- map = map_mapname2mapid(conv_str(st, script_getdata(st,3)));
- x = (short)conv_num(st, script_getdata(st,4));
- y = (short)conv_num(st, script_getdata(st,5));
+ unit_id = script_getnum(st,2);
+ map = map_mapname2mapid(script_getstr(st, 3));
+ x = (short)script_getnum(st,4);
+ y = (short)script_getnum(st,5);
bl = map_id2bl(unit_id);
if( map >= 0 && bl != NULL )
@@ -12865,7 +12860,7 @@ BUILDIN_FUNC(unitattack)
int actiontype = 0;
// get unit
- unit_bl = map_id2bl(conv_num(st, script_getdata(st, 2)));
+ unit_bl = map_id2bl(script_getnum(st,2));
if( unit_bl == NULL ) {
script_pushint(st, 0);
return 0;
@@ -12889,7 +12884,7 @@ BUILDIN_FUNC(unitattack)
// get actiontype
if( script_hasdata(st,4) )
- actiontype = conv_num(st, script_getdata(st, 4));
+ actiontype = script_getnum(st,4);
switch( unit_bl->type )
{
@@ -12921,7 +12916,7 @@ BUILDIN_FUNC(unitstop)
int unit_id;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
+ unit_id = script_getnum(st,2);
bl = map_id2bl(unit_id);
if( bl != NULL )
@@ -12944,8 +12939,8 @@ BUILDIN_FUNC(unittalk)
const char* message;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
- message = conv_str(st, script_getdata(st,3));
+ unit_id = script_getnum(st,2);
+ message = script_getstr(st, 3);
bl = map_id2bl(unit_id);
if( bl != NULL )
@@ -12972,8 +12967,8 @@ BUILDIN_FUNC(unitemote)
int emotion;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
- emotion = conv_num(st, script_getdata(st,3));
+ unit_id = script_getnum(st,2);
+ emotion = script_getnum(st,3);
bl = map_id2bl(unit_id);
if( bl != NULL )
clif_emotion(bl, emotion);
@@ -12991,8 +12986,8 @@ BUILDIN_FUNC(unitdeadsit)
int action;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
- action = conv_num(st, script_getdata(st,3));
+ unit_id = script_getnum(st,2);
+ action = script_getnum(st,3);
bl = map_id2bl(unit_id);
if( bl != NULL )
@@ -13027,10 +13022,10 @@ BUILDIN_FUNC(unitskilluseid)
int target_id;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
- skill_id = conv_num(st, script_getdata(st,3));
- skill_lv = conv_num(st, script_getdata(st,4));
- target_id = ( script_hasdata(st,5) ? conv_num(st,script_getdata(st,5)) : unit_id );
+ unit_id = script_getnum(st,2);
+ skill_id = script_getnum(st,3);
+ skill_lv = script_getnum(st,4);
+ target_id = ( script_hasdata(st,5) ? script_getnum(st,5) : unit_id );
bl = map_id2bl(unit_id);
if( bl != NULL )
@@ -13051,11 +13046,11 @@ BUILDIN_FUNC(unitskillusepos)
int skill_y;
struct block_list* bl;
- unit_id = conv_num(st, script_getdata(st,2));
- skill_id = conv_num(st, script_getdata(st,3));
- skill_lv = conv_num(st, script_getdata(st,4));
- skill_x = conv_num(st, script_getdata(st,5));
- skill_y = conv_num(st, script_getdata(st,6));
+ unit_id = script_getnum(st,2);
+ skill_id = script_getnum(st,3);
+ skill_lv = script_getnum(st,4);
+ skill_x = script_getnum(st,5);
+ skill_y = script_getnum(st,6);
bl = map_id2bl(unit_id);
if( bl != NULL )
@@ -13074,7 +13069,7 @@ BUILDIN_FUNC(sleep)
int ticks;
TBL_PC* sd;
- ticks = conv_num(st, script_getdata(st,2));
+ ticks = script_getnum(st,2);
sd = map_id2sd(st->rid);
// detach the player
@@ -13107,7 +13102,7 @@ BUILDIN_FUNC(sleep2)
{
int ticks;
- ticks = conv_num(st, script_getdata(st,2));
+ ticks = script_getnum(st,2);
if( ticks <= 0 )
{// do nothing
@@ -13134,7 +13129,7 @@ BUILDIN_FUNC(awake)
struct npc_data* nd;
struct linkdb_node *node = (struct linkdb_node *)sleep_db;
- nd = npc_name2id(conv_str(st, script_getdata(st,2)));
+ nd = npc_name2id(script_getstr(st, 2));
if( nd == NULL )
return 0;
@@ -13189,7 +13184,7 @@ BUILDIN_FUNC(getvariableofnpc)
{
int num = data->u.num;
char* var_name = str_buf + str_data[num&0x00ffffff].str;
- const char* npc_name = conv_str(st, script_getdata(st,3));
+ const char* npc_name = script_getstr(st, 3);
struct npc_data* nd = npc_name2id(npc_name);
if( var_name[0] != '.' || var_name[1] == '@' )
{// not a npc variable
@@ -13231,11 +13226,11 @@ BUILDIN_FUNC(warpportal)
return 1;
}
- spx = conv_num(st, script_getdata(st,2));
- spy = conv_num(st, script_getdata(st,3));
- mapindex = mapindex_name2id(conv_str(st, script_getdata(st,4)));
- tpx = conv_num(st, script_getdata(st,5));
- tpy = conv_num(st, script_getdata(st,6));
+ spx = script_getnum(st,2);
+ spy = script_getnum(st,3);
+ mapindex = mapindex_name2id(script_getstr(st, 4));
+ tpx = script_getnum(st,5);
+ tpy = script_getnum(st,6);
if( mapindex == 0 )
return 0;// map not found
diff --git a/src/map/status.c b/src/map/status.c
index e0375bfad..b7c595d51 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -5933,9 +5933,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
case SC_ORCISH:
sc->option |= OPTION_ORCISH;
break;
- case SC_SIGHTTRASHER:
- sc->option |= OPTION_SIGHTTRASHER;
- break;
case SC_FUSION:
sc->option |= OPTION_FLYING;
break;
@@ -6391,9 +6388,6 @@ int status_change_end( struct block_list* bl , int type,int tid )
case SC_RUWACH:
sc->option &= ~OPTION_RUWACH;
break;
- case SC_SIGHTTRASHER:
- sc->option &= ~OPTION_SIGHTTRASHER;
- break;
case SC_FUSION:
sc->option &= ~OPTION_FLYING;
break;
diff --git a/src/map/status.h b/src/map/status.h
index ca330d595..d0d82b825 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -480,11 +480,9 @@ enum {
#define OPTION_WEDDING 0x00001000
#define OPTION_RUWACH 0x00002000
#define OPTION_CHASEWALK 0x00004000
-//Note that clientside Flying and Xmas are 0x8000!!
-#define OPTION_XMAS 0x00020000
+//Note that clientside Flying and Xmas are 0x8000 for clients prior to 2007.
#define OPTION_FLYING 0x0008000
-//TODO: Get these Missing options...
-#define OPTION_SIGHTTRASHER 0x00010000
+#define OPTION_XMAS 0x00010000
#define OPTION_CART (OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5)