示例#1
0
文件: Room.py 项目: m969/balls_server
 def __init__(self):
     KBEngine.Entity.__init__(self)
     DEBUG_MSG("Room:cell:__init__")
     for i in range(100):
         pos = GameUtils.randomPosition3D()
         KBEngine.createEntity("Food", self.spaceID, pos, (0.0, 0.0, 0.0),
                               {})
示例#2
0
    def monsterReborn(self, monsterMailbox):
        """
        重生怪物
        :param monsterMailbox:
        :return:
        """
        DEBUG_MSG("BigWorld:monsterReborn")
        # 重生岩石精怪
        for x in self.spawnYanShiLingGuaiPos:
            if (self.yanShiLingGuaiMonsters[x].isDestroyed == True):
                self.yanShiLingGuaiMonsters[x] = KBEngine.createEntity(
                    "Monster", self.spaceID, x, (0.0, 0.0, 0.0), {
                        'entityName': "炎石灵怪",
                        'modelName': "YanShiLingGuai"
                    })
                self.yanShiLingGuaiMonsters[x].receiveSpawnPos(x)
                self.yanShiLingGuaiMonsters[x].setAttr(
                    "killerTaskCounterVariableName",
                    "YanShiLingGuai_TaskCounter")

        # 重生木灵怪
        for x in self.spawnMuJingGuaiPos:
            if (self.muJingGuaiMonsters[x].isDestroyed == True):
                self.muJingGuaiMonsters[x] = KBEngine.createEntity(
                    "Monster", self.spaceID, x, (0.0, 0.0, 0.0), {
                        'entityName': "木精怪",
                        'modelName': "MuJingGuai"
                    })
                self.muJingGuaiMonsters[x].receiveSpawnPos(x)
                self.muJingGuaiMonsters[x].setAttr(
                    "killerTaskCounterVariableName", "MuJingGuai_TaskCounter")
示例#3
0
	def balanceMass(self):
		"""
		平衡粮食和粉碎球的数量
		"""
		diffSmashsCount = GameConfigs.SMASH_MAX - len(self.smashs)
		
		# 一次最多10个
		if diffSmashsCount > 10:
			diffSmashsCount = 10
			
		for i in range(diffSmashsCount):
			radius = 1.0 + random.random()
			pos = GameUtils.randomPosition3D(radius)
			dir = (0.0, 0.0, 0.0)
			entity = KBEngine.createEntity("Smash", self.spaceID, pos, dir, {"modelID" : 0, "modelScale" : 1.0, "modelRadius" : radius})
			self.smashs.append(entity.id)

		diffFoodsCount = GameConfigs.MAP_FOOD_MAX - len(self.foods)

		# 一次最多200个
		if diffFoodsCount > 200:
			diffFoodsCount = 200

		for i in range(diffFoodsCount):
			pos = GameUtils.randomPosition3D(5.0)
			dir = (0.0, 0.0, 0.0)
			mass = random.randint(5, 10) # 这个粮食吃掉奖励的能量
			radius = 1.0
			entity = KBEngine.createEntity("Food", self.spaceID, pos, dir, {"modelID" : random.randint(0, 2), "mass" : mass, "modelRadius" : radius})
			self.foods.append(entity.id)

		if diffFoodsCount > 0 or diffSmashsCount > 0:
			DEBUG_MSG('Room::balanceMass: space %i, roomKey=%i, addNewFoodsCount = %i, totalFoodsCount = %i, addNewSmashsCount = %i, totalSmashsCount = %i.' % 
				(self.spaceID, self.roomKeyC, diffFoodsCount, len(self.foods), diffSmashsCount, len(self.smashs)))
示例#4
0
    def Attack(self, SkillInfo):
        """
        进行攻击
        """
        SpawnPos = U2KVec(SkillInfo["SpawnPos"])
        TargetPos = U2KVec(SkillInfo["TargetPos"])

        #将技能与普通攻击分开
        #如果是普通攻击,不生成技能
        #if SkillInfo["SkillId"] == 0:
        # 告诉所有客户端播放动画
        #   self.allClients.OnAttack(0)
        #   return

        # 生成的技能攻击力要乘上力量加成
        Props = {
            "SkillId": SkillInfo["SkillId"],
            "OwnerId": self.id,
            "Damage": int(60 * self.PowerRatio),
            "SpawnPos": SpawnPos,
            "TargetPos": TargetPos
        }
        # 生成技能
        KBEngine.createEntity("PtSkill", self.spaceID, SpawnPos,
                              Math.Vector3(0, 0, 0), Props)
        # 告诉所有客户端播放动画
        self.allClients.OnAttack(SkillInfo["SkillId"])
示例#5
0
    def AcceptDamage(self, Damage, SenderId):
        """
        接受伤害, 获取发送伤害者的ID
        :param Damage: 伤害值
        :param SenderId: 发送者ID
        """
        FactDamage = Damage - self.Defense
        if FactDamage < 0:
            return

        # 减血, 如果血值小于等于实际伤害
        if self.HP <= FactDamage:
            self.HP = 0
            # 如果怪物血值为0 , 死后原地生成随机物品
            if self.GetScriptName() == "PtMonster":
                # 生成物品类型
                GoodType = random.randint(0, 2)
                # 生成细分种类Id
                KindId = random.randint(0, GetKindNumByType(GoodType))
                # 根据上面两个数据获取物品Id
                GoodId = GetGoodIdByTypeKind(GoodType, KindId)
                # 生成掉落物
                Props = {"GoodId": GoodId, "GoodType": GoodType}
                KBEngine.createEntity("PtFlob", self.spaceID, self.position,
                                      Math.Vector3(0, 0, 0), Props)
                INFO_MSG(
                    "Create PtFlob When PtMonster AcceptDamage to HP == 0. ")
                self.destroy()
        else:
            self.HP -= FactDamage
 def __init__(self):
     # DEBUG_MSG("SpaceNpcSystem:__init__")
     self.npcDatas = {}
     for npcID, npcData in npc_config_Table.datas.items():
         if npcData["spaceUID"] == self.spaceUID:
             self.npcDatas[npcID] = npcData
             params = {}
             params["npcID"] = npcID
             params["npcType"] = npcData["type"]
             params["store"] = npcData["store"]
             params["entityName"] = npcData["name"]
             KBEngine.createEntity("Npc", self.spaceID, npcData["pos"], (0.0, 0.0, math.radians(npcData["dir"][1])), params)
示例#7
0
	def __init__(self):
		DEBUG_MSG("Sect:__init__")
		KBEngine.Entity.__init__(self)
		KBEngine.globalData["space_base_spaceID_%i" % self.spaceID].cell.onEnter(self)
		params = {}
		params["npcID"] = 0
		params["npcType"] = GlobalConst.NpcType_Sect
		params["sectID"] = self.cell_sectID
		params["arenaID"] = 0
		params["entityName"] = "守宗人"
		z = sect_config_Table.datas[self.cell_sectID]["gateDir"][1]
		KBEngine.createEntity("Npc", self.spaceID, sect_config_Table.datas[self.cell_sectID]["gatePos"], (0.0, 0.0, math.radians(z)), params)
示例#8
0
    def __init__(self):
        DEBUG_MSG("BigWorld:__init__")
        KBEngine.Entity.__init__(self)
        EntityObject.__init__(self)
        KBEngine.globalData["space_%i" % self.spaceID] = self.base
        KBEngine.globalData["BigWorld_Cell"] = self
        self.timerID = self.addTimer(2, 0.1, 0)
        # 创建传送门触发器
        # self.gateWayTrigger = KBEngine.createEntity("GateWayTrigger", self.spaceID, (10.0, 1.0, 10.0), (0.0, 0.0, 0.0), {})
        # 生成Npc
        self.npcList = {}
        # 木精怪的字典,大小为5
        self.muJingGuaiMonsters = {}
        # 岩石灵怪的字典,大小为5
        self.yanShiLingGuaiMonsters = {}
        # self.npcList["新手引导"] = KBEngine.createEntity("Npc", self.spaceID, (202.0, 0.0, 253.0), (0.0, 0.0, 0.0), {"entityName": "新手引导"})
        self.npcList["商人"] = KBEngine.createEntity("Npc", self.spaceID,
                                                   (204.0, 0.0, 277.0),
                                                   (0.0, 180.0, 0.0), {
                                                       "entityName": "商人",
                                                       'modelName': "StoreNpc"
                                                   })
        # self.monsterSpawnPointData = monster_spawnpoint_data.data

        # MuJingGuai怪物的出生点
        self.spawnMuJingGuaiPos = space_data.data["木灵村"]["怪物数据"]["木精怪"]
        # yanShiLingGuai怪物的出生点
        self.spawnYanShiLingGuaiPos = space_data.data["木灵村"]["怪物数据"]["炎石灵怪"]

        # 生成木精怪怪物
        for x in self.spawnMuJingGuaiPos:
            self.muJingGuaiMonsters[x] = KBEngine.createEntity(
                "Monster", self.spaceID, x, (0.0, 0.0, 0.0), {
                    'entityName': "木精怪",
                    'modelName': "MuJingGuai"
                })
            self.muJingGuaiMonsters[x].receiveSpawnPos(x)
            self.muJingGuaiMonsters[x].setAttr("killerTaskCounterVariableName",
                                               "MuJingGuai_TaskCounter")
        # 生成炎石灵怪怪物
        for x in self.spawnYanShiLingGuaiPos:
            self.yanShiLingGuaiMonsters[x] = KBEngine.createEntity(
                "Monster", self.spaceID, x, (0.0, 0.0, 0.0), {
                    'entityName': "炎石灵怪",
                    'modelName': "YanShiLingGuai"
                })
            self.yanShiLingGuaiMonsters[x].receiveSpawnPos(x)
            self.yanShiLingGuaiMonsters[x].setAttr(
                "killerTaskCounterVariableName", "YanShiLingGuai_TaskCounter")
示例#9
0
    def __init__(self):
        KBEngine.Entity.__init__(self)
        EntityObject.__init__(self)
        DEBUG_MSG("Space:cell:__init__ " + str(self.spaceID) + " " + str(self.id) + " " + self.spaceName)
        self.npcList = {}
        KBEngine.globalData["space_%i" % self.spaceID] = self.base
        KBEngine.globalData["space_" + self.spaceName] = self.base
        KBEngine.globalData["space_cell_%i" % self.spaceID] = self
        KBEngine.globalData["space_cell_" + self.spaceName] = self

        self.spaceData = space_data.data[self.name]     # 取出自身的场景数据

        self.respawnPoint = self.spaceData["重生点"]

        self.addTimer(0, 2, 0)    # 怪物生成定时器 每2秒生成5个
        self.monsterSpawnCounter = {}
        self.monsterSpawnPositionList = self.spaceData["怪物数据"]       # 怪物出生点列表
        for monsterName, monsterSpawnPositionList in self.monsterSpawnPositionList.items():
            self.monsterSpawnCounter[monsterName] = 0

        self.npcsData = self.spaceData["Npc数据"]      # 取出场景Npc数据
        for npcName, npcData in self.npcsData.items():
            self.npcList[npcName] = KBEngine.createEntity("Npc",
                                                          self.spaceID,
                                                          npcData["坐标"],
                                                          (0.0, 0.0, 0.0),
                                                          {
                                                              "npcID": npcData["id"],
                                                              "name": npcName,
                                                              "entityName": npcName,
                                                              'modelName': npcData["模型名称"]
                                                          })     # 创建Npc

        self.triggerData = self.spaceData["触发器数据"]      # 取出场景触发器数据
        for triggerData in self.triggerData.values():
            exec("self.triggerStrategy = " + triggerData["触发器类型"] + "Strategy()")
            DEBUG_MSG(self.triggerStrategy)
            self.triggerStrategy.setData(triggerData)
            trigger = KBEngine.createEntity("Trigger",
                                            self.spaceID,
                                            triggerData["触发器坐标"],
                                            (0.0, 0.0, 0.0),
                                            {
                                                'name': "GateWayTrigger",
                                                'lifeSpans': 0,
                                                'triggerSize': 4,
                                                "triggerStrategy": self.triggerStrategy
                                            })     # 创建触发器
示例#10
0
	def spawnTimer(self):
		datas = d_entities.datas.get(self.spawnEntityNO)
		
		if datas is None:
			ERROR_MSG("SpawnPoint::spawn:%i not found." % self.spawnEntityNO)
			return
			
		params = {
			"spawnID"	: self.id,
			"spawnPos" : tuple(self.position),
			"uid" : datas["id"],
			"utype" : datas["etype"],
			"modelID" : datas["modelID"],
			"modelScale" : self.modelScale,
			"dialogID" : datas["dialogID"],
			"name" : datas["name"],
			"descr" : datas.get("descr", ''),
			"itemId" : 2,
			"attack_Max" : datas.get("attack_Max",10),
			"attack_Min" : datas.get("attack_Min",0),
			"defence" : datas.get("defence",10),
			"rating" : datas.get("rating",100),
			"dodge" : datas.get("dodge",100),
			"HP_Max" : datas.get("HP_Max",200),
		}
		
		e = KBEngine.createEntity(datas["entityType"], self.spaceID, tuple(self.position), tuple(self.direction), params)
示例#11
0
文件: Space.py 项目: VirtuaIRiot/Game
    def spawnCreatEntity(self, spwanID, position, direction):
        """

        """
        entities_datas = d_entities.datas.get(spwanID, None)

        if entities_datas is None:
            ERROR_MSG('entities_datas is None spwanID = %i.' % (spwanID))
            return

        params = {
            "spawnID": spwanID,
            "spawnPos": position,
            "uid": entities_datas["id"],
            "utype": entities_datas["etype"],
            "modelID": entities_datas["modelID"],
            "dialogID": entities_datas["dialogID"],
            "name": entities_datas["name"],
            "descr": entities_datas.get("descr", ''),
        }
        e = KBEngine.createEntity(entities_datas["entityType"], self.spaceID,
                                  position, direction, params)

        if entities_datas["entityType"] == "Mine":
            self.mines.append(e.id)
        elif entities_datas["entityType"] == "SupplyBox":
            self.surpplyboxs.append(e.id)
        else:
            ERROR_MSG('entities_datas is not props spwanID = %i.' % (spwanID))
            return

        DEBUG_MSG(
            "entityType:%s,spaceID:%i,positon:%s,direction:%s" %
            (entities_datas["entityType"], self.spaceID, position, direction))
示例#12
0
    def spawnTimer(self):
        datas = d_entity.datas.get(self.spawnEntityNO)

        if datas is None:
            ERROR_MSG("SpawnPoint::spawn:%i not found." % self.spawnEntityNO)
            return

        params = {
            "spawnID": self.id,
            "spawnPos": tuple(self.position),
            "uid": datas["id"],
            #"utype" : datas["etype"],
            "mid": self.spawnEntityNO,
            "modelScale": self.modelScale,
            "dialogID": 0,  #datas["dialogID"],
            #"name" : datas["name"],
            #"descr" : datas.get("descr", ''),

            #property
            "moveSpeed": datas['MoveSpeed'],
            #end property
        }

        e = KBEngine.createEntity(datas["Type"], self.spaceID,
                                  tuple(self.position), tuple(self.direction),
                                  params)
示例#13
0
    def replaceEntity(self, entityID, targetCardID):

        entity = self.getEntityByID(entityID)
        if entity == None:
            return
        entity.delAllBuff()
        if not targetCardID in d_card_dis.datas:
            return
        params = {
            "cardID": targetCardID,
            "playerID": self.playerID,
            "battlefiled": self.battlefiled,
            'pos': entity.pos,
            'avatar': self,
            'avatarID': self.id
        }
        e = KBEngine.createEntity('card_' + str(targetCardID), self.spaceID,
                                  tuple(self.position), tuple(self.direction),
                                  params)

        lss = [
            self.cardEntityList, self.followerList, self.battlefiled.entityList
        ]
        for ls in lss:
            for i in range(len(ls)):
                if ls[i] == entity:
                    ls[i] = e
        self.battlefiled.onPosChange(e.id)
示例#14
0
 def onTimer(self, timerHandle, userData):
     if userData is 0:
         finishCounter = 0
         for (monsterName, spawnPositionList) in self.monsterSpawnPositionList.items():
             tempCounter = 0
             counter = self.monsterSpawnCounter[monsterName]
             for position in spawnPositionList:
                 if counter >= len(spawnPositionList):
                     finishCounter += 1
                     break
                 else:
                     monster = KBEngine.createEntity(
                                                     "Monster",
                                                     self.spaceID,
                                                     spawnPositionList[counter],
                                                     (0.0, 0.0, 0.0),
                                                     {
                                                         "name": monsterName,
                                                         'entityName': monsterName,
                                                         'modelName': monster_data.data[monsterName]["模型名称"]
                                                     })      # 创建Monster
                     monster.receiveSpawnPos(spawnPositionList[counter])
                     if tempCounter >= 5:
                         break
                     counter += 1
                     tempCounter += 1
                     self.monsterSpawnCounter[monsterName] = counter
         if finishCounter >= len(self.monsterSpawnPositionList):
             self.delTimer(timerHandle)
示例#15
0
	def onCreatCardEntity(self):
		if len(self.onCreatCardEntityList) == 0:
			self.onCreatOk()
			return

		data = self.onCreatCardEntityList[0]
		self.onCreatCardEntityList.remove(data)

		pos = data['pos']
		cardID = data['cardID']

		DEBUG_MSG('Avatar:[%s] creatCardEntity cardID:[%s]'%(self.id,cardID))
		params = {
			"cardID"	: cardID,
			"playerID" : self.playerID,
			"battlefiled" : self.battlefiled,
			'pos':pos,
			'avatar':self,
			'avatarID':self.id
		}
		if pos == 'SKILL':
			params['isAbled'] = 1
			DEBUG_MSG('Avatar:[%s] pos is skill' % (self.id))
		e = KBEngine.createEntity('card', self.spaceID, tuple(self.position), tuple(self.direction), params)

		self.cardEntityList.append(e)
		self.battlefiled.entityList.append(e)
示例#16
0
    def spawnTimer(self):
        datas = d_entities.datas.get(self.spawnEntityNO)

        if datas is None:
            ERROR_MSG("SpawnPoint::spawn:%i not found." % self.spawnEntityNO)
            return

        params = {
            "spawnID": self.id,
            "spawnPos": tuple(self.position),
            "uid": datas["id"],
            "utype": datas["etype"],
            "modelID": datas["modelID"],
            "modelScale": self.modelScale,
            "dialogID": datas["dialogID"],
            "name": datas["name"],
            "descr": datas.get("descr", ''),
            "itemId": 2,
            "attack_Max": datas.get("attack_Max", 10),
            "attack_Min": datas.get("attack_Min", 0),
            "defence": datas.get("defence", 10),
            "rating": datas.get("rating", 100),
            "dodge": datas.get("dodge", 100),
            "HP_Max": datas.get("HP_Max", 200),
        }

        e = KBEngine.createEntity(datas["entityType"], self.spaceID,
                                  tuple(self.position), tuple(self.direction),
                                  params)
示例#17
0
 def conjure(self, spellCaster):
     Skill.conjure(self, spellCaster)
     bullet = KBEngine.createEntity("Trigger", spellCaster.spaceID,
                                    spellCaster.position,
                                    spellCaster.direction, {})
     bullet.damage = 10
     bullet.moveToPointSample(self.point, 4, 1)
     商店 = {}
示例#18
0
 def langshourenguaiMonsterSkill(self, point, yaw):
     """
     狼兽人怪的技能:发射一个火球或水球
     :return:
     """
     # 如果目标位置不为空
     if point is not None:
         # 创建一个火球技能实体
         triggerStrategy = OnceDamageTriggerStrategy()
         triggerStrategy.setData({"攻击力": 10})
         rnd = int(random.random() * 10)
         if rnd % 2 == 0:
             bullet = KBEngine.createEntity(
                 "Trigger", self.spaceID,
                 (self.position.x, 1, self.position.z), (0.0, 0.0, 0.0), {
                     'lifeSpans': 2,
                     'name': "WolfSkill1",
                     'triggerID': 3,
                     'triggerSize': 2,
                     'damage': 10,
                     'parentSkill': "YanshilingGuaiSkill",
                     'spellCaster': self,
                     'triggerStrategy': triggerStrategy
                 })
             self.allClients.Attack_01()
             # 技能移动到目标位置
             bullet.moveToPointSample((point.x, 1, point.z),
                                      self.skillSpeed)
         else:
             bullet1 = KBEngine.createEntity(
                 "Trigger", self.spaceID,
                 (self.position.x, 1, self.position.z), (0.0, yaw, 0.0), {
                     'lifeSpans': 2,
                     'name': "WolfSkill2",
                     'triggerID': 3,
                     'triggerSize': 2,
                     'damage': 10,
                     'parentSkill': "YanshilingGuaiSkill",
                     'spellCaster': self,
                     'triggerStrategy': triggerStrategy
                 })
             self.allClients.Attack_02()
             # 技能移动到目标位置
             bullet1.moveToPointSample((point.x, 1, point.z),
                                       self.skillSpeed)
示例#19
0
 def onTimer(self, timerHandle, userData):
     if userData is 0:
         if len(self.tmpCreateEntityDatas) <= 0:
             self.delTimer(timerHandle)
             return
         datas = self.tmpCreateEntityDatas.pop(0)
         if datas is None:
             ERROR_MSG("Space::onTimer: spawn %i is error!" % datas[0])
         params = {
             "typeID": datas["typeID"],
             "entityName":
             monster_config_Table.datas[datas["typeID"]]["name"],
             "HP_Max": monster_config_Table.datas[datas["typeID"]]["hp"],
             "HP": monster_config_Table.datas[datas["typeID"]]["hp"]
         }
         KBEngine.createEntity(datas["entity_type"], self.spaceID,
                               tuple(datas["spawnPos"]), (0.0, 0.0, 0.0),
                               params)
示例#20
0
    def onAttached(self, owner):
        """
		"""
        INFO_MSG("Operation::onAttached(): owner=%i" % (owner.id))

        self.frameMgr = KBEngine.createEntity("FrameSyncMgr",
                                              self.owner.spaceID,
                                              tuple(self.owner.position),
                                              tuple(self.owner.direction), {})
示例#21
0
    def __init__(self):
        KBEngine.Space.__init__(self)

        KBEngine.addSpaceGeometryMapping(self.spaceID, None,
                                         "spaces/MmoMapOne")
        # KBEngine.addSpaceGeometryMapping(self.spaceID, None, "spaces/MmoMapTwo")

        #随机创建多个Monster
        for i in range(random.randint(5, 8)):
            MonsterProps = {
                "Name": "怪物_" + str(i),
                "HP": 500,
            }
            KBEngine.createEntity(
                "PtMonster", self.spaceID,
                Math.Vector3(random.randint(-7, 7), 0.7, random.randint(-7,
                                                                        7)),
                Math.Vector3(0, 0, random.randint(0, 360)), MonsterProps)
示例#22
0
    def spawnTimer(self):

        params = {
            "spawnID": self.id,
            "spawnPos": tuple(self.position),
        }

        e = KBEngine.createEntity(datas["entityType"], self.spaceID,
                                  tuple(self.position), tuple(self.direction),
                                  params)
示例#23
0
	def InitGold(self, index):
		allPos = BattleSpacePosConfigs.getInitGoldPos(index)
		curValue = 0
		isMin = False
		curTrackGoldValue = TRACKGOLDVALUE
		for i in range(0, int(BattleSpacePosConfigs.GoldNum)):
			if isMin:
				curValue = 1
			else:
				curValue = random.randint(1, 3)
				if (curTrackGoldValue - curValue) == (BattleSpacePosConfigs.GoldNum - (i + 1)):
					isMin = True
				elif (curTrackGoldValue - curValue) + 1 == (BattleSpacePosConfigs.GoldNum - (i + 1)):
					curValue -= 1
					isMin = True
			curTrackGoldValue -= curValue
			KBEngine.createEntity('Gold', self.spaceID, allPos[i], (0.0, math.radians(72 * index) * 1.0, 0.0),
								  {"goldValue" : curValue})
			DEBUG_MSG("InitGold | pos : (%f, %f, %f)  index : %f" % (allPos[i].x, allPos[i].y, allPos[i].z, index))
示例#24
0
 def CreateCardEntity(self,cardID,pos = "KZ"):
     DEBUG_MSG('Avatar[%i].cell::creat cardennity cardID:[%i]' % (self.id, cardID))
     params = {
         'cardID': cardID,
         'battlefield': self.Battlefield,
         'avatar': self,
         'playerID':self.playerID
                 }
     entity = KBEngine.createEntity("CardInfo",self.spaceID,tuple(self.position),tuple(self.direction),params)
     self.CardEnityList.append(entity)
 def createArena(self, arenaPosition, arenaID):
     DEBUG_MSG("SpaceArenaSystem:createArena")
     params = {}
     params["entityName"] = "ArenaView"
     params["arenaID"] = arenaID
     self.arena = KBEngine.createEntity("Arena", self.spaceID,
                                        arenaPosition, (0.0, 0.0, 0.0),
                                        params)
     params = {}
     params["npcID"] = 0
     params["npcType"] = GlobalConst.NpcType_Arena
     params["sectID"] = 0
     params["entityName"] = "守擂人"
     params["arenaID"] = arenaID
     npcPosition = (arenaPosition[0] - 14, arenaPosition[1],
                    arenaPosition[2] - 14)
     self.arenaNpc = KBEngine.createEntity("Npc", self.spaceID, npcPosition,
                                           (0.0, 0.0, 3.2), params)
     self.arena.arenaNpc = self.arenaNpc
示例#26
0
	def createItems(self):
		"""
		生成房间内的物品
		"""
		for name, prop in GameConfigs.ITEMS["map1"].items():
			harm = prop['harm']
			pos = prop['pos']
			dir = (0.0, 0.0, 0.0)
			entity = KBEngine.createEntity("Item", self.spaceID, pos, dir, {
			                               "name": name, "harm": harm})
			self.items[entity.id] = entity
示例#27
0
 def createCardEntity(self, cardID, pos='KZ'):
     DEBUG_MSG('Avatar.cell::createCardEntity: [%i] cardID[%i]  pos:[%s]' % (
         self.id, cardID, pos))
     params = {
         'cardID': cardID,
         'pos': pos,
         "battlefiled": self.battlefiled,
         'avatar': self,
         'playerID': self.playerID
     }
     e=KBEngine.createEntity('card',self.spaceID,tuple(self.position),tuple(self.direction),params)
     self.cardEntityList.append(e)
示例#28
0
    def xiaCiYiDingSkill(self, entityId):
        '''
		重写下次一定技能
		'''
        if self.BattleFieldCell.isFinished == True:
            return
        Skills.xiaCiYiDingSkill(self, entityId)
        if self.goldNum >= self.xiaCiYiDingGold:
            self.goldNum -= self.xiaCiYiDingGold
        else:
            DEBUG_MSG("Avatar[%i] :: xiaCiYiDingSkill : 金币(%i)不足" %
                      (self.id, self.goldNum))
            return
        acceptAvatarCell = self.BattleFieldCell.cellAvatars[entityId]
        params = {
            "launchID": self.id,
            "acceptID": acceptAvatarCell.id,
            "followAvatarCell": acceptAvatarCell,
        }
        KBEngine.createEntity('XiaCiYiDingProp', self.BattleFieldCell.spaceID,
                              (0.0, 0.0, 0.0), acceptAvatarCell.direction,
                              params)
示例#29
0
	def __init__(self):
		KBEngine.Entity.__init__(self)
		
		datas = d_entities.datas.get(self.spawnEntityNO)
		params = {
			"spawnPos" : tuple(self.position),
			"uid" : datas["id"],
			"utype" : datas["etype"],
			"modelID" : datas["modelID"],
			"dialogID" : datas["dialogID"],
		}
		
		e = KBEngine.createEntity(datas["entityType"], self.spaceID, tuple(self.position), tuple(self.direction), params)
示例#30
0
    def nanShangJiaNanSkill(self, pos, track):
        '''
		重写男上加男技能
		'''
        if self.BattleFieldCell.isFinished == True:
            return
        Skills.nanShangJiaNanSkill(self, pos, track)
        if self.goldNum >= self.nanShangJiaNanGold:
            self.goldNum -= self.nanShangJiaNanGold
        else:
            DEBUG_MSG("Avatar[%i] :: nanShangJiaNanSkill : 金币(%i)不足" %
                      (self.id, self.goldNum))
            return

        params = {
            "launchID": self.id,
            "track": track,
        }
        params.values()
        KBEngine.createEntity('NanShangJiaNanProp',
                              self.BattleFieldCell.spaceID, pos,
                              (0.0, math.radians(72 * track) * 1.0, 0.0),
                              params)
示例#31
0
 def cast(self):
     damage = int(self.skillSpAmount * self.skillQuality)
     self.strategyData = {"伤害": damage}
     super().cast()
     params = {}
     params["entityName"] = "Shoot_Trigger"
     params["owner"] = self.spellCaster
     params["lifeSpans"] = 4.0
     params["triggerSize"] = 2.0
     params["triggerStrategy"] = self.triggerStrategy
     trigger = KBEngine.createEntity("Trigger", self.spellCaster.spaceID,
                                     self.spellCaster.position,
                                     (0.0, 0.0, 0.0), params)
     trigger.moveToPointSample(self.skillPoint, 80)
示例#32
0
	def __init__(self):
		SpaceCopy.__init__(self)
	
		# 添加一个timer5秒后战斗开始
		self.addTimer(5, 0, wtimer.TIMER_TYPE_FIGTH_READY)
		
		self.monsters = []
		
		datas = d_spaces.datas[self.spaceUType]
		entitiesMinCount = datas.get("entitiesMinCount", 1)
		entitiesMaxCount = datas.get("entitiesMaxCount", 1)
		
		bosslist = []
		monlist = []
		
		for x in range(6):
			bossID = datas.get("boss%iID" % (x + 1), 0)
			bossLvMin = datas.get("boss%iLvMin" % (x + 1), 0)
			bossLvMax = datas.get("boss%iLvMax" % (x + 1), 0)
			if bossID > 0:
				bosslist.append((bossID, random.randint(bossLvMin, bossLvMax)))
			
			monID = datas.get("monster%iID" % (x + 1), 0)
			monLvMin = datas.get("monster%iLvMin" % (x + 1), 0)
			monLvMax = datas.get("monster%iLvMax" % (x + 1), 0)
			if monID > 0:
				monlist.append((monID, random.randint(monLvMin, monLvMax)))
			
		
		vals = bosslist + monlist
		random.shuffle(vals)
		
		
		for x in range(random.randint(entitiesMinCount, entitiesMaxCount)):
			val = vals[x]
			mondatas = d_entities.datas.get(val[0])

			params = {
				"fightSeat" : x,
				"uid" : mondatas["id"],
				"utype" : mondatas["etype"],
				"modelID" : mondatas["modelID"],
				"dialogID" : mondatas.get("dialogID", 0),
				"name" : mondatas["name"],
				"descr" : mondatas.get("descr", ''),
			}
			
			e = KBEngine.createEntity(mondatas["entityType"], self.spaceID, (0,0,0), (0,0,0), params)
			self.monsters.append(e)
示例#33
0
 def cast(self):
     damage = int(self.skillSpAmount * self.skillQuality)
     self.strategyData = {"伤害": damage}
     super().cast()
     params = {
         'entityName': "SkillW_Trigger",
         'owner': self.spellCaster,
         "campName": self.spellCaster.campName,
         'triggerID': 2,
         'triggerSize': 2.0,
         'triggerStrategy': self.triggerStrategy
     }
     trigger = KBEngine.createEntity("Trigger", self.spellCaster.spaceID,
                                     self.skillPoint, (0.0, 0.0, 0.0),
                                     params)
示例#34
0
	def __init__(self):
		SpaceCopy.__init__(self)

		self.monsters = {}
		self.inputAvatars = [] # 本回合已经提交过的人
		self.startRecvInputFigth()
		
		datas = d_spaces.datas[self.spaceUType]
		entitiesMinCount = datas.get("entitiesMinCount", 1)
		entitiesMaxCount = datas.get("entitiesMaxCount", 1)
		
		bosslist = []
		monlist = []
		
		for x in range(6):
			bossID = datas.get("boss%iID" % (x + 1), 0)
			bossLvMin = datas.get("boss%iLvMin" % (x + 1), 0)
			bossLvMax = datas.get("boss%iLvMax" % (x + 1), 0)
			if bossID > 0:
				bosslist.append((bossID, random.randint(bossLvMin, bossLvMax)))
			
			monID = datas.get("monster%iID" % (x + 1), 0)
			monLvMin = datas.get("monster%iLvMin" % (x + 1), 0)
			monLvMax = datas.get("monster%iLvMax" % (x + 1), 0)
			if monID > 0:
				monlist.append((monID, random.randint(monLvMin, monLvMax)))
			
		
		vals = bosslist + monlist
		random.shuffle(vals)
		
		for x in range(random.randint(entitiesMinCount, entitiesMaxCount)):
			val = vals[x]
			mondatas = d_entities.datas.get(val[0])

			params = {
				"fightSeat" : x,
				"uid" : mondatas["id"],
				"utype" : mondatas["etype"],
				"modelID" : mondatas["modelID"],
				"dialogID" : mondatas.get("dialogID", 0),
				"name" : mondatas["name"],
				"descr" : mondatas.get("descr", ''),
			}
			
			e = KBEngine.createEntity(mondatas["entityType"], self.spaceID, (0,0,0), (0,0,0), params)
			self.monsters[e.id] = e
示例#35
0
	def spawnTimer(self, tid, tno):
		datas = d_entities.datas.get(self.spawnEntityNO)
		
		if datas is None:
			ERROR_MSG("SpawnPoint::spawn:%i not found." % self.spawnEntityNO)
			return
			
		params = {
			"spawnPos" : tuple(datas["spawnPos"]),
			"uid" : datas["id"],
			"utype" : datas["etype"],
			"modelID" : datas["modelID"],
			"dialogID" : datas["dialogID"],
			"name" : datas["name"],
			"descr" : datas.get("descr", ''),
		}
		
		e = KBEngine.createEntity(datas["entityType"], self.spaceID, tuple(self.position), tuple(self.direction), params)
示例#36
0
	def __init__(self):
		KBEngine.Entity.__init__(self)
		
		datas = d_entities.datas.get(self.spawnEntityNO)
		DEBUG_MSG("spawn:%i" % self.spawnEntityNO)
		params = {
			"spawnPos" : tuple(datas["spawnPos"]),
			"position" : tuple(self.position),
			"direction" : tuple(self.direction),
			"uid" : datas["id"],
			"utype" : datas["etype"],
			"modelID" : datas["modelID"],
			"dialogID" : datas["dialogID"],
			"name" : datas["name"],
			"descr" : datas.get("descr", ''),
		}
		
		e = KBEngine.createEntity(datas["entityType"], self.spaceID, tuple(self.position), tuple(self.direction), params)
示例#37
0
	def dropNotify(self, itemId, itemCount):
		datas = d_entities.datas.get(40001003)
		
		if datas is None:
			ERROR_MSG("SpawnPoint::spawn:%i not found." % 40001003)
			return
			
		params = {
			"uid" : datas["id"],
			"utype" : datas["etype"],
			"modelID" : datas["modelID"],
			"dialogID" : datas["dialogID"],
			"name" : datas["name"],
			"descr" : datas.get("descr", ''),
			"itemId" : itemId,
			"itemCount" : itemCount,
		}
		
		e = KBEngine.createEntity("DroppedItem", self.spaceID, tuple(self.position), tuple(self.direction), params)
	def createWeapon(self, srcEntityID, position, direction, velocity, boxSize):
		DEBUG_MSG("[CellApp] SkillBox::useWeapon: id:%i, position(%f, %f, %f), direction(%f, %f, %f) boxSize(%i, %i, %i)" %(self.id, position.x, position.y, position.z, direction.x, direction.z, direction.y, boxSize.x, boxSize.y, boxSize.z))

		params = {"attackId": self.id, "velocity": velocity, "boxSize": boxSize}
		KBEngine.createEntity("Weapon", self.spaceID, tuple(position), tuple(direction), params)