onRoomListUpdate does not send vars!

Need help with SmartFoxServer? You didn't find an answer in our documentation? Please, post your questions here!

Moderators: Lapo, Bax

proschigom
Posts: 32
Joined: 09 Feb 2006, 12:12

Postby proschigom » 13 May 2006, 21:37

i have been having the same problem from a very long time and have spent days n days over this. in my case, i can see my room variable (its just one variable) from the admin, when someone creates the room, i even recieve the variable in the xml like this:

Code: Select all

[Received]: <msg t="sys"><body action="roomAdd" r="0"><rm id="9" priv="0" temp="1" game="1" max="8" spec="1"><name>TESTING</name><vars><var n="minbet" t="n">1</var></vars></rm></body></msg>


but when i try to use: var xMinBet = room.getVariable("minbet"); at roomAdded or updateRoomStatus, it returns undefined all the time. Now this variable was assigned when the room was created, through the roomObj.vars = variables

I do remember once in another case, that i set the room variable after joining that room, i think i recieved the value in that scenario (i think)

So how have i been able to go ahead with this problem? .... im using the maxSpectator property instead, the value is aaaalways available and much more reliable, but absolutely not a permanant solution. Any help from anyone in this area would be awsome
alikapadia
Posts: 5
Joined: 15 May 2006, 18:14

Postby alikapadia » 15 May 2006, 21:17

ya there was a problem in the SmartfoxClient class in the it folder,

search for: 'if (action == "roomAdd")' over there was a line that said:

var variables = xmlObj.vars.vars

just changed that to 'var variables = xmlObj.rm.vars.vars'

rest works like a beauty

im not sure where this problem came from tho
User avatar
Lapo
Site Admin
Posts: 23008
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 16 May 2006, 06:46

Sorry for the delay in responding, but I wanted to check the problem described by proschigom.

It seems that you're using a wrong version of the client API, as we were unable to reproduce the problem you told us about.

NOTE: I assume you're using the latest SmartFoxServer 1.4.0 (Basic or PRO)

To make sure you're using the latest API, just use this code:

Code: Select all

trace(sfs.getVersion())

It should say 1.0.2
If not you're using an old API version.

I've tested the problem you described by simply modifying the "Advanced Chat" example so that it creates a new room variable in each new room created.
Then I've added a trace in the onRoomAdded handler to dump all the room variables attached to the new room just received.

If you want I can provide the FLA of the test.

Hope it helps :)
Lapo
--
gotoAndPlay()
...addicted to flash games
User avatar
Lapo
Site Admin
Posts: 23008
Joined: 21 Mar 2005, 09:50
Location: Italy

to alikapadia

Postby Lapo » 16 May 2006, 06:48

to alikapadia:

ya there was a problem in the SmartfoxClient class in the it folder,
search for: 'if (action == "roomAdd")' over there was a line that said:
var variables = xmlObj.vars.vars
just changed that to 'var variables = xmlObj.rm.vars.vars'
rest works like a beauty


The problem doesn't exist in the latest API coming with SmartFoxServer 1.4.0. Are you sure you're using the latestet API?

You can check the version by using the example I provided in my previous post to proschigom

:)
Lapo

--

gotoAndPlay()

...addicted to flash games
monkeypuzzle
Posts: 2
Joined: 16 May 2006, 10:23

Postby monkeypuzzle » 16 May 2006, 10:33

Hi,

I'm having exactly the same problem too. I'm using SmartfoxServer 1.4.0 Basic, I used the getVersion to check the API and it says 1.0.2 and I've added the roomListVars="true" to the config.

I'm setting a variable when the room is created, this variable shows up in the Admin tool and is visible in the "onRoomAdded" handler, but the variable doesn't appear in the "onRoomListUpdate" handler - checking the output window when Flash is running shows that no variables are being sent.

Edit-I should probably let you know that I'm using the AS1 version in Flash MX.
monkeypuzzle
Posts: 2
Joined: 16 May 2006, 10:23

Postby monkeypuzzle » 16 May 2006, 11:41

I've solved my own problem and just in case other people are having the same problem, I'll let you know what I did wrong.

When editing the config file, I added the roomListVars="true" to the ROOM, when of course it should be added to the ZONE. Now everything works fine.
User avatar
Carl
Posts: 36
Joined: 22 Dec 2006, 20:40
Location: New York
Contact:

I have the same problem.

Postby Carl » 26 Dec 2006, 16:09

1. I'm setting some variables in my config file.

2. I made turned automatic variables on for the zone:

<Zone name="simpleChat" uCountUpdate="true" buddyList="20" maxUsers="50" customLogin="false" roomListVars="true">


3. With Smartfox debugger turned on, I can see my variables in the tracer window.

4. But with the smartfox.onRoomListUpdate handler, I can't see the variables; they all come in blank.

5. In the smartfox.onJoinRoom handler I can see the variables for the one room that i've joined, but I need to see th evariables for all the rooms.


I think this isn't working correctly. I'm on 1.5 pro demo.

thanks for any insights!

-Carl
User avatar
Lapo
Site Admin
Posts: 23008
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 26 Dec 2006, 17:00

Here's a working example, based on SFS PRO 1.5

1 - Zone definition

Code: Select all

<Zone name="simpleChat" uCountUpdate="true" buddyList="20" maxUsers="4000" customLogin="false" roomListVars="true">
   <Rooms>
      <Room name="The Hall" maxUsers="50" isPrivate="false" isTemp="false" autoJoin="true" uCountUpdate="true">
         <Vars>
            <Var name="name" type="s" private="false">Animal</Var>
            <Var name="job" type="s" private="false">Muppets drummer</Var>
         </Vars>
      </Room>      
   </Rooms>
</Zone>


2- Code
Create a new Flash 8 document, and copy/paste the following code in the first frame. If necessary point your classpath to the API folder and then run the example.

Code: Select all

import it.gotoandplay.smartfoxserver.*

stop()

var ip:String      = "127.0.0.1"
var port:Number    = 9339
var zone:String    = "simpleChat"

// Load the policy file from the server
System.security.loadPolicyFile("xmlsocket://" + ip + ":" + port)

var smartfox:SmartFoxClient = new SmartFoxClient()
smartfox.onConnection = handleConnection
smartfox.connect(ip, port)
//smartfox.debug = true

function handleConnection(success)
{
        if (success)
        {
                trace(">> Connection successfull")
                sendLogin()
        }
        else
        {
                trace("[ ERROR ]: Can't connect!")
        }
}


function sendLogin()
{
        smartfox.login(zone, "")
}


smartfox.onLogin = function(resObj:Object)
{
        if (resObj.success)
        {
                // Login Successfull
                trace(">> Login successfull. Nickname: " + resObj.name)
        }
        else
        {
                trace("[ ERROR ]: Login error. Server said: " + resObj.error)
        }
}


smartfox.onRoomListUpdate = function(roomList:Object)
{
        trace(">> Received the list of rooms\n")
        trace("\tRoom List:")
        trace("\t--------------------------------------------")
       
        // Show the list of rooms
        for (var i in roomList)
        {
         var r:Room = roomList[i]
         trace("\t" + r.getName())
         
         var o = r.getVariables()
         
         for (var j:String in o)
            trace("\t\t" + j + ": " + o[j])
        }
       
        // a blank line
        trace("")
       
        // Join the default room
        this.autoJoin()
}


smartfox.onJoinRoom = function(roomObj:Room)
{
        trace(">> Room: '" + roomObj.getName() + "' joined successfully")
}


smartfox.onJoinRoomError = function(errorMsg)
{
        trace("[ ERROR ]: Error joining the room. Server said: " + errorMsg)
}


smartfox.onConnectionLost = function()
{
        trace("[ ERROR ]: Connection with server was lost")
}


3- Example output
The above code is taken from the provided AS 2 template, found in our documentation. It will connect to the server, receive the list of rooms and dump the room variables and finally join a room.

Here's my output in the Flash output window:

>> Connection successfull
>> Login successfull. Nickname: guest_12
SET RVAR --> job
SET RVAR --> name
>> Received the list of rooms

Room List:
--------------------------------------------
The Hall
name: Animal
job: Muppets drummer

>> Room: 'The Hall' joined successfully


The test was done using a freshly installed SFS PRO 1.5
As you can see the variables for "The Hall" room are correctly shown in the trace.

Good luck
Lapo

--

gotoAndPlay()

...addicted to flash games
User avatar
Carl
Posts: 36
Joined: 22 Dec 2006, 20:40
Location: New York
Contact:

Thanks! .....And a question

Postby Carl » 27 Dec 2006, 19:13

Thanks for the detailed example. I was able to break off a function that returned my variables properly. It's great that it works, but I'm not completely sure WHY it works, or rather why what I was trying gave me no results at all. I'm sure it's because I havn't worked with objects much, but I cant' understand why when I do this:



var Lvars = Lroom.getVariables("GameType");
trace ("variables..."+ Lvars)


....I get an empty string as a result:

variables...

But when I go on to do this, as you showed me:


var Ltype = ExtractObject(Lvars);
trace (Ltype)

and....

ExtractObject = function (obj:Object) {
for (var i in obj) {
return (obj[i]);
}
};

I get a result? This is what was throwing me off, because when I see that "Lvars" variable is essentially empty or blank, I wouldn't have expected to be able to extract any information out of it. At the very least I would have expected the cryptic and uninformative "[object, object]" that I normally get when trying to directly trace an incoming object. I made a "traceobject()" function for opening these things up into the output window, but in this case I didn't think I had anything to extract.

Sorry for my ignorance of these things, but any help is appreciated from anyone in understanding this stuff. I'm next searching up on objects on kirupa.
Carl Lydon
Illustrator, animator, programmer
----------------------------------------
www.gametrust.com
www.chamberofchat.com

Return to “SmartFoxServer 1.x Discussions and Help”

Who is online

Users browsing this forum: No registered users and 55 guests