1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Любая версия Packet Class PW

Тема в разделе 'PW Web', создана пользователем JonMagon, 6 мар 2015.

  1. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Позволяет собирать и читать пакеты на PHP.
    Слеплен на скорую руку. Приветствуются предложения.

    Структура:
    432.png

    Пример получения ника перса по его ID (в пакете есть и другая инфа, чтобы было, смотреть структуру GRoleBase), чтобы понять работу класса:
    PHP:
    <?
    include(
    "packet_class.php");
    $GetRoleBase = new WritePacket();
    $GetRoleBase -> WriteUInt32(-1); // always
    $GetRoleBase -> WriteUInt32(1024); // userid
    $GetRoleBase -> Pack(0xBC5);

    if (!
    $GetRoleBase -> Send("localhost"29400)) // send to gamedbd
    return;

    $GetRoleBase_Re = new ReadPacket($GetRoleBase); // reading packet from stream
    $packetinfo $GetRoleBase_Re -> ReadPacketInfo(); // read opcode and length
    $GetRoleBase_Re -> ReadUInt32(); // always
    $GetRoleBase_Re -> ReadUInt32(); // retcode
    $GetRoleBase_Re -> ReadUByte(); // version
    $GetRoleBase_Re -> ReadUInt32(); // id
    echo $GetRoleBase_Re -> ReadUString(); // show rolename
    ?>

    Вложения:

    Последнее редактирование: 8 мар 2015
    shadowvzs, Agi, Hardx и 10 другим нравится это.
  2. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    948
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    А в PHP разве нет перегрузки методов?

    Код:
        procedure Write(Value: Byte); overload;
        procedure Write(Value: SmallInt); overload;
        procedure Write(Value: Word); overload;
        procedure Write(Value: Integer); overload;
        procedure Write(Value: Cardinal); overload;
        procedure Write(Value: Int64); overload;
        procedure Write(Value: UInt64); overload;
        procedure Write(Value: Single); overload;
        procedure Write(Value: Real); overload;
        procedure Write(Value: Boolean); overload;
    
  3. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Кому как удобнее. Мне, например, так. Это как Int16/Word.
  4. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Там нет обязательного четкого приведения типов. В переменную можно кидать любые типы, или кастовать в нужный по необходимости (при различных операциях сложения и модификаций php может это делать сам), поэтому overload методы тут только добавят гемороя.

    Какой же это UInt если с минусом?)
    JonMagon нравится это.
  5. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Разницы все равно нет.
    Последнее редактирование: 18 апр 2015
  6. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    По поводу предложений: ввести 2 переменных done и overflow для проверки статуса после завершения чтения пакета. А также учесть при чтении, что чтение может продолжаться даже после выхода из размеров буфера и добавить соотв. проверки и возврат дефолтного нуля.
    JonMagon нравится это.
  7. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Сяп, добавлю, когда в очередной раз спонтанно накроет.
    int 3 нравится это.
  8. LiptoN[Triton] Пользователи

    Сообщения:
    441
    Лайки:
    209
    Пол:
    Мужской
    Репутация:
    2
    Страна:
    Russian Federation Russian Federation
    ChatBroadCast
    --- добавлено: 6 мар 2015 в 21:54 ---
    Последнее редактирование модератором: 14 мар 2015
    Vorobey и JonMagon нравится это.
  9. TopicStarter Overlay

    JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    UPD (thnx @vieraw):
    • Удалена WriteInt32
    • Удалена WriteString
    • Буфер увеличен до 128 кбайт
    • Свойства объявлены как public
    • Переписана функция упаковки в CUInt32
    Merfy и 10000 нравится это.
  10. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    948
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Преложение к размышлению: так же можно читать не через буфер, а напрямую из сокета.
    JonMagon нравится это.
Черновик сохранён Черновик удалён
Similar Threads
  1. Quba

    1.2.6 (1.3.4) Mercedes-Benz G-class

    Ответов:
    1
    Просмотров:
    2.092
Загрузка...

Поделиться этой страницей