From 617311ef61537ed544e53e81956b8d687e8b8789 Mon Sep 17 00:00:00 2001 From: skotlex Date: Sun, 11 Mar 2007 22:21:34 +0000 Subject: - Added player not attached crash prevention to countitem/countitem2 - Probably corrected delitem not deleting pet eggs at all. - Possibly nullpo fix on npcskilleffect - Corrected a warning when using #fakename - Hopefully fixed hidenpc/disablenpc not working on Guild flag sprites. - Mob skill state "anytarget" no longer triggers when the mob has an item-target (looting). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9991 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/script.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/map/script.c') diff --git a/src/map/script.c b/src/map/script.c index 9b15497bc..11f5c6dda 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5263,6 +5263,11 @@ BUILDIN_FUNC(countitem) sd = script_rid2sd(st); + if (!sd) { + push_val(st->stack,C_INT,0); + return 0; + } + data=&(st->stack->stack_data[st->start+2]); get_val(st,data); if( data->type==C_STR || data->type==C_CONSTSTR ){ @@ -5303,6 +5308,11 @@ BUILDIN_FUNC(countitem2) sd = script_rid2sd(st); + if (!sd) { + push_val(st->stack,C_INT,0); + return 0; + } + data=&(st->stack->stack_data[st->start+2]); get_val(st,data); if( data->type==C_STR || data->type==C_CONSTSTR ){ @@ -5737,9 +5747,9 @@ BUILDIN_FUNC(delitem) if(sd->inventory_data[i]->type==IT_PETEGG && sd->status.inventory[i].card[0] == CARD0_PET) { - if (intif_delete_petdata(MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]))) + if (!intif_delete_petdata(MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]))) continue; //pet couldn't be sent for deletion. - } + } else //is this item important? does it have cards? or Player's name? or Refined/Upgraded if(itemdb_isspecial(sd->status.inventory[i].card[0]) || sd->status.inventory[i].card[0] || @@ -10468,14 +10478,15 @@ BUILDIN_FUNC(skilleffect) */ BUILDIN_FUNC(npcskilleffect) { - struct npc_data *nd=(struct npc_data *)map_id2bl(st->oid); + struct block_list *bl= map_id2bl(st->oid); int skillid=conv_num(st,& (st->stack->stack_data[st->start+2])); int skilllv=conv_num(st,& (st->stack->stack_data[st->start+3])); int x=conv_num(st,& (st->stack->stack_data[st->start+4])); int y=conv_num(st,& (st->stack->stack_data[st->start+5])); - clif_skill_poseffect(&nd->bl,skillid,skilllv,x,y,gettick()); + if (bl) + clif_skill_poseffect(bl,skillid,skilllv,x,y,gettick()); return 0; } -- cgit v1.2.3-60-g2f50