From 167357e8425d0dc12f41ed5fdfd4d95f2c2a5aaf Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 29 五月 2025 19:19:20 +0800
Subject: [PATCH] 16 卡牌服务端(删除旧版xml任务、镖车等不需要内容)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py                                  |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py                  |   18 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py                            |   52 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py                               |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py                             |   13 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                                       |  360 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py                            |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py                                       |  203 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py        |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_100.py                              |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py                          |  449 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py                          |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py   |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TransportToOccupyCity.py |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py           |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_KirinHome.py      |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py                          |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py       |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py                                 |   18 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                                   | 2062 ----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py     |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_6.py                             |  421 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py                   |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py                          |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py    |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py                               |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py                  |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py                                |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py                          |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py                                |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTeam.py                                 |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddSuccessProgress.py    |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py   |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py            |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py                                |   11 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MunekadoTrial.py  |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFriend.py                               |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py                  |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py                           |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerVip.py                                  |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                                               |   98 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_101.py                              |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py                                    |   82 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py                                     |  157 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py                                         |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py                              |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py        |    8 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/ServerScript.ini                                            |   58 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py               |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py        |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py                               |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py                 |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py               |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py                                  |   29 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini                                                  |  640 ---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py                                      |   94 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Guard.py          |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                                   |  356 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBattle.py                               |   10 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py                         |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py                           |   70 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWorldPos.py                           |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py                       |   12 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ClearDevil.py     |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py                                  | 4631 -------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                              |  403 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py     |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py                             |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py                                |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                                       |   10 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py      |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/GameServerPyPack.ini                                        |   13 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AuctionHouseGiveItem.py  |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py    |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py                   |  174 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py                 |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py                                         |   14 
 /dev/null                                                                                                                |   39 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ReloadModule.py                                      |   13 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Player.py        |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py                         |   15 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                          |  130 
 83 files changed, 193 insertions(+), 10,686 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/GameServerPyPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/GameServerPyPack.ini
index 31a69f4..fc8cc16 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/GameServerPyPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/GameServerPyPack.ini
@@ -30,19 +30,6 @@
 PacketSubCMD_4=0x04
 PacketCallFunc_4=OnGMGivePlayerBourseGains
 
-;GM补偿
-[Compensation]
-ScriptName = Player\PlayerCompensationTube
-Writer = xmnathan
-Releaser = xmnathan
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0x03
-PacketSubCMD_1=0x02
-PacketCallFunc_1=OnGMRequestCompensationResult
-
-
 [PlayerFriend]
 ScriptName = Player\PlayerFriend.py
 Writer = Alee
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index f1590e3..898ea20 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -445,7 +445,7 @@
 Writer = alee
 Releaser = alee
 RegType = 0
-RegisterPackCount = 11
+RegisterPackCount = 3
 
 PacketCMD_1=0xA2
 PacketSubCMD_1=0x03
@@ -456,40 +456,8 @@
 PacketCallFunc_2=PlayerOpenLongWarehouse
 
 PacketCMD_3=0xA2
-PacketSubCMD_3=0x06
-PacketCallFunc_3=PlayerQuickFinishTask
-
-PacketCMD_4=0xA2
-PacketSubCMD_4=0x09
-PacketCallFunc_4=PlayerSetRunMissionStar
-
-PacketCMD_5=0xA2
-PacketSubCMD_5=0x15
-PacketCallFunc_5=PlayerBuyDayMissionSum
-
-PacketCMD_6=0xA2
-PacketSubCMD_6=0x18
-PacketCallFunc_6=OnPlayerFinishTask
-
-PacketCMD_7=0xA2
-PacketSubCMD_7=0x21
-PacketCallFunc_7=OnGetRunTaskAward
-
-PacketCMD_8=0xA2
-PacketSubCMD_8=0x24
-PacketCallFunc_8=MoveTouchNPC
-
-PacketCMD_9=0xA2
-PacketSubCMD_9=0x25
-PacketCallFunc_9=ClientTaskCount
-
-PacketCMD_10=0xC1
-PacketSubCMD_10=0x06
-PacketCallFunc_10=OnCrossNPCTalk
-
-PacketCMD_11=0xA2
-PacketSubCMD_11=0x07
-PacketCallFunc_11=OnTakeTask
+PacketSubCMD_3=0x24
+PacketCallFunc_3=MoveTouchNPC
 
 ;VIP功能
 [PlayerVip]
@@ -919,20 +887,6 @@
 PacketSubCMD_2=0x41
 PacketCallFunc_2=OnGetInvestReward
 
-
-;GM补偿
-[Compensation]
-ScriptName = Player\PlayerCompensationTube
-Writer = xmnathan
-Releaser = xmnathan
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x3B
-PacketCallFunc_1=OnCMRequestCompensation
-
-
 ;自动战斗
 [AutoFightSetting]
 ScriptName = Player\ChPlayer
@@ -944,39 +898,6 @@
 PacketCMD_1=0xA5
 PacketSubCMD_1=0x1A
 PacketCallFunc_1=OnSaveAutoFightSetting
-
-;镖车
-[PlayerTruck]
-ScriptName = Player\PlayerTruck.py
-Writer = jiang
-Releaser = jiang
-RegType = 0
-RegisterPackCount = 6
-
-PacketCMD_1=0xAE
-PacketSubCMD_1=0x01
-PacketCallFunc_1=PlayerRefurbishTruckLV
-
-PacketCMD_2=0xAE
-PacketSubCMD_2=0x02
-PacketCallFunc_2=PlayerBuyTruckLV
-
-PacketCMD_3=0xAE
-PacketSubCMD_3=0x03
-PacketCallFunc_3=QueryTruckLV
-
-PacketCMD_4=0xAE
-PacketSubCMD_4=0x04
-PacketCallFunc_4=QueryDestroyTruckCnt
-
-PacketCMD_5=0xAE
-PacketSubCMD_5=0x05
-PacketCallFunc_5=AutoTruck
-
-PacketCMD_6=0xAE
-PacketSubCMD_6=0x06
-PacketCallFunc_6=OverTruck
-
 
 ;玩家查看数据缓存
 [PlayerViewCache]
@@ -1242,19 +1163,6 @@
 PacketCMD_2=0xA5
 PacketSubCMD_2=0x20
 PacketCallFunc_2=OnCoatDecompose
-
-;悬赏任务
-[PlayerArrestTask]
-ScriptName = Player\PlayerArrestTask.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x74
-PacketCallFunc_1=OnRefreshArrestTask
-
 
 ;羽翼精炼
 [PlayerWing]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
index 72366ae..af0c36a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
@@ -222,14 +222,6 @@
 ClassName = ChangeMapInit
 FuncName = ChangeMapInit
 
-[ReloadQuests]
-ScriptName = Event\EventSrc\QuestManager.py
-Writer = eggxp
-Releaser = eggxp
-RegType = 1
-ClassName = ReloadQuests
-FuncName = ReloadQuests
-
 [InitItem]
 ScriptName = Item\ChItem.py
 Writer = eggxp
@@ -318,199 +310,28 @@
 Writer = eggxp
 Releaser = eggxp
 RegType = 0
-RegisterPackCount = 48
+RegisterPackCount = 5
 
-PacketCMD_1=0x32
-PacketSubCMD_1=0xF
-PacketCallFunc_1=AddExp
+PacketCMD_1=0x3
+PacketSubCMD_1=0x5
+PacketCallFunc_1=PlayerClickReborn
 
 PacketCMD_2=0x3
-PacketSubCMD_2=0x1
-PacketCallFunc_2=AddPoint
+PacketSubCMD_2=0x3
+PacketCallFunc_2=SetShutcutSettingHV
 
-PacketCMD_3=0x5
-PacketSubCMD_3=0x1
-PacketCallFunc_3=PlayerMove
+PacketCMD_3=0x3
+PacketSubCMD_3=0x10
+PacketCallFunc_3=ExitFB
 
-PacketCMD_4=0x3
-PacketSubCMD_4=0x5
-PacketCallFunc_4=PlayerClickReborn
+PacketCMD_4=0x1
+PacketSubCMD_4=0xB
+PacketCallFunc_4=ChangeLine
 
-PacketCMD_5=0x5
-PacketSubCMD_5=0x2
-PacketCallFunc_5=PlayerStopMove
+PacketCMD_5=0x3
+PacketSubCMD_5=0x21
+PacketCallFunc_5=EnterFbGameEvent
 
-PacketCMD_6=0x4
-PacketSubCMD_6=0x1
-PacketCallFunc_6=PlayerNeedSeeOther
-
-PacketCMD_7=0x1
-PacketSubCMD_7=0x7
-PacketCallFunc_7=LoadMapOK
-
-PacketCMD_8=0x3
-PacketSubCMD_8=0x2
-PacketCallFunc_8=PlayerSit
-
-PacketCMD_9=0x3
-PacketSubCMD_9=0x3
-PacketCallFunc_9=SetShutcutSettingHV
-
-PacketCMD_10=0x5
-PacketSubCMD_10=0x3
-PacketCallFunc_10=PlayerJump
-
-PacketCMD_11=0x4
-PacketSubCMD_11=0x2
-PacketCallFunc_11=PlayerClickOtherPlayerGetInfo
-
-PacketCMD_12=0x3
-PacketSubCMD_12=0x6
-PacketCallFunc_12=HPRestoreSetting
-
-PacketCMD_13=0x3
-PacketSubCMD_13=0x7
-PacketCallFunc_13=MPRestoreSetting
-
-PacketCMD_14=0x3
-PacketSubCMD_14=0x8
-PacketCallFunc_14=PlayerMapInfo
-
-PacketCMD_15=0x3
-PacketSubCMD_15=0xA
-PacketCallFunc_15=PlayerChangeAttackMode
-
-PacketCMD_16=0x3
-PacketSubCMD_16=0xB
-PacketCallFunc_16=SetMoneyType
-
-PacketCMD_17=0x6
-PacketSubCMD_17=0x6
-PacketCallFunc_17=PlayerCancelBuff
-
-PacketCMD_18=0x3
-PacketSubCMD_18=0xC
-PacketCallFunc_18=StartGameEvent
-
-PacketCMD_19=0x3
-PacketSubCMD_19=0xD
-PacketCallFunc_19=ShowFace
-
-PacketCMD_20=0x1
-PacketSubCMD_20=0x4
-PacketCallFunc_20=OnlineReply
-
-PacketCMD_21=0x6
-PacketSubCMD_21=0x8
-PacketCallFunc_21=PlayerSummonMove
-
-PacketCMD_22=0x6
-PacketSubCMD_22=0x9
-PacketCallFunc_22=PlayerSummonAttack
-
-PacketCMD_23=0x6
-PacketSubCMD_23=0xA
-PacketCallFunc_23=PlayerSummonStop
-
-PacketCMD_24=0x3
-PacketSubCMD_24=0xE
-PacketCallFunc_24=HorseFastMove
-
-PacketCMD_25=0x3
-PacketSubCMD_25=0xF
-PacketCallFunc_25=HideMask
-
-PacketCMD_26=0x3
-PacketSubCMD_26=0x10
-PacketCallFunc_26=ExitFB
-
-PacketCMD_27=0x1
-PacketSubCMD_27=0xB
-PacketCallFunc_27=ChangeLine
-
-PacketCMD_28=0x1
-PacketSubCMD_28=0xC
-PacketCallFunc_28=LineState
-
-PacketCMD_29=0x3
-PacketSubCMD_29=0x11
-PacketCallFunc_29=PlayerUseMakeStove
-
-PacketCMD_30=0x3
-PacketSubCMD_30=0x12
-PacketCallFunc_30=QueryFamilyWarPlan
-
-PacketCMD_31=0x3
-PacketSubCMD_31=0x13
-PacketCallFunc_31=QueryTruckPos
-
-PacketCMD_32=0x3
-PacketSubCMD_32=0x14
-PacketCallFunc_32=MoveToTruckPos
-
-PacketCMD_33=0x3
-PacketSubCMD_33=0x15
-PacketCallFunc_33=FarIdentify
-
-PacketCMD_34=0x3
-PacketSubCMD_34=0x16
-PacketCallFunc_34=GetFBState
-
-PacketCMD_35=0x3
-PacketSubCMD_35=0x19
-PacketCallFunc_35=FBHelp
-
-PacketCMD_36=0x3
-PacketSubCMD_36=0x21
-PacketCallFunc_36=EnterFbGameEvent
-
-PacketCMD_37=0x3
-PacketSubCMD_37=0x22
-PacketCallFunc_37=CancelSummon
-
-PacketCMD_38=0x3
-PacketSubCMD_38=0x23
-PacketCallFunc_38=FarRepairAll
-
-PacketCMD_39=0x4
-PacketSubCMD_39=0x4
-PacketCallFunc_39=FriendTransPort
-
-PacketCMD_40=0x4
-PacketSubCMD_40=0x5
-PacketCallFunc_40=WorldTransPort
-
-PacketCMD_41=0x1
-PacketSubCMD_41=0x13
-PacketCallFunc_41=SaveCard
-
-PacketCMD_42=0x3
-PacketSubCMD_42=0x25
-PacketCallFunc_42=AutoRepairItem
-
-PacketCMD_43=0x1
-PacketSubCMD_43=0x15
-PacketCallFunc_43=CustomRefresh
-
-PacketCMD_44=0x3
-PacketSubCMD_44=0x26
-PacketCallFunc_44=PlayerLvUpRequest
-
-PacketCMD_45=0x3
-PacketSubCMD_45=0x2B
-PacketCallFunc_45=DoubleExpState
-
-PacketCMD_46=0x1
-PacketSubCMD_46=0x1A
-PacketCallFunc_46=ReceiveNewGuyPrize
-
-PacketCMD_47=0x3
-PacketSubCMD_47=0x31
-PacketCallFunc_47=UseFBSpecilSkill
-
-PacketCMD_48=0x7
-PacketSubCMD_48=0x24
-PacketCallFunc_48=PointTransport
 ;宠物
 [Pet]
 ScriptName = Player\PlayerPet.py
@@ -574,7 +395,7 @@
 Writer = eggxp
 Releaser = eggxp
 RegType = 0
-RegisterPackCount = 12
+RegisterPackCount = 11
 
 PacketCMD_1=0x7
 PacketSubCMD_1=0x1
@@ -604,25 +425,21 @@
 PacketSubCMD_7=0x16
 PacketCallFunc_7=UseSpeaker
 
-PacketCMD_8=0x7
-PacketSubCMD_8=0x39
-PacketCallFunc_8=UseOfflineTime
+PacketCMD_8=0x16
+PacketSubCMD_8=0x8
+PacketCallFunc_8=UsePetItem
 
-PacketCMD_9=0x16
-PacketSubCMD_9=0x8
-PacketCallFunc_9=UsePetItem
+PacketCMD_9=0x7
+PacketSubCMD_9=0x19
+PacketCallFunc_9=GetAnyWhereItem
 
 PacketCMD_10=0x7
-PacketSubCMD_10=0x19
-PacketCallFunc_10=GetAnyWhereItem
+PacketSubCMD_10=0x20
+PacketCallFunc_10=PutItemInFabao
 
 PacketCMD_11=0x7
-PacketSubCMD_11=0x20
-PacketCallFunc_11=PutItemInFabao
-
-PacketCMD_12=0x7
-PacketSubCMD_12=0x21
-PacketCallFunc_12=GetBackItemInFabao
+PacketSubCMD_11=0x21
+PacketCallFunc_11=GetBackItemInFabao
 
 
 ;装备
@@ -648,269 +465,11 @@
 Writer = eggxp
 Releaser = eggxp
 RegType = 0
-RegisterPackCount = 44
+RegisterPackCount = 1
 
-PacketCMD_1=0x8
-PacketSubCMD_1=0x1
-PacketCallFunc_1=BeginEvent
-
-PacketCMD_2=0x8
-PacketSubCMD_2=0x2
-PacketCallFunc_2=EventAnswer
-
-PacketCMD_3=0x8
-PacketSubCMD_3=0x7
-PacketCallFunc_3=ChangeMap
-
-PacketCMD_4=0x8
-PacketSubCMD_4=0xA
-PacketCallFunc_4=ExitEvent
-
-PacketCMD_5=0x8
-PacketSubCMD_5=0x8
-PacketCallFunc_5=GetTaskDetail
-
-PacketCMD_6=0x8
-PacketSubCMD_6=0xB
-PacketCallFunc_6=MakeItem
-
-PacketCMD_7=0x8
-PacketSubCMD_7=0xC
-PacketCallFunc_7=MergeItem
-
-PacketCMD_8=0x8
-PacketSubCMD_8=0xE
-PacketCallFunc_8=BindItem
-
-PacketCMD_9=0x8
-PacketSubCMD_9=0xF
-PacketCallFunc_9=MakeHoleItem
-
-PacketCMD_10=0x8
-PacketSubCMD_10=0x10
-PacketCallFunc_10=ItemLVUpStar
-
-PacketCMD_11=0x8
-PacketSubCMD_11=0x11
-PacketCallFunc_11=InsertStone
-
-PacketCMD_12=0x8
-PacketSubCMD_12=0x12
-PacketCallFunc_12=DepartItem
-
-PacketCMD_13=0x8
-PacketSubCMD_13=0x9
-PacketCallFunc_13=DeleteMission
-
-PacketCMD_14=0x8
-PacketSubCMD_14=0x14
-PacketCallFunc_14=MixTitle
-
-PacketCMD_15=0x7
-PacketSubCMD_15=0x23
-PacketCallFunc_15=RepairFaBao
-
-PacketCMD_16=0x7
-PacketSubCMD_16=0x22
-PacketCallFunc_16=ForgeFaBao
-
-PacketCMD_17=0x4
-PacketSubCMD_17=0x3
-PacketCallFunc_17=MissionMove
-
-PacketCMD_18=0x8
-PacketSubCMD_18=0x17
-PacketCallFunc_18=UnBindItem
-
-PacketCMD_19=0x7
-PacketSubCMD_19=0x25
-PacketCallFunc_19=MixFaBao
-
-PacketCMD_20=0x8
-PacketSubCMD_20=0x18
-PacketCallFunc_20=SoulOfWarEquip
-
-PacketCMD_21=0x7
-PacketSubCMD_21=0x28
-PacketCallFunc_21=ItemChangeProperty
-
-PacketCMD_22=0x7
-PacketSubCMD_22=0x29
-PacketCallFunc_22=ItemChangeGiveSoul
-
-PacketCMD_23=0x7
-PacketSubCMD_23=0x30
-PacketCallFunc_23=ItemChangeSoul
-
-PacketCMD_24=0x7
-PacketSubCMD_24=0x31
-PacketCallFunc_24=ItemChangeMark
-
-PacketCMD_25=0x7
-PacketSubCMD_25=0x32
-PacketCallFunc_25=ItemChangeGiveMark
-
-PacketCMD_26=0x7
-PacketSubCMD_26=0x34
-PacketCallFunc_26=FaBaoFly
-
-PacketCMD_27=0xF
-PacketSubCMD_27=0xE
-PacketCallFunc_27=ContributeFamilyMoney
-
-PacketCMD_28=0x7
-PacketSubCMD_28=0x35
-PacketCallFunc_28=FaBaoForget
-
-PacketCMD_29=0x7
-PacketSubCMD_29=0x36
-PacketCallFunc_29=FaBaoMerge
-
-PacketCMD_30=0x7
-PacketSubCMD_30=0x37
-PacketCallFunc_30=ShengQiQiangHua
-
-PacketCMD_31=0x7
-PacketSubCMD_31=0x38
-PacketCallFunc_31=ClearShengQiAttrs
-
-PacketCMD_32=0xD
-PacketSubCMD_32=0xE
-PacketCallFunc_32=StoneCompound
-
-PacketCMD_33=0xD
-PacketSubCMD_33=0xC
-PacketCallFunc_33=StuffMachining
-
-PacketCMD_34=0x7
-PacketSubCMD_34=0x3A
-PacketCallFunc_34=BuyItemPack
-
-PacketCMD_35=0x8
-PacketSubCMD_35=0x19
-PacketCallFunc_35=BuildEquip
-
-PacketCMD_36=0x8
-PacketSubCMD_36=0x1B
-PacketCallFunc_36=ChangeEquipEndure
-
-PacketCMD_37=0x0D
-PacketSubCMD_37=0x11
-PacketCallFunc_37=PrestigeEquipMerge
-
-PacketCMD_38=0x07
-PacketSubCMD_38=0x3F
-PacketCallFunc_38=UseIncreaseMaxAddSkill
-
-PacketCMD_39=0x16
-PacketSubCMD_39=0x0B
-PacketCallFunc_39=CPetRefinery
-
-PacketCMD_40=0x7
-PacketSubCMD_40=0x42
-PacketCallFunc_40=ItemEnergyTransfer
-
-PacketCMD_41=0x7
-PacketSubCMD_41=0x41
-PacketCallFunc_41=OpenPackCount
-
-PacketCMD_42=0x16
-PacketSubCMD_42=0x0D
-PacketCallFunc_42=CPetEquipMerge
-
-PacketCMD_43=0x8
-PacketSubCMD_43=0x26
-PacketCallFunc_43=CEquipUpStarImmediately
-
-PacketCMD_44=0x7
-PacketSubCMD_44=0x43
-PacketCallFunc_44=LearnWuLinSkill
-
-;拆解背包
-[Break]
-ScriptName = Event\EventShell.py
-Writer = ifo
-Releaser = ifo
-RegType = 0
-RegisterPackCount = 5
-
-PacketCMD_1=0xD
-PacketSubCMD_1=0x4
-PacketCallFunc_1=PutItemInBreakPreparePack
-
-PacketCMD_2=0xD
-PacketSubCMD_2=0x5
-PacketCallFunc_2=GetBackItemInBreakPrepare
-
-PacketCMD_3=0xD
-PacketSubCMD_3=0x6
-PacketCallFunc_3=GetBackItemInBreakItem
-
-PacketCMD_4=0xD
-PacketSubCMD_4=0x7
-PacketCallFunc_4=GetItemFromResultPack
-
-PacketCMD_5=0xD
-PacketSubCMD_5=0x8
-PacketCallFunc_5=PutItemInResultPack
-
-
-
-;合成背包
-[Compose]
-ScriptName = Event\EventShell.py
-Writer = ifo
-Releaser = ifo
-RegType = 0
-RegisterPackCount = 3
-
-PacketCMD_1=0xD
-PacketSubCMD_1=0x1
-PacketCallFunc_1=PutItemInCompose
-
-PacketCMD_2=0xD
-PacketSubCMD_2=0x2
-PacketCallFunc_2=GetItemInCompose
-
-PacketCMD_3=0xD
-PacketSubCMD_3=0x3
-PacketCallFunc_3=MoveItemInCompose
-
-;鉴定背包
-[Identify]
-ScriptName = Event\EventShell.py
-Writer = ifo
-Releaser = ifo
-RegType = 0
-RegisterPackCount = 7
-
-PacketCMD_1=0xE
-PacketSubCMD_1=0x1
-PacketCallFunc_1=PutItemInIdentify
-
-PacketCMD_2=0xE
-PacketSubCMD_2=0x2
-PacketCallFunc_2=GetItemInIdentify
-
-PacketCMD_3=0xE
-PacketSubCMD_3=0x3
-PacketCallFunc_3=IdentifyOK
-
-PacketCMD_4=0xE
-PacketSubCMD_4=0x4
-PacketCallFunc_4=IdentifyItem
-
-PacketCMD_5=0x8
-PacketSubCMD_5=0x15
-PacketCallFunc_5=DigItemStone
-
-PacketCMD_6=0x8
-PacketSubCMD_6=0x16
-PacketCallFunc_6=UseWegAddEndure
-
-PacketCMD_7=0x7
-PacketSubCMD_7=0x27
-PacketCallFunc_7=LegendItemMerge
+PacketCMD_1=0x7
+PacketSubCMD_1=0x41
+PacketCallFunc_1=OpenPackCount
 
 ;商店
 [Shop]
@@ -918,16 +477,15 @@
 Writer = eggxp
 Releaser = eggxp
 RegType = 0
-RegisterPackCount = 3
+RegisterPackCount = 2
+
 PacketCMD_1=0x8
 PacketSubCMD_1=0x3
 PacketCallFunc_1=BuyItem
+
 PacketCMD_2=0x8
-PacketSubCMD_2=0x5
-PacketCallFunc_2=RepairItem
-PacketCMD_3=0x8
-PacketSubCMD_3=0x6
-PacketCallFunc_3=SellItem
+PacketSubCMD_2=0x6
+PacketCallFunc_2=SellItem
 
 ;GM命令
 [GM]
@@ -940,45 +498,13 @@
 PacketSubCMD_1=0xC
 PacketCallFunc_1=RecvGMCMD
 
-;交易
-[Trade]
-ScriptName = Player\PlayerTrade.py
-Writer = eggxp
-Releaser = eggxp
-RegType = 0
-RegisterPackCount = 8
-PacketCMD_1=0xA
-PacketSubCMD_1=0x1
-PacketCallFunc_1=TradeAsk
-PacketCMD_2=0xA
-PacketSubCMD_2=0x2
-PacketCallFunc_2=TradeAnswer
-PacketCMD_3=0xA
-PacketSubCMD_3=0x3
-PacketCallFunc_3=PutItemTrade
-PacketCMD_4=0xA
-PacketSubCMD_4=0x4
-PacketCallFunc_4=TradeLock
-PacketCMD_5=0xA
-PacketSubCMD_5=0x5
-PacketCallFunc_5=TradeOK
-PacketCMD_6=0xA
-PacketSubCMD_6=0x6
-PacketCallFunc_6=GetBackItemInTrade
-PacketCMD_7=0xA
-PacketSubCMD_7=0x7
-PacketCallFunc_7=ExitTrade
-PacketCMD_8=0xA
-PacketSubCMD_8=0x8
-PacketCallFunc_8=LongDistanceSaleItem
-
 ;仓库
 [Warehouse]
 ScriptName = Event\EventShell.py
 Writer = ifo
 Releaser = ifo
 RegType = 0
-RegisterPackCount = 20
+RegisterPackCount = 5
 
 PacketCMD_1=0xC
 PacketSubCMD_1=0x1
@@ -988,77 +514,17 @@
 PacketSubCMD_2=0x2
 PacketCallFunc_2=GetItemInWarehouse
 
-PacketCMD_3=0xC
-PacketSubCMD_3=0x3
-PacketCallFunc_3=GetMoneyInWarehouse
+PacketCMD_3=0x7
+PacketSubCMD_3=0xF
+PacketCallFunc_3=ResetItem
 
-PacketCMD_4=0xC
-PacketSubCMD_4=0x4
-PacketCallFunc_4=PutMoneyInWarehouse
+PacketCMD_4=0x7
+PacketSubCMD_4=0x3C
+PacketCallFunc_4=BackpackOperate
 
-PacketCMD_5=0xC
-PacketSubCMD_5=0x5
-PacketCallFunc_5=SetWarehousePsw
-
-PacketCMD_6=0xC
-PacketSubCMD_6=0x6
-PacketCallFunc_6=SetWarehouseLock
-
-PacketCMD_7=0xC
-PacketSubCMD_7=0x7
-PacketCallFunc_7=SendWarehousePsw
-
-PacketCMD_8=0xC
-PacketSubCMD_8=0x8
-PacketCallFunc_8=InitWarehousePsw
-
-PacketCMD_9=0xC
-PacketSubCMD_9=0x9
-PacketCallFunc_9=MoveItemInWarehouse
-
-PacketCMD_10=0x7
-PacketSubCMD_10=0x10
-PacketCallFunc_10=ResetWarehouseItem
-
-PacketCMD_11=0xC
-PacketSubCMD_11=0xA
-PacketCallFunc_11=PutItemInHorsePack
-
-PacketCMD_12=0xC
-PacketSubCMD_12=0xB
-PacketCallFunc_12=GetItemInHorsePack
-
-PacketCMD_13=0xC
-PacketSubCMD_13=0xC
-PacketCallFunc_13=MoveItemInHorse
-
-PacketCMD_14=0xC
-PacketSubCMD_14=0xD
-PacketCallFunc_14=PutItemInHorseEquipPack
-
-PacketCMD_15=0xC
-PacketSubCMD_15=0xE
-PacketCallFunc_15=GetItemInHorseEquipPack
-
-PacketCMD_16=0xC
-PacketSubCMD_16=0xF
-PacketCallFunc_16=MoveItemInHorseEquip
-
-PacketCMD_17=0xC
-PacketSubCMD_17=0x10
-PacketCallFunc_17=BuyWarehouse
-
-PacketCMD_18=0x7
-PacketSubCMD_18=0xF
-PacketCallFunc_18=ResetItem
-
-PacketCMD_19=0x7
-PacketSubCMD_19=0x3C
-PacketCallFunc_19=BackpackOperate
-
-PacketCMD_20=0x7
-PacketSubCMD_20=0x3D
-PacketCallFunc_20=PackItemExchange
+PacketCMD_5=0x7
+PacketSubCMD_5=0x3D
+PacketCallFunc_5=PackItemExchange
 
 ;回收站
 [Recycle]
@@ -1089,22 +555,6 @@
 PacketCMD_1=0x3
 PacketSubCMD_1=0x9
 PacketCallFunc_1=OnRideHorse
-
-;骠车
-[Truck]
-ScriptName = Player\PlayerTruck.py
-Writer = eggxp
-Releaser = eggxp
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xB
-PacketSubCMD_1=0x2
-PacketCallFunc_1=OnPlayerEnterTruck
-
-PacketCMD_2=0xB
-PacketSubCMD_2=0x1
-PacketCallFunc_2=OnPlayerSetTruckMode
 
 ;家族争霸赛
 [PlayerFamilyBattle]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index 30e0d4d..5dd3c73 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -30,24 +30,16 @@
 import IPY_GameWorld
 import PlayerControl
 import NPCCommon
-#import ItemControler
 import SkillCommon
 import EffGetSet
 import FBLogic
-import EventShell
 import ReadChConfig
 import PetControl
 import GameMap
-import PlayerTruck
-#import PlayerPrestigeSys
-import PlayerFamily
-#import BossHurtMng
 import PassiveBuffEffMng
-import PlayerSuccess
 import GameFuncComm
 import ShareDefine
 import SkillShell
-import PlayerVip
 import FormulaControl
 import IpyGameDataPY
 import PyGameData
@@ -216,49 +208,6 @@
     curTagPlayer.GameServer_AddEnemy(curPlayer.GetID(), curPlayer.GetName())
     return
 
-
-## 当玩家杀死镖车的时候触发
-#  @param curPlayer 杀人者
-#  @param defender 被杀者
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def OnPlayerKillTruck(curPlayer, curTruck, tick):
-    
-    if curPlayer == None or curTruck == None:
-        return
-    
-    #区域
-    curPlayerAreaType = GameMap.GetAreaTypeByMapPos(curPlayer.GetPosX(), curPlayer.GetPosY())
-    truckAreaType = GameMap.GetAreaTypeByMapPos(curTruck.GetPosX(), curTruck.GetPosY())
-    
-    #自由区域,合法,返回True
-    if curPlayerAreaType == IPY_GameWorld.gatFreePK or truckAreaType == IPY_GameWorld.gatFreePK:       
-        return
-    
-    #家族区域,PK不是同一家族的玩家或其宠物,合法,返回True
-    if curPlayerAreaType == IPY_GameWorld.gatFamilyPK or truckAreaType == IPY_GameWorld.gatFamilyPK:
-        return
-    
-    #已经死亡了,不变色
-    if GameObj.GetHP(curPlayer) <= 0:
-        return
-    
-    curPlayerNameColor = curPlayer.GetPlayerNameColor()
-    #自己如果不是白名就不变色
-    if curPlayerNameColor != IPY_GameWorld.pncNormal:
-        return
-    
-    curTruckNameColor = PlayerTruck.GetTruckNameColor(curTruck)
-    if curTruckNameColor != IPY_GameWorld.pncNormal:
-        #目标玩家不是白名就不变色
-        return
-    
-    #灰名(9)
-    #SkillCommon.AddBuffBySkillType(curPlayer , ChConfig.Def_SkillID_Gray , tick)
-    return
-
-
 ## 当玩家杀死玩家的时候触发
 #  @param curPlayer 杀人者
 #  @param defender 被杀者
@@ -268,12 +217,6 @@
 def OnPlayerKillPlayer(curPlayer, defender, tick):
     
     PlayerState.SetPKStateTick(curPlayer, tick)
-    
-    #触发击杀玩家事件
-    EventShell.EventResponse_OnKillEnemy(curPlayer, defender)
-    
-    #触发被杀事件
-    EventShell.EventResponse_OnEnemyKill(defender, curPlayer)
     
     #通知
     PlayerControl.NotifyCode(defender, "PK_lhs_318691", [curPlayer.GetName()])
@@ -731,10 +674,7 @@
             return
         
         curTeam = curObj.GetTeam()
-        
-        #2012-04-23 jiang 攻击镖车只算个人伤害
-        if curTagObj.GetGameObjType() == IPY_GameWorld.gotNPC and \
-           curTagObj.GetGameNPCObjType() == IPY_GameWorld.gnotTruck or curTeam == None:
+        if curTeam == None:
             #无队伍,添加个人伤害
             AddHurtValue(curTagObj, curObj.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, hurtHP)
             return True
@@ -1791,10 +1731,6 @@
             #设置宠物剩余血量
             PetControl.SetPetHP(defObj, remainHP)
             
-        elif defObj.GetGameNPCObjType() == IPY_GameWorld.gnotTruck:
-            remainHP = max(PlayerTruck.GetTruckDestroyMinHP(defObj), remainHP)
-            GameObj.SetHP(defObj, remainHP)
-        
         elif defObj.GetType() == ChConfig.ntHelpBattleRobot:
             remainHP = min(dHP, max(GameObj.GetMaxHP(defObj)/2, remainHP)) # 助战机器人剩余血量不能少于一半
             GameObj.SetHP(defObj, remainHP)
@@ -2697,10 +2633,6 @@
         return (taget.GetPlayerAction() == IPY_GameWorld.paDie)
     
     elif tagetType == IPY_GameWorld.gotNPC:
-        if taget.GetGameNPCObjType() == IPY_GameWorld.gnotTruck:
-            #镖车判定是否可以攻击( 损坏的镖车是无敌的 GetCanAttack = 0 )
-            return (not taget.GetCanAttack())
-        
         return (taget.GetCurAction() == IPY_GameWorld.laNPCDie)
     
     GameWorld.Log('###GetIsDead = %s ' % (tagetType))
@@ -2902,67 +2834,6 @@
     #敌人关系,可PK,可加减益buff
     return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
 
-#def GetPeaceBuff(curPlayer):
-#    return SkillCommon.FindBuffByID(curPlayer, ChConfig.Def_SkillID_Peace)[0]
-
-## 获取玩家和镖车的关系
-#  @param curPlayer: 攻击方实例
-#  @param curTagTruck: 镖车实例
-#  @return: 可否攻击
-def GetPlayerAndTruckRelation(curPlayer, curTagTruck):
-    
-    if curPlayer == None or curTagTruck == None:
-        return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
-    
-    #攻击方玩家区域
-    curPlayerAreaType = GameMap.GetAreaTypeByMapPos(curPlayer.GetPosX(), curPlayer.GetPosY())
-    
-    #镖车所在区域
-    truckAreaType = GameMap.GetAreaTypeByMapPos(curTagTruck.GetPosX(), curTagTruck.GetPosY())
-    
-    #攻击方或镖车在安全区
-    if curPlayerAreaType == IPY_GameWorld.gatSafe or truckAreaType == IPY_GameWorld.gatSafe:
-        return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_IsSafeArea
-    
-    #攻守双方不在同一区域,不可PK,不可加增益buff
-    if curPlayerAreaType != truckAreaType:
-        return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_CurAreaNotPK
-    
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    if curTagPlayer:
-        if curPlayer.GetID() == curTagPlayer.GetID():
-            #不能攻击自己的镖车
-            return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
-
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Truck):
-        #Truck_hgg_31379:功能未开启,不能攻击镖车
-        PlayerControl.NotifyCode(curPlayer, "Truck_hgg_31379", [GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_Truck)])   
-        return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
-        
-    curTruckOTeamID = PlayerTruck.GetTruckTeamID(curTagTruck)
-    curTruckFamilyID = PlayerTruck.GetTruckFamilyID(curTagTruck)
-    curTruckNameColor = PlayerTruck.GetTruckNameColor(curTagTruck)
-    
-    #普通区域
-    if curPlayerAreaType == IPY_GameWorld.gatNormal:
-        #和平模式
-        if curPlayer.GetAttackMode() == IPY_GameWorld.amPeace :
-            #如镖车主人不是红名也不是黄名,则给系统提示:不可攻击
-            if curTruckNameColor not in [IPY_GameWorld.pncGray, IPY_GameWorld.pncRed]:
-                return ChConfig.Type_Relation_Friend , ChConfig.Def_PASysMessage_CurAreaNotPK
-            
-    curPlayerTeamID = curPlayer.GetTeamID()  # 攻击方队伍ID
-    curPlayerFamilyID = curPlayer.GetFamilyID()  # 攻击方家族ID
-    if curPlayerTeamID and curTruckOTeamID and curTruckOTeamID == curPlayerTeamID:
-        #攻击方和镖车主人同队伍
-        return ChConfig.Type_Relation_Friend , ChConfig.Def_PASysMessage_NotAttackTeam
-    
-    if curTruckFamilyID and curPlayerFamilyID and curTruckFamilyID == curPlayerFamilyID:
-        #攻击方和镖车主人同家族
-        return ChConfig.Type_Relation_Friend , ChConfig.Def_PASysMessage_NotAttackFamily
-    
-    return ChConfig.Type_Relation_Enemy, ChConfig.Def_PASysMessage_None
-
 def IsPKProtectTime():
     ## 是否是PK保护时间段
     pkProtecTimeList = IpyGameDataPY.GetFuncEvalCfg("PKConfig", 1)
@@ -3066,53 +2937,10 @@
     defendPkValue = defender.GetPKValue()  # 防守者pk值
     defendFightPower = PlayerControl.GetFightPower(defender) # 防守者战斗力
     
-#    #今日杀人获得威望值
-#    prestigeByDay = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_KillPlayerAddPrestige)
-#    
-#    addPrestige = int(eval(ReadChConfig.GetChConfig("KillPlayerPrestige")))
-#    if addPrestige > 0:
-#        maxPrestigeByDay = ReadChConfig.GetEvalChConfig("KillPlayerMaxPrestigeByDay")
-#        if prestigeByDay < maxPrestigeByDay:
-#            #没超过每日杀人获得威望最大值, 给予威望
-#            addPrestige = min(addPrestige, maxPrestigeByDay - prestigeByDay)
-#            PlayerPrestigeSys.AddPrestigeOffcialLV(curPlayer, addPrestige, ChConfig.Def_AddPrestige_Kill)
-#            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_KillPlayerAddPrestige, prestigeByDay + addPrestige)
-#        else:
-#            #GeRen_wll_0:今日获得威望已达上限
-#            PlayerControl.NotifyCode(curPlayer, "PK_liubo_372238")
-#            
-#    elif addPrestige < 0:
-#        GameWorld.ErrLog("KillPlayerPrestige计算结果:%s" % addPrestige)
-    
     #恶名值    
     curPlayer.SetInfamyValue(min(attackNotoriety + ChConfig.Def_KillValue_Notoriety,
                              ChConfig.Def_UpperLimit_DWord))
     
-    #活跃度
-#    activeByDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_KillPlayerAddActive)
-#    addActiveValue = int(eval(ReadChConfig.GetChConfig("KillPlayerFamilyAvtive")))
-#    if addActiveValue > 0 and curPlayer.GetFamilyID() != 0:
-#        maxAvtiveByDay = ReadChConfig.GetEvalChConfig("KillPlayerMaxAvtiveByDay")
-#        if activeByDay < maxAvtiveByDay:
-#            addActiveValue = min(addActiveValue, maxAvtiveByDay - activeByDay)
-#            PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addActiveValue, True, \
-#                                                    PlayerFamily.Def_AddFAVReason_KillPlayer)
-#            PlayerControl.NotifyCode(curPlayer, "GeRen_admin_425673", [addActiveValue])
-#            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_KillPlayerAddActive, activeByDay + addActiveValue)
-#        else:
-#            PlayerControl.NotifyCode(curPlayer, "PK_liubo_161795")            
-#
-#    elif addActiveValue < 0:
-#        GameWorld.ErrLog("KillPlayerFamilyAvtive计算结果:%s" % addActiveValue)
-
-    #---防守者
-    #威望值
-#    lostPrestige = int(eval(ReadChConfig.GetChConfig("BeKilledPlayerPrestige")))
-#    if lostPrestige > 0:
-#        PlayerPrestigeSys.SubPrestigeOffcialLV(defender, lostPrestige, ChConfig.Def_SubPrestige_BeKilled)
-#    elif lostPrestige < 0:
-#        GameWorld.ErrLog("BeKilledPlayerPrestige计算结果:%s" % lostPrestige)
-        
     #恶名值
     defender.SetInfamyValue(max(defendNotoriety - ChConfig.Def_BeKilledValue_Notoriety, 0))
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Player.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Player.py
index b6f1fc3..7b987b7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Player.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Player.py
@@ -19,9 +19,6 @@
 import PlayerControl
 import AttackCommon
 import ChConfig
-import ChEquip
-import GameWorld
-import EventShell
 import FBLogic
 import GameObj
 import NPCCommon
@@ -121,6 +118,4 @@
         playerControl = PlayerControl.PlayerControl(curTagPlayer)
         playerControl.SetDead()
         FBLogic.DoFBOnNPCKill_Player(curNormalNPC, curTagPlayer, tick)
-        #触发玩家死亡事件
-        EventShell.EventRespons_PlayerEvent(curTagPlayer, "player_dead")
     return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Truck.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Truck.py
deleted file mode 100644
index a915a25..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/NormalNPC_Attack_Truck.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package NormalNPC_Attack_Truck
-# 普通NPC攻击镖车
-#
-# @author eggxp
-# @date 2010-4-20
-# @version 1.5
-#
-# @change: "2010-09-06 17:30" panwei GetBattleType函数修改, 新增参数:攻击方
-# @change: "2010-11-17 19:00" adaws 加入NPC阵容判定
-# @change: "2012-02-10 20:20" Alee 添加技能必发生状态
-# @change: "2012-05-31 18:00" jiang 修改攻击镖车逻辑
-# @change: "2013-01-03 17:00" wdb 去除npc攻击造成的伤血记录
-#------------------------------------------------------------------------------ 
-"""Version = 2013-01-03 17:00"""
-#---------------------------------------------------------------------
-import NPCCommon
-import ChConfig
-import AttackCommon
-import IPY_GameWorld
-import SkillShell
-import PlayerTruck
-import GameObj
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-
-## 是否可以攻击 
-#  @param curNormalNPC 攻击方:普通NPC
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return True or False
-#  @remarks 函数详细说明.
-def GetCanAttack(curNormalNPC, curTagTruck, skill, tick):
-    
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    if curTagPlayer == None :
-        return False
-    
-    if not curTagTruck.GetCanAttack() or PlayerTruck.IsTruckDestroy(curTagTruck):
-        #Truck_pan_161795: 镖车货物已被劫光
-        return False
-    
-    if not AttackCommon.CheckNPCCanAttackTag(curNormalNPC, curTagTruck, skill):
-        return False 
-    
-    return True
-
-## 获得关系
-#  @param curNormalNPC 攻击方:普通NPC
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return 如:ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
-#  @remarks 函数详细说明.
-def GetTagRelation(curNormalNPC, curTagTruck, skill, tick):
-    attackerCampType = NPCCommon.GetFaction(curNormalNPC)
-    #如果是守卫或是女神不攻击玩家镖车
-    if attackerCampType == ChConfig.CampType_Justice:
-        return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_None
-    
-    return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
-
-## 攻击
-#  @param curNormalNPC 攻击方:普通NPC
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param skillValue 技能增强
-#  @param skillPercent 技能增强百分比
-#  @param skillHurtList 技能伤血列表(C++接口)
-#  @param tick 当前时间
-#  @return hurtType : HurtType 伤害结构体类 
-#  @remarks 函数详细说明.
-def DoAttack(curNormalNPC, curTagTruck, skill, skillValue, skillPercent, skillHurtList, tick):
-    curTagTruckHP = GameObj.GetHP(curTagTruck)
-    hurtType = AttackCommon.GetHurtHP(curNormalNPC, curTagTruck, skill, skillValue, skillPercent, tick)
-    
-    hurtHP = hurtType.HurtHP
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    
-    if curTagPlayer != None:
-        #给这个玩家的召唤兽增加仇恨
-        AttackCommon.SummonAddAngryByOwner(curNormalNPC, curTagPlayer, hurtHP)
-    
-    #添加伤血
-    # 2013-1-3,去除npc攻击造成的伤血记录
-#    AttackCommon.NPCAddObjInHurtList(curNormalNPC, curTagTruck, curTagTruckHP, hurtHP)
-    
-    #添加技能伤害通知列表,(用于攻击结束,统一通知客户端)
-    AttackCommon.AddHurt(curTagTruck, skillHurtList, hurtType.HurtType, hurtHP)
-    return hurtType
-
-## 处理攻击后的结果
-#  @param curNormalNPC 攻击方:普通NPC
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return True
-#  @remarks 函数详细说明.
-def AttackResult(curNormalNPC, curTagTruck, skill, tick):
-    #获取镖车主人
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    if curTagPlayer != None and GameObj.GetHP(curTagPlayer) > 0 :
-        #进入战斗状态
-        AttackCommon.SetPlayerBattleState(curTagPlayer, tick)
-        
-    #镖车死亡
-    if PlayerTruck.IsTruckDestroy(curTagTruck):
-        PlayerTruck.DoTruckDestroy(curTagTruck)
-        
-    return True
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/Player_Attack_Truck.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/Player_Attack_Truck.py
deleted file mode 100644
index ada6dcd..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/Player_Attack_Truck.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package Player_Attack_Truck
-# 玩家攻击镖车
-#
-# @author eggxp
-# @date 2010-4-20
-# @version 1.6
-#
-# @change: "2010-09-06 17:30" panwei GetBattleType函数修改, 新增参数:攻击方
-# @change: "2012-02-10 20:20" Alee 添加技能必发生状态
-# @change: "2012-05-31 17:30" jiang 修改攻击镖车逻辑
-# @change: "2012-06-13 18:00" jiang 攻击自己镖车提示错误...
-# @change: "2014-10-18 16:00" hxp 系统提示修改
-# @change: "2015-04-11 15:30" hxp 增加最终伤害逻辑
-#------------------------------------------------------------------------------ 
-#"""Version = 2015-04-11 15:30"""
-#---------------------------------------------------------------------
-import NPCCommon
-import AttackCommon
-import IPY_GameWorld
-import SkillShell
-import PlayerTruck
-import PlayerControl
-import SkillCommon
-import GameObj
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-
-## 是否可以攻击 
-#  @param curNormalNPC 攻击方:玩家
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return True or False
-#  @remarks 函数详细说明.
-def GetCanAttack(curPlayer, curTagTruck, skill, tick):
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    if curTagPlayer:
-        if curPlayer.GetID() == curTagTruck.GetID():
-            #不能攻击自己的镖车
-            return False
-    
-    if not PlayerTruck.CanAttackTruck(curPlayer):
-        if PlayerTruck.GetDestroyTruckMaxCnt() > 0:
-            #Truck_hgg_861048 你今日已经没有劫镖次数,不能对镖车进行攻击
-            PlayerControl.NotifyCode(curPlayer, "Truck_hgg_861048") 
-        return False
-    
-    if not curTagTruck.GetCanAttack() or PlayerTruck.IsTruckDestroy(curTagTruck):
-        #Truck_hgg_0: 镖车货物已被劫光
-        PlayerControl.NotifyCode(curPlayer, "Truck_hgg_0") 
-        return False
-    
-    #通用判断
-    if not AttackCommon.CheckPlayerCanAttackTag(curPlayer, curTagTruck):
-        return False
-    
-    #判断距离
-    if not AttackCommon.CheckPlayerAttackDist(curPlayer, curTagTruck, skill):
-        return False
-    
-    return True
-
-## 获得关系
-#  @param curNormalNPC 攻击方:玩家
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return 如:ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
-def GetTagRelation(curPlayer, curTagTruck, skill, tick):
-    
-    return AttackCommon.GetPlayerAndTruckRelation(curPlayer, curTagTruck)
-
-
-## 攻击
-#  @param curNormalNPC 攻击方:玩家
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param skillValue 技能增强
-#  @param skillPercent 技能增强百分比
-#  @param skillHurtList 技能伤血列表(C++接口)
-#  @param tick 当前时间
-#  @return hurtType : HurtType 伤害结构体类 
-#  @remarks 函数详细说明.
-def DoAttack(curPlayer, curTagTruck, skill, skillValue, skillPercent, skillHurtList, tick):
-    
-    curTagNPCHPBeforeAtk = GameObj.GetHP(curTagTruck)
-    #攻击成功
-    hurtType = AttackCommon.GetHurtHP(curPlayer, curTagTruck, skill, skillValue, skillPercent, tick)
-    #伤血量
-    hurtHP = hurtType.HurtHP
-    #添加伤血列表
-    AttackCommon.NPCAddObjInHurtList(curPlayer, curTagTruck, curTagNPCHPBeforeAtk, hurtHP)
-    #给这个玩家的所有召唤兽增加仇恨
-    AttackCommon.SummonAddAngryByOwner(curTagTruck, curPlayer, hurtHP)
-    #添加技能伤害通知列表,(用于攻击结束,统一通知客户端)
-    AttackCommon.AddHurt(curTagTruck, skillHurtList, hurtType.HurtType, hurtHP)
-    return hurtType
-
-
-## 处理攻击后的结果
-#  @param curNormalNPC 攻击方:玩家
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return None
-def AttackResult(curPlayer, curTagTruck, skill, tick):
-    
-    #获取镖车主人
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    if curTagPlayer != None and GameObj.GetHP(curTagPlayer) > 0 :
-        #进入战斗状态
-        AttackCommon.SetPlayerBattleState(curTagPlayer, tick)
-
-        
-    #镖车死亡
-    if PlayerTruck.IsTruckDestroy(curTagTruck):
-        if not curTagTruck.GetCanAttack():
-            #已经执行过镖车被打坏奖励
-            return
-        PlayerTruck.DoTruckDestroy(curTagTruck)
-        
-    AttackCommon.OnPlayerKillTruck(curPlayer, curTagTruck, tick)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/SummonNPC_Attack_Truck.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/SummonNPC_Attack_Truck.py
deleted file mode 100644
index c126955..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/SummonNPC_Attack_Truck.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package SummonNPC_Attack_Truck
-# 召唤兽攻击镖车
-#
-# @author eggxp
-# @date 2010-4-20
-# @version 1.4
-#
-# @change: "2010-09-06 17:30" panwei GetBattleType函数修改, 新增参数:攻击方
-# @change: "2012-02-10 20:20" Alee 添加技能必发生状态
-# @change: "2012-05-31 18:00" jiang 修改攻击镖车逻辑
-# @change: "2013-01-03 17:00" wdb 去除npc攻击造成的伤血记录
-#------------------------------------------------------------------------------ 
-#"""Version = 2013-01-03 17:00"""
-#---------------------------------------------------------------------
-import NPCCommon
-import AttackCommon
-import ChConfig
-import IPY_GameWorld
-import SkillShell
-import ShareDefine
-import PlayerTruck
-import GameFuncComm
-import GameObj
-#---------------------------------------------------------------------
-#镖车安全区判定。主人在安全区且镖车和主人的距离小于3格
-TruckSafeDist = 3
-#---------------------------------------------------------------------
-
-## 是否可以攻击 
-#  @param curNormalNPC 攻击方:召唤兽
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return True or False
-#  @remarks 函数详细说明.
-def GetCanAttack(curSummonNPC, curTagTruck, skill, tick):
-    
-    curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curSummonNPC)
-    if not curPlayer:
-        #找不到主人
-        return False
-    
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Truck):
-        #功能未开启,不能攻击镖车
-        return False
-    
-    if not curTagTruck.GetCanAttack():
-        #你今日已经没有劫镖次数,不能对镖车进行攻击
-        return False
-    
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    if curTagPlayer == None :
-        return False
-    
-    if not curTagTruck.GetCanAttack() or PlayerTruck.IsTruckDestroy(curTagTruck):
-        #镖车货物已被劫光
-        return False
-    
-    if not AttackCommon.CheckNPCCanAttackTag(curSummonNPC, curTagTruck, skill):
-        return False
-       
-    return True
-
-
-## 获得关系
-#  @param curNormalNPC 攻击方:召唤兽
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return 如:ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
-#  @remarks 函数详细说明.
-def GetTagRelation(curSummonNPC, curTagTruck, skill, tick):
-    curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curSummonNPC)
-    if curPlayer == None:
-        #怪物的召唤兽直接攻击
-        return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
-    
-    return AttackCommon.GetPlayerAndTruckRelation(curPlayer, curTagTruck)
-
-
-## 攻击
-#  @param curNormalNPC 攻击方:召唤兽
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param skillValue 技能增强
-#  @param skillPercent 技能增强百分比
-#  @param skillHurtList 技能伤血列表(C++接口)
-#  @param tick 当前时间
-#  @return hurtType : HurtType 伤害结构体类 
-#  @remarks 函数详细说明.
-def DoAttack(curSummonNPC, curTagTruck, skill, skillValue, skillPercent, skillHurtList, tick):
-    curTagTruckHP = GameObj.GetHP(curTagTruck)
-    #攻击成功
-    hurtType = AttackCommon.GetHurtHP(curSummonNPC, curTagTruck, skill, 
-                                      skillValue, skillPercent, tick)
-    #伤血量
-    hurtHP = hurtType.HurtHP
-    #获得召唤兽主人
-    curSummonNPCOwner = NPCCommon.GetSummonOwnerDetel(curSummonNPC)
-    
-    #添加伤血列表
-    # 2013-1-3,不添加npc攻击造成的伤血记录    
-    if curSummonNPCOwner != None and curSummonNPCOwner.GetGameObjType() == IPY_GameWorld.gotPlayer:
-        AttackCommon.NPCAddObjInHurtList(curSummonNPCOwner, curTagTruck, curTagTruckHP, hurtHP)
-                
-    #添加技能伤害通知列表,(用于攻击结束,统一通知客户端)
-    AttackCommon.AddHurt(curTagTruck, skillHurtList, hurtType.HurtType, hurtHP)
-    return hurtType
-
-
-## 处理攻击后的结果
-#  @param curNormalNPC 攻击方:召唤兽
-#  @param curTagPlayer 防守方:镖车
-#  @param skill 技能(无->None)
-#  @param tick 当前时间
-#  @return True
-#  @remarks 函数详细说明.
-def AttackResult(curSummonNPC, curTagTruck, skill, tick):
-    #获取镖车主人
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTagTruck)
-    
-    #获取召唤兽的主人
-    curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curSummonNPC)
-    
-    if curTagPlayer != None and GameObj.GetHP(curTagPlayer) > 0 :
-        #进入战斗状态
-        AttackCommon.SetPlayerBattleState(curTagPlayer, tick)
-        
-            
-    #镖车损坏
-    if PlayerTruck.IsTruckDestroy(curTagTruck):
-        PlayerTruck.DoTruckDestroy(curTagTruck)
-        
-    if curPlayer != None:
-        AttackCommon.OnPlayerKillTruck(curPlayer, curTagTruck, tick)
-        
-    return True
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
index e71314d..00ff334 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -29,7 +29,6 @@
 import BuffSkill
 import FBLogic
 import SkillShell
-import EventShell
 import PetControl
 import random
 import OperControlManager
@@ -153,9 +152,6 @@
             else:
                 result = "NormalNPC"
                 
-        elif npcObjType == IPY_GameWorld.gnotTruck:   #骠车
-            result = "Truck"
-            
         elif npcObjType == IPY_GameWorld.gnotPet:     #宠物
             result = "Pet"
     
@@ -1537,8 +1533,6 @@
             if not IsSkipSkillCD(curPlayer, target, curSkill, tick):
                 #设置玩家所学技能冷却CD
                 SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
-            #调用任务触发器
-            #EventShell.EventRespons_UseSkillOK(curPlayer, skillTypeID)
             #执行连环被动技能处理
             #__DealWithPassivitySkill( curPlayer, target, curPlayerSkill, tick )
             #执行被动buff
@@ -1994,10 +1988,6 @@
     if GameObj.GetHP(curNPC) <= 0:
         return
     
-    #排除镖车
-    if curNPC.GetGameNPCObjType() == IPY_GameWorld.gnotTruck:
-        return
-    
     #排除鹿
     if curNPC.GetType() == IPY_GameWorld.ntDeer:
         return
@@ -2058,10 +2048,6 @@
         #攻击对象
         curTag = GameWorld.GetObj(objID, curObjType)
         if not curTag:
-            continue
-    
-        #链式攻击不能对镖车释放
-        if curObjType == IPY_GameWorld.gotNPC and curTag.GetGameNPCObjType() == IPY_GameWorld.gnotTruck:
             continue
        
         #具体判定对象是否可攻击
@@ -2242,10 +2228,6 @@
             #攻击对象
             curTag = GameWorld.GetObj(curObj.GetID(), curObjType)
             if not curTag:
-                continue
- 
-            #链式攻击不能对镖车释放
-            if curObjType == IPY_GameWorld.gotNPC and curTag.GetGameNPCObjType() == IPY_GameWorld.gnotTruck:
                 continue
             
             if __IsAlreadyAttack(curTag, resultList):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
index 179e455..deef9bb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/MirrorAttack.py
@@ -326,7 +326,6 @@
     #ChPlayer.PlayerLogin
     #PlayerEventCounter.GameServer_InitOK(index, tick)
     #ChPlayer.LoadMapOK(index, tick)
-    #GameServerRefresh.GameSever_PlayerInitOK(index, tick)
     mirrorPlayer.SendToBServerServerInitOK()
     mirrorPlayer.SetMapLoadOK(True)
     #将玩家放置在这个地图上
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 18818c9..3301fa1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -568,8 +568,6 @@
 #Def_Effect_PetSoul = 5504         #宠物满魂
 #Def_Effect_PetItemAddExp = 2006   #给宠物经验道具 
 #Def_Effect_EnergyItem = 2600             #精力药剂
-#Def_Effect_BuyBackpack = 1144            #开启背包(n行)的物品效果ID
-#Def_Effect_BuyWarehouse = 1145           #开启仓库(n行)的物品效果ID
 #Def_Effect_PetRewashSkill = 5506         #重洗技能
 #Def_Effect_AddStarItemNormal = 1157      #普通升星物品效果ID
 #Def_Effect_AddStarItemHighLevel = 1158   #高级升星物品效果ID
@@ -642,8 +640,6 @@
 Def_Effect_Add_FreePoint_2 = 1169
 #添加玩家属性分配点
 Def_Effect_Add_FreePoint_3 = 1185
-#任务传送令
-Def_Item_Effect_MissionMove = 2001
 #鱼竿
 Def_Item_Effect_FishTool = 2000
 #坐骑进阶
@@ -660,7 +656,6 @@
 #写死的任务ID
 #新手任务
 Def_MissionID_FirstLogin = 1
-Def_ConvoyTruckMissionID = 2401  # 护送镖车任务ID
 Def_ArrestMissionID = 8000  # 悬赏任务ID
 #---------------------------------------------------------------------
 #写死的XMLID
@@ -809,7 +804,6 @@
 Def_SkillID_JoinExam = -1    # 答题Buff
 Def_SkillID_ActionWuDi = -1    # 活动无敌Buff
 Def_SkillID_ZhenQiRestore = -1    # 真气恢复加成BUFF
-Def_SkillID_TruckAiMode = 20100    # 镖车AI模式BUFF
 Def_SkillTypeID_EfficientBattle = -1 #高效战斗类型ID,高效战斗buffID:49001~49008
 Def_SkillTypeID_EfficientSit = -1    #高效练功类型ID
 Def_SkillID_XuanTianZhenYan = -1    # 玄天真言
@@ -920,8 +914,6 @@
 #流向记录变更最小金币值(小于该值的暂不记录, 仅限金币)
 Def_DRRecord_Min_Silver = 500000
 Def_LargeTrade_Silver = 1000 * 1000
-#主角交易栏最大格数
-Def_PlayerTradeMaxItemCount = 20
 #登陆初始储物柜格子数
 Def_PackCnt_Fashion = 1
 #登陆初始武器时装格子数
@@ -1567,14 +1559,6 @@
       ShareDefine.Def_Transport_Mission : Def_Transport_Type_Mission,      # 任务传送
     }
 
-Def_MoveToTruck_Cost = 1000                 #传送至镖车的花费
-#---------------------购买仓库空间费用------------------------
-Def_BuyWarehouse_Type = 1  # 购买仓库费用类型(金子)
-Def_BuyWarehouse_Cost = 99  # 购买仓库每等级的费用
-#---------------------购买背包空间费用------------------------
-Def_BuyItemPack_Type = 1    # 购买背包费用类型(金子)
-Def_BuyItemPack_Cost = 149  # 购买背包每等级的费用
-#---------------------------------------------------------------------
 #---------------------进度条------------------------
 #挖宝进度条时间为5秒
 Def_DigMaxTime = 5000
@@ -1744,34 +1728,6 @@
 
 #0:发呆状态, 1:移动, 2:死亡, 3:攻击
 Def_NstNull, Def_NstMoving, Def_NstDead, Def_NstAttack = range(4)
-
-#任务系统杀怪掉落任务道具公式
-Def_Event_Drop_Formula = "max(rate,(maxItem-curItemCount)/(maxMonsterCount+1-curMonsterCount),(baseDropCount-curItemCount)/max(1,(dropMonsterCount+1-curMonsterCount)))"
-#每日任务的奖励公式
-Def_Day_Event_Exp_Reward_Formula = "baseExp"
-#墓地医生扣费公式
-Def_Helth_Money_Formula = "(2 - curHP/float(maxHP) - curMP/float(maxMP))*3*pow(lv, 1.2)"
-#任务镖车系统
-#骠车受到攻击的时候, 通知玩家的间隔
-Def_TruckNotifyToOwnerTick = 5000
-#镖车毁坏金钱奖励百分数
-Def_Day_Event_Truck_Destroy_Money = 0.2
-#镖车毁坏经验奖励百分数
-Def_Day_Event_Truck_Destroy_Exp = 0.8
-#镖车损坏,返回百分比押金
-Def_Day_Event_Truck_Destroy_Deposit = 0.2
-#镖车和人物的距离,移动
-Def_PlayerTurckBeginMoveDist = 1
-#判定镖车在事件范围内的距离
-Def_PlayerTruckEventDist = 10
-#镖车跟随
-Def_PlayerTruckMoveDist = Def_Screen_Area
-#人镖合一的距离
-Def_PlayerTruckCarryerDist = Def_Screen_Area
-
-#---------------------------家族定义----------------------------
-
-Def_Player_RequestAddFamilyMaxCnt = 200  #玩家申请加入家族的最大数量 (目前无限制 配个大的数值)
 
 #-------------------------------#副本相关#------------------------
 #创角新手村地图ID列表
@@ -2248,9 +2204,6 @@
                          180000,                            #获得地图经验3分钟一次
                          10000 ,                            #家族战排期查询时间间隔 1分一次
                          
-                         2000  ,                            #镖车查询和传送同CD10秒一次
-                         2000  ,                            #传送至镖车CD10秒一次
-                         2000  ,                            #设置镖车模式2秒一次
                          500   ,                            #查看商城信息0.5秒一次
                          30000 ,                            #自动查询玩家点券数目CD30秒
                          5000  ,                            #副本帮助界面 5秒
@@ -2331,9 +2284,6 @@
 TYPE_Player_Tick_GiveMapExp,          #获得活动地图经验
 TYPE_Player_Tick_QueryFamilyWar,      #家族战排期查询
 
-TYPE_Player_Tick_QueryTruckPos,       #镖车查询CD时间
-TYPE_Player_Tick_MoveToTruckPos,      #传送至镖车时间
-TYPE_Player_Tick_SetTruckMode,        #设置镖车模式
 TYPE_Player_Tick_WatchStoreInfo,      #查看商城的时间间隔
 TYPE_Player_Tick_QueryCoinCount,      #查询玩家点券数目
 TYPE_Player_Tick_FBHelp,              #副本帮助界面
@@ -2439,8 +2389,6 @@
 
 TYPE_Map_Tick_Count = len( TYPE_Map_Tick_Time ) 
 #---------------------------------------------------------------------
-#玩家Buff字典
-Def_Player_ProBuff_TruckSpeedUp = 'TruckSpeedUp'  #镖车速度加速
 
 #对象(玩家,NPC)的行为字典
 Def_Obj_ActState_ClientAct = "Oper_ClientActState"            # 客户端动作限制
@@ -2448,8 +2396,6 @@
 Def_Obj_ActState_ClientSkill = "Oper_ClientSkillActState"     # 客户端技能限制
 Def_Obj_ActState_ServerSkill = "Oper_ServerSkillActState"     # 服务端技能限制
 
-#玩家使用回城,包裹索引字典
-Def_Use_Item_303_Index = "use_item_303_index"   
 #---------------------------------------------------------------------
 #玩家视野(09/05/06 修改为静态)
 Def_PlayerSight_Default = 18     #玩家视野默认 
@@ -2477,21 +2423,6 @@
 
 TYPE_NPC_Tick_Count = len(TYPE_NPC_Tick_Time)
 
-#---------------------------------------------------------------------
-#特殊任务状态定义: 
-#0 : 未接
-#-1: 已完成
-#-2: 骠车丢失
-#-3: 骠车被打烂
-#-4: 任务未达到可接状态
-#-5: 任务可提交
-#任务状态定义
-Def_Mission_State_NoAccept = 0  #未接
-Def_Mission_State_Over = -1
-Def_Mission_State_LoseTruck = -2
-Def_Mission_State_BreakTruck = -3
-Def_Mission_State_UnMission = -4
-Def_Mission_State_CanComplete = -5
 #------------------------------------------------------------
 #物品栏定义
 #数据中的装备位置和程序中的装备位置对照表
@@ -2601,22 +2532,6 @@
                     'GY_GM_Offline_UnBind'   : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-解封玩家
                 'GY_GM_Offline_ViewUnBind'   : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查询玩家
                     }
-
-#脱机GM工具索引表
-GMTool_Offline_IndexCount = 11
-(
-GMTool_Offline_None    ,           #无意义
-GMTool_Offline_Compose ,           #合成
-GMTool_Offline_StarLV  ,           #升星
-GMTool_Offline_AutoBuyStarLV ,     #自动购买精致升星石
-GMTool_Offline_HealthReborn  ,     #原地健康复活    (目前有用)
-GMTool_Offline_IdentifyAgain ,     #鉴定再来一次
-GMTool_Offline_Mission       ,     #任务消耗    (目前有用)
-GMTool_Offline_FarRepair    ,      #远程修理    (目前有用)
-GMTool_Offline_ForgeFaBao   ,      #法宝提炼
-GMTool_Offline_WorldTransfer,      #世界传送    (目前有用,包括任务、小地图)
-GMTool_Offline_AutoBuyGoldSpeaker, #自动购买金喇叭    (目前有用)
-) = range( 0 , GMTool_Offline_IndexCount )
 
 #---------------------------------------------------------------------
 #请求类型(需要和GameServer中的一致)
@@ -3018,36 +2933,6 @@
 
 Def_KillValue_Notoriety = 1    # 杀人恶名值增1
 Def_BeKilledValue_Notoriety = 2    # 被杀恶名值减2
-
-#---获取威望类型记录---
-(
-    Def_AddPrestige_DayMission,    #每日任务
-    Def_AddPrestige_Mission,       #任务接口
-    Def_AddPrestige_FamilyBattle,  #家族争霸战
-    Def_AddPrestige_Family,        #家族战
-    Def_AddPrestige_Kill,          #中立杀人
-    Def_AddPrestige_GM,            #GM
-    Def_AddPrestige_Sacrifice,     #帮会上香
-    Def_AddPrestige_Cards,         #卡牌
-    Def_AddPrestige_JXD,           #将星殿排行
-    Def_AddPrestige_Item,          #物品
-    Def_AddPrestige_Arrest,        #家族悬赏
-    Def_AddPrestige_Truck,         #镖车
-    Def_AddPrestige_GloryWar,      #荣耀之战
-    Def_AddPrestige_JLD,           #九龙殿
-    Def_AddPrestige_Familys,       #战盟战
-    Def_AddPrestige_MYDHZ,         #命运夺魂战/地精夺宝
-    Def_AddPrestige_GiveFlower,    #赠送鲜花
-    Def_AddPrestige_NPC,           #NPC给予
-) = range(1, 18+1)
-
-#---减少威望类型记录---
-(
-    Def_SubPrestige_BeKilled,    #被杀
-    Def_SubPrestige_DayUse,      #每日消耗
-    Def_SubPrestige_GM,          #GM
-    
-) = range(1, 3+1)
 
 #---双倍经验记录---
 (
@@ -3609,17 +3494,11 @@
 Def_Player_Dict_GiveActivityAward = "GiveActivityAward_118"  #每日活跃值奖励领取
 Def_Player_CrazyBilling_VIP_Coin = "CrazyBillingVIPCoin_119"   # 扶持账号真实充值
 Def_Player_Dict_LoginType = "LoginType_122"  # 玩家登入方式
-Def_Player_Dict_TruckRefreshTotalCnt = "TruckRTCnt"  # 玩家总刷新镖车等级次数
-Def_Player_Dict_FreeRefurbishTruckCnt = "FreeRefurbishTruckCnt"  # 当日已免费刷新镖车等级次数
-Def_Player_Dict_TruckLV = "TruckLV_137"  # 可召唤镖车等级
-Def_Player_Dict_DestroyTruckCnt = "DestroyTruckCnt_138"  # 劫镖次数
-Def_Player_Dict_AutoTruck = "AutoTruck_139"  # 是否自动运镖中
 Def_Player_Dict_CommonNewGuyCardState = "CommonNGCard_%s"  # 通用新手卡使用记录, 参数为key编号, 二进制位存储
 Def_Player_Dict_IDNewGuyCardState = "IDNGCard_%s"  # 绑定账号新手卡使用记录, 参数为key编号, 二进制位存储
 Def_Player_Dict_UseNewGuyCardState = "NGCardState_%s"  # 是否使用过某类型的新手卡,参数为key编号, 二进制位存储
 Def_Player_Dict_UseMediaCardState = "MediaCardState_%s"  # 按位存储是否使用过某类型的媒体卡,参数为key编号, 二进制位存储
 Def_Player_Dict_UseNewGuyCardNum = "NGCardNum_%s"  # 使用过某类型的新手卡的次数, 卡类型, 十进制位存储
-Def_Player_Dict_PawnTruckLV = "PawnTruckLV_144"  # 当前押镖的镖车等级
 Def_Player_Dict_KillPlayerAddPrestige = "KillPlayerAddPrestige_147"  # 杀人每日获得威望
 Def_Player_Dict_RandCoinAward = "RandCoinAward_148"  # 每日任意充值奖励给予
 Def_Player_Dict_DeadTime = "PlayerDeadTime_149"  #玩家死亡时间
@@ -5385,8 +5264,6 @@
 #-----------以下为暂时没用的,先不删除,如有新增消费点则放在这些之前------------
 Def_Cost_RefreshArrestTask, # 刷新悬赏任务
 Def_Cost_OffLineExp, # 兑换离线经验
-Def_Cost_RefreshTruck, # 刷新镖车
-Def_Cost_FinishTruck, # 完成镖车
 Def_Cost_RefreshTimeShop, # 刷新神秘商店
 Def_Cost_OpenNoble, # 开通贵族
 Def_Cost_Warehouse, # 仓库
@@ -5394,7 +5271,7 @@
 Def_Cost_Trade, # 交易
 Def_Cost_Rename, # 改名
 Def_Cost_SkillLvUp, # 技能升级
-) = range(2000, 2000 + 69)
+) = range(2000, 2000 + 67)
 
 Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
 
@@ -5429,8 +5306,6 @@
 Def_Cost_UseSpeaker:"UseSpeaker",
 Def_Cost_Revive:"Revive",
 Def_Cost_FBEncourage:"FBEncourage",
-Def_Cost_RefreshTruck:"RefreshTruck",
-Def_Cost_FinishTruck:"FinishTruck",
 Def_Cost_RefreshArrestTask:"RefreshArrestTask",
 Def_Cost_RefreshTimeShop:"RefreshTimeShop",
 Def_Cost_ResetGreatMasterSkill:"ResetTalentSkill",
@@ -5513,7 +5388,7 @@
 Def_GiveMoney_BossFirstKill, # Boss首杀
 Def_GiveMoney_21,
 Def_GiveMoney_Trade, # 交易
-Def_GiveMoney_Truck, # 运镖
+Def_GiveMoney_23,
 Def_GiveMoney_FreeGoods, # 极品白拿 
 Def_GiveMoney_BindJadeWheel, # 绑玉转盘 25
 Def_GiveMoney_GatherSoulDecompose, #聚魂分解 26
@@ -5550,7 +5425,6 @@
 Def_GiveMoney_CollectNPC:"CollectNPC",
 Def_GiveMoney_BossFirstKill:"BossFirstKill",
 Def_GiveMoney_Trade:"Trade",
-Def_GiveMoney_Truck:"Truck",
 Def_GiveMoney_FreeGoods:"FreeGoods",
 Def_GiveMoney_BindJadeWheel:"BindJadeWheel",
 Def_GiveMoney_GatherSoulDecompose:"GatherSoulDecompose",
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index a8b7ed3..b3da437 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -2175,54 +2175,6 @@
 
 
 #------------------------------------------------------
-# AE 07 运镖时间倒计时结束 #tagCGTruckTimeEnd
-
-class  tagCGTruckTimeEnd(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x07
-        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 = 0xAE
-        self.SubCmd = 0x07
-        return
-
-    def GetLength(self):
-        return sizeof(tagCGTruckTimeEnd)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 07 运镖时间倒计时结束 //tagCGTruckTimeEnd:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCGTruckTimeEnd=tagCGTruckTimeEnd()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGTruckTimeEnd.Cmd,m_NAtagCGTruckTimeEnd.SubCmd))] = m_NAtagCGTruckTimeEnd
-
-
-#------------------------------------------------------
 # B0 13 取消协助Boss #tagCGCancelAssistBoss
 
 class  tagCGCancelAssistBoss(Structure):
@@ -18390,318 +18342,6 @@
 
 m_NAtagCMDiceEx=tagCMDiceEx()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDiceEx.Cmd,m_NAtagCMDiceEx.SubCmd))] = m_NAtagCMDiceEx
-
-
-#------------------------------------------------------
-# AE 05 自动运镖 #tagPyAutoTruck
-
-class  tagPyAutoTruck(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Type", c_ubyte),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x05
-        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 = 0xAE
-        self.SubCmd = 0x05
-        self.Type = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyAutoTruck)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 05 自动运镖 //tagPyAutoTruck:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Type:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Type
-                                )
-        return DumpString
-
-
-m_NAtagPyAutoTruck=tagPyAutoTruck()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyAutoTruck.Cmd,m_NAtagPyAutoTruck.SubCmd))] = m_NAtagPyAutoTruck
-
-
-#------------------------------------------------------
-# AE 02 购买镖车等级#tagPyBuyTruckLV
-
-class  tagPyBuyTruckLV(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TruckLV", c_ubyte),    #镖车等级
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x02
-        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 = 0xAE
-        self.SubCmd = 0x02
-        self.TruckLV = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyBuyTruckLV)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 02 购买镖车等级//tagPyBuyTruckLV:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TruckLV:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TruckLV
-                                )
-        return DumpString
-
-
-m_NAtagPyBuyTruckLV=tagPyBuyTruckLV()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyBuyTruckLV.Cmd,m_NAtagPyBuyTruckLV.SubCmd))] = m_NAtagPyBuyTruckLV
-
-
-#------------------------------------------------------
-# AE 06 立即完成运镖 #tagPyOverTruck
-
-class  tagPyOverTruck(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x06
-        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 = 0xAE
-        self.SubCmd = 0x06
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyOverTruck)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 06 立即完成运镖 //tagPyOverTruck:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagPyOverTruck=tagPyOverTruck()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyOverTruck.Cmd,m_NAtagPyOverTruck.SubCmd))] = m_NAtagPyOverTruck
-
-
-#------------------------------------------------------
-# AE 04 查询劫镖次数#tagPyQueryDestroyTruckCnt
-
-class  tagPyQueryDestroyTruckCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x04
-        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 = 0xAE
-        self.SubCmd = 0x04
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyQueryDestroyTruckCnt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 04 查询劫镖次数//tagPyQueryDestroyTruckCnt:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagPyQueryDestroyTruckCnt=tagPyQueryDestroyTruckCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyQueryDestroyTruckCnt.Cmd,m_NAtagPyQueryDestroyTruckCnt.SubCmd))] = m_NAtagPyQueryDestroyTruckCnt
-
-
-#------------------------------------------------------
-# AE 03 查询镖车等级#tagPyQueryTruckLV
-
-class  tagPyQueryTruckLV(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x03
-        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 = 0xAE
-        self.SubCmd = 0x03
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyQueryTruckLV)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 03 查询镖车等级//tagPyQueryTruckLV:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagPyQueryTruckLV=tagPyQueryTruckLV()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyQueryTruckLV.Cmd,m_NAtagPyQueryTruckLV.SubCmd))] = m_NAtagPyQueryTruckLV
-
-
-#------------------------------------------------------
-# AE 01 刷新镖车等级#tagPyRefurbishTruckLV
-
-class  tagPyRefurbishTruckLV(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("CostType", c_ubyte),    #消耗类型: 0-道具; 1-货币
-                  ("MoneyType", c_ubyte),    #花费金钱类型
-                  ("ItemID", c_int),    #使用的道具ID
-                  ("IsAutoBuy", c_ubyte),    #道具刷新时是否自动购买; 0-否;1-是
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x01
-        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 = 0xAE
-        self.SubCmd = 0x01
-        self.CostType = 0
-        self.MoneyType = 0
-        self.ItemID = 0
-        self.IsAutoBuy = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyRefurbishTruckLV)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 01 刷新镖车等级//tagPyRefurbishTruckLV:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                CostType:%d,
-                                MoneyType:%d,
-                                ItemID:%d,
-                                IsAutoBuy:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.CostType,
-                                self.MoneyType,
-                                self.ItemID,
-                                self.IsAutoBuy
-                                )
-        return DumpString
-
-
-m_NAtagPyRefurbishTruckLV=tagPyRefurbishTruckLV()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyRefurbishTruckLV.Cmd,m_NAtagPyRefurbishTruckLV.SubCmd))] = m_NAtagPyRefurbishTruckLV
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index a2bc72e..dfe7086 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -7943,58 +7943,6 @@
 
 
 #------------------------------------------------------
-# AE 05 镖车开始时间 #tagGCTruckStartTime
-
-class  tagGCTruckStartTime(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("StartTime", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x05
-        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 = 0xAE
-        self.SubCmd = 0x05
-        self.StartTime = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagGCTruckStartTime)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 05 镖车开始时间 //tagGCTruckStartTime:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                StartTime:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.StartTime
-                                )
-        return DumpString
-
-
-m_NAtagGCTruckStartTime=tagGCTruckStartTime()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTruckStartTime.Cmd,m_NAtagGCTruckStartTime.SubCmd))] = m_NAtagGCTruckStartTime
-
-
-#------------------------------------------------------
 # B0 01 新增协助 #tagGCAssistInfoList
 
 class  tagGCAssistInfo(Structure):
@@ -54273,310 +54221,6 @@
 
 m_NAtagMCDiceExResult=tagMCDiceExResult()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceExResult.Cmd,m_NAtagMCDiceExResult.SubCmd))] = m_NAtagMCDiceExResult
-
-
-#------------------------------------------------------
-# AE 04 自动运镖状态#tagPyAutoTruckState
-
-class  tagPyAutoTruckState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("State", c_ubyte),    
-                  ("Result", c_ubyte),    #成功/失败
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x04
-        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 = 0xAE
-        self.SubCmd = 0x04
-        self.State = 0
-        self.Result = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyAutoTruckState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 04 自动运镖状态//tagPyAutoTruckState:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                State:%d,
-                                Result:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.State,
-                                self.Result
-                                )
-        return DumpString
-
-
-m_NAtagPyAutoTruckState=tagPyAutoTruckState()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyAutoTruckState.Cmd,m_NAtagPyAutoTruckState.SubCmd))] = m_NAtagPyAutoTruckState
-
-
-#------------------------------------------------------
-# AE 01 可召唤镖车等级#tagPyCanSummonTruckLV
-
-class  tagPyCanSummonTruckLV(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TruckLV", c_ubyte),    #镖车等级
-                  ("FreeCnt", c_ubyte),    #当日已免费刷新次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x01
-        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 = 0xAE
-        self.SubCmd = 0x01
-        self.TruckLV = 0
-        self.FreeCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyCanSummonTruckLV)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 01 可召唤镖车等级//tagPyCanSummonTruckLV:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TruckLV:%d,
-                                FreeCnt:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TruckLV,
-                                self.FreeCnt
-                                )
-        return DumpString
-
-
-m_NAtagPyCanSummonTruckLV=tagPyCanSummonTruckLV()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyCanSummonTruckLV.Cmd,m_NAtagPyCanSummonTruckLV.SubCmd))] = m_NAtagPyCanSummonTruckLV
-
-
-#------------------------------------------------------
-# AE 02 劫镖次数#tagPyDestroyTruckCnt
-
-class  tagPyDestroyTruckCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Count", c_ubyte),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x02
-        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 = 0xAE
-        self.SubCmd = 0x02
-        self.Count = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyDestroyTruckCnt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 02 劫镖次数//tagPyDestroyTruckCnt:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Count:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Count
-                                )
-        return DumpString
-
-
-m_NAtagPyDestroyTruckCnt=tagPyDestroyTruckCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyDestroyTruckCnt.Cmd,m_NAtagPyDestroyTruckCnt.SubCmd))] = m_NAtagPyDestroyTruckCnt
-
-
-#------------------------------------------------------
-# AE 06 运镖奖励 #tagMCTruckAward
-
-class  tagMCTruckAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("AwardType", c_ubyte),    # 奖励类型,0-运镖;1-劫镖
-                  ("Exp", c_int),    
-                  ("ExpPoint", c_int),    
-                  ("ZhenQi", c_int),    
-                  ("Prestige", c_int),    
-                  ("MoneyType", c_ubyte),    
-                  ("MoneyCnt", c_int),    
-                  ("IsDestroy", c_ubyte),    # 是否被劫
-                  ("IsDouble", c_ubyte),    # 是否双倍
-                  ("IsTimeOut", c_ubyte),    # 是否超时
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x06
-        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 = 0xAE
-        self.SubCmd = 0x06
-        self.AwardType = 0
-        self.Exp = 0
-        self.ExpPoint = 0
-        self.ZhenQi = 0
-        self.Prestige = 0
-        self.MoneyType = 0
-        self.MoneyCnt = 0
-        self.IsDestroy = 0
-        self.IsDouble = 0
-        self.IsTimeOut = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCTruckAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 06 运镖奖励 //tagMCTruckAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                AwardType:%d,
-                                Exp:%d,
-                                ExpPoint:%d,
-                                ZhenQi:%d,
-                                Prestige:%d,
-                                MoneyType:%d,
-                                MoneyCnt:%d,
-                                IsDestroy:%d,
-                                IsDouble:%d,
-                                IsTimeOut:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.AwardType,
-                                self.Exp,
-                                self.ExpPoint,
-                                self.ZhenQi,
-                                self.Prestige,
-                                self.MoneyType,
-                                self.MoneyCnt,
-                                self.IsDestroy,
-                                self.IsDouble,
-                                self.IsTimeOut
-                                )
-        return DumpString
-
-
-m_NAtagMCTruckAward=tagMCTruckAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTruckAward.Cmd,m_NAtagMCTruckAward.SubCmd))] = m_NAtagMCTruckAward
-
-
-#------------------------------------------------------
-# AE 03 镖车状态模式#tagPyTruckMode
-
-class  tagPyTruckMode(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("TruckMode", c_ubyte),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAE
-        self.SubCmd = 0x03
-        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 = 0xAE
-        self.SubCmd = 0x03
-        self.TruckMode = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagPyTruckMode)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AE 03 镖车状态模式//tagPyTruckMode:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                TruckMode:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.TruckMode
-                                )
-        return DumpString
-
-
-m_NAtagPyTruckMode=tagPyTruckMode()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPyTruckMode.Cmd,m_NAtagPyTruckMode.SubCmd))] = m_NAtagPyTruckMode
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index 7e10ff8..3ff1e5c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -292,22 +292,6 @@
     SendEventPack("AddNewMission", dataDict, curPlayer)
     return
 
-
-##  完成任务 
-#  @param curPlayer: 玩家实例
-#  @param missionID: 任务ID
-#  @return: None
-def DR_DeleteMission(curPlayer, missionID):
-    return
-
-    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 
-                'AccID':curPlayer.GetAccID(), 'MissionID':missionID}
-    
-    #发送封包
-    SendEventPack("DeleteMission", dataDict, curPlayer)
-    return
-
-
 ## 仓库存入金钱
 #  @param curPlayer: 玩家实例
 #  @param moneyType: 金钱类型
@@ -322,24 +306,6 @@
 
     #发送封包
     SendEventPack("SetMoneyInWarehouse", dataDict, curPlayer)
-    return
-
-
-## 仓库取出金钱
-#  @param curPlayer: 玩家实例
-#  @param moneyType: 金钱类型
-#  @param moneyCount: 金钱数量
-#  @return: None
-def DR_GetMoneyInWarehouse(curPlayer, moneyType, moneyCount):
-
-    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 
-                'AccID':curPlayer.GetAccID(), 
-                'MoneyType':moneyType, 'MoneyCount':moneyCount, 
-                'WarehouseMoneyCount':PlayerControl.GetWarehouseMoney(curPlayer, moneyType), 
-                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType)}
-
-    #发送封包
-    SendEventPack("GetMoneyInWarehouse", dataDict, curPlayer)
     return
 
 
@@ -745,21 +711,6 @@
     SendEventPack("ChangePackItem", dataDict, curPlayer)
     return
 
-
-## 设置仓库密码
-#  @param curPlayer: 玩家实例
-#  @param OldPsw: 旧密码
-#  @param NewPsw: 新密码
-#  @return: 
-def DR_SetWarehousePsw(curPlayer, oldPsw, newPsw):
-    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), 
-                "AccID":curPlayer.GetAccID(),
-                "OldPsw":oldPsw, "NewPsw":newPsw}
-    
-    SendEventPack("SetWarehousePsw", dataDict, curPlayer)
-    return
-
-
 ## 消耗金钱
 #  @param curPlayer: 玩家实例
 #  @param eventName: 功能事件名
@@ -931,24 +882,6 @@
     SendEventPack("LearnORUPSkill", dataDict, curPlayer)
     return
 
-## 碎片合成给予物品
-#  @param curPlayer: 玩家实例
-#  @param itemID: 物品ID
-#  @param itemCnt: 物品数量
-#  @param isBind: 是否绑定
-#  @return: 
-def DR_StuffMachining(curPlayer, itemID, itemCnt, isBind):
-    return
-    #MySql不识别 True False,改成1和0
-    isBind = 1 if isBind else 0
-    
-    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), 
-                "AccID":curPlayer.GetAccID(),
-                "ItemID":itemID, "ItemCount":itemCnt, "IsBind":isBind}
-    
-    SendEventPack("StuffMachining", dataDict, curPlayer)
-    return
-
 ## 背包格子数量购买
 #  @param curPlayer: 玩家实例
 #  @param packType: 背包类型
@@ -1040,21 +973,6 @@
                 "ItemID":itemID, "ItemGUID":itemGUID, "NPCID":petNpcID, "NPCName":petNpcName}
     
     SendEventPack("UsePetSoul", dataDict, curPlayer)
-    return
-
-
-## 镖车
-#  @param curPlayer: 玩家实例
-#  @param eventName: 事件名
-#  @param addDataDict: 附加属性
-#  @return: 
-def DR_Truck(curPlayer, eventName, addDataDict):
-    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), 
-                "AccID":curPlayer.GetAccID()}
-    
-    dataDict.update(addDataDict)
-    
-    SendEventPack("Truck_%s"%eventName, dataDict, curPlayer)
     return
 
 ## 设置玩家SB状态
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 8df02d0..ac64644 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -47,7 +47,6 @@
 # @change: "2014-06-23 14:30" Alee 关闭输出
 # @change: "2014-07-24 21:30" hxp 增加设置跑环任务星级,一键完成所有跑环任务
 # @change: "2014-07-31 21:30" hxp 取消红名不能与NPC对话限制
-# @change: "2014-08-26 11:00" hxp NotifyOneMission增加参数选择是否同步该任务全部字典信息
 # @change: "2014-12-25 16:10" ljd 同步上一次背包开格时间
 # @change: "2015-01-10 23:00" hxp 仓库购买特殊处理
 # @change: "2015-01-14 00:30" hxp 增加事件汇报
@@ -72,61 +71,24 @@
 import GameWorld
 import EventSrc
 import ChConfig
-import QuestManager
-import QuestRunner
 import PlayerControl
 import FunctionNPCCommon
 import FBLogic
 import ItemControler
 import ItemCommon
-import QuestCommon
-import copy
-import GameLogInfo
-import time
-import GameServerRefresh
-import PlayerMissionCollect
-import ReadChConfig
-import PlayerFamily
 import ShareDefine
-import Operate_PlayerBuyZhenQi
-import Func_6
 import DataRecordPack
-import PlayerCoin
-import PlayerTrade
-import PlayerExpandPackCfgMgr
-import EventReport
 import PlayerCoat
 import PlayerGatherSoul
-#import PlayerArrestTask
 import PlayerRune
 import IpyGameDataPY
-import FormulaControl
-import GameFuncComm
-import ChPyNetSendPack
-import NetPackCommon
 import NPCCommon
-import PlayerVip
-import PlayerGoldInvest
-import PlayerPrestigeSys
-import GameObj
 
 import math
 import random
-#---------------------------------------------------------------------
-
-#每日任务最小触发等级
-Day_Event_Trig_Min_LV = 21
-
-#任务触发模式
-Def_RunQuestType_Normal = 1     #普通
-#Def_RunQuestType_NoAnswer = 2   #不需要回应(LVUp)
-Def_RunQuestType_RunAll = 3     #运行所有(OnDay), 每日判定(不能只在onLVUP的时候判定, 因为玩家可能叛国, 叛国后, 如果只在onLVUP的时候写, 那么叛国后接不到每日任务)
-Def_RunQuest_ChangeMap_Tick = 1000
 
 Def_Warehouse_FuncName = "Func_6"  # 仓库相关功能py名
-############################################################
-#def QuestRunner_GetFunc(name):
-#    return    GameWorld.GetExecFunc(EventSrc, "QuestRunner.%s"%name)
+
 #---------------------------------------------------------------------
 #导入所有的NPCAI
 GameWorld.ImportAll("Script\\Event\\" , "EventSrc")
@@ -142,2199 +104,7 @@
     
     scriptPath = ChConfig.GetAppPath() + "Script\\Event"
     GameWorld.ReloadScript(scriptPath, "")
-    
-    #重新读取事件
-    QuestManager.ReloadQuests(tick)
-    DoReloadRefresh()
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 01 事件触发#tagCNPCTalk
-# tagCNPCTalk       *   GettagCNPCTalk();
-# 
-# class   IPY_CNPCTalk
-# {
-# public:
-# 
-#    int      GetNPCID();
-# 
-#    int      GetPosX();
-# 
-#    int      GetPosY();
-# };
-#===============================================================================
-##客户端//08 01封包响应 事件触发#tagCNPCTalk
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端//08 01封包响应 事件触发#tagCNPCTalk
-def BeginEvent(index, tick):
-    GameWorld.GetPsycoFunc(__Func_BeginEvent)(index, tick)
-    return
-
-##客户端//08 01封包响应 事件触发#tagCNPCTalk
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端//08 01封包响应 事件触发#tagCNPCTalk
-def __Func_BeginEvent(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
-    if curPlayer.GetPlayerAction() != IPY_GameWorld.paNull:
-        #玩家状态不是空闲状态
-        return
-    
-    #防沉迷
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Wallow_LV) > ChConfig.Def_GameWallow_LV_First:
-        PlayerControl.NotifyCode(curPlayer, "AvoidSink09")
-        return
-    
-#===============================================================================
-#    #移动中不执行此操作
-#    if curPlayer.IsMoving():
-#        PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0")
-#        return
-#===============================================================================
-    
-    if tick - curPlayer.GetResetWorldPosAskTick() < Def_RunQuest_ChangeMap_Tick:
-        #[bug]2009.4.25
-        #1. 玩家进入焚天溶洞(任务状态设置为2)
-        #2. 在等待切换地图回应之前, 普通聊天(任务状态设置为1)
-        #3. 进入地图了
-        #这样就可以刷焚天溶洞
-        GameWorld.GodLog(curPlayer, "BeginEvent, ResetWorldPosAskTick")
-        return
-     
-    #玩家触发事件 
-    sendPack = IPY_GameWorld.IPY_CNPCTalk()
-    
-    sendPack_EventNPCID = sendPack.GetNPCID()
-    sendPack_NPCPosX = sendPack.GetPosX()
-    sendPack_NPCPosY = sendPack.GetPosY()
-    
-    if sendPack_EventNPCID == 0:
-        #目前不处理地点触发类事件
-        return
-    
-    #2010/5/6 移动中接受客户端封包(因客户端移除Stopmove), 校验误差, 累加
-    #===========================================================================
-    # if not PlayerControl.PlayerRefreshPos(curPlayer, curPlayer, sendPack_NPCPosX, sendPack_NPCPosY):
-    #    #玩家当前位置刷新失败
-    #    #GameWorld.Log(' CheckUseSkill RefreshPosErr packPos = ( %s, %s ), playerPos = ( %s, %s )'%( posX, posY, curPlayer.GetPosX(), curPlayer.GetPosY() ), curPlayerID )
-    #    return
-    #===========================================================================
-    
-    #执行对话逻辑
-    EventLogic(curPlayer, sendPack_EventNPCID, tick)
-    return
-
-#// C1 06 跨服NPC对话 #tagCMCrossNPCTalk
-#
-#struct    tagCMCrossNPCTalk
-#{
-#    tagHead        Head;
-#    WORD        ObjID;
-#    DWORD        NPCID;
-#    WORD        PosX;
-#    WORD        PosY;
-#};
-def OnCrossNPCTalk(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    objID = clientData.ObjID
-    npcID = clientData.NPCID
-    #posX = clientData.PosX
-    #posY = clientData.PosY
-    if GameWorld.IsCrossServer():
-        return
-    
-    lastTick = curPlayer.GetDictByKey("CrossNPCTalkTick")
-    if tick - lastTick < 2000:
-        return
-    curPlayer.SetDict("CrossNPCTalkTick", tick)
-    
-    npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
-    if not npcData:
-        GameWorld.ErrLog("跨服NPCID不存在! npcID=%s" % npcID)
-        return
-        
-    # 目前暂支持跨服采集
-    if npcData.GetType() not in [IPY_GameWorld.ntCollection, IPY_GameWorld.ntMissionCollect]:
-        return
-    
-    collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID)
-    if collectNPCIpyData:
-        if not NPCCommon.CheckCanCollectByNPCID(curPlayer, npcID, collectNPCIpyData):
-            return
-        
-        msgDict = {"PlayerID":curPlayer.GetPlayerID(), "ObjID":objID, "NPCID":npcID}
-        GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_CollectNPC, msgDict)
-        
-    return
-
-def ClientServerMsg_CollectNPC(curPlayer, msgData, serverGroupID, tick):
-    ## 收到子服同步的采集NPC
-    objID = msgData["ObjID"]
-    npcID = msgData["NPCID"]
-    curNPC = GameWorld.FindNPCByID(objID)
-    if not curNPC:
-        return
-    if npcID !=  curNPC.GetNPCID():
-        GameWorld.ErrLog("采集跨服NPC错误!npcID=%s != curNPCID=%s" % (npcID, curNPC.GetNPCID()))
-        return
-    EventLogic(curPlayer, objID, tick)
-    return
-
-##客户端//08 01封包响应 自定义函数: 事件处理
-#@param curPlayer 当前玩家
-#@param eventNPCID 事件NPCID
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端//08 01封包响应 自定义函数: 事件处理
-def EventLogic(curPlayer, eventNPCID, tick):
-    #检查玩家和NPC的距离在不在对话范围内
-    curNPC = GameWorld.GetNPCManager().FindNPCByID(eventNPCID)
-    
-    #没有这个NPC
-    if curNPC == None :
-        return
-
-    #可进入事件类型NPC
-    eventNPCType = [IPY_GameWorld.ntFunctionNPC, IPY_GameWorld.ntCollection, IPY_GameWorld.ntMissionCollect]
-    
-    if curNPC.GetType() not in eventNPCType:
-        GameWorld.Log("不是对话NPC, 不能对话 %d"%(curNPC.GetType()) , curPlayer.GetPlayerID())
-        return 
-    
-    dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), curNPC.GetPosX(), curNPC.GetPosY())
-    
-    if dist > ChConfig.Def_EventDist:
-        #玩家距离过远, 不能触发
-        curPlayer.ResetPos(curPlayer.GetPosX(), curPlayer.GetPosY())
-        return
-    
-    if curNPC.GetType() == IPY_GameWorld.ntCollection:
-        #家族战的塔和棋, 对话会开始读进度条
-        __BeginCollect(curPlayer, curNPC, tick)
-        return
-    
-    #任务采集NPC
-    if curNPC.GetType() == IPY_GameWorld.ntMissionCollect:
-        PlayerMissionCollect.QueryMissionCollect(curPlayer, curNPC, tick)
-        return
-    
-    #清空玩家传送地图带走的NPC
-    #因为副本任务中, 如果副本人满不能进, 会传送一次多一只NPC...
-    curPlayer.ClearChangeMapTakeCreateNPC()
-    
-    #在XML表中找到这个NPC的脚本
-    EventRespons_OnVisit(curPlayer, curNPC)
-    return
-
-##客户端//08 01封包响应 自定义函数: 开始家族战中的塔和期拉进度条
-#@param curPlayer 当前玩家
-#@param curNPC 事件NPC实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端//08 01封包响应 自定义函数: 开始家族战中的塔和期拉进度条
-def __BeginCollect(curPlayer, curNPC, tick):
-    result = FBLogic.OnCanCollect(curPlayer, curNPC, tick)
-    if not result:
-        #不可采集
-        return
-    
-    curPlayer.SetActionObj(curNPC)
-    PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
-    
-    if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
-        return
-    
-    prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC)
-    
-    collTimeReduceRate = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_CollTimeReduceRate)
-    if collTimeReduceRate:
-        prepareTime = max(1000, int(prepareTime * (ShareDefine.Def_MaxRateValue - collTimeReduceRate) / float(ShareDefine.Def_MaxRateValue)))
-        
-    PlayerControl.Sync_PrepareBegin(curPlayer, prepareTime, IPY_GameWorld.pstCollecting, prepareID = curNPC.GetID())
-    
-    ##添加这个NPC的伤血列表,用于多个人一起抢棋,一人成功后,其他人打断
-    curNPC_HurtList = curNPC.GetPlayerHurtList()
-    import AttackCommon
-    AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1)
-    return
-#---------------------------------------------------------------------
-
-#===============================================================================
-# //08 02 事件回应#tagCNPCAnswer
-# tagCNPCAnswer       *   GettagCNPCAnswer();
-# 
-# class   IPY_CNPCAnswer
-# {
-# public:
-# 
-#    int      GetAnswerLen();
-#    //size = AnswerLen
-#    char *      GetAnswer();
-# };
-#===============================================================================
-##客户端//08 02封包响应 事件回应#tagCNPCAnswer
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端//08 02封包响应 事件回应#tagCNPCAnswer
-def EventAnswer(index, tick):
-    GameWorld.GetPsycoFunc(__Func_EventAnswer)(index, tick)
-    return
-
-##客户端//08 02封包响应 事件回应#tagCNPCAnswer
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端//08 02封包响应 事件回应#tagCNPCAnswer
-def __Func_EventAnswer(index, tick):
-    timeClock = time.clock()
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-#    if curPlayer.GetPlayerAction() != IPY_GameWorld.paEvent:
-#        #玩家不在事件中,返回
-#        GameWorld.Log("EventAnswer, 玩家不在事件中", curPlayer.GetID())
-#        return
-    
-    if tick - curPlayer.GetResetWorldPosAskTick() < Def_RunQuest_ChangeMap_Tick:
-        #[bug]2009.4.25
-        #1. 玩家进入焚天溶洞(任务状态设置为2)
-        #2. 在等待切换地图回应之前, 普通聊天(任务状态设置为1)
-        #3. 进入地图了
-        #这样就可以刷焚天溶洞
-        GameWorld.GodLog(curPlayer, "EventAnswer, ResetWorldPosAskTick")
-        return
-    
-    sendPack = IPY_GameWorld.IPY_CNPCAnswer()
-    answer = sendPack.GetAnswer()
-    if answer == "":
-        #玩家回答为空
-        GameWorld.Log("玩家回答为空" , curPlayer.GetPlayerID())
-        return
-    
-    answerBase = copy.deepcopy(answer)
-    answer = answer.lower()
-    if answer == "cancel":
-        #GameWorld.Log("玩家强制结束事件" , curPlayer.GetPlayerID())
-        DoExitEvent(curPlayer)
-        return
-    
-    funcHead = "fc_"
-    xmlFuncHead = "evt_"
-    
-    curNPC = QuestRunner.GetPlayerTalkNPC(curPlayer)
-    #红名玩家无法接,交任务
-#    if curPlayer.GetPlayerNameColor() == IPY_GameWorld.pncRed and __Check_FunctionNPC_Talk_RedName(curNPC):
-#        PlayerControl.NotifyCode(curPlayer, "PK_lhs_161795")
-#        #结束事件
-#        DoExitEvent(curPlayer)
-#        return
-    
-    if curNPC != None and not GameWorld.IsSameCountry(curPlayer, curNPC) :
-        #PK_lhs_372238   <n color="255,0,0">我不会给敌人提供任何帮助的!</n>
-        #不同国籍, 不能和NPC对话
-        #PlayerControl.NotifyCode(curPlayer, "PK_lhs_372238")
-        DoExitEvent(curPlayer)
-        return
-    
-    GameWorld.DebugLog("%s(%d) 访问NPC回应: %s"%(curPlayer.GetName(), curPlayer.GetID(), answerBase) , curPlayer.GetPlayerID())
-    
-    if answer.find(funcHead) == 0:
-        #是事件响应
-        if curNPC == None:
-            #没有这个NPC
-            GameWorld.Log("funcHead没有这个NPC" , curPlayer.GetPlayerID())
-            return
-        
-        #得到玩家的对象
-        funcAnswer = answerBase.replace(funcHead, "")
-        responseType="Func_%d"%curNPC.GetFunctionType()
-        callFunc = GameWorld.GetExecFunc(EventSrc, "%s.%s"%(responseType, funcAnswer))
-        
-        if callFunc == None:
-            #函数调用不可使用
-            GameWorld.Log("回应事件响应 %s %s不可使用"%(responseType, funcAnswer) , curPlayer.GetPlayerID())
-            return
-        
-        callFunc(curPlayer, tick)
-        return
-    
-    elif answer.find(xmlFuncHead) == 0:
-        #运行Func目录下的XML文件
-        #事件对话(开通仓库, 购买骠车马匹使用时间等
-        funcAnswer = answer.replace(xmlFuncHead, "")
-        QuestsEvent = QuestManager.GetAllQuestsEvents()
-        curNPC = QuestRunner.GetPlayerTalkNPC(curPlayer)
-        
-        if curNPC == None:
-            #没有这个NPC
-            GameWorld.Log("GetPlayerTalkNPC没有这个NPC" , curPlayer.GetPlayerID())
-            return
-        
-        #得到NPC的TypeID
-        funcType = curNPC.GetFunctionType()
-        key = ("function_npc", "%d_%s.xml"%(funcType, funcAnswer))
-        
-        if QuestsEvent.has_key(key):
-            for event in QuestsEvent[key]:
-                nodeList = event[1].GetXMLEventLoader().GetNodeList()
-                #运行function_npc目录下的[funcType].xml文件
-                if QuestRunner.RunFunctionQuest(curPlayer, nodeList) != True:
-                    GameWorld.Log("任务事件对话执行失败" , curPlayer.GetPlayerID())
-                    DoExitEvent(curPlayer)
-        else:
-            GameWorld.Log("哈细特锁吗利(精灵族语) %s"%(str(key)) , curPlayer.GetPlayerID())
-            DoExitEvent(curPlayer)
-            
-        return
-    
-    else:
-
-        #普通对话
-        QuestRunner.RunPlayerAnswer(curPlayer, answer)
-    
-    #记录任务相关信息
-    GameLogInfo.LogInfo_MissionTime(timeClock)
-    GameLogInfo.LogInfo_MissionCount(1)
-    return
-#---------------------------------------------------------------------
-
-##任务触发器装备普通强化使用次数
-#@param curPlayer 玩家实例
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnKillById 击杀指定ID的怪物
-def EventRespons_OnEquipNormalPlus(curPlayer, itemID):
-    RunQuestEvent(curPlayer, "on_equip_normal_plus", itemID, Def_RunQuestType_Normal)
-    return
-
-
-## 任务触发器_OnVisit 和NPC对话
-#@param curPlayer 玩家实例
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnVisit 和NPC对话
-def EventRespons_OnVisit(curPlayer, curNPC):
-    #GameWorld.Log("访问NPC锁住" , curPlayer.GetPlayerID())
-    curPlayer.BeginEvent()
-    curPlayer.SetActionObj(curNPC)
-        
-    #得到NPC的TypeID
-    npcTypeID = curNPC.GetNPCID()
-    #GameWorld.Log("%s(%d) 访问NPC %d"%(curPlayer.GetName(), curPlayer.GetID(),npcTypeID) , curPlayer.GetPlayerID())
-    if QuestRunner.RunQuestOnVisit(curPlayer, npcTypeID) != True:
-        GameWorld.Log("%s任务对话执行失败"%(npcTypeID) , curPlayer.GetPlayerID())
-        DoExitEvent(curPlayer)
-    
-    return
-#---------------------------------------------------------------------
-##任务_每日任务 //0.xml, 函数调用 QuestRunner.RunQuest 执行逻辑
-#@param curPlayer 玩家实例
-#@param eventName 事件字典名
-#@param trigID 事件字典值
-#@param eventDictName 随机事件字典名,储存ID
-#@return 返回值无意义
-#@remarks 任务_每日任务 //0.xml, 函数调用 QuestRunner.RunQuest 执行逻辑
-def RunDayEvent(curPlayer, eventName, trigID, eventDictName):
-    QuestsEvent = QuestManager.GetAllQuestsEvents()
-    key = (eventName, "0.xml")
-    #因为每日任务杀怪随机, 所以只有用0.xml来读取
-    if not QuestsEvent.has_key(key) :
-        return
-    
-    curQuestList = QuestsEvent[key]
-    if len(curQuestList) == 0:
-        GameWorld.Log("%s 没有触发!"%str(key) , curPlayer.GetPlayerID())
-        return
-    
-    for event in curQuestList:
-        questID = event[0]
-        curMission = curPlayer.FindMission(questID)
-        if curMission == None:
-            continue
-        
-        killRangeName = "killrangenpclv"
-        #指定NPC等级范围
-        killRangeLV = curMission.GetProperty(killRangeName)
-        #从一个范围随机出一个指定值
-        eventID = curMission.GetProperty(eventDictName)
-        #杀任意怪
-        anyKill = curMission.GetProperty(QuestCommon.Def_Day_Event_Any_Kill)
-        
-        #符合一样即可执行
-        if anyKill == 0 and eventID != trigID and killRangeLV == 0:
-            continue
-        
-        if killRangeLV > 0:
-            curMission.SetProperty(killRangeName, trigID, False)
-        
-        QuestRunner.RunQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList())
-#---------------------------------------------------------------------
-##任务_任务事件
-#@param curPlayer 玩家实例
-#@param eventName 事件字典名
-#@param fileID 事件XML文件名
-#@param runType 执行方式 Def_RunQuestType_
-#@return 返回值无意义
-#@remarks 任务_任务事件
-def RunQuestEvent(curPlayer, eventName, fileID, runType):
-    eventName = eventName.lower()
-    QuestsEvent = QuestManager.GetAllQuestsEvents()
-    key = (eventName, "%s.xml"%str(fileID))
-    
-    if not QuestsEvent.has_key(key) :
-        #GameWorld.DebugLog("RunQuestEvent 没有key = %s  !" % str(key), curPlayer.GetPlayerID())
-        return False
-    
-    curQuestList = QuestsEvent[key]
-    if len(curQuestList) == 0:
-        GameWorld.Log("%s 没有触发!"%str(key) , curPlayer.GetPlayerID())
-        return
-    
-    for event in curQuestList:
-        questID = event[0]
-
-        #未激活的任务也需要触发, 原因: 任务未激活, 但是还是会保存在玩家身上
-        #原因: 玩家一天只能领取一次活动, 不管活动开启多少次
-        #所以要让非激活状态触发onday
-        
-        #2009.2.15      更新, 未激活的活动不会触发, 不考虑活动删除
-        curQuestData = QuestManager.FindQuest(questID)
-        curMission = curPlayer.FindMission(questID)
-        
-        if curQuestData != None and curQuestData.Type == QuestCommon.Def_GM_Active_Mission_Type:
-            #检查有没有激活
-            #没有激活, 跳过    
-            if not GameWorld.GetGameWorld().IsEventActive(questID):
-                if curMission == None:
-                    continue
-                #是完成的任务
-                if curMission.GetState() == ChConfig.Def_Mission_State_Over:
-                    continue
-            
-        #GameWorld.Log("玩家触发任务: %s  - %d"%(str(key), questID) , curPlayer.GetPlayerID())    
-        if runType == Def_RunQuestType_RunAll:
-            #运行所有节点
-            QuestRunner.RunAllQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList())
-            continue
-#        elif runType == Def_RunQuestType_NoAnswer:
-#            QuestRunner.RunQuestNoAnswer(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList())
-#            continue
-        
-#        curMission = curPlayer.FindMission(questID)
-        if curMission == None:
-            continue
-        
-        if runType != Def_RunQuestType_RunAll and curMission.GetState() == ChConfig.Def_Mission_State_Over:
-            #任务已经完成
-            continue
-
-        if runType == Def_RunQuestType_Normal:
-            QuestRunner.RunQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList())
-
-    return True
-#---------------------------------------------------------------------
-def Event_OnKillByID(curPlayer, npcID):
-    #运行on_kill_by_id目录下的[NPCTypeID].xml文件
-    RunQuestEvent(curPlayer, "on_kill_by_id", npcID, Def_RunQuestType_Normal)
-    #触发每日任务杀怪
-    RunDayEvent(curPlayer, "on_kill_by_id", npcID, QuestCommon.Def_Kill_Npc_ID)
-    return
-
-##任务触发器_OnKillById 击杀指定ID的怪物
-#@param curPlayer 玩家实例
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnKillById 击杀指定ID的怪物
-def EventRespons_OnKillById(curPlayer, curNPC):
-    #得到NPC的TypeID
-    npcTypeID = curNPC.GetNPCID()
-    QuestRunner.SetKillNPC(curNPC)
-    
-    Event_OnKillByID(curPlayer, npcTypeID)
-    
-    #触发按等级杀怪
-    EventRespons_OnKillByLv(curPlayer, curNPC)
-    return
-#---------------------------------------------------------------------
-##任务触发器_OnKillByLv 击杀指定等级的怪物
-#@param curPlayer 玩家实例
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnKillByLv 击杀指定等级的怪物
-def EventRespons_OnKillByLv(curPlayer, curNPC):
-    if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
-        return
-    
-    #得到NPC的TypeID
-    npcLV = NPCCommon.GetNPCLV(curNPC)    
-    
-    #运行on_kill_by_lv目录下的[NPCTypeID].xml文件
-    #QuestRunner.SetKillNPC(curNPC)
-    
-    RunQuestEvent(curPlayer, "on_kill_by_lv", npcLV, Def_RunQuestType_Normal)
-    
-    #触发每日任务杀怪
-    RunDayEvent(curPlayer, "on_kill_by_lv", npcLV, QuestCommon.Def_Kill_Npc_LV)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_完成某手机任务
-# @param curPlayer:玩家实例
-# @param curTaskType:('1_MissionId':游历江湖;'2_MissionId':笑恩录;)
-# @return None
-def EventRespons_OnPhoneAchieveTask(curPlayer, curTaskType):
-    
-    RunQuestEvent(curPlayer, "on_phone_achieve_task", curTaskType, Def_RunQuestType_Normal)
-    return
-
-
-
-
-#---------------------------------------------------------------------
-##任务触发器_OnGet 玩家拾取物品
-#@param curPlayer 玩家实例
-#@param itemTypeID 物品ID
-#@return 返回值无意义
-#@remarks 任务触发器_OnGet 玩家拾取物品
-def EventRespons_OnGet(curPlayer, itemTypeID):
-    RunQuestEvent(curPlayer, "on_get", itemTypeID, Def_RunQuestType_Normal)
-    #触发每日任务得到物品
-    RunDayEvent(curPlayer, "on_get", itemTypeID, QuestCommon.Def_Item_ID)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnTruckDisappear 镖车丢失触发任务
-#@param curPlayer 玩家实例
-#@param taskID 镖车事件ID
-#@return 返回值无意义
-#@remarks 任务触发器_OnTruckDisappear 镖车丢失触发任务
-def EventRespons_OnTruckDisappear(curPlayer, taskID):
-    GameWorld.Log("骠车丢失, 触发骠车丢失任务 %d"%(taskID), curPlayer.GetPlayerID())
-    RunQuestEvent(curPlayer, "on_truck_disappear", taskID, Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnTruckDestroy 镖车打烂触发任务
-#@param curPlayer 玩家实例
-#@param taskID 镖车事件ID
-#@return 返回值无意义
-#@remarks 任务触发器_OnTruckDestroy 镖车打烂触发任务
-def EventRespons_OnTruckDestroy(curPlayer, taskID):
-    GameWorld.Log("骠车打烂, 触发骠车打烂任务 %d"%(taskID), curPlayer.GetPlayerID())
-    RunQuestEvent(curPlayer, "on_truck_destroy", taskID, Def_RunQuestType_Normal)
-    return
-#---------------------------------------------------------------------
-##自定义函数:OnEnter 玩家上线触发GM开关的活动
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:OnEnter 玩家上线触发GM开关的活动
-def PlayerGMEventTrig(curPlayer):
-    gameWorld = GameWorld.GetGameWorld()
-    #检查玩家触发GM事件(触发on_active和on_deactive)
-    #QuestManager.FindQuest
-    
-    delQuestList = []
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        missionID = curMission.GetMissionID()
-        missionData = QuestManager.FindQuest(missionID)
-        if missionData == None:
-            continue
-        
-        if missionData.Type != QuestCommon.Def_GM_Active_Mission_Type:
-            continue
-        
-        #检查节庆任务
-        if not gameWorld.IsEventActive(missionID):
-            #玩家有节庆任务, 但是任务已经关闭了
-            #注意: 这里是在for中删除!!!
-            delQuestList.append(missionID)
-            #EventResponse_OnDeActive(curPlayer, missionID)
-            
-    for missionID in delQuestList:
-        EventResponse_OnDeActive(curPlayer, missionID)
-    
-    for i in range(gameWorld.GetActiveEventCount()):
-        missionID = gameWorld.GetActiveEventByIndex(i)
-        if curPlayer.FindMission(missionID):
-            #玩家有这个任务
-            continue
-        
-        #玩家没有这个节庆任务, 需要触发
-        EventResponse_OnActive(curPlayer, missionID)
-        
-    return
-
-#---------------------------------------------------------------------
-##触发所有他人发布的任务
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:触发所有他人发布的任务
-def PlayerMissionPubEventTrig(curPlayer):
-    #检查玩家触发GM事件(触发on_active和on_deactive)
-    #QuestManager.FindQuest
-    missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager()    
-    for i in range(missionPubManager.GetCount()):
-        curMissionPub = missionPubManager.GetAt(i)
-        missionID = curMissionPub.GetMissionID()
-        if curPlayer.FindMission(missionID):
-            #玩家有这个任务
-            continue
-        
-        #触发他人发布的任务
-        CheckTrigMissionPub(curPlayer, curMissionPub)
-        
-    return
-#---------------------------------------------------------------------
-##任务触发器_OnEnter 任务潜规则,玩家第一次登陆游戏要添加任务1给玩家
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnEnter 任务潜规则,玩家第一次登陆游戏要添加任务1给玩家
-def EventResponse_OnEnter(curPlayer):
-    curPlayerID = curPlayer.GetID()
-    #quests = QuestManager.GetQuests()
-    addMission = QuestCommon.GetCommonMission(curPlayer)
-    
-    if addMission == None:
-        #执行第一次登陆逻辑
-        __FirstLoginOnEnter(curPlayer)
-        
-        addMission = QuestCommon.GetCommonMission(curPlayer)
-        
-        if addMission == None:
-            GameWorld.ErrLog('EventResponse_OnEnter, 玩家 = %s无法获得公共任务'%(curPlayer.GetName()), curPlayer.GetID())
-            return
-    
-    if addMission.GetState() != ChConfig.Def_Mission_State_NoAccept:
-        return 
-    
-    #玩家第一个任务没有做,锁住
-    GameWorld.Log("玩家第一个任务没有做, 锁住", curPlayerID)
-    #curPlayer.BeginEvent()
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_Frist_Lock, 1)
-    #调用执行新手任务
-    RunQuestEvent(curPlayer, "on_enter", ChConfig.Def_XML_FirstLogin, Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##玩家第一次登陆游戏逻辑, 如任务加载逻辑, 自动学习技能
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:玩家第一次登陆游戏逻辑, 如任务加载逻辑, 自动学习技能
-def __FirstLoginOnEnter(curPlayer):
-    playerID = curPlayer.GetID()
-    
-    GameWorld.Log('玩家是第一次进入游戏', playerID)
-    # 特殊说明: 如果地图没有完全初始化好,客户端断开或者异常等情况会触发RunGateGameServerMapServerKickOutPlayerNoSave
-    # 那么在DoPlayerLogin 中设置的数据将不会被保存, 如会导致第一个任务重复触发问题,记录多次发送
-    EventReport.WriteEvent_Entry(curPlayer, 4)
-    #EventReport.EventReport(ShareDefine.Def_UserAction_FirstLogin, "", curPlayer)
-    #---给玩家新手任务---
-    addMission = QuestCommon.AddNewMission(curPlayer, ChConfig.Def_MissionID_FirstLogin)
-    #广播新增任务
-    NotifyOneMission(curPlayer, addMission)
-    
-    #---补满血满魔---
-    GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer))
-    curPlayer.SetMP(curPlayer.GetMaxMP())
-    
-    #---给予玩家新手物品---
-    
-    #---初始化装备显隐 第1套*10+没有套装
-    curPlayer.SetEquipShowSwitch(10)
-    PlayerControl.SetFaceEquipIndex(curPlayer, 11012014)
-    
-    #默认触发一次功能开启
-    if curPlayer.GetLV() == 1:
-        GameFuncComm.DoFuncOpenLogic(curPlayer)
-        
-    #初始化组队状态
-    autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
-    autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
-    PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
-    
-    #按平台给首个称号
-    #PlayerDienstgrad.GiveFirstLoginDienstgrad(curPlayer)
-    
-    #玩家默认恶名值
-    curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
-    
-    #标记已登陆过,用于非同一天二次登陆
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_OtherDayLogin, 1)
-    
-    #curPlayer.SetDict("ThunderLogin", 1)
-    #记录第一次登陆
-    DataRecordPack.DR_FirstLogin(curPlayer.GetAccID(), curPlayer.GetIP(), curPlayer)
-    
-    #内部号给予元宝
-    #PlayerCoin.GiveGoldByCreate(curPlayer)
-    
-    #首登邮件
-    mailList = IpyGameDataPY.GetFuncEvalCfg("MailLVAward", 2)
-    for mailTypeKey, mailItemList in mailList:
-        PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList)
-    return
-#---------------------------------------------------------------------
-##任务触发器_OnLogin 玩家登陆游戏触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnLogin 玩家登陆游戏触发
-def EventResponse_OnLogin(curPlayer):
-    #触发GM开关活动
-#    PlayerGMEventTrig(curPlayer)
-    #触发他人发布活动
-#    PlayerMissionPubEventTrig(curPlayer)
-    
-    RunQuestEvent(curPlayer, "on_login", "on_login", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_On_GameServer_Login 此事件需要GameServer初始化玩家后,返回是家族长后触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_On_GameServer_Login 此事件需要GameServer初始化玩家后,返回是家族长后触发
-def EventResponse_On_GameServer_Login(curPlayer):
-    #设置为家族长(GameServer已验证,MapServer还没刷新)
-    curPlayer.SetFamilyMemberLV(IPY_GameWorld.fmlLeader)
-    RunQuestEvent(curPlayer, "on_gs_login", "on_gs_login", Def_RunQuestType_RunAll)
-    return
-#===============================================================================
-# 
-# #城门活动开始触发任务事件
-# def EventResponse_On_Open_Gate_War(curPlayer):
-#    if not curPlayer.GetGameServerInitOK():
-#        GameServerRefresh.Set_Mission_No_ID_On_Open_Gate_War( curPlayer , 1 )
-#        return
-#    
-#    RunQuestEvent(curPlayer, "on_open_gate_war", "on_open_gate_war", Def_RunQuestType_RunAll)
-#    return
-# 
-# #城门活动结束触发任务事件
-# def EventResponse_On_Close_Gate_War(curPlayer):
-#    if not curPlayer.GetGameServerInitOK():
-#        GameServerRefresh.Set_Mission_No_ID_On_Close_Gate_War( curPlayer , 1 )
-#        return
-#    
-#    RunQuestEvent(curPlayer, "on_close_gate_war", "on_close_gate_war", Def_RunQuestType_RunAll)
-#    return
-# 
-# #城门活动中登陆触发任务事件
-# def EventResponse_On_Gate_War_Login(curPlayer):
-#    RunQuestEvent(curPlayer, "on_gate_war_login", "on_gate_war_login", Def_RunQuestType_RunAll)
-#    return
-# 
-# #城门活动后登陆触发任务事件
-# def EventResponse_Not_Gate_War_Login(curPlayer):
-#    RunQuestEvent(curPlayer, "not_gate_war_login", "not_gate_war_login", Def_RunQuestType_RunAll)
-#    return
-#===============================================================================
-#---------------------------------------------------------------------
-##任务触发器_OnGameEvent 跳舞钓鱼进度条结束后触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnGameEvent 跳舞钓鱼进度条结束后触发
-def EventRespons_OnGameEvent(curPlayer):
-    RunQuestEvent(curPlayer, "on_game_event", "on_game_event", Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnMap 玩家登陆地图
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnMap 玩家登陆地图
-def EventResponse_OnMap(curPlayer):
-    RunQuestEvent(curPlayer, "on_map", "on_map", Def_RunQuestType_Normal)
-    return
-
-
-##任务触发器_OnMapEx 玩家登陆地图
-#@param curPlayer 玩家实例
-#@return None
-def EventResponse_OnMapEx(curPlayer):
-    RunQuestEvent(curPlayer, "on_map_ex", "on_map_ex", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-def EventResponse_Funcopen(curPlayer, funcID):
-    ## 功能开启触发
-    RunQuestEvent(curPlayer, "funcopen", funcID, Def_RunQuestType_RunAll)
-    return
-
-##任务触发器_LVUp 当玩家升级的时候触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_LVUp 当玩家升级的时候触发
-def EventResponse_LVUp(curPlayer):
-    #已接任务升级触发逻辑
-    RunQuestEvent(curPlayer, "on_lv_up", "on_lv_up", Def_RunQuestType_Normal)
-    
-    #2010/5/18 LvUp触发由读取XML修改为读取配置表LvUpTrigMissionID
-    #升级触发任务分2种: 1.添加任务并且触发任务XML逻辑,任务已存在则只触发XML逻辑
-    #                2.不添加任务,如果任务存在才触发XML逻辑
-    
-    #{ 职业:{{等级:[ 触发任务ID列表] } }
-    missionDist = ReadChConfig.GetEvalChConfig('LvUpTrigMissionID')
-    #根据条件过滤字典
-    missionJobDist = missionDist.get(curPlayer.GetJob())
-    
-    if not missionJobDist:
-        #GameWorld.ErrLog('EventResponse_LVUp, job = %s'%(curPlayer.GetJob()), curPlayer.GetID())
-        return
-    
-    missionIDList = missionJobDist.get(curPlayer.GetLV())
-    
-    if not missionIDList:
-        #GameWorld.ErrLog('EventResponse_LVUp, lv = %s'%(curPlayer.GetLV()), curPlayer.GetID())
-        
-        # 升级只触发任务XML,不添加任务
-        __LVUpNoAddMission(curPlayer)
-        return
-    
-    #给予任务标志位
-    isGiveMission = False
-    
-    for missionID in missionIDList:
-        if curPlayer.FindMission(missionID):
-            GameWorld.ErrLog('EventResponse_LVUp, hasSameMissionID = %s'%(missionID), curPlayer.GetID())
-            continue
-        
-        isGiveMission = True
-        
-        #添加新任务给玩家
-        addMission = QuestCommon.AddNewMission(curPlayer, missionID)
-        NotifyOneMission(curPlayer, addMission)
-    
-    if isGiveMission:
-        #LvUp_Get_Task <n color="0,255,0" BKCOLOR="0,0,0">等级提升,您有新的任务可接受!</n>
-        PlayerControl.NotifyCode(curPlayer , "LvUp_Get_Task")
-    
-    RunQuestEvent(curPlayer, "on_lv_up", curPlayer.GetLV(), Def_RunQuestType_RunAll)
-#===============================================================================
-#    #能否触发城门活动
-#    __IsGateWar(curPlayer)
-#===============================================================================
-    return True
-
-## 升级只触发任务XML,不添加任务
-#  @param curPlayer 玩家实例
-#  @return None
-def __LVUpNoAddMission(curPlayer):
-    missionDist = ReadChConfig.GetEvalChConfig('LvUpTrigMissionNotAdd')
-    #根据条件过滤字典
-    lvTrigMissionList = missionDist.get(curPlayer.GetJob())
-    
-    if lvTrigMissionList == None:
-        return
-    
-    if curPlayer.GetLV() not in lvTrigMissionList:
-        return
-
-    RunQuestEvent(curPlayer, "on_lv_up", curPlayer.GetLV(), Def_RunQuestType_RunAll)
-    
-#---------------------------------------------------------------------
-##任务触发器_通用活动响应, 单个玩家
-#@param curPlayer 玩家实例
-#@param eventName 事件字典名
-#@param fileID 事件XML文件名
-#@return 返回值无意义
-#@remarks 
-def EventResponse_OnAction(curPlayer, eventName, fileID):
-    RunQuestEvent(curPlayer, eventName, fileID, Def_RunQuestType_RunAll)
-    return
-
-##任务触发器_通用活动响应, 全服玩家
-#@param eventName 事件字典名
-#@param fileID 事件XML文件名
-#@return 返回值无意义
-#@remarks 
-def EventResponse_OnActionAllMapPlayer(eventName, fileID):
-    playerManager = GameWorld.GetPlayerManager()
-
-    for i in range(0, playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-
-        EventResponse_OnAction(curPlayer, eventName, fileID)
-
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnHalfHour 每半小时触发一次
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnHour 每小时触发一次
-def EventResponse_OnHalfHour(curPlayer):
-    RunQuestEvent(curPlayer, "on_halfhour", "on_halfhour", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnHour 每小时触发一次
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnHour 每小时触发一次
-def EventResponse_OnHour(curPlayer):
-    RunQuestEvent(curPlayer, "on_hour", "on_hour", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnDay 每天触发一次
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnDay 每天触发一次
-def EventResponse_OnDay(curPlayer):
-    RunQuestEvent(curPlayer, "on_day", "on_day", Def_RunQuestType_RunAll)
-    RunQuestEvent(curPlayer, "on_day", "on_dayex", Def_RunQuestType_Normal)
-    
-    #清赏金任务奖励
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % QuestCommon.Def_Mission_Type_RunDaily, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % QuestCommon.Def_Mission_Type_RunDaily, 0)
-    NotifyRunEndAward(curPlayer, QuestCommon.Def_Mission_Type_RunDaily)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnWeek 每周触发一次
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnWeek 每周触发一次
-def EventResponse_OnWeek(curPlayer):
-    RunQuestEvent(curPlayer, "on_week", "on_week", Def_RunQuestType_RunAll)
-    
-    #清仙盟任务奖励
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % QuestCommon.Def_Mission_Type_RunFamily, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % QuestCommon.Def_Mission_Type_RunFamily, 0)
-    NotifyRunEndAward(curPlayer, QuestCommon.Def_Mission_Type_RunFamily)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnLeaveFamily 玩家离开家族触发( 自动/被动 )
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnLeaveFamily 玩家离开家族触发( 自动/被动 )
-def EventResponse_OnLeaveFamily(curPlayer):
-    if not curPlayer.GetGameServerInitOK():
-        GameServerRefresh.Set_Mission_No_ID_OnLeaveFamily(curPlayer , 1)
-        return
-    
-    RunQuestEvent(curPlayer, "on_leave_family", "on_leave_family", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnMemberChange 家族长变更
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnMemberChange 家族长变更
-def EventResponse_OnMemberChange(curPlayer):
-    if not curPlayer.GetGameServerInitOK():
-        GameServerRefresh.Set_Mission_No_ID_OnMemberChange(curPlayer , 1)
-        return
-    
-    GameWorld.Log('EventResponse_OnMemberChange' , curPlayer.GetID())
-    RunQuestEvent(curPlayer, 'on_member_change', 'on_member_change', Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnFamily 进入家族
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnFamily 进入家族
-def EventResponse_OnFamily(curPlayer):
-    RunQuestEvent(curPlayer, "on_family", "on_family", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnCreateFamily 创建家族
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnCreateFamily 创建家族
-def EventResponse_OnCreateFamily(curPlayer):
-    RunQuestEvent(curPlayer, "on_create_family", "on_create_family", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnFamilyAdd 加入家族
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-def EventResponse_OnFamilyAdd(curPlayer):
-    RunQuestEvent(curPlayer, "on_add_family", "on_add_family", Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnFamilyLVUp 家族升级
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-def EventResponse_OnFamilyLVUp(curPlayer):
-    RunQuestEvent(curPlayer, "on_lv_up_family", "on_lv_up_family", Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnLeaveMap 离开地图
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnLeaveMap 离开地图
-def EventResponse_OnLeaveMap(curPlayer):
-    RunQuestEvent(curPlayer, "on_leave_map", "on_leave_map", Def_RunQuestType_Normal)
-    return
-#---------------------------------------------------------------------
-##任务触发器_OnFBTimeOut 副本时间结束
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnFBTimeOut 副本时间结束
-def EventResponse_OnFBTimeOut(curPlayer):
-    RunQuestEvent(curPlayer, "on_fb_timeout", "on_fb_timeout", Def_RunQuestType_Normal)
-    return
-
-#===============================================================================
-# #攻击城门事件触发
-# def EventResponse_OnAttackGate(curPlayer):
-#    RunQuestEvent(curPlayer, "on_attack_gate", "on_attack_gate", Def_RunQuestType_Normal)
-#    return
-#===============================================================================
-#---------------------------------------------------------------------
-##任务触发器_OnKillEnemy 击杀玩家事件触发
-#@param attackPlayer 攻击者
-#@param deadPlayer 死亡的玩家
-#@return 返回值无意义
-#@remarks 任务触发器_OnKillEnemy 击杀玩家事件触发
-def EventResponse_OnKillEnemy(attackPlayer, deadPlayer):
-    RunQuestEvent(attackPlayer, "on_kill_enemy", "on_kill_enemy", Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnEnemyKill 被玩家击杀事件触发
-#@param deadPlayer 死亡的玩家
-#@param attackPlayer 攻击者
-#@return 返回值无意义
-#@remarks 任务触发器_OnEnemyKill 被玩家击杀事件触发
-def EventResponse_OnEnemyKill(deadPlayer, attackPlayer):
-    RunQuestEvent(deadPlayer, "on_enemy_kill", "on_enemy_kill", Def_RunQuestType_Normal)
-    return
-
-
-#---------------------------------------------------------------------
-##任务触发器vip等级改变
-#@param curPlayer 玩家
-#@return 返回值无意义
-#@remarks 任务触发器vip等级改变触发
-def EventResponse_OnVipLvUp(curPlayer, vipLV):
-    RunQuestEvent(curPlayer, "on_viplv_up", vipLV, Def_RunQuestType_RunAll)
-    return
-
-##任务触发器购买vip礼包
-#@param curPlayer 玩家
-#@return 返回值无意义
-#@remarks 任务触发器vip等级改变触发
-def EventResponse_BuyVIPItem(curPlayer, vipLV):
-    RunQuestEvent(curPlayer, "buyvipitem", "buyvipitem", Def_RunQuestType_Normal)
-    return
-
-def EventResponse_MineAreaPull(curPlayer, isRob):
-    ## 福地采集物品
-    RunQuestEvent(curPlayer, "minearea_pull", "rob" if isRob else "self", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "minearea_pull", 0, Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_Active 已经无使用了
-#@param curPlayer 玩家实例
-#@param typeName 类型
-#@param missionID 任务ID
-#@return 返回值无意义
-#@remarks 任务触发器_Active 已经无使用了
-def __EventResponse_Active(curPlayer, typeName, missionID):
-    eventName = typeName
-    fileID = typeName
-    QuestsEvent = QuestManager.GetAllQuestsEvents()
-    key = (eventName, "%s.xml"%str(fileID))
-    if not QuestsEvent.has_key(key) :
-        return False
-    
-    curQuestList = QuestsEvent[key]
-    if len(curQuestList) == 0:
-        GameWorld.Log("%s 没有触发!"%str(key) , curPlayer.GetPlayerID())
-        return
-    
-    for event in curQuestList:
-        questID = event[0]
-        if questID != missionID:
-            continue
-
-        #GameWorld.Log("玩家触发任务: %s  - %d"%(str(key), questID) , curPlayer.GetPlayerID())    
-        #运行所有节点
-        QuestRunner.RunAllQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList())
-        break
-
-    return
-
-#---------------------------------------------------------------------
-##触发单个他人发布的任务
-#@param curPlayer 玩家实例
-#@param curMissionPub 发布的任务数据
-#@return 返回值无意义
-#@remarks 自定义函数:触发单个他人发布的任务
-def CheckTrigMissionPub(curPlayer, curMissionPub):
-    missionID = curMissionPub.GetMissionID()
-    if curPlayer.FindMission(missionID):
-        #玩家有这个任务
-        return
-    
-    missinoPubType = curMissionPub.GetMissinoPubType()
-    
-    #检查触发任务发布
-    if missinoPubType == IPY_GameWorld.mptFamily:
-        #家族发布
-        if curPlayer.GetFamilyID() == 0:
-            return
-        
-        if curPlayer.GetFamilyID() != curMissionPub.GetPubID():
-            return 
-        
-        EventResponse_OnMissionPub(curPlayer, missionID)
-        
-    elif missinoPubType == IPY_GameWorld.mptCountry:
-        #家族发布
-        if curPlayer.GetCountry() != curMissionPub.GetPubID():
-            return 
-        
-        EventResponse_OnMissionPub(curPlayer, missionID)
-        
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnMissionPub 他人发布任务
-#@param curPlayer 玩家实例
-#@param missionID 任务ID
-#@return 返回值无意义
-#@remarks 任务触发器_OnMissionPub 他人发布任务
-def EventResponse_OnMissionPub(curPlayer, missionID):
-    if not curPlayer.GetGameServerInitOK():
-        GameServerRefresh.Set_Mission_Have_ID_OnMissionPub(curPlayer , missionID)
-        return
-    
-    RunQuestEvent(curPlayer, 'on_pub', missionID, Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnActive 触发GM开关任务
-#@param curPlayer 玩家实例
-#@param missionID 任务ID
-#@return 返回值无意义
-#@remarks 任务触发器_OnActive 触发GM开关任务
-def EventResponse_OnActive(curPlayer, missionID):
-    if not curPlayer.GetGameServerInitOK():
-        GameServerRefresh.Set_Mission_Have_ID_OnActive(curPlayer , missionID)
-        return
-    
-    RunQuestEvent(curPlayer, 'on_active', missionID, Def_RunQuestType_RunAll)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_OnDeActive 关闭GM开关任务
-#@param curPlayer 玩家实例
-#@param missionID 任务ID
-#@return 返回值无意义
-#@remarks 任务触发器_OnDeActive 关闭GM开关任务
-def EventResponse_OnDeActive(curPlayer, missionID):
-    if not curPlayer.GetGameServerInitOK():
-        GameServerRefresh.Set_Mission_Have_ID_OnDeActive(curPlayer , missionID)
-        return
-    
-    RunQuestEvent(curPlayer, 'on_deactive', missionID, Def_RunQuestType_RunAll)
-    return
-
-
-#---------------------------------------------------------------------
-##任务触发器_OnDig 挖宝进度条结束后触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_OnDig 挖宝进度条结束后触发
-def EventResponse_OnDig(curPlayer):    
-    #玩家挖地触发
-    QuestRunner.InitTreasureNotifyContentList()
-    #GameWorld.Log("开始挖地")
-    
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        #这个任务已经做完了(-1)  或者   这个任务还没有接(0)
-        if curMission.GetState() in [ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_Over]:
-            continue
-
-        RunQuestEvent(curPlayer, "on_dig", curMission.GetMissionID(), Def_RunQuestType_Normal)
-            
-    treasureNotifyList = QuestRunner.GetTreasureNotifyContentList()
-    #得到提示的最高等级
-    minLV = 0
-    minIndex = -1
-    for i in range(0, len(treasureNotifyList)):
-        if minLV == 0:
-            minLV = treasureNotifyList[i].LV
-            minIndex = i
-            continue
-        if treasureNotifyList[i].LV < minLV:
-            minLV = treasureNotifyList[i].LV 
-            minIndex = i
-            
-    if minIndex == -1:
-        #没有挖宝任务
-        curPlayer.Notify(0, "n")
-        return
-    
-    missionID = treasureNotifyList[minIndex].MissionID
-    #通知玩家
-    curPlayer.Notify(missionID, treasureNotifyList[minIndex].Content)
-    #curPlayer.NotifyMiddle(missionID, QuestRunner.TreasureNotifyContentList[minIndex].Content)            
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_LVFull 当前等级满级的时候触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 任务触发器_LVFull 当前等级满级的时候触发
-def EventResponse_LVFull(curPlayer):
-    #得到NPC的TypeID
-    #运行on_visit目录下的[NPCTypeID].xml文件
-    questID = curPlayer.GetLV() * 100
-    
-    return RunQuestEvent(curPlayer, "on_lv_full", questID, Def_RunQuestType_RunAll)
-
-#---------------------------------------------------------------------
-##任务触发器_MisCollectTime 询问是否可采集该NPC
-#@param curPlayer 玩家实例
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 任务触发器_MisCollectTime 询问是否可采集该NPC
-def EventRespons_MisCollectTime(curPlayer, curNPC):
-    #得到NPC的TypeID
-    npcTypeID = curNPC.GetNPCID()
-    
-    #GameWorld.Log("询问是否可采集该NPC, NPCID %d"%(npcTypeID))
-    
-    #运行on_coltime_by_id目录下的[NPCTypeID].xml文件
-    RunQuestEvent(curPlayer, "on_coltime_by_id", npcTypeID, Def_RunQuestType_Normal)
-    
-    #跑环任务随机采集时,无NPCID 运行on_coltime_by_id目录下的0.xml文件
-    RunQuestEvent(curPlayer, "on_coltime_by_id", 0, Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器_MisCollectSuccess 采集进度条结束后触发
-#@param curPlayer 玩家实例
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 任务触发器_MisCollectSuccess 采集进度条结束后触发
-def EventRespons_MisCollectSuccess(curPlayer, curNPC):
-    #得到NPC的TypeID
-    npcTypeID = curNPC.GetNPCID()
-    
-    #GameWorld.Log("采集该NPC成功, NPCID %d"%(npcTypeID))
-    
-    #运行on_collect_by_id目录下的[NPCTypeID].xml文件
-    RunQuestEvent(curPlayer, "on_collect_by_id", npcTypeID, Def_RunQuestType_Normal)
-    
-    #随机采集
-    RunDayEvent(curPlayer, "on_collect_by_id", npcTypeID, QuestCommon.Def_Collect_Npc_ID)
-    return
-
-#---------------------------------------------------------------------
-##任务触发器CatchPetOK, 抓宠成功.
-# @param curPlayer 玩家实例
-# @param curNPC NPC实例
-# @return 返回值无意义
-# @remarks 抓宠成功
-def EventRespons_CatchPetOK(curPlayer, curNPC):
-    #运行on_catch_pet_ok_by_id目录下的[NPCTypeID].xml文件
-    #RunQuestEvent(curPlayer, "on_catch_pet_ok_by_id", curNPC.GetNPCID(), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_LearnSkill(curPlayer, skillTypeID):
-    # 学习技能
-    RunQuestEvent(curPlayer, "on_learnskill", skillTypeID, Def_RunQuestType_Normal)
-    return
-
-##任务触发器 跑环任务触发下一个跑环任务触发相关事件
-# @param curPlayer 玩家实例
-# @param missionID 下一个跑环任务ID
-# @return 返回值无意义
-# @remarks 任务触发器 跑环任务触发下一个跑环任务触发相关事件
-def EventRespons_SetRunAround(curPlayer, missionID):
-    RunQuestEvent(curPlayer, "on_run_around", missionID, Def_RunQuestType_Normal)
-
-##FB事件触发
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_FBEvent(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "fb_event", eventName, Def_RunQuestType_Normal)
-
-
-##添加好友成功触发
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_AddFriendSucceed(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "add_friend_succeed", eventName, Def_RunQuestType_Normal)
-    return
-
-
-##buff消失触发
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_BuffDisappear(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "buff_disappear", eventName, Def_RunQuestType_Normal)
-    return
-
-
-##秒cd触发
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_ClearCDTime(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "clear_cd_time", eventName, Def_RunQuestType_Normal)
-    return
-
-
-##冲穴
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_OpenXueWei(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "open_xuewei", eventName, Def_RunQuestType_Normal)
-    return
-
-
-##玩家事件
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_PlayerEvent(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "player_event", eventName, Def_RunQuestType_Normal)
-    return
-
-
-##使用远程功能事件
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_DirectFuncEvent(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "direct_event", eventName, Def_RunQuestType_Normal)
-    return
-
-
-##官职(威望)相关触发
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_PlayerPrestige(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "player_prestige", eventName, Def_RunQuestType_Normal)
-    return
-
-## 商店购买物品触发
-#  @param curPlayer 玩家实例
-#  @param itemID 物品ID
-#  @param itemCnt 物品数量
-#  @return None
-def EventRespons_BuyItem(curPlayer, itemID, itemCnt):
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_BuyItemCnt, itemCnt)
-    RunQuestEvent(curPlayer, "buy_item", "buy_item_%s"%itemID, Def_RunQuestType_Normal)
-    return
-
-## NPC死亡摸怪逻辑
-#  @param curPlayer 玩家实例
-#  @param curNPC npc实例
-#  @return None
-def EventRespons_OnKillByFeel(curPlayer, curNPC):
-    
-    #得到NPC的TypeID
-    npcTypeID = curNPC.GetNPCID()
-    
-    #运行on_kill_by_feel目录下的[NPCTypeID].xml文件
-    QuestRunner.SetKillNPC(curNPC)
-    
-    RunQuestEvent(curPlayer, "on_kill_by_feel", npcTypeID, Def_RunQuestType_Normal)
-    
-    #触发每日任务杀怪
-    RunDayEvent(curPlayer, "on_kill_by_feel", npcTypeID, QuestCommon.Def_Kill_Npc_ID)
-    EventRespons_OnKillByLv(curPlayer, curNPC)
-    return
-
-## 完成任务
-#  @param curPlayer 玩家实例
-#  @param taskID 任务id
-#  @param rewardPer 奖励倍值百分比, 如150为1.5倍奖励
-#  @return None
-def EventRespons_OnFinishTask(curPlayer, taskID, rewardPer=100):
-    curMission = curPlayer.FindMission(taskID)
-    if curMission == None:
-        GameWorld.ErrLog("玩家无该任务: %s" % taskID, curPlayer.GetPlayerID())
-        return
-    
-    missionState = curMission.GetState()
-    
-    if missionState != ChConfig.Def_Mission_State_CanComplete:
-        GameWorld.DebugLog("任务状态(%s)不可提交,不能完成任务!taskID=%s" % (missionState, taskID))
-        return
-    
-    curQuestData = QuestManager.FindQuest(taskID)
-    
-    rewardPer = 100 if rewardPer <= 0 else rewardPer
-    moneyType, moneyCnt = 0, 0
-    # 环任务支持多倍奖励领取
-    if curQuestData != None and curQuestData.Type in QuestCommon.Def_RunTask_Type_List:
-        if rewardPer != 100:
-            rewardCostDict = ReadChConfig.GetEvalChConfig("RunAround_MulRewardCost")
-            if rewardPer not in rewardCostDict:
-                GameWorld.ErrLog("不支持该多倍奖励比例: taskID=%s,rewardPer=%s" % (taskID, rewardPer), curPlayer.GetPlayerID())
-                return
-            
-            moneyType, moneyCnt = rewardCostDict[rewardPer]
-            if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyCnt):
-                return
-            
-        curMission.SetProperty(QuestRunner.Def_Task_Reward_Per, rewardPer, False)
-    
-    isOK = RunQuestEvent(curPlayer, "on_finish", taskID, Def_RunQuestType_Normal)
-    
-    if not isOK:
-        GameWorld.DebugLog("OnFinishTask 失败!")
-        return
-    
-    if moneyCnt > 0:
-        PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_MissionDel, 
-                               {"taskID":taskID, "rewardPer":rewardPer, ChConfig.Def_Cost_Reason_SonKey:taskID})
-    return
-
-## 快速完成任务
-#  @param curPlayer 玩家实例
-#  @param missionID 任务id
-#  @return None
-def EventRespons_OnQuickFinishTask(curPlayer, missionID):
-    RunQuestEvent(curPlayer, "quick_finish_task", missionID, Def_RunQuestType_Normal)
-    return
-
-## 一键完成所有环任务
-#  @param curPlayer 玩家实例
-#  @param missionID 任务id
-#  @return None
-def EventRespons_OnQuickFinishAllAround(curPlayer, missionID):
-    RunQuestEvent(curPlayer, "on_quick_finish_all_around", missionID, Def_RunQuestType_Normal)
-    return
-
-## 设置任务星级
-#  @param curPlayer 玩家实例
-#  @param missionID 任务id
-#  @return None
-def EventRespons_OnSetMissionStar(curPlayer, missionID):
-    RunQuestEvent(curPlayer, "on_set_mission_star", missionID, Def_RunQuestType_Normal)
-    return
-
-## 收获果实
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_OnPlantHarvest(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "on_plant_harvest", eventName, Def_RunQuestType_Normal)
-    return
-
-## 副本采集NPC
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_OnFBCollect(curPlayer, eventName):
-    RunQuestEvent(curPlayer, "on_fb_collect", eventName, Def_RunQuestType_Normal)
-    return
-
-## 购买日常任务次数上限
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_OnBuyDayMissionSum(curPlayer, buyNum):
-    RunQuestEvent(curPlayer, "on_buy_mission_sum", buyNum, Def_RunQuestType_RunAll)
-    return
-
-
-## 穿装备触发判断所穿橙装数量
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_OrangeQualityCnt(curPlayer, equipcnt):
-    RunQuestEvent(curPlayer, "quality_orange_cnt", equipcnt, Def_RunQuestType_Normal)
-    return
-
-## 部位强化星级
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_OnEquipPartStarUp(curPlayer, upstar):
-    RunQuestEvent(curPlayer, "on_equippartstarup", "on_equippartstarup", Def_RunQuestType_Normal)
-    return
-
-## 爵位升阶
-#  @param curPlayer 玩家实例
-#  @param eventName
-#  @return None
-def EventRespons_OnOfficialUp(curPlayer, officialLV, starIndex):
-    #星级*100+阶级
-    RunQuestEvent(curPlayer, "on_officialup", starIndex*100+officialLV, Def_RunQuestType_Normal)
-    return
-
-## 通关试炼之塔第X层
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_TrialTowerCnt(curPlayer, cnt):
-    RunQuestEvent(curPlayer, "on_trialtowercnt", cnt, Def_RunQuestType_Normal)
-    return
-
-## 通关天星塔第X层
-#  @param curPlayer 玩家实例
-#  @param eventName 
-#  @return None
-def EventRespons_SkyTowerCnt(curPlayer, cnt):
-    RunQuestEvent(curPlayer, "skytowerpass", cnt, Def_RunQuestType_Normal)
-    return
-
-##护送X次美女 
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_TruckCnt(curPlayer):
-    RunQuestEvent(curPlayer, "on_truckcnt", "on_truckcnt", Def_RunQuestType_Normal)
-    
-##分解任意X件橙装 
-# @param curPlayer 玩家实例
-# @param eventName 事件名
-# @return 返回值无意义
-def EventRespons_EquipDecompose(curPlayer):
-    RunQuestEvent(curPlayer, "on_equipdecompose", "on_equipdecompose", Def_RunQuestType_Normal)
-    return
-    
-def EventRespons_OnBuyNobleVIP(curPlayer, nobleType):
-    # 购买贵族
-    RunQuestEvent(curPlayer, "on_buy_noblevip", "on_buy_noblevip", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "on_buy_noblevip", nobleType, Def_RunQuestType_Normal)
-    return
-    
-def EventRespons_OnGoldInvest(curPlayer, investType):
-    # 绑钻投资
-    RunQuestEvent(curPlayer, "on_goldinvest", "on_goldinvest", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "on_goldinvest", investType, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_OnActivatePet(curPlayer, petID):
-    # 激活宠物
-    RunQuestEvent(curPlayer, "on_activatepet", "on_activatepet", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "on_activatepet", petID, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_MagicWeaponLV(curPlayer, mwID, lv):
-    # 法宝解锁进度
-    RunQuestEvent(curPlayer, "magicweaponlv", '%s_%s'%(mwID, lv), Def_RunQuestType_RunAll)
-    return
-
-def EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, lv):
-    # 魔族法宝关卡进度
-    RunQuestEvent(curPlayer, "mwfbpasslv", '%s_%s'%(mwID, lv), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_SuccessFinish(curPlayer, succID):
-    # 领取完成就
-    RunQuestEvent(curPlayer, "successfinish", succID, Def_RunQuestType_RunAll)
-    return
-
-def EventRespons_KillWorldBoss(curPlayer):
-    # 击杀世界BOSS
-    RunQuestEvent(curPlayer, "killworldboss", 'killworldboss', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_KillWorldBossByFeel(curPlayer):
-    #摸世界BOSS
-    RunQuestEvent(curPlayer, "killworldbossbyfeel", 'killworldbossbyfeel', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_KillBoss(curPlayer, indexMark):
-    # 击杀BOSS
-    RunQuestEvent(curPlayer, "killboss", indexMark, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_SealDemon(curPlayer):
-    # 获得封魔坛110级以上BOSS伤害排名第一
-    RunQuestEvent(curPlayer, "sealdemon", "sealdemon", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_HorseMultiple(curPlayer, multiple):
-    #坐骑喂养X倍暴击一次
-    RunQuestEvent(curPlayer, "horsemultiple", multiple, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_HorseLV(curPlayer, horselv):
-    #任意坐骑到X级
-    RunQuestEvent(curPlayer, "horselv", horselv, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_FBEncourage(curPlayer, mapid):
-    #副本鼓舞几次
-    RunQuestEvent(curPlayer, "fbencourage", mapid, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AddFriend(curPlayer, cnt):
-    #好友数量
-    RunQuestEvent(curPlayer, "addfriend", cnt, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_DujieFBHelp(curPlayer):
-    #仙盟护法
-    RunQuestEvent(curPlayer, "dujiehelp", "dujiehelp", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_DujieFBHelpPass(curPlayer):
-    #渡劫助战
-    RunQuestEvent(curPlayer, "dujiehelppass", "dujiehelppass", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_PassiveSet(curPlayer):
-    #被动技能设置
-    RunQuestEvent(curPlayer, "passiveset", "passiveset", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_PlusGodWeapon(curPlayer, weaponType):
-    #神兵锤炼
-    RunQuestEvent(curPlayer, "plusgodweapon", "plusgodweapon", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "plusgodweapon", weaponType, Def_RunQuestType_Normal)
-    return
-def EventRespons_GodWeaponUp(curPlayer, weaponType, attrLV):
-    # 神兵升级
-    RunQuestEvent(curPlayer, "godweaponup", "%s_%s"%(weaponType, attrLV), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_RefineItem(curPlayer, alchemyLV, alchemyItemID):
-    #八卦炉炼丹
-    #这两个接口策划暂时不用,先注释,使用新的连某个丹药接口
-    #RunQuestEvent(curPlayer, "refineitem", alchemyLV, Def_RunQuestType_Normal)
-    #RunQuestEvent(curPlayer, "refineitem", "refineitem", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "refineitem", alchemyItemID, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_RefineStoveUp(curPlayer, alchemyLV):
-    #八卦炉升至X级
-    RunQuestEvent(curPlayer, "refinestoveup", alchemyLV, Def_RunQuestType_RunAll)
-    return
-
-def EventRespons_GetRealmPoint(curPlayer):
-    #获得修行点
-    RunQuestEvent(curPlayer, "getrealmpoint", "getrealmpoint", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_MWSkillUp(curPlayer):
-    #法宝技能升级
-    RunQuestEvent(curPlayer, "mwskillup", "mwskillup", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ShopBuy(curPlayer, shopid):
-    #指定商店买东西
-    RunQuestEvent(curPlayer, "shopbuy", shopid, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_GetLastRunTaskAward(curPlayer, taskType):
-    #跑环最终奖励领取
-    RunQuestEvent(curPlayer, "on_lastruntask_award", taskType, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_RunTaskAllCnt(curPlayer, tastType, allcnt):
-    #当天已完成跑环数
-    RunQuestEvent(curPlayer, "runtaskallcnt", '%s_%s'%(tastType, allcnt), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_RealmUp(curPlayer, realmlv):
-    #境界升级
-    RunQuestEvent(curPlayer, "realmup", realmlv, Def_RunQuestType_RunAll)
-    return
-
-def EventRespons_RealmXXZLAward(curPlayer, taskID):
-    #境界修仙之路完成任务
-    RunQuestEvent(curPlayer, "realmxxzlaward", taskID, Def_RunQuestType_RunAll)
-    return
-
-def EventRespons_PassQueenRelecs(curPlayer, lineID, grade):
-    #X级通关X层娲皇遗迹
-    RunQuestEvent(curPlayer, "passqueenrelecs", '%s_%s'%(lineID, grade), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_HorseUp(curPlayer):
-    #坐骑升级
-    RunQuestEvent(curPlayer, "horseup", "horseup", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_SuitPlus(curPlayer, cnt):
-    #2阶强化防具套装X件
-    RunQuestEvent(curPlayer, "suitplus", cnt, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_TrialExchange(curPlayer, costItemID):
-    #宗门试炼兑换装备
-    RunQuestEvent(curPlayer, "trialexange", costItemID, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_EquipByPlace(curPlayer, itemClassLV, equipplace):
-    #穿戴某部位装备(非时效)
-    RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality):
-    #装备合成某品质某星级
-    RunQuestEvent(curPlayer, "compoundequip", '%s_%s'%(itemColor, itemQuality), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_EquipWash(curPlayer, washType, washLV):
-    #装备洗练至X级
-    RunQuestEvent(curPlayer, "equipwash", '%s_%s'%(washType, washLV), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AddBourseItem(curPlayer):
-    #上架集市物品
-    RunQuestEvent(curPlayer, "addbourseitem", "addbourseitem", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_StoreDonate(curPlayer):
-    #捐献仙盟装备
-    RunQuestEvent(curPlayer, "storedonate", "storedonate", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_EquipPlus(curPlayer, classLV, partPlusLV):
-    #强化等级变化
-    RunQuestEvent(curPlayer, "equipplus", "equipplus", Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "equipplus", '%s_%s'%(classLV, partPlusLV), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_EquipPlusEvolve(curPlayer, nextEvolveLV):
-    #强化进化
-    RunQuestEvent(curPlayer, "equipplusevolve", "equipplusevolve", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_Talk(curPlayer, eventName):
-    #频道发言
-    RunQuestEvent(curPlayer, "talk", eventName, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_FairyDomain(curPlayer, eventType):
-    #完成缥缈仙域事件
-    RunQuestEvent(curPlayer, "fairydomain", 'fairydomain', Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "fairydomain", eventType, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AroundMission(curPlayer, missionType):
-    #完成跑环任务
-    RunQuestEvent(curPlayer, "aroundfinish", missionType, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_Pray(curPlayer, prayType):
-    #完成祈愿
-    RunQuestEvent(curPlayer, "pray", prayType, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ThinkMagicWeapon(curPlayer):
-    #感应法宝
-    RunQuestEvent(curPlayer, "thinkfabao", 'thinkfabao', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ElementSkill(curPlayer, mainSkillID, skillElementType, updSelectSkillLV):
-    #激活五行专精 主技能ID_专精类型_激活等级.xml
-    RunQuestEvent(curPlayer, "elementskill", '%s_%s_%s'%(mainSkillID, skillElementType, updSelectSkillLV), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_EquipStarUp(curPlayer):
-    #装备升星
-    RunQuestEvent(curPlayer, "equipstarup", 'equipstarup', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_InlayStone(curPlayer):
-    #宝石镶嵌
-    RunQuestEvent(curPlayer, "inlaystone", 'inlaystone', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_StoneChange(curPlayer):
-    # 宝石变更
-    RunQuestEvent(curPlayer, "stonechange", 'stonechange', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_EquipItem(curPlayer):
-    #穿脱装备
-    RunQuestEvent(curPlayer, "equipitem", 'equipitem', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_SkillUp(curPlayer, FuncType, skillLV):
-    #升级技能
-    RunQuestEvent(curPlayer, "skillup", FuncType, Def_RunQuestType_Normal)
-    RunQuestEvent(curPlayer, "skillup", '%s_%s' % (FuncType, skillLV), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_LingGenQualityUP(curPlayer, attrID, qualityLV):
-    #灵根升品
-    RunQuestEvent(curPlayer, "linggenqualityup", '%s_%s' % (attrID, qualityLV), Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AddPoint(curPlayer):
-    #灵根加点
-    RunQuestEvent(curPlayer, "addpoint", '0', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ActivityAward(curPlayer, awardIndex):
-    #活跃领奖
-    RunQuestEvent(curPlayer, "activityaward", awardIndex, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AddActivityValue(curPlayer):
-    # 增加活跃度
-    RunQuestEvent(curPlayer, "addactivity", "addactivity", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_HorsePetBoss(curPlayer):
-    #参加骑宠BOSS
-    RunQuestEvent(curPlayer, "horsepetboss", 'horsepetboss', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_LingGenReset(curPlayer):
-    #灵根重置
-    RunQuestEvent(curPlayer, "linggenreset", 'linggenreset', Def_RunQuestType_Normal)
-    return
-
-def EventRespons_UseMissionItem(curPlayer, missionID):
-    # 使用物品触发任务
-    RunQuestEvent(curPlayer, "usemissionitem", missionID, Def_RunQuestType_RunAll)
-    return
-
-def EventRespons_XBXZ(curPlayer, MWID):
-    # 仙宝寻主领奖
-    RunQuestEvent(curPlayer, "xbxz", MWID, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AddAuctionEquip(curPlayer, color):
-    # 上架装备拍品
-    RunQuestEvent(curPlayer, "addauctionequip", color, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_BuyAuctionEquip(curPlayer, color):
-    # 购买装备拍品
-    RunQuestEvent(curPlayer, "buyauctionequip", color, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_AddAuction(curPlayer):
-    # 上架拍品
-    RunQuestEvent(curPlayer, "addauction", 0, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_BuyAuction(curPlayer):
-    # 购买拍品
-    RunQuestEvent(curPlayer, "buyauction", 0, Def_RunQuestType_Normal)
-    return
-
-
-def EventRespons_OnMoneyChange(curPlayer, moneyType):
-    # 货币变更时
-    
-    # 暂开放灵石
-    if moneyType not in [IPY_GameWorld.TYPE_Price_Gold_Paper]:
-        return
-    RunQuestEvent(curPlayer, "onmoneychange", moneyType, Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ActivityPlace(curPlayer, event, runall=False):
-    ''' 活跃放置事件
-    @param event: 可启动 canstart、启动 start、可领奖 cangetreward、领奖 getreward
-    '''
-    RunQuestEvent(curPlayer, "activityplace", event, Def_RunQuestType_RunAll if runall else Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ArenaBattleOver(curPlayer):
-    # 挑战竞技场 - 结算才算
-    RunQuestEvent(curPlayer, "arenabattleover", "arenabattleover", Def_RunQuestType_Normal)
-    return
-
-def EventRespons_ArenaHighestScore(curPlayer):
-    # 刷新竞技场历史最高分
-    RunQuestEvent(curPlayer, "arenahighestscore", "arenahighestscore", Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-
-#================================================================================
-#===============================================================================
-# //08 07 玩家切换地图#tagCChangeMap
-# tagCChangeMap       *   GettagCChangeMap();
-# 
-# class   IPY_CChangeMap
-# {
-# public:
-#    //传送点ID
-#    int      GetTransportID();
-# };
-#===============================================================================
-##客户端封包响应//08 07 玩家切换地图#tagCChangeMap
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 07 玩家切换地图#tagCChangeMap
-def ChangeMap(index, tick):
-    GameWorld.GetPsycoFunc(__Func_ChangeMap)(index, tick)
-    return
-
-##客户端封包响应//08 07 玩家切换地图#tagCChangeMap
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 07 玩家切换地图#tagCChangeMap
-def __Func_ChangeMap(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    changeMapPack = IPY_GameWorld.IPY_CChangeMap()
-    
-    if PlayerChangeMap(curPlayer, changeMapPack.GetTransportID(), tick):
-        return
-    
-    #传送失败, 设置玩家可以移动
-    curPlayer.SetCanMove(True)
-    return
-#---------------------------------------------------------------------
-##玩家通过传送点, 传送地图
-#@param curPlayer 玩家实例
-#@param transportID 传送点ID
-#@param tick 时间戳
-#@return 布尔值
-#@remarks 玩家通过传送点, 传送地图
-def PlayerChangeMap(curPlayer, transportID, tick):
-    transport = GameWorld.GetGameData().FindTransportByID(transportID)
-    if transport == None:
-        #GameWorld.Log("没有此切换点 = %s"%(transportID) , curPlayer.GetPlayerID())
-        return False
-
-    #切换地图坐标距离
-    dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), transport.GetPosX(), transport.GetPosY())
-    #不在切换点范围内
-    if dist > transport.GetRange() + 16:
-#    if curPlayer.GetPosX() < transport.GetPosX()-dist or curPlayer.GetPosX() > transport.GetPosX()+dist or curPlayer.GetPosY() < transport.GetPosY()-dist or curPlayer.GetPosY() > transport.GetPosY()+dist:
-        #GameWorld.Log("玩家不在切换点内" , curPlayer.GetPlayerID())
-        curPlayer.ResetPos(curPlayer.GetPosX(), curPlayer.GetPosY())
-        GameWorld.GodLog(curPlayer, '传送点距离过远 = %s, Range = %s'%(dist, transport.GetRange()))
-        return False
-
-    #在切换点范围内,切换地图
-    mapID = transport.GetTargetMapID()
-    targetPosX = transport.GetTargetPosX()
-    targetPosY = transport.GetTargetPosY()
-    
-    if not PlayerControl.CanEnterMap(curPlayer, mapID):
-        #玩家不可进入该场景
-        return False
-
-#    #添加有限无敌BUFF
-#    SkillCommon.AddBuffBySkillType(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
-    #2. 玩家切换地图(地图ID,X,Y)
-    curTruck = curPlayer.GetTruck()
-    if curTruck:
-        isTakeTruck = curTruck.GetMode() != IPY_GameWorld.trmStop
-    else:
-        isTakeTruck = False
-        
-    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, targetPosX, targetPosY, isTakeTruck, canLock = False)
-    return True
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 0A 结束事件#tagCCancelEvent
-# tagCCancelEvent       *   GettagCCancelEvent();
-# 
-# class   IPY_CCancelEvent
-# {
-# public:
-# 
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应//08 0A 结束事件#tagCCancelEvent
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 0A 结束事件#tagCCancelEvent
-def ExitEvent(index, tick):
-    GameWorld.GetPsycoFunc(__Func_ExitEvent)(index, tick)
-    return
-
-##客户端封包响应//08 0A 结束事件#tagCCancelEvent
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 0A 结束事件#tagCCancelEvent
-def __Func_ExitEvent(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    DoExitEvent(curPlayer)
-    #副本离开事件
-    FBLogic.OnExitEvent(curPlayer, tick)
-    return
-#---------------------------------------------------------------------
-#把当前任务通知给客户端
-#/**任务状态定义*/
-#enum        TMissionState
-#{
-#    msNoMission = 0,    ///<未接
-#    msProcessing,       ///<进行中
-#    msCanComplete,      ///<可提交
-#    msComplete,         ///<已完成
-#    msFail,             ///<失败
-#    msNoExist,          ///<骠车不存在
-#};
-#特殊任务状态定义: 
-#0 : 未接
-#-1: 已完成
-#-2: 骠车丢失
-#-3: 骠车被打烂
-#-4: 任务未达到可接状态
-#-5: 任务可提交
-        
-##刷新单独的任务
-#@param curPlayer 玩家实例
-#@param curMission 任务实例
-#@param isFirstLogin 是否第一次登陆
-#@return 返回值无意义
-#@remarks 刷新单独的任务
-def NotifyOneMission(curPlayer, curMission, isFirstLogin = False, isNotifyAll = True):
-    #state = curMission.GetState()
-    
-    #通知任务字典
-    if isNotifyAll:
-        curMission.Notify_AllProperty()
-    
-    #新方式: 刷新这个
-    QuestRunner.RefreshMission(curPlayer, curMission)
-        
-#    GameWorld.Log("state = %d"%state)
-#    missionState = curMission.GetMissionState()
-#    lastMissionState = missionState
-#    taskID = curMission.GetMissionID()
-#    
-#    if QuestManager.FindQuest(taskID) == None:
-#        GameWorld.Log("任务ID = %d 没有任务描述!"%taskID)
-#        return
-#
-#    questData = QuestManager.FindQuest(taskID)
-#    taskName = questData.Name
-#    
-#    if taskName == "":
-#        #GameWorld.Log("任务名称 = 空")
-#        return
-#    
-#    parentID = 0
-#    if state == -1:
-#        missionState = IPY_GameWorld.msComplete
-#    if state == -4:
-#        missionState = IPY_GameWorld.msNoExist
-#        
-#    if missionState == IPY_GameWorld.msNoMission and state != 0:
-#        missionState = IPY_GameWorld.msProcessing
-#        
-#    curMission.SetMissionState(missionState)
-#    
-#    if questData.Type == 8 and state == 0:
-#        #任务类型:8 为勇者任务(卷轴任务), 不通知给客户端
-#        return
-#    
-#    
-#    
-#    if state == 0:
-#        #状态等于0, 只显示灯
-##        GameWorld.Log("状态等于0, 只显示灯")
-#        QuestRunner.ShowMissionLight(curPlayer, curMission)
-#        
-#        #在任务查询中添加这个任务
-#        QuestRunner.NotifyNewQuestInfo(curPlayer, curMission)
-#        return
-#    
-#    if not isFirstLogin and lastMissionState == missionState:
-#        #GameWorld.Log("lastMissionState = %d  curMissionState = %s"%(lastMissionState, missionState))
-#        GameWorld.Log("玩家当前任务更新, 描述不变")
-#        return
-#    GameWorld.Log("玩家当前任务: %s, state = %d"%(taskName, state))
-#    
-#    
-#    #if questData.Invisible == 0 or missionState !=:
-#    #    #如果任务为隐藏任务, 则不显示给客户端看到
-#    taskType = QuestManager.FindQuest(taskID).Type
-#    curPlayer.NotifyTaskInfo(taskType, questData.NameCode, taskID, parentID, missionState)
-#    
-#        
-#    if state == -1 or state == -4:
-#        #任务ID为-1或者-4, 表示任务已经完成, 不需要进一步显示任务详细情况
-#        curPlayer.Sync_ClearMapMissionLight(taskID)
-#        return
-#        
-#
-#    
-#    #发送所有任务追踪信息
-#    QuestRunner.ShowMissionInfo(curPlayer, curMission, -1)
-#
-#    #发送所有灯的信息
-#    QuestRunner.ShowMissionLight(curPlayer, curMission)
-
-#---------------------------------------------------------------------    
-##把玩家当前的所有任务发送给客户端, 如果玩家是第一次登录, 把所有任务发给客户端   
-#@param curPlayer 玩家实例
-#@param isFirstLogin 是否第一次登陆
-#@return 返回值无意义
-#@remarks 把玩家当前的所有任务发送给客户端, 如果玩家是第一次登录, 把所有任务发给客户端   
-def NotifyAllQuestDetail(curPlayer, isFirstLogin = False):
-    notifyMissionList = []
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        notifyMissionList.append(curMission)
-    
-    for curMission in notifyMissionList:
-        #在通知任务的时候, 会删除任务, 所以要重建一次列表
-        NotifyOneMission(curPlayer, curMission, isFirstLogin)
-        
     return
-
-#任务描述
-#def GetTaskDetail(index, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendPack = IPY_GameWorld.IPY_CGetTaskDetail()
-#    sendTaskID = sendPack.GetTaskID()
-#    curTask = curPlayer.FindMission(sendTaskID)
-#    if curTask == None:
-#        GameWorld.Log("没有这个任务%d"%sendTaskID)
-#        return 
-#
-#    descriptionIndex = 0
-#    state = curTask.GetState()
-#    questDescriptionList = QuestManager.FindQuest(sendTaskID).QuestDescriptionList
-#    
-#    rewardNode = None
-#    if state == -1 or state ==0:
-#        #任务已经完成/没有接, 没有奖励节点
-#        descriptionIndex = len(questDescriptionList) - 1
-#        questDescs = QuestManager.GetQuestDescriptions()
-#        if questDescs.has_key(sendTaskID):
-#            detail = questDescs[sendTaskID]
-#    else:
-#        descriptionIndex = curTask.GetDescriptionIndex()
-#        #得到任务奖励, 拼接
-#        rewardNode = QuestRunner.GetRewardNode(curPlayer, curTask)
-#        #任务描述替换
-#        detail = questDescriptionList[descriptionIndex].Msg 
-#        if detail == "":
-#            return
-#        
-#        
-#        if rewardNode != None:
-#            #任务描述与任务奖励替换
-#            #detail = detail + QuestRunner.ReplaceNPCTalkText(curPlayer, curTask, rewardNode.FindChildNode("msg").GetXML())
-#            detail = "%s %s"%(detail, rewardNode.FindChildNode("msg").GetAttribute("code"))
-#    curPlayer.NotifyTaskDetail(sendPack.GetType(), curTask, detail)
-#    return
 
 #############################################################
 ##回绝装备加工封包
@@ -2421,55 +191,7 @@
         return
     
     return GameWorld.GetPsycoFunc(callFunc)(curPlayer, tick)
-#---------------------------------------------------------------------
-#    //08 11 特殊任务结果#tagEndSpecialEvent
-#
-#    struct  tagEndSpecialEvent
-#    {
-#        tagHead     Head;
-#        BYTE        Type;       //1. 开始打造 2. 开始鉴定 3. ...
-#    };
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 0B 打造物品#tagCMakeItem
-# tagCMakeItem       *   GettagCMakeItem();
-# 
-# class   IPY_CMakeItem
-# {
-# public:
-#    //打造的物品ID
-#    int      GetMakeItemID();
-# };
-#===============================================================================
-##客户端封包响应//08 0B 打造物品#tagCMakeItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 0B 打造物品#tagCMakeItem
-def MakeItem(index, tick):
-    return
 
-#===============================================================================
-# //08 19 打造装备#tagCBuildEquip
-# int GetBuildID(); //打造ID
-# int GetItem1Count(); //使用物品1个数
-# int GetItem2Count(); //使用物品2个数
-# int GetItem3Count(); //使用物品3个数
-# int GetItem4Count(); //使用物品4个数
-# int GetItem5Count(); //使用物品5个数
-# int GetItem6Count(); //使用物品6个数
-# int GetBuildMode(); //打造模式,目前有:默认,绑定,非绑定打造模式
-#===============================================================================
-##客户端封包响应//08 19 打造装备#tagCBuildEquip
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 19 打造装备#tagCBuildEquip
-def BuildEquip(index, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    FuncDirectCall(curPlayer, "Func_102", "BuildEquip", tick)
-    return
-#---------------------------------------------------------------------
 #===============================================================================
 # //08 03 玩家购买物品#tagCBuyItemList
 # tagCBuyItemList       *   GettagCBuyItemList();
@@ -2515,224 +237,9 @@
 def BuyItemBack(index, clientPack, tick):
     #得到玩家的对象
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
     FunctionNPCCommon.BuyItemBack(curPlayer, clientPack, tick)
-
     return
 
-
-#===============================================================================
-# //0E 04 玩家鉴定物品#tagCShopIdentifyItem
-# tagCShopIdentifyItem       *   GettagCShopIdentifyItem();
-# 
-# class   IPY_CShopIdentifyItem
-# {
-# public:
-# 
-#    int      GetTYPE();
-# };
-#===============================================================================
-##客户端封包响应//0E 04 玩家鉴定物品#tagCShopIdentifyItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0E 04 玩家鉴定物品#tagCShopIdentifyItem
-def IdentifyItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 01 打开信件#tagCOpenLetter
-# tagCOpenLetter       *   GettagCOpenLetter();
-# 
-# class   IPY_COpenLetter
-# {
-# public:
-#    //信件ID
-#    char *      GetMailID();
-# };
-#===============================================================================
-##客户端封包响应//12 01 打开信件#tagCOpenLetter
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 01 打开信件#tagCOpenLetter
-def OpenLetter(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "OpenLetter", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 02 发送信件#tagCSendMail
-# tagCSendMail       *   GettagCSendMail();
-# 
-# class   IPY_CSendMail
-# {
-# public:
-#    //目标名称
-#    char *      GetTagName();
-#    //主题
-#    char *      GetTitle();
-# 
-#    int      GetContentLen();
-#    //size = ContentLen
-#    char *      GetContent();
-#    //银子
-#    int      GetMoney();
-#    //类型: TLetterType, 自己付费, 对方付费
-#    int      GetLetterType();
-#    //发送物品数量
-#    int      GetItemCount();
-#    //size = ItemCount
-#    int      GetItem(int index);
-# };
-#===============================================================================
-##客户端封包响应//12 02 发送信件#tagCSendMail
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 02 发送信件#tagCSendMail
-def SendLetter(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "SendLetter", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 05 退信#tagCReturnMail
-# tagCReturnMail       *   GettagCReturnMail();
-# 
-# class   IPY_CReturnMail
-# {
-# public:
-# 
-#    char *      GetMailID();
-# };
-#===============================================================================
-##客户端封包响应//12 05 退信#tagCReturnMail
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 05 退信#tagCReturnMail
-def ReturnLetter(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "ReturnLetter", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 06 删除信件#tagCDeleteMail
-# tagCDeleteMail       *   GettagCDeleteMail();
-# 
-# class   IPY_CDeleteMail
-# {
-# public:
-# 
-#    char *      GetMailID();
-# };
-#===============================================================================
-##客户端封包响应//12 06 删除信件#tagCDeleteMail
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 06 删除信件#tagCDeleteMail
-def DeleteLetter(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "DeleteLetter", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 07 置为保存#tagCSaveMail
-# tagCSaveMail       *   GettagCSaveMail();
-# 
-# class   IPY_CSaveMail
-# {
-# public:
-# 
-#    char *      GetMailID();
-# };
-#===============================================================================
-##客户端封包响应//12 07 置为保存#tagCSaveMail
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 07 置为保存#tagCSaveMail
-def SaveLetter(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "SaveLetter", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 03 提取信件的钱#tagCGetMailMoney
-# tagCGetMailMoney       *   GettagCGetMailMoney();
-# 
-# class   IPY_CGetMailMoney
-# {
-# public:
-# 
-#    char *      GetMailID();
-# };
-#===============================================================================
-##客户端封包响应//12 03 提取信件的钱#tagCGetMailMoney
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 03 提取信件的钱#tagCGetMailMoney
-def GetLetterMoney(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "GetLetterMoney", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //12 04 提取信件物品#tagCGetMailItem
-# tagCGetMailItem       *   GettagCGetMailItem();
-# 
-# class   IPY_CGetMailItem
-# {
-# public:
-# 
-#    char *      GetMailID();
-# };
-#===============================================================================
-##客户端封包响应//12 04 提取信件物品#tagCGetMailItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//12 04 提取信件物品#tagCGetMailItem
-def GetLetterItem(index, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncCall(curPlayer, "GetLetterItem", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 05 玩家修理物品#tagCShopRepairItem
-# tagCShopRepairItem       *   GettagCShopRepairItem();
-# 
-# class   IPY_CShopRepairItem
-# {
-# public:
-# 
-#    int      GetPackType();
-# 
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//08 05 玩家修理物品#tagCShopRepairItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 05 玩家修理物品#tagCShopRepairItem
-def RepairItem(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, "FunctionNPCCommon", "RepairItem", tick)
-    return
-
-#---------------------------------------------------------------------
 #===============================================================================
 # //08 06 卖物品#tagCPlayerSellItem
 # tagCPlayerSellItem       *   GettagCPlayerSellItem();
@@ -2753,805 +260,9 @@
 #@remarks 客户端封包响应//08 06 卖物品#tagCPlayerSellItem
 def SellItem(index, tick):
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
-    result = FuncDirectCall(curPlayer, "FunctionNPCCommon", "SellItem", tick)
-    
-    sendData = IPY_GameWorld.IPY_CPlayerSellItem()
-    packType = sendData.GetPackType()
+    FuncDirectCall(curPlayer, "FunctionNPCCommon", "SellItem", tick)
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 0C 合成#tagCMerge
-# tagCMerge       *   GettagCMerge();
-# 
-# class   IPY_CMerge
-# {
-#    int GetCompoundTimes();//合成次数
-#    int GetIsAutoBuy();//是否自动购买附加材料
-# };
-#===============================================================================
-##客户端封包响应//08 0C 合成#tagCMerge
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 0C 合成#tagCMerge
-def MergeItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 0E 物品绑定#tagCBindItem
-# tagCBindItem       *   GettagCBindItem();
-# 
-# class   IPY_CBindItem
-# {
-# public:
-#    //绑定印记的index
-#    int      GetBindStoneIndex();
-# };
-#===============================================================================
-##客户端封包响应//08 0E 物品绑定#tagCBindItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 0E 物品绑定#tagCBindItem
-def BindItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 0F 装备打孔#tagCMakeHoleItem
-# tagCMakeHoleItem       *   GettagCMakeHoleItem();
-# 
-# class   IPY_CMakeHoleItem
-# {
-# public:
-#    //是否自动购买, 如果自动购买, 则下面字段无效
-#    int      GetAutoBuyItem();
-#    //服务器端自己找打孔位置
-#    int      GetMakeHoleType();
-#    //是否使用绑定材料, 为1是全部用, 0为只用不绑定的
-#    int      GetIsUseBindItem();
-# };
-#===============================================================================
-# ----->>>秦始皇版封包, 暂时不用<<<-----
-##客户端封包响应//08 0F 装备打孔#tagCMakeHoleItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 0F 装备打孔#tagCMakeHoleItem
-def MakeHoleItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 10 装备升星#tagCItemLVUpStar
-# tagCItemLVUpStar       *   GettagCItemLVUpStar();
-# 
-# class   IPY_CItemLVUpStar
-# {
-# public:
-#    //是否自动购买, 如果自动购买, 则下面字段无效
-#    int      GetAutoBuyItem();
-#    //背包星石位置
-#    int      GetStarStoneIndex();
-#    //是否使用防爆符
-#    int      GetUseFangBaoFu();
-#    //防爆附Index
-#    int      GetFangBaoFuIndex();
-#    //是否自动购买防爆符
-#    int      GetAutoBuyFangBaoFu();
-# };
-#===============================================================================
-##客户端封包响应08 10 装备升星#tagCItemLVUpStar
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应08 10 装备升星#tagCItemLVUpStar
-def ItemLVUpStar(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 11 镶嵌宝石#tagCInsertStone
-# tagCInsertStone       *   GettagCInsertStone();
-# 
-# class   IPY_CInsertStone
-# {
-# public:
-#    //宝石位置
-#    int      GetStoneIndex();
-# };
-#===============================================================================
-##客户端封包响应//08 11 镶嵌宝石#tagCInsertStone
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 11 镶嵌宝石#tagCInsertStone
-def InsertStone(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 12 拆解物品#tagCDepartItem
-# tagCDepartItem       *   GettagCDepartItem();
-# 
-# class   IPY_CDepartItem
-# {
-# public:
-# 
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应//08 12 拆解物品#tagCDepartItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 12 拆解物品#tagCDepartItem
-def DepartItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 01 合成物品放入背包#tagCPutItemInComposePack
-# tagCPutItemInComposePack       *   GettagCPutItemInComposePack();
-# 
-# class   IPY_CPutItemInComposePack
-# {
-# public:
-#    //背包位置
-#    int      GetItemIndex();
-#    //放入位置
-#    int      GetMakePackIndex();
-#    //放入数量
-#    int      GetCount();
-# };
-#===============================================================================
-##客户端封包响应//0D 01 合成物品放入背包#tagCPutItemInComposePack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 01 合成物品放入背包#tagCPutItemInComposePack
-def PutItemInCompose(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 02 取出合成背包物品#tagCGetItemInComposePack
-# tagCGetItemInComposePack       *   GettagCGetItemInComposePack();
-# 
-# class   IPY_CGetItemInComposePack
-# {
-# public:
-#    //合成位置
-#    int      GetComposePackIndex();
-#    //物品位置
-#    int      GetItemIndex();
-#    //取出数量
-#    int      GetCount();
-# };
-#===============================================================================
-##客户端封包响应//0D 02 取出合成背包物品#tagCGetItemInComposePack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 02 取出合成背包物品#tagCGetItemInComposePack
-def GetItemInCompose(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 03 合成背包中拖动物品#tagCMoveItemInComposePack
-# tagCMoveItemInComposePack       *   GettagCMoveItemInComposePack();
-# 
-# class   IPY_CMoveItemInComposePack
-# {
-# public:
-#    //起始位置
-#    int      GetSrcIndex();
-#    //目标位置
-#    int      GetDestIndex();
-# 
-#    int      GetCount();
-# };
-#===============================================================================
-##客户端封包响应//0D 03 合成背包中拖动物品#tagCMoveItemInComposePack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 03 合成背包中拖动物品#tagCMoveItemInComposePack
-def MoveItemInCompose(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 04 物品放入准备拆解背包#tagCPutItemInBreakPreparePack
-# tagCPutItemInBreakPreparePack       *   GettagCPutItemInBreakPreparePack();
-# 
-# class   IPY_CPutItemInBreakPreparePack
-# {
-# public:
-#    //背包位置
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//0D 04 物品放入准备拆解背包#tagCPutItemInBreakPreparePack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 04 物品放入准备拆解背包#tagCPutItemInBreakPreparePack
-def PutItemInBreakPreparePack(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 05 从拆解准备背包中取出#tagCGetBackItemInBreakPrepare
-# tagCGetBackItemInBreakPrepare       *   GettagCGetBackItemInBreakPrepare();
-# 
-# class   IPY_CGetBackItemInBreakPrepare
-# {
-# public:
-#    //拆解背包的位置
-#    int      GetBreakPrepareIndex();
-#    //拖到目的地的位置
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应 //0D 05 从拆解准备背包中取出#tagCGetBackItemInBreakPrepare
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //0D 05 从拆解准备背包中取出#tagCGetBackItemInBreakPrepare
-def GetBackItemInBreakPrepare(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 06 从拆解结果背包中取出#tagCGetBackItemInBreakItem
-# tagCGetBackItemInBreakItem       *   GettagCGetBackItemInBreakItem();
-# 
-# class   IPY_CGetBackItemInBreakItem
-# {
-# public:
-#    //拆解结果背包位置
-#    int      GetBreakItemIndex();
-#    //取出数目
-#    int      GetCount();
-#    //背包位置
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//0D 06 从拆解结果背包中取出#tagCGetBackItemInBreakItem
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 06 从拆解结果背包中取出#tagCGetBackItemInBreakItem
-def GetBackItemInBreakItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 07 取出合成结果背包#tagCGetItemFromResultPack
-# tagCGetItemFromResultPack       *   GettagCGetItemFromResultPack();
-# 
-# class   IPY_CGetItemFromResultPack
-# {
-# public:
-# 
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//0D 07 取出合成结果背包#tagCGetItemFromResultPack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 07 取出合成结果背包#tagCGetItemFromResultPack
-def GetItemFromResultPack(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 08 放入合成结果背包#tagCPutInResultPack
-# tagCPutInResultPack       *   GettagCPutInResultPack();
-# 
-# class   IPY_CPutInResultPack
-# {
-# public:
-# 
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//0D 08 放入合成结果背包#tagCPutInResultPack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0D 08 放入合成结果背包#tagCPutInResultPack
-def PutItemInResultPack(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0E 01 鉴定物品放入背包#tagCPutItemInIdentify
-# tagCPutItemInIdentify       *   GettagCPutItemInIdentify();
-# 
-# class   IPY_CPutItemInIdentify
-# {
-# public:
-#    //背包位置
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//0E 01 鉴定物品放入背包#tagCPutItemInIdentify
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0E 01 鉴定物品放入背包#tagCPutItemInIdentify
-def PutItemInIdentify(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0E 02 取出鉴定背包内的物品#tagCGetBackItemInIdentify
-# tagCGetBackItemInIdentify       *   GettagCGetBackItemInIdentify();
-# 
-# class   IPY_CGetBackItemInIdentify
-# {
-# public:
-#    //物品位置
-#    int      GetItemIndex();
-#    //取出数量
-#    int      GetCount();
-# };
-#===============================================================================
-##客户端封包响应//0E 02 取出鉴定背包内的物品#tagCGetBackItemInIdentify
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0E 02 取出鉴定背包内的物品#tagCGetBackItemInIdentify
-def GetItemInIdentify(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0E 03 鉴定结束#tagCIdentifyOK
-# tagCIdentifyOK       *   GettagCIdentifyOK();
-# 
-# class   IPY_CIdentifyOK
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应//0E 03 鉴定结束#tagCIdentifyOK
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0E 03 鉴定结束#tagCIdentifyOK
-def IdentifyOK(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 15 拆解物品宝石#tagCBreakItemStone
-# tagCBreakItemStone       *   GettagCBreakItemStone();
-# 
-# class   IPY_CBreakItemStone
-# {
-# public:
-#    //物品的第几个宝石
-#    int      GetStoneIndex();
-# };
-#===============================================================================
-##客户端封包响应//08 15 拆解物品宝石#tagCBreakItemStone
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 15 拆解物品宝石#tagCBreakItemStone
-def DigItemStone(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 16 使用威尔刚#tagCUseWeiErGangIncreaseEndure
-# tagCUseWeiErGangIncreaseEndure       *   GettagCUseWeiErGangIncreaseEndure();
-# 
-# class   IPY_CUseWeiErGangIncreaseEndure
-# {
-# public:
-#    //威尔刚位置
-#    int      GetGangStoneIndex();
-# };
-#===============================================================================
-##客户端封包响应//08 16 使用威尔刚#tagCUseWeiErGangIncreaseEndure
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 16 使用威尔刚#tagCUseWeiErGangIncreaseEndure
-def UseWegAddEndure(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 27 传说物品合成#tagCLegendMerge
-# tagCLegendMerge       *   GettagCLegendMerge();
-# 
-# class   IPY_CLegendMerge
-# {
-# public:
-#    //Index
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//07 27 传说物品合成#tagCLegendMerge
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 27 传说物品合成#tagCLegendMerge
-def LegendItemMerge(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 17 解除绑定#tagCCancelBind
-# tagCCancelBind       *   GettagCCancelBind();
-# 
-# class   IPY_CCancelBind
-# {
-# public:
-#    //绑定印记的index
-#    int      GetUnBindStoneIndex();
-# };
-#===============================================================================
-##客户端封包响应//08 17 解除绑定#tagCCancelBind
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 17 解除绑定#tagCCancelBind
-def UnBindItem(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 18 战魂套装合成#tagCSoulOfWarMerge
-# tagCSoulOfWarMerge       *   GettagCSoulOfWarMerge();
-# 
-# class   IPY_CSoulOfWarMerge
-# {
-# public:
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-# };
-#===============================================================================
-##客户端封包响应//08 18 战魂套装合成#tagCSoulOfWarMerge
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 18 战魂套装合成#tagCSoulOfWarMerge
-def SoulOfWarEquip(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 23 修理法宝#tagCRepairFabao
-# tagCRepairFabao       *   GettagCRepairFabao();
-# 
-# class   IPY_CRepairFabao
-# {
-# public:
-#    //法宝的位置
-#    int      GetFabaoIndex();
-# };
-#===============================================================================
-##客户端封包响应//07 23 修理法宝#tagCRepairFabao
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 23 修理法宝#tagCRepairFabao
-def RepairFaBao(index , tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 22 提炼法宝#tagCForgeFaBao
-# tagCForgeFaBao       *   GettagCForgeFaBao();
-# 
-# class   IPY_CForgeFaBao
-# {
-# public:
-#    //提炼多少分钟
-#    int      GetTime();
-# };
-#===============================================================================
-##客户端封包响应//07 22 提炼法宝#tagCForgeFaBao
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 22 提炼法宝#tagCForgeFaBao
-def ForgeFaBao(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 25 法宝合成#tagCFaBaoMix
-# tagCFaBaoMix       *   GettagCFaBaoMix();
-# 
-# class   IPY_CFaBaoMix
-# {
-# public:
-#    //3个合成一个
-#    int      GetItemIndex1();
-# 
-#    int      GetItemIndex2();
-# 
-#    int      GetItemIndex3();
-# };
-#===============================================================================
-##客户端封包响应//07 25 法宝合成#tagCFaBaoMix
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 25 法宝合成#tagCFaBaoMix
-def MixFaBao(index , tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 34 法宝飞升#tagCFaBaoFly
-# tagCFaBaoFly       *   GettagCFaBaoFly();
-# 
-# class   IPY_CFaBaoFly
-# {
-# public:
-#    //Index
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//07 34 法宝飞升#tagCFaBaoFly
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 34 法宝飞升#tagCFaBaoFly
-def FaBaoFly(index , tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 35 抹去法宝技能#tagCFaBaoForget
-# tagCFaBaoForget       *   GettagCFaBaoForget();
-# 
-# class   IPY_CFaBaoForget
-# {
-# public:
-#    //Index
-#    int      GetItemIndex();
-# };
-#===============================================================================
-##客户端封包响应//07 35 抹去法宝技能#tagCFaBaoForget
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 35 抹去法宝技能#tagCFaBaoForget
-def FaBaoForget(index , tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 36 法宝融合#tagCFaBaoMerge
-# tagCFaBaoMerge       *   GettagCFaBaoMerge();
-# 
-# class   IPY_CFaBaoMerge
-# {
-# public:
-#    //左边那个法宝
-#    int      GetFaBao1Index();
-#    //右边那个法宝
-#    int      GetFaBao2Index();
-#    //第一个物品, 红红的豆子
-#    int      GetItem1Cnt();
-#    //第二个物品, 圆圆的球
-#    int      GetItem2Cnt();
-#    //第三个物品, 卷轴
-#    int      GetItem3Cnt();
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-# };
-#===============================================================================
-##客户端封包响应//07 36 法宝融合#tagCFaBaoMerge
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 36 法宝融合#tagCFaBaoMerge
-def FaBaoMerge(index , tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0F 0E 家族捐献银子#tagCContributeSilver
-def ContributeFamilyMoney(index , tick):
-    # 使用新 A6 05  家族捐献 #tagCMFamilyDonate
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 28 5行转换#tagCItemChangeProperty
-# tagCItemChangeProperty       *   GettagCItemChangeProperty();
-# 
-# class   IPY_CItemChangeProperty
-# {
-# public:
-#    //是否材料不足自动购买
-#    int      GetAutoBuyStuff();
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-# };
-#===============================================================================
-##客户端封包响应//07 28 5行转换#tagCItemChangeProperty
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 28 5行转换#tagCItemChangeProperty
-def ItemChangeProperty(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 29 灵魂封印#tagCItemChangeGiveSoul
-# tagCItemChangeGiveSoul       *   GettagCItemChangeGiveSoul();
-# 
-# class   IPY_CItemChangeGiveSoul
-# {
-# public:
-#    //是否材料不足自动购买
-#    int      GetAutoBuyStuff();
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-# };
-#===============================================================================
-##客户端封包响应//07 29 灵魂封印#tagCItemChangeGiveSoul
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 29 灵魂封印#tagCItemChangeGiveSoul
-def ItemChangeGiveSoul(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 30 灵魂转换#tagCItemChangeSoul
-# tagCItemChangeSoul       *   GettagCItemChangeSoul();
-# 
-# class   IPY_CItemChangeSoul
-# {
-# public:
-#    //是否材料不足自动购买
-#    int      GetAutoBuyStuff();
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-#    //是否使用灵魂石
-#    int      GetUseIceStone();
-#    //是否自动购买
-#    int      GetIceStoneAutoBuy();
-# };
-#===============================================================================
-##客户端封包响应//07 30 灵魂转换#tagCItemChangeSoul
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 30 灵魂转换#tagCItemChangeSoul
-def ItemChangeSoul(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 31 签名改变珠#tagCItemChangeMark
-# tagCItemChangeMark       *   GettagCItemChangeMark();
-# 
-# class   IPY_CItemChangeMark
-# {
-# public:
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-# };
-#===============================================================================
-##客户端封包响应//07 31 签名改变珠#tagCItemChangeMark
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 31 签名改变珠#tagCItemChangeMark
-def ItemChangeMark(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 32 签名珠#tagCItemChangeGiveMark
-# tagCItemChangeGiveMark       *   GettagCItemChangeGiveMark();
-# 
-# class   IPY_CItemChangeGiveMark
-# {
-# public:
-#    //是否使用绑定材料
-#    int      GetUseBindItem();
-# };
-#===============================================================================
-##客户端封包响应//07 32 签名珠#tagCItemChangeGiveMark
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 32 签名珠#tagCItemChangeGiveMark
-def ItemChangeGiveMark(index, tick):
-    return
-
-#---------------------------------------------------------------------
-##重置背包等级
-#@param curPlayer 玩家实例
-#@param addPackCnt 开启等级
-#@return 布尔值
-#@remarks 自定义函数 设置背包等级
-def ResetBackPack(curPlayer, addPackCnt = 1):
-    packType = IPY_GameWorld.rptItem
-    
-    #初始化玩家背包
-    if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
-        return
-    
-    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
-    
-    #已经开启的背包格子数
-    packCount = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName)
-    resetPackCnt = packCount + addPackCnt
-
-    curPack = curPlayer.GetItemManager().GetPack(packType)
-        
-    if resetPackCnt > curPack.GetMaxCount():
-        return False
-    
-    #设置玩家背包数量
-    curPack.SetCount(resetPackCnt)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, keyName, curPlayer.NomalDictGetProperty(keyName) + addPackCnt)
-    
-    #初始化玩家背包
-    PlayerControl.Init_ItemPack(curPlayer)
-
-    PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_149184", [addPackCnt])
-    return True
-#---------------------------------------------------------------------
-##设置仓库等级
-#@param curPlayer 玩家实例
-#@param addWarehouseCnt 仓库等级
-#@param needNotify 是否需要系统提示
-#@return 布尔值
-#@remarks 自定义函数 设置仓库等级
-def ResetWarehouse(curPlayer, addWarehouseCnt = 1, needNotify = True):
-    packType = IPY_GameWorld.rptWarehouse
-    #初始化玩家背包
-    if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
-        return
-    
-    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
-    count = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName) + addWarehouseCnt
-
-    curPack = curPlayer.GetItemManager().GetPack(packType)
-        
-    if count > curPack.GetMaxCount():
-        return False
-    
-    #设置仓库格子数
-    curPack.SetCount(count)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, keyName, curPlayer.NomalDictGetProperty(keyName) + addWarehouseCnt)
-    
-    #初始化仓库
-    PlayerControl.Init_Warehouse(curPlayer)
-    
-    if not needNotify:
-        return True 
-    
-    PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_874335", [addWarehouseCnt])
-    return True
-#---------------------------------------------------------------------
 #===============================================================================
 # //0C 01 背包物品放入仓库#tagCPutItemInWarehouse
 # tagCPutItemInWarehouse       *   GettagCPutItemInWarehouse();
@@ -3603,169 +314,6 @@
     FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "GetItemInWarehouse", tick)
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 03 仓库取出金钱#tagCGetMoneyInWarehouse
-# tagCGetMoneyInWarehouse       *   GettagCGetMoneyInWarehouse();
-# 
-# class   IPY_CGetMoneyInWarehouse
-# {
-# public:
-#    //金钱类型
-#    int      GetMoneyType();
-#    //钱
-#    int      GetMoney();
-# };
-#===============================================================================
-##客户端封包响应//0C 03 仓库取出金钱#tagCGetMoneyInWarehouse
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 03 仓库取出金钱#tagCGetMoneyInWarehouse
-def GetMoneyInWarehouse(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "GetMoneyInWarehouse", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 04 仓库放入金钱#tagCPutMoneyInWarehouse
-# tagCPutMoneyInWarehouse       *   GettagCPutMoneyInWarehouse();
-# 
-# class   IPY_CPutMoneyInWarehouse
-# {
-# public:
-#    //金钱类型
-#    int      GetMoneyType();
-#    //金钱
-#    int      GetMoney();
-# };
-#===============================================================================
-##客户端封包响应//0C 04 仓库放入金钱#tagCPutMoneyInWarehouse
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 04 仓库放入金钱#tagCPutMoneyInWarehouse
-def PutMoneyInWarehouse(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "PutMoneyInWarehouse", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 05 设置仓库密码#tagCSetWarehousePsw
-# tagCSetWarehousePsw       *   GettagCSetWarehousePsw();
-# 
-# class   IPY_CSetWarehousePsw
-# {
-# public:
-#    //当前密码(空表示没有密码)
-#    char *      GetPsw();
-#    //旧密码
-#    char *      GetOldPsw();
-# };
-#===============================================================================
-##客户端封包响应//0C 05 设置仓库密码#tagCSetWarehousePsw
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 05 设置仓库密码#tagCSetWarehousePsw
-def SetWarehousePsw(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "SetWarehousePsw", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 06 锁定仓库#tagCSetWarehouseLock
-# tagCSetWarehouseLock       *   GettagCSetWarehouseLock();
-# 
-# class   IPY_CSetWarehouseLock
-# {
-# public:
-#    //0: 解锁 1:锁定
-#    int      GetIsLock();
-# };
-#===============================================================================
-##客户端封包响应//0C 06 锁定仓库#tagCSetWarehouseLock
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 06 锁定仓库#tagCSetWarehouseLock
-def SetWarehouseLock(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "SetWarehouseLock", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 07 客户端发送仓库密码#tagSendWarehousePsw
-# tagSendWarehousePsw       *   GettagSendWarehousePsw();
-# 
-# class   IPY_SendWarehousePsw
-# {
-# public:
-# 
-#    char *      GetPsw();
-# };
-#===============================================================================
-##客户端封包响应//0C 07 客户端发送仓库密码#tagSendWarehousePsw
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 07 客户端发送仓库密码#tagSendWarehousePsw
-def SendWarehousePsw(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "SendWarehousePsw", tick)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 08 第一次打开仓库#tagCInitWarehousePsw
-# tagCInitWarehousePsw       *   GettagCInitWarehousePsw();
-# 
-# class   IPY_CInitWarehousePsw
-# {
-# public:
-#    //密码
-#    char *      GetPsw();
-# };
-#===============================================================================
-##客户端封包响应//0C 08 第一次打开仓库#tagCInitWarehousePsw
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 08 第一次打开仓库#tagCInitWarehousePsw
-def InitWarehousePsw(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "InitWarehousePsw", tick)
-    DoExitEvent(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 10 仓库重整#tagCWarehouseReset
-# tagCWarehouseReset       *   GettagCWarehouseReset();
-# 
-# class   IPY_CWarehouseReset
-# {
-# public:
-# 
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应//07 10 仓库重整#tagCWarehouseReset
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//07 10 仓库重整#tagCWarehouseReset
-def ResetWarehouseItem(index, tick):
-#===============================================================================
-#    背包重整合并 07 0F
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    FuncCall(curPlayer, "ResetWarehouseItem", tick)
-#===============================================================================
-    return
 #---------------------------------------------------------------------    
 #===============================================================================
 # //07 0F 背包重整#tagCItemPackReset
@@ -3818,545 +366,7 @@
     #背包整理逻辑
     ItemControler.ResetItem(curPlayer, sendPack_PackIndex, sendPack_ItemBeginIndex, sendPack_ItemEndIndex, tick)
     return
-#---------------------------------------------------------------------   
-#===============================================================================
-# //08 14 称号合成#tagCTitleMix
-# tagCTitleMix       *   GettagCTitleMix();
-# 
-# class   IPY_CTitleMix
-# {
-# public:
-#    //最终要合成的称号
-#    int      GetTitleID();
-# };
-#===============================================================================
-##客户端封包响应//08 14 称号合成#tagCTitleMix
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 14 称号合成#tagCTitleMix
-def MixTitle(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncCall(curPlayer, "MixTitle", tick)
-    return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 09 仓库拖动物品#tagMoveItemInWarehouse
-# tagMoveItemInWarehouse       *   GettagMoveItemInWarehouse();
-# 
-# class   IPY_MoveItemInWarehouse
-# {
-# public:
-#    //起始位置
-#    int      GetSrcIndex();
-#    //目标位置
-#    int      GetDestIndex();
-# 
-#    int      GetCount();
-# };
-#===============================================================================
-##客户端封包响应//0C 09 仓库拖动物品#tagMoveItemInWarehouse
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//0C 09 仓库拖动物品#tagMoveItemInWarehouse
-def MoveItemInWarehouse(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "MoveItemInWarehouse", tick)
-    return
-#---------------------------------------------------------------------
-##重读任务刷新
-#@param 无
-#@return 返回值无意义
-#@remarks 重读任务刷新
-def DoReloadRefresh():
-    #赋值
-    QuestRunner.SetFindQuestFunc(QuestManager.FindQuest)
-    QuestRunner.SetFunctionNPCTalk(QuestManager.GetFunctionNPCTalk())
-    QuestRunner.SetFindDefaultTalkFunc(QuestManager.FindDefaultTalk)
-    QuestRunner.SetQuestTrig(QuestManager.GetQuestTrig())
-    QuestRunner.SetQuestDescriptions(QuestManager.GetQuestDescriptions())
-    QuestRunner.SetAllQuestsEvents(QuestManager.GetAllQuestsEvents())
-    
-#--------------------------------------自定义方法
-##结束事件响应
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束事件响应
-def DoExitEvent(curPlayer):    
-    #允许整理背包
-    #ExitEvent() 会把状态清空,Onday会触发,需要还原
-    playerAction = curPlayer.GetPlayerAction()
-    
-    curPlayer.SetForbiddenResetItem(0)
-    ExitCompose(curPlayer)
-    ExitWarehouse(curPlayer)
-    #ExitRepair(curPlayer)
-    ExitCreateFamily(curPlayer)
-    ExitBillboard(curPlayer)
-    #ExitEventLock(curPlayer)
-    #npc商店退出
-    ExitNPCShop(curPlayer)
-    
-    #PlayerTrade.LeaveTrade(curPlayer, 0)
-    # 清除py自定义状态
-    #ClearPyPlayerAction(curPlayer)
-    
-    #调用底层结束事件
-    #避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_Frist_Lock) != 1:
-        curPlayer.ExitEvent()
-    
-    if playerAction == IPY_GameWorld.paSit:
-        #还原打坐
-        PlayerControl.SetIsNeedProcess(curPlayer, True)
-        #玩家坐下
-        curPlayer.Sit()
-    
-    #GameWorld.Log("玩家退出所有事件成功" , curPlayer.GetPlayerID())
-    return True
-
-#---------------------------------------------------------------------
-## npc商店退出
-#  @param curPlayer 玩家实例
-#  @return 返回值无意义
-def ExitNPCShop(curPlayer):
-    # 设置当前商店的npcid为0
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_TradeTagNPC, 0)        
-    return
-
-
-## 清除py自定义状态
-#  @param curPlayer 玩家实例
-#  @return 返回值无意义
-def ClearPyPlayerAction(curPlayer):
-    #清除py自定义状态
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PyPlayerAction, 0)      
-    return
-
-#---------------------------------------------------------------------
-##结束查看排行榜
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束查看排行榜
-def ExitBillboard(curPlayer):
-    if curPlayer.GetWatchBillboardState() == 0:
-        return
-    curPlayer.GameServer_SetWatchBillboardState(0)
-    return
-#---------------------------------------------------------------------
-##结束仓库事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束仓库事件
-def ExitWarehouse(curPlayer):
-    curPlayer.SetWarehouseState(IPY_GameWorld.wsNull)
-    return
-#---------------------------------------------------------------------
-##结束打造事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束打造事件
-def ExitCompose(curPlayer):
-    curPlayer.SetComposeItemState(IPY_GameWorld.cisNull)
-    return
-#--------------------------------------------------------------------- 
-##结束修理事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束修理事件
-def ExitRepair(curPlayer):
-    if curPlayer.GetEventHaveFixItem() == True:
-        #刷新属性
-        playerControl = PlayerControl.PlayerControl(curPlayer)
-        playerControl.RefreshAllState()
-        #重置状态
-        curPlayer.SetEventHaveFixItem(False)
-        
-#---------------------------------------------------------------------   
-##结束创建家族事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束创建家族事件
-def ExitCreateFamily(curPlayer):
-    #PlayerFamily.SendPack_GameServer_ClearViewFamilyState(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 09 取消任务#tagCCancelTask
-# tagCCancelTask       *   GettagCCancelTask();
-# 
-# class   IPY_CCancelTask
-# {
-# public:
-# 
-#    int      GetTaskID();
-# };
-#===============================================================================
-##客户端封包响应//08 09 取消任务#tagCCancelTask
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//08 09 取消任务#tagCCancelTask
-def DeleteMission(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    pack = IPY_GameWorld.IPY_CCancelTask()
-    missionID = pack.GetTaskID() 
-    curMission = curPlayer.FindMission(missionID)
-    
-    if not curMission:
-        return
-    
-    missionState = curMission.GetState()
-    
-    #未接任务或已完成任务不可放弃
-    if missionState in [ ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_Over ]:
-        return
-    
-    #移动中不执行此操作
-    if curPlayer.IsMoving():
-        #PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0")
-        return
-    
-    if curPlayer.GetPlayerAction()!= IPY_GameWorld.paNull:
-        #您只有在空闲状态下才可放弃任务
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Delete02")
-        return
-    
-    #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)
-    
-    #先在任务表中找数据, 如果找到了, 就不遍历XML了
-    if __DoLogic_DeleteMission(curPlayer, curMission):
-        GameWorld.Log("在任务表中找数据, 删除任务 = %s, 状态 = %s"%(missionID, missionState), curPlayer.GetID())
-        return
-    
-    #GameWorld.Log("在XML中查找数据, 删除任务 = %s, 状态 = %s"%(missionID, missionState), curPlayer.GetID())
-    #删除表中无, 就读XML( 这里的任务应该都是全图任务, 如每日任务 )
-    RunQuestEvent(curPlayer, "on_delete", missionID, Def_RunQuestType_Normal)
-    return
-
-#---------------------------------------------------------------------
-##读数据库任务删除表, 删除任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值真, 删除成功
-# @remarks 自定义函数, 读数据库任务删除表, 删除任务
-def __DoLogic_DeleteMission(curPlayer, curMission):
-    missionID = curMission.GetMissionID()
-    GameWorld.Log("__DoLogic_DeleteMission---%s"%missionID, curPlayer.GetID())
-    delMissionData = GameWorld.GetGameData().GetMissionDeleteByID(missionID)
-    #任务删除表中无此任务
-    if not delMissionData:
-        return
-    
-    #是否清除镖车
-    if delMissionData.GetDeleteTruck():
-        #玩家拥有镖车, 且镖车ID和任务ID一致
-        if curPlayer.GetTruckID() != 0 and curPlayer.GetTruckEventID() == missionID:
-            curPlayer.GameServer_DelTruck()
-    
-    #是否需要删除物品
-    for index in range(0, delMissionData.GetDeleteItemCount()):
-        delItemData = delMissionData.GetDeleteItemAt(index)
-        delItemID = delItemData.GetID()
-        #0表示全部删除
-        delItemCount = delItemData.GetCount()
-        ItemCommon.DelMissionItem(curPlayer, IPY_GameWorld.rptItem, delItemID, delItemCount, missionID)
-    
-    #删除这个任务
-    QuestCommon.DeleteMission(curPlayer, missionID)
-    
-    #是否有触发新任务
-    nextMissionID = delMissionData.GetNextMissionID()
-    
-    if nextMissionID > 0:
-        curAddMission = QuestCommon.AddNewMission(curPlayer, nextMissionID)
-        NotifyOneMission(curPlayer, curAddMission)
-    
-    return True
-#---------------------------------------------------------------------
-#===============================================================================
-# //04 03 任务传送#tagCMissionTransport
-# tagCMissionTransport       *   GettagCMissionTransport();
-# 
-# class   IPY_CMissionTransport
-# {
-# public:
-# 
-#    int      GetMapID();
-# 
-#    int      GetPosX();
-# 
-#    int      GetPosY();
-# };
-#===============================================================================
-##客户端封包响应//04 03 任务传送#tagCMissionTransport
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//04 03 任务传送#tagCMissionTransport
-def MissionMove(index, tick):
-    return
-
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 37 圣器强化#tagCShengQiQiangHua
-# tagCShengQiQiangHua       *   GettagCShengQiQiangHua();
-# 
-# class   IPY_CShengQiQiangHua
-# {
-# public:
-#    //圣器位置
-#    int      GetDestIndex();
-#    //自动买材料
-#    int      GetAutoBuyMaterial();
-#    // 不使用绑定材料强化
-#    int      GetNotUserBindMaterial();
-# };
-#===============================================================================
-##客户端封包响应 //07 37 圣器强化#tagCShengQiQiangHua
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //07 37 圣器强化#tagCShengQiQiangHua
-def ShengQiQiangHua(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 38 清除圣器附加属性#tagCClearShengQiAttrs
-# tagCClearShengQiAttrs       *   GettagCClearShengQiAttrs();
-# 
-# class   IPY_CClearShengQiAttrs
-# {
-# public:
-# 
-#    int      GetDestIndex();
-# };
-#===============================================================================
-##客户端封包响应 //07 38 清除圣器附加属性#tagCClearShengQiAttrs
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //07 38 清除圣器附加属性#tagCClearShengQiAttrs
-def ClearShengQiAttrs(index, tick):
-    return
-
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 0E 宝石合成#tagCStoneCompound
-# tagCStoneCompound       *   GettagCStoneCompound();
-# 
-# class   IPY_CStoneCompound
-# {
-# public:
-#    // 合成次数
-#    int      GetCompoundCount();
-#    // 合成模式
-#    int      GetCompoundTimes();
-#    // 自动购买
-#    int      GetIsAutoBuy();
-# };
-#===============================================================================
-##客户端封包响应 //0D 0E 宝石合成#tagCStoneCompound
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0D 0E 宝石合成#tagCStoneCompound
-def StoneCompound(index, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    FuncDirectCall(curPlayer, "Func_103", "BeginStoneCompound", tick)
-    return
-
-
-#===============================================================================
-# //A1 06 装备套装化#tagCEquipSuite
-# 
-# struct tagCEquipSuite
-# {
-#    tagHead    Head;
-#    BYTE    EquipPackType;    //装备所在背包类型
-#    DWORD    ItemIndex;    //装备背包索引
-# };
-#===============================================================================
-##客户端封包响应 //08 1A 装备套装化#tagCEquipSuite
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //08 1A 装备套装化#tagCEquipSuite
-def EquipMakeSuit(index, clientData, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #FuncDirectCall(curPlayer, "Func_104", "EquipMakeSuit", tick, clientData)
-    return
-
-#===============================================================================
-#//A1 05 装备附魔 #tagCEquipAddSkill
-#
-#struct    tagCEquipAddSkill
-#{
-#    tagHead        Head;
-#    BYTE        EquipPackType;        //装备所在背包类型
-#    BYTE        Type;            // 0-清空;1-附加
-#    WORD        EquipIndex;        // 装备在背包中的索引
-#};
-#===============================================================================
-##客户端封包响应
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0D 09 装备附魔#tagCEquipAddSkill
-def MagicAttached(index, clientData, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    FuncDirectCall(curPlayer, "Func_104", "MagicAttached", tick, clientData)
-    return
-
-
-#===================================================================================================
-# //0D 11 威望装备合成封包#tagCPrestigeEquipMerge
-# tagCPrestigeEquipMerge    * GettagCPrestigeEquipMerge();
-# 
-# class IPY_CPrestigeEquipMerge
-# {
-# public:
-# 
-#    //合成类型
-#    int GetType();
-#    //装备索引
-#    int GetEquipIndex();
-#    //材料索引
-#    int GetMaterialIndex();
-# };
-#===================================================================================================
-##0D 11 威望装备合成封包#tagCPrestigeEquipMerge
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0D 11 威望装备合成封包#tagCPrestigeEquipMerge
-def PrestigeEquipMerge(index, tick):
-#    
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    FuncDirectCall(curPlayer, "Func_106", "PrestigeEquipMerge", tick)
-    return
-
-
-#===============================================================================
-# //0D 0C 材料加工#tagCMaterialCompound
-# 
-# struct    tagCMaterialCompound
-# {
-#    tagHead        Head;
-#    WORD        ItemIndex;    // 材料在背包中的索引
-# };
-#===============================================================================
-##材料加工封包,点一次只合一次,(碎片合成)
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0D 0C 材料加工#tagCMaterialCompound
-def StuffMachining(index, tick):
-    return
-    
-    
-##进入副本场景验证.
-# @param curPlayer 玩家实例
-# @param mapID 地图ID
-# @param tick 时间戳
-# @return 是否验证成功
-# @remarks 客户端封包响应
-def DoLogic_EnterFbGameEvent(curPlayer, mapID, tick):
-    #暂屏蔽NPC验证判断
-    return
-#    #没有NPC对话弹界面
-#    if mapID in ChConfig.Def_EnterFB_NoNPCForm or mapID in ReadChConfig.GetEvalChConfig("MapID_NoNPCForm"):
-#        return True
-#    
-#    callName = ChConfig.Def_EnterFb_CallNPCFunc.get(mapID)
-#    
-#    if callName == None:
-#        return False
-#    
-#    result = FuncCall(curPlayer, callName, tick)
-#    
-#    if not result:
-#        return False
-#
-#    return True
-
-#---------------------------------------------------------------------
-## 购买仓库封包 //0C 10 购买仓库空间
-#  @param index 玩家索引
-#  @param tick 时间戳
-#  @return 无返回值
-#  @remarks 购买仓库封包 
-def BuyWarehouse(index, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#
-#    #转换玩家的货币
-#    buyWarehouseType = PlayerControl.ChangeMoneyType(curPlayer, ChConfig.Def_BuyWarehouse_Type)
-#    
-#    if not PlayerControl.HaveMoney(curPlayer, buyWarehouseType, ChConfig.Def_BuyWarehouse_Cost):
-#        #金钱不足
-#        return
-#    
-#    if not ResetWarehouse(curPlayer):
-#        #仓库空间已满
-#        return
-#    
-#    #---扣玩家钱---
-#    if not PlayerControl.PayMoney(curPlayer, buyWarehouseType, ChConfig.Def_BuyWarehouse_Cost):
-#        GameWorld.ErrLog('BuyWarehouse PayMoneyErr')
-#        return
-#    
-#    #手续费流向记录
-#    PlayerControl.DataServerMoneyLog(curPlayer, buyWarehouseType, 656, par = ChConfig.Def_BuyWarehouse_Cost)
-   
-    return
-#---------------------------------------------------------------------
-##//07 3A 购买物品背包空间#tagCBuyBackpack
-#  @param index 玩家索引
-#  @param tick 时间戳
-#  @return 无返回值
-#  @remarks 购买物品背包空间
-def BuyItemPack(index, tick):
-    # 关闭此封包功能,请使用通用购买封包07 41
-    return
-#
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    #转换玩家的货币
-#    useMoneyType = PlayerControl.ChangeMoneyType(curPlayer, ChConfig.Def_BuyItemPack_Type)
-#    
-#    #验证玩家货币
-#    if not PlayerControl.HaveMoney(curPlayer, useMoneyType, ChConfig.Def_BuyItemPack_Cost):
-#        return
-#    
-#    if not ResetBackPack(curPlayer):
-#        #背包空间已满
-#        return
-#    
-#    #---扣玩家钱---
-#    if not PlayerControl.PayMoney(curPlayer, useMoneyType, ChConfig.Def_BuyItemPack_Cost):
-#        GameWorld.ErrLog('BuyItemPack PayMoneyErr')
-#        return
-#
-#    #手续费流向记录
-#    PlayerControl.DataServerMoneyLog(curPlayer, useMoneyType, 655, par = ChConfig.Def_BuyItemPack_Cost)
-#    return
-#---------------------------------------------------------------------
 #===============================================================================
 # #//07 3C通用背包操作#tagCBackpackOperate
 # #//对性能影响很小
@@ -4428,93 +438,6 @@
                                           pack_SrcIndex, pack_DestIndex, tick)
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 1B 使用修理道具修理装备#tagCRepairEquip
-# struct tagCRepairEquip
-# {
-#         tagHead Head
-#         WORD        ItemIndex; // 道具索引
-#         BYTE PackType; //背包类型
-#         WORD        EquipIndex; //装备在相应背包中的索引 
-# };
-#===============================================================================
-##使用修理道具修理装备#tagCRepairEquip
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //08 1B 使用修理道具修理装备#tagCRepairEquip
-def ChangeEquipEndure(index, tick):
-    return
-    
-    
-#//07 3F 使用道具增加最大灵纹次数#tagCUseIncreaseMaxAddSkill 
-#struct tagCUseIncreaseMaxAddSkill 
-#{ 
-#tagHead Head; 
-#WORD ItemIndex; // 道具索引 
-#BYTE PackType; //背包类型 
-#WORD EquipIndex; //装备在相应背包中的索引 
-#}; 
-##使用道具增加最大灵纹次数
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-def UseIncreaseMaxAddSkill(index, tick):
-    return
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendPack = IPY_GameWorld.IPY_CUseIncreaseMaxAddSkill()
-#    
-#    Operate_MagicAttached.UseIncreaseMaxAddSkill(curPlayer, sendPack.GetItemIndex(),
-#                                                     sendPack.GetPackType(), sendPack.GetEquipIndex())
-    
-
-#===============================================================================
-# //07 42 物品能量转移#tagCItemTransfer
-# struct       tagCItemTransfer
-# {
-#         tagHead            Head;
-#         BYTE                  PackType;         //背包类型:rptItem, rptEquip, rptWarehouse 
-#         BYTE                  ItemPlace;
-#         BYTE                  TransferType;  //转移类型
-# };
-#===============================================================================
-##物品能量转移
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-def ItemEnergyTransfer(index, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    
-#    #避免反复操作
-#    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_ChangeEnergy) \
-#    < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_ChangeEnergy]:
-#        return
-#    
-#    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_ChangeEnergy, tick)
-#    
-#    pack = IPY_GameWorld.IPY_CItemTransfer()
-#    Operate_MagicAttached.ItemEnergyTransfer(curPlayer, pack.GetPackType(),
-#                                             pack.GetItemPlace(), pack.GetTransferType())
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //16 0B宠物炼化#tagCPetRefinery
-# struct tagCPetRefinery
-# {
-# tagHead Head;
-# DWORD PetID;//宠物ID
-# };
-#===============================================================================
-##宠物炼化.
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //16 0B宠物炼化#tagCPetRefinery
-def CPetRefinery(index, tick):
-    return
-
 #===============================================================================
 #//07 41 通用购买Pack空间#tagCOpenPackCount
 # struct       tagCOpenPackCount
@@ -4546,12 +469,6 @@
     
     curPack = curPlayer.GetItemManager().GetPack(packType)
     curPackMaxCnt = curPack.GetMaxCount()
-    
-    if packType in [IPY_GameWorld.rptPetCabinetPet, IPY_GameWorld.rptCabinetWeaponCoat, 
-                    IPY_GameWorld.rptCabinetDressCoat, IPY_GameWorld.rptCabinetHorse]:
-        vipLv = curPlayer.GetVIPLv()
-        #curPackMaxCnt = ChConfig.Def_PackCnt_Fashion + PlayerVip.GetVipCabinetAddGridCnt(vipLv)
-        
     openAnonCnt =  initCnt + curGridCnt + buyCount
     
     if curPackMaxCnt < openAnonCnt:
@@ -4570,8 +487,6 @@
     if packType == IPY_GameWorld.rptItem:
         #背包刷新
         PlayerControl.Init_ItemPack(curPlayer)
-        #开格子,加经验
-        #OpenPackAddExp(curPlayer, packType, fromIndex, toIndex)
         PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_671654")
         #PlayerControl.SyncOnLineTimeTotal(curPlayer)
         #PlayerControl.SyncOnLineTimeLastOpenPack(curPlayer, packType)
@@ -4580,8 +495,6 @@
     elif packType == IPY_GameWorld.rptWarehouse:
         #仓库刷新
         PlayerControl.Init_Warehouse(curPlayer)
-        #开格子,加经验
-        #OpenPackAddExp(curPlayer, packType, fromIndex, toIndex)
             
     else:
         #收纳柜刷新
@@ -4640,184 +553,6 @@
         ItemCommon.ReduceItem(curPlayer, curPack, indexList, delCnt, True)
         
     return True, costMoneyList
-        
-##开启物品背包格子或仓库格子可增加的经验值
-# @param curPlayer 玩家对象
-# @param packType 背包类型
-# @param packType 背包类型
-# @param packType 背包类型
-# @param needRefresh 是否需要刷新玩家属性
-# @return None
-def OpenPackAddExp(curPlayer, packType, fromIndex, toIndex, needRefresh = True):
-    cfgObj = PlayerExpandPackCfgMgr.GetExpandPackCfg(curPlayer, packType)
-    #找不找这种背包的配置信息对象
-    if not cfgObj:
-#        GameWorld.Log("not cfgObj")
-        return
-    
-    attrInfo = cfgObj.GetTotalCanAddAttrInfo(curPlayer, fromIndex, toIndex)
-    #没找到属性信息
-    if not attrInfo:
-#        GameWorld.Log("not attrInfo")
-        return
-#    GameWorld.Log("attrInfo=%s"%attrInfo)
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #增加经验
-    #通知获得经验
-    addExp = attrInfo.get("Exp", 0)
-    if 0 != addExp:
-        playerControl.AddExp(addExp)
-    if needRefresh:
-        #重刷主角属性
-        playerControl.RefreshAllState()
-    
-    
-        
-#---------------------------------------------------------------------
-#===============================================================================
-# //16 0D 宠物装备合成#tagPetEquipMerge 
-# struct tagPetEquipMerge 
-# { 
-# tagHead Head; 
-# DWORD StuffIndex1; //装备索引 
-# DWORD StuffIndex2; //装备索引 
-# DWORD StuffIndex3; //装备索引 
-# BYTE AutoBuy; //是否自动购买结魂灯 
-# };
-#===============================================================================
-##宠物装备合成#tagPetEquipMerge 
-# @param index 玩家索引
-# @param tick 时间戳
-# @return None
-# @remarks 
-def CPetEquipMerge(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //08 26 装备直接升星#tagCEquipUpStarImmediately
-# struct         tagCEquipUpStarImmediately
-# {
-#         tagHead             Head;
-#         WORD                 ItemIndex;          // 道具索引
-#         BYTE          PackType; //背包类型
-#         WORD                 EquipIndex;        //装备在相应背包中的索引 
-# };
-#===============================================================================
-##装备直接升星#tagCEquipUpStarImmediately
-# @param index 玩家索引
-# @param tick 时间戳
-# @return None
-# @remarks 
-def CEquipUpStarImmediately(index, tick):
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0D 12 神兵唤醒#tagCEquipWakeUp
-# struct         tagCEquipWakeUp
-# {
-#         tagHead             Head;
-#         WORD                 ItemIndex;                   //材料在物品背包中的位置索引
-#         BYTE          PackType;           //背包类型 
-#         WORD                 EquipIndex;                 //装备在相应背包中的索引
-# };
-#===============================================================================
-##神兵唤醒#tagCEquipWakeUp
-# @param index 玩家索引
-# @param tick 时间戳
-# @return None
-# @remarks 
-def CEquipWakeUp(index, tick):
-    return
-
-#===============================================================================
-# #07 43 tagCEsotericaStudy
-# #struct tagCEsotericaStudy
-# #{
-# #    tagHead    Head;
-# #    WORD    ItemIndex;
-# #};
-#===============================================================================
-##学习武林秘笈
-# @param index 玩家索引
-# @param tick 时间戳
-# @return None
-def LearnWuLinSkill(index, tick):
-    return
-
-#===============================================================================
-# //A0 10 购买真气#tagPyCMBuyZhenqi
-# struct tagPyCMBuyZhenqi
-# {
-#    tagHead Head;    
-# };
-#===============================================================================
-## A0 10 购买真气#tagPyCMBuyZhenqi
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-#  @remarks
-def PlayerBuyZhenqi(index, clientData, tick):
-    #Operate_PlayerBuyZhenQi.PlayerBuyZhenQi(index, clientData, tick)
-    return
-
-
-#===============================================================================
-#===============================================================================
-# //B0 15 玩家领取收藏夹奖励#tagAskCollectPrize
-# struct tagAskCollectPrize
-# {
-#    tagHead Head;    
-# };
-#===============================================================================
-## B0 15 玩家领取收藏夹奖励#tagAskCollectPrize
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-#  @remarks
-def PlayerGetFavoriteAward(index, clientData, tick):
-    return
-
-
-#===============================================================================
-# //B0 01 打开远程商店
-# 
-# struct tagPyOpenLongShop
-# {
-#    tagHead Head;
-# };
-#===============================================================================
-## B0 01 打开远程商店
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-#  @remarks
-def PlayerOpenLongShop(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    #红名玩家无法使用远程商店
-    if curPlayer.GetPlayerNameColor() == IPY_GameWorld.pncRed or curPlayer.GetPKValue() > 0:
-        PlayerControl.NotifyCode(curPlayer, "PK_lhs_161795")
-        return
-        
-    #当前vip等级不能使用远程商店
-    #if not PlayerVip.GetVipCanLongShop(curPlayer):
-    #    moneyCnt, moneyType = ReadChConfig.GetEvalChConfig("DirectShopCost")
-    #    if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt):
-    #        #金钱不足
-    #        return
-    #    
-            
-    FunctionNPCCommon.StartTrade(curPlayer, tick)
-    
-    #触发任务
-    EventRespons_DirectFuncEvent(curPlayer, "open_shop")
-    return
-    
     
 #===============================================================================
 #//A2 04 请求打开远程仓库 #tagCMOpenLongWarehouse
@@ -4837,349 +572,6 @@
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     # 暂不加CD防范
     curPlayer.Sync_WarehouseItem()
-    
-    return
-
-#===============================================================================
-# //B0 06 查看家族战申请信息 #tagViewAllFamilyInfo
-# 
-# struct    tagViewAllFamilyInfo
-# {
-#    tagHead        Head;
-# };
-#===============================================================================
-## B0 06 查看家族战申请信息
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-#  @remarks
-def ViewAllFamilyInfo(index, clientData, tick):
-    #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #PlayerFamily.SendPack_GameServer_ViewAllFamily(curPlayer)
-    return
-
-
-#===============================================================================
-# //B0 07 查看家族争霸战信息 #tagViewAllFamilyBattlenfo
-# 
-# struct    tagViewAllFamilyBattlenfo
-# {
-#    tagHead        Head;
-# };
-#===============================================================================
-## B0 07 查看家族争霸战信息
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-#  @remarks
-def ViewAllFamilyBattlenfo(index, clientData, tick):
-    return
-
-
-#===============================================================================
-#//B0 31 客户端登入方式 #tagPlayerLoginType
-#
-#struct tagPlayerLoginType
-#
-#{
-#    tagHead    Head;
-#    BYTE        LoginType;        //类型
-#};
-#====================================
-## B0 31 客户端登入方式
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def OnPlayerLoginType(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_LoginType, clientData.LoginType)
-    EventRespons_OnRevLoginType(curPlayer)
-    return
-
-
-#===============================================================================
-#//B0 32 登入器登入领取奖励 #tagFastLoginPrize
-#
-#struct tagFastLoginPrize
-#{
-#    tagHead    Head;
-#};
-#====================================
-## B0 32 登入器登入领取奖励
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def OnRewardByLoginType(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    RunQuestEvent(curPlayer, "on_logintype", "on_reward_bylogintype", Def_RunQuestType_Normal)
-    return
-
-#=======================================================================================================================
-# //A0 17  领取每天物品 #tagGiveItemByDay
-# 
-# struct    tagGiveItemByDay
-# 
-# {
-#    tagHead        Head;
-# };
-#=======================================================================================================================
-## A0 17 领取每日物品
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def GiveItemByDay(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    EventRespons_PlayerEvent(curPlayer, "player_give_item")
-    return
-
-
-##任务触发器在记录登陆模式的时候触发
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-def EventRespons_OnRevLoginType(curPlayer):
-    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
-    
-    QuestCommon.SetPlayerMissionState(curPlayer, curMission, 1)
-    return
-
-#// A2 18 完成任务 #tagCMFinishTask
-#
-#struct tagCMFinishTask
-#{
-#    tagHead         Head;
-#    DWORD        TaskID;
-#    WORD        RewardPer;    // 奖励百分比, 默认100;  150则代表1.5倍
-#};
-def OnPlayerFinishTask(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    taskID = clientData.TaskID
-    rewardPer = clientData.RewardPer
-    
-    if taskID <= 0:
-        return
-    
-    EventRespons_OnFinishTask(curPlayer, taskID, rewardPer)
-    return
-
-#// A2 06 快速完成任务#tagCMQuickFinishMission
-#
-#struct tagCMQuickFinishMission
-#{
-#    tagHead         Head;
-#    DWORD        MissionID;
-#    BYTE        DoType; // 0-只完成本次;1-完成所有环任务
-#};
-def PlayerQuickFinishTask(index, clientData, tick):
-    missionID = clientData.MissionID
-    if missionID <= 0:
-        return
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    doType = clientData.DoType
-    if doType == 1:
-        EventRespons_OnQuickFinishAllAround(curPlayer, missionID)
-        return
-    
-    curQuestData = QuestManager.FindQuest(missionID)
-    curMission = curPlayer.FindMission(missionID)
-    if not curQuestData or not curMission:
-        return
-    isFree = PlayerGoldInvest.CanQuickFinishMissionFree(curPlayer)
-    costMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("QuickFinishMission", 1)
-    if costMoneyInfo and not isFree and curQuestData.Type in QuestCommon.Def_RunTask_Type_List:
-        moneyType, moneyValue = costMoneyInfo
-        if not PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, ChConfig.Def_Cost_MissionDel, {"MissionID":missionID}):
-            return
-        
-    EventRespons_OnQuickFinishTask(curPlayer, missionID)
-    return
-
-
-## A2 09 设置环任务星级#tagCMSetRunMissionStar
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def PlayerSetRunMissionStar(index, clientData, tick):
-    missionID = clientData.MissionID
-    if missionID <= 0:
-        return
-
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    EventRespons_OnSetMissionStar(curPlayer, missionID)
-    return
-
-
-## A2 15 购买日常任务次数上限#tagCMBuyDayMissionSum
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def PlayerBuyDayMissionSum(index, clientData, tick):
-    buyNum = clientData.BuyNum
-    if buyNum <= 0:
-        return
-
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    EventRespons_OnBuyDayMissionSum(curPlayer, buyNum)
-    return
-
-#// A2 21 领取跑环每轮结束奖励 #tagCMGetRunTaskEndAward
-#  @param index 索引
-#  @param clientData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def OnGetRunTaskAward(index, clientData, tick):
-    taskType = clientData.Type
-    if taskType not in [QuestCommon.Def_Mission_Type_RunDaily, QuestCommon.Def_Mission_Type_RunFamily]:
-        GameWorld.DebugLog('领取环任务每轮奖励 类型错误 %s'%taskType)
-        return
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
-    hasGotAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskAwardState % taskType)
-    if hasGotAward:
-        GameWorld.DebugLog('领取环任务每轮奖励  已奖励 类型 %s'%taskType)
-        return
-    #物品奖励
-    itemList = []
-    itemAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 3, {})
-    if str(taskType) in itemAwardDict:
-        itemList = itemAwardDict[str(taskType)]
-        # 检查背包
-        needSpace = len(itemList)
-        packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-        if needSpace > packSpace:
-            PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-            return
-        for itemID, itemCount, isBind in itemList:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-    
-    #给经验
-    giveExp = 0
-    expAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 4, {})
-    if str(taskType) in expAwardDict:
-        reExp = PlayerControl.GetPlayerReExp(curPlayer)
-        giveExp = eval(expAwardDict[str(taskType)])
-        PlayerControl.PlayerControl(curPlayer).AddExp(giveExp)
-    
-    #给钱
-    moneyType = 0
-    moneyNum = 0
-    runTaskMoneyAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward')
-    if taskType in runTaskMoneyAwardDict:
-        specialAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 2, {})
-        if taskType in specialAwardDict:
-            rate, moneyCnt = specialAwardDict[taskType]
-            if GameWorld.CanHappen(rate):
-                moneyNum = moneyCnt
-                if taskType == QuestCommon.Def_Mission_Type_RunDaily:
-                    PlayerControl.WorldNotify(0, 'CoinTaskReward', [curPlayer.GetName()])
-        moneyType, minMoney, maxMoney = runTaskMoneyAwardDict[taskType]
-        if not moneyNum:
-            moneyNum = random.randint(minMoney, maxMoney)
-        if moneyType == ShareDefine.TYPE_Price_Family_Contribution:
-            PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, moneyNum, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-        else:
-            addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"}
-            PlayerControl.GiveMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_GiveMoney_Mission, addDataDict, False)
-        
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % taskType, moneyNum)
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % taskType, 1)
-    GameWorld.DebugLog('领取环任务每轮奖励成功  moneyType=%s, moneyNum=%s, itemList=%s, giveExp=%s'%(moneyType, moneyNum, itemList, giveExp))
-    
-    #通知客户端
-    NotifyRunEndAward(curPlayer, taskType)
-    ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "RunTaskEndAward", giveExp, {moneyType:moneyNum})
-    
-    #删除领取奖励的任务 (改由任务脚本触发下一环)
-    EventRespons_GetLastRunTaskAward(curPlayer, taskType)
-#    runTaskAwardTaskIDDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAwardTaskID')
-#    runTaskAwardTaskID = runTaskAwardTaskIDDict.get(taskType, 0)
-#    if runTaskAwardTaskID:
-#        QuestCommon.DeleteMission(curPlayer, runTaskAwardTaskID)
-    
-    #更新下轮任务
-#    mission_1 = QuestCommon.GetCommonMission(curPlayer)
-#    if not mission_1:
-#        return
-#    nextMissionID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskNextMissionID % taskType)
-#    if not nextMissionID:
-#        #没有下轮任务
-#        return
-#    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % taskType, 0)
-#    if not curPlayer.FindMission(nextMissionID):
-#        QuestCommon.AddNewMission(curPlayer, nextMissionID)
-#    nextMission = curPlayer.FindMission(nextMissionID)
-#    QuestCommon.SetPlayerMissionState(curPlayer, nextMission, 1)
-#    nextMission.SetMissionState(1)
-#    nextMission.SetDescriptionIndex(0)
-#
-#    #先清空字典再设置新的字典
-#    curPlayer.Sync_ClearMissionDict(nextMissionID)
-#    nextMission.ClearProperty()
-#    Def_Around_AllCount = QuestRunner.GetRunKey(taskType, QuestRunner.Key_Around_AllCount)
-#    Def_Around_Count = QuestRunner.GetRunKey(taskType, QuestRunner.Key_Around_Count)
-#    mission_1.SetProperty(Def_Around_Count,0)
-#    #总环数
-#    allCount = mission_1.GetProperty(Def_Around_AllCount)
-#    #单轮已做环数
-#    #aroundCount = mission_1.GetProperty(Def_Around_Count)
-#    nextMission.SetProperty(Def_Around_AllCount, allCount)
-#    nextMission.SetProperty(Def_Around_Count, 0)
-#    
-#    #设置随机任务事件
-#    EventRespons_SetRunAround(curPlayer, nextMissionID)
-#    
-#    
-# 
-#    NotifyOneMission(curPlayer, nextMission, isNotifyAll = False)
-    return
-
-def NotifyRunEndAward(curPlayer, taskType=-1):
-    ## 通知跑环轮奖励
-    taskTypeList = [QuestCommon.Def_Mission_Type_RunDaily, QuestCommon.Def_Mission_Type_RunFamily] if taskType == -1 else [taskType]
-    infoPack = ChPyNetSendPack.tagMCRunTaskAwardInfo()
-    infoPack.Clear()
-    infoPack.InfoList = []
-    for ttype in taskTypeList:
-        recordPack = ChPyNetSendPack.tagMCRunTaskAwardRecord()
-        recordPack.Type = ttype
-        recordPack.Num = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskAwardRecord % ttype)
-        recordPack.AwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskAwardState % ttype)
-        infoPack.InfoList.append(recordPack)
-    infoPack.Cnt = len(infoPack.InfoList)
-    NetPackCommon.SendFakePack(curPlayer, infoPack)
     return
 
 #// A2 24 触碰NPC #tagCMTouchNPC
@@ -5218,22 +610,3 @@
     npcControl.SetKilled()
     return
 
-
-## 客户端任务计数
-#===============================================================================
-# //A2 25 客户端任务计数 # tagCMClientTaskCount
-# 
-# struct     tagCMClientTaskCount
-# {
-#    tagHead        Head;
-#    DWORD        CountID;        // 计数ID,客户端与策划约定,可以是NPCID或其他
-#    BYTE        Type;    // 1-杀怪
-# };
-#===============================================================================
-def ClientTaskCount(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    countType = clientData.Type 
-    RunQuestEvent(curPlayer, "on_client_by_id", clientData.CountID, Def_RunQuestType_Normal)
-    #if countType == 1:
-    #    PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_11.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_11.py
deleted file mode 100644
index c359676..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_11.py
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package Func_11
-# @todo: 家族管理员
-#
-# @author: panwei
-# @date 2010-11-23
-# @version 1.4
-#
-# @change: "2010-12-21 17:50" panwei 家族公用添加进ShareDefine中
-# @change: "2010-12-22 15:40" panwei 查看家族状态添加进ShareDefine中
-# @change: "2011-03-29 13:00" panwei 创建家族货币不足修改提示
-# @change: "2013-07-17 20:10" Alee 修改系统提示
-#---------------------------------------------------------------------
-"""Version = 2013-07-17 20:10"""
-#---------------------------------------------------------------------
-import PlayerControl
-import EventShell
-import IPY_GameWorld
-import PlayerFamily
-import ShareDefine
-#---------------------------------------------------------------------
-##创建家族.
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 创建家族 任务功能触发Fc_
-def CreateFamily(curPlayer, tick):
-    #调用创建家族逻辑
-    if DoLogic_CreateFamily(curPlayer, tick):
-        return
-    
-    #创建失败解锁
-    EventShell.DoExitEvent(curPlayer)
-    return
-#---------------------------------------------------------------------
-##执行逻辑:创建家族.
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 布尔值
-# @remarks 执行逻辑:创建家族.
-def DoLogic_CreateFamily(curPlayer, tick):
-    #这里加入判定家族逻辑
-    if curPlayer.GetFamilyID() != 0:
-        #GeRen_chenxin_85890 对不起,您已经在家族中,操作失败
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_85890")
-        return False
-    
-#    if curPlayer.GetLV() < ShareDefine.Def_CreateFamily_MinLV:
-#        PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_717982", [ShareDefine.Def_CreateFamily_MinLV])
-#        return False
-#
-#    if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, 
-#                                   ShareDefine.Def_CreateFamilyMoney, False):
-#        #XW_JZ_EstablishErr_Money   <n color="255,255,0">对不起,您的金钱不足,建立家族失败!</n> 25  -   -
-#        PlayerControl.NotifyCode(curPlayer, "jiazu_lhs_161795", 
-#                                 [IPY_GameWorld.TYPE_Price_Silver_Money, ShareDefine.Def_CreateFamilyMoney])
-#        return False
-    
-    #开始创建家族
-    #PlayerFamily.SendPack_GameServer_InputFamilyName(curPlayer)
-    return True
-
-#---------------------------------------------------------------------
-##查看家族.
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 查看家族 任务功能触发Fc_
-def WatchFamily(curPlayer, tick):
-    #PlayerFamily.SendPack_GameServer_ViewAllFamily(curPlayer)
-    return
-#---------------------------------------------------------------------
-##家族升级.
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 家族升级 任务功能触发Fc_
-def FamilyLVUp(curPlayer, tick):
-    curPlayer.GameServer_LVUpFamily()
-    EventShell.DoExitEvent(curPlayer)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_3.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_3.py
deleted file mode 100644
index 895c738..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_3.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-##@package Func_3
-#杂货商 逻辑处理
-#
-# @author PanWei
-# @date 2010-4-26
-# @version 1.0
-#
-# VER = "2010-05-17 10:30" zhengyang 添加注释,补充全局函数简要说明
-#模块详细说明.
-#---------------------------------------------------------------------
-import FunctionNPCCommon
-#---------------------------------------------------------------------
-##开始交易
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值真, 逻辑运行成功
-# @remarks 开始交易
-def StartTrade( curPlayer, tick ):
-    return FunctionNPCCommon.StartTrade( curPlayer, tick )
-
-#---------------------------------------------------------------------
-##结束事件
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值真, 逻辑运行成功
-# @remarks 结束事件
-def ExitEvent( curPlayer, tick ):
-    return FunctionNPCCommon.ExitEvent( curPlayer, tick )
-
-#---------------------------------------------------------------------
-##购买物品
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值真, 逻辑运行成功
-# @remarks 购买物品
-def BuyItem( curPlayer, tick ):
-    return FunctionNPCCommon.BuyItem( curPlayer, tick )
-
-#---------------------------------------------------------------------
-##修理物品
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值真, 逻辑运行成功
-# @remarks 修理物品
-def RepairItem( curPlayer, tick ):
-    return FunctionNPCCommon.RepairItem( curPlayer, tick )
-
-#---------------------------------------------------------------------
-##出售物品
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值真, 逻辑运行成功
-# @remarks 出售物品
-def SellItem( curPlayer, tick ):
-    return FunctionNPCCommon.SellItem( curPlayer, tick )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_6.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_6.py
index 9f4a2d3..465f483 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_6.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Func_6.py
@@ -18,37 +18,10 @@
 import ItemControler
 import ChConfig
 import GameWorld
-import EventShell
 import PlayerControl
 import DataRecordPack
 import ChPyNetSendPack
 import NetPackCommon
-#---------------------------------------------------------------------
-#//仓库状态
-#enum    TWarehouseState
-#{
-#    wsNull = 0,     //没有开始仓库
-#    wsEnterPsw,     //输入密码状态
-#    wsWarehouse,    //钱庄存取中
-#    wsChangePsw,    //修改密码状态
-#    wsSetPsw,       //设置密码状态
-#};
-
-#---------------------------------------------------------------------
-##是否可以弹出仓库密码窗口
-# @param curPlayer 玩家实例
-# @return 返回值, 是否需要输入
-# @remarks 玩家是否需要弹出需要输入仓库密码的窗口
-def NeedOpenWarehousePswWnd(curPlayer):
-    if curPlayer.GetHaveWarehousePsw() == 0:
-        #没有设定仓库密码
-        return False
-    
-    elif curPlayer.GetWarehouseLocked() == 0:
-        #仓库有锁
-        return False
-    
-    return True
 
 
 #---------------------------------------------------------------------
@@ -156,398 +129,4 @@
     #仓库物品放入背包 
     ItemControler.DragItem(curPlayer, IPY_GameWorld.rptWarehouse, warehouseIndex, IPY_GameWorld.rptItem, putIndex, putCount)
     return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 03 仓库取出金钱#tagCGetMoneyInWarehouse
-# tagCGetMoneyInWarehouse       *   GettagCGetMoneyInWarehouse();
-# 
-# class   IPY_CGetMoneyInWarehouse
-# {
-# public:
-#    //金钱类型
-#    int      GetMoneyType();
-#    //钱
-#    int      GetMoney();
-# };
-#===============================================================================
-##客户端封包响应 //0C 03 仓库取出金钱#tagCGetMoneyInWarehouse
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0C 03 仓库取出金钱#tagCGetMoneyInWarehouse
-def GetMoneyInWarehouse(curPlayer, tick):
-    #玩家当前状态不是钱庄存取状态
-    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse:
-        return
-    
-    #取出金钱封包
-    sendPack = IPY_GameWorld.IPY_CGetMoneyInWarehouse()
-    
-    #金钱类型
-    moneyType = sendPack.GetMoneyType()
-    
-    #金钱数量
-    getMoney = sendPack.GetMoney()
-    
-    if getMoney <= 0:
-        #没输入钱,不处理
-        return
-    
-    if moneyType not in [IPY_GameWorld.TYPE_Price_Silver_Money]:
-        return
-        
-    #处理银子
-    if moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:
-        curMoney = PlayerControl.GetSilver(curPlayer)
-        curWarehouseMoney = curPlayer.GetWarehouseSilver()
-        moneyCount = curMoney + getMoney
-        
-        if moneyCount > ChConfig.Def_PlayerTotalMoney_Silver:
-            #超过金钱上限
-            PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_609765")
-            return
-        
-        if getMoney > curWarehouseMoney:
-            PlayerControl.NotifyCode(curPlayer,"TakeMoneyLack")
-            return
-        
-        curPlayer.SetWarehouseSilver(curWarehouseMoney - getMoney) 
-        addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Get"}
-        PlayerControl.GiveMoney(curPlayer, moneyType, getMoney, ChConfig.Def_GiveMoney_Warehouse, addDataDict)
-        
-    
-    DataRecordPack.DR_GetMoneyInWarehouse(curPlayer, moneyType, getMoney)
-    return
-
-
-#===============================================================================
-# //0C 04 仓库放入金钱#tagCPutMoneyInWarehouse
-# tagCPutMoneyInWarehouse       *   GettagCPutMoneyInWarehouse();
-# 
-# class   IPY_CPutMoneyInWarehouse
-# {
-# public:
-#    //金钱类型
-#    int      GetMoneyType();
-#    //金钱
-#    int      GetMoney();
-# };
-#===============================================================================
-##客户端封包响应 //0C 04 仓库放入金钱#tagCPutMoneyInWarehouse
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0C 04 仓库放入金钱#tagCPutMoneyInWarehouse
-def PutMoneyInWarehouse(curPlayer, tick):
-    #玩家当前状态不是钱庄存取状态
-    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse:
-        return
-    
-    #放入金钱封包
-    sendPack = IPY_GameWorld.IPY_CPutMoneyInWarehouse()
-    #金钱数量
-    putMoney = sendPack.GetMoney()
-    
-    if putMoney <= 0:
-        #没输入金钱,不处理
-        return
-    
-    moneyType = sendPack.GetMoneyType()
-    
-    if moneyType not in [IPY_GameWorld.TYPE_Price_Silver_Money]:
-        return
-
-    #处理银子
-    if moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:
-        curMoney = PlayerControl.GetSilver(curPlayer)
-        curWarehouseMoney = curPlayer.GetWarehouseSilver()
-        moneyCount = curWarehouseMoney + putMoney
-        
-        if moneyCount > ChConfig.Def_PlayerTotalMoney_Silver:
-            #超过金钱上限
-            PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_766742")
-            return
-        
-        if putMoney > curMoney:
-            #SilverErr 对不起,您的银子数量不足
-            PlayerControl.NotifyCode(curPlayer,"SilverErr")
-            return
-        
-        PlayerControl.PayMoney(curPlayer, moneyType, putMoney, ChConfig.Def_Cost_Warehouse, {ChConfig.Def_Cost_Reason_SonKey:"PutIn"})
-        curPlayer.SetWarehouseSilver(moneyCount)
-    
-    DataRecordPack.DR_SetMoneyInWarehouse(curPlayer, moneyType, putMoney)
-    return True
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 05 设置仓库密码#tagCSetWarehousePsw
-# tagCSetWarehousePsw       *   GettagCSetWarehousePsw();
-# 
-# class   IPY_CSetWarehousePsw
-# {
-# public:
-#    //当前密码(空表示没有密码)
-#    char *      GetPsw();
-#    //旧密码
-#    char *      GetOldPsw();
-# };
-#===============================================================================
-##客户端封包响应 //0C 05 设置仓库密码#tagCSetWarehousePsw
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0C 05 设置仓库密码#tagCSetWarehousePsw
-def SetWarehousePsw(curPlayer, tick):
-    #玩家当前状态不是修改密码状态
-    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse:
-        return
-
-    # 仓库有锁,先解锁
-    if curPlayer.GetWarehouseLocked():
-        return
-    
-    sendPack = IPY_GameWorld.IPY_CSetWarehousePsw()
-    #当前仓库密码
-    currentPsw = curPlayer.GetWarehousePsw()
-    #新密码
-    newPsw = sendPack.GetPsw()    
-    #这里是调用c++的过滤空格,可以过滤全角空格, python不能
-    newPsw = GameWorld.GetGameWorld().GetCharTrim(newPsw)
-    if newPsw == "":
-        return
-            
-    curPlayer.SetWarehousePsw(newPsw)
-    DataRecordPack.DR_SetWarehousePsw(curPlayer, currentPsw, newPsw)
-    
-    #curPlayer.Frm_WarehouseMsg(IPY_GameWorld.whmSetPswOK)    
-    PlayerControl.NotifyCode(curPlayer, "GeRen_pan_106532")
-    
-    #有设置仓库密码,锁定
-    curPlayer.SetHaveWarehousePsw(1)
-    # 设置仓库锁定状态
-    SetLockState(curPlayer, 1)   
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 06 锁定仓库#tagCSetWarehouseLock
-# tagCSetWarehouseLock       *   GettagCSetWarehouseLock();
-# 
-# class   IPY_CSetWarehouseLock
-# {
-# public:
-#    //0: 解锁 1:锁定
-#    int      GetIsLock();
-# };
-#===============================================================================
-##客户端封包响应 //0C 06 锁定仓库#tagCSetWarehouseLock
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-def SetWarehouseLock(curPlayer, tick):
-    #玩家当前状态不是钱庄存取状态
-    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse:
-        return
-    
-    #获得客户端锁定封包
-    sendPack = IPY_GameWorld.IPY_CSetWarehouseLock()
-    setLockState = sendPack.GetIsLock()
-    
-    # 这里只用于解锁
-    if setLockState != 0:
-        return
-    
-    if curPlayer.GetWarehouseLocked() == setLockState:
-        return
-    
-    # 设置仓库锁定状态
-    SetLockState(curPlayer, setLockState)
-    return
-
-## 设置仓库锁定状态
-# @param curPlayer
-# @param setLockState
-# @return
-def SetLockState(curPlayer, setLockState):
-    
-    curPlayer.SetWarehouseLocked(setLockState)    
-    
-    packLockState = ChPyNetSendPack.tagMCWarehorseLock()
-    packLockState.Clear()
-    packLockState.LockState = setLockState
-    NetPackCommon.SendFakePack(curPlayer, packLockState)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 07 客户端发送仓库密码#tagSendWarehousePsw
-# tagSendWarehousePsw       *   GettagSendWarehousePsw();
-# 
-# class   IPY_SendWarehousePsw
-# {
-# public:
-# 
-#    char *      GetPsw();
-# };
-#===============================================================================
-##客户端封包响应 //0C 07 客户端发送仓库密码#tagSendWarehousePsw
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0C 07 客户端发送仓库密码#tagSendWarehousePsw
-def SendWarehousePsw(curPlayer, tick):
-    #===========================================================================
-    # #玩家当前状态不是输入密码状态
-    # if curPlayer.GetWarehouseState() != IPY_GameWorld.wsEnterPsw:
-    #    return
-    # 
-    # #获得客户端封包
-    # sendPack = IPY_GameWorld.IPY_SendWarehousePsw()
-    # curPsw = sendPack.GetPsw()
-    # oldPsw = curPlayer.GetWarehousePsw()
-    # 
-    # #这里是调用c++的过滤空格,可以过滤全角空格, python不能
-    # curPsw = GameWorld.GetGameWorld().GetCharTrim(curPsw)
-    # 
-    # #密码不正确
-    # if curPsw != oldPsw:
-    #    curPlayer.Frm_WarehouseMsg(IPY_GameWorld.whmPswError)
-    #    EventShell.DoExitEvent(curPlayer)
-    #    
-    #    PlayerControl.NotifyCode(curPlayer, "GeRen_pan_59781")
-    #    return
-    # 
-    # #密码正确
-    # ShowWarehouse(curPlayer)
-    #===========================================================================
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 08 第一次打开仓库#tagCInitWarehousePsw
-# tagCInitWarehousePsw       *   GettagCInitWarehousePsw();
-# 
-# class   IPY_CInitWarehousePsw
-# {
-# public:
-#    //密码
-#    char *      GetPsw();
-# };
-#===============================================================================
-##客户端封包响应 //0C 08 第一次打开仓库#tagCInitWarehousePsw
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0C 08 第一次打开仓库#tagCInitWarehousePsw
-def InitWarehousePsw(curPlayer, tick):
-#    #玩家当前状态不是设置密码状态
-#    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsSetPsw:
-#        return
-#    
-#    sendPack = IPY_GameWorld.IPY_CInitWarehousePsw()
-#    #密码
-#    curPsw = sendPack.GetPsw()
-#    #合理性检查, 如果密码为空, 则表示不需要输入密码(把 是否需要钱庄密码 字段设置为0)
-#    curPlayer.Frm_WarehouseMsg(IPY_GameWorld.whmSetPswOK)
-#    
-#    PlayerControl.NotifyCode(curPlayer, "GeRen_pan_106532")
-#    
-#    #这里是调用c++的过滤空格,可以过滤全角空格, python不能
-#    curPsw = GameWorld.GetGameWorld().GetCharTrim(curPsw)
-#    
-#    if curPsw == "":
-#        curPlayer.SetHaveWarehousePsw(0)
-#        return
-#    
-#    #设置仓库密码 
-#    curPlayer.SetWarehousePsw(curPsw)
-#    DataRecordPack.DR_SetWarehousePsw(curPlayer, "", curPsw)
-#    
-#    #把 是否需要钱庄密码 字段设置为1
-#    curPlayer.SetHaveWarehousePsw(1)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //0C 09 仓库拖动物品#tagMoveItemInWarehouse
-# tagMoveItemInWarehouse       *   GettagMoveItemInWarehouse();
-# 
-# class   IPY_MoveItemInWarehouse
-# {
-# public:
-#    //起始位置
-#    int      GetSrcIndex();
-#    //目标位置
-#    int      GetDestIndex();
-# 
-#    int      GetCount();
-# };
-#===============================================================================
-##客户端封包响应 //0C 09 仓库拖动物品#tagMoveItemInWarehouse
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 //0C 09 仓库拖动物品#tagMoveItemInWarehouse
-def MoveItemInWarehouse(curPlayer, tick):
-    #玩家当前状态不是钱庄存取状态
-    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse:
-        return
-    
-    #获得封包
-    sendPack = IPY_GameWorld.IPY_MoveItemInWarehouse()
-    #物品数量
-    putCount = sendPack.GetCount()
-    #仓库物品放入背包 
-    ItemControler.DragItem(curPlayer, IPY_GameWorld.rptWarehouse, sendPack.GetSrcIndex(), IPY_GameWorld.rptWarehouse, sendPack.GetDestIndex(), putCount)
-    return
-
-#===============================================================================
-# 此接口废弃, 背包整理封包修改
-# #---------------------------------------------------------------------
-# ##重整仓库
-# # @param index 玩家索引
-# # @param tick 时间戳
-# # @return 返回值无意义
-# # @remarks 任务调用, 重整仓库 fc_ResetWarehouseItem
-# def ResetWarehouseItem(curPlayer, tick):
-#    #玩家当前状态不是钱庄存取状态
-#    if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse:
-#        return
-#    
-#    ItemControler.ResetItem(curPlayer, IPY_GameWorld.rptWarehouse, tick)
-#    return
-#===============================================================================
-#---------------------------------------------------------------------
-##需要更改仓库密码
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 任务调用, 需要更改仓库密码, fc_WarehousePsw
-def WarehousePsw(curPlayer, tick):
-
-#    #是否已经设置密码
-#    haveWarehousePsw = curPlayer.GetHaveWarehousePsw()
-#    
-#    #原先已经设置仓库密码的情况
-#    if haveWarehousePsw:
-#        #跳出更改密码窗口
-#        curPlayer.Frm_ChangeWarehousePsw()
-#        #设置玩家当前状态为修改密码状态
-#        curPlayer.SetWarehouseState(IPY_GameWorld.wsChangePsw)
-#    #原先没有设置仓库密码的情况  
-#    else:
-#        #跳出设置密码窗口
-#        curPlayer.Frm_SetWarehousePsw()
-#        #设置玩家当前状态为设置密码状态
-#        curPlayer.SetWarehouseState(IPY_GameWorld.wsSetPsw)
-#        
-#        return
-    
-    return
-
-    
-    
-    
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
index b316024..5666fad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
@@ -49,7 +49,6 @@
 import ChPyNetSendPack
 import NetPackCommon
 import GameWorld
-import EventShell
 import IPY_GameWorld
 import ItemControler
 import ChConfig
@@ -107,17 +106,6 @@
 # @return 远程商店的npc
 def GetDirectNpcID():
     return 0
-
-#---------------------------------------------------------------------
-##结束事件
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值真, 逻辑运行成功
-# @remarks 结束事件
-def ExitEvent(curPlayer, tick):
-        
-    EventShell.DoExitEvent(curPlayer)
-    return True
 
 #---------------------------------------------------------------------
 ##请求商店物品列表
@@ -809,8 +797,7 @@
         if not sendMailKey:
             if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, event=[ChConfig.ItemGive_BuyItem, isForceEvent, dataDict]):
                 GameWorld.ErrLog("购买商城物品放入背包失败! itemID=%s, itemCount=%s" % (itemID, itemCount), curPlayer.GetPlayerID())
-        EventShell.EventRespons_BuyItem(curPlayer, itemID, itemCount)
-        
+                
         if ipyData.GetNotifyMark() and itemID == mainItemID:
             PlayerControl.WorldNotify(0, ipyData.GetNotifyMark(), [curPlayer.GetName(), mainItemID, userData])
             
@@ -824,9 +811,6 @@
         PlayerControl.SendMailByKey(sendMailKey, [curPlayer.GetID()], totalItemList, detail=dataDict)
     else:
         ItemControler.NotifyGiveAwardInfo(curPlayer, totalItemList, ChConfig.ItemGive_BuyItem, dataEx=shopType)
-    #触发任务购买物品
-    EventShell.EventRespons_ShopBuy(curPlayer, shopType)
-    #curPlayer.ShopResult(itemIndex, IPY_GameWorld.tsrShopOK)
     SyncShoppingResult(curPlayer, itemIndex, clientBuyCount)
     
     if shopType == ShopType_FairyCeremony:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
index 5e24d61..a550b62 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
@@ -33,7 +33,6 @@
 import GameWorld
 import ChConfig
 import ChEquip
-import EventShell
 import ChPyNetSendPack
 import NetPackCommon
 import PlayerWeekParty
@@ -180,7 +179,6 @@
     DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
     # 强化成就
     __UpdateEquipPlusSuccess(curPlayer, classLV)
-    EventShell.EventRespons_EquipPlus(curPlayer, classLV, updPlusLV)
     
     # 开服活动数据
     #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Plus, ChEquip.GetTotalPlusLV(curPlayer))
@@ -265,7 +263,6 @@
     ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex, nextEvolveLV)
     DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
     ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, equipPackindex)
-    EventShell.EventRespons_EquipPlusEvolve(curPlayer, nextEvolveLV)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
index 947378d..2bbc6df 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
@@ -28,7 +28,6 @@
 import IpyGameDataPY
 import PlayerSuccess
 import GameWorld
-import EventShell
 import ChConfig
 import ChEquip
 
@@ -180,8 +179,7 @@
     
     if not isOK:
         return
-        
-    EventShell.EventRespons_EquipStarUp(curPlayer)
+    
     updPartStar = ChEquip.GetEquipPartStar(curPlayer, equipPackIndex)
     GameWorld.DebugLog("    装备升星 equipPackIndex=%s result=%s,curPartStar=%s,updPartStar=%s" % (equipPackIndex, result, curPartStar, updPartStar), playerID)
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
index 5becad8..345acff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
@@ -30,7 +30,6 @@
 import PlayerSuccess
 import PlayerWeekParty
 import ShareDefine
-import EventShell
 import PyGameData
 
 g_stoneCanPlaceList = []  # 可镶嵌的位置
@@ -219,8 +218,6 @@
     Sycn_StoneHoleInfo(curPlayer, [equipPackIndex])
     # 成就
     DoStoneSuccess(curPlayer, classLV)
-
-    EventShell.EventRespons_InlayStone(curPlayer)
     return
 
 
@@ -578,7 +575,6 @@
     DataRecordPack.DR_StoneItemChange(curPlayer, eventName,
                                       {'equipPackIndex': equipPackIndex, "holeIndex": holeIndex, "stoneID": stoneID,
                                        'changeStoneID': changeStoneID})
-    EventShell.EventRespons_StoneChange(curPlayer)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
index 74520ef..d67d9e1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
@@ -28,7 +28,6 @@
 import DataRecordPack
 import PlayerWing
 import PlayerDogz
-import EventShell
 
 import random
 import math
@@ -294,7 +293,6 @@
         #itemColor = makeItemData.GetItemColor()
         #itemQuality = makeItemData.GetItemQuality()
         #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_CompoundEquip, compoundCnt, [classLV, itemColor, itemQuality])
-        #EventShell.EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality)
     # 合成失败
     else:
         GameWorld.DebugLog("合成失败!")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
index f98bf54..3007dee 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
@@ -35,7 +35,6 @@
 import PlayerActLogin
 import PlayerActTask
 import PlayerWeekParty
-import EventShell
 #------------------------------------------------------------------------------ 
 
 #获取金币祈愿奖励
@@ -172,7 +171,6 @@
         PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_ExpPray)
     else:
         return
-    EventShell.EventRespons_Pray(curPlayer, buyType)
     #成就
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Pray, 1, [buyType])
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_Pray, 1)
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
deleted file mode 100644
index a5b812d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestCommon.py
+++ /dev/null
@@ -1,485 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package QuestCommon
-# @todo: 任务公用函数
-#
-# @author: eggxp
-# @date 2010-4-26
-# @version 3.1
-#
-# @note: 任务公共函数写这里
-#---------------------------------------------------------------------
-# @change: "2015-08-24 14:30" zqx 增加完成主线任务成就
-# @change: "2015-08-24 17:30" zqx 防import报错
-# @change: "2015-08-27 23:30" zqx 修改老号任务成就处理逻辑,不是成就中的任务不走成就逻辑
-# @change: "2016-07-18 19:00" hxp 设置任务状态统一函数;增加接任务、完成任务事件记录点
-# @change: "2016-09-19 21:30" hxp 增加判断是否完成对应主线任务函数
-#---------------------------------------------------------------------
-#"""Version = 2016-09-19 21:30"""
-#---------------------------------------------------------------------
-import re
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import random
-import copy
-import ReadChConfig
-import DataRecordPack
-import ShareDefine
-import EventReport
-import QuestManager
-import GameFuncComm
-import ChPyNetSendPack
-import NetPackCommon
-import EventShell
-import IpyGameDataPY
-#---------------------------------------------------------------------
-#所有任务的索引
-FindQuestFunc = None
-# 用于判定任务是否被删除
-g_IsMissionDeleted = 1
-
-#---10-05-27 Alee 将随机任务事件分类型处理(比如之前为每日杀怪等,改为统一任务可用,并分开处理各事件)
-#Def_Day_Event_ID = "day_event_id"
-#Def_Day_Event_Count = "day_event_count"
-#Def_Day_Event_Cur = "day_event_cur_count"
-Def_Day_Event_Cur_Complete_Count = "count"
-Def_Day_Event_Max_Complete_Count = "max_count" 
-Def_Day_Event_Any_Kill = "day_event_any_kill"       #任意杀怪都可以触发任务, 通常用于副本
-Def_Around_Count_In_Mission_1 = "around_count"             #赏金跑环环数(存任务1)
-Def_Around_Star_In_Mission_1 = "around_star"             #赏金跑环环星(存任务1)
-Def_Run_Count_In_Mission_1 = "around_allcount"                #赏金跑环总环数(存任务1)
-Def_Around_Count_Family_In_Mission_1 = "around_count_family"    #家族跑环环数(存任务1)
-Def_Around_Star_Family_In_Mission_1 = "around_star_family"      #家族跑环环星(存任务1)
-Def_Run_Count_Family_In_Mission_1 = "around_allcount_family"          #家族跑环总环数(存任务1)
-
-Def_Collect_Npc_ID = "collect_npc_id"                    #随机采集NPC根据ID
-Def_Collect_Npc_ID_Count = "collect_npc_id_count"        #随机采集NPC根据ID的个数
-Def_Collect_Npc_ID_Cur = "collect_npc_id_cur_count"      #随机采集NPC根据ID的当前个数
-
-Def_Kill_Npc_ID = "kill_npc_id"                    #随机杀死NPC根据ID
-Def_Kill_Npc_ID_Count = "kill_npc_id_count"        #随机杀死NPC根据ID的个数
-Def_Kill_Npc_ID_Cur = "kill_npc_id_cur_count"      #随机杀死NPC根据ID的当前个数
-
-Def_Kill_Npc_LV = "kill_npc_lv"                    #随机杀死NPC根据等级
-Def_Kill_Npc_LV_Count = "kill_npc_lv_count"        #随机杀死NPC根据等级的个数
-Def_Kill_Npc_LV_Cur = "kill_npc_lv_cur_count"      #随机杀死NPC根据等级的当前个数
-
-Def_Item_ID = "item_id"                            #随机获得物品根据ID
-Def_Item_Count = "item_count"                      #随机获得物品个数  
-Def_Item_Cur = "item_cur_count"                    #当前获得物品个数
-
-Def_Visit_Npc_ID = "visit_npc_id"                  #随机访问NPC
-
-Def_NewGuyNoSight = "xinshou"   # 新手期隐身无视野
-
-Def_Mission_Grade = "grade"   # 任务评级
-
-#------------原DayEventData去除,替换枚举管理-----------------
-(
-Day_KillNPC_By_ID_List,    #Type = Day_KillNPC_By_ID
-Day_KillNPC_By_LV_List,    #Type = Day_KillNPC_By_LV
-Day_GetItem_By_ID,         #Type = Day_GetItem_By_ID
-Day_VisitNPCList,          #Type = Day_VisitNPC
-Day_MissionList,           #Type = Day_Mission
-Day_CollectNPCList,           #Type = Day_CollectNPC_By_ID
-) = range(6)
-#---------------------------------------------------------------------
-
-#0:剧情任务, 主线任务ID必须按任务顺序递增
-#1:支线任务
-#2:日常任务
-#5,6,7:世界任务
-#22:热门活动
-#20:不显示描述和向导
-#21:为不显示向导
-#24:战盟悬赏
-#3: 传入副本
-#4:为需到副本里完成的任务
-#任务等级填0时则不根据等级筛选规则显示
-#12: 隐藏主线剧情,一般用于辅助主线任务用的
-
-Def_Mission_Type_Main = 0 # 主线剧情
-Def_Mission_Type_MainHid = 998 # 隐藏主线剧情 暂时不用,配大点
-Def_GM_Active_Mission_Type = 999 #暂时不用,配大点
-Def_Mission_Type_RunDaily = 7
-Def_Mission_Type_RunFamily = 12
-
-Def_MainTask_Type_List = [Def_Mission_Type_Main, Def_Mission_Type_MainHid]
-Def_RunTask_Type_List = [Def_Mission_Type_RunDaily, Def_Mission_Type_RunFamily]
-
-#---------------------------------------------------------------------
-## 获取公用任务
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks (这个任务记录了一些玩家数据)
-def GetCommonMission(curPlayer):
-    #判断有没有任务1
-    curMission = curPlayer.FindMission(ChConfig.Def_MissionID_FirstLogin)
-
-    return curMission
-#---------------------------------------------------------------------
-##设置函数, 查找任务
-# @param questIndex 任务索引
-# @return 返回值无意义
-# @remarks 设置函数, 查找任务
-def SetFindQuestFunc(questIndex):
-    global FindQuestFunc
-    FindQuestFunc = questIndex
-
-#---------------------------------------------------------------------
-##过滤字符串
-# @param str 原字符
-# @param mark 过滤条件
-# @return 返回值, 过滤后的字符串
-# @remarks 过滤字符串
-def DealWithInPut(str, mark = '?'):
-    return re.findall("\(\\%s(\w+)\\%s\)"%(mark, mark), str)
-#    var=[]
-#    r=re.compile(r"[\(][%s][^\(]*[%s][\)]"%(mark, mark))
-#    strList=r.findall(str)
-#    rs=re.compile(r"[^\(%s][^\(]*[^%s\)]"%(mark, mark))
-#    for i in range(len(strList)):
-#        curItem=rs.findall(strList[i])
-#        var.extend(curItem)
-#    return var
-
-#---------------------------------------------------------------------
-##过滤字符串
-# @param str 原字符
-# @param rstr 替换的字符串
-# @param mark 过滤条件
-# @return 返回值, 过滤后的字符串
-# @remarks 过滤字符串
-def DealWithReverse(str, rstr, mark = '?'):
-    r=re.compile(r"[\(][%s][^\(]*[%s][\)]"%(mark, mark))
-    strList=r.findall(str)
-    replaceStr=str
-    for j in range(len(strList)):
-        if len(rstr)!=len(strList):
-            raise "Out Of Index Exception"
-        replaceStr=replaceStr.replace(strList[j],rstr[j])
-    return replaceStr    
-
-#---------------------------------------------------------------------
-##设置服务器任务状态state和通知客户端的任务状态MissionStat
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param state 设置的状态
-# @return 返回值无意义
-# @remarks 设置服务器任务状态state和通知客户端的任务状态MissionStat
-def SetPlayerMissionState(curPlayer, curMission, state, isFinish=1, failReason=""):
-    #curState = curMission.GetState()
-    #if curState == -1:
-    #不能在这里设置DescriptionIndex, 因为在封爵的时候, 先设置-1, 再给奖励
-    
-    #2009.1.21
-    #原来是只有-1状态, 才设置MissionState和DescriptionIndex
-    #现在改为所有都这样  ------> 由于任务2000004,任务状态不为-1的时候要清除任务而改
-    #可接
-    if state == ChConfig.Def_Mission_State_NoAccept:
-        curMission.SetMissionState(IPY_GameWorld.msNoMission)
-        curMission.SetDescriptionIndex(0)
-    #可交
-    elif state == ChConfig.Def_Mission_State_CanComplete:
-        curMission.SetMissionState(IPY_GameWorld.msCanComplete)
-    #不是完成
-    elif state != ChConfig.Def_Mission_State_Over:
-        curMission.SetMissionState(IPY_GameWorld.msProcessing)
-        
-    curMission.SetState(state)
-    
-    missionID = curMission.GetMissionID()
-    curQuestData = QuestManager.FindQuest(missionID)
-    
-    # 镖车 环任务特殊处理, 环任务中只做任务随机,进行状态改变
-#    if curQuestData != None and state == 1 and (curQuestData.Type in Def_RunTask_Type_List or missionID == ChConfig.Def_ConvoyTruckMissionID):
-#        EventReport.WriteEvent_mission_log(curPlayer, curQuestData, 0)
-#        
-    
-    if state == ChConfig.Def_Mission_State_Over:
-        # 成就
-        import PlayerSuccess
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MainTaskNode, 1, [missionID])
-        
-        # 剧情任务完成处理
-        OnStoryMissionFinish(curPlayer, missionID)
-        
-        EventReport.WriteEvent_mission_log(curPlayer, curQuestData, 1, isFinish, failReason)
-    
-#    # 镖车完成特殊处理
-#    elif missionID == ChConfig.Def_ConvoyTruckMissionID and state == ChConfig.Def_Mission_State_NoAccept:
-#        GameFuncComm.DoFuncOpenLogic(curPlayer, [missionID])
-#        EventReport.WriteEvent_mission_log(curPlayer, curQuestData, 1, isFinish, failReason)
-        
-    return
-
-def OnStoryMissionFinish(curPlayer, missionID):
-    ''' 剧情任务完成状态处理
-    1开头代表剧情任务 
-    1 地图编号xx 剧情编号xx 任务编号xx 是否本剧情最后一个任务
-    1 xx xx xx 0
-        ...
-    1 xx xx xx 1
-    '''
-    missionIDStr = str(missionID)
-    if len(missionIDStr) != 8 or not missionIDStr.startswith("1"):
-        #GameWorld.DebugLog("非剧情任务ID,不处理!missionID=%s" % missionID)
-        return
-    
-    storyNum = int(missionIDStr[3:5])
-    isFinish = missionID % 10
-    if isFinish not in [0, 1]:
-        GameWorld.ErrLog("完成的剧情任务ID错误!必须是0或1结尾!missionID=%s" % (missionID), curPlayer.GetPlayerID())
-        return
-    
-    if not isFinish:
-        #GameWorld.DebugLog("该剧情任务未全部完成,不处理!missionID=%s,storyNum=%s" % (missionID, storyNum))
-        return
-    
-    dictValue, updDictValue = GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_StoryMissionState, storyNum, 1)
-    Sync_StoryMissionState(curPlayer, [storyNum])
-    GameWorld.Log("剧情所有任务完成: missionID=%s,剧情编号=%s,dictValue=%s,updDictValue=%s" 
-                  % (missionID, storyNum, dictValue, updDictValue), curPlayer.GetPlayerID())
-    return
-
-def Sync_StoryMissionState(curPlayer, storyNumList=[]):
-    isSyncAllState = True
-    if not storyNumList:
-        storyNumList = xrange(ChConfig.Max_StoryMissionNum + 1)
-        isSyncAllState = False
-        
-    stateInfo = ChPyNetSendPack.tagMCStoryMissionStateInfo()
-    stateInfo.StoryMissionStateList = []
-    for storyNum in storyNumList:
-        isAllFinish = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_StoryMissionState, storyNum)
-        if not isSyncAllState and not isAllFinish:
-            continue
-        storyState = ChPyNetSendPack.tagMCStoryMissionState()
-        storyState.StoryNum = storyNum
-        storyState.IsAllFinish = isAllFinish
-        stateInfo.StoryMissionStateList.append(storyState)
-    stateInfo.Count = len(stateInfo.StoryMissionStateList)
-    if stateInfo.Count:
-        NetPackCommon.SendFakePack(curPlayer, stateInfo)
-    return
-#---------------------------------------------------------------------
-##获得任务奖励节点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值, 奖励节点信息
-# @remarks 获得任务奖励节点
-def GetRewardNode(curPlayer, curMission):
-    if FindQuestFunc(curMission.GetMissionID()) == None:
-        return None
-    
-    descriptIndex = curMission.GetDescriptionIndex()
-    
-    questList = FindQuestFunc(curMission.GetMissionID()).QuestDescriptionList
-    if descriptIndex >= len(questList) or descriptIndex < 0:
-        return None
-    
-    xmlNode = questList[descriptIndex].Rewards
-    if xmlNode == None or xmlNode.IsEmpty():
-        return None
-    
-    for i in range(xmlNode.GetChildCount()):
-        curRewardNode = xmlNode.GetChild(i)
-        #判断这个奖励是不是给这个人的
-        rewardType = curRewardNode.GetAttribute("type")
-        rewardType2 = curRewardNode.GetAttribute("type2")
-        if rewardType == "":
-            return  curRewardNode
-        
-        rewardValue = int(curRewardNode.GetAttribute("value"))
-        
-        rewardType = rewardType.title()
-        if rewardType2 != "":
-            rewardType2 = rewardType2.title()
-            rewardValue2 = int(curRewardNode.GetAttribute("value2"))
-            #性别和职业
-            if rewardType == "Job" and rewardValue == curPlayer.GetJob() and rewardType2 == "Sex" and rewardValue2 == curPlayer.GetSex():
-                return curRewardNode
-        else:
-            #性别
-            if rewardType == "Sex" and rewardValue == curPlayer.GetSex():
-                return curRewardNode
-            #职业
-            elif rewardType == "Job" and rewardValue == curPlayer.GetJob():
-                return curRewardNode
-            else:
-                GameWorld.Log("任务ID = %d, 奖励类型 : %s 未处理  : (%d,%d)"%(curMission.GetMissionID(), rewardType, curPlayer.GetSex(), curPlayer.GetJob()) , curPlayer.GetPlayerID())
-
-#---------------------------------------------------------------------
-##获取任务ID
-# @param mission 任务实例
-# @return 任务ID
-# @remarks 获取任务ID
-def GetMissionID(curMission):
-    if curMission == None:
-        return 0
-    
-    return curMission.GetMissionID()
-
-
-##添加新任务
-# @param curPlayer 玩家实例
-# @param curMissionID 任务ID
-# @return 返回值,新增的任务实例
-# @remarks 添加新任务
-def AddNewMission(curPlayer, curMissionID):
-    GameWorld.Log("AddNewMission----%s"%curMissionID, curPlayer.GetID())
-    curMission = curPlayer.AddMission(curMissionID)
-
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        DataRecordPack.DR_AddNewMission(curPlayer, curMissionID)
-        
-    # 记录任务开始事件
-    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
-
-#---------------------------------------------------------------------
-##删除任务
-# @param curPlayer 玩家实例
-# @param curMissionID 任务ID
-# @return 返回值,无意义
-# @remarks 删除任务
-def DeleteMission(curPlayer, curMissionID):
-    if not curPlayer.FindMission(curMissionID):
-        GameWorld.ErrLog("欲删除一个不存在的任务 %s"%(curMissionID))
-        return
-    
-    global g_IsMissionDeleted
-    g_IsMissionDeleted = 1
-    
-    curPlayer.DelMission(curMissionID)
-
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        DataRecordPack.DR_DeleteMission(curPlayer, curMissionID)
-    return
-
-def GetMainTaskIDList():
-    ## 获取主线任务ID顺序列表
-    MainTaskIDList = IpyGameDataPY.GetConfigEx("MainTaskIDList")
-    if not MainTaskIDList:
-        MainTaskIDList = []
-        ipyDataMgr = IpyGameDataPY.IPY_Data()
-        for index in range(ipyDataMgr.GetTaskListCount()):
-            ipyData = ipyDataMgr.GetTaskListByIndex(index)
-            MainTaskIDList.append(ipyData.GetTaskID())
-        IpyGameDataPY.SetConfigEx("MainTaskIDList", MainTaskIDList)
-        GameWorld.DebugLog("加载主线任务ID顺序列表: %s" % MainTaskIDList)
-    return MainTaskIDList
-
-def GetHadFinishMainMission(curPlayer, missionID):
-    ''' 检查是否已经完成该主线任务 '''
-    
-    curMission = curPlayer.FindMission(missionID)
-    if curMission != None:
-        GameWorld.DebugLog("当前任务中未完成...missionID=%s" % missionID)
-        return curMission.GetState() == ChConfig.Def_Mission_State_Over
-    
-    mainTaskIDList = GetMainTaskIDList()
-    if not mainTaskIDList:
-        GameWorld.DebugLog("没有主线任务列表! missionID=%s" % missionID)
-        return False
-    
-    if missionID not in mainTaskIDList:
-        GameWorld.DebugLog("非主线任务ID! missionID=%s" % missionID)
-        return False
-    taskIDIndex = mainTaskIDList.index(missionID)
-    
-    nowTaskID = 0
-    nowTaskIDIndex = -1
-    # 不存在该任务,则判断同类型的任务ID
-    for i in range(curPlayer.GetMissionCount()):
-        mission = curPlayer.GetMissionByIndex(i)
-        taskID = mission.GetMissionID()
-        missionData = FindQuestFunc(taskID)
-        if not missionData:
-            continue
-        
-        if taskID not in mainTaskIDList:
-            continue
-        nowTaskID = taskID
-        nowTaskIDIndex = mainTaskIDList.index(taskID)
-        break
-    
-    if not nowTaskID:
-        GameWorld.DebugLog("当前身上没有主线任务! missionID=%s" % missionID)
-        return False
-    
-    isFinish = nowTaskIDIndex > taskIDIndex
-    GameWorld.DebugLog("判断主线任务是否已完成! missionID=%s(%s),isFinish=%s,nowTaskID=%s(%s)" 
-                       % (missionID, taskIDIndex, isFinish, nowTaskID, nowTaskIDIndex), curPlayer.GetPlayerID())
-    return isFinish
-
-##任务是否被删除
-# @param None
-# @return 布尔
-def IsDeleteMission():
-    return g_IsMissionDeleted
-
-##设置任务删除状态
-# @param state BOOL标识删除
-# @return None 
-def SetMissionBeDeleted(state):
-    global g_IsMissionDeleted
-    g_IsMissionDeleted = state
-
-
-## 检查主线任务结点完成情况
-#  @param curPlayer
-#  @param succInfoDict 成就信息
-#  @return 最后完成的任务ID
-def GetCurMainTaskState(curPlayer, succInfoDict):
-    mainTaskIDList = ReadChConfig.GetEvalChConfig("MainTaskIDList")
-    # 获取当前主线任务ID
-    curMainMissionID = -1
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        missionID = curMission.GetMissionID()
-        if missionID in mainTaskIDList:
-            curMainMissionID = missionID
-        
-    indexList = succInfoDict.keys()
-    indexList.sort(reverse=True)
-    # 获取不到主线任务时
-    if curMainMissionID < 0:
-        defaultFinishLV = ReadChConfig.GetEvalChConfig("DefaultFinishLV")
-        if curPlayer.GetLV() >= defaultFinishLV:
-            return succInfoDict[indexList[0]].condition
-        else:
-            return -1
-    
-    # 获取最后完成的成就任务索引
-    curMainIndex = mainTaskIDList.index(curMainMissionID)
-    for index in indexList:
-        succData = succInfoDict.get(index)
-        missionID = succData.condition
-        if missionID not in mainTaskIDList:
-            GameWorld.DebugLog('检查主线任务结点完成情况 MainTaskIDList表漏配了 missionID=%d'%missionID)
-            continue
-        
-        mainIndex = mainTaskIDList.index(missionID)
-        if mainIndex == curMainIndex:
-            curMission = curPlayer.FindMission(missionID)
-            if curMission != None:
-                missionState = curMission.GetState()
-                if missionState != ChConfig.Def_Mission_State_Over:
-                    condition = succInfoDict[index -1].condition if index > 0 else -1
-                    return condition
-            return succInfoDict[index].condition
-        if mainIndex < curMainIndex:
-            return succInfoDict[index].condition
-    return -1
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestManager.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestManager.py
deleted file mode 100644
index 7544626..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestManager.py
+++ /dev/null
@@ -1,1749 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package QuestManager
-#玩家任务管理器
-#
-# @author eggxp
-# @date 2010-4-26下午02:07:26
-# @version 2.8
-
-#---------------------------------------------------------------------
-"""Version = 2015-03-31 02:50"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import os
-import QuestCommon
-import SubjectLib
-import zipfile
-import ReadChConfig
-#import traceback
-#import EventShell
-#---------------------------------------------------------------------
-ZipFile = None
-ZipFileTree = None
-
-#---------------------------------------------------------------------
-##获取ZIP数据
-# @param 无
-# @return 返回值, ZIP数据
-# @remarks 获取ZIP数据
-def __GetZipFile():
-    return ZipFile
-
-#---------------------------------------------------------------------
-##获取ZIP数据树
-# @param 无
-# @return 返回值, ZIP数据树
-# @remarks 获取ZIP数据树
-def __GetZipFileTree():
-    return ZipFileTree
-
-## ZIP数据类型容器
-#
-#  PyClass类的详细说明.
-class ZipFileType:
-    ## 容器数据包含, FileName = '', FileType = 0, SubDir = {}
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 容器数据包含, FileName = '', FileType = 0, SubDir = {}
-    def __init__(self):
-        self.FileName = ''
-        self.FileType = 0        #0: File    1: Dir
-        self.SubDir = {}
-
-#---------------------------------------------------------------------
-##获得文件树
-# @param curZipFile ZIP文件包
-# @return 返回值, 文件树
-# @remarks 获得文件树
-def __GetFileTree(curZipFile):
-    fileDict = ZipFileType()
-    nameList = curZipFile.namelist()
-    for name in nameList:
-        name = name.upper()
-        curFileSplit = name.split('/')
-        fileSplitLen = len(curFileSplit)
-        
-        fileName = curFileSplit[fileSplitLen-1]
-        if fileName == '':
-            #No File
-            #print name
-            continue
-        
-        del curFileSplit[fileSplitLen-1]
-        curEnterDir = fileDict
-        for dir in curFileSplit:
-            if curEnterDir.SubDir.has_key(dir) == False:
-                curZipFileType = ZipFileType()
-                curZipFileType.FileName = dir
-                curZipFileType.FileType = 1
-                curEnterDir.SubDir[dir] = curZipFileType
-            
-            curEnterDir = curEnterDir.SubDir[dir]
-
-        curFile = ZipFileType()
-        curFile.FileName = fileName
-        curFile.FileType = 0
-        curFile.SubDir = None
-        curEnterDir.SubDir[fileName] = curFile
-        
-    return fileDict
-
-#---------------------------------------------------------------------
-##获得文件节点
-# @param inputDir 输入路径
-# @return 返回值, 文件节点
-# @remarks 获得文件节点
-def __GetZipFileNode(inputDir):
-    curFileDir = inputDir.split('\\')
-    lencurFileDir = len(curFileDir)
-    if lencurFileDir == 0:
-        return
-    
-    fileTree = __GetZipFileTree()
-    curFileNode = fileTree
-    
-    if curFileDir[lencurFileDir - 1].strip() == '':
-        del curFileDir[lencurFileDir - 1]
-    
-    for file in curFileDir:
-        if not curFileNode.SubDir.has_key(file):
-            return 
-        curFileNode = curFileNode.SubDir[file]
-    
-    return curFileNode
-
-#---------------------------------------------------------------------
-##判断路径是否是目录
-# @param inputDir 输入路径
-# @return 返回值真, 是目录
-# @remarks 判断路径是否是目录
-def ZipFile_IsDir(inputDir):
-    inputDir = inputDir.upper()
-    result = __GetZipFileNode(inputDir)
-    if result == None:
-        return False
-    
-    if result.FileType != 1:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##判断路径是否是文件
-# @param inputDir 输入路径
-# @return 返回值真, 是文件
-# @remarks 判断路径是否是文件
-def ZipFile_IsFile(inputDir):
-    inputDir = inputDir.upper()
-    result = __GetZipFileNode(inputDir)
-    if result == None:
-        return False
-    
-    if result.FileType != 0:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##获取目录列表
-# @param inputDir 输入路径
-# @return 返回值, 目录列表
-# @remarks 获取目录列表
-def ZipFile_ListDir(inputDir):
-    inputDir = inputDir.upper()
-    resultNode = __GetZipFileNode(inputDir)
-    curDir = []
-    if resultNode == None:
-        return curDir
-    for key in resultNode.SubDir.keys():
-        if resultNode.SubDir[key].FileType != 1:
-            continue
-        curDir.append(resultNode.SubDir[key].FileName)
-    return curDir
-
-#---------------------------------------------------------------------
-##获取文件列表
-# @param inputDir 输入路径
-# @return 返回值, 文件列表
-# @remarks 获取文件列表
-def ZipFile_ListFile(inputDir):
-    inputDir = inputDir.upper()
-    resultNode = __GetZipFileNode(inputDir)
-    curDir = []
-    if resultNode == None:
-        return curDir
-    for key in resultNode.SubDir.keys():
-        if resultNode.SubDir[key].FileType != 0:
-            continue
-        curDir.append(resultNode.SubDir[key].FileName)
-    return curDir
-
-#---------------------------------------------------------------------
-##获取文件列表
-# @param result 文件列表
-# @param curNode 当前节点
-# @param fileSource 文件路径
-# @return 返回值无意义
-# @remarks 获取文件列表
-def __GetZipFileList(result, curNode, fileSource):
-    for key in curNode.SubDir.keys():
-        curFileName = os.path.join(fileSource, curNode.SubDir[key].FileName)
-        if curNode.SubDir[key].FileType != 0:
-            __GetZipFileList(result, curNode.SubDir[key], curFileName)
-            continue
-        result.append(curFileName.lower())
-
-#---------------------------------------------------------------------
-##获取路径下的文件列表
-# @param inputDir 输入的路径
-# @return 返回值,文件列表
-# @remarks 获取路径下的文件列表
-def ZipFile_Walk(inputDir):
-    inputDir = inputDir.upper()
-    resultNode = __GetZipFileNode(inputDir)
-    result = []
-    if resultNode == None:
-        return result
-    __GetZipFileList(result, resultNode, inputDir)
-    return result
-
-#---------------------------------------------------------------------
-##文件数据
-# @param inputDir 输入的路径
-# @return 返回值, 文件数据
-# @remarks 文件数据
-def ZipFile_GetData(inputDir):
-    inputDir = inputDir.upper()
-    zipFile = __GetZipFile()
-    inputDir = inputDir.replace('\\', '/')
-    #GameWorld.Log('read : %s'%inputDir)
-#    try:
-    data = zipFile.read(inputDir)
-    return data
-#    except BaseException:
-#        GameWorld.Log("Can't Find Dir : %s"%inputDir)
-#        GameWorld.Log(traceback.format_exc())
-#        raise ("Read Error")
-    
-
-#---------------------------------------------------------------------
-
-#目录
-#-QuestData
-# -Quests
-#  +on_visit
-#  +on_kill
-
-#任务数据
-Quests = {}     #Type = MainQuestData
-DefaultTalk = {} #Type = DefaultTalkData        默认对话数据 Type = IPY_GameWorld.IPY_XMLLoader()
-AllQuestsEvents={}   #Type = list()             list type = (missID, MainQuestEventData)     
-FunctionNPCTalk = {}    #Type = FunctionNPCTalkData
-QuestTrig = {}  #Type = list()          list中的Type = QuestTrigData           任务触发数据
-QuestDescriptions = {}          #Type = QuestDescriptionsData
-
-#---------------------------------------------------------------------
-##按版本获得任务读取的名字
-# @param 无
-# @return 返回值, 任务版本名
-# @remarks 按版本获得任务读取的名字
-def GetQuestDataName():
-    return "QuestData"
-
-#---------------------------------------------------------------------
-##获取任务路径
-# @param 无
-# @return 返回值, 任务路径
-# @remarks 获取任务路径
-def GetQuestPath():
-    return "%s\\Quests"%GetQuestDataName()
-
-#目前不能做缓存, 原因:
-#对话中会有SetCurrentQuestNode操作, 如果释放了, 会导致卡住
-LoadQuestLen = 5000      #最大读取的xml文件个数
-FreeQuestCount = 10     #一次释放10个xml
-
-#---------------------------------------------------------------------
-##查找NPC默认对话
-# @param npcID NPCID
-# @return 返回值, XML数据
-# @remarks 查找NPC默认对话
-def FindDefaultTalk(npcID):
-    global DefaultTalk
-    if DefaultTalk.has_key(npcID):
-        return DefaultTalk[npcID]
-    
-    filePath = "%s\\default_talk"%GetQuestDataName()
-    #导入这个任务的所有XML数据    
-    filePath = os.path.join(filePath, '%s.xml'%npcID)
-    
-    if not ZipFile_IsFile(filePath):
-        return
-    
-    xmlLoader = IPY_GameWorld.IPY_XMLLoader()
-    #xmlLoader.LoadFromFile(filePath)
-    xmlLoader.LoadFromXML(filePath, ZipFile_GetData(filePath))
-    DefaultTalk[npcID] = xmlLoader
-    return xmlLoader
-
-#---------------------------------------------------------------------
-##任务字典排序规则
-# @param key1 字典1
-# @param key2 字典2
-# @return 返回值, 优先级
-# @remarks 任务字典排序规则
-def QuestKeyCmp(key1, key2):
-    if key1[1] < key2[1]:
-        return 1
-    elif key1[1] > key2[1]:
-        return -1
-    else:
-        return 0
-
-#---------------------------------------------------------------------
-##查找任务数据
-# @param questID 任务ID
-# @return 返回值, 任务数据
-# @remarks 查找任务数据
-def FindQuest(questID):
-    #GameWorld.Log(str(questID))
-    global Quests
-    if Quests.has_key(questID):
-        #命中了, 把这个任务提前
-        curQuest = Quests[questID]
-        curQuest.UseCount += 1
-        return curQuest
-    
-#    if len(Quests) > LoadQuestLen:
-#        #释放xml文件
-#        curList = []
-#        for key in Quests.keys():
-#            curList.append((key, Quests[key].UseCount))
-#            
-#        curList.sort(QuestKeyCmp)
-#        
-#        for i in range(0, min(FreeQuestCount, len(curList))):
-#            #删除前10个key
-#            Quests.pop(curList[i][0])
-        
-     
-    curQuest = MainQuestData()
-    LoadQuest(os.path.join(GetQuestPath(), str(questID)), questID, curQuest)
-    if curQuest.ID == 0:
-        return None
-    
-    Quests[questID] = curQuest
-    return  curQuest
-
-#---------------------------------------------------------------------
-##获取任务数据
-# @param 无
-# @return 返回值, 任务数据
-# @remarks 获取任务数据
-def GetQuests():
-    return Quests
-
-#---------------------------------------------------------------------
-##获取功能NPC对话数据
-# @param 无
-# @return 返回值, 对话数据
-# @remarks 获取功能NPC对话数据
-def GetFunctionNPCTalk():
-    return FunctionNPCTalk
-
-#---------------------------------------------------------------------
-##获取所有任务数据
-# @param 无
-# @return 返回值, 任务数据
-# @remarks 获取所有任务数据
-def GetAllQuestsEvents():
-    return AllQuestsEvents
-
-#---------------------------------------------------------------------
-##获取NPC默认对话
-# @param 无
-# @return 返回值, NPC默认对话
-# @remarks 获取NPC默认对话
-def GetDefaultTalk():
-    return DefaultTalk
-
-#---------------------------------------------------------------------
-##获取任务跳转数据
-# @param 无
-# @return 返回值, 任务跳转数据
-# @remarks 获取任务跳转数据
-def GetQuestTrig():
-    return QuestTrig
-
-#---------------------------------------------------------------------
-##获取任务描述
-# @param 无
-# @return 返回值, 任务描述
-# @remarks 获取任务描述
-def GetQuestDescriptions():
-    return QuestDescriptions
-
-## 任务描述数据类
-#
-#  PyClass类的详细说明.
-class QuestDescriptionsData:
-    ## 初始化, 容器包含, Code = '', ShowReward = 0
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, Code = '', ShowReward = 0
-    def __init__(self):
-        self.Code = ''
-        self.ShowReward = 0
-
-#---------------------------------------------------------------------
-## 任务索引中的一个事件
-#
-#  PyClass类的详细说明.
-class MainQuestEventData:
-    ## 初始化, 容器包含, Type = "",Source = "",FileSource = "",XMLEventLoader = None
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, Type = "",Source = "",FileSource = "",XMLEventLoader = None
-    def __init__(self):
-        self.XMLEventLoader = None
-        self.Type = ""
-        self.Source = ""
-        self.FileSource = ""
-    
-    #---------------------------------------------------------------------
-    ## 加载XML数据
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 加载XML数据
-    def GetXMLEventLoader(self):
-        if self.XMLEventLoader:
-            return self.XMLEventLoader
-        
-        #GameWorld.Log("读取任务触发: %s, %s"%(self.Type, self.Source))
-        self.XMLEventLoader = IPY_GameWorld.IPY_XMLLoader() 
-        #self.XMLEventLoader.LoadFromFile(self.FileSource)
-        self.XMLEventLoader.LoadFromXML(self.FileSource, ZipFile_GetData(self.FileSource))
-        return self.XMLEventLoader
-
-#---------------------------------------------------------------------
-## 任务灯的定义
-#
-#  PyClass类的详细说明.    
-class QuestLight:
-    ## 初始化, 容器包含, NPCID = 0, Type = 0
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, NPCID = 0, Type = 0
-    def __init__(self):
-        self.NPCID = 0
-        self.Type = 0
-
-#---------------------------------------------------------------------
-## 任务描述类
-#
-#  PyClass类的详细说明.
-class QuestDescription:
-    ## 初始化, 容器包含, Msg = "", Info = None, Lights = None, Rewards = None, 
-    #                        IsRewardNode = 0, MsgNode = None
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, Msg = "", Info = None, Lights = None, Rewards = None, 
-    #                                IsRewardNode = 0, MsgNode = None
-    def __init__(self):
-        self.Msg = ""
-        self.Info = list()      #Type = str()
-        self.Lights = list()    #Type = QuestLight
-        self.Rewards = None     #Type = list , listType = IPY_XMLNode
-        self.IsRewardNode = 0   #是否是奖励节点, (任务显示为完成状态)
-        self.MsgNode = None
-
-#---------------------------------------------------------------------
-## 挖宝地点定义
-#
-#  PyClass类的详细说明.
-class TreasurePos:
-    ## 初始化, 容器包含, MapID = 0, PosX = 0, PosY = 0
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, MapID = 0, PosX = 0, PosY = 0
-    def __init__(self):
-        self.MapID = 0
-        self.PosX = 0
-        self.PosY = 0
-
-#---------------------------------------------------------------------
-## 挖宝事件数据
-#
-#  PyClass类的详细说明.
-class TreasureData:
-    ## 初始化, 容器包含, Normal = None, Week = None
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, Normal = None, Week = None
-    def __init__(self):
-        self.Normal = None  #Type = list()     list Type = TreasurePos
-        self.Week = None    #Type = dict() key = 等级 dictType = dict() key = 星期    
-                            # dict Type = list()   list Type = TreasurePos
-
-#---------------------------------------------------------------------
-## 每日任务奖励数据类
-#
-#  PyClass类的详细说明.  
-class DayEventRewardData:
-    ## 初始化
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化
-    def __init__(self):
-        self.Exp = 0             #经验参数
-        self.AddExp = 0          #经验
-        self.Money = 0           #给钱
-        self.Soul = 0            #给魔魂
-        self.TruckMoney = 0      #骠车押金
-        self.Item = ""            #物品奖励
-        self.PlayerFamilyHornor = 0    #家族贡献
-        self.PlayerFamilyActiveValue = 0 #家族活跃度
-        self.FamilyHomeExp = 0      #家族家园经验
-        self.FamilyMoney = 0     #家族资金
-        self.FamilyHornor = 0    #家族荣誉
-        self.PetExp = 0    # 宠物经验
-        self.Prestige = 0    # 威望奖励
-        self.GoldPaper = 0    # 绑玉/灵石
-        
-#---------------------------------------------------------------------
-## 每日任务奖励数据类集合
-#
-#  PyClass类的详细说明.  
-class AllDayEventRewardData:
-    ## 初始化, 容器包含, MinLV, MaxLV, MoneyType, Rewards
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, MinLV, MaxLV, MoneyType, Rewards
-    def __init__(self):
-        self.MinLV = 0
-        self.MaxLV = 0
-        self.MoneyType = 0
-        self.Rewards = {}        #Type = dict{}       类型: DayEventRewardData
-        
-#---------------------------------------------------------------------
-## 跑环任务奖励数据类
-#
-#  PyClass类的详细说明. 
-class RunAroundRewardData(DayEventRewardData):
-    ## 初始化
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化
-    def __init__(self):
-        DayEventRewardData.__init__(self)
-
-#---------------------------------------------------------------------
-## 跑环任务奖励数据类集合
-#
-#  PyClass类的详细说明.  
-class AllRunAroundRewardData:
-    ## 初始化, 容器包含, MinLV, MaxLV, MoneyType, Rewards
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含, MinLV, MaxLV, MoneyType, Rewards
-    def __init__(self):
-        self.MinLV = 0
-        self.MaxLV = 0
-        self.MoneyType = 0
-        self.Rewards = {}        #Type = dict{}       类型: RunAroundRewardData
-
-#---------------------------------------------------------------------
-## 任务索引数据, 对应于quests.xml
-#
-#  PyClass类的详细说明.  
-class MainQuestData:
-    ## 初始化
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化
-    def __init__(self):
-        self.ID = 0                           #任务ID
-        self.Name = ""                        #任务名称
-        self.Type = 0                         #任务类型
-        self.QuestDescriptionList = list()    #Type = QuestDescription 任务描述
-        self.NPCID = 0                        #起始NPCID
-        self.LV = 0                           #可接等级
-        self.MapID = 0                        #地图ID
-        self.DayCurCount = ""                 #当前任务次数
-        self.DayMaxCount = ""                 #每日任务最大次数
-        self.Day_Count = ""                   #每日任务的描述
-        self.QuestsEvent = {}                 #Type = MainQuestEventData  任务信息,key = ("on_visit", 1111)
-        self.DayEvent = {}                    #Type = dict() 每日任务信息 DayEventData
-        self.Treasure = None                  #Type = 挖宝地点, TreasureData类
-        self.DayEventReward = None            #Type = 每日奖励,AllDayEventRewardData类
-        self.Invisible = 0                    #不显示在客户端
-        self.Code = ""                        
-        self.NameCode = ""                    #任务代码
-        self.UseCount = 0                     #命中次数
-        self.Color_lv = 0                     #任务颜色
-        self.CanDel = 0                       #任务可否删除
-        self.RunAroundReward = None             #跑环任务奖励  AllRunAroundRewardData
-        self.ResetCurCountDictName = ''               #任务当前重置次数字典名
-        self.ResetMaxCount = 0                #任务重置最大次数
-
-#---------------------------------------------------------------------
-## 功能NPC对话数据
-#
-#  PyClass类的详细说明.  
-class FunctionNPCTalkData:
-    #---------------------------------------------------------------------
-    ## 初始化, 容器包含ID, Name, Menus
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID, Name, Menus
-    def __init__(self):
-        self.ID = 0
-        self.Name = ""
-        self.Menus = list()
-
-#---------------------------------------------------------------------
-## 功能菜单类
-#
-#  PyClass类的详细说明.  
-class FunctionMenu:
-    ## 初始化, 容器包含Check, Menu
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含Check, Menu
-    def __init__(self):
-        self.Check = ""
-        self.Menu = ""
-        self.Code = ""
-        self.CheckArgs = ""
-        
-#---------------------------------------------------------------------
-## 特殊任务数据
-#
-#  PyClass类的详细说明.  
-class SpecialQuestData:
-    ## 初始化, 容器包含ID, Type, Name, LV, MapID, NPCID
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID, Type, Name, LV, MapID, NPCID
-    def __init__(self):
-        self.ID = 0
-        self.Type = 0
-        self.Name = ""
-        self.LV = 0
-        self.MapID = 0
-        self.NPCID = 0
-        
-#---------------------------------------------------------------------
-## 任务按照ID杀NPC
-#
-#  PyClass类的详细说明:目前跑环和每日用
-class Day_KillNPC_By_ID:
-    ## 初始化, 容器包含ID, Count, NPCData
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID, Count, NPCData
-    def __init__(self):
-        self.ID = 0
-        self.Count = 0
-        self.NPCData = None
-        self.MapID = 0 
-
-#---------------------------------------------------------------------
-## 任务按照等级杀NPC
-#
-#  PyClass类的详细说明:目前跑环和每日用
-class Day_KillNPC_By_LV:
-    ## 初始化, 容器包含LV, Count, Country
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含LV, Count, Country
-    def __init__(self):
-        self.LV = 0
-        self.Count = 0
-        self.Country = 0
-
-#---------------------------------------------------------------------
-## 任务收集物品
-#
-#  PyClass类的详细说明:目前跑环和每日用
-class Day_GetItem_By_ID:
-    ## 初始化, 容器包含ID, Count
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID, Count
-    def __init__(self):
-        self.ID = 0
-        self.Count = 0
-
-#---------------------------------------------------------------------
-## 访问NPC
-#
-#  PyClass类的详细说明:目前跑环和每日用
-class Day_VisitNPC:
-    ## 初始化, 容器包含ID
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID
-    def __init__(self):
-        self.ID = 0
-        self.MapID = 0
-        self.NPCData = None
-
-#---------------------------------------------------------------------
-## 随机任务
-#
-#  PyClass类的详细说明:目前跑环用
-class Day_Mission:
-    ## 初始化, 容器包含ID
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID
-    def __init__(self):
-        self.ID = 0
-
-#---------------------------------------------------------------------
-## 随机采集
-#
-#  PyClass类的详细说明:目前跑环用
-class Day_CollectNPC:
-    ## 初始化, 容器包含ID
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, 容器包含ID
-    def __init__(self):
-        self.ID = 0
-        self.Count = 0
-        self.MapID = 0
-#---------------------------------------------------------------------
-## 每日事件数据
-#
-#  PyClass类的详细说明.
-#===============================================================================
-# class DayEventData:
-#    ## 初始化
-#    #  @param self 类实例
-#    #  @return 返回值无意义
-#    #  @remarks 初始化
-#    def __init__(self):
-#        self.LV = 0
-#        self.Day_KillNPC_By_ID_List = list()    #Type = Day_KillNPC_By_ID
-#        self.Day_KillNPC_By_LV_List = list()    #Type = Day_KillNPC_By_LV
-#        self.Day_GetItem_By_ID = list()         #Type = Day_GetItem_By_ID
-#        self.Day_VisitNPCList = list()          #Type = Day_VisitNPC
-#        self.Day_MissionList = list()           #Type = Day_Mission
-#        self.Day_CollectNPCList = list()           #Type = Day_CollectNPC_By_ID
-#===============================================================================
-
-#---------------------------------------------------------------------
-## 任务跳转类
-#
-#  PyClass类的详细说明.       
-class QuestTrigData:
-    ## 初始化, ID,Next,Continue,CheckJob
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 初始化, ID,Next,Continue,CheckJob
-    def __init__( self ):
-        self.ID = 0
-        self.Next = 0
-        self.Continue = 0
-        self.CheckJob = ''
-
-
-
-#---------------------------------------------------------------------
-##加载任务数据
-# @param filePath 文件路径
-# @param questID 任务ID
-# @return 返回值无意义
-# @remarks 加载任务数据
-def LoadQuestEvents(filePath, questID):
-    #global Quests
-    global AllQuestsEvents
-    filePath = filePath + "\\"
-    
-    #GameWorld.Log('LoadQuestEvents filePath = %s'%filePath)
-#    questXMLName = '%s.xml'%questID
-#    #GameWorld.Log("读取任务: %s"%questXMLName)
-#    mainQuest = filePath + questXMLName
-#    mainQuestLoader = IPY_GameWorld.IPY_XMLLoader()
-#
-#    mainQuestLoader.LoadFromFile(mainQuest)
-#    #初始化任务索引
-#    mainQuestList = mainQuestLoader.GetNodeList()
-#    #当前任务的任务数据
-    
-    #导入这个任务的所有XML数据
-#    for root, dirs, files in ZipFile_Walk(filePath):
-#        for file in files:
-#            fileName = os.path.join(root, file)
-#            fileName = fileName.replace(filePath, "")
-
-    #GameWorld.Log(filePath)
-    filePath = filePath.lower()
-    for fileName in ZipFile_Walk(filePath):
-        fileName = fileName.replace(filePath, "")
-        if fileName.find("__init__") >= 0:
-            continue
-        
-        #GameWorld.Log(fileName)
-        curFileList = fileName.split(".")
-        
-        ext = curFileList[1]
-        if ext != "xml":
-            continue
-        fileSplit = fileName.split("\\")
-        
-        
-        if len(fileSplit) <= 1:
-            continue
-        xmlType = fileSplit[0]
-        
-        
-        xmlSource = fileName.replace("%s\\"%fileSplit[0], "")
-        xmlType = xmlType.lower()
-        key = (xmlType, xmlSource)
-
-        curEvent = MainQuestEventData()
-        curEvent.Type = xmlType
-        curEvent.Source = xmlSource
-        
-        #找到并且读取这个文件
-        curEvent.FileSource = filePath + xmlType + "\\" + xmlSource
-        if ChConfig.DelayLoadXML == False:
-            curEvent.GetXMLEventLoader()
-            #curEvent.XMLEventLoader.LoadFromFile(filePath + xmlType + "\\" + xmlSource)
-
-        #把当前事件添加到所有任务索引中
-        if AllQuestsEvents.has_key(key) != True:
-            AllQuestsEvents[key] = list()
-        
-        #GameWorld.Log(key)
-        AllQuestsEvents[key].append((questID, curEvent))
-            
-    return
-
-#---------------------------------------------------------------------
-##加载任务数据
-# @param filePath 文件路径
-# @param questID 任务ID
-# @param curQuest 任务容器
-# @return 返回值无意义
-# @remarks 加载任务数据
-def LoadQuest(filePath, questID, curQuest):
-    curMapID = GameWorld.GetMap().GetMapID()
-    #不加载不属于本地图的XML
-    if not CheckMapCanLoadXML( curMapID, questID ):
-        #调试信息, 正式上线删除
-        #GameWorld.Log( 'LoadQuest, 不加载不属于本地图的XML mapID = %s, questID = %s, filePath = %s'%( curMapID, questID, filePath ) )
-        return
-    
-    #GameWorld.Log(GameWorld.GetScript().OutputTrace())
-    #global Quests
-    #global AllQuestsEvents
-    questXMLName = '%s.xml'%questID
-    filePath = filePath + "\\"
-    
-    mainQuestList = None
-    if questID != 0:
-        #GameWorld.Log("读取任务详细: %s"%questXMLName)
-        mainQuest = filePath + questXMLName
-    
-        mainQuestLoader = IPY_GameWorld.IPY_XMLLoader()
-        
-        if not ZipFile_IsFile(mainQuest):
-            GameWorld.Log("Zip : %d 没有任务数据 : %s"%(questID, mainQuest))
-            return
-        #mainQuestLoader.LoadFromFile(mainQuest)
-        mainQuestLoader.LoadFromXML(mainQuest, ZipFile_GetData(mainQuest))
-        #初始化任务索引
-        mainQuestList = mainQuestLoader.GetNodeList()
-#    #当前任务的任务数据
-#    curQuest = MainQuestData()
-    
-    #导入这个任务的所有XML数据
-#    for root, dirs, files in os.walk(filePath):
-#        for file in files:
-#            fileName = os.path.join(root, file)
-#            fileName = fileName.replace(filePath, "")
-
-    filePath = filePath.lower()
-    for fileName in ZipFile_Walk(filePath):
-        fileName = fileName.replace(filePath, "")
-        if fileName.find("__init__") >= 0:
-            continue
-        
-        curFileList = fileName.split(".")
-        
-        ext = curFileList[1]
-        if ext != "xml":
-            continue
-        fileSplit = fileName.split("\\")
-        
-        #GameWorld.Log(fileName)
-        if len(fileSplit) <= 1:
-            continue
-        xmlType = fileSplit[0]
-        
-        
-        xmlSource = fileName.replace("%s\\"%fileSplit[0], "")
-        key = (xmlType, xmlSource)
-        if curQuest.QuestsEvent.has_key(key) != True:
-            curEvent = MainQuestEventData()
-            curEvent.Type = xmlType
-            curEvent.Source = xmlSource
-            
-            curEvent.FileSource = filePath + xmlType + "\\" + xmlSource
-            #找到并且读取这个文件
-            #curEvent.XMLEventLoader.LoadFromFile(filePath + xmlType + "\\" + xmlSource)
-            curQuest.QuestsEvent[(xmlType,xmlSource)] = curEvent
-#                
-#                #把当前事件添加到所有任务索引中
-#                if AllQuestsEvents.has_key(key) != True:
-#                    AllQuestsEvents[key] = list()
-#                try:
-#                    AllQuestsEvents[key].append((questID, curEvent))
-#                except Exception:
-#                    GameWorld.Log("任务读取错误:%s"%fileName)
-#                    raise Exception("任务读取错误:%s"%fileName)
-                
-                
-    if mainQuestList == None or mainQuestList.IsEmpty():
-        #没有任务数据
-        if questID != 0:
-            GameWorld.Log("%d 没有任务数据 : %s"%(questID, mainQuest))
-        return
-    
-    questList = mainQuestList.FindNode("quests").ChildNodes()
-    
-    if questList.GetCount() != 1:
-        GameWorld.Log("任务数据不为1")
-        return
-    
-    curQuestLoader = questList.Get(0)
-    
-    #idStr = curQuestLoader.GetAttribute("id")
-    curQuest.ID = questID
-    curQuest.Name = curQuestLoader.GetAttribute("name")
-    curQuest.NameCode = curQuestLoader.GetAttribute("ms_code")
-    curQuest.Code = curQuestLoader.GetAttribute("code")
-    curQuest.Type = int(curQuestLoader.GetAttribute("type"))
-    curQuest.NPCID = GameWorld.ToIntDef(curQuestLoader.GetAttribute("npc"), 0)
-    curQuest.LV = GameWorld.ToIntDef(curQuestLoader.GetAttribute("lv"), 0)
-    curQuest.MapID = GameWorld.ToIntDef(curQuestLoader.GetAttribute("map"), 0)
-    curQuest.Day_Count = curQuestLoader.GetAttribute("day_count")
-    curQuest.Color_lv = GameWorld.ToIntDef(curQuestLoader.GetAttribute("color_lv"), 0)
-    curQuest.CanDel = GameWorld.ToIntDef(curQuestLoader.GetAttribute("can_del"), 0)
-    
-    if curQuest.Day_Count != '':
-        #这个任务有次数条件
-        curList = curQuest.Day_Count.split('/')
-        try:
-            curQuest.DayCurCount = QuestCommon.DealWithInPut(curList[0], '!')[0]  #当前任务次数
-        except BaseException:
-            GameWorld.ErrLog("任务: %s 格式错误! curQuest.Day_Count = %s"%(questID, curQuest.Day_Count))
-            raise ("DD")
-    
-        maxCountList = QuestCommon.DealWithInPut(curList[1], '!')
-        if len(maxCountList) == 0:
-            curQuest.DayMaxCount = curList[1]
-        else:
-            curQuest.DayMaxCount = maxCountList[0]  #每日任务最大次数
-    
-    #---任务次数重置---
-    resetCountStr = curQuestLoader.GetAttribute("reset_count")
-    if resetCountStr != '':
-        #这个任务有次数条件
-        curList = resetCountStr.split('/')
-        try:
-            curQuest.ResetCurCountDictName = QuestCommon.DealWithInPut(curList[0], '!')[0]  #当前任务重置次数
-        except BaseException:
-            GameWorld.ErrLog("任务: %s 格式错误! curQuest.ResetCurCountDictName = %s"%(questID, 
-                                                curQuest.ResetCurCountDictName))
-            raise ("DD")
-
-        curQuest.ResetMaxCount = int(curList[1])
-
-    
-    #这个任务是否不在任务列表中显示
-    curQuest.Invisible = GameWorld.ToIntDef(curQuestLoader.GetAttribute("invisible"), 0)
-            
-    descriptionsNode = curQuestLoader.FindChildNode("descriptions")
-    
-#    if not Quests.has_key(curQuest.ID) :
-#        #添加任务
-#        Quests[curQuest.ID] = curQuest
-        
-    if descriptionsNode == None or descriptionsNode.IsEmpty():
-        return
-    
-    for i in range(0,descriptionsNode.GetChildCount()):
-        questDescription = QuestDescription()
-        curDescription = descriptionsNode.GetChild(i)       #description
-        
-        questDescription.IsRewardNode = GameWorld.ToIntDef(curDescription.GetAttribute("reward"), 0)
-
-        curMsg = curDescription.FindChildNode("msg")
-        curMissionInfo = curDescription.FindChildNode("mission_info")
-        curLight = curDescription.FindChildNode("lights")
-        questDescription.Rewards = curDescription.FindChildNode("rewards")
-        questDescription.MsgNode = curMsg
-        if curMsg != None and (not curMsg.IsEmpty()):
-            #questDescription.Msg = curMsg.GetXML()
-            questDescription.Msg = curMsg.GetAttribute("code")
-            
-        if curMissionInfo != None and (not curMissionInfo.IsEmpty()):
-            for i in range(0, curMissionInfo.GetChildCount()):
-                curNode = curMissionInfo.GetChild(i)
-                curContent = curNode.GetAttribute("code")
-                #curContent = curNode.GetXML()
-                questDescription.Info.append(curContent)
-                
-#===============================================================================
-#        if curLight != None and (not curLight.IsEmpty()):
-#            for i in range(0, curLight.GetChildCount()):
-#                questLight = QuestLight()
-#                curNode = curLight.GetChild(i)
-#                #GameWorld.Log("curQuest.ID = %s, NPCID = %s"%(curQuest.ID, curNode.GetAttribute("npcid")))
-#                questLight.NPCID = int(curNode.GetAttribute("npcid"))
-#                questLight.Type = int(curNode.GetAttribute("type"))
-#                questDescription.Lights.append(questLight)
-#===============================================================================
-        try:
-            #构成任务描述列表
-            curQuest.QuestDescriptionList.append(questDescription)
-        except Exception:
-            GameWorld.Log("任务读取错误:%s"%str(curQuest.ID))
-            raise Exception("任务描述错误:%s"%str(curQuest.ID))
-    
-    #读取任务事件随机数据
-    curQuest.DayEvent = LoadLevityEventData(filePath)
-    
-    #读取挖宝地点定义
-    #===========================================================================
-    # treasurePath = filePath + "treasure.xml"
-    # if ZipFile_IsFile(treasurePath):
-    #    try:
-    #        curQuest.Treasure = LoadTreasureData(treasurePath)
-    #        
-    #    except Exception:
-    #        GameWorld.Log("读取挖宝地点错误:%s"%treasurePath)
-    #        raise Exception("读取挖宝地点错误:%s"%treasurePath)
-    #===========================================================================
-        
-    #读取每日任务奖励 暂时关闭每日任务的奖励加载,开启需考虑minlv和maxlv存储的代码不要影响性能和内存
-    #===========================================================================
-    # rewardPath = filePath + "reward.xml"
-    # if ZipFile_IsFile(rewardPath):
-    #    try:
-    #        curQuest.DayEventReward = LoadDayEventRewardData(rewardPath)
-    #    except Exception:
-    #        GameWorld.Log("读取每日任务奖励错误:%s"%rewardPath)
-    #        raise Exception("读取每日任务奖励错误:%s"%rewardPath)
-    #===========================================================================
-        
-    #读取跑环任务奖励
-    rewardPath = filePath + "run_reward.xml"
-    if ZipFile_IsFile(rewardPath):
-        try:
-            curQuest.RunAroundReward = LoadRunAroundRewardData(rewardPath)
-        except Exception:
-            GameWorld.Log("读取跑环任务奖励错误:%s"%rewardPath)
-            raise Exception("读取跑环任务奖励错误:%s"%rewardPath)
-
-    return
-
-#---------------------------------------------------------------------
-##加载所有任务数据
-# @param 无
-# @return 返回值无意义
-# @remarks 加载所有任务数据
-def LoadQuestData():
-    global Quests
-    questPath = "%s\\Quests"%GetQuestDataName()
-    GameWorld.Log("Quests Initing... path = %s"%questPath)
-    
-#    LoadQuest(os.path.join(questPath, '0'), 0, MainQuestData())
-    if ZipFile_IsDir(questPath)!= True:
-        GameWorld.Log("Can't Find Path = %s"%questPath)
-        return
-    
-    dirs = ZipFile_ListDir(questPath)
-    #任务计数器
-    cnt = 0
-    #本地图ID
-    curMapID = GameWorld.GetMap().GetMapID()
-    
-    for curDir in dirs:
-        curPath = os.path.join(questPath, curDir)
-        #questXMLName = "%s.xml"%curDir
-        try:
-            questID = GameWorld.ToIntDef(curDir, 0)
-            if questID == 0 and curDir != '0':
-                GameWorld.Log("questID = 0 : %s, 格式不对, 不读取此xml"%curDir)
-                continue
-            
-            #不加载不属于本地图的XML
-            if not CheckMapCanLoadXML( curMapID, questID ):
-                continue
-            
-            cnt += 1
-            LoadQuestEvents(curPath, questID)
-            
-        except Exception:
-            GameWorld.Log('任务读取错误:%s'%curPath)
-            raise Exception('任务读取错误:%s'%curPath)
-        
-    GameWorld.Log("Quests Init OK, Quest = %d"%cnt)        
-    return
-
-#---------------------------------------------------------------------
-##只加载本地图的XML文件
-# @param curMapID 当前地图ID
-# @param questID 任务ID
-# @return 返回值真, 可以加载
-# @remarks 只加载本地图的XML文件
-def CheckMapCanLoadXML( curMapID, questID ):
-    #这个任务是用来记录任务潜规则的, 都要加载
-    if questID == ChConfig.Def_MissionID_FirstLogin:
-        return True
-    
-    readDict = ReadChConfig.GetEvalChConfig('MissionAcceptMapID')
-    
-    accecpMapID = readDict.get( questID )
-    #这个任务无限制
-    if not accecpMapID:
-        return True
-    
-    #全地图加载
-    if -1 in accecpMapID:
-        return True
-    
-    return ( curMapID in accecpMapID ) 
-#---------------------------------------------------------------------
-##加载功能NPC数据
-# @param 无
-# @return 返回值无意义
-# @remarks 加载功能NPC数据
-def LoadFunctionData():
-    global FunctionNPCTalk
-    #===========================================================
-    #初始化功能NPC的对话列表
-    functionPath = "%s\\FunctionNPC.xml"%GetQuestDataName()
-    functionLoader = IPY_GameWorld.IPY_XMLLoader()
-    #functionLoader.LoadFromFile(functionPath)
-    functionLoader.LoadFromXML(functionPath, ZipFile_GetData(functionPath))
-    
-    functionList = functionLoader.GetNodeList().FindNode("functions").ChildNodes()
-    for i in range(0, functionList.GetCount()):
-        curFunctionLoader = functionList.Get(i)
-        id = int(curFunctionLoader.GetAttribute("id"))
-        funcData = FunctionNPCTalkData()
-        funcData.ID = id
-        funcData.Name = curFunctionLoader.GetAttribute("name")
-        for i in range(0, curFunctionLoader.GetChildCount()):
-            funcMenu = FunctionMenu()
-            curMenu = curFunctionLoader.GetChild(i)
-            funcMenu.Menu = curMenu.GetAttribute("menu")
-            funcMenu.Code = curMenu.GetAttribute("code")
-            funcMenu.Check = curMenu.GetAttribute("check")
-            if funcMenu.Check == None:
-                continue
-            
-            funcMenu.CheckArgs = curMenu.GetAttribute("args")
-            funcData.Menus.append(funcMenu)
-        FunctionNPCTalk[id] = funcData
-
-#---------------------------------------------------------------------
-##加载传送点数据
-# @param treasurePath 文件路径
-# @return 返回值, 容器 TreasureData()
-# @remarks 加载传送点数据
-def LoadTreasureData(treasurePath):
-    treasureLoader = IPY_GameWorld.IPY_XMLLoader()
-    #treasureLoader.LoadFromFile(treasurePath)
-    treasureLoader.LoadFromXML(treasurePath, ZipFile_GetData(treasurePath))
-    nodeList = treasureLoader.GetNodeList()
-    if nodeList == None or nodeList.IsEmpty():
-        return None
-    
-    #GameWorld.Log("Load Treasure : %s"%treasurePath)
-    treasureData = TreasureData()
-    treasureList = nodeList.FindNode("treasure").ChildNodes()
-    
-    #读取普通挖宝地点
-    normalList = treasureList.FindNode("treasure_normal")
-    if normalList != None and (not normalList.IsEmpty()):
-        treasureNormalList = list()
-        for i in range(normalList.GetChildCount()):
-            curNode = normalList.GetChild(i)
-            treasurePos = TreasurePos()
-            treasurePos.MapID = int(curNode.GetAttribute("mapid"))
-            treasurePos.PosX = int(curNode.GetAttribute("posx"))
-            treasurePos.PosY = int(curNode.GetAttribute("posy"))
-            treasureNormalList.append(treasurePos)
-        treasureData.Normal = treasureNormalList
-    
-    weekList = treasureList.FindNode("treasure_weeks")
-    if weekList != None and (not weekList.IsEmpty()):
-        treasureByLV = dict()
-        for i in range(weekList.GetChildCount()):
-            curLVData = weekList.GetChild(i)        #treasure_week节点
-            
-            minLV = GameWorld.ToIntDef(curLVData.GetAttribute("minlv"), 0)
-            maxLV = GameWorld.ToIntDef(curLVData.GetAttribute("maxlv"), 0)
-            lv = GameWorld.ToIntDef(curLVData.GetAttribute("lv"), 0)
-        
-            treasureWeekList = dict()
-            if curLVData.GetChildCount() == 1:
-                #新格式:如果<week>节点只有一个, 自动扩充为7个
-                curWeekData = curLVData.GetChild(0)
-                curPosData = curWeekData.GetChild(0)
-                curData = list()
-                treasurePos = TreasurePos()
-                treasurePos.MapID = int(curPosData.GetAttribute("mapid"))
-                treasurePos.PosX = int(curPosData.GetAttribute("posx"))
-                treasurePos.PosY = int(curPosData.GetAttribute("posy"))
-                curData.append(treasurePos)
-                for curDay in range(1, 8):
-                    #7天
-                    treasureWeekList[curDay] = curData
-                    #GameWorld.Log(GameWorld.Log('---curDay---%s'%str(curData)))
-                
-                treasureByLV[lv] = treasureWeekList
-                continue
-            
-            for i in range(curLVData.GetChildCount()):
-                curWeekData = curLVData.GetChild(i)
-                curWeek = int(curWeekData.GetAttribute("day"))
-                treasureWeekList[curWeek] = list()
-                for i in range(curWeekData.GetChildCount()):
-                    curPosData = curWeekData.GetChild(i)
-                    treasurePos = TreasurePos()
-                    treasurePos.MapID = int(curPosData.GetAttribute("mapid"))
-                    treasurePos.PosX = int(curPosData.GetAttribute("posx"))
-                    treasurePos.PosY = int(curPosData.GetAttribute("posy"))
-                    treasureWeekList[curWeek].append(treasurePos)
-                    
-            if lv != 0:
-                treasureByLV[lv] = treasureWeekList
-                #GameWorld.Log('---lv---%s'%str(treasureWeekList))
-            else:
-#                GameWorld.Log(treasurePath)
-#                GameWorld.Log('---minLV %s, maxLV %s---%s'%(minLV, maxLV, str(treasureWeekList)))
-                for curLV in range(minLV, maxLV):
-                    treasureByLV[curLV] = treasureWeekList
-                    
-                    
-        treasureData.Week = treasureByLV
-        #GameWorld.Log(str(treasureData.Week))
-    return treasureData
-
-#---------------------------------------------------------------------
-##加载跑环任务奖励数据
-# @param runAroundRewardPath 文件路径
-# @return 返回值, 容器AllRunAroundRewardData()
-# @remarks 加载跑环任务奖励数据
-def LoadRunAroundRewardData(runAroundRewardPath):
-    allRunAround = AllRunAroundRewardData()
-    
-    dayEventRewardLoader = IPY_GameWorld.IPY_XMLLoader()
-    dayEventRewardLoader.LoadFromXML(runAroundRewardPath, ZipFile_GetData(runAroundRewardPath))
-    
-    nodeList = dayEventRewardLoader.GetNodeList()
-    
-    if nodeList == None or nodeList.IsEmpty():
-        GameWorld.Log("没有这个文件 %s"%runAroundRewardPath)
-        return None
-    rewardsNode = nodeList.FindNode("rewards")
-    
-    allRunAround.MoneyType = int(rewardsNode.GetAttribute("moneytype"))
-    allRunAround.MinLV = 1000
-    allRunAround.MaxLV = 0
-    runAroundRewardList = rewardsNode.ChildNodes()
-    for i in xrange(runAroundRewardList.GetCount()):
-        curRunAroundRewardNode = runAroundRewardList.Get(i)
-        Exp = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("exp"), 0)
-        addExp = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("addexp"), 0)
-        Money = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("money"), 0)
-        Item = curRunAroundRewardNode.GetAttribute("item")
-        minLV = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("minlv"), 0)
-        maxLV = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("maxlv"), 0)
-        familyHornor = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("familyhornor"), 0)
-        goldPaper = GameWorld.ToIntDef(curRunAroundRewardNode.GetAttribute("goldpaper"), 0)
-        #继承每日奖励,参考设置
-        dayEventRewardData = RunAroundRewardData()
-        dayEventRewardData.Exp = Exp
-        dayEventRewardData.AddExp = addExp
-        dayEventRewardData.Money = Money
-        dayEventRewardData.Item = Item
-        dayEventRewardData.PlayerFamilyHornor = familyHornor
-        dayEventRewardData.GoldPaper = goldPaper
-        allRunAround.Rewards[(minLV, maxLV)] = dayEventRewardData
-        if minLV < allRunAround.MinLV:
-            allRunAround.MinLV = minLV
-        if maxLV > allRunAround.MaxLV:
-            allRunAround.MaxLV = maxLV
-         
-    return allRunAround
-
-#---------------------------------------------------------------------
-##加载每日任务奖励数据
-# @param treasurePath 文件路径
-# @return 返回值, 容器AllDayEventRewardData()
-# @remarks 加载每日任务奖励数据
-def LoadDayEventRewardData(dayEventRewardPath):
-    allDayEvent = AllDayEventRewardData()
-    
-    dayEventRewardLoader = IPY_GameWorld.IPY_XMLLoader()
-    #dayEventRewardLoader.LoadFromFile(dayEventRewardPath)
-    dayEventRewardLoader.LoadFromXML(dayEventRewardPath, ZipFile_GetData(dayEventRewardPath))
-    
-    nodeList = dayEventRewardLoader.GetNodeList()
-    
-    if nodeList == None or nodeList.IsEmpty():
-        #没有这个文件
-        return None
-    
-    rewardsNode = nodeList.FindNode("rewards")
-    
-    allDayEvent.MinLV = int(rewardsNode.GetAttribute("minlv"))
-    allDayEvent.MaxLV = int(rewardsNode.GetAttribute("maxlv"))
-    allDayEvent.MoneyType = int(rewardsNode.GetAttribute("moneytype"))
-    
-    dayEventRewardList = rewardsNode.ChildNodes()
-    for i in range(0, dayEventRewardList.GetCount()):
-        curDayEventRewardNode = dayEventRewardList.Get(i)
-        lv = int(curDayEventRewardNode.GetAttribute("lv"))
-        dayEventRewardData = DayEventRewardData()
-        
-        dayEventRewardData.Exp = GameWorld.ToIntDef(curDayEventRewardNode.GetAttribute("exp"), 0)
-        dayEventRewardData.Money = GameWorld.ToIntDef(curDayEventRewardNode.GetAttribute("money"), 0)
-        dayEventRewardData.TruckMoney = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                                           GetAttribute("truck_money"), 0)
-        dayEventRewardData.Item = curDayEventRewardNode.GetAttribute("item")
-        
-        #家族贡献
-        dayEventRewardData.PlayerFamilyHornor = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                                GetAttribute("player_family_hornor"), 0)
-        #家族活跃度
-        dayEventRewardData.PlayerFamilyActiveValue = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                                    GetAttribute("player_family_active_value"), 0)
-        #家园经验
-        dayEventRewardData.FamilyHomeExp = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                                    GetAttribute("family_home_exp"), 0)
-        #家族资金 
-        dayEventRewardData.FamilyMoney = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                         GetAttribute("family_money"), 0)
-        #家族荣誉
-        dayEventRewardData.FamilyHornor = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                          GetAttribute("family_hornor"), 0)
-        #宠物经验
-        dayEventRewardData.PetExp = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                    GetAttribute("pet_exp"), 0)
-        #威望
-        dayEventRewardData.Prestige = GameWorld.ToIntDef(curDayEventRewardNode.\
-                                      GetAttribute("prestige"), 0)
-        
-        allDayEvent.Rewards[lv] = dayEventRewardData  
-            
-    return allDayEvent
-
-
-#===============================================================================
-## 按照ID来杀怪
-# @param curNode 节点
-# @param funcData 任务容器DayEvent
-# @return 无
-# @remarks 按照ID来杀怪
-def LoadKillByID(curNode):
-    killNPC = Day_KillNPC_By_ID()
-    killNPC.ID = int(curNode.GetAttribute("id")) 
-    #killNPC.Count = int(curNode.GetAttribute("count"))
-    killNPC.NPCData = GameWorld.GetGameData().FindNPCDataByID(killNPC.ID)
-    killNPC.MapID = GameWorld.ToIntDef(curNode.GetAttribute("mapid"), 0)
-    return killNPC
-
-## 按照等级来杀怪
-# @param curNode 节点
-# @param funcData 任务容器DayEvent
-# @return 无
-# @remarks 按照等级来杀怪
-def LoadKillByLV(curNode):
-    killLV = Day_KillNPC_By_LV()
-    killLV.LV = int(curNode.GetAttribute("lv"))
-    killLV.Count = int(curNode.GetAttribute("count"))
-    killLV.Country = int(curNode.GetAttribute("country"))
-    return killLV
-
-## 按照ID来收集物品
-# @param curNode 节点
-# @param funcData 任务容器DayEvent
-# @return 无
-# @remarks 按照ID来收集物品
-def LoadItemByID(curNode):
-    getItem = Day_GetItem_By_ID()
-    getItem.ID = int(curNode.GetAttribute("id"))
-    getItem.Count = int(curNode.GetAttribute("count"))
-    return getItem
-
-## 随机访问NPC数据
-# @param curNode 节点
-# @param funcData 任务容器DayEvent
-# @return 无
-# @remarks 随机访问NPC数据
-def LoadVisitNpcByID(curNode):
-    visitNPC = Day_VisitNPC()
-    visitNPC.ID = int(curNode.GetAttribute("id"))
-    visitNPC.MapID = GameWorld.ToIntDef(curNode.GetAttribute("mapid"), 0)
-    visitNPC.NPCData = GameWorld.GetGameData().FindNPCDataByID(visitNPC.ID)
-    return visitNPC
-
-## 随机任务数据
-# @param curNode 节点
-# @param funcData 任务容器DayEvent
-# @return 无
-# @remarks 随机任务数据
-def LoadMissionByID(curNode):
-    #mission = Day_Mission()
-    missionID = int(curNode.GetAttribute("id"))
-    rate = int(curNode.GetAttribute("rate"))
-
-    return rate, missionID
-    
-## 随机采集数据
-# @param curNode 节点
-# @param funcData 任务容器DayEvent
-# @return 无
-# @remarks 随机采集数据
-def LoadCollectNPCByID(curNode):
-    collectNPC = Day_CollectNPC()
-    collectNPC.ID = int(curNode.GetAttribute("id"))
-    collectNPC.Count = int(curNode.GetAttribute("count"))
-    collectNPC.MapID = GameWorld.ToIntDef(curNode.GetAttribute("mapid"), 0)
-    
-    return collectNPC
-
-## 读表更改字典值,此函数外层需考虑是否遍历调用, 会因重复导致内存和性能问题
-# 参数 lvInfo 可以是数字等级,和元组(最小,最大等级)
-# @remarks 随机采集数据
-def LoadXMLDict(eventXMLData, lvInfo, curEventNode, loadFunc, dayEventType):
-    if dayEventType not in eventXMLData:
-        eventXMLData[dayEventType] = {}
-    
-    if lvInfo not in eventXMLData[dayEventType]:
-        eventXMLData[dayEventType][lvInfo] = []
-        
-    for i in range(0, curEventNode.GetChildCount()):
-        curNode = curEventNode.GetChild(i)
-        eventXMLData[dayEventType][lvInfo].append(loadFunc(curNode))
-
-
-    
-#==============================================================================
-## 随机时间读取器
-# @param eventPath XML路径
-# @param funcData 任务容器DayEvent
-# @param eventXMLData 任务总容器
-# @param loadFunc 函数名
-# @return 无
-# @remarks 随机时间读取器
-def LoadEvent(eventPath, eventXMLData, loadFunc, dayEventType):
-    eventLoader = IPY_GameWorld.IPY_XMLLoader()
-    eventLoader.LoadFromXML(eventPath, ZipFile_GetData(eventPath))
-    
-    nodeList = eventLoader.GetNodeList()
-    
-    if nodeList == None or nodeList.IsEmpty():
-        #没有这个文件
-        return None
-
-    #---读取节点数据---
-    eventList = nodeList.FindNode("task_event").ChildNodes()
-    for i in range(0, eventList.GetCount()):
-        curEventNode = eventList.Get(i)
-        lv = GameWorld.ToIntDef(curEventNode.GetAttribute("lv"), 0)
-
-        if lv != 0:
-            LoadXMLDict(eventXMLData, lv, curEventNode, loadFunc, dayEventType)
-            continue
-        
-        #新格式: <event minlv="25" maxlv="45">
-        minlv = int(curEventNode.GetAttribute("minlv"))
-        maxlv = int(curEventNode.GetAttribute("maxlv")) 
-
-        LoadXMLDict(eventXMLData, (minlv, maxlv), curEventNode, loadFunc, dayEventType)
-
-
-## 读取任务事件
-# @param filePath XML路径
-# @return 无
-# @remarks 读取任务事件
-def LoadLevityEventData(filePath):
-    eventXMLData = {}
-
-    #---读取杀怪(ID)任务数据---
-    eventPath = filePath + "event_kill_by_id.xml"
-    if ZipFile_IsFile(eventPath):
-        try:
-            LoadEvent(eventPath, eventXMLData, LoadKillByID, QuestCommon.Day_KillNPC_By_ID_List)
-        except Exception, e:
-            GameWorld.Log("读取随机收集杀怪(ID):%s"%e)
-            raise Exception("读取随机收集杀怪(ID):%s"%eventPath) 
-
-
-    #---读取杀怪(LV)任务数据---
-    eventPath = filePath + "event_kill_by_lv.xml"
-    if ZipFile_IsFile(eventPath):
-        try:
-            LoadEvent(eventPath, eventXMLData, LoadKillByLV, QuestCommon.Day_KillNPC_By_LV_List)
-        except Exception, e:
-            GameWorld.Log("读取随机收集杀怪(LV):%s"%e)
-            raise Exception("读取随机收集杀怪(LV):%s"%eventPath) 
-        
-
-    #---收集物品(ID)任务数据---
-    eventPath = filePath + "event_item_by_id.xml"
-    if ZipFile_IsFile(eventPath):
-        try:
-            LoadEvent(eventPath, eventXMLData, LoadItemByID, QuestCommon.Day_GetItem_By_ID)
-        except Exception, e:
-            GameWorld.Log("读取随机收集物品(ID):%s"%e)
-            raise Exception("读取随机收集物品(ID):%s"%eventPath)
-
-
-    #---访问NPC(ID)任务数据---
-    eventPath = filePath + "event_visit_by_id.xml"
-    if ZipFile_IsFile(eventPath):
-        try:
-            LoadEvent(eventPath, eventXMLData, LoadVisitNpcByID, QuestCommon.Day_VisitNPCList)
-        except Exception, e:
-            GameWorld.Log("读取随机访问NPC(ID):%s"%e)
-            raise Exception("读取随机访问NPC(ID):%s"%eventPath) 
-        
-        
-    #---随机接任务(ID)任务数据---
-    eventPath = filePath + "event_mission_by_id.xml"
-    if ZipFile_IsFile(eventPath):
-        try:
-            LoadEvent(eventPath, eventXMLData, LoadMissionByID, QuestCommon.Day_MissionList)
-        except Exception, e:
-            GameWorld.Log("读取随机任务(ID):%s"%(e))
-            raise Exception("读取随机任务(ID):%s"%eventPath) 
-        
-    #---随机采集(ID)任务数据---
-    eventPath = filePath + "event_collect_by_id.xml"
-    if ZipFile_IsFile(eventPath):
-        try:
-            LoadEvent(eventPath, eventXMLData, LoadCollectNPCByID, QuestCommon.Day_CollectNPCList)
-        except Exception, e:
-            GameWorld.Log("读取随机采集(ID):%s"%(e))
-            raise Exception("读取随机采集(ID):%s"%eventPath) 
-    
-    return eventXMLData
-
-
-#def LoadSpecialQuestData():
-#    global Special_Quests
-#    questPath = ChConfig.GetAppPath() + "QuestData\\"
-#    
-#    mainQuest = questPath + "special_quests.xml"
-#    mainQuestLoader = IPY_GameWorld.IPY_XMLLoader()
-#    mainQuestLoader.LoadFromFile(mainQuest)
-#                
-#                
-#    #==============================================
-#    #初始化任务索引
-#    mainQuestList = mainQuestLoader.GetNodeList()
-#    if mainQuestList == None:
-#        #没有任务数据
-#        return
-#    questList = mainQuestList.FindNode("quests").ChildNodes()
-#    
-#    for i in range(0, questList.GetCount()):
-#        curQuestLoader = questList.Get(i)
-#        idStr = curQuestLoader.GetAttribute("id")
-#        curQuest = SpecialQuestData()
-#        curQuest.ID = int(idStr)
-#        curQuest.Name = curQuestLoader.GetAttribute("name")
-#        curQuest.Type = int(curQuestLoader.GetAttribute("type"))
-#        curQuest.LV = int(curQuestLoader.GetAttribute("lv"))
-#        curQuest.MapID = int(curQuestLoader.GetAttribute("mapid"))
-#        curQuest.NPCID = int(curQuestLoader.GetAttribute("npcid"))
-#        Special_Quests[curQuest.ID] = curQuest
-#        
-#    return
-
-#---------------------------------------------------------------------
-##读取默认对话数据(暂不使用)
-# @param 无
-# @return 返回值无意义
-# @remarks 读取默认对话数据(暂不使用)
-def LoadDefaultTalkData():
-    #更改为动态读取, 用FindDefaultTalk读取
-#    global DefaultTalk
-#    filePath = ChConfig.GetAppPath() + "QuestDataGb\\default_talk"
-#    #导入这个任务的所有XML数据
-#    files=os.listdir(filePath)
-#    for file in files:
-#        fileName = file.split(".")[0]
-#        if fileName.find("__init__") >= 0:
-#            continue
-#        ext = file.split(".")[1]
-#        if ext != "xml":
-#            continue
-#        npcID = int(fileName)
-#        xmlLoader = IPY_GameWorld.IPY_XMLLoader()
-#        xmlLoader.LoadFromFile(filePath+"\\"+file)
-#        DefaultTalk[npcID] = xmlLoader
-        #GameWorld.Log("读取默认对话 : %d"%npcID)
-            
-    return
-
-#---------------------------------------------------------------------
-##加载任务跳转
-# @param 无
-# @return 返回值无意义
-# @remarks 加载任务跳转
-def LoadQuestTrig():
-    global QuestTrig
-    filePath = "%s\quest_map.xml"%GetQuestDataName()
-    trigLoader = IPY_GameWorld.IPY_XMLLoader()
-    #trigLoader.LoadFromFile(filePath)
-    trigLoader.LoadFromXML( filePath, ZipFile_GetData( filePath ) )
-    questTrig = trigLoader.GetNodeList().FindNode( "quest_trig" )
-    
-    for i in range( 0, questTrig.GetChildCount() ):
-        curTrig = questTrig.GetChild(i)
-        
-        tridData = QuestTrigData()
-        #职业验证允许为空
-        tridData.CheckJob = curTrig.GetAttribute( "job" )
-        tridData.ID = int( curTrig.GetAttribute( "id" ) )
-        tridData.Next = int( curTrig.GetAttribute( "next" ) )
-        tridData.Continue = int( curTrig.GetAttribute( "continue" ) )
-        
-        if not QuestTrig.has_key( tridData.ID ):
-            QuestTrig[ tridData.ID ] = list()
-        
-        QuestTrig[ tridData.ID ].append( tridData )
-        
-        #GameWorld.Log("add Trig ID = %d"%tridData.ID)
-
-#---------------------------------------------------------------------
-##加载任务简要信息
-# @param 无
-# @return 返回值无意义
-# @remarks 加载任务简要信息
-def LoadMissionDescription():
-    global QuestDescriptions
-    
-    questPath = os.path.join(GetQuestDataName(), "MissionDescription.xml")
-    questLoader = IPY_GameWorld.IPY_XMLLoader()
-    #questLoader.LoadFromFile(questPath)
-    questLoader.LoadFromXML(questPath, ZipFile_GetData(questPath))
-    
-    questsNode = questLoader.GetNodeList().FindNode('quests') 
-    for i in range(questsNode.GetChildCount()):
-        questNode = questsNode.GetChild(i)
-        msgNode = questNode.FindChildNode('msg')
-        code = msgNode.GetAttribute('code')
-        questID = int(questNode.GetAttribute('id'))
-        curQuestDescriptionsData = QuestDescriptionsData()
-        curQuestDescriptionsData.Code = code
-        curQuestDescriptionsData.ShowReward = GameWorld.ToIntDef(
-                                              questNode.GetAttribute('have_reward'), 0)
-        QuestDescriptions[questID] = curQuestDescriptionsData
-    return
-
-#---------------------------------------------------------------------
-##加载任务题库
-# @param 无
-# @return 返回值无意义
-# @remarks 加载任务题库
-def ReadSubjectLib():
-    mapID = GameWorld.GetMap().GetMapID()
-    #不需要重读的地图
-    if mapID not in ChConfig.Def_Subject_Map:
-        return
-    
-    curPath = "%s\\SubjectLib"%GetQuestDataName()
-    curPath = curPath.upper()
-    
-    if not ZipFile_IsDir(curPath):
-        GameWorld.Log("路径 = %s , 无法查找到答题题库!"%(curPath))
-        return
-    
-    
-    files = ZipFile_ListFile(curPath)
-    for file in files:
-        file = file.lower()
-        ext = os.path.splitext(file)
-        postfix = ext[1]
-        if postfix != ".txt":
-            continue
-        
-        fileName = ext[0]
-        fileData = ZipFile_GetData(os.path.join(curPath, file))
-        SubjectLib.ReadSubjectData(fileData, fileName)
-    
-    return
-
-#---------------------------------------------------------------------
-##C++触发, 执行所有任务逻辑
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks C++触发, 执行所有任务逻辑
-def ReloadQuests(tick):
-    global ZipFile
-    global ZipFileTree
-    global Quests
-    global AllQuestsEvents
-    
-    #添加高精度计数器
-    gameWorldMgr = GameWorld.GetGameWorld() 
-    saveTick = gameWorldMgr.GetHighResolutionTick()
-    
-    #---开始加载---
-    questPath = ChConfig.GetAppPath() + "QuestData.zip"
-    ZipFile = zipfile.ZipFile(questPath)
-    ZipFileTree = __GetFileTree(ZipFile)
-    
-    #currentLoader = IPY_GameWorld.IPY_XMLLoader()
-    #currentLoader.ClearLoader()
-    IPY_GameWorld.ClearXML()
-    
-    Quests.clear()
-    
-    AllQuestsEvents.clear()
-    
-    LoadQuestData()
-    
-    #读取功能NPC数据
-    LoadFunctionData()
-    
-    #读取默认对话数据
-    LoadDefaultTalkData()
-    
-    #读取任务触发数据
-    LoadQuestTrig()
-    
-    #读取所有的题库
-    #SubjectLib.ReadData()
-    
-    ReadSubjectLib()
-    
-    #读取所有任务任务描述数据
-    LoadMissionDescription()
-    
-    #---加载结束---
-    GameWorld.Log('Reload Quests. path = %s, lastTick = %s'%(
-                            questPath, gameWorldMgr.GetHighResolutionTick() - saveTick))
-    return
-    
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
deleted file mode 100644
index e2a7ce5..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ /dev/null
@@ -1,7610 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package QuestRunner
-# @todo: 任务执行逻辑
-#
-# @author: eggxp
-# @date 2010-04-27
-# @version 8.4
-#
-# @note: 任务执行逻辑处理,接口函数
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#"""Version = 2017-04-25 17:00"""
-#---------------------------------------------------------------------
-#ConditionType_   #事前判定
-#DoType_          #事后判定
-#---------------------------------------------------------------------
-import ChConfig
-import EventShell
-import BuffSkill
-import FBLogic
-import GameMap
-import GameWorld
-import GameWorldProcess
-import IPY_GameWorld
-import ItemControler
-import PlayerControl
-import PlayerTruck
-import QuestRunnerValue
-import SkillCommon
-import ItemCommon
-import ReadChConfig
-import QuestCommon
-import SkillShell
-import GameLogInfo
-import PlayerMissionCollect
-import PlayerFamily
-import ShareDefine
-#import PlayerPrestigeSys
-import NetPackCommon
-import ChPyNetSendPack
-import DataRecordPack
-import ChItem
-import ChEquip
-import PlayerActivity
-import PlayerSuccess
-import IpyGameDataPY
-import PlayerPet
-import PlayerArrestTask
-import PlayerMagicWeapon
-import PlayerBossReborn
-import PlayerFairyCeremony
-import PlayerNewFairyCeremony
-import Operate_EquipStone
-import OpenServerCampaign
-import PlayerFeastTravel
-import PlayerWeekParty
-import PlayerFairyDomain
-import PlayerCustomAward
-import GameFuncComm
-import PlayerActLogin
-import PlayerHorse
-import FBCommon
-import NPCCommon
-import GameObj
-
-import math
-import time
-import datetime
-import random
-import re
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-TYPE_Event_Select = 1
-TYPE_Event_Do = 2
-
-#注意! 这里的字典名不能超过29个字节
-#每日任务的奖励(在给接受新任务的时候设置)
-Def_Day_Event_Reward_Exp = "day_event_exp"              #每日任务的奖励
-Def_Day_Event_Reward_Money = "day_event_money"          #每日任务的给钱
-Def_Day_Event_Reward_Truck_Money = "day_event_truck_money"  #每日任务骠车
-Def_Day_Event_Reward_Item_Id = "day_event_item_id"            #每日任务的奖励物品ID
-Def_Day_Event_Reward_Item_Count = "day_event_item_count"            #每日任务的奖励物品数量
-Def_Day_Event_Reward_Player_Family_Hornor = "day_event_pfamily_hornor"
-Def_Day_Event_Reward_Player_Family_ActiveValue = "day_event_pfamily_actvalue"
-Def_Day_Event_Reward_Family_Money = "day_event_family_money"
-Def_Day_Event_Reward_Family_Hornor = "day_event_hornor"
-Def_Day_Event_Reward_Pet_Exp = "day_event_pet_exp"    #每日宠物经验奖励
-Def_Day_Event_Reward_Prestige = "day_event_prestige"    #每日威望奖励
-
-#跑环任务奖励
-Def_Run_Around_Reward_Exp = "run_around_exp"              #跑环任务的奖励
-Def_Run_Around_Reward_ExpPoint = "run_around_exp_point"     #跑环任务的奖励
-Def_Run_Around_Reward_Money = "run_around_money"          #跑环任务的给钱
-Def_Run_Around_Reward_GoldPaper = "run_around_gold_paper"          #跑环任务的给绑玉
-Def_Run_Around_Reward_FamilyHornor = "run_around_familyhornor"     #跑环任务的仙盟贡献奖励
-Def_Run_Around_Reward_Multiple = "run_around_multiple"     #跑环任务的奖励翻倍数
-
-Def_Task_Reward_Per = "reward_per"     #领取任务奖励倍数百分比; 150代表1.5倍
-
-
-#跑环结束状态
-Def_Run_Around_Over_1 = 1
-Def_Run_Around_Over_2 = 2
-Def_Run_Around_Over_3 = 3
-
-#1. xml没有调用过SetState函数
-#2. 玩家之前没有此任务
-#则在这里把当前任务通知给玩家
-#防止连续通知2次, 导致玩家的任务查询列表中有2个相同任务
-__PlayerSetState = False
-
-#-------------------------------------------------
-## 挖宝广播信息.
-#
-#  PyClass类的详细说明.
-class TreasureNotifyContent:
-    LV = 0
-    Content = None
-    MissionID = 0
-    #---------------------------------------------------------------------
-    ## 容器初始化, LV,Content,MissionID
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 容器初始化, LV,Content,MissionID
-    def __init__(self):
-        self.LV = 0
-        self.Content = str()
-        self.MissionID = 0
-        
-TreasureNotifyContentList = list() #Type = TreasureNotifyContent
-
-#---------------------------------------------------------------------
-##初始化挖宝广播信息列表
-# @param 无
-# @return 返回值无意义
-# @remarks 初始化挖宝广播信息列表 TreasureNotifyContentList = list() #Type = TreasureNotifyContent
-def InitTreasureNotifyContentList():
-    global TreasureNotifyContentList
-    TreasureNotifyContentList = list()
-    return
-
-#---------------------------------------------------------------------
-##获取挖宝广播信息列表 
-# @param 无
-# @return 返回值, 挖宝广播信息列表
-# @remarks 获取挖宝广播信息列表 TreasureNotifyContentList = list() #Type = TreasureNotifyContent
-def GetTreasureNotifyContentList():
-    return TreasureNotifyContentList
-    
-#-------------------------------------------------
-
-#eggxp
-TalkContent = IPY_GameWorld.IPY_TalkMsg()
-
-#MissionDescription = IPY_GameWorld.IPY_MissionDescription()
-MissionDescription = IPY_GameWorld.IPY_MissionDesc()
-
-CurrentPlayerAnswer = str()
-
-CurrentKillNPC = None
-
-#所有任务的索引
-FindQuestFunc = None
-#功能npc的对话
-FunctionNPCTalk = None
-#默认对话数据
-FindDefaultTalkFunc = None
-#任务对话链
-QuestTrig = None
-#任务默认描述
-QuestDescriptions = None
-#所有任务事件
-AllQuestsEvents = None
-
-
-#---------------------------------------------------------------------
-##设置全局任务
-# @param allQuestsEvents 所有任务事件
-# @return 返回值无意义
-# @remarks 赋值全局变量AllQuestsEvents = allQuestsEvents
-def SetAllQuestsEvents(allQuestsEvents):
-    global AllQuestsEvents
-    AllQuestsEvents = allQuestsEvents
-
-#---------------------------------------------------------------------
-##设置全局任务查找函数
-# @param questIndex 任务索引
-# @return 返回值无意义
-# @remarks 赋值全局变量FindQuestFunc = QuestCommon.SetFindQuestFunc
-def SetFindQuestFunc(questIndex):
-    global FindQuestFunc
-    FindQuestFunc = questIndex
-    QuestCommon.SetFindQuestFunc(questIndex)
-
-#---------------------------------------------------------------------
-##设置功能NPC对话
-# @param funcTalk 任务对话数据
-# @return 返回值无意义
-# @remarks 赋值全局变量FunctionNPCTalk = funcTalk
-def SetFunctionNPCTalk(funcTalk):
-    global FunctionNPCTalk
-    FunctionNPCTalk = funcTalk
-
-#---------------------------------------------------------------------
-##设置功能NPC默认对话
-# @param funcTalk 任务对话默认数据
-# @return 返回值无意义
-# @remarks 赋值全局变量FindDefaultTalkFunc = defaultTalk
-def SetFindDefaultTalkFunc(defaultTalk):
-    global FindDefaultTalkFunc
-    FindDefaultTalkFunc = defaultTalk
-
-#---------------------------------------------------------------------
-##设置击杀的NPC
-# @param curNPC NPC实例
-# @return 返回值无意义
-# @remarks 赋值全局变量CurrentKillNPC = curNPC
-def SetKillNPC(curNPC):
-    global CurrentKillNPC
-    CurrentKillNPC = curNPC
-
-#---------------------------------------------------------------------
-##任务跳转
-# @param questTrig 任务跳转信息
-# @return 返回值无意义
-# @remarks 赋值全局变量QuestTrig = questTrig
-def SetQuestTrig(questTrig):
-    global QuestTrig
-    QuestTrig = questTrig
-
-#---------------------------------------------------------------------
-##任务描述
-# @param questDescriptions 任务描述
-# @return 返回值无意义
-# @remarks 赋值全局变量QuestDescriptions = questDescriptions
-def SetQuestDescriptions(questDescriptions):
-    global QuestDescriptions
-    QuestDescriptions = questDescriptions
-
-#---------------------------------------------------------------------
-##获取玩家当前点击的NPC
-# @param curPlayer 玩家实例
-# @return 返回值, NPC实例
-# @remarks 获取玩家当前点击的NPC
-def GetPlayerTalkNPC(curPlayer):
-    #得到玩家的对象NPC
-    tagObj = curPlayer.GetActionObj()
-    if tagObj == None:
-        #没有目标
-        return None
-    
-    if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC:
-        return None
-    
-    curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex())
-    return curNPC
-
-#---------------------------------------------------------------------
-##获取玩家当前点击的NPC谈话内容
-# @param curPlayer 玩家实例
-# @return 返回值, 谈话内容, 菜单选项
-# @remarks 获取玩家当前点击的NPC谈话内容
-def GetTalkContent(curPlayer):
-    global TalkContent
-    TalkContent.Clear()
-    #得到玩家的对象NPC
-    curNPC = GetPlayerTalkNPC(curPlayer)
-    if curNPC == None:
-        #没有这个NPC
-        return TalkContent, None
-    
-    funcTalkDict = FunctionNPCTalk
-    
-    funcType = curNPC.GetFunctionType()
-    if funcTalkDict.has_key(funcType) != True:
-        return TalkContent, None
-    
-    menuList = list()
-    
-    for menu in funcTalkDict[funcType].Menus:
-        if QuestRunnerValue.RunMenuCheck(curPlayer, menu.Check, menu.CheckArgs) != True:
-            continue
-        
-        menuList.append(menu.Code)
-        
-    return TalkContent, menuList
-#---------------------------------------------------------------------
-##运行任务事件的所有节点
-# @param curPlayer 玩家实例
-# @param curMissionID 任务ID
-# @param questEventLoader 任务事件数据
-# @return 返回值无意义
-# @remarks 运行任务事件的所有节点
-def RunAllQuest(curPlayer, curMissionID, questEventLoader):
-    if questEventLoader == None or questEventLoader.IsEmpty():
-        #没有事件
-        GameWorld.Log("没有事件" , curPlayer.GetPlayerID())
-        return
-    #-------------------------event节点-------------------
-    eventNode = questEventLoader.FindNode("event")
-    if eventNode == None or eventNode.IsEmpty():
-        GameWorld.Log("访问事件不存在event" , curPlayer.GetPlayerID())
-        return
-    
-    #2009.8.26日
-    #先判定有没有这个任务, 如果没有这个任务, 删除
-    if curMissionID != 0:
-        #2009.8.27修改
-        #0任务是特殊触发, 不删除
-        questData = FindQuestFunc(curMissionID)
-        if questData == None:
-            #没有这个任务, 返回
-            GameWorld.Log("RunAllQuest, 找不到任务%s 删除任务数据" % curMissionID , curPlayer.GetPlayerID())
-            
-            #2009.10.9日修正
-            #运行到这里的时候, 玩家可能根本没这个任务. 如果在下面触发删除, 会报c++警告
-            #所以要加上判定
-            if curPlayer.FindMission(curMissionID):
-                curPlayer.DelMission(curMissionID)
-            return
-    
-    curMission = curPlayer.FindMission(curMissionID)
-    #-------------------------quest节点-------------------
-    global __PlayerSetState
-    for i in range(0, eventNode.GetChildCount()):
-        #遍历任务列表, 找到这个人物可以执行的任务
-        questNode = eventNode.GetChild(i)
-        if eventNode == None or questNode.IsEmpty():
-            #没有任务节点
-            GameWorld.Log("没有任务节点" , curPlayer.GetPlayerID())
-            return
-        
-        #2008.12.22
-        #加上下面一句, 会在OnDay的时候, 如果玩家当前正在对话, 对话需要进行DoType_Run_Embranchment操作
-        #会卡住
-        #curPlayer.SetCurrentQuestNode(questNode)
-        #-------------------------embranchment节点-------------------
-        #得到了人物当前运行的任务, 开始运行该任务的对话分支
-        for j in range(0, questNode.GetChildCount()):
-            embranchmentNode = questNode.GetChild(j)
-            if embranchmentNode == None or embranchmentNode.IsEmpty():
-                #找不到分支节点
-                GameWorld.Log("RunAllQuest 找不到分支节点" , curPlayer.GetPlayerID())
-                return
-            
-#            attributeID = questNode.GetAttribute("id")
-#            if attributeID == "":
-#                #是Comment
-#                continue
-#            curMissionID = int(attributeID)
-            
-            
-            result = __CanRunEmbranchmentNode(curPlayer, curMission, embranchmentNode)
-            #GameWorld.Log("result = %s, xml = %s"%(result, embranchmentNode.GetXML()))
-            if result != True:
-                continue
-            
-            answersNode = embranchmentNode.FindChildNode("answers")
-            actionsNode = None
-            if answersNode and (not answersNode.IsEmpty()):
-                actionsNode = __FindAnswerActionNode(curPlayer, curMission, answersNode)
-                if actionsNode == None or actionsNode.IsEmpty():
-                    continue
-            
-            
-            #GameWorld.Log("%s-------------------"%curMissionID)
-            needNotifyMission = False
-            if curMission == None:
-                #玩家没有这个每日任务, 添加每日任务给他
-                needNotifyMission = True
-                curMission = QuestCommon.AddNewMission(curPlayer, curMissionID)
-                
-            runResult = False
-            
-            runResult = RunEmbranchmentNode(curPlayer, curMission, embranchmentNode, actionsNode)
-#            try:
-#                runResult = RunEmbranchmentNode(curPlayer, curMission, embranchmentNode, actionsNode)
-#            except  Exception:
-#                GameWorld.Log("RunEmbranchmentNode Error : curPlayer = %d, curMission = %d, embranchmentNode = %s"%(curPlayer.GetPlayerID(), curMissionID, embranchmentNode.GetXML()))
-#                raise Exception("RunEmbranchmentNode Error")            
-            #1. xml没有调用过SetState函数
-            #2. 玩家之前没有此任务
-            #则在这里把当前任务通知给玩家
-            #防止连续通知2次, 导致玩家的任务查询列表中有2个相同任务
-            
-            curMission = curPlayer.FindMission(curMissionID)
-            if curMission == None:
-                #2009.3.9 18:02
-                #此时任务已经删除了(运行了Over) 不用通知玩家任务状态了 
-                break
-            if needNotifyMission and not __PlayerSetState :
-                EventShell.NotifyOneMission(curPlayer, curMission)
-                
-                #2009.8.26日
-                #在EventShell.NotifyOneMission会删除任务
-                #所以在这里要再取一次. 否则会导致curMission A掉
-                curMission = curPlayer.FindMission(curMissionID)
-                
-            __PlayerSetState = False 
-            if runResult:
-                break
-    return True
-
-#---------------------------------------------------------------------
-##系统弹出的任务对话, 没有任务名称选择风格
-# @param curPlayer 玩家实例
-# @param questEventLoader 任务事件数据
-# @return 返回值, 是否执行成功
-# @remarks 系统弹出的任务对话, 没有任务名称选择风格
-def RunFunctionQuest(curPlayer, questEventLoader):
-    if questEventLoader == None or questEventLoader.IsEmpty():
-        #没有事件
-        GameWorld.Log("没有事件" , curPlayer.GetPlayerID())
-        return
-    #-------------------------event节点-------------------
-    eventNode = questEventLoader.FindNode("event")
-    if eventNode.IsEmpty():
-        GameWorld.Log("访问事件不存在event" , curPlayer.GetPlayerID())
-        return
-    
-    curPlayer.SetCurrentXMLNode(eventNode)
-    #-------------------------quest节点-------------------
-#    curMission = None
-    questNode = None
-#    nonQuestNode = None
-
-#    curMission = curPlayer.FindMission(curMissionID)
-#    if curMission == None:
-#        return
-#    
-#    if curMission.GetState() == -1:
-#        return
-    
-    for i in range(0, eventNode.GetChildCount()):
-        questNode = eventNode.GetChild(i)
-        curPlayer.SetCurrentQuestNode(questNode)
-        for i in range(0, questNode.GetChildCount()):
-            embranchmentNode = questNode.GetChild(i)
-            if embranchmentNode == None or embranchmentNode.IsEmpty():
-                #找不到分支节点
-                GameWorld.Log("RunFunctionQuest 找不到分支节点" , curPlayer.GetPlayerID())
-                return
-            if RunEmbranchmentNode(curPlayer, None, embranchmentNode) == True:
-                #GameWorld.Log("在第 %d 个节点运行成功"%(i))
-#                isRunMission = True
-                return True
-            else:
-                #GameWorld.Log("在第 %d 个节点运行失败 %s"%(i, questNode.GetXML()))
-                pass
-    return True
-
-#---------------------------------------------------------------------
-##系统弹出的任务对话, 没有任务名称选择风格
-# @param curPlayer 玩家实例
-# @param curMissionID 任务ID
-# @param questEventLoader 任务事件数据
-# @return 返回值无意义
-# @remarks 系统弹出的任务对话, 没有任务名称选择风格
-def RunQuest(curPlayer, curMissionID, questEventLoader):
-    timeClock = time.clock()
-    
-    if questEventLoader == None or questEventLoader.IsEmpty():
-        #没有事件
-        GameWorld.Log("没有事件" , curPlayer.GetPlayerID())
-        return
-    #-------------------------event节点-------------------
-    eventNode = questEventLoader.FindNode("event")
-    if eventNode == None or eventNode.IsEmpty():
-        GameWorld.Log("访问事件不存在event" , curPlayer.GetPlayerID())
-        return
-    
-    curPlayer.SetCurrentXMLNode(eventNode)
-    #-------------------------quest节点-------------------
-#    curMission = None
-    questNode = None
-#    nonQuestNode = None
-
-    curMission = curPlayer.FindMission(curMissionID)
-    if curMission == None:
-        return
-    
-    if curMission.GetState() == ChConfig.Def_Mission_State_Over:
-        return
-    
-    for i in range(0, eventNode.GetChildCount()):
-        questNode = eventNode.GetChild(i)
-        #2009.9.27
-        #bug: 玩家在交任务的时候, 触发了其他的杀怪任务, 
-        #导致CurrentQuestNode被重置了
-        #解决: 不能直接SetCurrentQuestNode
-        #增加判定
-        #curPlayer.SetCurrentQuestNode(questNode)
-        for i in range(0, questNode.GetChildCount()):
-            embranchmentNode = questNode.GetChild(i)
-            if embranchmentNode == None or embranchmentNode.IsEmpty():
-                #找不到分支节点
-                GameWorld.Log("RunQuest 找不到分支节点" , curPlayer.GetPlayerID())
-                return
-            
-            if RunEmbranchmentNode(curPlayer, curMission, embranchmentNode) == True:
-                #GameWorld.Log("在第 %d 个节点运行成功"%(i))
-#                isRunMission = True
-#===============================================================================
-#                    c++代码, WaitEvent会置m_CurrentMissionID, 用这个值来判定
-#                    void                Player::WaitEvent(int missionID, IPY_XMLNode       curNode)
-#                    {
-#                        m_CurrentMissionID = missionID;
-#                        m_CurrentEventNode = curNode;
-#                    }
-#===============================================================================
-                talkMissionID = curPlayer.GetCurrentMissionID()
-                if talkMissionID != 0 and talkMissionID == curMissionID:
-                    #只有等待对话状态并且是当前对话的任务,才设定Quest指针 
-                    curPlayer.SetCurrentQuestNode(questNode)
-                return True
-            else:
-                #GameWorld.Log("在第 %d 个节点运行失败 %s"%(i, questNode.GetXML()))
-                pass
-    
-    #记录任务相关信息
-    GameLogInfo.LogInfo_MissionTime(timeClock)
-    GameLogInfo.LogInfo_MissionCount(1)
-    return True
-
-#---------------------------------------------------------------------
-#===============================================================================
-# 玩家和NPC对话过程:
-# 1. NPC对话显示 (RunQuestOnVisit)
-#   任务 - XXX
-#   任务 - XXX
-#   
-# 2. (玩家选择)任务-xxx之后 (Answer_MissionSelect)
-#    开始运行这个NPC的xml文件
-#===============================================================================
-##系统弹出的任务对话, 没有任务名称选择风格
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curTrigMission 任务数据
-# @param npcID NPCID
-# @return 返回值, key = ("on_visit", "%d.xml"%0)
-# @remarks 系统弹出的任务对话, 没有任务名称选择风格
-def GetVisitNPCKey(curPlayer, curMission, curTrigMission, npcID):
-    #随机访问NPC判定
-    key = ("on_visit", "%d.xml" % 0)
-    if curTrigMission.QuestsEvent.has_key(key) :
-        if npcID == curMission.GetProperty(QuestCommon.Def_Visit_Npc_ID):
-            return key
-    
-    #正常访问NPC判定
-    key = ("on_visit", "%d.xml" % npcID)
-    if curTrigMission.QuestsEvent.has_key(key) :
-        return  key
-
-    return
-
-
-##进入再次对话逻辑
-# @param curPlayer 玩家实例
-# @return 对话成功与否
-# @remarks 进入再次对话逻辑
-def TalkAgain(curPlayer):
-    #获得对话对象NPC
-    curActionObj = curPlayer.GetActionObj()
-    
-    if curActionObj == None:
-        return False
-    
-    if curActionObj.GetGameObjType() != IPY_GameWorld.gotNPC:
-        return False
-    
-    curActionNPC = GameWorld.GetNPCManager().GetNPCByIndex(curActionObj.GetIndex())
-    npcID = curActionNPC.GetNPCID()
-        
-    #找到玩家身上所有能和这个NPC对话的任务
-    for i in range(curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        
-        #未接 和 可交的任务可以再对话
-        if curMission.GetState() not in \
-        [ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_CanComplete]:
-            continue
-        
-        missionID = curMission.GetMissionID()
-        
-        curTrigMission = FindQuestFunc(missionID)
-        if curTrigMission == None:
-            continue
-        
-        if curTrigMission.Type == QuestCommon.Def_GM_Active_Mission_Type:
-            #这个任务是节日任务, 需要GM开启的
-            if not GameWorld.GetGameWorld().IsEventActive(missionID):
-                continue
-        
-        key = GetVisitNPCKey(curPlayer, curMission, curTrigMission, npcID)
-        
-        if key == None:
-            #无此key
-            continue
-        
-        runResult = False
-        allNodelist = curTrigMission.QuestsEvent[key].GetXMLEventLoader().GetNodeList()
-        eventNode = allNodelist.FindNode("event")
-        if eventNode == None or eventNode.IsEmpty():
-            GameWorld.Log("访问事件不存在event" , curPlayer.GetPlayerID())
-            return False
-        
-        #-------------------------quest节点-------------------
-        for i in range(0, eventNode.GetChildCount()):
-            #遍历任务列表, 找到这个人物可以执行的任务
-            questNode = eventNode.GetChild(i)
-            curPlayer.SetCurrentQuestNode(questNode)
-
-            for i in range(0, questNode.GetChildCount()):
-                embranchmentNode = questNode.GetChild(i)
-                if CanDoQuestNodeTalk(curPlayer, curMission, embranchmentNode):
-                    runResult = True
-                    break
-        
-        if not runResult:
-            #不能运行任务
-            continue
-
-
-        #可以再次对话,进行对话逻辑
-        GameWorld.DebugLog("再次进入对话对话! %s  %s" % key)
-        if not RunQuestOnVisit(curPlayer, npcID):
-            GameWorld.Log("%s任务继续对话执行失败" % (npcID) , curPlayer.GetPlayerID())
-            return False
-        
-        return True
-    return False
- 
- 
-##再次对话或退出对话逻辑
-# @param curPlayer 玩家实例
-# @return 无
-# @remarks 再次对话或退出对话逻辑
-def DoTalkOrExit(curPlayer):
-    #是否继续对话
-    if TalkAgain(curPlayer):
-        return
-
-    EventShell.DoExitEvent(curPlayer)
-
-#---------------------------------------------------------------------
-##和NPC对话, 第一句对话要弹出任务名称, 然后选择
-# @param curPlayer 玩家实例
-# @param npcID NPCID
-# @param addFuncMenu 是否增加所有的对话(功能对话)
-# @return 返回值, 是否对话成功
-# @remarks 和NPC对话, 第一句对话要弹出任务名称, 然后选择
-def RunQuestOnVisit(curPlayer, npcID, addFuncMenu=True):
-    timeClock = time.clock()
-    #对话格式:
-    #msg = 闲话     answer = 任务名称
-    talkContent, menuList = GetTalkContent(curPlayer)
-    
-    talkContent.SetMsg(__GetDefaultTalkContent(curPlayer, npcID))
-    
-    #找到玩家身上所有能和这个NPC对话的任务
-    for i in range(curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        if curMission.GetState() == ChConfig.Def_Mission_State_Over:
-            continue
-        missionID = curMission.GetMissionID()
-        
-        curTrigMission = FindQuestFunc(missionID)
-        if curTrigMission == None:
-            continue
-        
-        if curTrigMission.Type == QuestCommon.Def_GM_Active_Mission_Type:
-            #这个任务是节日任务, 需要GM开启的
-            if not GameWorld.GetGameWorld().IsEventActive(missionID):
-                continue
-        
-        key = GetVisitNPCKey(curPlayer, curMission, curTrigMission, npcID)
-        
-        if key == None:
-            #无此key
-            continue
-        
-        ######################检查能不能运行分支节点, 如果能, 加在第一次对话中#################
-        runResult = False
-        allNodelist = curTrigMission.QuestsEvent[key].GetXMLEventLoader().GetNodeList()
-        eventNode = allNodelist.FindNode("event")
-        if eventNode == None or eventNode.IsEmpty():
-            GameWorld.Log("访问事件不存在event" , curPlayer.GetPlayerID())
-            return
-        
-        #-------------------------quest节点-------------------
-        for i in range(0, eventNode.GetChildCount()):
-            #遍历任务列表, 找到这个人物可以执行的任务
-            questNode = eventNode.GetChild(i)
-            curPlayer.SetCurrentQuestNode(questNode)
-            if curMission == None:
-                continue
-            if curMission.GetState() == ChConfig.Def_Mission_State_Over:
-                continue
-            for i in range(0, questNode.GetChildCount()):
-                embranchmentNode = questNode.GetChild(i)
-                if CanDoQuestNodeTalk(curPlayer, curMission, embranchmentNode) == True:
-                    runResult = True
-                    break
-        
-        if runResult != True:
-            #不能运行任务
-            continue
-        
-        name = curTrigMission.Code
-        talkContent.AddAnswer(name)
-
-
-    if menuList != None:
-        for menu in menuList:
-            TalkContent.AddAnswer(menu)
-    
-    talkContent.AddAnswer('c')
-    #设置玩家任务状态
-    curPlayer.SetEventState(TYPE_Event_Select)
-#    if talkContent.GetAnswerCount() == 1:
-#        curPlayer.TalkMessage("", talkContent)
-#    else:
-    curPlayer.Talk(0, "", talkContent)
-    
-    #记录任务相关信息
-    GameLogInfo.LogInfo_MissionTime(timeClock)
-    GameLogInfo.LogInfo_MissionCount(1)
-    return True
-
-#---------------------------------------------------------------------
-##是否能够运行节点对话
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param embranchmentNode 节点数据
-# @return 返回值真, 检查通过
-# @remarks 是否能够运行节点对话
-def CanDoQuestNodeTalk(curPlayer, curMission, embranchmentNode):
-    #------------------------取得/校验条件-----------------------------
-    conditionsNode = embranchmentNode.FindChildNode("conditions")
-    if conditionsNode == None or conditionsNode.IsEmpty():
-        #没有条件约束
-        GameWorld.Log("CanDoQuestNodeTalk 没有条件约束" , curPlayer.GetPlayerID())
-        return True
-    
-    for i in range(0, conditionsNode.GetChildCount()):
-        #取得当前条件节点
-        curConditionNode = conditionsNode.GetChild(i)
-#        GameWorld.Log(str(curConditionNode.GetXML()))
-        if AnswerConditionJudge(curPlayer, curMission, curConditionNode) != True:
-            #执行条件校验失败, 不运行这个分支
-#            GameWorld.Log("在这个xml出错 : %s"%(curConditionNode.GetXML()))
-            return
-
-    return True
-
-
-##-------------------------------------任务传送-------------------------------------------------
-###任务传送获得任务描述<a href="MoveTo NPC,51">,挖宝<a href="Goto (!mapid!),(!posx!),(!posy!)">
-## @param curPlayer 玩家实例
-## @param curMission 任务实例
-## @return 返回值, 任务描述
-## @remarks 任务传送获得任务描述<a href="MoveTo NPC,51">,挖宝<a href="Goto (!mapid!),(!posx!),(!posy!)">
-#def GetMsgNode_NPCID(curPlayer, curMission):
-#    movePos = []
-#    if FindQuestFunc(curMission.GetMissionID()) == None:
-#        return None
-#    
-#    descriptIndex = curMission.GetDescriptionIndex()
-#    
-#    questList = FindQuestFunc(curMission.GetMissionID()).QuestDescriptionList
-#    if descriptIndex >= len(questList) or descriptIndex < 0:
-#        return None
-#    
-#    MsgNode = questList[descriptIndex].MsgNode
-#    if MsgNode == None or MsgNode.IsEmpty():
-#        return None
-#    
-#    for i in range(MsgNode.GetChildCount()):
-#        curNode = MsgNode.GetChild(i)
-#        if curNode == None or curNode.IsEmpty():
-#            return None
-#        
-#        if curNode.GetNodeName().lower() != 'a':
-#            continue
-#        
-#        moveStr = curNode.GetAttribute("href")
-#        #没有坐标和NPC,返回
-#        if moveStr == "":
-#            return  None
-#        
-#        movelist = moveStr.split(',')
-#        #每日任务特殊处理<a href="MoveTo NPC,(!day_event_id!)">
-#        if movelist[1] == "(!day_event_id!)":
-#            npcID = curMission.GetProperty(QuestCommon.Def_Day_Event_ID)
-#            movePos = [npcID]
-#            
-#        #移动NPC<a href="MoveTo NPC,51">
-#        elif len(movelist) == 2:
-#            npcID = int(moveStr.split(',')[1])
-#            movePos = [npcID]
-#            
-#        #挖宝<a href="Goto (!mapid!),(!posx!),(!posy!)">
-#        elif len(movelist) == 3:
-#            #获得任务挖宝坐标
-#            moveMapID = curMission.GetProperty('mapid')
-#            movePosX = curMission.GetProperty('posx')
-#            movePosY = curMission.GetProperty('posy')
-#            movePos = [ moveMapID, movePosX, movePosY ]  
-#        else:
-#            return None 
-#        
-#        return movePos
-
-#*****************************************************************************
-
-#---------------------------------------------------------------------
-##设置消息提示列表GetMsgPar
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param talkContent 谈话信息
-# @param msgNode 消息节点
-# @return 返回值无意义
-# @remarks 设置消息提示列表GetMsgPar
-def __SetNPCTalkMsg(curPlayer, curMission, talkContent, msgNode):
-    talkContent.SetMsg(msgNode.GetAttribute("code"))
-    
-    #设置Msg中的参数
-    msgPar = talkContent.GetMsgPar()
-    msgPar.Clear()
-    text = msgNode.GetXML()
-    parseList = QuestCommon.DealWithInPut(text)
-    if len(parseList) == 0:
-        return
-    
-    #---warning: 服务端 msgPar消息中只存str类型 没有int类型,客户端没有对int处理(08 01封包)---
-    for i in range(0, len(parseList)):
-        parseList[i] = QuestRunnerValue.GetNPCTalkReplaceValue(curPlayer, curMission, parseList[i])
-    
-    for item in parseList:
-        if type(item) == int:
-            msgPar.AddInt(item)
-        else:
-            msgPar.AddStr(item)
-
-#---------------------------------------------------------------------
-##执行空对话( 已经不使用 )
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param embranchmentNode 节点数据
-# @param talkContent 谈话信息
-# @return 返回值, 是否执行成功
-# @remarks 执行空对话( 已经不使用 )
-def DoNoneQuestNodeTalk(curPlayer, curMission, embranchmentNode, talkContent):
-    #------------------------取得/校验条件-----------------------------
-    conditionsNode = embranchmentNode.FindChildNode("conditions")
-    if conditionsNode == None or conditionsNode.IsEmpty():
-        #没有条件约束
-        GameWorld.Log("DoNoneQuestNodeTalk 没有条件约束" , curPlayer.GetPlayerID())
-        return True
-    
-    for i in range(0, conditionsNode.GetChildCount()):
-        #取得当前条件节点
-        curConditionNode = conditionsNode.GetChild(i)
-#        GameWorld.Log(str(curConditionNode.GetXML()))
-        if AnswerConditionJudge(curPlayer, curMission, curConditionNode) != True:
-            #执行条件校验失败, 不运行这个分支
-#            GameWorld.Log("在这个xml出错 : %s"%(curConditionNode.GetXML()))
-            return
-        
-    #------------------------执行对话-----------------------------
-    talkNode = embranchmentNode.FindChildNode("talk")
-    
-    if talkNode == None or talkNode.IsEmpty():
-        return
-    
-    msgNode = talkNode.FindChildNode("msg")
-    npcID = talkNode.GetAttribute("id")
-    if npcID == "":
-        npcID = 0
-    else:
-        npcID = int(npcID)
-    #talkContent.SetMsg(ReplaceNPCTalkText(curPlayer, curMission, msgNode.GetXML()))
-    __SetNPCTalkMsg(curPlayer, curMission, talkContent, msgNode)
-
-    talkAnswersNode = talkNode.FindChildNode("talk_answers")
-    for i in range(0, talkAnswersNode.GetChildCount()):
-        talkNode = talkAnswersNode.GetChild(i)
-        answerText = talkNode.GetAttribute("code")
-        talkContent.AddAnswer(answerText)
-        
-    return True
-
-#---------------------------------------------------------------------
-##是否可以触发节点信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionsNode 条件节点信息
-# @return 返回值, 是否通过
-# @remarks 是否可以触发节点信息
-def __CanRunCondition(curPlayer, curMission, conditionsNode):
-    for i in range(0, conditionsNode.GetChildCount()):
-        #取得当前条件节点
-        curConditionNode = conditionsNode.GetChild(i)
-        #GameWorld.Log(str(curConditionNode.GetXML()))
-        if AnswerConditionJudge(curPlayer, curMission, curConditionNode) != True:
-            #执行条件校验失败, 不运行这个分支
-            #GameWorld.Log("在这个xml出错 : %s"%(curConditionNode.GetXML()))
-            return False
-        
-    return True
-
-#---------------------------------------------------------------------
-##得到默认对话的内容
-# @param curPlayer 玩家实例
-# @param npcID NPCID
-# @return 返回值, 默认对话数据
-# @remarks 得到默认对话的内容
-def __GetDefaultTalkContent(curPlayer, npcID):
-    curDefaultTalk = FindDefaultTalkFunc(npcID)
-    if not curDefaultTalk :
-        return GameWorld.Log("没有对话!!!!" , curPlayer.GetPlayerID())
-    
-    talkNode = curDefaultTalk.GetNodeList()
-    eventNode = talkNode.FindNode("event")
-    if eventNode == None or eventNode.IsEmpty():
-        GameWorld.Log("没有默认对话节点 __GetDefaultTalkContent" , curPlayer.GetPlayerID())
-        return
-    
-    eventNode = eventNode.FindChildNode("quest")
-    for i in range(eventNode.GetChildCount()):
-        curEmbranchment = eventNode.GetChild(i)
-        conditionsNode = curEmbranchment.FindChildNode("conditions")
-        
-        
-        if conditionsNode != None and (not conditionsNode.IsEmpty()):        
-            if __CanRunCondition(curPlayer, None, conditionsNode) != True:
-                continue
-        
-        #可以运行分支节点, 返回说话内容
-        talkNode = curEmbranchment.FindChildNode("talk")
-        talkIndex = random.randint(0, talkNode.GetChildCount() - 1)
-        msgNode = talkNode.GetChild(talkIndex)
-        
-        #修改, 对话改为代码形式
-        #return msgNode.GetXML()
-        return msgNode.GetAttribute("code")
-
-#---------------------------------------------------------------------
-##是否可以运行分支节点信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param embranchmentNode 分支节点数据
-# @return 返回值, 是否验证通过
-# @remarks 是否可以运行分支节点信息
-def __CanRunEmbranchmentNode(curPlayer, curMission, embranchmentNode):
-    #------------------------取得/校验条件-----------------------------
-    conditionsNode = embranchmentNode.FindChildNode("conditions")
-    if conditionsNode == None or conditionsNode.IsEmpty():
-        #没有条件约束
-        #GameWorld.Log("__CanRunEmbranchmentNode 没有条件约束" , curPlayer.GetPlayerID())
-        return True
-    
-    result = __CanRunCondition(curPlayer, curMission, conditionsNode)
-    
-    #GameWorld.Log("__CanRunCondition result = %s "%result)
-    return result
-
-#---------------------------------------------------------------------
-#===============================================================================
-# #运行分支节点
-# #在RunAll的时候, 会找到actionsNode节点, 在这种情况下, 直接把actionsNode节点传入
-# #在运行的时候, 不进行检查. 避免重复的检查
-#===============================================================================
-##运行分支节点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param embranchmentNode 分支节点数据
-# @param actionsNode 传入的节点信息
-# @return 返回值, 是否运行成功
-# @remarks 在RunAll的时候, 会找到actionsNode节点, 在这种情况下, 直接把actionsNode节点传入, 在运行的时候, 不进行检查. 避免重复的检查
-def RunEmbranchmentNode(curPlayer, curMission, embranchmentNode, actionsNode=None):
-    #------------------------取得/校验条件-----------------------------
-    if (actionsNode == None or actionsNode.IsEmpty()) and __CanRunEmbranchmentNode(curPlayer, curMission, embranchmentNode) != True:
-        return
-    #------------------------执行对话-----------------------------
-    global TalkContent
-    TalkContent.Clear()
-    talkNode = embranchmentNode.FindChildNode("talk")
-    answersNode = embranchmentNode.FindChildNode("answers")
-    
-    #----------------------Pre Answer 模块------------------
-    preAnswer = embranchmentNode.FindChildNode("pre_answers")
-    if preAnswer != None and (not preAnswer.IsEmpty()):
-        #弹出窗口立即做事件
-        __RunAnswerAction(curPlayer, curMission, preAnswer)     
-    #-------------------------------------------------------
-    
-    if talkNode == None or talkNode.IsEmpty():
-#        GameWorld.Log(answersNode.GetXML())
-        #没有谈话回答, 直接运行回答分支(on_kill)
-        if actionsNode == None or actionsNode.IsEmpty():
-            __RunAnswerAction(curPlayer, curMission, answersNode)
-        else:
-            __DoAnswerActionNode(curPlayer, curMission, actionsNode)
-        return True
-    
-    #----------------------talk_answers 模块------------------    
-    msgNode = talkNode.FindChildNode("msg")
-    style = talkNode.GetAttribute("style")
-    npcName = talkNode.GetAttribute("name_code")
-    
-    __SetNPCTalkMsg(curPlayer, curMission, TalkContent, msgNode)
-    
-    talkAnswersNode = talkNode.FindChildNode("talk_answers")
-    for i in range(0, talkAnswersNode.GetChildCount()):
-        talkNode = talkAnswersNode.GetChild(i)
-        answerText = talkNode.GetAttribute("code")
-        TalkContent.AddAnswer(answerText)
-        
-    missionID = 0
-    if curMission != None:
-        missionID = curMission.GetMissionID()
-    if style == "select":
-        curPlayer.Talk(missionID , npcName, TalkContent)
-    elif style == "msg":
-        curPlayer.TalkMessage(missionID , npcName, TalkContent)
-    elif style == "pic":
-        curPlayer.TalkPic(missionID , npcName, TalkContent)
-    elif style == "info":
-        curPlayer.TalkInfo(missionID , npcName, TalkContent)
-#    elif style == "replacemsg":
-#        #需要做替换的消息
-#        TalkContent = GetMissionReplaceMsg(TalkContent, curMission)
-#        curPlayer.TalkMessage(npcName, TalkContent)
-    else:
-        GameWorld.Log("talk 风格不正确 : %s missionID = %s -> %s" % (style , missionID, embranchmentNode.GetXML()), curPlayer.GetPlayerID())
-
-    if answersNode == None or answersNode.IsEmpty():
-        #回答节点为空
-        GameWorld.Log('回答节点为空curMission.GetMissionID() = %d' % curMission.GetMissionID() , curPlayer.GetPlayerID())
-#        if waitEvent == True:
-#            EventShell.DoExitEvent(curPlayer)
-        return
-    #===保存运行现场, 等待玩家回应===================================
-    missionID = 0
-    if curMission != None:
-        missionID = curMission.GetMissionID()
-        
-    #if curPlayer.GetPlayerAction() == IPY_GameWorld.paEvent:
-    curPlayer.SetEventState(TYPE_Event_Do)
-    
-    curPlayer.WaitEvent(missionID, answersNode)
-    return True
-
-#------------------------------任务状态1: 谈话选择----------------TYPE_Event_Select
-
-#---------------------------------------------------------------------
-##对话_任务选择
-# @param curPlayer 玩家实例
-# @param answer 对话选项
-# @return 返回值无意义
-# @remarks 对话_任务选择
-def Answer_MissionSelect(curPlayer, answer):
-    #-------------------------embranchment节点-------------------
-    missionID = GameWorld.ToIntDef(answer)
-    if missionID == 0:
-        Answer_Do(curPlayer, answer)
-        return
-    #玩家和NPC第一次对话, 弹出的任务
-    curMission = curPlayer.FindMission(missionID)
-    if curMission == None:
-        GameWorld.Log("玩家无这个任务%d" % missionID , curPlayer.GetPlayerID())
-        EventShell.DoExitEvent(curPlayer)
-        return
-    
-    if curMission.GetState() == ChConfig.Def_Mission_State_Over:
-        GameWorld.Log("玩家任务%d已经完成" % missionID , curPlayer.GetPlayerID())
-        return
-    
-    if FindQuestFunc(missionID) == None:
-        return
-    
-    curNPC = GetPlayerTalkNPC(curPlayer)
-    
-    if curNPC == None:
-        return
-    
-    curTrigMission = FindQuestFunc(missionID)
-    key = GetVisitNPCKey(curPlayer, curMission, curTrigMission, curNPC.GetNPCID())
-    
-    if not curTrigMission.QuestsEvent.has_key(key) :
-        GameWorld.Log("Can't Find missionID = %d,  %s" % (missionID, str(key)) , curPlayer.GetPlayerID())
-        return
-    
-    RunQuest(curPlayer, missionID, curTrigMission.QuestsEvent[key].GetXMLEventLoader().GetNodeList())
-    
-   
-#------------------------------任务状态2: 回应-------------------TYPE_Event_Do
-
-#---------------------------------------------------------------------
-##对话_任务回应
-# @param curPlayer 玩家实例
-# @param answer 对话选项
-# @return 返回值无意义
-# @remarks 对话_任务回应
-def Answer_Do(curPlayer, answer):
-    global CurrentPlayerAnswer
-    answersNode = curPlayer.GetWaitEvent()
-    if answersNode == None or answersNode.IsEmpty():
-        GameWorld.Log("等待事件为空" , curPlayer.GetPlayerID())
-        EventShell.DoExitEvent(curPlayer)
-        return False
-    
-    curMissionID = curPlayer.GetCurrentMissionID()
-    curMission = None
-    if curMissionID != 0:
-        curMission = curPlayer.FindMission(curMissionID)
-        if curMission == None:
-            GameWorld.Log("找不到任务ID : %d" % (curMissionID) , curPlayer.GetPlayerID())
-            EventShell.DoExitEvent(curPlayer)
-            return False
-    
-    CurrentPlayerAnswer = answer
-    __RunAnswerAction(curPlayer, curMission, answersNode)
-
-#---------------------------------------------------------------------
-##对话_普通对话
-# @param curPlayer 玩家实例
-# @param answer 对话选项
-# @return 返回值无意义
-# @remarks 对话_普通对话
-def RunPlayerAnswer(curPlayer, answer):
-    if curPlayer.GetEventState() == 0:
-        EventShell.DoExitEvent(curPlayer)
-        GameWorld.Log("玩家回答不在任务状态 curPlayer.GetEventState() == 0" , curPlayer.GetPlayerID())
-        return
-    
-    if curPlayer.GetEventState() == TYPE_Event_Select:
-        #任务选择
-        Answer_MissionSelect(curPlayer, answer)
-    elif curPlayer.GetEventState() == TYPE_Event_Do:
-        #任务回话
-        Answer_Do(curPlayer, answer)
-
-#---------------------------------------------------------------------
-##查找对话节点信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param answersNode 回话节点
-# @return 返回值, 对话节点信息
-# @remarks 查找对话节点信息
-def __FindAnswerActionNode(curPlayer, curMission, answersNode):
-    if answersNode == None or answersNode.IsEmpty():
-        #没有条件约束
-        GameWorld.Log("__FindAnswerActionNode 没有回答节点约束" , curPlayer.GetPlayerID())
-        return 
-    
-    for i in range(0, answersNode.GetChildCount()):
-        #------------------------执行动作-----------------------------
-        answerNode = answersNode.GetChild(i)
-        conditionsNode = answerNode.FindChildNode("answer_conditions")
-        runResult = True
-        
-        if conditionsNode != None and (not conditionsNode.IsEmpty()):
-            for j in range(0, conditionsNode.GetChildCount()):
-                curConditionNode = conditionsNode.GetChild(j)
-                
-                if AnswerConditionJudge(curPlayer, curMission, curConditionNode) != True:
-                    #执行条件校验失败, 不运行这个分支                
-                    runResult = False
-                    #GameWorld.Log("missionID = %d, 执行条件校验失败, 不运行这个分支  %s"%(curMission.GetMissionID(), curConditionNode.GetXML()))
-                    break
-            
-            if runResult != True:
-                continue
-            
-        actionsNode = answerNode.FindChildNode("answer_actions")
-        
-        return actionsNode
-    
-    return
-
-#---------------------------------------------------------------------
-##执行对话节点信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param answersNode 回话节点
-# @return 返回值, 无意义
-# @remarks 执行对话节点信息
-def __DoAnswerActionNode(curPlayer, curMission, actionsNode):
-    if actionsNode == None or actionsNode.IsEmpty():
-        GameWorld.Log('__DoAnswerActionNode找不到回答节点! 任务ID=%s' % (0 if curMission == None else curMission.GetMissionID()))
-        return
-    
-    QuestCommon.SetMissionBeDeleted(0)
-    
-    missionID = 0
-    if curMission != None:
-        missionID = curMission.GetMissionID()
-    
-    for j in range(0, actionsNode.GetChildCount()):
-        curActionNode = actionsNode.GetChild(j)
-#            if curMission ==None:
-#                DoAction(curPlayer,None, curActionNode)
-        DoAction(curPlayer, curMission, curActionNode)
-        
-        #不清楚具体逻辑为什么要设置任务删除标识,仍要继续执行任务节点,理论上会报错
-        #添加防范是否当前任务被删除,暂时保留代码
-        if QuestCommon.IsDeleteMission() == 1 and curPlayer.FindMission(missionID) == None:
-            curMission = None
-    return
-
-
-#---------------------------------------------------------------------
-##执行对话节点信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param answersNode 回话节点
-# @return 返回值, 无意义
-# @remarks 执行对话节点信息
-def __RunAnswerAction(curPlayer, curMission, answersNode):
-    actionsNode = __FindAnswerActionNode(curPlayer, curMission, answersNode)
-    if actionsNode == None or actionsNode.IsEmpty():
-        GameWorld.DebugLog('__RunAnswerAction找不到回答节点--%s'%curMission.GetMissionID())
-        return
-    
-    __DoAnswerActionNode(curPlayer, curMission, actionsNode)
-    return True
-
-#========================== 条件判定接口 ConditionType_ =======================================
-#类型 -> Differ//不等于,Equal//等于,Less//小于,Great//大于
-#---------------------------------------------------------------------
-##判断任务状态
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <var type="类型" name="策划用:任务字典名(只判断不存)" value="值" dict_value="程序用:任务字典名(要存取)" replace_value="替换字典值" id="目标任务ID" diff="容错值"/>
-def ConditionType_Var(curPlayer, curMission, curConditionNode):
-    #var 型条件节点的判定   (任务条件 (state, kill_byid_...))
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionName = curConditionNode.GetAttribute("name")
-    dict_value = curConditionNode.GetAttribute("dict_value")
-    dict_id = GameWorld.ToIntDef(curConditionNode.GetAttribute("dict_id"), 0)
-    replace_value = curConditionNode.GetAttribute("replace_value")
-    conditionValue = curConditionNode.GetAttribute("value")
-    conditionID = curConditionNode.GetAttribute("id")
-    diff = curConditionNode.GetAttribute("diff")
-    if diff != "":
-        diff = int(diff)
-        
-    if dict_value != "":
-        #目标任务
-        if dict_id:
-            tmpMission = curPlayer.FindMission(dict_id)
-            if tmpMission == None:
-                return
-            conditionValue = tmpMission.GetProperty(dict_value)
-        else:
-            conditionValue = curMission.GetProperty(dict_value)
-            
-    elif replace_value != "":
-        #需要替换的
-        conditionValue = int(QuestRunnerValue.GetNPCTalkReplaceValue(curPlayer, curMission, replace_value))
-    else:
-        conditionValue = int(conditionValue)
-
-    #目标任务
-    tagMission = curMission
-    if conditionID != "":        
-        conditionID = int(conditionID)
-        tagMission = curPlayer.FindMission(conditionID)
-        
-    curValue = 0
-    if tagMission == None and conditionName.lower() == 'state':
-        #特殊清空处理, 如果没有任务, state为0
-        curValue = 0
-    elif tagMission == None:
-        GameWorld.DebugLog("没有目标任务 %s" % conditionID , curPlayer.GetPlayerID())
-        return
-    else:
-        curValue = QuestRunnerValue.GetValue(curPlayer, tagMission, conditionName)
-
-    return QuestRunnerValue.GetEval(conditionType, curValue, conditionValue, diff)
-
-#---------------------------------------------------------------------
-##判断背包空格
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <space type="类型" value="值" bag="背包类型"/>
-def ConditionType_Space(curPlayer, curMission, curConditionNode):
-    #格式<space value="" type="" bag=""(背包类型 不填默认包裹)/>
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionBag = curConditionNode.GetAttribute("bag")
-    if conditionBag == "":
-        curBag = IPY_GameWorld.rptItem
-    else:
-        curBag = int(conditionBag)
-    value = ItemControler.GetItemPackSpace(curPlayer, curBag)
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-#---------------------------------------------------------------------
-##判断是否有通讯安全锁
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Have_Tellock/>
-def ConditionType_Have_Tellock(curPlayer, curMission, curConditionNode):
-    #获取通讯安全锁激活状态,0未知,1已开通,2未开通
-    return (curPlayer.GetTelLockState() == 1)
-
-#---------------------------------------------------------------------
-##判断任务物品掉落几率[不可用在回答判断]
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <probability value="出现几率(百分率)" point="最大几率(百分率)"/>
-def ConditionType_Probability(curPlayer, curMission, curConditionNode):
-    rate = int(curConditionNode.GetAttribute("value"))
-    point = GameWorld.ToIntDef(curConditionNode.GetAttribute("point"), 100)
-    return GameWorld.CanHappen(rate, point)
-
-#---------------------------------------------------------------------
-##判断是否拥有家族
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Have_Family/>
-def ConditionType_Have_Family(curPlayer, curMission, curConditionNode):
-    #判断家族<have_family>
-    if curPlayer.GetFamilyID() != 0 :
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##判断是否拥有马匹
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <have_horse value="值" type="类型"/>
-def ConditionType_Have_Horse(curPlayer, curMission, curConditionNode):
-    #判断马匹<have_horse value="" type="">
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    roleEquipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    #===========================================================================
-    # itemRideHorse = roleEquipPack.GetAt(IPY_GameWorld.retHorse)
-    # #无马匹
-    # if not ItemCommon.CheckItemCanUse( itemRideHorse ):
-    #    value = 0
-    # else:
-    #    value = 1
-    #===========================================================================
-    value = 1
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-##判断是否穿戴某部位(非时效)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <have_equip value="装备位"/>
-def ConditionType_Have_Equip(curPlayer, curMission, curConditionNode):
-    equipPlace = int(curConditionNode.GetAttribute("value"))
-    roleEquipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curEquip = roleEquipPack.GetAt(equipPlace)
-    if curEquip.IsEmpty():
-        return False
-    if curEquip.GetEndureReduceType():
-        return False
-    return True
-    
-#---------------------------------------------------------------------
-##增加家族相关值 
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Add_Family_Value hornorValue="家族贡献" familyMoney="家族资金"/>
-def DoType_Add_Family_Value(curPlayer, curMission, curActionNode):
-    #增加家族相关值<Add_Family_Value hornorValue="家族贡献" familyMoney="家族资金"/>
-    curPlayerFamilyID = curPlayer.GetFamilyID()
-    
-    if not curPlayerFamilyID:
-        return
-    
-    # 家族荣誉暂用于永恒项目家族钻石用,荣誉逻辑暂屏蔽    20160606 by hxp
-#    addFamilyHornor = GameWorld.ToIntDef(curActionNode.GetAttribute("hornorValue"), 0)
-#    #增加家族贡献
-#    if addFamilyHornor != 0:
-#        PlayerFamily.SendPack_GameServer_AddFamilyDetail(curPlayer, addFamilyHornor = addFamilyHornor, resion=ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-    
-    addFamilyMoney = GameWorld.ToIntDef(curActionNode.GetAttribute("familyMoney"), 0)
-    
-    #增加家族资金
-    if addFamilyMoney != 0:
-        PlayerFamily.SendPack_GameServer_AddFamilyDetail(curPlayer, addFamilyMoney=addFamilyMoney, resion=ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-        
-    return
-
-#---------------------------------------------------------------------
-##增加玩家XP值 
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Add_Player_XP value="玩家xp值"/>
-def DoType_Add_Player_Xp(curPlayer, curMission, curActionNode):
-    #增加玩家相关值<Add_Player_XP value="玩家xp值"/>
-    
-    #===========================================================================
-    # xpValue = curActionNode.GetAttribute("value")
-    # 
-    # if xpValue != "":
-    #    #设置玩家xp值
-    #    openLV, addXPValue, maxXPValue = ReadChConfig.GetEvalChConfig('PlayerXP')
-    #    curXp = min(int(xpValue), maxXPValue)
-    #    curPlayer.SetDict(ChConfig.Def_PlayerKey_RecordXPValue, curXp)
-    #    curPlayer.SetXP(curXp)
-    #    
-    #===========================================================================
-    return
-
-#---------------------------------------------------------------------
-##家族升级.
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 无返回值
-# @remarks 家族升级
-def DoType_Familylvup(curPlayer, curMission, curActionNode):
-    curPlayer.GameServer_LVUpFamily()
-    return
-
-#---------------------------------------------------------------------
-##概率掉落(最低杀怪)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Drop_Result rate="出现几率(百分率)" minMonsterCount="最小杀怪数量" curMonsterCount="已杀怪数量"/>
-def ConditionType_Drop_Result(curPlayer, curMission, curConditionNode):
-    #初始掉率
-    rate = int(curConditionNode.GetAttribute("rate"))
-    #最小杀怪数量
-    minMonsterCount = int(curConditionNode.GetAttribute("minMonsterCount"))
-    #当前杀怪数量
-    curMonsterCountStr = curConditionNode.GetAttribute("curMonsterCount")
-    curMonsterCount = int(curMission.GetProperty(curMonsterCountStr))
-    
-    if curMonsterCount < minMonsterCount :
-        return False
-    
-    return GameWorld.CanHappen(rate, 100)
-
-#---------------------------------------------------------------------
-##概率掉落, 和杀怪数目有关(最高杀怪)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <drop_form rate="出现几率(百分率)" maxItem="最多掉落数量" curItem="拥有物品数量" maxMonsterCount="最多杀怪数量" curMonsterCount="已杀怪数量"/>
-def ConditionType_Drop_Form(curPlayer, curMission, curConditionNode):
-    #初始掉率
-    rate = float(curConditionNode.GetAttribute("rate")) / 100
-    #最大数量
-    maxItem = float(curConditionNode.GetAttribute("maxItem"))
-    #当前得到物品数目
-    curItemCountStr = curConditionNode.GetAttribute("curItem")
-    curItemCount = float(curMission.GetProperty(curItemCountStr))
-    #最大杀怪数量
-    maxMonsterCount = float(curConditionNode.GetAttribute("maxMonsterCount"))
-    #当前杀怪数量
-    curMonsterCountStr = curConditionNode.GetAttribute("curMonsterCount")
-    curMonsterCount = float(curMission.GetProperty(curMonsterCountStr)) + 1
-    
-    #GameWorld.Log("rate = %f, maxItem = %f, curItemCount = %f, curMonsterCount = %f"%(
-    #                                rate, maxItem, curItemCount, curMonsterCount))
-    if curMonsterCount >= maxMonsterCount:
-        #杀怪数量已满, 一定掉落
-        return True
-    #****************************************
-    #初始必掉落个数
-    baseDropCount = float(maxItem / 10)
-    #GameWorld.Log("初始必掉落个数 : %s"%str(baseDropCount))
-    #初始必掉落杀怪数
-    dropMonsterCount = float(maxMonsterCount / 10)
-    #GameWorld.Log("初始必掉落杀怪数 : %s"%str(dropMonsterCount))
-    #****************************************
-    realRate = eval(ChConfig.Def_Event_Drop_Formula) * 100
-    #GameWorld.Log("杀怪掉率 : %s"%str(realRate))
-    #转换为整型
-    realRate = int(realRate)
-    
-    #最终结果
-    calcResult = GameWorld.CanHappen(realRate, 100)
-    #GameWorld.Log("最终掉率 : %s"%str(calcResult))
-    return calcResult
-
-#---------------------------------------------------------------------
-##判断背包获得能否可叠加任务物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Can_Put id="物品ID" count="物品数量" nobind="不使用绑定材料" result="期望结果"/>
-def ConditionType_Can_Put(curPlayer, curMission, curConditionNode):
-    curItemID = GameWorld.ToIntDef(curConditionNode.GetAttribute("id"), 0)
-    
-    if curItemID == 0:
-        curItemID = curMission.GetProperty(QuestCommon.Def_Item_ID)
-        
-    curItemCount = int(curConditionNode.GetAttribute("count"))
-    
-    noBind = GameWorld.ToIntDef(curConditionNode.GetAttribute("nobind"), 0)
-    #默认任务物品为绑定,非绑定特殊处理
-    bind = 1
-    if noBind == 1: 
-        bind = 0
-    #任务物品均为绑定物品
-    itemControl = ItemControler.PlayerItemControler(curPlayer)
-    expectResult = int(curConditionNode.GetAttribute("result"))
-    result = itemControl.CanPutInItem(IPY_GameWorld.rptItem, curItemID, curItemCount, bind)
-    if int(result) == expectResult:
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##查找函数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Find name="替换的名字,如Find_Item" id="查找的ID" result="期望结果"/>
-def ConditionType_Find(curPlayer, curMission, curConditionNode):
-    conditionName = curConditionNode.GetAttribute("name")
-    id = int(curConditionNode.GetAttribute("id"))
-    #期望结果
-    expectResult = int(curConditionNode.GetAttribute("result"))
-    result = QuestRunnerValue.GetFind(curPlayer, conditionName, id)
-    if int(result) == expectResult:
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##是否拥有指定技能TypeID的技能
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Skill skilltype="技能TypeID"/>
-def ConditionType_Have_Skill(curPlayer, curMission, curConditionNode):
-    #格式<have_skill skilltype=""/> 查看玩家有无技能
-    skillTypeStr = curConditionNode.GetAttribute("skilltype")
-    
-    if not skillTypeStr:
-        GameWorld.ErrLog("XML Have_Skill id = %s为空!" % (skillTypeStr))
-        return False
-    
-    return curPlayer.GetSkillManager().FindSkillBySkillTypeID(int(skillTypeStr))
-#---------------------------------------------------------------------
-##判断有无BUFF
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Buff id="技能类型ID" value=""/>
-def ConditionType_Have_Buff(curPlayer, curMission, curConditionNode):
-    #<have_buff id="" value=""/>
-    skillTypeID = int(curConditionNode.GetAttribute("id"))
-    value = int(curConditionNode.GetAttribute("value"))
-    curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillTypeID)
-    if not curSkill:
-        GameWorld.ErrLog("ConditionType_Have_Buff异常,skillTypeID = %s" % skillTypeID)
-        return
-    
-    buffType = SkillCommon.GetBuffType(curSkill)
-    buffTuple = SkillCommon.GetBuffManagerByBuffType(curPlayer, buffType)
-    #通过类型获取目标的buff管理器为空,则跳出
-    if buffTuple == ():
-        return
-    
-    buffManager = buffTuple[0]
-    buff = buffManager.FindBuff(skillTypeID)
-    
-    if buff == None:
-        return 0 == value
-    
-    return 1 == value
-
-
-
-#---------------------------------------------------------------------
-##buff剩余时间判断
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Skill_Remain_Time type="__Eval+替换的名字" time="比较的值(毫秒)" id="增值Buff技能TypeID"/>
-def ConditionType_Skill_Remain_Time(curPlayer, curMission, curConditionNode):
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionValue = int(curConditionNode.GetAttribute("time"))
-    id = int(curConditionNode.GetAttribute("id"))
-    buffState = curPlayer.GetIncBuff()
-    curPlayerbuff = buffState.FindBuff(id)
-    if curPlayerbuff == None:
-        values = 0
-    else:
-        values = curPlayerbuff.GetRemainTime()
-        
-    return QuestRunnerValue.GetEval(conditionType, values, conditionValue)
-
-#---------------------------------------------------------------------
-##是否和镖车在同一地图判断
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Truck_In_Around type="__Eval+替换的名字" time="比较的值" />
-def ConditionType_Truck_In_Around(curPlayer, curMission, curConditionNode):
-    #<Truck_In_Around type="equal" value="1"/>
-    conditionType = curConditionNode.GetAttribute("type")
-    playerTruck = curPlayer.GetTruck()
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    
-    if playerTruck != None:
-        values = 1
-    else:
-        values = 0
-        
-    return QuestRunnerValue.GetEval(conditionType, values, conditionValue)
-
-#---------------------------------------------------------------------
-##仓库等级判断
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Warehouse_Lv type="__Eval+替换的名字" lv="比较的值" />
-def ConditionType_Warehouse_Lv(curPlayer, curMission, curConditionNode):
-    #格式<warehouse_lv lv="">
-    curWarehouseLV = curPlayer.GetWarehouseLV()
-    lv = int(curConditionNode.GetAttribute("lv"))
-    conditionType = curConditionNode.GetAttribute("type")
-    return QuestRunnerValue.GetEval(conditionType, curWarehouseLV, lv)
-
-#---------------------------------------------------------------------
-##判断背包中物品数量
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Item_Count dict_id="任务字典值" id="dict_id为空时读取" dict_value="任务字典值" value="dict_value为空时读取" type="__Eval+替换的名字" />
-def ConditionType_Item_Count(curPlayer, curMission, curConditionNode):
-    dict_id = curConditionNode.GetAttribute("dict_id")
-    dict_value = curConditionNode.GetAttribute("dict_value")
-    
-    if dict_id == "":
-        id = int(curConditionNode.GetAttribute("id"))
-    else:
-        id = curMission.GetProperty(dict_id)
-        
-    #GameWorld.Log("任务ID:%d"%(id))
-    if dict_value == "":
-        conditionValue = int(curConditionNode.GetAttribute("value"))
-    else:
-        conditionValue = curMission.GetProperty(dict_value)
-        
-    conditionType = curConditionNode.GetAttribute("type")
-    value = ItemControler.FindPlayerItemCountByItemID(curPlayer, IPY_GameWorld.rptItem, id)
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-#---------------------------------------------------------------------
-##判断数量是否足够(可验证绑定)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Item_Isbind_Count id="物品ID" value="验证数量" isBind="是否算绑定的物品 0:不算,1:算" />
-def ConditionType_Item_Isbind_Count(curPlayer, curMission, curConditionNode):
-#    <Item_Isbind_Count id="" value="" isbind=""/> 0:没绑定  1:绑定
-    itemID = GameWorld.ToIntDef(curConditionNode.GetAttribute("id"))
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"))
-    isBind = GameWorld.ToIntDef(curConditionNode.GetAttribute("isbind"))
-
-    curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    findItemCount = 0
-    for i in range(0, curPack.GetCount()):
-        item = curPack.GetAt(i)
-        
-        if not ItemCommon.CheckItemCanUse(item):
-            continue
-        
-        if item.GetItemTypeID() != itemID:
-            continue
-        
-        #需要查找非绑定物品,查找物品和所需物品绑定属性相同
-        if isBind == 0 and item.GetIsBind() != isBind:
-            continue
-        
-        #累积查找物品数量
-        findItemCount += item.GetCount()
-        if findItemCount >= conditionValue:
-            #数量满足返回
-            #GameWorld.Log("查找成功,需要数量:%s,找到数量:%s"%(conditionValue,findItemCount))
-            return True
-        
-    return
-#---------------------------------------------------------------------
-##删除物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Del_Item_Bind id="物品ID" value="验证数量" isBind="是否算绑定的物品 0:不算,1:算" />
-def DoType_Del_Item_Bind(curPlayer, curMission, curActionNode):
-    #格式<Del_Item_Bind value="1" id="50029" isbind=""/>0:不绑 1:绑
-    itemID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"))
-    conditionValue = GameWorld.ToIntDef(curActionNode.GetAttribute("value"))
-    isBind = GameWorld.ToIntDef(curActionNode.GetAttribute("isbind"))
-    
-    #PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID,conditionValue])
-    inputGuidList = []
-    ItemControler.DelPlayerItem_Bind(curPlayer, IPY_GameWorld.rptItem, itemID, conditionValue, isBind, delEventItem=True, guidList=inputGuidList)
-    guidStr = ''
-    for guid in inputGuidList:
-        guidStr += ' %s' % guid
-    #31.        因事件刪除   同上
-    if not curMission:
-        missionID = 0
-    else:
-        missionID = curMission.GetMissionID()
-
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        dataDict = {"ItemID":itemID, "ItemCount":conditionValue, "IsBind":isBind,
-                    "MissionID":missionID}
-        DataRecordPack.DR_DeleteItem(curPlayer, "Event_Del_Item_Bind", dataDict)
-
-
-#---------------------------------------------------------------------
-##检测物品背包和装备栏是否有此物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-def ConditionType_Have_Item(curPlayer, curMission, curConditionNode):
-    #<have_item id="" packtype="1,3" value="" type="" />
-    itemID = GameWorld.ToIntDef(curConditionNode.GetAttribute("id"), 0)
-    count = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    
-    if itemID <= 0:
-        GameWorld.ErrLog('ConditionType_Have_Item itemID = %s, error' % (itemID))
-        return
-
-    packList = curConditionNode.GetAttribute("packtype").split(',')
-    conditionType = curConditionNode.GetAttribute("type")
-    
-    #先纠错一次
-    tmpList = []
-    
-    for typeStr in packList:
-        packType = GameWorld.ToIntDef(typeStr, 0)
-
-        if packType <= 0 or packType >= ShareDefine.rptMax:
-            GameWorld.ErrLog("ConditionType_Have_Item 填写背包范围错误 %s" % packList)
-            return
-
-        tmpList.append(packType)
-    
-    value = 0
-
-    for packType in tmpList:
-        value += ItemControler.FindPlayerItemCountByItemID(curPlayer, packType, itemID)
-        
-    return QuestRunnerValue.GetEval(conditionType, value, count)
-#---------------------------------------------------------------------
-##检测是否拥有镖车押金
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Truck_Money value="期望结果" />
-def ConditionType_Have_Truck_Money(curPlayer, curMission, curConditionNode):
-    #格式<have_truck_money value=""/>
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    truck_money = int(curMission.GetProperty("day_event_truck_money"))
-    result = PlayerControl.HaveMoney(curPlayer, curPlayer.GetUseSilverType(), truck_money)
-    return conditionValue == result
-
-#---------------------------------------------------------------------
-##检测HP百分比(百分比)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Get_Hp_Percent value="数值(百分比)" type="期望结果" />
-def ConditionType_Get_Hp_Percent(curPlayer, curMission, curConditionNode):
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    curPlayerHP = GameObj.GetHP(curPlayer)
-    conditionHP = GameObj.GetMaxHP(curPlayer) * conditionValue / 100
-    
-    
-    return QuestRunnerValue.GetEval(conditionType, curPlayerHP, conditionHP)
-
-#---------------------------------------------------------------------
-##根据ID杀随机怪
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Kill_Rand_Npc_By_Id name="任务字典名,杀怪名" value="任务字典名,杀怪数" type="__Eval+替换的名字"/>
-def ConditionType_Kill_Rand_Npc_By_Id(curPlayer, curMission, curConditionNode):
-    #<kill_rand_npc_by_id name = "1" value = "30"
-    name = curConditionNode.GetAttribute("name")
-    value = curConditionNode.GetAttribute("value")
-    conditionType = curConditionNode.GetAttribute("type")
-    #GameWorld.Log("name = %s, kill_id_count = %s"%(name,value))
-    #GameWorld.Log("Propertyname:%s"%(name))
-    kill_id_count = curMission.GetProperty(value)
-    kill_id_name = curMission.GetProperty(name)
-    #GameWorld.Log("curMissionID = %d"%(curMission.GetMissionID()))
-    #GameWorld.Log("Propertykill_id_counts:%d"%(kill_id_count))
-    return QuestRunnerValue.GetEval(conditionType, kill_id_name, kill_id_count)
-
-#---------------------------------------------------------------------
-##是否拥有武器
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Weapon value="期望值" type="__Eval+替换的名字"/>
-def ConditionType_Have_Weapon(curPlayer, curMission, curConditionNode):
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    PlayerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curWeapon = PlayerEquip.GetAt(ShareDefine.retWeapon)
-    curWeapon2 = PlayerEquip.GetAt(ShareDefine.retWeapon2)
-    result = not (curWeapon.IsEmpty() and curWeapon2.IsEmpty())
-    #GameWorld.Log('conditionValue = %s, result = %s'%(conditionValue, result))
-    return QuestRunnerValue.GetEval(conditionType, result, conditionValue)
-
-#---------------------------------------------------------------------
-##五行属性判定
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Player_Type value="期望值" type="__Eval+替换的名字"/>
-def ConditionType_Player_Type(curPlayer, curMission, curConditionNode):
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    value = curPlayer.GetPlayerType()
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-#---------------------------------------------------------------------
-##等级触发判定
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Lv value="期望值" type="__Eval+替换的名字"/>
-def ConditionType_Lv(curPlayer, curMission, curConditionNode):
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    value = curPlayer.GetLV()
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-def ConditionType_Createroledays(curPlayer, curMission, curConditionNode):
-    #判断玩家创角天
-    #<Createroledays value="期望值" type="__Eval+替换的名字"/>
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    value = GameWorld.GetCreateRoleDays(curPlayer)
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-#---------------------------------------------------------------------
-##判断身上是否有某种类型任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Job_Mission value="期望值" type="__Eval+替换的名字" missiontype="任务类型"/>
-def ConditionType_Have_Job_Mission(curPlayer, curMission, curConditionNode):
-    #格式<have_job_mission value="" type="" missiontype="">
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    type = int(curConditionNode.GetAttribute("missiontype"))
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        taskID = curMission.GetMissionID()
-        if FindQuestFunc(taskID) == None:
-            continue
-        taskType = FindQuestFunc(taskID).Type
-        if taskType == type:
-            value = 1
-        else:
-            value = 0
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue)
-
-#---------------------------------------------------------------------
-##玩家是否在指定的地图
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Map_Id value="单地图期望值" maplist="多地图列表" type="__Eval+替换的名字"/>
-def ConditionType_Map_Id(curPlayer, curMission, curConditionNode):
-    #格式:<map_id type = "Equal" value = "505"/>
-    value = curPlayer.GetMapID()
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    mapList = curConditionNode.GetAttribute("maplist")
-    #单一地图
-    if conditionValue != 0:
-        return QuestRunnerValue.GetEval(conditionType, value, conditionValue)                                             
-    #多地图
-    mapList = mapList.split(',')
-    for map in mapList:
-        if value == int(map):
-            return True
-       
-    return False     
-
-#---------------------------------------------------------------------
-##玩家是否拥有足够货币
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Money value="期望值" check="查找对话中的货币" moneytype="货币类型 1元宝2礼券3银两" type="__Eval+替换的名字" maxItem="需要物品数量" itemID="20410"/>
-def ConditionType_Have_Money(curPlayer, curMission, curConditionNode):
-    #格式<have_money value="" type="" moneytype=""/>
-    value = curConditionNode.GetAttribute("value")
-    check = curConditionNode.GetAttribute("check")
-    if value != "":
-        conditionValue = int(value)
-    elif check != "":
-        conditionValue = int(QuestRunnerValue.GetNPCTalkReplaceValue(curPlayer, curMission, check))
-    
-    maxItemCnt = GameWorld.ToIntDef(curConditionNode.GetAttribute("maxItem"), 0)
-    itemID = GameWorld.ToIntDef(curConditionNode.GetAttribute("itemID"), 0)
-    if maxItemCnt and itemID: #未收集的道具个数乘以单价
-        haveCnt = ItemControler.FindPlayerItemCountByItemID(curPlayer, IPY_GameWorld.rptItem, itemID)
-        conditionValue = max(0, maxItemCnt-haveCnt)*conditionValue
-        
-    conditionType = curConditionNode.GetAttribute("type")
-    moneyType = int(curConditionNode.GetAttribute("moneytype"))
-    
-    #GameWorld.Log('    conditionValue=%s,maxItemCnt=%s,itemID=%s'%(conditionValue,maxItemCnt,itemID))
-    
-    goldValue = curPlayer.GetGold()
-    goldPaperValue = curPlayer.GetGoldPaper()
-    silverValue = PlayerControl.GetSilver(curPlayer)
-    
-    if moneyType == IPY_GameWorld.TYPE_Price_Gold_Money:
-        return QuestRunnerValue.GetEval(conditionType, goldValue, conditionValue)
-    elif moneyType == IPY_GameWorld.TYPE_Price_Gold_Paper:
-        return QuestRunnerValue.GetEval(conditionType, goldPaperValue, conditionValue)
-    elif moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:
-        return QuestRunnerValue.GetEval(conditionType, silverValue, conditionValue)
-    elif moneyType == ShareDefine.TYPE_Price_Gold_Paper_Money:
-        return QuestRunnerValue.GetEval(conditionType, goldValue + goldPaperValue, conditionValue)
-    else:
-        GameWorld.Log("任务 = %s , moneytype = %s填错拉" % (curMission.GetMissionID() , moneyType) , curPlayer.GetPlayerID())
-        return
-    
-
-#---------------------------------------------------------------------
-##玩家是否拥有设置星级的货币
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Set_Mission_Star_Have_Money />    
-def ConditionType_Set_Mission_Star_Have_Money(curPlayer, curMission, curConditionNode):
-    missionID = curMission.GetMissionID()
-    curMissionData = FindQuestFunc(missionID)
-    if not curMissionData:
-        return False
-    missionType = curMissionData.Type
-    Def_Around_Star = GetRunKey(missionType, Key_Around_Star)
-    
-    moneyType, costFormat = ReadChConfig.GetEvalChConfig("RunAround_SetStarCost")
-    reLV = curPlayer.GetLV()
-    reExp = 0
-    reMoney = 0
-    aroundStar = curMission.GetProperty(Def_Around_Star)
-    moneyPrice = int(eval(costFormat))
-    
-    if moneyType == IPY_GameWorld.TYPE_Price_Gold_Money:
-        return curPlayer.GetGold() >= moneyPrice
-    
-    if moneyType == IPY_GameWorld.TYPE_Price_Gold_Paper:
-        return curPlayer.GetGoldPaper() >= moneyPrice
-
-    if moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:
-        return PlayerControl.GetSilver(curPlayer) >= moneyPrice
-
-    if moneyType == IPY_GameWorld.TYPE_Price_Silver_Paper:
-        return curPlayer.GetSilverPaper() >= moneyPrice
-    
-    return False
-
-#---------------------------------------------------------------------
-##清除虚弱需要货币
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Clearbornbuff_Have_Money/>   
-def ConditionType_Clearbornbuff_Have_Money(curPlayer, curMission, curConditionNode):
-    return 0
-
-##墓地医生判断金钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Health_Have_Money moneytype="金钱类型" />   
-def ConditionType_Health_Have_Money(curPlayer, curMission, curConditionNode):
-    moneyType = int(curConditionNode.GetAttribute("moneytype"))
-    
-    price = QuestRunnerValue.GetHealthLostMoney(curPlayer)
-    
-    return PlayerControl.HaveMoney(curPlayer, moneyType, price, False)
-    
-#---------------------------------------------------------------------
-##是否是期望的职业
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Check_Job value="期望值" type="替换的名字"/>
-def ConditionType_Check_Job(curPlayer, curMission, curConditionNode):
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    value = curPlayer.GetJob()
-    return QuestRunnerValue.GetEval(conditionType, value, conditionValue) 
-
-#---------------------------------------------------------------------
-##是否是期望的回答
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Answer value="期望值" type="__Eval+替换的名字"/>
-def ConditionType_Answer(curPlayer, curMission, curConditionNode):
-    conditionValue = curConditionNode.GetAttribute("value")
-    conditionType = curConditionNode.GetAttribute("type")
-    answer = CurrentPlayerAnswer
-    answer = answer.lower()
-    conditionValue = conditionValue.lower()
-    return QuestRunnerValue.GetEval(conditionType, answer, conditionValue)
-
-#---------------------------------------------------------------------
-##是否是期望的骠车事件ID
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Truck_Event_Id id="期望值"/>
-def ConditionType_Truck_Event_Id(curPlayer, curMission, curConditionNode):
-    id = int(curConditionNode.GetAttribute("id"))
-    if curPlayer.GetTruckEventID() == id:
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##是否身上有期望的任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Find_Mission id="任务ID" result="期望值"/>
-def ConditionType_Find_Mission(curPlayer, curMission, curConditionNode):
-    #格式<find_mission id = "" result = ""/>
-    conditionID = GameWorld.ToIntDef(curConditionNode.GetAttribute("id"), 0)
-    
-    if conditionID == 0:
-        return False
-    curMission = curPlayer.FindMission(conditionID)
-    curResult = 0
-    conditionResult = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    if curMission == None:
-        curResult = 0
-        return curResult == conditionResult
-
-    curResult = 1
-    return curResult == conditionResult
-
-#---------------------------------------------------------------------
-##是否有任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Mission id="任务ID" result="期望值"/>
-def ConditionType_Have_Mission(curPlayer, curMission, curConditionNode):
-    #格式<have_mission id = "" result = ""/>
-    conditionID = GameWorld.ToIntDef(curConditionNode.GetAttribute("id"), 0)
-    
-    if conditionID == 0:
-        #判断所有任务
-        for i in range(0, curPlayer.GetMissionCount()):
-            curMission = curPlayer.GetMissionByIndex(i)
-            if not (curMission == None or curMission.GetState() == ChConfig.Def_Mission_State_Over):
-                return False
-        return True
-    curMission = curPlayer.FindMission(conditionID)
-    curResult = 0
-    conditionResult = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    if curMission == None:
-        curResult = 0
-        return curResult == conditionResult
-    
-    curState = curMission.GetState()
-    if curState in [ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_Over]:
-        curResult = 0
-        return curResult == conditionResult
-    
-    curResult = 1
-    return curResult == conditionResult
-
-#---------------------------------------------------------------------
-
-##判断是否有匹配条件的任务类型
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Have_Mission_Type value="期望值" missiontype="任务类型" state="匹配任务状态列表逗号隔开" nostate="不匹配的任务状态列表逗号隔开"/>
-def ConditionType_Have_Mission_Type(curPlayer, curMission, curConditionNode):
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"))
-    missiontype = GameWorld.ToIntDef(curConditionNode.GetAttribute("missiontype"))
-    stateList = eval("[%s]" % curConditionNode.GetAttribute("state"))
-    nostateList = eval("[%s]" % curConditionNode.GetAttribute("nostate"))
-
-    GameWorld.DebugLog("Have_Mission_Type conditionValue=%s,missiontype=%s,stateList=%s,nostateList=%s" 
-                       % (conditionValue, missiontype, stateList, nostateList))
-    
-    haveCondMission = 0
-    for i in range(curPlayer.GetMissionCount()):
-        mission = curPlayer.GetMissionByIndex(i)
-        taskID = mission.GetMissionID()
-        curMissionData = FindQuestFunc(taskID)
-        if not curMissionData:
-            GameWorld.DebugLog("    taskID=%s is None!" % taskID)
-            continue
-        
-        taskType = curMissionData.Type
-        if taskType != missiontype:
-            GameWorld.DebugLog("    taskID=%s,taskType(%s) != missiontype(%s)" % (taskID, taskType, missiontype))
-            continue
-        
-        missionState = mission.GetState()
-        if stateList and missionState not in stateList:
-            GameWorld.DebugLog("    taskID=%s,missionState=%s not in stateList=%s" % (taskID, missionState, stateList))
-            continue
-        
-        if nostateList and missionState in nostateList:
-            GameWorld.DebugLog("    taskID=%s,missionState=%s in nostateList=%s" % (taskID, missionState, nostateList))
-            continue
-        
-        haveCondMission = 1
-        GameWorld.DebugLog("    taskID=%s,taskType=%s,missionState=%s OK!" % (taskID, taskType, missionState))
-        break
-    
-    GameWorld.DebugLog("    haveCondMission=%s" % (haveCondMission))
-    return haveCondMission == conditionValue
-
-#---------------------------------------------------------------------
-##当前任务步骤是否可以删除任务物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Can_Del_Mission_Item result="期望值"/>
-def ConditionType_Can_Del_Mission_Item(curPlayer, curMission, curConditionNode):
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)    
-    #判断所有任务
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        if curMission == None:
-            continue
-        if curMission.GetState() > 0:
-            return False == result
-        
-    return True == result
-
-#---------------------------------------------------------------------
-##是否有队伍
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <have_team/>
-def ConditionType_Have_Team(curPlayer, curMission, curConditionNode):
-    #格式<have_team/>
-    curPlayerTeam = curPlayer.GetTeam()
-    if curPlayerTeam == None:
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##是否可以开始拉镖任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Can_Start_Truck value="期望值"/>
-def ConditionType_Can_Start_Truck(curPlayer, curMission, curConditionNode):
-    #<can_start_truck value="1"/>   0:不可接     1:可接    
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    
-    if PlayerTruck.PlayerInMapHaveTruck(curPlayer):
-        #玩家在地图中有骠车
-        return conditionValue == 0
-    
-    truckState = curPlayer.GetTruckState()
-    #镖车未接和丢失都可接
-    if truckState == IPY_GameWorld.tusNull or truckState == IPY_GameWorld.tusDisappear:
-        return conditionValue == 1
-
-    return conditionValue == 0
-
-#---------------------------------------------------------------------
-##是否是期望的骠车状态
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Truck_State value="期望值" type="__Eval+替换的名字"/>
-def ConditionType_Truck_State(curPlayer, curMission, curConditionNode):
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    
-    return QuestRunnerValue.GetEval(conditionType, curPlayer.GetTruckState(), conditionValue)
-
-#---------------------------------------------------------------------
-##是否队员必须在同一地图
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Team_State result="期望值"/>
-def ConditionType_Team_State(curPlayer, curMission, curConditionNode):
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    curPlayerTeam = curPlayer.GetTeam()
-    if curPlayerTeam == None:
-        return False == result
-    #队伍没超过2人(队伍人数判断是都在同一地图)
-    if curPlayerTeam.GetMemberCount() < 2:
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##是否有组队
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Is_Team_State value="期望值" type="__Eval+替换的名字"/>
-def ConditionType_Is_Team_State(curPlayer, curMission, curConditionNode):
-    #<is_team_state type="" value=""/>
-    conditionValue = int(curConditionNode.GetAttribute("value"))
-    conditionType = curConditionNode.GetAttribute("type")
-    return QuestRunnerValue.GetEval(conditionType, curPlayer.GetTeamID(), conditionValue)
-
-#---------------------------------------------------------------------
-##是否有镖车在附件
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Truck_Near/>
-def ConditionType_Truck_Near(curPlayer, curMission, curConditionNode):
-    curTruck = curPlayer.GetTruck()
-    if curTruck == None:
-        return False
-    
-    #获得玩家和镖车间的距离
-    dist = GameWorld.GetDist(curTruck.GetPosX(), curTruck.GetPosY(),
-                             curPlayer.GetPosX(), curPlayer.GetPosY())
-    #镖车停止
-    if dist > ChConfig.Def_PlayerTruckEventDist:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##物品背包中是否有列表物品中的物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Have_Item_List id="物品清单50044/50045...50052 "/>
-def ConditionType_Have_Item_List(curPlayer, curMission, curConditionNode):
-    #格式<have_item_List id="50044/50045...50052"/>
-    ItemID = curConditionNode.GetAttribute("id")
-    
-    #获得物品列表
-    ItemIDList = ItemID.split("/")
-    #获得玩家背包物品
-    PlayerItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    #遍历物品列表
-    for i in range(0, len(ItemIDList)):
-        haveItemID = int(ItemIDList[i])
-        #遍历玩家背包
-        for j in range(0, PlayerItem.GetCount()):
-            curItem = PlayerItem.GetAt(j)
-            curItemID = curItem.GetItemTypeID()
-            if haveItemID != curItemID :
-                continue
-            else:
-                return True
-    return False
-
-
-#---------------------------------------------------------------------
-##仓库中是否有期望的物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Warehouse_Have_Item id="物品ID" result="期望的结果" />   
-def ConditionType_Warehouse_Have_Item(curPlayer, curMission, curConditionNode):
-    #格式<warehouse_have_item id="" result="">
-    itemID = int(curConditionNode.GetAttribute("id"))
-    result = int(curConditionNode.GetAttribute("result"))
-    #获得仓库背包
-    rolePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptWarehouse)
-    #获得第一格物品
-    item = rolePack.GetAt(0)
-    if not ItemCommon.CheckItemCanUse(item):
-        return False == result
-    
-    if item.GetItemTypeID() != itemID :
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##是否是家族长
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Family_Leader result="期望的结果" /> 
-def ConditionType_Family_Leader(curPlayer, curMission, curConditionNode):
-    #<Family_Leader result=""/> result:0不是族长,1是(默认1)
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 1)
-    memberLV = curPlayer.GetFamilyMemberLV()
-
-    if memberLV != IPY_GameWorld.fmlLeader:
-        return 0 == result
-    
-    return 1 == result
-
-#---------------------------------------------------------------------
-##是否是在期望的时间段内
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Time startYear="起点:年" startMonth="起点:月" startDay="起点:天" startHour="起点:小时" overYear="终点:年" overMonth="终点:月" overDay=="终点:天" overHour="终点:小时"/> 
-def ConditionType_Time(curPlayer, curMission, curConditionNode):
-#<time startYear="2009" startMonth="1" startDay="20" startHour="23" overYear="2009" overMonth="2" overDay="5" overHour="24"/>    
-    curTime = GameWorld.GetCurrentTime()
-
-    #开始时间
-    startY = GameWorld.ToIntDef(curConditionNode.GetAttribute("startYear"), 0)
-    startM = GameWorld.ToIntDef(curConditionNode.GetAttribute("startMonth"), 0)
-    startD = GameWorld.ToIntDef(curConditionNode.GetAttribute("startDay"), 0)
-    startH = GameWorld.ToIntDef(curConditionNode.GetAttribute("startHour"), 0)
-    #结束时间
-    overY = GameWorld.ToIntDef(curConditionNode.GetAttribute("overYear"), 0)
-    overM = GameWorld.ToIntDef(curConditionNode.GetAttribute("overMonth"), 0)
-    overD = GameWorld.ToIntDef(curConditionNode.GetAttribute("overDay"), 0)
-    overH = GameWorld.ToIntDef(curConditionNode.GetAttribute("overHour"), 0)
-    
-    startTime = GameWorld.GetDateTimeByStr('%s-%s-%s %s:%s:%s' % (startY, startM, startD, startH, 0, 0))
-    overTime = GameWorld.GetDateTimeByStr('%s-%s-%s %s:%s:%s' % (overY, overM, overD, overH, 0, 0))
-    
-    
-    if startTime == None or overTime == None:
-        return False
-    
-    return startTime <= curTime < overTime
-
-#---------------------------------------------------------------------
-##是否是在期望的小时内
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Hour startH="起点:小时" 终点:小时" /> 
-def ConditionType_Hour(curPlayer, curMission, curConditionNode):
-    curTime = GameWorld.GetCurrentTime()
-    startH = GameWorld.ToIntDef(curConditionNode.GetAttribute("startH"), 0)
-    overH = GameWorld.ToIntDef(curConditionNode.GetAttribute("overH"), 0)
-    curHour = curTime.hour
-    
-    return startH <= curHour <= overH
-
-#---------------------------------------------------------------------
-##是否是在期望的分钟内
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Hour startH="起点:小时" 终点:小时" /> 
-def ConditionType_Minute(curPlayer, curMission, curConditionNode):
-    curTime = GameWorld.GetCurrentTime()
-    startM = GameWorld.ToIntDef(curConditionNode.GetAttribute("startM"), 0)
-    overM = GameWorld.ToIntDef(curConditionNode.GetAttribute("overM"), 0)
-    curMinute = curTime.minute
-    
-    return startM <= curMinute <= overM
-
-#---------------------------------------------------------------------
-##指定任务类型个数是否达到指定数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Hour startH="起点:小时" 终点:小时" /> 
-def ConditionType_Check_Missionsum_Bytype(curPlayer, curMission, curConditionNode):
-    missionType = GameWorld.ToIntDef(curConditionNode.GetAttribute("mission_type"), 0)
-    maxSum = GameWorld.ToIntDef(curConditionNode.GetAttribute("max_sum"), 0)
-    
-    curMissionSum = 0
-    for i in range(curPlayer.GetMissionCount()):
-        newMission = curPlayer.GetMissionByIndex(i)
-        if newMission == None or newMission.GetState() in [ChConfig.Def_Mission_State_Over]:
-            continue
-        
-        curTrigMission = FindQuestFunc(newMission.GetMissionID())
-        if curTrigMission == None or curTrigMission.Type != missionType:
-            continue
-        
-        curMissionSum += 1
-        
-    if curMissionSum < maxSum:
-        return True
-    
-    return False
-
-##坐骑是否达到多少阶
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_HorseClasslv type="类型" value="值"/> 
-def ConditionType_Check_Horseclasslv(curPlayer, curMission, curConditionNode):
-    return False
-
-##坐骑是否达到多少阶多少星
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_Horselv type="类型" classlv="阶级" star="星级"/> 
-def ConditionType_Check_Horselv(curPlayer, curMission, curConditionNode):
-    return False
-
-##身上穿了多少件橙装
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <QualityEquipCnt quality="装备品质" value="期望数量"/> 
-def ConditionType_Qualityequipcnt(curPlayer, curMission, curConditionNode):
-    return ChEquip.GetEquipOrangeCount(curPlayer)
-
-##强化 X件装备强化到X级
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_Equippartstar star="总星级" type="类型"/> 
-def ConditionType_Check_Equippartstar(curPlayer, curMission, curConditionNode):
-    #conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    conditionType = curConditionNode.GetAttribute("type")
-    star = GameWorld.ToIntDef(curConditionNode.GetAttribute("star"))
-    
-    totalPlusLV = 0
-    for packType, equipPartIndexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
-        for i in equipPartIndexList:
-            partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i)
-            totalPlusLV += partStarLV
-    
-    
-    
-    #key = curConditionNode.GetAttribute("key") #当前达到条件的件数key
-    
-#    partCnt = 0 #满足条件的件数
-#    equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(IPY_GameWorld.rptEquip, [])
-#    for i in equipPartIndexList:
-#        #统计全身强化等级
-#        partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, i)
-#        if partStarLV >= star:
-#            partCnt +=1 
-    #GameWorld.Log('star=%s,conditionValue=%s,partCnt=%s,%s'%(star,conditionValue,partCnt,QuestRunnerValue.GetEval(conditionType, partCnt, conditionValue)))
-    #curMission.SetProperty(key, partCnt)
-    return QuestRunnerValue.GetEval(conditionType, totalPlusLV, star)
-
-##爵位达到了X阶X星
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_Officiallv type="类型" classlv="阶级 star="星级"/> 
-def ConditionType_Check_Officiallv(curPlayer, curMission, curConditionNode):
-    return
-
-##通关试炼之塔第X层
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_Trialtower type="类型" value="值"/> 
-def ConditionType_Check_Trialtower(curPlayer, curMission, curConditionNode):
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    conditionType = curConditionNode.GetAttribute("type")
-    maxPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) # 历史最大过关数
-    return QuestRunnerValue.GetEval(conditionType, maxPassLV, conditionValue)
-
-##通关天星塔第X层
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Check_Skytower type="类型" value="值"/> 
-def ConditionType_Check_Skytower(curPlayer, curMission, curConditionNode):
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    conditionType = curConditionNode.GetAttribute("type")
-    maxPassLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor) # 历史最大过关数
-    return QuestRunnerValue.GetEval(conditionType, maxPassLV, conditionValue)
-
-def ConditionType_Get_Player_Coin(curPlayer, curMission, curConditionNode):
-    # 判断玩家已充值点券数
-    # <Get_Player_Coin type="great" value="0"/> 充值点券大于0代表已经首充过
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    conditionType = curConditionNode.GetAttribute("type")
-    coinPointTotal = curPlayer.GetChangeCoinPointTotal()
-    return QuestRunnerValue.GetEval(conditionType, coinPointTotal, conditionValue)
-
-
-def ConditionType_Is_Activate_Pet(curPlayer, curMission, curConditionNode):
-    # 判断宠物是否激活
-    # <Is_Activate_Pet petID="0"/> petID为0时代表任意宠物, 具体宠物ID为指定宠物
-    checkPetID = GameWorld.ToIntDef(curConditionNode.GetAttribute("petID"), 0)
-    if not checkPetID:
-        petPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
-        if not petPack:
-            return False
-        return petPack.GetCount() > 0
-    return PlayerPet.GetPetDataItemByNPCID(curPlayer, checkPetID) != None
-
-#---------------------------------------------------------------------
-##执行 扣除玩家镖车押金
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks <Del_Truck_Money/>
-def DoType_Del_Truck_Money(curPlayer, curMission, curActionNode):
-    return
-
-#---------------------------------------------------------------------
-##执行 将物品放入打造背包
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Composepack_Putin_Item id="物品ID" value="物品数量" /> 
-def DoType_Composepack_Putin_Item(curPlayer, curMission, curActionNode):
-    #格式:<Composepack_Putin_Item id = "" value=""/>
-    
-    itemID = int(curActionNode.GetAttribute("id"))
-    itemCount = int(curActionNode.GetAttribute("value"))
-    
-    #生成装备对象
-    equipTag = ItemCommon.CreateSingleItem(itemID)
-    if equipTag == None:
-        #无此物品
-        GameWorld.Log("创造物品失败")
-        return False
-    
-    #设置防入物品数量
-    ItemControler.SetItemCount(equipTag, itemCount, curPlayer.GetPlayerID(), curPlayer.GetAccID(),
-                               curPlayer.GetPlayerName())
-    #装备GUIID
-    equipTagGUID = equipTag.GetGUID()
-    
-    #将物品放入结果
-    PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
-    if not PlayerItemControler.PutInItem(IPY_GameWorld.rptCompose, equipTag):
-        GameWorld.Log('###任务 = %s给予物品异常,%s,%s' % (curMission.GetMissionID() , itemID , itemCount) , curPlayer.GetPlayerID())
-        equipTag.Clear()
-        return
-    
-    return
-
-#---------------------------------------------------------------------
-##执行 将物品放入仓库
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-# @remarks  <Warehouse_Putin_Item id="物品ID" value="物品数量" /> 
-def DoType_Warehouse_Putin_Item(curPlayer, curMission, curActionNode):
-    #格式<warehouse_putin_item id="" value="">
-    #获得仓库背包
-    #rolePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptWarehouse)
-    #放入物品数量
-    putCount = int(curActionNode.GetAttribute("value"))
-    #生成物品
-    itemID = int(curActionNode.GetAttribute("id"))
-    item = ItemCommon.CreateSingleItem(itemID)
-    #设置放入数量
-    ItemControler.SetItemCount(item, putCount, curPlayer.GetPlayerID(), curPlayer.GetAccID(),
-                               curPlayer.GetPlayerName())
-    #物品GUID
-    itemGUID = item.GetGUID()
-    #将物品放置玩家背包
-    PlayerItemControler = ItemControler.PlayerItemControler(curPlayer)
-    if not PlayerItemControler.PutInItem(IPY_GameWorld.rptWarehouse, item):
-        GameWorld.Log('###任务 = %s给予物品异常,%s,%s' % (curMission.GetMissionID() , itemID , putCount) , curPlayer.GetPlayerID())
-        item.Clear()
-        return
-    
-    return
-
-#---------------------------------------------------------------------
-##判断当前的条件分支节点是否可以运行
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点数据信息
-# @return 返回值无意义
-# @remarks 调用 ConditionType_
-def AnswerConditionJudge(curPlayer, curMission, curConditionNode):
-    funcName = curConditionNode.GetNodeName()
-    funcName = "ConditionType_" + funcName.title()
-
-    if globals().has_key(funcName):
-        result = globals()[funcName](curPlayer, curMission, curConditionNode)
-        #GameWorld.Log("Call funcName = %s result = %s"%(funcName, result))
-        return result
-    
-    GameWorld.ErrLog("%s, noFind" % (funcName))
-    return
-
-#==================================================================
-
-#---------------------------------------------------------------------
-##执行当前的动作
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 节点信息
-# @return 返回值无意义
-# @remarks  <Var name="节点名" value="值" getvalue="玩家接口" type='节点类型' id="任务ID" id_name="任务ID存储key"/> 
-#<Var name="mission_dict_key"  value="1" getvalue="LV" type='add' id="13" >
-def DoType_Var(curPlayer, curMission, curActionNode):
-    conditionName = curActionNode.GetAttribute("name")
-    
-    #将玩家当前指定值 赋值给 玩家任务字典
-    getValue = curActionNode.GetAttribute("getvalue")
-    if hasattr(curPlayer, "Get%s" % getValue):
-        value = getattr(curPlayer, "Get%s" % getValue)()
-    else:
-        value = curActionNode.GetAttribute("value")
-    
-    conditionType = curActionNode.GetAttribute("type")
-    questID = curActionNode.GetAttribute("id")
-    idNameStr = curActionNode.GetAttribute("id_name")
-    
-    if curMission and idNameStr != "":
-        questID = GameWorld.ToIntDef(curMission.GetProperty(idNameStr), 0)
-        if questID != 0:
-            curMission = curPlayer.FindMission(questID)
-            if curMission == None:
-                curMission = QuestCommon.AddNewMission(curPlayer, questID)
-                
-    if questID != "":
-        #设置任务ID
-        questID = int(questID)
-        curMission = curPlayer.FindMission(questID)
-        if curMission == None:
-            #任务不存在, 需要添加任务
-            curMission = QuestCommon.AddNewMission(curPlayer, questID)
-            #GameWorld.Log(str("已添加任务"))
-            
-    QuestRunnerValue.SetValue(curPlayer, curMission, conditionType, conditionName, value)        
-
-##输入字符串
-#def DealWithInPut(str, mark = '?'):
-#    var=[]
-#    r=re.compile(r"[\(][%s][^\(]*[%s][\)]"%(mark, mark))
-#    strList=r.findall(str)
-#    rs=re.compile(r"[^\(%s][^\(]*[^%s\)]"%(mark, mark))
-#    for i in range(len(strList)):
-#        curItem=rs.findall(strList[i])
-#        var.extend(curItem)
-#    return var
-#
-#def DealWithReverse(str,rstr, mark = '?'):
-#    r=re.compile(r"[\(][%s][^\(]*[%s][\)]"%(mark, mark))
-#    strList=r.findall(str)
-#    replaceStr=str
-#    for j in range(len(strList)):
-#        if len(rstr)!=len(strList):
-#            raise "Out Of Index Exception"
-#        replaceStr=replaceStr.replace(strList[j],rstr[j])
-#    return replaceStr    
-
-#---------------------------------------------------------------------
-##执行传送广播
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 节点信息
-# @return 返回值无意义
-# @remarks  <Notify code="提示的消息字符串" /> 
-def DoType_Notify(curPlayer, curMission, curActionNode):
-    content = curActionNode.GetAttribute("code")
-    
-    missionID = 0
-    if curMission != None:
-        missionID = curMission.GetMissionID()
-        
-    curPlayer.Notify(missionID, content)
-
-#---------------------------------------------------------------------
-##每日任务NPC名字替换
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 节点信息
-# @return 返回值无意义
-# @remarks  <Notify_Npc_Name code="替换的消息字符串" /> 
-def DoType_Notify_Npc_Name(curPlayer, curMission, curActionNode):
-    #<notify_npc_name content="已击败所有 (!NPCName!)" dict_id = "day_event_id"/>
-#    dict_id = curActionNode.GetAttribute("dict_id")
-#    NpcID = curMission.GetProperty(dict_id)
-    content = curActionNode.GetAttribute("code")
-    
-    missionID = 0
-    if curMission != None:
-        missionID = curMission.GetMissionID()
-
-#    #从数据中获得当前NPC
-#    curNPC = GameWorld.GetGameData().FindNPCDataByID(int(NpcID))
-#    Name = curNPC.GetName()
-#    #替换NPC名字
-#    parseList = DealWithInPut(content)
-#    for i in range(0,len(parseList)):
-#        if parseList[i] == "NPCName":
-#            parseList[i] = Name
-#    msg = DealWithReverse(content, parseList)
-    curPlayer.Notify(missionID, content)
-    curPlayer.NotifyMiddle(missionID, content)
-
-#---------------------------------------------------------------------
-##获得该物品可放入的背包索引
-# @param curPlayer 玩家实例
-# @param itemID 物品ID
-# @param itemCount 物品数量
-# @param bind 绑定
-# @param packList 背包索引
-# @return 背包索引,-1表示没有可放的背包
-def GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList, isAuctionItem=False):
-    itemControl = ItemControler.PlayerItemControler(curPlayer)
-    for index in packList:
-        if not itemControl.CanPutInItem(index, itemID, itemCount, isAuctionItem):
-            continue
-        
-        return index
-    
-    return -1
-
-##给玩家物品背包中新增物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param itemID 物品ID
-# @param itemCount 物品数量
-# @param identifypar 鉴定系数
-# @param itemStarLV 星数
-# @param bind 绑定
-# @param property 五行
-# @param isSuite 是否套装化
-# @param baseAttrRate 可强化的装备基础属性随机加强比例默认10000
-# @return 返回值无意义
-# @remarks 给玩家物品背包中新增物品
-def AddEventItem(curPlayer, curMission, itemID, itemCount, identifypar=None,
-                 itemStarLV=0, bind=False, property=None,
-                 packList=[IPY_GameWorld.rptItem], isSuite=False,
-                 addAttrLV=0, isLucky=False, skillBoostEff=[], holeCount=0,
-                 equipIndex= -1, isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False):
-#    if PlayerFamily.DoAddFamilyBossFoodEx(curPlayer, itemID, itemCount, ShareDefine.Def_AddFAVReason_DoFamilyMisson):
-#        #仙盟兽粮自动使用
-#        return
-        
-    #任务给予物品应该只能放入万能背包和背包
-    itemControl = ItemControler.PlayerItemControler(curPlayer)
-
-    #获得可放入的背包索引
-    packIndex = GetCanPutInPackIndex(curPlayer, itemID, itemCount, bind, packList, isAuctionItem)
-    if packIndex == -1:
-        return
-
-    #设置物品属性
-    curSingleItem = CreatMissionItem(curPlayer, itemID, itemStarLV, addAttrLV, isSuite, bind,
-                                      isLucky, skillBoostEff, itemCount, holeCount, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem)
-    if not curSingleItem:
-        return
-    
-    #功能进入无法记录任务特殊处理
-    if not curMission:
-        missionID = 0
-    else:
-        missionID = curMission.GetMissionID()
-        
-    #装备则放入背包
-    if packIndex == IPY_GameWorld.rptEquip:
-        #任务没给出装备位置,则按填表的
-        if equipIndex == -1:
-            equipIndex = curSingleItem.GetEquipPlace()
-            
-        if equipIndex == 0:
-            GameWorld.ErrLog("任务赠送装备位置错误 equipIndex=-1")
-            return
-        equipPackIndex = ItemCommon.GetEquipPackIndex(curSingleItem)
-        if ItemCommon.CheckHasEquip(curPlayer, IPY_GameWorld.rptEquip, equipPackIndex):
-            #物品已存在直接给背包
-            if not itemControl.PutInItem(IPY_GameWorld.rptItem, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]):
-                GameWorld.Log('###任务 = %s给予物品异常, %s, %s' % (missionID, itemID, itemCount), curPlayer.GetPlayerID())
-                curSingleItem.Clear()
-                return
-        else:
-            ChEquip.DoPlayerEquipItem(curPlayer, curSingleItem,equipPackIndex, 0)
-    
-    #ObtainRes01    <n>获得</n><Info Type="Item" Name="Name" ID="{%S1%}"/><n>×</n><n>{%S2%}!</n>
-    elif not itemControl.PutInItem(packIndex, curSingleItem, event=["AddEventItem", False, {'MissionID':missionID}]):
-        GameWorld.Log('###任务 = %s给予物品异常, %s, %s' % (missionID, itemID, itemCount), curPlayer.GetPlayerID())
-        curSingleItem.Clear()
-        return
-        
-    #通知得到物品动画显示
-    #curPlayer.Sync_GetItemView(itemID, itemCount)
-    #PlayerControl.NotifyCode(curPlayer, "ObtainRes01", [itemID, itemCount])
-    
-
-## 创建任务物品
-#  @param itemID: 物品id
-#  @param starLV: 星数
-#  @param wuxing: 五行
-#  @param isSuite: 是否套装化
-#  @param bind: 是否绑定
-#  @param itemCount: 物品数量
-#  @param baseAttrRate: 任务创建的物品默认的基础属性随机值为10000
-#  @return None
-def CreatMissionItem(curPlayer, itemID, starLV=0, addAttrLV=0, isSuite=False, bind=False,
-                     isLucky=0, skillBoostEff=[], itemCount=1, holeCount=0,
-                     isGreat=0, baseAttrRate=ShareDefine.Def_MaxRateValue, greatAttrList=[], isAuctionItem=False):
-    
-    curSingleItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer)
-    
-    if not curSingleItem:
-        GameWorld.Log('###创造任务物品失败, itemID = %s' % (itemID))
-        return
-    
-    #tmpEquipData = ItemControler.SingleEquipTmpData()
-    #tmpEquipData.starLV = starLV
-    #tmpEquipData.holeCnt = holeCount
-    #tmpEquipData.isSuite = isSuite
-    #tmpEquipData.isBind = bind
-    
-    #ChItem.EquipAddAdditionEx(curSingleItem, tmpEquipData)
-    
-    return curSingleItem
-
-#---------------------------------------------------------------------
-##执行挖宝给物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 节点信息
-# @return 返回值无意义
-# @remarks  <Dig_Get_Item list="物品列表" />    
-def DoType_Dig_Get_Item(curPlayer, curMission, curActionNode):
-    #<dig_get_item list = ""/>
-    listStr = curActionNode.GetAttribute("list")
-    itemID, itemCount = DealWithInPut_InDig(listStr)
-    if itemID == 0:
-        return
-
-    AddEventItem(curPlayer, curMission, itemID, itemCount)
-    return
-
-#---------------------------------------------------------------------
-##执行设置任务描述
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 节点信息
-# @return 返回值无意义
-# @remarks  <Set_Description_Index index="设置的索引" id="任务ID" />  
-def DoType_Set_Description_Index(curPlayer, curMission, curActionNode):
-    #<set_description_index index = "" id = "" notify = "0"/>
-    index = int(curActionNode.GetAttribute("index"))
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    #notify = curActionNode.GetAttribute("notify")
-    #是否提示客户端(0:不提示   1和放空都为提示)
-#    if notify == "" :
-#        notify = 1
-#    else:
-#        notify = int(notify)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-        if curMission == None:
-            return
-
-    curMission.SetDescriptionIndex(index)
-    #通知玩家描述改变
-#    curPlayer.Sync_TaskDetailChange(curMission.GetMissionID())
-    #无需继续提示客户端
-#    if notify == 0:
-#        return
-    #通知玩家信号灯改变
-#    ShowMissionLight(curPlayer, curMission)
-    
-    #通知玩家任务信息
-#    ShowMissionInfo(curPlayer, curMission, -1)
-    
-    #新版本通知客户端方式
-    RefreshMission(curPlayer, curMission)
-    return
-
-#---------------------------------------------------------------------
-##任务删除判断
-# @param questID 任务ID
-# @return 返回值, 是否通过
-# @remarks 是否能删除任务
-def CanDeleteQuest(questID):
-    key = ("on_delete", "%s.xml" % str(questID))
-    if AllQuestsEvents.has_key(key):
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##是否有奖励节点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值, 节点信息
-# @remarks 是否有奖励节点
-def __GetRewardCode(curPlayer, curMission):
-    curNode = QuestCommon.GetRewardNode(curPlayer, curMission)
-    if curNode == None or curNode.IsEmpty():
-        return ""
-    msgNode = curNode.FindChildNode("msg")
-    if msgNode == None or msgNode.IsEmpty():
-        return ""
-    
-    return msgNode.GetAttribute("code")
-
-#---------------------------------------------------------------------
-##通知客户端任务描述信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值无意义
-# @remarks 通知客户端任务描述信息
-def RefreshMission(curPlayer, curMission):
-    global MissionDescription
-    MissionDescription.Clear()
-    
-    questID = curMission.GetMissionID()
-    descriptIndex = curMission.GetDescriptionIndex()
-    state = curMission.GetState()
-
-    #设置客户端任务状态
-    missionState = curMission.GetMissionState()
-    #完成
-    if state == ChConfig.Def_Mission_State_Over:
-        missionState = IPY_GameWorld.msComplete
-    #不存在
-    elif state == ChConfig.Def_Mission_State_UnMission:
-        missionState = IPY_GameWorld.msNoExist
-    #可接
-    elif state == ChConfig.Def_Mission_State_NoAccept:
-        missionState = IPY_GameWorld.msNoMission
-    #可交
-    elif state == ChConfig.Def_Mission_State_CanComplete:
-        missionState = IPY_GameWorld.msCanComplete
-    
-    
-    #当前客户端的任务状态为未接,XML状态不是未接,则设置任务进行中
-    if missionState == IPY_GameWorld.msNoMission and state != 0:
-        missionState = IPY_GameWorld.msProcessing
-    
-    MissionDescription.SetMissionID(questID)
-    MissionDescription.SetMissionState(missionState)
-    MissionDescription.SetDiscriptionIndex(descriptIndex)
-    
-    #新接口
-    curPlayer.Sync_PlayerMissionDesc(MissionDescription)
-    return
-
-#===============================================================================
-# def RefreshMission(curPlayer, curMission):
-#    global MissionDescription
-#    MissionDescription.Clear()
-#    questID = curMission.GetMissionID()
-#    
-#    descriptIndex = curMission.GetDescriptionIndex()
-#    state = curMission.GetState()
-#    
-#    questData = FindQuestFunc(questID)
-#    if questData == None:
-#        GameWorld.Log("RefreshMission, 找不到任务%s 删除任务数据"%questID , curPlayer.GetPlayerID())
-#        curPlayer.DelMission(questID)        
-#        return
-#    
-#    if questData.Type == QuestCommon.Def_GM_Active_Mission_Type:
-#        #这个任务是节日任务, 需要GM开启的
-#        if not GameWorld.GetGameWorld().IsEventActive(questID):
-#            return
-#    
-#    if questData.Type == 8 and state == 0:
-#        #任务类型:8 为勇者任务(卷轴任务), 不通知给客户端
-#        return
-#    if questData.Invisible == 1 and state == 0:
-#        #任务查询栏不通知给客户端显示
-#        return
-# 
-# #    GameWorld.Log("descriptIndex = %d"%descriptIndex)
-# #    if state == 0:
-# #        #状态等于0, 只显示灯
-# ##        GameWorld.Log("状态等于0, 只显示灯")
-# #        ShowMissionLight(curPlayer, curMission)
-# #        
-# #        #在任务查询中添加这个任务
-# #        NotifyNewQuestInfo(curPlayer, curMission)
-# #        return
-#    
-#    questDescriptList = questData.QuestDescriptionList
-#    
-#    if descriptIndex < 0 or descriptIndex >= len(questDescriptList):
-#        GameWorld.Log("descriptIndex Error = %d missionID = %d"%(descriptIndex, curMission.GetMissionID()) , curPlayer.GetPlayerID())
-#        return
-#    
-#    
-#    #设置客户端任务状态
-#    missionState = curMission.GetMissionState()
-#    if state == -1:
-#        missionState = IPY_GameWorld.msComplete
-#    elif state == -4:
-#        missionState = IPY_GameWorld.msNoExist
-#    elif state == 0:
-#        missionState = IPY_GameWorld.msNoMission
-#        
-#    if missionState == IPY_GameWorld.msNoMission and state != 0:
-#        missionState = IPY_GameWorld.msProcessing
-#        
-#        
-# #    GameWorld.Log("missionState = %d"%missionState)
-#    
-#    questID = curMission.GetMissionID()
-#    MissionDescription.SetMissionID(questID)
-#    MissionDescription.SetMissionType(questData.Type)
-#    MissionDescription.SetLV(questData.LV)
-#    MissionDescription.SetNPCID(questData.NPCID)
-#    MissionDescription.SetName(questData.NameCode)
-#    MissionDescription.SetColorLV(questData.Color_lv)
-#    day_CountMsg = QuestRunnerValue.ReplaceNPCTalkText(curPlayer, curMission, questData.Day_Count)
-#    MissionDescription.SetCompleteState(day_CountMsg)
-#    #有on__delete文件,查询栏为可删除
-#    if CanDeleteQuest(questID) and questData.CanDel == 1:
-#        #设置任务为可删除状态
-#        MissionDescription.SetCanDelete(1)
-#    
-#    #生成任务描述
-#    rewardNode = None
-#    if state == -1 or state ==0:
-#        #任务已经完成/没有接, 没有奖励节点
-#        MissionDescription.SetMissionState(missionState)
-#        
-#        if QuestDescriptions.has_key(questID):
-#            curQuestDescriptions = QuestDescriptions[questID]
-#            descMsg = curQuestDescriptions.Code
-#            if curQuestDescriptions.ShowReward:
-#                #2009.4.28客户端解析统一空格************************************
-#                descMsg = '%s %s'%(descMsg, __GetRewardCode(curPlayer, curMission))
-#            MissionDescription.SetDesc(descMsg)
-#       
-#        #GameWorld.Log('当前任务 %s 描述: %s'%(questID, QuestDescriptions[questID]))   
-#    else:
-#        descriptIndex = curMission.GetDescriptionIndex()
-#        #得到任务奖励, 拼接
-#        rewardNode = QuestCommon.GetRewardNode(curPlayer, curMission)
-#      
-#        infoQuest = questDescriptList[descriptIndex]
-#        if infoQuest.IsRewardNode:  
-#            missionState = IPY_GameWorld.msCanComplete
-#            
-#        MissionDescription.SetMissionState(missionState)
-#            
-#        #任务描述替换
-#        detail = infoQuest.Msg 
-#        
-#        if rewardNode != None and (not rewardNode.IsEmpty()):
-#            #任务描述与任务奖励替换
-#            detail = "%s %s"%(detail, rewardNode.FindChildNode("msg").GetAttribute("code"))
-#            
-#        #设置任务描述
-#        MissionDescription.SetDesc(detail)
-#        
-#        #生成任务追踪
-#        questInfoList = infoQuest.Info
-#        for content in questInfoList:
-#            MissionDescription.AddMissionInfo(content)
-#        
-#        #生成任务灯
-#        for light in infoQuest.Lights:
-#            curNPCID = light.NPCID 
-#            if curNPCID == 0:
-#                #特殊清空, 随机访问NPC
-#                curNPCID = curMission.GetProperty(QuestCommon.Def_Visit_Npc_ID)
-#            MissionDescription.AddPlayerMissionLight(curNPCID, light.Type)
-#        
-#        #GameWorld.Log('当前任务 %s 描述: %s'%(questID, detail))    
-#    
-#    curPlayer.Sync_PlayerMission(MissionDescription)
-#    return
-#===============================================================================
-
-##显示玩家的任务信号灯
-#def ShowMissionLight(curPlayer, curMission):
-#    questID = curMission.GetMissionID()
-#    if curMission.GetState() == 0:
-#        #任务状态为未接, 特殊处理
-#        curPlayer.Sync_MissionLight(questID, FindQuestFunc(questID).NPCID, 0)
-#        return
-#    descriptIndex = curMission.GetDescriptionIndex()
-#    
-#    questDescriptList = FindQuestFunc(questID).QuestDescriptionList
-#    if descriptIndex < 0 or descriptIndex >= len(questDescriptList):
-#        GameWorld.Log("descriptIndex Error = %d missionID = %d"%(descriptIndex, questID))
-#        return
-#    #通知客户端灭掉所有的灯
-#    curPlayer.Sync_ClearMapMissionLight(questID)
-#    infoQuest = questDescriptList[descriptIndex]
-#    for light in infoQuest.Lights:
-#        curPlayer.Sync_MissionLight(questID, light.NPCID, light.Type)
-#        GameWorld.Log("任务ID %d  相关NPC : %d , 类型: %d"%
-#                                          (questID, light.NPCID, light.Type))
-
-#def GetMissionReplaceMsg(content, curMission):
-#    parseList = DealWithInPut(content)
-#    for i in range(0,len(parseList)):
-#        parseList[i] = str(curMission.GetProperty(parseList[i]))
-#    content = DealWithReverse(content, parseList)
-#    return content
-    
-##显示任务追踪 <当前玩家, 当前任务, 第几个任务追踪(-1 表示显示所有任务追踪)>
-#def ShowMissionInfo(curPlayer, curMission, index):
-#    descriptIndex = curMission.GetDescriptionIndex()
-#    
-#    questDescriptList = FindQuestFunc(curMission.GetMissionID()).QuestDescriptionList
-#    
-#    if descriptIndex < 0 or descriptIndex >= len(questDescriptList):
-#        GameWorld.Log("descriptIndex Error = %d missionID = %d"%(descriptIndex, curMission.GetMissionID()))
-#        return
-#    
-#    infoQuest = questDescriptList[descriptIndex]
-#    questInfoList = infoQuest.Info
-#    
-#    if index != -1:
-#        #只显示一个信息
-#        #content = GetMissionReplaceMsg(questInfoList[index], curMission)
-#        content = questInfoList[index]
-#        curPlayer.Sync_MissionMsg(curMission.GetMissionID(), content)  
-#        return
-#
-#    #显示所有信息
-#    for content in questInfoList:
-#        #showContent = GetMissionReplaceMsg(content, curMission)
-#        showContent = content
-#        curPlayer.Sync_MissionMsg(curMission.GetMissionID(), showContent)  
-
-#---------------------------------------------------------------------
-##执行任务信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Show_Mission_Info index="索引" /> 
-def DoType_Show_Mission_Info(curPlayer, curMission, curActionNode):
-#    #格式:<show_mission_info index = "0"/> (index 可选)
-#    index = -1
-#    indexStr = curActionNode.GetAttribute("index")
-#    if indexStr != "":
-#        index = int(indexStr)
-#        
-#    ShowMissionInfo(curPlayer, curMission, index)
-    return
-  
-#---------------------------------------------------------------------
-##执行任务给物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Event_Get_Item list="物品清单" />     
-def DoType_Event_Get_Item(curPlayer, curMission, curActionNode):
-    #<dig_get_item list = ""/>
-    listStr = curActionNode.GetAttribute("list")
-    itemID, itemCount = DealWithInPut_InDig(listStr) 
-    if itemID == 0:
-        return
-    
-    AddEventItem(curPlayer, curMission, itemID, itemCount)
-    return
-
-#---------------------------------------------------------------------
-##执行设置普通挖宝坐标
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Treasure_Rand_Pos_Map type="类型, week可选,表示是按照星期来还是默认" mapid="地图ID" posx="坐标X" posy="坐标Y" />
-def DoType_Treasure_Rand_Pos_Map(curPlayer, curMission, curActionNode):
-    #格式: <treasure_rand_pos_map type = "week" mapid="mapid" posx="posx" posy="posy"/> (type = "week" 可选, 表示是按照星期来还是默认)
-    
-#    #得到玩家的对象NPC
-#    curNPC = GetPlayerTalkNPC(curPlayer)
-#    if curNPC == None:
-#        GameWorld.Log("没有这个NPC")
-#        return
-
-    missionID = curMission.GetMissionID()
-    if FindQuestFunc(missionID) == None:
-        return None
-        
-    treasureData = FindQuestFunc(missionID).Treasure
-    
-    if treasureData == None:
-        GameWorld.Log('挖宝数据为空 missionID = %s' % (missionID), curPlayer.GetPlayerID())
-        return
-    
-    type = curActionNode.GetAttribute("type")
-    
-    posList = None
-    if type == "":
-        posList = treasureData.Normal
-    elif type == "week":
-        if treasureData.Week == None:
-            GameWorld.Log('挖宝数据Week为空 missionID = %s' % (missionID), curPlayer.GetPlayerID())
-            return
-        
-        if not treasureData.Week.has_key(curPlayer.GetLV()):
-            GameWorld.Log('任务ID = %s 找不到 挖宝等级 = %s' % (missionID, curPlayer.GetLV()), curPlayer.GetPlayerID())
-            return
-        curDateTime = GameWorld.GetCurrentTime()
-        curWeek = datetime.datetime.isocalendar(curDateTime)[2]
-        posList = treasureData.Week[curPlayer.GetLV()][curWeek]
-    
-    if posList == None:
-        GameWorld.Log("DoType_Treasure_Rand_Pos_Map, 类型错误! type = %s" % (type) , curPlayer.GetPlayerID())
-        return
-    
-    getLen = len(posList)
-    if getLen == 0:
-        GameWorld.Log("DoType_Treasure_Rand_Pos_Map 没有挖宝的任务坐标 missid = %d" % (missionID) , curPlayer.GetPlayerID())
-        return
-    getIndex = random.randint(0, getLen - 1)
-    
-    mapid = curActionNode.GetAttribute("mapid")
-    posx = curActionNode.GetAttribute("posx")
-    posy = curActionNode.GetAttribute("posy")
-    curMission.SetProperty(mapid, posList[getIndex].MapID)
-    curMission.SetProperty(posx, posList[getIndex].PosX)
-    curMission.SetProperty(posy, posList[getIndex].PosY)
-    return
-
-#---------------------------------------------------------------------
-##挖宝掉落计算
-# @param str 挖宝字符串
-# @return 返回值,(物品ID,物品数量)
-# @remarks 挖宝掉落计算
-def DealWithInPut_InDig(str):
-    var = []
-    curRateList = []
-    curRateLists = []
-    r = re.compile(r"[\[][^\[]*[\]]")
-    rs = re.compile(r"[^\[][^\[]*[^\]]")
-    strList = r.findall(str)
-    for i in range(len(strList)):
-        curRate = rs.findall(strList[i])
-        var.extend(curRate)
-    for j in range(len(var)):
-        curRateList = var[j].split(",")
-        curRateLists.append(curRateList)
-
-    randomRate = random.randint(0, ChConfig.Def_MaxRateValue)
-    for i in range(len(curRateLists)):
-        if randomRate < int(curRateLists[i][1]):
-            itemID = int(curRateLists[i][0])
-            itemCount = int(curRateLists[i][2])
-            return itemID, itemCount
-
-    return 0, 0
-
-
-#---------------------------------------------------------------------
-#DayEvent的key可能是等级或者(最小,最大等级)
-#找到每日任务信息
-def GetDayEventInfo(curPlayer, missionData, dayEventType):
-    dayEvent = missionData.DayEvent
-    if dayEventType not in dayEvent:
-        return
-    lv = curPlayer.GetLV()
-    if lv in dayEvent[dayEventType]:
-        return dayEvent[dayEventType][lv]
-    
-    for lvInfo in dayEvent[dayEventType]:
-        if isinstance(lvInfo, int):
-            continue
-        if lv >= lvInfo[0] and lv <= lvInfo[1]:
-            return dayEvent[dayEventType][lvInfo]
-    
-    return
-
-##按物品等级随机给物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Event_Get_Rand_Item_By_Lv type="类型"/> 
-def DoType_Event_Get_Rand_Item_By_Lv(curPlayer, curMission, curActionNode):
-    #格式: <event_get_rand_item_by_lv/>
-    missionID = curMission.GetMissionID()
-    missionData = FindQuestFunc(missionID)
-    if missionData == None:
-        return
-    
-    #按不同公式计算物品倍率
-    type = GameWorld.ToIntDef(curActionNode.GetAttribute("type"), 0)
-    familyLV = curPlayer.GetFamilyLV()
-    if type == 0:
-        rate = 1
-    elif type == 1:
-        rate = (1 + (familyLV + 1) * 0.25)
-        
-    getItemList = GetDayEventInfo(curPlayer, missionData, QuestCommon.Day_GetItem_By_ID)
-    #每日物品随机等级异常******************************************
-    if not getItemList:
-        GameWorld.ErrLog("每日物品随机等级异常")
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-    
-    getLen = len(getItemList)
-    if getLen == 0:
-        GameWorld.Log("%d等级没有随机得到物品的任务" % curPlayer.GetLV() , curPlayer.GetPlayerID())
-        return
-    getIndex = random.randint(0, getLen - 1)
-    
-    name = QuestCommon.Def_Item_ID
-    #name = curActionNode.GetAttribute("name")
-    #itemcount = curActionNode.GetAttribute("count")
-    itemcount = QuestCommon.Def_Item_Count
-    #GameWorld.Log("%s物品:    %d"%(itemcount, getItemList[getIndex].Count))
-    curMission.SetProperty(name, getItemList[getIndex].ID)
-    max_item_count = int((getItemList[getIndex].Count) * rate)
-    curMission.SetProperty(itemcount, max_item_count)
-    return
-
-#---------------------------------------------------------------------
-##按NPC等级随机杀怪
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Event_Kill_Rand_Npc_By_Lv isxiaoenlu="是否笑恩录任务"/> 
-def DoType_Event_Kill_Rand_Npc_By_Lv(curPlayer, curMission, curActionNode):
-    #格式: <event_kill_rand_npc_by_lv isxiaoenlu="是否笑恩录任务"/>
-    missionID = curMission.GetMissionID()
-    missionData = FindQuestFunc(missionID)
-    if missionData == None:
-        return
-    
-    killNPCList = GetDayEventInfo(curPlayer, missionData, QuestCommon.Day_KillNPC_By_LV_List)
-    if not killNPCList:
-        GameWorld.ErrLog("每日物品随机等级异常")
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-    
-    getLen = len(killNPCList)
-    if getLen == 0:
-        GameWorld.Log("%d等级没有随机得到物品的任务" % (curPlayer.GetLV()) , curPlayer.GetPlayerID())
-        return
-    getIndex = random.randint(0, getLen - 1)
-    name = QuestCommon.Def_Kill_Npc_LV
-    #name = curActionNode.GetAttribute("name")
-    kill_lv_count = QuestCommon.Def_Kill_Npc_LV_Count
-    #kill_lv_count = curActionNode.GetAttribute("count")
-    curMission.SetProperty(name, killNPCList[getIndex].ID)
-    
-    curMission.SetProperty(kill_lv_count, killNPCList[getIndex].Count)
-    return
-
-#---------------------------------------------------------------------
-##按NPC等级随机访问
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Event_Visit_Rand_Npc_By_Lv /> 
-def DoType_Event_Visit_Rand_Npc_By_Lv(curPlayer, curMission, curActionNode):
-    #格式: 
-    #<Event_Visit_Rand_Npc_By_Lv/>
-    #"kill_npc_by_id"
-    #(!cur_kill_count!)/(!kill_id_count!)
-    missionID = curMission.GetMissionID()
-    
-    missionData = FindQuestFunc(missionID)
-    if missionData == None:
-        return
-    
-    visitNPCList = GetDayEventInfo(curPlayer, missionData, QuestCommon.Day_VisitNPCList)
-    if not visitNPCList:
-        GameWorld.Log("##按NPC等级随机访问等级异常")
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-    npcData = __GetRandNPCID(curPlayer, visitNPCList, ChConfig.Def_Player_Dict_TaskLastVisitNPCID)
-    if not npcData:
-        GameWorld.Log("##按NPC等级随机访问异常 ")
-        return
-    
-    name = QuestCommon.Def_Visit_Npc_ID
-    
-    curMission.SetProperty(name, npcData.ID)
-    return
-#---------------------------------------------------------------------
-
-##随机击杀指定ID的NPC
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Event_Collect_Rand_Npc_By_Id type="类型" isxiaoenlu="是否笑恩录任务"/> 
-def DoType_Event_Collect_Rand_Npc_By_Id(curPlayer, curMission, curActionNode):
-    #按不同公式计算杀怪倍率
-    type = GameWorld.ToIntDef(curActionNode.GetAttribute("type"), 0)
-    familyLV = curPlayer.GetFamilyLV()
-    if type == 0:
-        rate = 1
-    elif type == 1:
-        rate = (1 + (familyLV + 1) * 0.25)
-
-    missionID = curMission.GetMissionID()
-    missionData = FindQuestFunc(missionID)
-    if missionData == None:
-        return
-    
-    collectNPCList = GetDayEventInfo(curPlayer, missionData, QuestCommon.Day_CollectNPCList)
-    if not collectNPCList:
-        GameWorld.Log("##随机击杀指定ID的NPC异常")
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-
-    ranNPCDict = {}
-    for collectNPC in collectNPCList:
-        mapid = collectNPC.MapID
-        if mapid and not PlayerControl.CanEnterMap(curPlayer, mapid, False):
-            continue
-        if mapid in ranNPCDict:
-            ranNPCDict[mapid].append(collectNPC)
-        else:
-            ranNPCDict[mapid] = [collectNPC]
-        
-    if not ranNPCDict:
-        GameWorld.Log("##随机击杀指定ID的NPC异常 ranNPCDict=%s"%ranNPCDict)
-        return
-    ranNPCList = ranNPCDict[max(ranNPCDict.keys())]
-    getLen = len(ranNPCList)
-    if getLen == 0:
-        GameWorld.Log("%d等级没有随机采集的任务" % curPlayer.GetLV() , curPlayer.GetPlayerID())
-        return
-    getIndex = random.randint(0, getLen - 1)
-    
-    name = QuestCommon.Def_Collect_Npc_ID
-    collectCountName = QuestCommon.Def_Collect_Npc_ID_Count
-
-    curMission.SetProperty(name, ranNPCList[getIndex].ID)
-    
-    max_kill_count = int((ranNPCList[getIndex].Count) * rate)
-    curMission.SetProperty(collectCountName, max_kill_count)
-    
-    return
-
-#---------------------------------------------------------------------
-##随机击杀指定ID的NPC
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Event_Kill_Rand_Npc_By_Id type="类型" isxiaoenlu="是否笑恩录任务"/> 
-def DoType_Event_Kill_Rand_Npc_By_Id(curPlayer, curMission, curActionNode):
-    #格式: <event_kill_rand_npc_by_id/>
-    #"kill_npc_by_id" #(!cur_kill_count!)/(!kill_id_count!)
-    #按不同公式计算杀怪倍率
-#    type = GameWorld.ToIntDef(curActionNode.GetAttribute("type"), 0)
-#    familyLV = curPlayer.GetFamilyLV()
-#    if type == 0:
-#        rate = 1
-#    elif type == 1:
-#        rate = (1 + (familyLV + 1) * 0.25)
-
-    missionID = curMission.GetMissionID()
-    missionData = FindQuestFunc(missionID)
-    if missionData == None:
-        return
-    
-    killNPCList = GetDayEventInfo(curPlayer, missionData, QuestCommon.Day_KillNPC_By_ID_List)
-    if not killNPCList:
-        GameWorld.Log("##随机击杀指定ID的NPC异常")
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-    npcData = __GetRandNPCID(curPlayer, killNPCList, ChConfig.Def_Player_Dict_TaskLastKillNPCID)
-    if not npcData:
-        return
-    
-    heroLV = curPlayer.GetLV()
-    name = QuestCommon.Def_Kill_Npc_ID
-    kill_id_count = QuestCommon.Def_Kill_Npc_ID_Count
-    curMission.SetProperty(name, npcData.ID)
-    killCntDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskKillNPCCnt')
-    max_kill_count = GameWorld.GetDictValueByRangeKey(killCntDict, heroLV, 50)
-    curMission.SetProperty(kill_id_count, max_kill_count)
-    return
-
-def __GetRandNPCID(curPlayer, killNPCList, recordKey):
-    if not killNPCList:
-        return
-    
-    diffRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
-    realmMapIDList = IpyGameDataPY.GetFuncEvalCfg("RealmDifficulty", 1)
-    difficultyRealmList = IpyGameDataPY.GetFuncEvalCfg("RealmDifficulty", 2)
-    # 已选择境界难度 且 随机击杀怪物 时才需要 随机境界难度NPC
-    randRealmDiffNPC = (diffRealmLV in difficultyRealmList and recordKey == ChConfig.Def_Player_Dict_TaskLastKillNPCID)
-    
-    heroLV = curPlayer.GetLV()
-    ranNPCList = []
-    returnNPC = None
-    secondNPC = None
-    for killNPC in killNPCList:
-        mapid = killNPC.MapID
-        #判断npc所在地图是否可进
-        if mapid and not PlayerControl.CanEnterMap(curPlayer, mapid, False):
-            continue
-        #npc等级不高于玩家等级,不低于玩家30级
-        npcData = killNPC.NPCData
-        if not npcData:
-            continue
-        if randRealmDiffNPC:
-            if mapid not in realmMapIDList:
-                continue
-            npcID = killNPC.ID
-            realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, diffRealmLV)
-            if not realmNPCIpyData:
-                continue
-            NPCLV = realmNPCIpyData.GetLV()
-        else:
-            NPCLV = npcData.GetLV()
-            if recordKey != ChConfig.Def_Player_Dict_TaskLastVisitNPCID and NPCLV < heroLV-30:
-                secondNPC = killNPC
-                continue
-        if NPCLV > heroLV:
-            continue
-        #不和上次的NPCID相同
-        if killNPC.ID == curPlayer.NomalDictGetProperty(recordKey):
-            continue
-        ranNPCList.append(killNPC)
-    
-    if ranNPCList:
-        returnNPC = random.choice(ranNPCList)
-    else:
-        GameWorld.DebugLog("##随机击杀、访问指定ID的NPC异常 secondNPC=%s"%secondNPC)
-        returnNPC = secondNPC or killNPCList[0]
-    if not returnNPC:
-        return
-    PlayerControl.NomalDictSetProperty(curPlayer, recordKey, returnNPC.ID)
-    return returnNPC
-        
-#---------------------------------------------------------------------
-##给玩家经验
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Exp value="值" /> 
-def DoType_Add_Exp(curPlayer, curMission, curActionNode):
-    #<add_exp value="2" exp_rate = "1"/>
-    
-#===============================================================================
-#    exp_rate = curActionNode.GetAttribute("exp_rate")
-#    if exp_rate == "" or exp_rate == "0":
-#        #不享受经验加成
-#        exp_rate = False
-#    else:
-#        #享受经验加成
-#        exp_rate = True 
-#===============================================================================
-    #加经验
-    content = curActionNode.GetAttribute("value")
-    content = int(content)
-    multiple = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TaskExpRewardMultiple)
-    if multiple:
-        content = int(content * multiple / 100.0)
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.AddExp(content)
-    #PlayerControl.NotifyCode(curPlayer, 'GeRen_lhs_0', [content])
-    #curPlayer.Sync_ExpGetView(content)
-    curMissionID = curMission.GetMissionID()
-    FBLogic.DoFB_OnFinishRunAroundTask(curPlayer, curMissionID, content)
-    GameWorld.Log("MissionID = %s , exp = %s " % (curMission.GetMissionID() , content) , curPlayer.GetID())
-    return
-
-#---------------------------------------------------------------------
-##删除玩家金钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_Money form_value="是否取对话的值" value="form_value为空取" moneytype="1元宝2礼券3银两" maxItem="需要物品数量" itemID="20410"/> 
-def DoType_Del_Money(curPlayer, curMission, curActionNode):
-    #扣钱
-    #格式<del_money form_value = ""value="" moneytype=""/>
-    value = None
-    form_value = curActionNode.GetAttribute("form_value")
-    if form_value != "":
-        value = int(QuestRunnerValue.GetNPCTalkReplaceValue(curPlayer, curMission, form_value))
-    else:
-        value = int(curActionNode.GetAttribute("value"))    
-    
-    maxItemCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("maxItem"), 0)
-    itemID = GameWorld.ToIntDef(curActionNode.GetAttribute("itemID"), 0)
-    if maxItemCnt and itemID: #未收集的道具个数乘以单价
-        haveCnt = ItemControler.FindPlayerItemCountByItemID(curPlayer, IPY_GameWorld.rptItem, itemID)
-        value = max(0, maxItemCnt-haveCnt)*value
-    
-    moneytype = int(curActionNode.GetAttribute("moneytype"))
-    
-#    if moneytype not in ChConfig.Def_MoneyType_All:
-#        GameWorld.Log("##异常moneytype = %s填错拉" % (moneytype))
-#        return
-    
-    curMissionID = 0
-    if curMission == None:
-        curMissionID = 0
-    else:
-        curMissionID = curMission.GetMissionID()
-    costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, moneytype, value)
-    if not costMoneyList:
-        GameWorld.Log("##付费异常,玩家金钱不足,任务missionID = %s" % (curMissionID) , curPlayer.GetPlayerID())
-        EventShell.DoExitEvent(curPlayer)
-        return
-    #付钱
-    for moneyType, moneyNum in costMoneyList:
-        if not PlayerControl.PayMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_Cost_MissionDel, {"MissionID":curMissionID}):
-            GameWorld.Log("##付费异常,玩家金钱不足,任务missionID = %s" % (curMissionID) , curPlayer.GetPlayerID())
-            EventShell.DoExitEvent(curPlayer)
-            return
-    
-    GameWorld.Login_Interface_GoldRec(curPlayer , 0 , 0 , 'MissionID_%s_Cost' % (curMissionID), moneytype, value)
-    return
-#---------------------------------------------------------------------
-##添加物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" isAuctionItem="是否拍品"
-#        packtype="1,2背包索引" equipIndex="装备位置" suite="是否套装化" addAttrLV="追加等级",isLucky="是否有幸运"
-#        skillBoostEff="[技能效果增强索引, 值]", holeCount="孔数" isGreat="1" baseAttrRate="可强化的装备基础属性随机加强比例默认10000"
-#        greatAttr="[卓越属性列表]" />  
-def DoType_Add_Item(curPlayer, curMission, curActionNode):
-    curItemCount = GameWorld.ToIntDef(curActionNode.GetAttribute("count"), 1)
-    
-    curItemID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)        
-    if curItemID == 0:
-        curItemID = curMission.GetProperty(QuestCommon.Def_Item_ID)
-    
-    packInfo = curActionNode.GetAttribute("packtype")
-
-    packTypeList = [IPY_GameWorld.rptItem]
-    if packInfo != '':
-        packTypeList = eval('[' + packInfo + ']')
-    
-    #物品星数
-    itemStarLV = GameWorld.ToIntDef(curActionNode.GetAttribute("starLV"), 0)
-    
-    #物品是否绑定
-    bind = True if GameWorld.ToIntDef(curActionNode.GetAttribute("bind")) else False
-
-    #物品是否套装化
-    isSuite = True if curActionNode.GetAttribute("suite") else False
-    
-    #是否拍品
-    isAuctionItem = GameWorld.ToIntDef(curActionNode.GetAttribute("isAuctionItem"), 0)
-    
-    #追加
-    addAttrLV = GameWorld.ToIntDef(curActionNode.GetAttribute("addAttrLV"), 0)
-    
-    #幸运
-    isLucky = GameWorld.ToIntDef(curActionNode.GetAttribute("isLucky"), 0)
-    
-    #装备技能
-    skillBoostEff = curActionNode.GetAttribute("skillBoostEff")
-    skillBoostEff = [] if skillBoostEff == "" else eval(skillBoostEff) 
-    #孔数
-    holeCount = GameWorld.ToIntDef(curActionNode.GetAttribute("holeCount"), 0)
-    
-    #装备位置
-    equipIndex = GameWorld.ToIntDef(curActionNode.GetAttribute("equipIndex"), -1)
-    
-    #卓越
-    isGreat = GameWorld.ToIntDef(curActionNode.GetAttribute("isGreat"), 0)
-    
-    #卓越属性列表
-    greatAttr = curActionNode.GetAttribute("greatAttr")
-    greatAttrList = [] if greatAttr == "" else eval(greatAttr)
-    
-    #可强化的装备基础属性随机加强比例默认10000
-    baseAttrRate = GameWorld.ToIntDef(curActionNode.GetAttribute("baseAttrRate"), ShareDefine.Def_MaxRateValue)
-    AddEventItem(curPlayer, curMission, curItemID, curItemCount, None, itemStarLV,
-                 bind, False, packTypeList, isSuite, addAttrLV, isLucky,
-                 skillBoostEff, holeCount, equipIndex, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem)
-
-
-#---------------------------------------------------------------------
-##执行副本逻辑
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Do_Fb_Onkill /> 
-def DoType_Do_Fb_Onkill(curPlayer, curMission, curActionNode):
-    tick = GameWorld.GetGameWorld().GetTick()
-    FBLogic.DoFBOnKill_NPC(curPlayer , tick)
-    return
-
-
-##执行副本逻辑(完成某任务时通知到副本)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-def DoType_Do_Fb_Achieve_Task(curPlayer, curMission, curActionNode):
-    
-    achieve = curActionNode.GetAttribute("achieve")
-    
-    if not achieve.isdigit():
-        GameWorld.Log('###任务传过来的值异常,无法转换成数字 = %s' % (achieve))
-        return
-    
-    FBLogic.DoFB_OnAchieveTask(curPlayer, int(achieve))
-    return
-
-
-#---------------------------------------------------------------------
-##在地上创建物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Drop_Item id="物品ID" count="物品数量" starLV="星级" bind="是否绑定" isAuctionItem="是否拍品"
-#         suite="是否套装化" addAttrLV="追加等级",isLucky="是否有幸运" isFakeDrop="是否假掉落"
-#        skillBoostEff="[技能效果增强索引, 值]", holeCount="孔数", isGreat="1", effIndex="1" , dropDist="掉落范围默认3"
-#        aroundPlayer="1" baseAttrRate="可强化的装备基础属性随机加强比例默认10000" greatAttr="[卓越属性列表]" />  
-def DoType_Drop_Item(curPlayer, curMission, curActionNode):
-    curNPC = CurrentKillNPC
-    
-    killPlayerID = curPlayer.GetPlayerID()
-    
-    count = GameWorld.ToIntDef((curActionNode.GetAttribute("count")), 1)
-    
-    curItemID = GameWorld.ToIntDef((curActionNode.GetAttribute("id")), 0)
-    if curItemID <= 0:
-        return
-    
-    starLV = GameWorld.ToIntDef((curActionNode.GetAttribute("starLV")), 0)
-    
-    isSuite = GameWorld.ToIntDef((curActionNode.GetAttribute("suite")), 0)
-    
-    bind = GameWorld.ToIntDef((curActionNode.GetAttribute("bind")), 1)
-    
-    isAuctionItem = GameWorld.ToIntDef((curActionNode.GetAttribute("isAuctionItem")), 0)
-    
-    #追加
-    addAttrLV = GameWorld.ToIntDef(curActionNode.GetAttribute("addAttrLV"), 0)
-    
-    #幸运
-    isLucky = GameWorld.ToIntDef(curActionNode.GetAttribute("isLucky"), 0)
-    
-    #装备技能
-    skillBoostEff = curActionNode.GetAttribute("skillBoostEff")
-    skillBoostEff = [] if skillBoostEff == "" else eval(skillBoostEff) 
-    
-    #孔数
-    holeCount = GameWorld.ToIntDef(curActionNode.GetAttribute("holeCount"), 0)
-    
-    #卓越
-    isGreat = GameWorld.ToIntDef(curActionNode.GetAttribute("isGreat"), 0)
-    
-    #卓越属性列表
-    greatAttr = curActionNode.GetAttribute("greatAttr")
-    greatAttrList = [] if greatAttr == "" else eval(greatAttr)
-    
-    #可强化的装备基础属性随机加强比例默认10000
-    baseAttrRate = GameWorld.ToIntDef(curActionNode.GetAttribute("baseAttrRate"), ShareDefine.Def_MaxRateValue)
-
-    #设置物品属性
-    curItem = CreatMissionItem(curPlayer, curItemID, starLV, addAttrLV, isSuite, bind,
-                               isLucky, skillBoostEff, count, holeCount, isGreat, baseAttrRate, greatAttrList, isAuctionItem=isAuctionItem)
-        
-    if not curItem:
-        GameWorld.Log('###创建地上物品异常,无此ID物品 = %s' % (curItemID))
-        return
-    isFakeDrop = GameWorld.ToIntDef(curActionNode.GetAttribute("isFakeDrop"), 0)
-    if isFakeDrop:#假掉落表现
-        dropItemDataStr = ChItem.GetMapDropItemDataStr(curItem)
-        #通知客户端
-        NPCCommon.SendVirtualItemDrop(curPlayer, curItemID, 0, 0, dropItemDataStr)
-        ItemControler.GivePlayerItemOrMail(curPlayer, [[curItemID, count, isAuctionItem]])
-        curItem.Clear()
-        return
-    if curActionNode.GetAttribute("aroundPlayer") == "1" or not curNPC:
-        posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY()
-    else:
-        posX, posY = curNPC.GetPosX(), curNPC.GetPosY()
-        
-    #掉落范围
-    dropDist = GameWorld.ToIntDef(curActionNode.GetAttribute("dropDist"), ChConfig.Def_DropItemDist)
-    
-    dropPos = GameMap.GetEmptyPlaceInArea(posX, posY, dropDist)
-    
-    effIndex = GameWorld.ToIntDef((curActionNode.GetAttribute("effIndex")), 0)
-    
-    sightLevel = PlayerControl.GetMapRealmDifficulty(curPlayer)
-    curMapItem = ChItem.AddMapDropItem(dropPos.GetPosX(), dropPos.GetPosY(), curItem, effIndex, sightLevel=sightLevel)
-    curMapItem.SetOwnerType(ChConfig.Def_NPCHurtTypePlayer)
-    curMapItem.SetOwnerID(killPlayerID)
-            
-
-#---------------------------------------------------------------------
-##设置人物血量百分比
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_Hp_Percent value="百分比"/> 
-def DoType_Set_Hp_Percent(curPlayer, curMission, curActionNode):
-    value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"))
-    
-    maxHP = GameObj.GetMaxHP(curPlayer)
-    playerHP = maxHP * value / ShareDefine.Def_Percentage
-    
-    smallHP = 1
-    if maxHP < smallHP:
-        GameWorld.ErrLog("玩家最大血量: %s" % maxHP, curPlayer.GetPlayerID())
-        return
-    
-    #防范纠错 最少1点血,最多满血
-    playerHP = GameWorld.ToIntArea(playerHP, smallHP, maxHP)
-    
-    GameObj.SetHP(curPlayer, playerHP)
-
-#---------------------------------------------------------------------
-##设置人物法量百分比
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_Mp_Percent value="百分比"/> 
-def DoType_Set_Mp_Percent(curPlayer, curMission, curActionNode):
-    value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"))
-    
-    maxMP = curPlayer.GetMaxMP()
-    playerMP = maxMP * value / ShareDefine.Def_Percentage
-    
-    smallMP = 1
-    if maxMP < smallMP:
-        GameWorld.ErrLog("玩家最大法力: %s" % maxMP, curPlayer.GetPlayerID())
-        return
-    
-    #防范纠错 最少1点法,最多满法
-    playerMP = GameWorld.ToIntArea(playerMP, smallMP, maxMP)
-    
-    curPlayer.SetMP(playerMP)
-
-##设置宠物血量百分比
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_Pet_Hp_Percent value="百分比"/> 
-def DoType_Set_Pet_Hp_Percent(curPlayer, curMission, curActionNode):
-    return
-
-#---------------------------------------------------------------------
-##清除人物BUFF
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Clear_Buff id="技能TypeID"/> 
-def DoType_Clear_Buff(curPlayer, curMission, curActionNode):
-    #<clear_buff id = "">
-    skillTypeID = int(curActionNode.GetAttribute("id"))
-    tick = GameWorld.GetGameWorld().GetTick()
-    if BuffSkill.DelBuffBySkillTypeID(curPlayer, skillTypeID, tick):
-        
-        #重刷所有属性
-        curControl = PlayerControl.PlayerControl(curPlayer)
-        curControl.RefreshAllState()
-
-    return
-
-
-#===============================================================================
-# #扣除删除复活虚弱金钱
-# def DoType_Del_Clear_Born_Buff_Money(curPlayer, curMission, curActionNode):
-#    return
-#===============================================================================
-
-##墓地医生扣钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Lost_Money_By_Lv moneytype=""/> 
-def DoType_Lost_Money_By_Lv(curPlayer, curMission, curActionNode):
-    return
-#---------------------------------------------------------------------
-##开通仓库
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Open_Warehouse lv="仓库等级"/> 
-def DoType_Open_Warehouse(curPlayer, curMission, curActionNode):
-    #格式<Open_Warehouse lv=""/>
-    warehouseLV = int(curActionNode.GetAttribute("lv"))
-    EventShell.ResetWarehouse(curPlayer, warehouseLV)
-    #设置仓库状态为没有开始仓库
-#    curPlayer.SetWarehouseState(IPY_GameWorld.wsNull)
-#    Func_6.OpenWarehouse(curPlayer)
-
-#---------------------------------------------------------------------
-##给玩家提示信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Notifycode msg="替换的字符串" par%d_type="提示类型int" par%d_value="提示值" par%d_dict_value="任务字典信息" %d区间0~9 /> 
-def DoType_Notifycode(curPlayer, curMission, curActionNode):
-    #格式<NotifyCode msg = "xxxx" par1_type = "int" par1_value="10".../>
-    msg = curActionNode.GetAttribute("msg")
-    
-    parList = []
-    for i in range(0, 10):
-        parType = curActionNode.GetAttribute("par%d_type" % i)
-        parValue = curActionNode.GetAttribute("par%d_value" % i)
-        dictValue = curActionNode.GetAttribute("par%d_dict_value" % i)
-        if parType == "int":
-            if parValue != "":
-                parValue = int(parValue)
-                parList.append(parValue)
-            if dictValue != "":
-                dictValue = curMission.GetProperty(dictValue)
-                parList.append(dictValue)
-                     
-    PlayerControl.NotifyCode(curPlayer, msg, parList)
-    
-#---------------------------------------------------------------------
-##世界广播
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <WorldNotify msg="mark" par = '参数'/> 
-def DoType_Worldnotify(curPlayer, curMission, curActionNode):
-    #格式<WorldNotify msg = "xxxx" par = "1"/>
-    msg = curActionNode.GetAttribute("msg")
-    par = GameWorld.ToIntDef(curActionNode.GetAttribute("par"), 0)
-    
-    #构建参数列表
-    parList = []
-    
-    if par == 1:
-        #参数1为玩家名字
-        parList = [curPlayer.GetName()]
-    
-    PlayerControl.WorldNotify(0, msg, parList)
-    return
-
-#---------------------------------------------------------------------
-##开通包裹
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Open_Backpack lv="包裹等级"/> 
-def DoType_Open_Backpack(curPlayer, curMission, curActionNode):
-    #格式<Open_Backpack lv=""/>
-    backpackLV = int(curActionNode.GetAttribute("lv"))
-    EventShell.ResetBackPack(curPlayer, backpackLV)
-
-#---------------------------------------------------------------------
-##添加称号
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Title id="称号ID" />       
-def DoType_Add_Title(curPlayer, curMission, curActionNode):
-
-    return
-#---------------------------------------------------------------------
-##按性别随机给物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Random_Item_By_Sex id="物品ID" value="物品数量" />  
-def DoType_Add_Random_Item_By_Sex(curPlayer, curMission, curActionNode):
-    ItemID = curActionNode.GetAttribute("id")
-    if ItemID == "":
-        GameWorld.Log("Error : DoType_Add_Random_Item_By_Sex , id = NULL" , curPlayer.GetPlayerID())
-        return
-    curItemCount = curActionNode.GetAttribute("value")
-    if curItemCount == "":
-        curItemCount = 1
-    else:
-        curItemCount = int(curItemCount)
-    
-    ItemIDList = ItemID.split("/")
-    
-    #获得性别,1男2女
-    curPlayerSex = curPlayer.GetSex()
-    #获取当前性别获得物品列表  
-    curItemList = ItemIDList[curPlayerSex - 1].split(",")
-    #随机选择物品序号
-    randomItemID = random.randint(0, len(curItemList) - 1)
-    #根据随机数获得物品ID,并转换为整型
-    curItemID = int(curItemList[randomItemID])
-    
-    AddEventItem(curPlayer, curMission, curItemID, curItemCount)
-    
-#---------------------------------------------------------------------
-##按职业随机给物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Random_Item_By_Job id="物品ID" value="物品数量" />  
-def DoType_Add_Random_Item_By_Job(curPlayer, curMission, curActionNode):
-    itemID = curActionNode.GetAttribute("id")
-    
-    if itemID == "":
-        GameWorld.Log("Error : DoType_Add_Random_Item_By_Sex , id = NULL" , curPlayer.GetPlayerID())
-        return
-    
-    curItemCount = curActionNode.GetAttribute("value")
-    
-    if curItemCount == "":
-        curItemCount = 1
-    else:
-        curItemCount = int(curItemCount)
-    
-    itemIDList = itemID.split("/")
-    
-    #获得职业:0:剑宗 1:气宗 2:魔宗
-    curPlayerJob = curPlayer.GetJob()
-
-    #获取当前性别获得物品列表  
-    curItemList = itemIDList[curPlayerJob].split(",")
-    #随机选择物品序号
-    randomItemID = random.randint(0, len(curItemList) - 1)
-    #根据随机数获得物品ID,并转换为整型
-    curItemID = int(curItemList[randomItemID])
-    if curItemID == 0:
-        return
-    
-    AddEventItem(curPlayer, curMission, curItemID, curItemCount)
-
-#---------------------------------------------------------------------
-##根据列表删除物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_Item_List id="物品列表 50044/50045...50052" />  
-def DoType_Del_Item_List(curPlayer, curMission, curActionNode):
-    #格式<del_item_List id="50044/50045...50052"/>
-    ItemID = curActionNode.GetAttribute("id")
-    
-    #获得物品列表
-    ItemIDList = ItemID.split("/")
-    #获得玩家背包物品
-    PlayerItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    #遍历随机删除物品列表
-    for i in range(0, len(ItemIDList)):
-        delItemID = int(ItemIDList[i])
-        #遍历玩家背包
-        for j in range(0, PlayerItem.GetCount()):
-            curItem = PlayerItem.GetAt(j)
-            curItemID = curItem.GetItemTypeID()
-            if delItemID != curItemID :
-                continue
-            
-            curItemCnt = curItem.GetCount()
-            #PlayerControl.NotifyCode(curPlayer, "LostRes", [delItemID, curItemCnt])
-            #curPlayer.Sync_DelItemView(delItemID, 1)
-            #等级触发OSS记录
-            if GameWorld.IsMissonDR(curPlayer):
-                missionID = QuestCommon.GetMissionID(curMission)
-                delItemInfoDict = {"ItemID":curItemID, "ItemCount":curItemCnt, "IsBind":curItem.GetIsBind(),
-                                   "ItemGUID":curItem.GetGUID(), "MissionID":missionID}
-                DataRecordPack.DR_DeleteItem(curPlayer, "Event_Del_Item_List", delItemInfoDict)
-
-            #删除物品
-            curItem.Clear()
-    
-    return
-
-
-#---------------------------------------------------------------------
-##添加随机物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Random_Item id="物品ID" value="物品数量" />    
-def DoType_Add_Random_Item(curPlayer, curMission, curActionNode):
-    ItemID = curActionNode.GetAttribute("id")
-    if ItemID == "":
-        GameWorld.Log("Error : DoType_Add_Random_Item_By_Sex , id = NULL" , curPlayer.GetPlayerID())
-        return
-    
-    curItemCount = curActionNode.GetAttribute("value")
-    if curItemCount == "":
-        curItemCount = 1
-    else:
-        curItemCount = int(curItemCount)
-
-    ItemIDList = ItemID.split("/")
-    #随机选择物品序号
-    randomItemID = random.randint(0, len(ItemIDList) - 1)
-    #根据随机数获得物品ID,并转换为整型
-    curItemID = int(ItemIDList[randomItemID])
-    
-    AddEventItem(curPlayer, curMission, curItemID, curItemCount)
-
-#---------------------------------------------------------------------
-## 判断镖车等级
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return bool
-#  @remarks <Check_Truck_Lv, trucklv="镖车等级"/>
-def ConditionType_Check_Truck_Lv(curPlayer, curMission, curConditionNode):
-    truckLv = GameWorld.ToIntDef(curConditionNode.GetAttribute("trucklv"), -1)
-    
-    curTruckLv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TruckLV)
-    return curTruckLv == truckLv
-
-
-## 给镖车任务奖励
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return 返回值无意义
-def DoType_Give_Truck_Award(curPlayer, curMission, curActionNode):
-    curTruck = curPlayer.GetTruck()
-    if not curTruck:
-        #没有镖车
-        return
-    
-    PlayerTruck.GiveTruckAward(curPlayer, curTruck)
-    return
-
-#---------------------------------------------------------------------
-##给玩家奖励的金钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Money value="值" type="货币类型" /> 
-def DoType_Add_Money(curPlayer, curMission, curActionNode):
-    #加钱
-    value = int(curActionNode.GetAttribute("value"))
-    type = curActionNode.GetAttribute("type")
-    
-    type = GameWorld.ToIntDef(type, IPY_GameWorld.TYPE_Price_Silver_Paper)
-    addDataDict = {ChConfig.Def_Give_Reason_SonKey:curMission.GetMissionID()}
-    if not PlayerControl.GiveMoney(curPlayer, type, value, ChConfig.Def_GiveMoney_Mission, addDataDict, False):
-        return
-    
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        DataRecordPack.DR_EventAddMoney(curPlayer, "Add_Money", curMission.GetMissionID(), type, value)
-
-
-#---------------------------------------------------------------------
-##荣誉换工资
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Hornor_Exchane_Money/>
-def DoType_Hornor_Exchane_Money(curPlayer, curMission, curActionNode):
-    #获得组队荣誉
-    hornor = curPlayer.GetTeamHornor()
-    #给钱,换荣誉
-    money = hornor / ChConfig.Def_TeamHornor_Money
-    hornor -= money * ChConfig.Def_TeamHornor_Money
-    curPlayer.SetTeamHornor(hornor)
-    addDataDict = {ChConfig.Def_Give_Reason_SonKey:"HornorExchane"}
-    if not PlayerControl.GiveMoney(curPlayer, ChConfig.Def_TeamHornor_MoneyType, money, ChConfig.Def_GiveMoney_Mission, addDataDict):
-        return
-    
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        #59 流向记录 因事件获得金钱
-        DataRecordPack.DR_EventAddMoney(curPlayer, "Hornor_Exchane_Money", curMission.GetMissionID(),
-                                        ChConfig.Def_TeamHornor_MoneyType, money)
-
-    GameWorld.Log("荣誉换工资 获得金钱 = %s,剩余荣誉 = %s" % (money , hornor) , curPlayer.GetPlayerID())
-    return
-
-#---------------------------------------------------------------------
-
-
-#---------------------------------------------------------------------
-##扣恢复马匹耐久钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_Horse_Money/>    
-def DoType_Del_Horse_Money(curPlayer, curMission, curActionNode):
-    return
-
-#---------------------------------------------------------------------
-##扣设置任务星级货币消耗
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_Set_Mission_Star_Money moneytype="1元宝2礼券3银两"/>    
-def DoType_Del_Set_Mission_Star_Money(curPlayer, curMission, curActionNode):
-    missionID = curMission.GetMissionID()
-    curMissionData = FindQuestFunc(missionID)
-    if not curMissionData:
-        return
-    missionType = curMissionData.Type
-    Def_Around_Star = GetRunKey(missionType, Key_Around_Star)
-    
-    moneyType, costFormat = ReadChConfig.GetEvalChConfig("RunAround_SetStarCost")
-    
-    reLV = curPlayer.GetLV()
-    reExp = 0
-    reMoney = 0
-    aroundStar = curMission.GetProperty(Def_Around_Star)
-    moneyPrice = int(eval(costFormat))
-    
-    if not PlayerControl.PayMoney(curPlayer, moneyType, moneyPrice, ChConfig.Def_Cost_MissionStar, {"MissionID":missionID}):
-        GameWorld.Log("###任务设置星级付费异常,玩家金钱不够 MissionID=%s" % curMission.GetMissionID() , curPlayer.GetPlayerID())
-        return
-    
-    return
-
-#---------------------------------------------------------------------
-##给玩家剩余技能点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Freeskillpoint value="点数"/> 
-def DoType_Add_Freeskillpoint(curPlayer, curMission, curActionNode):
-    #加技能点
-    #格式: <add_freeskillpoint value=""/>
-    value = int(curActionNode.GetAttribute("value"))
-    curPlayerFreeSkillPoint = curPlayer.GetFreeSkillPoint()
-    curPlayer.SetFreeSkillPoint(curPlayerFreeSkillPoint + value)
-
-            
-#---------------------------------------------------------------------
-##给玩家剩余属性点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Freepoint value="点数"/>     
-def DoType_Add_Freepoint(curPlayer, curMission, curActionNode):
-    #加属性点
-    #格式: <add_freepoint value=""/>
-    value = int(curActionNode.GetAttribute("value"))
-    curPlayerFreePoint = curPlayer.GetFreePoint()
-    curPlayer.SetFreePoint(curPlayerFreePoint + value)
-    # 更新开服活动灵根数据
-    OpenServerCampaign.UpdOpenServerCampaignLingGenData(curPlayer)
-    DataRecordPack.DR_Freepoint(curPlayer, "Event", value, {"MissionID":curMission.GetMissionID()})
-    return
-
-
-#---------------------------------------------------------------------
-##删除物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_Item dict_id="字典名" id="dict_id为空读取" dict_value="字典名" value="dict_value为空读取" />
-def DoType_Del_Item(curPlayer, curMission, curActionNode):
-    #格式<del_item value="1" id="50029"/>
-    dict_id = curActionNode.GetAttribute("dict_id")
-    dict_value = curActionNode.GetAttribute("dict_value")
-    if dict_id == "":
-        id = int(curActionNode.GetAttribute("id"))
-    else:
-        id = curMission.GetProperty(dict_id)
-    #GameWorld.Log("任务ID:%d"%(id))
-    if dict_value == "":
-        conditionValue = int(curActionNode.GetAttribute("value"))
-    else:  
-        conditionValue = curMission.GetProperty(dict_value)
-    
-    #GameWorld.Log("packtype = %s"%curActionNode.GetAttribute("packtype"))
-    packType = GameWorld.ToIntDef(curActionNode.GetAttribute("packtype"), IPY_GameWorld.rptItem)
-    
-    inputGuidList = []
-    delResult = ItemControler.DelPlayerItem(curPlayer, packType, id, conditionValue, delEventItem=True, guidList=inputGuidList)
-    if not delResult:
-        return
-
-    #PlayerControl.NotifyCode(curPlayer, "LostRes", [id,conditionValue])
-    #curPlayer.Sync_DelItemView(id, conditionValue)
-        
-    guidStr = ''
-    for guid in inputGuidList:
-        guidStr += ' %s' % guid
-    #31.        因事件刪除   同上
-    if not curMission:
-        missionID = 0
-    else:
-        missionID = curMission.GetMissionID()
-        
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        delItemInfoDict = {"PackType":packType, "ItemID":id, "ItemCount":conditionValue,
-                           "MissionID":missionID}
-        DataRecordPack.DR_DeleteItem(curPlayer, "Event_Del_Item", delItemInfoDict)
-
-#---------------------------------------------------------------------
-##运行分支节点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Run_Embranchment id="运行的ID" />
-def DoType_Run_Embranchment(curPlayer, curMission, curActionNode):
-    #<Run_Embranchment id = "1"/>
-    #运行分支节点
-    questNode = curPlayer.GetCurrentQuestNode()
-    
-    if questNode == None or questNode.IsEmpty():
-        #找不到分支节点
-        GameWorld.Log("DoType_Run_Embranchment 找不到分支节点" , curPlayer.GetPlayerID())
-        return
-    
-    runID = int(curActionNode.GetAttribute("id"))
-    curPlayer.SetEventState(TYPE_Event_Do)
-    for i in range(0, questNode.GetChildCount()):
-        embranchmentNode = questNode.GetChild(i)
-        if runID == int(embranchmentNode.GetAttribute("id")):
-            if RunEmbranchmentNode(curPlayer, curMission, embranchmentNode) != True:
-#                GameWorld.Log("在这个节点运行失败 : %s"%curActionNode.GetXML())
-                pass
-            return
-
-#---------------------------------------------------------------------
-##挖宝提示
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Treasure_Notify code="替换字符串" />
-def DoType_Treasure_Notify(curPlayer, curMission, curActionNode):
-    #挖宝任务提示
-    global TreasureNotifyContentList
-    content = curActionNode.GetAttribute("code")
-    #content = GetMissionReplaceMsg(content, curMission)
-    lv = curActionNode.GetAttribute("lv")
-    curContent = TreasureNotifyContent()
-    curContent.Content = content
-    curContent.LV = lv
-    curContent.MissionID = curMission.GetMissionID()
-    #添加到提示列表
-    TreasureNotifyContentList.append(curContent)
-
-#---------------------------------------------------------------------
-##重新运行任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Rerun_Quest/> 
-def DoType_Rerun_Quest(curPlayer, curMission, curActionNode):
-    #运行分支节点
-    questNode = curPlayer.GetCurrentQuestNode()
-    
-    if questNode == None or questNode.IsEmpty():
-        #找不到分支节点
-        GameWorld.Log("DoType_Rerun_Quest 找不到分支节点" , curPlayer.GetPlayerID())
-        return
-    
-    curPlayer.SetEventState(TYPE_Event_Do)
-    for i in range(0, questNode.GetChildCount()):
-        embranchmentNode = questNode.GetChild(i)
-        if RunEmbranchmentNode(curPlayer, curMission, embranchmentNode) == True:
-            return
-
-#---------------------------------------------------------------------
-##生成传送列表[[PosX,PosY],......]
-# @param curStr 替换的字符串
-# @return 返回值, 生成的传送列表
-# @remarks 生成传送列表[[PosX,PosY],......]
-def __GetRandPosList(curStr):
-    r = re.compile(r"[0-9]+\,[0-9]+")
-    strList = r.findall(curStr)
-    
-    result = []
-    for str in strList:
-        curStr = str.split(',')
-        result.append((int(curStr[0]), int(curStr[1])))
-        
-    return result
-
-#---------------------------------------------------------------------
-##充值玩家坐标
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_World_Pos id='地图ID' id_list="地图ID列表如1,2,3,4,5" rand_pos="随机坐标传送" posx="rand_pos为空读取,坐标X" posY="rand_pos为空读取,坐标Y" range="容错区域" fbid="副本ID" fbid_min="副本ID随机A值" fbid_max="副本ID随机B值" /> 
-def DoType_Set_World_Pos(curPlayer, curMission, curActionNode):
-    idstr = curActionNode.GetAttribute("id")
-    #运行分支
-    runID = 0
-    if idstr != "":
-        runID = int(idstr)
-    else:
-        idstr = curActionNode.GetAttribute("id_list")
-        idList = idstr.split(",")
-        index = random.randint(0, len(idList) - 1)
-        runID = int(idList[index])
-    #************************随机X Y坐标******************************
-    
-    rand_pos = curActionNode.GetAttribute("rand_pos")
-    if rand_pos != '':
-        #随机列表X,Y坐标传送
-        result = __GetRandPosList(rand_pos)
-        curPos = result[random.randint(0, len(result) - 1)]
-        pos_x = curPos[0]
-        pos_y = curPos[1]
-    else:
-        #正常坐标传送
-        #获得移动X坐标
-        pos_x = int(curActionNode.GetAttribute("posx"))
-        #获得移动Y坐标
-        pos_y = int(curActionNode.GetAttribute("posy"))
-        
-    posRangeStr = curActionNode.GetAttribute("range")
-    if posRangeStr != '':
-        orgPosRange = int(posRangeStr)
-        posRange = random.randint(-orgPosRange, orgPosRange)
-        pos_x = pos_x + posRange
-        posRange = random.randint(-orgPosRange, orgPosRange)  
-        pos_y = pos_y + posRange
-       
-    
-    #GameWorld.Log("pos_x:==============================%d"%pos_x)
-    #GameWorld.Log("pos_y:==============================%d"%pos_y)
-        
-    fbID = curActionNode.GetAttribute("fbid")
-    minID = curActionNode.GetAttribute("fbid_min")
-    maxID = curActionNode.GetAttribute("fbid_max")
-    if fbID != "":
-        fbID = GameWorld.ToIntDef(curActionNode.GetAttribute("fbid"), 0)
-    elif minID != "" and maxID != "" :
-        #**********************随机地图线路*******************************
-        fbID = random.randint(int(minID), int(maxID))
-        fbID = GameWorld.ToIntDef(fbID, 0)
-    
-    if fbID != "":
-        PlayerControl.PlayerResetWorldPosFB(curPlayer, runID, pos_x, pos_y, False, fbID - 1)
-        return
-    
-    __NPCAllowResetWorldPos(curPlayer, runID, pos_x, pos_y, False)
-
-#---------------------------------------------------------------------
-##NPC传送统一调用接口
-# @param curPlayer 玩家实例
-# @param mapID 地图ID
-# @param pos_x 坐标X
-# @param pos_y 坐标Y
-# @param isTruck 是否携带镖车
-# @return 返回值无意义
-# @remarks NPC传送统一调用接口
-def __NPCAllowResetWorldPos(curPlayer, mapID, pos_x, pos_y, isTruck):
-    if not PlayerControl.CanEnterMap(curPlayer, mapID):
-        #玩家不可进入该场景
-        return
-
-    #传送地点
-    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, pos_x, pos_y, isTruck)
-    return
-
-#---------------------------------------------------------------------
-##执行新增跳舞钓鱼事件Buff
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Game_Event_Add_Buffer id="技能ID" count="添加次数" /> 
-def DoType_Game_Event_Add_Buffer(curPlayer, curMission, curActionNode):
-    tick = GameWorld.GetGameWorld().GetTick()
-    id = int(curActionNode.GetAttribute("id"))
-    count = GameWorld.ToIntDef(curActionNode.GetAttribute("count"), 1)
-    curSkill = GameWorld.GetGameData().GetSkillBySkillID(id)
-    for i in range(count):
-        BuffSkill.DoAddBuff(curPlayer, IPY_GameWorld.bfIncBuff, curSkill, tick)
-        
-    #刷新人物属性
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #刷新所有状态
-    playerControl.RefreshAllState()
-
-    
-#---------------------------------------------------------------------
-##增加buff
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Buffer id="技能ID"/> 
-def DoType_Add_Buffer(curPlayer, curMission, curActionNode):
-    tick = GameWorld.GetGameWorld().GetTick()
-    buffId = int(curActionNode.GetAttribute("id"))
-    curSkill = GameWorld.GetGameData().GetSkillBySkillID(buffId)
-    
-    if not curSkill:
-        GameWorld.ErrLog("DoType_Add_Buffer,找不到buffId = %s 的信息" % buffId)
-        return
-    
-    SkillCommon.AddBuffBySkillType(curPlayer , buffId , tick)
-    
-    return
-
-#---------------------------------------------------------------------
-##执行任务(不使用了)
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Run_Quest /> 
-def DoType_Run_Quest(curPlayer, curMission, curActionNode):
-    GameWorld.Log("现在不支持!!!!!!!!!")
-    EventShell.DoExitEvent(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-##结束事件
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Exitevent />    
-def DoType_Exitevent(curPlayer, curMission, curActionNode):
-    #默认检查是否继续对话
-    value = GameWorld.ToIntDef(curActionNode.GetAttribute("again"), 1)
-
-    if value == 1:
-        DoTalkOrExit(curPlayer)
-        return
-        
-    EventShell.DoExitEvent(curPlayer)
-
-#---------------------------------------------------------------------
-##开始事件
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Beginevent />  
-def DoType_Beginevent(curPlayer, curMission, curActionNode):
-    curPlayer.BeginEvent()
-    curPlayer.SetEventState(TYPE_Event_Select)
-
-#---------------------------------------------------------------------
-#enum            TMoneyType
-#{
-#    TYPE_Price_Gold_Money = 1,  
-#    TYPE_Price_Gold_Paper = 2,  
-#    TYPE_Price_Silver_Money = 3,
-#    TYPE_Price_Silver_Paper = 4,
-#};
-
-#<start_truck id = "" money = "" eventid = "">      -->开始骠车, id为骠车ID, eventid 为事件ID
-#<start_truck id = "" dict_money = "day_event_truck_money" eventid = "" />
-#去掉money_type 金钱类型, 金钱类型用玩家当时选择的金钱类型, 可以用银子/银票
-
-#---------------------------------------------------------------------
-##开始拉镖车
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <start_truck id="骠车ID" money="押金" dict_money="如果money为空,读取dict_money" eventid="事件ID" />
-def DoType_Start_Truck(curPlayer, curMission, curActionNode):
-    truckID = int(curActionNode.GetAttribute("id"))
-    money = 0
-    moneyStr = curActionNode.GetAttribute("money")
-    if moneyStr != "":
-        money = int(curActionNode.GetAttribute("money"))
-    else:
-        dict_money = curActionNode.GetAttribute("dict_money")
-        money = curMission.GetProperty(dict_money)
-        
-    money_type = curPlayer.GetUseSilverType()
-    #money_type = GameWorld.ToIntDef(curActionNode.GetAttribute("money_type"), 0)
-    eventid = int(curActionNode.GetAttribute("eventid"))
-    GameWorld.Log("%s 开始骠车, 押金: %d" % (curPlayer.GetID(), money))
-    
-    PlayerTruck.CreateTruck(curPlayer, money, money_type, truckID, eventid, GameWorld.GetGameWorld().GetTick())
-
-#---------------------------------------------------------------------
-##删除玩家骠车
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_Truck />
-def DoType_Del_Truck(curPlayer, curMission, curActionNode):
-    #骠车事件ID与任务ID不同,不处理
-    if curPlayer.GetTruckEventID() != curMission.GetMissionID():
-        return
-    
-    if curPlayer.GetTruckID() != 0:
-        curPlayer.GameServer_DelTruck()
-        return
-
-#---------------------------------------------------------------------
-##设置家族每日任务数目
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_Family_Mission_Count/>
-def DoType_Set_Family_Mission_Count(curPlayer, curMission, curActionNode):
-    if curPlayer.GetFamilyLV() == 0:
-        return
-    
-    curMission.SetProperty(QuestCommon.Def_Day_Event_Max_Complete_Count, curPlayer.GetFamilyLV())
-    return
-
-#---------------------------------------------------------------------
-##清除任务字典信息
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值无意义
-# @remarks 清除任务字典信息
-def __ClearMissionProperty(curPlayer, curMission):
-    missionID = curMission.GetMissionID()
-    curPlayer.Sync_ClearMissionDict(missionID)
-    curMission.ClearProperty()
-    return
-
-
-##完成跑环任务随机下一个跑环
-# @param curPlayer 玩家实例
-# @param curMissionData 任务数据
-# @return 下个跑环任务ID
-# @remarks 清除任务字典信息
-def __OverRandRunAround(curPlayer, curMissionData):
-    missionList = GetDayEventInfo(curPlayer, curMissionData, QuestCommon.Day_MissionList)
-    if not missionList:
-        GameWorld.ErrLog("完成跑环任务随机下一个跑环异常", curPlayer.GetID())
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return 0
-    
-    missionID = GameWorld.GetResultByRandomList(missionList)
-    GameWorld.DebugLog('完成跑环任务随机下一个跑环 missionList=%s, missionID=%s' % (missionList, missionID))
-    if missionID == None:
-        GameWorld.ErrLog("玩家等级 %s ,没有随机任务" % curPlayer.GetLV(), curPlayer.GetID())
-        return 0
-    return missionID
-
-
-##删除跑环任务
-# @param curPlayer 玩家实例
-# @param mission_1 任务1实例
-# @param curActionNode 当前节点
-# @return 无
-# @remarks 删除跑环任务,总环数+1 随机新任务
-def __DelRunAroundMission(curPlayer, mission_1, curMissionData, Def_Around_AllCount,
-                          Def_Around_Count, aroundCount, allCount, RUNCOUNT):
-
-    allCount += 1
-    
-    mission_1.SetProperty(Def_Around_AllCount, allCount)
-    EventShell.EventRespons_RunTaskAllCnt(curPlayer, curMissionData.Type, allCount)
-    GameWorld.Log("删除任务allCount %s, RUNCOUNT=%s" % (allCount, RUNCOUNT))
-
-
-    if allCount < RUNCOUNT:
-        #跑环1
-        #随机任务ID 仙盟任务判断是否有仙盟
-        if curMissionData.Type == QuestCommon.Def_Mission_Type_RunFamily:
-            if not curPlayer.GetFamilyID():
-                GameWorld.DebugLog("  删除跑环任务后  没有仙盟,不随机仙盟任务")
-                return
-        nextMissionID = __OverRandRunAround(curPlayer, curMissionData)
-        if not curPlayer.FindMission(nextMissionID):
-            QuestCommon.AddNewMission(curPlayer, nextMissionID)
-            
-        nextMission = curPlayer.FindMission(nextMissionID)
-        QuestCommon.SetPlayerMissionState(curPlayer, nextMission, 1)
-        nextMission.SetMissionState(1)
-        nextMission.SetDescriptionIndex(0)
-
-        #先清空字典再设置新的字典
-        __ClearMissionProperty(curPlayer, nextMission)
-        
-        nextMission.SetProperty(Def_Around_AllCount, allCount)
-        nextMission.SetProperty(Def_Around_Count, aroundCount)
-        #设置随机任务事件
-        EventShell.EventRespons_SetRunAround(curPlayer, nextMissionID)
-        GameWorld.DebugLog("删除: 通知下一个任务字典 刷新封包 %s"%nextMission.GetMissionID())
-        EventShell.NotifyOneMission(curPlayer, nextMission)
-    return
-
-Key_Around_AllCount = "run_count" # 总环数key
-Key_Around_Count = "around_count" # 环数key
-Key_Around_Star = "around_star" # 环星key
-
-##获取跑环任务字典key
-# @param missionType 
-# @param key 字典key定义,亦作为默认key
-# @return key
-def GetRunKey(missionType, key):
-    keyDict = {
-               # 日常跑环
-               QuestCommon.Def_Mission_Type_RunDaily:{
-                  Key_Around_AllCount:QuestCommon.Def_Run_Count_In_Mission_1,
-                  Key_Around_Count:QuestCommon.Def_Around_Count_In_Mission_1,
-                  Key_Around_Star:QuestCommon.Def_Around_Star_In_Mission_1,
-                  },
-               
-               # 家族跑环
-               QuestCommon.Def_Mission_Type_RunFamily:{
-                  Key_Around_AllCount:QuestCommon.Def_Run_Count_Family_In_Mission_1,
-                  Key_Around_Count:QuestCommon.Def_Around_Count_Family_In_Mission_1,
-                  Key_Around_Star:QuestCommon.Def_Around_Star_Family_In_Mission_1,
-                  },
-               }
-    
-    return keyDict.get(missionType, {}).get(key, key)
-
-##跑环任务结束处理
-# @param curPlayer 玩家实例
-# @param curMission 任务
-# @param curMissionData 任务数据
-# @param curActionNode 当前节点
-# @return 无
-# @remarks 跑环任务结束处理,删除或者随机下一个
-def __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode):
-    GameWorld.Log("__RunAroundMission----%s"%missionID, curPlayer.GetID())
-    #任务完成,触发随机跑环
-    run_event = GameWorld.ToIntDef(curActionNode.GetAttribute("run_around"), 0)
-    firstMissionID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    
-    mission_1 = QuestCommon.GetCommonMission(curPlayer)
-    
-    if mission_1 == None:
-        GameWorld.ErrLog('__RunAroundMission, 玩家 = %s无法获得公共任务' % (curPlayer.GetName()), curPlayer.GetID())
-        return
-    
-    Def_Around_AllCount = GetRunKey(curMissionData.Type, Key_Around_AllCount)
-    Def_Around_Count = GetRunKey(curMissionData.Type, Key_Around_Count)
-    
-    #总环数
-    allCount = mission_1.GetProperty(Def_Around_AllCount)
-    #单轮已做环数
-    aroundCount = mission_1.GetProperty(Def_Around_Count)
-    #GameWorld.DebugLog('    跑环任务结束处理missionID =%s,allCount=%s,aroundCount=%s,run_event=%s,curMissionData.Type=%s' % (missionID, allCount, aroundCount, run_event, curMissionData.Type))
-    
-    allCntDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskCnt', 1, {})
-    #总环数上限
-    RUNCOUNT = allCntDict.get(curMissionData.Type, 0)
-    #单轮环数上限
-    RunTaskCntDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskCnt', 2, {})
-    AROUNDCOUNT = RunTaskCntDict.get(curMissionData.Type, 0)
-    #1为触发随机跑环,2为删除任务 3为触发第一个跑环
-    if run_event == Def_Run_Around_Over_2:
-        __DelRunAroundMission(curPlayer, mission_1, curMissionData, Def_Around_AllCount,
-                          Def_Around_Count, aroundCount, allCount, RUNCOUNT)
-        return
-   
-    elif run_event not in [Def_Run_Around_Over_1, Def_Run_Around_Over_3]:
-        return
-    
-    
-    #总跑环次数已满,不可再做
-    if run_event == Def_Run_Around_Over_1:
-        if allCount >= RUNCOUNT or aroundCount >= AROUNDCOUNT:
-            return
-    
-    nextMissionID = 0
-    nextMission = None
-    if run_event == Def_Run_Around_Over_1:
-        aroundCount += 1 #本轮次数+1
-        allCount += 1 #总环数+1
-        mission_1.SetProperty(Def_Around_AllCount, allCount)
-        mission_1.SetProperty(Def_Around_Count, aroundCount)
-    
-    if firstMissionID and run_event == Def_Run_Around_Over_3:
-        if not curPlayer.FindMission(firstMissionID):
-            QuestCommon.AddNewMission(curPlayer, firstMissionID)
-            
-        nextMission = curPlayer.FindMission(firstMissionID)
-        QuestCommon.SetPlayerMissionState(curPlayer, nextMission, 1)
-        nextMission.SetMissionState(1)
-        nextMission.SetDescriptionIndex(0)
-
-        #先清空字典再设置新的字典
-        __ClearMissionProperty(curPlayer, nextMission)
-        
-        nextMission.SetProperty(Def_Around_AllCount, allCount)
-        nextMission.SetProperty(Def_Around_Count, aroundCount)
-        #nextMission.SetProperty(Def_Around_Star, aroundStar)
-        #设置随机任务事件
-        EventShell.EventRespons_SetRunAround(curPlayer, firstMissionID)
-        
-    
-    #环数达到上限,次数没到上限, 重置跑环1,
-    elif aroundCount >= AROUNDCOUNT:
-        #设置可领取本轮总奖励状态 加个领取奖励的任务
-        GameWorld.DebugLog('    本轮次数达到%s, 可抽取本轮奖励!'%aroundCount)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % curMissionData.Type, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % curMissionData.Type, 0)
-        EventShell.NotifyRunEndAward(curPlayer, curMissionData.Type)
-        runTaskAwardTaskIDDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAwardTaskID')
-        runTaskAwardTaskID = runTaskAwardTaskIDDict.get(curMissionData.Type, 0)
-        if not curPlayer.FindMission(runTaskAwardTaskID):
-            QuestCommon.AddNewMission(curPlayer, runTaskAwardTaskID)
-        newMission = curPlayer.FindMission(runTaskAwardTaskID)
-        QuestCommon.SetPlayerMissionState(curPlayer, newMission, 1)
-        newMission.SetMissionState(1)
-        newMission.SetDescriptionIndex(0)
-        EventShell.NotifyOneMission(curPlayer, newMission, isNotifyAll=False)
-        
-        if curMissionData.Type == QuestCommon.Def_Mission_Type_RunFamily:
-            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskFRun, 1)
-#        if allCount < RUNCOUNT:
-#            nextMissionID = __OverRandRunAround(curPlayer, curMissionData)
-#            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % curMissionData.Type, nextMissionID)
-        
-                
-            
-
-    else:
-        #---随机下一个跑环任务
-        
-        #随机任务ID
-        nextMissionID = __OverRandRunAround(curPlayer, curMissionData)
-        
-        if nextMissionID <= 0:
-            EventShell.DoExitEvent(curPlayer)
-            return
-        
-        if not curPlayer.FindMission(nextMissionID):
-            QuestCommon.AddNewMission(curPlayer, nextMissionID)
-            
-        nextMission = curPlayer.FindMission(nextMissionID)
-        QuestCommon.SetPlayerMissionState(curPlayer, nextMission, 1)
-        nextMission.SetMissionState(1)
-        nextMission.SetDescriptionIndex(0)
-
-        #先清空字典再设置新的字典
-        __ClearMissionProperty(curPlayer, nextMission)
-        
-        nextMission.SetProperty(Def_Around_AllCount, allCount)
-        nextMission.SetProperty(Def_Around_Count, aroundCount)
-        #nextMission.SetProperty(Def_Around_Star, aroundStar)
-        #设置随机任务事件
-        EventShell.EventRespons_SetRunAround(curPlayer, nextMissionID)
-    
-    
-    #mission_1.SetProperty(Def_Around_Star,aroundStar)
-    if nextMission:
-        EventShell.NotifyOneMission(curPlayer, nextMission, isNotifyAll=False)
-        EventShell.EventRespons_RunTaskAllCnt(curPlayer, curMissionData.Type, allCount)
-    return
-
-#---------------------------------------------------------------------
-##结束任务逻辑
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <over none_event="任务完成后是否退出事件" diff_event="任务完成为-1,不删除,
-# 可触发后续任务" del_event="任务完成删除,不触发后续任务" two_event="任务完成删除,不退出事件,不触发后续任务" 
-# run_around="1" 1为触发随机跑环 id="13"/>
-# 跑环格式说明:<over run_around="1" id="1201"/>  ===》 run_around="1" 随机跑环任务,id为第一个跑环任务ID,跑环任务不属于后续任务 
-def DoType_Over(curPlayer, curMission, curActionNode):
-    #格式: <over/>
-    missionID = curMission.GetMissionID()
-    #任务完成后是否退出事件,以免非玩家操作完成任务,而结束事件(跳舞钓鱼)
-    noneEvent = GameWorld.ToIntDef(curActionNode.GetAttribute("none_event"), 0)
-    #任务完成为-1,不删除,可触发后续任务
-    diff_event = GameWorld.ToIntDef(curActionNode.GetAttribute("diff_event"), 0)
-    #任务完成删除,不触发后续任务
-    del_event = GameWorld.ToIntDef(curActionNode.GetAttribute("del_event"), 0)
-    #任务完成删除,不退出事件,不触发后续任务
-    two_event = GameWorld.ToIntDef(curActionNode.GetAttribute("two_event"), 0)
-
-    curMissionData = FindQuestFunc(missionID)
-    
-    #获得当前重置次数,下面验证是否需要
-    curResetCount = curMission.GetProperty(curMissionData.ResetCurCountDictName)
-    
-    if curMissionData.DayMaxCount != '':
-        #判断这个任务是否有触发次数, 
-        # --还可以触发, 次数+1
-        # --不能触发了, 什么都不做
-        curCount = curMission.GetProperty(curMissionData.DayCurCount)
-        maxCount = GameWorld.ToIntDef(curMissionData.DayMaxCount, 0)
-        dictHaveCount = False
-        
-        if maxCount == 0:
-            #最大次数是需要查字典的
-            dictHaveCount = True
-            maxCount = curMission.GetProperty(curMissionData.DayMaxCount)
-        
-        #GameWorld.Log('curCount = %s, maxCount = %s'%(curCount, maxCount))
-        if curCount < maxCount - 1:
-            __ClearMissionProperty(curPlayer, curMission)
-            if dictHaveCount:
-                #这个任务有最大次数限制, 设置最大次数
-                curMission.SetProperty(curMissionData.DayMaxCount, maxCount)
-            
-            if curMissionData.ResetMaxCount != 0:
-                #继承任务重置信息
-                curMission.SetProperty(curMissionData.ResetCurCountDictName, curResetCount, False)
-            
-            #还可以触发, 次数+1, 设置任务步骤为0
-            curMission.SetProperty(curMissionData.DayCurCount, curCount + 1)
-            #清除信号灯
-#            curPlayer.Sync_ClearMapMissionLight(curMission.GetMissionID())
-            if curMissionData.Invisible == 1 :
-                #有次数任务,使用OVER逻辑,完成一次后需清空任务描述,不显示在查询栏
-                QuestCommon.SetPlayerMissionState(curPlayer, curMission, -1)
-            else:
-                #显示在查询栏    
-                QuestCommon.SetPlayerMissionState(curPlayer, curMission, 0)
-            curMission.SetDescriptionIndex(0)
-            EventShell.NotifyOneMission(curPlayer, curMission)
-            
-            if noneEvent == 0:
-                DoTalkOrExit(curPlayer)
-            
-            #触发下一个跑环任务
-            __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode)
-            return 
-    
-    #----------------------------任务完成
-    QuestCommon.SetPlayerMissionState(curPlayer, curMission, -1)
-    curMission.SetDescriptionIndex(len(curMissionData.QuestDescriptionList) - 1)    
-    EventShell.NotifyOneMission(curPlayer, curMission, isNotifyAll=False)
-    # 完成任务事件 (配合前端,在通知任务状态后再触发)
-    GameFuncComm.DoFuncOpenLogic(curPlayer, [missionID])
-    #删除这个任务
-    #第一个任务决定是否要触发OnEnter事件, 所以不能删除
-    if missionID != 1 and diff_event == 0:
-        if curMissionData.DayMaxCount != '':
-            #清空任务字典ClearProperty()
-            __ClearMissionProperty(curPlayer, curMission)
-            
-            if curMissionData.ResetMaxCount != 0:
-                #继承任务重置信息
-                curMission.SetProperty(curMissionData.ResetCurCountDictName, curResetCount, False)
-            
-        else:
-            QuestCommon.DeleteMission(curPlayer, missionID)
-            curMission = None
-        
-    #任务完成删除,不触发后续任务
-    if del_event == 1:
-        DoTalkOrExit(curPlayer)
-        
-        #触发下一个跑环任务
-        __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode)    
-        return
-    
-    #不退出事件,不触发后续任务
-    if two_event == 1:
-        
-        #触发下一个跑环任务
-        __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode)   
-        return
-    
-    if not QuestTrig.has_key(missionID) :
-        #GameWorld.Log("不能触发下一个任务! noneEvent = %s"%noneEvent, curPlayer.GetPlayerID())
-        if noneEvent == 0:
-            DoTalkOrExit(curPlayer)
-        
-        #触发下一个跑环任务
-        __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode)   
-        return
-    
-    trigList = QuestTrig[missionID]
-    
-    gameWorld = GameWorld.GetGameWorld()
-    
-    continueMission = 0
-    
-    for trig in trigList:
-        #//职业验证检查不通过
-        if trig.CheckJob != '' and int(trig.CheckJob) != curPlayer.GetJob():
-            continue
-        
-        nextMission = FindQuestFunc(trig.Next)
-        
-        if nextMission == None:
-            continue
-        
-        #当前任务为节庆任务 并且 下一个任务没有激活
-        if nextMission.Type == QuestCommon.Def_GM_Active_Mission_Type and (not gameWorld.IsEventActive(trig.Next)):
-            continue
-        
-        if curPlayer.FindMission(trig.Next) == True:
-            #GameWorld.Log("已经有下一个任务, 删除!" , curPlayer.GetPlayerID())
-            QuestCommon.DeleteMission(curPlayer, trig.Next)
-            
-        curAddMission = QuestCommon.AddNewMission(curPlayer, trig.Next)
-        EventShell.NotifyOneMission(curPlayer, curAddMission)
-        
-        if trig.Continue != 0:
-            continueMission = trig.Next
-            
-    if continueMission == 0:
-        #任务全部执行完毕, 退出
-        if noneEvent == 0:
-            DoTalkOrExit(curPlayer)
-        
-        #触发下一个跑环任务
-        __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode)   
-        return
-    
-    curContinueMissionData = FindQuestFunc(continueMission)
-    npcID = curContinueMissionData.NPCID
-    key = ("on_visit", "%s.xml" % npcID)
-    questEvent = curContinueMissionData.QuestsEvent
-    
-    if not questEvent.has_key(key) :
-        GameWorld.Log("任务ID = %s 字典中 没有Key = %s, 字典 = %s" % (continueMission, str(key), str(questEvent)) , curPlayer.GetPlayerID())
-        return
-    
-    questNode = questEvent[key].GetXMLEventLoader().GetNodeList()
-
-    #设置人物当前运行的任务
-    RunQuest(curPlayer, continueMission, questNode)
-    
-    #触发下一个跑环任务
-    __RunAroundMission(curPlayer, missionID, curMissionData, curActionNode)   
-
-#---------------------------------------------------------------------
-##触发奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <reward_action index="奖励节点", exp_multiple="经验奖励倍值200代表2倍,默认1倍"/>
-def DoType_Reward_Action(curPlayer, curMission, curActionNode):
-    #格式 : <reward_action index = "1"/>      index可选
-    rewardNode = QuestCommon.GetRewardNode(curPlayer, curMission)
-    if rewardNode == None or rewardNode.IsEmpty():
-        GameWorld.Log("DoType_Reward_Action, 没有奖励!! curMission.GetDescriptionIndex() = %d" % curMission.GetDescriptionIndex() , curPlayer.GetPlayerID())
-        return
-    
-    actionIndexStr = rewardNode.GetAttribute("index")
-    actionIndex = GameWorld.ToIntDef(actionIndexStr, 0) 
-
-    actionsNode = rewardNode.FindChildNode("actions")
-    if actionsNode == None or actionsNode.IsEmpty():
-        GameWorld.Log("No Reward Action! curMission = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
-        return
-    
-    rewardAction = actionsNode.GetChild(actionIndex)
-    if (rewardAction == None or rewardAction.IsEmpty()) and GameWorld.GetGameWorld().GetDebugLevel() \
-        and curPlayer.GetGMLevel() == ChConfig.Def_GM_LV_God:
-        GameWorld.DebugAnswer(curPlayer, "###任务没有奖励! ID=%s" % curMission.GetMissionID())
-        
-    exp_multiple = GameWorld.ToIntDef(curActionNode.GetAttribute("exp_multiple"), 0)
-    if exp_multiple > 0:
-        curPlayer.SetDict(ChConfig.Def_PlayerKey_TaskExpRewardMultiple, exp_multiple)
-        
-    __DoAnswerActionNode(curPlayer, curMission, rewardAction)
-        
-    if exp_multiple > 0:
-        # 最后要重置经验奖励倍值
-        curPlayer.SetDict(ChConfig.Def_PlayerKey_TaskExpRewardMultiple, 0)
-    return
-
-##跑环完成
-# @param curPlayer 玩家实例
-# @param missionType 任务类型
-# @return 返回值无意义
-def OnAroundMissionFinish(curPlayer, missionType, addCnt=1):
-    #跑环任务id列表
-    # 活跃度
-    GameWorld.Log('    跑环完成触发活跃度 missionType=%s'%missionType, curPlayer.GetPlayerID())
-    if missionType == QuestCommon.Def_Mission_Type_RunDaily:
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_DailyRunMission, addCnt)
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_TaskCRun, addCnt)
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskCRun, addCnt)
-        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
-        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
-        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_RunTask, 1)
-    elif missionType == QuestCommon.Def_Mission_Type_RunFamily:
-        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RunTask, addCnt)
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt)
-        PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Task, addCnt)
-        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt)
-        PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RunFamilyTask, addCnt)
-        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunFamilyTask, addCnt)
-        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunFamilyTask, addCnt)
-        
-    else:
-        GameWorld.Log('    跑环完成触发活跃度异常 missionType=%s'%missionType, curPlayer.GetPlayerID())
-        return
-    EventShell.EventRespons_AroundMission(curPlayer, missionType)
-    return
-
-
-#---------------------------------------------------------------------
-##设置特殊家族任务奖励倍数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <set_reward_rate />
-def DoType_Set_Reward_Rate(curPlayer, curMission, curActionNode):
-    #<set_reward_rate>    (1+(familyLV - 1)*0.5)
-    #家族等级
-    familyLV = curPlayer.GetFamilyLV()
-    rewardRate = int(eval(ReadChConfig.GetChConfig('Def_Family_Mission_Reward')))
-    if not curMission:
-        GameWorld.Log("###设置特殊家族任务奖励倍数异常,玩家无此任务,playerid = %s" % curPlayer.GetPlayerID())
-        return
-    
-    curMission.SetProperty('rewardRate', rewardRate)
-
-
-# rewardLV为指定等级奖励,isMaxLV为是否取最大
-def GetRunAroundReward(curPlayer, runAroundReward, rewardLV=0, isMaxLV=False):
-    if not runAroundReward:
-        GameWorld.ErrLog("跑环任务奖励错误", curPlayer.GetID())
-        return
-    
-    curRewardLV = rewardLV if rewardLV > 0 else curPlayer.GetLV()
-
-    if isMaxLV:
-        curRewardLV = runAroundReward.MaxLV
-    
-    #纠正下指定奖励范围
-    if curRewardLV < runAroundReward.MinLV:
-        curRewardLV = runAroundReward.MinLV
-    if curRewardLV > runAroundReward.MaxLV:
-        curRewardLV = runAroundReward.MaxLV
-    
-    for lvInfo in runAroundReward.Rewards:
-        if curRewardLV >= lvInfo[0] and curRewardLV <= lvInfo[1]:
-            return runAroundReward.Rewards[lvInfo]
-    
-    return
-
-#---------------------------------------------------------------------
-##增加日常任务奖励倍率
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Add_Day_Event_Reward_Rate value="增加的倍率<万分率>" /> 
-def DoType_Add_Day_Event_Reward_Rate(curPlayer, curMission, curActionNode):
-    addRewardRate = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    
-    rewardRate = ChConfig.Def_Mission_Reward_Rate
-    if curMission and curMission.GetProperty('rewardRate'):
-        rewardRate = curMission.GetProperty('rewardRate')
-    
-    if addRewardRate <= 0:
-        return
-    
-    GameWorld.DebugLog("DoType_Add_Day_Event_Reward_Rate rewardRate=%s,addRewardRate=%s"
-                       % (rewardRate, addRewardRate))
-    curMission.SetProperty('rewardRate', rewardRate + addRewardRate)
-    return
-
-#---------------------------------------------------------------------
-##设置跑环任务星级
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_Run_Star value="指定星级" id_name="任务ID存储key" /> 
-def DoType_Set_Run_Star(curPlayer, curMission, curActionNode):
-    idNameStr = curActionNode.GetAttribute("id_name")
-    if curMission and idNameStr != "":
-        questID = GameWorld.ToIntDef(curMission.GetProperty(idNameStr), 0)
-        if questID != 0:
-            curMission = curPlayer.FindMission(questID)
-            if curMission == None:
-                curMission = QuestCommon.AddNewMission(curPlayer, questID)
-            
-    curMissionID = curMission.GetMissionID()
-    curMissionData = FindQuestFunc(curMissionID)
-    if not curMissionData:
-        return
-    missionType = curMissionData.Type
-    Def_Around_Star = GetRunKey(missionType, Key_Around_Star)
-    
-    setStar = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    
-    if setStar > 0:
-        aroundStar = setStar
-    else:
-        #---随机星级
-        randStarList = eval(ReadChConfig.GetChConfig('RunAround_Star'))
-        aroundStar = GameWorld.GetResultByRandomList(randStarList, 1)
-        
-        vipStar = 0
-        if vipStar > 0:
-            aroundStar = vipStar
-        
-        #vipLVStar = ReadChConfig.GetEvalChConfig('RunAround_StarVIP')
-        #if len(vipLVStar) == 2:
-        #    vipLV, vipStar = vipLVStar
-        #    if curPlayer.GetVIPLv() >= vipLV:
-        #        aroundStar = vipStar
-    
-    GameWorld.DebugLog("DoType_Set_Run_Star setStar=%s,aroundStar=%s" % (setStar, str(aroundStar)))
-    curMission.SetProperty(Def_Around_Star, aroundStar)
-    return
-
-#def OnRunMissionStarChange(curPlayer, curMission, prevStar):
-#    curStar = curMission.GetProperty(Def_Around_Star)
-#    
-#    # 更新最大杀怪数
-#    kill_id_count = QuestCommon.Def_Kill_Npc_ID_Count
-#    max_kill_count = curMission.GetProperty(kill_id_count)
-#    reduceCnt = ReadChConfig.GetEvalChConfig("RunAround_StarKillCnt")
-#    if reduceCnt > 0:
-#        max_kill_count = max(1, max_kill_count - reduceCnt * (curStar - prevStar))
-#        curMission.SetProperty(kill_id_count, max_kill_count)
-#    return
-
-##设置跑环任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks 设置跑环任务奖励 <set_run_around_reward multiple="指定倍数" id_name="任务ID存储key" /> 
-def DoType_Set_Run_Around_Reward(curPlayer, curMission, curActionNode):
-    curMissionID = curMission.GetMissionID()
-    GameWorld.Log("DoType_Set_Run_Around_Reward---%s"%curMissionID, curPlayer.GetID())
-    idNameStr = curActionNode.GetAttribute("id_name")
-    if curMission and idNameStr != "":
-        questID = GameWorld.ToIntDef(curMission.GetProperty(idNameStr), 0)
-        if questID != 0:
-            curMission = curPlayer.FindMission(questID)
-            if curMission == None:
-                curMission = QuestCommon.AddNewMission(curPlayer, questID)
-            
-    curMissionData = FindQuestFunc(curMissionID)
-    if not curMissionData:
-        return
- 
-    rewardList = __GetRunAroundReward(curPlayer, curMission)
-    if rewardList:
-        curExp, curMoney, curFamilyHornor, itemID, itemCount, goldPaper = rewardList
-    else:
-        curExp, curMoney, curFamilyHornor, itemID, itemCount, goldPaper = 0, 0, 0, 0, 0
-    
-    curMission.SetProperty(Def_Run_Around_Reward_Exp, curExp % ChConfig.Def_PerPointValue)
-    curMission.SetProperty(Def_Run_Around_Reward_ExpPoint, curExp / ChConfig.Def_PerPointValue)
-    curMission.SetProperty(Def_Run_Around_Reward_Money, curMoney)
-    curMission.SetProperty(Def_Run_Around_Reward_GoldPaper, goldPaper)
-    
-    curMission.SetProperty(Def_Day_Event_Reward_Item_Id, itemID)
-    curMission.SetProperty(Def_Day_Event_Reward_Item_Count, itemCount)
-    curMission.SetProperty(Def_Run_Around_Reward_FamilyHornor, curFamilyHornor)
-    
-    return
-
-
-
-##获取跑环任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param isQuick 是否一键快速完成
-# @return curExp, curMoney, pfavalue  找不到返回None
-def __GetRunAroundReward(curPlayer, curMission, rewardLV=0):
-    curRewardLV = rewardLV if rewardLV > 0 else curPlayer.GetLV()
-    runAroundReward = FindQuestFunc(curMission.GetMissionID()).RunAroundReward
-
-    curLVRunAroundReward = GetRunAroundReward(curPlayer, runAroundReward, curRewardLV)
-    #等级奖励异常QuestTrig.has_key(missionID)
-    if curLVRunAroundReward == None:
-        GameWorld.Log("奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-    
-    baseExp = curLVRunAroundReward.Exp
-    baseMoney = curLVRunAroundReward.Money
-    reLV = curRewardLV
-    reExp = PlayerControl.GetPlayerReExp(curPlayer)
-    
-    curExp = eval(IpyGameDataPY.GetFuncCfg('RunTaskExp'))
-    curExp += curLVRunAroundReward.AddExp
-    curMoney = baseMoney
-    curGoldPaper = curLVRunAroundReward.GoldPaper
-    curFamilyHornor = curLVRunAroundReward.PlayerFamilyHornor
-    itemInfo = curLVRunAroundReward.Item
-    if itemInfo:
-        itemID, itemCount = eval(itemInfo)
-    else:
-        itemID, itemCount = 0, 0
-   
-    return (curExp, curMoney, curFamilyHornor, itemID, itemCount, curGoldPaper)
-  
-#---------------------------------------------------------------------
-##给予跑环奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks 给予跑环奖励
-def DoType_Give_Run_Around_Reward(curPlayer, curMission, curActionNode):
-    #XML :  <give_run_around_reward/>
-    curMissionID = curMission.GetMissionID()
-    OnAroundMissionFinish(curPlayer, FindQuestFunc(curMissionID).Type)
-    runAroundReward = FindQuestFunc(curMissionID).RunAroundReward
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    
-    exp = curMission.GetProperty(Def_Run_Around_Reward_Exp)
-    expPoint = curMission.GetProperty(Def_Run_Around_Reward_ExpPoint)
-    exp = expPoint * ChConfig.Def_PerPointValue + exp
-    money = curMission.GetProperty(Def_Run_Around_Reward_Money)
-    moneyDict = {}
-    if exp != 0:
-        playerControl.AddExp(exp)
-        #PlayerControl.NotifyCode(curPlayer, 'GeRen_lhs_0', [exp])
-    if money:
-        addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"}
-        PlayerControl.GiveMoney(curPlayer, runAroundReward.MoneyType, money, ChConfig.Def_GiveMoney_Mission, addDataDict, False)
-        moneyDict[runAroundReward.MoneyType] = money
-    goldPaper = curMission.GetProperty(Def_Run_Around_Reward_GoldPaper)
-    if goldPaper:
-        moneyType = IPY_GameWorld.TYPE_Price_Gold_Paper
-        addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"}
-        PlayerControl.GiveMoney(curPlayer, moneyType, goldPaper, ChConfig.Def_GiveMoney_Mission, addDataDict)
-        moneyDict[moneyType] = goldPaper        
-    familyHornor = curMission.GetProperty(Def_Run_Around_Reward_FamilyHornor)
-    if familyHornor: 
-        PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, familyHornor, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson, True)
-        moneyDict[ShareDefine.TYPE_Price_Family_Contribution] = familyHornor
-    item_id = curMission.GetProperty(Def_Day_Event_Reward_Item_Id)
-    item_count = curMission.GetProperty(Def_Day_Event_Reward_Item_Count)
-    
-    #给物品奖励
-    itemInfo = []
-    if item_id and item_count:
-        itemInfo = [[item_id, item_count, True]]
-        packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, 1)
-        if 1 > packSpace:
-            PlayerControl.NotifyCode(curPlayer, "UnionTask_Reward")
-            PlayerControl.SendMailByKey("UnionTaskReward", [curPlayer.GetID()], itemInfo)
-        else:
-            AddEventItem(curPlayer, curMission, item_id, item_count, bind=True)
-        
-    GameWorld.DebugLog("任务:%d  获得经验:%d,钱=%s,物品ID=%s,物品数量=%s" 
-                       % (curMission.GetMissionID(), exp, money, item_id, item_count))
-    
-    FBLogic.DoFB_OnFinishRunAroundTask(curPlayer, curMissionID, exp, moneyDict, itemInfo)
-    
-    #触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        DataRecordPack.DR_EventAddMoney(curPlayer, "Run_Reward", curMissionID,
-                                        runAroundReward.MoneyType, money)
-    return
-        
-##给予所有跑环奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks 给予跑环奖励
-def DoType_Give_Run_All_Around_Reward(curPlayer, curMission, curActionNode):
-    # 跑环环数上限,从0开始
-#    curMissionID = curMission.GetMissionID()
-#    curMissionData = FindQuestFunc(curMissionID)
-#    if not curMissionData:
-#        return
-#    missionType = curMissionData.Type
-#    Def_Around_Count = GetRunKey(missionType, Key_Around_Count)
-#    Def_Around_Star = GetRunKey(missionType, Key_Around_Star)
-#        
-#    maxAroundCnt = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 2)
-#    curAroundCnt = curMission.GetProperty(Def_Around_Count)
-#    if curAroundCnt >= maxAroundCnt:
-#        GameWorld.DebugLog("一键完成跑环任务 id=%s,当前环=%s,最大环=%s" 
-#                           % (curMissionID, curAroundCnt, maxAroundCnt))
-#        return
-#    
-#    multiple = GameWorld.ToIntDef(curActionNode.GetAttribute("multiple"), 0)
-#    
-#    rewardCnt = maxAroundCnt - curAroundCnt
-#    GameWorld.DebugLog("一键完成跑环任务 id=%s,当前环数=%s,最大环数=%s,奖励环数=%s" 
-#                       % (curMissionID, curAroundCnt, maxAroundCnt, rewardCnt))
-#    
-#    runAroundReward = FindQuestFunc(curMissionID).RunAroundReward
-#    playerControl = PlayerControl.PlayerControl(curPlayer)
-#    
-#    addExp = 0
-#    addMoney = 0
-#    addPfavalue = 0
-#    addFHomeExp = 0
-#    curLV = curPlayer.GetLV()
-#    curTotalExp = PlayerControl.GetPlayerTotalExp(curPlayer)
-#    #pfavalue = curMission.GetProperty(Def_Run_Around_Reward_PFAV)
-#    for i in range(rewardCnt):
-#        rewardLV = PlayerControl.GetRealPlayerLvEx(curLV, curTotalExp + addExp)
-#        rewardList = __GetRunAroundReward(curPlayer, curMission, 1, Def_Around_Count, 
-#                                          Def_Around_Star, rewardLV, multiple)
-#        if not rewardList:
-#            continue
-#        
-#        
-#        exp, money, curSoul, pfavalue, familyHomeExp = rewardList
-#        
-#        addExp += exp
-#        addMoney += money
-#        addFHomeExp += familyHomeExp
-#        
-#        if pfavalue != 0 and curPlayer.GetFamilyID() != 0:
-#            addPfavalue += pfavalue
-#                
-#        GameWorld.DebugLog("    给环奖励i=%s,curLV=%s,rewardLV=%s,exp=%s,money=%s,pfavalue=%s" 
-#                           % (i, curLV, rewardLV, exp, money, pfavalue))
-#
-#    OnAroundMissionFinish(curPlayer, missionType, rewardCnt)
-#    OnTodayAroundMissionFinish(curPlayer, missionType)
-#    
-#    if addExp > 0:
-#        playerControl.AddExp(addExp)
-#        
-#    if addMoney > 0:
-#        addDataDict = {ChConfig.Def_Give_Reason_SonKey:"AllRun"}
-#        PlayerControl.GiveMoney(curPlayer, runAroundReward.MoneyType, addMoney, ChConfig.Def_GiveMoney_Mission, addDataDict)
-#        if GameWorld.IsMissonDR(curPlayer):
-#            DataRecordPack.DR_EventAddMoney(curPlayer, "Run_Reward", curMissionID, 
-#                                            runAroundReward.MoneyType, addMoney)
-#        
-#    if addPfavalue > 0:
-#        PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPfavalue, True,
-#                                                    ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-#    
-#    if addFHomeExp > 0:
-#        PlayerFamily.AddFamilyHomeExp(curPlayer, addFHomeExp)
-#         
-#    GameWorld.DebugLog("    环总奖励 exp=%s,money=%s,pfavalue=%s,addFHomeExp=%s" % (addExp, addMoney, addPfavalue, addFHomeExp))
-    return
-
-##给予悬赏任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks 给予悬赏任务奖励
-def DoType_Give_Arrest_Reward(curPlayer, curMission, curActionNode):
-    #XML :  <give_arrest_reward/>
-    
-    curMissionID = curMission.GetMissionID()
-    if curMissionID != ChConfig.Def_ArrestMissionID:
-        return
-    PlayerArrestTask.OnArrestTaskOver(curPlayer)
-    
-    return
-#---------------------------------------------------------------------
-##给每日任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Day_Event_Reward type="奖励类型"/>
-def DoType_Set_Day_Event_Reward(curPlayer, curMission, curActionNode):
-    #给每日任务奖励
-    #<set_day_event_reward type=""/>
-    #2009.7.8新增镖车任务奖励特殊处理
-    missionType = GameWorld.ToIntDef(curActionNode.GetAttribute("type"), 0)
-    curRewardLV = curPlayer.GetLV()
-    dayEventReward = FindQuestFunc(curMission.GetMissionID()).DayEventReward
-    familyLV = curPlayer.GetFamilyLV()
-    if dayEventReward == None:
-        GameWorld.Log("奖励错误 id = %d" % curMission.GetMissionID() , curPlayer.GetPlayerID())
-        return
-    
-    if curRewardLV < dayEventReward.MinLV:
-        curRewardLV = dayEventReward.MinLV
-    if curRewardLV > dayEventReward.MaxLV:
-        curRewardLV = dayEventReward.MaxLV
-    #等级奖励异常QuestTrig.has_key(missionID)
-    if not dayEventReward.Rewards.has_key(curRewardLV):
-        GameWorld.Log("##等级奖励异常,没有经验奖励")
-        PlayerControl.NotifyCode(curPlayer, "Task_cannot_Perfection")
-        return
-    
-    #家族任务奖励倍率,默认为1倍:10000(2009.10.26)******************
-    rewardRate = ChConfig.Def_Mission_Reward_Rate
-    if curMission and curMission.GetProperty('rewardRate'):
-        rewardRate = curMission.GetProperty('rewardRate')
-    
-    #当前等级任务奖励结构体
-    curLVDayEventReward = dayEventReward.Rewards[curRewardLV]
-    
-    #每日任务经验奖励
-    baseExp = curLVDayEventReward.Exp
-    count = curMission.GetProperty(QuestCommon.Def_Day_Event_Cur_Complete_Count)
-    if missionType == 0:
-        curExp = eval(ChConfig.Def_Day_Event_Exp_Reward_Formula) * rewardRate
-    #特殊镖车
-    elif missionType == 1:
-        curExp = eval(ReadChConfig.GetChConfig('Mission_Truck_Exp')) * rewardRate
-    curMission.SetProperty(Def_Day_Event_Reward_Exp, int(curExp / ChConfig.Def_Mission_Reward_Rate))
-    #金钱奖励
-    if curLVDayEventReward.Money != 0:
-        curMission.SetProperty(Def_Day_Event_Reward_Money, curLVDayEventReward.Money)   
-    #镖车压金
-    if curLVDayEventReward.TruckMoney != 0:
-        curMission.SetProperty(Def_Day_Event_Reward_Truck_Money, curLVDayEventReward.TruckMoney)
-    #家族贡献
-    if curLVDayEventReward.PlayerFamilyHornor != 0:
-        if missionType == 0:
-            playerFamilyHornor = (curLVDayEventReward.PlayerFamilyHornor) * rewardRate
-        elif missionType == 1:
-            playerFamilyHornor = ((curLVDayEventReward.PlayerFamilyHornor) * familyLV) * rewardRate
-            
-        curMission.SetProperty(Def_Day_Event_Reward_Player_Family_Hornor, int(playerFamilyHornor / ChConfig.Def_Mission_Reward_Rate))    
-    #家族活跃
-    if curLVDayEventReward.PlayerFamilyActiveValue != 0:
-        if missionType == 0:
-            playerFamilyActive = (curLVDayEventReward.PlayerFamilyActiveValue) * rewardRate
-        elif missionType == 1:
-            playerFamilyActive = ((curLVDayEventReward.PlayerFamilyActiveValue) * familyLV) * rewardRate
-            
-        curMission.SetProperty(Def_Day_Event_Reward_Player_Family_ActiveValue, int(playerFamilyActive / ChConfig.Def_Mission_Reward_Rate))
-    #家族资金
-    if curLVDayEventReward.FamilyMoney != 0:
-        if missionType == 0:
-            familyMoney = (curLVDayEventReward.FamilyMoney) * rewardRate
-        elif missionType == 1:
-            familyMoney = ((curLVDayEventReward.FamilyMoney) * familyLV) * rewardRate
-        
-        curMission.SetProperty(Def_Day_Event_Reward_Family_Money, int(familyMoney / ChConfig.Def_Mission_Reward_Rate))
-    #家族个人荣誉
-    if curLVDayEventReward.FamilyHornor != 0:
-        if missionType == 0:
-            familyHornor = (curLVDayEventReward.FamilyHornor) * rewardRate
-        elif missionType == 1:
-            familyHornor = ((curLVDayEventReward.FamilyHornor) * familyLV) * rewardRate
-            
-        curMission.SetProperty(Def_Day_Event_Reward_Family_Hornor, int(familyHornor / ChConfig.Def_Mission_Reward_Rate))
-    
-    #---宠物经验---
-    if curLVDayEventReward.PetExp != 0:
-        if missionType == 0:
-            petExp = int(curLVDayEventReward.PetExp * rewardRate / ChConfig.Def_Mission_Reward_Rate)
-        elif missionType == 1:
-            petExp = int(curLVDayEventReward.PetExp * familyLV * rewardRate / ChConfig.Def_Mission_Reward_Rate)
-            
-        curMission.SetProperty(Def_Day_Event_Reward_Pet_Exp, petExp)
-    
-    #---物品---
-    listStr = curLVDayEventReward.Item
-    itemID, itemCount = DealWithInPut_InDig(listStr)
-    if itemID == 0:
-        return
-    
-    curMission.SetProperty(Def_Day_Event_Reward_Item_Id, itemID)
-    curMission.SetProperty(Def_Day_Event_Reward_Item_Count, itemCount)
-    
-    #---威望---
-    if curLVDayEventReward.Prestige != 0:
-        curMission.SetProperty(Def_Day_Event_Reward_Prestige, curLVDayEventReward.Prestige)
-    return
-
-
-#---------------------------------------------------------------------
-##每日任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Give_Day_Event_Reward />
-def DoType_Give_Day_Event_Reward(curPlayer, curMission, curActionNode):
-    #XML :  <give_day_event_reward/>
-    #每日任务不享受经验加成奖励
-    #---获取玩家属性---
-    curPlayerID = curPlayer.GetID()
-    curPlayerFamilyID = curPlayer.GetFamilyID()
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    
-    #---获取任务属性---
-    curMissionID = curMission.GetMissionID()
-    dayEventReward = FindQuestFunc(curMissionID).DayEventReward
-    addExp = curMission.GetProperty(Def_Day_Event_Reward_Exp)
-    addMoney = curMission.GetProperty(Def_Day_Event_Reward_Money)
-#===============================================================================
-#    #镖车毁坏后的奖励改变
-#    if curMissionID == curPlayer.GetTruckEventID():
-#        if curPlayer.GetTruckState()== IPY_GameWorld.tusDestroy:
-#            exp = int(exp * ChConfig.Def_Day_Event_Truck_Destroy_Exp)
-#            money = int(money * ChConfig.Def_Day_Event_Truck_Destroy_Money)
-#===============================================================================
-    if addExp > 0:
-        playerControl.AddExp(addExp)
-        #GameWorld.Log("任务%s, 获得经验:%s"%(curMission.GetMissionID(), addExp), curPlayerID)
-    
-    if addMoney > 0:
-        addDataDict = {ChConfig.Def_Give_Reason_SonKey:"DayEvent"}
-        PlayerControl.GiveMoney(curPlayer, dayEventReward.MoneyType, addMoney, ChConfig.Def_GiveMoney_Mission, addDataDict)
-    
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        DataRecordPack.DR_EventAddMoney(curPlayer, "Day_Event_Reward", curMissionID,
-                                        dayEventReward.MoneyType, addMoney)
-    
-    if curPlayerFamilyID > 0:
-        #添加的个人活跃度
-        addPlayerActiveValue = curMission.GetProperty(Def_Day_Event_Reward_Player_Family_ActiveValue)
-        #添加家族资金
-        addFamilyMoney = curMission.GetProperty(Def_Day_Event_Reward_Family_Money)
-        if addPlayerActiveValue > 0:
-            PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addPlayerActiveValue,
-                                                sendPackGameServer=False, reason=ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-            
-            PlayerControl.NotifyCode(curPlayer , "Family_Task_Award02", [addPlayerActiveValue])
-        
-        if addFamilyMoney > 0:
-            PlayerControl.NotifyCode(curPlayer , "Family_Task_Award03", [addFamilyMoney])
-        
-        #累加家族属性
-        PlayerFamily.SendPack_GameServer_AddFamilyDetailEx(curPlayer, addPlayerActiveValue, addFamilyMoney=addFamilyMoney, 
-                                                           resion=ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-
-    #宠物经验奖励
-    #petExpValue = curMission.GetProperty(Def_Day_Event_Reward_Pet_Exp)
-        
-    item_id = curMission.GetProperty(Def_Day_Event_Reward_Item_Id)
-    item_count = curMission.GetProperty(Def_Day_Event_Reward_Item_Count)
-    
-    if item_id <= 0 or item_count <= 0:
-        return
-    
-    #给物品奖励
-    AddEventItem(curPlayer, curMission, item_id, item_count)
-    
-    #威望奖励
-    #addPrestige = curMission.GetProperty(Def_Day_Event_Reward_Prestige)
-    #if addPrestige != 0:
-    #    PlayerPrestigeSys.AddPrestigeOffcialLV(curPlayer, addPrestige, ChConfig.Def_AddPrestige_DayMission)
-        
-    return
-
-#---------------------------------------------------------------------
-##打开界面
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <open_frm cmd = "打开界面"/>
-def DoType_Open_Frm(curPlayer, curMission, curActionNode):
-    #<open_frm cmd = "task_frm"/>
-    msg = curActionNode.GetAttribute("cmd")
-    curPlayer.Frm_Open(msg)
-    return
-
-#---------------------------------------------------------------------
-##打开泡泡
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <open_Bubble cmd = "打开界面"/>
-def DoType_Open_Bubble(curPlayer, curMission, curActionNode):
-    #<open_Bubble cmd = "打开界面"/>
-    msg = curActionNode.GetAttribute("cmd")
-    curPlayer.OpenBubble(msg)
-    return
-
-#---------------------------------------------------------------------
-##增加进入副本次数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Add_Fbcnt mapid = "地图ID"  count = "次数" />
-def DoType_Add_Fbcnt(curPlayer, curMission, curActionNode):
-    ## 这边是任务直接赠送的,相当于给赠送道具,这里默认直接转化为道具使用后增加的次数
-    mapID = int(curActionNode.GetAttribute("mapid"))
-    count = GameWorld.ToIntDef(curActionNode.GetAttribute("count"), 1)
-    itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ItemAddFbCnt % mapID, itemAddCnt + count)
-    FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID)
-    return
-
-##进入单人副本
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Single_Enter_FB mapid = "地图ID" lineid = "线路ID" posx = "坐标X" posy = "坐标Y"/>
-def DoType_Single_Enter_Fb(curPlayer, curMission, curActionNode):
-    #<Single_Enter_FB mapid = "505" posx = "35" posy = "32"/>
-    mapID = int(curActionNode.GetAttribute("mapid"))
-    lineID = GameWorld.ToIntDef(curActionNode.GetAttribute("lineid"), 0)
-    posx = GameWorld.ToIntDef(curActionNode.GetAttribute("posx"), 0)
-    posy = GameWorld.ToIntDef(curActionNode.GetAttribute("posy"), 0)
-    PlayerControl.PlayerEnterFB(curPlayer, mapID, lineID, posx, posy)
-    #记录副本对应的任务ID
-    if FBCommon.GetRecordMapID(mapID) in [ChConfig.Def_FBMapID_ClearDevil, ChConfig.Def_FBMapID_MagicWeapon]:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMissionID, curMission.GetMissionID())
-        missionID = curMission.GetMissionID()
-        curMissionData = FindQuestFunc(missionID)
-        if curMissionData:
-            missionType = curMissionData.Type
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMissionType, missionType)
-    return
-
-#---------------------------------------------------------------------
-##进入组队副本
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Team_Enter_FB mapid = "地图ID" posx = "坐标X" posy = "坐标Y"/>
-def DoType_Team_Enter_Fb(curPlayer, curMission, curActionNode):
-    DoType_Single_Enter_Fb(curPlayer, curMission, curActionNode)
-    return
-
-#---------------------------------------------------------------------
-##进入家族副本
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Family_Enter_FB mapid = "地图ID" posx = "坐标X" posy = "坐标Y"/>
-def DoType_Family_Enter_Fb(curPlayer, curMission, curActionNode):
-    DoType_Single_Enter_Fb(curPlayer, curMission, curActionNode)
-    return
-
-#---------------------------------------------------------------------
-#def NotifyNewQuestInfo(curPlayer, curMission):
-#    if curMission.GetState() != 0:
-#        return
-#    
-#    curQuest = FindQuestFunc(curMission.GetMissionID())
-#    day_CountMsg = ReplaceNPCTalkText(curPlayer, curMission, curQuest.Day_Count)
-#    #curQuest.Name
-#    curPlayer.NotifySpecialQuest(curQuest.ID, curQuest.Type, curQuest.NameCode, curQuest.LV, curQuest.MapID, curQuest.NPCID, day_CountMsg)
-#    #GameWorld.Log("-----未接任务 : %s , %s"%(curQuest.Name, day_CountMsg))
-
-#---------------------------------------------------------------------
-##刷新每日任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <refresh_day_event/>
-def DoType_Refresh_Day_Event(curPlayer, curMission, curActionNode):
-#    NotifyNewQuestInfo(curPlayer, curMission)
-    RefreshMission(curPlayer, curMission)
-    return
-
-#---------------------------------------------------------------------
-##删除任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Delete_Mission id="要删除的任务ID"/>
-def DoType_Delete_Mission(curPlayer, curMission, curActionNode):
-    #<Delete_Mission id=""/> 删除任务
-    newMissionID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if newMissionID == 0:
-        missionID = curMission.GetMissionID()
-    else:
-        if not curPlayer.FindMission(newMissionID):
-            # 身上无此任务
-            return
-        missionID = newMissionID
-    #删除这个任务
-    QuestCommon.DeleteMission(curPlayer, missionID)
-    if newMissionID == 0:
-        curMission = None
-    return
-
-
-#---------------------------------------------------------------------
-##添加副本NPC
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Add_FB_NPC id = "NPCID" count = "NPC数量"/>
-def DoType_Add_Fb_Npc(curPlayer, curMission, curActionNode):
-    #添加副本NPC
-    #<Add_FB_NPC id = "" count = ""/>
-    npcid = int(curActionNode.GetAttribute("id"))
-    npcCount = int(curActionNode.GetAttribute("count"))
-    curPlayer.AddChangeMapTakeCreateNPC(npcid, npcCount)
-    return
-
-#---------------------------------------------------------------------
-##给任务特殊奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Give_Special_Mission_Reward />
-def DoType_Give_Special_Mission_Reward(curPlayer, curMission, curActionNode):
-    #<give_special_mission_reward/>
-    QuestRunnerValue.GiveSpecialMissionReward(curPlayer, curMission, curActionNode)
-    return
-
-#---------------------------------------------------------------------
-##关闭副本
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Close_FB />
-def DoType_Close_Fb(curPlayer, curMission, curActionNode):
-    #设定关闭副本的时间
-    GameWorldProcess.CloseFB(GameWorld.GetGameWorld().GetTick())
-    return
-
-#---------------------------------------------------------------------
-##离开副本
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Leave_FB />
-def DoType_Leave_Fb(curPlayer, curMission, curActionNode):
-    #<Leave_FB/>
-    PlayerControl.PlayerLeaveFB(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-##离开副本
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Exit_Fb />
-def DoType_Exit_Fb(curPlayer, curMission, curActionNode):
-    PlayerControl.PlayerLeaveFB(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-##复活点记录
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Reborn_Point />
-def DoType_Set_Reborn_Point(curPlayer, curMission, curActionNode):
-    #把人物设置回重生点
-    gameData = GameWorld.GetGameData()
-    bornRefreshCount = gameData.GetBornRefreshCount()
-    if bornRefreshCount == 0:
-        #GameWorld.Log("此地图没有重生点" , curPlayer.GetPlayerID())
-        return False
-    #一般重生点列表,根据国籍筛选
-    bornList = []
-    #创建重生点列表
-    for i in range(0, bornRefreshCount):
-        bornRefreshPoint = gameData.GetBornRefreshByIndex(i)
-        if GameWorld.IsSameCountry(curPlayer, bornRefreshPoint):
-            bornList.append(i)
-    
-    if len(bornList) == 0:
-        #GameWorld.Log("此地图没有合适玩家的重生点" , curPlayer.GetPlayerID())
-        return False
-    
-    randIndex = random.randint(0, len(bornList) - 1)
-    bornIndex = bornList[randIndex]
-    bornRefreshPoint = gameData.GetBornRefreshByIndex(bornIndex)
-    roundPos = bornRefreshPoint.GetRound()
-    
-    bornX = random.randint(bornRefreshPoint.GetPosX() - roundPos ,
-                               bornRefreshPoint.GetPosX() + roundPos)
-    bornY = random.randint(bornRefreshPoint.GetPosY() - roundPos ,
-                               bornRefreshPoint.GetPosY() + roundPos)
-
-    curPlayer.SetRebornMapID(curPlayer.GetMapID())
-    curPlayer.SetRebornPosX(bornX)
-    curPlayer.SetRebornPosY(bornY)
-    return
-
-##设置已获得法宝个数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Mwcnt key="" />
-def DoType_Set_Mwcnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    curMission.SetProperty(key, PlayerMagicWeapon.GetMWActiveCntTotal(curPlayer))
-    return
-
-##设置坐骑总等级
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Horsetotallv key="" />
-def DoType_Set_Horsetotallv(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, PlayerHorse.GetHorseSumLV(curPlayer))
-    return
-
-##设置某阶达到强化等级的件数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Pluslvpartcnt key="" id="" classLV="" plusLV=""/>
-def DoType_Set_Pluslvpartcnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
-    equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv')
-    classlVList = [classLV] if classLV else range(1, equipMaxClasslv+1)
-
-    needPlusLV = GameWorld.ToIntDef(curActionNode.GetAttribute("plusLV"), 0)
-    totalCnt = 0
-    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
-    for equipPlace in equipPlaceList:
-        for classLV in classlVList:
-            ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
-            if not ipyData:
-                continue
-            partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex())
-            if partStarLV >= needPlusLV:
-                totalCnt += 1
-        
-    curMission.SetProperty(key, totalCnt)
-    return
-
-##设置强化总等级
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Totalpluslv key="" />
-def DoType_Set_Totalpluslv(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, ChEquip.GetTotalPlusLV(curPlayer, False))
-    return
-
-##设置某阶达到X星级的件数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Equiptstarcnt key="" id="" classLV="" star=""/>
-def DoType_Set_Equiptstarcnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
-    equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv')
-    classlVList = [classLV] if classLV else range(1, equipMaxClasslv+1)
-    
-    needStar = GameWorld.ToIntDef(curActionNode.GetAttribute("star"), 0)
-    totalCnt = 0
-    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
-    for equipPlace in equipPlaceList:
-        for classLV in classlVList:
-            ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
-            if not ipyData:
-                continue
-            
-            equipStar = ChEquip.GetEquipPartStar(curPlayer, ipyData.GetGridIndex())
-            if equipStar >= needStar:
-                totalCnt += 1
-                
-    curMission.SetProperty(key, totalCnt)
-    return
-
-##设置装备总星级
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Equiptotalstar key="" />
-def DoType_Set_Equiptotalstar(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, ChEquip.GetTotalEquipStars(curPlayer))
-    return
-#---------------------------------------------------------------------
-##DoType_调度器
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks 执行任务相应逻辑
-def DoAction(curPlayer, curMission, curActionNode):
-    funcName = curActionNode.GetNodeName()
-    funcName = "DoType_" + funcName.title()
-    
-    if globals().has_key(funcName):
-        return globals()[funcName](curPlayer, curMission, curActionNode)
-    else:
-        GameWorld.Log("Error : DoAction actionName = %s" % funcName)
-    
-    return
-
-#---------------------------------------------------------------------
-##执行发布任务
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Send_Pub_Mission missionID="任务ID" pubType="发布类型" /> 
-def DoType_Send_Pub_Mission(curPlayer, curMission, curActionNode):
-    #任务发布 : 任务ID, 发布类型, 发布ID
-    #GameServer_MissionPub(int missionID, int pubType, int pubID);
-    #XML:<send_pub_mission pubType="" pubID=""/>pubType:发布类型 pubID:发布任务ID
-    pubType = GameWorld.ToIntDef(curActionNode.GetAttribute("pubType"), 0)
-    curMissionID = GameWorld.ToIntDef(curActionNode.GetAttribute("missionID"), 0)
-    pubID = curPlayer.GetFamilyID()
-    #通知任务发布
-    curPlayer.GameServer_MissionPub(curMissionID, pubType, pubID)
-    #GameWorld.Log("发布任务成功**************************")
-    return
-
-#---------------------------------------------------------------------
-##玩家当前状态是否能删除任务判断
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Can_Del_Mission /> 
-def ConditionType_Can_Del_Mission(curPlayer, curMission, curConditionNode):
-    #<can_del_mission/>
-    #非空闲状态不处理/非副本状态
-    curMap = GameWorld.GetMap()
-    if curPlayer.GetPlayerAction() != IPY_GameWorld.paNull or curMap.GetMapFBType() != IPY_GameWorld.fbtNull:
-        #您好,您只有在空闲状态下才可放弃任务
-        #PlayerControl.NotifyCode(curPlayer,"Task_cannot_Delete02")
-        return False
-    
-    #移动中不执行此操作
-    if curPlayer.IsMoving():
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##判断是否红名
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Player_Name_Red result="期望结果" /> 
-def ConditionType_Check_Player_Name_Red(curPlayer, curMission, curConditionNode):
-    #0不是,1是     <Check_Player_Name_Red result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    if curPlayer.GetPlayerNameColor() != IPY_GameWorld.pncRed:
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##判断是否2人异性组队
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Player_Diff_Sex_Team result="期望结果" /> 
-def ConditionType_Player_Diff_Sex_Team(curPlayer, curMission, curConditionNode):
-    #<player_diff_sex_team result=""/> 0不是2人异性组队,1是
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0) 
-    
-    curPlayerTeam = curPlayer.GetTeam()
-    if curPlayerTeam == None:
-        return False == result
-    #队伍超过2人,不处理
-    if curPlayerTeam.GetMemberCount() != 2:
-        return False == result
-    
-    for i in range(0, curPlayerTeam.GetMemberCount()):
-        player = curPlayerTeam.GetMember(i)
-        if curPlayer.GetPlayerID() == player.GetPlayerID():
-            continue
-        if curPlayer.GetSex() == player.GetSex():
-            return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##判断队伍任务是否相同状态
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Player_Team_Mission_State state="任务状态" result="期望结果" />      
-def ConditionType_Player_Team_Mission_State(curPlayer, curMission, curConditionNode):
-    #<Player_Team_Mission_State state="" result=""/>
-    state = GameWorld.ToIntDef(curConditionNode.GetAttribute("state"), 0)
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    missionID = curMission.GetMissionID()
-    #玩家自己判断
-    
-    curPlayerTeam = curPlayer.GetTeam()
-    if curPlayerTeam == None:
-        return False == result
-    
-    for i in range(0, curPlayerTeam.GetMemberCount()):
-        player = curPlayerTeam.GetMember(i)
-
-        curMission = player.FindMission(missionID)
-        #有人没有任务,返回
-        if curMission == None:
-            return False == result
-        #任务状态不同,返回
-        if curMission.GetState() != state:
-            return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##判断队伍人数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Team_Player_Count count="期望人数" result="期望结果" />  
-def ConditionType_Team_Player_Count(curPlayer, curMission, curConditionNode):
-    #<Team_Player_Count count="" result=""/>
-    playerCount = GameWorld.ToIntDef(curConditionNode.GetAttribute("count"), 0)
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    curPlayerTeam = curPlayer.GetTeam()
-    #没队伍,返回
-    if curPlayerTeam == None:
-        return False == result
-    #队伍超过,不处理
-    if curPlayerTeam.GetMemberCount() != playerCount:
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##判断是不是队长
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Is_Team_Leader result="期望结果" />  
-def ConditionType_Is_Team_Leader(curPlayer, curMission, curConditionNode):
-    #<Is_Team_Leader result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    curPlayerTeam = curPlayer.GetTeam()
-    #没队伍,返回
-    if curPlayerTeam == None:
-        return False == result
-    
-    if curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader:
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##判断任务状态是否都为0,能否执行删除任务物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Can_Del_All_Mission_Item result="期望结果" />
-def ConditionType_Can_Del_All_Mission_Item(curPlayer, curMission, curConditionNode):
-    #<Can_Del_All_Mission_Item result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    #判断所有任务
-    for i in range(0, curPlayer.GetMissionCount()):
-        curMission = curPlayer.GetMissionByIndex(i)
-        
-        if curMission != None and \
-        curMission.GetState() in [ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_Over]:
-            continue
-        
-        #有任务状态不等于0或-1
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##判断身上有没有任务物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Have_Mission_Item result="期望结果" />
-def ConditionType_Have_Mission_Item(curPlayer, curMission, curConditionNode):
-    #<Have_Mission_Item result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    rolePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    for i in range(0, rolePack.GetCount()):
-        item = rolePack.GetAt(i)
-        
-        if not ItemCommon.CheckItemCanUse(item):
-            continue
-        
-        #是任务物品类型,返回
-        if ItemControler.IsEventItem(item):
-            return True == result
-
-    return False == result
-    
-#---------------------------------------------------------------------
-##执行任务状态都为0,可以删除所有任务相关物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Del_All_Mission_Item /> 
-def DoType_Del_All_Mission_Item(curPlayer, curMission, curActionNode):
-    #<Del_All_Mission_Item/>
-    rolePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    for i in range(0, rolePack.GetCount()):
-        item = rolePack.GetAt(i)
-        
-        if not ItemCommon.CheckItemCanUse(item):
-            continue
-        
-        #不是任务物品类型,不处理
-        if not ItemControler.IsEventItem(item):
-            continue
-        
-        itemCount = item.GetCount()
-        itemID = item.GetItemTypeID()
-        isBind = item.GetIsBind()
-        itemGuid = item.GetGUID()
-        
-        #删除任务物品
-        ItemControler.DelPlayerItem(curPlayer, IPY_GameWorld.rptItem, itemID, itemCount, delEventItem=True, guidList=None)
-        #等级触发OSS记录
-        if GameWorld.IsMissonDR(curPlayer):
-            missionID = QuestCommon.GetMissionID(curMission)
-            dataDict = {"ItemID":itemID, "ItemCount":itemCount, "IsBind":isBind, "ItemGUID":itemGuid,
-                        "MissionID":missionID}
-            DataRecordPack.DR_DeleteItem(curPlayer, "Event_Del_Item_All", dataDict)
-        
-
-#---------------------------------------------------------------------
-##执行算卦随机获得物品
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Player_Lucky_Show /> 
-def DoType_Player_Lucky_Show(curPlayer, curMission, curActionNode):
-    return
-
-#---------------------------------------------------------------------
-##是否星期几判断 
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Week_Index type="__Eval+替换的名字" value="期望值" /> 
-def ConditionType_Week_Index(curPlayer, curMission, curConditionNode):
-    #<week_index type="great" value="1"/>
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionValue = curConditionNode.GetAttribute("value")
-        
-    curTime = GameWorld.GetCurrentTime()
-    #星期几
-    curWeekIndex = curTime.weekday() + 1
-    
-    return QuestRunnerValue.GetEval(conditionType, curWeekIndex, int(conditionValue))
-
-#---------------------------------------------------------------------
-##判断万能背包是否为空
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Anywhere_Bag result="期望值" /> 
-def ConditionType_Check_Anywhere_Bag(curPlayer, curMission, curConditionNode):
-    #<Check_Anywhere_Bag result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    itemManager = curPlayer.GetItemManager()
-    playerPack = itemManager.GetPack(IPY_GameWorld.rptAnyWhere)
-    if not ItemControler.GetPackIsEmpty(playerPack):
-        return False == result
-    
-    return True == result
-
-
-##判断玩家是否有充值过
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Change_Coin result="期望值" /> 
-def ConditionType_Check_Change_Coin(curPlayer, curMission, curConditionNode):
-    #<Check_Anywhere_Bag result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    #玩家兑换点券记录
-    totalChangeCoinPointBefore = curPlayer.GetChangeCoinPointTotal()
-    if totalChangeCoinPointBefore > 0:
-        return True == result
-    
-    return False == result 
-
-
-##判断玩家是否有出战宠物
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Change_Coin result="期望值" /> 
-def ConditionType_Check_Pet_Out(curPlayer, curMission, curConditionNode):
-    #<Check_Anywhere_Bag result=""/>
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    
-    petMgr = curPlayer.GetPetMgr()
-    fightPetObj = petMgr.GetFightPet()  # 出战的宠物对象
-    if fightPetObj != None:
-        return True == result
-    
-    return False == result
-
-
-##判断玩家好友个数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息 
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Friend_Count" type="替换的名字" value="期望值" /> 
-def ConditionType_Check_Friend_Count(curPlayer, curMission, curConditionNode):
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    
-    return QuestRunnerValue.GetEval(conditionType, curPlayer.GetFriendCount(), conditionValue)
-
-
-##判断VIP等级
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息 
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Vip_Lv" type="替换的名字" value="期望值" /> 
-def ConditionType_Check_Vip_Lv(curPlayer, curMission, curConditionNode):
-    conditionType = curConditionNode.GetAttribute("type")
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    vipLv = curPlayer.GetVIPLv()
-    GameWorld.Log("判断VIP等级:%s" % (curPlayer.GetVIPLv()))
-    return QuestRunnerValue.GetEval(conditionType, vipLv, conditionValue)
-
-
-##判断法宝经验
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息 
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Magicweapon_Lv" mwid="法宝ID" value="期望值" /> 
-def ConditionType_Check_Magicweapon_Lv(curPlayer, curMission, curConditionNode):
-    mwid = GameWorld.ToIntDef(curConditionNode.GetAttribute("mwid"), 0)
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    return PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwid, conditionValue)
-
-##判断魔族法宝通关关卡
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息 
-# @return 返回值, 是否通过检查
-# @remarks  <Check_Magicweapon_Passfblv" mwid="法宝ID" value="期望值" /> 
-def ConditionType_Check_Magicweapon_Passfblv(curPlayer, curMission, curConditionNode):
-    mwid = GameWorld.ToIntDef(curConditionNode.GetAttribute("mwid"), 0)
-    conditionValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    fbpasslv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % mwid)
-    return fbpasslv >= conditionValue
-
-#---------------------------------------------------------------------
-##是否家族长
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks 是否家族长
-def __IsFamilyLeader(curPlayer):
-    curMember = curPlayer.GetFamilyMemberLV()
-    if curMember == None:
-        GameWorld.Log("家族成员等级->封包异常->无此成员" , curPlayer.GetPlayerID())
-        return False
-    
-    if curMember != IPY_GameWorld.fmlLeader:
-        return False
-    
-    return True
-
-
-#---------------------------------------------------------------------
-##是否期望的性别
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Player_Sex id="物品ID" sex="期望的性别" result="期望的结果" /> 
-def ConditionType_Player_Sex(curPlayer, curMission, curConditionNode):
-    #<player_sex sex="" result=""/>
-    sex = GameWorld.ToIntDef(curConditionNode.GetAttribute("sex"), 0)
-    result = GameWorld.ToIntDef(curConditionNode.GetAttribute("result"), 0)
-    playerSex = curPlayer.GetSex()
-    if playerSex != sex:
-        return False == result
-    
-    return True == result
-
-#---------------------------------------------------------------------
-##执行家族送经验
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Send_Family_Exp /> 
-def DoType_Send_Family_Exp(curPlayer, curMission, curActionNode):
-    #不是族长不处理
-    if not __IsFamilyLeader(curPlayer):
-        return
-    
-    playerFamily = []    
-    #遍历本地图的家族成员
-    playerCount = GameWorld.GetMapCopyPlayerManager().GetPlayerCount()
-    for i in range(0, playerCount):
-        curMapPlayer = GameWorld.GetMapCopyPlayerManager().GetPlayerByIndex(i)
-        if not curMapPlayer:
-            continue
-        if curMapPlayer.GetFamilyID() != curPlayer.GetFamilyID():
-            continue
-        
-        playerFamily.append(curMapPlayer)
-    
-    #族长发布成功提示
-    PlayerControl.NotifyCode(curPlayer , "1B53C689-828E-48B9-B3E580E10FF551D2")
-    
-    #给予本地图家族玩家奖励    
-    for player in playerFamily:
-        familyMemberLV = player.GetFamilyMemberLV()
-        familyLV = player.GetFamilyLV()
-        mapFamilyCount = len(playerFamily)
-        playerLV = player.GetLV()
-        reExp = 0
-        
-        resultExp = int(eval(ReadChConfig.GetChConfig('Def_Send_Family_Exp')))
-        
-        playerControl = PlayerControl.PlayerControl(player)
-        playerControl.AddExp(resultExp)
-        PlayerControl.NotifyCode(player , "F3489D28-04F1-4222-99F28A7AE808AA09", [resultExp])
-                                  
-
-##执行家族送物资
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Send_Family_Item pubID="任务ID"/> 
-def DoType_Send_Family_Item(curPlayer, curMission, curActionNode):
-    missionID = curMission.GetMissionID()
-    pubID = GameWorld.ToIntDef(curActionNode.GetAttribute("pubID"), 0)
-    #读表获得发布ID对应的家族资金
-    pubDict = ReadChConfig.GetEvalChConfig('Def_Send_Family_Item')
-    if not pubDict.has_key(pubID):
-        GameWorld.Log("###家族送物资异常,没有此任务ID:%s" % pubID)
-        return
-    #消耗的资金
-    needMoney = pubDict.get(pubID)
-    
-    #请求发布家族送物资任务(任务ID,需要资金)
-    sendMsg = '%s,%s,%s' % (pubID, needMoney, missionID)
-    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_sqtSend_Family_Item,
-                  curPlayer.GetPlayerID(), 'Send_Family_Item', sendMsg, len(sendMsg))   
-
-
-
-#---------------------------------------------------------------------
-##执行将玩家打回重生点
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Set_Reborn_Pos /> 
-def DoType_Set_Reborn_Pos(curPlayer, curMission, curActionNode):
-    #<Set_Reborn_Pos/>
-    mapID = curPlayer.GetRebornMapID()
-    bornX = curPlayer.GetRebornPosX()
-    bornY = curPlayer.GetRebornPosY()
-    
-    __NPCAllowResetWorldPos(curPlayer, mapID, bornX, bornY, False)
-    
-    return
-
-#---------------------------------------------------------------------
-##给予玩家技能
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 无意义
-# @remarks  <Give_Player_Skill skillid="技能ID"/> 
-def DoType_Give_Player_Skill(curPlayer, curMission, curActionNode):
-    giveSkillIDStr = curActionNode.GetAttribute("skillid")
-    
-    if giveSkillIDStr == '':
-        GameWorld.ErrLog('DoType_GivePlayerSkill NoFindSkillID')
-        return
-    
-    __DogLoic_GivePlayerSkill(curPlayer, int(giveSkillIDStr))
-    
-    return
-
-##执行逻辑给予玩家技能
-# @param curPlayer 玩家实例
-# @param giveSkillID 技能ID
-# @return 无意义
-# @remarks 执行逻辑给予玩家技能
-def __DogLoic_GivePlayerSkill(curPlayer, giveSkillID):
-    #任务给的技能
-    giveSkill = GameWorld.GetGameData().GetSkillBySkillID(giveSkillID)
-    
-    if giveSkill == None:
-        GameWorld.ErrLog("DoType_GivePlayerSkillErr, 无此技能 = %s" % (giveSkillID), curPlayer.GetID())
-        return
-    
-    #学习条件检查
-    if not CheckLearnSkill(curPlayer, giveSkill):
-        return
-    
-    giveSkillTypeID = giveSkill.GetSkillTypeID()
-    giveSkillLV = giveSkill.GetSkillLV()
-    
-    skillManager = curPlayer.GetSkillManager()
-    
-    #自身存在技能
-    hasSkill = skillManager.FindSkillBySkillTypeID(giveSkillTypeID)
-    
-    #---已有技能---
-    if hasSkill != None:
-        
-        hasSkillLV = hasSkill.GetSkillLV()
-        
-        #验证技能等级
-        if not(hasSkillLV < giveSkillLV <= hasSkill.GetSkillMaxLV()):
-            GameWorld.ErrLog('DoType_GivePlayerSkillErr skillLV = %s, giveSkillLV = %s, skillID = %s'\
-                             % (hasSkillLV, giveSkillLV, giveSkillTypeID))
-            return
-        
-        #升级这个技能
-        skillManager.LearnSkillByID(giveSkillID)
-        
-        DataRecordPack.DR_LearnORUPSkill(curPlayer, giveSkillTypeID, giveSkillLV)
-        PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(giveSkillID, hasSkill.GetFightPower())
-        return
-    
-    #---未有技能---
-    #支持跳级, 如直接获得5级技能
-    skillManager.LearnSkillByID(giveSkillID)
-    
-    DataRecordPack.DR_LearnORUPSkill(curPlayer, giveSkillTypeID, giveSkillLV)
-    PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(giveSkillID, 0)
-    return
-#---------------------------------------------------------------------
-##学习技能检查
-# @param curPlayer 玩家实例
-# @param learnSkill 学习技能
-# @return 布尔值
-# @remarks 学习技能检查
-def CheckLearnSkill(curPlayer, learnSkill):
-    #玩家等级验证只验证未转生前
-    if not curPlayer.GetReincarnationLv() and curPlayer.GetLV() < learnSkill.GetLVReq():
-        #玩家等级不够升级
-        PlayerControl.NotifyCode(curPlayer, "UseMagicLost12", [learnSkill.GetLVReq()])
-        return False
-    
-    #学习条件检查
-    if not SkillShell.CheckLearnSkillCondition(curPlayer, learnSkill):
-        return False
-    
-    return True
-#---------------------------------------------------------------------
-##是否有期望的技能
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 返回值, 是否通过检查
-# @remarks  <Superskill_Lv type='Equal' skillid="技能ID"/> 
-def ConditionType_Superskill_Lv(curPlayer, curMission, curConditionNode):
-    skillID = int(curConditionNode.GetAttribute("skillid"))
-    
-    conditionSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-    
-    if not conditionSkill:
-        GameWorld.ErrLog("数据库中没有该技能 %s" % skillID)
-        return False
-    
-    conditionSkillTypeID = conditionSkill.GetSkillTypeID()
-    
-    curSkill = curPlayer.GetSkillManager().FindSkillBySkillTypeID(conditionSkillTypeID)
-    #该玩家没有此技能
-    if not curSkill:
-        return False
-
-    conditionLV = conditionSkill.GetSkillLV()
-    curSkillLV = curSkill.GetSkillLV()
-    conditionType = curConditionNode.GetAttribute("type")
-    
-    return QuestRunnerValue.GetEval(conditionType, curSkillLV, conditionLV)
-#---------------------------------------------------------------------
-##执行读条时间,设置NPC伤血,用于多人采集
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks  <Collect_Time /> 
-def DoType_Collect_Time(curPlayer, curMission, curConditionNode):
-    #开始采集
-    PlayerMissionCollect.BeginMissionCollect(curPlayer, curMission, curConditionNode)
-
-#---------------------------------------------------------------------
-##增加玩家离线时间并通知客户端
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 无意义
-# @remarks <Add_Offline_Time time='30'> 分钟
-def DoType_Add_Offline_Time(curPlayer, curMission, curActionNode):
-    addOfflineTime = GameWorld.ToIntDef(curActionNode.GetAttribute("time"), 0)
-
-    allOfflineMinutes = min(curPlayer.GetOfflineMinutes() + addOfflineTime,
-                            ChConfig.Def_UpperLimit_DWord)
-    
-    curPlayer.SetOfflineMinutes(int(allOfflineMinutes))
-    
-    #通知客户端离线总时间刷新
-    curPlayer.Syn_OfflineTimeQueryResult()
-    
-    PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_671654", [addOfflineTime])
-
-
-##任务获得家族活跃度
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode节点信息
-# @return 无意义
-# <Add_Family_Active_Value value="">
-def DoType_Add_Family_Active_Value(curPlayer, curMission, curActionNode):
-    if curPlayer.GetFamilyID() == 0:
-        #无家族不考虑
-        return
-    
-    addValue = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    
-    if addValue == 0:
-        GameWorld.ErrLog("任务 %s 获得的家族奖励为0" % curMission.GetMissionID(), curPlayer.GetID())
-        return
-    
-    PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, addValue, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson)
-    
-    PlayerControl.NotifyCode(curPlayer , "GeRen_admin_425673", [addValue])
-    
-
-    
-##判断玩家当前线路
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-def ConditionType_Check_Jxd_Line(curPlayer, curMission, curConditionNode):
-    lineID = GameWorld.GetGameWorld().GetLineID() + 1
-    if lineID not in eval(curConditionNode.GetAttribute("linelist")):
-        return False
-    
-    return True
-    
-
-##检查当前GetActionObj的NPC是否是任务指定字典的NPC
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-def ConditionType_Check_Npc_By_Dict(curPlayer, curMission, curConditionNode):
-    playerID = curPlayer.GetPlayerID()
-    curObj = curPlayer.GetActionObj()
-    if curObj == None:
-        GameWorld.ErrLog("ConditionType_Check_Npc_by_Dict 无对象", playerID)
-        return False
-    
-    npcIndex = curObj.GetIndex()
-    curNPC = GameWorld.GetNPCManager().GetNPCByIndex(npcIndex)
-    
-    if curNPC == None:
-        #没有这个NPC
-        GameWorld.ErrLog("ConditionType_Check_Npc_by_Dict index=%s, 找不到NPC" % npcIndex, playerID)
-        return False
-    
-    #不是该任务指定NPC
-    if curNPC.GetNPCID() != curMission.GetProperty(curConditionNode.GetAttribute("dict")):
-        return False
-    
-    return True
-
-##添加真气
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return None
-def DoType_Add_Zhenqi(curPlayer, curMission, curActionNode):
-    addValue = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    
-    if addValue == 0:
-        return
-
-    missionID = QuestCommon.GetMissionID(curMission)
-    PlayerControl.PlayerAddZhenQi(curPlayer, addValue, True, True, "Mission", {"MissionID":missionID})
-    PlayerControl.NotifyCode(curPlayer, "GetSP", [addValue])
-    DataRecordPack.DR_ChangeZhenQi(curPlayer, "Event_Add", addValue, {"MissionID":missionID})
-    return
-
-#---------------------------------------------------------------------
-##判断真气是否为满
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 真气已满:1,真气未满:0
-# @remarks None
-def ConditionType_Check_Zhenqi(curPlayer, curMission, curConditionNode):
-    return 0
-
-## 特定任务给予物品提示
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return None
-# @remarks None
-def DoType_Task_Give_Item(curPlayer, curMission, curActionNode):
-    
-    itemType = GameWorld.ToIntDef(curActionNode.GetAttribute("type"), 0)      
-    itemID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    
-    if itemID <= 0 or itemType < 0:
-        return
-    
-    # 发送物品信息包
-    tagTaskGiveItem = ChPyNetSendPack.tagMCItemShowInTask()
-    tagTaskGiveItem.Clear()
-    
-    tagTaskGiveItem.Type = itemType
-    tagTaskGiveItem.ID = itemID
-    
-    NetPackCommon.SendFakePack(curPlayer, tagTaskGiveItem)
-    
-    return
-
-
-
-##功能开启
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return None
-# @remarks <Open_Func sign = "功能限制位数标识"/>
-def DoType_Open_Func(curPlayer, curMission, curConditionNode):
-    return
-
-
-##功能关闭
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return None
-# @remarks <Close_Func sign = "功能限制位数标识"/>
-def DoType_Close_Func(curPlayer, curMission, curConditionNode):
-    return
-
-
-## 判断威望奖励领取情况
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return 是否已经领取威望奖励领取情况
-#  @remarks <ConditionType_Prestige_Reward_Give_State sign="等级奖励标识"/>
-def ConditionType_Prestige_Reward_Give_State(curPlayer, curMission, curConditionNode):
-    awardMark = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PrestigeAwardMark)
-    sign = GameWorld.ToIntDef(curConditionNode.GetAttribute("sign"))
-    
-    return awardMark & sign != 0
-
-
-## 判断获取家族等级
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return 
-#  @remarks <Get_Family_Lv, type="判定类型", familylv="家族等级"/>
-def ConditionType_Get_Family_Lv(curPlayer, curMission, curConditionNode):
-    familyLv = GameWorld.ToIntDef(curConditionNode.GetAttribute("familylv"), 0)
-    
-    conditionType = curConditionNode.GetAttribute("type")
-    
-    curFamilyLV = curPlayer.GetFamilyLV()
-    if curFamilyLV <= 0:
-        curFamilyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyLV)
-        
-    return  QuestRunnerValue.GetEval(conditionType, curFamilyLV, familyLv)
-
-## 改变玩家字典值
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return None
-#  @remarks <Change_Player_Dict, key="字典key", value=数值/>
-def DoType_Change_Player_Dict(curPlayer, curMission, curConditionNode):
-    value = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    key = curConditionNode.GetAttribute("key")
-    
-    curPlayer.SetDict(key, value)
-    return
-
-
-## 判定玩家字典
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return None
-def ConditionType_Player_Dict(curPlayer, curMission, curConditionNode):
-    conditionType = curConditionNode.GetAttribute("type")
-    key = curConditionNode.GetAttribute("key")
-    cmpValue = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    
-    value = curPlayer.GetDictByKey(key)
-    #GameWorld.DebugAnswer(curPlayer, '判定家族条件 %s %s %s %s'%(conditionType, key, value, cmpValue))
-    return QuestRunnerValue.GetEval(conditionType, value, cmpValue)
-
-
-## 判断玩家登入方式
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return bool
-def ConditionType_Check_Login_Type(curPlayer, curMission, curConditionNode):
-    
-    checkLoginType = GameWorld.ToIntDef(curConditionNode.GetAttribute("loginType"), -1)
-    curLoginType = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_LoginType)
-    return checkLoginType == curLoginType
-
-
-## 设置购买物品数量
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return None
-#  @remarks <Buy_Item_Count, type="判定类型", key="存放购买数量的key", value="判定值"/>
-def ConditionType_Buy_Item_Count(curPlayer, curMission, curConditionNode):
-    conditionType = curConditionNode.GetAttribute("type")
-    key = curConditionNode.GetAttribute("key")
-    value = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    
-    buyItemCnt = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BuyItemCnt)
-    curMission.SetProperty(key, curMission.GetProperty(key) + buyItemCnt)
-    
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_BuyItemCnt, 0)
-    return QuestRunnerValue.GetEval(conditionType, curMission.GetProperty(key), value)
-
-
-## 增加每日活跃度
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return None
-#  @remarks <Add_Activity_Value, value="添加的活跃值"/>
-def DoType_Add_Activity_Value(curPlayer, curMission, curConditionNode):
-    value = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 0)
-    if value <= 0:
-        return
-    
-    curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ActivityValueDay)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ActivityValueDay, curValue + value)
-    return
-
-
-#---------------------------------------------------------------------
-## 给玩家奖励的金钱(根据公式)
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return None
-#  @remarks  <Add_Money_Expressions value="金钱公式" type="货币类型" /> 
-def DoType_Add_Money_Expressions(curPlayer, curMission, curActionNode):
-    
-    vipLV = curPlayer.GetVIPLv()  # vip等级
-    playerLv = curPlayer.GetLV()  # 玩家等级
-    
-    moneyCount = int(eval(curActionNode.GetAttribute("value")))
-    moneyType = curActionNode.GetAttribute("type")
-    
-    moneyType = GameWorld.ToIntDef(moneyType, IPY_GameWorld.TYPE_Price_Silver_Paper)
-    addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Expressions"}
-    if not PlayerControl.GiveMoney(curPlayer, moneyType, moneyCount, ChConfig.Def_GiveMoney_Mission, addDataDict):
-        return
-    
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        missionID = QuestCommon.GetMissionID(curMission)
-        DataRecordPack.DR_EventAddMoney(curPlayer, "Add_Money_Expressions", missionID, moneyType, moneyCount)
-
-    
-## 给玩家经验(根据公式)
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return 返回值无意义
-#  @remarks  <Add_Exp_Expressions value="经验公式" /> 
-def DoType_Add_Exp_Expressions(curPlayer, curMission, curActionNode):
-    
-    vipLV = curPlayer.GetVIPLv()  # vip等级
-    playerLv = curPlayer.GetLV()  # 玩家等级
-    reExp = PlayerControl.GetPlayerReExp(curPlayer)
-    
-    exp = int(eval(curActionNode.GetAttribute("value")))
-    
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.AddExp(exp)
-    #PlayerControl.NotifyCode(curPlayer, 'GeRen_lhs_0', [exp])
-    #curPlayer.Sync_ExpGetView(exp)
-    
-    #等级触发OSS记录
-    if GameWorld.IsMissonDR(curPlayer):
-        missionID = QuestCommon.GetMissionID(curMission)
-        DataRecordPack.DR_EventAddExp(curPlayer, missionID, exp)
-
-
-## 判断玩家是否可以参加家族活动
-#  @param curPlayer 玩家实例
-#  @param curMission 任务实例
-#  @param curActionNode节点信息
-#  @return bool
-def ConditionType_Check_Forbid_Family_Action(curPlayer, curMission, curConditionNode):
-    
-    checkState = GameWorld.ToIntDef(curConditionNode.GetAttribute("value"), 1)
-    curState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ForbidFamilyAction)
-    return checkState == curState
-
-
-
-##副本活动是否在进行
-# @param None
-# @return None
-def ConditionType_Fb_Underway(curPlayer, curMission, curActionNode):
-    mapID = GameWorld.ToIntDef(curActionNode.GetAttribute("mapid"), 0)
-    if curPlayer.GetMapID() != mapID:
-        return False
-    
-    return FBLogic.IsFBActivityUnderway()
-
-
-##写入随机值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 节点信息
-# @return 返回值无意义
-# @remarks  <random_mission_id list="任务ID列表" key="随机值存储key" is_id="是否任务ID"/>    
-def DoType_Random_Value(curPlayer, curMission, curActionNode):
-    #<random_mission_id list = ""/>
-    if not curMission:
-        return
-    missionKey = curActionNode.GetAttribute("key")
-    valueListStr = curActionNode.GetAttribute("list")
-    if not missionKey or not valueListStr:
-        return
-    valueList = eval(valueListStr)
-    
-    if GameWorld.ToIntDef(curActionNode.GetAttribute("is_id"), 0):
-        for i in range(curPlayer.GetMissionCount()):
-            curTagMission = curPlayer.GetMissionByIndex(i)
-            if not curTagMission:
-                continue
-            
-            curTagMissionId = curTagMission.GetMissionID()
-            curTrigMission = FindQuestFunc(curTagMissionId)
-            if not curTrigMission:
-                continue
-            
-            if curTagMissionId not in valueList:
-                continue
-            
-            valueList.remove(curTagMissionId)
-        
-    if not valueList:
-        return
-    
-    index = random.randint(0, len(valueList) - 1)
-    newMissionId = valueList[index]
-    curMission.SetProperty(missionKey, newMissionId)
-    return
-
-
-
-##任意坐骑是否有X级
-# @param None
-# @return None <Horselv value="坐骑等级"/>
-def ConditionType_Horselv(curPlayer, curMission, curActionNode):
-    horseLV = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return PlayerHorse.GetHorseSumLV(curPlayer) >= horseLV
-
-##坐骑是否满级
-# @param None
-# @return None <Horselvfull />
-def ConditionType_Horselvfull(curPlayer, curMission, curActionNode):
-    return PlayerHorse.IsHorseLVFull(curPlayer)
-
-##是否已购买VIP礼包
-# @param None
-# @return None <Buyvipitem value="viplv"/>
-def ConditionType_Buyvipitem(curPlayer, curMission, curActionNode):
-    vipLV = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    record = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_VipAwardRecord)
-    hasBuy = record & pow(2, vipLV)
-    return bool(hasBuy)
-
-##八卦炉是否达到X级
-# @param None
-# @return None <Refinestovelv value="stoveLV"/>
-def ConditionType_Refinestovelv(curPlayer, curMission, curActionNode):
-    stoveLV = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
-    return alchemyLV >= stoveLV
-
-##境界是否达到X级
-# @param None
-# @return None <Realmlv value="Realmlv"/>
-def ConditionType_Realmlv(curPlayer, curMission, curActionNode):
-    realmlv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return curPlayer.GetOfficialRank() >= realmlv
-
-##境界修仙之路是否已领取
-# @param None
-# @return None <Realmxxzlaward taskid="修仙之路任务ID"/>
-def ConditionType_Realmxxzlaward(curPlayer, curMission, curActionNode):
-    taskID = GameWorld.ToIntDef(curActionNode.GetAttribute("taskid"), 0)
-    awardState = curPlayer.NomalDictGetProperty("RealmXXZLAward")
-    if awardState&pow(2, taskID):
-        return True
-    return False
-
-##判断已加总灵根点数
-# @param None
-# @return None <Linggenaddtotal attrid="灵根ID或0代表全部灵根" value="期望点数"/>
-def ConditionType_Linggenaddtotal(curPlayer, curMission, curActionNode):
-    attrID = GameWorld.ToIntDef(curActionNode.GetAttribute("attrid"), 0)
-    value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return GetLinggenaddtotal(curPlayer, attrID) >= value
-
-##设置已加总灵根数
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Linggenaddtotal key="" attrid="灵根ID或0代表全部灵根" id="可选指定任务ID"/>
-def DoType_Set_Linggenaddtotal(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    attrID = GameWorld.ToIntDef(curActionNode.GetAttribute("attrid"), 0)
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, GetLinggenaddtotal(curPlayer, attrID))
-    return
-
-def GetLinggenaddtotal(curPlayer, attrID):
-    # 获取已加总灵根点数
-    if attrID:
-        attrIDList = [attrID]
-    else:
-        attrIDList = [ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water, ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]
-    curTotalPoint = 0
-    for attrID in attrIDList:
-        curTotalPoint += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % attrID)
-    return curTotalPoint
-
-##灵根品级是否达到X级
-# @param None
-# @return None <Linggenqualitylv attrid="灵根ID" value="期望等级"/>
-def ConditionType_Linggenqualitylv(curPlayer, curMission, curActionNode):
-    attrID = GameWorld.ToIntDef(curActionNode.GetAttribute("attrid"), 0)
-    qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    funcDict = {ShareDefine.Def_Effect_Metal:lambda curObj:PlayerControl.GetMetalQualityLV(curObj),
-                ShareDefine.Def_Effect_Wood:lambda curObj:PlayerControl.GetWoodQualityLV(curObj),
-                ShareDefine.Def_Effect_Water:lambda curObj:PlayerControl.GetWaterQualityLV(curObj),
-                ShareDefine.Def_Effect_Fire:lambda curObj:PlayerControl.GetFireQualityLV(curObj),
-                ShareDefine.Def_Effect_Earth:lambda curObj:PlayerControl.GetEarthQualityLV(curObj),
-                }
-    curQualityLV = 0
-    if attrID in funcDict:
-        curQualityLV = funcDict[attrID](curPlayer)
-    return curQualityLV >= qualityLV
-
-
-##X条灵根品级达到X级
-# @param None
-# @return None <Linggenqualitylvcnt qualitylv="品级" value="条数"/>
-def ConditionType_Linggenqualitylvcnt(curPlayer, curMission, curActionNode):
-    qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("qualitylv"), 0)
-    cnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return GetLinggenQualitylvCnt(curPlayer, qualityLV) >= cnt
-
-##设置达到X品灵根数量
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Linggenqualitylvcnt key="" qualitylv="品级"/>
-def DoType_Set_Linggenqualitylvcnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("qualitylv"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, GetLinggenQualitylvCnt(curPlayer, qualityLV))
-    return
-
-def GetLinggenQualitylvCnt(curPlayer, qualityLV):
-    # 获取达到X品的灵根数量
-    funcDict = {ShareDefine.Def_Effect_Metal: lambda curObj: PlayerControl.GetMetalQualityLV(curObj),
-                ShareDefine.Def_Effect_Wood: lambda curObj: PlayerControl.GetWoodQualityLV(curObj),
-                ShareDefine.Def_Effect_Water: lambda curObj: PlayerControl.GetWaterQualityLV(curObj),
-                ShareDefine.Def_Effect_Fire: lambda curObj: PlayerControl.GetFireQualityLV(curObj),
-                ShareDefine.Def_Effect_Earth: lambda curObj: PlayerControl.GetEarthQualityLV(curObj),
-                }
-    curCnt = 0
-    for attrID, func in funcDict.items():
-        if func(curPlayer) >= qualityLV:
-            curCnt += 1
-    return curCnt
-
-
-##X级通关X层娲皇遗迹
-# @param None
-# @return None <Passqueenrelecs value="lineID" grade="grade"/>
-def ConditionType_Passqueenrelecs(curPlayer, curMission, curActionNode):
-    lineID = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [ChConfig.Def_FBMapID_QueenRelics])
-    needGrade = GameWorld.ToIntDef(curActionNode.GetAttribute("grade"), 0)
-    return grade >=needGrade
-
-##坐骑总等级
-# @param None
-# @return None <Horsetotallv value="lv"/>
-def ConditionType_Horsetotallv(curPlayer, curMission, curActionNode):
-    totallv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return PlayerHorse.GetHorseSumLV(curPlayer) >= totallv
-
-##某主技能对应专精技能达到激活X等级的数量是否达到
-# @param None
-# @return None <Elementskillcnt value="cnt" mainskill="[]" activelv="" elementtype="专精类型"/>
-def ConditionType_Elementskillcnt(curPlayer, curMission, curActionNode):
-    cnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    mainskill = curActionNode.GetAttribute("mainskill")
-    mainSkillIDList = eval(mainskill) if mainskill else []
-    activeLV = GameWorld.ToIntDef(curActionNode.GetAttribute("activelv"), 1)
-    elementType = GameWorld.ToIntDef(curActionNode.GetAttribute("elementtype"), 0)
-    return SkillShell.GetElementSkillCnt(curPlayer, mainSkillIDList, activeLV, elementType) >= cnt
-
-##设置已选择的专精技能数量
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Elementskillcnt key="" mainskill="[]" activelv="" elementtype="专精类型"/>
-def DoType_Set_Elementskillcnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    mainskill = curActionNode.GetAttribute("mainskill")
-    mainSkillIDList = eval(mainskill) if mainskill else []
-    activeLV = GameWorld.ToIntDef(curActionNode.GetAttribute("activelv"), 1)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    elementType = GameWorld.ToIntDef(curActionNode.GetAttribute("elementtype"), 0)
-    curMission.SetProperty(key, SkillShell.GetElementSkillCnt(curPlayer, mainSkillIDList, activeLV, elementType))
-    return
-
-##设置符合条件的已穿基础装备数量
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Baseequipcnt key="" classlv="" color="" suite="[suiteID,..]"/>
-def DoType_Set_Baseequipcnt(curPlayer, curMission, curActionNode):
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classlv"), 0)
-    color = GameWorld.ToIntDef(curActionNode.GetAttribute("color"), 0)
-    suite = curActionNode.GetAttribute("suite")
-    suiteIDList = eval(suite) if suite else []
-
-    haveCnt = __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList)
-    
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, haveCnt)
-    return
-def __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList, needCnt=0):
-    #classLV 为0代表任意阶
-    haveCnt = 0
-    equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv')
-    classlVList = [classLV] if classLV else range(1, equipMaxClasslv+1)
-    
-    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    for place in ChConfig.EquipPlace_Base:
-        for classlv in classlVList:
-            ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, place)
-            if not ipyData:
-                continue
-            gridIndex = ipyData.GetGridIndex()
-            curEquip = equipPack.GetAt(gridIndex)
-            if not ItemCommon.CheckItemCanUse(curEquip):
-                continue
-            if curEquip.GetItemColor() < color:
-                continue
-            if suiteIDList and curEquip.GetSuiteID() not in suiteIDList:
-                continue
-            haveCnt += 1
-            if needCnt and haveCnt >= needCnt:
-                break
-    return haveCnt
-    
-##判断符合条件的已穿基础装备数量
-# @param None
-# @return None <Baseequipcnt cnt="cnt" classlv="" color="" suite="[suiteID,..]"/>
-def ConditionType_Baseequipcnt(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("cnt"), 0)
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classlv"), 0)
-    color = GameWorld.ToIntDef(curActionNode.GetAttribute("color"), 0)
-    suite = curActionNode.GetAttribute("suite")
-    suiteIDList = eval(suite) if suite else []
-    haveCnt = __GetBaseequipcnt(curPlayer, classLV, color, suiteIDList, totalcnt)
-    return haveCnt >= totalcnt
-
-##法宝激活个数
-# @param None
-# @return None <Mwcnt value="cnt"/>
-def ConditionType_Mwcnt(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return PlayerMagicWeapon.GetMWActiveCntTotal(curPlayer) >= totalcnt
-
-##总强化进化等级
-# @param None
-# @return None <Totalplusevolvelv value="cnt"/>
-def ConditionType_Totalplusevolvelv(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return ChEquip.GetTotalPlusEvolveLV(curPlayer) >= totalcnt
-##总强化等级
-# @param None
-# @return None <Totalpluslv value="cnt"/>
-def ConditionType_Totalpluslv(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return ChEquip.GetTotalPlusLV(curPlayer, False) >= totalcnt
-
-##判断某阶强化等级达到X的件数是否达到
-# @param None
-# @return None <Classlvpluslv classLV="" plusLV="" value="cnt"/>
-def ConditionType_Classlvpluslv(curPlayer, curMission, curActionNode):
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
-    classLVList = [classLV] if classLV else xrange(1, IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') + 1)
-    needPlusLV = GameWorld.ToIntDef(curActionNode.GetAttribute("plusLV"), 0)
-    totalCnt = 0
-    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
-    for equipPlace in equipPlaceList:
-        for classLV in classLVList:
-            ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
-            if not ipyData:
-                continue
-            partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, ipyData.GetGridIndex())
-            if partStarLV >= needPlusLV:
-                totalCnt += 1
-    return totalCnt >= GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-
-##判断X阶装备强化是否满级
-# @param None
-# @return None <Classlvplusmax classLV="" cnt="件数没填默认全部件数"/>
-def ConditionType_Classlvplusmax(curPlayer, curMission, curActionNode):
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
-    needCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("cnt"), 0)
-    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
-    if not needCnt:
-        needCnt = len(equipPlaceList)
-        
-    totalCnt = 0
-    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    for equipPlace in equipPlaceList:
-        ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
-        if not ipyData:
-            continue
-        index = ipyData.GetGridIndex()
-        curEquip = equipPack.GetAt(index)
-        if not ItemCommon.CheckItemCanUse(curEquip):
-            continue
-        findType = ChEquip.GetEquipPlusType(curEquip)
-        if not findType:
-            continue
-        plusMaxIpyData = IpyGameDataPY.GetIpyGameData("ItemPlusMax", findType, classLV)
-        if not plusMaxIpyData:
-            continue
-        plusLVMax = plusMaxIpyData.GetPlusLVMax()
-        partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, index)
-        if partStarLV >= plusLVMax:
-            totalCnt += 1
-            
-    return totalCnt >= needCnt
-
-##装备总星级
-# @param None
-# @return None <Equiptotalstar value="cnt"/>
-def ConditionType_Equiptotalstar(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return ChEquip.GetTotalEquipStars(curPlayer) >= totalcnt
-
-##判断某阶星级达到X的件数是否达到
-# @param None
-# @return None <Classlvstar classLV="" star="" value="cnt"/>
-def ConditionType_Classlvstar(curPlayer, curMission, curActionNode):
-    classLV = GameWorld.ToIntDef(curActionNode.GetAttribute("classLV"), 0)
-    classLVList = [classLV] if classLV else xrange(1, IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') + 1)
-    needStar = GameWorld.ToIntDef(curActionNode.GetAttribute("star"), 0)
-    totalCnt = 0
-    equipPlaceList = ChConfig.Pack_EquipPart_CanPlusStar[IPY_GameWorld.rptEquip]
-    for equipPlace in equipPlaceList:
-        for classLV in classLVList:
-            ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
-            if not ipyData:
-                continue
-            equipStar = ChEquip.GetEquipPartStar(curPlayer, ipyData.GetGridIndex())
-            if equipStar >= needStar:
-                totalCnt += 1
-    return totalCnt >= GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-
-##装备宝石总等级
-# @param None
-# @return None <Equiptotalstone value="cnt"/>
-def ConditionType_Equiptotalstone(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return Operate_EquipStone.GetTotalStoneLV(curPlayer) >= totalcnt
-
-##已镶嵌X等级宝石数量
-# @param None
-# @return None <Equipstonecnt value="cnt" stoneLV=""/>
-def ConditionType_Equipstonecnt(curPlayer, curMission, curActionNode):
-    totalCnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    stoneLV = GameWorld.ToIntDef(curActionNode.GetAttribute("stoneLV"), 0)
-    return Operate_EquipStone.GetStoneCntByLV(curPlayer, stoneLV) >= totalCnt
-
-##设置已镶嵌X等级宝石数量
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Equipstonecnt key="" stoneLV="宝石等级"/>
-def DoType_Set_Equipstonecnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    stoneLV = GameWorld.ToIntDef(curActionNode.GetAttribute("stoneLV"), 1)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, Operate_EquipStone.GetStoneCntByLV(curPlayer, stoneLV))
-    return
-
-##技能总等级
-# @param None
-# @return None <Totalskilllv value="" funcType="" skilllv=""/>
-def ConditionType_Totalskilllv(curPlayer, curMission, curActionNode):
-    totalcnt = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    funcType = GameWorld.ToIntDef(curActionNode.GetAttribute("funcType"), 0)
-    skilllv = GameWorld.ToIntDef(curActionNode.GetAttribute("skilllv"), 0)
-    return SkillShell.GetSkillCntByFunc(curPlayer, funcType, skilllv) >= totalcnt
-
-##设置已达到X等级的技能数量
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Skillcnt key="" funcType="" skilllv=""/>
-def DoType_Set_Skillcnt(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    funcType = GameWorld.ToIntDef(curActionNode.GetAttribute("funcType"), 0)
-    skilllv = GameWorld.ToIntDef(curActionNode.GetAttribute("skilllv"), 0)
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, SkillShell.GetSkillCntByFunc(curPlayer, funcType, skilllv))
-    return
-
-##激活法宝,确认与成就逻辑后使用
-# @param None
-# @return None <Active_Magicweapon id="法宝ID"/>
-def DoType_Active_Magicweapon(curPlayer, curMission, curActionNode):
-    mwID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    PlayerMagicWeapon.DoActiveMW(curPlayer, mwID)
-    return
-
-##设置自定义奖励可领取
-# @param None
-# @return None <Setcustomaward_Canget id="奖励ID"/>
-def DoType_Setcustomaward_Canget(curPlayer, curMission, curActionNode):
-    awardID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    PlayerCustomAward.SetCustomAwardCanGet(curPlayer, awardID, 1)
-    return
-
-## 人物隐身 <Visible id="0隐身1现身"/>
-def DoType_Visible(curPlayer, curMission, curActionNode):
-    visible = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if visible:
-        PlayerControl.SetPlayerSightLevel(curPlayer, 0)
-    else:
-        PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
-    return
-
-
-# 被动技能孔
-def DoType_Open_Skill_Slots(curPlayer, curMission, curActionNode):
-    # 开孔
-    slotIndex = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    mission_1 = QuestCommon.GetCommonMission(curPlayer)
-    if not mission_1:
-        return
-
-    mission_1.SetProperty("OpenSkillSlots", pow(2, slotIndex)|mission_1.GetProperty("OpenSkillSlots"))
-    
-    return
-
-
-def DoType_Setfairydomain(curPlayer, curMission, curActionNode):
-    GameWorld.DebugLog("DoType_Setfairydomain", curPlayer.GetID())
-    ## 任务开启缥缈仙域 (做标记可寻访) <Setfairydomain/>
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainState):
-        #若已在寻访中则先结束寻访
-        PlayerFairyDomain.EndFairyDomain(curPlayer)
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 2)
-    PlayerFairyDomain.NotifyVisitFairyDomainInfo(curPlayer)
-    return
-
-##神兵等级判断
-# @param None
-# @return None <Godweaponlv value="lv" weapontype=""/>
-def ConditionType_Godweaponlv(curPlayer, curMission, curActionNode):
-    lv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    weapontype = GameWorld.ToIntDef(curActionNode.GetAttribute("weapontype"), 0)
-    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % weapontype) >= lv
-
-##竞技场历史最高分是否达到x分
-# @param None
-# @return None <Checkarenahighestscore  score="验证是否达到x分"/>
-def ConditionType_Checkarenahighestscore(curPlayer, curMission, curActionNode):
-    score = GameWorld.ToIntDef(curActionNode.GetAttribute("score"), 0)
-    highestScore = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ArenaHighestScore)
-    return highestScore >= score
-
-##设置竞技场历史最高分进度
-# @param None
-# @return None <Setarenahighestscore key="当前历史最高分存储任务key" id="可选任务ID" />
-def DoType_Setarenahighestscore(curPlayer, curMission, curActionNode):
-    missionID = curMission.GetMissionID()
-
-    highestScore = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ArenaHighestScore)
-    key = curActionNode.GetAttribute("key") # 显示进度用
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    missionScore = curMission.GetProperty(key)
-    if missionScore < highestScore:
-        curMission.SetProperty(key, highestScore)
-        GameWorld.DebugLog("更新竞技场任务历史最高分: missionID=%s,questID=%s,missionScore=%s to %s" % (missionID, questID, missionScore, highestScore))
-        
-    return
-
-##设置今日活跃度
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Dayactivity key=""/>
-def DoType_Set_Dayactivity(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Activity_TotalPoint, 0))
-    return
-
-##今日活跃度判断
-# @param None
-# @return None <Check_Dayactivity value="活跃度"/>
-def ConditionType_Check_Dayactivity(curPlayer, curMission, curActionNode):
-    value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Activity_TotalPoint, 0) >= value
-
-##活跃放置状态判断
-# @param None
-# @return None <Check_Activityplace state="状态0-未启动,1-可启动,2-进行中,3-可领奖"/>
-def ConditionType_Check_Activityplace(curPlayer, curMission, curActionNode):
-    state = GameWorld.ToIntDef(curActionNode.GetAttribute("state"), 0)
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount) > 0:
-        return state == 3
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount) > 0:
-        return state == 2
-    curPoint = PlayerActivity.__GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
-    costPoint = IpyGameDataPY.GetFuncCfg("ActivityPlace", 2) # 单次放置消耗的活跃点数
-    if curPoint >= costPoint:
-        return state == 1
-    return state == 0
-
-##设置当前货币类型对应值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode节点信息
-# @return 返回值无意义
-# @remarks <Set_Money key="任务存值key名" moneytype="货币类型"/>
-def DoType_Set_Money(curPlayer, curMission, curActionNode):
-    key = curActionNode.GetAttribute("key")
-    moneytype = GameWorld.ToIntDef(curActionNode.GetAttribute("moneytype"), 0)
-    if not moneytype:
-        return
-    questID = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
-    if questID != 0:
-        curMission = curPlayer.FindMission(questID)
-    curMission.SetProperty(key, PlayerControl.GetMoney(curPlayer, moneytype))
-    return
-
-##商城表商品购买记录判断(只适用购买次数不重置的)
-# @param None
-# @return None <Check_Buyshopitem value="数量" index="商城表唯一ID"/>
-def ConditionType_Check_Buyshopitem(curPlayer, curMission, curActionNode):
-    value = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
-    itemIndex = GameWorld.ToIntDef(curActionNode.GetAttribute("index"), 0)
-    curDayBuyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShopItemDayBuyCnt % itemIndex)
-    return curDayBuyCnt >= value
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunnerValue.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunnerValue.py
deleted file mode 100644
index 1fc83bb..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunnerValue.py
+++ /dev/null
@@ -1,618 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package QuestRunnerValue
-# @todo: 任务值替换,定义
-#
-# @author: eggxp
-# @date 2010-4-26
-# @version 1.4
-#
-# @note: 提供任务公式替换
-#---------------------------------------------------------------------
-# @change: "2013-04-17 20:35" Alee 删除任务1字典
-# @change: "2013-05-03 17:30" Alee 删除无用字典和任务1字典
-# @change: "2014-08-26 11:00" hxp 任务状态变更修改为不同步该任务全部字典信息
-# @change: "2016-07-18 19:00" hxp 设置任务状态统一函数入口
-#---------------------------------------------------------------------
-#"""Version = 2016-07-18 19:00"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import ItemControler
-import random
-import EventShell
-import ChConfig
-import GameWorld
-import PlayerControl
-import QuestCommon
-import GameObj
-#---------------------------------------------------------------------
-##获取服务器任务状态, State
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值, 任务状态
-# @remarks 获取服务器任务状态, State
-def GetState(curPlayer, curMission):
-    return curMission.GetState()
-
-#---------------------------------------------------------------------
-##获取任务数值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionName 节点名
-# @return 返回值, 任务数值
-# @remarks 获取任务数值
-def GetValue(curPlayer, curMission, conditionName):
-    if conditionName == "state":
-        conditionName = "Get%s"%conditionName.title()
-        if globals().has_key(conditionName):
-            return globals()[conditionName](curPlayer, curMission)
-    else:
-        return curMission.GetProperty(conditionName)
-    
-    return
-
-#---------------------------------------------------------------------
-##对两个值进行比较, 是否不相等
-# @param leftValue A值
-# @param rightValue B值
-# @param diff 容错值
-# @return 返回值真, abs(leftValue - rightValue) >= diff
-# @remarks 对两个值进行比较, 返回结果
-def __EvalDiffer(leftValue, rightValue, diff):
-    if leftValue != rightValue:
-        if diff == "":
-            return True
-         
-        if diff != "" and abs(leftValue - rightValue) >= diff:
-            return True
-     
-    return False
-
-#---------------------------------------------------------------------
-##对两个值进行比较, 左值大于右值
-# @param leftValue A值
-# @param rightValue B值
-# @param diff 容错值
-# @return 返回值真, leftValue - rightValue >= diff
-# @remarks 对两个值进行比较, 返回结果
-def __EvalGreat(leftValue, rightValue, diff):
-    if leftValue > rightValue:
-        if diff == "":
-            return True
-        
-        if diff != "" and leftValue - rightValue >= diff:
-            return True
-        
-    return False
-
-#---------------------------------------------------------------------
-##对两个值进行比较, 左值小于右值
-# @param leftValue A值
-# @param rightValue B值
-# @param diff 容错值
-# @return 返回值, rightValue - leftValue >= diff
-# @remarks 对两个值进行比较, 返回结果
-def __EvalLess(leftValue, rightValue, diff):
-    if leftValue < rightValue:
-        #GameWorld.Log("%s - %s - %s"%(leftValue, rightValue, diff))
-        if diff == "":
-            return True
-        
-        if diff != "" and rightValue - leftValue >= diff:
-            return True
-        
-    return False
-
-#---------------------------------------------------------------------
-##对两个值进行比较, 左值等于右值
-# @param leftValue A值
-# @param rightValue B值
-# @param diff 容错值
-# @return 返回值, leftValue == rightValue
-# @remarks 对两个值进行比较, 返回结果
-def __EvalEqual(leftValue, rightValue, diff):
-    if leftValue == rightValue:
-        return True
-    
-    return False
-
-#---------------------------------------------------------------------
-##对两个值进行比较, 左值大于等于右值
-# @param leftValue A值
-# @param rightValue B值
-# @param diff 容错值
-# @return 返回值, leftValue - rightValue >= diff:
-# @remarks 对两个值进行比较, 返回结果
-def __EvalGreat_Equal(leftValue, rightValue, diff):
-    if leftValue >= rightValue:
-        if diff == "":
-            return True
-        
-        if diff != "" and leftValue - rightValue >= diff:
-            return True
-        
-    return False
-
-#---------------------------------------------------------------------
-##对两个值进行比较, 左值小于等于右值
-# @param leftValue A值
-# @param rightValue B值
-# @param diff 容错值
-# @return 返回值, rightValue - leftValue >= diff
-# @remarks 对两个值进行比较, 返回结果
-def __EvalLess_Equal(leftValue, rightValue, diff):
-    if leftValue <= rightValue:
-        if diff == "":
-            return True
-        
-        if diff != "" and rightValue - leftValue >= diff:
-            return True
-        
-    return False
-
-#---------------------------------------------------------------------
-## 执行__Eval返回结果
-# @param evalName 事件名
-# @param leftValue 左值
-# @param rightValue 右值
-# @param diff 容错值
-# @return 返回值, __Eval执行逻辑
-# @remarks 执行__Eval返回结果
-def GetEval(evalName, leftValue, rightValue, diff = ""):
-    #GameWorld.Log("%s, %s, %s, diff = %s"%(str(leftValue), evalName, str(rightValue), diff))
-    evalName = "__Eval" + evalName.title()
-    if globals().has_key(evalName):
-        return globals()[evalName](leftValue, rightValue, diff)
-    
-    GameWorld.Log("Can't Find Eval Name = %s leftValue = %s rightValue = %s"%(evalName,
-                                    leftValue, rightValue))
-    return
-#---------------------------------------------------------------------
-##设置任务值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionName 节点名
-# @param value 值
-# @return 返回值无意义
-# @remarks 设置任务值
-def Var_Set(curPlayer, curMission, conditionName, value):
-    value = GameWorld.ToIntDef(value, 0)
-
-    if conditionName == "state":
-        QuestCommon.SetPlayerMissionState(curPlayer, curMission, value)
-        EventShell.NotifyOneMission(curPlayer, curMission, isNotifyAll = False)
-        curMission.SetProperty(conditionName,value)
-#    elif conditionName == "mission":
-#        curMission.SetMissionState(value)
-#        EventShell.NotifyOneMission(curPlayer, curMission)
-    else:
-        #GameWorld.Log(str(value))
-        #GameWorld.Log(str(conditionName))
-        curMission.SetProperty(conditionName,value)
-
-#---------------------------------------------------------------------
-##添加任务值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionName 节点名
-# @param value 值
-# @return 返回值无意义
-# @remarks 添加任务值
-def Var_Add(curPlayer, curMission, conditionName, value):
-    value = max(GameWorld.ToIntDef(value, 0), 1)
-        
-    curMission.AddProperty(conditionName,value)
-#---------------------------------------------------------------------
-##删除任务值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionName 节点名
-# @param value 值
-# @return 返回值无意义
-# @remarks 添加任务值
-def Var_Del(curPlayer, curMission, conditionName, value):
-    curMission.DelProperty(conditionName)
-#---------------------------------------------------------------------
-##减少任务值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionName 节点名
-# @param value 值
-# @return 返回值无意义
-# @remarks 添加任务值
-def Var_Sub(curPlayer, curMission, conditionName, value):
-    value = max(GameWorld.ToIntDef(value, 0), 1)
-    curMission.SubProperty(conditionName, value)
-#---------------------------------------------------------------------
-##随机设置任务值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionName 节点名
-# @param value 值
-# @return 返回值无意义
-# @remarks 随机设置任务值
-def Var_Rand_Set(curPlayer, curMission, conditionName, value):
-    valueList = value.split(",")
-    getValueIndex = random.randint(0, len(valueList)-1)
-    getValue = int(valueList[getValueIndex])
-    if conditionName == "state":
-        QuestCommon.SetPlayerMissionState(curPlayer, curMission, getValue)
-    else:
-        #GameWorld.Log(str(getValue))
-        #GameWorld.Log(str(valueList))
-        curMission.SetProperty(conditionName,getValue)
-
-#---------------------------------------------------------------------
-##任务数据调度器
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param conditionType 节点类型
-# @param conditionName 节点名
-# @param value 值
-# @return 返回值无意义
-# @remarks 任务数据调度器
-def SetValue(curPlayer, curMission, conditionType, conditionName, value):
-    conditionType = conditionType.title()
-    callName = "Var_" + conditionType.title()
-    if globals().has_key(callName):
-        return globals()[callName](curPlayer, curMission, conditionName, value)
-    return
-
-#---------------------------------------------------------------------
-##查找玩家物品背包是否拥有指定ID的物品
-# @param curPlayer 玩家实例
-# @param id 物品ID
-# @return 返回值, 是否拥有
-# @remarks 查找玩家物品背包是否拥有指定ID的物品
-def Find_Item(curPlayer, id):
-    #查询玩家是否有id物品
-    curItem = ItemControler.FindPlayerItemByItemID(curPlayer, IPY_GameWorld.rptItem, id)
-    if curItem == None:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##查询是否包含(物品,技能...)
-# @param curPlayer 玩家实例
-# @param conditionName 节点名字
-# @param id 查找ID
-# @return 返回值, 查找结果
-# @remarks 查询是否包含(物品,技能...)
-def GetFind(curPlayer, conditionName, id):
-    conditionName = "Find_%s"%conditionName.title()
-    if globals().has_key(conditionName):
-        return globals()[conditionName](curPlayer, id)
-    
-    return
-
-#---------------------------------------------------------------------
-##每周工资在线时间替换
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 每周工资在线时间替换
-def __GetTalkReplace_Last_Week_Time(curPlayer, curMission, type, parList):
-    return curPlayer.GetLastWeekOnlineTime()
-
-#---------------------------------------------------------------------
-##驱除复活虚弱BUFF金钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 驱除复活虚弱BUFF金钱
-def __GetTalkReplace_Clear_Born_Buff_Money(curPlayer, curMission, type, parList):
-    return 0
-
-##墓地医生显示金钱
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 墓地医生显示金钱
-def __GetTalkReplace_Health_Money(curPlayer, curMission, type, parList):
-    return GetHealthLostMoney(curPlayer)
-
-##(1-角色当前血量百分比)*3*角色等级^1.2+(1-角色当前蓝量百分比)*3*角色等级^1.2
-##获得墓地医生恢复所耗金额
-# @param curPlayer 玩家实例
-# @return 金额
-# @remarks 获得墓地医生恢复所耗金钱
-def GetHealthLostMoney(curPlayer):
-    curHP = GameObj.GetHP(curPlayer)
-    maxHP = GameObj.GetMaxHP(curPlayer)
-    curMP = curPlayer.GetMP()
-    maxMP = curPlayer.GetMaxMP()
-    lv = curPlayer.GetLV()
-    return int(eval(ChConfig.Def_Helth_Money_Formula))
-
-#---------------------------------------------------------------------
-##任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 任务奖励
-def __GetTalkReplace_Mission_Reward(curPlayer, curMission, type, parList):
-    curNode = QuestCommon.GetRewardNode(curPlayer, curMission)
-    if curNode == None or curNode.IsEmpty():
-        return ""
-    msgNode = curNode.FindChildNode("msg")
-    return ReplaceNPCTalkText(curPlayer, curMission, msgNode.GetXML())
-
-#---------------------------------------------------------------------
-##娱乐任务剩余时间
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 娱乐任务剩余时间
-def __GetTalkReplace_Game_Time(curPlayer, curMission, type, parList):
-    #娱乐总时间720修改为480分钟
-    sumTime = 8*60
-    curTime = curMission.GetProperty("count")*30
-    
-    time = (sumTime - curTime)*60
-    return time
-
-#---------------------------------------------------------------------
-##差值
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 差值
-def __GetTalkReplace_Sub(curPlayer, curMission, type, parList):
-    valueA = int(parList[0])
-    valueB = curMission.GetProperty(parList[1])
-    return  valueA - valueB 
-#---------------------------------------------------------------------
-##荣誉组队的荣誉显示替换
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 荣誉组队的荣誉显示替换
-def __GetTalkReplace_Team_Hornor(curPlayer, curMission, type, parList):
-    return curPlayer.GetTeamHornor()
-
-#---------------------------------------------------------------------
-##荣誉组队的金钱换取显示替换
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 荣誉组队的金钱换取显示替换
-def __GetTalkReplace_Th_Exchange_Money(curPlayer, curMission, type, parList):
-    return curPlayer.GetTeamHornor() / ChConfig.Def_TeamHornor_Money
-
-#---------------------------------------------------------------------
-##功勋替换
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 功勋替换
-def __GetTalkReplace_Country_Hornor(curPlayer, curMission, type, parList):
-    return 0  
-
-#---------------------------------------------------------------------
-##家族工资:上周累积家族活跃度显示
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 家族工资:上周累积家族活跃度显示
-def __GetTalkReplace_Family_Active_Value(curPlayer, curMission, type, parList):
-    return curPlayer.GetLastWeekFamilyActiveValue()
-#---------------------------------------------------------------------
-##点卷值显示
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 货币类型
-# @param parList 列表
-# @return 返回值, 替换的值
-# @remarks 点卷值显示
-def __GetTalkReplace_Coin_Value(curPlayer, curMission, type, parList):
-    missionID = curMission.GetMissionID()
-    return curMission.GetProperty(str(missionID))
-#==================================================================
-#运行Function_NPC的Menu Check, 检查通过才显示
-
-#---------------------------------------------------------------------
-##是否有仓库 检查通过才显示
-# @param curPlayer 玩家实例
-# @return 返回值真,可以显示
-# @remarks 是否有仓库
-def Menu_Check_Have_Ware_House(curPlayer, checkArgs):
-    #检查是否有仓库
-    if curPlayer.GetWarehouseLV() == 0:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##是否有职业 检查通过才显示
-# @param curPlayer 玩家实例
-# @return 返回值真,可以显示
-# @remarks 是否有职业
-def Menu_Check_Have_Job(curPlayer, checkArgs):
-    return True
-
-#---------------------------------------------------------------------
-##检查是否有国家 检查通过才显示
-# @param curPlayer 玩家实例
-# @return 返回值真,可以显示
-# @remarks 检查是否有国家
-def Menu_Check_Have_Country(curPlayer, checkArgs):
-    #检查是否有国家
-    if curPlayer.GetCountry() == 1:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##检查是否有家族 检查通过才显示
-# @param curPlayer 玩家实例
-# @return 返回值真,可以显示
-# @remarks 检查是否有家族
-def Menu_Check_Have_Family(curPlayer, checkArgs):
-    if curPlayer.GetFamilyID() == 0:
-        return False
-    
-    return True
-
-#---------------------------------------------------------------------
-##判断玩家线路
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curConditionNode 节点信息
-# @return 返回值, 是否判断成功
-def Menu_Check_Player_Game_Line(curPlayer, checkArgs):
-    argsList = checkArgs.split("|")
-    if len(argsList) != 2:
-        GameWorld.Log("Menu_Check_Player_Game_Line参数错误 %s"%checkArgs)
-        return False
-    
-    #可能会有几条线
-    lineMsg = argsList[0]    # 系统提示
-    lineStr = argsList[1]    # 线路参数
-    
-    #验证是否在期望线路
-    if str(PlayerControl.GetPlayerLineID(curPlayer)) not in lineStr:
-        PlayerControl.NotifyCode(curPlayer, lineMsg, [lineStr])
-        return False
-    
-    return True
-
-
-#---------------------------------------------------------------------
-## 判断玩家等级
-#  @param curPlayer 玩家实例
-#  @param curConditionNode 节点信息
-#  @return 是否判断成功
-def Menu_Check_Player_Lv(curPlayer, checkArgs):
-    argsList = checkArgs.split("|")
-    if len(argsList) != 2:
-        GameWorld.Log("Menu_Check_Player_Lv 参数错误 %s"%checkArgs)
-        return False
-    
-    notifyMsg = argsList[0]    # 系统提示
-    tagLv = argsList[1]    # 期望等级
-    
-    #验证是否为期望等级以上
-    if curPlayer.GetLV() < int(tagLv):
-        PlayerControl.NotifyCode(curPlayer, notifyMsg, [tagLv])
-        return False
-    
-    return True
-
-
-#---------------------------------------------------------------------
-##菜单选项验证调度器  检查通过才显示
-# @param curPlayer 玩家实例
-# @param menuStr 选项
-# @return 返回值真,可以显示
-# @remarks 菜单选项验证调度器 
-def RunMenuCheck(curPlayer, menuStr, checkArgs):
-    if menuStr == "":
-        return True
-    
-    callName = "Menu_Check_" + menuStr.title()
-    
-    if globals().has_key(callName):
-        return globals()[callName](curPlayer, checkArgs)
-    
-    GameWorld.Log("Error : %s UnCalled"%callName , curPlayer.GetPlayerID())
-    return False
-
-#=====================================================================
-##龙门棋局任务副本)的奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @return 返回值无意义
-# @remarks 龙门棋局任务副本)的奖励
-def GiveSpecialMissionReward_13002(curPlayer, curMission):
-    return
-
-#---------------------------------------------------------------------
-##特殊任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param curActionNode 激活节点
-# @return 返回值, 允许结果
-# @remarks 特殊任务奖励
-def GiveSpecialMissionReward(curPlayer, curMission, curActionNode):
-    callName = "GiveSpecialMissionReward_%d"%curMission.GetMissionID()
-    if globals().has_key(callName):
-        return globals()[callName](curPlayer,curMission)
-    
-    GameWorld.Log("can't find call %s"%callName , curPlayer.GetPlayerID())
-    return False
-
-#---------------------------------------------------------------------
-##NPC对话中的替换
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param type 类型
-# @return 返回值替换结果
-# @remarks NPC对话中的替换
-def GetNPCTalkReplaceValue(curPlayer, curMission, type):
-    pars = type.split()
-    type = pars[0]
-    pars.pop(0) 
-    conditionType = type.title()
-    callName = "__GetTalkReplace_" + conditionType.title()
-
-    #GameWorld.Log('Func Call : %s'%str(callName))
-
-    if globals().has_key(callName):
-        result = str(globals()[callName](curPlayer, curMission, type, pars))
-        #GameWorld.Log('Func Call Result: %s'%str(result))
-        return result
-
-    if curMission == None:
-        GameWorld.Log('###GetNPCTalkReplaceValue 找不到替换, type = %s'%type)
-        return ''
-
-    return str(curMission.GetProperty(type))      
-
-#---------------------------------------------------------------------
-##NPC对话中文字替换     
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param text 文字
-# @return 返回值替换结果
-# @remarks NPC对话中文字替换     
-def ReplaceNPCTalkText(curPlayer, curMission, text):
-    parseList = QuestCommon.DealWithInPut(text)
-    if len(parseList) == 0:
-        return text
-
-    #GameWorld.Log('%s--------------------'%text)
-
-    for i in range(0,len(parseList)):
-        parseList[i] = GetNPCTalkReplaceValue(curPlayer, curMission, parseList[i])
-        #GameWorld.Log('%s---------------'%parseList[i])
-
-    content = QuestCommon.DealWithReverse(text, parseList)
-    #GameWorld.Log('%s---------------'%content)
-
-    return content
-
-#---------------------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/DelAllMission.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/DelAllMission.py
deleted file mode 100644
index 47be755..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/DelAllMission.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package DelAllMission
-# 获得玩家任务列表
-#
-# @author kill
-# @date 2010-4-21
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-
-import GameWorld
-import Lang
-import ChConfig
-import LogUI
-import QuestCommon
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 []
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, playerList):
-
-    curIndex = 0
-    cnt = curPlayer.GetMissionCount()
-    while curIndex < cnt:
-        cnt = curPlayer.GetMissionCount()
-        #遍历任务列表, 找到这个人物可以执行的任务
-        curMission = curPlayer.GetMissionByIndex(curIndex)
-        
-        if curMission == None:
-            break
-        
-        #获得任务ID
-        MissionID = curMission.GetMissionID()
-        
-        GameWorld.DebugAnswer(curPlayer, Lang.GBText("删除 玩家任务ID:%d"%(MissionID)))
-        curPlayer.DelMission(MissionID)
-        
-    # 重置剧情任务完成状态
-    resetStoryNumList = []
-    for storyNum in xrange(ChConfig.Max_StoryMissionNum + 1):
-        isAllFinish = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_StoryMissionState, storyNum)
-        if isAllFinish:
-            GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_StoryMissionState, storyNum, 0)
-            resetStoryNumList.append(storyNum)
-    if resetStoryNumList:
-        QuestCommon.Sync_StoryMissionState(curPlayer, resetStoryNumList)
-        
-    GameWorld.DebugAnswer(curPlayer, Lang.GBText("删除任务成功"))
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoadMission.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoadMission.py
deleted file mode 100644
index 95c2a78..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoadMission.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.LoadMission
-#
-# @todo:检查任务脚本格式是否正常
-# @author hxp
-# @date 2017-11-17
-# @version 1.0
-#
-# 详细描述: 检查任务脚本格式是否正常
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-11-17 17:00"""
-#-------------------------------------------------------------------------------
-import IPY_GameWorld
-import QuestManager
-import GameWorld
-import ChConfig
-import zipfile
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [] [index] [index, count]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, playerList):
-    
-    questPath = ChConfig.GetAppPath() + "QuestData.zip"
-    ZipFile = zipfile.ZipFile(questPath)
-    nameList = ZipFile.namelist()
-    
-    xmlLoader = IPY_GameWorld.IPY_XMLLoader()
-    #GameWorld.DebugLog("questPath %s" % questPath)
-    for name in nameList:
-        if not name.upper().endswith("XML"):
-            #GameWorld.DebugLog("    不是XML文件不处理%s" % name)
-            continue
-        isOK = xmlLoader.LoadFromXML(name, QuestManager.ZipFile_GetData(name))
-        if not isOK:
-            GameWorld.DebugAnswer(curPlayer, "XML文件格式错误!%s" % (name))
-            
-    GameWorld.DebugAnswer(curPlayer, "任务脚本检查完毕!")
-    return True
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MissionDir.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MissionDir.py
deleted file mode 100644
index 97539e6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MissionDir.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package MissionDir
-# 获得玩家任务列表
-#
-# @author kill
-# @date 2010-4-23
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-
-import GameWorld
-import QuestManager
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [ missionID]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, playerList):
-    
-    if len(playerList) == 0:
-        GameWorld.DebugAnswer(curPlayer, "------ 任务数: %s ------" % curPlayer.GetMissionCount())
-        for i in range(curPlayer.GetMissionCount()):
-            curMission = curPlayer.GetMissionByIndex(i)
-            __ShowMissionInfo(curPlayer, curMission, False)
-        return
-    
-    missionID = playerList[0]
-    curMission = curPlayer.FindMission(missionID)
-    if curMission == None:
-        GameWorld.DebugAnswer(curPlayer, "无此任务:%d" % missionID)
-        return
-    __ShowMissionInfo(curPlayer, curMission, True)
-    return
-
-def __ShowMissionInfo(curPlayer, curMission, isShowKey):
-    #获得任务ID
-    MissionID = curMission.GetMissionID()
-    #获得任务状态
-    MissionState = curMission.GetState()
-    DescriptionIndex = curMission.GetDescriptionIndex()
-    curQuestData = QuestManager.FindQuest(MissionID)
-    name = curQuestData.Name if curQuestData else ""
-    GameWorld.DebugAnswer(curPlayer, "ID:%d\t状态:%d\t索引:%d    %s" % (MissionID, MissionState, DescriptionIndex, name))
-    if not isShowKey:
-        return
-    
-    for i in range(curMission.GetPropertyCount()):
-        GameWorld.DebugAnswer(curPlayer, "    %s = %d" % (curMission.GetPropertyNameByIndex(i), curMission.GetPropertyValueByIndex(i)))
-    return
-
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MissionXML.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MissionXML.py
deleted file mode 100644
index 56b200d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MissionXML.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.MissionXML
-#
-# @todo:任务接口测试
-# @author hxp
-# @date 2017-12-23
-# @version 1.0
-#
-# 详细描述: 任务接口测试, 测试XML文件路径: ZoneServerGroup\map1_8G\MapServer\MapServerData\QUESTDATATest.xml
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-12-23 18:00"""
-#-------------------------------------------------------------------------------
-
-import QuestRunner
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-
-import time
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [ missionID]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, playerList):    
-    curMission = curPlayer.FindMission(1)
-    if curMission == None:
-        GameWorld.DebugAnswer(curPlayer, "任务1不存在!无法测试!")
-        return
-    
-    testXMLPath = ChConfig.GetAppPath() + "QUESTDATATest.xml"
-    testXML = open(testXMLPath, 'r')
-    testXMLContent = testXML.read()
-    testXML.close()
-    
-    # 加上时间版本,确保每次运行重新加载测试文件
-    xmlLoader = IPY_GameWorld.IPY_XMLLoader()
-    isOK = xmlLoader.LoadFromXML("MissionXMLTest%d" % (int(time.time())), testXMLContent)
-    if not isOK:
-        GameWorld.DebugAnswer(curPlayer, "XML文件格式错误!%s" % (testXMLPath))
-        return
-    
-    nodeList = xmlLoader.GetNodeList()
-    __DoAction(curPlayer, curMission, nodeList)
-    return
-
-def __DoAction(curPlayer, curMission, nodeList):
-    for i in xrange(nodeList.GetCount()):
-        node = nodeList.Get(i)
-        childCount = node.GetChildCount()
-        if childCount:
-            __DoAction(curPlayer, curMission, node.ChildNodes())
-            continue
-        
-        xmlMsg = node.GetXML()
-        if xmlMsg.startswith("<!--"):
-            continue
-        if not xmlMsg.startswith("<"):
-            continue
-        nodeName = node.GetNodeName().title()
-        if nodeName in ["Xml", "Actions", "Light", "Answer_Conditions", "Answer_Actions"]:
-            continue
-        #GameWorld.DebugLog("DoAction: %s" % node.GetXML())
-        QuestRunner.DoAction(curPlayer, curMission, node)
-        #QuestRunner.AnswerConditionJudge(curPlayer, curMission, node)
-    return
-
-    
-    
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ResetTruckLV.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ResetTruckLV.py
deleted file mode 100644
index a71a26d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ResetTruckLV.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ResetTruckLV
-#
-# @todo:重置刷新镖车等级
-# @author hxp
-# @date 2016-7-5
-# @version 1.0
-#
-# 详细描述: 重置刷新镖车等级
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2016-7-5 12:00"""
-#-------------------------------------------------------------------------------
-import PlayerTruck
-import PlayerControl
-import ChConfig
-import GameWorld
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [speed]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-    
-    if PlayerTruck.PlayerInMapHaveTruck(curPlayer):
-        GameWorld.DebugAnswer(curPlayer, "拉镖中, 无法重置!")
-        return
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TruckLV, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TruckRefreshTotalCnt, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FreeRefurbishTruckCnt, 0)
-    PlayerTruck.Sync_TruckLv(curPlayer)
-    GameWorld.DebugAnswer(curPlayer, "已重置镖车等级、首次刷新镖车、免费刷新镖车")
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMission.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMission.py
deleted file mode 100644
index e71c6f0..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMission.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-##@package SetMission
-# 设置拥有任务
-#
-# @author PanWei
-# @date 2010-5-7上午11:23:33
-# @version 1.0
-#
-# VER = "2010-05-21 17:30" zhengyang 添加注释
-#模块详细说明.
-#---------------------------------------------------------------------
-import EventShell
-import QuestCommon
-import GameWorld
-#---------------------------------------------------------------------
-##添加任务 
-# @param curPlayer 玩家实例
-# @param playerList 参数列表
-# @return 返回值无意义
-# @remarks 添加任务  <任务ID> <任务状态> <状态字典(可选)>
-def OnExec(curPlayer, paramList):
-    if len(paramList) < 2:
-        GameWorld.DebugAnswer(curPlayer, "SetMission 任务ID 状态 可选(步骤 玩家ID)")
-        return
-    
-    missionID = paramList[0]
-    state = paramList[1]
-    descriptionIndex = paramList[2] if len(paramList) > 2 else None
-    tagPlayerID = paramList[3] if len(paramList) > 3 else 0
-    if tagPlayerID:
-        playerManager = GameWorld.GetMapCopyPlayerManager()
-        findPlayer = playerManager.FindPlayerByID(tagPlayerID)
-    else:
-        findPlayer = curPlayer
-        
-    if not findPlayer:
-        GameWorld.DebugAnswer(curPlayer, "找不到目标玩家,tagPlayerID=%s" % tagPlayerID)
-        return
-    
-    #获得列表中任务ID
-    mission = findPlayer.FindMission(missionID)
-    #玩家无此任务
-    if mission == None :
-        #添加此任务
-        mission = QuestCommon.AddNewMission(findPlayer, missionID)
-        
-    #设置任务状态
-    QuestCommon.SetPlayerMissionState(findPlayer, mission, state)
-    
-    if descriptionIndex != None:
-        mission.SetDescriptionIndex(descriptionIndex)
-        
-    EventShell.NotifyOneMission(findPlayer, mission)
-    
-    GameWorld.DebugAnswer(curPlayer, "设置任务成功ID=%d,状态=%s,描述=%d" % (mission.GetMissionID(), mission.GetState(), mission.GetDescriptionIndex()))
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetTruckState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetTruckState.py
deleted file mode 100644
index f71bcef..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetTruckState.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package SetTruckState
-# 设置镖车状态
-#
-# @author Administrator
-# @date 2010-4-23
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-import LogUI
-import Lang
-import IPY_GameWorld
-import GameWorld
-
-#
-## 设置镖车状态
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [状态]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer,playerList):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(0)
-    curPlayer.SetTruckState(playerList[0])
-    return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWorldPos.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWorldPos.py
index 453fcbe..7930c4d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWorldPos.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWorldPos.py
@@ -33,6 +33,6 @@
         posX = curPlayer.GetPosX()
     if not posY:
         posY = curPlayer.GetPosY()
-    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY, True, lineID)
+    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY, lineID)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TruckFast.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TruckFast.py
deleted file mode 100644
index 9895ac2..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TruckFast.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package TruckFast
-# 镖车设置速度
-#
-# @author Mark
-# @date 2010-4-23
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-import PlayerTruck
-import Lang
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [speed]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-    if len(list) == 0:
-        return
-    
-    truck = curPlayer.GetTruck()
-    
-    if truck == None :
-        return
-    
-    truck.SetSpeed(list[0])
-    
-    return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnCollect.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnCollect.py
deleted file mode 100644
index c9a156b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnCollect.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package frmTaskTrackEx.py
-# 模块的简要说明:采集命令
-# @author:alee
-# @date 2010-01-14 11:00
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# @change: "2010-05-06 09:42"  alee  采集命令
-# @change: "2010-05-31 20:00" alee 函数参数变更
-# 模块详细说明:采集命令
-#
-#---------------------------------------------------------------------
-#导入
-
-import EventShell
-import QuestCommon
-
-## 采集命令
-#  @param curPlayer GM
-#  @return playerList 命令参数(npciid 个数)
-#  @remarks 函数详细说明:采集命令 ,用于采集 test_OnCollect 11 3  (npciid 个数)
-def OnExec(curPlayer,playerList):
-    if len(playerList) < 1 :
-        return
-    if len(playerList) >2 :
-        return 
-    if len(playerList) == 1 :
-        count = 1
-    else:
-        count = playerList[1]
-    for i in range(0,count):
-        EventShell.RunDayEvent(curPlayer, "ON_COLLECT_BY_ID", playerList[0], QuestCommon.Def_Collect_Npc_ID)
-        EventShell.RunQuestEvent(curPlayer, "ON_COLLECT_BY_ID", playerList[0], EventShell.Def_RunQuestType_Normal)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnKill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnKill.py
deleted file mode 100644
index 9b12f3e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/test_OnKill.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package test_OnKill
-# 查询击杀数量
-#
-# @author Administrator
-# @date 2010-4-23
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# @change: "2010-05-12 18:30" zhengyang 添加注释
-# @change: "2010-05-31 20:00" alee 函数参数变更
-# 模块详细说明
-
-import EventShell
-import GameWorld
-
-#
-#2008-3-7 下午05:13:14
-#<NpcID  数量>
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param playerList 参数列表 [数量]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer,playerList):
-    if not playerList or len(playerList) > 2:
-        GameWorld.DebugAnswer(curPlayer, "test_OnKill npcID 个数")
-        return
-    npcID = playerList[0]
-    count = playerList[1] if len(playerList) > 1 else 1
-    for _ in xrange(count):
-        EventShell.Event_OnKillByID(curPlayer, npcID)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index ae8e33a..8ff4d3e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -1160,9 +1160,6 @@
     if npcObj == IPY_GameWorld.gnotSummon:
         return GetNPCManager().FindSummonNPCByID(curTagNPC.GetID())
     
-    elif npcObj == IPY_GameWorld.gnotTruck:
-        return GetNPCManager().FindTruckByID(curTagNPC.GetID())
-    
     elif npcObj == IPY_GameWorld.gnotPet:
         return GetNPCManager().FindPetByID(curTagNPC.GetID())
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index f30cd89..32b158a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -441,23 +441,7 @@
         callFunc(curPlayer, rebornType, tick)
     
     return
-#---------------------------------------------------------------------
-## 获得副本当前信息
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoGetFBState(curPlayer, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoGetFBState"))
-    
-    if callFunc:
-        #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
-        return  callFunc(curPlayer, tick)
-    
-    return
-#---------------------------------------------------------------------
+
 ## 获得副本帮助
 #  @param curPlayer 当前玩家
 #  @param tick 当前时间
@@ -1317,23 +1301,6 @@
     return callFunc(curPlayer)
 
 #---------------------------------------------------------------------
-## 玩家主动离开副本
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return None or False
-#  @remarks 函数详细说明.
-def OnExitEvent(curPlayer, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnExitEvent"))
-    
-    if callFunc == None:
-        #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
-        return False
-    
-    callFunc(curPlayer, tick)
-    return
-#---------------------------------------------------------------------
 ## 玩家刚登陆时,要判断玩家是否还属于这个副本
 #  @param curPlayer 当前玩家
 #  @param tick 当前时间
@@ -1948,24 +1915,7 @@
         return ''
     
     return callFunc(curPlayer, lineId)
-#---------------------------------------------------------------------
-##副本使用特殊功能(技能)
-# @param curPlayer 玩家实例
-# @param useType 使用类型
-# @param useState 使用状态
-# @return 无意义
-# @remarks 副本使用特殊技能
-def UseFBSpecilSkill(curPlayer, useType, useState, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "UseFBSpecilSkill"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, useType, useState, tick)
 
-    
 ##副本有NPC重生
 # @param curNPC:
 # @param tick:tick
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 611abb5..6dee3aa 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -17,7 +17,6 @@
 import PlayerControl
 import ItemCommon
 import GameMap
-import EventShell
 import NPCCommon
 import ReadChConfig
 import BuffSkill
@@ -2229,7 +2228,6 @@
             SendFBEncourageInfo(player, encourageLV+1, ownerID)
             if player.GetID() == curPlayer.GetID():
                 PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID])
-                EventShell.EventRespons_FBEncourage(curPlayer, curMapID)
             
     else:
         BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick)
@@ -2237,7 +2235,6 @@
         SendFBEncourageInfo(curPlayer, encourageLV+1, ownerID)
         #成就
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID])
-        EventShell.EventRespons_FBEncourage(curPlayer, curMapID)
     return True
 
 ## 添加副本鼓舞buff,一般用于玩家掉线后,在规定时间内重新上线回到副本时重新上buff
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
index 7625c1d..637d056 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
@@ -36,7 +36,6 @@
 import GameFuncComm
 import SkillShell
 import BuffSkill
-import EventShell
 import PyGameData
 import SkillCommon
 
@@ -113,7 +112,6 @@
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, 1)
         PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_XJMJ, 1)
         PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_XJMJ, 1)
-        EventShell.EventRespons_FBEvent(curPlayer, 'passxjmj')
         FBCommon.UpdateFBEnterTick(curPlayer)
         gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnterLV, playerLV)
         
@@ -571,7 +569,6 @@
     PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, sweepCnt)
     PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_XJMJ, sweepCnt)
     PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_XJMJ, sweepCnt)
-    EventShell.EventRespons_FBEvent(curPlayer, 'passxjmj')
     
     # 通知结果
     overDict = {FBCommon.Over_enterLV:enterLV, FBCommon.Over_exp:totalExp % ChConfig.Def_PerPointValue, 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ClearDevil.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ClearDevil.py
index 0e46602..b9cf035 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ClearDevil.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ClearDevil.py
@@ -20,13 +20,11 @@
 import IpyGameDataPY
 import IPY_GameWorld
 import GameWorldProcess
-import EventShell
 import NPCCustomRefresh
 import ChConfig
 import ShareDefine
 import EventReport
 import PlayerControl
-import QuestCommon
 
 
 #---副本配置对应key值---
@@ -394,7 +392,7 @@
         # 任务
         fbMissionID = gameFB.GetGameFBDictByKey(FBPlayerDict_MissionID)
         if fbMissionID:
-            EventShell.EventRespons_FBEvent(curPlayer, "cleardevil_pass_%s" % fbMissionID)
+            pass
         
     
     
@@ -407,7 +405,7 @@
 def OnLeaveFamily(curPlayer, tick):
     gameFB = GameWorld.GetGameFB()
     fbMissionType = gameFB.GetGameFBDictByKey(FBPlayerDict_MissionType)
-    if fbMissionType == QuestCommon.Def_Mission_Type_RunFamily:
+    if fbMissionType == 12:
         gameFB.SetGameFBDict(FBPlayerDict_MissionType, 0)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
index 0987690..1a5bb2f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
@@ -28,7 +28,6 @@
 import PlayerActLogin
 import EventReport
 import time
-import EventShell
 
 Map_FBDict_LastGodAreaCheckTick = 'LastGodAreaCheckTick'
 FBPlayerDict_LeaveTick = 'FBPlayerDict_LeaveTick'
@@ -141,7 +140,6 @@
         FBCommon.ClearAreaRewardRecord(curPlayer.GetID())
         FBCommon.SetHadDelTicket(curPlayer)
         FBCommon.AddEnterFBCount(curPlayer, mapID)
-        EventShell.EventRespons_FBEvent(curPlayer, 'godarea')
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_GodArea_Anger, 0)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_GodArea_LastAddAngerTime, 0)
         PlayerControl.FBNotify('ElderGod_SomeIn', [curPlayer.GetName()])
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Guard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Guard.py
index 3321d6a..ec05aed 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Guard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Guard.py
@@ -17,10 +17,8 @@
 import ChConfig
 import FBCommon
 import GameWorld
-import IPY_GameWorld
 import ItemControler
 import PlayerControl
-import EventShell
 
 
 
@@ -57,6 +55,5 @@
         overDict[FBCommon.Over_itemInfo] = FBCommon.GetJsonItemList([itemID])
 
     FBCommon.NotifyFBOver(curPlayer,mapID,lineID,1,overDict)
-    EventShell.EventRespons_FBEvent(curPlayer, "guardfbpass")
     PlayerControl.SetCustomMap(curPlayer, 0, 0)
     return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
index e4011c0..9d2f2a6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_HorsePetBoss.py
@@ -30,7 +30,6 @@
 import EventReport
 import NPCCommon
 import GameObj
-import EventShell
 import PlayerTongTianLing
 
 FBPlayerDict_EncourageLV = 'FBPlayerDict_EncourageLV'   # 鼓舞等级
@@ -149,7 +148,6 @@
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_HorsePetBoss, 1)
         PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_HorsePetBoss, 1)
         EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_HorsePetBoss, 0, ChConfig.CME_Log_Start)
-        EventShell.EventRespons_HorsePetBoss(curPlayer)
         if fbStep == FB_Step_Open:
             FBCommon.SetFBStep(FB_Step_Fighting, tick)
     UpdateHurtInfo(curPlayer, 0, True)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
index c278e73..67b528e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
@@ -29,7 +29,6 @@
 import ItemCommon
 import ItemControler
 import EventReport
-import EventShell
 import ChPyNetSendPack
 import NetPackCommon
 import PlayerSuccess
@@ -593,7 +592,6 @@
         
         jsonItemList = FBCommon.GetJsonItemList(itemList)
         overDict[FBCommon.Over_itemInfo] = jsonItemList
-        EventShell.EventRespons_FBEvent(curPlayer, 'icelode')
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_IceLode, 1)
         
     # 通知结果
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_KirinHome.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_KirinHome.py
index 180f860..e13848d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_KirinHome.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_KirinHome.py
@@ -29,7 +29,6 @@
 import PlayerBossReborn
 import PlayerWeekParty
 import PlayerActLogin
-import EventShell
 import EventReport
 
 import random
@@ -393,8 +392,6 @@
         PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_KirinHome, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_KirinHome, 1)
         PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_KirinHome, 1)
-        EventShell.EventRespons_FBEvent(curPlayer, "kirinhome_%s" % (lineID+1))
-        EventShell.EventRespons_FBEvent(curPlayer, "kirinhome_0")
         
         if lineID+1 > curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBHistoryMaxLine % mapID):
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBHistoryMaxLine % mapID, lineID+1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py
index e5ef274..cfe91a2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MagicWeapon.py
@@ -20,7 +20,6 @@
 import IpyGameDataPY
 import IPY_GameWorld
 import GameWorldProcess
-import EventShell
 import NPCCustomRefresh
 import ChConfig
 import ShareDefine
@@ -447,7 +446,7 @@
         # 任务
         fbMissionID = gameFB.GetGameFBDictByKey(FBPlayerDict_MissionID)
         if fbMissionID:
-            EventShell.EventRespons_FBEvent(curPlayer, "cleardevil_pass_%s" % fbMissionID)
+            pass
         #触发激活法宝
         level = gameFB.GetGameFBDictByKey(FBPlayerDict_Level)
         PlayerMagicWeapon.ActiveMagicWeaponByFB(curPlayer, ChConfig.Def_FBMapID_MagicWeapon, lineID, level)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MunekadoTrial.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MunekadoTrial.py
index 512b1c1..7e43909 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MunekadoTrial.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MunekadoTrial.py
@@ -32,7 +32,6 @@
 import ItemCommon
 import EventReport
 import PyGameData
-import EventShell
 import NPCCommon
 import FBHelpBattle
 import PlayerActLogin
@@ -426,9 +425,7 @@
              
         if star == 5:
             EventReport.WriteEvent_FB(curPlayer, mapID, lineID, ChConfig.CME_Log_End, 0, 1)
-        EventShell.EventRespons_FBEvent(curPlayer, "zmsl_%s_%s" % (lineID, star))
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MunekadoTrial, 1, [playerCount, star, lineID+1])
-        EventShell.EventRespons_FBEvent(curPlayer, "passzmsl")
         # 如果在副本中过天,则只给物品奖励,不变更过关信息
         if not isInFBOnDay:
             FBCommon.AddEnterFBCount(curPlayer, mapID, 1)
@@ -496,9 +493,7 @@
     
     star = 5
     EventReport.WriteEvent_FB(curPlayer, mapID, lineID, ChConfig.CME_Log_End, 0, 1)
-    
-    EventShell.EventRespons_FBEvent(curPlayer, "zmsl_%s_%s" % (lineID, star))
-    EventShell.EventRespons_FBEvent(curPlayer, "passzmsl")
+
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MunekadoTrialEx, 1)
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_MunekadoTrial, 1, [1, star, lineID+1])
     PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_MunekadoTrial, 1)
@@ -793,8 +788,6 @@
     #给物品
     ItemControler.GivePlayerItem(curPlayer, exchangeItemID, exchangeItemCount, 0, [IPY_GameWorld.rptItem], 
                                  event=[ChConfig.ItemGive_TrialExchange, False, {}])
-    #任务
-    EventShell.EventRespons_TrialExchange(curPlayer, costItemID)
     
     GameWorld.DebugLog("宗门兑换成功!exchangeID=%s,costItemID=%s,costItemCount=%s,delInfoDict=%s" 
                            % (exchangeID, costItemID, costItemCount, delInfoDict), playerID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
index d926dfc..c9859c6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
@@ -25,7 +25,6 @@
 import PlayerFairyCeremony
 import PlayerFeastTravel
 import IpyGameDataPY
-import EventShell
 import NPCCommon
 import ChConfig
 
@@ -104,8 +103,6 @@
     PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, 1)
     PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss)
     
-    EventShell.EventRespons_FBEvent(curPlayer, 'passvipboss')
-    
     npcCountDict = {bossID:1}
     dropItemMapInfo = [0, 0]
     jsonItemList = NPCCommon.GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, dropItemMapInfo=dropItemMapInfo, curGrade=grade, isVirtualDrop=True)[0]
@@ -147,8 +144,6 @@
     PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt)
     PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, sweepCnt)
     PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss)
-    
-    EventShell.EventRespons_FBEvent(curPlayer, 'passvipboss')
     
     npcCountDict = {bossID:sweepCnt}
     jsonItemList = NPCCommon.GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, curGrade=grade)[0]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
index 0fc43c6..120657f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
@@ -28,7 +28,6 @@
 import BuffSkill
 import PlayerSuccess
 import ShareDefine
-import EventShell
 import EventReport
 import ChPlayer
 import FBHelpBattle
@@ -527,10 +526,6 @@
         #成就
         if grade >= maxGrade:
             PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_QueenRelics, 1, [lineID+1])
-        
-        EventShell.EventRespons_PassQueenRelecs(curPlayer, lineID, grade)
-        #任务
-        EventShell.EventRespons_FBEvent(curPlayer, "queenrelics_pass")
     
     # 记录结算到的线路层,记录值+1
     updRewardLine = lineID + 1
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
index d73a552..fb098f3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
@@ -25,7 +25,6 @@
 import NPCCommon
 import ItemCommon
 import ShareDefine
-import EventShell
 import PlayerSuccess
 import PlayerActivity
 import GameObj
@@ -327,11 +326,6 @@
         
     # 每日活动
     PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_SealDemon, addCnt)
-    EventShell.EventRespons_FBEvent(curPlayer, "sealdemon_%s" % (lineID + 1))
-    EventShell.EventRespons_FBEvent(curPlayer, "sealdemon_0")
-    #任务
-    if rank == 1 and lineID >= 4:
-        EventShell.EventRespons_SealDemon(curPlayer)
     
     PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FMT, addCnt)
     PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py
index fc2855f..3162e56 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py
@@ -23,7 +23,6 @@
 import NPCCustomRefresh
 import ChPyNetSendPack
 import ItemControler
-import EventShell
 import NetPackCommon
 import ShareDefine
 import IpyGameDataPY
@@ -129,10 +128,6 @@
 ## 更新当前已通关关卡
 def SetSkyTowerCurfloorID(curPlayer, floorID):
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_SkyTowerFloor, floorID)
-
-    #任务
-    EventShell.EventRespons_SkyTowerCnt(curPlayer, floorID)
-    EventShell.EventRespons_SkyTowerCnt(curPlayer, 0) # 额外触发通用0.xml,之前的精准层触发在策划任务脚本层错误的情况下完成不了,需要做修复
     #通关符印塔成就
     PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_PassSkyTower, floorID)
     GameWorld.DebugLog(' 更新天星塔已通关数 %s' % floorID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
index aaeb8ce..9113052 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
@@ -23,7 +23,6 @@
 import NPCCustomRefresh
 import ChPyNetSendPack
 import ItemControler
-import EventShell
 import NetPackCommon
 import ShareDefine
 import IpyGameDataPY
@@ -342,9 +341,6 @@
     costTime = tick - GameWorld.GetGameFB().GetFBStepTick()
     prizeDict[FBCommon.Over_costTime] = costTime
     __SendTrialTowerOverInfo(curPlayer, fbLevel, True, prizeDict)
-    
-    #任务
-    EventShell.EventRespons_TrialTowerCnt(curPlayer, fbLevel)
     
     SyncTrialLevelInfo(curPlayer) # 同步最新关卡信息
     __SetFBToFreeTime(tick)
@@ -722,8 +718,6 @@
         # 给过关奖励
         __GiveFBPassPrize(curPlayer, passLineID, moneyDictTotal, itemListTotal)
         
-        #任务
-        EventShell.EventRespons_TrialTowerCnt(curPlayer, passLineID)
         #每日任务
         PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_Tower)
         
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
index cab9108..ef70556 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldProcess.py
@@ -41,7 +41,6 @@
 import PlayerControl
 import FamilyRobBoss
 import NPCCustomRefresh
-import EventShell
 import FBLogic
 import FBCommon
 import EventReport
@@ -272,10 +271,7 @@
         if playerExistTime < existTime / 2:
             #这个玩家存在时间过短, 不能触发副本结束的事件
             continue
-
-        #副本时间到了, 调用时间到响应
-        EventShell.EventResponse_OnFBTimeOut(curPlayer)
-    
+        
     #输出调试信息
     GameWorld.Log('__ProcessTimeKickPlayer! LineID = %s, openState = %s'%(gameWorld.GetLineID(), gameWorld.GetOpenState()))
     
@@ -588,7 +584,6 @@
 def InitGameWorld(tick):
     gameWorld = GameWorld.GetGameWorld()
     ItemCommon.InitPyItem()
-    EventShell.DoReloadRefresh()
     #处理副本逻辑
     FBLogic.OnInit(tick)
     #初始化地图时钟
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/SubjectLib.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/SubjectLib.py
deleted file mode 100644
index db40c8a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/SubjectLib.py
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package SubjectLib
-# @todo: 答题读题管理器
-#
-# @author: panwei
-# @date 2010-04-20
-# @version 1.1
-#
-# @note: 
-#模块详细说明
-#为了避免同一个玩家取到相同题目的情况:
-#题库分为: 原始题库和动态题库, 原始题库读取题目,
-#
-#1. 动态题库 根据原始题库生成随机题库
-#2. 题库从动态题库里面取
-#3. 每取一题, 从动态题库中删除这一题
-#4. 如果动态题库取完了, 则重新生成动态题库
-#---------------------------------------------------------------------
-# @change: "2011-01-20 17:30" panwei 格式化脚本
-#---------------------------------------------------------------------
-"""Version = 2011-01-20 17:30"""
-#---------------------------------------------------------------------
-import random
-import os
-import LogUI
-import ChConfig
-import GameWorld
-import copy
-import QuestManager
-#---------------------------------------------------------------------
-#所有的题库,key为题目类型,单独题库为[] -> 原始题库
-__AllSubject = {}
-#动态题库
-__DelicacySuject = {}
-#---------------------------------------------------------------------
-## 随机获得一道题目
-#  @param key 字符串
-#  @return chinSuject 一个题目
-#  @remarks 函数详细说明.
-def GetSubject(key):
-    global __DelicacySuject
-    
-    if len(__AllSubject) == 0:
-        QuestManager.ReadSubjectLib()
-    
-    key = key.lower()
-
-    #第一次加载题目,初始化
-    if len(__DelicacySuject) == 0:
-        __DelicacySuject = copy.deepcopy(__AllSubject)
-
-    #获得题库
-    sujectList = __DelicacySuject.get(key)
-    #抛弃异常
-    if sujectList == None:
-        GameWorld.Log("###异常获得题目错误,无这类题目key = %s"%(key))
-        return
-    
-    #无题目了,重新加载原始题库
-    if len(sujectList) == 0:
-        __DelicacySuject = copy.deepcopy(__AllSubject)
-        
-    #重新加载题库
-    sujectList = __DelicacySuject.get(key)
-    #随机选择一道题目(返回值为类class ChinSubject 的实例)
-    chinSuject = random.choice(sujectList)
-    #删除这个题目
-    sujectList.remove(chinSuject)
-    return chinSuject
-
-#---------------------------------------------------------------------
-## 单独一道题
-#
-#  PyClass类的详细说明.
-class ChinSubject:
-    ID = 0
-    Subject = ""
-    Answer = 0
-    Option = []
-    line = ""
-    ## 初始化函数
-    #  @param line 字符串
-    #  @return None
-    #  @remarks 函数详细说明.
-    def __init__(self , line):
-        self.Clear()
-        self.line = line
-        return
-    
-    ## 初始化
-    #  @param 
-    #  @return None
-    #  @remarks 函数详细说明.
-    def Clear(self):
-        self.ID = 0
-        self.Subject = ""
-        self.Answer = 0
-        self.Option = []
-        self.line = ""
-        return
-    
-    ## 从字符串里读取
-    #  @param 
-    #  @return None
-    #  @remarks 函数详细说明.
-    def ReadFromStr(self):
-        lineList = self.line.split('\t')
-        self.ID = int(lineList[0])
-        self.Subject = lineList[1]
-        self.Answer = lineList[2]
-        for i in range(3, len(lineList)):
-            curStr = lineList[i].strip()
-            if curStr == '':
-                continue
-            self.Option.append(curStr)
-            
-        return
-    
-    ## 题目ID
-    #  @param 
-    #  @return 题目ID
-    #  @remarks 函数详细说明.
-    def GetID(self):
-        return self.ID
-    
-    ## 题目
-    #  @param 
-    #  @return 题目
-    #  @remarks 函数详细说明.
-    def GetSubject(self):
-        return self.Subject
-    
-    ## 答案
-    #  @param 
-    #  @return 答案
-    #  @remarks 函数详细说明.
-    def GetAnswer(self):
-        return self.Answer
-    
-    ## 选项
-    #  @param 
-    #  @return 选项
-    #  @remarks 函数详细说明.
-    def GetOption(self):
-        return self.Option
-#---------------------------------------------------------------------
-## 读取数据
-#  @param 无
-#  @return None
-#  @remarks 函数详细说明.
-def ReadData():
-    global __AllSubject
-    
-    mapID = GameWorld.GetMap().GetMapID()
-    #不需要重读的地图
-    if mapID not in ChConfig.Def_Subject_Map:
-        return
-    
-    curPath = ChConfig.GetAppPath() + "QUESTDATAGb\\SubjectLib"
-    
-    if not os.path.isdir(curPath):
-        GameWorld.Log("路径 = %s , 无法查找到答题题库!"%(curPath))
-        return
-    
-    files = os.listdir(curPath)
-    for file in files:
-        ext = os.path.splitext(file)
-        postfix = ext[1]
-        if postfix != ".txt":
-            continue
-        
-        fileName = ext[0]
-        
-        file = open(os.path.join(curPath, file),'r')
-        
-        for line in file.readlines():
-            #去除头尾无用的字符
-            line = line.strip()
-            
-            if line == '':
-                continue
-            
-            curSubject = ChinSubject(line)
-            curSubject.ReadFromStr()
-
-            if __AllSubject.has_key(fileName):
-                __AllSubject.get(fileName).append(curSubject)
-                
-            else:
-                __AllSubject.update({fileName:[curSubject]})
-    
-    return
-
-## 解析题目数据
-#  @param curData 题目数据
-#  @param fileName 文件名
-#  @return None
-#  @remarks 函数详细说明.
-def ReadSubjectData(curData, fileName):
-    curData = curData.split('\r\n')
-    for line in curData:
-        #去除头尾无用的字符
-        line = line.strip()
-        
-        if line == '':
-            continue
-        
-        curSubject = ChinSubject(line)
-        curSubject.ReadFromStr()
-
-        if __AllSubject.has_key(fileName):
-            __AllSubject.get(fileName).append(curSubject)
-            
-        else:
-            __AllSubject.update({fileName:[curSubject]})    
-    return
-
-#---------------------------------------------------------------------
-
-    
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
index 8ad3888..d7360f8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -29,9 +29,7 @@
 import ShareDefine
 import ChPyNetSendPack
 import NetPackCommon
-import EventShell
 import IpyGameDataPY
-import PlayerWing
 import Operate_EquipStone
 import OpenServerCampaign
 import PassiveBuffEffMng
@@ -125,15 +123,6 @@
     if itemClassLV == GetEquipFacadeClassLV(curPlayer):
         #穿当前外观阶的套装
         ChangeEquipfacadeByClassLV(curPlayer, itemClassLV)
-    
-    if not endureReduceType:
-        EventShell.EventRespons_EquipByPlace(curPlayer, itemClassLV, equipPlace)
-    #记录橙装、红装
-    #===========================================================================
-    # if itemQuality in [ChConfig.Def_Quality_Orange, ChConfig.Def_Quality_Red]:
-    #    classLV = ItemCommon.GetItemClassLV(curItem)
-    #    EventReport.WriteEvent_orange_equip(curPlayer, changeItemEquipPlace, classLV, itemQuality)
-    #===========================================================================
         
     #特殊装备, 不需要刷属性
     if changeItemEquipPlace in ChConfig.EquipItemNoRefreshState:
@@ -332,78 +321,6 @@
         Sync_LingQiTrainData(curPlayer, equipPlace)
         
     return
-
-## 刷新所有装备对人物属性的改变
-#  @param self 类实例
-#  @return 返回值无意义
-#  @remarks 刷新装备对人物属性的改变
-#===============================================================================
-# def __RefreshPlayerAllEquipBuff(curPlayer):
-#    #初始化人物装备buff
-#    curPlayer.GetEquipBuff().Clear()
-# 
-#    packType = IPY_GameWorld.rptEquip
-#        
-#    equipPackList = [IPY_GameWorld.rptEquip, IPY_GameWorld.rptHorseEquip]
-#    
-#    #stoneLVCntList = []
-#    #===========================================================================
-#    orangeQualityCnt = 0 #橙色装备数量(包含橙色品质以上的装备数量)
-#    for packIndex in equipPackList:
-#        equipPack = curPlayer.GetItemManager().GetPack(packIndex)
-#    
-#        for equipIndex in range(0, equipPack.GetCount()):
-#            
-#            #备用装备栏不处理
-#            if packIndex == IPY_GameWorld.rptEquip and equipIndex not in ShareDefine.RoleEquipType:
-#                continue
-#            
-#            curEquip = equipPack.GetAt(equipIndex)
-#            
-#            if curEquip.IsEmpty():
-#                continue
-# 
-#            if not ItemCommon.CheckItemCanUseByExpireTime(curEquip):
-#                # 过期
-#                continue
-#            
-#            #装备触发的技能 (全身)
-#            CalcCurEquip_SkillBuff(curPlayer, curEquip)
-#            
-#            
-#            
-#            # 后面的为角色装备专用处理
-#            #===================================================================
-#            # if packIndex != IPY_GameWorld.rptEquip:
-#            #    continue
-#            # 
-#            # if isSuite or curEquip.GetItemTypeID() in ReadChConfig.GetEvalChConfig("AddSuiteNumEquitList"):
-#            #    suiteEquipCnt += 1
-#            #===================================================================
-#            
-#    #套装加buff 根据装备现有的套装的个数字典 
-# #===============================================================================
-# #    #全身橙色装备数量触发相关
-# #    OnOrangeQualityCntChange(curPlayer, orangeQualityCnt)
-# #    
-# #    # 重置激活提示类型为None
-# #    curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_None)
-# #===============================================================================
-#    
-#    # 装备内层buff
-#    allAttrListEquip = [{} for i in range(4)] # 不包含翅膀及装备上镶嵌的宝石
-#    SkillShell.CalcCurBuffer_Effect(curPlayer.GetEquipBuff(), curPlayer, allAttrListEquip)
-#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBuff, allAttrListEquip)
-#    
-#    # 装备外层buff属性,此buff算战力
-#    allAttrListEquptBuffs = [{} for i in range(4)]
-#    SkillShell.CalcCurBuffer_Effect(curPlayer.GetEquipBuff(), curPlayer, 
-#                                    allAttrListEquptBuffs, [], ChConfig.CalcBuffLevel_1)
-#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipBuff1, allAttrListEquptBuffs)
-#    
-#    return
-#===============================================================================
-
 
 #===============================================================================
 # #//07 03 人物装备物品#tagCEquipItem
@@ -766,10 +683,6 @@
                     lqAttrValue = lingQiAttrValueList[lqIndex]
                     
                 PlayerControl.CalcAttrDict_Type(lqAttrID, lqAttrValue, lingQiAttrList)
-                
-        #灵器各部位其他属性
-        #if equipPlace == ShareDefine.retWing:
-        #    PlayerWing.CalcWingAttrEx(curPlayer, curEquip, allAttrList)
             
     # 新培养属性
     guardTrainAttrList = [{} for _ in range(4)]
@@ -1407,13 +1320,6 @@
     activateInfo.SuiteActivateStateInfo = activateStateList
     activateInfo.Count = len(activateInfo.SuiteActivateStateInfo)
     NetPackCommon.SendFakePack(curPlayer, activateInfo)
-    return
-
-##全身橙色装备数量触发相关(包含橙色品质以上的装备数量)
-def OnOrangeQualityCntChange(curPlayer, orangeQualityCnt):
-    notifyType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrActivatyNotify)
-    if notifyType == ChConfig.Def_AttrActivatyNotify_Equip:
-        EventShell.EventRespons_OrangeQualityCnt(curPlayer, orangeQualityCnt)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index cf87e7b..e4e12c9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -37,7 +37,6 @@
 import UseItem
 import ItemCommon
 import ChConfig
-import EventShell
 import PlayerControl
 import FBLogic
 import ReadChConfig
@@ -159,12 +158,6 @@
         return
     dropItemNPCID = GetMapItemUserDataValue(mapItem, ShareDefine.Def_MapItemInfo_NPCID)
     
-    #镖车中,无法拾取
-    if not isGuard and curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
-        PlayerControl.NotifyCode(curPlayer, "Old_hgg_21675")
-        GameWorld.Log("使用交通工具时,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID)
-        return
-    
     if GameObj.GetHP(curPlayer) == 0:
         #玩家已经死亡
         GameWorld.Log("玩家已死亡,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID)
@@ -284,8 +277,6 @@
         #    PickupItemSysNotify(curPlayer, isTeamNotify, itemMsgList, isEquip)
         #=======================================================================
         
-        #响应事件
-        EventShell.EventRespons_OnGet(curPlayer, mapItemTypeID)
         #成就
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PickUpItem, curItemCount, [curItemID])
     
@@ -919,11 +910,6 @@
                                         ):
         return False
     
-    #在镖车中, 不可使用物品
-    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck :
-        PlayerControl.NotifyCode(curPlayer, "Old_hgg_0")
-        return False
-    
     #交易状态, 不可使用物品
     if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade:
         PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238")
@@ -981,11 +967,6 @@
     
     if ItemControler.IsEventItem(curItem):
         PlayerControl.NotifyCode(curPlayer, "itemuse_chenxin_31379")
-        return
-    
-    #玩家在镖车中,不能使用物品
-    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
-        PlayerControl.NotifyCode(curPlayer, "Old_hgg_0")
         return
     
 #    #玩家事件中, 不能使用物品
@@ -1408,96 +1389,6 @@
 def GetBackItemInFabao(index , tick):
     return
 
-##===============================================================================
-##07 24   tagCDingDianTransport
-#
-### 定点(城市)传送 和 洞穴传送 (收包参数)
-##  @param index 玩家索引
-##  @param tick 当前时间
-##  @return None
-##  @remarks 函数详细说明.
-#def PointTransport(index, tick):
-#    return
-#    packUseItem = IPY_GameWorld.IPY_CDingDianTransport()
-#    useItemIndex = packUseItem.GetItemIndex()
-#    transportIndex = packUseItem.GetTransportIndex()
-#    
-#    #获得玩家使用的物品
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-#    curItem = backPack.GetAt(useItemIndex)
-#    
-#    #检查玩家状态和物品
-#    if not CheckUseTransformItem(curPlayer, curItem, tick):
-#        return
-#    
-#    #判断属于哪种传送
-#    effIndex = curItem.GetEffectByIndex(0)
-#    curEffID = effIndex.GetEffectID()
-#    
-#    #CD验证
-#    if (tick - curPlayer.GetItemCDStartTime(curEffID)) < curItem.GetCDTime():
-#        #CD冷却时间未到
-#        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_749572")
-#        return
-#    
-#    #判断并执行传送
-#    if not __DoTransport(curPlayer, curItem, curEffID, transportIndex, useItemIndex, tick):
-#        return
-#
-### 执行传送
-##  @param curPlayer 当前玩家
-##  @param curItem 使用物品
-##  @param curEffID 当前效果
-##  @param transportIndex 传送点索引
-##  @param useItemIndex 使用的物品索引
-##  @param tick 当前时间
-##  @return None
-##  @remarks 函数详细说明.
-#def __DoTransport(curPlayer, curItem, curEffID, transportIndex, useItemIndex, tick):
-#    #定点列表
-#    cityPosList = ReadChConfig.GetEvalChConfig('Def_List_City_Pos')
-#    #山洞列表
-#    cavePosList = ReadChConfig.GetEvalChConfig('Def_List_Cave_Pos')
-#    
-#    #定点
-#    if curEffID == ChConfig.Def_Item_150_Effect:
-#        posList = cityPosList
-#    #山洞
-#    elif curEffID == ChConfig.Def_Item_152_Effect:
-#        posList = cavePosList
-#    else:
-#        GameWorld.Log('###非法使用物品,效果值%s'%(curEffID,), curPlayer.GetPlayerID())
-#        return
-#    
-#    #检查越界
-#    if transportIndex < 0 or transportIndex >= len(posList):
-#        GameWorld.Log('###定点传送越界--%s'%(transportIndex))
-#        return
-#    
-#    #目标地图判断
-#    if not PlayerControl.CheckTagCountry(curPlayer, posList[transportIndex][0]):
-#        return
-#    
-#    itemID = curItem.GetItemTypeID()
-#    
-#    
-#    #使用xx一个
-#    PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID, 1])
-#    #通知客户端
-#    curPlayer.Sync_UseItem(itemID, useItemIndex)
-#    curPlayer.SetItemCD(curItem.GetCDType(), tick)
-#    
-#    #扣除物品(先记录再删除,避免底层已经删除此物品)
-#    curItem.SetCount(curItem.GetCount() - 1)
-#    
-#    #判断成功,进行传送
-#    PlayerControl.PlayerResetWorldPos(curPlayer, posList[transportIndex][0], posList[transportIndex][1], posList[transportIndex][2], False)
-#    
-#    #传送XX地点提示
-#    PlayerControl.NotifyCode(curPlayer, "Map_Deliver_Succeed", [posList[transportIndex][0]])
-    
-#---------------------------------------------------------------------
 #===============================================================================
 # //07 26 有对象的使用物品#tagCUseItemTag
 # tagCUseItemTag       *   GettagCUseItemTag();
@@ -1649,100 +1540,6 @@
         return
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //07 33 使用五行卷#tagCUseWuXingJuan
-# tagCUseWuXingJuan       *   GettagCUseWuXingJuan();
-# 
-# class   IPY_CUseWuXingJuan
-# {
-# public:
-#    //物品Index
-#    int      GetItemIndex();
-#    //新的五行
-#    int      GetNewWuXing();
-# };
-#===============================================================================
-## 使用五行卷轴(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None or False
-#  @remarks 函数详细说明.
-def UseWuXingJuan(index , tick):
-    return
-
-## 检测物品是否是五行卷轴
-#  @param curItem 等待检测的物品
-#  @return 布尔值
-#  @remarks 函数详细说明.
-#===============================================================================
-# def CheckWuXingJuan(curItem):
-#    if not ItemCommon.CheckItemCanUse(curItem):
-#        return False
-#    
-#    #这个物品不是五行转换卷轴
-#    if curItem.GetEffectByIndex(0).GetEffectID() != ChConfig.Def_Effect_ItemWuXingJuan:
-#        return False
-#    
-#    return True
-#===============================================================================
-
-
-## 使用回城
-#  @param curPlayer 当前玩家 
-#  @return None or True
-#  @remarks 函数详细说明.
-def UseTownPortal(curPlayer):
-    #检查是否是回城卷
-    itemIndex = curPlayer.GetDictByKey(ChConfig.Def_Use_Item_303_Index)
-    curItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem).GetAt(itemIndex)
-    
-    #物品不存在,不是回城卷不处理
-    if not ItemCommon.CheckItemCanUse(curItem) or curItem.GetItemTypeID() != 303:
-        #不能获得物品ID只能写死,否则玩家移动将找不到物品,或ID不匹配
-        PlayerControl.NotifyCode(curPlayer, "B66BA2D6-0B3C-4177-B3FE66153B638DD0", [303, 303])
-        return
-    
-    useCount = 1
-    itemID = curItem.GetItemTypeID()
-    guID = curItem.GetGUID()
-    
-    dataDict = {"ItemID":itemID, "ItemCount":useCount, "IsBind":curItem.GetIsBind(),"ItemGUID":guID}
-    DataRecordPack.DR_DeleteItem(curPlayer, 'UseTownPortal', dataDict)
-
-    #物品使用减少
-    if curItem.GetCount() > useCount:
-        ItemControler.SetItemCount(curItem, curItem.GetCount() - useCount, 
-                                   curPlayer.GetID(), curPlayer.GetAccID(), curPlayer.GetPlayerName())
-    else: 
-        curItem.Clear()
-        
-    #PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID, useCount])
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #把人物设置回重生点
-    playerControl.SetToBornPlace()
-
-    return True
-    
-#===============================================================================
-# 07 39 使用指定数量的物品 tagCUseItemCount
-# struct    tagCUseItemCount
-# {
-#     tagHead        Head;
-#     BYTE        Type;    //物品类型
-#     DWORD        Count;       //物品数量
-# }
-#===============================================================================
-
-## 07 39封包 使用指定数量的物品
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return 无
-#  @remarks 和客户端约定的类型来取得指定物品,目前用于离线挂机,扣乾坤珠
-def UseOfflineTime(index, tick):
-    return
-
-    
 #===============================================================================
 # struct   tagCPetUseItemByIndex
 # {
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 09a7580..d75bf5e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -39,7 +39,6 @@
 import DataRecordPack
 import PlayerGubao
 import PyGameData
-import EventShell
 import PlayerVip
 import ChEquip
 
@@ -883,7 +882,6 @@
             PlayerSuccess.DoEquipSuccessLogic(curPlayer, classLV)
             #换装宝石处理
             Operate_EquipStone.DoMoveEquipStone(curPlayer, equipPackIndex)
-            EventShell.EventRespons_EquipItem(curPlayer)
             dataDict = {'dotype':'EquipItem', 'desItemID':desItemID, 'desUserData':desUserData,'srcItemID':srcItemID,'srcUserData':srcUserData}
             DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
             self.__UpdEquipOrangeCount(befIsOrangeEquip, aftIsOrangeEquip)
@@ -1005,8 +1003,7 @@
         if suiteID and itemClassLV == ChEquip.GetEquipFacadeClassLV(curPlayer):
             #脱当前外观阶的套装
             ChEquip.ChangeEquipfacadeByClassLV(curPlayer, itemClassLV)
-        
-        EventShell.EventRespons_EquipItem(curPlayer)
+            
         dataDict = {'dotype':'UnEquipItem', 'equipID':equipID, 'userData':userData}
         DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
 #===============================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py
index b48b299..5ee22c1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py
@@ -18,17 +18,11 @@
 #------------------------------------------------------------------------------ 
 """Version = 2016-03-24 17:00"""
 #---------------------------------------------------------------------
-import IPY_GameWorld
-import ChConfig
 import PlayerControl
 import GameWorld
 import SkillShell
-import SkillCommon
-import BuffSkill
 import ItemCommon
 import DataRecordPack
-import ShareDefine
-import EventShell
 #---------------------------------------------------------------------
 #全局变量
 #---------------------------------------------------------------------
@@ -73,12 +67,6 @@
     
     DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, 0)    
     ItemCommon.DelItem(curPlayer, curItem, 1, True, "SkillBook", {"SkillID":skillTypeID})
-    
-    EventShell.EventRespons_LearnSkill(curPlayer, skillTypeID)
-    #是被动技能要重刷属性
-    #if SkillCommon.isPassiveBuffSkill(bookSkill):
-    #    BuffSkill.DoAddBuff(curPlayer, SkillCommon.GetBuffType(bookSkill), bookSkill, tick, [], curPlayer)
-    
     PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillTypeID, 0)
     return True
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TouchMission.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TouchMission.py
deleted file mode 100644
index 34e257c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TouchMission.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package UseItem.Item_TouchMission
-#
-# @todo:触发任务接口
-# @author xdh
-# @date 2019-05-29
-# @version 1.0
-#
-# 详细描述: 触发任务接口
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-05-29 10:00"""
-#-------------------------------------------------------------------------------
-import EventShell
-import ItemCommon
-import ChConfig
-
-def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
-    ##批量使用物品
-    curEff = curRoleItem.GetEffectByIndex(0)
-    missionID = curEff.GetEffectValue(0)
-    if not missionID:
-        return
-    EventShell.EventRespons_UseMissionItem(curPlayer, missionID)
-    ItemCommon.DelItem(curPlayer, curRoleItem, 1, True, ChConfig.ItemDel_Unknown, {}, True)
-    return True, 1
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
index dbaf5d3..d11e851 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
@@ -345,20 +345,6 @@
     
     for curNPC in gameBoss_List:
         ProcessNPCAI(curNPC, tick)
-
-    #---骠车AI---
-    gameTruck_List = []
-    for index in range(gameNPC.GetTruckCount()):
-        curNPC = gameNPC.GetTruckAt(index)
-        #镖车不可能死亡的
-        if not curNPC.IsAlive():
-            GameWorld.Log('###镖车死亡 , %s'%(curNPC.GetName()))
-            continue
- 
-        gameTruck_List.append(curNPC)
-    
-    for curNPC in gameTruck_List:
-        ProcessNPCAI(curNPC, tick)
     
     # 宠物AI
     ProcessPetAI(gameWorld, gameNPC, tick)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_100.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_100.py
index 6762ec1..849ff8b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_100.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_100.py
@@ -189,8 +189,7 @@
     #清空仇恨,清空伤血列表
     npcControl.ClearNPCAngry()
     npcControl.ClearNPCHurtList()
-    moveDestX, moveDestY = npcControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 
-                                                     ChConfig.Def_PlayerTurckBeginMoveDist)
+    moveDestX, moveDestY = npcControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)
     curNPC.ResetPos(moveDestX, moveDestY)
     #重置NPC为空闲状态
     curNPC.SetCurAction(IPY_GameWorld.laNPCNull)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_101.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_101.py
index d7484be..5902ae2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_101.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_101.py
@@ -113,8 +113,7 @@
     #清空仇恨,清空伤血列表
     npcControl.ClearNPCAngry()
     npcControl.ClearNPCHurtList()
-    moveDestX, moveDestY = npcControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 
-                                                     ChConfig.Def_PlayerTurckBeginMoveDist)
+    moveDestX, moveDestY = npcControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)
     curNPC.ResetPos(moveDestX, moveDestY)
     #重置NPC为空闲状态
     curNPC.SetCurAction(IPY_GameWorld.laNPCNull)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_11.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_11.py
deleted file mode 100644
index f6ab372..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_11.py
+++ /dev/null
@@ -1,243 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-##@package AIType_11
-# 镖车AI:正常
-# @author PanWei
-# @date 2010-4-21
-# @version 2.0
-#
-#模块详细说明.
-# @change: "2010-06-09 09:50" zhengyang 镖车npc加入异常状态眩晕判断 
-# @change: "2010-11-22 12:15" Alee 删除异常/沉默判定,镖车的走动特殊处理
-# @change: "2012-05-22 11:00" jiang 修改镖车AI逻辑
-# @change: "2012-05-31 16:30" jiang 修改镖车会停在障碍点导致不能从新召唤的bug
-# @change: "2012-06-01 13:00" jiang 修改镖车会漂移
-# @change: "2012-08-10 12:00" jiang 镖车退出跟随模式时清除模式附加buff
-# @change: "2012-08-24 14:00" jiang 清除buff时没有调用buff消失触发逻辑
-# @change: "2012-09-04 16:30" jiang 修改玩家却换地图或下线镖车未清除状态buff
-# @change: "2014-10-20 21:00" hxp 修改跟随AI
-# @change: "2014-11-15 17:30" Alee 镖车自动跟随状态距离过远则直接置身边
-#---------------------------------------------------------------------
-"""Version = 2014-11-15 17:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import NPCCommon
-import PlayerTruck
-import OperControlManager
-import GameMap
-import SkillCommon
-import BuffSkill
-import GameObj
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-##镖车消失逻辑
-#@param curTruck 镖车实例
-#@return 返回值无意义
-#@remarks 镖车消失逻辑
-def ProcessDisappear(curTruck):
-    curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTruck)
-    if curPlayer:
-        #骠车消失
-        if PlayerTruck.GetHaveAutoTruck(curPlayer):
-            #如果玩家的交通工具为骠车的话, 离开骠车
-            PlayerTruck.PlayerTruckDown(curPlayer, curTruck)
-
-        curPlayer.SetTruckID(0)
-        curPlayer.SetTruckState(IPY_GameWorld.tusNull)
-        curPlayer.SetTruck(None)
-        
-        GameWorld.Log("骠车消失, id = %s"%curTruck.GetID() , curPlayer.GetPlayerID())
-        
-    curTruck.Disappear()
-    return
-
-
-#---------------------------------------------------------------------
-##正常镖车AI逻辑处理
-#@param curNPC NPC实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 正常镖车AI逻辑处理
-def ProcessAI(curNPC, tick):
-    #切换镖车状态(在GameServer中切换)
-#===============================================================================
-#    if GameObj.GetHP(curNPC) <= 0 :
-#        GameWorld.Log("正常镖车AI -> 镖车切换状态:损坏")
-#        return
-#===============================================================================
-    if curNPC.GetIsDisappear():
-        ProcessDisappear(curNPC)  
-        return
-    
-    npcControl = NPCCommon.NPCControl(curNPC)
-    #刷新自己的buff
-    npcControl.RefreshBuffState(tick)
-    if GameObj.GetHP(curNPC) == 0 :
-        # BUFF刷新中可能会导致NPC死亡
-        return
-    
-    #模式为停止状态
-    if curNPC.GetMode() == IPY_GameWorld.trmStop:
-        if curNPC.GetCurAction() == IPY_GameWorld.laNPCMove:
-            #移动中,停止移动
-            GameWorld.Log("模式为停止移动, 镖车还在移动中, 停止")
-            curNPC.SetCurAction(IPY_GameWorld.laNPCNull)
-            
-            __ChangeTruckPos(curNPC, tick)
-            
-        return
-        
-    #获得玩家
-    playerID = curNPC.GetOwnerID()
-    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
-    
-    if not curPlayer:
-        #镖车模式修改
-        __ChangTruckMode(curNPC, tick)
-        
-        #设置AI模式buff
-        PlayerTruck.AddTruckStateBuff(curNPC, tick)
-        return
-    
-    if GameObj.GetHP(curPlayer) <= 0 :
-        return
-    
-    #获得玩家和镖车间的距离
-    dist = GameWorld.GetDist( curNPC.GetPosX(), curNPC.GetPosY(), curPlayer.GetPosX(), curPlayer.GetPosY())
-    
-    #镖车停止
-    if dist > ChConfig.Def_PlayerTruckMoveDist:
-        
-        if not PlayerTruck.GetHaveAutoTruck(curPlayer):
-            #镖车与玩家的距离超出, 停止移动, 镖车状态设置为不跟随
-            curNPC.SetCurAction(IPY_GameWorld.laNPCNull)
-            curNPC.SetMode(IPY_GameWorld.trmStop)
-            
-            #通知客户端镖车AI模式
-            PlayerTruck.Sync_TruckMode(curPlayer)
-            
-            #设置AI模式buff
-            PlayerTruck.AddTruckStateBuff(curNPC, tick)
-        
-            #镖车跟随丢失, 退出自动运镖
-            PlayerTruck.SetAutoTruckState(curPlayer, 0)
-            
-            __ChangeTruckPos(curNPC, tick)
-        else:
-            #在拉镖情况下瞬移到身边
-            moveDestX, moveDestY = npcControl.GetMoveNearPos(curPlayer.GetPosX(), 
-                                                             curPlayer.GetPosY(), 
-                                                             ChConfig.Def_PlayerTurckBeginMoveDist)
-
-            #重置坐标
-            curNPC.ResetPos(moveDestX, moveDestY)
-
-        return
-    
-    if dist <= ChConfig.Def_PlayerTurckBeginMoveDist:
-#        #已经在主人边上, 停止移动
-#        curNPC.SetCurAction(IPY_GameWorld.laNPCNull)
-        return
-    
-    #不可移动行为状态, 服务端限制
-    if not OperControlManager.IsObjCanDoAction(curNPC, 
-                                               ChConfig.Def_Obj_ActState_ServerAct, 
-                                               IPY_GameWorld.oalMove):
-        return  
-    
-    #===========================================================================
-    # #镖车移动中
-    # if curNPC.GetCurAction() == IPY_GameWorld.laNPCMove:
-    #    #NPC走路中, 不处理
-    #    return
-    #===========================================================================
-    
-    #设置为走路状态
-    curNPC.SetCurAction(IPY_GameWorld.laNPCMove)
-    moveDestX, moveDestY = __GetTruckMovePos(curPlayer)
-    #GameWorld.Log("镖车移动 speed = %d"%curNPC.GetSpeed())
-    #找到对象周围攻击范围格的范围走过去
-    #curNPC.SetSpeed(curNPC.GetOrgSpeed())
-    curNPC.SetCurMoveType(IPY_GameWorld.mtNormal)
-    
-    #清除有限无敌buff
-    __ClearLimitSuperBuff(curNPC, tick)
-    curNPC.Move(moveDestX, moveDestY)
-    return 
-
-#---------------------------------------------------------------------
-##初始化仇恨信息等
-#@param curNPC NPC实例
-#@return 返回值无意义
-#@remarks 初始化仇恨信息等
-def DoInit(curNPC):
-    return
-
-#---------------------------------------------------------------------
-##镖车模式修改
-#@param curNPC NPC实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 镖车模式修改
-def __ChangTruckMode(curNPC, tick):
-    if curNPC.GetMode() != IPY_GameWorld.trmStop:
-        #无人的镖车,设置为停止模式
-        curNPC.SetMode(IPY_GameWorld.trmStop)
-        
-        __ChangeTruckPos(curNPC, tick)
-    return
-#---------------------------------------------------------------------
-
-## 重置障碍点中的镖车位置
-#  @param curTruck: 镖车实例
-#  @param tick: 时间戳
-#  @return: None
-def __ChangeTruckPos(curTruck, tick):
-    curTruckPosX = curTruck.GetPosX()
-    curTruckPosY = curTruck.GetPosY()
-    if GameWorld.GetMap().CanMove(curTruckPosX, curTruckPosY):
-        #当前点非障碍点
-        return
-    
-    posX, posY = GameMap.GetPosByMatrix(curTruckPosX, curTruckPosY, 
-                                        ChConfig.Def_Matrix_Three)
-    curTruck.SetCurAction(IPY_GameWorld.laNPCMove)
-    curTruck.SetCurMoveType(IPY_GameWorld.mtNormal)
-    curTruck.Move(posX, posY)
-    
-    #清除有限无敌buff
-    __ClearLimitSuperBuff(curTruck, tick)
-    return
-
-
-## 清除有限无敌buff
-#  @param curTruck: 镖车实例
-#  @param tick: 时间戳
-#  @return: None
-def __ClearLimitSuperBuff(curTruck, tick):
-    
-    tick = GameWorld.GetGameWorld().GetTick()
-    
-    BuffSkill.DelBuffBySkillID(curTruck, ChConfig.Def_SkillID_LimitSuperBuff, tick)
-
-
-## 获取镖车移动坐标
-#  @param curTruck: 镖车实例
-#  @return: posX, posY
-def __GetTruckMovePos(curPlayer):
-    gameMap = GameWorld.GetMap()
-    playerPosX = curPlayer.GetPosX()
-    playerPosY = curPlayer.GetPosY()
-    
-    if gameMap.CanMove(playerPosX, playerPosY):
-        return playerPosX, playerPosY
-    
-    moveDestX, moveDestY = GameMap.GetPosByMatrix(curPlayer.GetPosX(), 
-                                                  curPlayer.GetPosY(), 
-                                                  ChConfig.MatrixDict[2])
-    return moveDestX, moveDestY
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index afd4852..806394e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -20,7 +20,6 @@
 import PlayerControl
 import GameMap
 import ChConfig
-import EventShell
 import SkillShell
 import BuffSkill
 import BaseAttack
@@ -2383,7 +2382,6 @@
                     "AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
         DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
-        EventShell.EventRespons_KillBoss(curPlayer, limitIndex)
         PlayerState.SetBossStateExit(curPlayer)
         
     if isCrossServer:
@@ -2741,10 +2739,6 @@
             GameWorld.Log("curNPC = %s 查找对象, 获得对象实例失败" % (curNPC.GetNPCID()))
             return False
         
-        #守卫攻击镖车,仇恨特殊处理
-        if self.__GuaedAttackTruck(seeObjDetail , tick):
-            return True
-        
         #小怪不可行进通道就当作看不见
         if not AttackCommon.CanAttackByPath(curNPC, seeObjDetail):
             #GameWorld.DebugLog("有障碍  看见也不加仇恨")
@@ -2764,37 +2758,6 @@
         #GameWorld.Log("%s添加仇恨%s成功"%(curNPC.GetName(), seeObjDetail.GetName()))
         return True
     
-    #---------------------------------------------------------------------
-    ##守卫攻击镖车,特殊处理
-    # @param self 类实例
-    # @param seeObj 视野中的对象
-    # @param tick 时间戳
-    # @return 返回值真, 可以添加这个对象
-    # @remarks 守卫攻击镖车,特殊处理
-    def __GuaedAttackTruck(self, seeObj, tick) :
-        curNPC = self.__Instance
-        
-        if curNPC.GetType() != IPY_GameWorld.ntGuard:
-            return
-        
-        if seeObj.GetGameObjType() != IPY_GameWorld.gotNPC or \
-            seeObj.GetGameNPCObjType() != IPY_GameWorld.gnotTruck :
-            return
-        
-        #如果是远程的守卫,不考虑攻击距离,追击
-        #不可移动的固定守卫,超出攻击距离,返回
-        if curNPC.GetSpeed() == 0 and not BaseAttack.GetCanAttack(curNPC, seeObj, None, tick):
-            return
-        
-        relation = BaseAttack.GetTagRelation(curNPC, seeObj, None, tick)[0]
-        
-        if relation != ChConfig.Type_Relation_Enemy :
-            return
-        
-        return True
-    
-
-
     def GetIsBossView(self):
         # 主动视野情况,GetIsBoss 0 1 4 为普通NPC视野(有视野范围配置,但去除视野刷新),其他为BOSS类视野有刷新
         curNPC = self.__Instance
@@ -3755,48 +3718,6 @@
         curNPC.SetDict(ChConfig.Def_NPC_Dict_HPPerLogicMark, hpPerLogicMark)
         return
     
-    
-    ## 给附近玩家加功勋
-    #  @param self 类实例
-    #  @param addPrestigeFormat 加功勋公式
-    #  @param matrix 范围大小
-    #  @return
-    def __GiveNearbyPlayerPrestige(self, addPrestigeFormat, matrix=ChConfig.Def_Matrix_Three):
-#        if addPrestigeFormat == '':
-#            return
-#        curNPC = self.__Instance
-#        npcPosX = curNPC.GetPosX()
-#        npcPosY = curNPC.GetPosY()
-#        npcLV = curNPC.GetLV()
-#        gameMap = GameWorld.GetMap()
-#        
-#        for curPos in matrix:
-#        
-#            #检查有没有对象在这一点上
-#            mapObj = gameMap.GetPosObj(npcPosX + curPos[0], npcPosY + curPos[1])
-#            
-#            if not mapObj:
-#                continue
-#        
-#            #遍历当前点对象
-#            for i in range(0, mapObj.GetObjCount()):
-#            
-#                curObj = mapObj.GetObjByIndex(i)
-#                curObjType = curObj.GetGameObjType()
-#                
-#                #不是玩家,跳过
-#                if curObjType != IPY_GameWorld.gotPlayer:
-#                    continue
-#                
-#                curTag = GameWorld.GetObj(curObj.GetID(), curObjType)
-#                if not curTag:
-#                    continue
-#                playerLV = curTag.GetLV()
-#                addPrestige = eval(addPrestigeFormat)
-#                PlayerPrestigeSys.AddPrestigeOffcialLV(curTag, addPrestige, ChConfig.Def_AddPrestige_NPC)
-
-        return
-        
     #---------------------------------------------------------------------
     ## NPC死的时候, 检查自己是否需要重生. 0: tick后仍然死亡 1: tick后可以重生
     #  @param self 类实例
@@ -4039,11 +3960,6 @@
         curNPC = self.__Instance
         npcID = curNPC.GetNPCID()
         #######################特殊NPC的处理
-        #=====================================================================================================
-        # if curNPC.GetGameNPCObjType() == IPY_GameWorld.gnotTruck:
-        #    #如果是骠车死亡, 调用骠车死亡逻辑
-        #    PlayerTruck.DoTruckDestroy(curNPC)
-        #=====================================================================================================
         
         #boss伤血排行榜击杀逻辑
         #BossHurtMng.BossOnKilled(curNPC)
@@ -4077,14 +3993,7 @@
         #    #PlayerControl.WorldNotify(0, "Old_andyshao_861048", [curNPC.GetNPCID()])
         #    if mapID == ChConfig.Def_MapID_DouHunTan:
         #        NPCCustomRefresh.DoRefreshNeutralBoss(npcID)
-        # 
-        # # 周围玩家加威望
-        # npcKilledAddPrestigeDict = ReadChConfig.GetEvalChConfig('NPCKilledAddPrestige')
-        # if npcID in npcKilledAddPrestigeDict:
-        #    addPrestigeFormat = npcKilledAddPrestigeDict[npcID]
-        #    self.__GiveNearbyPlayerPrestige(addPrestigeFormat, ChConfig.Def_Matrix_Six)
-        #===========================================================================================
-                
+        
         #清空NPC的仇恨
         curNPC.GetNPCAngry().Clear()
         return
@@ -4332,10 +4241,6 @@
         curNPC_GameNPCObjType = curNPC.GetGameNPCObjType()
         #---特殊死亡逻辑---
         
-        #镖车不能通知死亡
-        if curNPC_GameNPCObjType == IPY_GameWorld.gnotTruck:
-            return
-        
         #宠物死亡调用独立接口
         if curNPC_GameNPCObjType == IPY_GameWorld.gnotPet:
             PetControl.SetPetDead(curNPC)
@@ -4350,52 +4255,7 @@
         #调用底层 -> 通知客户端死亡
         SetDeadEx(curNPC)
         return
-    #---------------------------------------------------------------------
-    ## 召唤兽死亡,替换仇恨
-    #  @param self 类实例
-    #  @return 返回值无意义
-    #  @remarks 召唤兽死亡,替换仇恨
-    #===========================================================================
-    # def __NPCReplaceAngry(self):
-    #    curNPC = self.__Instance
-    #    #仅处理宠物和召唤兽
-    #    if curNPC.GetGameNPCObjType() not in [IPY_GameWorld.gnotSummon, IPY_GameWorld.gnotPet]:
-    #        return
-    #    
-    #    if curNPC.GetType() not in [IPY_GameWorld.ntSummon, IPY_GameWorld.ntElf,
-    #                                IPY_GameWorld.ntTrap, IPY_GameWorld.ntTruck,
-    #                                IPY_GameWorld.ntFairy]:
-    #        return
-    #            
-    #    summonOwner = GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curNPC)
-    #    
-    #    if summonOwner == None:
-    #        summonOwner = GetSummonNPCOwner(IPY_GameWorld.gotNPC, curNPC)
-    #    
-    #    #异常错误
-    #    if summonOwner == None:
-    #        #GameWorld.Log("替换仇恨,查找召唤兽主人失败 curNPC = %s"%(curNPC.GetNPCID()))
-    #        return
-    #    
-    #    #仇恨NPC列表
-    #    angryNPCList = list()
-    #    for index in range(curNPC.GetAngryNPCCount()):
-    #        angryNPC = curNPC.GetAngryNPCByIndex(index)
-    #        #已经死亡
-    #        if GameObj.GetHP(angryNPC) <= 0:
-    #            continue
-    #        
-    #        angryNPCList.append(angryNPC)
-    #    
-    #    #在ReplaceNPCAngryFromOldToNew的时候, 会删除仇恨, 
-    #    #改变 summonNPC.GetAngryNPCCount() 的长度, 所以必须先构建列表,
-    #    #在替换仇恨
-    #    for angryListNPC in angryNPCList:
-    #        #替换仇恨
-    #        ReplaceNPCAngryFromOldToNew(angryListNPC, curNPC, summonOwner)
-    #    
-    #    return
-    #===========================================================================
+    
     #---------------------------------------------------------------------
     ## NPC非战斗中回血
     #  @param self 类实例
@@ -5044,19 +4904,6 @@
             return
         npcID = curNPC.GetNPCID()
         #GameWorld.DebugLog("__MissionOnKillNPC isFeel=%s" % (isFeel), curPlayer.GetPlayerID())
-        killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1)
-        limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID)
-        isWorldBoos = limitIndex == ShareDefine.Def_Boss_Func_World
-        if isFeel:
-            #击杀NPC触发摸怪任务事件
-            EventShell.EventRespons_OnKillByFeel(curPlayer, curNPC)
-            if isWorldBoos:
-                EventShell.EventRespons_KillWorldBossByFeel(curPlayer)
-        else:
-            #普通NPC击杀触发
-            EventShell.EventRespons_OnKillById(curPlayer, curNPC)
-            if isWorldBoos:
-                EventShell.EventRespons_KillWorldBoss(curPlayer)
         #击杀特定NPC成就
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillSpecificNPC, 1, [npcID])
         return
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 31c87e1..1678a8b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -17,14 +17,11 @@
 import PlayerControl
 import GameMap
 import ChConfig
-import EventShell
 import BuffSkill
 import PlayerEventCounter
 import PlayerTeam
 import PlayerHorse
-import PlayerTruck
 import NPCCommon
-import PlayerGameEvent
 import SkillCommon
 import FBLogic
 import ChItem
@@ -99,7 +96,6 @@
 import PlayerRefineStove
 import PassiveBuffEffMng
 import PlayerDiceEx
-import QuestCommon
 import GameLogic_XMZZ
 import PlayerFlashSale
 import PlayerFlashGiftbag
@@ -202,30 +198,9 @@
 #@return 返回值无意义
 #@remarks 玩家登陆游戏初始化
 def InitLoginPlayer(curPlayer, tick):
-    ##初始化交易列表
-    if curPlayer.GetTradeList().GetTradeItemCount() == 0:
-        curPlayer.GetTradeList().SetTradeListCount(ChConfig.Def_PlayerTradeMaxItemCount)
-        
     #初始化玩家的时钟个数
     if curPlayer.GetTickTypeCount() == 0:
         curPlayer.SetTickTypeCount(ChConfig.TYPE_Player_Tick_Count)
-        
-#===============================================================================
-#    #初始化玩家鉴定管理器物品最大个数
-#    identifyItemManager = curPlayer.GetIdentifyManager()
-#    
-#    #设置最大数量
-#    if identifyItemManager.GetCount() == 0:
-#        identifyItemManager.SetCount(ChConfig.TYPE_Player_identifyManagerCount)
-#        
-#    #初始化宝石挖除管理器最大个数
-#    stoneBreakManager = curPlayer.GetStoneBreakManager()
-#    
-#    if stoneBreakManager.GetCount() == 0:
-#        stoneBreakManager.SetCount(ChConfig.TYPE_Player_StoneBreakManagerCount)
-#===============================================================================
-    #初始化物品
-    #ChItem.InitPlayerLoginItem(curPlayer, tick)
     return
 #---------------------------------------------------------------------
 ##C++封包GameServer_InitOK 处理
@@ -238,21 +213,9 @@
         #玩家是第一次登录, 并且玩家需要踢回原来地图
         return
     
-    #--------------------------------通知客户端任务-------------
-    #先发送所有任务, 再刷新日期, 否则会有2个相同的任务在玩家身上
-    #把玩家当前的所有任务发送给客户端
-    #GameWorld.Log('EventShell.NotifyAllQuestDetail')
-    if not GameWorld.IsCrossServer():
-        EventShell.NotifyAllQuestDetail(curPlayer, True)
-    
     #刷新人物日期状态
     #GameWorld.Log('PlayerEventCounter.UpdatePlayerLoginTime')
     PlayerEventCounter.UpdatePlayerLoginTime(curPlayer)
-    
-    #2010/4/20 这个事件在 EventResponse_OnLogin中触发,这里重复触发了
-    #GameWorld.Log('EventShell.PlayerGMEventTrig')
-    #EventShell.PlayerGMEventTrig(curPlayer)
-    #--------------------------------------------------------
     return
 
 ##非同一天二次登陆
@@ -619,7 +582,7 @@
     __DoMixServerFirstLogin(curPlayer)
     PlayerBillboard.BillboardOnLogin(curPlayer)
     
-    #非同一天二次登陆, 应该放在该函数中的SetLoginTime之后,EventResponse_OnEnter之前
+    #非同一天二次登陆, 应该放在该函数中的SetLoginTime之后
     NoteOtherDayLogin(curPlayer)
         
     #上线时通知脱机挂时被击杀的离线时间
@@ -650,20 +613,7 @@
     PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
     PlayerPet.OnPlayerPetLogin(curPlayer)
     
-    #要在SetCanMove之后做这个事情, 否则OnEnter不会卡住玩家
-    EventShell.EventResponse_OnEnter(curPlayer)
-    
-    EventShell.EventResponse_OnLogin(curPlayer)
-    #通知环奖励记录
-    EventShell.NotifyRunEndAward(curPlayer)
-    #通知玩家有补偿可以领取
-    #curPlayer.DataServer_GetExpiationCount()
-    
-    #通知玩家有宠物补偿可以领取
-    #curPlayer.DataServer_GetPetExpiationCount()
-    
-    #玩家离线邮件通知
-    #curPlayer.DataServer_GetMailListReq()
+    __FirstLoginOnEnter(curPlayer)
     
     #清空玩家万能背包中的任务物品
     ItemControler.ClearPackEventItem(curPlayer, IPY_GameWorld.rptAnyWhere)
@@ -688,9 +638,6 @@
 #    
 #    #通知客户端签到信息
     PlayerSignDay.SignDayOnLogin(curPlayer)
-#    
-#    #通知客户端镖车AI模式
-#    PlayerTruck.Sync_TruckMode(curPlayer)
     
     #通知玩家死亡时间
     PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer)
@@ -815,8 +762,6 @@
     # 世界boss
     BossHurtMng.OnLogin(curPlayer)
     ChItem.Sync_ItemDayUseCnt(curPlayer)
-    # 悬赏登录通知
-    #PlayerArrestTask.OnLogin(curPlayer)
     # 符印登录通知
     PlayerRune.PlayerRuneLogin(curPlayer)
     # 仙盟红包登录通知
@@ -830,8 +775,6 @@
     #PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
     #我要太极
     PlayerDiceEx.DiceExOnLogin(curPlayer)
-    # 剧情任务完成状态
-    QuestCommon.Sync_StoryMissionState(curPlayer)
     #仙魔之争
     GameLogic_XMZZ.OnXMZZLogin(curPlayer)
     PlayerOnlinePrize.OnPlayerLogin(curPlayer)
@@ -1010,6 +953,48 @@
     playerInfoEx.CreateRoleTime = curPlayer.GetCreateRoleTime()
     
     NetPackCommon.SendFakePack(curPlayer, playerInfoEx)
+    return
+
+def __FirstLoginOnEnter(curPlayer):
+    ## 首登处理,先return
+    return
+    playerID = curPlayer.GetID()
+    
+    GameWorld.Log('玩家是第一次进入游戏', playerID)
+    # 特殊说明: 如果地图没有完全初始化好,客户端断开或者异常等情况会触发RunGateGameServerMapServerKickOutPlayerNoSave
+    # 那么在DoPlayerLogin 中设置的数据将不会被保存, 如会导致第一个任务重复触发问题,记录多次发送
+    EventReport.WriteEvent_Entry(curPlayer, 4)
+    #EventReport.EventReport(ShareDefine.Def_UserAction_FirstLogin, "", curPlayer)
+    
+    #---补满血满魔---
+    GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer))
+    curPlayer.SetMP(curPlayer.GetMaxMP())
+    
+    #---给予玩家新手物品---
+    
+    #默认触发一次功能开启
+    if curPlayer.GetLV() == 1:
+        GameFuncComm.DoFuncOpenLogic(curPlayer)
+        
+    #初始化组队状态
+    autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
+    autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
+    PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
+    
+    #玩家默认恶名值
+    curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
+    
+    #标记已登陆过,用于非同一天二次登陆
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_OtherDayLogin, 1)
+    
+    #curPlayer.SetDict("ThunderLogin", 1)
+    #记录第一次登陆
+    DataRecordPack.DR_FirstLogin(curPlayer.GetAccID(), curPlayer.GetIP(), curPlayer)
+    
+    #首登邮件
+    mailList = IpyGameDataPY.GetFuncEvalCfg("MailLVAward", 2)
+    for mailTypeKey, mailItemList in mailList:
+        PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList)
     return
 
 ## 合服首登处理
@@ -1323,12 +1308,7 @@
     curPlayer.SetMapLoadOK(False)
     curPlayer.SetVisible(False)
     curPlayer.SetCanAttack(False)
-
-    #退出钓鱼清除渔夫装
-    if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent:
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
-    else:
-        PlayerGameEvent.TakeoffFishermanEquipment(curPlayer)
+    
     #切地图要清除的buff
     __CheckClearBuffOnMapChange(curPlayer, tick)
             
@@ -1500,22 +1480,7 @@
 #    ------------------------------------------------------
     #玩家切换地图成功, 初始化玩家的附加信息(骠车, 召唤兽)
     curPlayer.InitChangeMapPlayerSummonInfo()
-    #通知GameServer骠车现在的地图位置
-    curTruck = curPlayer.GetTruck()
-    if curTruck != None:
-        curTruck.GameServer_Sync_TruckMapID()
-        
-        #镖车无敌
-        SkillCommon.AddBuffBySkillType_NoRefurbish(curTruck, ChConfig.Def_SkillID_LimitSuperBuff, tick)
     
-        #设置镖车等级
-        truckLv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PawnTruckLV)
-        curTruck.SetLV(truckLv)
-        
-        #更改镖车记录的部分主人信息
-        PlayerTruck.ChangeTruckNoteInfo(curPlayer)
-        
-
     #---初始化自己的召唤兽---
     #===========================================================================
     # for i in range(curPlayer.GetSummonCount()):
@@ -1649,18 +1614,6 @@
 #@param tick 时间戳
 #@return 返回值无意义
 #@remarks C++封包触发, 切换地图成功( 目标地图 )
-def LoadMapOK(index, tick):
-    #不需要等待客户端,以前有视野客户端未加载成功会被偷袭的问题,可以通过加x秒无敌BUFF解决,不应该增加流程
-    # GameWorld.GetPsycoFunc(__Func_LoadMapOK)(index, tick)
-    # GameServerRefresh.GameSever_PlayerInitOK(index, tick)
-    return
-
-#---------------------------------------------------------------------
-##C++封包触发, 切换地图成功( 目标地图 )
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks C++封包触发, 切换地图成功( 目标地图 )
 def __Func_LoadMapOK(index, tick):
     #在玩家切换场景/登录的时候, 会调用到这里, 地图读取成功
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
@@ -1702,20 +1655,18 @@
     #将玩家放置在这个地图上
     curPlayer.InitPos(curPlayer.GetPosX(), curPlayer.GetPosY())
     
-    firstMission = QuestCommon.GetCommonMission(curPlayer)
-    if not (firstMission and firstMission.GetProperty(QuestCommon.Def_NewGuyNoSight) == 1):
-        #刷新自己的视野
-        if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
-            GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID())
-            PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
-        elif not GameWorld.IsCrossServer():
-            realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
-            if realmDifficulty:
-                GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
-                PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-                
-        curPlayer.RefreshView()
-        curPlayer.SetVisible(True)
+    #刷新自己的视野
+    if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
+        GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID())
+        PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
+    elif not GameWorld.IsCrossServer():
+        realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
+        if realmDifficulty:
+            GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
+            PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
+            
+    curPlayer.RefreshView()
+    curPlayer.SetVisible(True)
         
     #如果玩家hp为0,设置玩家为死亡状态
     if GameObj.GetHP(curPlayer) <= 0:
@@ -1764,12 +1715,6 @@
             #此时已经是下马状态不需要刷状态 但是需要通知客户端下马
             PlayerHorse.PlayerRideHorseDown(curPlayer, False)
         
-    elif playerVehicle == IPY_GameWorld.pvTruck:
-        #玩家上骠车, 不重置自己的位置, 因为玩家现在还在切换地图中(强制上车,因为有可能被攻击)
-        PlayerTruck.PlayerTruckUP(curPlayer, False , False , False)
-        
-    InitPlayerTruck(curPlayer, tick)
-
     PlayerTeam.PlayerLoginSetTeam(curPlayer, tick)
     
     #激活玩家(保证持续性Buff处理间隔)
@@ -1780,12 +1725,6 @@
     
     #如果登录的副本,执行进入副本逻辑, 因为有时间响应, 必须在EndLoadMap之后...
     FBLogic.DoEnterFBLogic(curPlayer, tick)
-    
-    #触发玩家进入地图的事件
-    EventShell.EventResponse_OnMap(curPlayer)
-    
-    #触发玩家进入地图的事件
-    EventShell.EventResponse_OnMapEx(curPlayer)
     
     #触发切换地图宠物逻辑
     PetControl.DoLogic_PetLoadMapOK(curPlayer)
@@ -1825,16 +1764,6 @@
 
     #申请得到奖励物品
     #curPlayer.DataServer_CheckPrizeItem()
-    
-    #===========================================================================
-    # #if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_Frist_Lock) == 1 \
-    # if PlayerAutoCheckOnline.CheckBeginEvent(curPlayer):
-    #    #防外挂锁定
-    #    #玩家第一次进入, 触发了OnEnter, OnEnter会锁住玩家
-    #    #但是在上面会解锁玩家
-    #    #所以在这里强制判定, 如果触发了OnEnter, 那么在这里加锁
-    #    curPlayer.BeginEvent()
-    #===========================================================================
     
     #防止玩家读取地图时未触发OnDay,读取地图后再次验证(2009.9.11)
     PlayerEventCounter.UpdatePlayerLoginTime(curPlayer)
@@ -1916,76 +1845,6 @@
     curPlayer.Kick(IPY_GameWorld.disGMKick)
     return
 
-
-#---------------------------------------------------------------------
-##初始化玩家镖车
-#@param curPlayer 玩家实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 初始化玩家镖车
-def InitPlayerTruck(curPlayer, tick):
-    curPlayer.SetTruckCalcStartTime(tick)
-    #玩家骠车逻辑:
-    #玩家如果有骠车: 
-    #1. 在本地图找寻自己的骠车
-    #2. 如果没有找到, 发给GameServer要求自己骠车
-    truckID = curPlayer.GetTruckID()
-    GameWorld.Log("初始化骠车 ID = %d ..." % (truckID) , curPlayer.GetPlayerID())
-    if truckID == 0:
-        #2009.9.24 bug
-        #玩家没有镖车ID, 但是有镖车状态, 强制改为0
-        if curPlayer.GetTruckState() != 0:
-            GameWorld.Log("###Fix Truck State!", curPlayer.GetPlayerID())
-            curPlayer.SetTruckState(0)
-        return
-    
-    #通知gameserver刷新自己的骠车
-    curPlayer.GameServer_RefreshTruckReq()
-    GameWorld.Log("通知gameserver刷新自己的骠车 id = %d" % (truckID) , curPlayer.GetPlayerID())
-    
-    curTruck = GameWorld.GetNPCManager().FindTruckByID(truckID)
-    
-    if not curTruck:
-        return
-    
-    curPlayer.SetTruck(curTruck)
-    #这句话一定要加, 用来通知客户端骠车开始, 显示骠车操控面板
-    curPlayer.SetTruckID(curTruck.GetID())
-    curTruck.SetOwner(curPlayer)
-#    GameWorld.Log("玩家已有骠车" , curPlayer.GetPlayerID())
-
-#===============================================================================
-# #加经验值
-# def AddExp(index, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendTest = IPY_GameWorld.IPY_CSendTest()
-#    addExp = sendTest.GetExp()
-#    playerControl = PlayerControl.PlayerControl(curPlayer)
-#    playerControl.AddExp(addExp,True)
-#===============================================================================
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 01 加属性点#tagCAddPoint
-# tagCAddPoint       *   GettagCAddPoint();
-# 
-# class   IPY_CAddPoint
-# {
-# public:
-#    //0:力量 1:精神 2:敏捷 3:体魄 4:智力 5:幸运
-#    int      GetType();
-# 
-#    int      GetPoint();
-# };
-#===============================================================================
-##//03 01 加属性点#tagCAddPoint
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks //03 01 加属性点#tagCAddPoint
-def AddPoint(index, tick):
-    return
-
 #// B2 06 玩家加点 #tagCMAddPoint
 #
 #struct    tagCMAddPoint
@@ -2024,7 +1883,6 @@
     NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
     playerControl = PlayerControl.PlayerControl(curPlayer)
     playerControl.RefreshPlayerAttrState()
-    EventShell.EventRespons_AddPoint(curPlayer)
     PlayerControl.SetLingGenMaxIndex(curPlayer)
     return
 
@@ -2081,8 +1939,6 @@
         ItemCommon.ReduceItem(curPlayer, itemPack, [delIndex], 1, False, ChConfig.ItemDel_ResetAttrPoint)
     
     Item_ResetAttrPoint.DoResetAttrPoint(curPlayer, 0, 0, 0)
-    
-    EventShell.EventRespons_LingGenReset(curPlayer)
     return
 
 def NotifyPlayerBasePoint(curPlayer, syncAttrIDList=[]):
@@ -2275,10 +2131,6 @@
         curPlayer.ResetPos(curPlayer.GetPosX(), curPlayer.GetPosY())
         return
     
-    #如果是小游戏中则停止小游戏
-    if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent:
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
-    
     #删除有限无敌BUFF
     PlayerControl.DelLimitSuperBuff(curPlayer, tick)
     
@@ -2298,125 +2150,6 @@
     PetControl.FightPetFollowMove(curPlayer, sendPack_StartX, sendPack_StartY)
     
     
-    return
-
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //05 01玩家移动#tagCPlayerMove
-# tagCPlayerMove       *   GettagCPlayerMove();
-# 
-# class   IPY_CPlayerMove
-# {
-# public:
-# 
-#    int      GetStartX();
-# 
-#    int      GetStartY();
-# 
-#    int      GetDestX();
-# 
-#    int      GetDestY();
-# 
-#    int      GetWorldTick();
-# };
-#===============================================================================
-##客户端封包响应//05 01玩家移动#tagCPlayerMove
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//05 01玩家移动#tagCPlayerMove
-def PlayerMove(index, tick):
-    GameWorld.GetPsycoFunc(__Func_PlayerMove)(index, tick)
-    return
-
-##客户端封包响应//05 01玩家移动#tagCPlayerMove
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//05 01玩家移动#tagCPlayerMove
-def __Func_PlayerMove(index, tick):
-    return
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    #防外挂 不可移动
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_AutoCheckHack_State) \
-                                      == ChConfig.Def_AutoCheck_State_Danger:
-        return
-    
-    
-    #不可移动行为状态, 判断客户端限制
-    if not OperControlManager.IsObjCanDoAction(
-                                        curPlayer,
-                                        ChConfig.Def_Obj_ActState_ServerAct,
-                                        IPY_GameWorld.oalMove
-                                        ):
-
-        return False
-    
-    #玩家移动通用检查
-    if not __CheckPlayerCanMove(curPlayer):
-        return
-    
-    #封包参数
-    sendPack = IPY_GameWorld.IPY_CPlayerMove()
-    sendPack_StartX = sendPack.GetStartX()
-    sendPack_StartY = sendPack.GetStartY()
-    sendPack_DestX = sendPack.GetDestX()
-    sendPack_DestY = sendPack.GetDestY()
-    sendPack_WorldTick = sendPack.GetWorldTick()
-    
-    #先验证目标点是否合法
-    if not GameWorld.GetMap().CanMove(sendPack_DestX, sendPack_DestY):
-        return
-    
-    #相同点不移动
-    if (sendPack_StartX == sendPack_DestX) and (sendPack_StartY == sendPack_DestY):
-        #GameWorld.ErrLog('PlayerMove 相同点不移动', curPlayer.GetID())
-        return
-    
-    #---副本地图移动检查---
-    if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
-        
-        if not FBLogic.DoFBCanMove(curPlayer, sendPack_DestX, sendPack_DestY, tick):
-            return
-    
-    #---正常移动---
-    vehicle = curPlayer.GetPlayerVehicle()
-    
-    if vehicle not in [IPY_GameWorld.pvNull, IPY_GameWorld.pvHorse]:
-        #GameWorld.ErrLog("不能移动, 交通工具不明 %d" % (vehicle), curPlayer.GetID())
-        return
-    
-    #玩家正常移动
-    PlayerNormalMove(curPlayer, sendPack_StartX, sendPack_StartY, sendPack_DestX,
-                     sendPack_DestY, sendPack_WorldTick, tick)
-#===============================================================================
-#    attackTime = tick - curPlayer.GetPlayerAttackTick()
-#    if attackTime <= curPlayer.GetAtkInterval() / 2:
-#        #玩家攻击在僵直时间中, 不能走路
-#        #GameWorld.Log("玩家攻击在僵直时间中, 不能走路 %d" %(attackTime) , curPlayer.GetPlayerID())
-#        return
-#===============================================================================
-#===============================================================================
-#    #玩家骑乘状态
-#    vehicle = curPlayer.GetPlayerVehicle()
-#    
-#    #如果在骑马状态,需要判定特殊坐骑
-#    if vehicle == IPY_GameWorld.pvHorse and not __CheckHorseCanMove( curPlayer ):
-#        __DoLogic_DropHorse( curPlayer , tick )
-#        return
-#    
-#    #玩家正常移动
-#    if vehicle == IPY_GameWorld.pvNull or vehicle == IPY_GameWorld.pvHorse:
-#        #玩家正常移动
-#        PlayerNormalMove(curPlayer , moveData)
-#    elif curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck :
-#        #人镖合一,玩家移动
-#        PlayerMoveByCarryerTruck(curPlayer , moveData)
-#    else:
-#        GameWorld.Log("不能移动, 交通工具不明 %d"%(vehicle) , curPlayer.GetPlayerID())
-#===============================================================================
     return
 
 #---------------------------------------------------------------------
@@ -2471,11 +2204,6 @@
                      client_DestY, clientWorldTick, tick) :
     # 废弃改成PY移动
     return
-
-    #如果玩家事件中, 退出任务
-#    if curPlayer.GetPlayerAction() == IPY_GameWorld.paEvent:
-#        EventShell.DoExitEvent(curPlayer)
-
     curMap = GameWorld.GetMap()
     #校验客户端时间
     if not PlayerControl.PlayerMoveCheckClientWorldTick(curPlayer, clientWorldTick, client_StartX, client_StartY):
@@ -2486,14 +2214,6 @@
     if not CheckMovePos(curPlayer, curPlayer, curMap, client_StartX, client_StartY, client_DestX, client_DestY):
         return
     
-    #假设客户端都是正确的,可行走障碍点
-    #if PlayerControl.DoLogic_PlayerInBarrierPoint(curPlayer):
-    #    return
-    
-    #如果是小游戏中则停止小游戏
-    if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent:
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
-        
     #2010/04/30 移动修改为全C++控制, Python状态机设置为空闲(清空采集等状态)
     PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
     #删除有限无敌BUFF
@@ -2508,40 +2228,6 @@
     #PetControl.FightPetFollowMove(curPlayer, client_DestX, client_DestY, client_StartX, client_StartY)
     return
 
-#---------------------------------------------------------------------
-##人镖合一,玩家移动
-#@param curPlayer 玩家实例
-#@param moveData 移动封包
-#@return 返回值无意义
-#@remarks 人镖合一,玩家移动
-#===============================================================================
-# def PlayerMoveByCarryerTruck(curPlayer , moveData) :
-#    curPlayerTruck = curPlayer.GetTruck()
-#    curMap = GameWorld.GetMap()
-# 
-#    #不可移动行为状态, 服务端限制
-#    if not OperControlManager.IsObjCanDoAction(curPlayerTruck,
-#                                               ChConfig.Def_Obj_ActState_ServerAct,
-#                                               IPY_GameWorld.oalMove):
-#        return  
-#    
-# 
-#    if curPlayerTruck == None:
-#        #离开人镖合一状态
-#        GameWorld.Log("离开人镖合一状态" , curPlayer.GetPlayerID())
-#        return
-#    
-#    if CheckMovePos(curPlayer, curPlayerTruck, curMap, moveData.GetStartX(), moveData.GetStartY(), moveData.GetDestX(), moveData.GetDestY()) != True :
-#        return
-# 
-#    #镖车移动
-#    #curPlayer.SetSpeed(curPlayerTruck.GetSpeed())
-#    curPlayerTruck.Move(moveData.GetDestX(), moveData.GetDestY())
-#    curPlayer.Sync_Move(moveData.GetDestX(), moveData.GetDestY())
-#    return
-#===============================================================================
-
-#---------------------------------------------------------------------
 ##移动点检查, checkObj 是移动对象(在人镖合一状态下, 输入为骠车
 #@param curPlayer 玩家实例
 #@param checkObj 移动对象
@@ -2587,151 +2273,8 @@
             
         return False
     
-#===============================================================================
-#   考虑到会不同步的问题, 不加这个判定
-#    #检查目标点上,是否有对象,有不让移动
-#    mapObj = GameWorld.GetMap().GetPosObj(destX, destY)
-#
-#    if not mapObj:
-#        return
-#
-#    for i in range(0, mapObj.GetObjCount()):
-#        curObj = mapObj.GetObjByIndex(i)
-#        #只有一种情况特殊:死亡的NPC可以让玩家走过去
-#        if curObj.GetGameObjType() == IPY_GameWorld.gotNPC and \
-#           GameObj.GetHP(curObj) <= 0 :
-#            continue
-#        curPlayer.MoveFail()
-#        GameWorld.Log("移动失败,目标点有玩家或者NPC")
-#        return
-#===============================================================================
-    
-    #检查玩家到目的地2点之间是否可以直接走
-    #===========================================================================
-    # if moveDist > 15 and (not curMap.CanLineTo(destX, destY, objPosX, objPosY) \
-    #        and not curMap.CanLineTo(objPosX, objPosY, destX, destY)):
-    #    
-    #    #正反方向有一点不可走, 则不可走
-    #    #GameWorld.Log("移动失败,检查玩家到目的地2点之间是否可以直接走(%d,%d)->(%d,%d), ClientCurPos:(%d,%d)"%(
-    #    #                                            objPosX, objPosY,destX, destY,startX,startY ) , curPlayer.GetPlayerID())
-    #    #地方不可走
-    #    if sendPlayerMoveFail:
-    #        curPlayer.MoveFail()
-    #        
-    #    return False 
-    #===========================================================================
-    
     return True
-    
-#---------------------------------------------------------------------
-#===============================================================================
-# //05 02 玩家停止移动#tagCPlayerStopMove
-# tagCPlayerStopMove       *   GettagCPlayerStopMove();
-# 
-# class   IPY_CPlayerStopMove
-# {
-# public:
-# 
-#    int      GetPosX();
-# 
-#    int      GetPosY();
-# 
-#    int      GetDir();
-# 
-#    int      GetWorldTick();
-# };
-#===============================================================================
-##客户端封包响应 //05 02 玩家停止移动#tagCPlayerStopMove
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //05 02 玩家停止移动#tagCPlayerStopMove
-def PlayerStopMove(index, tick):
-    GameWorld.GetPsycoFunc(__Func_PlayerStopMove)(index, tick)
-    return
-    
-##客户端封包响应 //05 02 玩家停止移动#tagCPlayerStopMove
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //05 02 玩家停止移动#tagCPlayerStopMove
-def __Func_PlayerStopMove(index, tick):
-    #===========================================================================
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # 
-    # #获取封包参数
-    # sendPack = IPY_GameWorld.IPY_CPlayerStopMove()
-    # sendPack_Tick = sendPack.GetWorldTick()
-    # sendPack_PosX = sendPack.GetPosX()
-    # sendPack_PosY = sendPack.GetPosY()
-    # sendPack_Dir = sendPack.GetDir()
-    # 
-    # #交通工具
-    # vehicle = curPlayer.GetPlayerVehicle()
-    # 
-    # #玩家停止移动
-    # if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvNull or vehicle == IPY_GameWorld.pvHorse:
-    #    PlayerNormalStopMove(curPlayer, sendPack_Tick, sendPack_PosX, sendPack_PosY, sendPack_Dir)
-    #    
-    # #人镖合一停止移动
-    # elif vehicle == IPY_GameWorld.pvTruck :
-    #    #人镖合一停止移动
-    #    PlayerStopMoveByCarryTruck(curPlayer, sendPack_Tick, sendPack_PosX, sendPack_PosY)
-    #    
-    # else:
-    #    GameWorld.Log("不能移动, 交通工具不明%d" % (vehicle) , curPlayer.GetPlayerID())
-    #===========================================================================
-   
-    return
 
-#---------------------------------------------------------------------
-##玩家停止移动
-#@param curPlayer 玩家实例
-#@param sendPack_Tick 时间戳
-#@param sendPack_PosX 目标X坐标
-#@param sendPack_PosY 目标Y坐标
-#@param sendPack_Dir 面向
-#@return 返回值无意义
-#@remarks 自定义函数 玩家停止移动
-#===============================================================================
-# def PlayerNormalStopMove(curPlayer, sendPack_Tick, sendPack_PosX, sendPack_PosY, sendPack_Dir) :
-#    #玩家停止移动检查
-#    if CheckPlayerStopMove(curPlayer) != True :
-#        return
-#    
-#    if not PlayerControl.PlayerMoveCheckClientWorldTick(curPlayer, sendPack_Tick, sendPack_PosX, sendPack_PosY):
-#        return
-#    
-#    if PlayerControl.PlayerRefreshPos(curPlayer, curPlayer, sendPack_PosX, sendPack_PosY) != True:
-#        return
-#    
-#    #curPlayer.SetFaceDir(sendPack_Dir)
-#    curPlayer.StopMove()
-#    return True
-# 
-# #---------------------------------------------------------------------
-# ##人镖合一停止移动
-# #@param curPlayer 玩家实例
-# #@param sendPack_Tick 时间戳
-# #@return 返回值无意义
-# #@remarks 自定义函数 人镖合一停止移动
-# def PlayerStopMoveByCarryTruck(curPlayer, clientWorldTick, sendPack_PosX, sendPack_PosY):
-#    curPlayerTruck = curPlayer.GetTruck()
-#    if curPlayerTruck == None:
-#        GameWorld.Log("人镖合一停止移动 -> 没有骠车!" , curPlayer.GetPlayerID())
-#        return
-#    
-#    if curPlayerTruck.GetCurAction() != IPY_GameWorld.laNPCMove :
-#        return
-#    
-#    if not PlayerControl.PlayerMoveCheckClientWorldTick(curPlayer, clientWorldTick, sendPack_PosX, sendPack_PosY):
-#        return
-#    
-#    curPlayerTruck.StopMove()
-#    return True
-#===============================================================================
-
-#---------------------------------------------------------------------
 #===============================================================================
 # //03 05主角点击复活#tagCCliectReborn
 # tagCCliectReborn       *   GettagCCliectReborn();
@@ -2841,209 +2384,6 @@
     return
 
 #---------------------------------------------------------------------
-#===============================================================================
-# //04 01 获取区域内对象信息#tagCAreaObjInfo
-# tagCAreaObjInfo       *   GettagCAreaObjInfo();
-# 
-# class   IPY_CAreaObjInfo
-# {
-# public:
-# 
-#    int      GetObjType();
-# 
-#    int      GetObjID();
-# };
-#===============================================================================
-##//04 01 获取区域内对象信息#tagCAreaObjInfo
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks //04 01 获取区域内对象信息#tagCAreaObjInfo
-def PlayerNeedSeeOther(index, tick):
-    #现在改为, 直接发送信息给客户端, 这个封包不处理了
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendReq = IPY_GameWorld.IPY_CAreaObjInfo()
-#    tagObj = GameWorld.GetObj(sendReq.GetObjID(), sendReq.GetObjType())
-#    
-#    if tagObj == None:
-#        GameWorld.Log("玩家请求其他玩家的相貌信息失败, 对象不存在")
-#        return
-#
-#    if GameWorld.IsSameObj(curPlayer, tagObj):
-#        #自己不能得到自己的信息
-#        return
-#    
-#    dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), tagObj.GetPosX(), tagObj.GetPosY())
-#    #对象在自己两倍视野外面, 则拒绝
-#    if dist > curPlayer.GetSight() * 2:
-#        #目标玩家在视野外面
-#        GameWorld.Log("玩家请求其他玩家的相貌信息失败,目标玩家在视野外面 %d" % dist)
-#        curPlayer.Sync_GetPlayerInfoFail(sendReq.GetObjID())
-#        return
-#    
-#    if tagObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
-#        return
-#    curPlayer.SeeOtherPlayer(tagObj)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //04 02 获取鼠标左键点击之后对象的详细信息#tagCClickObjGetInfo
-# tagCClickObjGetInfo       *   GettagCClickObjGetInfo();
-# 
-# class   IPY_CClickObjGetInfo
-# {
-# public:
-# 
-#    int      GetObjID();
-# 
-#    int      GetObjType();
-# };
-#===============================================================================
-##客户端封包响应//04 02 获取鼠标左键点击之后对象的详细信息#tagCClickObjGetInfo
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//04 02 获取鼠标左键点击之后对象的详细信息#tagCClickObjGetInfo
-def PlayerClickOtherPlayerGetInfo(index, tick):
-    GameWorld.GetPsycoFunc(__Func_PlayerClickOtherPlayerGetInfo)(index, tick)
-    return
-
-##客户端封包响应//04 02 获取鼠标左键点击之后对象的详细信息#tagCClickObjGetInfo
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//04 02 获取鼠标左键点击之后对象的详细信息#tagCClickObjGetInfo
-def __Func_PlayerClickOtherPlayerGetInfo(index, tick):
-    #===========================================================================
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # 
-    # sendPack = IPY_GameWorld.IPY_CClickObjGetInfo()
-    # sendPack_ID = sendPack.GetObjID()
-    # sendPack_Type = sendPack.GetObjType()
-    # 
-    # tagObj = GameWorld.GetObj(sendPack_ID, sendPack_Type)
-    # 
-    # if tagObj == None:
-    #    #GameWorld.Log("玩家请求其他玩家的相貌信息失败, 对象不存在", curPlayer.GetPlayerID())
-    #    return
-    # 
-    # dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), tagObj.GetPosX(), tagObj.GetPosY())
-    # #是否可以目标详细信息
-    # canGetDetail = (dist <= curPlayer.GetSight())
-    # #目标类型
-    # tagObjType = tagObj.GetGameObjType()
-    # 
-    # #仅处理Player和NPC
-    # if tagObjType not in [IPY_GameWorld.gotPlayer, IPY_GameWorld.gotNPC]:
-    #    return
-    # 
-    # #---玩家处理---
-    # if tagObjType == IPY_GameWorld.gotPlayer:
-    #    #获取玩家详细信息成功
-    #    if canGetDetail:
-    #        extendDataDict = {}
-    #        extendDataDict['maxHP'] = GameObj.GetMaxHP(tagObj)
-    #        extendDataDict['maxMP'] = tagObj.GetMaxMP()
-    #        extendDataDict['hit'] = tagObj.GetHit()
-    #        extendDataDict['miss'] = tagObj.GetMiss()
-    #        extendDataDict['atkSpeed'] = PlayerControl.GetAtkSpeed(tagObj)
-    #        extendDataDict['superHitRate'] = tagObj.GetSuperHitRate()
-    #        extendDataDict['superHit'] = tagObj.GetSuperHit()
-    #        extendDataDict['luckyHitRate'] = tagObj.GetLuckyHitRate()
-    #        extendDataDict['greatHitRate'] = tagObj.GetGreatHitRate()
-    #        extendDataDict['ignoreDefRate'] = tagObj.GetIgnoreDefRate()
-    #        extendDataDict['damageReduceRate'] = tagObj.GetDamageReduceRate()
-    #        extendDataDict['damageBackRate'] = tagObj.GetDamageBackRate()
-    #                    
-    #        extendData = str(extendDataDict)
-    #        extendDataLen = len(extendData)
-    #        curPlayer.PlayerClickOtherPlayerDetail(tagObj, extendDataLen, extendData)
-    #        return
-    #    
-    #    #获取玩家详细信息失败
-    #    curPlayer.Sync_GetPlayerInfoFail(sendPack_ID)
-    #    return
-    # 
-    # #---NPC处理---
-    # 
-    # #获取NPC详细信息成功
-    # if canGetDetail:
-    #    curPlayer.PlayerClickOtherNPCDetail(tagObj)
-    #    return
-    # 
-    #===========================================================================
-    #获取NPC详细信息失败
-    #暂不处理
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 02 玩家坐下/站立#tagCSit
-# tagCSit       *   GettagCSit();
-# 
-# class   IPY_CSit
-# {
-# public:
-#    //0:坐下 1:站立
-#    int      GetType();
-# };
-#===============================================================================
-
-##客户端封包响应 //03 02 玩家坐下/站立#tagCSit
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 02 玩家坐下/站立#tagCSit
-def PlayerSit(index, tick):
-    GameWorld.DebugLog("PlayerSit...")
-    
-
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    #功能开启判断换成
-    #GameFuncComm.GetFuncCanUse(curPlayer, funcID)
-    
-    #功能开启判断换成
-    #GameFuncComm.GetFuncCanUse(curPlayer, funcID)
-    
-    if GameObj.GetHP(curPlayer) <= 0:
-        return
-    sendPack = IPY_GameWorld.IPY_CSit()
-    setType = sendPack.GetType()
-    if setType == 1: #手游版 只做站立
-        PlayerControl.DoPlayerStand(curPlayer)
-    return
-
-    if curPlayer.IsMoving():
-        PlayerControl.NotifyCode(curPlayer, "CanNotSitWrongState")
-        return
-    
-    #在交通工具中, 不可打坐
-    if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull:
-        return
-    
-    #打坐行为,客户端限制
-    if not OperControlManager.IsObjCanDoAction(curPlayer,
-                                               ChConfig.Def_Obj_ActState_ServerAct,
-                                               IPY_GameWorld.oalSit):
-        return
-    
-    #设置回血/回魔开始标示位
-    curPlayer.SetRestoreTime(tick)
-    #获得封包
-    sendPack = IPY_GameWorld.IPY_CSit()
-    setType = sendPack.GetType()
-    playAction = curPlayer.GetPlayerAction()
-    #---想坐下---
-    if setType == 0 and playAction == IPY_GameWorld.paNull:
-        PlayerControl.DoPlayerSit(curPlayer, tick)
-        
-        return
-    
-    #---想站起来---
-    PlayerControl.DoPlayerStand(curPlayer)
-    return
-#---------------------------------------------------------------------
 ##C++封包触发, 玩家下线
 #@param index 玩家索引
 #@param tick 时间戳
@@ -3146,9 +2486,6 @@
     
     #设置RouteServerInitOK字典
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RouteServerInitOK, 0)
-    
-    #取消自动运镖状态
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_AutoTruck, 0)
     
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_CrossRegisterMap, 0)
     
@@ -3293,36 +2630,6 @@
     NetPackCommon.SendFakePack(curPlayer, showGuide)
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //05 03 玩家跳跃#tagCJump
-# tagCJump       *   GettagCJump();
-# 
-# class   IPY_CJump
-# {
-# public:
-# 
-#    int      GetSkillID();
-# 
-#    int      GetStartPosX();
-# 
-#    int      GetStartPosY();
-# 
-#    int      GetEndPosX();
-# 
-#    int      GetEndPosY();
-# };
-#===============================================================================
-##客户端封包响应 //05 03 玩家跳跃#tagCJump
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //05 03 玩家跳跃#tagCJump
-def PlayerJump(index, tick):
-    #没这个功能了
-    return
-
-
 ## 玩家状态变更
 #  @param index 玩家索引
 #  @param tick 当前时间
@@ -3338,9 +2645,6 @@
     if lastAction == curAction:
         return
     
-    #如果上一个状态是小游戏状态
-    if lastAction == IPY_GameWorld.paGameEvent:
-        PlayerGameEvent.TakeoffFishermanEquipment(curPlayer)
     return
 
 #---------------------------------------------------------------------
@@ -3406,117 +2710,7 @@
         
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 0B 设置金钱类型#tagCSetMoneyType
-# tagCSetMoneyType       *   GettagCSetMoneyType();
-# 
-# class   IPY_CSetMoneyType
-# {
-# public:
-#    //1:金子/金票    2:银子/银票
-#    int      GetType();
-#    //TMoneyType
-#    int      GetMoneyType();
-# };
-#===============================================================================
-##客户端封包响应 //03 0B 设置金钱类型#tagCSetMoneyType
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 0B 设置金钱类型#tagCSetMoneyType
-def SetMoneyType(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    sendPack = IPY_GameWorld.IPY_CSetMoneyType()
-    curType = sendPack.GetType()
-    curMoneyType = sendPack.GetMoneyType()
-    if curType == 1 and curMoneyType == IPY_GameWorld.TYPE_Price_Gold_Money :
-        curPlayer.SetUseGoldType(IPY_GameWorld.TYPE_Price_Gold_Money)
-    elif curType == 1 and curMoneyType == IPY_GameWorld.TYPE_Price_Gold_Paper :
-        curPlayer.SetUseGoldType(IPY_GameWorld.TYPE_Price_Gold_Paper)
-    elif curType == 2 and curMoneyType == IPY_GameWorld.TYPE_Price_Silver_Money :
-        curPlayer.SetUseSilverType(IPY_GameWorld.TYPE_Price_Silver_Money)
-    elif curType == 2 and curMoneyType == IPY_GameWorld.TYPE_Price_Silver_Paper :
-        curPlayer.SetUseSilverType(IPY_GameWorld.TYPE_Price_Silver_Paper)
-    else:
-        GameWorld.Log("SetMoneyType = > 金钱类型 = %s错误" % (curType) , curPlayer.GetPlayerID())
-        return
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 08 打开大地图#tagCOpenMap
-# tagCOpenMap       *   GettagCOpenMap();
-# 
-# class   IPY_COpenMap
-# {
-# public:
-# 
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 08 打开大地图#tagCOpenMap
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 08 打开大地图#tagCOpenMap
-def PlayerMapInfo(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if tick - curPlayer.GetPosInfoTick() < ChConfig.Def_GetOtherPosInterval:
-        return
-    
-    curPlayer.SetPosInfoTick(tick)
-    
-    #队伍信息同步
-    PlayerTeam.NotifyPosInfoToPlayer(curPlayer, tick)
-    
-    #骠车信息同步
-    PlayerTruck.NotifyPosInfoToPlayer(curPlayer, tick)
-        
-    #通知大地图标记点数量
-    OnSendMapSignCnt(curPlayer)
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 0A 更改攻击模式#tagCChangeAttackMode
-# tagCChangeAttackMode       *   GettagCChangeAttackMode();
-# 
-# class   IPY_CChangeAttackMode
-# {
-# public:
-#    //TAttackMode
-#    int      GetMode();
-# };
-#===============================================================================
-##客户端封包响应 //03 0A 更改攻击模式#tagCChangeAttackMode
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 0A 更改攻击模式#tagCChangeAttackMode
-def PlayerChangeAttackMode(index, tick) :
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    sendPack = IPY_GameWorld.IPY_CChangeAttackMode()
-    sendPackMode = sendPack.GetMode()
-    
-    #不可切换模式的地图
-    mapID = GameWorld.GetMap().GetMapID()
-    if mapID in ChConfig.Def_CanNotChangeAtkModelMap:
-        GameWorld.Log("本地图不可切换PK模式,mapID=%s" % (mapID), curPlayer.GetPlayerID())
-        return
-    
-    #===============================================================================================
-    # #只有amPeace和amAll
-    # #if sendPackMode < 0 or sendPackMode > IPY_GameWorld.amAll :
-    # if sendPackMode not in [IPY_GameWorld.amPeace, IPY_GameWorld.amAll, IPY_GameWorld.amFamily]:
-    #    GameWorld.Log("切换攻击模式封包,类型 = %s错误" % (sendPackMode) , curPlayer.GetPlayerID())
-    #    return
-    #===============================================================================================
-    
-    ChangeAttackMode(curPlayer, sendPackMode)
-    return
-
+#//03 0A 更改攻击模式#tagCChangeAttackMode
 ##改变玩家PK模式
 #@param curPlayer 玩家
 #@param attackMode
@@ -3545,154 +2739,6 @@
     SyncPKModel(curPlayer)
     return
 
-#---------------------------------------------------------------------
-#===============================================================================
-# //06 06 取消Buff#tagCCancelBuff
-# tagCCancelBuff       *   GettagCCancelBuff();
-# 
-# class   IPY_CCancelBuff
-# {
-# public:
-# 
-#    int      GetBuffID();
-# };
-#===============================================================================
-##客户端封包响应 //06 06 取消Buff#tagCCancelBuff
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //06 06 取消Buff#tagCCancelBuff
-def PlayerCancelBuff(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    sendPack = IPY_GameWorld.IPY_CCancelBuff()
-    skillID = sendPack.GetBuffID()
-    #---查找取消的技能---
-    
-    #---清空Buff---
-    #@bug 2607: 持续性技能调用DoBuffDisApper, 导致持续性回血Buff, 一次性将剩余的回复量都加上了
-    #===========================================================================
-    # if buffSkill.GetSkillType() not in ChConfig.Def_LstBuff_List:
-    #    BuffSkill.DoBuffDisApper(curPlayer, curPlayerCancelbuff, tick)
-    #===========================================================================
-    
-    BuffSkill.DelBuffBySkillID(curPlayer, skillID, tick)
-    
-    #刷新人物属性
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #刷新所有状态
-    playerControl.RefreshPlayerAttrByBuff()
-    #GameWorld.Log("玩家取消buff成功,buffTypeID = %s"%(buffSkillTypeID) , curPlayer.GetPlayerID())
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 0C 开始跳舞/钓鱼#tagCStartGameEvent
-# tagCStartGameEvent       *   GettagCStartGameEvent();
-# 
-# class   IPY_CStartGameEvent
-# {
-# public:
-#    //游戏事件 Type = TGameEvent
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 0C 开始跳舞/钓鱼#tagCStartGameEvent
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 0C 开始跳舞/钓鱼#tagCStartGameEvent
-def StartGameEvent(index, tick):
-    GameWorld.GetPsycoFunc(__Func_StartGameEvent)(index, tick)
-    return
-
-##客户端封包响应 //03 0C 开始跳舞/钓鱼#tagCStartGameEvent
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 0C 开始跳舞/钓鱼#tagCStartGameEvent
-def __Func_StartGameEvent(index, tick):
-    #游戏事件 Type = TGameEvent
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if GameObj.GetHP(curPlayer) == 0:
-        #GameWorld.Log("玩家死亡,没有事件")
-        return
-    
-    sendPack = IPY_GameWorld.IPY_CStartGameEvent()
-    
-    eventType = sendPack.GetType()
-    #---停止游戏事件---
-    if eventType == IPY_GameWorld.geNull:
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
-        return
-    
-    #2010-5-26 只开启钓鱼,关闭跳舞
-    if eventType != IPY_GameWorld.geFish:
-        return
-    
-    #通过动作获得相应动作位
-    curActBit = OperControlManager.GetActBitByAction(ChConfig.Def_ActBit_GameEvent, eventType)
-    
-    if curActBit != None:
-        #拉进度条中 状态,客户端限制
-        if not OperControlManager.IsObjCanDoAction(curPlayer,
-                                                   ChConfig.Def_Obj_ActState_ClientAct,
-                                                   curActBit):
-            return
-    
-    #---验证是否可以开始小游戏事件---
-    lastShowEventTick = curPlayer.GetGameEventTick()
-    
-    if tick - lastShowEventTick < ChConfig.Def_ShowEventTime:
-        #GameWorld.Log("事件播放间隔太短")
-        return
-    
-    #检查是否可以开始小游戏
-    if not PlayerGameEvent.CheckCanBeginGameEvent(curPlayer, tick):
-        return
-    
-    if not PlayerGameEvent.CanProcessGameEvent(curPlayer, eventType, tick):
-        #PlayerGameEvent.StopGameEvent(curPlayer,tick)
-        return
-
-    #---开始执行小游戏事件---
-    
-    #设置玩家当期为游戏事件状态
-    PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paGameEvent)
-    #设定开始游戏事件
-    PlayerGameEvent.StartGameEvent(curPlayer, eventType, tick)
-    return   
-
-#// B0 50 钓鱼收杆 #tagCMDoFish
-#
-#struct    tagCMDoFish
-#
-#{
-#    tagHead        Head;
-#    BYTE        FishNum;        // 钓鱼编号1~N
-#    BYTE        PosIndex;    // 停留位置1~N
-#};
-## 钓鱼收杆
-#  @param curPlayer
-#  @return None
-#===============================================================================
-# def OnDoFish(index, clientData, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    if not curPlayer:
-#        return
-#    
-#    if curPlayer.GetPlayerAction() != IPY_GameWorld.paGameEvent:
-#        GameWorld.DebugLog("非小游戏状态下,不可收杆!", curPlayer.GetPlayerID())
-#        return
-#    
-#    if curPlayer.GetPlayerGameEvent() != IPY_GameWorld.geFish:
-#        GameWorld.DebugLog("非钓鱼状态下,不可收杆!", curPlayer.GetPlayerID())
-#        return
-#    
-#    fishType = clientData.PosIndex
-#    PlayerGameEvent.DoFishLogic(curPlayer, fishType)
-#    return
-#===============================================================================
 #===============================================================================
 # //A1 03 设置是否成年 #tagCMAdult
 # 
@@ -3709,59 +2755,6 @@
     curPlayer.ChangeAdult(adult)
     return
 
-
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 0D 玩家自定义动作#tagCShowFace
-# tagCShowFace       *   GettagCShowFace();
-# 
-# class   IPY_CShowFace
-# {
-# public:
-#    //表情类型, 客户端自定, 服务器广播这个Type
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 0D 玩家自定义动作#tagCShowFace
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 0D 玩家自定义动作#tagCShowFace
-def ShowFace(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if tick - curPlayer.GetShowFaceTick() < ChConfig.Def_ShowEventTime:
-        return
-    
-    if GameObj.GetHP(curPlayer) <= 0:
-        return
-    
-    #表情行为, 客户端限制
-    if not OperControlManager.IsObjCanDoAction(curPlayer,
-                                               ChConfig.Def_Obj_ActState_ClientAct,
-                                               IPY_GameWorld.oalLook):
-        return
-
-    #移动中不执行此操作
-    if curPlayer.IsMoving():
-        #PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0")
-        return
-    
-    if curPlayer.GetPlayerAction() != IPY_GameWorld.paNull:
-        return
-    
-    if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull:
-        return
-    
-    #设置间隔
-    curPlayer.SetShowFaceTick(tick)
-    
-    sendPack = IPY_GameWorld.IPY_CShowFace()
-    PlayerControl.DoPlayerShowPlayerFace(curPlayer, sendPack.GetType())
-    return True
-
-#----------------------------自定义方法
 #---------------------------------------------------------------------
 ##检查玩家是否可以停止移动
 #@param curPlayer 玩家实例
@@ -3832,321 +2825,6 @@
     NetPackCommon.SendFakePack(curPlayer, sendPack)
     
     GameWorld.Log("地图切换失败", curPlayer.GetID())
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //01 04 在线回应#tagCOnlineReturn
-# tagCOnlineReturn       *   GettagCOnlineReturn();
-# 
-# class   IPY_COnlineReturn
-# {
-# public:
-# 
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //01 04 在线回应#tagCOnlineReturn
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //01 04 在线回应#tagCOnlineReturn
-def OnlineReply(index, tick):
-    #目前做到RouteServer中去了
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    
-#    lastOnlineReplyTick = curPlayer.GetLastOnlineReplyTick()
-#    
-#    #回应次数+1
-#    curPlayer.SetLastOnlineReplyTick(tick)
-#    curPlayer.SetOnlineReplyCount(curPlayer.GetOnlineReplyCount() + 1)
-#    if lastOnlineReplyTick == 0:
-#        GameWorld.Log("初始化在线回应")
-#        #GameWorld.Log("GetLastOnlineReplyTick %d"%curPlayer.GetLastOnlineReplyTick())
-#        return
-#    
-#    #GameWorld.Log("tick %d"%tick)
-#    diffTick = tick - lastOnlineReplyTick - ChConfig.Def_PlayerOnLineReply_ClientReply
-#    if diffTick < -ChConfig.Def_PlayerOnLineReply_ClientReply:
-#        GameWorld.Log("在线回应间隔错误 = %d"%diffTick)
-#        curPlayer.Kick(IPY_GameWorld.disOnlineReplyError)
-#        return
-#    
-#    
-##    GameWorld.Log(str(curPlayer.GetTotalOnlineReplyTick()))
-##    GameWorld.Log(str(diffTick))
-#    curPlayer.SetTotalOnlineReplyTick(curPlayer.GetTotalOnlineReplyTick() + diffTick)
-#    
-#    GameWorld.Log("在线回应次数 = %d  总时间 = %d"%(curPlayer.GetOnlineReplyCount(), curPlayer.GetTotalOnlineReplyTick()))
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //06 08 召唤兽移动#tagCSummonMove
-# tagCSummonMove       *   GettagCSummonMove();
-# 
-# class   IPY_CSummonMove
-# {
-# public:
-# 
-#    int      GetSummonID();
-# 
-#    int      GetPosX();
-# 
-#    int      GetPosY();
-# 
-#    int      GetDestPosX();
-# 
-#    int      GetDestPosY();
-# };
-#===============================================================================
-##客户端封包响应 //06 08 召唤兽移动#tagCSummonMove
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //06 08 召唤兽移动#tagCSummonMove
-def PlayerSummonMove(index, tick):
-    #逻辑做服务器端
-    return
-#===============================================================================
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendPack = IPY_GameWorld.IPY_CSummonMove()
-#    summonID = sendPack.GetSummonID()
-#    posX = sendPack.GetPosX()
-#    posY = sendPack.GetPosY()
-#    destX = sendPack.GetDestPosX()
-#    destY = sendPack.GetDestPosY()
-#    #找到这个召唤兽
-#    summonNPC = curPlayer.FindSummonByID(summonID)
-#    #无法查找到这个召唤兽
-#    if summonNPC == None or GameObj.GetHP(summonNPC) <= 0:
-#        GameWorld.Log('无法查找到这个召唤兽 summonID=%d'%summonID)
-#        return
-#    
-#    if ChConfig.Def_ClientControlSummonNPCID.count(summonNPC.GetFunctionType()) == 0:
-#        #这个召唤兽客户端不能控制
-#        #GameWorld.Log('这个召唤兽客户端不能控制')
-#        return
-#    
-#    
-#    #目的地是否可以到达
-#    curMap = GameWorld.GetMap()
-#    if curMap.CanMove(destX, destY) != True:
-#        #地方不可走, 重置玩家的位置
-#        GameWorld.Log("召唤兽地方不可走, destX=%s, destY=%s"%(destX, destY))
-#        return
-# #===============================================================================
-# #    curMap = GameWorld.GetMap()
-# #    if CheckMovePos(curPlayer, summonNPC,curMap, posX, posY, destX, destY, sendPlayerMoveFail = False) != True :
-# #        #封包信息错误
-# #        return
-# #===============================================================================
-#    
-#    
-#    #移动点坐标
-#    dist = GameWorld.GetDist(posX, posY, destX, destY)
-#    if dist > 20 :
-#        #瞬移
-#        GameWorld.Log('召唤兽瞬移summonID=%d'%summonID)
-#        summonNPC.ResetPos(destX, destY)    
-#        return
-#    
-#    #正常移动
-#    summonNPC.Move(destX, destY)
-#    return
-#===============================================================================
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //06 09 召唤兽攻击#tagCSummonAttack
-# tagCSummonAttack       *   GettagCSummonAttack();
-# 
-# class   IPY_CSummonAttack
-# {
-# public:
-# 
-#    int      GetSummonID();
-# 
-#    int      GetObjType();
-# 
-#    int      GetObjID();
-# 
-#    int      GetPosX();
-# 
-#    int      GetPosY();
-# };
-#===============================================================================
-##客户端封包响应 //06 09 召唤兽攻击#tagCSummonAttack
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //06 09 召唤兽攻击#tagCSummonAttack
-def PlayerSummonAttack(index, tick):
-    #逻辑做服务器端
-    return
-#===============================================================================
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendPack = IPY_GameWorld.IPY_CSummonAttack()
-#    summonID = sendPack.GetSummonID()
-#    posX = sendPack.GetPosX()
-#    posY = sendPack.GetPosY()
-#    attackType = sendPack.GetObjType()
-#    attackID = sendPack.GetObjID()
-#    
-#    #找到这个召唤兽
-#    summonNPC = curPlayer.FindSummonByID(summonID)
-#    #无法查找到这个召唤兽
-#    if summonNPC == None or GameObj.GetHP(summonNPC) <= 0:
-#        GameWorld.Log('找不到召唤兽')
-#        return
-#    
-#    if ChConfig.Def_ClientControlSummonNPCID.count(summonNPC.GetFunctionType()) == 0:
-#        #这个召唤兽客户端不能控制
-#        GameWorld.Log('这个召唤兽客户端不能控制')
-#        return
-#    
-#    #判断公共CD
-#    if tick - summonNPC.GetAttackTick() < summonNPC.GetAtkInterval():
-#        GameWorld.Log("攻击间隔没有到")
-#        return
-#    
-#    if PlayerControl.PlayerRefreshPos(curPlayer, summonNPC, posX, posY) != True:
-#        #当前位置刷新失败
-#        GameWorld.Log("召唤兽攻击当前位置刷新失败")
-#        return
-#    
-#    #被攻击者
-#    attackTag = None
-#    if attackType == IPY_GameWorld.gotPlayer:
-#        attackTag = GameWorld.GetPlayerManager().FindPlayerByID(attackID)
-#    elif attackType == IPY_GameWorld.gotNPC:
-#        attackTag = GameWorld.FindNPCByID(attackID)
-#    else:
-#        #封包类型错误,或对象无法攻击
-#        GameWorld.Log("召唤兽封包攻击类型错误 attackType = %s"%(attackType))
-#        return
-#    
-#    #无法查找攻击目标
-#    if attackTag == None :
-#        GameWorld.Log("无法查找攻击目标,attackID = %s"%(attackID))
-#        return
-#    
-#    if not BaseAttack.GetCanAttack(summonNPC, attackTag, None, tick):
-#        return
-#    
-#    if not __CheckPlayerSummonAttack(curPlayer , summonNPC , attackTag , tick):
-#        return
-#    
-#    #普通攻击
-#    BaseAttack.Attack(summonNPC,attackTag, None, 0, 1,tick)
-#    
-#    return
-#===============================================================================
-
-#===============================================================================
-# def __CheckPlayerSummonAttack(curPlayer , summonNPC , attackTag , tick):
-#    #1. 如果主人在战斗状态, 并且攻击对象为封包中的攻击对象, 返回True
-#    #这个逻辑,将会导致,如果玩家停止攻击守卫,那么召唤兽将不攻击守卫
-#    if curPlayer.IsBattleState() :
-#        curOwnerActionObj = curPlayer.GetActionObj()
-#        if curOwnerActionObj != None and GameWorld.IsSameObj(curOwnerActionObj, attackTag):
-#            return True
-#        
-#    #2. 判定关系
-#    #判断是否敌对关系
-#    relation = BaseAttack.GetTagRelation(summonNPC, attackTag, None, tick)
-#    
-#    if relation[0] != ChConfig.Type_Relation_Enemy  :
-#        GameWorld.Log("Attack Fail : Message = %s"%relation[1])
-#        AttackCommon.PlayerAttackFailSysMessanage(curPlayer,relation[1])
-#        return False
-#    
-#    return True
-#===============================================================================
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //06 0A 召唤兽停止#tagCSummonStop
-# tagCSummonStop       *   GettagCSummonStop();
-# 
-# class   IPY_CSummonStop
-# {
-# public:
-# 
-#    int      GetSummonID();
-# 
-#    int      GetPosX();
-# 
-#    int      GetPosY();
-# };
-#===============================================================================
-##客户端封包响应 //06 0A 召唤兽停止#tagCSummonStop
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //06 0A 召唤兽停止#tagCSummonStop
-def PlayerSummonStop(index , tick):
-    #逻辑做服务器端
-    return
-#===============================================================================
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    sendPack = IPY_GameWorld.IPY_CSummonStop()
-#    summonID = sendPack.GetSummonID()
-#    posX = sendPack.GetPosX()
-#    posY = sendPack.GetPosY()
-#    
-#    #找到这个召唤兽
-#    summonNPC = curPlayer.FindSummonByID(summonID)
-#    
-#    #无法查找到这个召唤兽
-#    if summonNPC == None or GameObj.GetHP(summonNPC) <= 0:
-#        return
-#    
-#    if ChConfig.Def_ClientControlSummonNPCID.count(summonNPC.GetFunctionType()) == 0:
-#        #这个召唤兽客户端不能控制
-#        #GameWorld.Log('这个召唤兽客户端不能控制')
-#        return
-#    
-#    if PlayerControl.PlayerRefreshPos(curPlayer, summonNPC, posX, posY) != True:
-#        #当前位置刷新失败
-#        GameWorld.Log("召唤兽攻击当前位置刷新失败")
-#        return
-#    
-#    summonNPC.StopMove()
-#    
-#    return
-#===============================================================================
-
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 0F 是否隐藏面具#tagCHideMask
-# tagCHideMask       *   GettagCHideMask();
-# 
-# class   IPY_CHideMask
-# {
-# public:
-#    //是否隐藏
-#    int      GetIsHide();
-# };
-#===============================================================================
-##客户端封包响应 //03 0F 是否隐藏面具#tagCHideMask
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 0F 是否隐藏面具#tagCHideMask
-def HideMask(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    sendPack = IPY_GameWorld.IPY_CHideMask()
-    isHide = sendPack.GetIsHide()
-    
-    if isHide != 0 and isHide != 1:
-        GameWorld.Log("HideMask -> 封包类型错误isHide = %s" % (isHide) , curPlayer.GetPlayerID())
-        return
-    
-    if curPlayer.GetIsHideMask() == isHide:
-        return
-    
-    curPlayer.SetIsHideMask(isHide)
     return
 
 #---------------------------------------------------------------------
@@ -4277,56 +2955,12 @@
         #GameWorld.Log("战斗中无法换线")
         return False
     
-    #---有镖车---
-    if curPlayer.GetTruck() != None:
-        #GeRen_liubo_760310   <n color="0,255,0">对不起,您处于押运状态中,无法切换线路!</n> 256 -
-        PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_760310")
-        return False
-
     if curPlayer.GetPlayerVehicle() not in ChConfig.Def_PlayerChangLine_Vehicle:
         #GeRen_liubo_760310   <n color="0,255,0">对不起,您处于押运状态中,无法切换线路!</n> 256 -
         PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_760310")
         return False
 
     return True
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //01 0C 得到当前服务器线路状态#tagCGetLineState
-# tagCGetLineState       *   GettagCGetLineState();
-# 
-# class   IPY_CGetLineState
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //01 0C 得到当前服务器线路状态#tagCGetLineState
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //01 0C 得到当前服务器线路状态#tagCGetLineState
-def LineState(index, tick):
-    #改为GameServer同步要查询的地图ID
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    #1. 只有普通地图查看线路
-#    gameMap = GameWorld.GetMap()
-#    
-#    if gameMap.GetMapFBType() != IPY_GameWorld.fbtNull:
-#        #Line_lose_Examine  <n color="0,255,0">`o对不起,目前该地图没有开放分流,无法查看线路状态!</n>
-#        #PlayerControl.NotifyCode(curPlayer, "Line_lose_Examine")
-#        return
-#    
-#    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_LineState) <= ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_LineState]:
-#        #Line_Examinelose_Frequent  <n color="0,255,0">`o对不起,对不起,您查看游戏线路状态过于频繁,请稍后重试!</n>   256
-#        #PlayerControl.NotifyCode(curPlayer, "Line_Examinelose_Frequent")
-#        return
-#    
-#    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_LineState, tick)
-#    #GameWorld.Log("查看分流成功" , curPlayer.GetPlayerID())
-#    curPlayer.GameServer_LineState()
-    return
 
 def GetRebronTime(curPlayer, rebornType):
     ''' 死亡状态才验证时间,本服跨服通用
@@ -4507,7 +3141,7 @@
         playerControl.SetToBornPlace()        
     elif rebornType == ChConfig.rebornType_MainCity:
         #直接取db中配置的复活点
-        PlayerControl.PlayerResetWorldPos(curPlayer, gameMap.GetRebornMapID(), gameMap.GetRebornMapX(), gameMap.GetRebornMapY(), False)
+        PlayerControl.PlayerResetWorldPos(curPlayer, gameMap.GetRebornMapID(), gameMap.GetRebornMapX(), gameMap.GetRebornMapY())
     #重新召唤宠物
     PlayerPet.AutoSummonPet(curPlayer)
     
@@ -4558,243 +3192,6 @@
     
     FBLogic.DoFBOnReborn(curPlayer, rebornType, tick)
     return
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 11 使用锻造炉#tagCUseMakeStove
-# tagCUseMakeStove       *   GettagCUseMakeStove();
-# 
-# class   IPY_CUseMakeStove
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 11 使用锻造炉#tagCUseMakeStove
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 11 使用锻造炉#tagCUseMakeStove
-def PlayerUseMakeStove(index , tick):
-    #===============================================================================================
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # 
-    # #功能开启判断换成
-    # #GameFuncComm.GetFuncCanUse(curPlayer, funcID)
-    # 
-    # #非空闲状态无法使用
-    # if curPlayer.GetPlayerAction() not in ChConfig.Def_Player_DoEvent_State:
-    #    PlayerControl.NotifyCode(curPlayer, "Factory_Execution_Wrong")
-    #    return
-    # 
-    # #移动中不执行此操作
-    # if curPlayer.IsMoving():
-    #    #PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0")
-    #    return False
-    # 
-    # #开始锻造事件
-    # ItemCommon.DoLogic_UseStoveEvent(curPlayer)
-    #===============================================================================================
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 12 查看家族战排期#tagCGetFamilyWarTime
-# tagCGetFamilyWarTime       *   GettagCGetFamilyWarTime();
-# 
-# class   IPY_CGetFamilyWarTime
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 12 查看家族战排期#tagCGetFamilyWarTime
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 12 查看家族战排期#tagCGetFamilyWarTime
-def QueryFamilyWarPlan(index, tick):
-#===================================================================================================
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    
-#    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_QueryFamilyWar, tick):
-#        #操作过于频繁
-#        return
-#    
-#    if curPlayer.GetFamilyID() == 0:
-#        #无家族不查询
-#        return
-# 
-#    #开始查询
-#    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_sqtFamilyWar, 0, '', '', 0)
-#===================================================================================================
-    return
-#-------------------------------------------------------------------
-#===============================================================================
-# //03 13 查询镖车位置#tagCGetTruckPos
-# tagCGetTruckPos       *   GettagCGetTruckPos();
-# 
-# class   IPY_CGetTruckPos
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 13 查询镖车位置#tagCGetTruckPos
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 13 查询镖车位置#tagCGetTruckPos
-def QueryTruckPos(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- #    GameWorld.Log('进入镖车查询 ID:%s'%curPlayer.GetID())
-    
-    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_QueryTruckPos) <= ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_QueryTruckPos]:
-        #查询过于频繁
-        PlayerControl.NotifyCode(curPlayer, "Old_hgg_31379")
-        return
-    
-    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_QueryTruckPos, tick)
-    #开始查询
-    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_sqtTruck, curPlayer.GetTruckID(), 'TruckPos', '', 0)
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 14 传送镖车位置#tagCMoveToTruckPos
-# tagCMoveToTruckPos       *   GettagCMoveToTruckPos();
-# 
-# class   IPY_CMoveToTruckPos
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 14 传送镖车位置#tagCMoveToTruckPos
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 14 传送镖车位置#tagCMoveToTruckPos
-def MoveToTruckPos(index, tick):
-#===============================================================================
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    
-#    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_MoveToTruckPos) <= ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_MoveToTruckPos]:
-#        #传送过于频繁
-#        PlayerControl.NotifyCode(curPlayer, "Convey_Car_Frequently")
-#        return
-#    
-#    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_MoveToTruckPos, tick)
-#    
-#    #判定玩家状态
-#    if not PlayerControl.CheckTransState(curPlayer):
-#        return
-#    
-#    #战斗状态不让玩家传送
-#    if curPlayer.IsBattleState():
-#        PlayerControl.NotifyCode(curPlayer, "CannotAtk09")
-#        return
-#    
-#    #开始传送
-#    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_sqtTruck, curPlayer.GetTruckID(), 'MoveToTruck', '', 0)
-#===============================================================================
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 15 开始远程鉴定#tagCRemoteIdentify
-# tagCRemoteIdentify       *   GettagCRemoteIdentify();
-# 
-# class   IPY_CRemoteIdentify
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 15 开始远程鉴定#tagCRemoteIdentify
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 15 开始远程鉴定#tagCRemoteIdentify
-def FarIdentify(index, tick):
-    #关闭此功能
-    return
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 16 得到副本状态#tagCGetFBState
-# tagCGetFBState       *   GettagCGetFBState();
-# 
-# class   IPY_CGetFBState
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应//03 16 得到副本状态#tagCGetFBState
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应//03 16 得到副本状态#tagCGetFBState
-def GetFBState(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_FBState) < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_FBState]:
-        #查询过于频繁
-        return
-    
-    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FBState, tick)
-    
-    
-    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
-        #普通地图不查询
-        return
-    
-    FBLogic.DoGetFBState(curPlayer , tick)
-    
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 19 副本帮助界面#tagCFbHelp
-# tagCFbHelp       *   GettagCFbHelp();
-# 
-# class   IPY_CFbHelp
-# {
-# public:
-#    //无意义
-#    int      GetType();
-# };
-#===============================================================================
-##客户端封包响应 //03 19 副本帮助界面#tagCFbHelp
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 19 副本帮助界面#tagCFbHelp
-#副本帮助界面
-def FBHelp(index , tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if not curPlayer.GetMapLoadOK():
-        #玩家未登陆成功副本不处理
-        return
-    
-    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_FBHelp) < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_FBHelp]:
-        #查询过于频繁
-        return
-    
-    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FBHelp, tick)
-    
-#    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
-#        #普通地图不查询
-#        return
-    
-    FBLogic.DoFBHelp(curPlayer , tick)
-    
-    return
-#---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
 #// C1 05 进入跨服地图 #tagCMEnterCrossServer
@@ -4844,186 +3241,6 @@
     mapID = sendPack.GetMapID()
     clientSendLineID = sendPack.GetLineID()
     PlayerControl.PlayerEnterFB(curPlayer, mapID, clientSendLineID)
-    return
-
-#---------------------------------------------------------------------
-
-#===============================================================================
-#//07 24 定点传送#tagCDingDianTransport
-#tagHead        Head;
-#BYTE        ItemIndex;
-#WORD        TransportIndex;
-
-## 定点传送
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def PointTransport(index, tick):
-#===============================================================================
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-# #    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_WorldTransport, tick):
-# #        #间隔未到
-# #        return
-#    sendPack = IPY_GameWorld.IPY_CDingDianTransport()
-#    lineID = sendPack.GetItemIndex()        #本项目用来指定传送的目标线路, -1为默认
-#    sendPack_TransportIndex = sendPack.GetTransportIndex()   #传送点索引
-#    lineID = lineID if lineID > 0 else -1
-#    
-#    if not PlayerControl.CheckPlayerTransport(curPlayer):
-#        #玩家当前状态不可传送
-#        return
-#    PointTransportList = ReadChConfig.GetEvalChConfig('PointTransport')
-#    PointCount = len(PointTransportList) 
-#    #索引错误
-#    if sendPack_TransportIndex < 0 or sendPack_TransportIndex >= PointCount:
-#        return
-#    curPointDict = PointTransportList[sendPack_TransportIndex]
-#    
-#    mapID = curPointDict["MapID"]
-#    lvLimit = curPointDict["LVLimit"]
-#    posX = curPointDict["PosX"]
-#    posY = curPointDict["PosY"]
-#    money = curPointDict["Money"]
-#    moneyType = curPointDict["MoneyType"]
-#    
-#    #职业限制
-#    if lvLimit > curPlayer.GetLV():
-#        #对不起,该场景需要XX级才能进入!
-#        PlayerControl.NotifyCode(curPlayer, "Carry_hwj35_0", [lvLimit])
-#        return
-#    #金钱限制
-#    if not PlayerControl.HaveMoneyEx(curPlayer, moneyType, money):
-#        return
-#    #目标地图判断(存在否,敌国,副本)
-#    if not PlayerControl.CheckTagCountry(curPlayer, mapID):
-#        return
-#    
-#    #坐标点判断
-#    posX, posY = GetTransportPos(curPlayer, 0, mapID, posX, posY)
-#    if (posX, posY) == (0, 0):
-#        #04BBF813-7A30-47A8-927DE1ACCC4F378E 目标点为障碍点
-#        PlayerControl.NotifyCode(curPlayer, "04BBF813-7A30-47A8-927DE1ACCC4F378E")
-#        return
-#    
-#    if BeginTrans(curPlayer, mapID, posX, posY, lineID=lineID):
-#        curPlayer.SetDict(ChConfig.Def_PlayerKey_TransMoney, money)
-#        curPlayer.SetDict(ChConfig.Def_PlayerKey_TransMoneyType, moneyType)
-#        curPlayer.SetDict(ChConfig.Def_PlayerKey_TransType, ChConfig.Def_Transport_Type_FixedPoint)
-#    else:
-#        #没有进度条,直接扣取
-#        infoDict = {ChConfig.Def_Cost_Reason_SonKey:mapID}
-#        PlayerControl.PayMoney(curPlayer, moneyType, money, ChConfig.Def_Cost_Transport, infoDict)
-#    
-#===============================================================================
-    #PlayerControl.PlayerResetWorldPos(curPlayer, MapID, PosX, PosY, False)
-    #PlayerControl.NotifyCode(curPlayer, "Map_Deliver_Succeed", [MapID])
-    return   
-#===============================================================================
-# #  04 04 好友传送 #tagCFriendTransport
-# #
-# #struct    tagCFriendTransport
-# #{
-# #    tagHead        Head;
-# #    DWORD        FriendID;
-# #    Byte         ExtField1;
-# #};
-#===============================================================================
-##客户端封包响应 04 04 好友传送 #tagCFriendTransport
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 04 04 好友传送 #tagCFriendTransport
-def FriendTransPort(index, tick):
-    return
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    
-#    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_FlyToFriend, tick):
-#        #间隔未到
-#        return
-#    
-#    sendPack = IPY_GameWorld.IPY_CFriendTransport()
-#    sendPack_FriendID = sendPack.GetFriendID()
-#    sendPack_IsAutoBuy = sendPack.GetExtField1()
-#
-#    if not curPlayer.FindFriend(sendPack_FriendID):
-#        #确认好友失败
-#        return
-#    
-#    if not PlayerControl.CheckPlayerTransport(curPlayer):
-#        #玩家当前状态不可传送
-#        return
-#    
-#    type = ChConfig.Def_Transport_Type_Friend
-#    if not TransportVipLvRestrict(curPlayer, type):
-#        #vip等级限制
-#        return
-#
-#    transportPayDict = ReadChConfig.GetEvalChConfig('TransportPay')
-#    payInfo = transportPayDict.get(type)
-#    
-#    if payInfo == None:
-#        GameWorld.ErrLog("表TransportPay信息错误 没有对应类型 %s" % (type))
-#        return
-#    
-#    
-#    #物品ID, 物品效果值, 付费类型,金额
-#    itemID, itemEffectID, moneyType, money = payInfo
-#    
-#    #通知消费方式
-#    sendPayType = ChConfig.Def_FriendTransPort_UseItem
-#    #使用道具传送
-#    useItem = ItemCommon.FindItemInPackByEffectEx(curPlayer, itemEffectID)
-#    
-#    #没有物品
-#    if useItem == None:
-#        if sendPack_IsAutoBuy:
-#            #没有钱
-#            if not PlayerControl.HaveMoneyEx(curPlayer, moneyType, money):
-#                return
-#            
-#            #金钱消费
-#            sendPayType = ChConfig.Def_FriendTransPort_UseMoney
-#        else:
-#            #物品不足
-#            PlayerControl.NotifyCode(curPlayer, "GeRen_pan_861048", [itemID])
-#            return
-#    
-#    sendMsg = '%s' % (sendPayType)
-#    
-#    #查询并传送
-#    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_sqtPlayer, sendPack_FriendID,
-#                             'FlytoFriendByID', sendMsg, len(sendMsg))
-
-#---------------------------------------------------------------------
-#===============================================================================
-#04 05 世界传送tagCWorldTransfer
-# 
-# struct    tagCWorldTransfer
-# {
-#    tagHead        Head;
-#    DWORD        MapID;
-#    WORD        PosX;
-#    WORD        posY;
-#    BYTE        ExtField1;
-# };
-#===============================================================================
-##
-##客户端封包响应 04 05 世界传送tagCWorldTransfer
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 04 05 世界传送tagCWorldTransfer
-def WorldTransPort(index, tick):
-    #---获取封包信息---
-    packUseItem = IPY_GameWorld.IPY_CWorldTransfer()
-    packTransportType = packUseItem.GetType()
-    mapID = packUseItem.GetMapID()        
-    posX = packUseItem.GetPosX()
-    posY = packUseItem.GetPosY()
-    lineID = packUseItem.GetExtField1()
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    __Func_WorldTransPort(curPlayer, packTransportType, mapID, posX, posY, tick, lineID)
     return
 
 #// B0 05 开始世界传送 #tagCMWorldTransfer
@@ -5110,12 +3327,11 @@
 # @param mapID 地图ID
 # @param posX 坐标X
 # @param posY 坐标Y
-# @param takeTruck 是否携带镖车
 # @param lineID 线路ID -1代表当前线
 # @param msg 切换地图携带的信息
 # @param canLock 是否可以锁定玩家(传送点不可锁定, 因为要跨地图寻路)
 #  @return: 是否在拉进度条
-def BeginTrans(curPlayer, mapID, posX, posY, takeTruck=False, lineID= -1, msg='', canLock=True, exData1=0):
+def BeginTrans(curPlayer, mapID, posX, posY, lineID= -1, msg='', canLock=True, exData1=0):
     #===========================================================================
     # if PlayerControl.IsPlayerInFight(curPlayer):
     #    #记录传送坐标, 用于进度条结束后传送
@@ -5129,7 +3345,7 @@
     #    return True
     #===========================================================================
     
-    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID, msg, canLock, exData1)
+    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY, lineID, msg, canLock, exData1)
     #PlayerControl.NotifyCode(curPlayer, "Map_Deliver_Succeed", [mapID])
     return False
 
@@ -5180,7 +3396,7 @@
     if not hasEnough:
         #道具不够默认扣钱
         costMoney = IpyGameDataPY.GetFuncCfg('TransportPay', 2)
-        if not TransportPayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, costMoney, transportType, ChConfig.GMTool_Offline_WorldTransfer):
+        if not TransportPayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, costMoney, transportType):
             GameWorld.DebugLog('    传送消耗处理 传送道具不足 itemID=%s, 钱也不够costMoney=%s'%(itemID, costMoney))
             return False
     else:
@@ -5206,7 +3422,7 @@
 #@param noteMark 记录类型
 #@return 返回值真, 扣费成功
 #@remarks 传送付费记录
-def TransportPayMoney(curPlayer, moneyType, money, transportType, noteMark):
+def TransportPayMoney(curPlayer, moneyType, money, transportType):
     moneyList = PlayerControl.HaveMoneyEx(curPlayer, moneyType, money)
     if moneyList == []:
         return False
@@ -5219,75 +3435,6 @@
                                               moneyType, money)
         
     return True
- 
-
-#//03 26 手动升级#tagCUserLVUp
-#////////////////////////////////////////////////////////////////
-#
-#class       IPY_CUserLVUp
-#{
-#private:
-#    CUserLVUp      *           m_Instance;
-#public:
-#    //初始化
-#    IPY_CUserLVUp();
-#----------------------------
-##客户端封包响应 //03 26 玩家升级请求#tagCUserLVUp
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 03 26 玩家升级请求#tagCUserLVUp
-def PlayerLvUpRequest(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #---开始升级---
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #参数填True表示手动升级 在人物达到20级以后会调用一次人物会升一级
-    playerControl.PlayerLvUp(True)
-    return
-#---------------------------------------------------------------------
-#===============================================================================
-# //03 2B 双倍经验激活/停止/查询#tagCDoubleExp
-# 
-# struct    tagCDoubleExp
-# {
-#    tagHead        Head;
-#    BYTE        Type;        //1-激活;2-停止;3-查询
-#    
-# };
-#===============================================================================
-##客户端封包响应 //03 2B 双倍经验激活/停止/查询#tagCDoubleExp
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 客户端封包响应 //03 2B 双倍经验激活/停止/查询#tagCDoubleExp
-def DoubleExpState(index, tick):
-    return
-
-## 03 31 副本玩家激活特殊技能
-#  @param index 玩家索引
-#  @param tick 时间戳
-#  @return 无返回值
-#  @remarks 副本玩家激活特殊技能
-def UseFBSpecilSkill(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    fbSkillPack = IPY_GameWorld.IPY_CFBSpecilSkill()
-    
-    useType = fbSkillPack.GetType()
-    useState = fbSkillPack.GetState()
-    
-    FBLogic.UseFBSpecilSkill(curPlayer, useType, useState, tick)
-    
-
-#---------------------------------------------------------------------
-#===============================================================================
-#//A2 05 请求兑换离线经验封包#tagPyCMOfflineExpExchange
-#struct tagPyCMOfflineExpExchange
-#{
-#    tagHead    Head;
-#    BYTE    Index;   //经验倍率索引
-#    DWORD    ExchangeTime;   //兑换时间
-#};
 
 #===============================================================================
 ##//A2 05 请求兑换离线经验封包#tagPyCMOfflineExpExchange
@@ -5370,63 +3517,6 @@
     curPlayer.Syn_OfflineTimeQueryResult() # 通知客服端离线时间
     return
 
-#------------------------------------------------------------------------------ 
-## //A0 09 购买大地图标记点# tagPyBuyMapSignPoint
-#  @param index 玩家索引
-#  @param curPackData 封包结构体
-#  @param tick 时间戳
-#  @return None
-def BuyMapSignCount(index, curPackData, tick):
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    curVipLv = curPlayer.GetVIPLv()
-#    
-#    curMapsignCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayerMapSignCnt)
-#    
-#    #if curMapsignCnt >= min(PlayerVip.GetVipCanBuyTransportPointCnt(curVipLv), ChConfig.Def_Player_MapSignPointMaxCount):
-#    #    #已经全部开通或当前vip等级只能买这么多
-#    #    return
-#    if curMapsignCnt >= ChConfig.Def_Player_MapSignPointMaxCount:
-#        #已经全部开通或当前vip等级只能买这么多
-#        return
-#    
-#    buyCountIndex = curMapsignCnt + 1
-#    buyMoneyCostDict = ReadChConfig.GetEvalChConfig("MapSignCountBuyMoney")
-#    buyMoneyList = buyMoneyCostDict.get(buyCountIndex)
-#    if buyMoneyList == None:
-#        GameWorld.ErrLog("购买大地图标识位置 = %s 在MapSignCountBuyMoney.txt表中找不到购买价格" % buyCountIndex)
-#        return
-#    
-#    buyMoney = buyMoneyList[0]  # 金钱数量
-#    buyMoneyType = buyMoneyList[1]  # 金钱类型
-#    
-#    #扣钱
-#    moneyList = PlayerControl.HaveMoneyEx(curPlayer, buyMoneyType, buyMoney)
-#    if moneyList == []:
-#        #金钱不足
-#        return
-#    
-#    for moneyType, moneyCount in moneyList:
-#        PlayerControl.PayMoney(curPlayer, moneyType, moneyCount, 'BuyMapSignCount')
-#            
-#    curMapsignCnt = PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayerMapSignCnt, buyCountIndex)
-#    
-#    #通知客户端数量
-#    OnSendMapSignCnt(curPlayer)
-    return
-
-
-## 通知大地图标记数量
-#  @param curPlayer 玩家实例
-#  @return None
-def OnSendMapSignCnt(curPlayer):
-#    curMapsignCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayerMapSignCnt)
-#    mapsignCnt = ChConfig.Def_Player_InitMapSignPointCount + curMapsignCnt
-#    
-#    mapSignPointCount = ChPyNetSendPack.tagPyMapSignPointCount()
-#    mapSignPointCount.Count = mapsignCnt
-#    NetPackCommon.SendFakePack(curPlayer, mapSignPointCount)
-    return
-
 
 #//B0 24 领取家族悬赏奖励 #tagReceiveFamilyArrestAward
 #
@@ -5502,28 +3592,6 @@
     awardReceiveState.ReceiveState = state
     NetPackCommon.SendFakePack(curPlayer, awardReceiveState)
     return
-
-
-## 查询是否还在家族的申请列表中(不在线时被拒绝了)
-#  @param curPlayer: 玩家实例
-#  @return: None 
-def QueryIsResFamily(curPlayer):
-    
-    familyIDList = []
-    for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
-        familyID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID % index)
-        if familyID == 0:
-            continue
-        
-        familyIDList.append(familyID)
-    
-    #向GameServer请求是否还在该家族申请列表中
-    sendMsg = str(familyIDList)
-    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_RequestIsFamily, curPlayer.GetID(),
-                                         'RequestIsFamily', sendMsg, len(sendMsg))
-    return
-
-#===============================================================================
 
 ## 领取奖励表奖励
 #  @param None None
@@ -6215,10 +4283,6 @@
         #                   % (dist, distSum, speed, needTick, passCalcTick, checkNeedTick), curPlayer.GetID())
         curPlayer.SetDict(MoveDistCalcTick, tick)
         curPlayer.SetDict(MoveDistSum, 0)
-        
-    #如果是小游戏中则停止小游戏
-    if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent:
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
         
     #2010/04/30 移动修改为全C++控制, Python状态机设置为空闲(清空采集等状态)
     PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
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 ec2fd78..befdb67 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -52,7 +52,6 @@
 import PlayerArena
 import PlayerFaQi
 import PlayerGuaji
-import EventShell
 
 
 # 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可
@@ -81,7 +80,6 @@
                      #ShareDefine.GameFuncID_RunFamily:lambda curObj:FBCommon.DoFuncOpen_RunFamily(curObj),
                      #ShareDefine.GameFuncID_RefineExp:lambda curObj:Operate_PlayerBuyZhenQi.DoFuncOpen_RefineExp(curObj),
                      #ShareDefine.GameFuncID_RefineMoney:lambda curObj:Operate_PlayerBuyZhenQi.DoFuncOpen_RefineMoney(curObj),
-                     #ShareDefine.GameFuncID_ArrestTask:lambda curObj:PlayerArrestTask.DoArrestTaslOpen(curObj),
 
                      }
 
@@ -154,8 +152,6 @@
         if funcID in FuncOpenLogicDict:
             FuncOpenLogicDict[funcID](curPlayer)
             
-        EventShell.EventResponse_Funcopen(curPlayer, funcID)
-        
         mailKey = ipyData.GetMailKey()
         if mailKey:
             PlayerControl.SendMailByKey(mailKey, [curPlayer.GetPlayerID()], [])
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py
index 307ba40..38d6d55 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py
@@ -31,14 +31,11 @@
 """Version = 2016-07-20 14:30"""
 #------------------------------------------------------------------------------ 
 import GameWorld
-import EventShell
 import PlayerControl
-import IPY_GameWorld
 import PlayerEventCounter
 import ChConfig
 import PlayerCoin
 import ChPlayer
-import ShareDefine
 #---------------------------------------------------------------------
 #记录玩家初始化过程中。积累的封包
 OnHourKey = 'PlayerGSInitOK_OnHourKey'
@@ -50,306 +47,8 @@
 OnWeekExKey = 'PlayerGSInitOK_OnWeekExKey'
 OnMonthExKey = 'PlayerGSInitOK_OnMonthExKey'
 #---------------------------------------------------------------------
-#记录玩家任务信息,积累的封包( 无任务ID )
-Mission_No_ID_OnLeaveFamily = 'Mission_No_ID_OnLeaveFamily'                      #离开家族触发
-Mission_No_ID_OnMemberChange = 'Mission_No_ID_OnMemberChange'                    #家族长变更
-#---------------------------------------------------------------------
-#记录玩家任务信息,积累的封包( 有任务ID )
-Mission_Have_ID_OnActive = 'Mission_Have_ID_OnActive'                            #GM开启活动
-Mission_Have_ID_OnDeActive = 'Mission_Have_ID_OnDeActive'                        #GM关闭活动
-Mission_Have_ID_OnMissionPub = 'Mission_Have_ID_OnMissionPub'                    #发布任务
-#---------------------------------------------------------------------
 #玩家离开副本
 Def_RouteServerInitOK_LeaveFBKey = 'RouteServerInitOK_LeaveFBKey'                #玩家离开副本
-#---------------------------------------------------------------------
-#class   IPY_MLeaveEvent
-#{
-#public:
-#
-#    int      GetPlayerID();
-#
-#    int      GetType();
-#};
-
-
-## GameServer通知玩家离开事件
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_LeaveEvent(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    pack = IPY_GameWorld.IPY_MLeaveEvent()
-    if curPlayer.GetID() != pack.GetPlayerID():
-        #不是自己
-        return
-    
-    EventShell.DoExitEvent(curPlayer)
-    return
-    
-#//////////////////////////////////////////////////////////////
-#//04 02 玩家扣钱#tagMPayMoney
-#tagMPayMoney       *   GettagMPayMoney();
-#
-#class   IPY_MPayMoney
-#{
-#public:
-#    //金钱类型
-#    int      GetMoneyType();
-#    //金钱
-#    int      GetMoney();
-#};
-
-
-## 付钱 04 02 玩家扣钱
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_PayMoney(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    pack = IPY_GameWorld.IPY_MPayMoney()
-    
-    if curPlayer.GetID() != pack.GetPlayerID():
-        #不是自己
-        return
-    moneyType = pack.GetMoneyType()
-    moneyNum = pack.GetMoney()
-    if moneyType == ShareDefine.TYPE_Price_Gold_Paper_Money:
-        costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, moneyNum)
-    else:
-        costMoneyList = [[moneyType, moneyNum]]
-    if not costMoneyList:
-        return
-    for moneyType, moneyCnt in costMoneyList:
-        PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_GameServer)
-    return
-    
-#//////////////////////////////////////////////////////////////
-#//01 07 经验倍率改变#tagMExpRateChange
-#tagMExpRateChange       *   GettagMExpRateChange();
-#
-#class   IPY_MExpRateChange
-#{
-#public:
-#
-#    int      GetExpRate();
-#};
-
-## 01 07 经验倍率改变
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_SetExpRate(index, tick):
-    gameServerPack = IPY_GameWorld.IPY_MExpRateChange()
-    expRate = gameServerPack.GetExpRate()
-    #---同步世界服务器经验倍率---
-    GameWorld.GetGameWorld().SetExpRate(expRate)
-    GameWorld.Log("通知地图服务器经验倍率变更 = %s"%(expRate))
-
-    #---通知全服玩家经验倍率变更---
-    playerManager = GameWorld.GetPlayerManager()
-    
-    for i in range(0, playerManager.GetActivePlayerCount()):
-        curPlayer = playerManager.GetActivePlayerByIndex(i)
-
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        
-        PlayerControl.Sync_ExpRateChange(curPlayer)
-    
-    return
-
-
-#//////////////////////////////////////////////////////////////
-#//01 08 激活活动#tagMActiveEvent
-#tagMActiveEvent       *   GettagMActiveEvent();
-#
-#class   IPY_MActiveEvent
-#{
-#public:
-#
-#    int      GetEventID();
-#    //是否激活
-#    int      GetIsActive();
-#    //是否只针对所选地图
-#    int      GetSelectMap();
-#    //地图数目
-#    int      GetMapListCount();
-#    //size = MapListCount
-#    int      GetMapList(int index);
-#};
-
-## 活动地图时当前地图
-#  @param pack 封包
-#  @return True or False
-#  @remarks 函数详细说明.
-def __IsCurrentMapInGameEventSelectMap(pack):
-    for i in range(pack.GetMapListCount()):
-        if pack.GetMapList(i) == GameWorld.GetGameWorld().GetMapID():
-            return True
-        
-    return False
-
-## 01 08 激活活动
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_ActiveEvent(index, tick):
-    pack = IPY_GameWorld.IPY_MActiveEvent()
-    
-    if pack.GetSelectMap():
-        #要选择地图的
-        if not __IsCurrentMapInGameEventSelectMap(pack):
-            return
-    
-    if pack.GetIsActive():
-        GameWorld.GetGameWorld().AddActiveEvent(pack.GetEventID())
-        __ActiveGMEvent(pack.GetEventID())
-    else:
-        __DeActiveGMEvent(pack.GetEventID())
-        GameWorld.GetGameWorld().DelActiveEvent(pack.GetEventID())
-        
-    return
-
-## 全服玩家都触发这个任务
-#  @param missionID 事件ID
-#  @return None
-#  @remarks 函数详细说明.
-def __ActiveGMEvent(missionID):
-    #全服玩家都触发这个任务
-    playerManager = GameWorld.GetPlayerManager()
-
-    for i in range(playerManager.OnlineCount()):
-        curPlayer = playerManager.OnlineAt(i)
-        if curPlayer.IsEmpty():
-            continue
-        
-        EventShell.EventResponse_OnActive(curPlayer, missionID)
-    
-    return
-
-## 全服玩家都取消这个任务
-#  @param missionID 事件ID
-#  @return None
-#  @remarks 函数详细说明.
-def __DeActiveGMEvent(missionID):
-    #全服玩家都触发这个任务
-    playerManager = GameWorld.GetPlayerManager()
-
-    for i in range(playerManager.OnlineCount()):
-        curPlayer = playerManager.OnlineAt(i)
-        if curPlayer.IsEmpty():
-            continue
-        
-        EventShell.EventResponse_OnDeActive(curPlayer, missionID)
-    
-    return
-
-#//////////////////////////////////////////////////////////////
-#//01 10 任务发布#tagMMissionPub
-#tagMMissionPub       *   GettagMMissionPub();
-#
-#class   IPY_MMissionPub
-#{
-#public:
-#    //发布任务ID
-#    int      GetMissionID();
-#    //发布类型(家族, 国家) TMissinoPubType
-#    int      GetMissinoPubType();
-#    //发布ID
-#    int      GetPubID();
-#};
-## 01 10 任务发布
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_MissionPub(index, tick):
-    pack = IPY_GameWorld.IPY_MMissionPub()
-    missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager()
-    curMissionPub = missionPubManager.AddDBMissionPub(pack.GetMissionID())
-    curMissionPub.SetMissinoPubType(pack.GetMissinoPubType())
-    curMissionPub.SetPubID(pack.GetPubID())
-    GameWorld.Log('任务发布, ID = %s'%pack.GetPubID())
-    __MissionPub(curMissionPub)
-    return
-
-## 全服玩家都触发这个任务
-#  @param curMissionPub 任务发布表
-#  @return None
-#  @remarks 函数详细说明.
-def __MissionPub(curMissionPub):
-    #全服玩家都触发这个任务
-    playerManager = GameWorld.GetPlayerManager()
-
-    for i in range(playerManager.OnlineCount()):
-        curPlayer = playerManager.OnlineAt(i)
-        if curPlayer.IsEmpty():
-            continue
-        
-        EventShell.CheckTrigMissionPub(curPlayer, curMissionPub)
-        
-    return
-
-#//////////////////////////////////////////////////////////////
-#//04 03 禁止继续掉落#tagMForbiddenDrop
-#tagMForbiddenDrop       *   GettagMForbiddenDrop();
-#
-#class   IPY_MForbiddenDrop
-#{
-#public:
-#    //是否能够继续掉落
-#    int      GetCanDrop();
-#
-#    int      GetItemID();
-#
-#    int      GetDropFunctionType();
-#};
-## 04 03 禁止继续掉落
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_ForbiddenDrop(index, tick):
-    pack = IPY_GameWorld.IPY_MForbiddenDrop()
-    itemID = pack.GetItemID()
-    functionType = pack.GetDropFunctionType()
-    gameWorld = GameWorld.GetGameWorld()
-    if pack.GetCanDrop():
-        gameWorld.DelForbiddenDrop(itemID, functionType)
-    else:
-        gameWorld.AddForbiddenDrop(itemID, functionType)
-
-    return
-
-## 清空禁止掉落物品
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_ClearForbiddenDrop(index, tick):
-    GameWorld.GetGameWorld().ClearForbiddenDrop()
-    return
-
-## GameServer通知地图服务器, 玩家保存数据到数据库
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_PlayerSave(index, tick):
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # #2009-07-04 因地图服务器有可能关闭重开,这里要判定空
-    # if not curPlayer:
-    #     return
-    
-    # # 1为保存 0为正常下线
-    # curPlayer.SetCountryLastWeekHornor(1) # 利用此字段通知为保存数据,非下线数据
-    # curPlayer.PushSaveData()
-    # curPlayer.SetCountryLastWeekHornor(0) # 利用此字段通知为保存数据,非下线数据
-    return
 
 #===============================================================================
 # //////////////////////////////////////////////////////////////
@@ -377,11 +76,6 @@
     
     #设置初始化成功
     curPlayer.SetGameServerInitOK(True)
-    
-    #触发GM开关活动
-    #EventShell.PlayerGMEventTrig(curPlayer)
-    #触发他人发布活动
-    #EventShell.PlayerMissionPubEventTrig(curPlayer)
     
     #时间缓存封包
     if Get_PlayerGameServerInitOK_OnHour(curPlayer):
@@ -416,32 +110,6 @@
         PlayerEventCounter.PlayerOnYear(curPlayer)
         Set_PlayerGameServerInitOK_OnYear(curPlayer, 0)
         
-    #无任务ID的任务缓存处理
-    #===========================================================================
-    # if Get_Mission_No_ID_OnLeaveFamily(curPlayer):
-    #    EventShell.EventResponse_OnLeaveFamily(curPlayer)
-    #    Set_Mission_No_ID_OnLeaveFamily(curPlayer, 0)
-    # 
-    # if Get_Mission_No_ID_OnMemberChange(curPlayer):
-    #    EventShell.EventResponse_OnMemberChange(curPlayer)
-    #    Set_Mission_No_ID_OnMemberChange(curPlayer, 0)
-    # 
-    # #有任务ID的任务缓存处理   
-    # if Get_Mission_Have_ID_OnActive(curPlayer):
-    #    EventShell.EventResponse_OnActive(curPlayer , Get_Mission_Have_ID_OnActive(curPlayer))
-    #    Set_Mission_Have_ID_OnActive(curPlayer, 0)
-    #    
-    # if Get_Mission_Have_ID_OnDeActive(curPlayer):
-    #    EventShell.EventResponse_OnDeActive(curPlayer , Get_Mission_Have_ID_OnDeActive(curPlayer))
-    #    Set_Mission_Have_ID_OnDeActive(curPlayer, 0)
-    # 
-    # if Get_Mission_Have_ID_OnMissionPub(curPlayer):
-    #    EventShell.EventResponse_OnMissionPub(curPlayer , Get_Mission_Have_ID_OnMissionPub(curPlayer))
-    #    Set_Mission_Have_ID_OnMissionPub(curPlayer, 0)
-    #===========================================================================
-    
-    #查询是否还在申请家族列表中
-    ChPlayer.QueryIsResFamily(curPlayer)
     #邮件
     PlayerControl.SendUnLoginOKPlayerMailCache(curPlayer)
     #刷新排行榜称号
@@ -545,97 +213,6 @@
 def Get_PlayerGameServerInitOK_OnYear(curPlayer):
     return curPlayer.GetDictByKey(OnYearKey)
 
-#---------------------------------------------------------------------
-
-## 设置离开家族触发
-#  @param curPlayer 当前玩家
-#  @param value key值
-#  @return None
-#  @remarks 函数详细说明.
-def Set_Mission_No_ID_OnLeaveFamily(curPlayer, value):
-    curPlayer.SetDict(Mission_No_ID_OnLeaveFamily, value)
-    #GameWorld.Log('Set_Mission_No_ID_OnLeaveFamily, value = %s'%( value ) , curPlayer.GetID())
-    return
-
-## 获取玩家字典 离开家族
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def Get_Mission_No_ID_OnLeaveFamily(curPlayer):
-    return curPlayer.GetDictByKey(Mission_No_ID_OnLeaveFamily)
-
-## 设置家族长变更
-#  @param curPlayer 当前玩家
-#  @param value key值
-#  @return None
-#  @remarks 函数详细说明.
-def Set_Mission_No_ID_OnMemberChange(curPlayer, value):
-    curPlayer.SetDict(Mission_No_ID_OnMemberChange, value)
-    #GameWorld.Log('Set_Mission_No_ID_OnMemberChange, value = %s'%( value ) , curPlayer.GetID())
-    return
-
-## 获取玩家字典 家族长变更
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def Get_Mission_No_ID_OnMemberChange(curPlayer):
-    return curPlayer.GetDictByKey(Mission_No_ID_OnMemberChange)
-#---------------------------------------------------------------------
-#
-## 设置GM开启活动
-#  @param curPlayer 当前玩家
-#  @param value key值
-#  @return None
-#  @remarks 函数详细说明.
-def Set_Mission_Have_ID_OnActive(curPlayer, value):
-    curPlayer.SetDict(Mission_Have_ID_OnActive, value)
-    #GameWorld.Log('Set_Mission_Have_ID_OnActive, value = %s'%( value ) , curPlayer.GetID())
-    return
-
-## 获取玩家字典 GM开启活动
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def Get_Mission_Have_ID_OnActive(curPlayer):
-    return curPlayer.GetDictByKey(Mission_Have_ID_OnActive)
-
-#GM关闭活动
-## 设置GM关闭活动
-#  @param curPlayer 当前玩家
-#  @param value key值
-#  @return None
-#  @remarks 函数详细说明.
-def Set_Mission_Have_ID_OnDeActive(curPlayer, value):
-    curPlayer.SetDict(Mission_Have_ID_OnDeActive, value)
-    #GameWorld.Log('Set_Mission_Have_ID_OnDeActive, value = %s'%( value ) , curPlayer.GetID())
-    return
-
-## 获取玩家字典 GM关闭活动
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def Get_Mission_Have_ID_OnDeActive(curPlayer):
-    return curPlayer.GetDictByKey(Mission_Have_ID_OnDeActive)
-
-#发布任务
-## 设置发布任务
-#  @param curPlayer 当前玩家
-#  @param value key值
-#  @return None
-#  @remarks 函数详细说明.
-def Set_Mission_Have_ID_OnMissionPub(curPlayer, value):
-    curPlayer.SetDict(Mission_Have_ID_OnMissionPub, value)
-    #GameWorld.Log('Set_Mission_Have_ID_OnMissionPub, value = %s'%( value ) , curPlayer.GetID())
-    return
-
-## 获取玩家字典 发布任务
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def Get_Mission_Have_ID_OnMissionPub(curPlayer):
-    return curPlayer.GetDictByKey(Mission_Have_ID_OnMissionPub)
-
-#---------------------------------------------------------------------
 #===============================================================================
 # //01 15 玩家在RouteServer初始化成功#tagPlayerRouteServerInitOK
 # structtagPlayerRouteServerInitOK
@@ -689,32 +266,6 @@
 #  @remarks 函数详细说明.
 def Get_PlayerRouteServerInitOK_OnLeaveFB(curPlayer):
     return curPlayer.GetDictByKey(Def_RouteServerInitOK_LeaveFBKey)
-
-#---------------------------------------------------------------------
-#===============================================================================
-# //04 05玩家点券兑换元宝#tagPlayerCoinToGold
-# struct    tagPlayerCoinToGold
-# {
-# tagHead    Head;
-# DWORD    PlayerID;
-# DWORD    Coin;//本次兑换的点数
-# DWORD PrizeCoin; //赠送的点数 
-# };
-#===============================================================================
-##04 05玩家点券兑换元宝#tagPlayerCoinToGold
-# @param index 玩家索引
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 客户端封包响应 04 05玩家点券兑换元宝#tagPlayerCoinToGold
-def GameServer_PlayerCoinToGold(index, tick):
-    #===========================================================================
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # pack = IPY_GameWorld.IPY_PlayerCoinToGold()
-    # if curPlayer.GetLastOrderId() == "":
-    #    return
-    # PlayerCoin.PlayerCoinToGold(curPlayer, pack, ChConfig.Def_GiveMoney_CoinToGold)
-    #===========================================================================
-    return
 
 # DB推送过来的充值信息
 def PushRecharge(index, tick):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
index 843d5e9..fd4f707 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -28,7 +28,6 @@
 import IpyGameDataPY
 import PyGameData
 import GameFuncComm
-import EventShell
 import PlayerPet
 import PlayerVip
 import datetime
@@ -316,7 +315,6 @@
     PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_Activity, addValue)
     PlayerControl.NotifyCode(curPlayer, "GetActivity", [addValue])
     SyncDailyActivityInfo(curPlayer)
-    EventShell.EventRespons_AddActivityValue(curPlayer)
     GameWorld.DebugLog("增加活跃度,addValue=%s,multiple=%s,addExtraPoint=%s,isLVUp=%s" 
                        % (addValue, multiple, addExtraPoint, isLVUp), curPlayer.GetPlayerID())
     return
@@ -347,10 +345,6 @@
             return
         updPoint = curPoint + addValue
     __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint, updPoint)
-    
-    costPoint = IpyGameDataPY.GetFuncCfg("ActivityPlace", 2) # 单次放置消耗的活跃点数
-    if updPoint >= costPoint:
-        EventShell.EventRespons_ActivityPlace(curPlayer, "canstart", True)
     return
 
 def CostActivityPoint(curPlayer, costPoint, isOnlyCheck=False):
@@ -434,7 +428,6 @@
     SyncDailyActivityInfo(curPlayer)
     GameWorld.DebugLog("领取活跃度奖励OK!awardStage=%s, index=%s,needActivity=%s,totalActivity=%s,awardRecord=%s" 
                        % (awardStage, awardIndex, needActivity, totalActivity, updAwardRecord))
-    EventShell.EventRespons_ActivityAward(curPlayer, awardIndex)
     return
 
 
@@ -723,8 +716,6 @@
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
         GameWorld.DebugLog("    没有剩余次数,更新启动时间: %s" % curTime)
         
-    EventShell.EventRespons_ActivityPlace(curPlayer, "start")
-    
     Sync_ActivityPlaceInfo(curPlayer)
     return
 
@@ -927,8 +918,6 @@
     if isQuick:
         PlayerControl.NotifyCode(curPlayer, "ActivityPlaceQuickFinishOK")
         
-    EventShell.EventRespons_ActivityPlace(curPlayer, "cangetreward")
-    
     Sync_ActivityPlaceInfo(curPlayer)
     
     PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_ActivityPlace, endCount)
@@ -962,9 +951,7 @@
     
     GameWorld.DebugLog("领取活跃放置奖励: totalCount=%s,rewardCount=%s,rewardItemCount=%s,rewardItemList=%s" % (totalCount, rewardCount, rewardItemCount, rewardItemList))
     ItemControler.GivePlayerItemOrMail(curPlayer, rewardItemList, event=["ActivityPlace", False, {}])
-
     
-    EventShell.EventRespons_ActivityPlace(curPlayer, "getreward")
     PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_ActivityPlace, rewardCount)
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_ActivityPlace, rewardCount)
     PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_ActivityPlace, rewardCount)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py
index af72d19..93d59c1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py
@@ -26,7 +26,6 @@
 import FBCommon
 import IPY_GameWorld
 import ItemControler
-import EventShell
 import PlayerActTask
 import PlayerWeekParty
 import PlayerFeastTravel
@@ -306,10 +305,6 @@
     overDict = {FBCommon.Over_itemInfo:jsonItemList, "addScore":addScore, "updScore":updScore, "curOrder":curOrder, "updOrder":updOrder}
     FBCommon.NotifyFBOver(curPlayer, ChConfig.Def_FBMapID_ArenaBattle, 0, isWin, overDict)
     Sync_ArenaInfo(curPlayer)
-    
-    # 触发任务
-    EventShell.EventRespons_ArenaBattleOver(curPlayer)
-    EventShell.EventRespons_ArenaHighestScore(curPlayer)
     
     PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Arena, 1)
     PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Arena, 1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArrestTask.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArrestTask.py
deleted file mode 100644
index 946bcbc..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArrestTask.py
+++ /dev/null
@@ -1,356 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerArrestTask
-#
-# @todo:玩家悬赏任务
-# @author xdh
-# @date 2017-07-15
-# @version 2.5
-#
-# 详细描述: 玩家悬赏任务
-#---------------------------------------------------------------------
-#"""Version = 2017-07-15 17:30"""
-#---------------------------------------------------------------------
-
-import ReadChConfig
-import ChConfig
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import GameWorld
-import ItemCommon
-import IPY_GameWorld
-import PlayerControl
-import ItemControler
-import QuestCommon
-import EventShell
-import PlayerActivity
-import GameFuncComm
-
-## OnDay
-#  @param curPlayer 玩家实例
-#  @return
-def OnDay(curPlayer):
-    #重置奖励、积分
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskAwardRecord, 0)
-    #PlayerControl.SetPlayerCurrency(curPlayer, ShareDefine.TYPE_Price_ArrestPoint, 0)
-    #设置悬赏任务次数
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskFinishCnt, 0)
-    #删除已领取的任务
-    if curPlayer.FindMission(ChConfig.Def_ArrestMissionID):
-        QuestCommon.DeleteMission(curPlayer, ChConfig.Def_ArrestMissionID)
- 
-    OnDeleteArrestTask(curPlayer)
-    return
-
-
-## OnLogin
-#  @param curPlayer 玩家实例
-#  @return
-def OnLogin(curPlayer):
-    taskData = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskData % 1)
-    if not taskData:
-        #若未刷新过则刷新任务
-        __RefreshArrestTaskNPC(curPlayer)
-    #通知客户端可接悬赏任务等级
-    Sync_ArrestTaskInfo(curPlayer)
-    return
-
-## 悬赏任务功能开启
-def DoArrestTaslOpen(curPlayer):
-    __RefreshArrestTaskNPC(curPlayer)
-    #通知客户端可接悬赏任务等级
-    Sync_ArrestTaskInfo(curPlayer)
-    return
-
-## 判断玩家悬赏任务功能是否开启
-#  @param curPlayer 玩家实例
-#  @return None
-def __IsArrestTaskFuncOpen(curPlayer):
-    # 判断玩家悬赏任务功能是否开启
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_ArrestTask):
-        return False
-    return True
-
-## 刷新悬赏任务
-def OnRefreshArrestTask(index, clientData, tick):
-    # 跨服服务器功能限制
-    if GameWorld.IsCrossServer():
-        return
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if not __IsArrestTaskFuncOpen(curPlayer):
-        GameWorld.DebugLog("OnRefreshArrestTask() 功能未开启")
-        return
-    
-    if curPlayer.FindMission(ChConfig.Def_ArrestMissionID):
-        GameWorld.DebugLog("OnRefreshArrestTask 玩家已有悬赏任务")
-        return
-    
-    if __IsArrestTaskFullCnt(curPlayer):
-        GameWorld.DebugLog("OnRefreshArrestTask 玩家今日悬赏任务次数已达上限")
-        return
-    
-    curArrestTaskStar = max(1, curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskStar))  # 当前悬赏任务星级
-    
-    arrestTaskRefreshDict = ReadChConfig.GetEvalChConfig("ArrestTaskRefresh")
-    if curArrestTaskStar not in arrestTaskRefreshDict:
-        return
-    
-    if curArrestTaskStar >= max(arrestTaskRefreshDict):
-        GameWorld.DebugLog("悬赏任务已满级!")
-        return
-    
-    refreshMoneyType = clientData.MoneyType #金钱类型
-    
-    costMoneyInfoDict = arrestTaskRefreshDict[curArrestTaskStar]
-    
-    if refreshMoneyType not in costMoneyInfoDict:
-        GameWorld.DebugLog("OnRefreshArrestTask ArrestTaskRefresh.txt 未配置该金钱类型 curArrestTaskStar=%s,refreshMoneyType=%s" % (curArrestTaskStar, refreshMoneyType))
-        return
-    
-
-    drDict = {"star":curArrestTaskStar}
-  
-   
-    upLvRate, moneyCnt, upLv, downLv = costMoneyInfoDict[refreshMoneyType]
-    
-    if not PlayerControl.HaveMoney(curPlayer, refreshMoneyType, moneyCnt):
-        return
-    
-    
-    if GameWorld.CanHappen(upLvRate, ChConfig.Def_MaxRateValue):
-        arrestTaskLv = upLv
-    else:
-        arrestTaskLv = downLv
-    
-    if arrestTaskLv <= 0 or arrestTaskLv > len(arrestTaskRefreshDict):
-        #刷新后等级错误
-        GameWorld.ErrLog("    OnRefreshArrestTask After arrestTaskLv = %s error!" % (arrestTaskLv))
-        return
-
-    drDict[ChConfig.Def_Cost_Reason_SonKey] = "Refresh"
-    PlayerControl.PayMoney(curPlayer, refreshMoneyType, moneyCnt, ChConfig.Def_Cost_RefreshArrestTask, drDict)
-    
-    #设置悬赏任务等级
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskStar, arrestTaskLv)
-    
-    #刷新任务
-    __RefreshArrestTaskNPC(curPlayer)
-        
-    #通知客户端可接悬赏任务等级
-    Sync_ArrestTaskInfo(curPlayer)
-    GameWorld.DebugLog("    刷新结果: upLvRate=%s,updTruckLv=%s,drDict=%s" 
-                       % (upLvRate, arrestTaskLv, drDict), curPlayer.GetPlayerID()) 
-    return
-
-## 刷新任务怪
-def __RefreshArrestTaskNPC(curPlayer):
-    if not __IsArrestTaskFuncOpen(curPlayer):
-        GameWorld.DebugLog("OnRefreshArrestTask() 功能未开启")
-        return
-    
-    arrestTaskRefreshDict = ReadChConfig.GetEvalChConfig("ArrestTaskRefresh")
-    needRefreshCnt = len(arrestTaskRefreshDict)
-    heroLV = curPlayer.GetLV()
-    
-    arrestTaskNPCIDDict = ReadChConfig.GetEvalChConfig("ArrestTaskNPCID")
-    arrestTaskNPCIDList = sorted(arrestTaskNPCIDDict.iteritems(), key=lambda asd:asd[1])
-
-    findNPCIDList = []
-    for npcidList, needLV in arrestTaskNPCIDList:
-
-        if heroLV < needLV:
-            #低于地图进入等级的
-            break
-        isOver = False
-        for npcID, npcCnt in npcidList:
-            if len(findNPCIDList) < needRefreshCnt -1:
-                findNPCIDList.append([npcID, npcCnt])
-            else:
-                curNPC = GameWorld.GetGameData().FindNPCDataByID(npcID)
-                NPCLV = curNPC.GetLV()
-                #GameWorld.Log('npcID=%s, NPCLV=%s'%(npcID,NPCLV))
-                findNPCIDList.append([npcID, npcCnt])
-                
-                if heroLV < NPCLV:
-                    isOver = True
-                    break
-        if isOver:
-            break
-    
-    if len(findNPCIDList) < needRefreshCnt:
-        GameWorld.DebugLog('    悬赏任务刷新 数量不足%s个, findNPCIDList=%s' % (needRefreshCnt, findNPCIDList))
-        return
-    findNPCIDList = findNPCIDList[-needRefreshCnt:]
-    
-    GameWorld.DebugLog('    悬赏任务刷新  findNPCIDList=%s' % (findNPCIDList))
-    #记录数据
-    for i, npcinfo in enumerate(findNPCIDList):
-        npcID, npcCnt = npcinfo
-        taskData = __GetArrestTaskData(npcID, npcCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskData % (i+1), taskData)
-    
-    
-    return 
-
-
-
-## 通知客户端可接悬赏任务等级
-def Sync_ArrestTaskInfo(curPlayer):
-    if not __IsArrestTaskFuncOpen(curPlayer):
-        GameWorld.DebugLog("OnRefreshArrestTask() 功能未开启")
-        return
-    arrestTaskPack = ChPyNetSendPack.tagMCArrestTaskInfo()
-    arrestTaskPack.Clear()
-    arrestTaskPack.TaskStar = max(1, curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskStar))
-    arrestTaskPack.CompleteCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskFinishCnt)
-    arrestTaskPack.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskAwardRecord)
-    
-    arrestTaskPack.TaskDataList = []
-    arrestTaskRefreshDict = ReadChConfig.GetEvalChConfig("ArrestTaskRefresh")
-    arrestTaskPack.Count = len(arrestTaskRefreshDict)
-    for i in range(len(arrestTaskRefreshDict)):
-        taskData = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskData % (i+1))
-        arrestTaskPack.TaskDataList.append(taskData)
-    NetPackCommon.SendFakePack(curPlayer, arrestTaskPack)
-    return
-
-
-## 接悬赏任务
-def OnAcceptArrestTask(curPlayer):
-    # 跨服服务器功能限制
-    if GameWorld.IsCrossServer():
-        return
-    if not __IsArrestTaskFuncOpen(curPlayer):
-        GameWorld.DebugLog("OnRefreshArrestTask() 功能未开启")
-        return
-    if curPlayer.FindMission(ChConfig.Def_ArrestMissionID):
-        GameWorld.DebugLog("OnAcceptArrestTask 玩家已有悬赏任务")
-        return
-    
-    if __IsArrestTaskFullCnt(curPlayer):
-        GameWorld.DebugLog("OnAcceptArrestTask 玩家今日悬赏任务次数已达上限")
-        return
-    
-    taskStar = max(1, curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskStar))
-    taskData = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskData % taskStar)
-    npcid = __GetArrestTaskNPCID(taskData)
-    npcCnt = __GetArrestTaskNPCCnt(taskData)
-    
-    curMission = QuestCommon.AddNewMission(curPlayer, ChConfig.Def_ArrestMissionID)
-    
-    curMission.SetProperty(QuestCommon.Def_Kill_Npc_ID, npcid)
-    curMission.SetProperty(QuestCommon.Def_Kill_Npc_ID_Count, npcCnt)
-
-    
-    QuestCommon.SetPlayerMissionState(curPlayer, curMission, 1)
-    curMission.SetMissionState(1)
-    #通知客户端
-    EventShell.NotifyOneMission(curPlayer, curMission)
-    GameWorld.DebugLog("接悬赏任务 star=%s,npcid=%s,npcCnt=%s" % (taskStar, npcid, npcCnt))
-    return
-
-##获取跑环任务奖励
-# @param curPlayer 玩家实例
-# @param curMission 任务实例
-# @param isQuick 是否一键快速完成
-# @return curExp, curMoney, pfavalue  找不到返回None
-def __GetArrestTaskReward(curPlayer, star):
-    reLV = curPlayer.GetLV()                    #参考等级
-    reExp = PlayerControl.GetPlayerReExp(curPlayer) #参考经验
-    
-    
-    ArrestTaskAwardDict = ReadChConfig.GetEvalChConfig("ArrestTaskAward")
-    curExp = eval(ArrestTaskAwardDict['Exp'])
-    curSoul = eval(ArrestTaskAwardDict['Soul'])
-    curPoint = eval(ArrestTaskAwardDict['Point'])
-    return curExp, curSoul, curPoint
-
-## 悬赏任务完成 给奖励
-def OnArrestTaskOver(curPlayer):
-    #活跃
-    #PlayerActivity.AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_ArrestMission)
-    
-    #奖励
-    curMission = curPlayer.FindMission(ChConfig.Def_ArrestMissionID)
-    taskStar = max(1, curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskStar))
-    exp, soul, point = __GetArrestTaskReward(curPlayer, taskStar)
-    
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    if exp > 0:
-        playerControl.AddExp(exp)
-    #悬赏积分
-    if point:
-        PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_ArrestPoint, point, ChConfig.Def_GiveMoney_Mission)
-    if soul:
-        PlayerControl.PlayerAddZhenQi(curPlayer, soul, True, True, "Mission", {"MissionID":ChConfig.Def_ArrestMissionID})
-    
-    
-    
-    
-    #累加次数
-    finishCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskFinishCnt)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskFinishCnt, finishCnt+1)
-    
-    GameWorld.DebugLog("悬赏任务:%d taskStar=%s, 获得经验:%d,积分=%s,灵力=%s,finishCnt=%s" 
-                       % (curMission.GetMissionID(), taskStar, exp, point, soul, finishCnt+1))
-    
-    #重置
-    OnDeleteArrestTask(curPlayer)
-    return
-
-## 放弃任务后处理
-def OnDeleteArrestTask(curPlayer):
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskStar, 1)
-    #刷新任务
-    __RefreshArrestTaskNPC(curPlayer)
-    #通知客户端可接悬赏任务等级
-    Sync_ArrestTaskInfo(curPlayer)
-    return
-
-## 悬赏任务今日次数是否已满
-def __IsArrestTaskFullCnt(curPlayer):
-    finishCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskFinishCnt)
-    return finishCnt >= ReadChConfig.GetEvalChConfig("ArrestTaskMaxCnt")
-
-
-## 领取悬赏积分奖励
-def OnGetArrestPointAward(curPlayer, scoreIndex):
-    arrestPointPrizeList = ReadChConfig.GetEvalChConfig("ArrestPointPrize")
-    if scoreIndex < 0 or scoreIndex >= len(arrestPointPrizeList):
-        return
-    needScore, awardItemList = arrestPointPrizeList[scoreIndex]
-    curScore = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_ArrestPoint)
-    if curScore < needScore:
-        GameWorld.DebugLog('    领取悬赏积分奖励, 积分不足,curScore=%s,needScore=%s' % (curScore, needScore))
-        return
-    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ArrestTaskAwardRecord)
-    if awardRecord & pow(2, scoreIndex):
-        GameWorld.DebugLog('    领取悬赏积分奖励, 已领取过,scoreIndex=%s' % (scoreIndex))
-        return
-    
-    emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
-    if emptySpace < len(awardItemList):
-        return
-    
-    for itemID, itemCnt, isBind in awardItemList:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere])
-    
-    #更新记录
-    awardRecord |= pow(2, scoreIndex)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ArrestTaskAwardRecord, awardRecord)
-    
-    Sync_ArrestTaskInfo(curPlayer)
-    return
-
-
-## 获取悬赏任务数据 
-def __GetArrestTaskData(npcid, npcCnt):return npcid + npcCnt * 100000
-def __GetArrestTaskNPCID(taskData):return taskData % 100000
-def __GetArrestTaskNPCCnt(taskData):return taskData / 100000
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
index 5c33078..d993595 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
@@ -25,7 +25,6 @@
 import ChConfig
 import ShareDefine
 import PlayerActivity
-import EventShell
 import NPCCommon
 
 import random
@@ -196,9 +195,6 @@
         
         #扣物品
         if curPlayer and not familyID:
-            EventShell.EventRespons_AddAuction(curPlayer)
-            if ItemCommon.CheckItemIsEquip(curItem):
-                EventShell.EventRespons_AddAuctionEquip(curPlayer, curItem.GetItemColor())
             sellCount = itemInfo[1] if len(itemInfo) == 2 else 0
             if sellCount <= 0:
                 sellCount = curItem.GetCount()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBattle.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBattle.py
index 5feff75..4876ac8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBattle.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBattle.py
@@ -21,11 +21,9 @@
 #---------------------------------------------------------------------
 import IPY_GameWorld
 import GameWorld
-import NPCCommon
 import PlayerControl
 import PlayerState
 import ChConfig
-#import PlayerGameEvent
 import BaseAttack
 import OperControlManager
 import GameObj
@@ -109,10 +107,6 @@
     #    PlayerControl.NotifyCode(curPlayer, "CannotAtk05")
     #    return
     #===========================================================================
-    
-    if vehicle == IPY_GameWorld.pvTruck:
-        PlayerControl.NotifyCode(curPlayer, "CannotAtk06")
-        return
     
     sendPack = IPY_GameWorld.IPY_CPlayerBaseAttack()
     sendPackObjID = sendPack.GetObjID()
@@ -264,10 +258,6 @@
 #    #判断是否敌对关系
 #    if relation[0] != ChConfig.Type_Relation_Enemy :
 #        return
-#    
-#    #跳舞钓鱼打断
-#    if curPlayerAction == IPY_GameWorld.paGameEvent:
-#        PlayerGameEvent.StopGameEvent(curPlayer, tick)
 #    
 #    #进度条打断
 #    elif curPlayerAction == IPY_GameWorld.paPreparing:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py
index 4d30f4b..ef25341 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBourseTube.py
@@ -31,7 +31,6 @@
 import PlayerVip
 import PlayerSuccess
 import IpyGameDataPY
-import EventShell
 
 #------------------------------------------------------------------------------ 
 #// B5 01 交易所玩家上架物品#tagCMPYPlayerSellBourseItem
@@ -151,9 +150,6 @@
     ItemCommon.DelItem(curPlayer, curItem, curPackData.Count, True, ChConfig.ItemDel_AddBourseItem, isForceDR=True)
     
     GameWorld.DebugLog('Bourse### GMCheckAddPlayerBourseItemResult out  1 ItemGUID=%s'%sendPack.ItemGUID)
-    
-    #上架物品任务接口
-    EventShell.EventRespons_AddBourseItem(curPlayer)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
deleted file mode 100644
index bdaae0f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCompensationTube.py
+++ /dev/null
@@ -1,245 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package PlayerCompensationTube.py
-#
-# @todo:GM补偿管理 地图处理
-#
-# @author xmnathan
-# @date 2010-01-01 10:00
-# @version 1.4
-# @note:
-# @change: "2014-09-29 13:00" xmnathan GM补偿管理
-# @change: "2014-11-05 10:50" xmnathan 领取失败也回包GameServer,用于重置领取状态
-# @change: "2016-07-25 22:00" hxp 增加领取邮件事件汇报
-# @change: "2017-05-04 12:00" hxp 增加符印虚拟背包支持
-#------------------------------------------------------------------------------ 
-#"""Version = 2017-05-04 12:00"""
-#------------------------------------------------------------------------------ 
-import IPY_GameWorld
-import GameWorld
-import ShareDefine
-import ChPyNetSendPack
-import NetPackCommon
-import ItemCommon
-import ItemControler
-import ChMapToGamePyPack
-import ReadChConfig
-import EventReport
-import ChConfig
-import PlayerControl
-import IpyGameDataPY
-import PlayerSuccess
-import EventShell
-
-import time
-
-##A5 3B 请求领取补偿#tagCMRequestCompensation
-#  @param index, clientPack, tick
-#  @return None
-def OnCMRequestCompensation(index, clientPack, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    if not curPlayer:
-        return
-    GameWorld.DebugLog("#OnCMRequestCompensation in, PlayerID %s GUID %s"%(curPlayer.GetPlayerID(), clientPack.GUID))
-    #背包没位置
-    itemPackSpace = ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
-
-    #发送相关数据
-    sendPack = ChMapToGamePyPack.tagMGRequestCompensation()
-    sendPack.GUID = clientPack.GUID
-    sendPack.PlayerID = curPlayer.GetPlayerID()
-    sendPack.PackSpaceCount = itemPackSpace
-    NetPackCommon.SendPyPackToGameServer(sendPack)
-    return
-
-
-##03 02 玩家领取补偿结果#tagGMRequestCompensationResult
-#  @param curPackData, tick
-#  @return None
-def OnGMRequestCompensationResult(curPackData, tick):
-    GameWorld.DebugLog("OnGMRequestCompensationResult in")
-    
-    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)
-    if not curPlayer:
-        #发送相关数据  回报补偿发放结果
-        sendPack = ChMapToGamePyPack.tagMGGiveCompensationResult()
-        sendPack.GUID = curPackData.GUID
-        sendPack.PlayerID = curPackData.PlayerID
-        sendPack.CompensationType = curPackData.CompensationType
-        sendPack.Result = 0
-        NetPackCommon.SendPyPackToGameServer(sendPack)
-        GameWorld.DebugLog("    PlayerID %s no found "%curPackData.PlayerID)
-        return
-    
-    hasAuctionItem = False
-    needPackSpaceDict = {}
-    isPackSpaceEnough = True
-    # 先汇总物品所属背包
-    for i in xrange(curPackData.Count):
-        curPackItem = curPackData.Items[i]
-        itemID = curPackItem.ItemID
-        curItemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
-        if not curItemData:
-            continue
-        
-        isAuctionItem = curPackItem.IsBind
-        packType = ChConfig.GetItemPackType(curItemData)
-        needSpace = ItemControler.GetItemNeedPackCount(packType, curItemData, curPackItem.Count, isAuctionItem)
-        needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace
-        if isAuctionItem:
-            hasAuctionItem = True
-            
-    GameWorld.DebugLog("    hasAuctionItem=%s,needPackSpaceDict=%s" % (hasAuctionItem, needPackSpaceDict))
-    for packType, needSpace in needPackSpaceDict.items():
-        if needSpace > ItemCommon.GetItemPackSpace(curPlayer, packType, needSpace):
-            PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [packType])
-            isPackSpaceEnough = False
-            break
-        
-    auctionItemTimeout = False
-    auctionItemCreateTime = 0
-    # 20201223 主干取消拍品有效时长设定
-#    if hasAuctionItem:
-#        auctionItemValidTimesMax = IpyGameDataPY.GetFuncCfg("AuctionItem", 1) * 3600 # 拍品有效时长
-#        auctionItemValidTimesMail = IpyGameDataPY.GetFuncCfg("AuctionItem", 2) * 3600 # 邮件拍品附加有效时长
-#        auctionItemValidTimesTotal = auctionItemValidTimesMail + auctionItemValidTimesMax
-#        mailCreateTimeStr = curPackData.CreateTime
-#        mailCreateTime = GameWorld.ChangeTimeStrToNum(mailCreateTimeStr)
-#        curTime = int(time.time())
-#        passTime = curTime - mailCreateTime
-#        if passTime <= auctionItemValidTimesMail:
-#            GameWorld.DebugLog("邮件拍品领取时间在附加保护时长内,拍品创建时间即领取邮件时间开始算!passTime(%s) <= auctionItemValidTimesMail(%s)" % (passTime, auctionItemValidTimesMail))
-#            pass
-#        elif auctionItemValidTimesMail < passTime < auctionItemValidTimesTotal:
-#            auctionItemCreateTime = curTime - (passTime - auctionItemValidTimesMail)
-#            GameWorld.DebugLog("邮件拍品领取时间超过邮件保护时间,拍品创建时间需扣除领取时的溢出时间!auctionItemValidTimesMail(%s) < passTime(%s) < auctionItemValidTimesTotal(%s), auctionItemCreateTime=%s" 
-#                               % (auctionItemValidTimesMail, passTime, auctionItemValidTimesTotal, GameWorld.ChangeTimeNumToStr(auctionItemCreateTime)))
-#        elif passTime >= auctionItemValidTimesMax:
-#            auctionItemTimeout = True
-#            GameWorld.DebugLog("邮件中的拍品已过期,将自动转为非拍品!passTime(%s) >= auctionItemValidTimesMax(%s)" 
-#                               % (passTime, auctionItemValidTimesMax))
-            
-    #背包空间不足
-    if not isPackSpaceEnough:
-        GameWorld.DebugLog("    itemPack no space")
-        sendMCPack = ChPyNetSendPack.tagMCGiveCompensationResult()
-        sendMCPack.GUID = curPackData.GUID
-        sendMCPack.Result = 0
-        NetPackCommon.SendFakePack(curPlayer, sendMCPack)
-        #发送相关数据  回报补偿发放结果
-        sendPack = ChMapToGamePyPack.tagMGGiveCompensationResult()
-        sendPack.GUID = curPackData.GUID
-        sendPack.PlayerID = curPackData.PlayerID
-        sendPack.CompensationType = curPackData.CompensationType
-        sendPack.Result = 0
-        NetPackCommon.SendPyPackToGameServer(sendPack)
-        return
-    
-    Text = curPackData.Text
-    contentList = Text.split("<$_$>")
-    content = contentList[2] if len(contentList) > 2 else ""
-    isPaimaiMail = "<MailTemplate>PaimaiMail3</MailTemplate>" in content
-    
-    for i in xrange(curPackData.Count):
-        curPackItem = curPackData.Items[i]
-        itemID = curPackItem.ItemID
-        itemCount = curPackItem.Count
-        isAuctionItem = curPackItem.IsBind and not auctionItemTimeout
-        for _ in range(itemCount/65535+1):
-            if itemCount <= 0:
-                break
-            if ItemControler.GetAppointItemRealID(itemID):
-                curCreateItem = ItemControler.GetItemByData(ItemControler.GetAppointItemDictData(itemID, isAuctionItem))
-            else:
-                curCreateItem = ItemCommon.CreateSingleItem(itemID, itemCount, isAuctionItem)
-            if not curCreateItem:
-                GameWorld.ErrLog("OnGMRequestCompensationResult CreateSingleItem %s Err "%itemID)
-                continue
-            giveCount = ItemControler.GetItemCount(curCreateItem)
-            itemCount -= giveCount
-            ##UserData包含了追加属性不完整,这里需要补齐
-            userDataCreateTime = 0
-            if curPackItem.UserDataLen: 
-                UserDataDict = eval(curPackItem.UserData)
-                ItemCommon.SetItemUserData(curCreateItem, UserDataDict)
-                userDataCreateTime = curCreateItem.GetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
-                
-            if isAuctionItem and auctionItemCreateTime and not userDataCreateTime:
-                curCreateItem.SetUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime, auctionItemCreateTime)
-                
-            ItemCommon.MakeEquipGS(curCreateItem)
-            
-            if isPaimaiMail:
-                EventShell.EventRespons_BuyAuction(curPlayer)
-                if ItemCommon.CheckItemIsEquip(curCreateItem):
-                    EventShell.EventRespons_BuyAuctionEquip(curPlayer, curCreateItem.GetItemColor())
-                
-            #放入玩家背包
-            ItemControler.PlayerItemControler(curPlayer).PutInItem(IPY_GameWorld.rptItem, curCreateItem, 
-                                                                   event=[ChConfig.ItemGive_Mail, False, {"MailGUID":curPackData.GUID}])
-    moneySource = curPackData.MoneySource + ChConfig.Def_GiveMoney_Unknown # 存值时为byte类型,使用时需还原回来
-    if curPackData.Gold != 0:
-        PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, curPackData.Gold, moneySource)
-    
-    if curPackData.GoldPaper != 0:
-        PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, curPackData.GoldPaper, moneySource)
-    
-    if curPackData.Silver != 0:
-        PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, curPackData.Silver, moneySource)
-    
-    #发送相关数据  回报补偿发放结果
-    sendPack = ChMapToGamePyPack.tagMGGiveCompensationResult()
-    sendPack.GUID = curPackData.GUID
-    sendPack.PlayerID = curPackData.PlayerID
-    sendPack.CompensationType = curPackData.CompensationType
-    sendPack.Result = 1
-    NetPackCommon.SendPyPackToGameServer(sendPack)
-    #告诉客户端补偿已领取
-    sendMCPack = ChPyNetSendPack.tagMCGiveCompensationResult()
-    sendMCPack.GUID = curPackData.GUID
-    sendMCPack.Result = 1
-    NetPackCommon.SendFakePack(curPlayer, sendMCPack)
-    
-    #<MailTemplate>模板编号</MailTemplate>[%s,%s]
-    lSign, rSign = "<MailTemplate>", "</MailTemplate>"
-    if lSign in content and rSign in content:
-        mailKey = content[content.index(lSign) + len(lSign):content.index(rSign)]
-        try:
-            mailParamList = eval(content[content.index(rSign) + len(rSign):])
-        except:
-            mailParamList = []
-        if mailKey in ["CrossBattlefieldEnterOrderWeek", "CrossBattlefieldCallOrderWeek", "CrossBattlefieldScoreOrderWeek"]:
-            GameWorld.DebugLog("古神战场周榜邮件处理成就: mailKey=%s,mailParamList=%s" % (mailKey, mailParamList), curPlayer.GetPlayerID())
-            if mailParamList and mailParamList[0] == 1:
-                PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_BillFirst, 1)
-            PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Battlefield_BillIn, 1)
-            
-    #===========================================================================
-    # #领取补偿事件记录
-    # Text = curPackData.Text
-    # #%s<$_$>%s
-    # sender, title, content = Text.split("<$_$>")
-    # #<MailTemplate>模板编号</MailTemplate>[%s,%s]
-    # if "</MailTemplate>" in content:
-    #    mailContentList = content.split("</MailTemplate>")
-    #    mailTemplateNO = GameWorld.ToIntDef(mailContentList[0][14:], None)
-    #    EventMailInfo = ReadChConfig.GetEvalChConfig("EventMailInfo")
-    #    if mailTemplateNO not in EventMailInfo:
-    #        return
-    #    title, content = EventMailInfo[mailTemplateNO]
-    #    
-    #    mailParamStr = mailContentList[1]
-    #    mailParamStr = mailParamStr.replace(" ", "")
-    #    if mailParamStr.startswith("[") and mailParamStr.endswith("]") and len(mailParamStr) > 2:
-    #        content = content % tuple(eval(mailParamStr))
-    #    
-    # comments = "%s: %s, %s; %s" % (title, curPackData.GUID, eventItemInfo, content)
-    # EventReport.WriteEvent_custom_events(curPlayer, EventReport.Def_Custom_Events_GetMail, comments)
-    #===========================================================================
-    return
-
-
-
-
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 170cc32..e1bc3fc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -17,11 +17,8 @@
 import ChEquip
 import SkillShell
 import ChConfig
-import EventShell
 import EffGetSet
 import PlayerHorse
-import PlayerTruck
-import PlayerTrade
 import PlayerTeam
 import SkillCommon
 import MirrorAttack
@@ -31,7 +28,6 @@
 import NPCCommon
 import ItemCommon
 import ReadChConfig
-import PlayerGMOper
 import BuffSkill
 import PetControl
 import OperControlManager
@@ -58,7 +54,6 @@
 import PlayerActivity
 import FBCommon
 import PassiveBuffEffMng
-import PlayerGameEvent
 import EventReport
 import PlayerGatherSoul
 import PlayerGatherTheSoul
@@ -96,7 +91,6 @@
 import PlayerCoat
 import PlayerAssist
 import PlayerState
-import QuestCommon
 import PlayerDogz
 import PlayerFaQi
 import PlayerLove
@@ -618,35 +612,9 @@
     if GameObj.GetHP(curPlayer) <= 0:
         return False
     
-#    if curPlayer.GetPKValue() > 0:
-#        #PK_lhs_161795
-#        NotifyCode(curPlayer, "PK_lhs_161795")
-#        return False
-    
     #检查玩家状态
     if not CheckTransState(curPlayer):
         return False
-    
-#    #眩晕时,不可传送
-#    if curPlayer.GetAbnormalState() == IPY_GameWorld.sctFaint:
-#        return False
-    
-    #=========================================================================================================
-    # #拉镖车中,人不在镖车中也不能传送
-    # if curPlayer.GetTruck() != None:
-    #    NotifyCode(curPlayer, "HaveTruck_No_Trans")
-    #    return False
-    #=========================================================================================================
-    
-#    #被攻击时候, 无法使用
-#    if curPlayer.IsBattleState():
-#        NotifyCode(curPlayer, "CannotAtk09")
-#        return False
-#    
-#    #对峙中, 无法使用
-#    if curPlayer.GetIsConfronting():
-#        NotifyCode(curPlayer, "CannotAtk09")
-#        return False
     
     #检查玩家是否在普通地图
     if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
@@ -806,6 +774,13 @@
     #GameWorld.DebugLog("receiveState = %s, state = %s" % (receiveState, state))
     return state != 0
 
+## 清除py自定义状态
+#  @param curPlayer 玩家实例
+#  @return 返回值无意义
+def ClearPyPlayerAction(curPlayer):
+    #清除py自定义状态
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PyPlayerAction, 0)      
+    return
 
 #---------------------------------------------------------------------
 ##设置玩家是否激活
@@ -1108,98 +1083,6 @@
     __FixPlayerPos(checkObj, posX, posY, needResetPos, canChangeClientPos)
 
     return True
-#    curPlayer.SetMoveCount(curPlayer.GetMoveCount() + 1)
-#    
-#    #Def_PlayerMoveCheckClearCount:
-#    #玩家移动多少次清空这个累计错误        
-#    if curPlayer.GetMoveCount() >= ReadChConfig.GetEvalChConfig('Def_PlayerMoveCheckClearCount'):
-#        curPlayer.SetMoveCount(0)
-#        curPlayer.SetMoveDistDiff(0)
-#    
-#    #距离(起点-客户端位置-服务器端位置-终点)
-#    severDist = GameWorld.GetDist(objPosX, objPosY, objDestPosX, objDestPosY)
-#    severTotalDist = GameWorld.GetDist(objStartX, objStartY, objDestPosX, objDestPosY)
-#    clientDist = GameWorld.GetDist(posX, posY, objDestPosX, objDestPosY)
-#    
-#    clientSlow = False
-#    
-#    if clientDist >= severDist and clientDist <= severTotalDist:
-#        #方向
-#        severDir = GameWorld.GetAngle(objStartX, objStartY, objDestPosX, objDestPosY) 
-#        clientDir = GameWorld.GetAngle(posX, posY, objDestPosX, objDestPosY)
-#    
-#        clientSlow = True    
-##===============================================================================
-##        #2011-1-19 此种情况也要计算误差
-##        #如果角度差别10度, 则认为可以接受
-##        dirDiff = 10
-##        dirDiffValue = abs(severDir - clientDir)
-##        
-##        if dirDiffValue <= dirDiff:
-##            #第二种情况:服务器比客户端快
-##            #可以接受
-##            __FixPlayerPos(checkObj, posX, posY, needResetPos, canChangeClientPos)
-##            return True
-##===============================================================================
-#    #服务器比客户端慢#ChConfig.Def_AcceptPlayerStopPlaceDist:
-#    if dist > ReadChConfig.GetEvalChConfig('Def_AcceptPlayerStopPlaceDist'):
-#        return False
-#        #踢玩家下线
-#        if clientSlow:
-#            GameWorld.ErrLog("超大误差, 客户端比服务器慢 %d" % dist, curPlayer.GetPlayerID())
-#        else:
-#            GameWorld.ErrLog("超大误差, 服务器比客户端慢 %d" % dist, curPlayer.GetPlayerID())
-#            #服务器端比客户端慢可以接受
-#            return False
-#        
-#        #GameWorld.GodLog(curPlayer, '超大误差, 暂不处理, clientSlow = %s, dist = %s'%(clientSlow, dist))
-#        
-#        #超大误差封停账号时间
-#        closeAccIDTime = ReadChConfig.GetEvalChConfig('Def_BigErrorDistCloseAccTime')
-#    
-#        if closeAccIDTime > 0:
-#            #超大误差封停玩家
-#            PlayerGMOper.ClosePlayerByAccID(curPlayer, closeAccIDTime, 'BigErrorDist = %s Kick' % (dist))
-#        else:
-#            #超大误差踢出玩家
-#            curPlayer.Kick(IPY_GameWorld.disPlayerMoveToFar)
-#    
-#        return False
-#    
-#    #停止位置可接受,当需记录
-#    curMoveDistDiff = curPlayer.GetMoveDistDiff() + dist
-#    curPlayer.SetMoveDistDiff(curMoveDistDiff)
-#    
-#    #新增移动坐标差值Debug提示信息,方便客户端查询
-#    GameWorld.GodLog(curPlayer, 'Client=(%s,%s), Server=(%s,%s), 累加距离=%s, 累加总值=%s' \
-#                     % (posX, posY, objPosX, objPosY, dist, curPlayer.GetMoveDistDiff()))
-#    
-#    #玩家移动100次检查一次
-#    if curPlayer.GetMoveCount() >= ReadChConfig.GetEvalChConfig('Def_PlayerMoveCheckCount'):
-#        maxMoveDistDiff = ReadChConfig.GetEvalChConfig('Def_PlayerMoveCheckDist')
-#        #2009/07/15 因副本拉人瞬间距离过大,副本判定距离双倍
-#        if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
-#            maxMoveDistDiff = maxMoveDistDiff * 2
-#        
-#        if curMoveDistDiff >= maxMoveDistDiff:
-#            return False
-#            GameWorld.Log("玩家移动错误次数 = %s, 移动累计距离 = %s, 踢玩家下线" \
-#                          % (curPlayer.GetMoveCount(), curMoveDistDiff), curPlayer.GetPlayerID())
-#            
-#            closeAccIDTime = ReadChConfig.GetEvalChConfig('Def_MoveDistErrorCloseAccTime')
-#            
-#            if closeAccIDTime > 0:
-#                PlayerGMOper.ClosePlayerByAccID(curPlayer, closeAccIDTime, 'MoveCheckKick, ErrDist = %s' \
-#                                                % (curMoveDistDiff))
-#            else:
-#                curPlayer.Kick(IPY_GameWorld.disPlayerMoveAddUpError)
-#
-#            return False
-#
-#    #第3种情况:记录并矫正坐标
-#    __FixPlayerPos(checkObj, posX, posY, needResetPos, canChangeClientPos)
-#    return True
-
 #---------------------------------------------------------------------
 ##矫正玩家坐标
 # @param checkObj 检查的对象
@@ -1282,21 +1165,6 @@
 
 #------------------------------玩家离开服务器的逻辑------------------------------------
 #---------------------------------------------------------------------
-##镖车下线逻辑
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks 镖车下线逻辑
-def __TruckPlayerDisconnect(curPlayer):
-    return
-
-    #在镖车
-    if PlayerTruck.GetHaveAutoTruck(curPlayer):
-        curPlayerTruck = curPlayer.GetTruck()
-        curPlayerTruck.SetOwner(None)
-        PlayerTruck.PlayerTruckDown(curPlayer, curPlayerTruck)
-        
-    return
-#---------------------------------------------------------------------
 ##骑马下线逻辑
 # @param curPlayer 玩家实例
 # @return 返回值无意义
@@ -1317,29 +1185,15 @@
 def __PlayerLeaveServerLogic(curPlayer, tick, isDisconnect):
     #给予玩家补偿
     #PlayerExpiation.GivePlayerExpiation(curPlayer, tick)
-    
-    #运行离线xml
-    EventShell.EventResponse_OnLeaveMap(curPlayer)
-    
-    #如果玩家有骠车, 把骠车的主人设置为None
-    curPlayerTruck = curPlayer.GetTruck()
-    
-    if curPlayerTruck != None:
-        curPlayerTruck.SetOwner(None)
 
     #刷新技能剩余时间
     SkillCommon.RefreshAllSkillRemainTime(curPlayer, tick)
-    
-    #如果在交易状态,取消交易双方的交易状态并解除交易栏中物品锁定状态
-    PlayerTrade.LeaveTrade(curPlayer, 0)
     
     #队伍玩家退出地图
     PlayerTeam.TeamPlayerLeaveMap(curPlayer, tick, isDisconnect)
 
     #退出采集
     NPCCommon.ClearCollectNPC(curPlayer)
-    #结束事件
-    EventShell.DoExitEvent(curPlayer)
 
     #设置玩家的地图位置, 如果是副本, 离开副本
 #    副本规则:
@@ -1499,8 +1353,6 @@
     __PlayerLeaveServerLogic(curPlayer, tick, True)
     #骑马玩家下线逻辑
     __RidingHorsePlayerDisconnect(curPlayer)
-    #镖车下线逻辑
-    __TruckPlayerDisconnect(curPlayer)
     #召唤兽死亡
     KillPlayerSummonNPC(curPlayer)
     #更新从本地图离线信息
@@ -1556,34 +1408,6 @@
     NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_DelPackIndex, 0)
     return
 
-
-##切换地图镖车设定
-# @param curPlayer 玩家实例
-# @return 返回值真,可以带上镖车切换地图
-# @remarks 切换地图镖车设定
-def __GetCanChangeMapSetTruck(curPlayer):
-    curTruck = curPlayer.GetTruck()
-    #GameWorld.Log("玩家 骠车 切换地图逻辑")
-    if curTruck == None:
-        #GameWorld.Log("玩家 没有 骠车")
-        return False
-    
-    dist = GameWorld.GetDist(curTruck.GetPosX(), curTruck.GetPosY(),
-                             curPlayer.GetPosX(), curPlayer.GetPosY())
-    if dist > ChConfig.Def_PlayerTruckEventDist:
-        #GameWorld.Log("玩家和骠车距离过远, 骠车不切换  %d" %dist)
-        return False
-    
-#    #玩家下骠车
-#    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck :
-#        PlayerTruck.PlayerTruckDown(curPlayer,curTruck)
-    #GameWorld.Log("玩家和骠车一起切换地图")
-    #1. 在对方地图创建骠车
-    #curTruck.ResetWorldPos(mapID, targetPosX, targetPosY)
-    #2. 消失本地图骠车
-    
-    return True
-
 #---------------------------------------------------------------------
 ##玩家开始切换地图
 # @param curPlayer 玩家实例
@@ -1592,22 +1416,6 @@
 # @remarks 玩家开始切换地图
 def DoPlayerResetWorldPos(curPlayer, tick):
     NotifyStartChangeMap(curPlayer) # 通知开始切换地图
-    #在此函数中不可中断, 一定要调用DoResetWorldPosAndClear函数
-    #否则, 会在BalanceServer中卡住
-    takeTruck = curPlayer.GetChangeMapTakeTruck()
-    
-    #如果有骠车, 带上骠车
-    if takeTruck == True:
-        if not __GetCanChangeMapSetTruck(curPlayer):
-            takeTruck = False
-            
-    #如果不让带骠车, 并且玩家在人镖合一状态, 那么让玩家下车
-    if takeTruck == False and curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
-        curTruck = curPlayer.GetTruck()
-        if curTruck:
-            PlayerTruck.PlayerTruckDown(curPlayer, curTruck)
-        
-    curPlayer.SetChangeMapTakeTruck(takeTruck)
     
     #离开地图服务器
     __PlayerLeaveServerLogic(curPlayer, tick, False)
@@ -1622,25 +1430,6 @@
     while curPlayer.GetSummonCount():
         summonNPC = curPlayer.GetSummonNPCAt(0)
         NPCCommon.SetDeadEx(summonNPC)
-
-#    summonIndex = 0
-#    while summonIndex < curPlayer.GetSummonCount():
-#        summonNPC = curPlayer.GetSummonNPCAt(summonIndex)
-#        
-#        #2009.4.21, 如果召唤兽的速度为0, 代表这个召唤兽为杖子
-#        #切换地图不可带过去
-#        #之前用硬判定的
-#        if summonNPC.GetSpeed() == 0:
-#            #切换地图不能带过去
-#            NPCCommon.SetDeadEx(summonNPC)
-#            continue
-#            
-#        #切换地图可以带过去 , 清空召唤兽仇恨,伤血列表
-#        summonNPCControl = NPCCommon.NPCControl(summonNPC)
-#        summonNPCControl.ClearNPCAngry()
-#        summonNPCControl.ClearNPCHurtList()
-#        summonList.append(summonNPC)
-#        summonIndex += 1
         
     changeMapID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ChangeMapID)
     # 更新最后一次离开的非中立常规地图, 从中立地图退出时需要回到该地方,必须在 DoResetWorldPosAndClear 之前更新
@@ -1678,18 +1467,6 @@
             
     #2. 调用切换地图接口
     curPlayer.DoResetWorldPosAndClear()
-    
-    #3. 玩家已经传送过去了, 删除这个玩家的附加召唤兽(骠车, 或者黄泉使者)
-    #for curSummon in summonList:
-    #    NPCCommon.SetDeadEx(curSummon)
-        
-    if takeTruck == True:
-        curTruck = curPlayer.GetTruck()
-        
-        if curTruck != None:
-            curPlayer.SetTruck(None)
-            curTruck.Disappear()
-            
     return
 
 #---------------------------------------------------------------------
@@ -1773,7 +1550,7 @@
     #    ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
     #===============================================================================================
     
-    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, False, lineID, funcLineID=funcLineID, enterFBFree=enterFBFree)
+    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, lineID, funcLineID=funcLineID, enterFBFree=enterFBFree)
     
     #在空闲或者移动状态下,才能锁死玩家
     if curPlayer.GetPlayerAction() in [IPY_GameWorld.paNull] or curPlayer.IsMoving():
@@ -1897,12 +1674,6 @@
         
         posX, posY = retPos
         
-    #===============================================================================================
-    # if not EventShell.DoLogic_EnterFbGameEvent(curPlayer, mapID, tick):
-    #    GameWorld.Log("DoLogic_EnterFbGameEvent False!mapID=%s,lineID=%s" % (mapID, lineID))
-    #    return 
-    #===============================================================================================
-    
     if curPlayer.IsMoving():
         curPlayer.StopMove()
     
@@ -1922,7 +1693,6 @@
             # 新手线路特殊处理,直接进入
             if lineID in newbielineList:
                 GameWorld.DebugLog("封魔坛虚拟线路只能通过自定义场景进入挑战!")
-                #PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, False, fbID, funcLineID=lineID)
                 return
             else:
                 bossID = GameLogic_SealDemon.CurFBLineBOSSID(lineID)
@@ -1946,7 +1716,7 @@
         SendToGameServerEnterFB(curPlayer, mapID, lineID, tick, extendParamList)
         return
     
-    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, False, fbID, funcLineID=lineID)
+    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, fbID, funcLineID=lineID)
     return
 
 ##发送到GameServer请求进入副本
@@ -2053,21 +1823,6 @@
                 NotifyCode(curPlayer, "Carry_lhs_697674")
             return ShareDefine.EntFBAskRet_Other
         
-    #移动中不执行此操作
-#    if curPlayer.IsMoving():
-#        #NotifyCode(curPlayer, "GeRen_lhs_0")
-#        return False
-
-#    #拉镖中无法传送到副本
-#    if curPlayer.GetTruck():
-#        #NotifyCode(curPlayer, "Convey_Duplicate_Lost01")
-#        return False
-
-    #战斗状态中无法传送到副本
-    #if curPlayer.IsBattleState():
-    #    NotifyCode(curPlayer, "Carry_lhs_202580")
-    #    return False
-
     #当前地图不是普通地图
     if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
         canFBMoveToOther = False
@@ -2156,14 +1911,13 @@
 # @param mapID 地图ID
 # @param posX 坐标X
 # @param posY 坐标Y
-# @param takeTruck 是否带镖车
 # @param FBID 副本ID, 虚拟线路ID
 # @param msg 携待信息
 # @param canLock 是否锁定玩家
 # @param funcLineID 副本功能线路ID,由前端请求
 # @return 返回值无意义
 # @remarks 玩家切换到指定副本ID
-def PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, takeTruck, fbID=0, msg='', canLock=True, funcLineID=0, enterFBFree=False):
+def PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, fbID=0, msg='', canLock=True, funcLineID=0, enterFBFree=False):
     '''
     参数说明:
         @param fbID:
@@ -2185,8 +1939,8 @@
     lastTransTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TransTick)
     #暂定1秒
     if tick - lastTransTick < 1000:
-        GameWorld.Log("玩家切图CD中: mapID=%s,posX=%s,posY=%s,takeTruck=%s,fbID=%s,msg=%s,funcLineID=%s,tick=%s,lastTransTick=%s" 
-                      % (mapID, posX, posY, takeTruck, fbID, msg, funcLineID, tick, lastTransTick), curPlayer.GetPlayerID())
+        GameWorld.Log("玩家切图CD中: mapID=%s,posX=%s,posY=%s,fbID=%s,msg=%s,funcLineID=%s,tick=%s,lastTransTick=%s" 
+                      % (mapID, posX, posY, fbID, msg, funcLineID, tick, lastTransTick), curPlayer.GetPlayerID())
         NotifyCode(curPlayer, "MapMoveCD")
         return
     curPlayer.SetDict(ChConfig.Def_PlayerKey_TransTick, tick)
@@ -2206,10 +1960,7 @@
     #传送时, 锁定玩家, 传送成功, 在目标地图解锁, 传送失败, 在传送回调函数PlayerChangeMapFailCallback中解锁
     if canLock:
         curPlayer.BeginEvent()
-    
-    if not takeTruck:
-        #取消自动运镖
-        PlayerTruck.SetAutoTruckState(curPlayer, ShareDefine.Def_Out_Truck)
+        
     #GameWorld.Log(1, "SetXP=%s"%(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue)))
     #curPlayer.SetXP(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue))
     #获取副本传入副本需要携带的信息
@@ -2217,12 +1968,12 @@
     
     NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBMapID, mapID)
     NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqFBFuncLine, funcLineID)
-    GameWorld.Log("玩家请求开始切图: sceneMapID=%s,posX=%s,posY=%s,takeTruck=%s,fbID=%s,msg=%s,funcLineID=%s,tick=%s,lastTransTick=%s" 
-                  % (sceneMapID, posX, posY, takeTruck, fbID, msg, funcLineID, tick, lastTransTick), curPlayer.GetPlayerID())
+    GameWorld.Log("玩家请求开始切图: sceneMapID=%s,posX=%s,posY=%s,fbID=%s,msg=%s,funcLineID=%s,tick=%s,lastTransTick=%s" 
+                  % (sceneMapID, posX, posY, fbID, msg, funcLineID, tick, lastTransTick), curPlayer.GetPlayerID())
     if enterFBFree:
         NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_EnterFBFree, 1)
         GameWorld.DebugLog("    本次免费进入副本!")
-    curPlayer.ResetWorldPosReq(sceneMapID, posX, posY, takeTruck, fbID, msg)
+    curPlayer.ResetWorldPosReq(sceneMapID, posX, posY, False, fbID, msg)
     curPlayer.SetDict(ChConfig.Def_PlayerKey_ChangeMapID, sceneMapID)
     curPlayer.SetDict(ChConfig.Def_PlayerKey_ChangeLineID, max(0, fbID))
     
@@ -2286,7 +2037,7 @@
     NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HighChangeLineID, 0)
     
     #---开始切换线路---
-    PlayerResetWorldPosFB(curPlayer, curPlayer.GetMapID(), curPlayer.GetPosX(), curPlayer.GetPosY(), False, changLineID)
+    PlayerResetWorldPosFB(curPlayer, curPlayer.GetMapID(), curPlayer.GetPosX(), curPlayer.GetPosY(), changLineID)
     
     GameWorld.Log('玩家 = %s 切换分线 = %s, 锁住' % (curPlayer.GetName(), changLineID), curPlayer.GetID())
     return
@@ -2297,13 +2048,12 @@
 # @param mapID 地图ID
 # @param posX 坐标X
 # @param posY 坐标Y
-# @param takeTruck 是否携带镖车
 # @param lineID 线路ID -1代表当前线
 # @param msg 切换地图携带的信息
 # @param canLock 是否可以锁定玩家(传送点不可锁定, 因为要跨地图寻路)
 # @return 返回值无意义
 # @remarks 玩家切换地图
-def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID=-1, msg='', canLock=True, exData1=0):
+def PlayerResetWorldPos(curPlayer, mapID, posX, posY, lineID=-1, msg='', canLock=True, exData1=0):
     #更改: 死亡允许切换地图, 在副本中被怪打死, 副本时间到, 回收副本
 #    if GameObj.GetHP(curPlayer) <= 0 :
 #        GameWorld.Log("死亡无法切换地图")
@@ -2327,7 +2077,7 @@
         return
     
     #---不同地图ID切换地图---
-    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, takeTruck, shuntLineID, msg, canLock)
+    PlayerResetWorldPosFB(curPlayer, mapID, posX, posY, shuntLineID, msg, canLock)
     
     #如果是服务器中最后一个人离开, 则关掉副本
     GameWorldProcess.OnPlayerLeaveMapCloseFB()
@@ -3299,8 +3049,6 @@
     elif type_Price == IPY_GameWorld.TYPE_Price_Silver_Paper:
         __PayMoneyAfterBySilverPaper(curPlayer, price)
     
-    EventShell.EventRespons_OnMoneyChange(curPlayer, type_Price)
-    
     #活跃度处理
     PlayerActivity.OnPayMoneyActivity(curPlayer, type_Price, price)
     #转盘活动
@@ -3533,7 +3281,6 @@
         SetPlayerCurrency(curPlayer, priceType, updValue)
         if priceType == ShareDefine.TYPE_Price_RealmPoint:
             PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetRealmPoint, value)
-            EventShell.EventRespons_GetRealmPoint(curPlayer)
     else:
         GameWorld.ErrLog("金钱类型错误, priceType=%s,value=%s,giveType=%s" % (priceType, value, giveType), curPlayer.GetPlayerID())
         DataRecordPack.DR_GiveMoneyError(curPlayer, priceType, value, giveType, addDataDict)
@@ -3556,7 +3303,6 @@
 def __GiveMoneyAfter(curPlayer, priceType, value, giveType, addDataDict):
     # 除钻石及绑钻外,未指定操作类型的不记录
     
-    EventShell.EventRespons_OnMoneyChange(curPlayer, priceType)
     PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_GetMoney, value, [priceType])
     
     if priceType not in [IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper, ShareDefine.TYPE_Price_PayCoin] \
@@ -3736,8 +3482,6 @@
         #PK_wll_0: 您杀孽过重,在红名状态消失前您将不能继续而已攻击他人
         NotifyCode(curPlayer, "PK_lhs_202580")
         
-    #玩家镖车身上记录玩家名字颜色信息(必须在设置红名以后)
-    #PlayerTruck.ChangeTruckNoteInfo(curPlayer)
     return
 
 def ChangePKValue(curPlayer, addValue, tick):
@@ -4136,36 +3880,6 @@
             curPlayer.SetFreePoint(setFreePoint)
 
         return
-    #---------------------------------------------------------------------
-    ## 检查玩家是否需要封爵
-    #  @param self 类实例
-    #  @param curPlayer 玩家实例
-    #  @param curLV 当前等级
-    #  @return 返回值真, 需要
-    #  @remarks 检查玩家是否需要封爵
-    def __LVUpDoInvestiture(self, curPlayer, curLV):
-#===============================================================================
-#        此逻辑不能用 GetTotalExp, 
-#        改动请慎重!
-#===============================================================================
-        #1. 检查玩家是否在封爵等级
-        if curLV < 20 or curLV % 10 != 0:
-            return False
-        
-        curMission = curPlayer.FindMission(curLV * 100)
-        if curMission != None and curMission.GetState() == ChConfig.Def_Mission_State_Over:
-            #任务完成
-            return False
-            
-        if curMission == None:
-            #2. 如果在封爵等级, 并且即将升到下一级, 触发封爵任务
-            if EventShell.EventResponse_LVFull(curPlayer) != True:
-                GameWorld.Log("触发封爵任务失败", curPlayer.GetPlayerID())
-                return False
-            
-        return True
-    
-    #---------------------------------------------------------------------
     
     ## 加经验值 
     #  @param self 类实例
@@ -4408,8 +4122,6 @@
                     needSyncTalentPoint = True
                     PlayerGreatMaster.AddGreatMasterSkillPointByLV(curPlayer, addTalentPoint)
             
-            EventShell.EventResponse_LVUp(curPlayer)  # 升级触发事件
-            
             PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_LVUp, 1)
             #---是否继续循环---
             curTotalExp = curTotalExp - lvUpNeedExp
@@ -4579,9 +4291,6 @@
                 pqAttrValue = 0 if curPQLV > len(pqAttrValueList) else pqAttrValueList[curPQLV - 1]
                 CalcAttrDict_Type(int(pqAttrID), pqAttrValue, lingGenQualityAttrList)
             #GameWorld.DebugLog("        属性点(%s)品阶等级属性: befPQLV=%s,curPQLV=%s,pqAttrInfoDict=%s" % (pointAttrID, befPQLV, curPQLV, pqAttrInfoDict))
-            if hadRefreshAttr and befPQLV < curPQLV:
-                for pqlv in xrange(befPQLV+1, curPQLV+1):
-                    EventShell.EventRespons_LingGenQualityUP(curPlayer, pointAttrID, pqlv)
                 
         #GameWorld.DebugLog("等级属性点加属性: %s" % allAttrList)
         #GameWorld.DebugLog("灵根品阶等级属性: %s" % lingGenQualityAttrList)
@@ -5459,31 +5168,28 @@
         
         moveSpeedFormat = IpyGameDataPY.GetFuncCfg("MoveSpeed")
         
-        if PlayerTruck.GetHaveAutoTruck(curPlayer):
-            speed = IpyGameDataPY.GetFuncCfg("MoveSpeed", 3)
-            GameWorld.DebugLog("运镖固定速度值: speed=%s" % speed, playerID)
-        else:
-            speed = GetSpeedNotBuff(curPlayer)
-            GameWorld.DebugLog("功能移动速度值: speed=%s" % speed, playerID)
+        speed = GetSpeedNotBuff(curPlayer)
+        GameWorld.DebugLog("功能移动速度值: speed=%s" % speed, playerID)
+        
+        # 骑乘状态加上骑乘附加速度
+        if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvHorse:
+            speedHorse = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SpeedHorse)
+            speed += speedHorse
+            GameWorld.DebugLog("    骑乘状态附加值: %s, speed=%s" % (speedHorse, speed), playerID)
+        
             
-            # 骑乘状态加上骑乘附加速度
-            if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvHorse:
-                speedHorse = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SpeedHorse)
-                speed += speedHorse
-                GameWorld.DebugLog("    骑乘状态附加值: %s, speed=%s" % (speedHorse, speed), playerID)
+        buffBattleAttr = allAttrListBuffs[ChConfig.CalcAttr_Battle]
+        buffBattleNolineAttr = allAttrListBuffs[ChConfig.CalcAttr_BattleNoline]
+        #buff速度加成     
+        buffSpeed = buffBattleAttr.get(ChConfig.TYPE_Calc_AttrSpeed, 0)
+        buffSpeedPer = buffBattleNolineAttr.get(ChConfig.TYPE_Calc_AttrSpeed, 0)
+        
+        if buffSpeed or buffSpeedPer:
+            speed = int(speed * (ShareDefine.Def_MaxRateValue + buffSpeedPer) / float(ShareDefine.Def_MaxRateValue) + buffSpeed)
+            GameWorld.DebugLog("    buff影响后速度值: speed=%s,buffSpeedPer=%s,buffSpeed=%s" % (speed, buffSpeedPer, buffSpeed), playerID)
             
-                
-            buffBattleAttr = allAttrListBuffs[ChConfig.CalcAttr_Battle]
-            buffBattleNolineAttr = allAttrListBuffs[ChConfig.CalcAttr_BattleNoline]
-            #buff速度加成     
-            buffSpeed = buffBattleAttr.get(ChConfig.TYPE_Calc_AttrSpeed, 0)
-            buffSpeedPer = buffBattleNolineAttr.get(ChConfig.TYPE_Calc_AttrSpeed, 0)
-            
-            if buffSpeed or buffSpeedPer:
-                speed = int(speed * (ShareDefine.Def_MaxRateValue + buffSpeedPer) / float(ShareDefine.Def_MaxRateValue) + buffSpeed)
-                GameWorld.DebugLog("    buff影响后速度值: speed=%s,buffSpeedPer=%s,buffSpeed=%s" % (speed, buffSpeedPer, buffSpeed), playerID)
-                
-            speed = max(speed, 0)   #防小于0错误
+        speed = max(speed, 0)   #防小于0错误
+        
         if GetSpeedValue(curPlayer) != speed:
             SetSpeedValue(curPlayer, speed)
             moveSpeed = eval(FormulaControl.GetCompileFormula("MoveSpeed", moveSpeedFormat))
@@ -5662,7 +5368,7 @@
             return
         
         #把人物设置回重生点
-        PlayerResetWorldPos(curPlayer, rebornMapID, rebornPosX, rebornPosY, False)
+        PlayerResetWorldPos(curPlayer, rebornMapID, rebornPosX, rebornPosY)
         return
     
     #---------------------------------------------------------------------
@@ -5689,8 +5395,6 @@
         #召唤回出战的宠物
         PetControl.ReCallFightPet(curPlayer)
         
-        #拉镖玩家死亡处理
-        PlayerTruck.DoPlayerDead(curPlayer)
         #清空使用技能记录
         curPlayer.ClearUseSkillRec()
         
@@ -5963,12 +5667,7 @@
 
 def IsMapOpen(curPlayer, openMapStep):
     # 主线任务完成时会设置标志可进地图标志
-    mission_1 = QuestCommon.GetCommonMission(curPlayer)
-    if not mission_1:
-        return False
-    if openMapStep > mission_1.GetProperty("OpenMap"):
-        return False
-    return True
+    return False
 
 #---------------------------------------------------------------------
 ##关于传送 验证玩家状态
@@ -6030,15 +5729,15 @@
     
     #玩家交易中, 离开交易
     if curPlayerAction == IPY_GameWorld.paTrade:
-        PlayerTrade.LeaveTrade(curPlayer, 0)
-                    
+        pass
+    
     #玩家事件状态中, 退出事件
     elif curPlayerAction == IPY_GameWorld.paEvent:
-        EventShell.DoExitEvent(curPlayer)
+        pass
         
     elif curPlayerAction == IPY_GameWorld.paGameEvent:
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
-        
+        pass
+    
     if curPlayerAction == IPY_GameWorld.paPreparing:
         DoExitPreparing(curPlayer)
     
@@ -6050,10 +5749,6 @@
         #执行下马逻辑
         PlayerHorse.PlayerRideHorseDown(curPlayer, False)
         
-    #玩家镖车中, 下车
-    elif curPlayerVehicle == IPY_GameWorld.pvTruck:
-        PlayerTruck.PlayerTruckDown(curPlayer, curPlayer.GetTruck())
-    
     #---其他系统处理---
     
     #中断战斗对峙
@@ -6641,12 +6336,6 @@
 # @param sight 视野范围
 # @return 无意义
 def SetSight(curPlayer, sight):
-    import QuestCommon
-    firstMission = QuestCommon.GetCommonMission(curPlayer)
-    if firstMission and firstMission.GetProperty(QuestCommon.Def_NewGuyNoSight) == 1:
-        curPlayer.SetSight(0)
-        return
-    
     #外挂号 视野验证
     if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_AutoCheckHack_State) \
                                       == ChConfig.Def_AutoCheck_State_Danger:
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 c9466dd..33c23ed 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -18,7 +18,6 @@
 import ReadChConfig
 import ChConfig
 import GameWorld
-import EventShell
 import FBLogic
 import IPY_GameWorld
 import ChPlayer
@@ -120,7 +119,6 @@
 import IpyGameDataPY
 import FamilyRobBoss
 import FBHelpBattle
-import QuestManager
 import PlayerAssist
 import PlayerArena
 import PyGameData
@@ -364,8 +362,6 @@
     elif onEventType == ShareDefine.Def_OnEventTypeEx:
         # 资源找回
         PlayerRecover.RecoverOnDay(curPlayer)
-        #触发每日任务重置脚本
-        EventShell.EventResponse_OnDay(curPlayer)
         #购买次数清空
         Operate_PlayerBuyZhenQi.PlayerOnDay(curPlayer)
         
@@ -512,8 +508,6 @@
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HasVIPClubNote, 0)
         
     elif onEventType == ShareDefine.Def_OnEventTypeEx:
-        #触发每周任务重置脚本
-        EventShell.EventResponse_OnWeek(curPlayer)
         #竞技场
         PlayerArena.OnWeekEx(curPlayer)
         PlayerFamily.OnWeekEx(curPlayer)
@@ -627,9 +621,6 @@
         #从数据库中查询当前排行榜等级
         curPlayer.DataServer_GetBillboardLV()
     
-    
-    #触发每小时任务重置脚本
-    EventShell.EventResponse_OnHour(curPlayer)
     #缥缈仙域
     PlayerFairyDomain.OnHour(curPlayer)
     return
@@ -1360,12 +1351,6 @@
     gameWorldMgr.SetGameWorldDict(ShareDefine.Def_Notify_WorldKey_ReloadJpegCaptcha, value)
     
     IpyGameDataPY.IPYData.IpyDataClear()
-    
-    #任务重读,需放在配置重读后面,暂时默认关闭,仅有需要重读任务时开启配置
-    if IpyGameDataPY.GetFuncCfg("ReloadQuests", 1):
-        tick = GameWorld.GetGameWorld().GetTick()
-        QuestManager.ReloadQuests(tick)
-        EventShell.DoReloadRefresh()
     return
 
 #===============================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py
index d77d8fd..cb61f81 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py
@@ -33,7 +33,6 @@
 import ItemControler
 import ItemCommon
 import PyGameData
-import EventShell
 import FBCommon
 import NPCCommon
 
@@ -355,11 +354,7 @@
             GameLogic_CrossGrassland.DoResetCrossGrassland(curPlayer, ipyData.GetEventType(), fdeventID)
             
     elif state == FDEventState_Visited:
-        #设置结束,暂不做限制,防止异常导致无法结束
-#        if curState != FDEventState_Visiting:
-#            GameWorld.Log('缥缈仙域事件状态设置错误,fdeventID=%s, state=%s, curState=%s' % (fdeventID, state, curState))
-#            return
-        EventShell.EventRespons_FairyDomain(curPlayer, ipyData.GetEventType())
+        pass
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainEventState % fdeventID, state)
     NotifyVisitFairyDomainInfo(curPlayer, [fdeventID], 0)
     return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index 66ac5ec..a59e6a5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -409,7 +409,6 @@
         #触发家族升级事件, 在SetFamilyLV之后,任务可以取等级判定
         if isLVUP:
             pass
-            #EventShell.EventResponse_OnFamilyLVUp(curPlayer)
         
     if lastFamilyID != 0 and curPlayer.GetFamilyID() == 0:
         #玩家离开家族
@@ -419,7 +418,6 @@
         #刚进家族并为族长,触发建家族事件
         if curPlayer.GetFamilyMemberLV() == IPY_GameWorld.fmlLeader:
             pass
-            #EventShell.EventResponse_OnCreateFamily(curPlayer)
             
         #进入家族触发事件
         __OnEnterFamily(curPlayer, tick)
@@ -433,7 +431,6 @@
     familyMgr = DBDataMgr.GetFamilyMgr()
     familyMgr.DelPlayerReqJoinFamilyIDAll(curPlayer.GetPlayerID())
     Sync_RequestAddFamilyInfo(curPlayer)
-    #EventShell.EventResponse_OnFamily(curPlayer)
     __FamilyAffair_CheckReset(curPlayer)
     PlayerFamilyTech.Sync_PlayerFamilyTechLV(curPlayer)
     #GameLogic_FamilyWar.DoCheckChampionFamilyTitle(curPlayer)
@@ -452,8 +449,6 @@
     curPlayer.SetFamilyLV(0)
     PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time()))
     
-    #触发玩家离开家族的任务
-    #EventShell.EventResponse_OnLeaveFamily(curPlayer)
     FBLogic.OnLeaveFamily(curPlayer, tick)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py
index 724d491..552bb7e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyStore.py
@@ -22,7 +22,6 @@
 import ItemControler
 import ShareDefine
 import ChConfig
-import EventShell
 
 import math
 
@@ -132,8 +131,6 @@
     msgList = ["DonateItem", itemDict]
     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FamilyStore",
                                                               '%s' % (msgList), len(str(msgList)))
-    
-    EventShell.EventRespons_StoreDonate(curPlayer)
     return
 
 def OnFamilyStoreQueryResult(curPlayer, result):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFriend.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFriend.py
index e4877da..e452039 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFriend.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFriend.py
@@ -16,7 +16,6 @@
 import IPY_GameWorld
 import GameWorld
 import PlayerTeam
-import EventShell
 import ChConfig
 import PlayerSuccess
 import ShareDefine
@@ -54,7 +53,6 @@
     # 好友个数成就
     friendCnt = curPackData.FriendCnt
     PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_AddFriend, friendCnt)
-    EventShell.EventRespons_AddFriend(curPlayer, friendCnt)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGameEvent.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGameEvent.py
deleted file mode 100644
index b9f5639..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGameEvent.py
+++ /dev/null
@@ -1,512 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-##@package PlayerGameEvent
-#小游戏事件逻辑处理
-#
-# @author ifo
-# @date 2010-4-23
-# @version 2.1
-#
-# @change: "2010-05-12 18:30" zhengyang 添加注释
-# @change: "2010-05-26 14:27" panwei 开启钓鱼, 注释掉黄金小饭团等增加小游戏经验的物品
-# @change: "2010-07-09 17:55" panwei 关闭焰火功能
-# @change: "2010-09-01 16:40" panwei 小游戏事件逻辑重构
-# @change: "2010-11-22 12:15" Alee 限制小游戏
-# @change: "2010-12-07 12:00" Alee 通过动作获得动作位修正
-# @change: "2010-12-28 17:30" panwei 获取经验新增渠道, 含杀怪, 游戏, 任务 
-# @change: "2011-05-03 15:40" panwei 钓鱼召回宠物
-# @change: "2011-07-01 12:40" Alee 防沉迷限制
-# @change: "2013-09-10 20:10" Alee 系统提示冲突
-# @change: "2015-07-01 18:00" hxp 钓鱼修改
-#---------------------------------------------------------------------
-"""Version = 2015-07-01 18:00"""
-#------------------------------------------------------------------------------ 
-import ShareDefine
-import ChConfig
-import IPY_GameWorld
-import GameWorld
-import random
-import ItemControler
-import PlayerControl
-import EventShell
-import ItemCommon
-import GameDataControl
-import OperControlManager
-import PetControl
-import ReadChConfig
-import DataRecordPack
-import ChPyNetSendPack
-import NetPackCommon
-import NPCCommon
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-## 开始小游戏事件 
-#  @param curPlayer 当前玩家
-#  @param eventType 事件类型
-#  @param tick 当前时间
-#  @return 无返回值
-#  @remarks 开始小游戏事件
-def StartGameEvent(curPlayer, eventType, tick):
-    if eventType == IPY_GameWorld.geDance:
-        PlayerControl.NotifyCode(curPlayer, "BeginDance")
-    
-    elif eventType == IPY_GameWorld.geFish:
-        #PlayerControl.NotifyCode(curPlayer, "BeginFishing")
-        pass
-    
-    else:
-        GameWorld.ErrLog('StartGameEvent unKnowType = %s'%(eventType))
-        return
-     
-    #清除点击对象
-    curPlayer.SetActionObj(None)
-    #中断战斗对峙
-    PlayerControl.ExitPlayerConfronting(curPlayer)
-    #召唤回出战的宠物
-    PetControl.ReCallFightPet(curPlayer)
-    
-    #开始游戏事件
-    curPlayer.SetGameEventTick(tick)
-    curPlayer.SetFishEventTick(tick)
-    curPlayer.SetDanceEventTick(tick)
-    
-    curPlayer.SetPlayerGameEvent(eventType)
-    __PutonFishermanEquipment(curPlayer)
-    curPlayer.View_StartGameEvent(eventType)
-    GameWorld.DebugLog("StartGameEvent...")
-    return
-
-##获取渔夫装ID
-# @param curPlayer 玩家实例
-# @return
-def GetFishermanCoatID(curPlayer):
-    jobType = ChConfig.JOB_TYPE_DICT[curPlayer.GetJob()]
-    jobCoatIDDict = ReadChConfig.GetEvalChConfig("FisherClothes")
-    return jobCoatIDDict.get(jobType, [0, 0])
-
-##穿上渔夫装备
-# @param curPlayer 玩家实例
-# @return
-def __PutonFishermanEquipment(curPlayer):
-    return
-
-##给伪装时装
-# @param curPlayer 玩家实例
-# @return
-def __AssignItem(curPlayer, index, itemID):
-    equipePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    destItem = equipePack.GetAt(index)
-    
-    destItem.Clear()
-    
-    tagItem = ItemCommon.CreateSingleItem(itemID)
-    if tagItem == None:
-        # 无此物品
-        GameWorld.ErrLog('Can not find item, itemID=%s' % itemID)
-        return False
-
-    destItem.AssignItem(tagItem)
-
-    curPlayer.ChangeEquip(itemID, index, 0, 0, 0, destItem.GetUserData())
-    return True
-
-##脱下渔夫装备
-# @param curPlayer 玩家实例
-# @return
-def TakeoffFishermanEquipment(curPlayer):
-    
-#===============================================================================
-#    clothesID, weaponID = GetFishermanCoatID(curPlayer)
-# 
-#    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-#    
-#    clothesCoatItem = equipPack.GetAt(IPY_GameWorld.retClothesCoat)
-#    if clothesCoatItem and not clothesCoatItem.IsEmpty() and clothesCoatItem.GetItemTypeID() == clothesID:
-#        clothesCoatItem.Clear()
-#        curPlayer.Sync_UnEquipItem(clothesID, IPY_GameWorld.retClothesCoat)
-#        GameWorld.DebugLog("    TakeoffFishermanEquipment clothesID=%s" % clothesID)
-#        
-#    weaponCoatItem = equipPack.GetAt(IPY_GameWorld.retWeaponCoat)
-#    if weaponCoatItem and not weaponCoatItem.IsEmpty() and weaponCoatItem.GetItemTypeID() == weaponID:
-#        weaponCoatItem.Clear()
-#        curPlayer.Sync_UnEquipItem(weaponID, IPY_GameWorld.retWeaponCoat)
-#        GameWorld.DebugLog("    TakeoffFishermanEquipment weaponID=%s" % weaponID)
-#===============================================================================
-        
-    return
-#---------------------------------------------------------------------
-## 停止玩家小游戏事件
-#  @param curPlayer 当前玩家
-#  @param tick 时间戳
-#  @return 无返回值
-#  @remarks 停止玩家小游戏事件
-def StopGameEvent(curPlayer, tick):
-    curPlayer.SetPlayerGameEvent(IPY_GameWorld.geNull)
-    curPlayer.View_StartGameEvent(IPY_GameWorld.geNull)
-    
-    #如果在游戏中,设置为空闲状态
-    if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent:
-        PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
-        
-    TakeoffFishermanEquipment(curPlayer)
-    GameWorld.DebugLog("StopGameEvent...")
-    return
-#---------------------------------------------------------------------
-## 检测是否可以开始小游戏逻辑
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return 布尔值
-#  @remarks 检测是否可以开始小游戏逻辑  
-def CheckCanBeginGameEvent(curPlayer, tick):
-    #---验证玩家基础状态---
-    
-    if curPlayer.GetPlayerAction() not in ChConfig.Def_Player_StartGameEvent_State:
-        return False 
-    
-    #---验证玩家特殊状态---
-    
-    if curPlayer.IsMoving():
-        #PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0")
-        return False
-    
-    return True
-#---------------------------------------------------------------------
-## 处理玩家小游戏事件 
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return 无返回值
-#  @remarks 定时器调用, 处理玩家小游戏事件
-def ProcessGameEvent(curPlayer, tick):
-    #---基本检查---
-    
-    if curPlayer.GetPlayerGameEvent() == IPY_GameWorld.geNull:
-        return
-    
-    #---执行小游戏动作---
-
-    if __ProcessGameEvent(curPlayer, tick):
-        return
-    
-    #---执行小游戏动作失败, 结束小游戏---
-
-    StopGameEvent(curPlayer, tick)
-    return
-#---------------------------------------------------------------------
-## 处理玩家小游戏事件 
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return 布尔值, 是否继续小游戏状态
-#  @remarks 内部函数, 处理玩家小游戏事件
-def __ProcessGameEvent(curPlayer, tick):
-    #---玩家状态检查, 是否还可以继续小游戏事件---
-    curPlayerAction = curPlayer.GetPlayerAction()
-
-    if curPlayerAction != IPY_GameWorld.paGameEvent:
-        return False
-    
-    #---玩家游戏事件检查---
-    gameEventType = curPlayer.GetPlayerGameEvent() 
-        
-    if not CanProcessGameEvent(curPlayer, gameEventType, tick):
-        return False
-    
-    #---处理跳舞---
-    if gameEventType == IPY_GameWorld.geDance:
-        __GivePlayerGameEventReward(curPlayer, gameEventType, ChConfig.Def_Item_Type_Dance, \
-                                    curPlayer.GetDanceEventTick(), ChConfig.Def_EventRewardTime, curPlayer.SetDanceEventTick, tick)
-        return True
-    
-    #---处理钓鱼---
-    __GivePlayerGameEventReward(curPlayer, gameEventType, ChConfig.Def_Item_Type_Fish, \
-                                curPlayer.GetFishEventTick(), ChConfig.Def_EventRewardTime, curPlayer.SetFishEventTick, tick)
-    return True
-#---------------------------------------------------------------------
-## 是否能继续游戏事件 
-#  @param curPlayer 当前玩家
-#  @param gameEvent 游戏事件
-#  @param tick 当前时间
-#  @return 布尔值
-#  @remarks 是否能继续游戏事件
-def CanProcessGameEvent(curPlayer, gameEvent, tick):
-    #---通用检查---
-    #通过动作获得相应动作位
-    curActBit= OperControlManager.GetActBitByAction(ChConfig.Def_ActBit_GameEvent, gameEvent)
-
-    if curActBit != None:
-        #拉进度条中 状态, 服务端限制
-        if not OperControlManager.IsObjCanDoAction(curPlayer, 
-                                                   ChConfig.Def_Obj_ActState_ServerAct, 
-                                                   curActBit):
-            return False
-    
-    #有交通工具不可执行
-    #if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull:
-    #    GameWorld.DebugLog("有交通工具,不可执行小游戏!")
-    #    return False
-    
-    #---钓鱼检查---
-    
-    if gameEvent == IPY_GameWorld.geFish:
-        # 后续有需要用 GetAreaTypeByMapPos判断
-        pass
-        #PlayerControl.NotifyCode(curPlayer, "GeRen_hgg_542057")
-        
-        #if not CheckPlayerFishWeapon(curPlayer, tick):
-        #    PlayerControl.NotifyCode(curPlayer, "ScarcityRod")
-        #    return False
-        
-        #if not curPlayer.GetHaveGameBuff():
-        #    PlayerControl.NotifyCode(curPlayer, "GeRen_jin_681085")
-        #    return False
-
-    return True
-#---------------------------------------------------------------------
-## 检查玩家钓鱼工具 
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def CheckPlayerFishWeapon(curPlayer, tick):
-    #得到玩家的武器格
-    playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curWeapon = playerEquip.GetAt(ShareDefine.retWeapon)
-
-    if curWeapon.IsEmpty():
-        #需要鱼竿,但是玩家没有装备鱼竿
-        #GameWorld.Log("没有装备武器")
-        return False
-    
-    #检查是否装备了鱼竿
-    return curWeapon.GetEffectByIndex(0).GetEffectID() == ChConfig.Def_Item_Effect_FishTool
-#---------------------------------------------------------------------
-## 给玩家小游戏奖励 
-#  @param curPlayer 当前玩家
-#  @return 无意义
-#  @remarks 给玩家小游戏奖励 
-def AddGameEventExp(curPlayer):
-    #---获得玩家队伍人数(含自己)---
-
-    teamMemberList = PlayerControl.GetAreaTeamMember(curPlayer.GetTeam(), curPlayer.GetPosX(), curPlayer.GetPosY())
-    teamMemberCnt = len(teamMemberList)
-
-    #---获得ReExp---
-
-    #ReEXP的等级差
-    getExpLV = max(1, curPlayer.GetLV() - ChConfig.Def_GameEventExpLVDiff)
-
-    givePlayerReExp = 0
-
-    #---给玩家经验---
-
-    giveExp = GameWorld.GetFloatUpper(givePlayerReExp * ChConfig.Def_TeamMemberExp[teamMemberCnt])
-
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.AddExp(giveExp, ShareDefine.Def_ViewExpType_GameEvent)
-    return
-#---------------------------------------------------------------------
-## 给予玩家游戏奖励物品
-#  @param curPlayer 玩家实例
-#  @param giveItemType 奖励物品类型
-#  @return 无返回值
-#  @remarks 给予玩家游戏奖励物品
-def AddGameEventItem(curPlayer, giveItemType):
-    #---检查是否达到每日最大获取上限---
-    dayCount = curPlayer.GetDayProcessGameEventCount()
-    
-#===============================================================================
-#    #暂时不限制了
-#    if dayCount > ChConfig.Def_EventCount:
-#        #GameWorld.Log("当前次数 = %s,超过每日最大次数 %s,不能获得物品"%(dayCount , ChConfig.Def_EventCount))
-#        return
-#===============================================================================
-    curPlayer.SetDayProcessGameEventCount(dayCount + 1)
-    
-    #---检查事件奖励概率---
-    happenRate = eval(ChConfig.Def_EventRate)
-    
-    if not GameWorld.CanHappen(happenRate, ChConfig.Def_EventMaxRate):
-        return
-    
-    #---给玩家奖励物品---
-
-    #获得奖励给玩家的物品列表
-    giveItemList = GameDataControl.GetItemDataListByType(giveItemType)
-    
-    if len(giveItemList) == 0:
-        GameWorld.ErrLog('小游戏事件, 数据库无此类型物品 giveItemType = %s'%(giveItemType))
-        return
-    
-    #随机给玩家一个奖励物品
-    giveItemData = random.choice(giveItemList)
-    #物品属性
-    giveItemID = giveItemData.GetItemTypeID()
-    giveItemCnt = 1
-    giveItemBind = False
-    #放入背包索引
-    packIndex = IPY_GameWorld.rptItem
-    
-    itemControl = ItemControler.PlayerItemControler(curPlayer)
-    
-    if not itemControl.CanPutInItem(packIndex, giveItemID, giveItemCnt, giveItemBind):
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [packIndex])
-        return
-    
-    giveItem = ItemCommon.CreateSingleItem(giveItemID)
-    
-    if giveItem == None:
-        GameWorld.ErrLog("小游戏事件, 创造物品ID = %s, 失败"%(giveItemID))
-        return
-
-    if not itemControl.PutInItem(packIndex, giveItem):
-        giveItem.Clear()
-        GameWorld.ErrLog('小游戏事件,  放入物品异常!! itemID = %s'%(giveItemID))
-        return
-    
-    #PlayerControl.NotifyCode(curPlayer, "ObtainRes01", [giveItemID, giveItemCnt])
-    return
-#---------------------------------------------------------------------
-## 给予玩家小游戏事件奖励
-#  @param curPlayer 当前玩家
-#  @param eventType 事件类型
-#  @param giveItemType 给予奖励物品类型
-#  @param lastTimeTick 上次奖励时间戳
-#  @param limitTimeGap 奖励限制时间间隔
-#  @param setTickFunc 保存本次奖励函数结构体
-#  @param tick 当前时间戳
-#  @return 无返回值
-#  @remarks 给予玩家小游戏事件奖励
-def __GivePlayerGameEventReward(curPlayer, eventType, giveItemType, lastTimeTick, limitTimeGap, setTickFunc, tick):
-    #---检测间隔---
-    if tick - lastTimeTick < limitTimeGap:
-        return
-    
-    setTickFunc(tick)
-    
-    #防沉迷
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Wallow_LV) > ChConfig.Def_GameWallow_LV_First:
-        PlayerControl.NotifyCode(curPlayer, "AvoidSink09")
-        return
-    
-    #---通知客户端获得奖励---
-    curPlayer.Sync_GameEventResult(eventType)
-    
-    #给玩家经验
-    AddGameEventExp(curPlayer)
-    
-    #给玩家物品
-    AddGameEventItem(curPlayer, giveItemType)
-    
-    #调用任务触发器
-    EventShell.EventRespons_OnGameEvent(curPlayer)
-    return
-#---------------------------------------------------------------------
-
-## 执行钓鱼逻辑
-#  @param curPlayer 玩家实例
-#  @param fishType 钓鱼奖励类型
-#  @return 无返回值
-def DoFishLogic(curPlayer, fishType):
-    GameWorld.DebugLog("钓鱼收杆: fishType=%s" % (fishType))
-
-    fishAwardTypeDict = __GetFishAwardTypeDict(curPlayer)
-    if not fishAwardTypeDict:
-        return
-    
-    if fishType not in fishAwardTypeDict:
-        return
-    
-    fishAwardItemList = fishAwardTypeDict[fishType]
-    awardItemInfo = GameWorld.GetResultByRandomList(fishAwardItemList)
-    if len(awardItemInfo) != 4:
-        return
-    
-    #验证背包空间
-    if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem):
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    hasBind = False
-    
-    # 钓鱼消耗
-    costItemInfo = ReadChConfig.GetEvalChConfig("FishCostItem")
-    if costItemInfo:
-        costItemID, costItemCnt = costItemInfo
-        if costItemID > 0 and costItemCnt > 0:
-            itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-            enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(
-                                                        costItemID, itemPack, costItemCnt)
-            if not enough:
-                GameWorld.DebugLog("钓鱼消耗物品不足 costItemID=%s,costCnt=%s" \
-                                   % (costItemID, costItemCnt))
-                return True
-            
-            ItemCommon.ReduceItem(curPlayer, itemPack, indexList, costItemCnt, False)
-    
-    itemType, itemID, itemCnt, isBind = awardItemInfo
-    
-    isBind = hasBind or isBind
-    if itemType == 0:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, 
-                                     [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere])
-    elif itemType == 1:
-        ItemControler.GivePlayerAppointItem(curPlayer, itemID, False)
-    
-    else:
-        GameWorld.ErrLog("钓鱼奖励类型不支持itemType=%s" % itemType, curPlayer.GetPlayerID())
-    
-    addDataDict = {"CostItemInfo":costItemInfo, "AwardItemInfo":awardItemInfo}
-    DataRecordPack.DR_FuncGiveItem(curPlayer, "Fish", addDataDict)
-    Sync_FishResult(curPlayer, awardItemInfo)
-    
-    syncItemInfoList = [[itemType, itemID, itemCnt, isBind, ""]]
-    NPCCommon.SyncCollectionItemInfo(curPlayer, 0, 0, 0, syncItemInfoList) 
-    return
-
-## 获取钓鱼奖励类型字典
-#  @param curPlayer 玩家实例
-#  @return 
-def __GetFishAwardTypeDict(curPlayer):
-    FishAwardLVModeDict = ReadChConfig.GetEvalChConfig("FishAwardLV")
-    modeID = None
-    playerLV = curPlayer.GetLV()
-    for lvKey, mIDStr in FishAwardLVModeDict.items():
-        if lvKey[0] <= playerLV <= lvKey[1]:
-            modeID = mIDStr
-            break
-        
-    if not modeID:
-        GameWorld.ErrLog("找不到玩家等级对应的钓鱼奖励模板!playerLV=%s" % playerLV, curPlayer.GetPlayerID())
-        return
-    
-    modeFileName = "FishAward_%s" % modeID
-    fishAwardInfo = ReadChConfig.GetEvalChConfig(modeFileName)
-    
-    if not fishAwardInfo:
-        return
-    
-    infoKey = () # 默认key
-    job = curPlayer.GetJob()
-    for key in fishAwardInfo.keys():
-        if job in key:
-            infoKey = key
-            break
-        
-    if infoKey not in fishAwardInfo:
-        GameWorld.ErrLog('%s.txt can not find key=%s!' % (modeFileName, infoKey), curPlayer.GetPlayerID())
-        return
-    
-    return fishAwardInfo[infoKey]
-
-
-## 同步钓鱼结果
-#  @param curPlayer 玩家实例
-#  @return 
-def Sync_FishResult(curPlayer, awardItemInfo):
-    fishResultPack = ChPyNetSendPack.tagMCFishResult()
-    fishResultPack.Clear()
-    NetPackCommon.SendFakePack(curPlayer, fishResultPack)
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
index b30eb98..521b989 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
@@ -18,7 +18,6 @@
 #---------------------------------------------------------------------
 
 import GameWorld
-import EventShell
 import ChConfig
 import PlayerControl
 import ItemCommon
@@ -298,7 +297,6 @@
         RefreshGodWeaponAttr(curPlayer)
         #x神器达到X级成就
         PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_GodWeapon, attrLV, [weaponType])
-        EventShell.EventRespons_GodWeaponUp(curPlayer, weaponType, attrLV)
         if beforeAttrLV == 0:
             # 解封通知
             sysMark = IpyGameDataPY.GetFuncEvalCfg('GodWeaponSys', 1, {}).get(weaponType, 'GetGodWeapon')
@@ -318,8 +316,6 @@
         
         
     Sync_GodWeaponLVInfo(curPlayer, weaponType)
-    #任务
-    EventShell.EventRespons_PlusGodWeapon(curPlayer, weaponType)
     return
 
 #神兵升级触发其他功能:技能
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index 4d86f4f..19ee09a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -30,9 +30,7 @@
 import NetPackCommon
 import PlayerBillboard
 import PlayerAttrFruit
-import PlayerGameEvent
 import GameFuncComm
-import EventShell
 import IpyGameDataPY
 import CrossPlayerData
 import PlayerSuccess
@@ -144,10 +142,6 @@
     if itemRideHorse.IsEmpty():
         return
     
-    if curPlayer.GetPlayerAction() == IPY_GameWorld.paGameEvent:
-        tick = GameWorld.GetGameWorld().GetTick()
-        PlayerGameEvent.StopGameEvent(curPlayer, tick)
-        
     #设置玩家为骑马状态
     curPlayer.SetPlayerVehicle(IPY_GameWorld.pvHorse)
     #设置马匹为普通移动状态
@@ -645,10 +639,7 @@
     # 升阶
     upItemPerCount = horseIpyData.GetUpEatItemPerCount()
     upCnt = costItemCount / upItemPerCount
-    for _ in range(upCnt):
-        EventShell.EventRespons_HorseUp(curPlayer) # 改为使用就算
     if updClassLV > horseLV:
-        EventShell.EventRespons_HorseLV(curPlayer, updClassLV)
         # 玩家马匹进阶
         DataRecordPack.DR_NewHorseByClassUp(curPlayer, updClassLV, 0)
         # 记录开服活动马匹阶级
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 0f012cb..b50d2cc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -29,7 +29,6 @@
 import SkillShell
 import GameFuncComm
 import PlayerSuccess
-import EventShell
 import PassiveBuffEffMng
 import ItemControler
 import PlayerActivity
@@ -77,7 +76,6 @@
         GameWorld.Log('更新魔族副本关卡 mwID=%s,level=%s' % (mwID, passLV), curPlayer.GetID())
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MWFBPassLevel % mwID, passLV)
         Sycn_MagicWeaponLV(curPlayer, mwID)
-        EventShell.EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, passLV)
         ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('MagicWeaponFB', {'LineID':lineID}, True)
         maxLevel = ipyDataList[-1].GetLevel()
         if passLV >= maxLevel:
@@ -112,8 +110,6 @@
         if mwID == IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 1):
             __DoFabaoAddPoint(curPlayer)
             
-
-    EventShell.EventRespons_MagicWeaponLV(curPlayer, mwID, mwLV)
     #通知客户端等级
     Sycn_MagicWeaponLV(curPlayer, mwID)
     #成就
@@ -506,7 +502,6 @@
     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
 
@@ -674,6 +669,4 @@
 def OnThinkMagicWeapon(index, clientData, tick):
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     mwID = clientData.MWID
-    #只触发任务接口
-    EventShell.EventRespons_ThinkMagicWeapon(curPlayer)
     return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py
index 55cabf9..c16d685 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py
@@ -26,7 +26,6 @@
 import PlayerSuccess
 import ShareDefine
 import ItemCommon
-import EventShell
 import GameWorld
 import time
 
@@ -236,7 +235,6 @@
     elif msgType == "Pull":
         areaPlayerID = dataMsg[0]
         isRob = (areaPlayerID and curPlayer.GetPlayerID() != areaPlayerID)
-        EventShell.EventResponse_MineAreaPull(curPlayer, isRob)
     return
 
 def __DoGiveMineAreaAward(curPlayer, awardInfoList):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMissionCollect.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMissionCollect.py
deleted file mode 100644
index 94485a4..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMissionCollect.py
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/python
-#-*- coding: GBK -*-
-#----------------------------------------------------------------------------------------------------
-#
-#----------------------------------------------------------------------------------------------------
-#
-##@package PlayerMissionCollect
-# 玩家任务采集NPC
-#
-# @author Alee
-# @date 2010-4-28
-# @version 1.5
-#
-# 修改时间 修改人 修改内容
-# @change: "2010-05-12 18:30" zhengyang 添加注释
-# @change: "2010-07-08 10:40" Alee 骑乘状态无法采集
-# @change: "2010-09-16 09:55" Alee 马上可以采集
-# @change: "2010-11-22 12:15" Alee 采集限制
-# @change: "2014-04-14 12:00" hxp 增加自定义采集NPC
-#---------------------------------------------------------------------
-#"""Version = 2014-04-14 12:00"""
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import IPY_GameWorld
-import ChConfig
-import EventShell
-import ChNPC
-import PlayerControl
-import OperControlManager
-import NPCCommon
-import AttackCommon
-import GameObj
-#---------------------------------------------------------------------
-'''Version = 2010-09-16 09:55'''
-#---------------------------------------------------------------------
-#全局
-#---------------------------------------------------------------------
-
-
-## 通过类型获取玩家采集对象NPC
-#  @param curPlayer 当前玩家
-#  @param npcType npc类型 
-#  @return None
-#  @remarks 函数详细说明.
-def GetActionNPCbyType(curPlayer, npcType):
-    #获得NPC
-    tagObj = curPlayer.GetActionObj()
-    if tagObj == None:
-        #没有目标
-        GameWorld.Log("GetActionNPCbyType -> 没有目标" , curPlayer.GetPlayerID())
-        return
-    
-    if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC:
-        #谈话对象不对
-        GameWorld.Log("GetActionNPCbyType -> 谈话对象不对" , curPlayer.GetPlayerID())
-        return
-    
-    curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex())
-    if curNPC == None:
-        #没有这个NPC
-        GameWorld.Log("GetActionNPCbyType ->没有这个NPC" , curPlayer.GetPlayerID())
-        return
-    
-    if curNPC.GetType() != npcType:
-        #类型不对
-        return
-    
-    if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie or GameObj.GetHP(curNPC) <= 0:
-        #死亡
-        return
-    
-    return curNPC
-    
-## 通知XML
-#  @param curPlayer 当前玩家
-#  @param curNPC 当前npc
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def QueryMissionCollect(curPlayer, curNPC, tick):
-    #采集行为状态, 客户端限制
-    if not OperControlManager.IsObjCanDoAction(curPlayer, 
-                                               ChConfig.Def_Obj_ActState_ClientAct, 
-                                               IPY_GameWorld.oalCollect):
-        return  
-    
-    #马匹中允许采集
-    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck :
-        #GeRen_hwj35_0 无法采集
-        PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_0")
-        return
-    
-    #先设置对象,任务可采集得到对象NPC
-    curPlayer.SetActionObj(curNPC)
-    
-    # 自定义的采集NPC
-    if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
-        return
-    
-    EventShell.EventRespons_MisCollectTime(curPlayer, curNPC)
-    
-## 获得采集时间,开始采集 DoType_Collect_Time 调用
-#  @param curPlayer 当前时间
-#  @param curMission 当前任务
-#  @param curConditionNode xml节点(condition)
-#  @return None
-#  @remarks 函数详细说明.
-def BeginMissionCollect(curPlayer, curMission, curConditionNode):
-    curNPC = GetActionNPCbyType(curPlayer, IPY_GameWorld.ntMissionCollect)
-    
-    if not curNPC:
-        return
-    
-    #根据返回的采集时间,判断可否采集
-    misColTime = int(curConditionNode.GetAttribute("coltime"))
-    
-    if not misColTime:
-        return
-    
-    #通知开始
-    PlayerControl.Sync_PrepareBegin( curPlayer, misColTime, IPY_GameWorld.pstMissionCollecting, prepareID = curNPC.GetID() )
-    
-    #添加这个NPC的伤血列表,用于多个人一起采集,一人成功后,其他人打断
-    AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1)
-    return
-
-## 采集结束处理
-#  @param curPlayer
-#  @return None
-#  @remarks 函数详细说明.
-def EndMissionCollect(curPlayer, tick):
-    #任务采集类NPC
-    curNPC = GetActionNPCbyType(curPlayer, IPY_GameWorld.ntMissionCollect)
-    if not curNPC:
-        return
-    
-    npcID = curNPC.GetNPCID()
-    
-    #采集结束 真为成功
-    if not ChNPC.OnCollectEnd(curPlayer, curNPC):
-        return
-    
-    # 自定义的采集NPC
-    NPCCommon.DoCollectNPCOK(curPlayer, npcID, tick)
-    
-    EventShell.EventRespons_MisCollectSuccess(curPlayer, curNPC)
-    return
-
-    
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index 0fddd13..a248e8b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -30,7 +30,6 @@
 import ShareDefine
 import SkillCommon
 import PetControl
-import EventShell
 import GameWorld
 import IpyGameDataPY
 import PlayerAttrFruit
@@ -507,8 +506,7 @@
         return
     
     ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Pet)
-        
-    EventShell.EventRespons_OnActivatePet(curPlayer, petNPCID)
+    
     sysMark = ipyData.GetUnlockSys() or 'GetPet'
     PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), petNPCID])
     rolePet = curPlayer.GetPetMgr().GetFightPet()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
index 761950d..e11e5b8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -27,7 +27,6 @@
 import PlayerSuccess
 import PlayerAttrFruit
 import IpyGameDataPY
-import EventShell
 import PlayerActivity
 import PlayerFairyCeremony
 import PlayerNewFairyCeremony
@@ -132,9 +131,6 @@
             GameWorld.DebugLog("配方材料不足!alchemyID=%s,needMaterialDict=%s,lackItemDict=%s,hasItemDict=%s"
                                % (alchemyItemID, needMaterialDict, lackItemDict, delInfoDict), playerID)
             return
-        #任务
-        for _ in xrange(refineTimes):
-            EventShell.EventRespons_RefineItem(curPlayer, alchemyQuality, alchemyItemID)
             
         #扣消耗
         ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, ChConfig.ItemDel_Alchemy)
@@ -226,10 +222,6 @@
             notNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 3)
             if alchemyItemID not in notNotifyItemIDList and (alchemyItemID in needNotifyItemIDList or makeItemData.GetItemColor() >= notifyColor):
                 PlayerControl.WorldNotify(0, "AchemyGreatSuccess", [curPlayer.GetPlayerName(), alchemyItemID])
-
-#        #任务,改为开始炼丹触发
-#        for _ in xrange(refineTimes):
-#            EventShell.EventRespons_RefineItem(curPlayer, alchemyQuality, alchemyItemID)
         #重置
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyItemID % alchemType, 0)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyStartTime % alchemyID, 0)
@@ -280,7 +272,6 @@
         alchemyLV += 1
         GameWorld.DebugLog("    炼丹升级: alchemyLV=%s,alchemyExp=%s" % (alchemyLV, alchemyExp), curPlayer.GetPlayerID())
         isLVUp = True
-        EventShell.EventRespons_RefineStoveUp(curPlayer, alchemyLV)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyExp, alchemyExp)
     if not isLVUp:
         return False
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index 80b6b6f..e8c9970 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -18,7 +18,6 @@
 import SkillShell
 import BuffSkill
 import PlayerControl
-import EventShell
 import PlayerRequest
 import ChEquip
 import SkillCommon
@@ -27,7 +26,6 @@
 import ChItem
 import PlayerGMOper
 import GameLogInfo
-import PlayerMissionCollect
 import ItemCommon
 import OperControlManager
 import ShareDefine
@@ -546,7 +544,7 @@
     
     if prepareState == IPY_GameWorld.pstDig:
         #挖宝状态
-        EventShell.EventResponse_OnDig(curPlayer)
+        pass
         
     elif prepareState == IPY_GameWorld.pstSkill:
         SkillShell.SkillPrepareEnd(curPlayer, tick)
@@ -562,11 +560,10 @@
     
     elif prepareState == IPY_GameWorld.pstTownPortal:
         #战斗中回城成功
-        ChItem.UseTownPortal(curPlayer)
+        pass
     
     elif prepareState == IPY_GameWorld.pstMissionCollecting:
-        #任务采集
-        PlayerMissionCollect.EndMissionCollect(curPlayer, tick)
+        pass
         
     elif prepareState == ShareDefine.Def_PstTrans:
         
@@ -577,7 +574,7 @@
         if not TransCostAfterPrepare(curPlayer):
             return
         
-        PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY, False)
+        PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY)
         #PlayerControl.NotifyCode(curPlayer, "Map_Deliver_Succeed", [mapID])
         
     #重置玩家状态
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
index b3743a7..a898298 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -31,7 +31,6 @@
 import PlayerFamilyRedPacket
 import PlayerGatherSoul
 import IpyGameDataPY
-import EventShell
 import PyGameData
 import EventReport
 
@@ -44,7 +43,6 @@
 import Operate_EquipWash
 import PlayerFeastRedPacket
 import PlayerDogz
-import QuestCommon
 import DataRecordPack
 
 
@@ -85,7 +83,6 @@
         SetSuccFinish(curPlayer, succID, 0)
         
         Sync_SuccTypeIndexAwardRecord(curPlayer, [succID], True) #设置成未领取的在外层同步
-        EventShell.EventRespons_SuccessFinish(curPlayer, succID)
         
     return 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTeam.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTeam.py
index 5aa98a7..32dd3b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTeam.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTeam.py
@@ -27,7 +27,6 @@
 import IPY_GameWorld
 import DataRecordPack
 import NPCHurtManager
-#import PlayerTruck
 import ShareDefine
 import SkillShell
 import PlayerSuccess
@@ -293,9 +292,6 @@
         teamPlayerIDList.append(playerID)
         PyGameData.g_teamPlayerDict[teamID] = teamPlayerIDList
         GameWorld.DebugLog("玩家加入队伍: teamID=%s,playerID=%s,%s" % (teamID, playerID, PyGameData.g_teamPlayerDict))
-        
-    #改变镖车身上记录的主人信息
-    #PlayerTruck.ChangeTruckNoteInfo(curPlayer)
     
     #以下为进入一个新的队伍额外处理
     if playerTeamID != teamID:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTrade.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTrade.py
deleted file mode 100644
index 0a3f153..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTrade.py
+++ /dev/null
@@ -1,1158 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package PlayerTrade
-# 玩家交易逻辑
-#
-# @author panwei
-# @date 2010-4-28
-# @version 2.3
-#
-# @change: "2013-03-18 16:30" wdb 交易开启
-# @change: "2013-04-12 14:30" wdb 无物品金钱交易判断错误
-# @change: "2013-09-27 15:20" hxp 增加单方面退出交易时通知对方退出交易信息
-# @change: "2013-10-12 21:10" Alee 系统提示
-# @change: "2013-10-17 10:50" hxp 增加交易等级限制
-# @change: "2013-12-10 15:20" hxp 增加交易金钱类型限制
-# @change: "2013-12-16 18:30" hxp 修改交易检测,修改无交易物品时发送交易结束
-# @change: "2013-12-20 10:50" xmnathan 交易判定修改,强化7以上及镶嵌宝石装备不允许交易
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-# @change: "2015-01-14 00:30" hxp 增加交易事件汇报
-# @change: "2015-06-04 11:00" hxp 绑定物品不可交易; 防范不可交易的物品不可交易
-# @change: "2015-07-03 16:00" zqx 去除GM限制
-# @change: "2016-03-17 19:00" hxp 修复LostItem流向无装备详细信息问题
-#---------------------------------------------------------------------
-"""Version = 2016-03-17 19:00"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import ItemControler
-import ItemCommon
-import PlayerRequest
-import PlayerControl
-import FunctionNPCCommon
-#import PlayerVip
-import DataRecordPack
-import ReadChConfig
-import ShareDefine
-import EventReport
-import GameObj
-#---------------------------------------------------------------------
-#===============================================================================
-# 交易消息提示 curPlayer.TradeMsg
-# 1. 对方拒绝交易
-# 2. 对方无回应
-# 3. 交易失败, 原因: 对方金钱超过上限
-# 4. 交易失败, 原因: 对方背包空间不足
-# 5. 交易失败, 原因: 对方已离线
-#===============================================================================
-#交易请求
-#class   IPY_CPlayerTradeAsk
-#{
-#public:
-#
-#    int      GetTagPlayerID();
-#};
-## 判断是否能够开始交易 
-#  @param curPlayer 当前玩家
-#  @param curTagPlayer 目标玩家
-#  @return True or False
-#  @remarks 函数详细说明.
-def __CanStartTrade(curPlayer, curTagPlayer):
-    #状态判定
-    if curPlayer.GetPlayerAction() not in ChConfig.Def_CanTradeState or curPlayer.IsMoving():
-        PlayerControl.NotifyCode(curPlayer, "Business_Fail01")
-        #PlayerControl.NotifyCode(curTagPlayer, "Business_Fail02")
-        return False
-    
-    #状态判定
-    if curTagPlayer.GetPlayerAction() not in ChConfig.Def_CanTradeState or curTagPlayer.IsMoving():
-        PlayerControl.NotifyCode(curPlayer, "ApplyDealingLost04")
-        return False
-    
-    return True
-
-## 发出交易请求(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return True or False
-def TradeAsk(index, tick):    
-    sendPack = IPY_GameWorld.IPY_CPlayerTradeAsk()
-    #发起交易玩家
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #目标玩家ID
-    curTagPlayerID = sendPack.GetTagPlayerID()
-    #交易目标玩家
-    curTagPlayer = GameWorld.GetObj(curTagPlayerID, IPY_GameWorld.gotPlayer)
-    #封包检查
-    if curTagPlayer == None :
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_795514")
-        return False
-    
-    #交易基本判定
-    if not TradeBasicCondition(curPlayer, curTagPlayer):
-        return False
-    
-    #双方状态判断
-    if not __CanStartTrade(curPlayer, curTagPlayer):
-        return False
-    
-    #无法和自己交易
-    if curPlayer.GetID() == curTagPlayerID :
-        GameWorld.Log("TradeAsk -> 无法和自己交易" , curPlayer.GetPlayerID())
-        return False
-    
-    #添加请求
-    curPlayer.AddRequest(curTagPlayerID, IPY_GameWorld.reqTrade, tick, ChConfig.Def_EventClearTime)
-
-    #设置当前状态为询问交易状态
-    curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeAsk)
-
-    #设置被询问人为被询问状态
-    curTagPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeAsked)
-
-    #目标玩家提示信息
-    curTagPlayer.RequestWarn(IPY_GameWorld.reqTrade , curPlayer.GetID() , curPlayer.GetPlayerName())
-    
-    #InviteDealing 交易邀请已经发出,请等待对方应答!
-    PlayerControl.NotifyCode(curPlayer, "InviteDealing")
-    return True 
-
-
-#回应对方的交易请求
-#class   IPY_CTradeAnswer
-#{
-#public:
-#
-#    int      GetHostPlayerID();
-#    //0: 拒绝交易 1:接受交易 2: 超时
-#    int      GetType();
-#};
-## 回应交易请求(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None or True or False
-def TradeAnswer(index, tick):
-    sendPack = IPY_GameWorld.IPY_CTradeAnswer()
-    #交易目标玩家
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #交易发起玩家
-    curTagPlayer = GameWorld.GetObj(sendPack.GetHostPlayerID(), IPY_GameWorld.gotPlayer)
-    
-    if curTagPlayer == None:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_795514")
-        return False
-    
-    #状态判断
-    if not __CanStartTrade(curPlayer, curTagPlayer):
-        return False
-    
-    if not PlayerRequest.CheckRequest(curTagPlayer, curPlayer, IPY_GameWorld.reqTrade):
-        GameWorld.Log("TradeAnswer ->Request no record" , curPlayer.GetPlayerID() , curTagPlayer.GetPlayerID())
-        return False
-  
-    #交易目标玩家无ask封包
-    if curPlayer.GetPlayerTradeState() != IPY_GameWorld.tsTradeAsked :
-        GameWorld.Log("TradeAnswer->Trade not Asked" , curPlayer.GetPlayerID() , curTagPlayer.GetPlayerID())
-        return False
-    
-    #交易基本判定
-    if not TradeBasicCondition(curPlayer, curTagPlayer):
-        #GameWorld.Log("不满足交易基本判定")
-        return False
-    
-    answerType = sendPack.GetType()
-    
-    #对方无点击确定或超时,返回
-    if answerType != 1:
-        if answerType == 0:
-            curPlayer.TradeMsg(1)
-            #CancelLockedDealing02 对方取消交易
-            PlayerControl.NotifyCode(curTagPlayer, "CancelLockedDealing02")
-            
-        else:
-            curPlayer.TradeMsg(2)
-            #CancelLockedDealing03 目标玩家对您的交易请求未做出任何响应,请求超时
-            PlayerControl.NotifyCode(curTagPlayer, "CancelLockedDealing03")
-            
-        curPlayer.ClearRequest()
-        curTagPlayer.ClearRequest()
-        return False
-    
-    #设置双方状态为开始交易状态
-    curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeBegin)
-    curTagPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeBegin)
-    #设置当前交易对象
-    curPlayer.SetActionObj(curTagPlayer)
-    curTagPlayer.SetActionObj(curPlayer)
-    #开始交易
-    curPlayer.StartTrade(curTagPlayer.GetID())
-    curTagPlayer.StartTrade(curPlayer.GetID())
-    #清空上次交易列表
-    curPlayer.GetTradeList().Clear()
-
-    curPlayer.ClearRequest()
-    curTagPlayer.ClearRequest()
-    return True
-
-## 2个玩家是否交易中 
-#  @param curPlayer 当前玩家
-#  @param curTagPlayer 目标玩家
-#  @return True or False
-def __IsTrading(curPlayer, curTagPlayer):
-    if curPlayer.GetPlayerAction() != IPY_GameWorld.paTrade:
-        #GameWorld.Log("交易状态不对")
-        return False
-    
-    if curTagPlayer.GetPlayerAction() != IPY_GameWorld.paTrade:
-        #GameWorld.Log("目标交易状态不对")
-        return False
-    
-    return True
-
-
-#把物品放到交易栏
-#class   IPY_CPutItemTrade
-#{
-#public:
-#
-#    int      GetItemIndex();
-#};  
-## 把物品放入交易栏(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return True or False
-def PutItemTrade(index, tick):
-    #===========================================================================
-    # sendPack = IPY_GameWorld.IPY_CPutItemTrade()
-    # #发起交易玩家
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # #交易接受方
-    # curTagPlayer = curPlayer.GetActionPlayer()
-    # 
-    # #交易基本判定
-    # if not TradeBasicCondition(curPlayer, curTagPlayer):
-    #    #GameWorld.Log("不满足交易基本判定")
-    #    return False
-    # 
-    # #状态判定
-    # if not __IsTrading(curPlayer, curTagPlayer) :
-    #    #GameWorld.Log("当前状态不是交易状态")
-    #    return False
-    # 
-    # #当前状态不是开始交易状态
-    # if curPlayer.GetPlayerTradeState() != IPY_GameWorld.tsTradeBegin:
-    #    #GameWorld.Log("放入物品时的状态不是开始交易状态")
-    #    return False
-    # 
-    # #发起交易玩家的物品背包
-    # backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    # #获得当前物品
-    # curItem = backPack.GetAt(sendPack.GetItemIndex())
-    # 
-    # if not CheckTradeItem(curPlayer, curItem):
-    #    return
-    # 
-    # #获得自己的交易列表
-    # tradeList = curPlayer.GetTradeList()
-    # #交易栏已满
-    # if tradeList.GetPutInCount() >= tradeList.GetTradeItemCount():
-    #    return False
-    # 
-    # #添加物品
-    # tradeList.AddItem(sendPack.GetItemIndex())
-    # #设置物品为锁定状态
-    # curItem.SetIsEventLocked(True)
-    #===========================================================================
-    return True
-
-
-#把物品从交易栏卸下到包裹
-#class   IPY_CGetBackItemInTrade
-#{
-#public:
-#    ////交易列表的序号
-#    int      GetTradeIndex();
-#};
-## 把物品从交易栏卸下到背包(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None or False
-#  @remarks 函数详细说明.
-def GetBackItemInTrade(index, tick):
-    #===========================================================================
-    # sendPack = IPY_GameWorld.IPY_CGetBackItemInTrade()
-    # #发起交易玩家
-    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # #交易接受方
-    # curTagPlayer = curPlayer.GetActionPlayer()
-    # #交易基本判定
-    # if not TradeBasicCondition(curPlayer, curTagPlayer):
-    #    #GameWorld.Log("不满足交易基本判定")
-    #    return False
-    # 
-    # #状态判定
-    # if not __IsTrading(curPlayer, curTagPlayer):
-    #    #GameWorld.Log("当前状态不是交易状态")
-    #    return False
-    # 
-    # #当前状态不是开始交易状态
-    # if curPlayer.GetPlayerTradeState() != IPY_GameWorld.tsTradeBegin:
-    #    GameWorld.Log("卸下物品时的状态不是开始交易状态 %d " % (curPlayer.GetPlayerTradeState()) , curPlayer.GetPlayerID())
-    #    return False
-    # 
-    # #获得自己的交易列表
-    # tradeList = curPlayer.GetTradeList()
-    # #获得交易栏索引
-    # tradeIndex = sendPack.GetTradeIndex()
-    # itemIndex = tradeList.GetTradeItem(tradeIndex)
-    # #发起交易玩家的物品背包
-    # backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    # #获得当前物品
-    # curItem = backPack.GetAt(itemIndex)
-    # if curItem == None or curItem.IsEmpty():
-    #    return False
-    # 
-    # #删除物品索引
-    # tradeList.DeleteByIndex(tradeIndex)
-    # #包裹中的物品解锁
-    # curItem.SetIsEventLocked(False)
-    #===========================================================================
-    return
-
-
-## 离开交易 
-#  @param curPlayer 当前玩家
-#  @param type 结束类型
-#  @return True or False
-#  @remarks 函数详细说明.
-def LeaveTrade(curPlayer, type):
-    if curPlayer == None or curPlayer.GetID() == 0:
-        return False
-    
-    #是否在交易状态
-    if curPlayer.GetPlayerAction() != IPY_GameWorld.paTrade:
-        return False
-    
-    #接受交易方
-    curTagPlayer = curPlayer.GetActionPlayer()    
-    if not curTagPlayer or curTagPlayer.GetID() == 0 :
-        #目标不存在,自己结束交易
-        unTrade(curPlayer, type)
-        return False
-    
-    #不在交易状态,不处理
-    if curTagPlayer.GetPlayerAction() != IPY_GameWorld.paTrade:
-        return False
-    
-    #双方离开交易
-    unTrade(curPlayer, type)
-    unTrade(curTagPlayer, type)
-    
-    # 退出交易时通知对方退出交易信息
-    if type == 0:
-        PlayerControl.NotifyCode(curTagPlayer, "CancelLockedDealing02")
-    return True
-
-#一方退出交易
-#//0A 07 退出交易#tagCExitTrade
-#tagCExitTrade       *   GettagCExitTrade();
-#
-#class   IPY_CExitTrade
-#{
-#public:
-#
-#    int      GetType();
-#};
-## 正常退出交易(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def ExitTrade(index, tick):
-    sendPack = IPY_GameWorld.IPY_CExitTrade()
-    #当前玩家
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    LeaveTrade(curPlayer, sendPack.GetType())
-    return True
-
-
-#//0A 08 远程贩售道具#tagCSaleItem 
-#
-#struct tagCSaleItem 
-#{ 
-#WORD UseItem; // 使用的道具索引 
-#WORD SaleItem1; // 贩卖的物品1 
-#WORD SaleItem2; // 贩卖的物品2 
-#WORD SaleItem3; // 贩卖的物品3 
-#WORD SaleItem4; // 贩卖的物品4 
-#WORD SaleItem5; // 贩卖的物品5 
-#WORD SaleItem6; // 贩卖的物品6 
-#}; 
-## 远程贩售道具
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def LongDistanceSaleItem(index, tick):
-    return
-#===============================================================================
-#    # 当前玩家
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    vipLv = curPlayer.GetVIPLv()
-#    
-#    #等级不足
-#    #if not PlayerVip.GetVipCanFarSellItem(vipLv):
-#    #    return
-#    
-#    # 当前非空闲状态    
-#    if not PlayerControl.IsPlanStateNull(curPlayer):
-#        PlayerControl.NotifyCode(curPlayer, "CanNotUseAffectActionItem", [ChConfig.Def_ItemID_LongSaleItem])
-#        return
-# 
-#    sendPack = IPY_GameWorld.IPY_CSaleItem()
-#    curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-#    useItem = ItemCommon.FindItemInPackByEffectEx(curPlayer, ChConfig.Def_Effect_FarSellItem)
-#    
-#    isUseItem = True
-#    useMoney = 0
-#    
-#    if not ItemCommon.CheckItemCanUse(useItem):
-#        isUseItem = False
-#        #useMoney = PlayerVip.GetVipFarSellCost(vipLv)
-#        
-#        #验证金额
-#        if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, useMoney):
-#            return
-#    
-#    saleItemIndex1 = sendPack.GetSaleItem1()
-#    saleItemIndex2 = sendPack.GetSaleItem2()
-#    saleItemIndex3 = sendPack.GetSaleItem3()
-#    saleItemIndex4 = sendPack.GetSaleItem4()
-#    saleItemIndex5 = sendPack.GetSaleItem5()
-#    saleItemIndex6 = sendPack.GetSaleItem6()
-#    
-#    saleItemIndexList = [saleItemIndex1, saleItemIndex2, saleItemIndex3, \
-#                         saleItemIndex4, saleItemIndex5, saleItemIndex6]
-#    
-#    # 变量物品进行贩售
-#    for saleItemIndex in saleItemIndexList:
-#        if saleItemIndex < 0 or saleItemIndex >= curPack.GetMaxCount():
-#            continue
-#        FunctionNPCCommon.SellPackItem(curPlayer, IPY_GameWorld.rptItem, saleItemIndex, ChConfig.Def_ShopType_LongSale)
-#    
-#    if isUseItem:
-#        #--扣除道具物品--
-#        ItemCommon.DelItem(curPlayer, useItem, 1, True, "LongDistanceSaleItem")
-#    else:
-#        payType = IPY_GameWorld.TYPE_Price_Gold_Money
-#        #扣金额
-#        if not PlayerControl.PayMoney(curPlayer, payType, useMoney, ChConfig.Def_Cost_Trade):
-#            return
-#        #消费记录
-#        GameWorld.Login_Interface_GoldRec(curPlayer, 0, 1, 'FarSell', IPY_GameWorld.TYPE_Price_Gold_Money, useMoney)
-#    
-#    return
-#===============================================================================
-
-    
-#交易锁定
-#class   IPY_CTradeLock
-#{
-#public:
-#    //1: 交易确认 0: 取消确认
-#    int      GetType();
-#    int      GetMoney();
-#};
-## 交易锁定(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return True or False
-#  @remarks 函数详细说明.
-def TradeLock(index, tick):
-    
-    sendPack = IPY_GameWorld.IPY_CTradeLock()
-    #点击锁定的玩家
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #目标玩家
-    curTagPlayer = curPlayer.GetActionPlayer()
-    #交易基本判定
-    if not TradeBasicCondition(curPlayer, curTagPlayer):
-        #GameWorld.Log("交易锁定(封包参数)不满足交易基本判定")
-        return False
-    
-    #状态判定
-    if not __IsTrading(curPlayer, curTagPlayer):
-        #GameWorld.Log("交易锁定(封包参数)当前状态不是交易状态")
-        return False
-    
-    #封包状态
-    lockType = sendPack.GetType()
-    
-    #解除锁定
-    if lockType == 0:
-        #目标玩家未点锁定
-        if curTagPlayer.GetPlayerTradeState() == IPY_GameWorld.tsTradeBegin:
-            curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeBegin)
-            curPlayer.SetTradeLock(False, 0, 0, 0, 0)
-        #目标已经点锁定或已点交易
-        else:
-            curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeBegin)
-            curPlayer.SetTradeLock(False, 0, 0, 0, 0)
-            curTagPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeBegin)
-            curTagPlayer.SetTradeLock(False, 0, 0, 0, 0)
-            
-        #CancelLockedDealing 对方取消锁定交易!
-        PlayerControl.NotifyCode(curTagPlayer, "CancelLockedDealing")
-        return False
-    
-    #确认锁定
-    if curPlayer.GetPlayerTradeState() != IPY_GameWorld.tsTradeBegin:
-        #玩家当前状态,无法确认锁定
-        return False
-    
-    # 判断金钱
-    sendGold = sendPack.GetGold()
-    if CheckMoneyInvalid(curPlayer, sendGold, curPlayer.GetGold(), "GoldErr"):
-        return False  
-
-    sendGPaper = sendPack.GetGoldPaper()
-    if CheckMoneyInvalid(curPlayer, sendGPaper, curPlayer.GetGoldPaper(), "GoldPaperErr"):
-        return False  
-    
-    sendSilver = sendPack.GetSilver()
-    if CheckMoneyInvalid(curPlayer, sendSilver, PlayerControl.GetSilver(curPlayer), "SilverErr"):
-        return False
-
-    sendSPaper = sendPack.GetSilverPaper()
-    if CheckMoneyInvalid(curPlayer, sendSPaper, curPlayer.GetSilverPaper(), "SilverPaperErr"):
-        return False
-    
-    # 奇迹只允许交易普通金币 - hxp
-    if sendGold > 0 or sendGPaper > 0 or sendSPaper > 0:
-        GameWorld.ErrLog("sendGold > 0 or sendGPaper > 0 or sendSPaper > 0", curPlayer.GetID())
-        return False
-    
-    #锁定成功
-    curPlayer.SetTradeLock(True, sendGold, sendGPaper, sendSilver, sendSPaper)
-    #设置当前状态为锁定状态
-    curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeConfirm)
-   
-    #LockedDealing   对方已经锁定交易,请确认交易物品!
-    PlayerControl.NotifyCode(curTagPlayer, "LockedDealing")
-    
-    return True
-
-## 检测金钱是否不正确
-#  @param curPlayer 当前玩家
-#  @return None
-def CheckMoneyInvalid(curPlayer, sendMoney, playerMoney, notify):
-
-    if sendMoney < 0 or playerMoney < sendMoney:
-        PlayerControl.NotifyCode(curPlayer, notify)
-        return True
-    
-    return False
-
-
-## 交易失败后, 玩家要做的事情(参数 -> 当前玩家)
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def TradeOKFail(curPlayer):
-    #===========================================================================
-    # curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeBegin)
-    # curPlayer.SetTradeLock(False, 0, 0, 0, 0)
-    # #拿回所有物品
-    # #由于tradeList列表在底层构建为静态列表(长度固定), 所以在下面
-    # #可以在for中直接删除第i个元素
-    # tradeList = curPlayer.GetTradeList()
-    # #发起交易玩家的物品背包
-    # backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    # for i in range(tradeList.GetTradeItemCount()):
-    #    itemIndex = tradeList.GetTradeItem(i)
-    #    
-    #    if itemIndex < 0:
-    #        continue
-    #    
-    #    tradeList.DeleteByIndex(i)
-    #    
-    #    #包裹中的物品解锁
-    #    #获得当前物品
-    #    curItem = backPack.GetAt(itemIndex)
-    #    #包裹中的物品解锁
-    #    
-    #    if not curItem.IsEmpty():
-    #        curItem.SetIsEventLocked(False)
-    #        
-    # #结束当前交易
-    # unTrade(curPlayer, 0)
-    #===========================================================================
-    return
-
-#交易点击确认
-#class   IPY_CTradeOK
-#{
-#public:
-#    //1: OK 0: Cancel
-#    int      GetType();
-#};
-## 交易成功(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return True or False
-#  @remarks 函数详细说明.
-def TradeOK(index, tick):
-    sendPack = IPY_GameWorld.IPY_CTradeOK()
-    #发起交易玩家
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #接受交易方
-    curTagPlayer = curPlayer.GetActionPlayer()
-    #交易基本判定
-    if not TradeBasicCondition(curPlayer, curTagPlayer):
-        #GameWorld.Log("TradeOK不满足交易基本判定")
-        return False
-    
-    #状态判定
-    if not __IsTrading(curPlayer, curTagPlayer):
-        #GameWorld.Log("TradeOK当前状态不是交易状态")
-        return False
-
-    #没选择确定
-    if sendPack.GetType() != 1:
-        #解除交易
-        unTrade(curPlayer, 0)
-        unTrade(curTagPlayer, 0)
-        return False
-
-    if curPlayer.GetPlayerTradeState() != IPY_GameWorld.tsTradeConfirm:
-        #只有先锁定后,才可以交易
-        return False
-        
-    #获得自己的交易清单
-    curPlayerTradeList = curPlayer.GetTradeList()
-    #获得对方的交易清单
-    curTagPlayerTradeList = curTagPlayer.GetTradeList()
-    #获得自己的背包
-    curPlayerPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    #获得对方的背包
-    curTagPlayerPack = curTagPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-        
-    #设置当前状态为OK状态
-    curPlayer.SetPlayerTradeState(IPY_GameWorld.tsTradeOK)
-    
-    #---------------------------------如果双方都OK,开始交易------------------------------------
-    #双方都点击OK
-    if curTagPlayer.GetPlayerTradeState() == IPY_GameWorld.tsTradeOK :
-
-        # 无金钱和物品交易
-        if max(TradeMoneyCount(curPlayerTradeList)) <= 0 and max(TradeMoneyCount(curTagPlayerTradeList)) <= 0 \
-            and CheckIsEmptyItem(curPlayerTradeList) and CheckIsEmptyItem(curTagPlayerTradeList):
-            
-            TradeOKFail(curPlayer)
-            TradeOKFail(curTagPlayer)
-            return False 
-
-        # 交易前金钱
-        curGold, curGPaper, curSilver, curSPaper = GetPlayerMoney(curPlayer)
-        tagGold, tagGPaper, tagSilver, tagSPaper = GetPlayerMoney(curTagPlayer)
-        
-        #放入物品
-        if not TradePutIn(curPlayer, curTagPlayer, curPlayerTradeList, curTagPlayerTradeList, curTagPlayerPack, curPlayerPack):
-            #GameWorld.Log("放入物品失败")
-            TradeOKFail(curPlayer)
-            TradeOKFail(curTagPlayer)
-            return False
-        
-#        #记录大额度金钱交易
-#        __LargeTradeMoney(curPlayer,curTagPlayer,curPlayerTradeList,curTagPlayerTradeList)
-        # 交易中金钱变化
-        DataRecordPack.DR_TradeMoney(curPlayer, curTagPlayer, curGold, curGPaper, curSilver, curSPaper)
-        DataRecordPack.DR_TradeMoney(curTagPlayer, curPlayer, tagGold, tagGPaper, tagSilver, tagSPaper)
-        
-        #双方结束当前交易
-        unTrade(curPlayer, 1)
-        unTrade(curTagPlayer, 1)
-          
-    return True
-
-
-## 获得玩家金钱 
-#  @param curPlayer 当前玩家
-#  @return 
-def GetPlayerMoney(player):
-    return player.GetGold(), player.GetGoldPaper(), PlayerControl.GetSilver(player), player.GetSilverPaper()
-
-
-## 判断是否时空物品列表 
-#  @param tradeList 交易列表
-#  @return 
-def CheckIsEmptyItem(tradeList):
-
-    for i in range(0, tradeList.GetTradeItemCount()):
-        if tradeList.GetTradeItem(i) >= 0:
-            return False
-    
-    return True     
-                
-#===============================================================================
-### 记录大额度金钱交易------------------
-##  @param curPlayer 当前玩家
-##  @param curTagPlayer 交易对方
-##  @param curPlayerTradeList 交易信息
-##  @param curTagPlayerTradeList 对方交易信息
-##  @return None
-##  @remarks 函数详细说明.
-#def __LargeTradeMoney(curPlayer,curTagPlayer,curPlayerTradeList,curTagPlayerTradeList):
-#    playerID = curPlayer.GetPlayerID()
-#    haveGold = curPlayer.GetGold()
-#    haveSilver = PlayerControl.GetSilver(curPlayer)
-#    tagPlayerID = curTagPlayer.GetPlayerID()
-#    tagHaveGold = curTagPlayer.GetGold()
-#    tagHaveSilver = PlayerControl.GetSilver(curTagPlayer)
-#    
-#    curPlayerTradeMoney = curPlayerTradeList.GetMoney()
-#    curTagPlayerTradeMoney = curTagPlayerTradeList.GetMoney()
-#    
-#    #双方都给予大额度金额,无聊的人类啊
-#    if curPlayerTradeMoney >= ChConfig.Def_LargeTrade_Silver and \
-#    curTagPlayerTradeMoney >= ChConfig.Def_LargeTrade_Silver:
-#
-#        GameWorld.NoteDownLargeTrade(
-#                                     tradeSilver = curPlayerTradeMoney,
-#                                     senderID = playerID,
-#                                     senderGold = haveGold,
-#                                     senderSilver = haveSilver,
-#                                     )
-#
-#        GameWorld.NoteDownLargeTrade(
-#                                     tradeSilver = curTagPlayerTradeMoney,
-#                                     receiverID = tagPlayerID,
-#                                     receiverGold = tagHaveGold,
-#                                     receiverSilver = tagHaveSilver
-#                                     )
-#        return
-#    
-#    #单向给予大额度金额
-#    #一次性交易中,原方给予的金额
-#    if curPlayerTradeMoney >= ChConfig.Def_LargeTrade_Silver:
-#        GameWorld.NoteDownLargeTrade(
-#                                     tradeSilver = curPlayerTradeMoney,
-#                                     senderID = playerID,
-#                                     senderGold = haveGold,
-#                                     senderSilver = haveSilver,
-#                                     receiverID = tagPlayerID,
-#                                     receiverGold = tagHaveGold,
-#                                     receiverSilver = tagHaveSilver
-#                                     )
-#    
-#    #一次性交易中,对方给予的金额
-#    if curTagPlayerTradeMoney >= ChConfig.Def_LargeTrade_Silver:
-#        GameWorld.NoteDownLargeTrade(
-#                                     tradeSilver = curTagPlayerTradeMoney,
-#                                     senderID = playerID,
-#                                     senderGold = haveGold,
-#                                     senderSilver = haveSilver,
-#                                     receiverID = tagPlayerID,
-#                                     receiverGold = tagHaveGold,
-#                                     receiverSilver = tagHaveSilver
-#                                     )
-#        
-### 记录大额物品交易
-##  @param curPlayer 当前玩家
-##  @param curTagPlayer 对方玩家
-##  @param curItem 交易物品
-##  @return None
-##  @remarks 函数详细说明.
-#def __LargeTradeItem(curPlayer,curTagPlayer,curItem):
-#    curItemID = curItem.GetItemTypeID()
-#    if curItemID not in ChConfig.Def_ItemID_LargeTrade:
-#        return
-#    
-#    curCount = curItem.GetCount()
-#    if curCount != curItem.GetPackCount():
-#        return
-#    
-#    GameWorld.NoteDownLargeTrade(
-#                                 tradeItemID = curItemID,
-#                                 tradeItemCount = curCount,
-#                                 senderID = curPlayer.GetPlayerID(),
-#                                 senderGold = curPlayer.GetGold(),
-#                                 senderSilver = PlayerControl.GetSilver(curPlayer),
-#                                 receiverID = curTagPlayer.GetPlayerID(),
-#                                 receiverGold = curTagPlayer.GetGold(),
-#                                 receiverSilver = PlayerControl.GetSilver(curTagPlayer)
-#                                 )
-#===============================================================================
-
-
-## 将交易栏中的物品放入背包 
-#  @param curPlayer 当前玩家
-#  @param curTagPlayer 目标玩家
-#  @param curPlayerTradeList 当前玩家交易清单,
-#  @param curTagPlayerTradeList 目标玩家交易清单, 
-#  @param curTagPlayerPack 目标玩家背包
-#  @param curPlayerPack  当前玩家背包
-#  @return True or False
-#  @remarks 函数详细说明.
-def TradePutIn(curPlayer, curTagPlayer, curPlayerTradeList, curTagPlayerTradeList, curTagPlayerPack, curPlayerPack):
-    #检查背包空间和银子上限是否满足条件
-    if not TradePackCanPutIn(curPlayer, curTagPlayer, curTagPlayerTradeList, curPlayerTradeList , curTagPlayerPack) or \
-        not TradePackCanPutIn(curTagPlayer, curPlayer, curPlayerTradeList, curTagPlayerTradeList , curPlayerPack):
-        #不满足交易条件
-        #GameWorld.Log("不满足交易条件")
-        return False
-    
-    selfTradeItemList = list()  #Type = SingleItem
-    tagTradeItemList = list()   #Type = SingleItem
-    
-    #获得自己物品管理器
-    curItemControl = ItemControler.PlayerItemControler(curPlayer)
-    #取出对方物品,放入自己背包
-    for i in range(0, curTagPlayerTradeList.GetTradeItemCount()):
-        curTagItemIndex = curTagPlayerTradeList.GetTradeItem(i)
-        if curTagItemIndex == -1:
-            continue
-        #GameWorld.Log("%s的物品索引%s"%(curTagPlayer.GetPlayerName(),curTagItemIndex))
-        curTagItem = curTagPlayerPack.GetAt(curTagItemIndex)
-        if curTagItem.IsEmpty():
-            GameWorld.Log("%s->%s 交易物品获取失败,%s物品为空" % (curPlayer.GetPlayerID(), curTagPlayer.GetPlayerID(), curTagItem.GetItemTypeID()))
-            continue
-        
-#        #记录大额物品交易
-#        __LargeTradeItem(curPlayer,curTagPlayer,curTagItem)
-        tagTradeItemList.append(curTagItem.GetItem())
-        tagItemNoteDict = ItemCommon.GetItemNoteDict(curTagItem.GetItem(), curTagItem.GetCount())
-        # 流向记录,记录交易失去 物品
-        #DataRecordPack.DR_TradeLostItem(curTagPlayer, curPlayer, curTagItem.GetItemTypeID(), 
-        #                                curTagItem.GetCount(), tagItemNoteDict)
-        TradeEventReport(curTagPlayer, curPlayer, curTagItem.GetItemTypeID(), curTagItem.GetCount(), "Lost")
-        ItemCommon.DR_DelItem(curTagPlayer, IPY_GameWorld.rptItem, "Trade", tagItemNoteDict)
-        #擦除对方物品
-        curTagItem.Wipe()
-
-    #获得对方物品管理器
-    tagItemControl = ItemControler.PlayerItemControler(curTagPlayer)
-    #取出自己物品,放入对方背包
-    for i in range(0, curPlayerTradeList.GetTradeItemCount()):
-        curItemIndex = curPlayerTradeList.GetTradeItem(i)
-        if curItemIndex == -1:
-            continue
-        #GameWorld.Log("%s的物品索引%s"%(curPlayer.GetPlayerName(),curItemIndex))
-        curItem = curPlayerPack.GetAt(curItemIndex)
-        if curItem.IsEmpty():
-            GameWorld.Log("%s->%s交易物品获取失败,%s物品为空" % (curPlayer.GetPlayerID(), curTagPlayer.GetPlayerID(), curItem.GetItemTypeID()))
-            continue
-        
-#        #记录大额物品交易
-#        __LargeTradeItem(curPlayer,curTagPlayer,curItem)
-        selfTradeItemList.append(curItem.GetItem())
-        curItemNoteDict = ItemCommon.GetItemNoteDict(curItem.GetItem(), curItem.GetCount())
-        # 流向记录,记录交易失去 物品
-        #DataRecordPack.DR_TradeLostItem(curPlayer, curTagPlayer, curItem.GetItemTypeID(), 
-        #                                curItem.GetCount(), curItemNoteDict)     
-        TradeEventReport(curPlayer, curTagPlayer, curItem.GetItemTypeID(), curItem.GetCount(), "Lost")
-        ItemCommon.DR_DelItem(curPlayer, IPY_GameWorld.rptItem, "Trade", curItemNoteDict)
-        #擦除自己物品
-        curItem.Wipe()
-        
-    curPlayerID = curPlayer.GetPlayerID()
-    curTagPlayerID = curTagPlayer.GetPlayerID()    
-    #将自己物品放入对方口袋
-    for curItem in selfTradeItemList:
-        curItemTypeID = curItem.GetItemTypeID()
-        curItemCount = curItem.GetCount()
-        curItemGUID = curItem.GetGUID()      
-        
-        if not tagItemControl.PutInItem(IPY_GameWorld.rptItem, curItem, event=["Trade", True, {}]):
-            GameWorld.ErrLog("TradePutIn fail, tagPlayerID=%s, ItemDetel=%s, %s, %s" % (curTagPlayerID,
-                             curItemTypeID, curItemCount, curItemGUID), curPlayerID, curTagPlayerID)
-            return False
-
-        # 流向记录,交易购得物品, 暂时屏蔽,PutIn统一记录
-        #DataRecordPack.DR_TradeGetItem(curTagPlayer, curPlayer, curItemTypeID, curItemCount, equipNote)
-        TradeEventReport(curTagPlayer, curPlayer, curItemTypeID, curItemCount, "Get")
-        
-        #双方物品提示
-        PlayerControl.NotifyCode(curPlayer, "LostRes", [curItemTypeID, curItemCount])
-        PlayerControl.NotifyCode(curTagPlayer, "ObtainRes01", [curItemTypeID, curItemCount])
-        
-    #将对方物品放入自己口袋
-    for curItem in tagTradeItemList:
-        curItemTypeID = curItem.GetItemTypeID()
-        curItemCount = curItem.GetCount()
-        curItemGUID = curItem.GetGUID()        
-        
-        if not curItemControl.PutInItem(IPY_GameWorld.rptItem, curItem, event=["Trade", True, {}]):
-            GameWorld.ErrLog("TradePutIn, tagPlayerID=%s, ItemDetel=%s, %s, %s" % (curPlayerID,
-                             curItemTypeID, curItemCount, curItemGUID), curTagPlayerID, curPlayerID)
-            return False
-
-        # 流向记录,交易购得物品, 暂时屏蔽,PutIn统一记录
-        #DataRecordPack.DR_TradeGetItem(curPlayer, curTagPlayer, curItemTypeID, curItemCount, equipNote)
-        TradeEventReport(curPlayer, curTagPlayer, curItemTypeID, curItemCount, "Get")
-           
-        #双方物品提示
-        PlayerControl.NotifyCode(curTagPlayer, "LostRes", [curItemTypeID, curItemCount])
-        PlayerControl.NotifyCode(curPlayer, "ObtainRes01", [curItemTypeID, curItemCount])
-    
-    #金钱类型
-    tradeMoneyType = (IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper,
-                      IPY_GameWorld.TYPE_Price_Silver_Money, IPY_GameWorld.TYPE_Price_Silver_Paper)
-                      
-    #将对方的钱放入自己的口袋    
-    for typeIndex, moneyValue in enumerate(TradeMoneyCount(curTagPlayerTradeList)):
-        TradeMoney(curPlayer, curTagPlayer, moneyValue, tradeMoneyType[typeIndex])
-        
-    #将自己的钱放入对方的口袋
-    for typeIndex, moneyValue in enumerate(TradeMoneyCount(curPlayerTradeList)):
-        TradeMoney(curTagPlayer, curPlayer, moneyValue, tradeMoneyType[typeIndex])            
-    return True
-
-## 交易物品事件汇报
-#  @param None
-#  @return None
-def TradeEventReport(curPlayer, tagPlayer, itemID, itemCnt, tradeType):
-    eventParam = "PlayerID=%s,PlayerName=%s,TradeType=%s,TagPlayer=%s,ItemID=%s,ItemCount=%s" \
-                % (curPlayer.GetPlayerID(), curPlayer.GetPlayerName(), tradeType,
-                   tagPlayer.GetPlayerID(), itemID, itemCnt)
-    #EventReport.EventReport(ShareDefine.Def_UserAction_TradeItem, eventParam, curPlayer)
-    return
-
-
-## 获得交易中金钱的数量
-#  @param tradeList 交易账目
-#  @return None
-def TradeMoneyCount(tradeList):   
-    return (tradeList.GetGold(), tradeList.GetGoldPaper(), tradeList.GetSilver(), tradeList.GetSilverPaper())
-
-
-## 交易金钱转移
-#  @param curPlayer 当前玩家
-#  @param tagPlayer 目标玩家
-#  @param moneyCnt 金钱数量
-#  @param moneyType 金钱类型
-#  @return None
-def TradeMoney(curPlayer, tagPlayer, moneyCnt, moneyType):
-    if moneyCnt <= 0:
-        return
-        
-    if PlayerControl.PayMoney(tagPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_Trade):
-        PlayerControl.GiveMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_GiveMoney_Trade)
-    else:
-        GameWorld.ErrLog('TradeMoney fail, %s, %s' % (curPlayer.GetPlayerID(), tagPlayer.GetPlayerID()))
-    return
-
-
-## 交易基本判定
-#  @param curPlayer 当前玩家
-#  @param curTagPlayer 目标玩家
-#  @return None
-#  @remarks 函数详细说明.
-def TradeBasicCondition(curPlayer, curTagPlayer):
-    tradeLVLimit = ReadChConfig.GetEvalChConfig("TradeLVLimit")
-    # 发起方等级判断
-    if curPlayer.GetLV() < tradeLVLimit:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_93493")
-        return False
-    
-    #任意一方断线,交易状态取消
-    if curTagPlayer == None :
-        curPlayer.TradeMsg(5)
-        #GeRen_chenxin_795514 目标玩家不在线!
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_740521")
-        return False
-    
-    # 交易目标等级判断
-    if curTagPlayer.GetLV() < tradeLVLimit:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_67166")
-        return False
-    
-    #任意一方死亡,无法开启交易
-    if GameObj.GetHP(curPlayer) <= 0:
-        #ApplyDealingLost07 你已经死亡,交易取消!
-        PlayerControl.NotifyCode(curPlayer, "ApplyDealingLost07")
-        return False 
-    
-    if GameObj.GetHP(curTagPlayer) <= 0:
-        #ApplyDealingLost03 目标死亡,无法发出交易邀请!
-        PlayerControl.NotifyCode(curPlayer, "ApplyDealingLost03")
-        return False
-    
-    #距离判定
-    #检查玩家移动距离是否过远
-    if GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), curTagPlayer.GetPosX(), curTagPlayer.GetPosY()) > ChConfig.Def_CanTradeDist:
-        #GeRen_chenxin_671654 距离太远,无法发出交易邀请!
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_671654")
-        return False
-    
-    #GM无此功能
-#    if GameWorld.IsGM(curPlayer) or GameWorld.IsGM(curTagPlayer):
-#        PlayerControl.NotifyCode(curPlayer, "GeRen_admin_59724")
-#        return False
-    
-    return True
-
-## 检查玩家背包是否可以放下 
-#  @param curPlayer 当前玩家
-#  @param curTagPlayer 目标玩家
-#  @param tagList 目标交易
-#  @param selfList 自己交易栏
-#  @param tagPack 目标物品存在的背包
-#  @return True or False
-#  @remarks 函数详细说明.
-def TradePackCanPutIn(curPlayer, curTagPlayer, tagList, selfList, tagPack):
-    #验证背包空间---------------------------------------------------------------------
-    if ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem) + selfList.GetPutInCount() < tagList.GetPutInCount():
-        #PlayerControl.NotifyCode(curPlayer, "PackRoomageLack")
-        PlayerControl.NotifyCode(curTagPlayer, "PackFullTag", [IPY_GameWorld.rptItem])
-        #Task_WinLost_RoomLack02 您的背包空间不足,请整理背包后再来
-        PlayerControl.NotifyCode(curPlayer, "Task_WinLost_RoomLack02")
-        curPlayer.TradeMsg(4)
-        return False
-    
-    #验证金钱---------------------------------------------------------------------
-    #金钱类型
-    tradeMoneyType = (IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper,
-                      IPY_GameWorld.TYPE_Price_Silver_Money, IPY_GameWorld.TYPE_Price_Silver_Paper)
-    
-    # 验证玩家金钱是否足够,接收玩家钱是否超限
-    for typeIndex, moneyValue in enumerate(TradeMoneyCount(tagList)):
-        if not CheckMoneyValue(curTagPlayer, curPlayer, moneyValue, tradeMoneyType[typeIndex]):
-            return False
-    
-    #验证物品---------------------------------------------------------------------
-    for i in range(0, tagList.GetTradeItemCount()):
-        curTagItemIndex = tagList.GetTradeItem(i)
-        if curTagItemIndex == -1:
-            continue
-        curTagItem = tagPack.GetAt(curTagItemIndex)
-        if curTagItem.IsEmpty() or curTagItem.GetIsBind() or not curTagItem.GetCanTrade():
-            GameWorld.ErrLog("对方交易物品为空或存在绑定物品或存在不可交易物品!tagPlayerID=%s" 
-                             % (curTagPlayer.GetPlayerID()), curPlayer.GetPlayerID())
-            return False
-        
-    return True
-
-
-## 解锁交易栏中的物品 
-#  @param curPlayer 当前玩家
-#  @param tagPlayer 目标玩家
-#  @param tradeValue 交易清单
-#  @param moneyType 当前玩家
-#  @return True
-def CheckMoneyValue(curPlayer, tagPlayer, tradeValue, moneyType):
-    
-    if tradeValue <= 0:
-        return True
-    
-    # 判断金钱并提示
-    if not PlayerControl.HaveMoney(curPlayer, moneyType, tradeValue):
-        
-        #对不起,目标金钱不足,操作无效
-        PlayerControl.NotifyCode(tagPlayer, "Objective_Money_Shortage")
-#        #对不起,你的金钱不足
-#        PlayerControl.NotifyCode(curPlayer, "SilverErr")
-        return False
-    
-    if moneyType in (IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper):
-        valueLimit = ChConfig.Def_PlayerTotalMoney_Gold
-    else:
-        valueLimit = ChConfig.Def_PlayerTotalMoney_Silver
-    
-    #检查玩家金钱是否足够
-    if PlayerControl.GetMoney(tagPlayer, moneyType) + tradeValue > valueLimit:
-        
-        # 对不起,您携带的金钱已经达上限,操作无效!
-        PlayerControl.NotifyCode(tagPlayer, "GeRen_chenxin_609765")
-        #Money_Schlep_Most01 对不起,目标身上携带的金钱已经达上限,操作无效
-        PlayerControl.NotifyCode(curPlayer, "Money_Schlep_Most01")
-        tagPlayer.TradeMsg(3)
-        return False
-    
-    return True
-
-
-## 解锁交易栏中的物品 
-#  @param curPlayer 当前玩家
-#  @param list 交易清单
-#  @return True
-#  @remarks 函数详细说明.
-def unBindItem(curPlayer, list):
-    #===========================================================================
-    # pack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    # for i in range(0, list.GetTradeItemCount()):
-    #    curItemIndex = list.GetTradeItem(i)
-    #    if curItemIndex == -1:
-    #        continue
-    #    
-    #    curItem = pack.GetAt(curItemIndex)
-    #    
-    #    if curItem.IsEmpty():
-    #        continue
-    #    
-    #    curItem.SetIsEventLocked(False)
-    #===========================================================================
-        
-    return True
-
-## 解除交易
-#  @param curPlayer 当前玩家  
-#  @param Type 类型 
-#  @return None
-#  @remarks 函数详细说明.
-def unTrade(curPlayer, Type):
-    #交易成功,解除交易
-    #删除上次交易列表
-    curPlayerTradeList = curPlayer.GetTradeList()
-    if curPlayerTradeList == None:
-        curPlayer.EndTrade(Type)
-        return
-    #交易成功,清除交易列表
-    if Type == 1:
-        curPlayerTradeList.Clear()
-        curPlayer.EndTrade(Type)
-        PlayerControl.NotifyCode(curPlayer, "DealingSucceed")
-    #交易失败,解除物品锁定状态,并清除交易列表
-    elif Type == 0:
-        unBindItem(curPlayer, curPlayerTradeList)
-        curPlayerTradeList.Clear()
-        curPlayer.EndTrade(Type)
-    #异常状态
-    else:
-        GameWorld.Log("交易状态异常 type = %s" % (Type) , curPlayer.GetPlayerID())
-        return
-        
-    return True
-
-## 检查交易物品是否是可以交易的
-#  @param curPlayer 当前玩家
-#  @param curItem 当前物品
-#  @return True or False
-#  @remarks 函数详细说明.
-def CheckTradeItem(curPlayer, curItem):
-    if curItem == None or curItem.IsEmpty():
-        #无此物品
-        #GameWorld.Log("当前玩家物品不存在")
-        return False
-    
-    if curItem.GetIsBind():
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165")
-        return False
-    
-    if not curItem.GetCanTrade():
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165")
-        return False
-    
-    if ItemControler.IsEventItem(curItem):
-        PlayerControl.NotifyCode(curPlayer, "itemuse_chenxin_31379")
-        return False
-    
-    if curItem.GetIsLocked():
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_644055")
-        return False
-    
-    return True
-    
-    
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTruck.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTruck.py
deleted file mode 100644
index 19c179f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTruck.py
+++ /dev/null
@@ -1,1717 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package PlayerTruck
-# 此模块实现骠车逻辑
-#
-# @author eggxp
-# @date 2010-4-28
-# @version 3.2
-#
-# 修改时间 修改人 修改内容
-# @change: "2013-03-13 17:00" wdb 删除封包
-# @change: "2013-04-17 20:35" Alee 统一BUFF删除函数
-# @change: "2013-04-25 13:30" Alee 转移DelBuffBySkillID
-# @change: "2014-10-14 14:00" hxp 恢复封包;修改系统提示;增加每日可免费刷新镖车次数
-# @change: "2014-10-17 17:00" hxp 增加拉镖活跃度;修改奖励提示参数;修改打劫相关数值存储
-# @change: "2014-10-18 16:00" hxp 增加玩家死亡镖车处理;奖励提供reExp及reMoney;OnDay重置劫镖次数
-# @change: "2014-10-21 09:20" Alee 镖车报错简单防范
-# @change: "2014-11-12 16:30" hxp 增加拉镖/劫镖成就
-# @change: "2014-11-15 15:30" hxp 去除镖车buff逻辑
-# @change: "2014-11-15 17:30" Alee 优化拉镖速度刷新
-# @change: "2015-01-12 17:40" ljd 修改镖车等级刷新--可绑钻刷新
-# @change: "2015-01-14 00:30" hxp 增加钻石消耗类型
-# @change: "2015-01-23 17:00" ljd 修改绑钻、钻石刷新概率分开
-# @change: "2015-03-19 16:50" ljd 贵族加成
-# @change: "2015-07-10 17:30" ljd 排行榜加玩家平台参数Name2
-# @change: "2015-07-28 11:10" ljd 贵族加成 还原
-# @change: "2016-06-13 10:30" hxp 镖车修改为限时完成; 增加镖车奖励通知
-# @change: "2016-07-04 15:00" hxp 镖车刷新等级支持物品模式; 创建镖车支持额外奖励
-# @change: "2016-07-18 19:00" hxp 镖车任务状态变更事件记录点
-# @change: "2016-09-06 11:00" xdh 增加开服天护送双倍配置
-# @change: "2016-09-06 20:30" hxp 增加自动运镖状态下无敌
-# @change: "2017-03-16 21:00" hxp 经验奖励数值支持超过20亿, 镖车主人等级记录支持4位数
-#---------------------------------------------------------------------
-#"""Version = 2017-03-16 21:00"""
-#------------------------------------------------------------------------------------------------------------ 
-#
-import IPY_GameWorld
-import GameMap
-import GameWorld
-import ChConfig
-import PlayerControl
-import EventShell
-import NPCCommon
-import ReadChConfig
-#import PlayerPrestigeSys
-import ChPyNetSendPack
-import NetPackCommon
-import SkillCommon
-import ShareDefine
-import DataRecordPack
-import PlayerBillboard
-import PlayerActivity
-import PlayerSuccess
-import ItemCommon
-import ItemControler
-import QuestCommon
-import BuffSkill
-import GameObj
-#---------------------------------------------------------------------
-Def_TruckOwnerTeamID = "TeamID"  # NPC字典记录主人队伍ID
-Def_TruckOwnerFamilyID = "FamilyID"  # NPC字典记录主人家族ID
-Def_TruckOwnerNameColor = "NameColor"  # NPC字典记录主人名字颜色
-#---------------------------------------------------------------------
-#===============================================================================
-# #玩家进入骠车, 要:
-# #1.玩家属性设置为隐藏, 
-# #2.设置玩家为骠车状态,
-# #3.设置玩家为无敌状态 
-# #4.设置玩家的骠车SetTruck()  输入为召唤出来的SummonNPC类型
-# 
-# #玩家离开骠车, 要:
-# #1.玩家属性设置为不隐藏
-# #2.设置玩家为空闲状态  
-# #3.设置玩家为非无敌状态
-# #4.设置玩家的骠车SetTruck(None)
-#===============================================================================
-
-
-#===============================================================================
-# #玩家进入新场景, 要:
-# #1. 根据骠车ID找到自己的骠车
-# #------>如果找到了, 
-# #2. 骠车的SetOwner为自己
-# #3. 玩家的SetTruck为这个骠车
-#===============================================================================
-
-
-#===============================================================================
-# #玩家离开本场景:
-# #----->如果有骠车, 
-# #1. 骠车的SetOwner为None
-# #2. 玩家的SetTruck为None 
-#===============================================================================
-
-
-# 刷新镖车等级方式定义
-(
-Def_RefreshTruckLVWay_Free,    # 免费刷
-Def_RefreshTruckLVWay_Item,    # 道具刷
-Def_RefreshTruckLVWay_Money,   # 货币刷
-Def_RefreshTruckLVWay_Max,
-) = range(4)
-
-## 检测任务在地图中是否有镖车
-#  @param curPlayer 当前玩家
-#  @return True or False
-#  @remarks 函数详细说明.
-def PlayerInMapHaveTruck(curPlayer):
-
-    if curPlayer.GetTruck() != None or GameWorld.GetAllFbNPCManager().FindTruckByID(curPlayer.GetTruckID()):
-        #这个人还有骠车
-        return True
-    
-    #2009.2.23
-    #bug示例:
-    #1.清除玩家状态
-    #2.玩家接骠车任务      <- 这里会断言, 2辆骠车
-    #3.删除骠车
-    #为了安全性, 这里再次校验, 玩家没有骠车
-    if GameWorld.GetAllFbNPCManager().FindTruckByID(curPlayer.GetID() * IPY_GameWorld.Def_Player_Truck_ID_Rate):
-        return True
-    return False
-
-
-## 创建镖车 
-#  @param curPlayer 当前玩家,
-#  @param truckMoney 镖车押金
-#  @param money_type 押金类型
-#  @param summonID 召唤ID,
-#  @param eventID 事件ID
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def  CreateTruck(curPlayer,truckMoney, money_type,summonID, eventID, tick):
-    # 跨服服务器功能限制
-    if GameWorld.IsCrossServer():
-        return
-            
-    #判断是否已经存在镖车,存在消失
-#    if curPlayer.GetTruckID() != 0:
-#        GameWorld.Log("已经有骠车 ID = %d"%curPlayer.GetTruckID())
-#        return
-
-#    if PlayerControl.GetSilver(curPlayer) < truckMoney:
-#        GameWorld.Log("银子不足 押金 = %d"%truckMoney)
-#        return 
-    if PlayerInMapHaveTruck(curPlayer):
-        #这个人还有骠车
-        raise Exception("CreateTruck, Player Already Have Truck")
-        return
-
-    #=========================================================================================================
-    # if truckMoney != 0 and money_type == 0:
-    #    GameWorld.Log("押金类型不对 = %d"%(money_type) , curPlayer.GetPlayerID())
-    #    return
-    #=========================================================================================================
-    
-    #设置马匹等级
-    curPlayer.SetHorseLV(0)
-    #设置镖车当前状态
-    curPlayer.SetTruckState(IPY_GameWorld.tusNormal)
-    
-    #=========================================================================================================
-    # #设置镖车押金
-    # curPlayer.SetTruckMoney(truckMoney)
-    # curPlayer.SetTruckMoneyType(money_type)
-    #=========================================================================================================
-    
-    #设置镖车任务开始时间
-    curPlayer.SetTruckCalcStartTime(tick)
-    summonTruck = curPlayer.SummonTruck()
-    summonTruck.SetNPCTypeID(summonID)
-    #只有在设置了NPCTypeID后,才能设置其他属性
-    summonTruck.SetTickTypeCount(ChConfig.TYPE_NPC_Tick_Count)
-    
-    #设置镖车等级
-    truckLv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TruckLV)
-    
-    #记录当前押镖等级, 因为SetLV在切换地图以后会被清掉Def_Player_Dict_TruckLV在召唤出来以后删除了
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PawnTruckLV, truckLv)
-    summonTruck.SetLV(truckLv)
-    
-    summonTruck.SetOwner(curPlayer)
-    summonTruck.SetOwnerID(curPlayer.GetID())
-    summonTruck.SetCountry(curPlayer.GetCountry())
-    summonTruck.SetName(curPlayer.GetName())
-        
-    curPlayer.SetTruck(summonTruck)
-    #设置镖车ID为人物ID
-    curPlayer.SetTruckID(summonTruck.GetID())
-    curPlayer.SetTruckEventID(eventID)
-    summonPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), ChConfig.Def_DropItemDist)
-    
-    #设置镖车主人等级
-    SetTruckOwnerLV(summonTruck, curPlayer.GetLV())
-    
-    #更改镖车记录的部分主人信息
-    ChangeTruckNoteInfo(curPlayer)
-    #=========================================================================================================
-    # #在骠车身上设置骠车押金
-    # summonTruck.SetMoney(truckMoney)
-    # summonTruck.SetMoneyType(money_type)
-    #=========================================================================================================
-    
-    #创建镖车
-    summonTruck.Reborn(summonPos.GetPosX(), summonPos.GetPosY())
-        
-    #通知GameServer骠车出现
-    summonTruck.GameServer_Sync_TruckAppear()
-    
-    #全服广播
-    #Truck_hgg_246653 XXXXX开始护送XX镖车啦~大家快去【围观】啊~
-    if truckLv in ReadChConfig.GetEvalChConfig("TruckWorldNotifyLv"):
-        PlayerControl.WorldNotify(0, "Truck_hgg_246653", [curPlayer.GetName(), truckLv])
-    
-    #可召唤镖车等级设置成0
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TruckLV, 0)
-    
-    #通知客户端镖车AI模式
-    Sync_TruckMode(curPlayer)
-    
-    #设置镖车无敌
-    SkillCommon.AddBuffBySkillType(summonTruck, ChConfig.Def_SkillID_LimitSuperBuff, tick)
-    
-    #设置AI模式buff
-    AddTruckStateBuff(summonTruck, tick)
-    
-    DataRecordPack.DR_Truck(curPlayer, "Star", {"LV":truckLv})
-    
-    #更新镖车进排行榜
-    #PlayerBillboard.UpdateBillboardPlayerTruck(curPlayer.GetPlayerID(), curPlayer.GetName(), curPlayer.GetOperateInfo(),
-    #                                           curPlayer.GetLV(), truckLv, curPlayer.GetMapID())
-    
-    #拉镖活跃度
-    #PlayerActivity.AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_Truck)
-            
-    GameWorld.Log("创建镖车成功" , curPlayer.GetPlayerID())
-    return
-
-
-## 更改镖车记录的部分主人信息
-#  @param curPlayer: 玩家实例
-#  @return: None
-def ChangeTruckNoteInfo(curPlayer):
-    playerTeamID = curPlayer.GetTeamID()
-    playerFamilyID = curPlayer.GetFamilyID()
-    playerNameColor = curPlayer.GetPlayerNameColor()
-    
-    curTruck = curPlayer.GetTruck()
-    if curTruck:
-        SetTruckTeamID(curTruck, playerTeamID)
-        SetTruckFamilyID(curTruck, playerFamilyID)
-        SetTruckNameColor(curTruck, playerNameColor)
-        return
-    
-    #向GameServer请求记录信息
-    sysmsg = "%s"%([playerTeamID, playerFamilyID, playerNameColor])
-    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_NoteTruckOwnerInfo, 
-             curPlayer.GetID(), 'NoteTruckOwnerInfo', sysmsg, len(sysmsg))
-    
-    return
-
-
-## 获得记录镖车身上的主人队伍ID
-#  @param curTruck: 当前镖车
-#  @return 记录镖车身上的主人队伍ID
-def GetTruckTeamID(curTruck):
-    return curTruck.GetDictByKey(Def_TruckOwnerTeamID)
-
-
-## 设置镖车主人队伍ID
-#  @param curTruck: 镖车实例
-#  @param teamID: 队伍ID
-#  @return: 
-def SetTruckTeamID(curTruck, teamID):
-    #记录主人队伍ID
-    if curTruck.GetDictByKey(Def_TruckOwnerTeamID) == teamID:
-        return
-    
-    curTruck.SetDict(Def_TruckOwnerTeamID, teamID)
-    return
-
-
-## 获得记录镖车身上的主人名字颜色
-#  @param curTruck: 当前镖车
-#  @return 记录镖车身上的主人队伍ID
-def GetTruckNameColor(curTruck):
-    return curTruck.GetDictByKey(Def_TruckOwnerNameColor)
-
-
-## 设置镖车身上的主人名字颜色
-#  @param curTruck: 当前镖车
-#  @return 记录镖车身上的主人队伍ID
-def SetTruckNameColor(curTruck, nameColor):
-    #记录主人名字颜色
-    if curTruck.GetDictByKey(Def_TruckOwnerNameColor) == nameColor:
-        return
-    
-    curTruck.SetDict(Def_TruckOwnerNameColor, nameColor)
-    return
-
-
-## 获得记录镖车身上的主人队伍ID
-#  @param curTruck: 当前镖车
-#  @return 记录镖车身上的主人队伍ID
-def GetTruckFamilyID(curTruck):
-    return curTruck.GetDictByKey(Def_TruckOwnerFamilyID)
-
-
-## 设置镖车主人家族ID
-#  @param curTruck: 镖车实例
-#  @param teamID: 队伍ID
-#  @return: 
-def SetTruckFamilyID(curTruck, familyID):
-    #记录主人家族ID
-    if curTruck.GetDictByKey(Def_TruckOwnerFamilyID) == familyID:
-        return
-    
-    curTruck.SetDict(Def_TruckOwnerFamilyID, familyID)
-    return
-
-
-## 设置镖车金钱类型
-#  @param curTagTruck: 镖车实例
-#  @param moneyType: 金钱类型
-#  @return: None
-def __SetTruckMoneyType(curTagTruck, moneyType):
-    curTagTruck.SetMoneyType(moneyType)
-    return
-
-
-## 获取镖车金钱类型
-#  @param curTagTruck: 镖车实例
-#  @return: 镖车金钱类型
-def __GetTruckMoneyType(curTagTruck):
-    return curTagTruck.GetMoneyType()
-
-
-## 设置押镖玩家等级
-#  @param curTagTruck: 镖车实例
-#  @param ownerLV: 等级
-#  @return: None
-def SetTruckOwnerLV(curTagTruck, ownerLV):
-    __SetTruckMoneyType(curTagTruck, ownerLV)
-    return
-
-
-## 获取押镖玩家等级
-#  @param curTagTruck: 镖车实例
-#  @param ownerLV: 等级
-#  @return: None
-def GetTruckOwnerLV(curTagTruck):
-    value = __GetTruckMoneyType(curTagTruck)
-    if len(str(value)) <= 4:
-        return value
-    
-    return int(str(value)[:-4])
-
-
-## 设置劫镖玩家等级
-#  @param curTagTruck: 镖车实例
-#  @param destroyLV: 劫镖玩家等级
-#  @return: None
-def SetTruckDestroyLV(curTagTruck, destroyLV):
-    value = "%0.4d%0.4d"%(GetTruckOwnerLV(curTagTruck), destroyLV)
-    __SetTruckMoneyType(curTagTruck, int(value))
-    return
-
-
-## 获得劫镖玩家等级
-#  @param curTagTruck: 镖车实例
-#  @return: None
-def GetTruckDestroyLV(curTagTruck):
-    
-    value = __GetTruckMoneyType(curTagTruck)
-    
-    if len(str(value)) <= 4:
-        return 0
-    
-    return int(str(value)[-4:])
-
-
-#class   IPY_MTruckRefresh
-#{
-#public:
-#    //拥有者ID
-#    int      GetPlayerID();
-#    //骠车ID
-#    int      GetTruckID();
-#    //骠车状态
-#    int      GetTruckState();
-#};
-
-## 游戏服务器镖车刷新(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def  GameServer_TruckRefresh(index, tick):
-    sendPack = IPY_GameWorld.IPY_MTruckRefresh()
-    #GetAllFbNPCManager : 得到所有副本中的NPC管理器, 骠车存在于所有有副本
-    curTruck = GameWorld.GetAllFbNPCManager().FindTruckByID(sendPack.GetTruckID())
-    if curTruck == None:
-        GameWorld.Log("没有要刷新的骠车 id = %d"%sendPack.GetTruckID())
-        return
-    
-    if (sendPack.GetTruckState() == IPY_GameWorld.tusDisappear):
-        #设置为消失状态, 在AI中处理自己的消失逻辑
-        #因为封包处理是在副本1中, 骠车有可能在副本2,3,4...中, 消失逻辑必须在当前副本处理
-        curTruck.SetIsDisappear(1)
-        
-        ##删除排行榜上的镖车信息
-        #PlayerBillboard.UpdateBillboardPlayerTruck(curTruck.GetOwnerID(), "", "", "", "", 0)
-            
-#        curPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTruck)
-#
-#        if curPlayer:
-#            #骠车消失
-#            if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
-#                #如果玩家的交通工具为骠车的话, 离开骠车
-#                PlayerTruckDown(curPlayer, curTruck)
-#    
-#            curPlayer.SetTruckID(0)
-#            curPlayer.SetTruckState(IPY_GameWorld.tusNull)
-#            curPlayer.SetTruck(None)
-#            
-#        curTruck.Disappear()
-        return
-
-    return
-
-
-#class       IPY_MTruckMsg
-#{
-#    //get自动生成
-#    int      GetHead();
-#    int      GetType();                //1.被攻击通知
-#
-#    //set自动生成
-#    void                SetHead(int inputHead);
-#    void                SetType(int inputType);         //1.被攻击通知
-#};
-## 游戏服务器镖车信息(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def  GameServer_TruckMsg(index, tick):
-    sendPack = IPY_GameWorld.IPY_MTruckMsg()
-    return
-
-
-## 骠车刷新回应(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_TruckRefreshAnswer(index, tick):
-    sendPack = IPY_GameWorld.IPY_MTruckRefreshAnswer()
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if sendPack.GetPlayerID() != curPlayer.GetID():
-        #不是自己的骠车
-        return 
-    
-    if curPlayer.GetTruckID() != 0 and sendPack.GetTruckID() == 0:
-        OnPlayerTruckDisappear(curPlayer)
-        return 
-    
-    curPlayer.SetTruckID(sendPack.GetTruckID())
-    
-    #设置镖车状态buff
-    curTruck = curPlayer.GetTruck()
-    if curTruck:
-        AddTruckStateBuff(curTruck, tick)
-        
-    #通知客户端镖车AI模式
-    Sync_TruckMode(curPlayer)
-    
-    GameWorld.Log("收到骠车刷新回应, id = %d, mapid = %d"%(sendPack.GetTruckID(), sendPack.GetMapID()) , curPlayer.GetPlayerID())
-    return
-
-## 玩家镖车失败丢失
-def OnPlayerTruckDisappear(curPlayer):
-    #骠车丢失, 触发骠车丢失任务
-    curPlayer.SetTruckID(0)
-    curPlayer.SetTruckState(IPY_GameWorld.tusDisappear)
-    curPlayer.SetTruck(None)
-    
-    DataRecordPack.DR_Truck(curPlayer, "Disappear", {})
-    
-    #Truck_hgg_149184:您已离线超过5分钟,镖车被回收.
-    PlayerControl.NotifyCode(curPlayer, "Truck_hgg_149184")
-    EventShell.EventRespons_OnTruckDisappear(curPlayer, curPlayer.GetTruckEventID())
-    return
-
-## 删除玩家的骠车
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def DelTruck(curPlayer):
-    curTruck = curPlayer.GetTruck()
-    if curTruck == None:
-        GameWorld.Log("DelTruck -> 没有骠车可删除!" , curPlayer.GetPlayerID())
-        curPlayer.GameServer_DelTruck()
-        return
-    
-    if GetHaveAutoTruck(curPlayer):
-        #如果玩家的交通工具为骠车的话, 离开骠车
-        PlayerTruckDown(curPlayer, curTruck)
-        
-        
-    curPlayer.SetTruckID(0)
-    curPlayer.SetTruckState(IPY_GameWorld.tusNull)
-    curPlayer.SetTruck(None)
-    
-    curTruck.GameServer_Sync_TruckState(IPY_GameWorld.tusNull)
-    curTruck.Disappear()
-    
-    #删除排行榜上的镖车信息
-    #PlayerBillboard.UpdateBillboardPlayerTruck(curPlayer.GetID(), "", "", "", "", 0)
-    
-    GameWorld.Log("删除玩家骠车" , curPlayer.GetPlayerID())
-    #GameWorld.Log("通知GameServer骠车消失!")
-    
-    return
-
-#玩家进入骠车
-#//////////////////////////////////////////////////////////////
-#//0B 02 玩家进入骠车#tagCGetOnTruck
-#tagCGetOnTruck       *   GettagCGetOnTruck();
-#
-#class   IPY_CGetOnTruck
-#{
-#public:
-#    //1:下车 2:上车
-#    int      GetType();
-#};
-
-#能够开始人镖合一的状态
-Def_CanTruckCarryState = [IPY_GameWorld.paNull]
-
-## 执行玩家进入镖车逻辑
-#  @param curPlayer 当前玩家
-#  @param curPlayerType 当前玩家状态
-#  @param tick 当前时间 
-#  @return None
-#  @remarks 函数详细说明.
-def DoPlayerEnterTruck(curPlayer, curPlayerType, tick):
-    #镖车
-    curPlayerTruck = curPlayer.GetTruck()
-    #该玩家无镖车
-    if curPlayerTruck == None :
-        GameWorld.Log("DoPlayerEnterTruck -> 无法找到镖车" , curPlayer.GetPlayerID())
-        return
-    
-#    if GameObj.GetHP(curPlayerTruck) == 0:
-#        GameWorld.Log("镖车已死亡, 拒绝")
-#        return
-    
-    #下车逻辑
-    if curPlayerType == 1:
-        if CheckTruckCarryerDown(curPlayer,curPlayerTruck) != True :
-            return
-        #下车
-        PlayerTruckDown(curPlayer,curPlayerTruck)
-    #上车逻辑
-    elif curPlayerType == 2:
-        #判定条件,无法人镖合一
-        if curPlayer.GetPlayerAction() not in Def_CanTruckCarryState:
-            #GameWorld.Log("上骠车状态不对") 
-            return
-        
-        if not CheckTruckCarryerUP(curPlayer,curPlayerTruck):
-            #GameWorld.Log("人镖合一,无效果 speed = %d"%curPlayerTruck.GetSpeed())
-            return
-        
-        GameWorld.Log("准备人镖合一开始" , curPlayer.GetPlayerID() )
-        PlayerControl.Sync_PrepareBegin( curPlayer, ChConfig.Def_RidehorseTime, IPY_GameWorld.pstTruck )
-        
-    else:
-        GameWorld.Log("人镖合一,封包类型 = %s错误"%(curPlayerType) , curPlayer.GetPlayerID())
-        
-    return
-
-## 人镖合一中(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def OnPlayerEnterTruck(index, tick):
-#===============================================================================
-#    sendPack = IPY_GameWorld.IPY_CGetOnTruck()
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    curPlayerType = sendPack.GetType()
-#    DoPlayerEnterTruck(curPlayer, curPlayerType, tick)
-#===============================================================================
-    return
-
-## 上车逻辑检查 
-#  @param curPlayer 当前玩家
-#  @param curPlayerTruck 玩家镖车
-#  @return True or False
-#  @remarks 函数详细说明.
-def CheckTruckCarryerUP(curPlayer,curPlayerTruck):
-    #该玩家无镖车
-    if curPlayerTruck == None :
-        #GameWorld.Log("无法找到镖车")
-        return False
-    
-    if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvNull :
-        PlayerControl.NotifyCode(curPlayer,"Old_hgg_874335")
-        #GameWorld.Log("curPlayer.GetPlayerVehicle()不为空 状态不对") 
-        return False
-    
-    if not curPlayer.IsAlive():
-        #死亡状态不处理
-        #GameWorld.Log("死亡状态不处理")
-        return False
-    
-    #战斗状态返回
-    if curPlayer.IsBattleState() :
-        PlayerControl.NotifyCode(curPlayer,"Old_hgg_287294")
-        #GameWorld.Log("人镖合一失败, 人物在战斗状态")
-        return False
-    
-    #红名不能上镖车
-    if curPlayer.GetPlayerNameColor() == IPY_GameWorld.pncRed :
-        #Old_hgg_772753 对不起,红名玩家无法上镖车
-        PlayerControl.NotifyCode(curPlayer,"Old_hgg_772753")
-        return False
-    
-    #判断距离
-    #获得玩家和镖车间的距离
-    dist = GameWorld.GetDist(curPlayerTruck.GetPosX(), curPlayerTruck.GetPosY(),
-                             curPlayer.GetPosX(),curPlayer.GetPosY())
-    #人镖合一的距离
-    if dist > ChConfig.Def_PlayerTruckCarryerDist:
-        PlayerControl.NotifyCode(curPlayer,"Old_hgg_976459")
-        #GameWorld.Log("人镖合一失败,超出最大距离")
-        return False
-    
-    return True
-
-## 玩家上镖车
-#  @param curPlayer 当前玩家
-#  @param resetPos 上车后是否重置自己的位置
-#  @param checkState 是否检测玩家当前状态
-#  @param checkCanCarryerUp 是否强制上车
-#  @return None
-#  @remarks 函数详细说明.
-def PlayerTruckUP(curPlayer, resetPos = True, checkState = True, checkCanCarryerUp = True):
-    #不在准备状态
-    if checkState and curPlayer.GetPlayerAction() != IPY_GameWorld.paPreparing:
-        #GameWorld.Log("不在准备状态")
-        return
-    
-    curPlayerTruck = curPlayer.GetTruck()
-    
-    if not curPlayerTruck:
-        return
-    
-    if checkCanCarryerUp and not CheckTruckCarryerUP(curPlayer,curPlayerTruck):
-        #不要用curPlayerTruck, 因为curPlayerTruck有可能为空
-        #GameWorld.Log("人镖合一,无效果")
-        return
-        
-    #添加背负者
-    curPlayerTruck.AddCarryPlayer(curPlayer)
-    #设置玩家为无敌状态
-    curPlayer.SetCanAttack(False)
-    #设置为不可见状态
-    curPlayer.SetVisible(False)
-    #设置背负者
-    curPlayer.SetCarryerNPC(curPlayerTruck)
-    #设置玩家坐标为镖车坐标
-    if resetPos:
-        GameWorld.ResetPlayerPos( curPlayer, curPlayerTruck.GetPosX(), curPlayerTruck.GetPosY() )
-        
-    #设置玩家交通工具:镖车
-    curPlayer.SetPlayerVehicle(IPY_GameWorld.pvTruck)
-    
-    #通知客户端
-    curPlayer.Sync_GetOnTruck(1)
-    curPlayerTruck.StopMove()
-    GameWorld.Log("人镖合一,成功" , curPlayer.GetPlayerID())
-    return
-
-## 下车逻辑检查 
-#  @param curPlayer 当前玩家
-#  @param curPlayerTruck 当前玩家镖车
-#  @return True or False
-#  @remarks 函数详细说明.
-def CheckTruckCarryerDown(curPlayer,curPlayerTruck) :
-    if curPlayer.GetPlayerVehicle() != IPY_GameWorld.pvTruck:
-        return False
-    return True
-
-## 下车(参数 -> 当前玩家,当前玩家镖车)
-#  @param curPlayer 当前玩家
-#  @param curPlayerTruck 当前玩家镖车
-#  @return None
-#  @remarks 函数详细说明.
-def PlayerTruckDown(curPlayer,curPlayerTruck) :
-    return
-
-    #卸下背负者
-    curPlayerTruck.PutDownPlayer(curPlayer)
-    #设置玩家为非无敌状态
-    curPlayer.SetCanAttack(True)
-    #设置为可见
-    curPlayer.SetVisible(True)
-    #设置背负者
-    curPlayer.SetCarryerNPC(None)
-    #设置交通工具
-    curPlayer.SetPlayerVehicle(IPY_GameWorld.pvNull)
-    
-    #通知客户端
-    curPlayer.Sync_GetOnTruck(0)
-    curPlayerTruck.StopMove()
-    return 
-
-## 镖车销毁逻辑 
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def DoPlayerTruckDestroy(curPlayer):
-    GameWorld.Log( "玩家骠车毁坏!" , curPlayer.GetPlayerID() )
-    
-    EventShell.EventRespons_OnTruckDestroy( curPlayer, curPlayer.GetTruckEventID() )
-    
-#===============================================================================
-#    2009.05.10 因破损的镖车切换地图将调用到这里,导致玩家进入破镖车切地图下车,下车逻辑修改到玩家被攻击时
-#    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck:
-#        #如果玩家在人镖合一状态, 下骠车
-#        #GameWorld.Log("如果玩家在人镖合一状态, 下骠车")
-#        curPlayerTruck = curPlayer.GetTruck()
-#        #该玩家无镖车
-#        if curPlayerTruck == None :
-#            GameWorld.Log("DoPlayerTruckDestroy -> 无法找到镖车" , curPlayer.GetPlayerID())
-#            return
-#        
-#        PlayerTruckDown(curPlayer,curPlayerTruck)
-#===============================================================================
-
-## GameServer通知玩家骠车刷新(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def GameServer_PlayerTruckStateRefresh(index, tick):
-    sendPack = IPY_GameWorld.IPY_MPlayerTruckStateRefresh()
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if curPlayer == None:
-        #无此玩家了
-        return
-    
-    if sendPack.GetPlayerID() != curPlayer.GetID():
-        #不是自己的封包
-        return 
-    curState = sendPack.GetState()
-    curPlayer.SetTruckState(curState)
-    if curState == IPY_GameWorld.tusDestroy: 
-        DoPlayerTruckDestroy(curPlayer)
-        return
-    
-    if curState == IPY_GameWorld.tusNull:
-        #骠车消失
-            
-        curPlayer.SetTruckID(0)
-        curPlayer.SetTruck(None)
-        return
-    
-############################################打烂逻辑#######################    
-## 执行镖车损坏
-#  @param curTruck 当前镖车
-#  @return None
-#  @remarks 骠车被打烂了, 通知远在地图另外一端的主人这个悲痛的信息
-def DoTruckDestroy(curTruck):
-    
-    if not curTruck.GetCanAttack():
-        #已经执行过镖车被打坏奖励
-        return
-    
-    #骠车毁坏
-    curTruck.GameServer_Sync_TruckState(IPY_GameWorld.tusDestroy)
-    curTruck.SetCanAttack(0)
-    curTruck.StopMove()
-    
-    #骠车被玩家杀死给玩家钱
-    DoTruckKilledGiveKillerPlayerMoney(curTruck)
-    
-    #镖车主人ID
-    truckOwnerID = curTruck.GetOwnerID()
-    
-    #已经被打劫下榜
-    #PlayerBillboard.UpdateBillboardPlayerTruck(truckOwnerID, "", "", "", "", 0)
-    #-----------------------
-    
-    #获取镖车主人
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTruck)
-    killTruckPlayer = GetKillTruckPlayer(curTruck)
-    if killTruckPlayer:
-        killTruckPlayerName = killTruckPlayer.GetName()
-    else:
-        killTruckPlayerName = ""
-        
-    exp, zhenQi, prestige, moneyCnt, moneyType, truckState, isDoubleAward = __GetTruckAwack(curTagPlayer, curTruck, 1)
-    if not curTagPlayer:
-        #当前地图找不到镖车的主人, 请求GameServer通知
-        sendMsg = str([killTruckPlayerName, exp, zhenQi, prestige, moneyCnt, moneyType])
-        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(truckOwnerID, 0, 0, 
-                                              'NotifyTruckDestroy', sendMsg, len(sendMsg))
-        return
-    
-    if killTruckPlayerName:
-        #Truck_hgg_492527 您的镖车被XXXX打劫,损失XXX经验,XXX金币,xxx魔魂
-        PlayerControl.NotifyCode(curTagPlayer, "Truck_hgg_492527", [killTruckPlayerName, exp, 
-                                                                    moneyCnt, zhenQi])
-    else:
-        #Truck_hgg_887936 您的镖车惨遭洗劫,损失XXX经验,XXX金币,xxx魔魂
-        PlayerControl.NotifyCode(curTagPlayer, "Truck_hgg_887936", [exp, moneyCnt, zhenQi])
-    
-    DataRecordPack.DR_Truck(curTagPlayer, "Destroy", {"MoneyCount":moneyCnt, "ZhenQi":zhenQi, "Prestige":prestige})
-    GameWorld.Log("骠车被打烂了, 通知远在地图另外一端的主人这个悲痛的信息 = %s"%(curTruck.GetID()))
-    return
-
-
-## 获取劫镖玩家
-#  @param curTruck: 镖车实例
-#  @return: 劫镖玩家
-def GetKillTruckPlayer(curTruck):
-    npcHurtList = curTruck.GetPlayerHurtList()
-    maxHurtObj = npcHurtList.GetLastTimeHurtValue()  # 最后补刀者
-    
-    if  maxHurtObj.GetValueType() == ChConfig.Def_NPCHurtTypeNPC:
-        #最后补刀者是NPC
-        curNPC = GameWorld.GetObj(maxHurtObj.GetValueID(), IPY_GameWorld.gotNPC)
-        return NPCCommon.GetNpcObjOwnerDetail(curNPC)
-    
-    if maxHurtObj.GetValueType() == ChConfig.Def_NPCHurtTypePlayer:
-        #最后补刀者是玩家
-        return GameWorld.GetObj(maxHurtObj.GetValueID(), IPY_GameWorld.gotPlayer)
-    
-    return None
-
-
-## 骠车被玩家杀死, 给玩家钱 
-#  @param curTruck 当前镖车
-#  @return None
-#  @remarks 函数详细说明.
-def DoTruckKilledGiveKillerPlayerMoney(curTruck):
-    curPlayer = GetKillTruckPlayer(curTruck)
-    if not curPlayer:
-        #当前地图找不到劫镖的玩家
-        return
-    
-    #Truck_hgg_279029 XXXXX的XX镖车被OOOO抢劫了
-    truckLV = curTruck.GetLV()
-    if truckLV in ReadChConfig.GetEvalChConfig("TruckWorldNotifyLv"):
-        PlayerControl.WorldNotify(0, "Truck_hgg_279029", [curTruck.GetName(), truckLV, curPlayer.GetName()])
-    
-    if not CanAttackTruck(curPlayer):
-        #Truck_hgg_481766 XXX的镖车已经被您破坏,但是您今日剩余劫镖次数为0,所以无法获得收益.
-        PlayerControl.NotifyCode(curPlayer, "Truck_hgg_481766", [curTruck.GetName()]) 
-        return
-    
-    #设置劫镖玩家等级
-    SetTruckDestroyLV(curTruck, curPlayer.GetLV())
-    
-    #给予镖车奖励
-    GiveTruckAward(curPlayer, curTruck, 1)
-    
-    #设置劫镖次数+1
-    destroyTruckCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_DestroyTruckCnt)
-    SetDestroyTruckCnt(curPlayer, destroyTruckCnt + 1)
-    
-
-## 设置劫镖次数
-#  @param curPlayer: 玩家实例
-#  @param count: 劫镖次数
-#  @return: None
-def SetDestroyTruckCnt(curPlayer, count):
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_DestroyTruckCnt, count)
-    
-    #通知客户端劫镖次数
-    Sync_DestroyTruckCnt(curPlayer)
-    return
-
-
-## 获取镖车奖励(劫镖和运镖)
-#  @param curPlayer: 玩家实例
-#  @param curTruck: 劫的镖车实例
-#  @param awardType: 奖励类型: 0:运镖奖励, 1:劫镖奖励
-#  @return: 奖励的经验, 真气, 威望, 金钱, 金钱类型
-def __GetTruckAwack(curPlayer, curTruck, awardType=0, isTimeOut=False):
-    #给予奖励
-    baseExp = GetTruckBaseExp(curTruck)  # 基础经验
-    baseZhenQi = GetTruckBaseZhenQi(curTruck)  # 基础真气
-    basePrestige = GetTruckBasePrestige(curTruck)  # 基础威望
-    baseMoney, moneyType = GetTruckBaseMoney(curTruck)  # 基础金钱
-    truckLv = curTruck.GetLV()  # 镖车等级
-    truckOwnerLV = GetTruckOwnerLV(curTruck)  # 押镖玩家等级
-    truckDestroyLV = GetTruckDestroyLV(curTruck)  # 劫镖玩家等级
-    reExp = 0
-    reMoney = 0
-    if truckDestroyLV <= 0:
-        truckDestroyLV = truckOwnerLV
-        
-    truckState = IsTruckDestroy(curTruck)  # 镖车状态(完好或被劫)
-    
-    if awardType == 1:
-        truckAwardDict = ReadChConfig.GetEvalChConfig("TruckDestroyAward")
-    else:
-        truckAwardDict = ReadChConfig.GetEvalChConfig("TruckOverAward")
-        awardKey = 1 if (truckState or isTimeOut) else 0 # 被劫和超时奖励一样
-        truckAwardDict = truckAwardDict.get(awardKey, {})
-    
-    exp = int(eval(truckAwardDict.get("Exp", "0")))  # 经验
-    zhenQi = int(eval(truckAwardDict.get("ZhenQi", "0")))  # 真气
-    prestige = int(eval(truckAwardDict.get("Prestige", "0")))  # 威望
-    moneyCnt = int(eval(truckAwardDict.get("Money", "0")))  # 金钱
-    
-    #如果在双倍奖励时间段内,奖励翻倍
-    isDoubleAward = CheckDoubleAward()
-    if isDoubleAward:
-        exp, zhenQi, prestige, moneyCnt = exp*2, zhenQi*2, prestige*2, moneyCnt*2
-        
-    if curPlayer and awardType == 0:
-        # 贵族加成
-        pass
-    
-    return exp, zhenQi, prestige, moneyCnt, moneyType, truckState, isDoubleAward
-
-
-## 给予镖车奖励
-#  @param curPlayer: 玩家实例
-#  @param curTruck: 劫的镖车实例
-#  @param awardType: 奖励类型: 0:运镖奖励, 1:劫镖奖励
-#  @return: None
-def GiveTruckAward(curPlayer, curTruck, awardType=0, isTimeOut=False):
-    exp, zhenQi, prestige, moneyCnt, moneyType, truckState, isDoubleAward = __GetTruckAwack(curPlayer, curTruck, awardType, isTimeOut)
-    if awardType == 1:
-        #Truck_hgg_827276 您打劫了XXX的镖车,一共获得XXX经验,XXX金币,xxx魔魂
-        PlayerControl.NotifyCode(curPlayer, "Truck_hgg_827276", [curTruck.GetName(), exp, moneyCnt, zhenQi])
-        
-        DataRecordPack.DR_Truck(curPlayer, "Kill", {"MoneyCount":moneyCnt, "ZhenQi":zhenQi, "Prestige":prestige})
-        
-        #请求记录劫镖信息供客户端显示
-        GameWorld.AddUniversalGameRec(curPlayer.GetPlayerID(), ShareDefine.Def_UniversalGameRecType_HijackTruck, 
-                                      [curTruck.GetLV(), exp, moneyCnt, zhenQi], [curPlayer.GetName(), curTruck.GetName(), ""])
-    else:
-        #Truck_hgg_20296 您在本次护送镖车的任务中一共获得XXX经验,XXX金币,xxx魔魂
-        #PlayerControl.NotifyCode(curPlayer, "Truck_hgg_20296", [exp, moneyCnt, zhenQi])
-        DataRecordPack.DR_Truck(curPlayer, "End", {"MoneyCount":moneyCnt, "ZhenQi":zhenQi, "Prestige":prestige})
-    
-    #经验
-    if exp > 0:
-        playerControl = PlayerControl.PlayerControl(curPlayer)
-        playerControl.AddExp(exp)
-    
-    #真气
-    if zhenQi > 0:
-        PlayerControl.PlayerAddZhenQi(curPlayer, zhenQi, True, True, "Truck")
-    
-#    #威望
-#    if prestige > 0:
-#        PlayerPrestigeSys.AddPrestigeOffcialLV(curPlayer, prestige, ChConfig.Def_AddPrestige_Truck)
-        
-    #金钱
-    if moneyCnt > 0:
-        addDataDict = {ChConfig.Def_Give_Reason_SonKey:awardType}
-        PlayerControl.GiveMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_GiveMoney_Truck, addDataDict)
-        
-    #流向记录
-    
-    # 成就
-#    if awardType == 0:
-#        #押镖次数累计任务
-#        EventShell.EventRespons_TruckCnt(curPlayer)
-#        
-#        succType = ShareDefine.SuccType_Truck
-#    else:
-#        succType = ShareDefine.SuccType_TruckRob
-#    PlayerSuccess.DoAddSuccessProgress(curPlayer, succType, 1)
-    
-    truckAward = ChPyNetSendPack.tagMCTruckAward()
-    truckAward.Clear()
-    truckAward.AwardType = awardType
-    truckAward.Exp = exp % ChConfig.Def_PerPointValue
-    truckAward.ExpPoint = exp / ChConfig.Def_PerPointValue
-    truckAward.ZhenQi = zhenQi
-    truckAward.Prestige = prestige
-    truckAward.MoneyType = moneyType
-    truckAward.MoneyCnt = moneyCnt
-    truckAward.IsDestroy = truckState
-    truckAward.IsDouble = isDoubleAward
-    truckAward.IsTimeOut = isTimeOut
-    NetPackCommon.SendFakePack(curPlayer, truckAward)
-    GameWorld.DebugLog("GiveTruckAward exp=%s, zhenQi=%s, prestige=%s, moneyCnt=%s, moneyType=%s, truckState=%s, isDoubleAward=%s, isTimeOut=%s" 
-                       % (exp, zhenQi, prestige, moneyCnt, moneyType, truckState, isDoubleAward, isTimeOut))
-    return
-
-########################################################################### 
-
-## 骠车受到攻击的响应 
-#  @param curTruck 当前镖车
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoTruckUndeaAttackNotify(curTruck, tick):
-    if tick - curTruck.GetLastUnderAttackNotifyTick() < ChConfig.Def_TruckNotifyToOwnerTick:
-        #通知时间未到
-        return
-    
-    curTruck.SetLastUnderAttackNotifyTick(tick)
-    curPlayer = curTruck.GetOwner()
-    if curPlayer == None:
-        #需要发送给GameServer通知
-        curPlayer.GameServer_TruckMsg(IPY_GameWorld.ttmUnderAttack)
-        return
-    
-    curPlayer.Sync_TruckMsg(IPY_GameWorld.ttmUnderAttack)
-    return
-
-## 客户端发来玩家设置骠车模式(封包参数)
-#  @param index 玩家索引
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def OnPlayerSetTruckMode(index, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    curTruck = curPlayer.GetTruck()
-    if not curTruck:
-        GameWorld.Log("OnPlayerSetTruckMode -> 没有骠车可设置!" , curPlayer.GetPlayerID())
-        return
-     
-    if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_SetTruckMode) <= ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_SetTruckMode]:
-        #Old_hgg_141056 对不起,你设置镖车模式间隔太短,请稍后再试!
-        PlayerControl.NotifyCode(curPlayer, "Old_hgg_141056")
-        return
-    
-    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_SetTruckMode, tick)
-    
-    pack = IPY_GameWorld.IPY_CSetTruckMode()
-    mode = pack.GetMode()
-    
-    if mode not in [IPY_GameWorld.trmStop , IPY_GameWorld.trmDefault]:
-        return
-    
-    if curTruck.GetMode() == mode:
-        return
-    
-    curTruck.SetMode(mode)
-    
-    #通知客户端镖车AI模式
-    Sync_TruckMode(curPlayer)
-    
-    #设置AI模式buff
-    AddTruckStateBuff(curTruck, tick)
-    return
-
-## 通知玩家镖车坐标 
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间 
-#  @return None
-#  @remarks 函数详细说明.
-def NotifyPosInfoToPlayer(curPlayer, tick):
-    curTruck = curPlayer.GetTruck()
-    if curTruck == None:
-        return
-    
-    if curPlayer.CanSeeOther(curTruck) == True:
-        #能够看到骠车, 不通知
-        return
-    
-    curPlayer.Sync_TruckPosInfo() 
-    
-    
-#------------------------------------------------------------------------------------------------------------ 
-## 获得镖车的基础奖励
-#  @param curTruck: 镖车实例
-#  @return: 当前镖车等级基础奖励字典
-def __GetTruckBaseAward(curTruck):
-    if not curTruck:
-        return {}
-    
-    curTruckLv = curTruck.GetLV()
-    baseAwardDict = ReadChConfig.GetEvalChConfig("TruckBaseAward")
-    return baseAwardDict.get(curTruckLv, {})
-
-
-## 获得镖车的基础经验奖励
-#  @param curTruck: 镖车实例
-#  @return: 基础经验奖励
-def GetTruckBaseExp(curTruck):
-    return __GetTruckBaseAward(curTruck).get("baseExp", 0)
-
-
-## 获得镖车的基础真气奖励
-#  @param curTruck: 镖车实例
-#  @return: 基础真气奖励
-def GetTruckBaseZhenQi(curTruck):
-    return __GetTruckBaseAward(curTruck).get("baseZhenQi", 0)
-
-
-## 获得镖车的基础威望奖励
-#  @param curTruck: 镖车实例
-#  @return: 基础威望奖励
-def GetTruckBasePrestige(curTruck):
-    return __GetTruckBaseAward(curTruck).get("basePrestige", 0)
-
-
-## 获得镖车的基础金钱奖励
-#  @param curTruck: 镖车实例
-#  @return: 基础金钱奖励[金钱数量, 金钱类型]
-def GetTruckBaseMoney(curTruck):
-    return __GetTruckBaseAward(curTruck).get("baseMoney", [0, IPY_GameWorld.TYPE_Price_Silver_Money])
-
-
-## 可否劫镖
-#  @param curPlayer: 玩家实例
-#  @return 可否劫镖
-def CanAttackTruck(curPlayer):
-    destroyTruckCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_DestroyTruckCnt)
-    destroyTruckMaxCnt = ReadChConfig.GetEvalChConfig("TruckDestroyCnt")
-    
-    return destroyTruckCnt < destroyTruckMaxCnt
-
-## 获取最大劫镖次数
-#  @param None
-#  @return
-def GetDestroyTruckMaxCnt():
-    return ReadChConfig.GetEvalChConfig("TruckDestroyCnt")
-
-## 是否损坏镖车
-#  @param curTruck: 镖车实例
-#  @return: 是否损坏镖车
-def IsTruckDestroy(curTruck):
-    
-    curTagPlayer = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curTruck)
-    if curTagPlayer :
-        if curTagPlayer.GetTruckState() == IPY_GameWorld.tusDestroy:
-            return True
-    
-    minHP = GetTruckDestroyMinHP(curTruck)
-    if GameObj.GetHP(curTruck) <= minHP:
-        return True
-    
-    return False
-
-
-## 损坏镖车最小血量
-#  @param curTruck: 当前镖车
-#  @return: 损坏镖车最小血量
-def GetTruckDestroyMinHP(curTruck):
-    destroyMinHPRate = ReadChConfig.GetEvalChConfig("TruckDestroyMinHPRate")
-    minHP = max(0, int(GameObj.GetMaxHP(curTruck) * destroyMinHPRate/float(ChConfig.Def_MaxRateValue)))
-    return minHP
-
-
-## 是否自动运镖
-#  @param# curPlayer:玩家实例
-#  @return: 是否自动运镖
-def GetHaveAutoTruck(curPlayer):
-    return curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_AutoTruck) == ShareDefine.Def_Enter_Truck
-
-
-## 设置自动运镖状态
-#  @param curPlayer: 玩家实例
-#  @return: None
-def SetAutoTruckState(curPlayer, state):
-    curState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_AutoTruck)
-    if curState == state:
-        return
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_AutoTruck, state)
-    
-    tick = GameWorld.GetGameWorld().GetTick()
-    if state == ShareDefine.Def_Enter_Truck:
-        SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ShareDefine.Def_SkillID_AutoTruck, tick)
-    else:
-        BuffSkill.DelBuffBySkillID(curPlayer, ShareDefine.Def_SkillID_AutoTruck, tick)
-    
-    #刷新角色属性
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.RefreshPlayerAttrByBuff()
-    return
-
-#------------------------------------------------------------------------------------------------------------
-#=============================================================================================================
-#// AE 01 刷新镖车等级#tagPyRefurbishTruckLV
-#
-#struct     tagPyRefurbishTruckLV
-#{
-#    tagHead        Head;
-#    BYTE        CostType;    //消耗类型: 0-免费刷新; 1-道具; 2-货币
-#    BYTE        MoneyType;    //花费金钱类型
-#    DWORD        ItemID;        //使用的道具ID
-#    BYTE        IsAutoBuy;    //道具刷新时是否自动购买; 0-否;1-是
-#};
-## 玩家刷新镖车等级
-#  @param index:玩家索引
-#  @param clientData:封包结构体
-#  @param tick:时间戳
-#  @return: None
-def PlayerRefurbishTruckLV(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if PlayerInMapHaveTruck(curPlayer):
-        #玩家在地图中有骠车
-        GameWorld.ErrLog("PlayerBuyTruckLV player have truck ")
-        return
-    
-    curTruckLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TruckLV)  # 当前镖车等级
-    
-    refurbishTruckLVDict = ReadChConfig.GetEvalChConfig("RefurbishTruckLV")
-    if not refurbishTruckLVDict:
-        return
-    
-    if curTruckLV >= max(refurbishTruckLVDict):
-        GameWorld.DebugLog("镖车已满级!")
-        return
-    
-    upTruckLvInfoList = refurbishTruckLVDict.get(curTruckLV, [])
-    if not upTruckLvInfoList or len(upTruckLvInfoList) != Def_RefreshTruckLVWay_Max:
-        #找不到刷新当前镖车等级的消耗或已经是最高等级
-        GameWorld.ErrLog("PlayerRefurbishTruckLV, curTruckLV=%s not in RefurbishTruckLV.txt! or config Len err!" % (curTruckLV))
-        return
-    
-    costType = clientData.CostType
-    moneyType = clientData.MoneyType
-    costItemID = clientData.ItemID
-    isAutoBuy = clientData.IsAutoBuy
-    GameWorld.DebugLog("刷新镖车等级: costType=%s,moneyType=%s,costItemID=%s,isAutoBuy=%s,curTruckLV=%s" 
-                       % (costType, moneyType, costItemID, isAutoBuy, curTruckLV), curPlayer.GetPlayerID())
-    autoBuyGostGold = 0
-    drDict = {"LV":curTruckLV}
-    
-    # 消耗验证检查
-    if costType == Def_RefreshTruckLVWay_Free:
-        upLvRate, upLv, downLv = upTruckLvInfoList[costType]
-        freeCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FreeRefurbishTruckCnt)
-        maxFreeCnt = ReadChConfig.GetEvalChConfig("RefurbishTruckLVFreeCnt")
-        if freeCnt >= maxFreeCnt:
-            GameWorld.DebugLog("    没有免费次数! freeCnt=%s >= maxFreeCnt=%s" % (freeCnt, maxFreeCnt))
-            return
-        
-    elif costType == Def_RefreshTruckLVWay_Item:
-        costItemInfoDict = upTruckLvInfoList[costType]
-        if costItemID not in costItemInfoDict:
-            GameWorld.DebugLog("    curTruckLV=%s,costItemID=%s not configuration!!!" % (curTruckLV, costItemID))
-            return
-        upLvRate, costItemCnt, upLv, downLv = costItemInfoDict[costItemID]
-        
-        itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-        lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList([(costItemID, costItemCnt)], itemPack)
-        if lackItemDict:
-            if not isAutoBuy:
-                GameWorld.DebugLog("    costItem not enough! curTruckLV=%s,costItemID=%s,costItemCnt=%s,isAutoBuy=%s" 
-                                   % (curTruckLV, costItemID, costItemCnt, isAutoBuy))
-                return
-            autoBuyGostGold = ItemCommon.GetAutoBuyItemNeedGold(lackItemDict)
-            if autoBuyGostGold <= 0:
-                return
-            if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, autoBuyGostGold):
-                return
-            drDict["lackItemDict"] = lackItemDict 
-            
-    elif costType == Def_RefreshTruckLVWay_Money:
-        costMoneyInfoDict = upTruckLvInfoList[costType]
-        if moneyType not in costMoneyInfoDict:
-            GameWorld.DebugLog("    curTruckLV=%s,moneyType=%s not configuration!!!" % (curTruckLV, moneyType))
-            return
-        upLvRate, moneyCnt, upLv, downLv = costMoneyInfoDict[moneyType]
-        
-        if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyCnt):
-            return
-    else:
-        return
-    
-    refreshTotalCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TruckRefreshTotalCnt)  # 玩家总刷新镖车等级次数
-    if refreshTotalCnt <= 0:
-        firstTimeRefreshList = ReadChConfig.GetEvalChConfig("RefurbishTruckLVFirstTime")
-        truckLv = GameWorld.GetResultByRandomList(firstTimeRefreshList, 0)
-        GameWorld.DebugLog("    首次刷新镖车等级: truckLv=%s" % truckLv)
-    else:
-        if GameWorld.CanHappen(upLvRate, ChConfig.Def_MaxRateValue):
-            truckLv = upLv
-        else:
-            truckLv = downLv
-    
-    if truckLv < 0 or truckLv >= len(refurbishTruckLVDict):
-        #刷新后镖车等级错误
-        GameWorld.ErrLog("    PlayerRefurbishTruckLV After truckLv = %s error! refreshTotalCnt=%s" % (truckLv, refreshTotalCnt))
-        return
-
-    # 消耗扣除处理
-    if costType == Def_RefreshTruckLVWay_Free:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FreeRefurbishTruckCnt, freeCnt + 1)
-    
-    elif costType == Def_RefreshTruckLVWay_Item:
-        ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "RefurbishTruckLV")
-        if autoBuyGostGold > 0:
-            drDict[ChConfig.Def_Cost_Reason_SonKey] = costItemID
-            PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, autoBuyGostGold, 
-                                     ChConfig.Def_Cost_BuyStoreItem, drDict, lackItemDict.get(costItemID, 0))
-                
-    elif costType == Def_RefreshTruckLVWay_Money:
-        drDict[ChConfig.Def_Cost_Reason_SonKey] = "Refresh"
-        PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_RefreshTruck, drDict)
-    
-    #设置镖车等级
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TruckLV, truckLv)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TruckRefreshTotalCnt, refreshTotalCnt + 1)
-            
-    if truckLv > curTruckLV:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_781545")
-    elif truckLv == curTruckLV:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_16722")
-    
-    #刷新镖车额外奖励
-    TruckCreatAwardDict = ReadChConfig.GetEvalChConfig("TruckCreatAward")
-    if truckLv in TruckCreatAwardDict:
-        for itemID, itemCount, isBind in TruckCreatAwardDict[truckLv]:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere])
-            PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_366028", [itemID, itemCount])
-            PlayerControl.WorldNotify(0, "GeRen_liubo_161795", [curPlayer.GetPlayerName(), itemID, itemCount])
-        
-    #通知客户端可召唤镖车等级
-    Sync_TruckLv(curPlayer)
-    GameWorld.DebugLog("    刷新结果: upLvRate=%s,updTruckLv=%s,autoBuyGostGold=%s,refreshTotalCnt=%s,drDict=%s" 
-                       % (upLvRate, truckLv, autoBuyGostGold, refreshTotalCnt, drDict), curPlayer.GetPlayerID())
-    return
-
-
-#=============================================================================================================
-# //A4 02 购买镖车等级#tagPyBuyTruckLV
-# //AE 02 购买镖车等级#tagPyBuyTruckLV
-# 
-# struct tagPyBuyTruckLV
-# {
-#    tagHead        Head;
-#    BYTE        TruckLV;        //镖车等级
-# };
-#=============================================================================================================
-## 玩家购买镖车等级
-#  @param index:玩家索引
-#  @param clientData:封包结构体
-#  @param tick:时间戳
-#  @return: None
-def PlayerBuyTruckLV(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    if PlayerInMapHaveTruck(curPlayer):
-        #玩家在地图中有骠车
-        GameWorld.ErrLog("PlayerBuyTruckLV player have truck ")
-        return
-    
-    buyTruckLv = clientData.TruckLV
-    
-    buyTruckLVDict = ReadChConfig.GetEvalChConfig("BuyTruckLV")
-    moneyList = buyTruckLVDict.get(buyTruckLv, [])
-    if moneyList == []:
-        #找不到购买当前镖车等级的消耗
-        GameWorld.ErrLog("PlayerBuyTruckLV, buyTruckLV=%s not %s has_key"
-                         (buyTruckLv, buyTruckLVDict))
-        return
-    
-    #canBuyLv = PlayerVip.GetVIPCanBuyTruckLv(curPlayer)  # 当前vip可购买的镖车等级
-    #if buyTruckLv > canBuyLv:
-    #    #当前vip等级不能购买
-    #    GameWorld.ErrLog("PlayerBuyTruckLV, buyTruckLV=%s, canBuyLv=%s "%(buyTruckLv, canBuyLv))
-    #    return
-    
-    moneyType= moneyList[1]
-    moneyCnt = moneyList[0]
-    infoDict = {"LV":buyTruckLv, ChConfig.Def_Cost_Reason_SonKey:buyTruckLv}
-    if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_RefreshTruck, infoDict):
-        return
-    
-    #设置镖车等级
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TruckLV, buyTruckLv)
-    
-    #通知客户端可召唤镖车等级
-    Sync_TruckLv(curPlayer)
-    return
-
-
-#=============================================================================================================
-# //A4 03 查询镖车等级#tagPyQueryTruckLV
-# //AE 03 查询镖车等级#tagPyQueryTruckLV
-# 
-# struct tagPyQueryTruckLV
-# {
-#    tagHead        Head;
-# };
-#=============================================================================================================
-## 查询镖车等级
-#  @param index:玩家索引
-#  @param clientData:封包结构体
-#  @param tick:时间戳
-#  @return: None
-def QueryTruckLV(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    #通知客户端可召唤镖车等级
-    Sync_TruckLv(curPlayer)
-    return
-
-
-## 通知客户端可召唤镖车等级
-#  @param curPlayer: 玩家实例
-#  @return: None
-def Sync_TruckLv(curPlayer):
-    canSummonTruckLV = ChPyNetSendPack.tagPyCanSummonTruckLV()
-    canSummonTruckLV.Clear()
-    canSummonTruckLV.TruckLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TruckLV)
-    canSummonTruckLV.FreeCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FreeRefurbishTruckCnt)
-    NetPackCommon.SendFakePack(curPlayer, canSummonTruckLV)
-    return
-
-#=============================================================================================================
-# //A4 04 查询劫镖次数#tagPyQueryDestroyTruckCnt
-# //AE 04 查询劫镖次数#tagPyQueryDestroyTruckCnt
-# 
-# struct     tagPyQueryDestroyTruckCnt
-# {
-#    tagHead        Head;
-# };
-#=============================================================================================================
-## 查询劫镖次数
-#  @param index:玩家索引
-#  @param clientData:封包结构体
-#  @param tick:时间戳
-#  @return: None
-def QueryDestroyTruckCnt(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    #通知客户端劫镖次数
-    Sync_DestroyTruckCnt(curPlayer)
-    return
-
-
-## 通知客户端劫镖次数
-#  @param curPlayer: 玩家实例
-#  @return: None
-def Sync_DestroyTruckCnt(curPlayer):
-    canSummonTruckLV = ChPyNetSendPack.tagPyDestroyTruckCnt()
-    canSummonTruckLV.Clear()
-    canSummonTruckLV.Count = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_DestroyTruckCnt)
-    NetPackCommon.SendFakePack(curPlayer, canSummonTruckLV)
-    return
-
-
-## 通知客户端镖车AI模式
-#  @param curPlayer: 玩家实例
-#  @return: None
-def Sync_TruckMode(curPlayer):
-    curTruck = curPlayer.GetTruck()
-    if not curTruck:
-        mode = IPY_GameWorld.trmStop
-    else:
-        mode = curTruck.GetMode()
-        
-    truckMode = ChPyNetSendPack.tagPyTruckMode()
-    truckMode.Clear()
-    truckMode.TruckMode = mode
-    NetPackCommon.SendFakePack(curPlayer, truckMode)
-    return
-
-
-#=============================================================================================================
-# //A4 05 自动运镖 #tagPyAutoTruck
-# //AE 05 自动运镖 #tagPyAutoTruck
-# 
-# struct     tagPyAutoTruck
-# {
-#    tagHead        Head;
-#    BYTE        Type;
-# };
-#=============================================================================================================
-## 自动运镖
-#  @param index:玩家索引
-#  @param clientData:封包结构体
-#  @param tick:时间戳
-#  @return: None
-def AutoTruck(index, clientData, tick):
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    state = clientData.Type
-    
-    if not CanAutoTruck(curPlayer):
-        SetAutoTruckState(curPlayer, state)
-        Sync_AutoTruckState(curPlayer, state, False)
-        return
-    
-    if state not in [ShareDefine.Def_Out_Truck, ShareDefine.Def_Enter_Truck]:
-        SetAutoTruckState(curPlayer, state)
-        Sync_AutoTruckState(curPlayer, state, False)
-        return
-    
-    #设置自动运镖
-    SetAutoTruckState(curPlayer, state)
-    
-    #通知自动运镖成功 
-    Sync_AutoTruckState(curPlayer, state, True)
-    return
-
-
-## 可否自动运镖
-#  @param curPlayer: 玩家实例
-#  @return 可否自动运镖
-def CanAutoTruck(curPlayer):
-    
-    curTruck = curPlayer.GetTruck()
-    if not curTruck:
-        #没有镖车
-        return False
-    
-    if not curPlayer.IsAlive():
-        #死亡状态不处理
-        return False
-        
-    #获得玩家和镖车间的距离
-    dist = GameWorld.GetDist(curTruck.GetPosX(), curTruck.GetPosY(),
-                             curPlayer.GetPosX(),curPlayer.GetPosY())
-    #自动运镖的距离
-    if dist > ChConfig.Def_PlayerTruckMoveDist:
-        return False    
-    
-    return True
-
-
-## 通知自动运镖状态
-#  @param curPlayer: 玩家实例
-#  @param state: 状态
-#  @param result: 结果(成功/失败)
-#  @return: None
-def Sync_AutoTruckState(curPlayer, state, result):
-    
-    autoTruckState = ChPyNetSendPack.tagPyAutoTruckState()
-    autoTruckState.Clear()
-    autoTruckState.State = state
-    autoTruckState.Result = result
-    NetPackCommon.SendFakePack(curPlayer, autoTruckState)
-    return
-
-
-## 设置镖车状态buff
-#  @param curTruck: 镖车实例
-#  @param tick: 时间戳
-#  @return: None
-def AddTruckStateBuff(curTruck, tick):
-#    mode = curTruck.GetMode()
-#    if mode == IPY_GameWorld.trmStop:
-#        #删除状态buff
-#        BuffSkill.DelBuffBySkillID(curTruck, ChConfig.Def_SkillID_TruckAiMode, tick)
-#    else:
-#        #添加状态buff
-#        SkillCommon.AddBuffBySkillType_NoRefurbish(curTruck , ChConfig.Def_SkillID_TruckAiMode , tick)
-    
-    npcControl = NPCCommon.NPCControl(curTruck)
-    npcControl.RefreshNPCAttrState()
-    return
-
-
-#=============================================================================================================
-#//A4 06 立即完成运镖 #tagPyOverTruck
-#//AE 06 立即完成运镖 #tagPyOverTruck
-#
-#struct     tagPyOverTruck
-#{
-#    tagHead        Head;
-#};
-#=============================================================================================================
-## 立即完成运镖
-#  @param index:玩家索引
-#  @param clientData:封包结构体
-#  @param tick:时间戳
-#  @return: None
-def OverTruck(index, clientData, tick):
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    if curPlayer == None:
-        #无此玩家了
-        return
-
-    #战斗状态返回
-    if curPlayer.IsBattleState() :
-        PlayerControl.NotifyCode(curPlayer,"GeRen_hgg_143504")
-        #GameWorld.Log("战斗状态中不能立即完成运镖!")
-        return 
-    
-    curTruck = curPlayer.GetTruck()
-    if not curTruck:
-        PlayerControl.NotifyCode(curPlayer,"GeRen_hgg_500807")
-        #GameWorld.Log("您与爱车人车两隔,请先回到爱车身旁再立即完成!")
-        return
-    
-    #根据玩家等级和镖车品阶扣除元宝
-    playerLV = curPlayer.GetLV()
-    truckLV = curTruck.GetLV()
-    overTruckCost = eval(ReadChConfig.GetEvalChConfig("OverTruckCost"))
-    moneyType = IPY_GameWorld.TYPE_Price_Gold_Money
-    
-    infoDict = {"truckLV":truckLV, ChConfig.Def_Cost_Reason_SonKey:truckLV}
-    if not PlayerControl.PayMoney(curPlayer, moneyType, overTruckCost, ChConfig.Def_Cost_FinishTruck, infoDict):
-        return
-    
-    #进行完成镖车任务逻辑
-    DoLogic_FinishTruck(curPlayer)
-    return
-
-
-## 检查可否获得双倍奖励
-#  @param curPlayer 当前玩家
-#  @return True or False
-#  @remarks 函数详细说明.
-def CheckDoubleAward():
-    curTime = GameWorld.GetCurrentTime()
-    curTimeStr = str(curTime)
-    curTimeStr = curTimeStr.split(".")[0].split()[1]
-
-    #例:[['03:00:00', '05:30:00'], ['13:00:00', '15:30:00']]
-    DoubleAwardOpenDayList, DoubleAwardTimeList = ReadChConfig.GetEvalChConfig("TruckDoubleAwardTime")
-    if DoubleAwardOpenDayList:
-        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(
-                                             ShareDefine.Def_Notify_WorldKey_ServerDay)
-        if openServerDay in DoubleAwardOpenDayList:
-            return True
-        
-    for doubleAwardTime in DoubleAwardTimeList:
-        
-        if len(doubleAwardTime) != 2:
-            #时间段配置错误
-            GameWorld.ErrLog("curTimeStr = %s error"%str(doubleAwardTime))
-            continue
-            
-        if doubleAwardTime[0] <= curTimeStr < doubleAwardTime[1]:
-            return True
-    
-    return False
-
-
-## 完成任务逻辑
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def DoLogic_FinishTruck(curPlayer, isTimeOut=False):
-    
-    #获取镖车奖励
-    curTruck = curPlayer.GetTruck()
-    if curTruck:
-        GiveTruckAward(curPlayer, curTruck, isTimeOut=isTimeOut)
-    
-    #删除镖车
-    DelTruck(curPlayer)
-
-    #设置任务状态
-    mission = curPlayer.FindMission(ChConfig.Def_ConvoyTruckMissionID)
-    #玩家无此任务
-    if mission == None:
-        #添加此任务
-        mission = QuestCommon.AddNewMission(curPlayer, ChConfig.Def_ConvoyTruckMissionID)
-
-    #设置任务状态
-    isFinish = int(not isTimeOut)
-    failReason = "" if not isTimeOut else "护送超时"
-    QuestCommon.SetPlayerMissionState(curPlayer, mission, ChConfig.Def_Mission_State_NoAccept, isFinish, failReason)
-    EventShell.NotifyOneMission(curPlayer, mission)
-    return
-
-## 玩家运镖超时
-def OnPlayerTruckTimeOut(curPlayer):
-    GameWorld.DebugLog("运镖超时 ...")
-    DoLogic_FinishTruck(curPlayer, True)
-    return
-
-## 镖车OnDay逻辑
-#  @param curPlayer 当前玩家
-#  @return None
-def DoTruckOnDay(curPlayer):
-    SetDestroyTruckCnt(curPlayer, 0)
-    # 每日免费刷新次数重置
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FreeRefurbishTruckCnt, 0)
-    return
-
-## 玩家死亡镖车处理
-#  @param curPlayer 当前玩家
-#  @return None
-def DoPlayerDead(curPlayer):
-    # 没有镖车,不处理
-    #if not PlayerInMapHaveTruck(curPlayer):
-    #    return
-    # 这里只能从玩家接口判定镖车,不然会报错
-    if curPlayer.GetTruck() == None:
-        return False
-    
-    # 更改镖车模式
-    truck = curPlayer.GetTruck()
-    #镖车与玩家的距离超出, 停止移动, 镖车状态设置为不跟随
-    truck.SetCurAction(IPY_GameWorld.laNPCNull)
-    truck.SetMode(IPY_GameWorld.trmStop)
-    
-    #通知客户端镖车AI模式
-    Sync_TruckMode(curPlayer)
-    
-    #设置AI模式buff
-    tick = GameWorld.GetGameWorld().GetTick()
-    AddTruckStateBuff(truck, tick)
-
-    #镖车跟随丢失, 退出自动运镖
-    SetAutoTruckState(curPlayer, 0)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerVip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerVip.py
index ace36e9..330aaad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerVip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerVip.py
@@ -31,7 +31,6 @@
 import IpyGameDataPY
 import NPCCommon
 import EventReport
-import EventShell
 import PassiveBuffEffMng
 import PlayerFamilyRedPacket
 import GameFuncComm
@@ -191,8 +190,7 @@
         return
     record = record|(1 << vipLV)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_VipAwardRecord, record)
-
-    EventShell.EventResponse_BuyVIPItem(curPlayer, vipLV)
+    
     GameWorld.DebugLog("vip礼包-%s" % itemList)
     for itemid, cnt, isBind in itemList:
         ItemControler.GivePlayerItem(curPlayer, int(itemid), int(cnt), 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], 
@@ -297,9 +295,6 @@
 # @param curPlayer 玩家
 # @return None
 def OnChangeVIPLv(curPlayer, vipLV):
-    #vip等级改变触发任务
-    EventShell.EventResponse_OnVipLvUp(curPlayer, vipLV)
-    
     CheckVIPDienstgrad(curPlayer)
     
     #删除VIP体验卡物品
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFamilyActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFamilyActivity.py
deleted file mode 100644
index 0d19c67..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFamilyActivity.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_AddFamilyActivity
-#
-# @todo:增加仙盟活跃值
-# @author xdh
-# @date 2018-03-09
-# @version 1.0
-#
-# 详细描述: 增加仙盟活跃值
-#
-#---------------------------------------------------------------------
-"""Version = 2018-03-09 20:00"""
-
-import PlayerFamily
-import GameWorld
-#---------------------------------------------------------------------
-
-#逻辑实现
-## 请求逻辑,添加好友成功
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    return ''
-    
-#---------------------------------------------------------------------
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    resultList = eval(funResult)
-    if len(resultList) != 2:
-        return
-        
-    actionid, addCnt = resultList
-    GameWorld.DebugLog("GY_Query_AddFamilyActivity DoResult resultList=%s" 
-                       % (resultList), curPlayer.GetPlayerID())
-
-    PlayerFamily.AddFamilyActivity(curPlayer, actionid, addCnt)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFamilyReply.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFamilyReply.py
deleted file mode 100644
index 4ea1725..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFamilyReply.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package GY_Query_AddFamilyReply.py
-#
-# @todo:申请加入家族回应
-#
-# @author jiang
-# @date 2012-03-09
-# @version 1.2
-# @note:
-#
-# @change: "2012-05-16 15:00" jiang C++修改接口GameServer_QueryPlayerByID和GameServer_QueryPlayerResult
-# @change: "2013-06-06 19:30" Alee 接口转移
-#------------------------------------------------------------------------------ 
-#"""Version = 2013-06-06 19:30"""
-#------------------------------------------------------------------------------ 
-import ChConfig
-import ShareDefine
-import PlayerFamily
-import PlayerControl
-#---------------------------------------------------------------------
-
-#逻辑实现
-## 请求逻辑,添加好友成功
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    return ''
-
-
-#---------------------------------------------------------------------
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    familyID, isOK = eval(funResult)
-
-    for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
-        
-        #申请加入的家族ID
-        requestAddFamilyID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index) 
-        
-        if requestAddFamilyID <= 0:
-            continue
-        
-        #已经加入帮会
-        if isOK == 1:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyID%index, 0)
-        
-        #被拒绝
-        elif familyID == requestAddFamilyID:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyID%index, 0)
-        
-        #申请情况还在
-        else:
-            continue
-        
-        #申请加入的数量-1
-        count = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyCnt, count - 1)
-        
-        sendMsg = "%s"%requestAddFamilyID
-        #向GameServer发送请求删除该玩家的申请家族信息情况
-        curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_DelFamilyAction, 
-                     ShareDefine.Def_ActionType_FamilyAdd, '', sendMsg, len(sendMsg))
-        
-    #通知当前申请加入的哪些家族
-    PlayerFamily.Sync_RequestAddFamilyInfo(curPlayer) 
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFriendSucceed.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFriendSucceed.py
deleted file mode 100644
index a51bc1b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddFriendSucceed.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_AddFriendSucceed
-# @todo: 添加好友成功
-#
-# @author: jiang
-# @date 2011-11-11
-# @version 1.0
-#
-# @note: 添加好友成功
-#---------------------------------------------------------------------
-"""Version = 2011-11-11 17:30"""
-#---------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import EventShell
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑,添加好友成功
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    return ''
-
-
-#---------------------------------------------------------------------
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    EventShell.EventRespons_AddFriendSucceed(curPlayer, "add_friend_succeed")
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddSuccessProgress.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddSuccessProgress.py
index 8c3de89..5616c55 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddSuccessProgress.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddSuccessProgress.py
@@ -19,7 +19,6 @@
 import PlayerSuccess
 import ShareDefine
 import GameWorld
-import EventShell
 #---------------------------------------------------------------------
 
 #逻辑实现
@@ -54,8 +53,5 @@
         return
     
     PlayerSuccess.DoAddSuccessProgress(curPlayer, successType, addCnt, condition)
-    
-    if successType == ShareDefine.SuccType_DujieFBHelp:
-        EventShell.EventRespons_DujieFBHelp(curPlayer)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AuctionHouseGiveItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AuctionHouseGiveItem.py
index 299ccfe..822cfab 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AuctionHouseGiveItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AuctionHouseGiveItem.py
@@ -20,7 +20,6 @@
 import ItemControler
 import IPY_GameWorld
 import PlayerControl
-import EventShell
 import ChConfig
 
 
@@ -59,10 +58,6 @@
     if userData:
         curCreateItem.SetUserData(userData, len(userData))
         ItemCommon.MakeEquipGS(curCreateItem)
-    
-    EventShell.EventRespons_BuyAuction(curPlayer)
-    if ItemCommon.CheckItemIsEquip(curCreateItem):
-        EventShell.EventRespons_BuyAuctionEquip(curPlayer, curCreateItem.GetItemColor())
         
     drDict = {"ItemGUID":itemGUID, "ItemID":itemID, "ItemCount":itemCount, "UserData":userData}
     isOK = ItemControler.DoLogic_PutItemInPack(curPlayer, curCreateItem, event=[ChConfig.ItemGive_BourseItem, True, drDict], 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CanGateWar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CanGateWar.py
deleted file mode 100644
index 59c993b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CanGateWar.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_CanGateWar
-# 登陆触发能否城门战
-#
-# @author Kill
-# @date 2010-3-31
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-
-#导入
-import GameWorld
-import IPY_GameWorld
-import ChConfig
-import EventShell
-
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-#===============================================================================
-#    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-#    if not curFindPlayer or curFindPlayer.IsEmpty():
-#        GameWorld.Log('###玩家查询异常,找不到自己')
-#        return ''
-#    #结束任务
-#    if packCMDList == 0:
-#        EventShell.EventResponse_Not_Gate_War_Login(curFindPlayer)
-#        
-#    #触发任务
-#    elif packCMDList == 1:
-#        EventShell.EventResponse_On_Gate_War_Login(curFindPlayer)
-#        
-#    else:
-#        GameWorld.Log("###登陆触发能否城门战异常,请求错误")
-#===============================================================================
-    return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py
index 579e9ee..04e6147 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossServerReceiveMsg.py
@@ -17,7 +17,6 @@
 
 import GameWorld
 import ShareDefine
-import EventShell
 import ChPlayer
 
 #------------------------------------------------------------------------------ 
@@ -41,9 +40,6 @@
     
     if msgType == ShareDefine.ClientServerMsg_Reborn:
         ChPlayer.ClientServerMsg_Reborn(curPlayer, msgData, serverGroupID, tick)
-        
-    elif msgType == ShareDefine.ClientServerMsg_CollectNPC:
-        EventShell.ClientServerMsg_CollectNPC(curPlayer, msgData, serverGroupID, tick)
         
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py
index 4df06fa..fe217b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFB.py
@@ -270,6 +270,6 @@
     if not retPos:
         return
     
-    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], False, backFBID, funcLineID=funcLineID)
+    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], backFBID, funcLineID=funcLineID)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py
index 0e1fad2..756b9fa 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBSetFaction.py
@@ -21,7 +21,6 @@
 #导入
 import FBLogic
 import GameWorld
-import EventShell
 import PlayerControl
 import FBCommon
 #---------------------------------------------------------------------
@@ -64,13 +63,7 @@
     if not retPos:
         return
     
-    #===============================================================================================
-    # # 验证传送NPC条件是否符合
-    # if not EventShell.DoLogic_EnterFbGameEvent(curPlayer, mapID, tick):
-    #    return
-    #===============================================================================================
-    
     # 传送逻辑
-    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], False, 0)
+    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], 0)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py
index 46387a3..e246d1b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_EnterFBTeamAsk.py
@@ -85,13 +85,7 @@
     if not retPos:
         return
     
-    #===============================================================================================
-    # # 验证传送NPC条件是否符合
-    # if not EventShell.DoLogic_EnterFbGameEvent(curPlayer, mapID, tick):
-    #    return
-    #===============================================================================================
-    
     # 传送逻辑
-    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], False, funcLineID=lineID)
+    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], funcLineID=lineID)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ExamGivePlayerReward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ExamGivePlayerReward.py
deleted file mode 100644
index 45a7fe0..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_ExamGivePlayerReward.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#---------------------------------------------------------------------
-#
-#---------------------------------------------------------------------
-##@package GY_Query_ExamGivePlayerReward
-# @todo: 答题给玩家奖励
-#
-# @author: panwei
-# @date 2011-03-31
-# @version 1.6
-#
-# @change: "2011-05-19 17:00" panwei 新增真心话大冒险活动
-# @change: "2012-03-23 14:00" jiang 给奖励后触发事件
-# @change: "2012-04-17 18:00" wdb 添加至延迟提示 
-# @change: "2014-05-04 15:30" xcc 修改系统提示信息
-# @change: "2014-05-12 20:30" xcc 答题公式增加reLV等级参数
-# @change: "2015-06-23 16:00" hxp 修改提示
-#---------------------------------------------------------------------
-"""Version = 2015-06-23 16:00"""
-#---------------------------------------------------------------------
-import GameWorld
-import ReadChConfig
-import PlayerControl
-import ShareDefine
-import EventShell
-#---------------------------------------------------------------------
-Def_Exp_Formula = { ShareDefine.Def_Game_Exam_ZGTX:'ZGTX_GiveExp',      #智冠天下
-                    ShareDefine.Def_Game_Exam_BSL:'BSL_GiveExp',      #变色龙
-                    ShareDefine.Def_Game_Exam_JQBD:'JQBD_GiveExp',      #举旗不定
-                    ShareDefine.Def_Game_Exam_ZXH:'ZXH_GiveExp',      #真心话
-                    }    
-#---------------------------------------------------------------------
-Def_ResultNotify = { ShareDefine.Def_Game_Exam_ZGTX:'Campaign_hgg_162625',      #智冠天下
-                    ShareDefine.Def_Game_Exam_BSL:'Campaign_pan_770488',      #变色龙
-                    ShareDefine.Def_Game_Exam_JQBD:'Campaign_pan_202580',      #举旗不定
-                    ShareDefine.Def_Game_Exam_ZXH:'PK_liubo_367906',      #真心话
-                    }    
-#---------------------------------------------------------------------
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 []
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    return
-                
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    #funResult [答题类型, 积分, 答题对错数量]
-    examType, playerMark, examResult = eval(funResult)
-    
-    if examType not in Def_Exp_Formula.keys():
-        GameWorld.ErrLog('examType = %s异常, 无法获得答题奖励'%(examType), curPlayer.GetID())
-        return
-    
-    #公式参数
-    playerReExp = 0
-    reLV = curPlayer.GetLV()
-    givePlayerExp = int(eval(ReadChConfig.GetChConfig(Def_Exp_Formula[examType])))
-    
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.AddExp(givePlayerExp)
-    
-    # 通知奖励参数[答对数量,错误数量, 积分,获得经验]
-    PlayerControl.NotifyCode(curPlayer, Def_ResultNotify[examType],
-                              [examResult[0], examResult[1], playerMark, givePlayerExp])
-    #触发玩家答题事件
-    EventShell.EventRespons_PlayerEvent(curPlayer, "player_exam")
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyAdd.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyAdd.py
deleted file mode 100644
index acd1570..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_FamilyAdd.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_FamilyAdd
-#
-# @todo:玩家申请加入家族反馈
-# @author hxp
-# @date 2014-09-22
-# @version 1.0
-#
-# 详细描述: 玩家申请加入家族反馈
-#
-#---------------------------------------------------------------------
-#"""Version = 2014-09-22 11:30"""
-
-import ChConfig
-import PlayerFamily
-import PlayerControl
-
-
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    #[对战家族ID, 对战家族名, 对战天数]
-    funResult = eval(funResult)
-    
-    if len(funResult) <= 0:
-        return
-    
-    reqAddFamilyID = funResult[0]
-
-    
-    #记录个人申请加入的家族ID
-    for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
-        if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index) == 0:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyID%index, reqAddFamilyID)
-            break
-        
-    #记录个人申请加入家族的个数
-    requestAddFamilyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyCnt)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyCnt, requestAddFamilyCnt + 1)
-    
-    #通知当前申请加入的哪些家族
-    PlayerFamily.Sync_RequestAddFamilyInfo(curPlayer)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GetWarehousePsw.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GetWarehousePsw.py
deleted file mode 100644
index a3d22e7..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GetWarehousePsw.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_GetWarehousePsw
-# 仓库密码
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.1
-#
-# @change: "2012-05-16 15:00" jiang C++修改接口GameServer_QueryPlayerByID和GameServer_QueryPlayerResult
-#
-#------------------------------------------------------------------------------ 
-"""Version = 2012-05-16 15:00"""
-#---------------------------------------------------------------------
-#导入
-import IPY_GameWorld
-import ChConfig
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [数据库GM操作索引]
-#  @param tick 当前时间
-#  @return None or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    gmOperIndex = packCMDList[0]
-    
-    sendMsg = '%s'%(curFindPlayer.GetWarehousePsw())
-    
-    #发送结果到GameServer
-    curFindPlayer.GameServer_QueryPlayerByID( ChConfig.queryType_sqtDataServer_GMCommand , 
-                      gmOperIndex, 'GetWarehousePsw', sendMsg, len(sendMsg))
-    return
-
-
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GmOpenFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GmOpenFB.py
deleted file mode 100644
index 64ea467..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_GmOpenFB.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package GY_Query_GmOpenFB.py
-# @todo: GM开启目标副本
-#
-# @author:chenxuewei
-# @date 2011-04-20 09:40
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-#
-# @note: GM开启副本
-#---------------------------------------------------------------------
-"""Version = 2011-04-20 09:40"""
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-#import ChConfig
-#import IPY_GameWorld
-#import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDTuple 发包命令 (请求开启的副本ID, 进入该副本的位置X, Y)
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type, query_ID, packCMDTuple, tick):
-    
-    gameWorld = GameWorld.GetGameWorld()
-    
-    gameFB = gameWorld.GetGameFBByFbIndex(0)
-    
-    #初始化副本
-    gameFB.Clear()
-    
-    gameFBFamilyVS = gameFB.GetFamilyVS()
-    
-    #初始化管理器
-    gameFBFamilyVS.Clear()
-    
-    gameFBFamilyVS.SetFamilyID(packCMDTuple[3])
-    gameFBFamilyVS.SetFamilyName('山寨')
-    
-    gameFBFamilyVS.SetVSFamilyID(1)
-    gameFBFamilyVS.SetVSFamilyName('山寨')
-    
-    gameWorld.SetFBFirstOpenByFbIndex(0 , 1)
-    
-#    GameWorld.ErrLog('开启请求的副本:%s'%type(packCMDTuple))
-    
-    return ''
-
-                
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    
-#    GameWorld.Log('执行结果:%s'%funResult)
-#    
-#    infoList = funResult.split(',')
-#    
-#    if len(infoList) < 3:
-#        GameWorld.ErrLog('将玩家传进副本时,获取的地图信息列表(%s)有错'%infoList)
-#        return
-#    
-#    mapID = int(infoList[0])
-#    posX = int(infoList[1])
-#    posY = int(infoList[2])
-#    GameWorld.Log('执行结果:%s,%s,%s'%(mapID, posX, posY))
-#    
-#    #将玩家传进副本
-#    PlayerControl.PlayerResetWorldPos(curPlayer, mapID, posX, posY, True)
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MoveToPlayerByID.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MoveToPlayerByID.py
deleted file mode 100644
index c1340ba..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MoveToPlayerByID.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_MoveToPlayerByID
-# 传送到玩家身边
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.1
-#
-# 修改时间 修改人 修改内容
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-#
-# VER = "2014-01-07 15:30" zhengyang 添加注释
-#
-# 模块详细说明
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import IPY_GameWorld
-import PlayerControl
-import EventShell
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return [mapID,posX,posY,lineID]
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    mapManager = GameWorld.GetMap()
-    
-    if mapManager.GetMapFBType() != IPY_GameWorld.fbtNull:
-        return 'InFB'
-    
-    return ['%d'%mapManager.GetMapID() , '%d'%curFindPlayer.GetPosX() , '%d'%curFindPlayer.GetPosY() , '%d'%GameWorld.GetGameWorld().GetLineID()]
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult [mapID,posX,posY,lineID]
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    if funResult == '':
-        #GeRen_chenxin_112395 对不起,目标玩家不在线,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_112395")
-        return
-    
-    if funResult == 'InFB':
-        #GM_Operate_Null02 对不起,目标玩家在副本当中,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer,"GM_Operate_Null02")
-        return
-    
-    #还原格式 '[]' -> []
-    funResult = eval(funResult)
-    mapID = int(funResult[0])
-    posX = int(funResult[1])
-    posY = int(funResult[2])
-    lineID = int(funResult[3])
-    
-    __DoLogic_ResetWorldPos(curPlayer)
-    
-    PlayerControl.PlayerResetWorldPosFB( curPlayer, mapID, posX, posY, False, lineID )
-    
-    #GeRen_chenxin_673416 GM指令已生效,操作成功
-    PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_673416")
-    return
-#---------------------------------------------------------------------
-## 重置玩家坐标,解除事件状态
-#  @param curPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def __DoLogic_ResetWorldPos(curPlayer):
-    playerAction = curPlayer.GetPlayerAction()
-    #事件状态,结束事件
-    if playerAction == IPY_GameWorld.paEvent:
-        EventShell.DoExitEvent(curPlayer)
-        
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MoveToTruck.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MoveToTruck.py
deleted file mode 100644
index 9960b0e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MoveToTruck.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_MoveToTruck
-# 查询镖车位置
-#
-# @author hch
-# @date 2010-3-31
-# @version 1.1
-#
-# 修改时间 修改人 修改内容
-# @change: "2014-10-14 14:00" hxp 系统提示修改
-#
-# 模块详细说明
-# VER = "2014-10-14 14:00"
-#脚本说明
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import PlayerControl
-import IPY_GameWorld
-import ChConfig
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 []
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curTruck = GameWorld.GetNPCManager().FindNPCByID(query_ID)
-    if not curTruck:
-        return ''
-    #镖车所在地图的 坐标
-    if not GameWorld.GetMap().CanMove(curTruck.GetPosX(), curTruck.GetPosY()):
-        return 'noMove'
-#    GameWorld.Log('查询逻辑----mapID: %s : %s: %s'%(GameWorld.GetMap().GetMapID(),curTruck.GetPosX(), curTruck.GetPosY()))
-    return [ GameWorld.GetMap().GetMapID(), curTruck.GetPosX(), curTruck.GetPosY() ]
-
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-
-    if funResult == '':
-        GameWorld.Log('##查询镖车(传送)异常! %s'%(curPlayer.GetPlayerID()))
-        return
-    if funResult == 'noMove':
-        PlayerControl.NotifyCode(curPlayer, "Convey_Car_IllegalPlace")#镖车所在的坐标为不可移动点无法传送
-        return
-    #还原格式 '[]' -> []
-    funResult = eval(funResult)
-    mapID = int(funResult[0])
-    posX = int(funResult[1])
-    posY = int(funResult[2])
-    
-#    GameWorld.Log('查询结果(传送)---地图ID %s ,坐标X %s  坐标Y%s'%(mapID, posX, posY))
-#===============================================================================
-#判断是否可以 传送
-    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck :
-        PlayerControl.NotifyCode(curPlayer, "Old_hgg_0")
-        return
-    
-    if curPlayer.IsBattleState():
-        PlayerControl.NotifyCode(curPlayer, "Convey_Car_InFighting")#战斗状态无法传送至镖车
-        return
-    mapCountry = GameWorld.GetMap().GetCountryByMapID(mapID)
-    
-    if not GameWorld.IsSameCountry_Name( mapCountry, curPlayer.GetCountry() ):#敌国无法传送
-        PlayerControl.NotifyCode(curPlayer, "Enemy_State_No_Trans")
-        return
-#===============================================================================
-
-    #待修改 1.花费类型,2.花费金额可添加于ChConfig
-    type_Price = curPlayer.GetUseSilverType()
-    price = ChConfig.Def_MoveToTruck_Cost
-    if not PlayerControl.PayMoney(curPlayer,type_Price,price):
-        return
-
-    PlayerControl.PlayerResetWorldPos(curPlayer,mapID, posX, posY, False)
-    
-    
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NoteTruckOwnerInfo.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NoteTruckOwnerInfo.py
deleted file mode 100644
index fda49cd..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_NoteTruckOwnerInfo.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package GY_Query_NoteTruckOwnerInfo
-#
-# @todo:记录镖车主人部分信息
-#
-# @author jiang
-# @date 2012-05-22
-# @version 1.1
-# @note:
-#
-# @change: "2012-05-31 14:30" jiang 镖车身上记录玩家名字颜色信息
-#
-#------------------------------------------------------------------------------ 
-"""Version = 2012-05-31 14:30"""
-#------------------------------------------------------------------------------ 
-import GameWorld
-import PlayerTruck
-#---------------------------------------------------------------------
-
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return resultDisc
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    
-    truckID, playerTeamID, playerFamilyID, playerNameColor = packCMDList
-    
-    GameWorld.Log("packCMDList = %s"%packCMDList)
-    curTruck = GameWorld.GetNPCManager().FindTruckByID(truckID)
-    if not curTruck:
-        #找不到镖车
-        GameWorld.ErrLog("GY_Query_NoteTruckOwnerInfo not truck truckID = %s"%truckID)
-        return
-    
-    #记录队伍ID
-    PlayerTruck.SetTruckTeamID(curTruck, playerTeamID)
-    
-    #记录家族ID
-    PlayerTruck.SetTruckFamilyID(curTruck, playerFamilyID)
-    
-    #记录名字颜色ID
-    PlayerTruck.SetTruckNameColor(curTruck, playerNameColor)
-    return
-
-
-#---------------------------------------------------------------------
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_PullPlayerByID.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_PullPlayerByID.py
deleted file mode 100644
index de812bc..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_PullPlayerByID.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_PullPlayerByID
-# 把玩家传送到GM身边
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.1
-#
-# 修改时间 修改人 修改内容
-# @change: "2014-01-07 15:30" hxp 系统mark修改
-#
-# VER = "2014-01-07 15:30" zhengyang 添加注释
-#
-# 模块详细说明
-#
-#packCMDList [地图ID ,坐标X, 坐标Y, 线路]
-#---------------------------------------------------------------------
-#导入
-import PlayerControl
-import EventShell
-import GameWorld
-import IPY_GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [地图ID ,坐标X, 坐标Y, 线路]
-#  @param tick 当前时间
-#  @return resultDisc
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    if not __CanPullPlayer(curFindPlayer):
-        return 'ReadMap'
-    
-    mapID = packCMDList[0]
-    posX = packCMDList[1]
-    posY = packCMDList[2]
-    lineID = packCMDList[3]
-    #执行切换地图逻辑
-    __DoLogic_ResetWorldPos(curFindPlayer)
-    
-    PlayerControl.PlayerResetWorldPosFB( curFindPlayer, mapID, posX, posY, False, lineID )
-    
-    return
-#---------------------------------------------------------------------
-## 重置位置时,要解除事件状态
-#  @param curFindPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def __DoLogic_ResetWorldPos(curFindPlayer):
-    playerAction = curFindPlayer.GetPlayerAction()
-    #事件状态,结束事件
-    if playerAction == IPY_GameWorld.paEvent:
-        EventShell.DoExitEvent(curFindPlayer)
-        
-    return
-
-#---------------------------------------------------------------------
-## 是否可以拉
-#  @param curFindPlayer 当前玩家
-#  @return None
-#  @remarks 函数详细说明.
-def __CanPullPlayer(curFindPlayer):
-#===============================================================================
-#GetInitOK        True
-#GetIsLoginOff        False
-#===============================================================================
-    if not curFindPlayer.GetInitOK():
-        return
-    
-    if curFindPlayer.GetIsLoginOff():
-        return
-    
-    return True
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    if funResult == '':
-        #GeRen_chenxin_112395  对不起,目标玩家不在线,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_112395")
-        return
-    
-    if funResult == 'ReadMap':
-        #GM_Operate_GoalPlayerReadMap  对不起,目标玩家正处于地图读取状态下,GM指令操作失败
-        PlayerControl.NotifyCode(curPlayer,"GM_Operate_GoalPlayerReadMap")
-        return
-    
-    #GeRen_chenxin_673416 GM指令已生效,操作成功
-    PlayerControl.NotifyCode(curPlayer,"GeRen_chenxin_673416")
-    
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Refresh_Family_Info.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Refresh_Family_Info.py
deleted file mode 100644
index 439dce6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Refresh_Family_Info.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_Refresh_Family_Info
-# 玩家上线GameServer通知是家族长后触发事件
-#
-# @author kill
-# @date 2010-3-31
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import ChConfig
-import PlayerControl
-import IPY_GameWorld
-import EventShell
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return "" or None
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    #不是家族长不处理
-    if packCMDList == 0:
-        return ''
-    
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        GameWorld.Log('###玩家查询异常,找不到自己')
-        return ''
-    
-    EventShell.EventResponse_On_GameServer_Login(curFindPlayer)
-    
-
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_RequestIsFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_RequestIsFamily.py
deleted file mode 100644
index a42440c..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_RequestIsFamily.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-#
-##@package GY_Query_RequestIsFamily.py
-#
-# @todo:是否在申请的家族审核中
-#
-# @author jiang
-# @date 2012-03-30
-# @version 1.1
-# @note:
-#
-# @change: "2013-06-06 19:30" Alee 接口转移
-#------------------------------------------------------------------------------ 
-"""Version = 2013-06-06 19:30"""
-#------------------------------------------------------------------------------ 
-import GameWorld
-import ChConfig
-import ChPlayer
-import PlayerControl
-import PlayerFamily
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return None
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    if not packCMDList:
-        return
-    
-    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    if not curPlayer:
-        return
-    
-    for resultList in packCMDList:
-        if not resultList[1]:
-            #清除申请的家族记录
-            __ClearFamilyInfo(curPlayer, resultList[0])
-    
-    #通知当前申请加入的哪些家族
-    PlayerFamily.Sync_RequestAddFamilyInfo(curPlayer)
-    return
-
-
-#---------------------------------------------------------------------
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
-    return
-
-
-## 清除申请的家族记录
-#  @param curPlayer: 玩家实例
-#  @param resultFamilyID: 家族
-#  @return: 
-def __ClearFamilyInfo(curPlayer, resultFamilyID):
-    for index in range(0, ChConfig.Def_Player_RequestAddFamilyMaxCnt):
-        familyID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyID%index)
-        if familyID == 0:
-            continue
-        
-        if familyID != resultFamilyID:
-            continue
-        
-        cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RequestAddFamilyCnt)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyCnt, cnt - 1)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RequestAddFamilyID%index, 0)
-        
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Send_Family_Item.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Send_Family_Item.py
deleted file mode 100644
index f52979e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_Send_Family_Item.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_Send_Family_Item
-# 家族送物资活动
-#
-# @author kill
-# @date 2010-3-31
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import PlayerControl
-import IPY_GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    if packCMDList == 0:
-        GameWorld.Log("家族送物资发布失败,条件不符合")
-        return
-    
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        GameWorld.Log('###玩家查询异常,找不到自己')
-        return ''
-    
-    queryMissionID = int(packCMDList[1])    #请求任务ID
-    pubMissionID = int(packCMDList[0])      #发布任务ID
-    
-    #发布完成任务次数增加
-    curMission = curFindPlayer.FindMission(queryMissionID)
-    if not curMission:
-        GameWorld.Log("###家族送物资活动异常,请求任务不存在,player = %s,missionID = %s"%(curFindPlayer.GetPlayerID(),queryMissionID))
-        return 
-    
-    curMission.SetProperty("count",curMission.GetProperty("count") + 1)
-    
-    #发布任务
-    pubID = curFindPlayer.GetFamilyID()
-    pubType = 0        #家族任务发布
-    curFindPlayer.GameServer_MissionPub(pubMissionID,pubType,pubID)
-    
-    
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SetWarehousePsw.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SetWarehousePsw.py
deleted file mode 100644
index 107005f..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SetWarehousePsw.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_SetWarehousePsw
-# 设置仓库密码
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [玩家新密码 ]
-#  @param tick 当前时间
-#  @return '' or None
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    playerPsw = str( packCMDList[0] )
-    curFindPlayer.SetWarehousePsw( playerPsw )
-    return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SummonAllPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SummonAllPlayer.py
deleted file mode 100644
index 3712200..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_SummonAllPlayer.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_SummonAllPlayer
-# 召唤所有玩家
-#
-# @author mark
-# @date 2010-3-31
-# @version 1.1
-#
-# 修改时间 修改人 修改内容
-# @change: "2012-05-03 11:00" jiang 修改传送不携带镖车
-#
-#------------------------------------------------------------------------------------------------------------ 
-"""Version = 2012-05-03 11:00"""
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 请求逻辑
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return '' or None
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
-    
-    if not curFindPlayer or curFindPlayer.IsEmpty():
-        return ''
-    
-    #发送列表 [ 地图ID , posX , posY ] 
-    mapID = int( packCMDList[0] )
-    posX = int( packCMDList[1] )
-    posY = int( packCMDList[2] )
-    
-    PlayerControl.PlayerResetWorldPos( curFindPlayer, mapID, posX, posY, False )
-    return
-#---------------------------------------------------------------------
-#执行结果
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-    curPlayer.GMAnswer('%s;%s'%(callFunName, funResult))
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TransportToOccupyCity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TransportToOccupyCity.py
index b54e704..4833248 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TransportToOccupyCity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TransportToOccupyCity.py
@@ -51,7 +51,7 @@
     posX = packCMDList[1]
     posY = packCMDList[2]
     
-    PlayerControl.PlayerResetWorldPosFB( curFindPlayer, mapID, posX, posY, False, 0 )
+    PlayerControl.PlayerResetWorldPosFB( curFindPlayer, mapID, posX, posY, 0)
     return
 #---------------------------------------------------------------------
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TruckPos.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TruckPos.py
deleted file mode 100644
index a4549f9..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TruckPos.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-
-##@package GY_Query_TruckPos
-# 查询镖车坐标
-#
-# @author hch
-# @date 2010-3-31
-# @version 1.0
-#
-# 修改时间 修改人 修改内容
-# VER = "2010-05-12 18:30" zhengyang 添加注释
-#
-# 模块详细说明
-#脚本说明
-#---------------------------------------------------------------------
-#导入
-import GameWorld
-import PlayerControl
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## 查询镖车位置
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令 [ ]
-#  @param tick 当前时间
-#  @return '' or [mapID, posX, posY]
-#  @remarks 函数详细说明.
-def DoLogic(query_Type , query_ID , packCMDList , tick):
-    curTruck = GameWorld.GetNPCManager().FindNPCByID(query_ID)
-#    GameWorld.Log('%s---------'%query_ID)
-    if not curTruck:
-        return ''
-#    GameWorld.Log('查询逻辑----mapID: %s : %s: %s'%(GameWorld.GetMap().GetMapID(),curTruck.GetPosX(), curTruck.GetPosY()))
-    return [ GameWorld.GetMap().GetMapID(), curTruck.GetPosX(), curTruck.GetPosY() ]
-
-## 执行结果
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoResult(curPlayer , callFunName , funResult , tick):
-#    GameWorld.Log('进入result')
-    if funResult == '':
-        GameWorld.Log('##查询镖车(查询)异常! %s'%(curPlayer.GetPlayerID()))
-        return
-    #还原格式 '[]' -> []
-    funResult = eval(funResult)
-    mapID = int(funResult[0])
-    posX = int(funResult[1])
-    posY = int(funResult[2])
-    
-    #GameWorld.Log('查询结果(查询)-----地图ID %s ,坐标X %s  坐标Y%s'%(mapID, posX, posY))
-# 发包 03 18
-    curPlayer.Notify_TruckPosQuery(mapID, posX, posY)
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TruckTimeOut.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TruckTimeOut.py
deleted file mode 100644
index 162c0e5..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TruckTimeOut.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_TruckTimeOut
-#
-# @todo:运镖超时
-# @author hxp
-# @date 2016-6-13
-# @version 1.0
-#
-# 详细描述: 运镖超时
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2016-6-13 10:30"""
-#-------------------------------------------------------------------------------
-
-import PlayerTruck
-
-## XX
-#  @param query_Type 请求类型
-#  @param query_ID 请求的玩家ID
-#  @param packCMDList 发包命令
-#  @param tick 当前时间
-#  @return "True" or "False" or ""
-def DoLogic(query_Type, query_ID, packCMDList, tick):
-    return ''
-
-
-## 登陆信息
-#  @param curPlayer 发出请求的玩家
-#  @param callFunName 功能名称
-#  @param funResult 查询的结果
-#  @param tick 当前时间
-#  @return None
-def DoResult(curPlayer, callFunName, funResult, tick):
-    PlayerTruck.OnPlayerTruckTimeOut(curPlayer)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ReloadModule.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ReloadModule.py
index 6831fdc..706d19e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ReloadModule.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ReloadModule.py
@@ -17,8 +17,6 @@
 
 import GameWorld
 import ShareDefine
-import QuestManager
-import EventShell
 import ChConfig
 
 import sys
@@ -60,7 +58,6 @@
     
     GameWorld.Log("开始脚本重读 curVersion=%s,updVersion=%s" % (curVersion, updVersion))
     moduleNameDict = {}
-    isReloadMission = False
     
     for moduleKey, module in sys.modules.items():
         if "py" not in str(module):
@@ -97,18 +94,10 @@
             if curModuleName in moduleNameDict:
                 for moduleKey in moduleNameDict[curModuleName]:
                     __DoModuleReload(moduleKey)
-                    
-                if curModuleName in ["QuestCommon", "QuestManager", "QuestRunner"]:
-                    isReloadMission = True
     
     # 判断脚本文件是否有修改,如有修改则进行重读任务
-    
-    # 重读任务可能有一定风险,需详细测试
-    if isReloadMission:
-        QuestManager.ReloadQuests(tick)
-        EventShell.DoReloadRefresh()
         
-    GameWorld.Log("    脚本重读 OK! isReloadMission=%s" % isReloadMission)   
+    GameWorld.Log("    脚本重读 !")   
     return
 
 def __DoModuleReload(moduleKey):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 6f70ab5..7318c09 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -502,7 +502,6 @@
 ) = range(1, 25)
 
 #---写死的技能ID---
-Def_SkillID_AutoTruck = 62220   # 自动运镖buff
 
 #---写死的物品属性效果ID---
 Def_Effect_FreePoint = 200 # 自由灵根,注意此属性ID不能在刷属性中加,只能在某个功能中一次性处理
@@ -1367,7 +1366,6 @@
 GameFuncID_MineArea = 227       # 福地
 GameFuncID_Guaji = 228          # 挂机
 # 以下为暂时无用的
-GameFuncID_Truck = 33           # 运镖
 GameFuncID_RunDaily = 34        # 日常跑环
 GameFuncID_RunFamily = 53       # 战盟跑环
 GameFuncID_ArrestTask = 7100    # 悬赏任务
@@ -1452,7 +1450,7 @@
 #通用信息记录类型
 Def_UniversalGameRecTypeList = (
                                 Def_UniversalGameRecType_XMZZPKInfoRecord, # 仙魔之争信息记录0
-                                Def_UniversalGameRecType_HijackTruck,   # 劫镖1
+                                Def_UniversalGameRecType_1,
                                 Def_UniversalGameRecType_XMZZStageRecord, # 仙魔之争阶段记录2
                                 Def_UniversalGameRecType_LVAwardRecord,  #玩家等级奖励记录 3
                                 Def_UniversalGameRecType_LimitFBOpenRecord,#限时副本开启时间记录4
@@ -1603,12 +1601,6 @@
 Def_FamActivityList = (
 Def_FamActivity_War, # 战盟争霸
 ) = range(1)
-
-#运骠
-(
-Def_Out_Truck, # 离开骠车
-Def_Enter_Truck,  #进入骠车
-) = range(1, 3)
 
 # 开服活动类型标识, 不可超过32
 Def_Campaign_Type_List = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
index 598b4b1..bb87fb2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -36,10 +36,8 @@
 import PyGameData
 import PlayerHorse
 import BaseAttack
-import EventShell
 import NPCCommon
 import PetControl
-import QuestCommon
 import ItemCommon
 import FBCommon
 
@@ -71,74 +69,6 @@
 def OnPassiveSet(index, clientData, tick):
     #改为都生效,不需要设置
     return
-#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-#    findSkill = None
-#    if clientData.SkillID != 0:
-#        findSkill = curPlayer.GetSkillManager().FindSkillBySkillID(clientData.SkillID)
-#        if not findSkill:
-#            return
-#        
-#        if findSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbPassiveSkill:
-#            return
-#  
-#    holeCnt = IpyGameDataPY.GetFuncCfg('PassSkillEquipLimit', 2)
-#    if clientData.Index >= holeCnt:
-#        # 超出孔数
-#        return
-#    
-#    pageCnt = IpyGameDataPY.GetFuncCfg('PassSkillEquipLimit', 3)
-#    if clientData.Page >= pageCnt:
-#        # 超出页数
-#        return
-#    
-#    tmpDict = IpyGameDataPY.GetFuncEvalCfg('PassSkillEquipLimit', 1)
-#    # 剩余VIP时间
-#    #haveVipTime = PlayerVip.GetCurVIPTime(curPlayer)
-#    strIndex = str(clientData.Index) 
-#    if strIndex in tmpDict:
-#        # 判断条件
-#        for key, value in tmpDict[strIndex].items():
-#            if key == "level" and curPlayer.GetLV() < value:
-#                return
-#            if key == "vipLv":
-#                if curPlayer.GetVIPLv() < value:# or haveVipTime <=0:
-#                    return
-#            if key == "MountLv":
-#                if PlayerHorse.GetHorseSumLV(curPlayer) < value:
-#                    return
-#            
-#
-#            # 多加一种任务判断
-#            if key == "OpenSkillSlots":
-#                # 主线任务完成时会设置标志可进地图标志
-#                mission_1 = QuestCommon.GetCommonMission(curPlayer)
-#                if not mission_1:
-#                    return
-#
-#                if (pow(2, int(strIndex)) & mission_1.GetProperty("OpenSkillSlots")) == 0:
-#                    return
-#                
-#    PlayerControl.NomalDictSetProperty(curPlayer, 
-#                                       ChConfig.Def_PDict_GFPassiveIndex%(clientData.Page, clientData.Index),
-#                                       clientData.SkillID,
-#                                       ChConfig.Def_PDictType_GFPassive)
-#    
-#    # 通知客户端设置成功
-#    sendPack = ChPyNetSendPack.tagMCPassiveSetAnswer()
-#    sendPack.Page = clientData.Page
-#    sendPack.Index = clientData.Index
-#    sendPack.SkillID = clientData.SkillID
-#    NetPackCommon.SendFakePack(curPlayer, sendPack)
-#    
-#    # 刷被动效果和属性
-#    page = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GFPassivePage, 0, ChConfig.Def_PDictType_GFPassive)
-#    if clientData.Page == page:
-#        GetPassiveEffManager().RegistPassiveEffSet(curPlayer, True)
-#        PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-#        
-#    EventShell.EventRespons_PassiveSet(curPlayer)
-#    return
-
 
 #===============================================================================
 # //B4 08 被动技能页选择(功法) # tagCMPassivePage
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 2208fd5..47ec39f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -46,7 +46,6 @@
 import FBCommon
 import IpyGameDataPY
 import PyGameData
-import EventShell
 #---------------------------------------------------------------------
 GameWorld.ImportAll("Script\\Skill\\" , "GameSkills")
 GameWorld.ImportAll("Script\\Skill\\" , "GameBuffs")
@@ -1898,7 +1897,6 @@
     #获得技能等级
     curSkillLV = curSkill.GetSkillLV()
     DataRecordPack.DR_LearnORUPSkill(curPlayer, curSkillID, curSkillLV)
-    EventShell.EventRespons_SkillUp(curPlayer, curSkill.GetFuncType(), curSkillLV)
     GameWorld.Log("升级技能名 = %s 成功, 当前等级 = %s"%(curSkill.GetSkillName(), curSkill.GetSkillLV()), curPlayer.GetPlayerID())
     return True
 
@@ -2132,7 +2130,6 @@
         skillElementType = GetSkillElementType(nextSkill)
 
         #可升级则激活升一级
-        EventShell.EventRespons_ElementSkill(curPlayer, mainSkillID, skillElementType, updSelectSkillLV)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementLV % selectSkillID, updSelectSkillLV)
         if curElementSkillID == selectSkillID:
             #正在使用的专精技能,则立即生效
@@ -2462,32 +2459,6 @@
                 continue
             
             callBuffProcessFunc(curObj, curBuff, curEffect, processBuffTick, tick)
-    
-    #执行ProcessBuff中设定的玩家字典
-    __DoProcessBuff_PlayerKey(curObj, tick)
-
-#---------------------------------------------------------------------
-##执行ProcessBuff中设定的玩家字典
-# @param curObj 对象
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 执行ProcessBuff中设定的玩家字典
-def __DoProcessBuff_PlayerKey(curObj, tick):
-#===============================================================================
-#    if curObj.GetDictByKey(ChConfig.Def_Player_ProBuff_TruckSpeedUp):
-#        skillID = curObj.GetDictByKey(ChConfig.Def_Player_ProBuff_TruckSpeedUp)
-#        #本来buff类型是11, 但是骠车没有物品buff, 所以改为8
-#        buffType = IPY_GameWorld.bfAura       
-#        #给自己的镖车加buff
-#        curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-#        if not curSkill:
-#            GameWorld.Log('###镖车Buff技能ID异常 = %s'%(skillID))
-#            return
-#        
-#        BuffSkill.DoAddBuff(curObj.GetTruck() , buffType, curSkill, tick, 0, curObj)
-#        curObj.SetDict(ChConfig.Def_Player_ProBuff_TruckSpeedUp , 0)
-#===============================================================================
-    return
 
 #---------------------------------------------------------------------
 ##持续性buff的伤害效果
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/ServerScript.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/ServerScript.ini
index 55716ea..3abd48b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/ServerScript.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/ServerScript.ini
@@ -55,65 +55,15 @@
 PacketSubCMD_1=0x1
 PacketCallFunc_1=GameServer_OnTeam
 
-;镖车
-[Truck]
-ScriptName = Player\PlayerTruck.py
-Writer = mark	
-Releaser = mark
-RegType = 0
-RegisterPackCount = 4
-PacketCMD_1=0x3
-PacketSubCMD_1=0x1
-PacketCallFunc_1=GameServer_TruckRefresh
-PacketCMD_2=0x3
-PacketSubCMD_2=0x2
-PacketCallFunc_2=GameServer_TruckMsg
-PacketCMD_3=0x3
-PacketSubCMD_3=0x3
-PacketCallFunc_3=GameServer_TruckRefreshAnswer
-PacketCMD_4=0x3
-PacketSubCMD_4=0x5
-PacketCallFunc_4=GameServer_PlayerTruckStateRefresh
-
 [Player]
 ScriptName = Player\GameServerRefresh.py
 Writer = eggxp
 Releaser = eggxp
 RegType = 0
-RegisterPackCount = 11
-PacketCMD_1=0x4
-PacketSubCMD_1=0x1
-PacketCallFunc_1=GameServer_LeaveEvent
-PacketCMD_2=0x4
-PacketSubCMD_2=0x2
-PacketCallFunc_2=GameServer_PayMoney
-PacketCMD_3=0x1
-PacketSubCMD_3=0x7
-PacketCallFunc_3=GameServer_SetExpRate
-PacketCMD_4=0x1
-PacketSubCMD_4=0x8
-PacketCallFunc_4=GameServer_ActiveEvent
-PacketCMD_5=0x1
-PacketSubCMD_5=0x10
-PacketCallFunc_5=GameServer_MissionPub
-PacketCMD_6=0x4
-PacketSubCMD_6=0x3
-PacketCallFunc_6=GameServer_ForbiddenDrop
-PacketCMD_7=0x4
-PacketSubCMD_7=0x4
-PacketCallFunc_7=GameServer_ClearForbiddenDrop
-PacketCMD_8=0x1
-PacketSubCMD_8=0x11
-PacketCallFunc_8=GameServer_PlayerSave
-PacketCMD_9=0x1
-PacketSubCMD_9=0x14
-PacketCallFunc_9=GameSever_PlayerInitOK
-PacketCMD_10=0x1
-PacketSubCMD_10=0x15
-PacketCallFunc_10=RouteServer_PlayerInitOK
-PacketCMD_11=0x4
-PacketSubCMD_11=0x5
-PacketCallFunc_11=GameServer_PlayerCoinToGold
+RegisterPackCount = 1
+PacketCMD_1=0x1
+PacketSubCMD_1=0x15
+PacketCallFunc_1=RouteServer_PlayerInitOK
 
 [PlayerFriend]
 ScriptName = Player\PlayerFriend.py

--
Gitblit v1.8.0