More Awesome Than You!

The Bowels of Trogdor => The Small Intestines of Trogdor => Topic started by: syberspunk on 2006 November 06, 00:44:11



Title: help needed with updating phone plug-in
Post by: syberspunk on 2006 November 06, 00:44:11
Ok, I tried looking at autoyak and the ACR - Booty Call hacks, but I'm not sure I can suss this out properly. Going off mostly the autoyak code, I've updated what I think are the relevant BHAVs: Main, Init, CT - Handle Call, CT - Call Available?, the individual phone call type TESTs, and I added a CT - Object Menu and CT - Object Menu Command.

So far, I've gotten the options to show up when you click on a sim. However... the sim ends up trying to use Macrotastics talk to family or talk to friends instead. Any chance someone can clue me in as to what I need to change so that it uses my phone call types rather than those from autoyak?

Here's some of the relevant code. I'll also attack a copy of the file.

Quote from: Function - Main
###
# Group = 0xFFFFFFFF, Instance = 0x1001
# Title = Function - Main
#
# Format = 8007, Params = 0, Locals = 0
# Tree type = 0, Header flag = 0, Tree version = FFFF8007 (-32761)

     0: Stack Object := Me; true: 1, false: error
     1: Test Object Type: type of Me == GUID 0x00133606; true: 4, false: 2
     2: Test Object Type: type of Me == GUID 0x00133607; true: 4, false: 3
     3: Test Object Type: type of Me == GUID 0x00133608; true: 4, false: 5
     4: Idle(20000 (0x4E20)); true: 4, false: 4
     5: Global(Game Edition) != 2000 (0x7D0); true: 6, false: 9
     6: Global(Game Edition) > 64 (0x40); true: 7, false: 9
     7: Idle(250 (0xFA)); true: 8, false: 8
     8: semiglobal.0x2058(0, 0, 0, 0); true: 7, false: 7
     9: Remove Object Instance: Me, cleanup all; true: 9, false: 9

Quote from: Init - Private School Phone Call - Legacy Enroll
###
# Group = 0xFFFFFFFF, Instance = 0x1015
# Title = Function - Init - Private School Phone Call - Legacy Enroll
#
# Format = 8007, Params = 0, Locals = 0
# Tree type = 0, Header flag = 0, Tree version = 0 (0)

     0: semiglobal.0x2007(0, 0, 0, 0); true: 1, false: 1
     1: Global(Game Edition) != 2000 (0x7D0); true: 2, false: B
     2: Global(Game Edition) > 64 (0x40); true: 3, false: B
     3: Test Object Type: type of Me == GUID 0x00133608; true: 4, false: 8
     4: Stack Object := 0; true: 5, false: 5
     5: Set to Next: object of type GUID 0x00133608; true: 6, false: 7
     6: Stack Object's category (0x3B) != Const 0x106(Category):0x56; true: 5, false: 8
     7: My category (0x3B) := Const 0x106(Category):0x56; true: 8, false: 8
     8: Stack Object := Me; true: 9, false: 9
     9: My Semi Attribute 0x2 := stack object's definition Selector Category (0x4B); true: A, false: A
     A: My Semi Attribute 0x7 := stack object's definition Selector Sub-Category (0x4C); true: C, false: C
     B: My Semi Attribute 0x2 := Const 0x2006:0x0; true: C, false: C
     C: My Attribute 0x0 := Const 0x1000(Private School - Phone Call Types):0x2(3); true: true, false: true

Quote from: CT - Handle Call
###
# Group = 0xFFFFFFFF, Instance = 0x1002
# Title = CT - Handle Call
#
# Format = 8007, Params = 1, Locals = 0
# Tree type = 0, Header flag = 0, Tree version = FFFF801B (-32741)

     0: Stack Obj's Attribute 0x0 := Param 0; true: 1, false: error
     1: Stack Obj's Attribute 0x0 == Const 0x1000(Private School - Phone Call Types):0x0(1); true: 2, false: 3
     2: .Special - Private School Phone Call - Quit; true: true, false: error
     3: Stack Obj's Attribute 0x0 == Const 0x1000(Private School - Phone Call Types):0x1(2); true: 4, false: 5
     4: .Special - Private School Phone Call - Re-Enroll; true: true, false: error
     5: Stack Obj's Attribute 0x0 == Const 0x1000(Private School - Phone Call Types):0x2(3); true: 6, false: false
     6: .Special - Private School Phone Call - Enroll Legacy; true: true, false: error

Quote from: CT - Phone Call Available?
##
# Group = 0xFFFFFFFF, Instance = 0x100B
# Title = CT - Phone Call Available?
#
# Format = 8007, Params = 2, Locals = 1
# Tree type = 0, Header flag = 0, Tree version = FFFF8014 (-32748)

     0: Local 0 := 0; true: 1, false: error
     1: Lot - Is Secret Society? - EP1; true: false, false: 2
     2: Global(Game Edition) != 2000 (0x7D0); true: 3, false: B
     3: Global(Game Edition) > 64 (0x40); true: 4, false: B
     4: Param 1 == Const 0x1000(Private School - Phone Call Types):0x0(1); true: 5, false: 6
     5: .Special - Private School Phone Call - Quit - TEST(0); true: true, false: false
     6: Param 1 == Const 0x1000(Private School - Phone Call Types):0x1(2); true: 7, false: 8
     7: .Special - Private School Phone Call - Re-Enroll - TEST(0); true: true, false: false
     8: Param 1 == Const 0x1000(Private School - Phone Call Types):0x2(3); true: 9, false: A
     9: .Special - Private School Phone Call - Enroll Legacy - TEST(0); true: true, false: false
     A: Param 1 == -1 (0xFFFF); true: B, false: false
     B: .Special - Private School Phone Call - Quit - TEST(1); true: C, false: D
     C: Local 0 += 1; true: D, false: error
     D: .Special - Private School Phone Call - Re-Enroll - TEST(1); true: E, false: F
     E: Local 0 += 1; true: F, false: error
     F: .Special - Private School Phone Call - Enroll Legacy - TEST(1); true: 10, false: 11
    10: Local 0 += 1; true: 11, false: error
    11: Local 0 > 0; true: true, false: false

Quote from: CT - Object Menu
###
# Group = 0xFFFFFFFF, Instance = 0x101A
# Title = CT - Object Menu
#
# Format = 8007, Params = 2, Locals = 1
# Tree type = 0, Header flag = 0, Tree version = 0 (0)

     0: Local 0 := Stack Object; true: 1, false: 1
     1: Param 1 == 0; true: 2, false: false
     2: Global(Game Edition) != 2000 (0x7D0); true: 3, false: false
     3: Global(Game Edition) > 64 (0x40); true: 4, false: false
     4: Me == Param 0; true: 5, false: false
     5: Age - Sims Age >= Param 1?(Me, Const 0x110(Person Ages):0x1); true: 6, false: false
     6: Age - Sims Age >= Param 1?(Me, Const 0x110(Person Ages):0x2); true: 7, false: 8
     7: Cellphone - Does Sim Have One?(my person data neighbor id (0x1F)); true: D, false: 8
     8: Stack Object := 0; true: 9, false: error
     9: Param 0 := Const 0x106(Category):0x1; true: A, false: error
     A: Set to Next: obj with category == param 0; true: B, false: false
     B: In Use?; true: A, false: C
     C: Stack Objects Semi Attribute 0x4 == 1; true: A, false: D
     D: Stack Object := Local 0; true: E, false: E
     E: .CT - Phone Call Available?(stack object's definition Selector Category (0x4B), -1 (0xFFFF)); true: true, false: false

Quote from: CT - Object Menu Command
###
# Group = 0xFFFFFFFF, Instance = 0x101B
# Title = CT - Object Menu Command
#
# Format = 8007, Params = 2, Locals = 2
# Tree type = 0, Header flag = 0, Tree version = 0 (0)

     0: Test Object Type: type of Stack Object == GUID 0x00133606; true: 3, false: 1
     1: Test Object Type: type of Stack Object == GUID 0x00133607; true: 3, false: 2
     2: Test Object Type: type of Stack Object == GUID 0x00133608; true: 3, false: false
     3: Param 0 := Const 0x1002(ZOMGPetsz!!!111oneoneone Tags):0x0(3237 (0xCA5)); true: 4, false: 4
     4: Age - Sims Age >= Param 1?(Me, Const 0x110(Person Ages):0x2); true: 5, false: 8
     5: Cellphone - Does Sim Have One?(my person data neighbor id (0x1F)); true: 6, false: 8
     6: Local 0 := Me; true: 7, false: 7
     7: Local 1 := 275 (0x113); true: 10, false: 10
     8: Stack Object := 0; true: 9, false: 9
     9: Set to Next: object of type GUID 0x0130A00C; true: A, false: false
     A: Run Tree by Name: Get Nearest By Category In T[0,1], ignore global trees, Passing in params where param 0 = Const 0x106(Category):0x1, param 1 = Me, param 2 = 50 (0x32), push onto my stack; true: B, false: false
     B: Local 0 := Temp 0; true: C, false: C
     C: Stack Object := Temp 0; true: D, false: D
     D: In Use?; true: false, false: E
     E: Stack Objects Semi Attribute 0x4 == 1; true: false, false: F
     F: Local 1 := 0; true: 10, false: 10
    10: Stack Object := Me; true: 11, false: 11
    11: Push Interaction: getting interaction # from Local 1 of Local 0 onto the stack object's queue, user driven priority, use icon from Local 0, Icon Index is 0x0, Passing first 4 params in; true: true, false: error

In particular... I removed the search for GUID 0x0130A00C (which I think is macrotastics) in the CT - Object Menu. However, since the CT - Object Menu Command uses an RTBN Call to a BHAV defined in macrostastics (which I assume is used to find the nearest landline phone handset) I thought I would leave it in there. I think I probably have to change CT - Object Menu Command. I tried removing autoyak to see what would happen, and the interaction gets pushed onto the sim, but they just pick the phone up, dial, and then they put it back down. :-\ I'm not sure what I should change so that my CT - Handle Call is used instead of autoyak.

Ste


Title: Re: help needed with updating phone plug-in
Post by: J. M. Pescado on 2006 November 06, 00:57:10
The Phone Thing works on some invisible selector objects. One of them needs to have a OBJD definition 0x4B of "0x91", with an 0x4C of some arbitrary non-negative number (which doesn't collide with an existing number), the other one must have an 0x4B of the latter number, with an 0x4C of something, typically 0. If you have other call options you wish to deem related, you would need other objects. It's all messy and very confuzzling. But it's all in the 0x4B and 0x4Cs, and soforth.


Title: Re: help needed with updating phone plug-in
Post by: syberspunk on 2006 November 06, 03:58:08
I suppose these are values I need to set in the raw data section of the object?

And... is there a way to check the values of the 0x4C attribute so that it doesn't collide with something that already exists? Or... do I just arbitrarily choose a value and cross my fingers? :P

Ste


Title: Re: help needed with updating phone plug-in
Post by: J. M. Pescado on 2006 November 06, 07:26:34
There's 32767 usable values, and maybe a dozen are in use. Total stab in the dark.


Title: Re: help needed with updating phone plug-in
Post by: syberspunk on 2006 November 06, 22:52:47
One of them needs to have a OBJD definition 0x4B of "0x91", with an 0x4C of some arbitrary non-negative number (which doesn't collide with an existing number), the other one must have an 0x4B of the latter number, with an 0x4C of something, typically 0.

Just to be sure... I took a look at the raw data of autoyak, and you have the 0x4C for both the call object and the sim2sim autoyak as 0x0ca5. For the 0x4B attribute, you have the call object as 91 and the sim2sim autoyak as 0.

Incidentally... did you just randomly choose CA5? I think it would have been funny if you picked CA7. I decided on D06. I tried D06, but it caused the game to crash... :P Oh well, talk about a crapshoot. CA7 worked tho. ::)

Now that I have a working version, I'll have to extract the RTBN call to macrotastics and encapsulate the phone search routine within my hack. Hopefully I should have a fully updated ZOMGPETZ!!111oneone version up and available, either later today or tomorrow.

/me mashes the thanks button!

Thanks for the help! This was grrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeeeat!!! ;D


Ste