From a388abb4b97782c1c694a8d28d8a1e73e03a35c0 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 10 六月 2019 16:33:25 +0800
Subject: [PATCH] 7155 【后端】【2.0】新增仙盟创建规则(通知修改)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py | 117 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 71 insertions(+), 46 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
index 302ea95..a0c2c21 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -33,7 +33,7 @@
import PassiveBuffEffMng
import ItemControler
import PlayerActivity
-import ChEquip
+import FBCommon
import PlayerVip
import random
@@ -89,10 +89,11 @@
ipyData = IpyGameDataPY.GetIpyGameDataByCondition('Treasure', {'FBMapID':mapID, 'FBLineID':lineID})
if not ipyData:
return
+ mwID = ipyData.GetID()
if curPlayer.GetLV() < ipyData.GetNeedLV():
GameWorld.Log('通关副本激活法宝 ,等级不足!!!mwID=%s, needLV=%s' % (mwID, ipyData.GetNeedLV()))
return
- mwID = ipyData.GetID()
+
DoActiveMW(curPlayer, mwID)
return
@@ -108,7 +109,20 @@
else:
sysMark = IpyGameDataPY.GetFuncEvalCfg('UnblockTreasure', 2, {}).get(mwID, 'UnblockTreasure')
PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), mwID])
-
+ if mwID == IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 1):
+ addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
+ fabaoAddPoint = IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 2)
+ curLV = curPlayer.GetLV()
+ addFreePoint = 0
+ for rangLVs, point in addPointDict.items():
+ if curLV < rangLVs[0]:
+ continue
+ addFreePoint += fabaoAddPoint * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
+ freePoint = curPlayer.GetFreePoint()
+ updFreePoint = freePoint + addFreePoint
+ curPlayer.SetFreePoint(updFreePoint)
+ GameWorld.DebugLog("激活法宝增加自由属性点: freePoint=%s,addFreePoint=%s,curLV=%s,updFreePoint=%s"
+ % (freePoint, addFreePoint, curLV, updFreePoint))
EventShell.EventRespons_MagicWeaponLV(curPlayer, mwID, mwLV)
#通知客户端等级
@@ -318,18 +332,54 @@
#扣消耗
ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, ChConfig.ItemDel_MagicWeapon)
elif ipyDataList:
- ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('XBXZ', {'MWID':mwID}, True, False)
- if not ipyDataList:
- return
for ipyData in ipyDataList:
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
return
- elif mwID != 101: #定海神针特殊 可直接获得
+ elif mwID == 101: #定海神针特殊 可直接获得
+ FBCommon.Notify_FB_Over(curPlayer, {FBCommon.Over_dataMapID:ChConfig.Def_FBMapID_MagicWeapon,FBCommon.Over_isPass:1})
+ PlayerControl.SetCustomMap(curPlayer, 0, 0)
+ else:
return
-
DoActiveMW(curPlayer, mwID)
return
+def GetXBXZAwardProgress(curPlayer, mwID):
+ ##获取仙宝寻主当前达到条件的个数
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('XBXZ', {'MWID': mwID}, True, False)
+ if not ipyDataList:
+ return 0
+ cnt = 0
+ playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+ for ipyData in ipyDataList:
+ curType = ipyData.GetType()
+ conditionList = ipyData.GetCondition()
+
+ if curType == 1:
+ #穿戴X阶X颜色是否套装X部位装备
+ for classlv, color, suite, place in conditionList:
+ equipIpyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap',classlv,place)
+ if not equipIpyData:
+ continue
+ gridIndex = equipIpyData.GetGridIndex()
+ curEquip = playerEquip.GetAt(gridIndex)
+ if curEquip.IsEmpty():
+ continue
+ curItemColor = curEquip.GetItemColor()
+ curIsSuite = curEquip.GetSuiteID()
+ if curItemColor >= color and curIsSuite >= suite:
+ cnt += 1
+ break
+ else:
+ continue
+ return cnt
+
+# ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('XBXZ', {'MWID': mwID}, True, False)
+# cnt = 0
+# if ipyDataList:
+# for ipyData in ipyDataList:
+# if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
+# cnt += 1
+# return cnt
#-------------------------------------------------------------------------------
@@ -346,47 +396,22 @@
conditionList = ipyData.GetCondition()
cnt = 0
if curType == 1:
- #角色防御到XX
- cnt = PlayerControl.GetFuncDef(curPlayer)
-
- elif curType == 2:
- #穿戴三阶橙色1星或四阶紫色1星以上头盔
+ #穿戴X阶X颜色是否套装X部位装备
+ cnt = 0
playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- SamboSpecialUnlock = IpyGameDataPY.GetFuncEvalCfg('SamboSpecialUnlock')
- for equipIndex in xrange(playerEquip.GetCount()):
- curEquip = playerEquip.GetAt(equipIndex)
+ for classlv, color, suite, place in conditionList:
+ equipIpyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap',classlv,place)
+ if not equipIpyData:
+ continue
+ gridIndex = equipIpyData.GetGridIndex()
+ curEquip = playerEquip.GetAt(gridIndex)
if curEquip.IsEmpty():
continue
- curClassLV = ItemCommon.GetItemClassLV(curEquip)
- itemColor = curEquip.GetItemColor()
- itemQuality = curEquip.GetItemQuality()
- itemID = curEquip.GetItemTypeID()
- for classlv, color, star, place in conditionList:
- if equipIndex is place and itemID in SamboSpecialUnlock:
- cnt = 1
- break
- if equipIndex is place and curClassLV >= classlv and itemColor >= color and itemQuality >= star:
- cnt = 1
- break
- if cnt:
+ curItemColor = curEquip.GetItemColor()
+ curIsSuite = curEquip.GetSuiteID()
+ if curItemColor >= color and curIsSuite >= suite:
+ cnt = 1
break
-# elif curType == 3:
-# #全身装备X星
-# cnt = ChEquip.GetTotalEquipStars(curPlayer)
-
-# elif curType == 4:
-# #X阶普通、强化套装
-# suiteCntDict = {}
-# playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-# for equipIndex in xrange(playerEquip.GetCount()):
-# curEquip = playerEquip.GetAt(equipIndex)
-# if curEquip.IsEmpty():
-# continue
-# suiteInfo = ChEquip.GetSuiteInfoByPlace(curPlayer, equipIndex, curEquip)
-# for suitelv, suiteType in conditionList:
-# if suiteInfo.get(suiteType, 0) >= suitelv:
-# suiteCntDict[suiteType] = suiteCntDict.get(suiteType, 0)+1
-# cnt = max(suiteCntDict.values()) if suiteCntDict else 0
else:
return
@@ -417,9 +442,9 @@
SyncXBXZAwardRecord(curPlayer, [index])
#成就
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_XBXZ, 1, [ipyData.GetMWID()])
+ EventShell.EventRespons_XBXZ(curPlayer, ipyData.GetMWID())
GameWorld.DebugLog(' 仙宝寻主领奖OK, ID=%s, cnt=%s' % (index, cnt))
return
-
## 通知仙宝寻主对应奖励领奖记录
# @param None
--
Gitblit v1.8.0