REMEMBER, this thread is for bug reports and discussion of the beta only - NO SUGGESTIONS IN THIS THREAD
Right, well I'm bored of 2.62 and I'm sure you guys are too, so let's get it released! This will become the final official version if no serious problems are found in the next few days.
Changes since RC2:
* Added SetFadeColor text script function.
* DisplaySpeechBackground now removes any existing background speech for the character before displaying the new speech.
* Fixed GetRegionAt to return the nearest region if the co-ordinates are off the edge of the screen.
* Fixed PlayMP3File error if filename was longer than 25 characters.
Changes since RC1:
* Added FileWriteRawChar, SetNextScreenTransition text script functions.
* Increased max GUIs to 50 and max GUI Buttons to 250.
* Fixed AnimateCharacterEx not working properly when playing a multi-loop animation backwards.
* Fixed recursive function calls to give error rather than crashing.
* Fixed issue with Sierra-style speech if the first frame in the speech view was flipped.
* Fixed problem when SetPlayerCharacter was used in a room which had "Hide Player Character" ticked.
* Fixed SetObjectPosition giving erroneous line numbers if you passed an invalid object to it.
* Fixed SetObjectIgnoreWalkbehinds not refreshing the object on-screen.
* Fixed Wait(0) to give error message rather than cause strange in-game results.
Changes happenin' since ye beta 4:
* Pixel-perfect click detection now works with scaled sprites.
* Added GIF image import, and Quick Import Animated GIF Frames option.
* In the Walk-behind editor, only the baseline for the currently selected area is now displayed, for clarity.
* X-position portrait sides feature now attempts to guess the other character the first time a line of speech is spoken.
* Fixed hit-testing area of scaled objects to match the scaled object size.
* Fixed DisplayThought positioning if character was not in current room.
* Fixed SetCharacterIdle not kicking in straight away when delay was 0.
Changes since beta 3:
* Added option for objects to use region tint and light levels, and an option for objects to use walkable area scaling.
* Added AddInventoryToCharacter, GetButtonPic, GetHotspotName, GetObjectName, LoseInventoryFromCharacter, NewRoomNPC.
* Added ability to get the number of characters, objects and GUIs to GetGameParameter.
* Increased max characters to 300.
* Increased max views to 600.
* Added game.abort_key, to allow you to customize the Abort Key to be something other than Alt+X.
* View preview window now displays current frame number.
* Fixed SetCharacterIgnoreWalkbehinds placing the character behind all other sprites.
* Fixed DisplayThought to shrink the thought bubble to fit the text when a short amount of text is displayed.
* Fixed mouse cursor staying as Pointer (mode 6) when a dialog is STOPped.
NOTE: The new functions NewRoomNPC, AddInventoryToCharacter and RemoveInventoryFromCharacter are to support future optimizations, and as such it is highly recommended that you start using these rather than modifying the character[].room and character[].inv variables directly. It is planned that these two variables may well become read-only in a future version.
Changes since beta 2:
* Increased max hotspots to 30.
* Changed room area editor so that only the selected area is displayed bright, and the other areas are all greyed out. (this effect doesn't work in 256-colour games, however)
* Added missing characters to default font 0 (#, $, &, etc)
* Added automatic de-denting to the script editor, so that } characters get automatically pulled back to line up with the corresponding {
* Added Script Modified indicator (*) to script editor title bar.
* Added Sierra Portrait Position game option, to allow you to specify the portrait to be on the left, right or alternate. This supersedes and obsoletes the old game.swap_portrait variable.
* Added game.skipping_cutscene variable to let you know when your code is being skipped over.
* Read-only variables such as mouse.x are now enforced as such.
* Display("") now does nothing, rather than pausing the game.
* View preview window now remembers its location on the screen for next time.
* Fixed crash if there were no frames in one of a character's main loops, by providing an error message instead.
* Fixed attempting to skip a cutscene hanging if No Auto Remove text was being used.
* Fixed FaceLocation problem with characters that had less than 4 loops.
* Fixed movement 'snapping' to destination when using move speed 1.
* Fixed view preview window not blanking out display if you selected a loop with no frames
* Fixed interaction editor Text Script Equivalent code for Conditional If Variable Equals Value
Changes since beta 1:
* Fixed bug in beta 1 where the character frame didn't reset to standing when they finished moving.
* Added warning if you called FollowCharacter on a character which was doing a looped animation.
* Increased max sprites displayed at once from 39 to 50, and improved user-friendliness of the error message if it is exceeded.
* Fixed SetMusicVolume changes not being persisted in save games.
* Fixed SetObjectTransparency and SetCharacterTransparency so that a transparency of 100 means the sprite is completely invisible, even with 256-colour and alpha-blended sprites.
* Fixed text box accepting keypresses when disabled. This fix means you can select the 'active' text box on a GUI by disabling the other ones.
* Fixed text windows getting a black background if colour 0 was specified, rather than being transparent.
* Fixed "Use exact palette" being ignored if "Share palette" was ticked in 256-colour animated backgrounds.
* Fixed SetPlayerCharacter to do nothing at all if you pass the current player character to it (previously it was resetting the inventory layout)
* Fixed SetGlobalString not being safe if you passed a string longer than 200 characters to it.
* Fixed ChangeCharacterView giving a warning message if the character's idle animation was playing.
* Fixed view preview window not stretching properly with 320x200 games.
* Fixed view preview window aligning sprites to top rather than bottom.
* Fixed #defines working on words inside 'single quotes'.
* Fixed "you need to select an item first" message box when trying to set the Inventory Hotspot Dot.
* Restoring or restarting a game now clears the keyboard buffer.
Changes since 2.61:
* Added ability to get current year to GetTime.
* Added SetObjectTint and RemoveObjectTint script functions.
* Added COM Plugin API access to Characters, GlobalMessages, Script #defines, GameDirectory, SaveGame and QuitGame.
* Added characters[].idleview variable to provide read access to the character idle view (still use SetCharacterIdle to change it).
* Fixed bug in 2.61 which was resetting all character movement and animation speeds if you upgraded a game from a pre-2.55 version.
* Fixed WAV music not getting included in the MUSIC.VOX
* Fixed plugin API AbortGame function crashing.
* Fixed IsKeyPressed not supporting the + - = keys.
* Fixed StopMoving resetting the character's current frame to 0, even if they weren't moving.
* Fixed problems using NewRoom inside a region interaction whilst moving to a hotspot walk-to point.
* Fixed walk-behind area 15 not working.
* Fixed error message about repeatedly_execute_always popping up if you used a blocking function in Enters Screen Before Fadein (which you shouldn't do anyway).
* Fixed object baselines not being sorted out properly when you deleted an object.
* Fixed crash if you used NewRoom from within a Player Leaves Screen script.
* Fixed nested array indexes not working properly when used with a struct in the form a.b[c[k].d];
* Fixed "repeatedly_execute" option on the Script menu sometimes selecting repeatedly_execute_always instead.
* Fixed script editor crashing if you created a variable name longer than 60 characters.
* Fixed parse error if a string longer than 255 characters was used in the script.
* Fixed crash if you closed the script editor while the message telling you to do so was still displayed.
* Fixed FaceLocation hanging if the character was set as hidden.
http://www.adventuregamestudio.co.uk/ags262final.zip
Weee new version (beta anyway)!
Thanks CJ!
Does this contain the change, which I hoped would make AGS work better under Wine, i.e. the one mentioned in this thread: http://www.adventuregamestudio.co.uk/yabb/index.php?topic=15334.0 ? The problem is exactly the same with this version so in case the change has been made it unfortunately didn't help.
:D
Great!
BTW, would the bug in exact palette import for animating frames using shared palette in the editor be fixed any time soon?
I found a bug!
When the character stops walking, his view doesnt reset to the first frame, hope this helps!
Quote from: sman on Sun 18/07/2004 23:40:01
Does this contain the change, which I hoped would make AGS work better under Wine, i.e. the one mentioned in this thread: http://www.adventuregamestudio.co.uk/yabb/index.php?topic=15334.0 ? The problem is exactly the same with this version so in case the change has been made it unfortunately didn't help.
Yes, it does include the tweak. Since that didn't work, I'm afraid there's not a lot I can do -- the code all looks fine (and works fine on Windows). Sorry.
QuoteBTW, would the bug in exact palette import for animating frames using shared palette in the editor be fixed any time soon?
Hehe, I'll bump it up teh list ;)
Quote
When the character stops walking, his view doesnt reset to the first frame, hope this helps!
ARG, that'll teach me to just quickly slip in an extra fix after I've tested the build. Well spotted, sorry about that, I'll get it fixed for the next beta.
No problem, also this code doesnt work:
if (GetCursorMode() == MODE_WALK)
{ code here }
Dont know why, all the other modes work.
Not sure this is a bug, it could be my script.
I suspect there's a problem with your script -- if you're still having problems, please post it in another thread.
I hope it's okay to put suggestions here...
Would it be possible to add 'thinking' to the dialog script? With the bubble gui and the thinking view and all, like DisplayThought? It seems this command is still fairly new, but I've found it to be quite useful. It would be great if it could be called from within the dialog script without dialog requests.
Thanks~
Thanks CJ. If I could make a suggestion (I'll assume for now that you said, 'Yes')...
Could you possibly increase the max. character limit? Even though it IS quite high right now, I'm almost definitely going to exceed it, even being conservative. Maybe to 250? Even 200 would be great...
Also... would an increase in total views be okay? ^_^
Thanks...
EDIT: One more thing relating to this topic -> http://www.adventuregamestudio.co.uk/yabb/index.php?topic=15382.0
I'm not sure whether there's a possible solution to this problem, but off hand, would it be possible to make a text window transparent (without the "black square"?
Just for future reference, please post suggestions in a new thread to leave this one clean for discussion of issues directly related to the beta -- thanks.
QuoteWould it be possible to add 'thinking' to the dialog script?
Sounds reasonable to me, I'll add it to my list.
QuoteCould you possibly increase the max. character limit? Even though it IS quite high right now, I'm almost definitely going to exceed it, even being conservative. Maybe to 250? Even 200 would be great...
Also... would an increase in total views be okay? ^_^
I can do if you really need more. Remember though that extra views take up more memory, so it's always a good idea to try and use as many loops as possible from each view, rather than having loads of views with only 2 or 3 loops in each.
Believe me, I make every possible use of all the loops in every view. The views may be alright, but I will definitely need more character slots. Not too many more, but I've worked out a rough number and it's over 150. I really appreciate you increasing this one seeing as I'm the only person who seems to need it.
Now, now. I think mine will too. Granted, it's prolly 'cause mine's on a similar style (Illusion of Gaia/Secret of Mana-ish) kinda game.
QuoteSounds reasonable to me, I'll add it to my list.
Aye, thanks a bunch!
By the way, there's a small quirk with followcharacter(ex) and region interactions. It seems that region interactions don't work when you're calling a followcharacter(ex) from somewhere.
However, it only doesn't work when the command is executed at the same time as your character moves onto a region, but not while it's running. For example, if you do a followcharacter from repeatedly execute, 'character walks onto region' doesn't work at all.
Well, in any case - keep up the great work, I appreciate your efforts very much! :D
Can you clarify what you mean? Is the player character being followed or are they following an NPC?
Oh, wait - it's not FollowCharacter, it's SetplayerCharacter (which I had both called in the same line, should have checked both commands alone before posting).
So, when you place SetPlayerCharacter(EGO) in repeatedly execute or call it just at the wrong moment, 'walking onto region' will be ignored, which kind of makes sense, too (since region interactions depend on the player character).
This makes it even less worthy of a mention, heh. Sorry for the trouble. :)
If you change the current player character, and the new character is already on the region, it won't fire any events (since the character has not actually walked onto the region when the player was controlling it).
Sounds logical, but my problem was a different one... I had this line in repeatedly execute:
if (getglobalint(1)==1) {setplayercharacter(EGO);}
Now, while gloabal int 1 was 1, the area interaction 'walks onto region' was ignored for character EGO all the time.
Anyway, I made sure setplayercharacter would only run once by putting in a setglobalint(1,0) after setplayercharacter. It's not a command that should be run all the time, I suppose. My not so proper use of code is to blame, I'd say.
Ah yes, calling SetPlayerCharacter every game loop would probably cause a few problems, I'm not surprised about that. Glad you found the solution.
Yes, it's a good idea to always make sure everything runs once, even if you have to check for a thousand conditions (you should see my code, it's pretty messy because it makes sure that it runs only when needed.)
so it would be like this:
if(GetGlobalInt(1) == 1) {
Ã, SetPlayerCharacter(EGO);
Ã, SetGlobalInt(1,0);
}
like Bernhard said.
A good way to make sure that your scripting is not looping at all times is by hitting the `~ key (next to '1' on american keyboards) during debug mode to see the debug console.
QuoteGlad you found the solution.
So am I, thank you! :)
QuoteA good way to make sure that your scripting is not looping at all times is by hitting the `~ key (next to '1' on american keyboards) during debug mode to see the debug console.
Yeah, the debug console sure is useful, using it all the time.
Hmm... wonder if repeatedly setting one or more global integers in rep. ex. would make my game any slower?
By the way, there's a small problem with followcharacter(ex) and a low game.following_room_timer value ( 8 ). The character sometimes follows almost instantly, and sometimes it takes really long to pop up.
How's the follow_room_timer set up? Does it count the number of loops after a new room has been entered? Is there anything that can be done to make it more stable?
EDIT: Another thing... I can't run SetPlayerCharacter in repeatedly_execute_always, it exits with an error (says I can't run it in rep. ex. always). Is that intentional?
Thanks~
QuoteHmm... wonder if repeatedly setting one or more global integers in rep. ex. would make my game any slower?
It will make a minor difference, yes. But more importantly, doing so kinda renders the debug console useless, so it's best avoided ;)
Quote
By the way, there's a small problem with followcharacter(ex) and a low game.following_room_timer value ( 8 ). The character sometimes follows almost instantly, and sometimes it takes really long to pop up.
If the character was in the middle of something (eg. an animation) then they will finish it before they come into the new room. It's possible that it what's causing the problem.
Quote
How's the follow_room_timer set up? Does it count the number of loops after a new room has been entered? Is there anything that can be done to make it more stable?
Yes, it's the number of loops, presuming that the character was idle when you changed rooms.
Quote
EDIT: Another thing... I can't run SetPlayerCharacter in repeatedly_execute_always, it exits with an error (says I can't run it in rep. ex. always). Is that intentional?
Yes, SetPlayerCharacter initiates a room change which is not possible from within rep_exec_always.
not an error in this specific release (i dont know when this might have started to happen), and not very important too, but i just noticed that, when in the interaction editor, if you choose 'conditional - if a variable is set to certain value', the 'text script equivalent code' is wrong, for example, if variable is 1 and value is 3, it shows 'if (1 == 3) {' instead 'if (GetGraphicalVariable(1) == 3 ) {' or whatever.
EDIT: oh, sorry, forget that, i was making it the wrong way, but still, the real equivalent code would be 'if (GetGraphicalVariable("variable name") == value )' instead 'if (variable name == value)', wouldnt it? although maybe its just for showing how 'ifs' work.
Ah, and another not-this-release-specific and not-very-important thing: if you make, for example, SetCursorMode(-3), the cursor takes some sprite as cursor pic, instead doing nothing or displaying an error or something
Quotethe real equivalent code would be 'if (GetGraphicalVariable("variable name") == value )' instead 'if (variable name == value)', wouldnt it? although maybe its just for showing how 'ifs' work.
Good point, I'll get it changed.
QuoteAh, and another not-this-release-specific and not-very-important thing: if you make, for example, SetCursorMode(-3), the cursor takes some sprite as cursor pic, instead doing nothing or displaying an error or something
Well spotted, although minor as you say. This is fixed in beta 2.
* Fixed SetPlayerCharacter to do nothing at all if you pass the current player character to it (previously it was resetting the inventory layout)
*************
Whoo-hooo! Is this what I think it is? Thanks, CJ, thanks a LOT!
*************
* Restoring or restarting a game now clears the keyboard buffer.
*************
It's probably something I don't need to knopw about, but humour me - what does it mean? Just curious.
EDIT - Ok, so the 1st one didn't help me. Pity. Hmmm, a question - what happens when we do "character[etc].inv[etc2]=1"? I mean, does the character receive the inventory item having it placed AFTER the existing items, or is it placed according to numerical order? (Considering the character in question isn't the player character). If the answer's the latter, would AddInventory be a suitable workaround for making sure the character "receives" the item, placing it next to the ones it already had?
Or should I start a thread or something for this?
Quote from: redruM on Sun 08/08/2004 09:28:49
Whoo-hooo! Is this what I think it is? Thanks, CJ, thanks a LOT!
Erm I doubt it, it's really not that exciting a fix. It simply means that if you call SetPlayerCharacter with the character who is already the player character, nothing happens. Which is kinda logical, but it didn't quite work right before.
Quote
Restoring or restarting a game now clears the keyboard buffer.
It's probably something I don't need to knopw about, but humour me - what does it mean? Just curious.
Someone was reporting a possible problem that if you pressed keys just before restoring a game, the keypresses affected the restored game. It shouldn't have any effect.
Quote
EDIT - Ok, so the 1st one didn't help me. Pity. Hmmm, a question - what happens when we do "character[etc].inv[etc2]=1"? I mean, does the character receive the inventory item having it placed AFTER the existing items, or is it placed according to numerical order? (Considering the character in question isn't the player character). If the answer's the latter, would AddInventory be a suitable workaround for making sure the character "receives" the item, placing it next to the ones it already had?
I'm not really sure what you're getting at, what were you hoping that the fix did? AddInventory ensures that the item gets added to the end of the list; if you change .inv[blah]=1 directly, it won't update at all unless you call UpdateInventory, which resets the entire inv list.
I was just thinking about a thread I started awhile ago, I'm not sure you remember, when I moaned about SetPlayerCharacter making all the INV items rearrange themselves so they end up in AGS's numeric order - very visible in LucasFan's Maniac Mansion Remake. I didn't want that to happen, I suggested it be "toggeable", you said you'd add it to your list. I thought this was it, because of the "resetting inventory layout" part.
By the way, I noticed in AGS that there is no 'multiple sprite import' for 256 colors. You have to import the images one by one.
Quote from: redruM on Sun 08/08/2004 18:43:08
I was just thinking about a thread I started awhile ago, I'm not sure you remember, when I moaned about SetPlayerCharacter making all the INV items rearrange themselves so they end up in AGS's numeric order - very visible in LucasFan's Maniac Mansion Remake. I didn't want that to happen, I suggested it be "toggeable", you said you'd add it to your list. I thought this was it, because of the "resetting inventory layout" part.
Ah yes, that's still on the to-do list indeed.
How about a
GetTotalInvItems ();
functon?
I'm actually thinking about if it's good to move acwin.exe and acdos.exe to a ENGINES/ folder.
You know, we still have newcomers asking about how to start AGS threads in beginners' tech. forum constantly (though not as frequent as before now).
ooooh, *Downloading*
Sounds kool CJ!
Another suggestion. If you have a function without any variables, eg:
function DoThing () {
MoveCharacter (EGO, 40, 70);
}
Then if you wanted to call the function you could just type:
DoThing;
And leave off the brackets.
Disagreed. It will get the functions confused with variables, etc. very easily. Furthermore I think most programming languages treat this kind of adaptation as illegal.
As Gilbert says, this would make it confusing as to whether DoThing was a variable or a function; and would also make it inconsistent with C. I can't see a good reason to do this.
However, you could write:
#define DoThing MoveCharacter (EGO, 40, 70)
:'( I have a question.. is it possible to include 256 byte trutype fonts support?.. :(
Please see here:
http://www.adventuregamestudio.co.uk/yabb/index.php?topic=11930.20
Oi! A small question about the bubble gui, specifically the game.speech_bubble_width variable, if I may. The description in the manual says this: Maximum width of the thought bubble text window (default 100).
The bubble gui doesn't adjust its size depending on the text width, though. And since the description says 'maximum', I was thinking that it would be doing just that, but it seems to be a fixed size. If I set the value to 300, I get a 300 pixel broad window even if the text is only a single letter.
That leaves us with 2 possibilities:
-The description in the manual isn't correct
-It's... a bug!1
Now, my question would be... which of the two would it be?
Thanks, and keep up the great work! :)
extremely minor bug?
in the animation viewer, for example, i dont have a view in loop 5, but i do in loop 4 and 6, but as a am using the animation viewer and selecting views, as i pass loop 5, it shows loop four since it didnt refresh with a new loop for 5 cause none exists, but i would think that it would show a blank animation window, not the previous one.
Just a feature? Not a big problem of course.
error that can cause headaches in the manual (again minor)
in the 'Release Viewport' section, the code example, is written SetViewPort, but the "P" should not be capatilized and won't compile.
Oh, and when I make a new GUI button, the text no longer says "New Button" but it says "Punch". What's that all about?Ã, ;)
Are you sure the "SetRestartPoint();" is still working? I'm using proskritos newest FOA template , but after checking the code, I don't believe that that is causing the problem. First I put it in my first rooms' before fadein interactions, and that didn't work,so I put it in after fade in interactions. I have now tried "repeatedly execute" and that didnt work. both times when it was 'before fadein' and 'after fade in' the "SetRestartPoint();" was not within a cutscene marker, but for some reason, within playing the game, you are brought to when your playable character is first playable.
It's funny, I noticed that too. That seems to be usual behaviour for SetRestartPoint - if called on game_start, it'll restart only to the first non-blocking issue. You'll notice that on my LARRY 2 game RESTART actually brings you to the intro, but that's because I used timers and Repeatedly_execute for those animations, instead of blocking stuff. If I had, I'm sure it would restart to the 1st playable room.
Quote from: Bernhard on Mon 23/08/2004 22:57:41
Oi! A small question about the bubble gui, specifically the game.speech_bubble_width variable, if I may. The description in the manual says this: Maximum width of the thought bubble text window (default 100).
I'll look into it.
Quotein the animation viewer, for example, i dont have a view in loop 5, but i do in loop 4 and 6, but as a am using the animation viewer and selecting views, as i pass loop 5, it shows loop four since it didnt refresh with a new loop for 5 cause none exists, but i would think that it would show a blank animation window, not the previous one.
Yeah, fairly minor thing but I'll get it fixed.
Quoteerror that can cause headaches in the manual (again minor)
in the 'Release Viewport' section, the code example, is written SetViewPort, but the "P" should not be capatilized and won't compile.
Fair point, I'll fix it.
QuoteAre you sure the "SetRestartPoint();" is still working?
The game can't save while a script is running, so SetRestartPoint will actually wait until the first game loop when there isn't a blocking script running in the background. Is this likely to be the issue?
Honestly, do you ever rest, CJ? I can't believe it! Here we go again!
This is my favourite change: "View preview window now remembers its location on the screen for next time."
That was really annoying before given that I almost always have WinAmp sitting in the top corner of the screen ^_^ Thanks!
There is a bunch of useful features as always, thanks CJ for the hard work you put into developing AGS!
Quote* Read-only variables such as mouse.x are now enforced as such.
Having noticed how read-only variables can now be declared I wonder will it be officially ok to use that in a script?
main global script:readonly int myConst = 10;
or...
main global script:int globalSetting;
export globalSetting;
room script:import readonly int globalSetting;
EDIT:
Quote* Added automatic de-denting to the script editor, so that } characters get automatically pulled back to line up with the corresponding {
Think I found a strange behaviour with the auto de-denting feature: if you place the cursor after already formated '}' and press enter it will yet be shifted to the left.
~Cheers
I think I'll leave readonly variables as an "unofficial feature", much like structs and arrays, so that it's not another thing to support.
(and before anyone asks why I didn't use "const", it's because the variables are in no way constant, it's just that you can't change them).
As for the de-denting feature ... yeah, if you go back and press return again after the brace, it will de-dent again. It tends to do this in other editors like Visual Studio as well ... I guess I could provide an option to disable the functionality completely if it's annoying.
Oooh, the hotspot editor changes sound awesome. Looking forward to get back home and test all the new features out. The final release of this version should probably be out by the time I leave Canada.
I know I shouldn't ask, but now that you're fiddlin' with the speak portrait positioning, how far away are we from Sierra style speech with LucasArts talk views and custom default (is that a contradiction in terms?) placement of text boxes? :)
You're talking about having both a speech portrait, and the actual character animating at the same time, right? Yeah, it's on my to do list.
Mmm, no, I meant a Sierra text box (which, for my game, would be placed in the bottom black part of a letterboxed background) and the on-screen characters animating, no portrait. More or less like in the first Gabriel Knight.
So I hope whenever you do implement it, that we'll be able to turn off the portrait and keep just the animating character for Sierra speech.
Hmm, can't that be done with a non-portrait sprite, with the proper transparent areas? For Gabe Knight emulating, I mean. And have something else for when they ain't talking, something that the speech would draw over.
Of course you could just use an invisible sprite (1-pixel transparent) for the portrait, if it wasn't possible to turn it off. As for the rest, I'm not sure I understand what you mean redruM.
By the way, sorry for going off topic.
Ah, well that's slightly easier to implement since it woudln't require a second talking view for the characters. I'll add it to my list.
Thanks! :D
I would be very nice if the animations in the room don't freeze anymore when you are choosing an option in a dialog topic
Is this possible?
O yeah a possibility to scroll between dialog topic options in the game like in MI would be nice too. I hope I'm not rude and asking too much, I really appreciate your work!
I don't want to sound like a mod-wannabe, or something, but, wackojacko, first, this thread isn't for sugestions, which is made clear on a few posts, and second, why are you posting this after havinjg created a thread adressing the very same subject, to which CJ replied
QuoteYeah, the dialog options act like a Popup Modal GUI and pause the game. However, I've had a fair few complaints about this so I may well add an option to change the behaviour.
?
Ah, the sierra portrait position tweak I asked for no longer than two weeks ago! Joy!
This is the best present for my birthday, which is coming in 4 months!
Great and sincere thanks, Puma! Rock on.
Quote from: redruM on Sun 05/09/2004 22:05:16
I don't want to sound like a mod-wannabe, or something, but, wackojacko, first, this thread isn't for sugestions, which is made clear on a few posts, and second, why are you posting this after havinjg created a thread adressing the very same subject, to which CJ replied
QuoteYeah, the dialog options act like a Popup Modal GUI and pause the game. However, I've had a fair few complaints about this so I may well add an option to change the behaviour.
?
Ok, I'm sorry for the suggestions. I saw other poeple doing a suggestion so I did one too, I did not knew that. sorry for that. And for the second, the thread was already answered and I tried to put a solved sign next to it, but that didn't work...Cj posted it after it was already solved, so I didn't read that anymore. So I'm very sorry, but don't get me wrong, I'm not a bad person ;-)
No worries, mate. Glad to see you didn't take offense, some people would.
Back on topic now, what else is there to say other than to reaffirm that CJ truly is a God-Like creature put on earth to help fill the void created by Sierra and Lucasarts departure?
Quote from: Goldmund on Mon 06/09/2004 03:29:52
Ah, the sierra portrait position tweak I asked for no longer than two weeks ago! Joy!
This is the best present for my birthday, which is coming in 4 months!
Great and sincere thanks, Puma! Rock on.
Just a note about the X-positioning. It may not work quite as you expect to begin with, because on the first line of dialog it doesn't know who the character is talking to. Therefore, in order to make it work properly you can include a blank DisplaySpeech line for the other character at the start, so that it realises who is being talked to:
DisplaySpeech(CHAR2, "");
DisplaySpeech(CHAR1, "Hi, how are you");
DisplaySpeech(CHAR2, "I'm fine");
etc
It would be very useful if the floating GUI window was placed where I previously moved it.
Pumaman: I understand. I will test it and report how it works, but now I'm on dialup since my IP had all their switches stolen from the building, so it'd have to wait a few days... :-\
Yet again, you give out another beta to test. I'm going to be very interested to read the first post again.
Thanks for fixing the Bubble GUI! :)
About the character[].inv[] variable possibly becoming read only... I've found accessing the item count directly very useful - especially for RPGs. For example, it could be used to keep track of NPC character stats, and so on. In my current game, I'm using inventory items to store certain character positions for later retrieval.
If you make that variable read only, AGS may become slightly less customizable and less handy for different kinds of games, and we'd have to use features that aren't officially supported (arrays) instead. Please reconsider.
This is the first beta I've used so far, and so just let me say thankyou for fixing the transperency problem with text windows ^_^ Works beautifully now!
Is that message that appears when you first test a game new? Or has it just been too long since I first saw it...
Quote from: Pumaman on Sun 18/07/2004 21:35:34
* Added option for objects to use region tint and light levels, and an option for objects to use walkable area scaling.
Wonderful!
Quote
* Added AddInventoryToCharacter, NewRoomNPC, RemoveInventoryFromCharacter.
Good, I did them myself but it's always better to have engine functions.
Just a quick note: why RemoveInventoryFromCharacter and not LoseInventoryFromCharacter?
Sounds bad in English? By the way, not important, I think I'll keep my functions AddInventoryOfCharacter and LoseInventoryOfCharacter as one-line wrappers of your ones, to avoid substituting the calls in all the scripts :)
D.
QuoteAbout the character[].inv[] variable possibly becoming read only... I've found accessing the item count directly very useful - especially for RPGs. For example, it could be used to keep track of NPC character stats, and so on. In my current game, I'm using inventory items to store certain character positions for later retrieval.
The reasoning for this change is so that the inventory item order can be tracked for all characters, not just the player character. This is in order to allow a fix for an issue with multiple player characters, where switching characters resets the inventory order.
However, I see where you're coming from so I think when the time comes, I'll have it as an option and not make the variable read-only.
QuoteIs that message that appears when you first test a game new? Or has it just been too long since I first saw it...
It was added in one of the betas, yeah. It pops up the first time you test a game, just to explain the known bug to try to cut down on the number of people reporting it here.
Quote* Added option for objects to use region tint and light levels, and an option for objects to use walkable area scaling.
In terms of this feature, I'm aware that there is a problem with the hit-testing on scaled objects at the moment (ie. their 'hotspot' is the size of the normal object, not the scaled one). This will be fixed for the next beta.
QuoteJust a quick note: why RemoveInventoryFromCharacter and not LoseInventoryFromCharacter?
Hehe well spotted, that's a typo in my post -- I'll correct it. In the software it is indeed called LoseInventoryFromCharacter.
Wow. A new version already. I need to keep up with the updates!
Seems nice right now. I am going to test this out using instagame resources and try to use every feature you got.
There seems to be a bug with animating objects:
I have
SetObjectView(1, 11);
AnimateObject(1,0,2, 1);
I am sure that the loop and the view exist, but the object does not animate - it just stays still at the first frame.
Hmmm are you sure that the animation won't run, not something afterwards that stopped it? Try adding some Wait()s after the AnimateObject() line to check if it indeed was not animating (as AnimateObject() was not blocking).
EDIT: Just tried similar codes and it worked, can you upload files that exhibit this problem?
What may have caused this is that there is a GUI in front of it >_<
However, how can I fix that?
Was the GUI set to popul-modal?
In that case just change it to some other mode.
Thanks, it works fine now.
Waycool, thanks CJ!
This is fantastic; I especially love the AddInventoryToCharacter interaction. The game I'm working on now has a 'party' where you can switch between more than one character and I was pretty much bursting my brains trying to work out a nice, simple way of sorting the separate inventories. Thanks ;D
QuoteHowever, I see where you're coming from so I think when the time comes, I'll have it as an option and not make the variable read-only.
Great, thanks! :D
By the way, in the recent beta, when using DisplayThought on a character not in the current room, the text box won't be centered and appears to the left.
Quote from: Pumaman on Sun 12/09/2004 12:25:06
However, I see where you're coming from so I think when the time comes, I'll have it as an option and not make the variable read-only.
BTW, maybe we can have instead one extra function:
SetInventoryQuantity(char, inv, num)
to handle this?
This way, you don't need to make it confusing by adding an option to it.
Oi, found another small thing... when you switch to an idle view (for example on keypress), it sometimes takes quite long (well, 1-2 seconds at a frame rate of 30) for it to kick in with delay 0. This happens only when the character stands, though. Also, it works fine afterwards, happens only when setting it.
However, if you activate the idle view just before the character stops walking, it starts immediately.
Hmm... not sure if this is important enough an issue to post about it, you be the judge. :)
EDIT - I managed to fix it up by setting it to the first frame of the idle view and releasing it before setting the idle view. That probably means it's related to animation delays, maybe it waits for the current frame delay to finish, or something.
EDIT 2 - Another one - when doing custom scrolling in rep_ex_always, the displayed Lucas Arts Style Text can go beyond the screen edges when the game is blocked.
QuoteOi, found another small thing... when you switch to an idle view (for example on keypress), it sometimes takes quite long (well, 1-2 seconds at a frame rate of 30) for it to kick in with delay 0. This happens only when the character stands, though. Also, it works fine afterwards, happens only when setting it.
I'll look into this, I think I know why it's happening.
QuoteEDIT 2 - Another one - when doing custom scrolling in rep_ex_always, the displayed Lucas Arts Style Text can go beyond the screen edges when the game is blocked.
I'm not sure that this is a bug, really... if the character is gradually scrolled off the screen, so should their speech be.
QuoteI'll look into this, I think I know why it's happening.
Great, thanks! :D
About the text thing - if the game isn't blocked, the text is being pushed along by the screen edges and is always completely readable (it does that with background speech, at least), so I figured that this would happen to normal text, too.
Something got messed up with the new beta. Here's the deal:
In lieu of messing with SetViewport and all that to make the screen scroll, I had an invisible character called "scroller" who would move and scroll the screen. The script went something like this:
SetCharacterViewEx(BEN,53,4,ALIGN_LEFT);
NewRoomNPC(SCR,13,374,128);
AnimateCharacter(BEN,4,4,1);
SetPlayerCharacter(SCR);
Wait(20);
MoveCharacterBlocking(SCR,90,128,1);
ObjectOn(1);
Wait(1);
DisplayMessage(17);
ReleaseCharacterView(BEN);
NewRoomNPC(BEN,19,155,147);
MoveCharacterBlocking(SCR,332,128,1);
Wait(20);
EndCutscene();
SetPlayerCharacter(BEN);
So, while the animation is playing, the room scrolls, then comes back, etc. It was working fine till I got the latest beta. I checked in the debug console and it says that SCR starts moving, but then nothing happens. The screen doesn't scroll, the animation keeps playing, and when I hit esc to bypass the cutscene, the game hangs.
The "depending on x" speech option works very fine; indeed, there is a little confusion at the beginning of dialogues, but it quickly comes to order. I understand why it cannot be perfect when there are more than two characters in a room. But is it possible to "make it" so that when there are only two then the x-position sets the portrait position from the start? It's not very relative then.
PLUS:
There's an error in this edition. My game shows close-ups of inventory items when you "look" at them, with such script:
int overlay_id;
overlay_id=CreateGraphicOverlay(110,5,963,1);
wait_mouse();
RemoveOverlay(overlay_id);
And, it worked in previous versions. In this beta it shuts down and announces "Error: Too many events posted."
Quote from: Grundislav on Thu 16/09/2004 04:01:18
Something got messed up with the new beta. Here's the deal:
Which version were you using prior to this?
Also, what is the current room at the start of that script?
The easiest way to resolve this might be if you could upload the game for me to take a look at.
QuoteThe "depending on x" speech option works very fine; indeed, there is a little confusion at the beginning of dialogues, but it quickly comes to order. I understand why it cannot be perfect when there are more than two characters in a room. But is it possible to "make it" so that when there are only two then the x-position sets the portrait position from the start? It's not very relative then.
Good point, well made... I'll do that.
QuoteAnd, it worked in previous versions. In this beta it shuts down and announces "Error: Too many events posted."
Hmm, what does your wait_mouse function do?
function wait_mouse() {
while (IsButtonDown(LEFT)==0)
Ã, {Wait(0);}
}
P.S.
Quote
QuoteThe "depending on x" speech option works very fine; indeed, there is a little confusion at the beginning of dialogues, but it quickly comes to order. I understand why it cannot be perfect when there are more than two characters in a room. But is it possible to "make it" so that when there are only two then the x-position sets the portrait position from the start? It's not very relative then.
Good point, well made... I'll do that.
Now I think of it, maybe it would be even more sensible if just the player character's x was the basis for the positioning? Portraits of characters with x lower than the EGO's appear on the left, portraits of those with higher x on the right? What do others think?
Quotefunction wait_mouse() {
while (IsButtonDown(LEFT)==0)
{Wait(0);}
}
Does the error occur when you do something (eg. click mouse, press key) or does it just happen in the middle of the cutscene?
QuoteNow I think of it, maybe it would be even more sensible if just the player character's x was the basis for the positioning? Portraits of characters with x lower than the EGO's appear on the left, portraits of those with higher x on the right? What do others think?
That's a possibility, but then would EGO's portrait go on the left or right? I think your previous suggestion of basing it on the other character in the room, if there are two, would probably work better.
Wow freakin' wow! CJ's on a roll. Thanks!
Well, I haven't tried this new one yet, but it's a safe bet the bug I'm reporting hasn't been fixed - it's happened before...
Some people have told me about an error in my Larry 2 in the dock scene, and the error message let them to line... er, I disremember which, but I believe it was 497. Well, the error made no sense, so I left it. I eventually found out that the problem WAS in that script, but in SOME OTHER LINE.
And now it happened again, backuped for your vieweing pleasure - just ask. The problem is, I was told that there was a problem with line 497 of room 3. But, there's only 41 lines of code in that room! And the problem code was 35.
If a room script calls a function imported from the global script, and then the error occurs in that function, you'll get the line number from the global script, but it'll say it occured in the Room Script.
This is a known issue and is probably what's happened here.
So, does checking line 497 of the global script give you any clues? What was the error message?
The Global script was only about 250 lines big... ::) and the mistake was in line 35 of room 3. It was because I had done a MoveObject with object 4, which does not exist. And the function was a normal one from the room's interaction editor.
Quote from: Pumaman on Sat 18/09/2004 16:16:34
Quotefunction wait_mouse() {
while (IsButtonDown(LEFT)==0)
Ã, {Wait(0);}
}
Does the error occur when you do something (eg. click mouse, press key) or does it just happen in the middle of the cutscene?
No, I don't believe that the overlay even shows. In a game compiled with this version I click "look" on inventory item, which has so far displayed an overlay, and immediately I get the error.
But but but Goldmund, why're you using Wait(0); ?
If you want to wait, it should at least be Wait(1);, it's not documented what will happen if it's 0, though most probably it will do nothing (so your code will become an "infinite" loop), you can expect problems with it as it's not in offifially supported range.
Quote from: Pumaman on Sun 18/07/2004 21:35:34
* Added GIF image import, and Quick Import Animated GIF Frames option.
Yay! :D Hope that it won't be as buggy as the old one!
Quote* Added GIF image import, and Quick Import Animated GIF Frames option.
Shiver me timbers! How in the name of LeChuck did ye get such a lass feature without Compuserve GIF pirates plundering yar booty?
Quote from: Gilbot V7000a on Mon 20/09/2004 03:22:49
But but but Goldmund, why're you using Wait(0); ?
If you want to wait, it should at least be Wait(1);, it's not documented what will happen if it's 0, though most probably it will do nothing (so your code will become an "infinite" loop), you can expect problems with it as it's not in offifially supported range.
STFU NOOB!!!11!
...
Um, I changed it to 1 and it works now.
I don't even remember why I put a zero there, it was so long ago. Apparently this edition is more anal about rules and codes...
Tehe, Thanks, Gilborobot!
QuoteShiver me timbers! How in the name of LeChuck did ye get such a lass feature without Compuserve GIF pirates plundering yar booty?
The GIF patent expired in June this year, so it's finally free of all legal hassles. :D
QuoteUm, I changed it to 1 and it works now.
I don't even remember why I put a zero there, it was so long ago. Apparently this edition is more anal about rules and codes...
That's strange, I'll fix it to warn you if you use Wait(0) because it's not really a valid thing to do, anyway.
Quote from: Pumaman on Mon 20/09/2004 20:31:00
That's strange, I'll fix it to warn you if you use Wait(0) because it's not really a valid thing to do, anyway.
Hmmm I think you'll put it as a run-time warning for the engine right? If it's just careless mistake like typing Wait(0) in the script a warning is okay, but there're circumstances that the 0 is the evaluated result of an expression, which you really
expect it to be 0 sometimes, where you don't want it to wait.
For example,
Wait(SomeFunction());
Of course, you can always do the following, but it's just a bit long:
waitloops=SomeFunction();
if (waitloops>0) Wait(waitloops);
But as 0 is not in officially supported range of Wait() (unless it's changed), I think adding a warning is not a bad idea, either.
I know I'm not supposed to post suggestions here, but before you release this version CJ could you please add the option to set the color in dialog bixs, instead of it being the players talking color.
I really need this, thanks.
Quote from: Gilbot V7000a on Tue 21/09/2004 02:26:59
Hmmm I think you'll put it as a run-time warning for the engine right? If it's just careless mistake like typing Wait(0) in the script a warning is okay, but there're circumstances that the 0 is the evaluated result of an expression, which you really expect it to be 0 sometimes, where you don't want it to wait.
Hmm, good point. Should Wait(0) just do nothing, or should it give an error?
Because the current behaviour (where it actually waits 1 loop) is neither of these, I would hope nobody is actually using this deliberately.
Wow... This is awesome. Alt+X now turns on my quit GUI! THANKS! (And sorry for my anality (is that a word?)) :P But I think I may have a problem. I'm not sure, and don't have time to look too deeply into it, and don't have time to provide an example script, but I think there may be a problem with GetButtonPic. I'm realized that the buttons (for those who have been helping me with cursor control...) are supposed to be highlighted as soon as the cursor is moved over them. I tried:
(ok, so I lied...)
if ((GetGUIAt(mouse.x, mouse.y)==MAIN) && (GetGUIObjectAt(mouse.x, mouse.y)>=1) && (GetGUIObjectAt(mouse.x, mouse.y)<=9)){
SetButtonPic(MAIN, GetGUIObjectAt(mouse.x, mouse.y), 1, GetButtonPic(MAIN, GetGUIObjectAt(mouse.x, mouse.y), 1));
}
but it returned some odd pictures. Not sure if it's a bug or just me... I have to go...
Quote from: Pumaman on Tue 21/09/2004 22:27:43
Hmm, good point. Should Wait(0) just do nothing, or should it give an error?
Because the current behaviour (where it actually waits 1 loop) is neither of these, I would hope nobody is actually using this deliberately.
I think that's not very imoportant as long as the behaviour is documented
clearly in the manual. (though I myself expect it to do nothing more).
Quote from: monkey_05_06 on Tue 21/09/2004 22:53:54
...but I think there may be a problem with GetButtonPic. I'm realized that the buttons (for those who have been helping me with cursor control...) are supposed to be highlighted as soon as the cursor is moved over them. I tried:
(ok, so I lied...)
Ã, if ((GetGUIAt(mouse.x, mouse.y)==MAIN) && (GetGUIObjectAt(mouse.x, mouse.y)>=1) && (GetGUIObjectAt(mouse.x, mouse.y)<=9)){
Ã, Ã, SetButtonPic(MAIN, GetGUIObjectAt(mouse.x, mouse.y), 1, GetButtonPic(MAIN, GetGUIObjectAt(mouse.x, mouse.y), 1));
Ã, Ã, }
but it returned some odd pictures. Not sure if it's a bug or just me... I have to go...
Monkey, I think it's not the problem of GetButtonPic(), I don't know what you're going to archieve with your codes, as what I see is that it would do nothing (it'll just change the
normal button pic to the current
normal button pic.).
If you want a button to use different pic when highlighted, just set it in the editor (Mouseover image), the engine
will change the button pic automatically without the need of any scripting, you should SetButtonPic() only when you want to do something the engine doesn't handle automatically (like for example you want the button to change to something else after some point in the game).
Oh yes... I knew there was an easier way. I just didn't remember it. But I tried using GetButtonPic(...)+9 and that's what returned wierd pictures, but only on a mouse click (I would click, then the picture would change, and not change back). Thanks for pointing out my stupidity. Man, I wish I had thought that through first... It's so obvious... ARG!
Er, sorry for barging in... CJ, I hope you don't think that thingy I mentioned is fixed - it isn't. I can upload it if you like. Recap - the Golbal script doens't have more than 250 lines, and room 3 only has 41, and still entering on room 3 gives out an error message -
---------------------------
Adventure Game Studio
---------------------------
An error has occured. Please contact the game author for support, as this
is likely to be a scripting error and not a bug in AGS.
(ACI version 2.62.766)
(Room 3 script line 479)
Error: MoveObject: invalid object number
---------------------------
OK
---------------------------
Said problematic line is actually
35 --> SetObjectPosition(4,350,16); (object 4 doesn't exist, shouldabeen 0)
This is small beans in a small game, but it actually allowed for a bug in my LSL2 game to go undetected at first, and later (when the emails started coming in) totally undetectable, because I didn't know what to look for.
I don't know if this has been brought up, but repeatedly_execute_always is very buggy. I have a script:
function KeyControls(){//for keyboard control of the mouse cursor
if (IsKeyPressed(keyup)==1) SetMousePosition(mouse.x, mouse.y-1);//move cursor up
if (IsKeyPressed(keydown)==1) SetMousePosition(mouse.x, mouse.y+1);//move cursor down
if (IsKeyPressed(keyleft)==1) SetMousePosition(mouse.x-1, mouse.y);//move cursor left
if (IsKeyPressed(keyright)==1) SetMousePosition(mouse.x+1, mouse.y);//move cursor right
if (IsKeyPressed(keyenter)==1) on_mouse_click(LEFT);//Script for Enter left-clicks
}
which is called in repeatedly_execute. If I instead use rep_exe_always, the cursor reacts violently to the first key press, then reacts normal afterwords. I also have a script for a status bar:
function Extension(){//used for definition of right-mouse click extensions, and for storing location names
GetLocationName(mouse.x, mouse.y, ext);
if (GetInvAt(mouse.x, mouse.y)>0) GetInvName(GetInvAt(mouse.x, mouse.y), ext);
if (StrContains(ext, ext_char)!=-1) StrSetCharAt(ext, StrContains(ext, ext_char), 0);
}
function UpdateLabelBar(){//updates the status bar with the appropriate text
if (mode==walk){
StrCopy(label, "Walk to ");
StrCat(label, ext);
}
else if (mode==give){
StrCopy(label, "Give ");
StrCat(label, ext);
}
else if (mode==open){
StrCopy(label, "Open ");
StrCat(label, ext);
}
else if (mode==close){
StrCopy(label, "Close ");
StrCat(label, ext);
}
else if (mode==pickup){
StrCopy(label, "Pick up ");
StrCat(label, ext);
}
else if (mode==lookat){
StrCopy(label, "Look at ");
StrCat(label, ext);
}
else if (mode==talkto){
StrCopy(label, "Talk to ");
StrCat(label, ext);
}
else if (mode==use){
StrCopy(label, "Use ");
StrCat(label, ext);
}
else if (mode==push){
StrCopy(label, "Push ");
StrCat(label, ext);
}
else if (mode==pull){
StrCopy(label, "Pull ");
StrCat(label, ext);
}
UpdateText(MAIN, 0, label);
}
which is later called in rep_exe. If I call it in rep_exe_always, it only updates my label when I click on a hotspot/object/etc. Are either of these blocking? I know you can't call blocking scripts, but I don't see where either of these would be blocking. Please notice that the same errors occur in the current non-beta version of AGS. Any help would be greatly apreciated! ;D
Quote from: redruM on Thu 23/09/2004 09:28:04
Er, sorry for barging in... CJ, I hope you don't think that thingy I mentioned is fixed - it isn't. I can upload it if you like. Recap - the Golbal script doens't have more than 250 lines, and room 3 only has 41, and still entering on room 3 gives out an error message -
Ah, this is particular to SetObjectPosition, it will always say it failed on line 479. It's due to an implementation issue, I'll fix it for the next version.
QuoteI don't know if this has been brought up, but repeatedly_execute_always is very buggy.
I see.
However, before jumping to conclusions, perhaps we can explore some other options. Does your on_key_press contain any code that also reacts to these keypresses, thus meaning the press is being processed twice?
The best way would be if you uploaded the whole global script for us to check, it's very difficult to spot a problem with snippets.
Walkable area #1 reaches from Y=50 to far below.
Region #1 reaches from Y=50 to Y=53.
If you click 'walk' anywhere north of Y=50, EGO should walk up to the end of the walkable area. However, he does not always trigger region #1. This apparently depends on his step size.
If a GUI button has an image size larger than the actual button size, within the editor, the entirety of the image will be displayed (in the game, it displays correctly)
When exporting a sprite to a file, the default file type is 'all files', which is kind of strange. In practice this means TGA; I would believe BMP would be used far more often, and if you change this value it resets itself every time you try to export a sprite.
Quote from: Radiant on Thu 30/09/2004 12:13:21
Walkable area #1 reaches from Y=50 to far below.
Region #1 reaches from Y=50 to Y=53.
If you click 'walk' anywhere north of Y=50, EGO should walk up to the end of the walkable area. However, he does not always trigger region #1. This apparently depends on his step size.
Ah yeah I can see that -- best thing is probably to stretch the region a bit.
Quote
If a GUI button has an image size larger than the actual button size, within the editor, the entirety of the image will be displayed (in the game, it displays correctly)
In theory the GUI buttons are supposed to be resized to match the size of the image so this shouldn't happen; I can see it being possible if you manually adjust the button size though.
Quote
When exporting a sprite to a file, the default file type is 'all files', which is kind of strange. In practice this means TGA; I would believe BMP would be used far more often, and if you change this value it resets itself every time you try to export a sprite.
I see what you mean, but on the other hand the All Files default means that all the current supported files will be displayed so the user can pick one to overwrite. Swings and roundabouts, I guess.
Not sure if this is a bug, but if you Animate an object and then turn it off, it still classifies as animating (for IsObjectAnimating).
Minor detail: when importing a character, its sprites appear in a folder somewhere in the middle of the sprite manager; one would expect to find them at the end.
Maybe you should make 16-bit mode the default for new games? 256 color tends to confuse the n00bs.
You have a point about the 'all files' option, but I just want to point out that every other Windows application does it differently. Anyway, maybe that save-menu could remember the user's previous selection for file type? That's not particularly difficult to code, iirc.
Glitch: I noticed on BJC3 that when Ben walks off the screen/lighting region his darkness/tint goes back to normal, and it looks kind of sucky!
Quote from: Radiant on Wed 06/10/2004 15:53:17
Not sure if this is a bug, but if you Animate an object and then turn it off, it still classifies as animating (for IsObjectAnimating).
I'm not sure whether this is a bug either; the fact is that it still is animating if you were to turn it back on again, so I guess this behaviour makes sense.
Quote
Minor detail: when importing a character, its sprites appear in a folder somewhere in the middle of the sprite manager; one would expect to find them at the end.
If a folder already exists with the new character's script name, the sprites are added to that; otherwise, a new folder is inserted as the second sub-folder of the root. A bit arbitrary perhaps, but consistent at least :P
Quote
Maybe you should make 16-bit mode the default for new games? 256 color tends to confuse the n00bs.
The issue with this is that then if it the user wants to convert it down to 256-col, it can cause problems with the sprites. Perhaps the New Game option should bring up the Colour Depth dialog as well as the Resolution one.
Quote
You have a point about the 'all files' option, but I just want to point out that every other Windows application does it differently. Anyway, maybe that save-menu could remember the user's previous selection for file type? That's not particularly difficult to code, iirc.
Perhaps; does anyone else see this as a problem? Personally I think it's too minor to bother fixing.
QuoteGlitch: I noticed on BJC3 that when Ben walks off the screen/lighting region his darkness/tint goes back to normal, and it looks kind of sucky!
Fair point, I'll look into it.
Quote from: Pumaman on Sun 18/07/2004 21:35:34
* Fixed AnimateCharacterEx not working properly when playing a multi-loop animation backwards.
Thanks ;)
I'll try the new beta as soon as I can...
D.
Quote from: Pumaman on Thu 07/10/2004 20:54:47
Quote from: Radiant on Wed 06/10/2004 15:53:17
Not sure if this is a bug, but if you Animate an object and then turn it off, it still classifies as animating (for IsObjectAnimating).
I'm not sure whether this is a bug either; the fact is that it still is animating if you were to turn it back on again, so I guess this behaviour makes sense.
Actually I'm not sure but I think something is not very consistence, being the fact that if a character/object was moving, if you turn it off it will stop, in my opinion, when they're off you can just treat them as invisible, and continue their motions, this can make some old-style animted effects of say, something moving and "flashily" disappearing easy.
Other thing I just found to be a problem was that some of the read-only checks on game variables now imposed are quite annoying, one noticiable variable is game.score, I used to modify it manually a lot, but with new version you can only use GiveScore(), which is restrictive.
Unless you have a SetScore() function with does exactly the same thing with game.score=... but will not do any other silly extra stuffs like playing the score sound (when it's actually unwanted). Currently, for example, if you
for some reasons want to change the score to zero, you have to use:
GiveScore(-game.score);
which is awkward.
Quote from: GilbotActually I'm not sure but I think something is not very consistence, being the fact that if a character/object was moving, if you turn it off it will stop, in my opinion, when they're off you can just treat them as invisible, and continue their motions, this can make some old-style animted effects of say, something moving and "flashily" disappearing easy.
I've scripted my own character control system and at the moment I make characters that are not in the current room fully transparent (to save a view) and track their "No interaction" property while I move them around the virtual room.
I could of course assign them a blank view, but then I would still need to save their normal view and restore it when they re-enter the current room.
So it's not that important, but yeah, it would be nice if characters could still be moved when turned off (via character[CHARID].on for example).
In order to save on resources, AGS does not move or animate objects or characters that are turned off.
However, because the object is still in the middle of being animated, IsObjectAnimating will return true -- because if the object is turned back on, its animation will resume.
Gilbert: I guess I can remove the restriction for game.score ;)
Right, I'm back, and the FInal is here!
Quote from: Pumaman on Sat 16/10/2004 21:22:48
However, because the object is still in the middle of being animated, IsObjectAnimating will return true -- because if the object is turned back on, its animation will resume.
Hmmm, but the problem was that if an object is still
in the middle of being moved, it would be stopped when turned off.
Anyway, it's not that important, just to point it out.
Superb! And great thanks for fixing the background speech "bug" I complained about!
;D
I don't know if you consider this a bug or if there is some reason I've missed that made you remove it. But in earlier versions you could assign a string value to a string on the declaration line...
string sMyString = "See how neat, I can assign a value without using StrCpy";
I noticed that this behaviour was gone already in v2.61
This way of string assignment is never supported, so, just avoid.
Quote from: Gilbot V7000a on Thu 04/11/2004 01:21:57
This way of string assignment is never supported, so, just avoid.
That's not true. I have a couple of games I wrote in v2.56 that uses it. It's nothing strange about it. It's allowed in a C program for example.
This is true, '=' assignment was never supported, if it worked, it's just by accident, you should never do that, as it can produce problems like memory corruptions, etc.
So this "feature" is not "removed" as far as I know, the engine probably now does better checking on the codes to prevent people like you from going illegal stuff.
Well, I really can't see why it would cause any memory problem. The documentation states that a string is a char array capable of holding 200 characters. So there would in that case cause memory problems if I use StrCpy or StrCat if the result string would exceed 200 characters as well.
I can't use the equal sign for assigning strings to a char array in C either except from in the declaration itself.... so the following is fully legal in a C program:
char str[200] = "See, I don't need to use StrCpy";
And since the script in AGS tries to mimic C and the fact that it did work earlier I just wanted to know the reason why it has been removed. It's no biggy I was just curious.
But I'm glad that people like me can't do illegal stuff since I'm such a dork and usually do that :). Actually I am a system developer and work a lot with C and C++ so I do know about memory management ;)
As I said before, it's accepted only by accident, it's never supported, not even in AC era.
And this problem is fixed since V2.6 so we can all safely use the Str... functions:
Quote
- Fixed compiler allowing assignment to string in declaration.
Remember also, array implementation is not full, so you can't safely assign multiple entry values to an array in one line at the moment. The scripting language is just
mimicing the C-style, it's not a full adaption of it.
I never said AGS was doing anything else but mimicing C :).
Thanks a lot for your reply.
Woohoo! Thanks again, CJ. Setting the fade colour and having background speech removed automatically will be really useful for me.
Three small bugs...
if you put the cursor on a line containing a closing brace }, and you press enter, the line will automatically de-dent itself. In other words if you add blank lines after a closing brace, the indent messes up and you have to manually correct it. Maybe you could add an option to toggle this off?
If you use 'SetTextboxFont' on a GUI object that's not a textbox, you get an error message stating it's not a label.
If you put text in a GUI text box, the vertical spacing is one pixel more than if you would have shown it with Display().
Quoteif you put the cursor on a line containing a closing brace }, and you press enter, the line will automatically de-dent itself. In other words if you add blank lines after a closing brace, the indent messes up and you have to manually correct it. Maybe you could add an option to toggle this off?
Yeah, this was pointed out shortly after the de-denting feature was added. The general feeling seemed to be it wasn't worth worrying about -- you'll generally find that Visual Studio etc will do the same thing.
QuoteIf you use 'SetTextboxFont' on a GUI object that's not a textbox, you get an error message stating it's not a label.
Hehe well spotted, I'm sure I can manage to fix that one ;)
QuoteIf you put text in a GUI text box, the vertical spacing is one pixel more than if you would have shown it with Display().
I'm not really sure that this is a bug, more just the way it works. It's not something I'll change because people will be relying on the look and size of their text boxes.