Hi,
What isn't working? ElectroServer would give you an error if you did something wrong.
Here is some code I used (before the game manager existed) to create a room, associate a plugin to it, and shove some users into it. It is not persistent but adding the setPersistent(true) call will make it persistent.
Code:
function newGame(gameTypeOb, userIds, gameProperties) {
var responseOb = new EsObject();
responseOb.setString("Action", "CreateGameResponse");
//importPackage(com.electrotank.electroserver4.extensions.api.value);
importPackage(java.util);
/*
* Create object that describes the room to be created
*/
var gameId = nextGameId();
var roomConfig = new RoomConfiguration();
roomConfig.setName("Game"+gameId.toString());
roomConfig.setCapacity(-1);
//Define the plugin
var plug = new ExtensionComponentConfiguration();
plug.getVariables().setEsObject("GameProperties", gameProperties);
plug.getVariables().setString("GameManagerExtensionName", "GameManager");
plug.getVariables().setString("GameManagerPluginName", "GameManager");
plug.getVariables().setString("GameId", gameId);
plug.getVariables().setString("GameType", gameTypeOb.gameType);
plug.getVariables().setString("PluginName", gameTypeOb.gameType);
plug.setExtensionName(gameTypeOb.extensionName);//Extension name
plug.setHandle(gameTypeOb.pluginName);//Defined name of the plugin in the extensions XML
plug.setName(gameTypeOb.gameType);//Instance name of plugin
roomConfig.addPlugin(plug);
/*
* Prep users to go into the room
*/
var users = new ArrayList();
for (var i=0;i<userIds.length;++i) {
var userConfig = new UserConfig();
//userConfig.setUserId(userIds[ i ]);
userConfig.setUserName(userIds[ i ]);
users.add(userConfig);
}
//
//var zoneId = 0;
//Attempt the room creation. Capture the response
var joinExistingZone = true;
var zoneName = gameTypeOb.pluginName;
var result = getApi().createRoomInNamedZone(zoneName, joinExistingZone, roomConfig, users);
//var result = getApi().createRoom(zoneId, roomConfig, users);
responseOb.setBoolean("IsSuccess", result.isSuccess());
if (!result.isSuccess()) {
trace("Failed to create room");
var errors = result.getErrors();
trace("Errors.length: "+errors.size());
var errorArr = new Array();
for (var i=0;i<errors.size();++i) {
var error = errors.get(i);
trace("Error: "+error);
errorArr.push(errors.get(i));
}
responseOb.setStringArray("Errors", errorArr);
} else {
responseOb.setString("GameId", gameId);
responseOb.setInteger("ZoneId", result.getZoneId());
responseOb.setInteger("RoomId", result.getRoomId());
}
sendToUser(userIds[0], responseOb);
}