Colonel Justice's Forum Posts

  • It's a common misconception using wait in function calls or within loops.

    https://www.construct.net/en/forum/construct-3/how-do-i-8/run-actions-sequentially-lots-144498?kws=wait

    You can try to add the system action "wait for previous action to complete" directly below the wait x action.

  • The manual link actually covers it pretty well.

    In order to manipulate the data in binary form, you first have to "tell" what value is inside the data, hence the expressions for setting and getting different types of data.

    I doubt that text manipulation will help here.

    If you read the file and convert it to UTF 8 text, then do your search and replace and save it back, it has already been read wrongly due to the text conversion, then you'll write the corrupted data back and the file is then broken.

    Also you mentioned "files such as JPGs and others", I assume you are referring to EXIF data of the image file.

    Maybe this will help on your journey: https://www.npmjs.com/package/node-exiftool

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • The shortest way may be to pass the room UID as function parameter.

    Then inside the function, select according the UID. This way you can access the object's variables inside the function without the need of passing it's variables as separate parameters.

  • Like plinkie said, at this point it might be the best if you share a sample c3p file and describe what you want to achieve, we then figure out the best way to do it.

    In short, there are objects of type array and dictionary that you can use, or a JSON string. But we need to understand your goal first.

  • The term array is a bit misleading since you are using a function string parameter.

    The variable has no derived methods that you can access, unlike objects, so variable.width doesn't work here.

    However, assuming you have a delimiter , e.g. "," you can access parts of the string and parse them.

    tokencount(arrToSpeak,",") will get you the count of elements

    Since in your case they go in pairs, the amount of "array" elements is tokencount(arrToSpeak,",")/2+1

    To access a certain element inside the string, you can use tokenat(arrToSpeak,index,","), so tokenat(arrToSpeak,0,",") will get you the first text, tokenat(arrToSpeak,1,",") will get you the first value in seconds, and so on.

  • Assuming I understood your request correctly, you want to shift paramater 0 to parameter 1 of a certain effect.

    Unfortunately, there is no native way to address the value of an effect parameter via expression.

    It became common practice for me to keep track of effect parameters with object variables. Same goes for object's colors.

    To shift parameters, you can use a local variable in the event sheet.

    So for example, you have a sprite and want to switch it's red and green color components.

    Create 3 variables on the sprite (all numbers):

    R

    G

    B

    Then, in the event sheet, try something like this:

    Every tick: Sprite: Set color to rgb(self.R,self.G,self.B)

    Every 1 seconds:

    Local variable "buffer"

    Set buffer to sprite.G

    Set sprite.G to sprite.R

    Set sprite.R to buffer

  • Assuming that sum_of_mean_differences is a numeric variable, can you try the following:

    Set sum_of_mean_differences to (float(Data_Array_1.At(Data_Array_1.Data_Entry_Point)) - Data_Array_1.Mean)^2

  • Each frame can have its own collision polygon.

    If you need different multiple shapes during runtime, the best workaround right now is to compose the shape out of multiple objects.

    To my knowledge there were two C2 plugins that could handle collision polygon changing during runtime, the polygon plugin and Box2D+ Maybe some portion of their functionality can be ported to C3.

  • You have an anchor behavior on the blocks.

    This causes the blocks to be positioned regarding the scroll.

    If you disable or remove the anchor behavior, it works.

  • That looks like a theme bug. I use the standard theme and it works just fine there.

  • Can you try to substitute the text objects with spritefonts and see if there is a difference in behavior?

    Looks like a canvas overlay type of thing.

  • You can use system expressions and check TextInput.Text for occurences.

    Let TextInput.Text be "cool guy :D"

    Option 1)

    find(Text,Find) will find you a string inside another string.

    So find(TextInput.Text,";") should return -1.

    Option 2)

    The system expression tokencount will return the number of tokens in a string

    tokencount(TextInput.Text,";") should return 0.

    Option 3)

    The system expression tokenat returns the Nth token from a string, hence -1 if no occurence.

    tokenat(TextInput.Text,";") should therefore return -1.

    If one of the methods matches its condition, clear Textinput

  • Can you share an example file?