XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

ТЕСТИРУЕМ ЧАТИК ДА

для начала попробуйте открыть в проводнике windows путь: \\xgm.gameemu.com\warcraft-server
если не открывается, то или косяк с провайдером, или не знаю (на вин8 наблюдается какая-то хрень)
видимо, некоторые провайдеры отключают исходящий трафик SMB... если так будет наблюдаться у большинства.. чтож, очередная ненужная поделка =)
отпишитесь в теме, у кого директория не открывается проводником и какой у вас провайдер
Качаете карту, после запуска она уже должна запросить доступ к моей папке, потом предложить залогиниться/зарегаться (это почти одно и то же)
ещё проблема с локал файлами может быть: xgm.ru/p/wc3/localfiles
» Приложение для собственного сервера, инструкция и Source code

Закрытая тема
 
IceFog

offline
Опыт: 6,486
Активность:
Если игрок пишет зрителям, игра воспринимает эти сообщения, но другим они не видны.
Старый 02.04.2013, 16:24
ScorpioT1000
Работаем
offline
Опыт: отключен
это опасно =\
Старый 02.04.2013, 16:36
IceFog

offline
Опыт: 6,486
Активность:
Как насчет чтения пароля из файла?
IceFog добавил:
это опасно =\
Чем это опасно? Или ты имеешь ввиду, что игрок может случайно послать сообщение всем?
Старый 02.04.2013, 16:41
ScorpioT1000
Работаем
offline
Опыт: отключен
native DialogAddButton takes dialog whichDialog, string buttonText, integer hotkey returns button
вот тут есть хоткеи, только хз, какой лимит этих кнопок
ScorpioT1000 добавил:
Или ты имеешь ввиду, что игрок может случайно послать сообщение всем?
именно
Старый 02.04.2013, 16:47
IceFog

offline
Опыт: 6,486
Активность:
Протестировал что за хоткеи. Клавишами пробел и Enter нажималась кнопка с хоткеем 0. Обе клавиши Alt нажимали на кнопку с хоткеем 2. Какие клавиши отвечают за другие хоткеи не нашел. И как это использовать тут?
Старый 02.04.2013, 18:42
ScorpioT1000
Работаем
offline
Опыт: отключен
IceFog, это ascii коды, кстати могут быть конвертированы из чаров
я щас както так это юзаю
void authLoginDialog(string name) {
TRACE
    authPendingLogin = name
    authPendingPassword = ""
    if(GetAccountState() != AUTH_STATE_LOGGED_OUT) {
        if(GetAccountState() == AUTH_STATE_LOGGED_IN) {
            LocalAlert(scct("You are already logged in!","Вы уже в системе!"))
        } else {
            LocalAlert(scct("The request is already sent (waiting for server response).", \
                            "Запрос уже послан (ожидание ответа от сервера)."))
        }
        return;
    }
TRACES(" display")
    // start char sequence
    DialogDisplay(GetNetworkPlayer(), authPressD, true)
}
void InitAuth() {
TRACE
    authPressD = DialogCreate()
    DialogSetMessage(authPressD,scct("Continue entering \npassword letters \non your keyboard. \nPress |cFF907670dot|r to finish", \
                                     "Продолжайте вводить \nбуквы пароля \nна вашей клавиатуре. \n|cFF907670Точка|r - закончить ввод"))
    AUTH_REGBTN('0',"0"); AUTH_REGBTN('1',"1"); AUTH_REGBTN('2',"2"); AUTH_REGBTN('3',"3"); 
    AUTH_REGBTN('4',"4"); AUTH_REGBTN('5',"5"); AUTH_REGBTN('6',"6"); AUTH_REGBTN('7',"7"); 
    AUTH_REGBTN('8',"8"); AUTH_REGBTN('9',"9"); AUTH_REGBTN('a',"a"); AUTH_REGBTN('b',"b"); 
    AUTH_REGBTN('c',"c"); AUTH_REGBTN('d',"d"); AUTH_REGBTN('e',"e"); AUTH_REGBTN('f',"f"); 
    AUTH_REGBTN('g',"g"); AUTH_REGBTN('h',"h"); AUTH_REGBTN('i',"i"); AUTH_REGBTN('j',"j"); 
    AUTH_REGBTN('k',"k"); AUTH_REGBTN('l',"l"); AUTH_REGBTN('m',"m"); AUTH_REGBTN('n',"n"); 
    AUTH_REGBTN('o',"o"); AUTH_REGBTN('p',"p"); AUTH_REGBTN('q',"q"); AUTH_REGBTN('r',"r"); 
    AUTH_REGBTN('s',"s"); AUTH_REGBTN('t',"t"); AUTH_REGBTN('u',"u"); AUTH_REGBTN('v',"v"); 
    AUTH_REGBTN('w',"w"); AUTH_REGBTN('x',"x"); AUTH_REGBTN('y',"y"); AUTH_REGBTN('z',"z"); 
    AUTH_REGBTN('A',"A"); AUTH_REGBTN('B',"B"); AUTH_REGBTN('C',"C"); AUTH_REGBTN('D',"D"); 
    AUTH_REGBTN('E',"E"); AUTH_REGBTN('F',"F"); AUTH_REGBTN('G',"G"); AUTH_REGBTN('H',"H"); 
    AUTH_REGBTN('I',"I"); AUTH_REGBTN('J',"J"); AUTH_REGBTN('K',"K"); AUTH_REGBTN('L',"L"); 
    AUTH_REGBTN('M',"M"); AUTH_REGBTN('N',"N"); AUTH_REGBTN('O',"O"); AUTH_REGBTN('P',"P"); 
    AUTH_REGBTN('Q',"Q"); AUTH_REGBTN('R',"R"); AUTH_REGBTN('S',"S"); AUTH_REGBTN('T',"T"); 
    AUTH_REGBTN('U',"U"); AUTH_REGBTN('V',"V"); AUTH_REGBTN('W',"W"); AUTH_REGBTN('X',"X"); 
    AUTH_REGBTN('Y',"Y"); AUTH_REGBTN('Z',"Z"); AUTH_REGBTN('-',"-"); AUTH_REGBTN('.',"."); 
    
    LOCAL_SECTION
    int i=0;
    while(i < authPressBc) {
        TriggerRegisterDialogButtonEvent(authPressTrg,authPressB[i]);
        i++;
    }
    LOCAL_SECTION_END
}
кстати затестил на локалке, десинкает, мне кажется изза дисплей текст десинк идет
Старый 02.04.2013, 18:44
Zetox

offline
Опыт: 1,738
Активность:
Цитата:
Сообщение от ScorpioT1000
придется что-нибудь придумать. можно сделать вирт. клавиатуру через dgui ...


Все проще, пасс генируется сам, и сохраняется на машине пользователя. и поэтому для регистрации не надо пользователю ничего писать, кроме ника.
Старый 02.04.2013, 19:04
IceFog

offline
Опыт: 6,486
Активность:
Все проще, пасс генируется сам, и сохраняется на машине пользователя.
А если игрок хочет зайти с другого компьютера?
Старый 02.04.2013, 19:06
Goodie

offline
Опыт: 2,825
Активность:
А функции типа - Добавить в друзья, Поиск людей, будет?:D (Соц. сеть какая то =/)
Старый 02.04.2013, 23:36
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
ScorpioT1000, ну посмотрим что у тебя получится)))
Старый 03.04.2013, 01:28
Zetox

offline
Опыт: 1,738
Активность:
ScorpioT1000, А получится на сервере отслеживать ip, кто передает файл, конкретный файл. И ограничить доступ, чтобы у каждого была индивидуальная папка, и создать/считать в других он ничего не мог?

1 фиг, найдется тот, кто допишет call CreateUnit( .....
И всем бб
Старый 03.04.2013, 02:47
ScorpioT1000
Работаем
offline
Опыт: отключен
Zetox, 1. по айпи нельзя вычислить (точнее можно, но это надо в систему лезть) 2. айпи бывает от одной огромной сети (читать "серый" айпи)
ScorpioT1000 добавил:
кстати десинк не изза сообщения, мб изза триггер регистер на вводи на локалплеер
Старый 03.04.2013, 03:55
ScorpioT1000
Работаем
offline
Опыт: отключен
сделал поддержку соединения
как вводить пароль =)))
Старый 05.04.2013, 06:43
ScorpioT1000
Работаем
offline
Опыт: отключен
почти все сделал, осталось пофиксить один злобный десинк для мультиплеера)
Старый 05.04.2013, 12:05
ScorpioT1000
Работаем
offline
Опыт: отключен
ScorpioT1000, 05.04.2013 18:53:04:
через сет плеер нейм и это говно десинкает
ScorpioT1000, 18:53:15:
у нараяна там для конкретного игрока
ScorpioT1000, 18:53:22:
типа каждого и он потом синкает
ScorpioT1000, 18:53:29:
а мне не надо синкать мне надо асинк
ScorpioT1000, 18:53:37:
но плеер говно десинк делает =(
Старый 05.04.2013, 18:55
Zetox

offline
Опыт: 1,738
Активность:
А что нужно? с максимальной скоростью синхронизовать данные?
Старый 05.04.2013, 18:57
ScorpioT1000
Работаем
offline
Опыт: отключен
да мне уже пофиг с любой, вторые сутки за монитором сижу))
Старый 05.04.2013, 18:58
Zetox

offline
Опыт: 1,738
Активность:
ScorpioT1000, Через выделение юнита тогда :/

Код:
TriggerRegisterPlayerUnitEvent(trig, whichPlayer, EVENT_PLAYER_UNIT_SELECTED, null)
native SelectUnit takes unit whichUnit, boolean flag returns nothing
Старый 05.04.2013, 19:03
ScorpioT1000
Работаем
offline
Опыт: отключен
вот смотри
данное условие строка if(mesSenderReceiverStopped) { return; }
отвечает за рассинхронизацию, т.е. у разных юзеров она разного значения
// periodically sends and recieves messages
void SendReceiveHandler() {
    if(mesSenderReceiverStopped) { return; }
дальше хендлится в цикле
bool ReceiveMessage() {
    int i=0;
TRACE
    Preloader(GetServerToClientFilename());
    if(mesIncomingN > 0) {
        FlushChildHashtable(mesCurrentMessage,0);
        while(i < mesIncomingN) {
            SaveStr(mesCurrentMessage,0,StringHash(mesIncomingK[i]),mesIncomingV[i]);
            mesIncomingK[i] = null;
            mesIncomingV[i] = null;
            ++i;
        }
        mesIncomingN = 0;
        // clear s2c file
        PreloadGenClear();
        PreloadGenStart();
        Preload("\")\nendfunction\nfunction dummy3641137 takes nothing returns nothing //");
        PreloadGenEnd(GetServerToClientFilename());
        return true;
    }
    return false;
}
как только появляется файл для прелоада на сервере, он его цепляет, а файл вызывает функции SetPlayerName чтобы передать строки
и пушит их через
// executed by Preloader
void PushMessageKey() {
    if(mesIncomingN > 8190) { return; }
    mesIncomingK[mesIncomingN] = GetPlayerName(Player(15));
}
// executed by Preloader
void PushMessageValue() {
    if((mesIncomingN > 8190) || (mesIncomingK[mesIncomingN] == null)) { return; }
    mesIncomingV[mesIncomingN] = GetPlayerName(Player(15));
    ++mesIncomingN;
}
// executed by Preloader
void FinishMessage() {}
прелоад файл выглядит примерно так:
function PreloadFiles takes nothing returns nothing
call SetPlayerName(Player(15),"game.player.ScorpioT1000.password")
call ExecuteFunc("PushMessageKey")
call SetPlayerName(Player(15),"123456")
call ExecuteFunc("PushMessageValue")
call SetPlayerName(Player(15),"game.player.ScorpioT1000.language")
call ExecuteFunc("PushMessageKey")
call SetPlayerName(Player(15),"1")
call ExecuteFunc("PushMessageValue")
call ExecuteFunc("FinishMessage")
endfunction
десинк происходит на SetPlayerName, т.к. оно влияет на игровой процесс и игрока выкидывает
вопрос как можно асинхронно это сделать
прелоад:
1 нельзя глобалки
2 нельзя вызывать ниче из своего кода
3 нельзя бж
4 можно объявлять функции и вызывать коммон
5 можно экзекут из своего кода
Старый 05.04.2013, 19:05
Zetox

offline
Опыт: 1,738
Активность:
Ну значит придется извращаться, будем синхронизовать int, но из множество int-ов получаем строку :/

Отредактировано Zetox, 05.04.2013 в 19:18.
Старый 05.04.2013, 19:12
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:23.