534 lines
18 KiB
C++
534 lines
18 KiB
C++
/*
|
||
*装备强化,镶嵌等需要的导出接口
|
||
* 和玩家的接口比,这些接口只使用在一些特殊的场合
|
||
*/
|
||
|
||
#pragma once
|
||
//tolua_begin
|
||
namespace Item
|
||
{
|
||
|
||
/*
|
||
* Comments:设置物品的属性
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pUserItem:物品的指针
|
||
* Param int nPropertyID:属性id tagItemProperty 定义
|
||
enum tagItemProperty
|
||
{
|
||
ipItemID , //物品的ID
|
||
ipItemCount, //物品的数量
|
||
ipItemStrong, //强化等级
|
||
ipItemQuality, //装备的品质
|
||
ipItemActorLevel, //需要玩家的等级
|
||
ipItemBind, //物品的绑定标记
|
||
ipItemType, //物品的类型
|
||
ipItemMaxProperty,
|
||
};
|
||
* Param int nValue:新的数值,
|
||
* @Return bool: 成功返回true,否则返回false
|
||
*/
|
||
bool setItemProperty(void * pEntity, void* pUserItem,int nPropertyID,int nValue);
|
||
|
||
/*
|
||
* Comments: 获取物品的属性
|
||
* Param void * pEntity:玩家的指针,这里
|
||
* Param void * pItem:物品的指针
|
||
* Param int propID:属性id SystemParamDef.h 的tagItemProperty里定义的
|
||
|
||
* Param int &nAuxRetValue: 辅助返回参数
|
||
* @Return int:返回属性值
|
||
*/
|
||
int getItemProperty(void * pEntity, void * pItem, int propID,int &nAuxRetValue);
|
||
|
||
/*
|
||
* Comments: 通过物品的ID查找物品的属性
|
||
* Param int nItemID: 物品的ID
|
||
* Param int nPropID: SystemParamDef.h 的tagItemProperty里定义的
|
||
* @Return int:属性的值
|
||
*/
|
||
int getItemPropertyById(int nItemID,int nPropID);
|
||
|
||
/*
|
||
* Comments: 获得物品的GUID
|
||
* Param void * pItem:物品的指针
|
||
* @Return long long:返回物品的guid
|
||
*/
|
||
double getItemGuid(void * pItem);
|
||
|
||
|
||
/*
|
||
* Comments:获取物品id
|
||
* Param void * pItem:物品指针
|
||
* @Return int:返回物品id,如果是0表示失败
|
||
*/
|
||
int getItemId(void * pItem);
|
||
|
||
/*
|
||
* Comments: 获取物品Guid字符串描述
|
||
* Param void * pItem:
|
||
* @Return char*:
|
||
* @Remark: 注意此函数不是线程安全!
|
||
*/
|
||
char* getItemGuidStr(void *pItem);
|
||
|
||
/*
|
||
* Comments: 设置装备处理的结果(强化,打孔等操作)
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pUserItem: 装备的指针
|
||
* Param int nProceccType: 处理的类型
|
||
//装备处理的一些操作的操作类型
|
||
enum tagItemProcessType
|
||
{
|
||
itItemEnhance =1, //装备强化
|
||
itItemOpenHole =2, //装备的打孔
|
||
itItemDiamondEnlay =3, //装备镶嵌宝石
|
||
itItemDiamondRemove =4, //装备宝石摘除
|
||
itItemDiamondSynthetic =5, //宝石合成
|
||
itItemBreakUp=6, //装备的分解
|
||
itItemInject=7, //装备的注入
|
||
};
|
||
* Param bool bResult:成功用true,否则用false
|
||
* Param bool bAutoOperate:是否终止自动操作 终止用true, 不终止用false
|
||
* @Return void:
|
||
*/
|
||
void sendItemProcessResult(void * pEntity, void* pUserItem,int nProceccType,bool bResult,bool bAutoOperate=false);
|
||
|
||
|
||
|
||
/*
|
||
* Comments:通知客户端处理一件装备需要的消耗(比如强化,镶嵌等)
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pUserItem:装备的指针
|
||
* Param int nProcessType: 处理的类型 tagItemProcessType里定义
|
||
* Param int nItemID:需要消耗的物品的ID(强化石)
|
||
* Param int nCount:需要消耗的物品的数量
|
||
* Param int nMoneyType: 需要消耗的金钱的种类
|
||
* Param int nMoneyCount:需要消耗的金钱的数量
|
||
* Param int nProtectItemID: 保护物品ID
|
||
* Param int nProtectCount: 保护物品数量
|
||
* @Return void:
|
||
*/
|
||
void sendItemProcessConsume(void * pEntity,void * pUserItem, int nProcessType,int nItemID,int nCount, int nMoneyType,int nMoneyCount, int nProtectItemID=0, int nProtectCount=0);
|
||
|
||
|
||
|
||
|
||
/*
|
||
* Comments: 向客户端发送一件装备的处理的参数(这里要改为vector)
|
||
* Param void * pEntity:实体ID
|
||
* Param int nGetConfigParamID:获取ID,tagGetItemConfigParam 里定义的
|
||
* Param int nParam1:参数
|
||
* Param int nParam2:可选参数,可以不填
|
||
* Param int nParam3:可选参数,可以不填
|
||
* Param int nParam4:可选参数,可以不填
|
||
* Param int nParam5:可选参数,可以不填
|
||
* Param int nParam6:可选参数,可以不填
|
||
* Param int nParam7:可选参数,可以不填
|
||
* Param int nParam8:可选参数,可以不填
|
||
* @Return void:
|
||
*/
|
||
//void sendItemConfig(void * pEntity,int nGetConfigParamID,int nParam1, int nParam2=-1,int nParam3=-1, int nParam4=-1,int nParam5=-1,int nParam6=-1,
|
||
// int nParam7=-1,int nParam8=-1);
|
||
|
||
|
||
/*
|
||
* Comments: 创建一个物品
|
||
* Param int nItemID: 物品的ID
|
||
* Param int nCount: 数量
|
||
* Param int nStar: 强化
|
||
* Param int nLostStar: 强化损失的星级
|
||
* Param int nQuality: 品质
|
||
* Param int nBind:绑定标记
|
||
* Param int ntime: 物品创建时间,秒为单位。如果为0表示不限时间
|
||
* Param int nQualityDataIndex: QualityDataIndex
|
||
* @Return void *: 如果是空表示失败
|
||
*/
|
||
void * createItem(int nItemID,int nCount=1,int nStar=0, int nLostStar=0, int nInscriptLevel=0, int nAreaId=0, int nBind=0, int ntime=0);
|
||
|
||
|
||
/*
|
||
* Comments: 删除玩家背包里的一个物品
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pItem: 物品的指针
|
||
* Param int nCount:删除物品数量
|
||
* Param char * sComment: 备注
|
||
* Param int nLogID: 物品的日志号
|
||
* Param bool bNeedFreeMemory: 是否需要释放内存
|
||
* @Return int: 删除的数量
|
||
*/
|
||
int removeItem(void *pEntity,void *pItem,int nCount, char * sComment,int nLogID,bool bNeedFreeMemory =true);
|
||
|
||
/*
|
||
* Comments: 减少物品使用的次数(耐久)
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pItem: 物品的指针
|
||
* Param int nCount:删除物品耐久数量级 nCount*m_dwUseDurDrop
|
||
* Param char * sComment: 备注
|
||
* Param int nLogID: 物品的日志号
|
||
* Param bool bNeedFreeMemory: 是否需要释放内存
|
||
* @Return int: 减少的次数
|
||
*/
|
||
int removeItemDura(void *pEntity,void *pItem,int nCount = 1, char * sComment = "Script",int nLogID = 164,bool bNeedFreeMemory =true);
|
||
|
||
/*
|
||
* Comments: 删除玩家背包里指定指针同状态的其他物品
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pItem: 物品的指针
|
||
* Param int nCount:删除物品数量
|
||
* Param char * sComment: 备注
|
||
* Param int nLogID: 物品的日志号
|
||
* Param bool bNeedFreeMemory: 是否需要释放内存
|
||
* Param bool bReqSB:是否要判断强化与绑定条件
|
||
* @Return int: 删除的数量
|
||
*/
|
||
int removeOtherItem(void *pEntity,void *pItem,int nCount, char * sComment,int nLogID,bool bNeedFreeMemory =true,bool bReqSB = false);
|
||
|
||
/*
|
||
* Comments: 删除玩家背包或者装备栏上的物品
|
||
* Param void * pEntity:玩家对象指针
|
||
* Param int nType: 物品类型
|
||
* Param bool bIncEquipBar: 为true表明删除装备栏中的制定类型物品;否则只删除背包中的指定类型物品
|
||
* Param char * sComment: 备注
|
||
* Param int nLogID: 物品的日志号
|
||
* @Return int:返回删除的物品数量
|
||
* @Remark:
|
||
*/
|
||
int removeItemByType(void* pEntity, int nType, bool bIncEquipBar, char * sComment,int nLogID);
|
||
|
||
/*
|
||
* Comments: 删除玩家身上装备
|
||
* Param void * pEntity: 玩家对象指针
|
||
* Param void * pItem: 物品对象指针
|
||
* Param const char * sComment: 备注
|
||
* Param int nLogId: 日志Id
|
||
* @Return int: 返回删除的物品数量
|
||
* @Remark:
|
||
*/
|
||
int removeEquip(void* pEntity, void* pItem, const char* sComment, int nLogId, bool bIncHero=false);
|
||
|
||
/*
|
||
* Comments: 获取背包或者装备中的指定类型的物品
|
||
* Param void * pEntity: 玩家对象指针
|
||
* Param int nType: 装备类型
|
||
* Param bool bIncEquipBar: 是否在装备栏搜索。如果为true,在背包中没找到的话就会在装备栏中搜索;否则不在装备栏搜索
|
||
* Param bool bInEquipBar: 返回搜索到的位置。如果找到了,返回true表明是在装备栏,否则在背包栏
|
||
* @Return void*: 返回搜索到的物品
|
||
* @Remark:
|
||
*/
|
||
void* getItemByType(void* pEntity, int nType, bool bIncEquipBar, bool &bInEquipBar);
|
||
|
||
/*
|
||
* Comments: 添加物品
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pItem:物品的指针
|
||
* Param char * comment:记录日志用的描述
|
||
* int nLogWay: 物品的获得/失去途径,在LogDef.h里定义的
|
||
* int nItemCount: 物品的数量,为了支持商店里的回购功能,这里支持重新设定数量
|
||
如果使用-1,那么就不设置数量,使用原来的数量
|
||
* @Return int: 返回添加好的个数
|
||
*/
|
||
int addItem(void *pEntity,void *pItem,char * comment,int nLogWay,int nItemCount =-1, int bNotice = 1);
|
||
|
||
|
||
|
||
/*
|
||
* Comments: 获取物品的链接
|
||
* Param int nItemID: 物品的ID
|
||
* Param void * pUserItem: 物品的指针,非装备=NULL就行;装备并需要显示动态数据这里不能为空
|
||
* @Return char *:返回物品的链接
|
||
*/
|
||
const char* getItemLinkMsg( int nItemID,void* pUserItem = NULL);
|
||
|
||
/*
|
||
* Comments:获得奖励的描述,比如金币,道具将返回道具的名字(可带连接)
|
||
* Param void * pEntity:玩家指针,这里没用
|
||
* Param int nAwardType:奖励类型
|
||
* Param int nAwardId: 奖励的id,只有道具有效
|
||
* Param bool useChatLink:是否带连接,只有道具有效
|
||
* Param void * pUserItem:道具的指针,
|
||
* @Return char *
|
||
*/
|
||
const char * getAwardDesc(int nAwardType,int nAwardId=0, bool useChatLink=false,void *pUserItem =NULL);
|
||
|
||
/*
|
||
* Comments: 返回玩家当前身上有几件装备
|
||
* @Return int:装备的数量
|
||
*/
|
||
int getEquipCount(void * pEntity);
|
||
|
||
/*
|
||
* Comments: 通过装备的排序返回身上装备的指针
|
||
* Param int nSortID:排序号,比如玩家身上有6件装备,使用nSortID在[1,6]的范围里有效
|
||
* @Return void*:返回装备的指针
|
||
*/
|
||
void* getEquipBySortID(void * pEntity,int nSortID);
|
||
|
||
/*
|
||
* Comments: 玩家背包里的物品的数量
|
||
* @Return int:返回物品的数量
|
||
*/
|
||
int getBagItemCount(void * pEntity);
|
||
|
||
|
||
/*
|
||
* Comments:获取背包里的物品的指针
|
||
* Param int nSortID:排序号,比如玩家背包里有6件装备,那么[1,6有效]
|
||
* @Return void *: 返回背包里的物品的指针
|
||
*/
|
||
void * getBagItemBySortID(void * pEntity,int nSortID);
|
||
|
||
/*
|
||
* Comments: 通过背包物品的guid返回物品的指针
|
||
* Param void * pEntity: 玩家的指针
|
||
* Param long long lItemGuid:物品的guid
|
||
* @Return void *:物品的指针
|
||
*/
|
||
void * getBagItemPtrByGuid(void * pEntity,double lItemGuid);
|
||
|
||
/*
|
||
* Comments: 通过物品id返回背包物品的指针
|
||
* Param void * pEntity: 玩家的指针
|
||
* Param long long lItemGuid:物品的guid
|
||
* @Return void *:物品的指针
|
||
*/
|
||
void * getBagItemPtrById(void * pEntity,int lItemId, int nQuality /* = -1 */, int nStrong /* = -1 */);
|
||
|
||
/*
|
||
* Comments: 通过身上装备物品的guid返回装备的指针
|
||
* Param void * pEntity: 玩家的指针
|
||
* Param long long lItemGuid:身上装备的guid
|
||
* @Return void *:身上装备的指针
|
||
*/
|
||
void * getEquipPtrByGuid(void *pEntity, double lItemGuid);
|
||
|
||
|
||
//查找物品
|
||
//nItemPos: 1背包 2玩家装备 3英雄装备
|
||
//nHeroId:如果是英雄装备则为英雄POS
|
||
//nEntityId: <=0则遍历查找 如果查找到则赋值nItemPos与nHeroId 如果>0用作heroId
|
||
void * getEquipItemPtr(void *pEntity, double lItemGuid, int &nItemPos, int &nHeroId, int nEntityId=-1);
|
||
|
||
/*
|
||
* Comments:从装备栏中取得指定类型物品
|
||
* Param void * pEntity:玩家指针
|
||
* Param int nType:装备类型
|
||
* @Return void *:返回装备的指针
|
||
*/
|
||
void * getEquipByType(void * pEntity, int nType);
|
||
|
||
/*
|
||
* Comments: 回收装备的内存指针,这个只能用于玩家商店卖东西的回购功能,谨慎使用
|
||
* Param void * pItem: 物品的指针
|
||
* @Return void:
|
||
*/
|
||
void releaseItemPtr(void * pItem);
|
||
|
||
|
||
|
||
/*
|
||
***牵扯到单个物品的判断 只需要判断当前背包最小剩余格子数量
|
||
* Comments: 获得一个玩家背包空余的格子数量
|
||
* Param void * pEntity:玩家的指针
|
||
* Param int type:背包类型 --可以通过配置packageType这个字段获得
|
||
* @Return int:返回背包空余的格子数量
|
||
*/
|
||
int getBagEmptyGridCount(void *pEntity, int type);
|
||
|
||
/*
|
||
***牵扯到多物品的判断 需要判断所有背包最小剩余格子数量
|
||
* Comments: 获得玩家所有背包最小空余的格子数量
|
||
* Param void * pEntity:玩家的指针
|
||
* @Return int:返回背包空余的格子数量
|
||
*/
|
||
int getAllBagMinEmptyGridCount(void *pEntity);
|
||
|
||
/*
|
||
*** 根据背包类型检测空余格子是否足够,然后给出不同提示
|
||
*nType: enum BagType 类型
|
||
*/
|
||
bool bagIsEnough(void *pEntity,int nType);
|
||
|
||
/*
|
||
* Comments: 添加该物品需要多少个格子
|
||
* Param void * pEntity:玩家的指针
|
||
* Param int nItemID: 物品的id
|
||
* Param int nItemCount: 物品的数量
|
||
* Param int nQuality: 物品的品质
|
||
* Param int nStrong:物品的强化
|
||
* Param int nBind: 物品的绑定标记
|
||
* Param int nParam: 辅助参数 可以用于物品指针
|
||
* @Return int: 返回需要多少个格子才能容纳这个物品
|
||
如果是添加批量物品,先
|
||
local nGridCount= Item.getBagEmptyGridCount(args) --获得有多少个格子
|
||
对每个物品遍历一次,剩余的格子数量少一个,如果总格子没有了,就表示不能添加了
|
||
*/
|
||
int getAddItemNeedGridCount(void *pEntity,int nItemID, int nItemCount,int nQuality=0,
|
||
int nStrong =0, int nBind =-1, int nParam = 0);
|
||
|
||
/*
|
||
* Comments:通过物品的id获取物品的静态属性
|
||
* Param int nItemId:物品的id
|
||
* @param int nAttrType:物品的静态属性id,enum tagGameAttributeType
|
||
* @Return -1 没有此属性,否则返回属性值
|
||
*/
|
||
int getItemStaticAttrById(int nItemId, int nAttrType);
|
||
|
||
/*
|
||
* Comments:通过物品的id获取物品的名字
|
||
* Param int nItemId:物品的id
|
||
* @Return char *:物品的名字
|
||
*/
|
||
char * getItemName(int nItemId );
|
||
|
||
/*
|
||
* Comments:通过物品的id获取物品的名字
|
||
* Param int nItemId:物品的id
|
||
* @Return int:物品的背包属性
|
||
*/
|
||
int getItemPackageTyp(int nItemId );
|
||
|
||
|
||
/*
|
||
* Comments:添加一个卖给商店的物品,如果没有回购,玩家下线将回收
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * itemPtr: 物品的指针
|
||
* Param int nItemCount: 物品的数量(因为物品的数量在删除的时候会被清0,这里把物品的数量放这里保存)
|
||
* @Return unsigned bool:成功返回true,否则返回false
|
||
*/
|
||
bool addSellItem(void * pEntity, void * itemPtr, int nItemCount);
|
||
|
||
|
||
/*
|
||
* Comments:删除一个卖给商店的指针,回购完了调用
|
||
* Param void * pEntity:玩家的指针
|
||
* Param void * pItem:卖给商店的物品的指针,回购以后要把这个删除
|
||
* @Return bool:成功返回true
|
||
*/
|
||
bool delSellItem(void * pEntity, void * pItem);
|
||
|
||
|
||
/*
|
||
* Comments:通过guid获得卖给商店的物品的指针
|
||
* Param void * pEntity:玩家的指针
|
||
* Param double lItemGuid:卖给商店物品物品的guid
|
||
* @Return void *: 物品的指针
|
||
*/
|
||
void * getSellItem(void * pEntity, double lItemGuid);
|
||
|
||
/*
|
||
* Comments:物品是否被精锻过
|
||
* Param void * itemPtr:
|
||
* @Return bool:
|
||
*/
|
||
bool isForgeItem(void* itemPtr);
|
||
|
||
/*
|
||
* Comments:是否有装备强化达到了指定的等级
|
||
* Param void * pEntity:
|
||
* Param int nLevel:
|
||
* @Return bool:
|
||
*/
|
||
bool isStrongLevel(void* pEntity,int nLevel);
|
||
|
||
/*
|
||
* Comments:是否有精锻过的物品,一般任务系统使用到
|
||
* @Return bool:
|
||
*/
|
||
//bool hasForgeItem(void* pEntity);
|
||
|
||
/*
|
||
* Comments:背包获取耐久度满的指定的物品
|
||
* Param void * pEntity:
|
||
* Param int nItemId:
|
||
* @Return void*:返回null表示没有
|
||
*/
|
||
void* getDuraFullItemFromBag(void* pEntity,int nItemId);
|
||
|
||
/*
|
||
* Comments:根据物品id获取所属的套装id
|
||
* Param int nItemId:
|
||
* @Return int:
|
||
*/
|
||
int getSuitIdByItemId(int nItemId);
|
||
|
||
/*
|
||
* Comments:判断是否装备齐全某个套装的所有装备
|
||
* Param void * pEntity:
|
||
* Param int nSuit:套装id
|
||
* Param int nCount:要收集的套装的数量
|
||
* @Return bool:
|
||
*/
|
||
bool isGetAllSuitEquip(void* pEntity,int nSuit,int nCount);
|
||
|
||
/*
|
||
* Comments: 装备物品
|
||
* Param void * pEntity:
|
||
* Param void * pUserItem:
|
||
* @Return bool:
|
||
* @Remark:
|
||
*/
|
||
bool equipItem(void* pEntity, void* pUserItem, int nHeroId = 0, bool isBagEquip = true);
|
||
//脱下装备
|
||
bool takeOffItem(void* pEntity, void* pUserItem, int nHeroId, bool checkGrid);
|
||
|
||
/*
|
||
* Comments: 清除背包
|
||
* Param void * pEntity:
|
||
* @Return void:
|
||
* @Remark:
|
||
*/
|
||
void clearBag(void* pEntity);
|
||
|
||
//装备是否禁止修理 --不用了
|
||
//bool isDenyRepair(int nItemId);
|
||
|
||
/*
|
||
* Comments: 根据物品指针获取物品在背包的索引
|
||
* Param void * pEntity:
|
||
* @Return void:
|
||
* @Remark:
|
||
*/
|
||
int getBagItemIndex(void* pEntity,void * itemPtr);
|
||
|
||
/*
|
||
* Comments: 根据在背包的索引获取物品的指针
|
||
* Param void * pEntity:
|
||
* @Return void:
|
||
* @Remark:
|
||
*/
|
||
void* getItemPtrByIndex(void* pEntity,int nIndex);
|
||
|
||
/*
|
||
* Comments:初始化装备极品属性
|
||
* Param void * pEntity:玩家指针
|
||
* Param void * pItemPtr:物品指针
|
||
* @Return bool:成功返回true
|
||
*/
|
||
//bool initEquipBaseAttr(void * pEntity, void *pItemPtr, int nQualityDataIndex);
|
||
|
||
bool isGuildMeltingItem(void* pItem);
|
||
|
||
|
||
//掉落组掉落物品,可设置掉落捡取时间,默认2min, nDropTips = 0
|
||
bool drop_item_in_random_area_byGroupID(int sceneId, int nPosX,int nPosY,int dropGroupId,int pick_time = 120, int nDropTips = 0);
|
||
|
||
|
||
//是否装备
|
||
bool isEquipment(void *pItemPtr);
|
||
bool isEquipmentById(int nItemId);
|
||
//获取背包里同样ID最高星的装备
|
||
void* getItemPtrHighestStar(void *pEntity, int nItemID);
|
||
|
||
//从属性库中给装备随机生成属性
|
||
void generateItemAttrsInSmith( void * pEntity, void *pItemPtr, int nSmithId, int nAttrNum, unsigned char nLockType1, unsigned char nLockType2,
|
||
unsigned char nLockType3, int nFlag, unsigned char nJob = 0 );
|
||
|
||
//从某个属性库中随机抽取一条属性
|
||
void generateOneAttrInSmith( int nSmithId, unsigned char& nAttrType, int& nAttrValue, unsigned char nLockType=enSmithLockType_No);
|
||
|
||
bool hasItemAttrs( void * pEntity, void *pItemPtr, int nFlag );
|
||
//转移装备属性
|
||
bool transferItemAttrs( void * pEntity, void *pSrcItemPtr, void *pDesItemPtr, int nFlag );
|
||
}
|
||
//tolua_end
|