User:Gumi/CheckInventory
From The Mana World
(Redirected from User:Meko/CheckInventory)
(shamelessly skips the introductory blah blah)
Example Usage[edit]
get an item[edit]
setarray @getitem$, "Acorn"; setarray @getitem, 1; callfunc "CheckInventory";
remove an item[edit]
setarray @delitem$, "Acorn"; setarray @delitem, 1; callfunc "CheckInventory";
remove 2 items and get an item[edit]
setarray @delitem$, "Acorn", "Root"; setarray @delitem, 1, 1; setarray @getitem$, "RedApple"; setarray @getitem, 1; callfunc "CheckInventory";
remove an item and zeny and get another item[edit]
setarray @delitem$, "SnakeSkin"; setarray @delitem, 1; setarray @getitem$, "LeatherPatch"; setarray @getitem, 1; set @delzeny, 500; callfunc "CheckInventory";
The zeny transaction will ONLY occur if all the items can be added/removed. You can also use @getzeny to add zeny.
Error handlers[edit]
If a problem happens, @check_fail will be a non-0 value. You can either choose to use the default error handlers or to set your own.
0 = no error 1 = missing required items 2 = overweight 3 = no room in inventory 4 = not enough zeny
default handlers[edit]
catch-all handler[edit]
if (@check_fail)
close;
This code will use the default handlers and stop the script if an error is found.
custom handlers[edit]
to use custom handlers, you need to set a special variable to disable the default handlers.
@silent = use custom handlers for all errors @silent1 = use custom handler for error 1 and default handlers for the others @silent2 = use custom handler for error 2 and default handlers for the others @silent3 = use custom handler for error 3 and default handlers for the others @silent4 = use custom handler for error 4 and default handlers for the others
The @silentX variables can be combined but if you want to handle all four errors please use @silent. You do not need to handle weight, zeny and inventory if you just want to delete items so you can use @silent and just handle error 1.
handle all[edit]
setarray @delitem$, "SnakeSkin", "Root", "GreenApple";
setarray @delitem, 1, 5, 20;
setarray @getitem$, "ReedBundle", "CottonCloth";
setarray @getitem, 12, 1;
set @delzeny, 500;
set @silent, 1;
callfunc "CheckInventory";
if (@check_fail == 1) goto L_Items;
if (@check_fail == 2) goto L_Weight;
if (@check_fail == 3) goto L_Inventory;
if (@check_fail == 4) goto L_Zeny;
mes "Transaction successful";
close;
L_Items:
mes "You do not have the required items.";
close;
L_Weight:
mes "You need to drop some weight.";
close;
L_Inventory:
mes "You are carrying too much items.";
close;
L_Zeny:
mes "You do not have enough zeny. Go sell your house and try again.";
close;
handle only some errors[edit]
setarray @delitem$, "SnakeSkin", "Root", "GreenApple";
setarray @delitem, 1, 5, 20;
setarray @getitem$, "ReedBundle", "CottonCloth";
setarray @getitem, 12, 1;
set @delzeny, 500;
set @silent3, 1;
set @silent4, 1;
callfunc "CheckInventory";
if (@check_fail == 3) goto L_Inventory;
if (@check_fail == 4) goto L_Zeny;
mes "Transaction successful";
close;
L_Inventory:
mes "You are carrying too much items.";
close;
L_Zeny:
mes "You do not have enough zeny. Go sell your house and try again.";
close;