Nilom's Recent Forum Activity

  • dop2000 & WackyToaster

    You two are awesome! Setting the variables to static fixed the issue! I just had to add that the logged_in variable has to be set to 0 afterwards.

    It's also odd that it does work outside the function.

    I guess it is because I ordered the last two events (that got skipped) as sub-events of the event block containing the promise script. If I'm honest I didn't know about setting the variables to static. In that cases I just made other events sub-events to prevent resetting, lol. But seems like inside functions that does not work compared to outside of functions. But with that knowledge I will use static variables instead of sub-events in the future.

    Thank you both!

  • You are right. I will thoroughly debug later and give an update.

  • But I tested and it works the same regardless of whether it's inside a function or not.

    Does this mean that there is something wrong with how I ordered the events?

  • You can easily test this by replacing "Wait for previous action" with "Wait 1 second".

    That still returns 0. :-o

  • I would suggest adding Browser Log after "Wait for previous action" action to check the value of logged_in variable.

    I will test that tomorrow. But what's odd is that it is working outside of this function.

    Edit:

    Just tested it and it seems like that inside of the function the wait for previous actions to complete is ignored. But it is not ignored if I use the exact same event structure in the button directly.

    Javascript await + wait for previous actions will wait until the script is finished. But for some reason it will not do this in a function.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Hey there!

    For the last 5-6 hours I'm trying to solve my issue that I have.

    It is a bit frustrating that the documentation in the scripting section is assuming that a programmer is reading it and not someone who might just be learning it. There is a lack of examples.

    I try to get a JSON objects contents via script. I mean the Construct 3 event object JSON.

    How can this be done?

    My JSON object is called Language because it houses the localisation. I read this and tried everything.

    	runtime.objects.Language.getJsonDataCopy();
    
    	var lang = runtime.objects.Language;
    	var copy = lang.getJsonDataCopy();
    	console.log(copy);
    	return copy;
    
    	var lang = runtime.objects.Language;
    	var copy = getJsonDataCopy(lang);
    	console.log(copy);
    	return copy;
    

    No matter what I try I always get getJsonDataCopy() is not a function. Doesn't matter if I use a script in the event system or if I call a function from the imported scripts.

    Please, how can I read the JSON data that is stored in Language?

  • Hey there!

    I want to turn my login events into a function because I want to add multiple ways of signing in. For example by button click, by pressing enter etc. and I just want to use a single function for that.

    Here is what the perfectly fine working login events look like:

    So now if I turn that into that function:

    The whole red marked part at the end is skipped. Even though I checked via console that the local var signed_in is indeed set to 1. Or if I put in wrong login information to force an error message (from mongodb) then error_message != "" will be ignored too.

    This is how the login button event with the function looks like:

    Why is that? I even tried using function parameters instead of local variables. And tried setting it to asynchronous, with and without a wait for previous actions.

    In order to circumvent the part that is skipped I'm implementing the skipped part inside the javascript snippet. The login part works just fine. But for the error messages I'm confused as to how I can access the key-value-pairs of my JSON object within javascript.

    I tried a lot of variations of

    runtime.objects.Language.Get("error_messages." & error_message)

    runtime.objects.Language.getItem("error_messages." & error_message)

    runtime.objects.Language[2]

    runtime.objects.Language["error_messages." & error_message]

    runtime.objects.Language["error_messages." + error_message]

    runtime.objects.Language[String("error_messages." + error_message)]

    runtime.objects.Language[String("error_messages." + String(error_message))]

    etc...

    This is what the modified login script looks like

    Please help with either getting the functions last part not getting skipped or with the part how I can retrieve the JSON object from script event. Thank you! :)

  • Looks like there is no action to change listbox type.

    What you can try is the new templates feature

    It should work with the set attribute action. For the input object I can use set attribute and as the attribute I can put the string "Type" and then put "Password" as the value and it succesfully changes the input object to password type. It is inconsistent that this does not work with the list object. Or maybe it does but we don't know the true attribute names.

    Anyways, thanks for the template suggestion. It is indeed a good workaround. I will stick with that!

    Inside the game you can get its type.

    Thanks but I need to change the type.

  • Hello together!

    I like to use functions for objects that I create regularly.

    Now my problem is that I do not know how the List objects type attributes are called internally. "List box" and "Dropdown list" do both not work if I set the type to these.

    Although the List objects types are called "List box" and "Dropdown list" in the properties inside the editor these do not seem to be the right type names.

    I tried to somehow log the lists javascript object to see if there is the type shown.

    Unfortunately, no. Or I can't read them.

    Does anybody know Ashley how I can see the available object attributes for a given object?

    Thank you in advance!

    Edit:

    I want to add that with the Text input object modifying the type at runtime did indeed work. "Text", "Password", "Email", "Number" etc.

  • I just found the answer very well hidden in the mongodb forums. The second reply.

    Just copy the function to importsForEvents.js and call it from catch(err) and pass err to it.

  • Hey there!

    I use the Mongodb Realm Web SDK in my project. When the user inserts wrong login data and presses login there will be an error message in the chrome developer log.

    But how can I get the error code in my app?

    async function loginEmailPassword(email, password) {
     const credentials = Realm.Credentials.emailPassword(email, password);
     try {
     const user = await app.logIn(credentials);
     console.assert(user.id === app.currentUser.id)
     return user;
     } catch(err) {
     console.error("Failed to log in.", err);
     }
    }
    

    This is from the Mongodb documentation but it just won't log the error nor an error code. Nothing.

    I found this and one of the answers included this but I don't understand it.

    Please can someone with more programming knowledge than me explain to me how I can get the error codes from Realm so that I can tell the user why login didn't work?

    Thank you very much!

    Edit:

    I found out that the second of the error codes indeed is from the console.error command. Now I just need to extract the actual error message and code.

    How can I turn the built in tokenat(text, index, separator) function into an actual Javascript function for the importForEvents.js scripts?

    That's what I have so far:

    function tokenat(text, index, separator) {
    	var result = text.substring(text.indexOf(separator) + 1);
    	return result;
    }

    But I'm too dumb to implement the index part for the case if there are multiple separators.

  • Any ideas?

Nilom's avatar

Nilom

Member since 26 Dec, 2019

Twitter
Nilom has 1 followers

Trophy Case

  • 4-Year Club
  • Forum Contributor Made 100 posts in the forums
  • Regular Visitor Visited Construct.net 7 days in a row
  • RTFM Read the fabulous manual
  • x2
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

9/44
How to earn trophies