Menu

Show posts

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

Show posts Menu

Messages - Dualnames

#581
AGS Games in Production / Re: Guard Duty
Sun 07/12/2014 12:27:04
"I can't make games" he said.

"I can't draw" he said.

CHICKY, YOU CHICKY BASTARD!
#582
Primordia also uses it. And the Cat Lady I believe.
#583
So if i set mouse.position and use mouseclick, will it work perfectly as if i clicked myself on that position?
#584
Well, the theme is rather simple. Make a song that would fit in a noir situation. You wanna go Blade Runner, neo-noir? Go. Anything that would work in the entire noir genre. ANYTHING.
Deadline is 16th of December but may extend.

Winner - LE WOLTAIRE
#585
Greg is such a tool. Lovely little game, quirky humor, brilliant. I will try and promote it on the AGS Blog, if i remember to <3
#586
Replied to put this on the top.
#587
I see room_a(), room_b() etc. in the room script. What is that? How does it work?

These are room interaction event functions. The engine calls them when there is some room interaction running. They have the same meaning as global event functions like game_start(), repeatedly_execute(), interface_click() etc.

Room interactions:

Walk off left
occurs when the player character walks off the left edge of the screen.
Walk off right
occurs when the player walks off the right edge of the screen.
Walk off bottom
occurs when the player character walks off the bottom edge of the screen.
Walk off top
occurs when the player character walks off the top edge of the screen.
First time enters room
occurs the first time the player enters the room. This event occurs AFTER the screen has faded in, so it allows you to display a message describing the scene.
Player enters room (before fadein)
occurs just after the room is loaded into memory. This event occurs every time the player enters the screen, and it happens BEFORE the screen has faded in, which allows you to change object graphics and do other things to the screen which the player won't notice.
NOTE: This event is ONLY meant for adjusting things such as object and character placement. Do NOT use this event for any sort of automated intro to the room - use the "Enters Room After Fade In" event for that instead.
Repeatedly execute (for this room)
occurs repeatedly on every interpreter cycle. The normal game speed is 40 cycles per second, so this event occurs about every 25 milliseconds.
Player enters room (after fadein)
occurs every time the player enters the room, AFTER the screen has faded-in. Suitable for displaying text descriptions and so on, that you want the player to see.
Player leaves room
occurs when the player leaves the screen, just before the screen fades out.

How it works:

When you goto the room interaction editor and add a new interaction then choose RunScript option AGS adds appropriate function for the current room so you could place the code in to decide what you want to be happen when the interaction is running. You may notice the comment line inside of each event function telling what interaction the function is for.

Example:

1. Go to interaction editor
2. Choose interaction: Player enters room (after fadein)
3. Set RunScript option for this interaction
4.
   function room_a() {
   // script for room: Player enters room (after fadein)
     player.Animate(...);
     player.Walk(100, 200, eBlock);
     ...
     ...
     etc.
   }

So now each time the player has entered the room (after fadein) AGS will animate the player character and move him to the specified co-ordinates.

A Word of warning:

You should never place or delete these functions manually. Instead goto the interaction editor and remove appropriate interaction (AGS takes care itself on deleting such functions).
Why is it so? Because when you add new interaction AGS adds an event function as well and links it with the added interaction.
That means two things:
1. If you open script editor (room) and just place room_*() functions manually AGS will not be able to call them unless the appropriate interaction has been specified first. This is why you can't just copy the whole script code from one room and paste it into the new one. You should create interactions first.
2. If someone posted a script like this:
function room_a() {
  cGuy.Walk(...);
  ...
  ...
  etc.
}

you shouldn't just grab & paste it into the room. Even if you have room_a() function in yours script. The reason it should be avoided is that the event function name is NOT connected with the interaction equally for all rooms but depends on on the order the interactions have been added.
What I mean is this:

Interaction editor > Add Interaction > Room: Player enters room (after fadein); RunScript;
Result: function room_a() has been added.

Interaction editor > Add Interaction > Room: Player enters room (before fadein); RunScript;
Result: function room_b() has been added.

Interaction editor > Add Interaction > Room: Player leaves screen; RunScript;
Result: function room_c() has been added.

So in the room script we have:

//room script
function room_a() {
// script for room: Player enters room (after fadein)
}

function room_b() {
// script for room: Player enters room (before fadein)
}

function room_c() {
// script for room: Player leaves room
}

...but changing the order interactions would be added in:

Interaction editor > Add Interaction > Room: Player leaves room; RunScript;
Result: function room_a() has been added.

Interaction editor > Add Interaction > Room: Player enters room (after fadein); RunScript;
Result: function room_b() has been added.

Interaction editor > Add Interaction > Room: Player enters room (before fadein); RunScript;
Result: function room_c() has been added.

... we'll get in the room script:

//room script
function room_a() {
// script for room: Player leaves room
}

function room_b() {
// script for room: Player enters room (after fadein)
}

function room_c() {
// script for room: Player enters room (before fadein)
}

See the difference? The functions have other names.

Btw, there are not only room interactions but hotspot, objects etc. so seeing something like function hospot1_a() {} is also possible.

-

Oops, a bit long post. hope it's not confusing and helps you. If you have any related questions just ask. ;)

-Cheers




What exactly are arrays and structs, and how do you define/use them?

As of AGS v2.71 arrays and structs are officially supported, and are also documented in the manual:
  Manual -> Scripting -> Script language keywords -> Arrays / struct

With arrays, you can store several values in one variable, so to speak.
So instead of doing

Code: ags

// main global script

int weapon1_cost; // define variables available from all functions in the global script
int weapon2_cost;
int weapon3_cost;

function game_start {

  weapon1_cost = 60;
  weapon2_cost = 20;
  weapon3_cost = 40;

}

export weapon1_cost; // export variables to make them available in room scripts
export weapon2_cost;
export weapon3_cost;


Code: ags

// main script header

import int weapon1_cost; // import global script variables to make them available in room scripts
import int weapon2_cost;
import int weapon3_cost;


you can do

Code: ags

// main global script

int weapon_cost[3]; // define array with a dimension/size of 3

function game_start {

  weapon_cost[0] = 60;
  weapon_cost[1] = 20;
  weapon_cost[2] = 40;

}

export weapon_cost; // export array to make it available in room scripts


Code: ags

// main script header

import int weapon_cost[3]; // import array to make it available in room scripts


Note that the array's index (the number by which you access it) starts at 0 and ends at arraysize - 1.
In the past, accessing an array outside these bounds could cause weird things to happen. Although AGS has been improved with better array bounds checking since then, you should be careful to avoid any problems.

Now, with structs, you can do this (AGS v2.71 and up, see below for older versions):

Code: ags

// main global script

myWeaponStruct weapon1; // make variables from the struct defined in the script header (see below)
myWeaponStruct weapon2;
myWeaponStruct weapon3;

function game_start {

  weapon1.cost = 60;
  weapon1.power = 30;
  weapon1.description = "Mace";

  weapon2.cost = 20;
  weapon2.power = 10;
  weapon2.description = "Dagger";

  weapon3.cost = 40;
  weapon3.power = 20;
  weapon3.description = "Sword";

}

export weapon1; // export variables to make them available in room scripts
export weapon2;
export weapon3;


Code: ags

// main script header

struct myWeaponStruct {
  int cost;
  int power;
  String description; // Note: "String", not "string"
};

import myWeaponStruct weapon1; // import variables to make them available in room scripts
import myWeaponStruct weapon2;
import myWeaponStruct weapon3;


You can also combine structs and arrays like this:

Code: ags

// main global script

myWeaponStruct weapons[3];

function game_start {

  weapons[0].cost = 60;
  weapons[0].power = 30;
  weapons[0].description = "Mace";

  weapons[1].cost = 20;
  weapons[1].power = 10;
  weapons[1].description = "Dagger";

  weapons[2].cost = 40;
  weapons[2].power = 20;
  weapons[2].description = "Sword";

}

export weapons;


Code: ags

// main script header

struct myWeaponStruct {
  int cost;
  int power;
  String description;
};

import myWeaponStruct weapons[3];





For AGS v2.70 and below:

You can't make arrays from string variables and the new String type doesn't exist in AGS v2.70 and below.
Here's a workaround to do the above in older AGS versions:

Code: ags

// main global script

myWeaponStruct weapon1; // make variables from the struct defined in the script header (see below)
myWeaponStruct weapon2;
myWeaponStruct weapon3;

function game_start {

  weapon1.cost = 60;
  weapon1.power = 30;
  StrCopy(weapon1.description, "Mace");

  weapon2.cost = 20;
  weapon2.power = 10;
  StrCopy(weapon2.description, "Dagger");

  weapon3.cost = 40;
  weapon3.power = 20;
  StrCopy(weapon3.description, "Sword");

}

export weapon1; // export variables to make them available in room scripts
export weapon2;
export weapon3;


Code: ags

// main script header

struct myWeaponStruct {
  int cost;
  int power;
  char description[200]; // instead of "string description;"
};

import myWeaponStruct weapon1; // import variables to make them available in room scripts
import myWeaponStruct weapon2;
import myWeaponStruct weapon3;


You can also combine structs and arrays like this:

Code: ags

// main global script

myWeaponStruct weapons[3];

function game_start {

  weapons[0].cost = 60;
  weapons[0].power = 30;
  StrCopy(weapons[0].description, "Mace");

  weapons[1].cost = 20;
  weapons[1].power = 10;
  StrCopy(weapons[1].description, "Dagger");

  weapons[2].cost = 40;
  weapons[2].power = 20;
  StrCopy(weapons[2].description, "Sword");

}

export weapons;


Code: ags

// main script header

struct myWeaponStruct {
  int cost;
  int power;
  char description[200];
};

import myWeaponStruct weapons[3];


Edit:
- Updated with AGS v2.71's String type
- Changed "item" to "weapon" to avoid confusion with inventory items
#588
Congratulations on your newborn, and great entry as well Le Woltaire, I feel as though your entry was more polished per se. Will start a new one ASAP.
#589
Likewise i think it looks so pretty.
#590
It would be better if you guys spoke in russian, cause in english, you make absolutely no sense whatsoever.
#591
You know, I've spent the past one hour, thinking, endlessly, how should this topic begin. But I have not found a single piece of text, worthy to accompany the poetry and the depth of this game. You are probably either stopped reading by now, or you're thinking "is this for real", and trust me when I say, this is the REALEST game ever to grace the presence of space in your computerized machine.

THIS IS MANKIND'S WAY TO EVOLUTION

For years scientists search for intellectuality and breathtakingness over masterpieces of art, this videogame, is but only the epitomy of a masterpiece of LIFE.



Features:
- 320x200 re-solutions to your life problems
- Professional voice acting to sooth you from the hardships of life
- Text-adventure more like venture into the text of your impending doom.
- Designed by a duo that can be categorized as the Daft Punk of poetry, or the Simon And Garfunkel of philosophy.
- Created within your lifespan (consider yourself lucky to embrace its glory)


DOWNLOAD  IT TO UR HEART
MIRROR IS ZIP works with LINUX!
#592
I don't know, it's just i thought building up a song to a nostalgic melody would work, i'm pretty proud of how this came out to be. I guess i wanted to show the build up of emotions as you first gaze to the improbable. A rush of sentiments slowly building i guess.
#593
I'm okay with Juan being the third entry.
#594
Yeah, i've found that. THE HARD WAY. I always thought it never executed anything below it, but it's kay.
#595
QuoteThis dude's wife is about to give birth and has promised that whatever you name your soundtrack as WILL be the baby's name!!!

What!? No, he never said that.
#596
http://duals.agser.me/Files/isthatit.ogg

Here's my entry and I suggest we run this till someone makes a new entry, so that I don't win by default.

#597
WAIT THIS EXISTED?!?!?!!?!?!
#598
Honestly, I would give everything I own to play the game that reveals the secret of monkey island, for this i am not willing to give a penny.
#599
I'm afraid it seems like it. Other people ask much less for MUCH BETTER LOOKING GAMES AND HIGHER PRODUCTION VALUES. For the love of god, it won't probably feature voice acting. And Ron Gilbert helped make my favorite game in existence. Still, I won't blindly obey and follow him.
#600
I can count more than 100 people I've met in here that could make this game faster and with much less money, and better. They don't even have a working prototype of nothing, they're in it for the money.
SMF spam blocked by CleanTalk