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