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

#281
My guess is you need to turn on custom inventory click handling in the General Settings.
#282
Yeah, like I said you would have to write fixed versions in the empty lines and activate the resulting "translation" in winsetup.exe

The next best (possible) thing is to give the file to your editor, let them write fixed versions into the empty lines, then manually go through your source code / dialog scripts and fix the lines.

It's probably also possible to write a script that does this, because room scripts are just text files and Game.agf is an XML file.
#283
I agree that in any instance, z-sorting should fall back to the ID, and a lower ID should be drawn first.
#284
As far as I understand your posts, you're looking for idle animations that play immediately upon entering the room but then have a 15 second pause between them?

Here's example code:
Code: ags
function room_Load()
{
  cHologram.SetIdleView(VHOLO_IDLE, 1);
  int idleAnimFrames = Game.GetFrameCountForLoop(VHOLO_IDLE, cHologram.Loop) * 5;
  SetTimer(1, GetGameSpeed() + idleAnimFrames + 15);
}

function room_RepExec()
{
  if (IsTimerExpired(1)) {
    cHologram.SetIdleView(VHOLO_IDLE, 10);
  }
}
#285
Creating a translation source will do exactly that (1), and in theory you can simply fix lines instead of translating them.
However there's no way to update in-game texts based on the translation, so you would have to do it manually.
Or publish your game with the compiled translation set to active and hope nobody changes it back in winsetup ;)
#286
Wordle 578 4/6

⬜⬜🟩🟩⬜
🟩🟩🟩🟩⬜
🟩🟩🟩🟩⬜
🟩🟩🟩🟩🟩

 (roll)

Spoiler
SPARE
CHART
CHARM
CHARD
[close]
#287
Afaik you should also be able to use Overlay.CreateRoomTextual() instead of GUIs. They use room coordinates so should stay in place relative to the room when the camera moves.
To make them appear on top of everything else (except GUIs), set their ZOrder to the bottom Y coordinate after creating them.
#288
I don't really understand the question tbh, what's the difference between clearing it and erasing it?
And how does filling it remove it?
#289
You have
Code: ags
  if(onmega == 1) {
  gGB1.Visible=false;
  else //GETTING A PARSE ERROR HERE AT 'ELSE'
  gGB1.Visible=false;}
First of all, the proper syntax is
if (condition) statement/block
else statement/block


A block is multiple statements grouped together, it starts with a { and ends with a }. You've put "else" *inside* the first block instead of behind it.

Next, you're doing the same thing regardless of the outcome of the test. You probably meant to use "true" instead of "false" in one of the two lines.

Finally, setting a single variable to true or false based on the outcome of a conditional check doesn't require an if/else statement in the first place. You can simply do:

Code: ags
  gGB1.Visible = onmega != 1;
The right side will evaluate to true or false already, so you can directly use that to set the .Visible property.
#290
Your code works as expected for me. The value being 5 confirms my initial suspicion, you're left-clicking an inventory item, right? This is reflected by eMouseLeftInv.

(Only if custom inv click handling is activated in General Settings)
#291
Wordle 576 5/6

⬜⬜⬜🟨⬜
🟨🟩🟩⬜⬜
⬜🟩🟩⬜⬜
⬜🟩🟩🟩🟩
🟩🟩🟩🟩🟩

Spoiler
SPARE
CROWD
TROUT (stupid)
BROCK
FROCK
[close]
#292
Btw, you can slightly improve the code by 1) not using a minute variable 2) not hard-coding 40 FPS

Code: ags
int secs = 180; // 3 minutes

// room_Load
  SetTimer(1, GetGameSpeed()); // one second

// rep_ex_always
  if (IsTimerExpired(1)) {
    secs--;
    TimerText = String.Format("%d : %02d", secs / 60,  secs % 60); // force two digit seconds
    if (secs == 0) { ... }
    else SetTimer(1, GetGameSpeed()); // one second
  }
#293
Wordle 575 3/6

🟩⬜⬜🟩🟩
🟩🟩⬜🟩🟩
🟩🟩🟩🟩🟩

Spoiler
STARE
SPORE
SPIRE
[close]
#294
Exactly, an assignment statement like
Code: ags
  variable = value;
does not magically extend into the future; when this line is executed, the current value on the right is written into memory and that's it.
If the value changes, you also need to run the statement again or the variable simply keeps its old value.
#295
These overlays are not drawn bottom-up, they are created bottom-up. They exist in memory, and each frame they are sorted together with other entities, then drawn based on that sorting order.

If two overlays have the same z-order, their per-frame order is based on the cosmic rays hitting the earth and the energy flowing through ley lines in that precise quantum moment, which makes them flicker to the front and back.

Like CW has suggested, features which are supposed to appear directly on walls / tables should have a z-order offset by 1 vs. their base tile so they will consistently appear on top of them.
You basically need a stack for each tile, then add one to the z-order for each additional layer on that specific tile.
#296
The parts that disappear and reappear seem to be in the same spot as a bunch of background overlays; is it possible they have the same z-order value? As in, cannot be sorted reliably?
#297
This is a perfect use case for the .z property; use that instead. Unless that needs to happen in a blocking context, use the region's "walks onto" event to set .z to 10, and the "walks off" event to reset .z back to 0.
#298
Yeah, in case you animated the character beforehand, don't forget to unlock the view again.
Code: ags
  Isaac.UnlockView();
#299
To clarify, you're supposed to generate the keystore file if you don't already have one. This is what the "Generate keystore" button and that dialog are for. Once you have a keystore file, you can re-use if for all future Android projects, inside or outside of AGS.

I'm not sure why AGS would try and combine the path for the keystore file from two strings in the first place tbh, but you can workaround this if you create the keystore file outside AGS, then simply select it in the Android preferences pane.
#300
Pick any or create a folder, like D:\Projects\. Then select that folder using the browse button.
Finally, add "keystore.jks" to the path.
Like in the above example, it should eventually say this in the field:

D:\Projects\keystore.jks

The Android SDK will use this path to create a keystore file.
You can think of it like a "Save As..." path of a newly created file.
SMF spam blocked by CleanTalk