dop2000's Forum Posts

  • Well, yes, if you have two nested For Each loops, then you can use "System evaluate expression". Because inside of these loops you already have a single instance of Cards and a single instance of CardFamily picked.

    Here's my code now and it seems to be working perfectly. Do you see any issues?

    It looks good to me!

  • Try adding "For each Cards" condition to that event.

    Also, why are you using UIDs as key names? UID is not a reliable identifier. If cards are created in runtime, their UIDs may be different every time the game or layout is restarted.

    If you are placing cards manually in the layout editor, their UIDs will stay the same until the card is destroyed. Still I suggest using an instance variable as a unique card ID.

  • Exact same way I did it for Cards.GetObjectType only that one didn't need to start with str()

    The code on your screenshot works fine for me.

    Are you using "Set key" or "Add key" action? Use "Add key", because "Set key" only works if the key already exists.

  • Yes, it's better. But you don't need to add turret targets on every tick. You can do it once on start of the layout.

    Also you can replace these two conditions

    with

    Army_Undead_R pick nearest to (Unit_Knight_L.x, Unit_Knight_L.y)
    
  • I tried implementing your suggestion as well as the approach shown in my screenshot, but I’m getting the same results either way.

    Maybe you haven't encountered the situation when your code would fail.

    ChatGPT gave you the right answer, but to the wrong question :)

    I made a demo which should explain my point:

    dropbox.com/scl/fi/9smxavmssevbkoaf9vx41/CardPicking.c3p

    By the way, I tried asking Grok and ChatGPT the same tricky questions about C3 and Grok appears to be smarter.

  • When I killed the enemy, I deactivated the enemy movement group

    This is not a good idea, it will only work if you have a single enemy. With multiple enemies disabling the event group will disable it for all enemies.

  • a very large image offset can start to exhibit rendering glitches

    From what I can see, the offset is not that large. 1 pixel per tick, at 60 fps for 120 seconds = only ~7200 px

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • It's actually a known issue with the TiledBackground:

    github.com/Scirra/Construct-bugs/issues/7763

  • BTW, can I also somehow make inventory contents persist between layouts?

    At the moment your inventory is basically stored in ui_inventory_slot sprites.

    One option is to make this sprite global. It will then migrate to other layouts. Just make sure that other layouts have the same layer and that you are not making duplicates of inventory slots - it's a very common problem. Use the debugger (Shift+F4) to check the number of instances.

    A better solution is to store the inventory in some data object - an array, dictionary, or JSON. Then you can rebuild the inventory at the start of every layout. And also you will be able to store it in Local Storage between sessions.

  • It should be 30 fps because I set max delta-time is 1/30. Maybe I misinterpreted it.

    No, that action doesn't limit the fps. I suggest removing it.

  • Here's how you can fix and optimize your code:

  • You definitely need to use dt, not to fix this issue, but to make sure your game runs correctly on different framerates.

    Does this problem happen on PC, in preview? You probably have to wait longer than 2 minutes.

    Does it still happen if you touch the mobile screen from time to time? Perhaps the phone detects no user activity and lowers the framerate or enters some kind of battery-saving mode.

    There could also be a problem with offsetting the image in tiledbackground too far. Try this:

    TiledBackground: Set image X offset to (Self.ImageOffsetX-60×dt)%Self.ImageWidth

  • You need to use the Websocket plugin. Have you tried sending the data with "Websocket send text" action?

  • You need to provide more information. Is this is a top-down view game? Should enemies move on a grid, from cell to cell? Or just find path to a random spot in the dungeon and move there?

  • I have a template for this request saved as a JSON project file:

    It doesn't have to be a file, you can simply store this JSON string in a text variable. Then to replace session ID use:

    Set jsonString to replace(jsonString, "YOUR_SESSION_ID", extractedSessionID)

    Another option is to load (parse) it into JSON object and use this action:

    JSON Set value at "transport.session_id" to extractedSessionID

    Then how do I format this so that I can use it in the data parameter of the AJAX request?

    This should be in Twitch documentation I suppose. If you are using JSON object, you can convert it back to string with JSON.ToCompactString expression.