Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Pumaman

#602
Does anyone else see this as a problem?
#603
Excellent! :)

If this template proves to be stable, would you be happy with it being included in AGS 3.2?
#604
Quote from: Denzil Quixode on Thu 17/09/2009 04:53:17
Is it possible for an editor plugin to request to be notified whenever any room has just been saved? Sort of like an equivalent for IEditorComponent.BeforeSaveGame() for the current room instead of the whole game. I noticed there is a "RoomModifiedChanged" event on _editor.RoomController.CurrentRoom, is there a way to use that for any room?

Not currently, no. I'll add this to my list.

Quote1) I have an Editor plugin and a Runtime plugin, working as a team. When you save changes to a game in the AGS Editor, the Editor plugin's IEditorComponent.BeforeSaveGame() currently always seems to get run before AGS_EditorSaveGame() in the Runtime plugin - which is good, that's what I want, but is it unwise to rely on it always happening that way around?

Yes, currently all editor plugins will be called before run-time plugins.

Quote2) I hope this one makes sense: In a Runtime Plugin, does it work to call engine->DecrementManagedObjectRefCount() on a managed object (like e.g. an Overlay) during the plugin's handler for the AGSE_SAVEGAME event? My worry is if it is "too late" at that point, and the managed object is already serialized, so when the game gets loaded again the object gets deserialized into memory with a nonzero RefCount, causing a memory leak. Or is it even dangerous to call DecrementManagedObjectRefCount from this context?

The script interpreter is in an inconsistent state during the save, so I would strongly advise not calling any methods like that in the middle of the AGSE_SAVEGAME event, as it could well lead to memory corruption.
#605
On the General Settings pane, check the "Use low-res co-ordinates in script" setting -- I can't remember what it's set to with the Verb Coin template.
#606
Quote from: Denzil Quixode on Sun 13/09/2009 19:08:35
After some fiddling I think I'm halfway there now - but I still have the problem that the PropertyChanged() method on my IEditorComponent gets the name of the property that got changed (and its old value), but I can't seem to see a way to determine which ContentDocument tab the property change was for.

3.2 beta 5 adds the IGUIController.ActivePane property to allow you to find this out.

QuoteEdit: Another question  :-[ - I can successfully add a tab-specific menu or toolbar by assigning to the MainMenu and ToolbarCommands fields in the ContentDocument, but my IEditorComponent does not seem to receive the event when the items are actually selected. Is there a way to get them?

Assuming your content panel inherits from the AGS.Types.EditorContentPanel class, there is a OnCommandClick method that you can override to get these notifications.
#607
QuotePerhaps you could add a Repeatedly_Execute_Always event to the room event list so everyone else knows it, too?

Yeah, I appreciate that this is a bit obscurely documented. I'll have a think about how to improve it.

QuoteEven if I set the resolution to 640x400 , i still can't import a background.

Taking another look at your game, it looks like a lot of the backgrounds were imported with your game resolution set to 320x200, therefore they have been imported as large 640x400-sized scrolling backgrounds for a 320x200 game, rather than 640x400-sized backgrounds for a 640x400 game.

If this is somehow working at run-time, and you want to replace one of these backgrounds without losing the room areas, temporarily change your game resolution back to 320x200 and you should be able to do so. Going forward make sure the game resolution is correctly set!

QuoteI have this question, is it possible to make AGS script allow hexadecimal constants? Maybe I am wrong, but current AGS version I am using (v3.1.2 SP1) does not understand them.

That's certainly a possibility for a future verison, but it's relatively obscure for AGS scripting so it won't be a priority I'm afraid :)



Anyway, beta 5 is now up. It's quite a minor release but due to beta 4 having some instability problems, it seemed like a good idea to get a more stable beta released.
#608
I suppose an extra two optional parameters to the exisitng DynamicSprite.DrawImage allowing you to specify the X and Y co-ordinates in the source image would resolve this?
#609
Interesting point about the new audio system, if there is no easy way to control sound and music volume separately now. Hmm.

Also, please post issues with the beta in the beta thread, so as not to confuse people using the current official version :)
#610
This is an interesting idea -- so the basic idea would be that AGS would have a built-in list of "standard" modules that you would be able to tick a box to include or not include in your game.

For commonly used modules like KeyboardMovement I can see this being useful; the question is, are there enough modules that loads of people use to make this worthwhile?
#611
Hmm that's strange. The editor must be dependant on some sort of DLL that 99% of people already have installed anyway; unhelpfully, the error message doesn't specify what it is.

Has anyone else had this problem with 3.1.2 SP1?
#612
Yes, I think some sort of "walk-to point" feature should be in AGS, because having to remember lots of co-ordinates is a bit silly. However, because it's not a major pressing issue, it has never made it high enough on the priority list to be implemented.

As for edges having entry points -- I would argue that if you this wouldn't be necessary if you had walk-to points, since you could just use one of them as the entry point.
#613
Yes, you can create a repeatedly_execute_always function in room scripts, you don't have to put it all in the global script.

The reason for this restriction is the same as for blocking walks, blocking animations, etc -- ie. that it's not possible to get into a state of nested blocking calls. Because blocking calls are banned from rep_exec_always, it prevents you from calling a blocking Walk inside a blocking Walk inside a blocking Walk, because doing so could end up with some very obscure and hard to track down bugs.
#614
Hmm, it seems that DX5 and D3D are behaving quite differently when it comes to region tints. I'm not sure why this is, because I'm sure that this was all sorted out back when AGS 3.0 was released.

For example, a tint like this:
Red: 0
Green: 10
Blue: 0
Saturation: 100

what would you expect to happen? With D3D the character goes really dark, almost black; whereas with DX5 it gets re-coloured to green.

In theory both DX5 and D3D do tinting by combining the hue and saturation of the tint colour with the luminance of the character pixel. This means that a tint of (R=0, G=5, B=0) will have the same effect as (R=0, G=100, B=0) because the hue and saturation of both colours are equal. This is what happens on DX5.

For the technical minded, what seems to be happening with the tinting is:

DX5:
(Tint Colour Hue, Tint Colour Saturation, Pixel Luminance)

D3D:
(Tint Colour, reduced by Pixel Luminance %)

Looking at it logically, what D3D is doing seems to be more useful, so I should probably change it to match DX5.
#615
Quote from: AGD2 on Thu 03/09/2009 17:41:28
Something else I noticed is that if you put code in the game_start function like:

Code: ags
if(IsSpeechVoxAvailable()==false) QuitGame();
if(IsMusicVoxAvailable()==false) QuitGame();


... and then use the test game feature, the game will quit because it doesn't find the .vox files in the "_Debug" folder. At present you need to copy them across manually for the test game feature to work.

The cause of this is probably that IsMusicVoxAvailable always returns 0 in AGS 3.2, because the MUSIC.VOX is no longer generated. For backwards compatibility, I'll change it to check for the new AUDIO.VOX instead.
#616
Quote from: ProgZmax on Mon 07/09/2009 04:51:30
I should have tried turning that off to further narrow down the problem but to be quite honest I didn't even remember I'd set Ignorewalkbehinds on the character (probably because it doesn't show up in the properties list).  Well, I'm glad you found the problem, at least.

I've looked into this further, and I'm not sure it's actually going to be possible to fix this situation in the D3D renderer. If you have Character 1 standing behind Character 2, and they are both behind a walk-behind; if Character 1 has Ignore Walkbehinds set, but Character 2 doesn't, it's not possible for the D3D renderer to draw Character 1 in front of the walkbehind but behind Character 2... because Character 1 needs to be drawn before Character 2,  the walk-behind is then drawn after Character 2, so it will get drawn on top of Character 1. Hmm...
#617
Ok thanks, I've reproduced this and will fix it.
#618
Looking at your room script, the RepExec function generates a random number and then plays the object animations with either the eOnce or eRepeat setting. Therefore if the animation happens to be running with eRepeat (which most of them are) when the dialog starts, it will continue animating through the dialog.
If the animation was started with eOnce it will complete while the dialog options are displayed, but then the RepExec code will not run to start it going again.

Quoteso, is there any reason why you can't have RepExec loops running with 'run game loops while dialog options are displayed'?

Well, this is standard AGS behaviour that RepExec doesn't run while the game is blocked (which it is while dialog options are displayed); just like while a blocking Walk or blocking Animate are in progress.
#619
I think this is a compiler bug that will be fixed in the next version of AGS.

Check your dialog scripts, and make sure there aren't any lines like this:

@

I think this crash happens if you have a @ without a number after it.
#620
For variable parameters, the number to pass is the number of fixed parameters plus 100.

For example:
"Character::Say^101"
"Overlay::SetText^104"
SMF spam blocked by CleanTalk