| 
	
		
		
			| Результаты поиска |  |  |  | 
| 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))) |  |  |  |  |  
 |