Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
Development
Nov 28, 2018, 10:10 am
By Keirath
First Immortal
Oct 12, 2018, 12:02 pm
By GatewaySysop
Bug in do_climb( )
Jun 5, 2018, 5:31 pm
By joeyfogas
question on overland code
May 31, 2018, 10:03 am
By joeyfogas
KaVir's Protocol Snip
May 15, 2018, 7:57 pm
By joeyfogas
tintin++ ogg sound player script for linux
Author: Robert Smith
Submitted by: Vladaar
6Dragons ogg Soundpack
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.4
Author: Vladaar
Submitted by: Vladaar
LoP 1.46
Author: Remcon
Submitted by: Remcon
LOP 1.45
Author: Remcon
Submitted by: Remcon
Users Online
CommonCrawl, Bing, DotBot

Members: 0
Guests: 13
Stats
Files
Topics
Posts
Members
Newest Member
481
3,740
19,397
632
ClarenceKe
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Codebases » SWR FUSS » Ifchecks ovnum<place> and oty...
Forum Rules | Mark all | Recent Posts

Ifchecks ovnum<place> and otype<place> not recognizing multiple objects
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Feb 4, 2006, 6:00 pm   Last edited Feb 4, 2006, 6:03 pm by Caius
Go to the top of the page
Go to the bottom of the page

Caius
Magician
GroupMembers
Posts132
JoinedJan 29, 2006

Say you want to have a mob giving a reward for bringing him a certain number of an object. You'd make a mobprog like so:
>act_prog 'gives you'
if ovnumcarry(60) >= 5
'Thanks.
endif

The idea is that the mob will react when he has five or more of object vnum 60 (blaster rifle under stock limbo.are). However this ifcheck doesn't count the objects properly, so the above prog doesn't work.

Here's how I fixed this:

Open mud_prog.c
Search for "ovnumcarry".

Locate this code:
for ( pObj = mob->first_carrying; pObj; pObj = pObj->next_content )
          if ( can_see_obj(mob, pObj) && pObj->pIndexData->vnum == vnum )
              lhsvl++;
 


Change it to:
for ( pObj = mob->first_carrying; pObj; pObj = pObj->next_content )
      {
          separate_obj( pObj );
          if ( can_see_obj(mob, pObj) && pObj->pIndexData->vnum == vnum )
              lhsvl++;
      }


Do the same for all these ifchecks: OvnumHere, OvnumRoom, OvnumCarry, OvnumWear, OvnumInv, OtypeHere, OtypeRoom, OtypeCarry, OtypeWear, OtypeInv.

OvnumHere and OtypeHere needs separate_obj( pObj ) in both their for(;;;) loops.

I have not checked these ifchecks in the other FUSS packages, but I suspect the same problems are there.
       
Post is unread #2 Feb 4, 2006, 6:05 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,644
JoinedJan 1, 2002

Or you could have changed lhsvl++; to lhsvl += pObj->count;
       
Pages:<< prev 1 next >>