* Added 'setd' support for local NPC scope (') variables.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6704 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Lance 2006-05-23 08:35:22 +00:00
parent 5120d7677c
commit fa084e111c
5 changed files with 37 additions and 35 deletions

View File

@ -4,6 +4,7 @@ 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/23 2006/05/23
* Added 'setd' support for local NPC scope (') variables. [Lance]
* [Scripting Engine Update] New variables are ready to be used. [Lance] * [Scripting Engine Update] New variables are ready to be used. [Lance]
2006/05/22 2006/05/22
* Updated skill_delayfix to return 0 for mobs since they have no skill * Updated skill_delayfix to return 0 for mobs since they have no skill

View File

@ -9384,8 +9384,8 @@ void clif_parse_NpcBuyListSend(int fd,struct map_session_data *sd)
if((nd = ((struct npc_data *)map_id2bl(sd->npc_shopid))->master_nd)){ if((nd = ((struct npc_data *)map_id2bl(sd->npc_shopid))->master_nd)){
sprintf(npc_ev, "%s::OnBuyItem", nd->exname); sprintf(npc_ev, "%s::OnBuyItem", nd->exname);
for(i=0;i<n;i++){ for(i=0;i<n;i++){
setd_sub(sd, "@bought_nameid", i, (void *)((int)item_list[i*2+1])); setd_sub(NULL,sd, "@bought_nameid", i, (void *)((int)item_list[i*2+1]));
setd_sub(sd, "@bought_quantity", i, (void *)((int)item_list[i*2])); setd_sub(NULL,sd, "@bought_quantity", i, (void *)((int)item_list[i*2]));
} }
npc_event(sd, npc_ev, 0); npc_event(sd, npc_ev, 0);
fail = 0; fail = 0;

View File

@ -1267,8 +1267,8 @@ int npc_selllist(struct map_session_data *sd,int n,unsigned short *item_list)
log_pick(sd, "S", 0, nameid, qty, &sd->status.inventory[idx]); log_pick(sd, "S", 0, nameid, qty, &sd->status.inventory[idx]);
if(nd) { if(nd) {
setd_sub(sd, "@sold_nameid", i, (void *)(int)sd->status.inventory[idx].nameid); setd_sub(NULL,sd, "@sold_nameid", i, (void *)(int)sd->status.inventory[idx].nameid);
setd_sub(sd, "@sold_quantity", i, (void *)(int)qty); setd_sub(NULL,sd, "@sold_quantity", i, (void *)(int)qty);
} }
itemamount+=qty; itemamount+=qty;
pc_delitem(sd,idx,qty,0); pc_delitem(sd,idx,qty,0);

View File

@ -9902,9 +9902,9 @@ int buildin_distance(struct script_state *st){
// <--- [zBuffer] List of mathematics commands // <--- [zBuffer] List of mathematics commands
// [zBuffer] List of dynamic var commands ---> // [zBuffer] List of dynamic var commands --->
void setd_sub(struct map_session_data *sd, char *varname, int elem, void *value) void setd_sub(struct script_state *st, struct map_session_data *sd, char *varname, int elem, void *value)
{ {
set_reg(NULL, sd, add_str((unsigned char *) varname)+(elem<<24), varname, value, NULL); set_reg(st, sd, add_str((unsigned char *) varname)+(elem<<24), varname, value,NULL);
return; return;
} }
@ -9924,9 +9924,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(sd, varname, elem, (void *)atoi(value)); setd_sub(st,sd, varname, elem, (void *)atoi(value));
} else { } else {
setd_sub(sd, varname, elem, (void *)value); setd_sub(st,sd, varname, elem, (void *)value);
} }
return 0; return 0;
@ -9955,12 +9955,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(sd, name, i, (void *)atoi(sql_row[0])); setd_sub(st,sd, name, i, (void *)atoi(sql_row[0]));
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(sd, name, i, (void *)sql_row[0]); setd_sub(st,sd, name, i, (void *)sql_row[0]);
i++; i++;
} }
} }
@ -10495,30 +10495,30 @@ int buildin_getmobdata(struct script_state *st) {
} else { } else {
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(map_id2sd(st->rid),name,0,(void *)(int)md->class_); setd_sub(st,map_id2sd(st->rid),name,0,(void *)(int)md->class_);
setd_sub(map_id2sd(st->rid),name,1,(void *)(int)md->level); setd_sub(st,map_id2sd(st->rid),name,1,(void *)(int)md->level);
setd_sub(map_id2sd(st->rid),name,2,(void *)(int)md->hp); setd_sub(st,map_id2sd(st->rid),name,2,(void *)(int)md->hp);
setd_sub(map_id2sd(st->rid),name,3,(void *)(int)md->max_hp); setd_sub(st,map_id2sd(st->rid),name,3,(void *)(int)md->max_hp);
setd_sub(map_id2sd(st->rid),name,4,(void *)(int)md->master_id); setd_sub(st,map_id2sd(st->rid),name,4,(void *)(int)md->master_id);
setd_sub(map_id2sd(st->rid),name,5,(void *)(int)md->bl.m); setd_sub(st,map_id2sd(st->rid),name,5,(void *)(int)md->bl.m);
setd_sub(map_id2sd(st->rid),name,6,(void *)(int)md->bl.x); setd_sub(st,map_id2sd(st->rid),name,6,(void *)(int)md->bl.x);
setd_sub(map_id2sd(st->rid),name,7,(void *)(int)md->bl.y); setd_sub(st,map_id2sd(st->rid),name,7,(void *)(int)md->bl.y);
setd_sub(map_id2sd(st->rid),name,8,(void *)(int)md->speed); setd_sub(st,map_id2sd(st->rid),name,8,(void *)(int)md->speed);
setd_sub(map_id2sd(st->rid),name,9,(void *)(int)md->mode); setd_sub(st,map_id2sd(st->rid),name,9,(void *)(int)md->mode);
setd_sub(map_id2sd(st->rid),name,10,(void *)(int)md->special_state.ai); setd_sub(st,map_id2sd(st->rid),name,10,(void *)(int)md->special_state.ai);
setd_sub(map_id2sd(st->rid),name,11,(void *)(int)md->db->option); setd_sub(st,map_id2sd(st->rid),name,11,(void *)(int)md->db->option);
setd_sub(map_id2sd(st->rid),name,12,(void *)(int)md->vd->sex); setd_sub(st,map_id2sd(st->rid),name,12,(void *)(int)md->vd->sex);
setd_sub(map_id2sd(st->rid),name,13,(void *)(int)md->vd->class_); setd_sub(st,map_id2sd(st->rid),name,13,(void *)(int)md->vd->class_);
setd_sub(map_id2sd(st->rid),name,14,(void *)(int)md->vd->hair_style); setd_sub(st,map_id2sd(st->rid),name,14,(void *)(int)md->vd->hair_style);
setd_sub(map_id2sd(st->rid),name,15,(void *)(int)md->vd->hair_color); setd_sub(st,map_id2sd(st->rid),name,15,(void *)(int)md->vd->hair_color);
setd_sub(map_id2sd(st->rid),name,16,(void *)(int)md->vd->head_bottom); setd_sub(st,map_id2sd(st->rid),name,16,(void *)(int)md->vd->head_bottom);
setd_sub(map_id2sd(st->rid),name,17,(void *)(int)md->vd->head_mid); setd_sub(st,map_id2sd(st->rid),name,17,(void *)(int)md->vd->head_mid);
setd_sub(map_id2sd(st->rid),name,18,(void *)(int)md->vd->head_top); setd_sub(st,map_id2sd(st->rid),name,18,(void *)(int)md->vd->head_top);
setd_sub(map_id2sd(st->rid),name,19,(void *)(int)md->vd->cloth_color); setd_sub(st,map_id2sd(st->rid),name,19,(void *)(int)md->vd->cloth_color);
setd_sub(map_id2sd(st->rid),name,20,(void *)(int)md->vd->shield); setd_sub(st,map_id2sd(st->rid),name,20,(void *)(int)md->vd->shield);
setd_sub(map_id2sd(st->rid),name,21,(void *)(int)md->vd->weapon); setd_sub(st,map_id2sd(st->rid),name,21,(void *)(int)md->vd->weapon);
setd_sub(map_id2sd(st->rid),name,22,(void *)(int)md->vd->shield); setd_sub(st,map_id2sd(st->rid),name,22,(void *)(int)md->vd->shield);
setd_sub(map_id2sd(st->rid),name,23,(void *)(int)md->ud.dir); setd_sub(st,map_id2sd(st->rid),name,23,(void *)(int)md->ud.dir);
} }
return 0; return 0;
} }

View File

@ -69,9 +69,10 @@ int run_script(struct script_code *rootscript,int pos,int rid,int oid);
int set_var(struct map_session_data *sd, char *name, void *val); int set_var(struct map_session_data *sd, char *name, void *val);
int conv_num(struct script_state *st,struct script_data *data); int conv_num(struct script_state *st,struct script_data *data);
char* conv_str(struct script_state *st,struct script_data *data); char* conv_str(struct script_state *st,struct script_data *data);
void setd_sub(struct map_session_data *sd, char *varname, int elem, void *value); void setd_sub(struct script_state *st, struct map_session_data *sd, char *varname, int elem, void *value);
int run_script_timer(int tid, unsigned int tick, int id, int data); int run_script_timer(int tid, unsigned int tick, int id, int data);
int run_script_main(struct script_state *st); int run_script_main(struct script_state *st);
struct linkdb_node* script_erase_sleepdb(struct linkdb_node *n); struct linkdb_node* script_erase_sleepdb(struct linkdb_node *n);
void script_free_code(struct script_code* code); void script_free_code(struct script_code* code);