S3DBInterface.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:16k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //#include "kstdafx.h"
  2. #ifndef S3DBINTERFACE_H
  3. #define S3DBINTERFACE_H
  4. #define IN
  5. #define OUT
  6. #include <map>
  7. #include <string>
  8. #include <vector>
  9. #include "KProtocol.h"
  10. //#define SAVE_ITEM_MAGICATTRIB_TO_DB
  11. class KTabFileCtrl;
  12. class KIniFile;
  13. enum ROLE_LOG
  14. {
  15. log_create_role = 1,
  16. log_begin_game,
  17. log_save_game,
  18. };
  19. enum 
  20. {
  21. create_role,  //if already have this rolename then msg error!;
  22. save_role,   //if havent this rolename in db ,then msg error!
  23. };
  24. enum
  25. {
  26. must_norole,
  27. must_haverole,
  28. nolimited,
  29. };
  30. struct TIntDBValue
  31. {
  32. BYTE btUnitType;
  33. };
  34. struct TRoleBaseInfo
  35. {
  36. //RoleBaseInfo
  37. DWORD dwId;
  38. char szName[32];
  39. bool bSex;
  40. char szAlias[32];
  41. char caccname[32];
  42. BYTE nFirstSect;
  43. BYTE nSect;
  44. int ijoincount;
  45. int isectrole;
  46. int igroupcode;
  47. int igrouprole;
  48. int irevivalid;
  49. char cpartnercode[32];
  50. int isavemoney;
  51. int imoney;
  52. int ifiveprop;
  53. int iteam;
  54. int ifightlevel;
  55. int fightexp;
  56. int ileadlevel;
  57. int ileadexp;
  58. int iliveexp;
  59. int ipower;
  60. int iagility;
  61. int iouter;
  62. int iinside;
  63. int iluck;
  64. int imaxlife;
  65. int imaxstamina;
  66. int imaxinner;
  67. int ileftprop;
  68. int ileftfight;
  69. int ileftlife;
  70. int ifinishgame;
  71. int irevivalx;
  72. int irevivaly;
  73. short iarmorres;
  74. short iweaponres;
  75. short ihelmres;
  76. };
  77. struct TRoleData
  78. {
  79. TRoleBaseInfo BaseInfo;
  80. bool bBaseNeedUpdate;//通知是否需要更新
  81. //当存取时如果Offset等于-1,表示不更新该数据
  82. //Additional Info
  83. short nFightSkillCount;
  84. short nLiveSkillCount;
  85. BYTE nTaskCount;
  86. short nItemCount;
  87. short nFriendCount;
  88. int dwTaskOffset;
  89. int dwLSkillOffset;
  90. int dwFSkillOffset;
  91. int dwItemOffset;
  92. int dwFriendOffset;
  93. int dwDataLen;
  94. BYTE pBuffer[1];
  95. };
  96. struct TDBTaskData
  97. {
  98. BYTE m_nTaskId;
  99. int m_nTaskValue;
  100. };
  101. struct TDBItemData
  102. {
  103. //BaseInfo
  104. int iid;
  105. int iequipclasscode;
  106. int ilocal;
  107. int ix;
  108. int iy;
  109. int iequipcode;
  110. int idetailtype;
  111. int iparticulartype;
  112. int ilevel;
  113. int iseries;
  114. int iequipversion;
  115. int irandseed;
  116. int iparam2;
  117. int iparam3;
  118. int iparam5;
  119. int iparam4;
  120. int iparam6;
  121. int iparam1;
  122. int ilucky;
  123. int iidentify;
  124. #ifdef SAVE_ITEM_MAGICATTRIB_TO_DB
  125. BYTE BaseInfoCount;
  126. BYTE EfficCount;
  127. BYTE RequireInfoCount;
  128. BYTE pBuffer[1];
  129. #endif
  130. };
  131. struct TDBFriendsData
  132. {
  133. short FriendCount;
  134. void * pBuffer;
  135. short Offset[1];
  136. };
  137. struct TDBSkillData
  138. {
  139. short m_nSkillId;
  140. short m_nSkillLevel;
  141. };
  142. enum 
  143. {
  144. /*==============================================================*/
  145. /* Table: EquipBaseInfo                                         */
  146. /*==============================================================*/
  147.    EQUIPBASEINFO_IID                                             ,
  148.    EQUIPBASEINFO_IMAINID                                        ,
  149.    EQUIPBASEINFO_ICLASS                                      ,
  150.    EQUIPBASEINFO_IVALUE1                        ,
  151.    EQUIPBASEINFO_IVALUE2                        ,
  152.    EQUIPBASEINFO_IVALUE3                        ,
  153. /*==============================================================*/
  154. /* TABLE: EQUIPEFFICINFO_                                        */
  155. /*==============================================================*/
  156.    EQUIPEFFICINFO_IID                                             ,
  157.    EQUIPEFFICINFO_IMAINID                                        ,
  158.    EQUIPEFFICINFO_ICLASS                                      ,
  159.    EQUIPEFFICINFO_IVALUE1                        ,
  160.    EQUIPEFFICINFO_IVALUE2                        ,
  161.    EQUIPEFFICINFO_IVALUE3                        ,
  162. /*==============================================================*/
  163. /* TABLE: EQUIPREQUIREINFO_                                     */
  164. /*==============================================================*/
  165.    EQUIPREQUIREINFO_IID                                             ,
  166.    EQUIPREQUIREINFO_IMAINID                                        ,
  167.    EQUIPREQUIREINFO_ICLASS                                      ,
  168.    EQUIPREQUIREINFO_IVALUE1                        ,
  169.    EQUIPREQUIREINFO_IVALUE2                        ,
  170.    EQUIPREQUIREINFO_IVALUE3                        ,
  171. /*==============================================================*/
  172. /* TABLE: EQUIPMENTS                                            */
  173. /*==============================================================*/
  174.    EQUIPMENTS_IID                                             ,
  175.    EQUIPMENTS_CUSERCODE                                         ,
  176.    EQUIPMENTS_IEQUIPCLASSCODE                                   ,
  177.    EQUIPMENTS_ILOCAL                                      ,
  178.    EQUIPMENTS_IX                                            ,
  179.    EQUIPMENTS_IY                                            ,
  180.    EQUIPMENTS_IEQUIPCODE                                     ,
  181.    EQUIPMENTS_IDETAILTYPE                    ,
  182.    EQUIPMENTS_IPARTICULARTYPE                ,
  183.    EQUIPMENTS_ILEVEL                         ,
  184.    EQUIPMENTS_ISERIES                        ,
  185.    EQUIPMENTS_IEQUIPVERSION                  ,
  186.    EQUIPMENTS_IRANDSEED                      ,
  187.    EQUIPMENTS_IPARAM2                        ,
  188.    EQUIPMENTS_IPARAM3                        ,
  189.    EQUIPMENTS_IPARAM5                        ,
  190.    EQUIPMENTS_IPARAM4                        ,
  191.    EQUIPMENTS_IPARAM6                        ,
  192.    EQUIPMENTS_IPARAM1                        ,
  193.    EQUIPMENTS_ILUCKY                         ,
  194.  
  195. /*==============================================================*/
  196. /* TABLE: FIGHTSKILL                                            */
  197. /*==============================================================*/
  198.    FIGHTSKILL_IID                                             ,
  199.    FIGHTSKILL_CUSERCODE                                         ,
  200.    FIGHTSKILL_IFIGHTSKILL                                 ,
  201.    FIGHTSKILL_IFIGHTSKILLLEVEL                            ,
  202. /*==============================================================*/
  203. /* TABLE: FRIENDLIST_                                           */
  204. /*==============================================================*/
  205.    FRIENDLIST_IID                                             ,
  206.    FRIENDLIST_CUSERCODE                                         ,
  207.    FRIENDLIST_CFRIENDCODE                                       ,
  208. /*==============================================================*/
  209. /* TABLE: LIFESKILL                                             */
  210. /*==============================================================*/
  211.    LIFESKILL_IID                                             ,
  212.    LIFESKILL_CUSERCODE                                         ,
  213.    LIFESKILL_ILIFESKILL                                  ,
  214.    LIFESKILL_ILIFESKILLLEVEL                             ,
  215. /*==============================================================*/
  216. /* TABLE: ROLEINFO                                             */
  217. /*==============================================================*/
  218.    ROLEINFO_IID                                             ,
  219.    ROLEINFO_CUSERCODE                                         ,
  220.    ROLEINFO_BSEX                                            ,
  221.    ROLEINFO_CALIAS                         ,
  222.    ROLEINFO_IFIRSTSECT                     ,
  223.    ROLEINFO_ISECT                          ,
  224.    ROLEINFO_IJOINCOUNT                     ,
  225.    ROLEINFO_ISECTROLE                      ,
  226.    ROLEINFO_IGROUPCODE                     ,
  227.    ROLEINFO_IGROUPROLE                     ,
  228.    ROLEINFO_IREVIVALID                     ,
  229.    ROLEINFO_CPARTNERCODE                   ,
  230.    ROLEINFO_ISAVEMONEY                                     ,
  231.    ROLEINFO_IMONEY                                         ,
  232.    ROLEINFO_IFIVEPROP                      ,
  233.    ROLEINFO_ITEAM                          ,
  234.    ROLEINFO_IFIGHTLEVEL                    ,
  235.    ROLEINFO_FIGHTEXP                      ,
  236.    ROLEINFO_ILEADLEVEL                     ,
  237.    ROLEINFO_ILEADEXP                       ,
  238.    ROLEINFO_ILIVEEXP                       ,
  239.    ROLEINFO_IPOWER                         ,
  240.    ROLEINFO_IAGILITY                       ,
  241.    ROLEINFO_IOUTER                         ,
  242.    ROLEINFO_IINSIDE                        ,
  243.    ROLEINFO_ILUCK                          ,
  244.    ROLEINFO_IMAXLIFE                       ,
  245.    ROLEINFO_IMAXSTAMINA                    ,
  246.    ROLEINFO_IMAXINNER                      ,
  247.    ROLEINFO_ILEFTPROP                      ,
  248.    ROLEINFO_ILEFTFIGHT                     ,
  249.    ROLEINFO_ILEFTLIFE                      ,
  250.    ROLEINFO_CACCNAME                       ,
  251.    ROLEINFO_IFINISHGAME                    ,
  252.    ROLEINFO_DLOGINTIME                     ,
  253.    ROLEINFO_DBEGINDATE                     ,
  254.    ROLEINFO_DENDDATE                       ,
  255.    ROLEINFO_IREVIVALX                      ,
  256.    ROLEINFO_IREVIVALY                      ,
  257.    ROLEINFO_IARMORRES                      ,
  258.    ROLEINFO_IWEAPONRES                     ,
  259.    ROLEINFO_IHELMRES                       ,
  260. /*==============================================================*/
  261. /* TABLE: TASKLIST                                             */
  262. /*==============================================================*/
  263.    TASKLIST_IID                                             ,
  264.    TASKLIST_CUSERCODE                                         ,
  265.    TASKLIST_ITASKCODE                                   ,
  266.    TASKLIST_IDEGREE                                     ,
  267. };
  268. // Ini文件各字段定义---------------------------------------------------
  269. #define SECTION_ROLE "ROLE"
  270. #define SECTION_ITEMLIST "ITEMS"
  271. #define SECTION_ITEM "ITEM" // + id
  272. #define KEY_COUNT "COUNT"
  273. #define KEY_BASELIST "BLISTS"
  274. #define KEY_EFFICLIST "ELISTS"
  275. #define KEY_REQUIRELIST "RLISTS"
  276. #define SECTION_BASEINFO "IB" //IB1_2
  277. #define SECTION_EFFICEINFO "IE"
  278. #define SECTION_REQUIREINFO "IR"
  279. #define SECTION_FRIENDLIST "FRIENDS"
  280. #define KEY_FRIEND "F" // + id
  281. #define SECTION_TASKLIST "TASKS"
  282. #define KEY_TASKID "T" // + id
  283. #define KEY_TASKVALUE "V" // + id
  284. #define SECTION_FIGHTSKILLLIST "FSKILLS"
  285. #define KEY_FIGHTSKILL "S"
  286. #define KEY_FIGHTSKILLLEVEL "L"
  287. #define SECTION_LIFESKILLLIST "LSKILLS"
  288. #define KEY_LIFESKILL "S" // + id
  289. #define KEY_LIFESKILLLEVEL "L" // + id
  290. //------------------------------------------------------------------------------
  291. #pragma warning (disable: 4512)
  292. #pragma warning (disable: 4786)
  293. #ifdef S3DBINTERFACE_EXPORTS
  294. #define S3DBI_API __declspec(dllexport)
  295. #else
  296. #define S3DBI_API __declspec(dllimport)
  297. #endif
  298. //改回使用corekprotocol.h里的S3DBI_RoleBaseInfo
  299. /*struct S3DBI_RoleBaseInfo
  300. {
  301. char szRoleName[32];
  302. int  nSex;
  303. int  nHelmType;
  304. int  nArmorType;
  305. int  nWeaponType;
  306. int  nLevel;
  307. };*/
  308. struct S3DBI_DATAS
  309. {
  310. char * strNames;
  311. char * strValues;
  312. int    nDataNum;
  313. };
  314. enum  S3DBI_TABLENAME
  315. {
  316. TABLE_ACCOUNT,
  317. TABLE_CARD,
  318. TABLE_EQUIPBASEINFO,
  319. TABLE_EQUIPEFFICINFO,
  320. TABLE_EQUIPMENT,
  321. TABLE_EQUIPREQUIREINFO,
  322. TABLE_FIGHTSKILL,
  323. TABLE_FRIEND,
  324. TABLE_LIFESKILL,
  325. TABLE_LIST,
  326. TABLE_ROLE,
  327. TABLE_TASK,
  328. TABLE_TASK_LIST,
  329. };
  330. enum S3DBI_LISTNAME
  331. {
  332. LIST_TASK,
  333. LIST_FRIEND,
  334. LIST_FIGHT,
  335. LIST_LIFESKILL,
  336. LIST_EQUIPMENT,
  337. LIST_EQUIPMENTREQINFO,
  338. LIST_EQUIPMENTBASEINFO,
  339. LIST_EQUIPMENTEFFICINFO,
  340. };
  341. /*
  342. extern DBTableKeyMap  g_RoleTableKeyMap;
  343. typedef std::map<std::string, int> DBTableKeyMap;
  344. typedef std::map<int, std::string> DBStringMap;
  345. typedef std::map<int, int> DBIntegerMap;
  346. */
  347. /*struct TDBTaskData
  348. {
  349. int m_nTaskId;
  350. int m_nTaskValue;
  351. };
  352. struct TDBTableData
  353. {
  354. DBStringMap m_StringDatas;
  355. DBIntegerMap m_IntegerDatas;
  356. };
  357. struct TDBEquiptData;
  358. typedef std::vector<KMagicAttrib> TMagicAttribArray;
  359. typedef std::vector<TDBEquiptData> TDBEquiptArray;
  360. typedef std::vector<TDBSkillData> TDBSkillArray;
  361. typedef std::vector<std::string> TDBFriendArray;
  362. typedef std::vector<TDBTaskData> TDBTaskArray;
  363. extern DBTableKeyMap g_TableIntegerKeyMap;
  364. extern DBTableKeyMap g_TableStringKeyMap;
  365. struct TDBEquiptData : TDBTableData
  366. {
  367. TMagicAttribArray m_mapRequestInfo;
  368. TMagicAttribArray m_mapBaseInfo;
  369. TMagicAttribArray m_mapEfficInfo;
  370. };
  371. struct TDBPlayerData :TDBTableData
  372. {
  373. TDBEquiptArray m_mapEquipt;
  374. TDBSkillArray m_mapFightSkill;
  375. TDBSkillArray m_mapLiveSkill;
  376. TDBFriendArray m_mapFriend;
  377. TDBTaskArray m_mapTask;
  378. };
  379. */
  380. #define S3_DB_TABLENAME  S3DBI_TABLENAME
  381. S3DBI_API int S3DBI_InitDBInterface(); //初始化数据库引擎
  382. S3DBI_API void S3DBI_ReleaseDBInterface(); //释放数据库引擎
  383. //获得角色的信息并以Ini文件的格式放置
  384. //S3DBI_API int S3DBI_GetRoleInfo(IN char * strUser, IN OUT KIniFile * pIniFile);
  385. S3DBI_API void * S3DBI_GetRoleInfo(IN OUT BYTE * pRoleBuffer, IN char * strUser, IN OUT int &nBufLen);
  386. //保存角色的信息,如果数据库不存在该玩家,则增加该玩家
  387. //bAutoInsertWhenNoExistUser 设为TRUE时表示,如果需要保存的该玩家在数据库中并不存在则自动加入到数据库中,FALSE则不增加直接返回错误
  388. //注意INI文件只须存放将需要改动的数据,不需改动的数据将自动保存原状。
  389. S3DBI_API int S3DBI_SaveRoleInfo(IN BYTE * pRoleBuffer, IN char * strUser, BOOL bAutoInsertWhenNoExistUser);
  390. S3DBI_API void S3DBI_ShowDebugInfo(IN BYTE * pRoleBuffer, char * pShowString);
  391. S3DBI_API BOOL S3DBI_IsRoleNameExisted(char * strUser);
  392. S3DBI_API void S3DBI_SaveRoleLogData(const char * strUser, ROLE_LOG eLogType, time_t logtime = 0);
  393. S3DBI_API time_t S3DBI_GetDataBaseSysTime();
  394. //  eLogType标识日志的类型
  395. // log_create_role , 记录角色建立的时间
  396. // log_begin_game,   记录角色本次游戏登入的时间
  397. // log_save_game,   记录角色本次游戏过程中上一次存档的时间
  398. //  数据库保存存档的时间的目的是为了
  399. S3DBI_API int S3DBI_GetRoleListOfAccount(char * szAccountName, S3DBI_RoleBaseInfo * RoleBaseList, int nMaxCount);
  400. //删除角色
  401. S3DBI_API int S3DBI_DeleteRole(char * strUser);
  402. S3DBI_API void* S3DBI_GetList(S3DBI_LISTNAME listname,  char * strUser);
  403. S3DBI_API void* S3DBI_GetList(S3DBI_LISTNAME listname,  int iid);
  404. //S3DBI_API int S3DBI_GetListData(S3DBI_LISTNAME listname, void * pList, int i , ColumnAndValue &cav);
  405. S3DBI_API int S3DBI_GetCountOfList(S3DBI_LISTNAME listname, void * pList);
  406. //S3DBI_API int S3DBI_UpdateDataAtList(S3DBI_LISTNAME listname, void * pList, int i , ColumnAndValue &cav);
  407. S3DBI_API int S3DBI_DeleteDataAtList(S3DBI_LISTNAME listname, void * pList, int i );
  408. //S3DBI_API int S3DBI_InsertDataAtList(S3DBI_LISTNAME listname, void * pList, ColumnAndValue cav);
  409. S3DBI_API void S3DBI_ReleaseListBuffer(S3DBI_LISTNAME listname, void * pList);
  410. S3DBI_API int S3DBI_ClearList(S3DBI_LISTNAME listname, void * pList);
  411. //S3DBI_API int S3DBI_GetData(S3_DB_TABLENAME tablename, int nId, ColumnAndValue *pcav);
  412. //S3DBI_API int S3DBI_GetData(S3_DB_TABLENAME tablename, char * strUser , ColumnAndValue * pCav);
  413. //S3DBI_API int S3DBI_UpdateData(S3_DB_TABLENAME tablename, int nId, ColumnAndValue *pcav);
  414. //S3DBI_API int S3DBI_UpdateData(S3_DB_TABLENAME tablename, char * strUser, ColumnAndValue *pcav);
  415. S3DBI_API int S3DBI_DeleteData(S3_DB_TABLENAME tablename, int nId);
  416. S3DBI_API int S3DBI_DeleteData(S3_DB_TABLENAME tablename, char * strUser);
  417. //S3DBI_API int S3DBI_InsertData(S3_DB_TABLENAME tablename, int nId, ColumnAndValue cav);
  418. //S3DBI_API int S3DBI_InsertData(S3_DB_TABLENAME tablename, char * strUser, ColumnAndValue cav);
  419. S3DBI_API int S3DBI_GetListData(S3DBI_LISTNAME listname, void * pList, int i , KTabFileCtrl *pTabFile);
  420. S3DBI_API int S3DBI_DeleteDataAtList(S3DBI_LISTNAME listname, void * pList, int i );
  421. S3DBI_API int S3DBI_InsertDataAtList(S3DBI_LISTNAME listname, void * pList, KTabFileCtrl *pTabFile);
  422. S3DBI_API int S3DBI_GetData(S3_DB_TABLENAME tablename, int nId, KTabFileCtrl *pTabFile);
  423. S3DBI_API int S3DBI_GetData(S3_DB_TABLENAME tablename, char * strUser, KTabFileCtrl * pTabFile);
  424. S3DBI_API int S3DBI_UpdateData(S3_DB_TABLENAME tablename, int nId, KTabFileCtrl *pTabFile);
  425. S3DBI_API int S3DBI_UpdateData(S3_DB_TABLENAME tablename, char * strUser, KTabFileCtrl *pTabFile);
  426. S3DBI_API int S3DBI_InsertData(S3_DB_TABLENAME tablename,  KTabFileCtrl *pTabFile);
  427. #endif