#!/usr/bin/python
|
# -*- coding: GBK -*-
|
|
##@package SummonNPC
|
# ÔÚÉí±ßË¢NPC <NPCID> [ÊýÁ¿] ĬÈÏÊýÁ¿:1
|
#
|
# @author Mark
|
# @date 2010-4-23
|
# @version 1.0
|
#
|
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
|
# VER = "2010-05-12 18:30" zhengyang Ìí¼Ó×¢ÊÍ
|
#
|
# Ä£¿éÏêϸ˵Ã÷
|
import GameMap
|
import ChConfig
|
import GameWorld
|
import NPCCommon
|
import ShareDefine
|
|
#
|
#Â߼ʵÏÖ
|
## ÔÚÉí±ßË¢ÕÙ»½NPC <NPCID> [ÊýÁ¿] ĬÈÏÊýÁ¿:1
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param paramList ²ÎÊýÁбí [tagID, NPCCount]
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(curPlayer, paramList):
|
#ÊäÈëÃüÁî¸ñʽ´íÎó
|
if not paramList:
|
GameWorld.DebugAnswer(curPlayer, "SummonNPC npcID ¸öÊý")
|
GameWorld.DebugAnswer(curPlayer, "SummonNPC npcID ¸öÊý ѪÁ¿")
|
return
|
|
#NPC¶ÔÏóID
|
npcID = paramList[0]
|
npcCount = max(paramList[1] if len(paramList) > 1 else 1, 1)
|
npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
|
|
if not npcData:
|
return
|
|
npcType = npcData.GetType()
|
if npcType in [ChConfig.ntPriWoodPilePVE, ChConfig.ntPriWoodPilePVP]:
|
setHP = paramList[2] if len(paramList) > 2 else 0
|
hp = setHP % ShareDefine.Def_PerPointValue
|
hpEx = setHP / ShareDefine.Def_PerPointValue
|
NPCCommon.SummonPriWoodPile(curPlayer, npcID, npcCount, hp, hpEx)
|
return
|
|
for _ in range(npcCount):
|
#ÔÚÍæ¼ÒÖÜΧѡÔñÒ»¸öÎÞÍæ¼ÒµÄµã
|
resultPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), 6)
|
#Éú³ÉNPC
|
summonNPC = curPlayer.SummonNewNPC()
|
summonNPC.SetNPCTypeID(npcID)
|
summonNPC.SetAIType(200)
|
summonNPC.GetNPCAngry().Init(ChConfig.Def_SummonNPC_Angry_Count)
|
#³õʼ»¯
|
NPCCommon.InitNPC(summonNPC)
|
summonNPC.SetOwner(curPlayer)
|
|
#Íæ¼ÒÕÙ»½ÊÞÁбíÌí¼ÓÕÙ»½ÊÞ,ÕÙ»½ÊÞÌí¼ÓÖ÷ÈË
|
summonNPC.Reborn(resultPos.GetPosX(), resultPos.GetPosY())
|
return
|
|
|
|
|
|