Приветствую Вас Гость
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Главная страница
  • Форум (Новoe на форуме)
  • Быстрый старт
  • Блог
  • Видео уроки
  • Каталог файлов
  • Статьи и уроки
  • Юзербары
  • FAQ
  • Обратная связь
  • Для начинающих [9]
    Заморочки [4]
    Для немного понимающих 39длл [9]
    Сложный уровень [4]

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    [ Кто нас сегодня посетил ]
    Главная » Статьи » Статьи » Для начинающих

    Основы 39dll
    В этой статье мы буде использовать 39dll.dll.

    Для начала рассмотрим функции создания tcp сервера:

    Перед использованием функций dll, нужно её инициализировать с помощью команды dllinit(0, true, true);
    Для того чтобы открыть порт, необходимо ввести команду tcplisten(port, maxp, true), где port это номер порта(желательно чтоб он был свободен), а maxp это максимальное колличество подключений к серверу. Если не удалось открыть порт, то эта функция вернёт false.

    Code
    dllinit(0, true, true);
    connect = tcplisten(12345, 32, true);
    if(!connect)
    {
      error_message("Не удалось запустить сервер");
      exit;
    }

    Когда к серверу подключается игрок, команда tcpaccept(connect, 1) вернёт адрес клиента.
    Обычно создают отдельный объект для игрока, которому присваивают адрес клиента, и проверяют, в нём, этот адрес на наличие сообщений.

    Code
    player = tcpaccept(connect, 1); 
    if(player)
    {
      playerid = //id игрока
      if(playerid < 0)exit;
      i = instance_create(0, 0, objPlayer);
      i.socketid = player;
    }

    Рассмотрим функции создания tcp клиента:

    Мы также должны инициализировать dll - dllinit(0, true, true);
    Чтобы подключится к серверу, используем команду tcpconnect(ip, port, 1), где ip - это ip адрес сервера, а port - это номер порта сервера.

    Code
    socket = tcpconnect(ip, port, 1);
    if(!socket)
    {
      show_message("Не удалось подключиться к серверу");
      game_end()
      exit;
    }

    Теперь самое главное, отправка и получение сообщений:

    Рассмотрим архитектуру записи данных в буфер dll;
    Функции начинающиеся на write записывают переменную в буфер;
    Рассмотрим основные виды этих функций:
    writebyte(var); - записывает число от 0 до 255 (1байт)
    writeshort(var); - записывает число от -32768 до +32767 (2байта)
    writeushort(var); - записывает число от 0 до +65536 (2байта)
    writestring(var); - записывает любую текстовую переменную (переменно)
    writeint(var); - записывает число от -2147483648 до +2147483647 (4байта)
    writeuint(var); - записывает число от 0 до +4294967296 (4байта)
    writedouble(); - записывает число от от -9223372036854775808 до 9223372036854775807 (8байт!) (Вам никогда это не потребуеться)
    Чем меньше вы используете байт в сообщении, тем меньше будет задержка.
    Функция clearbuffer(); чистит весь записанный буфер.
    Чтобы отправить записанное сообщение, существует команда sendmessage(adr), где adr - это адрес который возвращяют функции tcpaccept(listen, 1); и tcpconnect(ip, port, 1);

    Если записать сообщение:

    Code
    clearbuffer();
    writebyte(live); //допустим 96
    writebyte(wep_slot); //допустим 3
    writeushort(x); //допустим 654
    writeushort(y); //допустим 340
    sendmessage(adr);

    То в буфере адресата оно будет выглядеть так:

    Code
    96
    3
    654
    340

    Нужно его правильно раскодировать, для этого существуют аналогичные командытолько начинаются на read, и предназначены для чтения (эта команда считывают первую строчку и удаляет её, сдвигая весь список в верх):

    Code
    live=readbyte();
    wep_slot=readbyte();
    x=readushort();
    y=readushort();

    Материал для ознакомления: Download

    Категория: Для начинающих | Добавил: Romixal (02.10.2010)
    Просмотров: 2539 | Комментарии: 8 | Рейтинг: 5.0/1
    Всего комментариев: 8
    8  
    Заговор? Может параноя?)
    А про версию покупать не обязательно, кряк есть)

    7  
    t position 1: Unknown function or script: dllinit

    6  
    короче говоря мне он ошибку выдаёт и пишет что доступен толка в про версии. На холяву нечего не бывает даже в интернете.

    5  
    Это заговор парень. Некто тебе не поможет, как и мне. Все только унижать будут. Видимо решили что если каждый нуб будет делать онлайн игры, начнется апокалипсис =) {о как меня замучили}

    4  
    с версией 7 и 8 точно совместим. Нужно просто добавить в меню GM в разделе "выбрать пакеты расширения" 39DLL и тогда ее функции будут работать, а не выдавать ошибку.

    3  
    Ага статья и правда замечательная! Спасибо!

    2  
    Я скачал это 39dll иииии не знаю что с ним делать, там внутри есть файлы и справка, но я ваще не могу понять, куда 39DLL.dll кидать, в какую папку??? Везде пишут типа надо в гейм макере набрать dllinit и функции из библиотеки будут доступны в гейм мекере. Вот тока у меня после написания функций из 39dll принимаються за текст и пишеться ошибка))) Вот такой вот я нубаас, прогать на гамаке научился, а эту 39dll запустить не могу. Помогите советом))) Да и кстати, у меня Гамакер 8, 39 dll со всеми гамаками совместим????))

    1  
    Просто и познавательно. Отличная статья!

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    -->


    Логин:
    Пароль:

    Хостинг от uCoz