501 【武将】武将时装-服务端(增加时装形象,与时装属性相互独立;每个武将物品独立,UserData原78-皮肤形象索引,增加82-皮肤属性索引;)
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("HeroID", c_int), #武将ID
|
| | | ("SkinID", c_int), #ʱװID
|
| | | ("OPType", c_ubyte), #操作 1-激活;2-佩戴;3-升星
|
| | | ("OPType", c_ubyte), #操作 1-激活;2-选择形象;3-升星;4-选择属性
|
| | | ("ItemIndex", c_ushort), #武将物品所在武将背包位置索引,仅佩戴时有效
|
| | | ]
|
| | |
|
| | |
| | | singleItem.SetUserAttr(ShareDefine.Def_IudetHeroAwakeLV, 0)
|
| | | if singleItem.GetUserAttr(ShareDefine.Def_IudetHeroSkin):
|
| | | singleItem.SetUserAttr(ShareDefine.Def_IudetHeroSkin, 0)
|
| | | if singleItem.GetUserAttr(ShareDefine.Def_IudetHeroSkinAttr):
|
| | | singleItem.SetUserAttr(ShareDefine.Def_IudetHeroSkinAttr, 0)
|
| | |
|
| | | if singleItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentID):
|
| | | singleItem.ClearUserAttr(ShareDefine.Def_IudetHeroTalentID)
|
| | |
| | | # tagHead Head;
|
| | | # DWORD HeroID; //武将ID
|
| | | # DWORD SkinID; //ʱװID
|
| | | # BYTE OPType; //操作 1-激活;2-佩戴;3-升星
|
| | | # BYTE OPType; //操作 1-激活;2-选择形象;3-升星;4-选择属性
|
| | | # WORD ItemIndex; //武将物品所在武将背包位置索引,仅佩戴时有效
|
| | | #};
|
| | | def OnHeroSkinOP(index, clientData, tick):
|
| | |
| | | if opType == 1:
|
| | | ActiveHeroSkin(curPlayer, heroID, skinID)
|
| | | elif opType == 2:
|
| | | DoHeroWearSkin(curPlayer, itemIndex, skinIndex)
|
| | | DoHeroWearSkin(curPlayer, itemIndex, skinIndex, False)
|
| | | elif opType == 3:
|
| | | DoHeroSkinStarUP(curPlayer, heroID, skinID)
|
| | | elif opType == 4:
|
| | | DoHeroWearSkin(curPlayer, itemIndex, skinIndex, True)
|
| | | return
|
| | |
|
| | | def DoHeroWearSkin(curPlayer, itemIndex, skinIndex):
|
| | | def DoHeroWearSkin(curPlayer, itemIndex, skinIndex, isSkinAttr):
|
| | | # @param isSkinAttr: 是否是选择属性的,反之则为选择皮肤形象
|
| | | heroItem = GetHeroItem(curPlayer, itemIndex)
|
| | | if not heroItem:
|
| | | return
|
| | |
| | | if not GetHeroSkinState(curPlayer, skinID):
|
| | | GameWorld.DebugLog("该武将皮肤未解锁! heroID=%s,skinIndex=%s" % (heroID, skinIndex))
|
| | | return
|
| | | heroItem.SetUserAttr(ShareDefine.Def_IudetHeroSkin, skinIndex)
|
| | |
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # 切换皮肤
|
| | | GameWorld.DebugLog("切换武将皮肤! heroID=%s,skinIndex=%s,isSkinAttr=%s" % (heroID, skinIndex, isSkinAttr))
|
| | | if not isSkinAttr:
|
| | | heroItem.SetUserAttr(ShareDefine.Def_IudetHeroSkin, skinIndex)
|
| | | else:
|
| | | heroItem.SetUserAttr(ShareDefine.Def_IudetHeroSkinAttr, skinIndex) |
| | | PlayerOnline.GetOnlinePlayer(curPlayer).OnHeroItemUpate(heroItem) # 切换皮肤属性
|
| | | return True
|
| | |
|
| | | def GMSetHeroSkin(curPlayer, heroID, skinIndex, isActive=1):
|
| | |
| | | heroSelfAttrInfo[heroID] = selfAttrDict
|
| | |
|
| | | # 时装属性
|
| | | attrSkinID = 0
|
| | | attrSkinIndex = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroSkinAttr)
|
| | | if attrSkinIndex < 0 or attrSkinIndex >= len(skinIDList):
|
| | | attrSkinID = skinIDList[0]
|
| | | elif skinIDList:
|
| | | attrSkinID = skinIDList[attrSkinIndex]
|
| | | heroSkinAttrDict = {}
|
| | | skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog("HeroSkinAttr", skinID)
|
| | | skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog("HeroSkinAttr", attrSkinID)
|
| | | if skinIpyData:
|
| | | skinStar = PlayerHero.GetHeroSkinStar(curPlayer, skinID)
|
| | | skinStar = PlayerHero.GetHeroSkinStar(curPlayer, attrSkinID)
|
| | | wearAttrIDList = skinIpyData.GetWearAttrIDList()
|
| | | wearAttrValueList = skinIpyData.GetWearAttrValueList()
|
| | | wearAttrPerStarAddList = skinIpyData.GetWearAttrPerStarAddList()
|
| | |
| | | Def_IudetHeroStar = 72 # 英雄星级
|
| | | Def_IudetHeroBreakLV = 74 # 英雄突破等级
|
| | | Def_IudetHeroAwakeLV = 76 # 英雄觉醒等级
|
| | | Def_IudetHeroSkin = 78 # 英雄使用的皮肤索引
|
| | | Def_IudetHeroSkin = 78 # 英雄使用的皮肤索引 - 形象
|
| | | Def_IudetHeroCardEffective = 80 # 卡牌在主线预设中生效标识,每个武将在某一阵容预设中仅有一张卡牌生效,废弃,使用 Def_IudetHeroEffPresetID 代替
|
| | | Def_IudetHeroSkinAttr = 82 # 英雄使用的皮肤索引 - 属性
|
| | |
|
| | | # 200~300 宠物数据用
|
| | | Def_IudetPet_NPCID = 200 # npcID
|