Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Messages - Denzil Quixode

Pages: [1] 2 3 ... 9
Hey, the first MAGS was June 2001 right? Happy 15th anniversary! ;)

Reality-on-the-Norm / Re: Old RON site partial archive
« on: 31 May 2016, 19:39 »
There is actually an even earlier snapshot, from May 2001, back when RoN was a subsite of

Thanks for working it out Taxler. Crimson- right, that all makes a lot of sense, it's a perfect storm of bad luck more than anything else.

I tried moving every dialog out to the root of Dialogs, and deleting all the (empty) subfolders - curiously, this fixed the dialog I was having problems with, but the same problem is now happening with other dialogs that (I think) were okay before.

So, let me clarify this. You have Dialogs named like dDialog0, dDialog1, dDialog2, etc, and when you call, for example dDialog5.Start(), dDialog0's lines and options play instead?
Essentially, yes - the actual ID was 7, and I did give it a custom script-name instead of keeping the default, if that makes any difference.

Couple of questions: how many dialogs you have in total, and do you use subfolders in the dialogs list? I recall we had number of issues with folders before (although I think they were fixed)
55 in total, and yes - the dialog in question is 2 folders deep.

I have recently opened a project that was started in AGS 3.3.3 in version 3.3.4 and discovered that one of the dialogs is now consistently being replaced with a different one when I try to .Start() it. The one that it gets replaced by happens to be the dialog with ID 0. I tried going back to AGS 3.3.3 but the problem persists, so maybe it is just a coincidence that I noticed this now.

There are other dialogs in the game that do not seem to be affected. I tried creating a new dialog, but the new one had the same problem.

I did have a custom dialog rendering routine, but I tried disabling it and that didn't fix it. I also tried putting this in dialog_options_get_dimensions:

Code: Adventure Game Studio
  1. Display("%d", info.DialogToRender.ID);

...and confirmed that the ID of the dialog is 0, not the ID that it should be.

I also tried dialog[<x>].Start() instead of dDialog<x>.Start(), but that didn't fix it.

Has anyone had a similar problem? And any suggestions for what might fix it?

Thank you!! Wow, this thread is a great success - I had no idea if I'd get any replies at all, let alone all this so quickly. Amazing!

Did more digging, here's the earliest versions of the following that I have:
Amazing!!! I'm so glad these still existed somewhere. Particularly Cabbages and Kings - it was playing that original version that led me to meet Creed Malay and a friendship that's lasted over a decade now. I can't thank you enough! :-D

Dead Man's Political Party (v1): link
While you didn't ask for this, I've included it just in case you didn't know there was a version 1/had the version 1.
Oh, sure - don't take my list too seriously, it wasn't meant to be exhaustive, just the ones I'd noticed from poking around.

Why would you want the earlier versions of Night and Day? The upgrades were just bugfixes. I still have them though...
I know there are surely cases where a revision was done purely for bugfixing (or even just to run on Windows instead of DOS, for those really old games!) but I'm still interested, I admit, purely out of a purist/completist streak to preserve a (tiny) bit of history. I was only slightly exaggerating when I used the word "archaeology" in the thread title, these are historical artifacts to me :)

Having said that, I'm not going to pressure you if you're not comfortable with it. I do realise it's a weird thing to say to someone: "Thanks for all your hard work - now give me the crappier, more broken version please!" ;) But hopefully you can see where I'm coming from.

Thanks guys! I've edited my original post to remove those two, and add a few more.

I'm going to keep looking through my backups but they're on CD and so will take longer to go through but I'll be wearing by fedora while I do this because hey, why not? At least I'm assured no ancient traps from long dead civilizations :)

Thanks so much for doing that!! I really appreciate it. :-D

I'm trying to track down as many earlier versions of Reality-on-the-Norm games as I can, particularly the original releases of games that got updated later.

If you are someone who has a long history of downloading RON games as soon as they were released, and you still have access to the computer you did it on, you could be the one to help!

(The one that I would personally really, really like to see again is the original DOS version of Cabbages and Kings...)

Here are some that I know about, there may be more:

Cabbages and Kings v1 - found!! thanks to Renegade Implementor :)

RON Beach Party (incomplete) - found!! thanks to Renegade Implementor :)

Reality Check v1 - found!! thanks to Retro Wolf :)

Night and Day v1 - found!! thanks to HandsFree :)

Night and Day v1.1 - found!! thanks to HandsFree :)

I Spy 1 v1
Date: April 9th, 2001
Filesize: (unknown)

The Postman Only Dies Once v1 - found!! thanks to Renegade Implementor :)

I Spy II v1 - found!! thanks to Renegade Implementor :)

The First Stitch v1 - found!! thanks to Renegade Implementor :)

Disappearance Time v1 - found!! thanks to Renegade Implementor :)

I'd be hugely thankful for any help! :)

The effect now looks like this:

The code looks identical, but the effect is very off. I'm not even sure how it's getting those non-blue colours.
I think there's something odd going on when you use DrawingColor zero. I tried changing Lua's Colourise() to draw every pixel to zero, and got a lot more of that colourful effect:

Then I tried the same as Calin's except with or 255 instead of or 0:

So it looks like (I'm guessing here) drawing with DrawingColor 0 is adding transparency, punching a "hole" in the image, but what is showing up "behind" it happens to be a lot of weird pixels when Lua does it, but solid black when AGSScript does it. I've got no idea why though.

^^ Yeah, a good suggestion from Calin there. So it looks like Lua's C8PaletteMap has some holes in it, not all palette slots are being set in ProcessPalette().

One thing I notice about ProcessPalette() is that you're taking an array of parameters using palindex = {...} but this array will start from 1 rather than 0, and later code adapted from AGSScript naturally isn't expecting this. So to change it to a 0-based array, you could change the first few lines of ProcessPalette() from:

Code: Lua
  1. function ProcessPalette (...)
  2.   local palindex = {...}
  3.   local paltemp = {...}
  4.   local palsiz = #palindex

Code: Lua
  1. function ProcessPalette (...)
  2.   local palindex = {}
  3.   local paltemp = {}
  4.   local palsiz = select('#', ...) -- get number of arguments
  5.   for n = 1, palsiz do
  6.     palindex[n - 1] = select(n, ...) -- get nth argument
  7.     paltemp[n - 1] = select(n, ...)
  8.   end

A second thing in ProcessPalette(): it looks like, in the first while-loop, where the original AGSScript version of the function uses ags.palette[palindex[ i ]].r etc. the Lua version uses (the equivalent of) ags.palette[ i ].r

Modules & Plugins / Re: PLUGIN: Lua for AGS
« on: 02 Dec 2013, 13:40 »
Additional suggestion: Can we get the 8 bit palette arrays accessable in Lua? I'm currently working on a module that relies on the palette and Lua doesn't have access to it (I tried ags.palette.r etc and it came up with nothing).
I've made changes to the code (there'll be a new build soon) to allow ags.palette[ i ].r etc. to work, and also a (probably faster) alternative form that uses Lua's multiple-return value feature:
Code: Lua
  1. local r,g,b = ags.palette.getRGB(3)
  2. ags.palette.setRGB(5, 0,63,0)
  4. -- copying a colour from one slot to another
  5. ags.palette.setRGB(30, ags.palette.getRGB(11))

Two problems I noticed in the Lua Colourise() function:
  • cpixel is sometimes -1, and C8PaletteMap[-1] doesn't exist, so surface.DrawingColor is being set to nil, which is invalid
  • there's an infinite loop problem in there:
Code: Lua
  1. while (i < w) do
  3.   -- ( . . . ) --
  5.   i = j + 1
  6. end
    (...should be i = i + 1)

Also, this bit in ProcessPalette:
Code: Lua
  1. while (i < palsiz)
  2. do
  3.   if (i > palsiz) then upperboundary = 255
  4.   -- ... --

...looks like it should probably have "-2" added, to be equivalent to the AGSScript version in pal2.asc:

Code: Adventure Game Studio
  1. while (i < palsiz)
  2. {
  3.   if (i > palsiz -2) upperboundary = 255;

Hi, hi, really sorry you've been having all these issues with the Lua plugin! Please bear with me a little. This is a really cool project and I always wanted people to use the plugin for ambitious interesting things so I feel like I've really dropped the ball on this one. I have posted some stuff in the plugin thread about where the problem seems to be in issue 1.) there. I will address missing API functions and the lousy documentation as soon as I can. Sorry again!

Modules & Plugins / Re: PLUGIN: Lua for AGS
« on: 01 Dec 2013, 23:17 »
GetPixel returns -1 because COLOR_TRANSPARENT is -1 so it just refers to a mask pixel.
That makes sense, but seems odd since we're talking about what I assume is a room background surface -- do room backgrounds have transparency masks?

(That's probably something to discuss further in the Advanced Technical Forum thread about this, which I've only just noticed)

Modules & Plugins / Re: PLUGIN: Lua for AGS
« on: 01 Dec 2013, 22:47 »
I've been having some problems with the project getting corrupted if AGS doesn't crash cleanly. In 3.3.0, at least, if the engine stalls and needs to be shut down manually (prompting the "The AGS engine did not shut down properly" error in AGS), any Lua calls will crash a few loops in with:

Adventure Game Studio
An internal error has occurred. Please note down the following information.
If the problem persists, post the details on the AGS Technical Forum.
(ACI version

Error: [Lua] [string "local select = select;local error = error;l..."]:1: bad argument #2 to 'setter' (number expected, got nil)

I've included a copy of the ruined project here:
Thank you very much for the test case!

So, I have to apologise for that error message. I know there's no way you would be able to guess this, but the actual problem here is that you end up assigning nil to OSSurface.DrawingColor in your ProcessTranslucency() function.

I will have to do something about that error message, so it actually shows your script/line number (instead of blaming the internal script that handles the "DrawingColor" getter/setter)

For now, you can do a temporary workaround get better error messages here by changing lines like this:

Code: Lua
  1. OSSurface.DrawingColor = <VALUE> this:

Code: Lua
  1. OSSurface.DrawingColor = assert(  <VALUE>  ,'DrawingColor cannot be nil')

Digging in a bit, it looks like BGSurface:GetPixel(x,y) is returning -1 sometimes, and this leads to it looking up clut[ i ][ j ] for a negative j, which is where the nil value comes from. I'm afraid I have no idea whether GetPixel returning -1 is something that should ever happen or why it would be related to project corruption or 3.3.0, etc.

Also, LuaValueList.ToArray() seems to be missing from the copy of the plugin on the Downloads page? It doesn't show up in Autocomplete, and it doesn't compile, but it IS in the documentation.

Lua.Evaluate is also missing.
I must apologise for this too - I changed my mind several times on how the whole LuaValueList/LuaValue API stuff should work, and was inconsistent about both implementing and documenting features in it, as things got rewritten and moved around... I plan to move all the documentation and stuff over to GitHub soon, and as part of that I will double-check everything in the docs as I do it, so there's no more nasty surprises like this.

Modules & Plugins / Re: PLUGIN: Lua for AGS
« on: 01 Dec 2013, 18:24 »
@Denzil Quixode, your lua-for-ags wiki states:
The run-time component is a DLL called agslua.dll. This DLL needs to be present in the same directory as your game when it runs, as well as lua51.dll and lua5.1.dll, which agslua.dll depends on. (These should hopefully all be copied in automatically.)
However lua51.dll is never copied to Compiled folder, and game seem to run without it as well.
Ah, oops, thank you, I've changed it. (This was originally true, there WERE two DLLs, because of some confusing issue where some things want to link against "lua51" rather than "lua5.1" -- but once I realised it shouldn't affect this plugin, I removed the extra DLL copy, which only acted as a proxy to the other DLL anyway.)

Another thing I should mention just in case: the game will crash badly if the script .dat file is missing (AGS 3.2.1).
Thanks for the report, I'll start adding these things to the github tracker.

Modules & Plugins / Re: PLUGIN: Lua for AGS
« on: 30 Nov 2013, 21:08 »
Yes, the renaming bug is an embarrassingly old one - I need to fix that, sorry!! :-[

I will have a look at the corrupted project though, I haven't seen that happen before...

This is great, thank you!

Here is my contribution - a special BASS version of Character.Say()!

Code: Adventure Game Studio
  1. function Say_BASS_Style(this Character*, String message)
  2. {
  3.   String bass_style = "";
  4.   int space_idx = message.IndexOf(" ");
  5.   bool prev = false;
  6.   while (space_idx != -1)
  7.   {
  8.     String part = message.Substring(0, space_idx + 1);
  9.     message = message.Substring(space_idx + 1, message.Length - (space_idx + 1));
  10.     if (prev)
  11.     {
  12.       prev = false;
  13.     }
  14.     else if (Random(1) == 0)
  15.     {
  16.       part = part.UpperCase();
  17.       prev = true;
  18.     }
  19.     bass_style = bass_style.Append(part);
  20.     space_idx = message.IndexOf(" ");
  21.   }
  22.   if (!prev && Random(3) == 1) message = message.UpperCase();
  23.   bass_style = bass_style.Append(message);
  24.   return this.Say(bass_style);
  25. }

( (laugh)  (laugh)  (laugh) )

Pages: [1] 2 3 ... 9