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), {})
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")
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)))
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"])
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)
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)
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")
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 }) # 创建触发器
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)
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))
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)
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)
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)
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)
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)
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) 商店 = {}
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)
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)
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), {})
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)
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)
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))
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
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
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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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)