MODULE/TEMPLATE: MonkeyTemplate v0.83 - Enhanced SOMI-style GUIs

Started by monkey0506, Wed 13/09/2006 21:15:17

Previous topic - Next topic

monkey0506

Okay, I know there's already a few of these out there, but I've been working on this for a while, and well...I'm ready to unleash it upon you (although there are a few minor problems, it's nothing big enough to crash the game or anything like that).

I call it the MonkeyTemplate. It's a module. It's a template. It's based on the CD-version of the enhanced SCUMM GUI for The Secret of Monkey Island. And I made it.

Download the template
Download the module by itself

If you download the module by itself, you will also need the following:

Download the MonkeyTemplate GUIs (exported GUI file) OR Download the MonkeyTemplate GUIs (exported GUE files)
Download the Properties v2.0 module
Download the ScrollingDialog v1.21 module (no longer required as of 0.82 (though still included in the template))
These are all already included into the template.

Also, the module requires the cursor modes to be set to specific values. These can be found in the MonkeyTemplate Manual. The cursor modes are already set in the template.

Known issues:

- There should be an option to disable the mouse during the background speech. Easy to implement, but not worth reuploading everything (again o.0) and having to change the post and technically it would mean that I should update version info and stuff...and...It'll be in the next version :=
- There are some graphical issues to speak of. Such as, Guybrush's speech views could use a bit of work as they don't look right (in fact, the side views aren't right at all).

Known bugs:

- The label bar doesn't highlight correctly during handled interactions.
- Keypresses aren't allowed during character speech (AGS standard).

Fixed as of v0.83

Okay...I think that's everything.

[EDIT:]

Forgot...this requires AGS 2.72 or higher.

14 September 2006 - Update to v0.82:

Removed MonkeyTemplate.InteractionAvailable and renamed MonkeyTemplate.InteractionAvailableAtXY, added MonkeyTemplate.MouseMode, removed "Interaction*Available" properties, it is now handled internally. Fixed bug with MonkeyTemplate.SetDefaultInteraction not working correctly for objects in other rooms. Player is now placed on walkable area upon entering a room. The template now contains proper sprites for the Guybrush character. Removed dependency on ScrollingDialog module (though it is still included in the template). And corrected the entry under Caveats which said cursor 4 had to be named "UseGiveInv" (it should be "UseGivInv" as "UseGiveInv" is too long).

19 September 2006

I have a bad habit of doing this. I release a module, and then that just gives me the incentive to work on it fixing things so it gets to the point I'm releasing a new version every day...lol. Version 0.83 is up now...it fixes the label not highlighting properly, and I've implemented a MonkeyTemplate.Say function for background speech with animation (so keypresses / mouseclicks are allowed). So...why is this version 0.83 instead of 1.0 then? Well...so far I've been the only one to test this version...and there's still some minor graphical issues in the template. Also, I'd like to implement the win room into the template at some point. Well, I guess that's all for now then.

Scummbuddy

I've known that you've been working on this ever since you joined the forums, and I have been very interested in your work on this, so I will definitly be checking out your good hard work as soon as I can find the time away from school work, perhaps on Friday.

Great job.
- Oh great, I'm stuck in colonial times, tentacles are taking over the world, and now the toilets backing up.
- No, I mean it's really STUCK. Like adventure-game stuck.
-Hoagie from DOTT

monkey0506

Some things that I didn't mention before:

Known Bugs:

- The label bar doesn't properly highlight
- Keypresses are not currently allowed during character speech.

Fixed as of v0.83

Known Issues:

- You have to manually set whether each interaction is available for any given Character/Hotspot/Object/InventoryItem. I don't really know why it's not handled better...but it's not. I'll try and fix it.
- InventoryItems automatically have eMonkeyMode_Give, eMonkeyMode_Use, and eMonkeyMode_UseInventory modes set available (this is actually somewhat of a subsidiary issue).

Fixed as of v0.82

And I have been working on this for a LONG time. Actually the first go around I got pretty much everything the way I wanted it in about six months. Then I decided to tackle the scrolling dialog system...and well...since then AGS has undergone scripting changes and it took me forever to get my dialog system worked out...but I've finally gotten this out there.

Also, on a related note, this currently depends on the ScrollingDialog module. I could...fairly easily...remove this dependency, however for now it's there.

You know...thinking back...it's funny that when I got started on this project...I had no programming experience...I've come a long way. Thank you AGS. And thank you Chris Jones. ;D

Joe

Great work Monkey! :o
But I cant appreciate many differences with this template. Can you spell them?
By the way, click here to go to the best uploader web page. ;)
Copinstar © Oficial Site

monkey0506

I don't really know what the differences would be because...frankly...I haven't looked at any of these templates since 2004 back when I decided that Proskrito's was good enough and decided to code my own. ;D

In any case...there are some subtle differences between the enhanced SOMI (MI1) and the LCR (MI2) GUIs. The WIN GUI for instance...for the instant-win option. Which...in SOMI...was the only way to score 800 out of 800 points. :=

Also, I don't know how Lazarus and SSH handled custom properties, such as the default interaction mode, but I used the Properties module that I wrote (which...actually...I wrote specifically for this purpose). I know that Proskrito used keys at the end of character/hotspot/object/inventory item names, such as ">o" to set the default interaction to Open. Instead with mine you would do something along the lines of "MonkeyTemplate.SetDefaultInteraction(eLocationObject, oDoor.ID, eMonkeyMode_Open);". It's a bit more writing, but...

In any case, I'd like to point out (I already "pointed it out"...I just like to repeat myself...:P) reiterate that when I began this project oh-so-long-ago, I didn't have any computer programming experience whatsoever, and, in part, I took this on for the learning experience. Which is why I like to tell newcomers to AGS that the best way to learn isn't to start small, it's to start with something they have absolutely no idea how to do and ask lots and lots of questions until they figure it out. (The other part was just me being really really anal (remember Snarky? do you remember that? ;D))

Anyway, thanks for the compliment Joe. Glad to see my work hasn't gone unappreciated. ;)

Joe

Yes I understand what you mean, it's always good to feel satisfied with yourself.
Quote
Which is why I like to tell newcomers to AGS that the best way to learn isn't to start small, it's to start with something they have absolutely no idea how to do and ask lots and lots of questions until they figure it out.

I like that ;). Look at me, I began with AGS 8 months ago, and as you could see I havent stopped making questions. And same as you, when I began, I didn have any programming experience.
Copinstar © Oficial Site

monkey0506

Okay. I fixed the insanity (stupidity) with the way interactions were handled so that you don't have to set a property for every interaction. However this means that you can no longer check for interactions outside of the current room. Also it means that checking for an eMonkeyMode_Give interaction and an eMonkeyMode_Use interaction will ALWAYS return the same result...but...it's better this way (i.e., not having to set a property for every handled interaction) I think.

Regarding the fact that Give and Use are the same cursor mode, if you only want to handle one of them, you could do this:

Code: ags
// handle ONLY eMonkeyMode_Give
if (MonkeyTemplate.Mode == eMonkeyMode_Give) {
  // blah
  }
else MonkeyTemplate.UnhandledInteraction(MonkeyTemplate.Mode);

// handle ONLY eMonkeyMode_Use
if (MonkeyTemplate.Mode == eMonkeyMode_Give) MonkeyTemplate.UnhandledInteraction(MonkeyTemplate.Mode);
else {
  // blah
  }

// handle both eMonkeyMode_Give and eMonkeyMode_Use
if (MonkeyTemplate.Mode == eMonkeyMode_Give) {
  // blah GIVE
  }
else {
  // blah USE
  }


Also I've made a few other changes. But there's been no further updates (additions or removals) for the bug list...

My attempts at handling keypresses from rep_ex_always have invariably resulted in some sort of chaos (i.e., keypresses being handled repeatedly, too quickly, too slowly, not at all, some working and others not). But I am working on providing some method of allowing keypresses during speech (even if I have to resolve to a background speech with animation function).

As for the label bar not highlighting during interactions...that has to do with ProcessClick (apparently) returning before the interaction is actually run. I'm open to suggestions on how to work around this.

jasonjkay

This looks great, i'll add it to my site soon. Sorry for not replying sooner, i've been swamped so i've had no time for my site during the last week.
http://www.americangirlscouts.org/agsresources/ - Mods, plugins and templates.

Gribbler

Hi! I can't figure out how to use MI2 dialog gui included in thic GUI. Whet I run dialog in my game the old ags default dialog turns on (and you can see use/give/push etc. panel behind it). The question is how to start dialogs in mi2 gui in this?

monkey0506

Hmmm...I remember things being a bit weird with dialogs. I haven't looked at this in a while (I've been busy with other things), and I'm currently working on a major revision of my dialog module.

I think you should be able to turn off the GUI normally, like "gMain.Visible = false;", though I can't be sure right now.

As for running the "MI2 dialog gui"...I assume you're talking about using the dialog module. IIRC v1.21 of that module is stable...but you'll have to read through the module's documentation (ScrollingDialog_Manual.txt) to learn how to use it. It works differently than the built-in dialog system, as there's currently no way to get the text used for dialog options into the script, it has to be set up entirely independently.

Thank you for your interest, and sorry if I haven't been clear on anything. However after I finish my revisions to my dialog module, my next step was actually going to be revising this one. I'm not sure how long it's going to take, but if you need more help, feel free to ask *again*. Just make sure to tell me what it is you have done (as well as posting any relevant code) which will aid me in trying to help you.

Gribbler

Hi! Well I tried the gui=false thing earlier but it doesnt work since its not blocking and the gui is still visible behind the dialog. I used:

gui[0].visible = false;
RunDialog(0);
gui[0].visible = true;

Well I checked the manual as you suggested earlier but... what can I say, it's little too 'tech' for me and I can't quite figure it out on my own. I know programing and scripting is not fo everyone but I'm dsperate to learn it cause making an adventure game LucasArts-style was and is my childhood dream:) Do you have a demo with a script too look on, just with some test dialog script (using ur ScrollingDialog module commands)? Or a script-fragment itself?
Demo Quest from AGS Site helped me a lot (in example in making cutscenes) but the dialogs are made enirely different there (AGS style). I have your template demo and its great, but unfortunately it has no dialogs:(
You said that in your template dialog has to be set up entirely independently. Where should I store my 'dialog code' then if not in Dialogs section of AGS? BTW thank you for your quick reply and for helping me out

MacGyver12345

 ???   when i click the links it takes me to  www.100webspace.com  please help..!!!
I GOT A FEVER, AND THE ONLY PRESCRIPTION, IS MORE COWBELL!!

monkey0506

Sorry about this, the link is dead. Also the template may not even work with the latest versions of AGS.

I have been doing some work on updating this, but I won't have my computer for a while. I will try to let you know if I get a new version available. Moving is hell. :-X

SMF spam blocked by CleanTalk