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

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

本贴由 wsok2015-03-11 发布. 版块名称: PW Вопросник

  1. TopicStarter Overlay

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

    帖子:
    606
    支持:
    174
    性别:
    Репутация:
    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
    支持:
    174
    性别:
    Репутация:
    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
    支持:
    174
    性别:
    Репутация:
    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
    支持:
    174
    性别:
    Репутация:
    3
    так как вопрос решен, советую тему переместить в документацию )
Черновик сохранён Черновик удалён

分享此页面