This commit is contained in:
aixianling
2025-01-09 17:45:40 +08:00
commit 5c9f1dae4a
3482 changed files with 1146531 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
//成就的条件
#pragma once
#pragma pack (push, 1)
typedef struct tagAchieveCondition
{
WORD wEventID; //成就事件ID
int nCount; //事件的数量
}ACHIEVECONDITION,*PACHIEVECONDITION;
//成就徽章
typedef struct tagAchieveBabge
{
WORD wBabgeID; //徽章ID
int nCount; //完成的数量
}ACHIEVEBABGE,*PACHIEVEBABGE;
typedef struct tagOffLineAchieveData
{
int nType;
int nSubType;
int nWay;
int nValue;
tagOffLineAchieveData()
{
memset(this, 0, sizeof(*this));
}
}OffLineAchieveData;
#pragma pack(pop)

View File

@@ -0,0 +1,41 @@
#pragma once
struct CMiniDateTime;
#pragma pack (push, 4)
struct GlobalActivityData
{
int nId; // 活动ID
int nActivityType; // 活动类型
int nTimeType; // 时间类型
CMiniDateTime nStartTime; // 开始时间
CMiniDateTime nEndTime; // 结束时间
bool nNextTime; //下一阶段时间
GlobalActivityData()
{
memset(this, 0 ,sizeof(*this));
}
};
struct PersonActivtyData
{
int nId; // 活动ID
int nActivityType; // 活动类型
int nTimeType; // 时间类型
CMiniDateTime nStartTime; // 到期时间
CMiniDateTime nExpiredTime; // 到期时间如果为0说明已经结束
bool nNextTime; //下一阶段时间
PersonActivtyData()
{
memset(this, 0 ,sizeof(*this));
}
};
struct PersonStopedActivity
{
int nId; // 活动ID
int nActivityType; // 活动类型
};
#pragma pack(pop)

View File

@@ -0,0 +1,32 @@
#pragma once
// 角色Cache数据类型
enum enActorCacheDataType
{
enCT_ActorBasicData, // 角色基本数据
enCT_BagItemData, // 角色背包数据
enCT_EquipItemData, // 角色装备数据
enCT_DepotItemData, // 角色仓库数据
enCT_PetItemData, // 宠物物品数据
enCT_SkillData, // 技能数据
enCT_GameOtherSetData, // 游戏新设置的保存
enCT_QuestData, // 任务数据
enCT_GuildData, // 公会数据
enCT_MiscData, // 杂项数据
enCT_AchieveData, // 成就数据
enCT_ScriptData, // 脚本二进制数据
enCT_PetData, // 宠物数据
enCT_PetSkillData, // 宠物技能数据
enCT_CombatGameData, // 职业宗师基本数据
enCT_CombatRecordData, // 职业宗师战报
enCT_FriendData, // 好友数据
enCT_GameSetData, // 游戏设置的保存
enCT_MailData, //邮件数据
enCT_AlmirahItemData, // 角色衣橱数据
enCT_DeathData, // 死亡数据
enCT_DeathDropData, // 死亡掉落数据
enCT_SoldierSoulData, //兵魂数据
enCT_ConsignData, //寄卖数据
enCT_Max, // 最大角色Cache数据类型
};

View File

@@ -0,0 +1,73 @@
#pragma once
#pragma pack(push,4)
/*
玩家需要存盘的数据结构体
*/
#define MAX_ACHIEVE_ID_SIZE 64 //成就的最大ID
#define MAX_ACHIEVE_DATA_SIZE 750 //成就的最大的BYTE数量
#define MAX_ACHIEVE_EVENT_DATA_SIZE 256 //成就事件最大的BYTE 数量
#define MAX_TITLE_DATA_SIZE 32 //称号的存储的BYTE数量
#define QUESTBTYE 256
//这个是和db通信的包
typedef struct tagActorDbData:
public ENTITYDATA,
public ACTORDBPARTDATA
{
unsigned nLevel ; //等级
ACTORNAME name; //名字
unsigned nFbHandle; //副本的句柄如果是0表示是普通的场景
unsigned nScenceID; //场景id
unsigned nHp; //当前的血
unsigned nMp; //当前的魔
unsigned nEnterFbScenceID;
int nEnterFbPos; //X 和y放在了一起
char quest[QUESTBTYE]; //任务的数据
unsigned int nCreateTime ; //创建的时间
unsigned long long lLastLoginIp ; //上次登录的ip
unsigned int nLastLoginTime; //上次登录时间
unsigned int nLastLogoutTime ; //上次的下线时间,这个表示上次在逻辑服务器的下线时间,minidate格式
unsigned int nDeport2ExpiredTime;
unsigned int nDeport3ExpiredTime; //仓库3的过期时间
unsigned int nDeport4ExpiredTime; //仓库4的过期时间
ACCOUNT accountName; //账户名字
char sGuildname[32]; //行会名字(只保存方便查询,不读)
int nActorDir; //方向,以及其他的一些信息,复用
unsigned int nAccountId; //账户的ID
char achieveFinishState[MAX_ACHIEVE_DATA_SIZE]; //成就的完成状态
char achieveEventData[MAX_ACHIEVE_DATA_SIZE]; //成就事件的完成状态
char titles[MAX_TITLE_DATA_SIZE]; //称号数据
long long csrevivepoint; //普通场景的复活点是场景id,x,y的组合
long long fbrevivepoint; //副本场景的复活点是场景id,x,y的组合
long long cityrevivepoint; //城镇的复活点是场景id,x,y的组合
unsigned int nExpToday; //角色今天获取的经验的数量
unsigned int nZyContrToday; //今天获得的阵营贡献值
unsigned int nFashionBattle; //时装战力元宝的第1次的种植的数据
int nAlmirahLv; // 衣橱等级
unsigned int nEquipScore; //玩家的装备的总分
unsigned int nConsumeYb; //消费的gm
int nSwingLevel; //翅膀档次
int nSwingId; //翅膀id
int nLoginDays; //登陆的天数
//////////////////////////////////////////////////////////////////////////
// 存DB不用下发给客户端。不作为玩家属性
int nLastLoginServerId; // 玩家最后一次登录的服务器Id.
int nSalary; //工资点【高16位保存上周工资点|低16为保存本周工资点】
int nOffice;
int nDepotCoin;
int nPlayerMaxAttack; //玩家最大攻击力
int nShutUpTime; //禁言时间
int nNextChangeVocTime;//下次可转职的时间戳
int nOldSrvId;//原区服id
tagActorDbData()
{
memset(this,0,sizeof(tagActorDbData));
}
}ACTORDBDATA,*PACTORDBDATA;
#pragma pack(pop)

View File

@@ -0,0 +1,49 @@
#pragma once
#pragma pack(push,4)
/*
*玩家的离线消息
*/
struct ActorOfflineMsg
{
char name[32]; //玩家的名字
char sGuildName[32]; //行会名称
unsigned int nActorId; //玩家ID
unsigned int nLevel; //玩家的等级
BYTE nSex; //玩家的性别
BYTE nVocation; //玩家的职业
BYTE nCircle; //玩家的转数
BYTE nReserve; //保留
CActorOfflineProperty actordata;
ActorOfflineMsg()
{
memset(this,0,sizeof(*this));
}
};
#pragma pack(pop)
/*
*玩家英雄的离线消息
*/
struct HeroOfflineMsg
{
BYTE bCircle; //转数
BYTE bLevel; //等级
BYTE bVocation; //职业
BYTE bSex; //性别
unsigned int nScore; //评分
int nModelId; //玩家的外观
int nWeaponAppear; //玩家武器的模型ID
int nWingAppear; //玩家的翅膀外观ID
HeroOfflineMsg()
{
memset(this,0,sizeof(*this));
}
};

View File

@@ -0,0 +1,18 @@
#pragma once
struct CMiniDateTime;
#pragma pack (push, 4)
struct GLOBALBOSSINFO
{
int nBossId; // bossId
int nReferTime; // 刷新时间
int nDeath; //是否死亡
int nBossLv; //boss等级
GLOBALBOSSINFO() {
memset(this, 0, sizeof(*this));
}
};
#pragma pack(pop)

View File

@@ -0,0 +1,62 @@
#ifndef ___COMMON_SERVER_DEFINE___
#define ___COMMON_SERVER_DEFINE___
#define DEFAULT_TAG_VALUE 0xCCEE //默认的包的开头的2个字节
#define DEFAULT_HEADER_CHECK_SUM 0x7C58 //默认的头部的CRC的值
#pragma pack(push, 1)
typedef struct
{
unsigned short tag;
unsigned int len;
/*
struct
{
unsigned short dataSum;
unsigned short hdrSum;
} EncodePart;
union
{
struct
{
int recvTime; // 网关接收消耗时间
int sendTime; // 网关发送消耗时间
}s;
__int64 tp; // 时间点,用于网关接受到客户端数据后打上的时间戳。
}u;
*/
}DATAHEADER,*PDATAHEADER;
#pragma pack(pop)
//实体移动的方向
typedef enum tagDirCode{
DIR_UP = 0, //上
DIR_UP_RIGHT=1, //右上
DIR_RIGHT=2, //右
DIR_DOWN_RIGHT=3, //右下
DIR_DOWN=4, //下
DIR_DOWN_LEFT=5, //左下
DIR_LEFT=6, //左
DIR_UP_LEFT=7, //左上
DIR_STOP //不动
}DIRCODE ;
//基本的x,y的信息
typedef struct tagMapPoint
{
union
{
struct
{
unsigned short x;
unsigned short y;
};
int nValue;
};
}MAPPOINT,*PMAPPOINT;
#endif

532
sdk/commonLib/def/DBProto.h Normal file
View File

@@ -0,0 +1,532 @@
#ifndef _DB_PROTO_H_
#define _DB_PROTO_H_
//数据引擎版本号
//#define DBEGN_KN_VERION MAKEFOURCC(2, 10, 11, 20)
//数据引擎的数据结构版本
//#define DBSDATATYPE_VERSION 0x010A1B0A
//这里是定义返回给客户端的错误码均要小于0,1字节
#define NOERR 0 //正确
#define ERR_SQL 101 //sql错误
#define ERR_SESS 102 //用户没登陆
#define ERR_GAMESER 103 //游戏服务没准备好
#define ERR_DATASAVE 104 //角色上一次保存数据是否出现异常
#define ERR_SELACTOR 105 //客户端选择角色的常规错误
#define ERR_NOGATE 106 //客户端无匹配的路由数据的错误
#define ERR_NOUSER 107 //角色不存在
#define ERR_SEX 108 //错误的性别
#define ERR_NORANDOMNAME 109 //随机生成的名字已经分配完
#define ERR_ZY 110 //客户端上传的角色阵营参数错误
#define ERR_JOB 111 //客户端上传的角色职业参数错误
#define ERR_GUILD 112 //存在帮派不能删除角色
#define ERR_SELSERVER 113 // 选择服务器错误
#define ERR_SQL_NOT_CONNECT 114 // sql没有准备好
//角色状态标志位
#define CHARSTATE_DISABLED 0x80000000 //角色已被禁用
#define CHARSTATE_USERDELETED 0x40000000 //角色已被删除
#define CHARSTATE_SELECTED 0x00000001 //角色被选中
/* 定义数据服务器关于角色创建、删除、查询等的数据包格式
*************************************/
//以下是包的类型定义
typedef enum ActorCMD{
CREATEACTORDATAREQ_CMD = 16,
CREATEACTORDATARESP_CMD =17,
DELETEACTORDATAREQ_CMD = 18,
DELETEACTORDATARESP_CMD = 19,
QUERYACTORLISTREQ_CMD = 20,
QUERYACTORLISTRESP_CMD = 21,
ENTRYGAMEREQ_CMD = 22,
ENTRYGAMERESP_CMD = 23,
RANDNAMEREQ_CMD = 24, //自动生成名字
RANDNAMERESP_CMD = 25,
LESSJOBREQ_CMD = 26, //查询最少人使用的职业
LESSJOBRESP_CMD = 27,
LESSZYREQ_CMD = 28, //查询最少人使用的阵营
LESSZYRESP_CMD = 29,
}ACTORCMD;
//查询角色列表的请求包
typedef struct tagQueryActorListReq{
WORD CmdId; //数据包的类型
int AccountId; //帐户id
}QUERYACTORLISTREQ,*PQUERYACTORLISTREQ;
typedef struct
{
UINT ActorId;//角色id
//以下是该角色的属性值,暂定
char ActorName[jxSrvDef::ACTOR_NAME_BUFF_LENGTH];
char GuildName[jxSrvDef::MAX_GUILD_NAME_LENGTH];
int Icon;
int Sex; //性别
short Level; //等级
short Circle; //转身
int Job; //职业的编码
int Zy; //阵营编码
}Actors;
//查询角色列表的回应包包
typedef struct tagQueryActorListResp{
WORD CmdId; //数据包的类型
unsigned int AccountId; //帐户id
char Count; //角色数量,小于0表示查询失败
// 后面是Count个Actors包
//Actors[Count];
}QUERYACTORLISTRESP,*PQUERYACTORLISTRESP;
//创建角色的请求包
typedef struct tagCreateActorDataReq{
WORD CmdId; //数据包的类型 WORD
char Namelen;
char ActorName[jxSrvDef::ACTOR_NAME_BUFF_LENGTH]; //角色名称
char Sex; //性别
char Job; //职业的编码
char Icon; //头像
BYTE Zy;
//其他属性不加到数据包中,采用默认值
}CREATEACTORDATAREQ,*PCREATEACTORDATAREQ;
//创建角色的回应包
typedef struct tagCreateActorDataResp{
WORD CmdId; //数据包的类型
UINT ActorId; // 如果ret 为0,则该字段表示新创建的角色id否则本字段结果没意义
char Ret;//创建角色的结果0 表示成功,否则为错误码
}CREATEACTORDATARESP,*PCREATEACTORDATARESP;
//删除角色的请求包
typedef struct tagDeleteActorDataReq{
WORD CmdId; //数据包的类型
UINT Actoid;//角色id
} DELETEACTORDATAREQ,*PDELETEACTORDATAREQ;
//删除角色的回应包
typedef struct tagDeleteActorDataResp{
WORD CmdId; //数据包的类型
UINT Actorid;//角色id
char Ret;//删除角色的结果0表示删除成功否则为错误码
} DELETEACTORDATARESP,*PDELETEACTORDATARESP;
// 进入游戏通知包
typedef struct tagEnteyGameReq{
WORD CmdId; //数据包的类型, ENTRYGAMEREQ_CMD
UINT Actorid; //进入的角色id
} ENTRYGAMEREQ,*PENTRYGAMEREQ;
//逻辑服务器信息包
typedef struct tagEnteyGameResq{
WORD CmdId; //数据包的类型, ENTRYGAMERESP_CMD
char szIP[128]; //0 结尾的字符串
int Port;
char Ret; //回应的结果是否可以进入游戏0表示正确
} ENTRYGAMERESP,*PENTRYGAMERESP;
typedef struct tagCreateActorData
{
char actorName[jxSrvDef::ACTOR_NAME_BUFF_LENGTH]; //角色名称
char accountName[jxSrvDef::ACCOUNT_NAME_BUFF_LENGTH]; //账户名称
BYTE sex; //性别
BYTE job; //职业的编码
BYTE icon; //头像
BYTE zy; //阵营
int nServerIndex; //服务器编号
unsigned int nAccountId; //账户的id
int nGateIndex; //网关的index
Uint64 lKey; //key
unsigned long long lIp; //客户端登陆的ip
int nLastRandNameIndex;//上次随机名字的index
int nAdId; //广告id
int nRawServerindex; //原始的服务器的id
char strToken[jxSrvDef::MAX_TOKEN_LENGTH]; //用于运营商的渠道统计
tagCreateActorData()
{
memset(this, 0, sizeof(*this));
}
}CREATEACTORDATA,*PCREATEACTORDATA;
/************************************/
/* SQL查询语句定义
*******************************************/
//从数据库中加载角色名称过滤表
static LPCSTR NSSQL_LoadFilterNames = "CALL loadFilterNames()";
static LPCSTR szSQLSP_GetFilterNames = "call getdenycharnames()";//查询名称屏蔽此列表
static LPCSTR szSQLSP_LoadGameSrvRouteTable = "select * from gameserveraddress";//查询游戏网关路由表
static LPCSTR szSQLSP_QueryLessJob = "call getlessjob(%d)";//查询最少人选择的职业
static LPCSTR szSQLSP_QueryLessZy = "select zy from zycount where serverindex=%d order by usercount asc limit 1";//查询最少人选择的阵营
static LPCSTR szSQLSP_QueryActorCount = "select count(*) from actors where accountid=%u and serverindex=%d";//查询本账户所有的角色数量,包括已删号或者被屏蔽的
static LPCSTR szSQLSP_QueryZyList = "call queryzylist(%d)";//查询可选的阵营列表
static LPCSTR szSQLSP_LoadZyDistributeData = "call loadzydata()"; // 查询阵营分布数据
static LPCSTR szSQLSP_LoadJobDistributeData = "call loadjobdata()"; // 查询职业分布数据
static LPCSTR szSQLSP_CleanZyDistributeData = "call cleanzydata(%d)"; // 清除阵营分布数据
static LPCSTR szSQLSP_CleanJobDistributeData = "call cleanjobdata(%d)"; // 清除职业分布数据
static LPCSTR szSQLSP_AddZyDistributeData = "insert into zycount values"; // 插入阵营分布数据
static LPCSTR szSQLSP_AddJobDistributeData = "insert into jobcount values"; // 插入职业分布数据
static LPCSTR szSQLSP_LoadActorNameInitData = "select actorname,serverindex from actors"; //查询玩家名称数据
static LPCSTR szSQLSP_LoadActorBattleData = "call loadbattlepowerrank(%d,%d)"; //查询玩家战力数据
static LPCSTR szSQLSP_LoadActorCombatGamData = "call loadcombatgameinfo(%u)"; //查询玩家战力竞技信息
static LPCSTR szSQLSP_DeleteActorCombatGamData = "call deletecombatgame(%u)"; //删除玩家战力竞技信息
static LPCSTR szSQLSP_AddActorCombatGamData = "call addcombatgameinfo(%u,%d,%d,%d,%d,%d,%d,%d)"; //添加玩家战力竞技信息
static LPCSTR szSQLSP_LoadActorCombatRecordData = "call loadcombatrecord(%u)"; //加载玩家战力竞技日志
static LPCSTR szSQLSP_DeleteActorCombatRecordData = "call deletecombatrecord(%u)"; //删除玩家战力竞技日志
static LPCSTR szSQLSP_AddActorCombatRecordData = "call addcombatrecord(%u,%u,\"%s\",%d,%d,%d,%d,%d,%d,%d,%d,%d)"; //添加玩家战力竞技日志
static LPCSTR szSQLSP_UpdateActorCombatBaseInfo = "call updatecombatgame(%u,%d)"; //更新
static LPCSTR szSQLSP_LoadActorCombatBaseInfo = "select currank,maxrank,lastrank,combatscore,challegenum,picknum,cleartime,cdflag from combatinfo where actorid=%d";
static LPCSTR szSQLSP_AddActorCombatBaseInfo = "insert into combatinfo(actorid) values(%d)";
static LPCSTR szSQLSP_SaveActorCombatBaseInfo = "update combatinfo set currank=%d,maxrank=%d,lastrank=%d,combatscore=%d,challegenum=%d,picknum=%d,cleartime=%d,cdflag=%d where actorid=%d";
static LPCSTR szSQLSP_LoadActorCombatLogInfo = "select type,result,targetid,targetname,rank from combatlog where actorid=%d";
static LPCSTR szSQLSP_SaveActorCombatLogInfo = "insert into combatlog(actorid,type,result,targetid,targetname,rank) values";
static LPCSTR szSQLSP_DeleteActorCombatLogInfo = "delete from combatlog where actorid=%d;";
//客户端相关数据的SQL查询
//static LPCSTR szSQLSP_CheckCreateCharCountryFlag = "call checkcreatecharcountryflag(%d)";//查询允许创建的国家列表(标志位作为允许创建的国家表)
//static LPCSTR szSQLSP_ClientQueryChar = "call clientquerycharactors(%d,\"%s\")";//查询角色在特定服务器的账号列表
//static LPCSTR szSQLSP_GetAvailableCharactorCountInServer= "call getavailablecharactorcountinserver(%d, \"%s\")";//查询角色在特定服务器的角色数量
static LPCSTR szSQLSP_GetCharactorIdByName = "call getcharactoridbyname(\"%s\",%d)";//通过角色名称查询角色ID
static LPCSTR szSQLSP_ClientCreateNewCharactor = "call clientcreatenewcharactor(%u,\"%s\",%llu,%u,\"%s\",%d,%d,%d,%d,%d,\"%s\",%d)";//用户创建角色
static LPCSTR szSQLSP_ClientDeleteCharactor = "call clientdeletecharactor(%u,\"%s\")";//用户删除角色(EXEC)
static LPCSTR szSQLSP_ClientStartPlay = "call clientstartplay(%d,%u,\"%s\",%u,%llu)";//开始游戏
static LPCSTR szSQLSP_QueryActorLastLoginServerId = "call getactorlastloginserverid(%u, %u, %d)"; // 获取角色上次登录的服务器ID
static LPCSTR szSQLSP_SelecteGuildData = "call selectguildid(%u)"; // 查询帮派id
static LPCSTR szSQLSP_GetValidActorIdByName = "call getvalidactoridbyname(\"%s\", %d)"; //查询角色名是否有效
static LPCSTR szSQLSP_SelectActorNameCount = "select count(*) form actors where actorname=\"%s\" and serverindex=%d"; //查询角色名是否存在
static LPCSTR szSQLSP_ChangeActorName = "update actors set actorname=\"%s\" where actorid=%u and serverindex=%d"; //玩家改名字
//数据客户端帮会相关数据的SQL查询
//static LPCSTR szSQLSP_GetServerGuildCount = "call getserverguildcount(%d)";//查询所属服务器的帮会数量
//static LPCSTR szSQL_LoadGuildsIndex = "select guildid from guildbase where serverindex=%d limit %d,%d";//查询所属服务器的帮会ID列表
static LPCSTR szSQLSP_LoadGuildBasicData = "call loadguildbasicdata(%d)";//查询帮会基本数据
static LPCSTR szSQLSP_LoadGuildMembers = "call loadguildmembers(%u)"; //查询帮会成员数据
static LPCSTR szSQLSP_LoadGuildApplyLists = "call loadguildapplylists(%u)"; //查询行会申请列表
static LPCSTR szSQLSP_LoadGuildApplyResult = "select actorid, guildid from actorapplyguildresult"; //查询行会申请列表
static LPCSTR szSQLSP_DeleteActorGuildApplyResult = "truncate actorapplyguildresult"; //清空
static LPCSTR szSQLSP_InsertGuildApplyResult = "insert into actorapplyguildresult(actorid, guildid) values"; //插入
// static LPCSTR szSQLSP_GuildDealApply = "call dealguildapply(%u, %u, %d)"; //处理
static LPCSTR szSQLSP_GuildInsertApply = "insert into guildapplylist(guildid,actorid, applytime) values(%u,%u, %d)"; //处理
static LPCSTR szSQLSP_GuildDeleteApply = "delete from guildapplylist where guildid = %u and actorid = %u;"; //处理
static LPCSTR szSQLSP_AddOfflineGuildMember = "call addofflineguildmember(%u,%u,%d)"; //增加一个成员,并返回这个成员的详细数据
static LPCSTR szSQLSP_LoadGuildMemberBasic = "call loadguildmemberbasic(%u)";//查询帮会成员的详细数据
static LPCSTR szSQLSP_LoadGuildWar = "call loadguildwar(%u)"; //查询帮派战数据
//static LPCSTR szSQLSP_LoadGuildWarHistory = "call loadguildwarhistory(%d)"; //查询帮派战历史数据
//static LPCSTR szSQLSP_AddGuildWarHistory = "call addguildwarhistory(%d,%d,%d,%d)"; //增加帮派战历史数据
static LPCSTR szSQLSP_LoadGuildSKILL = "call loadguildskill(%u)"; //查询帮派技能数据
static LPCSTR szSQLSP_LoadGuildEvent = "call loadguildevent(%u)"; //查询帮派事件数据
static LPCSTR szSQLSP_LoadActorBuildingData = "call loadactorguildbuilding(%u)"; //查询帮派事件数据
//boss
static LPCSTR szSQLSP_LoadBossData = "call loadbossdata()"; //加载boss
static LPCSTR szSQLSP_DeleteBossData = "truncate bossmgr;"; //清空
static LPCSTR szSQLSP_SaveBossData = "insert into bossmgr(bossid, referTime, leftCount, bosslv) values"; //保存boss
// 活动 BEGIN
static LPCSTR szSQLSP_LoadActivityData = "call loadactivitydata()"; //加载活动
static LPCSTR szSQLSP_DeleteActivityData = "truncate activitydata;"; //清空
static LPCSTR szSQLSP_SaveActivityData = "insert into activitydata(nId, nActivityType, nTimeType, nStartTime, nEndTime) values"; //保存活动数据
static LPCSTR szSQLSP_LoadActorActivityData = "call loadactoractivity(%u)"; //加载个人活动
static LPCSTR szSQLSP_SaveActorActivityData = "REPLACE INTO actoractivity(actorid, nId, nActivityType, nExpiredTime) VALUES"; //更新或插入个人活动
// 活动 END
//static LPCSTR szSQL_LoadGuildAllys = "select a.objectid,b.guildname from guildobjectinfo a,guildbase b where a.guildid=%d and a.objecttype=1 and a.objectid=b.guildid limit %d,%d";//查询帮会联盟数据
//static LPCSTR szSQL_LoadGuildHostiles = "select a.objectid,b.guildname from guildobjectinfo a,guildbase b where a.guildid=%d and a.objecttype=2 and a.objectid=b.guildid limit %d,%d";//查询帮会敌对数据
//static LPCSTR szSQL_LoadGuildWanteds = "select a.objectid,b.charname,c.charlevel,c.guildid from guildobjectinfo a,chardescr b,chardata c where a.guildid=%d and a.objecttype=3 and a.objectid=b.charid and a.objectid=c.charid limit %d,%d";//查询帮会通缉数据
//static LPCSTR szSQL_LoadGuildJoinrequests = "select a.objectid,b.charname,c.charlevel,c.sex,c.job from guildobjectinfo a,chardescr b,chardata c where a.guildid=%d and a.objecttype=4 and a.objectid=b.charid and a.objectid=c.charid limit %d,%d";//查询帮会入帮请求数据
static LPCSTR szSQLSP_AddGuildMember = "call addguildmember(%u,%u,%d,%d,%d,%d,%d,%d,%d,%d,%u)";//添加帮会成员(EXEC)
static LPCSTR szSQLSP_DelGuildMember = "call delguildmember(%u)";//删除帮会成员(EXEC)
static LPCSTR szSQLSP_UpdateGuildMember = "call updateguildmember(%u,%u,%d,%u,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%u)";//更新帮会成员(EXEC)
static LPCSTR szSQLSP_CreateGuild = "call createguild(%u,%u,\"%s\",\"%s\",%d)";//创建帮会(QUERY)
static LPCSTR szSQLSP_DeleteGuild = "call deleteguild(%u)";//删除帮会(EXEC)
//static LPCSTR szSQLSP_AddGuildObject = "call addguildobject(%d,%d,%d)";//添加帮会联盟、敌对、通缉以及入帮请求数据(EXEC)
//static LPCSTR szSQLSP_DelGuildObject = "call delguildobject(%d,%d,%d)";//删除帮会联盟、敌对、通缉以及入帮请求数据(EXEC)
// static LPCSTR szSQLSP_UpdateGuildBasicData = "call updateguildbasicdata(%u,\"%s\",%d,%d,%d,%d,%d,%d,\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",%d,%d,%d,%d,%d,%d,%u,%u,%u,%u,%u,%d,%d,%d,%d,%d,%u,%d,%d,%d,%d)";//更新帮会基本数据(EXEC)
static LPCSTR szSQLSP_UpdateGuildBasicData = "call updateguildbasicdata(%u,\"%s\",%d,%d,%d,%d,\"%s\",\"%s\",%d,%d,%d,%d,%d)";//更新帮会基本数据(EXEC)
static LPCSTR szSQLSP_DeleteGuildWarData = "call deleteguildwar(%u)"; //删除帮派战的数据
static LPCSTR szSQLSP_AddGuildWarData = "call addguildwar(%u,%d,%d,%d,%d,%d,%d)"; //增加帮派战的数据
//static LPCSTR szSQLSP_UpdateGuildSkill = "call updateguildskill(%d,%d,%d)"; //更新帮派技能等级
static LPCSTR szSQLSP_InitGuildSkill = "call initguildskill(%u,%d,%d)"; //更新帮派技能等级
static LPCSTR szSQLSP_DeleteGuildSkill = "call deleteguildskill(%u,%d)"; //更新帮派技能等级
static LPCSTR szSQLSP_DeleteGuildEvent = "call cleanguildevent(%u)"; //删除帮派事件
static LPCSTR szSQLSP_AddeGuildEvent = "call addguildenvent(%u,%d,%d,%d,%d,%d,\"%s\",\"%s\")"; //更新帮派事件
static LPCSTR szSQLSP_DeleteGuildMember = "delete from actorguild where actorid=%u";//添加帮会成员(EXEC)
//数据客户端角色相关数据的SQL查询
// zac 2010-11-23
//根据帐号id查询角色列表及角色的简单属性
static LPCSTR szSQLSP_LoadActorListByAccountId = "call loadactorlistbyaccountid(%u,%d)";
/*****end*****/
static LPCSTR szSQLSP_LoadCharBasicData = "call loadcharbasicdata(%u)";//查询角色基本数据
static LPCSTR szSQLSP_UpdateCharStatus = "update actors set status = %d where actorid = %u limit 1"; //设置角色状态
static LPCSTR szSQLSP_UpdateCharOnlineStatus = "call updatecharonlinestatus(%u,%d)";//更新在线标识
static LPCSTR szSQLSP_LoadCharOfflineData = "call loadcharofflinedata(%u)";//查询角色离线的数据
static LPCSTR szSQLSP_LoadCircleCount = "call loadcirclecount()";//加载转生等级人数
static LPCSTR szSQLSP_LoadStaticCounts = "call loadstaticcount(%u)";// 加载玩家计数器
static LPCSTR szSQLSP_DeleteStaticCounts = "delete from actorstaticcount where id = %u";//加载数据
static LPCSTR szSQLSP_InsertStaticCounts = "insert into actorstaticcount(id,nstatictype,nvalue) values"; //插入数据
static LPCSTR szSQLSP_LoadGhosts = "call loadactorghost(%u)";//
static LPCSTR szSQLSP_DeleteGhosts = "delete from actorghost where actorid = %u";//
static LPCSTR szSQLSP_InsertGhosts = "insert into actorghost(actorid,id,lv, bless) values"; //插入数据
static LPCSTR szSQLSP_LoadActorStrengthen = "call loadstrengthen(%u)";// 加载玩家强化数据
static LPCSTR szSQLSP_DeleteActorStrengthen = "delete from actorstrengthen where actorid = %u";//delete
static LPCSTR szSQLSP_InsertActorStrengthen = "insert into actorstrengthen(actorid,ntype,npos,nlv) values"; //插入数据
static LPCSTR szSQLSP_LoadAchieveMent = "call loadactorachieve(%u)";// 加载玩家成就数据
static LPCSTR szSQLSP_DeleteAchieveMent = "delete from actorachieve where actorid = %u";//加载数据
static LPCSTR szSQLSP_InsertAchieveMent = "insert into actorachieve(actorid,achievetype,nValue) values"; //插入数据
static LPCSTR szSQLSP_LoadOfflineAchieveMent = "call loadofflineachieve()";// 加载成就数据
static LPCSTR szSQLSP_DelOfflineAchieveMent = "delete from offlineachieve";//加载数据
static LPCSTR szSQLSP_InsertOfflineAchieveMent = "insert into offlineachieve(actorid,type,subtype,value,way) values"; //插入数据
static LPCSTR szSQLSP_LoadHeroCharOfflineData = "call loadherocharofflinedata(%u, %d)";//查询英雄离线的数据
static LPCSTR szSQLSP_LoadHeroOfflineEquips = "call loadheroofflineequips(%u,%d)";//查询英雄装备
static LPCSTR szSQLSP_LoadCharItems = "call loadcharitems(%u,%d)";//查询角色装备、背包以及仓库物品
static LPCSTR szSQLSP_LoadCharSkills = "call loadcharskills(%u)";////查询角色技能
//static LPCSTR szSQLSP_LoadMainQuest = "call loadmainquest(%d)";//查询角色主线任务的完成情况
static LPCSTR szSQLSP_LoadActorGameSetData2 = "select setting from actorgameotherSets where actorid=%u"; //获取玩家的二进制数
static LPCSTR szSQLSP_UpdateGameSetData2 = "update actorgameotherSets set `setting`=";//更新设置的2进制数据
static LPCSTR szSQLSP_LoadOtherGameSets = "call loadgameothersetsdata(%u)";////查询游戏其他设置---已经有部分设置在其他表里
static LPCSTR szSQLSP_DeleteOtherGameSets = "delete from actorgameotherSets where actorid = %u";//删除游戏其他设置
static LPCSTR szSQLSP_AddOtherGameSets = "insert into actorgameotherSets(actorid,kb) values";//添加游戏其他设置
static LPCSTR szSQLSP_LoadCharRoleItems = "call loadcharroleitems(%u)";//查询角色任务进度数据
static LPCSTR szSQLSP_LoadCharFinishRoles = "call loadcharfinishroles(%u)";//查询角色完成任务数据
//static LPCSTR szSQLSP_LoadCharShortCuts = "call loadcharquickitemdistribute(%d)";//查询角色快捷键数据
//static LPCSTR szSQLSP_LoadCharTalismans = "call loadchartalismans(%d)";//查询角色的法宝数据
static LPCSTR szSQLSP_UpdateCharBasicData = "call updatecharbasicdata(%u,%d,%d,%d,%d,%d,%d,%lld,%d,%d,%d,%d,%d,%d,%u,%u,%u,%d,%d,%d,%u,\"%s\",%d,%d,%d,%lld,%d,%d,%d,%d,%d,%d,%d,%d,%lld,%lld,%lld,%lld,%d,%d,%d,%d,%d,%d,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\",%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%lld,%lld,%lld,%lld,%d,%d,%d,%d,\"%s\",%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%lld,";//更新角色基本数据(EXEC)
static LPCSTR szSQLSP_UpdateActorBinaryData = "call updatecharbinarydata(%lld,";//更新角色的2进制数据
static LPCSTR szSQLSP_UpdateActorOfflineData = "call updateactorofflinedata(%u,";
static LPCSTR szSQLSP_UpdateActorCustomInfo = "call updateactorCustomInfo(%u,";
static LPCSTR szSQLSP_LoadActorCustomInfo = "call loadactorCustomInfo(%u)";
static LPCSTR szSQLSP_ChangeTradingQuota = "call changetradingquota(%u,%lld)";// 更改交易额度
static LPCSTR szSQLSP_UpdateActorScriptData = "update actorvariable set `variable`=";//更新角色的2进制数据
static LPCSTR szSQLSP_LoadActorScriptData = "select variable from actorvariable where actorid=%u"; //获取玩家的二进制数
static LPCSTR szSQLSP_CleanCharItems = "call cleancharitems(%u,%d)";//删除角色装备、背包以及仓库物品(EXEC),actorID,nItemtableID(1:背包2装备3仓库)
//向一个物品表里插入全部的物品数据,可能是背包物品,也可能是装备物品也可能是仓库物品
static LPCSTR szSQLSP_AddCharItems ="insert into %s(actorid,itemguid,itemidquastrong,itemduration,itemcountflag,iteminlayhole,itemtime,itemreservs,itemsmith1,itemsmith2,itemsmith3, itemsmith4, itemsmith5, itemreservs2,initsmith,bestAttr,refining,sourcename) values "; //插入到背包物品表
static LPCSTR szSQLSP_CleanCharSkills = "call cleancharskills(%u)";//删除角色技能(EXEC)
//static LPCSTR szSQLSP_AddCharNewSkill = "call addcharnewskill(%d,%d,%d,%d,%d)";//添加角色技能(EXEC)
static LPCSTR szSQLSP_AddCharAllSkills = "insert into skill(actorid,skillidlvmj,cdtime,reserve,mjexpiretime,miji) values";//添加角色技能(EXEC)
static LPCSTR szSQLSP_CleanCharRoleItems = "call cleancharroleitems(%u)";//删除角色任务进度(EXEC)
static LPCSTR szSQLSP_AddCharNewRoleItem = "insert into goingquest(actorid,idtask,type,value,state,complete,usefstimes,nStartId) values ";//添加角色任务进度(EXEC)
// static LPCSTR szSQLSP_CleanCharRoleItems = "call cleancharroleitems(%u)";//删除角色任务进度(EXEC)
// static LPCSTR szSQLSP_AddCharNewRoleItem = "call addcharnewroleitem(%u,%d,%d,%d)";//添加角色任务进度(EXEC)
// static LPCSTR szSQLSP_CleanCharFinishRoles = "call cleancharfinishroles(%u)";//删除角色完成任务(EXEC)
// static LPCSTR szSQLSP_AddCharNewFinishRole = "call addcharnewfinishrole(%u,%d,%d)";//添加角色完成任务(EXEC)
//static LPCSTR szSQLSP_CleanCharTalismans = "call cleanchartalismans(%d)";//删除角色法宝数据EXEC
//static LPCSTR szSQLSP_AddCharTalismans = "call addchartalismans(%d)";//添加角色法宝数据EXEC
//数据客户端角色通知相关数据的SQL查询
//static LPCSTR szSQLSP_LoadCharNotify = "call loadcharnotify(%d)";//查询角色下一个通知数据
//static LPCSTR szSQLSP_AddCharNotify = "call addcharnotify(%d,\"%s\",\"%s\")";//添加一个角色通知数据(EXEC)
//static LPCSTR szSQL_DelCharNotify = "delete from charnotify where idx=%d";//删除一个角色通知数据(EXEC)
static LPCSTR szSQLSP_RenameCharactor = "call renamecharactor(%u,\"%s\")";//执行角色重命名
//static LPCSTR szSQLSP_AddCharFubenData = "call addcharfubendata(%d,%d,%d,%d)";//添加角色副本数据
//static LPCSTR szSQLSP_LoadCharFubenData = "call loadcharfubendata(%d)";
//static LPCSTR szSQLSP_CleanCharFuben = "call cleancharfubendata(%d)";
//static LPCSTR szSQLSP_AddFriend = "call addcharfriend(%d,%d,%d,'%s',%u)";//添加角色交互系统的数据
//static LPCSTR szSQLSP_LoadCharFriends = "call loadcharfriends(%d)";
//static LPCSTR szSQLSP_CleanCharFriends = "call cleancharfriends(%d)";
//消息系统
static LPCSTR szSQLSP_LoadCharMsgList = "call loadcharmsglist(%u,%lld)";//读取角色的所有消息
static LPCSTR szSQLSP_DeleteCharMsg = "call deletecharmsg(%u,%lld)"; //删除角色的一条消息
static LPCSTR szSQLSP_AddCharMsg = "call addcharmsg(%u,%d,";
static LPCSTR szSQLSP_AddCharMsgByName = "call addcharmsgbyactorname(%d,\"%s\",%d,"; // 根据玩家角色名添加离线消息
static LPCSTR szLoadUserItem = "call loaduseritem(%u,%u,%d)";//获取角色的活动背包内容,[账户id角色id,serverindex]
static LPCSTR szGetUserItem = "call getuseritem(%u,%u,%lld,%d)";//领取物品[账户id角色id,消息id]
static LPCSTR szDelUserItem = "call deleteuseritem(%lld)";//删除用户的活动背包
static LPCSTR szSQLSP_LoadAlmirah = "call loadralmirah(%u)"; //加载衣橱系统
static LPCSTR szSQLSP_DeleteAlmirah = "delete from actoralmirahitem where actorid = %u"; //删除玩家
static LPCSTR szSQLSP_InsertAlmirah = "insert into actoralmirahitem(actorid,nId,nlv,ntakeon) values ";
static LPCSTR szSQLSP_AddCombatBaseInfo = "insert into combatgame(actorid,winningtimes,chagangetimes,nextchagangetime,refreshtimes,awardrank,addchagneTimes,bshowflag) values";//添加角色技能(EXEC)
static LPCSTR szSQLSP_AddCombatRecordInfo = "insert into combatrecord(actorid,tagetId,tagetname,nvictory,ntime,nranking,nawardtype1,nawardtype2,nawardtype3,nawardvalue1,nawardvalue2,nawardvalue3) values";//添加角色技能(EXEC)
static LPCSTR szSQLSP_AddGuildDepotItem = "insert into guildstore(guildid,actorid,itemguid,itemidquastrong, itemduration, itemcountflag,iteminlayhole,itemtime,itemreservs,itemsmith1,itemsmith2,itemsmith3,itemreservs2,initsmith,ntype,nmoney,exchangeactorid,exchangeactorname,exchangetime) values";//添加角色技能(EXEC)
static LPCSTR szSQLSP_DeleteDepotItem = "delete from guildstore where guildid=%u"; //删除行会仓库物品
static LPCSTR szSQLSP_LoadDepotItem = "call loadguildstoredata(%u)";
static LPCSTR szSQLSP_LoadDepotRecord = "call loadguilddepotrecord(%u)"; //加载行会仓库操作记录
static LPCSTR szSQLSP_DeleteGuildDepotRecord = "call deleteguilddepotrecord(%u)"; //删除仓库操作记录
static LPCSTR szSQLSP_AddGuildDepotRecord = "insert into guildstorerecord(guildid,ntype,ntime,itemnum,cointype,coinnum,actorname,itemname) values"; //
static LPCSTR szSQLSP_DeleteTimeRideData = "delete from periodride where nactorid=%u";
static LPCSTR szSQLSP_AddTimeRidesData = "insert into periodride(nactorid,nrideid,ntime) values";
//好友
static LPCSTR szSQLSP_LoadFriendsData = "call loadfriendsdata(%u)"; //加载好友列表
static LPCSTR szSQLSP_SaveFriendsData = "call deletefriends(%u)"; //删除好友列表
static LPCSTR szSQLSP_AddFriendsData = "insert into friends(nactorid,friendid,ntype,nintimacy,warteamid,dotime,color) values";
static LPCSTR szSQLSP_LoadActorDeathData = "call loadactordeath(%u)"; //加载
static LPCSTR szSQLSP_DelActorDeathData = "call deleteactordeath(%u)"; //删除
static LPCSTR szSQLSP_AddActorDeathData = "insert into actordeath(actorid, killerid, deathtime, killername,killsceneid,killposx,killposy, type) values";
static LPCSTR szSQLSP_LoadActorDeathDropData = "call loadactordeathdrop(%u)"; //加载
static LPCSTR szSQLSP_DelActorDeathDropData = "call deleteactordeathdrop(%u)"; //删除
static LPCSTR szSQLSP_AddActorDeathDropData = "insert into actordeathdrop(actorid, killerid, deathtime, dropid, dropcount) values";
static LPCSTR szSQLSP_DeleteFriendsData = "update friends set ntype=%d,nintimacy=%d,warteamid=%lld where nactorid=%u and friendid=%u";
static LPCSTR szSQLSP_DeleteOtherFriendsData = "update friends set ntype=ntype&~(1<<1) where nactorid=%u and friendid=%u";
static LPCSTR szSQLSP_AddFriendsChatMsg = "insert into friendchatmsg(nactorid,tagetid,ntime,chatmsg) values(%u, %u, %d,\"%s\")";
static LPCSTR szSQLSP_LoadFriendsChatMsgData = "call loadfriendcharmsg(%u)"; //加载好友列表
static LPCSTR szSQLSP_DeleteFriendsChatMsgData = "delete from friendchatmsg where nactorid=%u";
static LPCSTR szSQLSP_GetChatMsgCount = "select count(*) from friendchatmsg where nactorid=%u";
//static LPCSTR szSQLSP_LoadFriendsOfflineData = "call loadfriendsofflinedata(%d)"; //加载N天未上线的好友
static LPCSTR szSQLSP_GetJopTopLevelActor = "select actorid,actorname,job,circle,level,exp,sex from actors where job=%d and (actors.status & 2) =2 and serverindex=%d order by circle desc,level desc,exp desc limit 1";
static LPCSTR szSQLSP_GetActorConsumeRank = "select actorid,actorname,(actors.honourlv & 0xffff) from actors where (actors.status & 2) =2 and serverindex=%d and honourlv > 0 order by honourlv desc limit 3";
static LPCSTR szSQLSP_GetActorBattleRank = "select actorid,actorname,job,battlepower,sex from actors where job=%d and (actors.status & 2) =2 and serverindex=%d order by battlepower desc limit 1";
static LPCSTR szSQLSP_GetActorSwingLevelRank = "select actorid,actorname,battlepower,fashionbattle,swinglevel,job,sex from actors where fashionbattle>0 and (actors.status & 2) =2 and serverindex=%d order by fashionbattle desc,battlepower desc limit 3";
static LPCSTR szSQLSP_GetActorHeroTopicRank = "select actors.actorid,actors.actorname,actorpets.circle,actorpets.level,actorpets.exp,actorpets.name from actorpets,actors where (actors.status & 2) =2 and actors.actorid=actorpets.actorid and actors.serverindex=%d order by actorpets.circle desc,actorpets.level desc,actorpets.exp desc limit 3";
static LPCSTR szSQLSP_GetTopLevelActor = "select avg(level) from (select level from actors where (actors.status & 2) =2 and serverindex=%d order by level desc limit 10) as level";
static LPCSTR szSQLSP_GetCombineTopLevelActor = "select actorid,actorname,job,circle,level,exp from actors where (actors.status & 2) =2 and serverindex=%d and (circle > 0 or level >= 60) order by circle desc,level desc,exp desc";
static LPCSTR szSQLSP_GetCombineBattleRank = "select actorid,actorname,job,battlepower from actors where (actors.status & 2) =2 and serverindex=%d order by battlepower desc limit 10";
static LPCSTR szSQLSP_GetAllWholeActivityData = "call loadwholeactivitydata(%d,%d,%d)"; //全民活动
static LPCSTR szSQLSP_LoadActorGameSetData = "call loadgamesetdata(%u)"; //加载游戏设置数据
static LPCSTR szSQLSP_DeleteActorGameSetData = "call deletegamesetdata(%d)"; //删除游戏设置数据
static LPCSTR szSQLSP_AddActorGameSetData = "call savegamesetdata(%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"; //保存游戏设置数据
static LPCSTR szSQLSP_UpdateGameSetData = "call updategamesetdata(%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)";
//清除玩家的宠物的数据
static LPCSTR szSQLSP_CleanPetData = "call cleanactorpets(%u)";//删除角色的宠物数据(EXEC)
static LPCSTR szSQLSP_QueryFilterWordsData = "select * from filternames where namestr=\"%s\"";
static LPCSTR szSQLSP_AddFilterWordsData = "insert into filternames(namestr) values(\"%s\")";
static LPCSTR szSQLSP_DelFilterWordsData = "delete from filternames where namestr=\"%s\"";
//添加宠物
static LPCSTR szSQLSP_AddPets = "insert into actorpets(actorid,exp,hp,mp,name,circle,level,ids,modelid,weaponappear,score,vocation,sex,swingappear,reserver1,reserver2,stage,bodyforce,bless) values";//添加角色技能(EXEC)
//装载宠物的数据
static LPCSTR szSQLSP_LoadPetData = "call loadactorpets(%u)";
//装载宠物的技能数据
static LPCSTR szSQLSP_LoadPetSkillData = "call loadpetskills(%u)";
static LPCSTR szSQLSP_cleanPetSkillData = "call cleanpetskills(%u)";
static LPCSTR szSQLSP_addPetSkillData = "insert into petskills(actorid,petid,skillid,skilllevel,reserver,skillexp) values";
static LPCTSTR szSQL_SaveTopRank = "call saverank(%d)";
static LPCTSTR szSQL_LoadTopRank = "call loadrank(%d, %d)";
//static LPCTSTR szSQL_SaveTopRankCS = "call saverankCS(%d)";//跨服排行榜保存 ,限制日期的
static LPCTSTR szSQL_SaveTopRankCS = "call saverankCS(%d, \"%s\")";//跨服排行榜保存 ,限制日期的
static LPCTSTR szSQL_InitDB = "call initdb(%d)";//初始化数据库
//玩家关系数据
static LPCTSTR szSQL_LoadRelation = "call loadrelation(%u)";
static LPCTSTR szSQL_AddRelation = "insert into actorrelation(actorid,relationtype,relationid,param) values";
static LPCTSTR szSQL_CleanRelation = "call cleanrelation(%u)";
// 更新个人擂台数据
static LPCTSTR szSQL_UpdateChallengeData = "call updatechallengedata(%d)";
//gm删除金钱和物品
static LPCTSTR szSQLSP_DeleteGuidItem = "call deleteitembyguid(%d, %lld)"; //gm从后台删除离线玩家物品(物品表id,物品GUID)
static LPCTSTR szSQLSP_DeleteActorMoney = "call deleteactormoney(\"%s\", %d, %d)"; //GM从后台删除玩家金钱
//邮件系统
static LPCTSTR szSQLSP_DeleteMail = "call cleanmail(%u)";
static LPCTSTR szSQLSP_LoadMail = "call loadmail(%u)";
static LPCTSTR szSQLSP_SaveMail = "insert into mail(mailid,actorid,srcid,title,content,createdt,state,isdel) values ";
static LPCTSTR szSQLSP_SaveMailAttach = "insert into mailattach(mailid,actorid,type,itemguid,itemidquastrong,itemduration,itemcountflag,iteminlayhole,itemtime,itemreservs,itemsmith1,itemsmith2,itemsmith3, itemsmith4, itemsmith5, itemreservs2,initsmith) values ";
static LPCTSTR szSQLSP_LoadNewServerMail = "call loadservermail(%d)";
static LPCTSTR szSQLSP_LoadNewServerMailAttach = "call loadservermailAttach(%d)";
static LPCTSTR szSQLSP_SaveNewServerMail = "call updateservermail(%d)";
static LPCTSTR szSQLSP_SaveServerMail = "insert into servermail(actorid,title,content,minviplevel,maxviplevel,minlevel,maxlevel,minregistertime,maxregistertime,minlogintime,maxlogintime,online,sex,way) values ";
static LPCTSTR szSQLSP_SaveServerMailAttach = "insert into servermailattach(servermailid,type,id,count) values ";
static LPCTSTR szSQLSP_GetMaxMailIdServerMail = "select max(servermailid) from servermail";
static LPCSTR szSQLSP_LoadActorNewTitle = "call loadactornewtitle(%u)";
static LPCSTR szSQLSP_DelActorNewTitle = "call cleanactornewtitle(%u)";
static LPCSTR szSQLSP_AddActorNewTitle = "insert into actornewtitle(actorid,idmakelong,remaintime) values";
static LPCSTR szSQLSP_LoadActorCustomTitle = "call loadactorcustomtitle(%u)";
static LPCSTR szSQLSP_DelActorCustomTitle = "call cleanactorcustomtitle(%u)";
static LPCSTR szSQLSP_AddActorCustomTitle = "insert into actorcustomtitle(actorid,idmakelong,remaintime) values";
//复活特权
static LPCSTR szSQLSP_LoadReviveDurationData = "call loadactorreviveduration(%u)";
static LPCSTR szSQLSP_DelReviveDurationData = "call cleanactorreviveduration(%u)";
static LPCSTR szSQLSP_AddReviveDurationData = "insert into actorreviveduration(actorid,idmakelong,remaintime) values";
static LPCSTR szSQLSP_LoadNewHundredBattle = "call loadnewhundredbattle(%d,%d)"; //查询玩家战力数据
static LPCSTR szSQLSP_LoadActorWarChariot = "call loadactorwarchariot(%u)";
static LPCSTR szSQLSP_DelActorWarChariot = "call cleanactorwarchariot(%u)";
static LPCSTR szSQLSP_AddActorWarChariot = "insert into actorwarchariot(actorid,curhp,repairtime,parmmakelong) values";
static LPCSTR szSQLSP_LoadAccountPsw = "select psw from accountpsw where accountid=%u and serverindex=%d ";
static LPCSTR szSQLSP_CreateAccountPsw = "insert into accountpsw(accountid,serverindex,psw) values (%u,%d,'%s')";
//寄卖
static LPCSTR szSQLSP_LoadConsignmentItem = "call loadconsignmentitem(%d)";
static LPCSTR szSQLSP_DeleteConsignmentItem = "call deleteconsignmentitem(%u,%d)";
static LPCSTR szSQLSP_AddCharConsignmentItem = "insert into consignmentitem(actorid,itemguid,itemidquastrong,itemduration,itemcountflag,iteminlayhole,itemtime,itemreservs,itemsmith1,itemsmith2,itemsmith3, itemsmith4, itemsmith5, itemreservs2,initsmith,bestAttr,sourcename,selltime,price,state,serverindex,autoid) values "; //增加寄卖物品
// static LPCSTR szSQLSP_AddCharConsignmentItem = "insert into consignmentitem(actorid,itemid,itemcount,selltime,price,state,serverindex, bestAttr,itemstar) values "; //增加寄卖物品
static LPCSTR szSQLSP_LoadConsignmentIncome = "call loadconsignmentincome(%d)";
static LPCSTR szSQLSP_DeleteConsignmentIncome = "call deleteconsignmentincome(%u,%d)";
static LPCSTR szSQLSP_AddCharConsignmentIncome = "insert into consignmentincome(actorid,income,serverindex) values "; //增加寄卖物品
// 圣物
static LPCSTR szSQLSP_UpdateHallowseData = "call updateactorhallow(%u,%d,%d,%d,%d, %d,%d,%d,%d, %d,%d,%d,%d, \"%s\",\"%s\",\"%s\",\"%s\", \"%s\",\"%s\",\"%s\",\"%s\")";
static LPCSTR szSQLSP_LoadGHallowseData = "call loadactorhallow(%u)";
//跨服
static LPCSTR szSQLSP_CrateCrossServerCharactor = "call crossserverCreate(%u,\"%s\",%llu,%u,\"%s\",%d,%d,%d,%d,%d,\"%s\",%d)";//用户创建角色
static LPCSTR szSQLSP_QueryeCrossServerCharactor = "select actorid from actors where actorid = %d";//
static LPCSTR szSQLSP_QueryeCrossServerGuildId = "select guildid,socialmask from actors where actorid = %d";//
static LPCSTR szSQLSP_LoadLootPetData = "call loadactorlootpet(%u)";// 加载玩家 宠物系统非 ai宠物 数据
static LPCSTR szSQLSP_DelLootPetData = "call delactorlootpet(%u)"; //加载数据
static LPCSTR szSQLSP_InsertLootPetData = "insert into actorlootpet(actorid,type,id,continueTime) values"; //插入数据
static LPCSTR szSQLSP_LoadRebateData = "call loadactorrebatedata(%u)";// 加载玩家 返利系统 数据
static LPCSTR szSQLSP_LoadNextDayRebateData = "call loadactornextdayrebatedata(%u,%d)";// 加载玩家 次日发放 返利系统数据
static LPCSTR szSQLSP_UpdateRebateData = "call updateactorrebatedata(%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"; //更新 返利系统 数据
static LPCSTR szSQLSP_SaveRebateData = "call saveactorrebatedata(%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"; //保存 返利系统 数据
static LPCSTR szSQLSP_ClearRebateData = "call clearactorrebatedata(%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"; //清理 返利系统 数据
#endif

16
sdk/commonLib/def/FeeDb.h Normal file
View File

@@ -0,0 +1,16 @@
#pragma once
#pragma pack (push, 4)
struct FeeData
{
unsigned int nId; //
unsigned int nActorId; // 玩家id
char sPf[32]; // 平台
char sProdId[48]; // 产品id
unsigned int nNum; // 数量
ACCOUNT sAccount;
//unsigned int nProdId;
};
#pragma pack(pop)

12
sdk/commonLib/def/Fuben.h Normal file
View File

@@ -0,0 +1,12 @@
#pragma once
//禁止编译器对此结构进行字节对齐
#pragma pack (push, 1)
//保存这个玩家的副本的记录数据
typedef struct tagFubenData
{
WORD wFubenId; //副本的id对应配置表
WORD wDaycount; //本副本今日进入的次数
BYTE bProgress; //当前的进度值
}FubenData;
#pragma pack(pop)

View File

@@ -0,0 +1,76 @@
#pragma once
/****************************************************************************************/
/* 游戏设置DB相关的一些结构体的定义
/****************************************************************************************/
#pragma pack(4)
/// 游戏设置存盘的数据
typedef struct GAMESETSDATA
{
char m_vKbs[500]; //快捷键
}*PGAMESETSDATA;
#define GAMESET_ITEMS_COUNT 1000
#define GAMESET_VERSION 3
typedef struct tagGameSets2
{
int m_nVersion; // 设置的版本号(用以更新后设置默认)
int m_nBase; // 基础设置
short m_nSystem; // 系统设置
short m_nMedicine; // 药品设置
BYTE m_NmHp; // 强效金疮药百分比
BYTE m_NmMp; // 太阳水百分比
BYTE m_ImHp; // 强效太阳水百分比
BYTE m_ImMp; // 万年雪霜百分比
BYTE m_PerAdd1; // 疗伤药百分比
BYTE m_PerAdd2; //
BYTE m_PerAdd3; //
BYTE m_PerAdd4; //
int m_NmHpVal; // 强效金疮药 剩余HP
int m_NmHpTime; // 强效金疮药 剩余HP 间隔
int m_NmMpVal; // 太阳水 剩余MP
int m_NmMpTime; // 太阳水 剩余MP 间隔
int m_ImHpVal; // 强效太阳水 剩余HP
int m_ImHpTime; // 强效太阳水 剩余HP 间隔
int m_ImMpVal; // 万年雪霜 剩余MP
int m_ImMpTime; // 万年雪霜 剩余MP 间隔
int m_ValAdd1; // 疗伤药 剩余MP
int m_TimeAdd1; // 疗伤药 剩余MP 间隔
int m_nHp1Val; // 血量1低于
int m_nHp1Item; // 使用物品1
int m_nHp2Val; // 血量2低于
int m_nHp2Item; // 使用物品2
short m_nProt; // 保护设置
short m_nHook; // 挂机设置
BYTE m_nAutoSkillID; // 自动施放的技能id
BYTE m_nPet; // 自动召唤的宠物
BYTE m_nHpLess; // 血量低于百分比
BYTE m_nHpLessSkill; // 血量低于,使用技能
int m_nRecycle[4]; // 回收
// 以下保持4字节对齐需要
static const int nByte = (GAMESET_ITEMS_COUNT + 1 + 1)/4;
static const int nIntCount = (nByte + 3) / 4;
int m_nItems[nIntCount]; // 物品设置
}GAMESETSDATA2, *PGAMESETSDATA2;
//其他数据
struct GameUserDataOther
{
int nGmLevel; //玩家的GM等级
};
#pragma pack()

View File

@@ -0,0 +1,9 @@
#pragma once
#pragma pack(4)
struct GhostData
{
int nId; //id
int nLv;//等级
int nBless;//祝福值
};
#pragma pack()

228
sdk/commonLib/def/GuildDb.h Normal file
View File

@@ -0,0 +1,228 @@
#pragma once
#define MAX_EVENTCOUNT 50 //200 行会日志最大条数
#define MAX_GUILDDEPOTBAG 24
#define MAX_GUILDDEPOTRECOUD 100
#define MAX_GUILDTITLENUM 2000
#define GUILDDEPOT_PAGE_GRIDS 30 //行会仓库每页有42个格子
#define GUILDDEPOT_PAGE_GRIDS_CHECK 12 //需要审核行会仓库每页有12个格子
class EntityHandle;
#include "UserItem.h"
//禁止编译器对此结构进行字节对齐
#pragma pack (push, 1)
typedef struct tagActorNodeSimple
{
unsigned int nActorId;
INT64 nGuildGX; //个人的贡献值
unsigned int nVipGrade;
BYTE nSex;
BYTE nLevel;
BYTE nCircle; //转数
BYTE nJob;
BYTE nMenPai;
BYTE nType; //地位
BYTE nTK; //堂口
UINT nZzNext; //在职时间
UINT nZjNext;
int nGuildTiTle; //封号序号
int nTime; //最近登陆的时间
int nTotalGx; //在本行会的贡献值
int nIcon; //头像id
int nBattleValue; //战力
int nGuildCityPos; //皇城职位(攻城)(已经不用)
int nModelId; //模型id
int nWeaponId; //武器外观
int nSwingId; //翅膀外观
int nJoinTime; //加入行会的时间
}ActorNodeSimple;
typedef struct tagActorNode
{
tagActorNodeSimple BasicData;
ACTORNAME sActorName;
EntityHandle hActorHandle;
//bool boStatus;//这个角色是否已删号
tagActorNode()
{
ZeroMemory(this,sizeof(*this));
//boStatus = TRUE;
}
//DECLARE_OBJECT_COUNTER(tagActorNode)
}ActorCommonNode;
typedef struct tagWarGuildHistory
{
int nGid; //对方帮派的id
int nPkCount; //杀敌数
int nDieCount; //己方被杀数量
char sEndTime[20]; //下次变化状态的时间
char sGuildName[32]; //对方帮派的名称
tagWarGuildHistory()
{
sGuildName[0] = 0;
}
//DECLARE_OBJECT_COUNTER(tagWarGuildHistory)
}WarGuildHistory;
//帮派技能
typedef struct tagGuildSkill
{
int nSkillId; //帮派技能的id
int nLevel; //帮派技能的等级
tagGuildSkill()
{
memset(this,0,sizeof(*this));
}
}GUILDSKILLS,*PGUILDSKILLS;
typedef struct tagEventMsg
{
int aTime; //事件发生的时间
char nEventMsg[512]; //发生的事件
int mEventId; //事件id
int mParam1; //参数1
int mParam2; //参数2
int mParam3; //参数3
char mParam4[32]; //参数4
char mParam5[32]; //参数5
tagEventMsg()
{
memset(this,0,sizeof(*this));
}
}GUILDEVENTRECOUD;
class CGuild;
typedef struct tagGuildTitle
{
char nTitleName[32]; //行会封号
}GUIlDTITLES;
//行会沙巴克战是的命令
typedef struct tagGuildCmdStr
{
BYTE bCmdId; //1 集合 2 进攻 3 收兵
char strCmd[32]; //行会封号
}GUILDCMDSTR;
//请求成为联盟
typedef struct tagInterRelationMsg
{
unsigned int nGuildId; //行会id
}INTERRELATIONMSG;
//行会仓库
typedef struct tagGuildDepotItem
{
unsigned int nActorId; //玩家的id
int nCoinType; //存入的物品,需要取出消耗的钱的类型 1 金币 2 元宝
int nCoinNum; //取出物品需要的钱的数量
int nExitFlag; //0存在1被取出了(似乎已经不使用了)
unsigned int nExchangeActorId; //0-未被申请兑换,>0,有人申请兑换
ACTORNAME szExchangeActorName; //申请兑换的玩家Name
unsigned int nExchangeTime; //申请兑换时间
CUserItem* nUserItem;
tagGuildDepotItem()
{
memset(this,0,sizeof(*this));
}
}GUILDDEPOTITEM;
//行会仓库操作记录
typedef struct tagGuildDepotMsg
{
BYTE nType; //类型 1 存入 2 取出 3 收回
int nTime; //操作的时间
char nActorName[32]; //操作人的姓名
char nItemName[32]; //操作的物品名字
int nNum; //物品数量
int nCoinType; //钱的类型 1 金币 2 元宝
int nCoinNum; //钱的数量
tagGuildDepotMsg()
{
memset(this,0,sizeof(*this));
}
}GUILDDEPOTMSG;
typedef struct tagWarDbData
{
int nRelationShip; //0 无 1 联盟 2 敌对
int nState; //1 宣战状态 0 正常
int nPkCount; //杀敌数
int nDieCount; //己方被杀数量
int nNext; //下次可以宣战的时间
bool boSaveHistory;//是否需要保存到历史记录表中默认是false只有当状态从敌对到和平的时候才改为true保存后又改成false
tagWarDbData()
{
memset(this,0,sizeof(*this));
}
} WarDbData;
//行会之间的关系、状态处理
typedef struct tagWarRelationData
{
unsigned int nGuildId; //行会id
WarDbData m_WarData;
}WarRelationData;
typedef struct tagWarGuild
{
enum tagWarStatus
{
wsDeclareWar = 0, //宣战
wsOnWar = 1,
wsPeaceful = 2,
};
CGuild* m_pGuild;
WarDbData m_WarData;
tagWarGuild()
{
m_WarData.boSaveHistory = false;
m_pGuild = NULL;
}
/*
* Comments:检查当前时间,并且返回当前的状态
* UINT nWarTime:敌对的持续时间
* UINT nDecTime:宣战的持续时间
* bool boChange:是否有状态改变
* @Return int:
*/
int checkStatus(UINT nNow,UINT nWarTime,UINT nDecTime,bool& boChange)
{
//if (nNow > m_WarData.nNext) //可以改变状态了
// {
// m_WarData.nRelationShip = wsPeaceful;//可以宣战
// boChange = true;
// }
return m_WarData.nRelationShip;
}
VOID Declare(CGuild* pWarGuild,UINT nNow,UINT nDecTime)
{
if (pWarGuild == NULL) return;
m_pGuild = pWarGuild;
m_WarData.nPkCount = 0;
m_WarData.nDieCount = 0;
m_WarData.nNext = nNow + nDecTime;
m_WarData.nRelationShip = wsDeclareWar;
m_WarData.boSaveHistory = false;
}
}WarGuild;
//行会贡献排名列表
typedef struct tagGuildMemGxList
{
unsigned int nActorId; //成员的id
int nGx; //行会贡献
}GUILDMEMGXLIST;
#pragma pack(pop)

View File

@@ -0,0 +1,31 @@
#pragma once
#pragma pack(4)
//玩家身上的兵魂表soulWeapon
struct HallowsSoulWeaponInfo
{
int nId; // 四个武器1-4
int nStarId; // 升星
int nLorderId; // 升阶
int nLvId; // 升级
//char cBestAttr1[50];
HallowsSoulWeaponInfo()
{
memset(this, 0, sizeof(*this));
}
};
struct SoulWeaponNetData
{
int nId; // 四个武器1-4
int nStarId; // 升星
int nLorderId; // 升阶
int nLvId; // 升级
char cBestAttr[50]; //极品属性
SoulWeaponNetData()
{
memset(this, 0, sizeof(*this));
}
};
#pragma pack()

View File

@@ -0,0 +1,54 @@
#pragma once
/****************************************************************************************/
/* 英雄的数据结构
/****************************************************************************************/
#pragma pack(push,4)
typedef struct tagHeroDbData
{
BYTE bStage; //阶
BYTE bReserve3; //保留字3
WORD wReserve4; //保留字4
int nBodyforce; //体力
int nBless; //祝福
unsigned long long nExp; //经验
unsigned int nHp; //当前的血
unsigned int nMp; //当前的蓝
BYTE bCircle ; //转数
BYTE bLevel; //等级
BYTE bVocation; //职业
BYTE bSex; //性别
BYTE bID; //英雄ID
BYTE bState; //休息的,出战的,合体的
WORD wIconId; //图标的ID用于换头像
unsigned int nScore; //评分
unsigned int nModel; //模型
unsigned int nWeaponAppear; //武器的外观
unsigned int nSwingAppear; //翅膀的外观
int nReserver1;
int nReserver2;
char name[32]; //名字
tagHeroDbData()
{
memset(this,0,sizeof(*this));
}
}HERODBDATA,*PHERODBDATA;
//英雄技能结构
typedef struct tagHeroSkillData
{
int nHeroID; //英雄ID
int nSkillID; //技能的id
int nSlotId;
int nLevel; //技能的等级
BYTE bIsClose;
BYTE bReserver;
WORD wReserver;
unsigned int nExp;
unsigned int nNextLevelExp;
tagHeroSkillData()
{
memset(this,0,sizeof(*this));
}
}HEROSKILLDATA,*PHEROSKILLDATA;
#pragma pack (pop)

View File

@@ -0,0 +1,20 @@
#pragma once
//交互系统与数据服务器通信的数据包定义
//禁止编译器对此结构进行字节对齐
#pragma pack (push, 1)
//保存这个玩家的副本的记录数据
typedef struct tagFriendsData
{
BYTE bRsType; //关系类型对应tagRelationShip的定义
UINT nActorId; //对方的角色id
jxSrvDef::ACTORNAME szName; //对方的名字
UINT nParam; //用于操作的参数值比如准备时结婚这个记录所在的副本的handle准备离婚时这个记录了离婚的时间7日
tagFriendsData()
{
nActorId = 0;
szName[0] = 0;
nParam = 0;
}
}FriendsData;
#pragma pack(pop)

View File

@@ -0,0 +1,543 @@
#pragma once
/****************************************************************************************/
/* 服务端之间通信协议定义
/* 命名规范:
/* namespace 服务端名称Proto
/* {
/* enum e目标服务端名称Code
/* {
/* //通信消息号注释数据段格式数据名称数据类型【byte,short,int,shortString,string】
/* c消息号别名 = 消息号值其中c表示通信双方中的客户端方发送从1开始
/* //通信消息号注释数据段格式数据名称数据类型【byte,short,int,shortString,string】
/* s消息号别名 = 消息号值其中s表示通信双方中的服务端方发送从1开始
/* };
/* };
/****************************************************************************************/
namespace jxInterSrvComm
{
namespace NameServerProto
{
enum eNameServerCode
{
//发送通信心跳包
cKeepAlive = 1,
//申请角色ID角色名称string
cAllocCharId,
//申请帮会ID帮会名称string
cAllocGuildId,
//申请重命名角色角色IDint角色新名称string
cRenameChar,
//申请重命名帮会帮会IDint帮会新名称string
cRenameGuild,
//申请跨服角色ID角色名称string
cCrossAllocCharId,
//发送通信心跳包
sKeepAlive = 1,
//返回申请角色ID结果角色名称string操作错误号int(NAMESERVER_OPERROR)角色分配的ID值int仅当操作成功时有意义
sAllocCharId,
//返回申请帮会ID结果角色名称string操作错误号int(NAMESERVER_OPERROR)帮会分配的ID值int仅当操作成功时有意义
sAllocGuildId,
//返回申请重命名角色结果角色新名称string操作错误号int(NAMESERVER_OPERROR)
sRenameChar,
//返回申请重命名帮会结果帮会新名称string操作错误号int(NAMESERVER_OPERROR)
sRenameGuild,
//跨服角色ID结果
sCrossAllocCharId,
};
/** 名称服务器操作返回值定义 **/
typedef enum tagNameServerOPError
{
neSuccess = 0, //操作成功
neInvalidName = 1, //名称无效,名称中包含非法字符或长度不合法
neDataBaseError = 2, //名称服务器数据库操作错误
neDataBaseCallError = 3,//名称服务器数据库调用错误
neNameinuse = 4, //名称已被使用
neDBlimitCreate = 5, //禁止创建角色
neTimedOut = 0xFFFF, //操作超时(本地定义的错误,非名称服务器返回的错误)
}NAMESERVER_OPERROR;
}
namespace SessionServerProto
{
enum eSessionServerCode
{
//发送通信心跳包
cKeepAlive = 0,
//返回是否在线的数据包(nSessionID:int, nIsOnline:BYTE)
cQueryResult =1,
//关闭会话连接(nSessionID: int)
cCloseSession =2,
//向session服务器更新状态(nSessionId:int, state:int )
cUpdateSession =3,
//逻辑服务器向会话服务器发送在线人数
cOnlineCount = 4,
//获取用户的活动背包数据
cUserItemList = 5,
//用户领取活动背包
cGetUserItem = 6,
//删除活动物品
cDeleteUserItem = 7,
//增值序列号
cAddValueCard = 8,
// 查询增值卡信息
cQueryAddValueCard = 9,
// 查询元宝数量
cQueryYuanbaoCount = 10,
// 提取元宝
cWithdrawYuanbao = 11,
//确认已经收到了
cConformOpenSession =12,
// 请求传送
cRequestTransmit = 13,
//战区里派发
cSendGroupMessage = 14,
//向所有的服广播或者发给特定服
cBroadcastOr1SrvMessage = 15,
// 保存战力排行榜
cSaveCsRank = 16,
// 获取跨服战力排行榜数据
cLoadCsRank = 17,
// 清除跨服排行榜
cClearCsRank = 18,
//逻辑服发来的,准备检测用户名和密码
cLogicCheckPasswd =19,
//逻辑服发来的,创建一个账户
cLogicCreateAccount =20,
//设置公告服的ID
cSetCommonServerId =21,
//转发后台消息给会话
cSendMgrMsgToSession = 22,
//用于腾讯平台的消息
cQQMsg=23,
//设置中心会话服的连接
CSendCommonPlatformInfo = 24,
//请求传送到跨平台服务器
CTransToCommonPlatform = 25,
//发送通信心跳包
sKeepAlive = 0,
//打开一个连接,session数据: GLOBALSESSIONOPENDATA )
sOpenSession =1,
//关闭一个连接(nSessionId:int )
sCloseSession =2,
//更新状态(nSessionId:int, state:int )
sUpdateSession=3,
//查询是否session在线(nSessionID: int)
sQuerySessionExist =4,
//返回用户的活动背包数据
sUserItemList = 5,
//用户领取活动背包的结果
sGetUserItem = 6,
//删除活动物品
sDeleteUserItem = 7,
//增值序列号
sAddValueCard= 8,
// 查询增值卡
sQueryAddValueCard = 9,
// 查询元宝数量
sQueryYuanbaoCount = 10,
// 提取元宝
sWithdrawYuanbao = 11,
// 请求传送应答消息
sReqestRransmitAck = 12,
// 获取跨服战力排行榜数据
sLoadCsRank = 13,
//检测账户的结果
sCheckPasswdResult = 14,
//创建账户的结果
sCreateAccountResult = 15,
//转发从其他逻辑服来的数据
sOtherLogicMessage =16,
// 转发战区的消息
sRecvGroupMessage = 17,
//踢掉在线的跨服用户
sKickCrossServerUser=18,
//腾讯相关消息的返回 (集市任务等)
sQQMsg=19,
//请求跨平台传送回答
sReqestPlatformAck = 20,
//集市任务相关
sTaskAck = 21,
//模拟检测账户的结果
sSimulateCheckPasswdResult = 25,
};
/** 跨服消息定义 **/
enum// eForwardLogicMsgCmd
{
fcDefault = 0, // 默认
fcBroadcastTipmsg, // 跨服发布全服系统提示
fcRankUpdate, // 跨服Ranking更新
fcWorldBroadCastMsg, // 跨服世界广播消息包
fcScriptData, // 脚本数据包
fcCrossBossDie, //跨服boss被杀广播
fcCrossWorldFirstOne, //跨服天下第一战神
fcCrossASbkOwnMsg, //跨服沙巴克占领消息
fcCrossPosToServer, //发送跨服沙巴克职位给各服务器
fcBroadToCrossSbkGuild, //广播可以攻沙的跨服的行会
fcBroadSetCrossSbkPos, //广播设置跨服沙巴克职位
fcSendCrossBattlefieldSignupInfoToCommonServer, ///< 向跨服发送降魔战场的报名信息
fcBroadCrossBattlefieldSignupInfo, ///< 降魔战场广播报名信息
};
/** 其他逻辑服消息发送定义 **/
enum// eOtherLogicMsgCmd
{
dmDefault = 0,
lcLoadOfflineData, //请求装载离线信息
lcSaveOfflineData, //返回离线信息
lcBroadToSaveCsRank, //广播所有逻辑服将雕像榜单数据发到session
lcBroadToLoadCsRank, //广播所有逻辑服重新取下榜单
//lcBroadHundredServerCsRank, //广播百服排行
//lcClearHundredServerCsRank, //广播清除所有百服排行
//lcBroadDoule12LotteryPointCsRank, //广播百服排行
//lcBroadNHLotteryPointCsRank, //广播百服排行
//lcSendGuildToForwardLogic, //发送行会列表到跨服服务器
//lcBroadTreasureAuctionCsRank, //发送珍宝拍卖排行榜
};
/** 名称服务器操作返回值定义 **/
typedef enum tagSeServerOPError
{
neSuccess = 0, //操作成功
neSSErr, //数据库执行错误
}SESSION_SERVER_OPERROR;
}
namespace DbServerProto
{
/**数据服务器和逻辑服务器的命令码**/
enum// tagDBRecvCmd
{
dcDefault, //默认处理0
dcQuery=1, //查询数据
dcSave = 2, //保存数据
dcLoadActor = 3, //加载用户认证信息3
dcLoadQuest = 4, //装置任务数据
dcSaveQuest = 5, //保存用户的任务数据
dcLoadSkill = 6, //装置技能数据
dcSaveSkill = 7, //保持技能数据
dcLoadOtherGameSets = 8, //load游戏快捷键设置
dcSaveOtherGameSets = 9, //save游戏快捷键设置
dcLoadBagItem = 10, //装载背包物品
dcSaveBagItem = 11, //保存背包物品数据
dcLoadEquipItem = 12, //装载装备物品
dcSaveEquipItem = 13, //保存装备物品
dcLoadDepotItem = 14, //装载仓库物品
dcSaveDepotItem = 15, //保存仓库物品13
dcLoadVar = 16, //加载角色变量
dcSaveVar = 17, //保存角色变量
dcQuerySubSystemData = 18, //装载其他子系统的数据,在各子系统全部都创建完毕以后,向数据服务器发送该数据包
dcLoadCircleCount = 19, //装载转生次数总总人数
dcLoadStaticCount = 20, //装载玩家计数器
dcSaveStaticCount = 21, //保存玩家计数器
dcLoadActiveBag, //加载角色的活动背包
dcGetActiveItem, //获取活动物品
dcDeleteActiveItem, //删除活动物品
dcLoadHeroItem, //装载英雄的物品
dcSaveHeroItem, //保存英雄的物品
dcLogout, // 玩家下线
dcLoadGuildList, //帮派组件读入所有帮派的数据
dcLoadGuildDetail, //帮派的详细数据
dcLoadGuildApplyLists = 30, //帮派申请列表
dcDealGuildApply, //处理申请
dcLoadActorApplyResult, //加载玩家申请行会结果
dcSaveActorApplyResult, //保存玩家申请行会结果
dcAddGuild, //增加帮派
dcDeleteGuild, //解散帮派
dcSaveGuild = 36, //保存帮派的信息
dcAddMember, //增加帮派成员
dcSaveActorGuild, //保存个人帮派信息
dcLoadActorGuild, //读入个人帮派信息
dcDeleteMember = 40, //删除某个成员
dcAddMemberOffLine, //帮派增加一个不在线的成员,数据服务器要返回这个成员的详细数据
dcInitGuildSkill, //初始化帮派技能
dcLoadGuildSkill, //增加帮派技能的详细数据
dcSaveGuildEvent, //保存帮派事件
dcLoadGuildEvent, //初始化帮派事件
dcSaveGuildDepotRecord, //保存行会仓库的操作记录
dcLoadGuildDepotRecord, //加载行会仓库操作记录
dcSaveGuildDepotItem, //存储行会仓库物品到数据库
dcLoadGuildDepotItem, //加载行会仓库物品
dcSaveGuildSkill = 50, //保存帮派技能信息
dcLoadAchieveMent, //加载玩家成就数据
dcSaveAchieveMent, //保存玩家成就数据
dcLoadMsg, //读取用户的消息数据
dcDeleteMsg, //删除某条消息
dcAddMsg, //增加用户一条信息
dcAddMsgByActorName, // 增加用户一条信息(通过玩家名称)
dcLoadHeroData, //装载宠物的数据
dcLoadHeroSkillData, //装载宠物的技能的数据
dcSaveHeroData, //保存宠物的数据
dcSaveHeroSkillData, //保存宠物的技能数据
dcLoadBaseRank, //读取有关头衔的排行榜数据
dcSaveBaseRank, //刷新头衔排行榜数据
dcSaveBaseRankCS, //刷新跨服排行榜数据
dcLoadPetDetailData, //装载宠物的装备/技能等具体数据
dcSaveRelation, //保存师徒信息
dcLoadRelation, //加载师徒信息
dcLoadOfflineUserInfo, //装载离线玩家的信息
dcLoadOfflineUserBasic, //装载离线玩家的基本信息
dcLoadOfflineUserOther, //装载离线玩家的装备信息
dcSaveOfflineInfo, // 保持玩家离线信息
dcLoadOfflineUserHeroInfo , //装载离线玩家英雄的信息
dcLoadOfflineUserHeroBasic, //装载离线玩家英雄的基本信息
dcLoadOfflineUserHeroEquips, //装载离线玩家英雄的装备信息 TO DELETE
dcUpdateChallengeData, // 更新擂台信息
dcLoadCombatRankInfo, //从db获取战力排行的信息
dcLoadCmobatGameInfo, //加载职业宗师的基本信息
dcSaveCombatGameInfo, //保存职业宗师的基本信息
dcLoadCombatRecord, //加载职业宗师战报
dcSaveCombatRecord, //保存职业宗师战报
dcUpdateCombatBaseInfo, //刷新个人排名的奖励排名
dcLoadFriendsData, //加载好友等关系的数据
dcSaveFriendsData, //保存好友数据
dcDeleteFriendData, //删除好友数据
dcAddFriendChatMsg, //保存离线聊天消息
dcLoadFriendChatMsg, //加载离线聊天消息
dcAddFilterWordsMsg, //后台添加屏蔽字到表里
dcBackRemoveItem, //后台删除物品
dcBackRemoveMoney, //台后删除金钱
dcLoadGameSetData, //加载游戏设置的数据
dcSaveGameSetData, //保存游戏设置的数据
dcLoadTopLevelActor, //取各职业排名第一名的玩家
dcLoadCombinLevelActor, //合区等级大于60级的玩家
dcLoadCombinBattleActor, //合区战力排行前10名的玩家
dcLoadActorConsumeRank, //取消耗元宝排名前三的玩家
dcLoadTopicBattleData, //取各职业排名第一的玩家
dcLoadTopicHeroData, //取英雄前三名的玩家
dcLoadAllActivityData, //获取全民奖励的数据
dcLoadSwingLevelData, //取翅膀排名前三的玩家
dcReloadCrossConfig, //重新加载跨服配置
dcQueryActorExists, //查询角色名是否存在
dcSendDbServerStopCmd, //发送关闭数据服的消息
dcUpdateActorState, //设置玩家状态
dcLoadActorBuildingData, //加载个人行会建筑的数据
dcLoadMail, //加载邮件
dcSaveMail, //保存邮件
dcSaveOfflineMail, //保存离线邮件
dcClearActor, //清理角色
dcLoadFriendOffline, //加载N天内没上线的好友信息
dcLoadAlmirahItem, //装载衣橱物品
dcSaveAlmirahItem, //保存衣橱物品
dcLoadNewTitleData, //加载新头衔数据
dcSaveNewTitleData, //保存新头衔数据
dcLoadDeathData, //加载角色死亡的数据
dcSaveDeathData, //保存角色死亡的数据
dcLoadDeathDropData, //加载角色死亡掉落的数据
dcSaveDeathDropData, //保存角色死亡掉落的数据
dcLoadTopLevelActorData, //读取等级最高玩家信息(不读转数了)
dcSaveConsignmentItem, //保存交易行(actorid= 0的数据),
dcLoadConsignmentItem, //读取交易行(寄卖数据)
dcSaveActorConsignment, //保存交易行数据(按玩家id cache)
dcLoadConsignmentIncome, //读取交易行收益
dcLoadNewServerMail, //读取新的全服邮件
dcSaveNewServerMail, //保存全服邮件
dcAddNewServerMail, //保存全服邮件
dcLoadActivityList, // 加载活动数据
dcSaveActivityList, // 保存活动数据
dcLoadPersonActivity, // 加载个人活动数据
dcSavePersonActivity, // 保存个人活动数据
dcLoadBossInfo, //保存boss信息 --策划要求 需要记录 所以存db ---不用了
dcSaveBossInfo, //加载boss信息
dcLoadActorStrengthenInfo, //保存强化信息
dcSaveActorStrengthenInfo, //加载强化信息
dcLoadofflineAchieve, // 加载离线玩家的成就信息
dcSaveofflineAchieve, // 保存离线玩家的成就信息
dcLoadGhostInfo, // 加载神魔
dcSaveGhostInfo, // 保存神魔
dcLoadCrossGuildId, //跨服行会id
dcLoadLootPetData, // 加载宠物
dcSaveLootPetData, // 保存宠物
dcLoadRebateData, //加载返利活动
dcLoadNextDayRebateData,// 加载 次日发放 返利活动
dcUpdateRebateData, // 更新返利活动
dcSaveRebateData, // 保存返利活动
dcClearRebateData, // 清理返利活动
dcSaveCustomInfo, // 保持玩家自定义信息
dcLoadCustomInfo, // 查询玩家自定义信息
dcLoadCustomInfoUnForbid, // 查询玩家自定义信息
dcSaveCustomInfoUnForbid, //
//-------------------------------------------------------------
dcInitDB=150, //初始化数据库,特殊指令
dcResActorDbSessionData, //回复数据服务器,玩家逻辑服务器的验证数据已经收到
dcSetGambleFlag, //设置赌博系统是否关闭
dcUpdateGateUserInfo, // 更新网关用户信息
dcLoadFee, //加载充值信息
dcClearFee, //清除充值信息
dcNoticeFee, //加载所有充值信息
dcBackChangeTradingQuota, //后台修改交易额度
dcLoadCustomTitleData, //加载自定义称号数据
dcSaveCustomTitleData, //保存自定义称号数据
dcLoadCustomInfoCustomTitleId, // 查询玩家 自定义称号 自定义信息
dcSaveCustomInfoCustomTitleId, // 保存玩家 自定义称号 自定义信息
//////////////////////////////////////////////////////////////////////////
// 选择角色和进入游戏用到的一些DB请求定义DBCenter用到
// DataCenter --> DataBase
DC2DB_QueryActorList = 200, // 查询账号角色列表
DC2DB_EnterGame, // 请求进入用户
//////////////////////////////////////////////////////////////////////////
// DataBase --> DataCenter
DB2DC_QueryActorListAck = 200, // 查询账号角色列表Ack
DB2DC_EnterGameAck, // 请求进入用户Ack
DB2DC_UpdateLogicClientList, // 更新DBServer连接的逻辑客户端列表
//下面是用于登陆的,一个比较大的修改
dcGetActorList =500, //获取玩家角色列表
dcCreateActor, //创建玩家
dcDeleteActor, //删除角色
dcGetRandName, //获取随机的名字
dcChangeActorName, //玩家改名字
dcCheckSecondPsw,
dcCreateSecondPsw,
dcGetCSActorId, //获取玩家跨服id
dcCreateCSActorId, //获取玩家跨服id
dcLoginMsgMax, //最大的装载消息包
dcLoadHallowsSystemInfo, //圣物保存信息
dcSaveHallowsSystemInfo, //
dcLoadReviveDurationData, //加载复活特权信息
dcSaveReviveDurationData, //保存复活特权信息
};
// 通信的错误码定义
enum// tagResultError
{
reSucc = 0,
reDbErr, //数据库执行错误
reNoActor, //没有该角色的属性信息
reSaveErr, //保存属性失败
reNoLoad, //还没有读入数据
reDbNotConnected, //DB连接不上
reParamError, //参数错误
reNameError, //名字不合法
reNameInUse, //名字被使用
reTimeOut, //操作超时
reInterErr, //内部错误
reNoHero, //没有英雄信息
};
}
namespace AsyncOperatorCode
{
enum// tagAsyncOpError
{
soeSucc = 0, // 成功
soeDBErr, // db执行错误或者db无法连接
soeNoCardInfo, // 不存在此卡信息
soeTimeExpired, // 查询超时
};
}
namespace CrossServerProto
{
enum// eCrossServerCode
{
//发送通信心跳包
cKeepAlive = 0,
//返回是否在线的数据包
cQueryResult =1,
//关闭会话连接(nSessionID: int)
cCloseSession =2,
//逻辑服发来的,登录数据
cSendCrossData =4,
//逻辑服发来的,登录
cReqCrossLogin =5,
//删除玩家
cSendCloseActor =6,
//获取玩家在跨服的id
cGetCrossActorId = 7,
cSendCSMail = 8,//
cCSGetRankList = 9,//跨服排行
cGetActorOfflineData = 10,//获取玩家数据
//逻辑服,请求系统聊天消息
cSendReqChat = 12,
//发送通信心跳包
sKeepAlive = 0,
//逻辑服发来的,登录
sReqLogin =5,
sGetCrossActorId = 7,//
sSendCSMail = 8,//发送邮件
sCSGetRankList = 9,//
sGetActorOfflineData = 10,//获取玩家数据
//跨服发送消息,广播到各服
sSendBroadTipmsg = 11,
//逻辑服,请求系统聊天消息
sSendReqChat = 12,
//跨服发送系统消息,广播到各服
sSendBroadSysTipmsg = 13,
};
}
}

25
sdk/commonLib/def/Msg.h Normal file
View File

@@ -0,0 +1,25 @@
#pragma once
#define MAX_MSG_COUNT 1024 //这个跟数据库定义的长度相关,不能改
//禁止编译器对此结构进行字节对齐
#pragma pack (push, 1)
//保存这个玩家的邮件消息
typedef struct tagMsgData
{
INT64 Msgid;
BYTE Msgtype;
char Msg[MAX_MSG_COUNT];//
WORD nBufSize; //数据内容的长度最大不超过MAX_MSG_COUNT
/*Msg的定义
[标题文字][按钮文字][消息内容]
前2字段是固定
*/
void GetTxt(LPCSTR& sTitle,LPCSTR& sBtnTxt)
{
CDataPacketReader packet(Msg,nBufSize);
packet >> sTitle;
packet >> sBtnTxt;
}
}MsgData;
#pragma pack(pop)

View File

@@ -0,0 +1,61 @@
#pragma once
/****************************************************************************************/
/* 宠物的数据结构
/****************************************************************************************/
#pragma pack(push,4)
typedef struct tagPetDbData
{
unsigned int nBaseAttack; // 基础的攻击资质
unsigned int nBaseDefence;// 基础的防御资质
unsigned int nBaseAgility; //基础的敏捷资质
unsigned int nBasePhysique; //基础的体魄资质
unsigned int nSmithAttack; //洗出来的攻击资质
unsigned int nSmithDefence; //洗出来的防御资质
unsigned int nSmithAgility; //洗出来的敏捷资质
unsigned int nSmithPhysique; //洗出来的体魄资质
unsigned int nExp; //经验
unsigned int nHp; //当前的血
unsigned int nMp; //当前的蓝
BYTE bQuality; //宠物的品质
BYTE bStrong; //强化
BYTE bCircle ; //转数
BYTE bLevel; //等级
BYTE bAattackType; //攻击类型
BYTE bID; //在玩家身上的标记ID标记玩家的宠物
WORD wConfigId; //配置表里的ID
BYTE bState; //该宠物的状态,休息的,出战的,合体的
BYTE bIconId; //图标的ID用于宠物换皮
WORD wLoyalty ; //忠诚度
WORD wSmithCount; //洗资质的数量
WORD wWashMergeRate; //洗出来的附体资质
char name[32]; //名字
unsigned int nScore; //宠物的评分
BYTE bSkillOpenSlot; //技能使用道具开孔的个数
BYTE bReserver; //保留
WORD wReserver; //保留
tagPetDbData()
{
memset(this,0,sizeof(*this));
}
}PETDBDATA,*PPETDBDATA;
//宠物的技能的数据
typedef struct tagPetSkillData
{
int nPetID; //宠物在玩家身上的编号
int nSkillID; //技能的id
int nSlotId; //技能的槽位的ID
int nLevel; //技能的等级
}PETSKILLDATA,*PPETSKILLDATA;
#pragma pack (pop)

View File

@@ -0,0 +1,17 @@
#pragma once
#pragma pack(4)
struct QuestItem
{
int nQid;//任务id
int nType;//任务类型
int nValue;//任务进度
int nState;//任务状态
int nComplete;//完成
int nUseFsTimes;//使用飞鞋次数
int nStartId;//环形 任务开始id
QuestItem()
{
memset(this, 0, sizeof(*this));
}
};
#pragma pack()

View File

@@ -0,0 +1,192 @@
#ifndef _SERVER_DEF_H_
#define _SERVER_DEF_H_
/*****************************************************
*
* 服务端通用定义文件
*
*****************************************************/
typedef unsigned long long Uint64; //
typedef unsigned int ACCOUNTDATATYPE; //账户的类型
typedef unsigned int ACTORDATATYPE; //角色的类型
namespace jxSrvDef
{
/* 服务器类型定义 */
typedef enum tagServerType
{
InvalidServer = 0, //未定义服务器类型
GateServer = 1, //网关服务器
LogServer = 2, //日志服务器
NameServer = 3, //名称服务器
SessionServer = 4, //会话服务器
DBServer = 5, //数据服务器
GameServer = 6, //游戏服务器
}SERVERTYPE;
/* 获取服务器类型名称字符串 */
inline LPCTSTR getServerTypeName(tagServerType eServerType)
{
switch(eServerType)
{
case GateServer: return _T("网关");
case LogServer: return _T("日志");
case NameServer: return _T("名称");
case SessionServer: return _T("会话");
case DBServer: return _T("数据");
case GameServer: return _T("逻辑");
default: return _T("未知");
}
}
/* 全局会话状态定义 */
typedef enum tagGlobalSessionState
{
gsWaitQueryChar = 1, //等待连接到DB服务器查询角色
gsSelChar = 2, //已经连接到DB服务器出于创建、选择角色状态
gsWaitEntryGame = 3, //等待连接游戏服务器
gsInGame = 4, //已经连接游戏服务器开始游戏
}GSSTATE;
/*
DBCenter转发消息类型。注意不要用0作为请求号默认的心跳包消息ID就是0
*/
typedef enum tagDBCenterRequest
{
DBCenterHeartBeat = 0, // DBCenterClient和DBCenterServer之间的心跳包
DBCenterGateRequest = 100, // DBCenter转发的网关请求包括选择角色、创建角色、删除角色等请求
DBCenterLogicRequest // DBCenter转发的逻辑请求包括获取角色基本数据、装备数据等请求
}DBCENTERREQUEST;
/******
* 服务器注册结构,当服务器连接到另一个服务器,
* 需要发送注册服务器的数据结构以便注册服务器,
* 注册服务器成功后才可正常通信。
****************************************************/
typedef struct tagServerRegistData
{
static const INT GT_JianXiaoJiangHu = 0x484A584A;//《剑啸江湖》的游戏ID
INT GameType; //游戏ID《剑啸江湖》中固定为0x484A584A
INT ServerType; //服务器类型值为SERVERTYPE枚举类型中的枚举值
INT ServerIndex; //服务器唯一编号(服务器编号仅对游戏服务器有意义)
INT Recv1;
CHAR ServerName[64]; //服务器名称需包含0终止符
}SERVER_REGDATA, *PSERVER_REGDATA;
/*** 全局异步操作返回值定义 **/
typedef enum tagASyncOPError
{
aeSuccess = 0, //成功
aeLocalInternalError = 1, //本地服务器内部错误
aeServerInternalError = 2, //远程服务器内部错误
aeInvalidName = 3, //名称字符串无效
aeLocalDataBaseError = 4, //本地服务器数据库操作错误
aeServerDataBaseError = 5, //远程服务器数据库操作错误
aeNameInuse = 6, //名称已被使用
aeTimedOut = 0xFFFF, //操作超时(本地定义的错误,异步操作实现的服务器返回的错误)
}ASYNC_OPERROR;
/** 登陆的时候返回的错误码**/
typedef enum tagLoginOPError
{
enSuccess = 0, //操作成功
enPasswdError =1, //密码错误
enNoAccount=2, //没有这个账号
enIsOnline =3, //已经在线
enServerBusy =4, //服务器忙
enServerClose =5, //服务器没有开放
enSessionServerError =6 , //session服务器有问题比如db没有连接好
enServerNotExisting =7, //不存在这个服务器
enFcmLimited =8 , //账户纳入防沉迷
enSessionServerClose =9, //会话服务器处于关闭状态
enDbServerClose =10, //数据服务器处于关闭状态
enGMLoginFailError =11, //gm在非法的ip登陆
enIpError =12, //ip收到了限制
enIpTooManyConnect =13, //ip连接了太多
enIpMd5Error =14, //Md5计算错误
enSignOutofDate =15, //发过来的时间已经过期了
enTimeFormatError =16, //前面的格式错误
enAccountSeal =17, //登陆过封停的账户
enAccountFull = 18,//当前服务器过载,请选择其他服务器
enServerOnLineCountMAx = 126, //在线达到最大
}SESSION_SERVER_OPERROR;
/*** 定义服务器之间通信消息号的数据类型 **/
typedef WORD INTERSRVCMD;
//定义字符串数据长度
static const int MAX_ACCOUNT_NAME_LENGTH = 80; //最大的账户名字长度
static const int ACCOUNT_NAME_BUFF_LENGTH = 81; //账户的buff长度
typedef char ACCOUNT[ACCOUNT_NAME_BUFF_LENGTH];
static const int MAX_ACTOR_NAME_LENGTH = 32; //最大的玩家名字的长度
static const int ACTOR_NAME_BUFF_LENGTH = 33; //玩家名字的buff长度
static const int ENOUNCE_BUFF_LENGTH = 100; //最大宣言长度
static const int MAX_TOKEN_LENGTH = 48; //运营商的渠道统计的最大长度
typedef char ACTORNAME[ACTOR_NAME_BUFF_LENGTH]; //玩家的名字
typedef char ENOUNCE[ENOUNCE_BUFF_LENGTH]; //帝王宣言
static const int MAX_PASSWD_LENGTH = 64; //最大的密码长度
static const int MAX_GUILD_NAME_LENGTH = 32; //最大的公会的名字
/***
* 逻辑服务器向数据服务器发送创建帮会的数据结构
* 包含创建帮会的必要数据
***************************************************/
typedef struct tagCreateGuildData
{
CHAR sGuildName[33]; //帮会名称包含0终止字符
CHAR sFoundName[33]; //创始人的名字,插入数据库的时候需要用到
BYTE nZY;
WORD wIcon;
int nIndex;
Uint64 hActor;
unsigned int nActorid;
int nServerIndex;
}CREATEGUILD_DATA, *PCREATEGUILD_DATA;
/*** 会话服务器广播打开会话的数据结构 ***/
typedef struct tagGlobalSessionOpenData
{
INT nGateIndex; //处于网关的编号
INT nSessionId; //全局会话ID
INT nServerIndex; //会话登录的目标服务器
INT nRawServerId; // 角色创建时的服务器ID
LONGLONG nClientIPAddr; //客户端登陆的IP地址支持IPv6
DWORD dwFCMOnlineSec; //防沉迷系统中不满足下线休息时间而产生的连续在线时间,单位是秒
GSSTATE eState; //会话状态
ACCOUNT sAccount; //会话账号字符串
int nGmLevel; //账户的GM等级
UINT64 lKey; //生效的key
}GLOBALSESSIONOPENDATA, *PGLOBALSESSIONOPENDATA;
/***
/* 游戏网关路由表结构
*******************************************/
typedef struct tagGameServerRoute
{
int nServerIndex; //服务器ID
int nRouteCount; //路由地址数量
struct
{
char sHost[124]; //服务器地址(支持域名)
int nPort; //服务器端口
int nUserCount; // 此路由上的用户数目
} RouteTable[16]; //路由地址表
}GAMESERVERROUTE, *PGAMESERVERROUTE;
}
#endif

View File

@@ -0,0 +1,21 @@
#pragma once
#pragma pack(4)
struct ServerMailDef
{
int nServerMailId; //全服邮件id
unsigned int nActorId; //角色id
char sTitle[200]; //邮件标题
char sContent[600]; //邮件内容
int nMinVipLevel; //最低vip等级
int nMaxVipLevel; //最高vip等级
int nMinLevel; //最低人物等级
int nMaxLevel; //最高人物等级
unsigned int nMinRegisterTime; //最早注册时间
unsigned int nMaxRegisterTime; //最晚注册时间
unsigned int nMinLoginTime ; //最早登录时间
unsigned int nMaxLoginTime; //最晚登录时间
int btOnline; //在线 0全部1在线2不在线
int btSex; //性别 -1全部0男 1女
int nWay; //用途标识,0系统正常邮件1后台福利
};
#pragma pack()

View File

@@ -0,0 +1,20 @@
#pragma once
/****************************************************************************************/
/* 技能DB相关的一些结构体的定义
/****************************************************************************************/
#pragma pack(4)
/// 玩家的一个技能需要存盘的数据
//#define MAX_LEARNED_SKILL_COUNT 64 //一个玩家最多学习的技能个数
typedef struct tagOneSkillDbData
{
WORD nSkillID; ///< 技能的ID
unsigned char nLevel; ///< 技能的等级,如果没有学习就是0
unsigned char nIsClosed; ///< 技能是否被关闭着如果1表示被关闭着0表示正常
unsigned int nCd ; ///< 冷却时间
unsigned int nExp; ///< 技能的经验
unsigned int nMijiExpiredTime; ///< 秘籍的过期时间
int nMijiId; ///< 镶嵌的秘籍
}ONESKILLDBDATA, *PONESKILLDBDATA;
#pragma pack()

View File

@@ -0,0 +1,239 @@
#pragma once
#include<string>
//禁止编译器对此结构进行字节对齐
#pragma pack (push, 1)
//这里表示物品的存储位置与db通信用的
enum tagItemStorageType
{
itItemBag=1, //背包物品
itItemEquip =2, //装备物品
itItemDepot =3, //仓库物品
itItem4 = 4,
itItemHero =5, //玩家的宠物的物品
itItem6 = 6,
itItemOfflineEquip =7, //装载玩家的离线装备数据
itItem8 = 8,
itItem9 = 9,
};
#define SMITH_COUNT_BYTE_ID 0 //精锻度保存的那个reserver
#define DEPORT_BAG_ID_BYTE_ID 5 //物品reserver数据里存储的仓库背包的id的那个字节
#define MAX_WING_ITEM_NUM 4 //翅膀吞噬材料最大的种类
struct CUserItem
{
public:
static const INT_PTR MaxSmithAttrCount = 5; //物品的精锻属性数量
/** 物品系列号数据类型定义
** ★★★千万不要给这个联合结构增加构造函数!否则巨慢★★★
**/
CUserItem()
{
memset(this, 0, sizeof(*this));
}
union ItemSeries
{
LONG64 llId;
struct
{
unsigned int time; //31-0位表示物品产生的日期和时间值为短日期类型单位是秒
WORD wSeries; //47-32位表示在一秒内的序列每产生一个物品则序列值+1一秒后序列值归零
WORD btServer; //55-48位表示服务器ID
}t;
public:
//转换为LONG64的类型转换运算符
inline operator LONG64 () const
{
return llId;
}
//提供对物品系列号是否相等的运算符重载
inline bool operator == (const ItemSeries& series) const
{
return llId == series.llId;
}
//提供对物品系列号是否不等的运算符重载
inline bool operator != (const ItemSeries& series) const
{
return llId != series.llId;
}
};
/**
** 物品镶嵌槽数据结构定义
**/
struct ItemInlayHole
{
public:
static const WORD HoleOpenFlag = 0x8000;//镶嵌槽是否已经开启的标志
static const WORD HoleItemMask = 0x7FFF;//镶嵌槽镶嵌的物品id的掩码位
public:
WORD wData;
public:
//判断镶嵌槽是否已经开启
inline bool opened() const
{
return (wData & HoleOpenFlag) != 0;
}
//开启或关闭镶嵌孔注意★★★关闭镶嵌孔后之前镶嵌的物品ID会继续保留
inline void open(const bool boOpened)
{
if ( boOpened )
wData = wData | HoleOpenFlag;
else wData = wData & HoleItemMask;
}
//获取镶嵌槽中镶嵌的物品的ID
inline WORD getInlayedItemId() const
{
return (wData & HoleItemMask);
}
//设置镶嵌槽中镶嵌的物品的ID
inline ItemInlayHole& setInlayedItem(const INT_PTR wItemId)
{
wData = (wData & HoleOpenFlag) | (wItemId & HoleItemMask);
return *this;
}
};
public:
//判断物品是否已经被绑定或者不可交易
inline bool binded() const { return btFlag != ufUnBind; }
//是否禁止交易
inline bool IsDenyDeal() const { return btFlag == ufDenyDeal; }
void setSource(int nSourceType,int nTime, int nSceneId = 0, int nMonsterId = 0, const char* pKillerName = NULL)
{
memset(&this->cSourceName, 0, sizeof(this->cSourceName));
if(pKillerName)
memcpy(&this->cSourceName, pKillerName, sizeof(this->cSourceName));
this->nAreaId = nSceneId;
this->nCreatetime = nTime;//GetGlobalLogicEngine()->getMiniDateTime();
this->bInSourceType =nSourceType;// tagItemSource::iqKillMonster;
this->nDropMonsterId = nMonsterId;
}
void setSource(CUserItem* pUserItem)
{
if(pUserItem) {
memset(&this->cSourceName, 0, sizeof(this->cSourceName));
memcpy(&this->cSourceName, pUserItem->cSourceName, sizeof(this->cSourceName));
this->nAreaId = pUserItem->nAreaId;
this->nCreatetime = pUserItem->nCreatetime;
this->bInSourceType =pUserItem->bInSourceType;// tagItemSource::iqKillMonster;
this->nDropMonsterId = pUserItem->nDropMonsterId;
}
}
void operator >> (CDataPacket& pack)
{
pack<< this->series.llId;
pack<< this->wItemId;
pack<< this->btQuality;
pack<< this->btStrong;
pack<< this->wCount;
pack<< this->bLostStar;
pack<< this->bInSourceType;
pack<< this->wIdentifySlotNum;
pack<< this->wStar;
pack<< this->nCreatetime;
for (int i = 0; i < MaxSmithAttrCount; i++)
{
pack<< (unsigned int)this->smithAttrs[i].nValue;
}
pack<< this->nAreaId;
pack<< this->btFlag;
pack<< this->btLuck;
pack<< this->nDropMonsterId;
pack<< this->btDeportId;
pack<< this->btHandPos;
pack<< (BYTE)1;//this->btSharp;/* */
pack<< this->wPackageType;
pack.writeString((const char*)cBestAttr);
pack.writeString((const char*)Refining);
pack.writeString((const char*)cSourceName);
}
void operator << (CDataPacketReader& pack)
{
pack >>this->series.llId;
pack >> this->wItemId;
pack >> this->btQuality;
pack >> this->btStrong;
pack >> this->wCount;
pack >> this->bLostStar;
pack >> this->bInSourceType;
pack >> this->wIdentifySlotNum;
pack >> this->wStar;
pack >> this->nCreatetime;
for (int i = 0; i < MaxSmithAttrCount; i++)
{
pack >> this->smithAttrs[i].nValue;
}
//pack<< this->smithAttrs;
pack >> this->nAreaId;
pack >> this->btFlag;
pack >>this->btLuck;
pack >> this->nDropMonsterId;
pack >> this->btDeportId;
pack >> this->btHandPos;
pack >> this->btSharp;//this->btSharp;/* */
pack >> this->wPackageType;
pack.readString(cBestAttr, ArrayCount(cBestAttr));
cBestAttr[sizeof(cBestAttr)-1] = 0;
pack.readString(Refining, ArrayCount(Refining));
Refining[sizeof(Refining)-1] = 0;
pack.readString(cSourceName, ArrayCount(cSourceName));
cSourceName[sizeof(cSourceName)-1] = 0;
}
public:
ItemSeries series; //物品唯一系列号
WORD wItemId; //对应的标准物品ID
BYTE btQuality; //物品的品质等级
unsigned int wCount; //物品数量
WORD wStar; //强化星级
BYTE btFlag; //绑定标记 0不绑定1绑定2不可交易(见UserItemFlag)
WORD wPackageType; //包裹类别
char cBestAttr[200]; //极品属性
char Refining[200]; //洗炼属性
BYTE btStrong; //物品的强化等级ZGame保留不使用--暂时没用
BYTE bLostStar; //[ZGame使用]当前强化损失的星级(强化) --暂时没用
WORD wIdentifySlotNum; //[ZGame使用]鉴定属性槽被解锁的数量 --暂时没用
PACKEDGAMEATTR smithAttrs[MaxSmithAttrCount]; //鉴定生成属性的值 --暂时没用
char btLuck; //动态的幸运值或者诅咒值,祝福油加幸运,杀人减幸运 --暂时没用
BYTE btDeportId; //装备穿戴的位置 --暂时没用
BYTE btHandPos; //是左右还是右手 --暂时没用
BYTE btSharp; //锋利值 --暂时没用
//---来源
BYTE bInSourceType; //来源
WORD nDropMonsterId; //怪物id
int nAreaId; //场景id
char cSourceName[200]; //归属昵称
CMiniDateTime nCreatetime; //物品的创建时间类型为CMiniDateTime
int nType ;//
//整个useritem的大小为53个字节。
};
/// 衣橱物品
struct CAlmirahItem
{
WORD nModelId;
byte btTakeOn; //是否已经穿上
int nLv; //等级
CAlmirahItem()
{
memset(this, 0, sizeof(*this));
}
};
#pragma pack(pop)