diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-01-12 00:27:33 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-01-12 00:27:33 +0300 |
commit | 0055aac688833a01cbe2b3e6b951bb162a80b474 (patch) | |
tree | 964e304726a0834f013dcf9cfe1cf6d11eb24846 /src/emap/craft.c | |
parent | 2ea5c39f78db6359e50310dfe60b55ac61f97a2b (diff) | |
download | evol-hercules-0055aac688833a01cbe2b3e6b951bb162a80b474.tar.gz evol-hercules-0055aac688833a01cbe2b3e6b951bb162a80b474.tar.bz2 evol-hercules-0055aac688833a01cbe2b3e6b951bb162a80b474.tar.xz evol-hercules-0055aac688833a01cbe2b3e6b951bb162a80b474.zip |
Add script command for delete craftobject.
New script command: deletecraft id
Diffstat (limited to 'src/emap/craft.c')
-rw-r--r-- | src/emap/craft.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/emap/craft.c b/src/emap/craft.c index 69f2547..c790836 100644 --- a/src/emap/craft.c +++ b/src/emap/craft.c @@ -32,20 +32,27 @@ void do_init_craft(void) craftvar_db = idb_alloc(DB_OPT_RELEASE_BOTH); } -static int delete_craft_sub(DBKey key __attribute__ ((unused)), - DBData *data, - va_list args __attribute__ ((unused))) +static void delete_craft_var(struct craft_vardata *craft) { - struct craft_vardata *craft = DB->data2ptr(data); if (!craft) - return 0; - + return; int index; for (index = 0; index < craft_inventory_size; index ++) { struct craft_slot *slot = &craft->slots[index]; VECTOR_CLEAR(slot->items); } +} + +static int delete_craft_sub(DBKey key __attribute__ ((unused)), + DBData *data, + va_list args __attribute__ ((unused))) +{ + struct craft_vardata *craft = DB->data2ptr(data); + if (!craft) + return 0; + + delete_craft_var(craft); return 0; } @@ -255,3 +262,15 @@ void craft_dump(TBL_PC *sd, const int id) } } } + +void craft_delete(const int id) +{ + struct craft_vardata *craft = idb_get(craftvar_db, id); + if (!craft) + { + ShowError("Craft object with id %d not exists.\n", id); + return; + } + delete_craft_var(craft); + idb_remove(craftvar_db, id); +} |