dop2000's Forum Posts

  • Moonstone Island is now available on Steam!

    Subscribe to Construct videos now
  • I don't know. "Pick all children" condition will definitely be useful. But it may not be feasible in Construct, because normally you need to specify particular objects/families for picking.

  • Well, there are no other options. With a family you can optimize some of the code. For example, if you want to rotate only limbs, you can add an instance variable to the family and after picking all family children, pick all limbs among them.

    Body Pick all FamilyParts
    FamilyParts type="limb"
    .. FamilyParts rotate
    
  • If you pick family instances in a condition, you are supposed to use the same family in all actions and sub-events.

    Body Pick all FamilyParts
    .. FamilyParts rotate
    

    Here the LeftHand instances are not picked, so all LeftHands on the layout will rotate:

    Body Pick all FamilyParts
    .. LeftHand rotate
    
  • I believe what you are looking for is families. You can add all body parts to a family and use "Body pick all BodyPartsFamily".

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You can import CSV files into the project, there are addons that can convert them to C3 array. You will need to re-import the file every time it's changed though. Or save your project as a folder, then you can open/save CSV file directly in project folder.

    Another option is to simply copy/paste data from Excel into C3 array editor. This may be the easiest solution.

  • The more effort you take to do things to obscure it the longer it would take someone to figure it out.

    Yeah, but still any half-experienced hacker would probably spend considerably less time breaking the encryption system than I spend developing it.

    So.. it's not worth it.

  • You can store not the key itself, but the hash of the key. Then the attacker will have to brute force the key.

    I need to encrypt/decrypt game saves. How do I do this without the encryption key?

  • I understand that when encryption key is stored in the game, it's not really possible to protect it from hackers. I'd like at least to obfuscate it, make the task of finding it a bit more difficult.

    I can obviously break the key into multiple parts, store them in separate variables, do some string manipulations - replace characters etc. But I assume this won't make much difference. Are there better methods?

    Tagged:

  • I still need to run "trigger once" or it wont work

    It's ok to use it with global variables. Just never use it inside of loops, triggers and with objects that have multiple instances. For example, this code is wrong and will often work incorrectly:

    Enemy health=0
    Trigger once
    ... Enemy play "death" animation
    
  • Functions.Dialogue("text here")

  • The only other thing I can think of is that the Inspector is struggling with all the variables added by the event sheets even though none of them are running/changing/updating.

    You may be on the right track, although I tried making a blank project with thousands of global variables and couldn't reproduce it. Can you try this?

    There was a bug report about a very similar issue - on layouts with many layers the System tab in Debug Mode was updating very slowly causing severe lags. Maybe it's something similar, but specific to your machine or your project.

    Check out all comments:

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

    construct.net/en/forum/construct-3/general-discussion-7/debug-view-extremely-slow-171386

  • Use "Compare tile at" condition, or Tilemap.TileAt() expression.

    -1 means an empty tile.

  • Remove "Trigger once" condition from all events and never use it with objects that have multiple instances! When used incorrectly this condition will cause nothing but bugs.

    Use Timer behavior to schedule enemy movement. But it's better to run it on some object with only one instance, for example on the Player sprite. So your code can be something like this:

    // on start of enemy turn
    Player start Timer "enemy_move" for 1s once
    
    
    Player on Timer "enemy_move"
    
     // picking the next enemy which hasn't moved
     Enemy compare variable HasMoved=false
     Enemy pick instance with the lowest TurnOrder 
     --> Move this enemy
     --> Enemy set HasMoved to true
     --> Player start Timer "enemy_move" for 1s once
    
     Else 
     // all enemies has moved - end enemy turn
    

    So the timer will be repeated for every enemy until all of them move.

  • Have you tried Firefox? It's the only browser not based on Chromium, so it's unlikely to have this issue.

    I understand you've tried removing all event sheets, did you also remove all scripts?

    Instead of removing all event sheets, try creating a blank layout with no event sheet attached.

    It may be a big job, but as an experiment you can also copy all your layouts to a blank project and see if it still happens there. Maybe the problem is caused by something like a corrupted font or audio file.