Результаты поиска
| |
zzzzza | Дата: Понедельник, 07 Октября 2013, 01:32 | Сообщение # 81 | Тема: Проблема с соеденением |
участник
Сейчас нет на сайте
| обратиться к провайдеру. Примерно эта услуга стоит плюс 90 рублей к ежемесячной сумме платежа. А причина по которой не конектится - динамичный айпи(100%). Сам с этим давно сталкивался.
Сообщение отредактировал zzzzza - Понедельник, 07 Октября 2013, 01:36 |
|
| |
zzzzza | Дата: Среда, 26 Июня 2013, 15:59 | Сообщение # 82 | Тема: Нужен скрипт на языке Game Maker Language |
участник
Сейчас нет на сайте
| Сделал пример. http://rghost.ru/47030708
|
|
| |
zzzzza | Дата: Среда, 26 Июня 2013, 14:08 | Сообщение # 83 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| XDominator, ахаха, ок:D
|
|
| |
zzzzza | Дата: Среда, 26 Июня 2013, 02:44 | Сообщение # 84 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| XDominator, У меня система своя. Заключается в том, что в клиентах и в сервере каждый шаг вычисляется максимальный id существующий в игре и когда присоединяется игрок, ему присваивается максимальный id + 1 и потом создается объект с этим же id. Ну надеюсь ты понял:DДобавлено (26.06.2013, 02:44) --------------------------------------------- XDominator, Сделал передачу клиентам по-другому(не как в начале писал). Теперь сервер отправляет координаты всем клиентам(кроме одного, понятно какого) каждый шаг. И клиенты принимают их: Код case 7: if (room_r[1]=1) { other_player_id=readshort(0); if (create[other_player_id]=false) { player=instance_create(0,0,obj_other_player); players_id[other_player_id]=player; player.name=players_name[other_player_id]; create[other_player_id]=true; } else { player=players_id[other_player_id]; player.x=readshort(0); player.y=readshort(0); } } clearbuffer(0); break; . Избавился от всех циклов и на сервере и в клиентах, но почему-то в этом варианте тоже есть приличная задержка. Почему, даже представить не могу( Для пробы сделал так: Код else { show_message('УРА'); player=players_id[other_player_id]; player.x=readshort(0); player.y=readshort(0); } то есть вставил show_message. При запуске, show_message приходит постоянно(меньше секунды), то есть задержки никакой. А вот присвоение координат почему-то с задержкой, хотя идет на следующих строчках. Есть конечно вариант почему это может происходить(только что в голову пришел:D). Перенесу этот код в шаг obj_other_player. XDominator, У тебя есть какие-нибудь мысли?
|
|
| |
zzzzza | Дата: Вторник, 25 Июня 2013, 15:19 | Сообщение # 85 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| Код var i; for (i=0;i<ds_list_size(client_list);i+=1) { sendmessage(ds_list_find_value(client_list,i),0,'',1); } Добавлено (25.06.2013, 15:19) --------------------------------------------- Наконец-то нашел ошибку: А заключается она в том, что во writeshort можно записывать значения от -32768 до +32767, а все id больше 100000
Сообщение отредактировал zzzzza - Понедельник, 24 Июня 2013, 13:08 |
|
| |
zzzzza | Дата: Воскресенье, 23 Июня 2013, 01:53 | Сообщение # 86 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| XDominator, Я отправку сначала в степ игрока написал, но после запуска, сервер не отвечал, пришлось в будильник засунь. С блокиратором(а=0), это понятно, но я не хочу так делать. Алгоритм, который пришел мне в голову, на мой взгляд самый удобный и простой, но появилась эта проблема. Я еще поколдую, может получится) Я по другому написал, по сравнению с предыдущими кодами. Как пример, отправка теперь не в obj_system-step-'case...', а в будильнике obj_player. Я тебе исходник попозже в личку кину, может поймешь в чем дело.
Добавлено (23.06.2013, 01:53) --------------------------------------------- Попробовал вставить вот этот код:Код clearbuffer(1); writebyte(7,1); writeshort(id,1); writeshort(x,1); writeshort(y,1); send_to_all(); в нажатие мыши на obj_player, все передалось. Если в будильник ставлю, то, то что в будильнике, выполняется один раз(в будильнике в конце стоит alarm[0]=1), не знаю почему так( Если в шаг запихнуть, то сервер не отвечает( В чем может быть проблема?
Сообщение отредактировал zzzzza - Воскресенье, 23 Июня 2013, 01:55 |
|
| |
zzzzza | Дата: Пятница, 21 Июня 2013, 16:12 | Сообщение # 87 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| XDominator, теперь понял про что ты. Создал еще один шаг(он без кейса), но все равно ничего не изменилось.Добавлено (20.06.2013, 21:58) --------------------------------------------- XDominator, Выглядит новый код так же: Код clearbuffer(1); writebyte(7,1); writestring(name,1); writeshort(player_id.x,1); writeshort(player_id.y,1); send_to_all_but_one(current_client); но с некоторыми, незначительными изменениями и все это в цикле находится. Цикл нужен, чтобы координаты каждого игрока отправлять.Добавлено (21.06.2013, 16:12) --------------------------------------------- XDominator, наконец-то доперло как правильно сделать, только проблема появилась:) Почему-то сообщение из server-obj_player-alarm[0] отправляться не хочет, хотя из server-obj_system-'любое событие' отправляется. Из client-'любой объект'-'любое событие' все прекрасно отправляется. Часа полтора пытался выяснить в чем проблема, но так и не понял(
|
|
| |
zzzzza | Дата: Пятница, 21 Июня 2013, 16:05 | Сообщение # 88 | Тема: Помогите.Будьте добры. |
участник
Сейчас нет на сайте
| volkoman, я согласен с stalker5889, так как есть гайды по ini(http://gcup.ru/publ/rabota_s_ini_fajlami_v_game_maker_8/2-1-0-263, один из гайдов), прочитав их, можно понять как записывается/читается информация из ini. для твоего случая: Код ini_write_real("Save", "global.gold", readbyte()); то что ты написал.
|
|
| |
zzzzza | Дата: Четверг, 20 Июня 2013, 14:50 | Сообщение # 89 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| XDominator, так у меня же вроде все клиенты обрабатываются за 1 шаг. Код case 6: //Ïðèíèìàåì êîîðäèíàòû êëèåíòà. ini_open('register.ini'); k = ini_read_real('K','k', ''); name=readstring(0); for(iii=0;iii<=k;iii+=1) { if (name=ini_read_string('Name','name'+'['+string(iii)+']','')) { player_id=ini_read_real('ID','id'+'['+string(iii)+']',''); player_id.x=readshort(0); player_id.y=readshort(0); clearbuffer(1); writebyte(7,1); writestring(name,1); writeshort(player_id.x,1); writeshort(player_id.y,1); send_to_all_but_one(current_client); iii=k; } } ini_close(); clearbuffer(0); break; Добавлено (20.06.2013, 14:43) --------------------------------------------- XDominator, ааа, я кажется понял в чем ошибка. Надо вот эту часть Код clearbuffer(1); writebyte(7,1); writestring(name,1); writeshort(player_id.x,1); writeshort(player_id.y,1); send_to_all_but_one(current_client); вынуть из условия, но оставить в цикле)) Сейчас попробую)Добавлено (20.06.2013, 14:50) --------------------------------------------- Сделал во так: Код case 6: //Ïðèíèìàåì êîîðäèíàòû êëèåíòà. ini_open('register.ini'); k = ini_read_real('K','k', ''); name=readstring(0); for(iii=0;iii<=k;iii+=1) { if (name=ini_read_string('Name','name'+'['+string(iii)+']','')) { player_id=ini_read_real('ID','id'+'['+string(iii)+']',''); player_id.x=readshort(0); player_id.y=readshort(0); iii=k; } } clearbuffer(1); writebyte(7,1); writestring(name,1); writeshort(player_id.x,1); writeshort(player_id.y,1); send_to_all_but_one(current_client); ini_close(); clearbuffer(0); break; стало побыстрее, но все равно есть задержка примерно в 3 секунды(2 клиента). Надо еще что-нибудь придумать:)
|
|
| |
zzzzza | Дата: Среда, 19 Июня 2013, 22:45 | Сообщение # 90 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| server-obj_system-step: Код case 6: //Ïðèíèìàåì êîîðäèíàòû êëèåíòà. ini_open('register.ini'); k = ini_read_real('K','k', ''); name=readstring(0); for(iii=0;iii<=k;iii+=1) { if (name=ini_read_string('Name','name'+'['+string(iii)+']','')) { player_id=ini_read_real('ID','id'+'['+string(iii)+']',''); player_id.x=readshort(0); player_id.y=readshort(0); clearbuffer(1); writebyte(7,1); writestring(name,1); writeshort(player_id.x,1); writeshort(player_id.y,1); send_to_all_but_one(current_client); iii=k; } } ini_close(); clearbuffer(0); break; Отправка координат всем клиентам вот: Код clearbuffer(1); writebyte(7,1); writestring(name,1); writeshort(player_id.x,1); writeshort(player_id.y,1); send_to_all_but_one(current_client);
client-obj_system-step: Код case 7: if (room_r[1]=1) { take_player_name=readstring(0); for(i=0;i<=number_other_player;i+=1) { if (take_player_name!=player_name[i+1]) and (i=number_other_player) { player_name[i+2]=''; player_name[i+1]=take_player_name; other_player_id[i+1]=global.max_id+1; instance_create(0,0,obj_other_player); other_player_id[i+1].x=readshort(0); other_player_id[i+1].y=readshort(0); } if (take_player_name=player_name[i+1]) { other_player_id[i+1].x=readshort(0); other_player_id[i+1].y=readshort(0); i=number_other_player; } } } clearbuffer(0); break; Добавлено (19.06.2013, 22:45) --------------------------------------------- Если пояснить что нужно, то говорите)
|
|
| |
zzzzza | Дата: Среда, 19 Июня 2013, 02:01 | Сообщение # 91 | Тема: Принятие координат клиентами(39dylib) |
участник
Сейчас нет на сайте
| Сделал передачу координат от клиента серверу и от сервера всем остальным клиентам. Проблема заключается в том, что приходят эти координаты c большим запозданием(приходят другим клиентам. На сервер все передается без тормозов), причем, как я заметил, тому кто подключился последним, приходят быстрее. Попытался избавиться от всех возможных циклов, остался только один - отвечающий за отправку координат каждому клиенту. Может быть из-за этого цикла, но я думаю вряд ли. Потом узнал про алгоритм Нейгла(Nagle's algorithm), нашел какой функцией его можно отключить("setnagle(client, false)"), но все равно не помогло, лично я разницы не заметил, но возможно я что-то не правильно сделал. Если есть мысли в чем может быть проблема, пишите. BasicMMORPG, как пример не давайте))
Сообщение отредактировал zzzzza - Среда, 19 Июня 2013, 02:46 |
|
| |
zzzzza | Дата: Понедельник, 03 Июня 2013, 02:02 | Сообщение # 92 | Тема: Самонаводящаяся ракета |
участник
Сейчас нет на сайте
| Overdrave, не особо понял что сделать надо)) На сколько я понял, ты хочешь, чтобы ты выбирал цель-игрок и ракета просто летела в него(не преследовала его) - по прямой?))) Если я не правильно понял, поясни:)
Сообщение отредактировал zzzzza - Понедельник, 03 Июня 2013, 02:03 |
|
| |
zzzzza | Дата: Четверг, 30 Мая 2013, 20:19 | Сообщение # 93 | Тема: 39dylib |
участник
Сейчас нет на сайте
| Спасибо за ответы))
Добавлено (30.05.2013, 20:19) --------------------------------------------- Как в basic mmorpg передаются координаты так и не понял, но зато придумал свой способ и все прекрасно работает:)
Сообщение отредактировал zzzzza - Четверг, 30 Мая 2013, 20:19 |
|
| |
zzzzza | Дата: Четверг, 30 Мая 2013, 20:10 | Сообщение # 94 | Тема: Максимальный id. |
участник
Сейчас нет на сайте
| Saladin, это еще проще:D
|
|
| |
zzzzza | Дата: Четверг, 30 Мая 2013, 19:24 | Сообщение # 95 | Тема: Максимальный id. |
участник
Сейчас нет на сайте
| buftler, Что-то про 'all' совсем забыл. Спасибо, все работает)) krap, Тоже спасибо за ответ. Решил взять все-таки код buftler'а, он попроще и с дс листами париться не надо - я их не особо люблю)
|
|
| |
zzzzza | Дата: Четверг, 30 Мая 2013, 18:29 | Сообщение # 96 | Тема: Максимальный id. |
участник
Сейчас нет на сайте
| Как узнать максимальный id из всех объектов, существующих в комнате?)
|
|
| |
zzzzza | Дата: Вторник, 28 Мая 2013, 13:44 | Сообщение # 97 | Тема: 39dylib |
участник
Сейчас нет на сайте
| XDominator, visible не использую. Условий в принятие координат нет.(кроме того, где проверяется a=0, ну это специально сделал, чтобы создавался один объект) obj_system-step: Код if (a=0) { player_id=instance_create(0,0,obj_player); a=1; } player_id.player_x=readshort(0); player_id.player_y=readshort(0); clearbuffer(0); Спасибо за пример, посмотрю его потом))
|
|
| |
zzzzza | Дата: Вторник, 28 Мая 2013, 00:50 | Сообщение # 98 | Тема: 39dylib |
участник
Сейчас нет на сайте
| Всем привет) Делаю мморпг. Сервер-клиент сделал, регистрацию и вход тоже сделал. Дошел до отправки координат клиента на сервер и тут возникла проблема. Просто отправлять координаты клиента на сервер и отображение игрока в тех же координатах, где и клиент в сервере - это легко сделать. Когда подключается один клиент, на сервере игрок отображается хорошо - проблем нет. А вот когда подключается два и более клиентов, игроки на сервере начинают отображаться плохо - 1)спрайт игрока становится тусклым(почти прозрачным), 2)спрайт игрока(любого, то есть рандомно как-то выбирается) исчезает, потом может через некоторое время появится:D Попробовал кучу способов, которые в голову приходили, но ничего так и не исправилось. Пробовал через айди(разными способами), но тоже не получилось( Вопрос: Как можно осуществить передачу или прорисовку(может быть в прорисовки проблема, хотя вряд ли) координат, чтобы все хорошо отображалось?) P.S: Показать момент, когда спрайты становятся тусклыми не могу, почему не хочет скринить фрапс и принт скрин - на скрине видно только одного игрока( Если увидите ошибки или некорректно написанный текст, извиняйте, уже час ночи)) http://s47.radikal.ru/i117/1305/3f/179483930ff5.png http://i065.radikal.ru/1305/66/2c2127b6692d.png http://s56.radikal.ru/i152/1305/be/19b3f13d482d.png
Сообщение отредактировал zzzzza - Вторник, 28 Мая 2013, 01:05 |
|
| |
zzzzza | Дата: Суббота, 20 Апреля 2013, 12:56 | Сообщение # 99 | Тема: Помогите с выбором конуструктора. |
участник
Сейчас нет на сайте
| Всем привет, ребят можете подсказать конструктор по типу xtremeworlds, с открытым исходным кодом, раньше помомему у Eclipse такое было, но сейчас они кажеться убрали это. Буду очень благодарен. Такие вообще есть?
Сообщение отредактировал zzzzza - Воскресенье, 21 Апреля 2013, 18:53 |
|
| |
zzzzza | Дата: Понедельник, 11 Февраля 2013, 10:27 | Сообщение # 100 | Тема: Ошибка с массивом |
участник
Сейчас нет на сайте
| Fireguy, давно в гм не работал, многого не помню, но все-таки, там же надо переменные объявлять перед кодом, ну или в create)))
|
|
| |
|