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

Результаты поиска

  1. Evgeniy
    GameDB daemon - один из демонов pw, его задача предоставлять внутриигровые данные (не относится к sql-данным аккаунта). GDB основан на встраиваемой базе данных Berkeley DB [1], что позволяет демону достаточно быстро оперировать данными. Протокол Общение с игровой базой осуществляется по строго определенному RPC-протоколу [2]. Чтобы осуществить какую-либо операцию с игровой базой нужно знать опкод-пакета [3] и типы принимаемых аргументов, вызываемой функции. Тело RPC в pw выглядит следующим образом: CUInt opcode;//opcode-процедуры (CUInt см. ниже) CUInt length;//количество байт, используемые для аргументов ...//аргументы Пример: Получить информацию о персонаже, зная его id (GetRoleData). Мы знаем что opcode этой операции = 8003, функция на входе получает sid и rid: CUInt opcode = 8003; CUInt length = 8; Int32 sid = 1; Int32 rid = 1024; Зная опкоды и аргументы функций можно манипулировать данными игровой базы: от просмотра информации о персонаже/карты сражений, до внесения изменений в инвентарь и изменения списка друзей. Список разобранных протоколов участниками иследовательской ветви можно найти здесь Список опкодов v1.2.6 115 GetTaskDataRpc 135 PutTaskDataRpc 200 PutFriendList 201 GetFriendList 215 PutMessage 216 GetMessage 413 DBStockBalance 414 DBStockTransaction 415 DBStockLoad 416 DBStockCommission 417 DBStockCancel 514 GetAddCashSN 611 DBSellPoint 612 DBSyncSellInfo 613 DBSellTimeout 614 DBSellCancel 615 DBBuyPoint 618 DBTransPointDeal 810 DBAuctionOpen 811 DBAuctionBid 812 DBAuctionList 813 DBAuctionGet 814 DBAuctionTimeout 815 DBAuctionClose 863 DBBattleLoad 864 DBBattleSet 865 DBBattleChallenge 868 DBBattleEnd 871 DBBattleMail 872 DBBattleBonus 3001 PutUser 3002 GetUser 3003 DelUser 3005 GetRole 3006 DelRole 3007 DBCreateRole 3008 DBDeleteRole 3009 DBUndoDeleteRole 3012 PutRoleBase 3013 GetRoleBase 3014 PutRoleStatus 3015 GetRoleStatus 3016 PutRoleEquipment 3017 GetRoleEquipment 3018 PutRoleTask 3019 GetRoleTask 3020 TradeInventory 3021 TradeSave 3022 GetMoneyInventory 3023 PutMoneyInventory 3024 PutRole 3025 GetRoleBaseStatus 3026 PutRoleStorehouse 3027 GetRoleStorehouse 3030 PutRoleForbid 3031 GetRoleForbid 3032 GetUserRoles 3033 GetRoleId 3034 TransactionAcquire 3035 TransactionAbort 3036 TransactionCommit 3043 ClearStorehousePasswd 3044 RenameRole 3047 CanChangeRolename 3049 GetRoleInfo 3050 PutRolePocket 3051 GetRolePocket 3100 DBSetCashPassword 4047 PutSpouse 4251 DBGetMailList 4252 DBGetMail 4253 DBGetMailAttach 4254 DBSetMailAttr 4255 DBSendMail 4256 DBDeleteMail 4600 AddFaction 4601 DelFaction 4602 AddMember 4603 DelMember 4604 UpdateUserFaction 4605 UpdateFaction 4606 GetFactionInfo 4607 GetUserFaction 4608 GetFactionDetail 4609 DBVerifyMaster 4610 DBFactionUpgrade 4611 DBFactionPromote Типы данных используемых игровой базой: CUInt (Compact UInt) - особый китайский целочисленный без знаковый тип данных , не фиксированной длины, часто встречается в pw, чаще всего выступает размером чего-либо. Byte, Int16, Int32, UInt16, UInt32 - при общении с базой для целочисленных переменных она использует little-endian порядок байт [2]. Если же переменная является частью октета - то здесь напротив прямой порядок байт. Октеты - октеты (массив байт [3]) в gdb используются для хранения сериализованных другими демонами данными (напр. в GRoleStatus поле multi_exp_ctrl хранится в октетах, т.к. это тип сериализирован gs'ом, игровая база не знает о структуре этого типа). Тело октета выглядит так: CUInt length; //в начале октета идет размер массива байт byte[length] data;//последовательность байт, в том количестве, что указанно в length Вектор - одномерный массив, индексация которого строго начинается с нуля [4]. В игровой базе ни раз встречается этот тип данных (прим. GRoleBase->Forbid). Здесь он выполняет роль массива для некоторых типов. Тело вектора: CUint32 length;//Размер вектора T[length] data;//Массив этих типов DateTime - время и дата хранятся в виде UNIX-timestamp (количество секунд прошедших с полуночи 1 января 1970 года [5]). Хранится время в UInt32 (прим. GRoleBase->create_time) TimeSpan - интервал времени, так же хранит количество секунд в UInt32 (прим. GRoleStatus->multi_exp_ctrl->enhance_time) Строки - строки в gdb сериализованны в виде октетов. Строки хранятся в Unicode'e © dev.pwlab.ru
    Автор темы: Evgeniy, 22 дек 2013, ответов - 0, в разделе: PW Документация
  2. Evgeniy
    PwModelViewer - приложение, результат труда ветви, способен открывать *ski файлы, подгружать текстуры, рендерить представление объектов. Версия: 1.0 (бета) На данный момент PMV может: Загрузить ski-модель Загрузить пак моделей (указывается папка напр. "models.pck.files\") все файлы имеющие разрешения *.ski будут загружены в программу и при просмотре будет доступно перелистывание Получить путь к модели, по шаблону, используемый в elements.data Экспортировать модель в *.obj формат (создается пак из: obj-файла геометрии, mtl-файл метриал и пронумерованные текстуры в png) Экспорт рендер модели с прозрачностью в png-файл Так же выводиться информация хранимая в ski-файле: наименование текстур, наименование мэшей, кости и материалы. Как использовать: Вы можете по средствам Windows ассоциировать программу с ski файлами, чтобы просматривать необходимый файл, так же программа поддерживает "drag&drop", благодаря чему, вы можете получать рендер модели перетаскиванием ski-файла в окно приложения. В программе предусмотрены следующие комбинации клавиш: Control+S - экспортировать модель: *.obj| *.objz| *.png Control+O - открывает диалоговое окно, где вам необходимо указать путь к директории. Указанная директория будет использоваться как пак-моделей. Control+С - получает игровой путь к файлам (см. выше) [IMG] [IMG] Требования: .net framework 4.5 Скачать: Версия 1.0 Вирустотал. Не уверен, но вроде ругается на обфускатор, попробую скомпилировать на чистой машине
    Автор темы: Evgeniy, 21 дек 2013, ответов - 7, в разделе: PW Разработки
  3. Evgeniy
  4. Evgeniy
  5. Evgeniy
    Тема

    pwucp

    Срочно продам 4 экземпляра по 3к.р., или 3 экземпляра по 4к.р. Скилы в хтмл верстке низкие, поэтому если дизайн вызывает рвотные рефлексы, бесплатно адаптирую сайт под ваш дизайн Скрины и коментарии: 1. Страница персонажа: [ATTACH] 2. Авторизация (здесь все банально) [ATTACH] 3. Страница персонажа после авторизации, ну здесь все тоже предельно банально, ссылка в виде ника ведет к текущему персонажу на аккаунте [ATTACH] 4. Меню выбора персонажа (для того чтобы сменить текущего персонажа, дает мало преимуществ (к примеру подать в заявку в клан от имени текущего персонажа, ну и актуальные ссылки действую для выбранной роли) [ATTACH] 5. Супруга, здесь можно посмотреть базовую информацию о супруге [ATTACH] 6. Список друзей, банальный список из которого пожно перейти к любому другу персонажа на страницу [ATTACH] 7. Страница клана, здесь можно получить список членов клана, варов/альянсов, лидер клана ну и оформление титульной страницы клана (ее устанавливает мастер) [ATTACH] 8. Состав - члены клана, при переходе по одному будет высвечена более подробная информация список [ATTACH] детальная информация [ATTACH] 9. Руководители клана (здесь список по должностям) [ATTACH] Конечный функционал не ограничен только приведенными выше возможностями. На данный момент так же с информацией о персонаже передается его шмот, но на сайте я этого не реализовал т.к. самое красивое что я смог сделать это скопировать куклу с пв, но такое отображение было не очень красивым и информация о персонаже начинало приобретать вид "деревенского тюнинга автомобился" где все бескусно собрано в одном месте, если вы пожелаете добавить куклу, то я не сомнено помогу вам адаптировать ее под ваш дизайн. Так же была идея реализовать заявку в клан, но по каким параметрам можно фильтровать заявки я не придумал, стыдно было выкладывать реализацию с "ограничение по минимальному уровню", так что если вы пожелаете увидеть это в своем продукте то несомненно реализую, так же реализую какие то персональные плагины, но стоит учесть, что мега сложные плагины могут сказаться так же на производительности. Так на пример пришлось помимо стандартного списка клана пришлось для каждого члена клана дергать информацию чтобы получить пол Соединение естественно с gamedbd, запросы кешируются на время установленное вами, все потокобезопасно (мои тесты выявили только один практический не возможный момент и тот был пофиксен), и даже если возникнут какие то проблемы со стабильностью сразу же устраню ее. Забегая вперед, нет это не php, и если вас пугают проблемы с эксплуатацией, как сказал выше установлю/настрою покажу сам.
    Автор темы: Evgeniy, 21 апр 2013, ответов - 5, в разделе: Продам