Files
mir_server/server/LogicServer/script/interface/ItemExportFun.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

534 lines
18 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*装备强化,镶嵌等需要的导出接口
* 和玩家的接口比,这些接口只使用在一些特殊的场合
*/
#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:物品的静态属性idenum 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