Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
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

Members: 0
Guests: 6
Stats
Files
Topics
Posts
Members
Newest Member
481
3,740
19,396
629
DarrenPayn
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 >>