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

1.5.1 (101) как узнать online перса

Тема в разделе 'PW Вопросник', создана пользователем alexp, 25 фев 2015.

  1. TopicStarter Overlay

    alexp Программист Пользователи

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    Смотрим 1й топик и не ругаемся.
    Ну и вот! Чего и требовалось давно... Но почему-то у всех просто руки отваливались от такого простого вопроса.
  2. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    А какой смысл вам помогать? Вы не пользуетесь поиском, есть темы в которых расписано это все. Вы ничего не вынесли из прошлых тем, и в этой Алекс уже говорил про порядок байт. И самое главное вы взяли готовый код для получения персонажей онлайн и не смогли его использовать. Ну и какой в этом смысл?
    alexdnepro, 10000 и JonMagon нравится это.
  3. TopicStarter Overlay

    alexp Программист Пользователи

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    если бы он работал, то вопросов бы не было :)

    не противоречьте себе.

    действительно, создаю темы, чтобы поспамить :(

    Смысл есть во всем... я повторюсь:
  4. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Я думаю он хотел сказать примерно следующее: есть достаточно много информации и подобных тем, и не смотря на это вам дали ответы, практически тыкнули носом, но в ответ - "Не посылайте меня читать то, что я учил 20 лет назад. Я спросил простую вещь и ждал простой ответ", т.е. Вам лень потратить 10 минут времени, чтобы ознакомиться с информацией по ссылке, и считаете, что кто-то другой горит желанием предоставить полностью готовое решение. Такие действия новичков (на форуме) всегда вызывают подобную реакцию пользователей, т.к. Вы далеко не первый, который задает подобные вопросы.
    Evolution, JonMagon и int 3 нравится это.
  5. TopicStarter Overlay

    alexp Программист Пользователи

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    О, с этим я вполне согласен :) И потому не обижаюсь на подобную реакцию :) Просто я считаю что "тыкнули носом" не совсем верно. В справке есть варианты как упаковать. Но ведь не сказано каким способом формируются пакеты именно для ПВ. Если бы вопрос был чисто по программной реализации, то я бы сюда и не совался. Но ведь рассчитывал на знающих людей именно в области PW. Кодить учить меня не надо, меня интересуют тонкости формирования пакетов. И всё. Тыкните меня где лежит описание правильного формирования пакетов и я забуду дорогу сюда :) По крайней мере на время... ;)
    10000 нравится это.
  6. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Как делал я, и наверняка многие другие:
    1. Берем снифер пакетов
    2. Ловим нужный пакет на gamedbd (29400) или gdelivey (29100) например при входе в мир или другом нужном действии.
    3. Смотрим и изучаем его.
    Общая картина формирования пакетов такая:
    PID - CUInt айди пакета
    PLen - CUInt полный размер пакета
    на GameDB практически на всех пакетах фиксированное число 2147483648 или 2147483649 UInt32 (для чего оно не вникал, мб это localsid)
    далее сам пакет по структуре.
    При коннекте к деливери - сразу считываем данные перед отправкой своего пакета, чтобы получить потом ответ, а не то, что отправляется при коннекте.
    Структуры всех пакетов есть в дебаг символах gamedb и gdeliveryd
    У меня все.
    Mr.Fleks и NEO нравится это.
  7. JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Дополнение на случай, если тс запросит готовые функции для работы с куинтами:
    GNET::Marshal::OctetsStream::compact_uint32(Marshal::OctetsStream *const this, unsigned int x)
    GNET::Marshal::OctetsStream::uncompact_uint32(const Marshal::OctetsStream *const this, const unsigned int *const x)
  8. TopicStarter Overlay

    alexp Программист Пользователи

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    хех... ребят, читаю и улыбаюсь :)
    Проблему я решил и она была вовсе не в формировании пакета. Что интересно, 1й пакет проходит даже такой:
    Код:
    $packdata = pack("N*", 0, 0, 0) . "\x00\x00";
    И что бы вы не говорили о правильности упаковки и порядке составляющих... туфта это все!!! Не в этом причина была.
    Нет, я не хочу сказать, что вы в целом не правы. Паковать надо так, как надо, это факт!!

    А теперь объясните мне, пожалуйста, почему при коннекте к порту 29100 первым в него прилетает (даже без отправки туда чего-либо) пакет с номером x84 ?
    Вот именно из-за него я ничего путного не получал. Выход примерно такой:
    Код:
    $rb = socket_recv($sock, $buf, 8192, 0); // 132
    $sb = socket_send($sock, $sp, 8192, 0); //352
    $rb = socket_recv($sock, $buf, 8192, 0); //353
  9. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Прочитай внимательно мое сообщение выше.
  10. TopicStarter Overlay

    alexp Программист Пользователи

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    Видел... но эту проблему я решил чуть раньше сам. Но, все равно респект и спасибо!!
    И еще, по теме. Для проверки определенных персов на мой взгляд гораздо проще опкод 7с (не знаю как он называется). Именно его я искал. И не надо перебирать списки... ну это так, к сведению.
  11. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    124 это GMQueryRoleInfo
    Параметров запроса не нашел, а ответ простой
    Код:
    type = struct GMQueryRoleInfoRes {
        int status;
    }
    Как будет время проверю его, а также версии, на которых он работает.
  12. Тыщ Группа анонимных алкоголиков Art Old school Пользователи

    Сообщения:
    1.573
    Лайки:
    812
    Пол:
    Мужской
    Репутация:
    2
    А еще во френдлисте есть,там и онлайн и лвл и локация
  13. TopicStarter Overlay

    alexp Программист Пользователи

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    Запрос:
    Код:
    int Info
    int IdRole
    Как-то так... В любом случае экономичнее. И перебирать не надо :) Запрос-ответ.
Черновик сохранён Черновик удалён

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