From f78b5c4fb02a016c43398f512a302b8c24d62698 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 26 十二月 2018 18:16:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 60 ++++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 38 insertions(+), 22 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 05b8c0c..2818ce6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -29,7 +29,6 @@
import DataRecordPack
import EventReport
import ChItem
-import PlayerMergeEvent
import IpyGameDataPY
import Operate_EquipStone
import PlayerViewCacheTube
@@ -392,7 +391,9 @@
return
def CalcEquipGS(curItem):
- ##计算装备评分
+ '''计算装备评分
+ 评分组成:装备基础 + 传奇属性 + 绝版属性
+ '''
if not CheckNoteEquipGS(curItem):
#GameWorld.DebugLog("不设置装备评分")
return 0
@@ -408,25 +409,27 @@
break
attrDict[effectID] = attrDict.get(effectID, 0) + curEffect.GetEffectValue(0)
- gsParamIpyData = None
+ classLV = GetItemClassLV(curItem)
+ color = curItem.GetItemColor()
+ itemQuality = curItem.GetItemQuality()
+ gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
# 传奇属性
legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
if legendAttrIDCnt and legendAttrIDCnt == legendAttrValueCnt:
- classLV = GetItemClassLV(curItem)
- color = curItem.GetItemColor()
- itemQuality = curItem.GetItemQuality()
- gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, itemQuality)
for i in xrange(legendAttrIDCnt):
attrID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
attrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
- MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0)
- MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0)
+ Atk = attrDict.get(ShareDefine.Def_Effect_Atk, 0)
+ MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
+ MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
MaxHP = attrDict.get(ShareDefine.Def_Effect_MaxHP, 0)
Def = attrDict.get(ShareDefine.Def_Effect_Def, 0)
ArmorDefPer = attrDict.get(ShareDefine.Def_Effect_ArmorDefAddPer, 0)
+ IceAtk = attrDict.get(ShareDefine.Def_Effect_IceAtk, 0)
+ IceDef = attrDict.get(ShareDefine.Def_Effect_IceDef, 0)
AtkPer = attrDict.get(ShareDefine.Def_Effect_AddAtkByPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetAtkPerC())
DamagePer = attrDict.get(ShareDefine.Def_Effect_DamagePer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetDamagePerC())
@@ -449,7 +452,9 @@
SuperHitReduce = attrDict.get(ShareDefine.Def_Effect_SuperHitReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSuperHitReduceC())
SkillAtkRate = attrDict.get(ShareDefine.Def_Effect_SkillAtkRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateC())
SpeedPer = attrDict.get(ShareDefine.Def_Effect_SpeedPer, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSpeedPerC())
- SkillAtkRateReduce = attrDict.get(ShareDefine.Def_Effect_SkillAtkRate, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateReduceC())
+ SkillAtkRateReduce = attrDict.get(ShareDefine.Def_Effect_SkillAtkRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateReduceC())
+ Hit = attrDict.get(ShareDefine.Def_Effect_Hit, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitC())
+ Miss = attrDict.get(ShareDefine.Def_Effect_Miss, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissC())
# 攻速不默认乘,仅作为参数提供策划使用
AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
@@ -1331,8 +1336,9 @@
return hasEnough, itemIndexList, findItemIsBind, needCnt
-def GetPackItemBindStateIndexInfo(curPlayer, itemID):
+def GetPackItemBindStateIndexInfo(curPlayer, itemID, needCount=0):
''' 获取背包消耗道具绑定及未绑定索引情况
+ @param needCount: 所需个数, 默认绑定优先,当找到已经足够的个数后不再遍历,减少无用遍历
@return: 可消耗物品列表[[绑定物品索引], [不绑定物品索引]], 绑定个数, 未绑定个数
'''
consumeItemIndexList = [[], []] # 可消耗物品列表[[绑定物品索引], [不绑定物品索引]]
@@ -1353,6 +1359,8 @@
if curItem.GetIsBind():
consumeItemIndexList[0].append(i)
bindCnt += itemCount
+ if needCount > 0 and bindCnt >= needCount:
+ break
else:
consumeItemIndexList[1].append(i)
unBindCnt += itemCount
@@ -1414,11 +1422,6 @@
#系统提示 LostRes 失去物品
#if needSysmsg:
# PlayerControl.NotifyCode(curPlayer, 'LostRes', [itemTypeID, totalUseCnt])
-
- #添加跨服服务器中使用物品事件
- if itemTypeID in ReadChConfig.GetEvalChConfig("MergeServerCanUseItemID"):
- eventInfo = [itemTypeID, totalUseCnt, makeItemBind, eventName, saveDataDict]
- PlayerMergeEvent.AddMSPlayerEvent(curPlayer.GetPlayerID(), PlayerMergeEvent.Def_MSPEvent_DelItem, eventInfo)
return makeItemBind
def GetCostItemIndexList(costItemInfo, itemPack, bindFirst=True):
@@ -1507,7 +1510,18 @@
def GetShopItemPrice(itemID, priceType):
''' 获取商城物品对应价格 '''
- ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
+ # 系统固定商店类型: 仙玉(2-常用道具,3-成长变强),绑玉(4-绑玉商城)
+ priceTypeShopTypeDict = {IPY_GameWorld.TYPE_Price_Gold_Money:[2, 3],
+ IPY_GameWorld.TYPE_Price_Gold_Paper:[4],
+ }
+ ipyData = None
+ if priceType in priceTypeShopTypeDict:
+ for shopType in priceTypeShopTypeDict[priceType]:
+ ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType, "ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
+ if ipyData:
+ break
+ else:
+ ipyData = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ItemID":itemID, "MoneyType":priceType}, isLogNone=False)
if not ipyData:
return 0
return ipyData.GetMoneyNum()
@@ -1803,11 +1817,6 @@
ItemControler.SetItemCount(curItem, curItemCnt - delCnt,
curPlayer.GetPlayerID(), curPlayer.GetAccID(),
curPlayer.GetPlayerName())
-
- #添加跨服服务器中使用物品事件
- if curItemTypeID in ReadChConfig.GetEvalChConfig("MergeServerCanUseItemID"):
- eventInfo = [curItemTypeID, delCnt, curItemBind, recordName, saveDataDict]
- PlayerMergeEvent.AddMSPlayerEvent(curPlayer.GetPlayerID(), PlayerMergeEvent.Def_MSPEvent_DelItem, eventInfo)
return
def DelVPackItem(curPlayer, packIndex, placeList, eventName=""):
@@ -1829,6 +1838,13 @@
itemName = str(itemID) if not curItemData else curItemData.GetName()
itemName = "%s LV%s" % (itemName, plusLV + 1)
isNeedRecord = curItemData and ItemControler.IsRuneItemNeedRecord(curItemData, plusLV)
+ if packIndex == ShareDefine.rptGatherSoul:
+ itemID = ItemControler.GetGatherSoulItemID(itemKeyData)
+ plusLV = ItemControler.GetGatherSoulItemPlusLV(itemKeyData)
+ curItemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
+ itemName = str(itemID) if not curItemData else curItemData.GetName()
+ itemName = "%s LV%s" % (itemName, plusLV + 1)
+ isNeedRecord = curItemData and ItemControler.IsGatherSoulItemNeedRecord(curItemData, plusLV)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_VPackItem % (packIndex, place), 0)
if isNeedRecord:
--
Gitblit v1.8.0