[Fixed] script functions that doesn't pass references, thanks to End_of_exam.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6801 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Lance 2006-05-28 14:05:03 +00:00
parent d86077034d
commit d9de89b463
2 changed files with 39 additions and 35 deletions

View File

@ -4,7 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/05/28 2006/05/28
* [ Protected ] : clif_parse_LGMmessage from possible hacks [Lance] * [Fixed]:
- script functions that doesn't pass references, thanks to End_of_exam. [Lance]
* [Protected]:
- clif_parse_LGMmessage from possible hacks [Lance]
* Fixed unable to store n items into storage unless n was the total amount * Fixed unable to store n items into storage unless n was the total amount
of items you had. [Skotlex] of items you had. [Skotlex]
* Suppressed compilation warnings (unsigned and signed mismatches) [Lance] * Suppressed compilation warnings (unsigned and signed mismatches) [Lance]

View File

@ -3687,8 +3687,8 @@ int buildin_getelementofarray(struct script_state *st)
push_val(st->stack,C_INT,0); push_val(st->stack,C_INT,0);
return 1; return 1;
}else{ }else{
push_val(st->stack,C_NAME, push_val2(st->stack,C_NAME,
(i<<24) | st->stack->stack_data[st->start+2].u.num ); (i<<24) | st->stack->stack_data[st->start+2].u.num, st->stack->stack_data[st->start+2].ref );
} }
}else{ }else{
ShowError("script: getelementofarray (operator[]): param1 not name !\n"); ShowError("script: getelementofarray (operator[]): param1 not name !\n");
@ -9302,7 +9302,7 @@ int buildin_getmapxy(struct script_state *st){
else else
sd=NULL; sd=NULL;
set_reg(st,sd,num,name,(void*)mapname,NULL); set_reg(st,sd,num,name,(void*)mapname,st->stack->stack_data[st->start+2].ref);
//Set MapX //Set MapX
num=st->stack->stack_data[st->start+3].u.num; num=st->stack->stack_data[st->start+3].u.num;
@ -9313,7 +9313,7 @@ int buildin_getmapxy(struct script_state *st){
sd=script_rid2sd(st); sd=script_rid2sd(st);
else else
sd=NULL; sd=NULL;
set_reg(st,sd,num,name,(void*)x,NULL); set_reg(st,sd,num,name,(void*)x,st->stack->stack_data[st->start+3].ref);
//Set MapY //Set MapY
@ -9326,7 +9326,7 @@ int buildin_getmapxy(struct script_state *st){
else else
sd=NULL; sd=NULL;
set_reg(st,sd,num,name,(void*)y,NULL); set_reg(st,sd,num,name,(void*)y,st->stack->stack_data[st->start+4].ref);
//Return Success value //Return Success value
push_val(st->stack,C_INT,0); push_val(st->stack,C_INT,0);
@ -9922,6 +9922,7 @@ void setd_sub(struct script_state *st, struct map_session_data *sd, char *varnam
int buildin_setd(struct script_state *st) int buildin_setd(struct script_state *st)
{ {
struct map_session_data *sd=NULL; struct map_session_data *sd=NULL;
TBL_NPC *nd = st->oid? ((TBL_NPC *)map_id2bl(st->oid)): NULL;
char varname[100], *buffer; char varname[100], *buffer;
char *value; char *value;
int elem; int elem;
@ -9935,9 +9936,9 @@ int buildin_setd(struct script_state *st)
sd = script_rid2sd(st); sd = script_rid2sd(st);
if(varname[strlen(varname)-1] != '$') { if(varname[strlen(varname)-1] != '$') {
setd_sub(st,sd, varname, elem, (void *)atoi(value),NULL); setd_sub(st,sd, varname, elem, (void *)atoi(value),nd?&nd->u.scr.script->script_vars:NULL);
} else { } else {
setd_sub(st,sd, varname, elem, (void *)value,NULL); setd_sub(st,sd, varname, elem, (void *)value,nd?&nd->u.scr.script->script_vars:NULL);
} }
return 0; return 0;
@ -9966,12 +9967,12 @@ int buildin_query_sql(struct script_state *st) {
if((sql_res = mysql_store_result(&mmysql_handle))){ if((sql_res = mysql_store_result(&mmysql_handle))){
if(name[strlen(name)-1] != '$') { if(name[strlen(name)-1] != '$') {
while(i<128 && (sql_row = mysql_fetch_row(sql_res))){ while(i<128 && (sql_row = mysql_fetch_row(sql_res))){
setd_sub(st,sd, name, i, (void *)atoi(sql_row[0]),NULL); setd_sub(st,sd, name, i, (void *)atoi(sql_row[0]),st->stack->stack_data[st->start+3].ref);
i++; i++;
} }
} else { } else {
while(i<128 && (sql_row = mysql_fetch_row(sql_res))){ while(i<128 && (sql_row = mysql_fetch_row(sql_res))){
setd_sub(st,sd, name, i, (void *)sql_row[0],NULL); setd_sub(st,sd, name, i, (void *)sql_row[0],st->stack->stack_data[st->start+3].ref);
i++; i++;
} }
} }
@ -10520,31 +10521,31 @@ int buildin_getmobdata(struct script_state *st) {
num=st->stack->stack_data[st->start+2].u.num; num=st->stack->stack_data[st->start+2].u.num;
name=(char *)(str_buf+str_data[num&0x00ffffff].str); name=(char *)(str_buf+str_data[num&0x00ffffff].str);
setd_sub(st,sd,name,0,(void *)(int)md->class_,NULL); setd_sub(st,sd,name,0,(void *)(int)md->class_,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,1,(void *)(int)md->level,NULL); setd_sub(st,sd,name,1,(void *)(int)md->level,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,2,(void *)(int)md->status.hp,NULL); setd_sub(st,sd,name,2,(void *)(int)md->status.hp,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,3,(void *)(int)md->status.max_hp,NULL); setd_sub(st,sd,name,3,(void *)(int)md->status.max_hp,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,4,(void *)(int)md->master_id,NULL); setd_sub(st,sd,name,4,(void *)(int)md->master_id,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,5,(void *)(int)md->bl.m,NULL); setd_sub(st,sd,name,5,(void *)(int)md->bl.m,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,6,(void *)(int)md->bl.x,NULL); setd_sub(st,sd,name,6,(void *)(int)md->bl.x,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,7,(void *)(int)md->bl.y,NULL); setd_sub(st,sd,name,7,(void *)(int)md->bl.y,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,8,(void *)(int)md->status.speed,NULL); setd_sub(st,sd,name,8,(void *)(int)md->status.speed,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,9,(void *)(int)md->status.mode,NULL); setd_sub(st,sd,name,9,(void *)(int)md->status.mode,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,10,(void *)(int)md->special_state.ai,NULL); setd_sub(st,sd,name,10,(void *)(int)md->special_state.ai,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,11,(void *)(int)md->sc.option,NULL); setd_sub(st,sd,name,11,(void *)(int)md->sc.option,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,12,(void *)(int)md->vd->sex,NULL); setd_sub(st,sd,name,12,(void *)(int)md->vd->sex,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,13,(void *)(int)md->vd->class_,NULL); setd_sub(st,sd,name,13,(void *)(int)md->vd->class_,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,14,(void *)(int)md->vd->hair_style,NULL); setd_sub(st,sd,name,14,(void *)(int)md->vd->hair_style,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,15,(void *)(int)md->vd->hair_color,NULL); setd_sub(st,sd,name,15,(void *)(int)md->vd->hair_color,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,16,(void *)(int)md->vd->head_bottom,NULL); setd_sub(st,sd,name,16,(void *)(int)md->vd->head_bottom,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,17,(void *)(int)md->vd->head_mid,NULL); setd_sub(st,sd,name,17,(void *)(int)md->vd->head_mid,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,18,(void *)(int)md->vd->head_top,NULL); setd_sub(st,sd,name,18,(void *)(int)md->vd->head_top,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,19,(void *)(int)md->vd->cloth_color,NULL); setd_sub(st,sd,name,19,(void *)(int)md->vd->cloth_color,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,20,(void *)(int)md->vd->shield,NULL); setd_sub(st,sd,name,20,(void *)(int)md->vd->shield,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,21,(void *)(int)md->vd->weapon,NULL); setd_sub(st,sd,name,21,(void *)(int)md->vd->weapon,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,22,(void *)(int)md->vd->shield,NULL); setd_sub(st,sd,name,22,(void *)(int)md->vd->shield,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,23,(void *)(int)md->ud.dir,NULL); setd_sub(st,sd,name,23,(void *)(int)md->ud.dir,st->stack->stack_data[st->start+2].ref);
setd_sub(st,sd,name,24,(void *)(int)md->state.killer,NULL); setd_sub(st,sd,name,24,(void *)(int)md->state.killer,st->stack->stack_data[st->start+2].ref);
return 0; return 0;
} }