|
@@ -3927,8 +3927,10 @@ struct script_function buildin_func[] = {
|
|
|
*/
|
|
|
int buildin_mes(struct script_state *st)
|
|
|
{
|
|
|
+ struct map_session_data *sd = script_rid2sd(st);
|
|
|
conv_str(st,& (st->stack->stack_data[st->start+2]));
|
|
|
- clif_scriptmes(script_rid2sd(st),st->oid,st->stack->stack_data[st->start+2].u.str);
|
|
|
+ if (sd)
|
|
|
+ clif_scriptmes(sd,st->oid,st->stack->stack_data[st->start+2].u.str);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -4139,7 +4141,7 @@ int buildin_menu(struct script_state *st)
|
|
|
sd->state.menu_or_input=1;
|
|
|
if( (st->end - st->start - 2) % 2 == 1 ) {
|
|
|
// 引数の数が奇数なのでエラー扱い
|
|
|
- ShowError("buildin_menu: illigal argument count(%d).\n", st->end - st->start - 2);
|
|
|
+ ShowError("buildin_menu: illegal argument count(%d).\n", st->end - st->start - 2);
|
|
|
sd->state.menu_or_input=0;
|
|
|
st->state=END;
|
|
|
return 1;
|
|
@@ -4161,9 +4163,9 @@ int buildin_menu(struct script_state *st)
|
|
|
max++;
|
|
|
}
|
|
|
sd->max_menu = max;
|
|
|
- clif_scriptmenu(script_rid2sd(st),st->oid,buf);
|
|
|
+ clif_scriptmenu(sd,st->oid,buf);
|
|
|
aFree(buf);
|
|
|
- } else if(sd->npc_menu==0xff){ // cansel
|
|
|
+ } else if(sd->npc_menu==0xff){ // cancel
|
|
|
sd->state.menu_or_input=0;
|
|
|
st->state=END;
|
|
|
} else { // goto動作
|
|
@@ -7407,9 +7409,12 @@ int buildin_getusers(struct script_state *st)
|
|
|
*/
|
|
|
int buildin_getusersname(struct script_state *st)
|
|
|
{
|
|
|
- struct map_session_data *pl_sd = NULL, **pl_allsd;
|
|
|
+ struct map_session_data *sd, *pl_sd = NULL, **pl_allsd;
|
|
|
int i=0,disp_num=1, users;
|
|
|
-
|
|
|
+
|
|
|
+ sd = script_rid2sd(st);
|
|
|
+ if (!sd) return 0;
|
|
|
+
|
|
|
pl_allsd = map_getallusers(&users);
|
|
|
|
|
|
for (i=0;i<users;i++)
|
|
@@ -7418,8 +7423,8 @@ int buildin_getusersname(struct script_state *st)
|
|
|
if( !(battle_config.hide_GM_session && pc_isGM(pl_sd)) )
|
|
|
{
|
|
|
if((disp_num++)%10==0)
|
|
|
- clif_scriptnext(script_rid2sd(st),st->oid);
|
|
|
- clif_scriptmes(script_rid2sd(st),st->oid,pl_sd->status.name);
|
|
|
+ clif_scriptnext(sd,st->oid);
|
|
|
+ clif_scriptmes(sd,st->oid,pl_sd->status.name);
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
@@ -10326,7 +10331,7 @@ int buildin_select(struct script_state *st)
|
|
|
struct map_session_data *sd;
|
|
|
|
|
|
sd=script_rid2sd(st);
|
|
|
-
|
|
|
+ nullpo_retr(0, sd);
|
|
|
if(sd->state.menu_or_input==0){
|
|
|
st->state=RERUNLINE;
|
|
|
sd->state.menu_or_input=1;
|
|
@@ -10345,12 +10350,12 @@ int buildin_select(struct script_state *st)
|
|
|
max++;
|
|
|
}
|
|
|
sd->max_menu = max;
|
|
|
- clif_scriptmenu(script_rid2sd(st),st->oid,buf);
|
|
|
+ clif_scriptmenu(sd,st->oid,buf);
|
|
|
aFree(buf);
|
|
|
} else if(sd->npc_menu==0xff){
|
|
|
sd->state.menu_or_input=0;
|
|
|
st->state=END;
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
//Skip empty menu entries which weren't displayed on the client (Skotlex)
|
|
|
for(i=st->start+2;i< (st->start+2+sd->npc_menu) && sd->npc_menu < (st->end-st->start-2);i++) {
|
|
|
conv_str(st,& (st->stack->stack_data[i])); // we should convert variables to strings before access it [jA1983] [EoE]
|
|
@@ -10371,6 +10376,7 @@ int buildin_prompt(struct script_state *st)
|
|
|
struct map_session_data *sd;
|
|
|
|
|
|
sd=script_rid2sd(st);
|
|
|
+ nullpo_retr(0, sd);
|
|
|
|
|
|
if(sd->state.menu_or_input==0){
|
|
|
st->state=RERUNLINE;
|
|
@@ -10390,12 +10396,9 @@ int buildin_prompt(struct script_state *st)
|
|
|
max++;
|
|
|
}
|
|
|
sd->max_menu = max;
|
|
|
- clif_scriptmenu(script_rid2sd(st),st->oid,buf);
|
|
|
+ clif_scriptmenu(sd,st->oid,buf);
|
|
|
aFree(buf);
|
|
|
- } /*else if(sd->npc_menu==0xff){
|
|
|
- sd->state.menu_or_input=0;
|
|
|
- st->state=END;
|
|
|
- }*/ else {
|
|
|
+ } else {
|
|
|
if(sd->npc_menu != 0xff){
|
|
|
//Skip empty menu entries which weren't displayed on the client (Skotlex)
|
|
|
for(i=st->start+2;i< (st->start+2+sd->npc_menu) && sd->npc_menu < (st->end-st->start-2);i++) {
|