Суббота, 22 Ноября 2025, 03:26

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
LunarPixelДата: Пятница, 30 Сентября 2011, 23:19 | Сообщение # 3701 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, по сути она там не нужна. Просто она хранит 1, если подключился второй игрок. Но нигде больше не используется, так что она не нужна. smile

LunarPixelДата: Пятница, 30 Сентября 2011, 23:16 | Сообщение # 3702 | Тема: Вопрос - Ответ (Game Maker)
старожил
Сейчас нет на сайте
jManiar, ничего проблематичного.
Один из вариантов: делаешь возможность расставлять предметы в комнате с помощью мышки (instance_create(mouse_x, mouse_y, object)).
Далее пробегаешь циклом по всей комнате, записывая координаты объектов и их тип в файл.

Чтобы загрузить карту, пробегаешь циклом по файлу считывая координаты и тип объекта и в соответствии с этим расставляешь объекты в комнате.

Так же, как вариант, можешь посмотреть мой урок по созданию редактора карт. Ссылка на урок в подписи. smile
там карта "рисуется" в текстовом документе. Разные символы отвечают за разные виды объектов. После чего происходит считывания всех символов из файла и в зависимости от символов, которые там написаны, расставляются объекты. smile


LunarPixelДата: Пятница, 30 Сентября 2011, 23:10 | Сообщение # 3703 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
Старайся по возможности единовременно передавать как можно меньше данных, чтобы работало быстрее и не было задержек и тормозов. smile

LunarPixelДата: Пятница, 30 Сентября 2011, 23:03 | Сообщение # 3704 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
Ну да, если тебе нужно передавать это значение, то нужно будет по две переменные создавать. Одна хранит жизни героя, другая хранит принятые жизни второго игрока. smile

LunarPixelДата: Пятница, 30 Сентября 2011, 22:57 | Сообщение # 3705 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, точно так же, как и со всем остальным.

mplay_data_write(20,global.health)

health_lient=mplay_data_read(20)


LunarPixelДата: Пятница, 30 Сентября 2011, 22:48 | Сообщение # 3706 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, смотря что за переменные. Можно так же их записывать и передавать, при необходимости. smile

LunarPixelДата: Пятница, 30 Сентября 2011, 22:45 | Сообщение # 3707 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, проще записать угол, как и координаты:
mplay_data_write(3,image_angle)
И считывать его. smile


LunarPixelДата: Пятница, 30 Сентября 2011, 22:39 | Сообщение # 3708 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, да, всё правильно happy

LunarPixelДата: Пятница, 30 Сентября 2011, 22:29 | Сообщение # 3709 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
AGENTX001, очень полезная информация, спасибо. smile
Если уж решил написать что то, то укажи хоть в чем принципиальная разница в освоении, в чем простота?! smile

InsDes, нет. Write записывает информацию в общий массив. А read считывает информацию из общего массива.
Разбери пример, перечитай ещё раз что я написал и поэкспериментируй. smile

От клиента записал данные, на сервере считал.
На сервере записал данные, на клиенте считал.


LunarPixelДата: Пятница, 30 Сентября 2011, 22:18 | Сообщение # 3710 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
можно каждый шаг передавать координаты объект от сервера клиенту и наоборот.

Например, у тебя на клиенте есть obj_hero.
На сервере есть obj_hero_clirent

Объекту obj_hero задаешь управление и в step пишешь:
mplay_data_write(x,0)
mplay_data_write(y,1)

А объекту obj_hero_clirent на сервере в step пишешь:
x=mplay_data_read(0)
y=mplay_data_read(1)

Таким образом при движении объекта obj_hero на стороне клиента, объект obj_hero_clirent будет двигаться точно так же на стороне сервера.


LunarPixelДата: Пятница, 30 Сентября 2011, 22:11 | Сообщение # 3711 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
mplay_data - это общий массив, в котором хранятся передаваемые параметры.

mplay_data_write(par,n) - записывает параметр в ячейку n
mplay_data_read(n) - считывает параметр из ячейки n

Например у клиента записывается X координата объекта: mplay_data_write(x,0)
А на сервере она считывается и присваивается объекту x=mplay_data_read(0)


LunarPixelДата: Пятница, 30 Сентября 2011, 22:01 | Сообщение # 3712 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, смотря для каких тебе целей, если просто с другом поиграть во что то простенькое, то можно и на стандартных. Если что то серьезное делаешь, то лучше 39dll.
Эмулятор должен стоять у обоих. Он создаст между вами псевдо локальную сеть и выдаст IP по которым и надо будет подключаться.
Не работать в Интернете может из за разных причин, но связаны они с провайдером. ) Как правило, если провайдер один и тот же, то можно подключиться. Иначе не получается. Во всяком случае у меня было так.


LunarPixelДата: Пятница, 30 Сентября 2011, 21:50 | Сообщение # 3713 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, ?!
Quote (InsDes)
у себя на компьютере с двумя открытыми *.exe и с другом...


У себя на компе, при двух открытых exe, не надо вводить IP, или же указывать локальный.
Через интернет с другом может не работать на стандартных функциях, потому нужен эмулятор локальной сети.


LunarPixelДата: Пятница, 30 Сентября 2011, 21:37 | Сообщение # 3714 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
InsDes, проверил, всё работает.
При подключении на одном компе не надо вводить IP.
При подключении через Интернет возможны проблемы со стандартными функциями, нужно в таком случае использовать Хамачи - эмулятор локальной сети.


LunarPixelДата: Пятница, 30 Сентября 2011, 21:23 | Сообщение # 3715 | Тема: Пауза
старожил
Сейчас нет на сайте
InsDes, от куда ты знаешь?! Например это РПГ, пауза нужна при входе в инвентарь/характеристики героя/на карту мира/в настройки и т.д. везде можно менять параметры. Один только инвентарь может быть 10х10, это уже 100 параметров хранить надо будет.
Да и даже если параметров меньше, это не исключает всего остального, о чем я написал. Зачем это нужно, если есть как минимум 2 способа, которые намного проще?! smile


LunarPixelДата: Пятница, 30 Сентября 2011, 21:13 | Сообщение # 3716 | Тема: Мультиплеер 2 игрока, сервер и клиент...
старожил
Сейчас нет на сайте
Вот, посмотри: http://zalil.ru/31787504
Откопал у себя на компе свой примерчик маленький. smile


LunarPixelДата: Пятница, 30 Сентября 2011, 21:03 | Сообщение # 3717 | Тема: Пауза
старожил
Сейчас нет на сайте
InsDes, зачем создавать целых два доп. файла?! к тому же добавлять лишние строки работы с ini, загружать считыванием/записью. Может там под сотню параметров меняется, все записывать в файлик будешь?! smile

LunarPixelДата: Пятница, 30 Сентября 2011, 17:52 | Сообщение # 3718 | Тема: Пауза
старожил
Сейчас нет на сайте
vasyan555, если брать в пример тот же инвентарь, то после того, как ты в инвентаре все манипуляции провел и закрыл его, то игра ЗАГРУЖАЕТСЯ, а вместе с ней и прежнее состояние инвентаря. smile

LunarPixelДата: Пятница, 30 Сентября 2011, 17:32 | Сообщение # 3719 | Тема: Пауза
старожил
Сейчас нет на сайте
instance_deactivate_all(notme)Деактивирует все образцы объекта в комнате. Если notme - истина, то вызываемый образец объекта не деактивируется (обычно это то, что Вам нужно).

instance_deactivate_object(obj) Деактивирует все образцы объекта в комнате заданного объекта obj. Вы можете также использовать все, чтобы указать, что все образцы объекта должны быть деактивированы; или идентификатор образца объекта, чтобы деактивировать индивидуальный образец объекта.

instance_deactivate_region(left,top,width,height,inside,notme) Деактивирует все образцы объекта в указанную область (то есть, если окошки bounding box пролегают частично в области). Если установлена ложь, то образцы объекта находящиеся за пределами области деактивируются. Если notme - истина, то вызываемый образец объекта не деактивируется (обычно это то, что Вам нужно).

instance_activate_all() Активирует все образцы объекта в комнате.

instance_activate_object(obj) Активирует все образцы объекта в комнате заданного объекта obj. Вы можете также использовать все, чтобы указать, что все образцы объекта должны быть активированы; или идентификатор образца объекта, чтобы активировать индивидуальный образец объекта.

instance_activate_region(left,top,width,height,inside) Активирует все образцы объекта в указанной области. Если установлена ложь, то образцы объекта находящиеся за пределами области будут активированы.

Добавлено (30.09.2011, 17:32)
---------------------------------------------
Например:
При нажатии на кнопку:
instance_deactivate_all(true) //деактивируем все объекты, кроме текущего
instance_create(x,y,obj_inventar) //создаем окно инвентаря

при закрытии инвентаря:
with obj_inventar instance_destroy() //удаляем окно инвентаря
instance_activate_all() //активируем все объекты


LunarPixelДата: Пятница, 30 Сентября 2011, 17:27 | Сообщение # 3720 | Тема: Пауза
старожил
Сейчас нет на сайте
MyACT, хм... насколько я знаю, скорость комнаты нельзя установить в 0. Как ты, интересно, это проверял!? smile

Поиск:

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