Вторник, 07 Мая 2024, 00:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » zzzzza [182]
Результаты поиска
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(id,1);

А заключается она в том, что во writeshort можно записывать значения от -32768 до +32767, а все id больше 100000 smile


Сообщение отредактировал 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)))
Форум игроделов » Записи участника » zzzzza [182]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг