From 866ce280c4c931a34cedd06d86b81019018d4160 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 03 一月 2020 20:33:56 +0800
Subject: [PATCH] 8364 【恺英】【后端】缥缈随机任务(S副本未处理)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPiaomiaoTask.py  |  221 ++++++++++++++++++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                        |   19 +++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py |    6 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py            |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py           |   56 ++++++++-
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                     |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py        |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py       |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py  |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                   |    7 +
 11 files changed, 311 insertions(+), 10 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 2b7a31f..092bb98 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -960,6 +960,7 @@
 GameFuncID_TJG = 147            # 脱机挂
 GameFuncID_SuperGift = 150      # 超值礼包
 GameFuncID_ZhuXianBoss = 163    # 诛仙BOSS
+GameFuncID_PiaomiaoTask = 173   # 缥缈任务
 # 以下为暂时无用的
 GameFuncID_Truck = 33           # 运镖
 GameFuncID_RunDaily = 34        # 日常跑环
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 22d6543..eb6a611 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -242,7 +242,7 @@
 Writer = alee
 Releaser = alee
 RegType = 0
-RegisterPackCount = 10
+RegisterPackCount = 11
 
 PacketCMD_1=0xA2
 PacketSubCMD_1=0x03
@@ -284,6 +284,23 @@
 PacketSubCMD_10=0x06
 PacketCallFunc_10=OnCrossNPCTalk
 
+PacketCMD_11=0xA2
+PacketSubCMD_11=0x07
+PacketCallFunc_11=OnTakeTask
+
+
+;缥缈任务
+[PlayerPiaomiaoTask]
+ScriptName = Player\PlayerPiaomiaoTask.py
+Writer = hxp
+Releaser = hxp
+RegType = 0
+RegisterPackCount = 1
+
+PacketCMD_1=0xA2
+PacketSubCMD_1=0x08
+PacketCallFunc_1=OnRefreshPiaomiaoTask
+
 ;VIP功能
 [PlayerVip]
 ScriptName = Player\PlayerVip.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index bb70774..cb1f301 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3988,6 +3988,9 @@
 Def_PDict_TodayAssistMoney = "TodayAssistMoney" # 今日已获得协助货币奖励
 Def_PDict_TodayAssistMoneySocial = "TodayAssistMoneySocial" # 今日已获得协助货币 社交关系额外加成
 
+#缥缈任务
+Def_PDict_PiaomiaoTaskTakeCount = "PiaomiaoTaskTakeCount" # 今日已接任务次数
+Def_PDict_PiaomiaoTaskRefreshCount = "PiaomiaoTaskRefreshCount" # 今日已刷新次数
 #-------------------------------------------------------------------------------
 #可以从07 41封包购买的背包类型,和对应字典{背包类型:[字典key, 默认格子数]}
 
@@ -4678,6 +4681,7 @@
 Def_Cost_BuyKillBossCnt, #购买boss次数
 Def_Cost_EquipStar, #装备升星
 Def_Cost_ActivityPlace, #活跃放置 50
+Def_Cost_PiaomiaoTask, #缥缈任务
 #-----------以下为暂时没用的,先不删除,如有新增消费点则放在这些之前------------
 Def_Cost_RefreshArrestTask, # 刷新悬赏任务
 Def_Cost_OffLineExp, # 兑换离线经验
@@ -4690,7 +4694,7 @@
 Def_Cost_Trade, # 交易
 Def_Cost_Rename, # 改名
 Def_Cost_SkillLvUp, # 技能升级
-) = range(2000, 2000 + 62)
+) = range(2000, 2000 + 63)
 
 Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
 
@@ -4774,6 +4778,7 @@
 Def_Cost_BuyKillBossCnt:"BuyKillBossCnt",
 Def_Cost_EquipStar:"EquipStar",
 Def_Cost_ActivityPlace:"ActivityPlace",
+Def_Cost_PiaomiaoTask:"PiaomiaoTask",
 }
 ## -----------------------------------------------------
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index 335e550..102265c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -98,12 +98,13 @@
 import EventReport
 import PlayerCoat
 import PlayerGatherSoul
-import PlayerArrestTask
+#import PlayerArrestTask
 import PlayerRune
 import IpyGameDataPY
 import FormulaControl
 import GameFuncComm
 import ChPyNetSendPack
+import PlayerPiaomiaoTask
 import NetPackCommon
 import NPCCommon
 import PlayerVip
@@ -1573,9 +1574,13 @@
         GameWorld.DebugLog("任务状态(%s)不可提交,不能完成任务!taskID=%s" % (missionState, taskID))
         return
     
+    curQuestData = QuestManager.FindQuest(taskID)
+    if curQuestData.Type == QuestCommon.Def_Mission_Type_Piaomiao:
+        PlayerPiaomiaoTask.OnFinishPiaomiaoTask(curPlayer, curMission)
+        return
+    
     rewardPer = 100 if rewardPer <= 0 else rewardPer
     moneyType, moneyCnt = 0, 0
-    curQuestData = QuestManager.FindQuest(taskID)
     # 环任务支持多倍奖励领取
     if curQuestData != None and curQuestData.Type in QuestCommon.Def_RunTask_Type_List:
         if rewardPer != 100:
@@ -3960,15 +3965,22 @@
         PlayerControl.NotifyCode(curPlayer, "Task_cannot_Delete02")
         return
     
-    if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_hgg_880525")
+    #if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
+    #    PlayerControl.NotifyCode(curPlayer, "GeRen_hgg_880525")
+    #    return
+    
+    curQuestData = QuestManager.FindQuest(missionID)
+    if not curQuestData:
         return
     
     #放弃悬赏任务
-    if missionID == ChConfig.Def_ArrestMissionID:
-        PlayerArrestTask.OnDeleteArrestTask(curPlayer)
+    #if missionID == ChConfig.Def_ArrestMissionID:
+    #    PlayerArrestTask.OnDeleteArrestTask(curPlayer)
         
-        
+    if curQuestData.Type == QuestCommon.Def_Mission_Type_Piaomiao:
+        PlayerPiaomiaoTask.DoCancelPiaomiaoTask(curPlayer, curMission)
+        return
+    
     #先在任务表中找数据, 如果找到了, 就不遍历XML了
     if __DoLogic_DeleteMission(curPlayer, curMission):
         GameWorld.Log("在任务表中找数据, 删除任务 = %s, 状态 = %s"%(missionID, missionState), curPlayer.GetID())
@@ -4877,6 +4889,36 @@
     RunQuestEvent(curPlayer, "on_revlogintype_event", "on_revlogintype_event", Def_RunQuestType_Normal)
     return
 
+#// A2 07 接受任务 #tagCMTakeTask
+#
+#struct    tagCMTakeTask
+#{
+#    tagHead        Head;
+#    DWORD        TaskID;
+#};
+def OnTakeTask(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    
+    missionID = clientData.TaskID
+    curMission = curPlayer.FindMission(missionID)
+    if not curMission:
+        return
+    
+    missionState = curMission.GetState()
+    if missionState != ChConfig.Def_Mission_State_NoAccept:
+        return
+    
+    curQuestData = QuestManager.FindQuest(missionID)
+    if not curQuestData:
+        return
+    
+    if curQuestData.Type == QuestCommon.Def_Mission_Type_Piaomiao:
+        PlayerPiaomiaoTask.OnTakePiaomiaoTask(curPlayer, curMission)
+        return
+    
+    QuestCommon.SetPlayerMissionState(curPlayer, curMission, 1)
+    return
+
 #// A2 18 完成任务 #tagCMFinishTask
 #
 #struct tagCMFinishTask
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
index 3d611e9..184b183 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
@@ -34,6 +34,7 @@
 import GameFuncComm
 import ChPyNetSendPack
 import NetPackCommon
+import EventShell
 #---------------------------------------------------------------------
 #所有任务的索引
 FindQuestFunc = None
@@ -74,6 +75,8 @@
 
 Def_NewGuyNoSight = "xinshou"   # 新手期隐身无视野
 
+Def_Mission_Grade = "grade"   # 任务评级
+
 #------------原DayEventData去除,替换枚举管理-----------------
 (
 Day_KillNPC_By_ID_List,    #Type = Day_KillNPC_By_ID
@@ -103,6 +106,7 @@
 Def_GM_Active_Mission_Type = 999 #暂时不用,配大点
 Def_Mission_Type_RunDaily = 7
 Def_Mission_Type_RunFamily = 12
+Def_Mission_Type_Piaomiao = 25 # 缥缈任务
 
 Def_MainTask_Type_List = [Def_Mission_Type_Main, Def_Mission_Type_MainHid]
 Def_RunTask_Type_List = [Def_Mission_Type_RunDaily, Def_Mission_Type_RunFamily]
@@ -338,6 +342,8 @@
     curQuestData = QuestManager.FindQuest(curMissionID)
     if curQuestData != None:
         EventReport.WriteEvent_mission_log(curPlayer, curQuestData, 0)
+        
+    EventShell.RunQuestEvent(curPlayer, "on_create", curMissionID, EventShell.Def_RunQuestType_Normal)
     return curMission
 
 #---------------------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 3801198..2d25300 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -117,6 +117,7 @@
 import PlayerDogz
 import PlayerCoat
 import PlayerQuDaoDoubleBill
+import PlayerPiaomiaoTask
 import PlayerFB
 import SkillShell
 import PlayerYinji
@@ -643,6 +644,8 @@
     ChItem.Sync_ItemDayUseCnt(curPlayer)
     # 悬赏登录通知
     #PlayerArrestTask.OnLogin(curPlayer)
+    # 缥缈任务
+    PlayerPiaomiaoTask.OnPlayerLogin(curPlayer)
     # 符印登录通知
     PlayerRune.PlayerRuneLogin(curPlayer)
     # 仙盟红包登录通知
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
index 2900423..d0f7704 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -38,6 +38,7 @@
 import PlayerSignDay
 import PlayerGoldGift
 import PlayerEquipDecompose
+import PlayerPiaomiaoTask
 import PlayerFreeGoods
 import FunctionNPCCommon
 import PlayerGreatMaster
@@ -65,6 +66,7 @@
                      ShareDefine.GameFuncID_AddPoint:lambda curObj:PlayerControl.DoAddPointOpen(curObj),
                      ShareDefine.GameFuncID_Talent:lambda curObj:PlayerGreatMaster.DoTalentOpen(curObj),
                      ShareDefine.GameFuncID_TJG:lambda curObj:PlayerTJG.DoTJGOpen(curObj),
+                     ShareDefine.GameFuncID_PiaomiaoTask:lambda curObj:PlayerPiaomiaoTask.DoPiaomiaoTaskOpen(curObj),
                      #ShareDefine.GameFuncID_RunDaily:lambda curObj:FBCommon.DoFuncOpen_RunDaily(curObj),
                      #ShareDefine.GameFuncID_RunFamily:lambda curObj:FBCommon.DoFuncOpen_RunFamily(curObj),
                      #ShareDefine.GameFuncID_RefineExp:lambda curObj:Operate_PlayerBuyZhenQi.DoFuncOpen_RefineExp(curObj),
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 22f698e..c627167 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -5524,7 +5524,7 @@
         return False
     openMapStep = mapData.GetTreasureID() #需要完成的主线任务ID
     if openMapStep and not IsMapOpen(curPlayer, openMapStep):
-        GameWorld.DebugLog('对不起,该场景destMapID=%s需要完成主线任务%s才能进入!' % (destMapID, openMapStep))
+        #GameWorld.DebugLog('对不起,该场景destMapID=%s需要完成主线任务%s才能进入!' % (destMapID, openMapStep))
         return False
     return True
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 230dd3c..952ce96 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -90,6 +90,7 @@
 import PlayerFlashSale
 import PlayerWishingWell
 import PlayerFairyDomain
+import PlayerPiaomiaoTask
 import PlayerVip
 import PlayerDiceEx
 import IpyGameDataPY
@@ -547,6 +548,8 @@
         PlayerCrossRealmPK.DoPlayerOnDay(curPlayer)
         #缥缈仙域
         PlayerFairyDomain.OnDay(curPlayer)
+        #缥缈任务
+        PlayerPiaomiaoTask.OnDay(curPlayer)
         #仙盟宴会
         GameLogic_FamilyParty.OnDayFamilyPartyPlayer(curPlayer)
         #协助
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPiaomiaoTask.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPiaomiaoTask.py
new file mode 100644
index 0000000..1bf7862
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPiaomiaoTask.py
@@ -0,0 +1,221 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerPiaomiaoTask
+#
+# @todo:缥缈任务
+# @author hxp
+# @date 2020-01-03
+# @version 1.0
+#
+# 详细描述: 缥缈任务
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2020-01-03 20:30"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import EventShell
+import QuestCommon
+import QuestRunner
+import QuestManager
+import NetPackCommon
+import IpyGameDataPY
+import FormulaControl
+import ChPyNetSendPack
+import PlayerControl
+import IPY_GameWorld
+import ItemControler
+import ItemCommon
+import ChConfig
+
+
+def DoPiaomiaoTaskOpen(curPlayer):
+    ## 缥缈任务开启
+    __DoRefreshPiaomiaoTask(curPlayer)
+    return
+
+def OnDay(curPlayer):
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PiaomiaoTaskTakeCount, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PiaomiaoTaskRefreshCount, 0)
+    SyncPiaomiaoTaskInfo(curPlayer)
+    return
+
+def OnPlayerLogin(curPlayer):
+    SyncPiaomiaoTaskInfo(curPlayer)
+    return
+
+#// A2 08 刷新缥缈任务 #tagCMRefreshPiaomiaoTask
+#
+#struct    tagCMRefreshPiaomiaoTask
+#{
+#    tagHead        Head;
+#};
+def OnRefreshPiaomiaoTask(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    
+    freeRefreshCount = IpyGameDataPY.GetFuncCfg("PiaomiaoTask", 2)
+    todayRefreshCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PiaomiaoTaskRefreshCount)
+    if todayRefreshCount >= freeRefreshCount:
+        costGold = IpyGameDataPY.GetFuncCfg("PiaomiaoTask", 3)
+        if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costGold, ChConfig.Def_Cost_PiaomiaoTask):
+            return
+    else:
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PiaomiaoTaskRefreshCount, todayRefreshCount + 1)
+    __DoRefreshPiaomiaoTask(curPlayer)
+    return
+
+def __DoRefreshPiaomiaoTask(curPlayer):
+    ## 刷新缥缈任务
+    
+    randMissionCount = IpyGameDataPY.GetFuncCfg("PiaomiaoTaskRand", 1)
+    randMissionWeightList = IpyGameDataPY.GetFuncEvalCfg("PiaomiaoTaskRand", 2)
+    missionGradeRewardDict = IpyGameDataPY.GetFuncEvalCfg("PiaomiaoTaskRand", 3)
+    piaomiaoMissionIDList = []
+    
+    GameWorld.DebugLog("刷新缥缈任务! randMissionCount=%s" % randMissionCount)
+    
+    delMissionIDList = []
+    for i in range(curPlayer.GetMissionCount()):
+        curMission = curPlayer.GetMissionByIndex(i)
+        missionID = curMission.GetMissionID()
+        missionState = curMission.GetState()
+        questData = QuestManager.FindQuest(missionID)
+        if not questData:
+            continue
+        
+        if questData.Type != QuestCommon.Def_Mission_Type_Piaomiao:
+            continue
+        
+        curGrade = curMission.GetProperty(QuestCommon.Def_Mission_Grade)
+        # 评级5 S不重置
+        if missionState != ChConfig.Def_Mission_State_NoAccept or curGrade == 5:
+            piaomiaoMissionIDList.append(missionID)
+            GameWorld.DebugLog("    缥缈任务非未接,保留! missionID=%s,missionState=%s" % (missionID, missionState))
+            continue
+        GameWorld.DebugLog("    缥缈任务未接,删除! missionID=%s,missionState=%s" % (missionID, missionState))
+        delMissionIDList.append(missionID)
+    for delMissionID in delMissionIDList:
+        QuestCommon.DeleteMission(curPlayer, delMissionID)
+        
+    reExp = PlayerControl.GetPlayerReExp(curPlayer)
+    doCount = 100
+    while len(piaomiaoMissionIDList) < randMissionCount and doCount > 0:
+        doCount -= 1
+        randMissionInfo = GameWorld.GetResultByWeightList(randMissionWeightList)
+        if not randMissionInfo:
+            continue
+        randMissionID, grade = randMissionInfo
+        if randMissionID in piaomiaoMissionIDList:
+            continue
+        if grade not in missionGradeRewardDict:
+            continue
+        expFormat, goldPaper, itemID = missionGradeRewardDict[grade]
+        curExp = int(eval(FormulaControl.GetCompileFormula("PiaomiaoReward_%s" % grade, expFormat)))
+        
+        piaomiaoMissionIDList.append(randMissionID)
+        curMission = QuestCommon.AddNewMission(curPlayer, randMissionID)
+        curMission.SetProperty(QuestCommon.Def_Mission_Grade, grade)
+        QuestCommon.SetPlayerMissionState(curPlayer, curMission, ChConfig.Def_Mission_State_NoAccept)
+        
+        curMission.SetProperty(QuestRunner.Def_Run_Around_Reward_Exp, curExp % ChConfig.Def_PerPointValue)
+        curMission.SetProperty(QuestRunner.Def_Run_Around_Reward_ExpPoint, curExp / ChConfig.Def_PerPointValue)
+        curMission.SetProperty(QuestRunner.Def_Run_Around_Reward_GoldPaper, goldPaper)
+        
+        itemCount = 1 # 物品暂默认1个
+        curMission.SetProperty(QuestRunner.Def_Day_Event_Reward_Item_Id, itemID)
+        curMission.SetProperty(QuestRunner.Def_Day_Event_Reward_Item_Count, itemCount)
+        
+        GameWorld.DebugLog("    新增随机缥缈任务: randMissionID=%s,grade=%s,curExp=%s,goldPaper=%s,itemID=%s" 
+                           % (randMissionID, grade, curExp, goldPaper, itemID))
+        #通知客户端
+        EventShell.NotifyOneMission(curPlayer, curMission)
+        
+    SyncPiaomiaoTaskInfo(curPlayer)
+    return
+
+def OnTakePiaomiaoTask(curPlayer, curMission):
+    ## 接缥缈任务
+    
+    todayTakeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PiaomiaoTaskTakeCount)
+    maxTakeCount = IpyGameDataPY.GetFuncCfg("PiaomiaoTask", 1)
+    if todayTakeCount >= maxTakeCount:
+        GameWorld.DebugLog("已达今日接任务上限!todayTakeCount=%s" % todayTakeCount)
+        return
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_PiaomiaoTaskTakeCount, todayTakeCount + 1)
+    
+    QuestCommon.SetPlayerMissionState(curPlayer, curMission, 1)
+    
+    EventShell.NotifyOneMission(curPlayer, curMission, isNotifyAll=False)
+    SyncPiaomiaoTaskInfo(curPlayer)
+    return
+
+def OnFinishPiaomiaoTask(curPlayer, curMission):
+    ## 完成缥缈任务
+    
+    missionID = curMission.GetMissionID()
+    # 给奖励
+    exp = curMission.GetProperty(QuestRunner.Def_Run_Around_Reward_Exp)
+    expPoint = curMission.GetProperty(QuestRunner.Def_Run_Around_Reward_ExpPoint)
+    exp = expPoint * ChConfig.Def_PerPointValue + exp
+    playerControl = PlayerControl.PlayerControl(curPlayer)
+    playerControl.AddExp(exp)
+    
+    goldPaper = curMission.GetProperty(QuestRunner.Def_Run_Around_Reward_GoldPaper)
+    addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Piaomiao"}
+    PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, goldPaper, ChConfig.Def_GiveMoney_Mission, addDataDict)
+    
+    itemID = curMission.GetProperty(QuestRunner.Def_Day_Event_Reward_Item_Id)
+    itemCount = curMission.GetProperty(QuestRunner.Def_Day_Event_Reward_Item_Count)
+    if itemID and itemCount:
+        isAuctionItem = 0
+        itemList = [[itemID, itemCount, isAuctionItem]]
+        ItemControler.GivePlayerItemOrMail(curPlayer, itemList)
+        
+    delItemID = curMission.GetProperty(QuestCommon.Def_Item_ID)
+    if delItemID:
+        ItemCommon.DelMissionItem(curPlayer, IPY_GameWorld.rptItem, delItemID, 0, missionID)
+        
+    GameWorld.DebugLog("完成缥缈任务: missionID=%s,exp=%s,goldPaper=%s,itemID=%s,delItemID=%s" 
+                       % (missionID, exp, goldPaper, itemID, delItemID))
+    
+    # 删任务
+    QuestCommon.DeleteMission(curPlayer, missionID)
+    # 重新刷新
+    __DoRefreshPiaomiaoTask(curPlayer)
+    return
+
+def DoCancelPiaomiaoTask(curPlayer, curMission):
+    ## 放弃任务
+    missionID = curMission.GetMissionID()
+    GameWorld.DebugLog("放弃缥缈任务! missionID=%s" % missionID)
+    QuestCommon.DeleteMission(curPlayer, missionID)
+    __DoRefreshPiaomiaoTask(curPlayer)
+    return
+
+def SyncPiaomiaoTaskInfo(curPlayer):
+    taskIDList = []
+    for i in xrange(curPlayer.GetMissionCount()):
+        curMission = curPlayer.GetMissionByIndex(i)
+        missionID = curMission.GetMissionID()
+        questData = QuestManager.FindQuest(missionID)
+        if not questData:
+            continue
+        if questData.Type != QuestCommon.Def_Mission_Type_Piaomiao:
+            continue
+        taskIDList.append(missionID)
+    if not taskIDList:
+        return
+    
+    taskInfo = ChPyNetSendPack.tagMCPiaomiaoTaskInfo()
+    taskInfo.TakeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PiaomiaoTaskTakeCount)
+    taskInfo.RefreshCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_PiaomiaoTaskRefreshCount)
+    taskInfo.TaskIDList = taskIDList
+    taskInfo.TaskCount = len(taskIDList)
+    NetPackCommon.SendFakePack(curPlayer, taskInfo)
+    return
+
+
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 2b7a31f..092bb98 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -960,6 +960,7 @@
 GameFuncID_TJG = 147            # 脱机挂
 GameFuncID_SuperGift = 150      # 超值礼包
 GameFuncID_ZhuXianBoss = 163    # 诛仙BOSS
+GameFuncID_PiaomiaoTask = 173   # 缥缈任务
 # 以下为暂时无用的
 GameFuncID_Truck = 33           # 运镖
 GameFuncID_RunDaily = 34        # 日常跑环

--
Gitblit v1.8.0