Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.09.2014, 17:56
borisenki вне форума Посмотреть профиль Отправить личное сообщение для borisenki Найти все сообщения от borisenki
  № 1  
Ответить с цитированием
borisenki

Регистрация: Feb 2011
Сообщений: 34
По умолчанию SmartFoxServer2X синхронизация ответов от клиентов

Доброго времени суток.

Ситуация: конец игры, один игрок разбомбил башню противника, оба клиента отслеживают состояние здоровья замков друг друга. Как только здоровье у одного из игроков становится равным нулю, клиенты берут значение жизни своего замка и противника и отправляют на сервер, и сервер уже рассчитывает награду каждому игроку, и отправляет им обратно, кому то приз, а кому то так, утешительный. Так вот вопрос в том как на сервере в определённый момент времени сразу знать значения обоих клиентов?
То есть мне нужно что бы сервер получил значения одного клиента, и начинал ждать такие же значения от другого клиента, а ещё лучше, что бы при получении подобного запроса от одного клиента, сам делал запрос другому клиенту на получение этих данных.

Очень трудно мне даётся написание сервера. Делаю по примерам и документации. Вот мой RoomExtension взятый из примера CannonCombat

Код:
public final String VERSION 				= "1.01";
	
	public final String CMD_GAMEPLAY_REQUESTS	= "G";
	public final String CMD_START_GAME			= "S";
	
	SmartFoxServer sfs;
	
	@Override
	public void init() {
		trace("BattleGame Game Extension init. Version: " + VERSION);
		
		// Register Request handlers
		this.addRequestHandler(CMD_GAMEPLAY_REQUESTS, GamePlayRequests.class);
	}

	public Room getGameRoom()
	{
		return this.getParentRoom();
	}
	
	public Zone getZone()
	{
		return this.getParentZone();
	}
и GamePlayRequests соответственно

Код:
@Instantiation(InstantiationMode.SINGLE_INSTANCE)
@MultiHandler
public class GamePlayRequests extends BaseClientRequestHandler {

	@Override
	public void handleClientRequest(User user, ISFSObject params) {
		//Obtain a reference to this handlers parent extension
		BattleTowersGameExtension gameExt = (BattleTowersGameExtension) getParentExtension();
		Room curRoom = gameExt.getGameRoom();
		
		// Obtain the request id
		String requestId = params.getUtfString(SFSExtension.MULTIHANDLER_REQUEST_ID);
		
		if(requestId.equals(gameExt.CMD_START_GAME)) 
		{
			// Create and broadcast a global RoomVariable to notify all users not in game room that game has started
			RoomVariable rv = new SFSRoomVariable(ReservedRoomVariables.RV_GAME_STARTED, true);
			rv.setGlobal(true);
			List<RoomVariable> listOfVars = new ArrayList<RoomVariable>();
			listOfVars.add(rv);
					
			// Update the RoomVariables
			SmartFoxServer.getInstance().getAPIManager().getSFSApi().setRoomVariables(user, curRoom, listOfVars);
		}
	}
}
как и где примерно это писать? даже если на мой вопрос есть ответ в документации, большая просьба ткнуть носом. Кто работал со SmartFox-ом, прошу помощи.

Заранее спасибо

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:56.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.