summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-03-11 22:21:34 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-03-11 22:21:34 +0000
commit617311ef61537ed544e53e81956b8d687e8b8789 (patch)
treebb5ef9729e094e32cebe157b494b79742811a6b6 /src/map/script.c
parent8f8e2e42ba3ea1416b80190a3006c061ef4ed8b5 (diff)
downloadhercules-617311ef61537ed544e53e81956b8d687e8b8789.tar.gz
hercules-617311ef61537ed544e53e81956b8d687e8b8789.tar.bz2
hercules-617311ef61537ed544e53e81956b8d687e8b8789.tar.xz
hercules-617311ef61537ed544e53e81956b8d687e8b8789.zip
- 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
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c19
1 files changed, 15 insertions, 4 deletions
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;
}