0

I cannot call method put of undefined AS3. Following is code that's causing the problem (I am using Smartfoxserver to run this server):

    var error = ""
    var nick = evt["nick"].split("~")[1]
    var pass = evt["pass"]
    var chan = evt["chan"]
    var userList = zone.getUserList()

            var sql = "SELECT * FROM meh_users WHERE Username='" + String(nick) + "' AND Password='" + String(pass) + "' LIMIT 1"       
    debug(">>Channel: " + chan);
    var queryRes = dbase.executeQuery(sql)

    if (queryRes != null)
    {
        for(var i = 0; i < queryRes.size(); i++)
        {

                          user = _server.getUserByChannel(chan)
                          uData.put("intLevel", queryRes.get(0).getItem("Level"))  
                          uData.put("CharID", queryRes.get(0).getItem("id"))
                          var access = parseInt(queryRes.get(0).getItem("Access"))

                if(access > 40) {
                    user.setAsModerator()
                }
                if(access > 60) {
                    user.setAsAdmin()
                } 
                uData = []
                initUserProperties(user)
        }
    }

    if (userList[nick] != pass)
    {
        error = "Authentication failed"
    }
    else
    {

        var obj = _server.loginUser(nick, pass, chan)

        if (obj.success == false)
            error = obj.error

    }

    // Send response to client
    var response = new Object()

    if (error == "")
    {
        response._cmd = "logOK"
    }
    else
    {
        response._cmd = "logKO"
        response.err = error
    }



    _server.sendResponse(response, -1, null, chan)

}
tshepang
  • 12,111
  • 21
  • 91
  • 136
Shrekt
  • 195
  • 1
  • 4
  • 15

1 Answers1

0

I presume uData is an Array as defined by the following code.

uData = [];

The Array class has no put() method. So this code will never work.

uData.put("intLevel", queryRes.get(0).getItem("Level"))

I think you copied and pasted the code in the wrong place.

BTW, your could would look better if you added a semicolon at the end of each statement ; and indented it correctly.

Pier
  • 10,298
  • 17
  • 67
  • 113