MOO-cows Mailing List Archive
[Prev][Next][Index][Thread]
ADV-PROG Re: Defining New Error Codes? [SERVER]
>I'd like to know if it's possible to define new error codes; for instance,
>a MOO with monetary units might need an 'E_INSFUND' (insufficient funds)
>error.
>
>This should be defined as an error so that it evaluates false. Is there
>any way to do this short of a server hack? If not ... how tough of a
>server hack is it? :)
Here's a(n extreme) work around and some will think it's a total hack:
@prop #0.E_INSFUND #-5
(#-1, #-2, #-3 are already taken, and on E_MOO, I already have #-4
defined as $this for the parser. You mainly just want to use a
negative object number here that is less than #-3 and not used by
anything else (nothing in a standard lambdacore uses anything less
than #-3))
Object numbers are false. You can then pass this value around all you want.
Unfortunately, it will return OBJ in a typeof(), so you can't necessarily
compare it to ERR to determine if it's an error.
$player:check_funds
if (player.funds =< 0)
return $E_INSFUND;
else
return this.funds;
endif
$player:buy_stuff
if (player:check_funds() == $E_INSFUND) OR if (!player:check_funds())
player:tell("Get a job!"); player:tell("Get a job!");
else else
player:buy_it(); player:buy_it();
endif endif
Anyway, it will be false, which will serve the purpose. This mainly makes the
code easier to read. Point to remember that core refs cost a tick, you might
want to take that into account in code you want to be as fast as possible
(that is just something to keep in mind, but it's hardly worth sweating over
for most cases).
Also, you might also want to do something like this:
$string_utils:tostr
if (args[1] == $E_INSFUND)
return "Insufficient funds.";
else
<... rest of code ...>
To get good output for to string'ing. You'll have to pass through
$string_utils, but a small price to pay. A change to $string_utils:print
would also come in handy. On E_MOO, we are keeping track of core refs, so
things like:
;$E_INSFUND
=> $E_INSFUND
will come up instead of
;$E_INSFUND
=> #-5
Anyone for frobs? (thereby allowing you to overload typeof() and account for
this) :) :) :) But let's not get into that. (Check the archives).
It's probally not worth it for a server mod.
______ __
/ / Andy Bakun _/_ / / ` /) /) _/_
--/ /_ , , , __. __ / _ __/ /-- // // __,_ / _
(_/ / /_(_(_/_(_/|_/ (_<__</_(_/ (___, //__//__(_) (_<__/_)_
How much head could a bonehead bone /> />
if a bonehead could bone head? // //
http://shrike.depaul.edu/~abakun/ </ </
Follow-Ups:
Home |
Subject Index |
Thread Index