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

#381
Hmm... It seems like it's not copying (hard linking) the *.001 file. ??? For now, you can just copy this from the Compiled folder to Compiled/Windows. I'm on it. :-\
#382
Didn't realize there was an existing issue for it. My bad. ;) But I'm glad to try and help sort it out.
#383
Another problem: 3.4.0.2 doesn't run on Android either (3.3.2 does). I'm looking into what's causing it, but there's no error message given.
#384
Some notes about my attempts to build the latest version:

* NDK Revision 10c removed several functions that the AGSLua plugin relies on (specifically it is mentioning "__srget", but this relies on several other removed functions).
* The master branch (sans AGSLua plugin) builds and runs correctly.
* The develop-3.4.0 branch (AGS 3.4.0.2) (sans AGSLua) builds but hangs with a loading screen before silently crashing...

Looking into it!
#385
Just a note, but this also includes a bug fix for the crash when running the setup if the "Compiled" folder didn't exist (not sure when this showed up, but it's fixed now).

Also, yay! :-D
#386
Sorry this took me a bit longer than I thought it would, but here you go. Again, this is just the contents of the "data" folder produced by running the make_ags+libraries.sh script, and should be extracted to AGSEditor/Linux. This is based on the latest commit to develop-3.4.0.
#387
Yes, it's just the folders/files that the make_ags+libraries.sh script produces (copy the data folder, sans any game files). I can do a fresh build this afternoon if needed.
#388
Just saw that my pull request for building Linux got approved. :-D

Is there any specific timeframe as to when the next alpha/beta version is expected? I know there's been some pretty significant changes since 3.4.0.1, so it would be good to have an "official" build for people to test out these new features. ;-D
#389
I'm downloading the latest NDK right now and then I'll do a build of the current master branch.
#390
Beginners' Technical Questions / Re: Tiredness
Mon 10/11/2014 22:02:55
I've added some comments throughout your code, and I think that the problem doesn't really lie in the built-in timers, but your own logic. If the player is running and moving, you increase their "tiredness" until they stop moving for at least 1 second. But then, unless their tiredness was at least 60, you're completely resetting their tiredness all at once, in a single game loop. There isn't even a single frame in-between for you to update graphics, because it happens all at once. Note that if you want to create a blocking interaction for recovery, then you could call Wait(1) inside of your while loop, but that would be a terrible idea, because then the player would lose control of the game to a blocking event. Instead, you should strip out the while loop altogether, and extend the scope of the time_recover variable to the entire script (e.g., place it at the top of the script with your other variables). Then you can check and/or update it appropriately in the same way you're updating your other variables. You shouldn't need to use SetTimer at all (even though you haven't shown any code where you actually called it anyway).

Code: ags
bool ModeWalk, ModeRun;
int tiredness, time = -1; // time that detain the player is not moving
 
function Update_Runtoolbar()
{
  if (ModeRun && player.Moving) // running
  {
    tiredness += 1;
    if (tiredness >= 30 && gRunToolbar.BackgroundGraphic == 56) gRunGraphic.BackgroundGraphic = 57; // start growing
    // etc etc
  }
  else // !ModeRun || !player.Moving
  {
    if (!player.Moving && tiredness >= 10) // should mean that he was running before...
    {
      time += 1;
      if (time >= 40) // presumably this is called once per game loop, default 40 loops per second, this will happen after 1 second of player not moving while being tired
      {
        int time_recover = 0; 
        while (time_recover <= 30) // this is a tight loop, should run in under 1 game loop
        {
          time_recover ++; // start recover energy
          // here is the problem, too much quickly change graphic. 
          // i tried lately here to put a SetTimer... but with no lucky at all
          // note that the check occurs 30 times, but within a single game loop
          // also note that there is no SetTimer call in this code snippet
          if (gRunToolbar.BackgroundGraphic == 57 && IsTimerExpired(1)) // i though a timer was the ideal here
          // but doesn't work...
            { gRunToolbar.BackgroundGraphic = 56; } // go back the graphic for recover
          // etc etc
          tiredness -= 1; // tiredness is always decreased by 31 each game loop (0..30, inclusive)
        }
        // note that unless tiredness was at least 60, this will always be true
        if (tiredness < 29) time = 0; // note lack of braces means that only resetting the time variable depends on tiredness variable
        // note that resetting the local variable time_recover is redundant -- it only exists within this scope which is ending
        time_recover = 0; // send everything to back
        // also note that tiredness is not reset; if player's tiredness was only 10, they may actually gain an energy boost just by stopping for 1 second
      }
    } 
  }
}
#391
:~( Okay, in that case I'm increasingly convinced that it's either something to do with the audio or the OpenGL graphics driver. :-X
#392
AFAIK there hasn't been any changes to the maximum label length, though I think CW was planning to remove that as part of removing various arbitrary limits. Is there a particular reason you need a single label to hold more than that, though? You might be able to work around it in the meantime.
#393
There's a build from April that I uploaded. Probably high time I do another build -- this was around the time I got preoccupied with adding build targets to the editor. I'm looking into the possibility of building standalone APKs from the editor as well, too, but that's several months away at least to be honest.
#394
Where is this code at in the room script? I was thinking maybe this was in rep_ex, but now that I'm looking again I realize that probably wouldn't make sense. But to clarify, the AudioChannel.PlayingClip is being updated for the channel your pointer is pointing to, yet you don't hear any sound if the channel is stopped before playing that sound?

Strange. I'd investigate the other properties, particularly Volume, IsPlaying, and PositionMs. :-\
#395
I'm not sure, but I do know that all the instances of AudioChannel are actually static, even if nothing is playing. It could be reusing the same channel and then since it's technically the same object your other code is stopping the wrong AudioClip.

Couple of things to try:

* Set the aChannelPhoneRing AudioChannel* to null when you're done using it (e.g., after calling Stop).
* Check that the PlayingClip is the one you're expecting.

You could also try changing the audio types and priorities, but that's probably overkill for what you need.
#396
I believe that doing something like:

Code: ags
function game_start()
{
  Game.SetSaveGameDirectory("$MYDOCS$/YourGameName");
}


Should be sufficient for the save files, but IIRC the File operations all work exclusively on the game installation directory and don't support the $MYDOCS$ or $SAVEGAMEDIR$ tags, but yet disallow any paths that are not subdirectories. I'm not sure if any of the currently exposed methods would allow you to get a full path, but if you could get a full path to the $MYDOCS$ directory then you could try and parse the current user and store that in a .dat file in the game installation directory.
#397
Hmm... Then why JuaniT get the null reference error? ??? :-\
#398
There should be an array index out of bounds error before any null reference error crops up. Probably worth looking into so that a more meaningful error is presented. Since this is a user-defined struct type on 3.3.0 then it's safe to assume that you're working with a static array. Working from the inside out this should be retrieving the item from the array first, accessing its "name" property second, sending that String to GetTranslation next, and then storing the result in lblName.Text... There's no reason it shouldn't be able to detect the invalid index before parsing any pointers (e.g., the String).
#399
While there are plans to eventually get the editor (design-time IDE) fully compatible with Mono for cross-platform compatibility, that's still a fair way off (because there is still some extensive use of native, non-managed C++ code that doesn't play nicely with Mono). There are some reports of successfully running the editor on Linux using Wine, but it's experimental and unsupported at best.

As for the engine (run-time, which actually executes and plays your game), there is a fairly stable port for Linux, though there have been some recent reports of issues. Your mileage may vary, but the more confirmed reports we get of the same problem the higher a priority it will become, and the easier it should become to diagnose and track down.

If you're interested in trying out AGS for Linux, I've just released a custom version of the editor that allows targeting Linux. Keep in mind the editor is currently designed for Windows-only design-time, but this produces the necessary run-time files to play your game on Linux (in the Compiled/Linux folder when you build your game (from the editor), you can run the executable script (from Linux) with your game's name).
#400
Sorry about the confusing name, I'm kind of tired ATM... Keep telling myself, "just finish this thing and go to bed" (roll)

To be clear this is built with the latest changes in develop-3.4.0 branch as of this writing, so this is post-3.4.0.1 (post-alpha 2), but there is no alpha 3 build yet so this is considered pre-alpha 3 (pre-3.4.0.2).

I also went ahead and put in the pull request. Looking over it, I see how messy things got when I kept pulling in upstream branches (which CW mentioned to me), but that is what it is. Lesson learned for the future.
SMF spam blocked by CleanTalk