![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2004
Сообщений: 113
|
Всем доброго времени суток. Делаю сетевую игру и необходимо запретить на одной машине запускать два клиента. Точнее не то чтобы запускать, а играть этим клиентам между собой
Пробовал использовать localConnection и SharedObject. Все замечательно, но в гадском хромовском PPAPI флэшплеере клиент запускается в "песочнице" и с другими браузерами просто не контачит. Так как в новой версии флэшплеера все хромиум браузеры принудительно переведены на PPAPI, то это огромная проблема. Мозилла с ИЕ друг друг другу могут данные передавать через вышеназваные методы, но вот их общение с любыми другими браузерами этими способами невозможно. Если бы как-то можно было получить какой-то уникальный идентификатор который был бы связан с конкретной машиной, то я мог бы передавать данные на сервер и запрещать игру уже оттуда, но я не нашел способа как получить этот уникальный ID. Возможно как-то яваскрипт задействовать для этого, но им я не владею. Если у кого-то есть идеи как можно реализовать запрет на совместную игру двух клиентов, запущенных на одной машине, то подскажите пожалуйста |
|
|||||
|
Регистрация: Jul 2014
Сообщений: 42
|
А что если клиент будет рандомно генерировать какой-то ключ в момент запуска, который будет записываться вместе с текущим временем в SharedObject каждые 1-2 минуты? Если захочет новый экземпляр запустить, то он посмотрит ключ и время. Если времени с последнего обновления прошло больше 2х минут(допустим), то он запустится и запишет свой ключ и время. Если существует активный ключ, но не его, то пошёл нафиг. Если существует активный ключ и он его - обновляем время.
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
как вариант через netGroup связывать 2 флэшки тогда и серв не нужен. Кстати там-же и peerId выдадут. он как- раз уникален, если все-же хочется через сервак
типа private const SERVER:String = "rtmfp://stratus.adobe.com/"; private const group_name:String="group1"; private var nc:NetConnection; nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, hNS,false,0,true); // To connect to Stratus, pass the server name and your developer key. nc.connect(SERVER + DEVKEY); private function hNS(e:NetStatusEvent):void{ switch(e.info.code){ case "NetConnection.Connect.Success": trace(e.info.code); connect(); break; case "NetGroup.Neighbor.Connect": // e.info.neighbor //если зашел сюда,значит флэшка уже запущена break; default: break; } } private function connect():void{ // Create a GroupSpecifier object to pass to the NetGroup constructor. // The GroupSpecifier determines the properties of the group var group_spec:GroupSpecifier; group_spec = new GroupSpecifier(group_name); group_spec.serverChannelEnabled = true; ng = new NetGroup(nc, group_spec.groupspecWithAuthorizations()); ng.addEventListener(NetStatusEvent.NET_STATUS, hNS,false,0,true); } Последний раз редактировалось undefined; 10.12.2014 в 14:25. |
|
|||||
|
.
|
Лучше сразу дайте возможность играть с нескольких аккаунтов или сделайте невыгодной возможность играть с двух аккаунтов одновременно. Путь запрета ни к чему не приведет. Уже проверено.
|
|
|||||
|
Регистрация: Jul 2004
Сообщений: 113
|
Цитата:
Тоесть это вариант который легко обходится запуском разных браузеров. |
|
|||||
|
Регистрация: Jul 2014
Сообщений: 42
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|