Клиент-серверное приложение на Faucet Networking. ч.2
И так, не медлим и приступаем. В прошлой статье я не создал буфер для отправки/принятия сообщений. Сделаем это сейчас т.к. он нам пригодится. Заходим в клиент и сервер, в событии создания обьета control дописываем:
Если вы прочитали код, вы заметили что у нас создается объект player. Давайте создадим его и присвоим какой нибудь спрайт. Теперь зайдем в Create, пишем:
Код
manage = 0; ind = -1; name = ""; delete = 0;
Step:
Код
if (delete == 1 && manage == 1) {room_goto(menu); instance_destroy();} if (delete == 1 && manage == 0) {instance_destroy();}
draw_sprite(sprite_index, -1, x, y); draw_text(x, y - 20, name);
Функции: buffer_create() - создает буффер и возвращает индентфификатор buffer_clear(buff) - чистим буффер write_xxx(buff_write, val) - записываем в буфер значение read_xxx(buff_read) - читаем из буфера данные соответственно socket_send(server) - отправляем серверу данные из буфера socket_receive_available(server) - читаем все данные из буфера которые нам прислал сервер. Также эта функция возвращает кол-во принятых байт write_buffer(dest, source) - очень важная функция, стоит понимать как она работает и как пользоваться. Эта функция используется для записи или чтения в буфер данных от сокета. Принцип действия отправления сокету: //...Тут записываем что то в буфер //Например, write_ubyte(buff_write, irndom(255)) write_buffer(server, buff_write) socket_send(server) В первом параметре находится сокет сервера. В него мы записываем данные из буфера. Т.е. первый параметр это есть то куда мы записываем данные для отправления Второй параметр есть то откуда мы читаем данные. Если необходимо прочитать данные, то делается аналогично: msg = tcp_receive_available(socket) buffer_write(buff_read, socket) read_ubyte(buff_read) //...
Вроде ничего не забыл указать, теперь объясняю код, благо мне всеравно делать нефиг При нажатии на кнопку регистрации или входа, мы делаем запрос данных у пользователя. Он их вводит, программа проверяяет правильность ввода и если все ок - отправляет данные серверу.
Далее, смотрим control. Тут мы принимаем ответ сервера. В зависимости от введенных и отправленных данных мы получаем результат. Если произошла какая-то ошибка мы ее выводим. Если все ок, то все ок)
Я поместил авторизацию при тру, принятие координат, и выход игрока в скрипты. Это удобнее, т.к. в случае чего не надо будет копаться во всем коде и переписывать. К тому же так гораздо читабельнее код. Советую и вам так делать.
Обьясняю авторизацию. Если она тру, то принимаем наш индентфикатор от сервера, он не может быть больше 255, затем читаем наш ник, координаты. Создаем наш обьект игрока, присваиваем ему все данные которые мы получили и также устанавливаем флаг управления в 1. Затем идет, цикл перед которым мы записываем кол-во игроков count. Это делается для того чтобы узнать где находятся другие игроки. Также узнаем их ники. Ах да, еще мы при создании обьекта игрока добавляем его в карту с ключом индентфикатором. Это необходимо! Чтобы управлять обьектами через control я выбрал такой способ. Он удобен: вам приходит индентификатор ind, вы достаете обьект через инд. И уже можете им как угодно управлять.
Удобность карты можно продемонстрировать также на примере скрипта координат игрока и выхода его из игры. Тут видно, что к нам приходит индентификатор и через него мы достаем обьект того игрока от которого пришло сообщение.
В обьекте player все очень просто: если у нас manage=1 то мы им управляем и передаем координаты, если нет то выходим из скрипта. Также если флаг удаления=1 то удаляем объект. Что еще тут сказать... Ну драв понятно, рисуем над ним никнейм. Еще есть такой момент во всех гэйм мейкреах, если вы программно не указали, что вы будете отрисовывать спрайт, а также в драве есть какойто код, то ваш спрайт не будет виден. Потому если есть любой код в рисовании, то указывайте что надо отрисовать спрайт обязательно.
Все, в следующей статье мы продолжим делать наше приложение. В данном случае с клиентом покончено. Так, что будем штурмовать сервер
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Клиент-серверное приложение на Faucet Networking. ч.2», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]