From 7463b3e82a1480d8adeb9c39c9d592c1975d81b4 Mon Sep 17 00:00:00 2001 From: Freeyorp Date: Sun, 12 Jul 2009 20:58:50 +1200 Subject: Add a function that unequips a particular type of equipment from a player --- src/map/script.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/map/script.c b/src/map/script.c index 218c3f3..40fcd62 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -285,6 +285,7 @@ int buildin_isin(struct script_state *st); // [Jaxad0127] int buildin_shop(struct script_state *st); // [MadCamel] int buildin_isdead(struct script_state *st); // [Jaxad0127] int buildin_fakenpcname(struct script_state *st); //[Kage] +int buildin_unequip_by_id(struct script_state *st); // [Freeyorp] void push_val(struct script_stack *stack,int type,int val); int run_func(struct script_state *st); @@ -490,7 +491,9 @@ struct { {buildin_isin,"isin","siiii"}, {buildin_shop,"shop","s"}, {buildin_isdead,"isdead","i"}, - {buildin_fakenpcname,"fakenpcname","ssi"}, //End Additions + {buildin_fakenpcname,"fakenpcname","ssi"}, + {buildin_unequip_by_id,"unequipbyid","i"}, // [Freeyorp] + // End Additions {NULL,NULL,NULL}, }; int buildin_message(struct script_state *st); // [MouseJstr] @@ -5665,6 +5668,27 @@ int buildin_nude(struct script_state *st) return 0; } +/*========================================== + * UnequipById [Freeyorp] + *------------------------------------------ + */ + +int buildin_unequip_by_id(struct script_state *st) +{ + struct map_session_data *sd=script_rid2sd(st); + if(sd==NULL) + return 0; + + int slot_id = conv_num(st,& (st->stack->stack_data[st->start+2])); + + if(slot_id>=0 && slot_id<11 && sd->equip_index[slot_id] >= 0) + pc_unequipitem(sd,sd->equip_index[slot_id], slot_id); + + pc_calcstatus(sd, 0); + + return 0; +} + /*========================================== * gmcommand [MouseJstr] * -- cgit v1.2.3-70-g09d2 From 84783931d0944049590dd8359770657ad971be25 Mon Sep 17 00:00:00 2001 From: Freeyorp Date: Wed, 15 Jul 2009 11:29:37 +1200 Subject: Add a function to the magic system, fun_is_gm_invisible --- src/map/magic-expr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/map/magic-expr.c b/src/map/magic-expr.c index 1f7f408..2f52be5 100644 --- a/src/map/magic-expr.c +++ b/src/map/magic-expr.c @@ -953,6 +953,13 @@ fun_running_status_update(env_t *env, int args_nr, val_t *result, val_t *args) return 0; } +static int +fun_is_gm_invisible(env_t *env, int args_nr, val_t *result, val_t *args) +{ + RESULTINT = ((((struct map_session_data *)ARGENTITY(0))->status.option & 4096) != 0); + return 0; +} + static int fun_element(env_t *env, int args_nr, val_t *result, val_t *args) { @@ -1179,6 +1186,7 @@ static fun_t functions[] = { { "count_item", "e.", 'i', fun_count_item }, { "line_of_sight", "ll", 'i', fun_line_of_sight }, { "running_status_update", "ei", 'i', fun_running_status_update }, + { "is_gm_invisible", "e", 'i', fun_is_gm_invisible }, { "element", "e", 'i', fun_element }, { "element_level", "e", 'i', fun_element_level }, { "has_shroud", "e", 'i', fun_has_shroud }, -- cgit v1.2.3-70-g09d2