Gamedbd - Команды/параметры

follow

Пользователь
Пользователь
Регистрация
24 Окт 2019
Сообщения
37
Реакции
23
I. Содержание и структура
Насколько уже известно, игровые данные запакованы zlib-ом и представлены в формате Berkeley Database

II.Примеры работы с базой
Работать с базой не так сложно, как можно представить по началу, но всё же это стоит делать с максимальной осторожностью.
Запрос делается следующей командой напрямую к сервису базы

Bash:
./gamedbd gamesys.conf команда параметры

Команды параметров:
Код:
listrolebrief
// — список всех персонажей, в коротком формате:
// roleid,userid,name,occupation,level,exp,moneyall,r eputation

listuserbrief
// — список всех игроков, их голд + статистика:
// userid,rolelist,cash,money,cash_add,cash_buy,cash_ sell,cash_used,add_serial,use_serial,
// cash_current,exg_logcount

listfaction
// — кланы:
// fid,name,level,masterid,masterrole,member_size

listfactionuser
// — список игроков и персонажей, состоящих в кланах:
// rid,name,fid,cls,role,loyalty,nickname

listcity
// — информация о городах, кто захвачен, когда, кем, а также информация о ставках:
// id,level,owner,occupy_time,challenger,deposit,cuto ff_time,battle_time,bonus_time,color,status,timeou t,maxbonus

updateroles
// — должно обновить персонажей, сохранить последние изменения, не тестил

convertdb
// — т.к. база по-умолчанию упакована с помощью zlib, это одна из функций по конвертации

repairdb
// — аналогично mysql — восстановит побитые индексы или базу целиком (если есть бекап)

tablestat
// — сомнительно-полезная инфа о таблицах всей базы

tablestatraw
// — сомнительно-полезная инфа о таблицах всей базы

towdb
// — wbd и есть формат упакованных данных

tobdb
// — bdb — метод хранения данных — кому интересно курите википедию

compressdb
// — ?

decompressdb
// — ?

gennameidx
// — ?

listid tablename
// — выведет занятые ID у любой из таблиц
// например, ./gamedbd gamesys.conf listid user выведет занятые ID пользователей

rewritetable fromname toname
// — функция сомнительного названия, не проверял

rewritetable roleidfile fromname toname
// — функция сомнительного названия, не проверял

read tablename roleid
// — интересная штукенция, выведет двоичную инфу об персонаже
// например, ./gamedbd gamesys.conf read user 16

query roleid
// — выведет всю информацию о персонаже

merge dbdatapath
// слияние баз, полезно при переносе
// в параметре надо указать полный путь к старой папке с базой

listshoplog
// — лог голдшопа:
// roldid,order_id,item_id,expire,item_count,order_co unt,cash_need,time,guid1,guid2

findmaxsize dumpfilename
// — ?

Запрос делается командой
Bash:
./gamedbd.conv gamesys.conf команда параметра

Команды параметров:
  1. importclsconfig
  2. exportclsconfig
  3. clearclsconfig
  4. listrole
  5. listrolebrief
  6. listfaction
  7. listfactionuser
  8. listcity
  9. updateroles
  10. convertdb
  11. repairdb
  12. tablestat
  13. tablestatraw
  14. towdb
  15. tobdb
  16. compressdb
  17. decompressdb
  18. gennameidx
  19. query roleid
  20. merge dbdatapath

III. Ошибки и восстановление игровой базы

В архиве dbtool.zip (см. в приложении) имеется сомнительный сервис для восстановления и исправления базы данных dbtool.
Так же в архиве dbtool.zip (см. в приложении) имеется скрипт, который исправляет ошибки в новую базу[2] и заменяет базу[2] на старую базу[1].

С распакованными данными вам помогут следующие утилиты (~ пакеты в дебиане):


Код:
libdb-dev - Berkeley Database Libraries [development]
libdb-ruby1.8 - Interface to Berkeley DB for Ruby 1.8
libdb-ruby1.9 - Interface to Berkeley DB for Ruby 1.9
libdb4.2++-dev - Berkeley v4.2 Database Libraries for C++ [development]
libdb4.2++c2 - Berkeley v4.2 Database Libraries for C++ [runtime]
libdb4.2-dev - Berkeley v4.2 Database Libraries [development]
libdb4.2-ruby1.8 - transitional package for libdb-ruby1.8
libdb4.2-ruby1.9 - transitional package for libdb-ruby1.9
libdb4.2-tcl - Berkeley v4.2 Database Libraries for TCL [module]
libdb4.3-ruby1.8 - transitional package for libdb-ruby1.8
libdb4.3-ruby1.9 - transitional package for libdb-ruby1.9
libdb4.4-ruby1.8 - transitional package for libdb-ruby1.8
libdb4.5++ - Berkeley v4.5 Database Libraries for C++ [runtime]
libdb4.5++-dev - Berkeley v4.5 Database Libraries for C++ [development]
libdb4.5-dev - Berkeley v4.5 Database Libraries [development]
libdb4.5-java - Berkeley v4.5 Database Libraries for Java
libdb4.5-java-dev - Berkeley v4.5 Database Libraries for Java [development]
libdb4.5-java-gcj - Berkeley v4.5 Database Libraries for Java (native code)
libdb4.5-tcl - Berkeley v4.5 Database Libraries for TCL [module]
libdb4.6++ - Berkeley v4.6 Database Libraries for C++ [runtime]
libdb4.6++-dev - Berkeley v4.6 Database Libraries for C++ [development]
libdb4.6-dbg - Berkeley v4.6 Database Libraries [debug]
libdb4.6-dev - Berkeley v4.6 Database Libraries [development]
libdb4.6-java - Berkeley v4.6 Database Libraries for Java
libdb4.6-java-dev - Berkeley v4.6 Database Libraries for Java [development]
libdb4.6-java-gcj - Berkeley v4.6 Database Libraries for Java (native code)
libdb4.6-tcl - Berkeley v4.6 Database Libraries for TCL [module]

Весь список команд с gamedbd v156
C:
Compiled By developer, Dec 21 2015 14:00:33
Gamedbd version CNET 1.178

Usage: ./gamedbd conf-file
        [ importclsconfig | exportclsconfig | clearclsconfig | clearclswaypoint
        | importrolelist rolelistfilenamelist| exportrolelist roleidfilename rolelistfilename
        | printlogicuid | printunamerole zoneid | printunamefaction zoneid
        | gennameidx | exportunique zoneid
        | query roleid | exportrole roleid | importrole roleidfile | merge dbdatapath | mergewdb dbdatapath srczoneid
        | listrole | listrolebrief | listuserbrief | listfaction | listfactionuser | listfactionrelation | listroleinventory
        | listcity | listshoplog | listsyslog
        | updateroles | convertdb | repairdb
        | deletewaitdel | calcwaitdel

        | tablestat | tablestatraw | findmaxsize dumpfilename
        | read tablename id
        | rewritetable fromname toname | rewritedb
        | listid tablename | rewritetable roleidfile fromname toname
        | compressdb | decompressdb
        | walkalltable | exportgametalk outputdir
        | exportuserstore roleid | exportprofittime | abstractroles dbdatapath zoneid | delzoneplayers zoneid
        | setdbcrosstype type | listrolecrossinfo roleid | resetrolecrossinfo roleid remote_roleid data_timestamp cross_timestamp src_zoneid
        | syncplayername | returncash useridfile | importrecalluser useridfile | querywebtrade sn | queryglobalcontrol
        | getsignindata month | setclspvpflag flag | getrolelogindata year logicid | getuserlogindata year logicid
        | listfintask | listmnfactioninfo | listmnfactionapplyinfo | listmndomaininfo | clearmnfactionid | clearmnfacioncredit
        | importmnfactioninfo mnfactioninfofile | importmnfactionapplyinfo mnfactionapplyinfofile | importmndomaininfo mndomaininfofile
        | setmnfactionstate state_num | listsolochallengerank | clearsolochallengerank roleid zoneid
        | clearhomepraise | listhomeinfo home_id info_type | deletehome home_id | exporthome home_id | importhome home_id home_file ]

.OneFlash
 

Вложения

  • dbtool.zip
    467,8 KB · Просмотры: 11

Vice

Активный пользователь
Пользователь
Регистрация
2 Окт 2019
Сообщения
78
Реакции
39
Telegram
pokseaz
Работать с базой не так сложно, как можно представить по началу, но всё же это стоит делать с максимальной осторожностью.
всё же стоит сделать копию папки базы в backup и никакой осторожности не потребуется. наоборот появится возможность творить с базой, что душе угодно и вбивать команды, чтоб изучать по полной. еще можно в исходниках посмотреть, что делает не совсем понятная по описанию или не до конца изученная команда. я так смотрел исходник dbtools, там не очень все круто..
 
Сверху