dop2000's Forum Posts

  • You need to request the file with AJAX and load it into the array first. See events 2-3 in this example:

    https://editor.construct.net/#open=languages-from-json
    

    I suggest studying some lessons and tutorials. There are also plenty of built-in examples in Constuct editor.

  • I would probably use an array or JSON:

    {
     "chat_Jamie": [
     { "sender": "User", "message": "Hey, did you finish the show last night?", "status": "delivered" },
     { "sender": "Jamie", "message": "Yeah, I stayed up way too late for it. Totally worth it, though.", "status": "delivered" },
     { "sender": "User", "message": "Right? That twist at the end?! I didn’t see it coming.", "status": "delivered" },
     { "sender": "Jamie", "message": "Same! I had to pause just to process it. Like, WHAT?", "status": "delivered" },
     { "sender": "User", "message": "I was yelling at my screen. My neighbors probably think I’m nuts.", "status": "delivered" },
     { "sender": "Jamie", "message": "Honestly, they’re probably used to it by now.", "status": "delivered" },
     { "sender": "User", "message": "Wow, okay, rude.", "status": "delivered" },
     { "sender": "Jamie", "message": "😂 You set yourself up for that one.", "status": "" },
     { "sender": "User", "message": "Fair. So... binge the next season this weekend?", "status": "" },
     { "sender": "Jamie", "message": "Obviously. Snacks are on you, though.", "status": "" }
     ]
    }
    

    (Example generated by chatGPT)

    Multiple chats could be stored as sheets within one array, or as multiple array/JSON files.

    When the player enters a chat, immediately display all messages with "delivered" status. Then allow the player to send their next unsent message, wait a few seconds, display the response, mark both new messages as delivered in the array.

  • You can make the parts of snake body invisible. And move visible sprites to their position with lerp.

  • The "stretch" effect with Pin behavior is not intentional, it's basically a bug. Check out my comments in this post:

    construct.net/en/forum/construct-3/general-discussion-7/pinning-issues-147318

  • Use an instance variable ID on the sprite. Say, if there are 10 instances, set the values in this variable from 1 to 10.

    And add a global variable CurrentNumber=1

    When a sprite is clicked, check if its ID=CurrentNumber. Add 1 to CurrentNumber if true.

  • The way you do this in C2 is not much different from C3. Use LineOfSight, Pathfinding and Timer behaviors. On Timer event change the entity state. Use LineOfSight to check if the player is in sight. If not - pick a random item in range and find path to it.

    An example of logic:

    Initially the entity is in "idle" state.
    
    On "idle" timer: 
     -> Check if the player is in LOS. If true, find path to it, set state to "chase"
     -> Else : Pick a random item, find path to it, set state to "patrol"
    
    On Path found : move along path
    
    On Failed to find Path : set state to "idle" and start "idle" timer
    
    On Pathfinder arrive and state="patrol" : set state to "idle" and start "idle" timer
    
    If state="chase"
    Every 1 second : 
     -> Check if the player is in the attack range. If true, then stop and attack
     -> Else: check if the player is in chasing range. If true, find new path to the player
     -> Else: set state to "idle" and start "idle" timer
    
    If state="patrol"
    Every 1 second :
     -> Check if the item still exists. If not - set state to "idle" and start "idle" timer
    
    
  • Pigpud Wow, very impressive and the art is so nice!

    Why itch.io though? I think with the right publisher this can be a successful game!

  • Try renaming the audio files with these special characters (ä, ö, ü, ß). Say, h_o_ren instead of hören.

    Set word to replace(word, "ö", "_o_")
    Set word to replace(word, "ä", "_a_")
    ...
    AJAX request word & ".wav"
    
  • Say, if 5 enemies were killed at once, the condition "enemy hitpoints<=0" will pick 5 enemy instances. But Enemy.rewardGold expression inside this event will only apply to the first instance among those 5.

    So yes, in this event you need to add "For each enemy". This will process all 5 enemies, one instance at a time, adding their rewardGold to the global variable.

    By the way, this event #40 will run on every tick, which is not good for game logic and performance. I suggest making a function EnemyDeath and calling it when damage is dealt to enemies.

  • My guess is that the same Z key press triggers all 3 events, so it starts and immediately finishes the dialogue.

    Try inserting "Wait 0 seconds" action before "Call dialogue".

  • The image inside the sprite/tilemap (in the animation editor) should not exceed 4096 pixels. You can stretch or copy the object on the layout, it won't matter. What's important is the texture size. On older mobile phones your game won't work if it's over 4096 px.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Yes! Once you understand picking, programming in Construct becomes a breeze!

  • You are not storing anything in the array, you are basically only using it to count from 0 to 5. You can do the same with two nested "for" loops:

    For "x" from 0 to 5
    For "y" from 0 to 5
    .. Create maptile at (loopindex("x")*maptile.Width)+100, loopindex("y")*maptile.Width)+100)
    

    Or simply place all maptiles manually in the editor and iterate them with "System for each" loop.

  • A tilemap is generally better. But your tiles are huge, which means that with 5 tiles the full image will be pretty big (2048x3072px). According to Ashley, it's not recommended to exceed 4096 pixels in either dimension in a single texture.

    So don't add more than 6-8 tiles to the tilemap. Or better yet - compose the backround from smaller images.

  • "Enemy On Collision with Mine" event picks one enemy instance. You can't pick other instances in the same event, unless you use "System Pick All" condition.

    For example:

    Enemy On Collision with Mine 
     System Pick All Enemy
     Mine has LOS to Enemy -> Deal damage to all enemies in range
    

    Another option is to call a function, which will pick the enemies in mine range:

    Enemy On Collision with Mine -> Call MineDealDamageToEnemies(Mine.UID)