From 2cf5365a5e409b38bba122f9bd1b0a6bd217c1c0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 03 七月 2025 17:57:30 +0800
Subject: [PATCH] 16 卡牌服务端(删除无用的GY_Query_Offline_xxx命令)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 96 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 90 insertions(+), 6 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index d75bf5e..2ea5c7d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -41,6 +41,7 @@
import PyGameData
import PlayerVip
import ChEquip
+import PlayerHero
import math
import time
@@ -1346,6 +1347,10 @@
if isNeedRecord:
itemNoteDict = ItemCommon.GetItemNoteDict(item, curItemCount, packItemCount, GetItemCount(item))
ItemCommon.DR_GetItem(curPlayer, packIndex, eventName, itemNoteDict, addDict)
+
+ if item.GetType() == ChConfig.Def_ItemType_Hero:
+ PlayerHero.OnGiveHeroItem(curPlayer, item)
+
break
#放入东西
@@ -1656,14 +1661,21 @@
if endIndex == 0:
endIndex = curPack.GetCount() - 1
#检查是否能整理
- for i in range(0, curPack.GetCount()):
- curItem = curPack.GetAt(i)
- if curItem.GetIsLocked():
- #GameWorld.Log("物品有锁, 不允许重整")
- return
+ #for i in range(0, curPack.GetCount()):
+ # curItem = curPack.GetAt(i)
+ # if curItem.GetIsLocked():
+ # #GameWorld.Log("物品有锁, 不允许重整")
+ # return
# 整理方式不同区分
- if packIndex == IPY_GameWorld.rptWarehouse:
+ if packIndex == ShareDefine.rptHero:
+ if tick - curPlayer.GetResetItemTick() <= ChConfig.Def_ItemPackResetInterval:
+ #GameWorld.DebugLog("重整背包时间间隔太短")
+ return
+ curPlayer.SetResetItemTick(tick)
+ ResetHeroPack(curPlayer, curPack, beingIndex, endIndex)
+
+ elif packIndex == IPY_GameWorld.rptWarehouse:
#验证间隔
if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_WareHouseSort) < \
ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_WareHouseSort]:
@@ -1968,7 +1980,75 @@
return
+def ResetHeroPack(curPlayer, curPack, beingIndex, endIndex):
+ itemList = []
+ for i in range(beingIndex, endIndex + 1):
+ curRoleItem = curPack.GetAt(i)
+ if curRoleItem.IsEmpty():
+ continue
+ curItem = curRoleItem.GetItem()
+ itemList.append(curItem)
+ itemList.sort(__CmpHeroPack)
+
+ curPack.WipePack(beingIndex, endIndex)
+ putPlace = beingIndex
+ for item in itemList:
+ curPack.GetAt(putPlace).AssignItem(item, False)
+ putPlace += 1
+
+ return
+def __CmpHeroPack(item1, item2):
+ '''排序规则:上阵武将排前,未上阵武将排后,再各自按照以下规则排序
+ 武将等级>突破等级>武将星级>武将品质>武将ID
+ '''
+
+ posNum1, posNum2 = 0, 0
+ for lpIndex in range(item1.GetUserAttrCount(ShareDefine.Def_IudetHeroLineup)):
+ lineupValue = item1.GetUserAttrByIndex(ShareDefine.Def_IudetHeroLineup, lpIndex)
+ lineupID = lineupValue / 10000
+ if lineupID != ShareDefine.Lineup_Main:
+ continue
+ posNum1 = lineupValue % 100
+ break
+
+ for lpIndex in range(item2.GetUserAttrCount(ShareDefine.Def_IudetHeroLineup)):
+ lineupValue = item2.GetUserAttrByIndex(ShareDefine.Def_IudetHeroLineup, lpIndex)
+ lineupID = lineupValue / 10000
+ if lineupID != ShareDefine.Lineup_Main:
+ continue
+ posNum2 = lineupValue % 100
+ break
+
+ if (posNum1 and posNum2) or (not posNum1 and not posNum2):
+ lv1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroLV)
+ lv2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroLV)
+ if lv1 == lv2:
+ bLV1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
+ bLV2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
+ if bLV1 == bLV2:
+ star1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroStar)
+ star2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroStar)
+ if star1 == star2:
+ heroID1 = item1.GetItemTypeID()
+ heroID2 = item2.GetItemTypeID()
+ ipyData1 = IpyGameDataPY.GetIpyGameData("Hero", heroID1)
+ ipyData2 = IpyGameDataPY.GetIpyGameData("Hero", heroID2)
+ quality1 = ipyData1.GetQuality() if ipyData1 else 0
+ quality2 = ipyData2.GetQuality() if ipyData2 else 0
+ if quality1 == quality2:
+ return cmp(heroID1, heroID2)
+ return -cmp(quality1, quality2)
+ return -cmp(star1, star2)
+ return -cmp(bLV1, bLV2)
+ return -cmp(lv1, lv2)
+ elif posNum1:
+ return -1
+ elif posNum2:
+ return 1
+ else:
+ return cmp(item1.GetItemTypeID(), item2.GetItemTypeID())
+
#===============================================================================
#Python 版重整物品
# def ResetItem(curPlayer, curPackIndex, tick):
@@ -2575,6 +2655,10 @@
GameWorld.ErrLog("产出物品异常,无法创建物品 = %s" % (itemID))
return
+ # 英雄
+ if curItem.GetType() == ChConfig.Def_ItemType_Hero:
+ return curItem
+
# 非装备,无需设置属性
if not ItemCommon.CheckItemIsEquip(curItem):
return curItem
--
Gitblit v1.8.0