Re: [Newbie][Code]Changing the eat command to check everything...

From: Xual (
Date: 01/12/99

On Tue, 12 Jan 1999, Anthony Benjamin wrote:
> What I would like to do, is have do_eat, check the inventory for food of
> any kind, if someone types eat all, instead of saying "You don't have
> all." I would like it to say a message similar to.. You cannot eat a
> sword, You cannot eat a shield, for items it finds in the inventory that
> are unedible, but i would like it to eat stuff it finds that are edible
> in the inventory....So...i was wondering if i was ontrack with the
> following modifications...
> if (!(food = get_obj_in_list_vis(ch, arg, ch->carrying))) {
>     sprintf(buf, "You don't seem to have %s %s.\r\n", AN(arg), arg);
>     send_to_char(buf, ch);
>     return;
> if(arg = "all" || "ALL"){

A couple of points.  First, you can't compare a string like you would an
int, you need strcmp(), str_cmp() or something similar.  Second, you
aren't checking for equivalence at all in the above example.  That is
checked with the == operator.  The = operator is used to assign a value to
a numeric or pointer variable.  Third, CircleMUD is written in C, not C++.

if (!str_cmp(arg, "all") {  /* str_cmp() is case insensitive */
  send_to_char("You can only eat one thing at a time.\r\n", ch);

That is the easy way to do it, it sounds like you want to loop through the
players inventory and send a message for each item.  I wouldn't recommend
that personally, but if you want to, look through the code for a place
where it already does what you want and copy it.

"Misery is boundless"
        -Xual the Torturer, on the Eve of the Sundering.

Danathara Online RPG

     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  |

This archive was generated by hypermail 2b30 : 12/15/00 PST