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 - bx83

#601
There are a few things which have always bugged me about AGS, or made it 50 times harder to achieve a simple thing. They are:

-There is only 1 step of 'undo' in the walkable/walk behind editor window. This means that two bad clicks (ie. filling in the screen with 1 colour, then drawing a dot, then growning "oh god no..." after 3 hours of painstaking work which you now have to repeat) means it's all over. Like with CTRL+Z and CTRL+Y, I'm hoping someone could expand this to 50 or 100 clicks?

-Editor window a bit primitive? No problem - you can open a 'walk behind' masking image! Except this is actually harder than just drawing it on the main window. This is a major problem. I've been able to find two tutorials (none of the pictures in them work anymore - 'bandwidth exceeded'), and basically what works is:
   1. go to mspaint (not even in Windows as of 10, has to be added back the sneaky way, will be gone forever by 11)
   2. edit a mask, using colours that you get somehow (what are their codes?..)
   3. save it as an 8bit BMP (the only editor that does this easily, or doesn't change an 8bit to a 16bit bmp when you add a layer, etc.)
   4. try this one, find it's 2 pixels too wide; go back into mspaint and edit it - single layer, using primitive tools - so that it's size is corrected. Then discover it's now 2 pixels too wide... then tear out your hair.

All this could be solved by:
-allowing import of BMP's that are 8bit, 16bit, or 32bit colour
-allowing multiple layers (like in Photoshop) without breaking the image
-allowing colours that are not *exactly* #009900 etc., but instead using the first 15 colours, and then converting them to the ones used in the editor

The ONE problem in this situation is: in the editor you HAVE the background, in mspaint or Photoshop, you DON't have the background. Unless, you use a 2nd layer on an image, copy the first to an 8bit BMP, and then hopefully, it stays that way. Seriously, I have 2 files that are 8bit BMPs, and I don't even know how I created them.

Just make the file specifications more accepting.

-Allowing walk-behinds to be independently turned on and off, rather than just 'ignore all' or 'enable all'

-Multiple layers can't be seen in the editor. Rather than seeing just walkable areas, or JUST walk behinds, or JUST objects, why not allow ALL (or some) to be seen AT THE SAME TIME? I can't tell you how many hours I've spent getting one thing or the other to line up with something else, but can't because I can see only one layer at a time. Why not just have the layers as tickboxes, turning on or off depending on what you want to see? Objects, Edges, Characters, Hotspots independant; Walkable areas or Walk behinds or Regions visible also.
Once again, one simple change that would allow this editor to be useufl rather than a hinderence.

-Larger graphics in the Sprites window. If I look at 20 frames of animation, I find it hard to tell each one apart. But if I could use a slider to see them as small, large, larger, big, xbig? This would be a simple change that meant I wouldn't have to open (one at a goddamn time) image in the default image editor (which I have to set manually) just to see it.


Now, I do apologise if I've hurt anyone feelings during this 20min bitch-fest about the Editor. Truly, I do, and I expect to use it for no cost and with no license in return for features for free and instaneously. HOWEVER, these are problems which must have something done about them.
AND

I HAVE $$$ MONEY $$$

I'm happy to pay like AU$3,000 for these changes (or perhaps $1,500 *each*). Please contact me PM if you'd like.
Otherwise, please reply.
#603
I have the following code:

Code: ags

...

@5
	if (cond) {
                conversation 1
		return RUN_DIALOG_RETURN;
	} else {
                conversation 2
goto-dialog 49 
	}
return

...


But the following error:
'Dialog 45(115): Script commands can only be used in the area between a @ entry point and the closing return/stop statement
Dialog 45(116): The command 'return' will be ignored since the script for this option has already finished
Dialog 45(117): Error (line 117): PE04: parse error at 'else''

If I alter lines 11 or 6 (return, return RUN_DIALOG_RETURN statement) - error still happens.

I'm aware of the RUN_ statements - return, previous, and stop - but there isn't one 'goto a dialog'. Otherwise I'd say by problems would be simple.

Am I doing this wrong? Is there *any* way to do this?
I'm asking because there doesn't seem to be anything on the net.
#604
Fantastic, replaced with GUI, no fading in/out, all works :)
Thankyou :)
#605
Hi, I've been having trouble inserting an image, then going back to the main game. The insert is like a title card; appears for a second while some audio plays, everything else is fade out, goes back to normal background, everything is faded in and restored.

Code: ags

cGiraffe.Say("&21 YES, HE'S A HU--");

//the title card:	
DrawingSurface *surface = Room.GetDrawingSurfaceForBackground();
surface.DrawImage(1, 1, 135);
surface.Release(); 		

//audio to go with title card	
cDummy.Say("&1 Six hours later...");

//everything's restored:
DrawingSurface *surface2 = Room.GetDrawingSurfaceForBackground();
surface2.DrawImage(0, 0, 2280);
surface2.Release();

//thing's continue like a chunk of time was taken out by title card:
cGiraffe.Say("&22 ANYWAY SO I SAY'S TO HIM, MAYBE IF YOU DIDN'T DROP THE BOOK *QUITE* SO OFTEN, IT WOULDN'T SMELL FISHY!");


The problem is;
If I use FadeOut/FadeIn, it goes to absolute black, and the characters cannot be seen (good), but neithey can the title card (bad);
If I just do it as above, and just draw the title card, all the characters and objects apear (bad).

Video:
http://redrom.ltd/img/6hours.webm

Can I do this any other way than: setting everything to invisible, draw title card, say speech, draw back background, make all visible again?

Also while we're at it; how would I make the background and object's fade out, but *not* the character? Similar to a scene in which Guybrush dies in the Something of Monkey Island? (background fades out; then guybrush falls; then he fades out; then everything fades in again at a different location).

#606
So, would *anyone* be able to reverse engineer a game based on what was commented in their code? A catagoric no?
Are names of variables recorded or are they also translated to just numeric code (like variable 'GotTheCoins' becomes '&102'?)
#607
I realise that compiling generally means taking all non-commented code, converting it to object code, and finally to binary. However, since AGS is a script engine (correct me if I'm wrong), and has a copy of the game scripts within the interpretor within an .exe file, it could be thought of as an exe which is really just one giant complex zip file?

So basically, what conditions are scripts in when they're compiled/'published'? Do they contain words but not comments; verbatim without line breaks; absolutely the same as original; or pure binary?
#609
Found the answer - a zombie editor process was still running.
Go about your business :P
#610
Hi
I had the editor crash when there were too many tabs open (about 60). There was an error; but then *boom* gone.
On restarting it, I was told I can't load a game because it's still open in another editor -- _OpenInEditor.lock strikes again.
I tried deleting it, but couldn't.

I thought it might be due to the file being 0 bytes; but nothing can open it to edit it.
I've checked permissions, and I have full control - but can't delete.
I checked on my mac, via the windows share, to see if it would delete - nope.
I actually got a program called Unlocker to delete it - even this couldn't do it.

So basically, I can't edit the project until this is fixed.

Anyone who can help, I would be indebted, because I'm releasing a demo soon :/
#611
This is probably a stupid question - but which URL directs me to the latest copy of the iOS libraries?
https://github.com/JanetGilbert/ags/tree/main/iOS/buildlibs
https://github.com/adventuregamestudio/ags/tree/master/iOS

Would seem to the second one, but it's hard to know which one is more modern.

Which one works for an iPhone 7/8?
Which one *doesn't* require a jailbroken phone?
#613
How would game_start call the code on events, or is it just once? This doesn't seem like a good idea to me.
How do I make the buttons reflect their state? In their own script? (RunScript)
#614
SOLVED :)
Here's the code:

Code: ags

function on_event(EventType event, int data)
{
	if (
		!cJulius.HasInventory(iCarKeys) &&
		!cJulius.HasInventory(iFlowInductor) &&
		!cJulius.HasInventory(iBackingPlate) &&
		!cJulius.HasInventory(iCog) &&
		!cJulius.HasInventory(iCarCoolant) &&
		!cJulius.HasInventory(iOilContainer) &&
		!cJulius.HasInventory(iCarPetrol) &&
		!cJulius.HasInventory(iDialFace1) &&
		!cJulius.HasInventory(iKeyboardKeys) &&
		!cJulius.HasInventory(iFuzzyDice) &&
		!cJulius.HasInventory(iElectricWireSilver) &&
		!cJulius.HasInventory(iBobbleHead) &&
		!cJulius.HasInventory(iGum) 
	)	
	{
		Button1.NormalGraphic = 2244;
		Button2.NormalGraphic = 2256;
		Button3.NormalGraphic = 2246;
		Button4.NormalGraphic = 2247;
		Button5.NormalGraphic = 2248;
		Button6.NormalGraphic = 2252;
		Button7.NormalGraphic = 2253;
		Button8.NormalGraphic = 2249;
		Button9.NormalGraphic = 2251;
		Button10.NormalGraphic = 2250;
		Button11.NormalGraphic = 2254;
		Button12.NormalGraphic = 2255;
		Button13.NormalGraphic = 2245;
	}
	
	if (event == eEventAddInventory || event == eEventLoseInventory)
	{
		if (cJulius.HasInventory(iCarKeys)) {
			Button1.NormalGraphic = 2231;
		} else {
			Button1.NormalGraphic = 2244;
		}
		if (cJulius.HasInventory(iFlowInductor)) {
			Button2.NormalGraphic = 2243;
		} else {
			Button2.NormalGraphic = 2256;
		}
		if (cJulius.HasInventory(iBackingPlate)) {
			Button3.NormalGraphic = 2233;
		} else {
			Button3.NormalGraphic = 2246;
		}
		if (cJulius.HasInventory(iCog)) {
			Button4.NormalGraphic = 2234;
		} else {
			Button4.NormalGraphic = 2247;
		}
		if (cJulius.HasInventory(iCarCoolant)) {
			Button5.NormalGraphic = 2235;
		} else {
			Button5.NormalGraphic = 2248;
		}
		if (cJulius.HasInventory(iOilContainer)) {
			Button6.NormalGraphic = 2239;
		} else {
			Button6.NormalGraphic = 2252;
		}
		if (cJulius.HasInventory(iCarPetrol)) {
			Button7.NormalGraphic = 2240;
		} else {
			Button7.NormalGraphic = 2253;
		}
		if (cJulius.HasInventory(iDialFace1)) {
			Button8.NormalGraphic = 2236;
		} else {
			Button8.NormalGraphic = 2249;
		}
		if (cJulius.HasInventory(iKeyboardKeys)) {
			Button9.NormalGraphic = 2238;
		} else {
			Button9.NormalGraphic = 2251;
		}
		if (cJulius.HasInventory(iFuzzyDice)) {
			Button10.NormalGraphic = 2237;
		} else {
			Button10.NormalGraphic = 2250;
		}
		if (cJulius.HasInventory(iElectricWireSilver)) {
			Button11.NormalGraphic = 2241;
		} else {
			Button11.NormalGraphic = 2254;
		}
		if (cJulius.HasInventory(iBobbleHead)) {
			Button12.NormalGraphic = 2242;
		} else {
			Button12.NormalGraphic = 2255;
		}
		if (cJulius.HasInventory(iGum)) {
			Button13.NormalGraphic = 2232;
		} else {
			Button13.NormalGraphic = 2245;
		}
	}
}
#615
Take a look at this image so far:


As you can see, the two images ('none' and 'all') are exactly the same - I want 'none' to be like the middle image ('some'). In other words, I want all to be saturated, none to be unsaturated, and some to be objects in the inventory saturated only.

Here's the code so far:

Code: ags

function on_event(EventType event, int data)
{
	if(event == eEventAddInventory)
	{
		if (cJulius.HasInventory(iCarKeys)) {
			Button1.NormalGraphic = 2231;
		} else {
			Button1.NormalGraphic = 2244;
		}
		if (cJulius.HasInventory(iFlowInductor)) {
			Button2.NormalGraphic = 2243;
		} else {
			Button2.NormalGraphic = 2256;
		}
		if (cJulius.HasInventory(iBackingPlate)) {
			Button3.NormalGraphic = 2233;
		} else {
			Button3.NormalGraphic = 2246;
		}
		if (cJulius.HasInventory(iCog)) {
			Button4.NormalGraphic = 2234;
		} else {
			Button4.NormalGraphic = 2247;
		}
		if (cJulius.HasInventory(iCarCoolant)) {
			Button5.NormalGraphic = 2235;
		} else {
			Button5.NormalGraphic = 2248;
		}
		if (cJulius.HasInventory(iOilContainer)) {
			Button6.NormalGraphic = 2239;
		} else {
			Button6.NormalGraphic = 2252;
		}
		if (cJulius.HasInventory(iCarPetrol)) {
			Button7.NormalGraphic = 2240;
		} else {
			Button7.NormalGraphic = 2253;
		}
		if (cJulius.HasInventory(iDialFace1)) {
			Button8.NormalGraphic = 2236;
		} else {
			Button8.NormalGraphic = 2249;
		}
		if (cJulius.HasInventory(iKeyboardKeys)) {
			Button9.NormalGraphic = 2238;
		} else {
			Button9.NormalGraphic = 2251;
		}
		if (cJulius.HasInventory(iFuzzyDice)) {
			Button10.NormalGraphic = 2237;
		} else {
			Button10.NormalGraphic = 2250;
		}
		if (cJulius.HasInventory(iElectricWireSilver)) {
			Button11.NormalGraphic = 2241;
		} else {
			Button11.NormalGraphic = 2254;
		}
		if (cJulius.HasInventory(iBobbleHead)) {
			Button12.NormalGraphic = 2242;
		} else {
			Button12.NormalGraphic = 2255;
		}
		if (cJulius.HasInventory(iGum)) {
			Button13.NormalGraphic = 2232;
		} else {
			Button13.NormalGraphic = 2245;
		}
	
	}	else {
		
		if (event == eEventLoseInventory)
		{
			if (cJulius.HasInventory(iCarKeys)) {
				Button1.NormalGraphic = 2231;
			} else {
				Button1.NormalGraphic = 2244;
			}
			if (cJulius.HasInventory(iFlowInductor)) {
				Button2.NormalGraphic = 2243;
			} else {
				Button2.NormalGraphic = 2256;
			}
			if (cJulius.HasInventory(iBackingPlate)) {
				Button3.NormalGraphic = 2233;
			} else {
				Button3.NormalGraphic = 2246;
			}
			if (cJulius.HasInventory(iCog)) {
				Button4.NormalGraphic = 2234;
			} else {
				Button4.NormalGraphic = 2247;
			}
			if (cJulius.HasInventory(iCarCoolant)) {
				Button5.NormalGraphic = 2235;
			} else {
				Button5.NormalGraphic = 2248;
			}
			if (cJulius.HasInventory(iOilContainer)) {
				Button6.NormalGraphic = 2239;
			} else {
				Button6.NormalGraphic = 2252;
			}
			if (cJulius.HasInventory(iCarPetrol)) {
				Button7.NormalGraphic = 2240;
			} else {
				Button7.NormalGraphic = 2253;
			}
			if (cJulius.HasInventory(iDialFace1)) {
				Button8.NormalGraphic = 2236;
			} else {
				Button8.NormalGraphic = 2249;
			}
			if (cJulius.HasInventory(iKeyboardKeys)) {
				Button9.NormalGraphic = 2238;
			} else {
				Button9.NormalGraphic = 2251;
			}
			if (cJulius.HasInventory(iFuzzyDice)) {
				Button10.NormalGraphic = 2237;
			} else {
				Button10.NormalGraphic = 2250;
			}
			if (cJulius.HasInventory(iElectricWireSilver)) {
				Button11.NormalGraphic = 2241;
			} else {
				Button11.NormalGraphic = 2254;
			}
			if (cJulius.HasInventory(iBobbleHead)) {
				Button12.NormalGraphic = 2242;
			} else {
				Button12.NormalGraphic = 2255;
			}
			if (cJulius.HasInventory(iGum)) {
				Button13.NormalGraphic = 2232;
			} else {
				Button13.NormalGraphic = 2245;
			}
		}
	}
}
#616
Ah, InvWindow code deleted :)

Now I only have the on_event function.

One final bug:
When I add all items, they all show colour-filled (ie. non-transparent) (correct)
When I add some items, some show colour filled, some show translucent (correct)
When I have *no* items, they all show colour-filled (should be all translucent)

What is wrong?
#617
I'm trying to use the gIconbar window, which is a panel at the top of the screen, autohiding, that has the inventory items, inventory, option menu and the load/save games button on it.

#618
Code: ags

function game_start() {
...
wasInventoryEmpty = gInventory.ItemCount == 0;
...
}

...

function on_event(EventType event, int data)
{
    if(event == eEventAddInventory)
    {
        if(wasInventoryEmpty && gInventory.ItemCount > 0) // First item(s) were added
        {
					if (cJulius.HasInventory(iCarKeys)) {
            Button1.NormalGraphic = 2231;
					} else {
						Button1.NormalGraphic = 2244;
					}
					else if (cJulius.HasInventory(iFlowInductor)) {
						Button2.NormalGraphic = 2243;
					} else {
						Button2.NormalGraphic = 2243;
					}
					else if (cJulius.HasInventory(iBackingPlate)) {
						Button3.NormalGraphic = 2233;
					} else {
						Button3.NormalGraphic = 2246;
					}
					else if (cJulius.HasInventory(iCog)) {
						Button4.NormalGraphic = 2234;
					} else {
						Button4.NormalGraphic = 2247;
					}
					else if (cJulius.HasInventory(iCarCoolant)) {
						Button5.NormalGraphic = 2235;
					} else {
						Button5.NormalGraphic = 2248;
					}
					else if (cJulius.HasInventory(iOilContainer)) {
						Button6.NormalGraphic = 2239;
					} else {
						Button6.NormalGraphic = 2252;
					}
					else if (cJulius.HasInventory(iCarPetrol)) {
						Button7.NormalGraphic = 2240;
					} else {
						Button7.NormalGraphic = 2253;
					}
					else if (cJulius.HasInventory(iDialFace1)) {
						Button8.NormalGraphic = 2236;
					} else {
						Button8.NormalGraphic = 2249;
					}
					else if (cJulius.HasInventory(iKeyboardKeys)) {
						Button9.NormalGraphic = 2238;
					} else {
						Button9.NormalGraphic = 2251;
					}
					else if (cJulius.HasInventory(iFuzzyDice)) {
						Button10.NormalGraphic = 2237;
					} else {
						Button10.NormalGraphic = 2250;
					}
					else if (cJulius.HasInventory(iElectricWireSilver)) {
						Button11.NormalGraphic = 2241;
					} else {
						Button11.NormalGraphic = 2254;
					}
					else if (cJulius.HasInventory(iBobbleHead)) {
						Button12.NormalGraphic = 2240;
					} else {
						Button12.NormalGraphic = 2255;
					}
					else if (cJulius.HasInventory(iGum)) {
						Button13.NormalGraphic = 2232;
					} else {
						Button13.NormalGraphic = 2245;
					}
					
					wasInventoryEmpty = false;

        }
    }
    else
    {
        if(event == eEventLoseInventory)
        {
            if(!wasInventoryEmpty && gInventory.ItemCount == 0) // Last item was removed
            {
								if (cJulius.HasInventory(iCarKeys)) {
									Button1.NormalGraphic = 2231;
								} else {
									Button1.NormalGraphic = 2244;
								}
								else if (cJulius.HasInventory(iFlowInductor)) {
									Button2.NormalGraphic = 2243;
								} else {
									Button2.NormalGraphic = 2243;
								}
								else if (cJulius.HasInventory(iBackingPlate)) {
									Button3.NormalGraphic = 2233;
								} else {
									Button3.NormalGraphic = 2246;
								}
								else if (cJulius.HasInventory(iCog)) {
									Button4.NormalGraphic = 2234;
								} else {
									Button4.NormalGraphic = 2247;
								}
								else if (cJulius.HasInventory(iCarCoolant)) {
									Button5.NormalGraphic = 2235;
								} else {
									Button5.NormalGraphic = 2248;
								}
								else if (cJulius.HasInventory(iOilContainer)) {
									Button6.NormalGraphic = 2239;
								} else {
									Button6.NormalGraphic = 2252;
								}
								else if (cJulius.HasInventory(iCarPetrol)) {
									Button7.NormalGraphic = 2240;
								} else {
									Button7.NormalGraphic = 2253;
								}
								else if (cJulius.HasInventory(iDialFace1)) {
									Button8.NormalGraphic = 2236;
								} else {
									Button8.NormalGraphic = 2249;
								}
								else if (cJulius.HasInventory(iKeyboardKeys)) {
									Button9.NormalGraphic = 2238;
								} else {
									Button9.NormalGraphic = 2251;
								}
								else if (cJulius.HasInventory(iFuzzyDice)) {
									Button10.NormalGraphic = 2237;
								} else {
									Button10.NormalGraphic = 2250;
								}
								else if (cJulius.HasInventory(iElectricWireSilver)) {
									Button11.NormalGraphic = 2241;
								} else {
									Button11.NormalGraphic = 2254;
								}
								else if (cJulius.HasInventory(iBobbleHead)) {
									Button12.NormalGraphic = 2240;
								} else {
									Button12.NormalGraphic = 2255;
								}
								else if (cJulius.HasInventory(iGum)) {
									Button13.NormalGraphic = 2232;
								} else {
									Button13.NormalGraphic = 2245;
								}

                wasInventoryEmpty = true;
            }
        }
    }
}


"ERROR: .ItemCount is not a public member of GUI."
#619
Hi,

I know how to change a buttons graphic in a GUI:

Code: ags

button.NormalGraphic = 123;


These are for buttons which show inventory items that are there (graphic=123) or not there yet (graphic=456) - they don't need to be clicked, and have no script attached.

But what about when a GUI is invisible? Or, when it's visible, and drops down from the the top with mousover? Can I have code which 'prepares' the graphic for when the GUI is visible or partly visible? (I'm using gIconBar 'when mouse moves over the top of the screen').

Which makes it hard, since I know the code, but not where to put it :/
In rep_exec in global script??...
#620
32 bit all the way.
Export the phylactere sprite...?
SMF spam blocked by CleanTalk