AGS 3.4.0.7 - Almost Beta

Started by Crimson Wizard, Thu 05/05/2016 18:53:56

Previous topic - Next topic

Crimson Wizard

AGS 3.4.0.7 - Almost Beta

Download 3.4.0.7 (Almost Beta) as a .zip archive

No-MP3 Engine (Windows):
http://www.mediafire.com/download/hc7436dy30p59ww/AGS-3.4.0.7-noMP3.zip


Linux build package -- Download here and unpack into Editor's program folder

Source code: https://github.com/adventuregamestudio/ags/tree/develop-3.4.0

Debug symbols (for developers):
http://www.mediafire.com/download/e9z2y1d5qd2pvw2/AGS-3.4.0.7-PDB.zip


Previous alphas:
Spoiler

ACHTUNG!
This is a development version of AGS 3.4.0.
Use at your own risk. Please back up any games before opening them in this version of AGS.
New settings in this version may make your project files unusable in 3.3.* after saving with this version.

Last updated: 5th of May, 2016
Includes all content from AGS 3.3.5 (Patch 1) version
The differences from 3.4.0.6 are marked with NEW sign.


Common features

Custom game resolutions
Make your game in any sensible or non-sensible resolutions, such as 1280x720, 1920x1080 or, heck, 233x856.
A proof that weird res work too:
Spoiler


[close]

Game resolution is now set not by simple drop-down list, but with a slightly more advanced dialog.
Spoiler



Select "Resolution" option and click on "..." button



In the dialog either choose one of the presets, or type in your own width & height, then press OK.
[close]


Extended WFN Font Support

Support was added for extended characters in WFN fonts (those with codes 128 - 255).

Papagayo lip sync

Support was added for Papagayo lip-sync format. The use is similar to Pamela lip-syncing (see "Lip sync" topic in the manual for more information).

Changed system limits


ItemOld limitNew limitComments
Custom properties30unlimited
Custom property name and value lengths20 / 500unlimited
Controls on GUI30unlimited
GUI name length20unlimited
Script modules50unlimited
Script symbols per script10,000unlimited


Engine

Free display resolutions

Run AGS games in literally any resolution your computer supports, with or without black borders. (Nearly) unlimited scaling up and down is supported. Run those old 320x200 games in 1920x1080 HD.
New Winsetup will help you to set things up.

Known issues so far:
- Do not expect magic from downscaling. When you shrink hi-res game more than 1.5-2 times down it becomes barely recognizeable (and font unreadable).
- There's a weird issue with mouse movement when you run a low-res game unscaled in a large fullscreen window. I am still looking into fixing this.

Full Screen VSync for Direct3D

This feature was previously available (but always on) in Draconian editions of AGS. With AGS 3.3.1, it has been integrated into the mainline builds. It's now possible to toggle VSync using the "Vertical sync" checkbox in Winsetup.exe. If it's checked, the game starts with vertical sync turned ON. In DirectX 5 mode, you can still toggle this by setting System.VSync to true/false. In DirectX 9 mode, the System.VSync property is now read-only (as opposed to being useless previously).

Improvements

  • In 32-bit games DrawingSurface.DrawImage() now properly applies overall transparency when drawing opaque sprites over surfaces with alpha channel.
  • DynamicSprite.CopyTransparencyMask() now does not overwrite transparency on destination with opaqueness from mask.
  • Engine will now try to use all available graphic renderers in an order of priority, if the previous ones fail.
    (Now Direct3D will be tried if Software renderer was requested by user but failed.)

Bug Fixes

  • The engine now moves the portrait with the speaking character when using BasedOnCharacterPosition if the speaking character moves between calls to Say
  • Fixed occasional pathfinding failure on straight lines with complex walkable areas (reported here)
  • Printing [ no longer consumes all of the backslashes before it (e.g. "\\[" should now print \[ as expected)
  • Fixed crash that could occur when the screenshot is taken while game window is moved, minimized or restored
  • Fixed WAVE audio not looping after restoring a game
  • Fixed a bug that caused MP3 clip continuously increase its base volume if the directional volume modifier was applied.



Scripting

For statement

In addition to a while loop, you can now use a for loop in AGS script. The syntax is:
Code: ags
for([initialisation];[condition];[increment])
{
    [loop body]
}

Examples:
Code: ags
for(player.x = 0; player.x < 100; player.x++)
    Wait(1);

Code: ags
for(int i = 10; i > 0; i--)
    Display("i = %d", i);


Break statement

You can now break out of loops using the break statement. For example:
Code: ags
i = length - 1;
while(i >= 0)
{
    if(page[i] == target)
        break;
    i--;
}

Will halt the loop when a match is found or leave i as -1 if there was no match.

Continue statement

You can now continue to the next iteration of a loop using the continue statement. For example:
Code: ags
for(x = 0; x < 100; x++)
{
    if(x % 2 == 0)
        continue;
    Display("%d", x);
}

Will display only odd numbers between 0 and 100.

Do...While loops

The Do...While loop construct is now supported. For example:
Code: ags
x = 1;
do
{
    x++;
    Display("%d", x);
} while(x < 1);

Unlike While, Do...While runs the loop iteration *before* evaluating the condition. The loop above will run once.

Switch statement

Added support for "switch" statement. Strings and other variable types are allowed to be checked in switch condition.
Standard case statement features like fallthrough and break are also supported.

Example:
Spoiler
Code: ags

String x = "a";

switch(x)
{
case "a":
    Display("X is A");
case "b": // fall-through
    Display("X is B");
    break;
case "c":
    Display("X is C");
case "d": // fall-through
default: // fall-through
    Display("X is D");
}
[close]



Dynamic Arrays in Structs

Dynamic arrays are now permitted inside structs.
Spoiler

You can declare a struct like so:
Code: ags

struct DieRoll
{
    int BaseModifier;
    int DieCount;
    int Dice[ ];
    import function GetTotalValueOfRoll();
};

function PrepareDice()
{
    DieRoll a;

    a.DieCount = 3;
    a.Dice = new int[a.DieCount];
    a.Dice[0] = 6; // d6
    a.Dice[1] = 6; // d6
    a.Dice[2] = 8; // d8
    ...
}

And the dynamic array "Dice" can be initialised and used like any other dynamic array.
[close]

Dynamic arrays returned by Struct member Function.

It is now possible to define a member function of a struct, that returns dynamic array.
Spoiler

Code: ags

struct MyClass
{
	int Max;
	int Arr[];
	
	import void  InitArray(int max);
	import int[] GetArray();
	import int   GetArrayLength();
};

void MyClass::InitArray(int max)
{
	this.Max = max;
	this.Arr = new int[this.Max];
	int i;
	for (i = 0; i < this.Max; i++)
		this.Arr[i] = i;
}

int[] MyClass::GetArray()
{
	return this.Arr;
}

int MyClass::GetArrayLength()
{
	return this.Max;
}

function game_start() 
{
	MyClass my_obj;
	my_obj.InitArray(5);
	int get_arr[] = my_obj.GetArray();
	int i;
	for (i = 0; i < my_obj.GetArrayLength(); i++)
		Display("#%i = %i", i, get_arr[i]);
}

[close]

Managed User Structs

In AGS parlance, a managed struct is a struct that can be created dynamically. You must use pointers to refer to them (similar to built-in types like Region or Hotspot). You declare them with the keyword "managed" and construct new instances with "new", like so:
Code: ags

managed struct Point
{
    int X;
    int Y;
};

Point *GetPosition()
{
    Point *result;

    result = new Point;
    result.X = 30;
    result.Y = 40;

    return result;
}

Important: Managed structs are currently VERY limited in that they can't contain pointers (including dynamic arrays). It is hoped that this restriction will be lifted in the future.

#define Improvements

#define can now refer to other #define'd constants. Like VC++, #define symbol expansion only needs to make sense at the time of reference. Also like VC++, the order of previously defined constants isn't important, making stuff like this possible:
Code: ags

#define RED    GREEN
#define BLUE   456
#define GREEN  BLUE
Display("%d", RED); // Prints 456
#undef BLUE
#define BLUE  123
Display("%d", RED); // Prints 123

Note: To prevent circular references, a #define cannot refer to itself or anything previously used to expand the #define symbol.

Static extender functions

You can now declare the first parameter of a function as a static identifier that corresponds to a struct, e.g.
Code: ags
function AbsInt(static Maths, int value)
{
    if(value < 0)
        value = 0 - value;
     
    return(value);
}

This works in the same way as the normal extender method syntax (e.g. this Character *) but for static methods. The above code will define a new method in the static Maths called AbsInt. You can then import it in a header:
Code: ags
import function AbsInt(static Maths, int value);

And then use it elsewhere in your code just like it were a built-in Maths function:
Code: ags
int x = Maths.AbsInt(-3);


Extra Assignment Operators

The following C-style assignment operators are now supported:
*=   (Multiply by and assign)
/=   (Divide by and assign)
&=   (Bitwise AND and assign)
|=   (Bitwise OR and assign)
^=   (Bitwise XOR and assign)
<<=  (Bitshift left and assign)
>>=  (Bitshift right and assign)

Code Regions

This was previously available in Draconian editions of AGS. You can define an arbitrary region for code folding in your script like so:
Code: ags
#region MyRegion
do stuff;
do stuff;
do stuff;
#endregion MyRegion

The AGS editor will allow you to fold and unfold this region as though it were a code block. This has no effect on compiled code.

Bug Fixes

  • Better warning when trying to compile a function declaration in a struct
  • Struct member methods with the same name as a global method (e.g. AbortGame) no longer cause a variable already defined error
  • Better error message when a struct member method is declared twice in the same struct
  • Fixed incorrect compiler parsing of a static function call inside array index brackets.
E.g:
Code: ags

int i = array[Game.GetColorFromRGB(0, 0, 0)]; // there was parse error after '['





Script API

Direction parameter for Character.ChangeRoom

This feature was previously available Draconian editions of AGS. The Character.ChangeRoom function now looks like this:
Code: ags
Character.ChangeRoom(int room, optional int x, optional int y, optional CharacterDirection direction)

Where CharacterDirection is a new built-in enum defined for facings (eDirectionUp, eDirectionUpLeft and so forth).

Character.DestinationX and Character.DestinationY

Two new read-only properties that can be used to determine where a character is currently heading (via a Walk command). If the character is currently stationary, these values are the same as Character.x and Character.y, respectively.

Character.FaceDirection

This function lets you to turn character to particular direction using new Direction enum (eDirectionUp, eDirectionUpLeft and so forth).

Global functions moved to Room class
GetRoomProperty ---> Room.GetProperty
ProcessClick -> Room.ProcessClick

GetRoomProperty is now Room.GetProperty to match Room.GetTextProperty.
The old ProcessClick is now Room.ProcessClick. An original ProcessClick only performed clicks on the room regions and objects, now its purpose is emphasized by moving it to the Room struct.
You may need to fix your scripts if you use any of these, or disable "Enforce object-based scripting" option in Game Settings.

IsInteractionAvailable() for Other Types

This is another feature from Draconian editions of AGS. The IsInteractionAvailable() method can now be called on Hotspots, Objects and Characters.

Audio Clips API

There are two new properties for dealing with audio clips in this version.
Code: ags
Game.AudioClipCount

Retrieves the number of clips and
Code: ags
Game.AudioClips[n]

Allows you to access a particular audio clip.

AudioChannel.Speed.
The new property used to get or set audio clip's playback speed. The value is defined in clip's milliseconds per second; 1000 is default, meaning 1000 of clip's ms in 1 real second (scale 1:1). Set < 1000 for slower play and > 1000 for faster play.
NOTE: currently implemented for MP3 and OGG only.
NOTE: the engine will also map "AudioChannel.SetSpeed" function to this property, therefore you can run Gord10's "Self" game using new interpreter (e.g. on Linux).

Plugin API

There is now a new function that can be used to detect whether a plugin has been loaded:
Code: ags
Game.IsPluginLoaded(const string name)

Where name is the filename of the plugin

Improved Custom Dialog Options rendering

Following callbacks are now supported for custom dialog options rendering:

Code: ags

  // runs each tick when dialog options are on screen
  void dialog_options_repexec(DialogOptionsRenderingInfo *info);
  // runs when user pressed a key while dialog options are on screen
  void dialog_options_key_press(DialogOptionsRenderingInfo *info, eKeyCode key);


Additionally following items added to DialogOptionsRenderingInfo struct:
Code: ags

  bool RunActiveOption(); // runs the active dialog option (defined with ActiveOptionID property)
  void Update(); // forces dialog options to redraw itself ("dialog_options_render" callback will be called)


--- ATTENTION, breaking changes! ---
* You must now explicitly run active option, even if you use mouse controls.
* You must now explicitly reset active option if the mouse is not above options UI
* The "dialog_options_get_active" callback is now NOT called, at all. It is supported only for backwards compatibility when running old games.
You will need to slightly change the logic of your script. In most cases it will be enough to simply rename "dialog_options_get_active" to "dialog_options_repexec".


Following are two examples of making custom dialog options with the new script system:

1. Classic mouse controls
Spoiler

int dlg_opt_color = 14;
int dlg_opt_acolor = 13;
int dlg_opt_ncolor = 4;

function dialog_options_get_dimensions(DialogOptionsRenderingInfo *info)
{
    // Create a 200x200 dialog options area at (50,100)
    info.X = 50;
    info.Y = 100;
    info.Width = 200;
    info.Height = 200;
}

function dialog_options_render(DialogOptionsRenderingInfo *info)
{
    info.Surface.Clear(dlg_opt_color);
    int i = 1,  ypos = 0;
    // Render all the options that are enabled
    while (i <= info.DialogToRender.OptionCount)
    {
        if (info.DialogToRender.GetOptionState(i) == eOptionOn)
        {
            if (info.ActiveOptionID == i) info.Surface.DrawingColor = dlg_opt_acolor;
            else info.Surface.DrawingColor = dlg_opt_ncolor;
            info.Surface.DrawStringWrapped(5, ypos, info.Width - 10,
                    eFontFont0, eAlignLeft, info.DialogToRender.GetOptionText(i));
            ypos += GetTextHeight(info.DialogToRender.GetOptionText(i), eFontFont0, info.Width - 10);
        }
        i++;
    }
}

function dialog_options_repexec(DialogOptionsRenderingInfo *info)
{
    info.ActiveOptionID = 0;
    if (mouse.y < info.Y || mouse.y >= info.Y + info.Height ||
        mouse.x < info.X || mouse.x >= info.X + info.Width)
    {
        return; // return if the mouse is outside UI bounds
    }

    int i = 1, ypos = 0;
    // Find the option that corresponds to where the player clicked
    while (i <= info.DialogToRender.OptionCount)
    {
        if (info.DialogToRender.GetOptionState(i) == eOptionOn)
        {
            ypos += GetTextHeight(info.DialogToRender.GetOptionText(i), eFontFont0, info.Width - 10);
            if ((mouse.y - info.Y) < ypos)
            {
                info.ActiveOptionID = i;
                return;
            }
        }
        i++;
    }
}

function dialog_options_mouse_click(DialogOptionsRenderingInfo *info, MouseButton button)
{
    info.RunActiveOption();
}

[close]

2. Keyboard controls
Spoiler

int dlg_opt_color = 14;
int dlg_opt_acolor = 13;
int dlg_opt_ncolor = 4;

function dialog_options_get_dimensions(DialogOptionsRenderingInfo *info)
{
    // Create a 200x200 dialog options area at (50,100)
    info.X = 50;
    info.Y = 100;
    info.Width = 200;
    info.Height = 200;
    info.ActiveOptionID = 1; // set to first option
}

function dialog_options_render(DialogOptionsRenderingInfo *info)
{
    info.Surface.Clear(dlg_opt_color);
    int i = 1,  ypos = 0;
    // Render all the options that are enabled
    while (i <= info.DialogToRender.OptionCount)
    {
        if (info.DialogToRender.GetOptionState(i) == eOptionOn)
        {
            if (info.ActiveOptionID == i) info.Surface.DrawingColor = dlg_opt_acolor;
            else info.Surface.DrawingColor = dlg_opt_ncolor;
            info.Surface.DrawStringWrapped(5, ypos, info.Width - 10,
                    eFontFont0, eAlignLeft, info.DialogToRender.GetOptionText(i));
            ypos += GetTextHeight(info.DialogToRender.GetOptionText(i), eFontFont0, info.Width - 10);
        }
        i++;
    }
}

function dialog_options_key_press(DialogOptionsRenderingInfo *info, eKeyCode keycode)
{
    if (keycode == eKeyUpArrow && info.ActiveOptionID > 1)
        info.ActiveOptionID = info.ActiveOptionID - 1;
    if (keycode == eKeyDownArrow && info.ActiveOptionID < info.DialogToRender.OptionCount)
        info.ActiveOptionID = info.ActiveOptionID + 1;
    if (keycode == eKeyReturn || keycode == eKeySpace)
        info.RunActiveOption();
}
[close]

Dialog Options

The highlight colour for dialog options (default rendering) is no longer hard coded as yellow (14). You can use:
Code: ags
game.dialog_options_highlight_color = xxx;

And set the dialog options highlight colour to whatever you like. The default is 14.

GUIControl.ZOrder

New property of a GUIControl (button, label, etc) lets you to get its current ZOrder or even change one at runtime.

File.Seek and File.Position

New function File.Seek allows to set new position in the opened file stream, related to either beginning, end or last position, while File.Position property lets you to get its current value.

Mouse clicking simulation

Mouse.Click(MouseButton)
This function fires mouse click event at current mouse position (at mouse.x / mouse.y).
So you can do following:
Code: ags

    Mouse.SetPosition(100, 100);
    Mouse.Click(eMouseLeft);

This will simulate user click at (100,100).

GUI.Click(MouseButton) and Button.Click(MouseButton)
Run the OnClick event handler for the GUI or Button, if there is one.
Code: ags

    btnStart.OnClick(eMouseLeft); // simulate user press on a button


GUI.ProcessClick(int x, int y, MouseButton))
Performs default processing of a mouse click at the specified co-ordinates on GUI, somewhat similar to old ProcessClick but affects only interface (GUI and any child controls).
Code: ags

    GUI.ProcessClick(50, 120, eMouseRight); // simulate user click with right mouse button on GUI


Custom property values can be set at runtime

The related script functions are added to all classes that supported GetProperty() and GetTextProperty(), that is - Room, InventoryItem, Hotspot, Object and Character:
Code: ags

  /// Sets an integer custom property associated with this room.
  static bool SetProperty(const string property, int value);
  /// Sets a text custom property associated with this room.
  static bool SetTextProperty(const string property, const string value);

They return 'true' if the property value was changed, or 'false' if such property does not exist, or property type is incorrect (like setting text value for integer property).

NOTE: Room, Hotspots and room Objects property values are reset to defaults when ResetRoom() is called.

Improvements to Tinting functions to make various tinting methods and properties compliant.
(This should be compatible with Draconian Edition scripts)

Region.Tint() script function now has optional luminance parameter
Code: ags
void Tint(int red, int green, int blue, int amount, int luminance = 100);


New SetAmbientLightLevel() script function.
Code: ags

  /// Sets an ambient light level that affects all objects and characters in the room.
  void SetAmbientLightLevel(int light_level);


New Character.SetLightLevel and Object.SetLightLevel script functions
Code: ags

  /// Sets the individual light level for this character.
  import function SetLightLevel(int light_level);


Negative light levels can be used in 8-bit games to produce darkening effect.
This applies to Ambient, Character and Object light level functions (it already worked with Region.LightLevel).

System.RuntimeInfo
This property returns a string, which contains runtime information, same as you were getting when pressed Ctrl+V (Ctrl+Alt+V - since AGS 3.3.3).



Editor

Building for multiple platforms
The Editor can now build for several different platforms. This is configured with this new option in General Settings (Compiler -> Build target platforms):



Select the platforms you like to build the game for by pressing on "drop down" button to the right and checking or unchecking items in the list:



"DataFile" builds a game data file, and cannot be unchecked. Other targets may be selected in any combination.
More platforms will be added in time.
Note, this only affects doing full build (Build -> Build EXE / Rebuild all files). When running in test mode only Windows version is built always.

The "Compiled" folder has changed. Now each platform has its own subdirectory: "Windows", "Linux", etc. To distribute your game - pack/copy contents of corresponding folder(s).

More properties to set for game objects
Padding for Text GUI Windows
Text GUI windows now have a padding property which lets you control how much space appears between the border and the text inside a text GUI window. Previously, this value was hardcoded as 3 pixels. It now defaults to 3 pixels.
Spoiler
[close]
Clickable for Room Objects is now exposed in the editor.
Spoiler
[close]
TintLuminance for Room Regions to set all tint parameters at design time.

Editor Plugin API
Exposed GUI Panes to plugin API.

Various improvements

  • Added "Close all tabs" command for the pane's context menu.
  • Added Preference option "Prompt dialog on closing multiple tabs".
NEW

  • Allow room objects to be locked like GUI controls (by toggling Locked property)

Bug Fixes

  • Undo history will no longer be deleted when a tab changes its docked state
  • Fixed crashes under certain circumstances when a script editor is closed
  • Fixed crash if selecting a character without a normal view in the room designer
  • Ctrl+Tabbing now works the first time when cycling through open editor tabs
  • Go to Line... now goes to the correct line and doesn't select it
  • The project is now completely rebuilt whenever Enable Debug Mode in General Settings differs from the setting used for the last build
  • The sprite editor now highlights drop targets when you drag sprites around
  • Fixed a crash when trying to run game setup from editor while "Compiled" folder does not exist.
  • Fixed project items could sometimes get incorrectly arranged inside the folder.
  • Fixed writing faulty timestamps in project file on some occasions that could spoil usage of file versioning control.
  • Fixed Help window positioning on multi-monitor desktop.
NEW

  • Fixed error in autocomplete occuring when there is a single-line comment in the end of the script.



WinSetup
Improvements
* You can now make actual language name displayed instead of "Game Default" if you put following line in the "[language]" section of acsetup.cfg:
Code: text

default_translation_name = "British"


Crimson Wizard

#1
So, the AGS 3.4.0.7 "Almost Beta" is released. This update is mainly a merge between prior 3.4.0.6 release (which took place almost one year ago) and latest 3.3.* update (3.3.5).
The 3.4.0.7 itself has only several minor corrections made, the list of them follows.


Changes since 3.4.0.6:

Includes all changes brought by 3.3.5 update:
http://www.adventuregamestudio.co.uk/forums/index.php?topic=53470.0


Common
* Improved the definitions of "low-res" and "high-res" games. The "high resolution" is now determined by game width & height multiplied, rather than their individual values. Low-res games are those of 320x240 and lower. This has effect on fonts scaling, and similar things.


Editor
Improvements
* Room Objects can be locked similarily to GUI Controls (using Locked property). That does not lock them in the game, only in the Room editor.
* Improved some game building error messages to make things more clear to the user.

Bug Fixes
* Fixed Windows plugins copied to wrong folder during game building.
* Fixed error in autocomplete occuring when there is a single-line comment in the end of the script.


Scripting
Improvements
* Further improvements and corrections to switch statement. For instance, now switch properly handles a case when you call function in the condition brackets (function should be called only once).


WinSetup
Bug Fixes
* Fixed refresh rate option was not correctly saved.



We have certain issue related to building Linux executable, this is why I did not include it yet. As soon as it is resolved, I will add download link. Or other developer will do.
Unfortunately, I must take a break for few weeks from development now; if there are any critical problems found in this release most probably this will have to wait, unless someone else fixes them and publish their own patched release.

After I am back I hope to finalize this 3.4.0 version that was in development for way too long.

Cassiebsg

Cool, thanks CW! :-D

Enjoy your break! It's well deserved. (nod)
There are those who believe that life here began out there...

proximity

Proximity Entertainment

proximity

#4
Okay. I've switched from 3.4.0.6 to 3.4.0.7 and it worked like a charm. Full screen mouse issue has been corrected. Cursor moves slower than before but what the hell, it's fixed :smiley:

Thank you so much Crimson to finish this before my deadline. I'm grateful to you.
Proximity Entertainment

Crimson Wizard

#5
Quote from: proximity on Fri 06/05/2016 11:55:35
Full screen mouse issue has been corrected. Cursor moves slower than before but what the hell, it's fixed :smiley:
This is precisely why I added cursor speed setting to the setup (also, Mouse.Speed in scripts)!
I found that speed of 1.5-2.0 works pretty well for me.

Quote from: Cassiebsg on Fri 06/05/2016 10:41:44
Enjoy your break! It's well deserved. (nod)
Umm... I am afraid, the reason for this break is not what you probably think...

Mehrdad

Sorry  maybe it's foolish question but my character doesn't walk at all . I made a new default game too . Not any error
My official site: http://www.pershaland.com/

Gurok

Mehrdad, can you elaborate on "not any error"? The default template under 3.4.0.7 will give you an error about ProcessClick as it hasn't been updated yet. Did you have to correct that?

When you say your character doesn't walk at all, was that from a scripted walk action? Is the game not responding to the mouse? Not responding to the keyboard?
[img]http://7d4iqnx.gif;rWRLUuw.gi

Danvzare

Quote from: Mehrdad on Fri 06/05/2016 15:39:36
Sorry  maybe it's foolish question but my character doesn't walk at all . I made a new default game too . Not any error

Have you laid down a walkable area?
If you have, does your character start on it?

proximity

Quote from: Crimson Wizard on Fri 06/05/2016 13:37:56
Quote from: proximity on Fri 06/05/2016 11:55:35
Full screen mouse issue has been corrected. Cursor moves slower than before but what the hell, it's fixed :smiley:
This is precisely why I added cursor speed setting to the setup (also, Mouse.Speed in scripts)!
I found that speed of 1.5-2.0 works pretty well for me.


Oh, that's even better. Thank you very much.
Proximity Entertainment

Mehrdad

Quote from: Gurok on Fri 06/05/2016 16:09:12
Mehrdad, can you elaborate on "not any error"? The default template under 3.4.0.7 will give you an error about ProcessClick as it hasn't been updated yet. Did you have to correct that?

When you say your character doesn't walk at all, was that from a scripted walk action? Is the game not responding to the mouse? Not responding to the keyboard?

Yes I renamed processClick to GUI.processclick and I hadn't any another message. Keyboard movement work fine. Mouse doesn't work. 


@Danvzare
I made empty default game and walkable area and character is define into it.
My official site: http://www.pershaland.com/

Crimson Wizard

#11
Quote from: Mehrdad on Fri 06/05/2016 16:21:04
Yes I renamed processClick to GUI.processclick and I hadn't any another message. Keyboard movement work fine. Mouse doesn't work. 
This is wrong, it should be Room.ProcessClick.

Quote from: Crimson Wizard on Thu 05/05/2016 18:53:56Global functions moved to Room class
GetRoomProperty ---> Room.GetProperty
ProcessClick -> Room.ProcessClick

GetRoomProperty is now Room.GetProperty to match Room.GetTextProperty. The old ProcessClick is now Room.ProcessClick.

<...>

GUI.ProcessClick(int x, int y, MouseButton))
Performs default processing of a mouse click at the specified co-ordinates, similar to old ProcessClick, but affects only interface (GUI and any child controls).

Room.ProcessClicks makes a click upon room only (walkable areas, regions, objects, characters), GUI.ProcessClick makes a click upon GUI only (buttons etc).

Gurok

Quote from: Mehrdad on Fri 06/05/2016 16:21:04
Yes I renamed processClick to GUI.processclick and I hadn't any another message. Keyboard movement work fine. Mouse doesn't work. 

ProcessClick should be changed to Room.ProcessClick, not GUI.ProcessClick. Never mind, I must have been typing this at the same time as CW.
[img]http://7d4iqnx.gif;rWRLUuw.gi

Crimson Wizard

I changed GUI.ProcessClick explanation in the first post a little, hopefully that will prevent confusion like this in the future.

Mehrdad

Oh I'm sorry guys. It works fine now. I said it's foolish question.
Thanks so much CW and Gurok
My official site: http://www.pershaland.com/

Crimson Wizard

Quote from: Mehrdad on Fri 06/05/2016 16:30:57
Oh I'm sorry guys. It works fine now. I said it's foolish question.
No, it was not foolish, I know we still lack a proper articles in the manual explaining the changes, so misunderstandings like this are going to happen.

Gord10

Games are art!
My horror game, Self

Crimson Wizard

Added Linux build pack: https://github.com/adventuregamestudio/ags/releases/download/v.3.4.0.7/AGS.3.4.0.7.Editor.Linux.Pack.zip
Download and unpack right into the AGS Editor program folder (where you installed it).

Cassiebsg

Uhm... just installed it, but seems to have broken my (bad) code for my verbcoin. Was working okay (though not perfect) in 3.4.0.6 but now it just crashes:

Quote
---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x0049CB6F ; program pointer is +6, ACI version 3.4.0.7, gtags (7,9)

AGS cannot continue, this exception was fatal. Please note down the numbers above, remember what you were doing at the time and post the details on the AGS Technical Forum.

in "GlobalScript.asc", line 233
from "GlobalScript.asc", line 431


Most versions of Windows allow you to press Ctrl+C now to copy this entire message to the clipboard for easy reporting.

An error file CrashInfo.dmp has been created. You may be asked to upload this file when reporting this problem on the AGS Forums. (code 0)
---------------------------
OK   
---------------------------


Line 233:
Code: ags

if ((IsInteractionAvailable(clicked_x , clicked_y, eModeTalkto)) || (inventory[game.inv_activated].IsInteractionAvailable(eModeTalkto)))


And line 431:

Code: ags

else if (IsInteractionAvailable(clicked_x,  clicked_y, eModeInteract))
    {
    show_VerbCoin(); // <-- This is line 431
    }


Did I do something so bad that now it crashes? :~(
There are those who believe that life here began out there...

Crimson Wizard

#19
Quote from: Cassiebsg on Fri 06/05/2016 23:58:55
Did I do something so bad that now it crashes? :~(
I cannot tell like this, could you send me the game project? Or give more details, like which functions are those called from, what game.inv_activated is equal to (does it refer to actual inventory item)?

SMF spam blocked by CleanTalk