dop2000's Forum Posts

  • Please post your capx or at least a screeshot of your events.

  • I didn't notice the attached file, sorry.

  • The Function_Advanced is fully compatible, just not available.

    It's a very simple plugin, yet a masterpiece.

    [...]

    If it were, we could have done it on Construct 2 long ago.

    What are you talking about? What function_advanced, what plugin?

    Does a plugin that allows calling functions from another event sheet already exist in C2?

  • I know they look and sound scary - AJAX, JSON, ARRAYS, OMG!! - but they are really not!

    Just start using them and you'll see. Download a few examples from the tutorials section, try changing some bits. You only need two or three lines of code to load something with AJAX, you don't even have to understand how it works, just copy them from someone else's project.

    Same with JSON - all you need is Array.AsJSON expression to convert array to string, and "Array load from JSON" to convert it back. Two lines of code! Again, you don't need to know anything about JSON, its format, structure etc.

    .

    You can save individual variables to Local Storage if you wish. But to save/load 20 variables you will need like 60 events!

    To save/load an array or dictionary with the same 20 values, you will only need 3 events. See what I mean?

  • This could happen on some keyboards if you press 3 or more keys at once.

    If this is not the case, then there is probably something wrong with your code, please share your project file.

  • I still think you are wrong.

    You are basically asking to implement a hack.

    I can see how this feature can be useful in some projects, but I also see how many people (especially beginners) will abuse it and this will result in very poor code organization, and could potentially cause more harm than good.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • There is a number of expressions you can use to convert from layout coordinates to tilemap x,y:

    PositionToTileX(x)

    PositionToTileY(y)

    Convert an X or Y layout co-ordinate in to the corresponding tile number in the tilemap. For example, this can be used to get the tile position under the mouse.

    SnapX(x)

    SnapY(y)

    Snap an X or Y layout co-ordinate to the nearest tile. This also returns a layout co-ordinate, but aligned to the nearest tile in the tilemap.

    TileAt(x, y)

    Return the tile ID at a position in the tilemap. Note the position is given in tiles, not layout co-ordinates. If the tile at the given position is empty (has been erased), the expression returns -1.

    TileToPositionX(x)

    TileToPositionY(y)

    Convert a tile position to layout co-ordinates. For example, this can be used to position a Sprite object on top of a given tile.

    .

    So you can get tile number that player is on using this formula:

    tilesMap.TileAt(tilesMap.PositionToTileX(player.X), tilesMap.PositionToTileY(player.Y))

    You can check 4 points at some offset from the player to prevent it from stepping into water etc.

    .

    Creating a separate invisible solid tilemap for collision detection is actually a very good and popular solution. It will not make your project file any larger, because you only need one tile (just a black square).

    You can auto-generate this collision tilemap based on tiles on your main tilemap. Just loop through all x,y tiles on your main tilemap and set or erase corresponding tiles on the collision tilemap.

    When your player is in "walking" mode, erase entire collision tilemap and then set tiles with water, trees, mountains etc. When your player is in "boat" mode, set tiles for the entire collision tilemap, and then erase water tiles.

  • Oh, I see it now, thanks!

  • Could be anything - collisions disabled, event not getting executed (because it's part of some other triggered event for example), or maybe there are other events that override or stop playback of this audio.

    Could you share your project file?

  • Save slots are for saving the entire game. In your case you need to use Local Storage.

    When a new item is unlocked, add its code (or ID or name) to an array (or dictionary) "UnlockedItems", and save it to local storage.

    On start of the game, retrieve this array from local storage.

    .

    Here is a demo I made for some other post:

    dropbox.com/s/1cz1k5x3teikbv5/DictionaryLocalStorage.capx

  • Lancifer I still see "0 comments" in my profile, and there is no "Posts" link anywhere..

  • Have you read this tutorial?

    scirra.com/tutorials/73/supporting-multiple-screen-sizes

    Also, try changing "Unbounded scrolling" in layout properties.

  • Using "Wait" like this is a bad idea. Timer is a much better option, but you still need to keep pending achievement IDs somewhere.

    .

    You can try a different approach - create an array or dictionary named PendingAchievements.

    When a new achievement is unlocked, add it to this array.

    Every 1 second or so check this array, if it's not empty and AchDisplay=false, display first achievement from the array and remove it.

  • Thank you, I would be honored!

    If you need my real name, there is a facebook link in my profile :)

  • Hey, no problem! :)