| #!/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  | 
|   | 
|       | 
|      |