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

1.5.1 (101) как получить по ид перса, информацию о его клане(ид клана)?

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

  1. TopicStarter Overlay

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

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    собственно сабж, так и не понял как это сделать. в пакетах, которые получают информацию о персах аккаунта отсутствует информация о клане. Вообще ищу возможность пакетно вытянуть айди клана, в котором состоит перс. Пакет factioninfo к сожалению в качестве аргумента для поиска принимает только айди клана, т.е. найти нужный клан по айди перса не выйдет...

    интересует именно пакетное решение.
  2. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Пакет 3005, в ответе структура GRoleDetail
  3. Stranger B L A C K    L I S T Пользователи

    Сообщения:
    71
    Лайки:
    66
    Репутация:
    0
    Улыбнулся, увидев структуру (учитывая то, как wsok разбирает пакеты). Правильно, пусть наслаждается процессом :D
    P.S. Есть еще RPC_GETUSERFACTION = 0x11FF
    alexdnepro нравится это.
  4. TopicStarter Overlay

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

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    с помощью класса от Desmond Hume удалось получить следующий код, по идее, который позволяет получить айди клана, но... айди не получаю, что странно...

    Код:
    <?
    require_once("packet_class.php");
    $GetRole = new WritePacket();
    $GetRole -> WriteUInt32(-1);
    $GetRole -> WriteUInt32(1024);
    $GetRole -> WriteUInt32(0); // mask ???
    $GetRole -> Pack(0xBBD);
    
    if (!$GetRole -> Send("localhost", 29400))
    return;
    
    $GetRole_Re = new ReadPacket($GetRole);
    $GetRole_Re -> ReadPacketInfo();
    $GetRole_Re -> ReadUInt32();
    $GetRole_Re -> ReadUInt32(); // retcode
    $GetRole_Re -> ReadUInt32(); // mask ???
    $GetRole_Re -> ReadUByte(); // gameserver_id ???
    // GRoleDetail start
    $GetRole_Re -> ReadUByte(); // char
    $GetRole_Re -> ReadUInt32(); // id
    $GetRole_Re -> ReadUInt32(); // userid
    // GRoleStatus start
    $GetRole_Re -> ReadUByte(); // version
    $GetRole_Re -> ReadUInt32(); // level
    $GetRole_Re -> ReadUInt32(); // level2
    $GetRole_Re -> ReadUInt32(); // exp
    $GetRole_Re -> ReadUInt32(); // sp
    $GetRole_Re -> ReadUInt32(); // pp
    $GetRole_Re -> ReadUInt32(); // hp
    $GetRole_Re -> ReadUInt32(); // mp
    $GetRole_Re -> ReadFloat(); // posx
    $GetRole_Re -> ReadFloat(); // posy
    $GetRole_Re -> ReadFloat(); // posz
    $GetRole_Re -> ReadUInt32(); // worldtag
    $GetRole_Re -> ReadUInt32(); // invader_state
    $GetRole_Re -> ReadUInt32(); // invader_time
    $GetRole_Re -> ReadUInt32(); // pariah_time
    $GetRole_Re -> ReadUInt32(); // reputation
    $GetRole_Re -> ReadOctets(); // custom_status
    $GetRole_Re -> ReadOctets(); // filter_data
    $GetRole_Re -> ReadOctets(); // charactermode
    $GetRole_Re -> ReadOctets(); // instancekeylist
    $GetRole_Re -> ReadUInt32(); // dbltime_expire
    $GetRole_Re -> ReadUInt32(); // dbltime_mode
    $GetRole_Re -> ReadUInt32(); // dbltime_begin
    $GetRole_Re -> ReadUInt32(); // dbltime_used
    $GetRole_Re -> ReadUInt32(); // dbltime_max
    $GetRole_Re -> ReadUInt32(); // time_used
    $GetRole_Re -> ReadOctets(); // dbltime_data
    $GetRole_Re -> ReadUInt16(); // storesize
    $GetRole_Re -> ReadOctets(); // petcorral
    $GetRole_Re -> ReadOctets(); // property
    $GetRole_Re -> ReadOctets(); // var_data
    $GetRole_Re -> ReadOctets(); // skills
    $GetRole_Re -> ReadOctets(); // storehousepasswd
    $GetRole_Re -> ReadOctets(); // waypointlist
    $GetRole_Re -> ReadOctets(); // coolingtime
    $GetRole_Re -> ReadOctets(); // npc_relation
    $GetRole_Re -> ReadOctets(); // multi_exp_ctrl
    $GetRole_Re -> ReadOctets(); // storage_task
    $GetRole_Re -> ReadOctets(); // faction_contrib
    $GetRole_Re -> ReadOctets(); // force_data
    $GetRole_Re -> ReadOctets(); // online_award
    $GetRole_Re -> ReadOctets(); // profit_time_data
    $GetRole_Re -> ReadOctets(); // country_data
    $GetRole_Re -> ReadOctets(); // king_data
    $GetRole_Re -> ReadOctets(); // meridian_data
    $GetRole_Re -> ReadOctets(); // extraprop
    $GetRole_Re -> ReadOctets(); // title_data
    $GetRole_Re -> ReadOctets(); // reincarnation_data
    $GetRole_Re -> ReadOctets(); // realm_data
    $GetRole_Re -> ReadUByte(); // reserved2
    $GetRole_Re -> ReadUByte(); // reserved3
    // GRoleStatus end
    $GetRole_Re -> ReadUString(); // name
    $GetRole_Re -> ReadUInt32(); // race
    $GetRole_Re -> ReadUInt32(); // cls
    $GetRole_Re -> ReadUInt32(); // spouse
    $GetRole_Re -> ReadUByte(); // gender
    $GetRole_Re -> ReadUInt32(); // create_time
    $GetRole_Re -> ReadUInt32(); // lastlogin_time
    $GetRole_Re -> ReadUInt32(); // cash_add
    $GetRole_Re -> ReadUInt32(); // cash_total
    $GetRole_Re -> ReadUInt32(); // cash_used
    $GetRole_Re -> ReadUInt32(); // cash_serial
    echo "FactionID: " . $GetRole_Re -> ReadUInt32() . "<br>"; // factionid
    echo "FactionRole: ". $GetRole_Re -> ReadUInt32(); // factionrole
    ?>
    JonMagon нравится это.
  5. JonMagon Программист Пользователи Open Source Contributor

    Сообщения:
    805
    Лайки:
    809
    Пол:
    Мужской
    Репутация:
    5
    Страна:
    Germany Germany
    Просто это один из немногих пакетов, в которых китайцы наделали какую-то каку.
    И приходится иногда лезть в дизасм и смотреть, что происходит внутри функции.
    423.png
    А потому, та самая маска должна равняться 0x20
    PHP:
    <?
    require_once(
    "packet_class.php");
    $GetRole = new WritePacket();
    $GetRole -> WriteUInt32(-1);
    $GetRole -> WriteUInt32(1024);
    $GetRole -> WriteUInt32(0x20); // mask
    $GetRole -> Pack(0xBBD);

    if (!
    $GetRole -> Send("localhost"29400))
    return;

    $GetRole_Re = new ReadPacket($GetRole);
    $GetRole_Re -> ReadPacketInfo();
    $GetRole_Re -> ReadUInt32();
    $GetRole_Re -> ReadUInt32(); // retcode
    $GetRole_Re -> ReadUInt32(); // mask
    $GetRole_Re -> ReadUByte(); // gameserver_id ???
    // GRoleDetail start
    $GetRole_Re -> ReadUByte(); // char
    $GetRole_Re -> ReadUInt32(); // id
    $GetRole_Re -> ReadUInt32(); // userid
    // GRoleStatus start
    $GetRole_Re -> ReadUByte(); // version
    $GetRole_Re -> ReadUInt32(); // level
    $GetRole_Re -> ReadUInt32(); // level2
    $GetRole_Re -> ReadUInt32(); // exp
    $GetRole_Re -> ReadUInt32(); // sp
    $GetRole_Re -> ReadUInt32(); // pp
    $GetRole_Re -> ReadUInt32(); // hp
    $GetRole_Re -> ReadUInt32(); // mp
    $GetRole_Re -> ReadFloat(); // posx
    $GetRole_Re -> ReadFloat(); // posy
    $GetRole_Re -> ReadFloat(); // posz
    $GetRole_Re -> ReadUInt32(); // worldtag
    $GetRole_Re -> ReadUInt32(); // invader_state
    $GetRole_Re -> ReadUInt32(); // invader_time
    $GetRole_Re -> ReadUInt32(); // pariah_time
    $GetRole_Re -> ReadUInt32(); // reputation
    $GetRole_Re -> ReadOctets(); // custom_status
    $GetRole_Re -> ReadOctets(); // filter_data
    $GetRole_Re -> ReadOctets(); // charactermode
    $GetRole_Re -> ReadOctets(); // instancekeylist
    $GetRole_Re -> ReadUInt32(); // dbltime_expire
    $GetRole_Re -> ReadUInt32(); // dbltime_mode
    $GetRole_Re -> ReadUInt32(); // dbltime_begin
    $GetRole_Re -> ReadUInt32(); // dbltime_used
    $GetRole_Re -> ReadUInt32(); // dbltime_max
    $GetRole_Re -> ReadUInt32(); // time_used
    $GetRole_Re -> ReadOctets(); // dbltime_data
    $GetRole_Re -> ReadUInt16(); // storesize
    $GetRole_Re -> ReadOctets(); // petcorral
    $GetRole_Re -> ReadOctets(); // property
    $GetRole_Re -> ReadOctets(); // var_data
    $GetRole_Re -> ReadOctets(); // skills
    $GetRole_Re -> ReadOctets(); // storehousepasswd
    $GetRole_Re -> ReadOctets(); // waypointlist
    $GetRole_Re -> ReadOctets(); // coolingtime
    $GetRole_Re -> ReadOctets(); // npc_relation
    $GetRole_Re -> ReadOctets(); // multi_exp_ctrl
    $GetRole_Re -> ReadOctets(); // storage_task
    $GetRole_Re -> ReadOctets(); // faction_contrib
    $GetRole_Re -> ReadOctets(); // force_data
    $GetRole_Re -> ReadOctets(); // online_award
    $GetRole_Re -> ReadOctets(); // profit_time_data
    $GetRole_Re -> ReadOctets(); // country_data
    $GetRole_Re -> ReadOctets(); // king_data
    $GetRole_Re -> ReadOctets(); // meridian_data
    $GetRole_Re -> ReadOctets(); // extraprop
    $GetRole_Re -> ReadOctets(); // title_data
    $GetRole_Re -> ReadOctets(); // reincarnation_data
    $GetRole_Re -> ReadOctets(); // realm_data
    $GetRole_Re -> ReadUByte(); // reserved2
    $GetRole_Re -> ReadUByte(); // reserved3
    // GRoleStatus end
    $GetRole_Re -> ReadUString(); // name
    $GetRole_Re -> ReadUInt32(); // race
    $GetRole_Re -> ReadUInt32(); // cls
    $GetRole_Re -> ReadUInt32(); // spouse
    $GetRole_Re -> ReadUByte(); // gender
    $GetRole_Re -> ReadUInt32(); // create_time
    $GetRole_Re -> ReadUInt32(); // lastlogin_time
    $GetRole_Re -> ReadUInt32(); // cash_add
    $GetRole_Re -> ReadUInt32(); // cash_total
    $GetRole_Re -> ReadUInt32(); // cash_used
    $GetRole_Re -> ReadUInt32(); // cash_serial
    echo "FactionID: " $GetRole_Re -> ReadUInt32() . "<br>"// factionid
    echo "FactionRole: "$GetRole_Re -> ReadUInt32(); // factionrole 2 - Master ... 6 - Member
    ?>
    wsok нравится это.
  6. TopicStarter Overlay

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

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    во! теперь все пашет. Вот оно что, китайцы намудрили )) Их понять можно только с их интеллектом... Хм, Десмонд, ты случаем не Китаец? )))
  7. JonMagon Программист Пользователи Open Source Contributor

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

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Мы не ищем легких путей) А в GRoleDetail много полезной информации, которая может потом пригодиться.
    Stranger нравится это.
  9. TopicStarter Overlay

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

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    так как вопрос решен, советую тему переместить в документацию )
Черновик сохранён Черновик удалён

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