hxp
2023-12-20 5268d9e89c9ebd10fa9d793186e91c4b55f53d8e
10054 【后端】任务系统
9个文件已修改
2个文件已添加
406 ■■■■■ 已修改文件
PySysDB/PySysDBPY.h 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Task.py 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -60,6 +60,17 @@
    list        LVAttrValueList;    //每级额外属性值(非累积)
};
//任务表
struct    tagTask
{
    WORD        _TaskID;    //任务ID
    BYTE        TaskType;    //任务类型
    list        TaskConds;    //任务条件[...]
    DWORD        NeedValue;    //所需任务值
    list        AwardItemList;    //奖励物品列表 [[物品ID,个数,是否拍品], ...]
};
//境界修仙之路
struct    tagRealmXXZL
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -43940,6 +43940,62 @@
#------------------------------------------------------
# B1 10 当前任务信息 #tagMCTaskInfo
class  tagMCTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TaskID", c_int),    # 任务ID
                  ("CurValue", c_int),    # 当前进度值
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB1
        self.SubCmd = 0x10
        self.TaskID = 0
        self.CurValue = 0
        return
    def GetLength(self):
        return sizeof(tagMCTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 10 当前任务信息 //tagMCTaskInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                TaskID:%d,
                                CurValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TaskID,
                                self.CurValue
                                )
        return DumpString
m_NAtagMCTaskInfo=tagMCTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Cmd,m_NAtagMCTaskInfo.SubCmd))] = m_NAtagMCTaskInfo
#------------------------------------------------------
# B1 21 仙树信息 #tagMCTreeInfo
class  tagMCTreeInfo(Structure):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4381,6 +4381,11 @@
Def_PDict_TreeLVUPState = "TreeLVUPState" # 仙树升级状态;0-未升级;1-升级中
Def_PDict_TreeLVUPRemainTime = "TreeLVUPRemainTime" # 仙树升级剩余时间,秒
Def_PDict_TreeLVUPRefreshTime = "TreeLVUPRefreshTime" # 仙树升级上次刷新时间戳
#任务-简化版任务,有且仅有一个进行中的任务
Def_PDict_TaskIDLast = "TaskIDLast" # 上一次完成的任务ID
Def_PDict_TaskID = "TaskID" # 当前进行中的任务ID
Def_PDict_TaskValue = "TaskValue" # 当前进行中的任务进度
#-------------------------------------------------------------------------------
#可以从07 41封包购买的背包类型,和对应字典{背包类型:[字典key, 默认格子数]}
@@ -5868,7 +5873,8 @@
Def_RewardType_FamilyBossHurt, #仙盟boss伤害奖励 63
Def_RewardType_DailyPackBuyGift, #打包直购礼包奖励 64
Def_RewardType_Zhanling, #战令奖励 65
)= range(66)
Def_RewardType_Task, #任务奖励 66
)= range(67)
#boss复活相关活动定义
@@ -6080,6 +6086,15 @@
TTLTaskType_CrossBoss, # 跨服boss击杀x次 18
) = range(1, 1 + 18)
# 任务类型定义
TaskTypeList = (
TaskType_LV, # 等级提升至x级 1
TaskType_CutTree, # 砍树x次 2
TaskType_EquipDecompose, # 分解装备x次 3
TaskType_FBPass, # 副本过关到xxx 4
TaskType_Arena, # 挑战竞技场x次 5
) = range(1, 1 + 5)
# 充值点券处理类型
(
CoinType_Gold, # 直接充仙玉 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -43940,6 +43940,62 @@
#------------------------------------------------------
# B1 10 当前任务信息 #tagMCTaskInfo
class  tagMCTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TaskID", c_int),    # 任务ID
                  ("CurValue", c_int),    # 当前进度值
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB1
        self.SubCmd = 0x10
        self.TaskID = 0
        self.CurValue = 0
        return
    def GetLength(self):
        return sizeof(tagMCTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 10 当前任务信息 //tagMCTaskInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                TaskID:%d,
                                CurValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TaskID,
                                self.CurValue
                                )
        return DumpString
m_NAtagMCTaskInfo=tagMCTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Cmd,m_NAtagMCTaskInfo.SubCmd))] = m_NAtagMCTaskInfo
#------------------------------------------------------
# B1 21 仙树信息 #tagMCTreeInfo
class  tagMCTreeInfo(Structure):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Task.py
New file
@@ -0,0 +1,48 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package GM.Commands.Task
#
# @todo:任务
# @author hxp
# @date 2023-12-20
# @version 1.0
#
# 详细描述: 任务
#
#-------------------------------------------------------------------------------
#"""Version = 2023-12-20 12:30"""
#-------------------------------------------------------------------------------
import GameWorld
import IpyGameDataPY
import PlayerControl
import PlayerTask
import ChConfig
## GM命令执行入口
#  @param curPlayer 当前玩家
#  @param playerList 参数列表 [ missionID]
#  @return None
#  @remarks 函数详细说明.
def OnExec(curPlayer, playerList):
    if len(playerList) == 0:
        GameWorld.DebugAnswer(curPlayer, "设置任务: Task 任务ID 进度")
        return
    taskID = playerList[0]
    taskValue = playerList[1] if len(playerList) > 1 else 0
    if taskID:
        ipyData = IpyGameDataPY.GetIpyGameData("Task", taskID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "该任务ID不存在:%s" % taskID)
            return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskID, taskID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskValue, taskValue)
    PlayerTask.SyncTaskInfo(curPlayer)
    GameWorld.DebugAnswer(curPlayer, "设置任务ID:%s  进度:%s" % (taskID, taskValue))
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -79,6 +79,14 @@
                        ("list", "LVAttrValueList", 0),
                        ),
                "Task":(
                        ("WORD", "TaskID", 1),
                        ("BYTE", "TaskType", 0),
                        ("list", "TaskConds", 0),
                        ("DWORD", "NeedValue", 0),
                        ("list", "AwardItemList", 0),
                        ),
                "RealmXXZL":(
                        ("WORD", "TaskID", 1),
                        ("BYTE", "TaskType", 0),
@@ -2343,6 +2351,23 @@
    def GetEatItemAttrValueList(self): return self.EatItemAttrValueList # 每X个培养丹增加属性值=EatCntEverytime
    def GetLVAttrTypeList(self): return self.LVAttrTypeList # 每级额外属性类(非累积)
    def GetLVAttrValueList(self): return self.LVAttrValueList # 每级额外属性值(非累积)
# 任务表
class IPY_Task():
    def __init__(self):
        self.TaskID = 0
        self.TaskType = 0
        self.TaskConds = []
        self.NeedValue = 0
        self.AwardItemList = []
        return
    def GetTaskID(self): return self.TaskID # 任务ID
    def GetTaskType(self): return self.TaskType # 任务类型
    def GetTaskConds(self): return self.TaskConds # 任务条件[...]
    def GetNeedValue(self): return self.NeedValue # 所需任务值
    def GetAwardItemList(self): return self.AwardItemList # 奖励物品列表 [[物品ID,个数,是否拍品], ...]
# 境界修仙之路
class IPY_RealmXXZL():
@@ -6927,6 +6952,8 @@
        self.ipyLingQiAttrLen = len(self.ipyLingQiAttrCache)
        self.ipyLingQiTrainCache = self.__LoadFileData("LingQiTrain", IPY_LingQiTrain)
        self.ipyLingQiTrainLen = len(self.ipyLingQiTrainCache)
        self.ipyTaskCache = self.__LoadFileData("Task", IPY_Task)
        self.ipyTaskLen = len(self.ipyTaskCache)
        self.ipyRealmXXZLCache = self.__LoadFileData("RealmXXZL", IPY_RealmXXZL)
        self.ipyRealmXXZLLen = len(self.ipyRealmXXZLCache)
        self.ipyRealmCache = self.__LoadFileData("Realm", IPY_Realm)
@@ -7545,6 +7572,8 @@
    def GetLingQiAttrByIndex(self, index): return self.ipyLingQiAttrCache[index]
    def GetLingQiTrainCount(self): return self.ipyLingQiTrainLen
    def GetLingQiTrainByIndex(self, index): return self.ipyLingQiTrainCache[index]
    def GetTaskCount(self): return self.ipyTaskLen
    def GetTaskByIndex(self, index): return self.ipyTaskCache[index]
    def GetRealmXXZLCount(self): return self.ipyRealmXXZLLen
    def GetRealmXXZLByIndex(self, index): return self.ipyRealmXXZLCache[index]
    def GetRealmCount(self): return self.ipyRealmLen
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -153,6 +153,7 @@
import PlayerZhanling
import PlayerCutTree
import PlayerLianTi
import PlayerTask
import PlayerYinji
import PlayerLove
import GameObj
@@ -961,6 +962,7 @@
    PlayerGubao.OnPlayerLogin(curPlayer)
    PlayerShentong.OnPlayerLogin(curPlayer)
    PlayerZhanling.OnPlayerLogin(curPlayer)
    PlayerTask.OnPlayerLogin(curPlayer)
    PlayerCutTree.OnPlayerLogin(curPlayer)
    # 上线查询一次充值订单
    curPlayer.SendDBQueryRecharge()
@@ -5707,6 +5709,9 @@
    #打包直购礼包奖励
    elif rewardType == ChConfig.Def_RewardType_DailyPackBuyGift:
        PlayerGoldGift.GetDailyPackBuyGift(curPlayer, dataEx)
    #任务奖励
    elif rewardType == ChConfig.Def_RewardType_Task:
        PlayerTask.GetTaskAward(curPlayer, dataEx)
    #战令奖励
    elif rewardType == ChConfig.Def_RewardType_Zhanling:
        PlayerZhanling.GetZhanlingReward(curPlayer, dataEx, dataExStr)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py
@@ -32,6 +32,7 @@
import PlayerActivity
import PlayerSuccess
import PlayerGubao
import PlayerTask
def DoArenaOpen(curPlayer):
    ## 竞技场功能开启
@@ -302,6 +303,7 @@
    # 触发任务
    EventShell.EventRespons_ArenaBattleOver(curPlayer)
    EventShell.EventRespons_ArenaHighestScore(curPlayer)
    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_Arena, 1)
    
    PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Arena, 1)
    PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Arena, 1)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -102,6 +102,7 @@
import PlayerGubao
import PlayerShentong
import PlayerCharm
import PlayerTask
import ChPlayer
import GMShell
import GameObj
@@ -4316,6 +4317,7 @@
            aftBaseCON = curPlayer.GetBaseCON()
            if aftLV > befLV:
                curPlayer.SetLV(aftLV, False) # 这里不再通知GameServer
                PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_LV, aftLV)
                PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_HeroLV, aftLV)
                PlayerActivity.DoAddActivityByLV(curPlayer, befLV, aftLV)
                
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCutTree.py
@@ -24,6 +24,7 @@
import PlayerControl
import IPY_GameWorld
import ItemControler
import PlayerTask
import NPCCommon
import ChConfig
import ChEquip
@@ -148,6 +149,8 @@
    
    GameWorld.DebugLog("    实际产出: giveEquipIDList=%s,giveItemListEx=%s,addExp=%s" % (giveEquipIDList, giveItemListEx, addExp), playerID)
    SyncCutTreeResult(curPlayer, giveEquipCount, giveItemListEx)
    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_CutTree, giveEquipCount)
    return
#// B2 22 砍树装备操作 #tagCMCutTreeEquipOP
@@ -208,6 +211,8 @@
    # 这边执行分解逻辑,待扩展...
    
    ItemCommon.DelItem(curPlayer, curEquip, curEquip.GetCount(), True, ChConfig.ItemDel_EquipDecompose)
    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_EquipDecompose, 1)
    return
#// B2 23 仙树升级 #tagCMTreeLVUP
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py
New file
@@ -0,0 +1,175 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Player.PlayerTask
#
# @todo:玩家任务
# @author hxp
# @date 2023-12-20
# @version 1.0
#
# 详细描述: 玩家任务,简化版任务,有且仅有一个进行中的任务
#
#-------------------------------------------------------------------------------
#"""Version = 2023-12-20 12:30"""
#-------------------------------------------------------------------------------
import GameWorld
import IpyGameDataPY
import PlayerControl
import NetPackCommon
import ChPyNetSendPack
import ItemControler
import IPY_GameWorld
import ShareDefine
import ChConfig
def OnPlayerLogin(curPlayer):
    __giveNewTask(curPlayer)
    SyncTaskInfo(curPlayer)
    return
def __giveNewTask(curPlayer):
    ## 给新任务
    taskIDList = GetTaskIDList()
    if not taskIDList:
        return
    playerID = curPlayer.GetPlayerID()
    taskID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskID)
    lastTaskID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskIDLast)
    newTaskID = 0
    if not taskID and not lastTaskID:
        newTaskID = taskIDList[0]
        GameWorld.DebugLog("给第一个任务: newTaskID=%s" % (newTaskID), playerID)
    elif not taskID and lastTaskID:
        # 没有当前任务,给下一个任务
        if lastTaskID not in taskIDList:
            GameWorld.ErrLog("找不到上一次完成的任务ID! lastTaskID=%s" % lastTaskID, playerID)
            return
        lastIndex = taskIDList.index(lastTaskID)
        if lastIndex >= len(taskIDList) - 1:
            GameWorld.DebugLog("已经完成了所有任务: lastTaskID=%s" % (lastTaskID), playerID)
            return
        newTaskID = taskIDList[lastIndex + 1]
        GameWorld.DebugLog("给下一个任务: newTaskID=%s,lastTaskID=%s" % (newTaskID, lastTaskID), playerID)
    if not newTaskID:
        return
    ipyData = IpyGameDataPY.GetIpyGameData("Task", newTaskID)
    if not ipyData:
        return
    taskType = ipyData.GetTaskType()
    conds = ipyData.GetTaskConds()
    needValue = ipyData.GetNeedValue()
    taskValue = 0
    if taskType == ChConfig.TaskType_LV:
        taskValue = curPlayer.GetLV()
    elif taskType == ChConfig.TaskType_FBPass:
        if len(conds) != 2:
            return
        mapID, lineID = conds
        grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID])
        taskValue = 1 if grade > 0 else 0
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskIDLast, taskID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskID, newTaskID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskValue, taskValue)
    GameWorld.DebugLog("接到新任务: newTaskID=%s,taskValue=%s/%s" % (newTaskID, taskValue, needValue), playerID)
    return
def GetTaskIDList():
    ## 获取所有的任务ID列表
    key = "TaskIDList"
    taskIDList = IpyGameDataPY.GetConfigEx(key)
    if not taskIDList:
        taskIDList = []
        ipyDataMgr = IpyGameDataPY.IPY_Data()
        for index in xrange(ipyDataMgr.GetTaskCount()):
            ipyData = ipyDataMgr.GetTaskByIndex(index)
            taskIDList.append(ipyData.GetTaskID())
        IpyGameDataPY.SetConfigEx(key, taskIDList)
        GameWorld.Log("任务ID列表: %s" % taskIDList)
    return taskIDList
def UpdTaskValue(curPlayer, taskType, setValue):
    ## 更新任务进度
    taskID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskID)
    if not taskID:
        return
    ipyData = IpyGameDataPY.GetIpyGameData("Task", taskID)
    if not ipyData:
        return
    if ipyData.GetTaskType() != taskType:
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskValue, setValue)
    SyncTaskInfo(curPlayer)
    GameWorld.DebugLog("更新任务进度: taskType=%s,taskID=%s,setValue=%s" % (taskType, taskID, setValue), curPlayer.GetPlayerID())
    return
def AddTaskValue(curPlayer, taskType, addValue=1, conds=[]):
    ## 增加任务进度
    taskID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskID)
    if not taskID:
        return
    ipyData = IpyGameDataPY.GetIpyGameData("Task", taskID)
    if not ipyData:
        return
    if ipyData.GetTaskType() != taskType:
        return
    if taskType == ChConfig.TaskType_FBPass:
        taskConds = ipyData.GetTaskConds()
        if len(conds) != 2 or len(taskConds) != 2:
            return
        if conds[0] != taskConds[0]:
            return
        if conds[1] < taskConds[1]:
            return
    finishNeedValue = ipyData.GetNeedValue()
    curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskValue)
    if curValue >= finishNeedValue:
        return
    updValue = min(curValue + addValue, ShareDefine.Def_UpperLimit_DWord)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskValue, updValue)
    SyncTaskInfo(curPlayer)
    GameWorld.DebugLog("增加任务进度: taskType=%s,taskID=%s,addValue=%s,updValue=%s" % (taskType, taskID, addValue, updValue), curPlayer.GetPlayerID())
    return
def GetTaskAward(curPlayer, taskID):
    ## 领取任务奖励
    playerID = curPlayer.GetPlayerID()
    curTaskID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskID)
    if taskID != curTaskID:
        GameWorld.DebugLog("非当前任务: curTaskID=%s" % curTaskID, playerID)
        return
    ipyData = IpyGameDataPY.GetIpyGameData("Task", taskID)
    if not ipyData:
        return
    needValue = ipyData.GetNeedValue()
    awardItemList = ipyData.GetAwardItemList()
    curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskValue)
    if curValue < needValue:
        GameWorld.DebugLog("任务进度不足无法领奖: taskID=%s,curValue=%s < %s" % (taskID, curValue, needValue), playerID)
        return
    if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskIDLast, taskID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskID, 0)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskValue, 0)
    for itemID, itemCount, isAuctionItem in awardItemList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem])
    __giveNewTask(curPlayer)
    SyncTaskInfo(curPlayer)
    return
def SyncTaskInfo(curPlayer):
    clientPack = ChPyNetSendPack.tagMCTaskInfo()
    clientPack.TaskID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskID)
    clientPack.CurValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TaskValue)
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return