def getRBInstance(self, bossid): bossid = int(bossid) rbsm = RaidBossSpawnManager.getInstance() bosses = rbsm.getBosses() for id in bosses: if id == bossid: return bosses[id] return None
def respawn_all(self): rbsm = RaidBossSpawnManager.getInstance() for id, id_list in self.pages.items(): for lv, ids in id_list: map(self.respawn, [ npc_id for npc_id in ids if rbsm.getRaidBossStatusId(npc_id) == StatusEnum.DEAD ])
def getRbSpawn(self, bossid): bossid = int(bossid) rbsm = RaidBossSpawnManager.getInstance() spawns = rbsm.getSpawns() for id in spawns: if id == bossid: return spawns[id] return None
def respawn(self, bossid): spawn = self.getRbSpawn(bossid) if spawn: npc_t = spawn.getTemplate() if not npc_t: return hp, mp = npc_t.getBaseHpMax(), npc_t.getBaseMpMax() boss = self.getRBInstance(bossid) if boss and L2World.getInstance().findObject(boss.getObjectId()): return spawn.stopRespawn() rbsm = RaidBossSpawnManager.getInstance() rbsm.deleteSpawn(spawn, True) rbsm.addNewSpawn(spawn, 0, hp, mp, True) if npc_t.getNpcId() in [25328]: #25328 "艾爾哈爾德 潘 哈曼" if GameTimeController.getInstance().isNowNight(): spawn.startRespawn() spawn.respawnNpc(spawn.getLastSpawn()) spawn.stopRespawn() # spawn.doSpawn() return
def getPageHtm(self, player, selected_tab="2x"): def getTabHtm(): keys = self.pages.keys() keys.sort() r = "<table border=0 cellpadding=0 cellspacing=0><tr>" for key in keys: r += "<td><button width=30 height=20 fore=\"L2UI_CT1.Tab_DF_Tab" if selected_tab == key: r += "_Selected" else: r += "_Unselected" r += "\" value=\"" + key + "\" action=\"bypass -h Quest " + self.qn + " " + key + "\"></td>" r += "</tr></table>" return r rbsm = RaidBossSpawnManager.getInstance() l2world = L2World.getInstance() r = "<table border=0 cellpadding=0 cellspacing=0>" for id, id_list in self.pages.items(): if id == selected_tab: for lv, ids in id_list: for npc_id in ids: if npc_id in self.backlist: continue status = rbsm.getRaidBossStatusId(npc_id) if status == StatusEnum.UNDEFINED: if not self.isNoDataShow: continue npc = self.getL2Npc(npc_id) v = None if npc: v = l2world.findObject(npc.getObjectId()) isInCombat = npc.isInCombat() r += "<tr>" r += "<td width=30>" showTele = False if not status == StatusEnum.UNDEFINED: # and v: if not status == StatusEnum.DEAD or self.isAllowTeleDead: showTele = True if v: if not isInCombat or self.isAllowTeleInCombat: showTele = True if showTele: r += "<a action=\"bypass -h Quest " + self.qn + " teleport_" + str( npc_id) + "\">" + "傳送" + "</a>" r += "</td>" r += "<td>Lv" + str( lv) + " " + self.npcNameTable.getName( npc_id) + "(" + str(npc_id) + ")</td>" if status == StatusEnum.ALIVE: if v: if isInCombat: r += "<td><font color=FF0000>挑戰中</font></td>" else: r += "<td>可挑戰</td>" else: r += "<td>消失</td>" elif status == StatusEnum.DEAD: if v: r += "<td>死亡</td>" else: if player.isGM(): r += "<td><a action=\"bypass -h Quest " + self.qn + " respawn_" + str( npc_id) + "\">" + "GM重生" + "</a></td>" else: r += "<td>待重生</td>" else: r += "<td><font color=666666>沒數據</font></td>" r += "</tr>" break r += "</table>" return self.htm_header + getTabHtm() + r + self.htm_footer
def respawn_all(self): rbsm = RaidBossSpawnManager.getInstance() for id, id_list in self.pages.items(): for lv, ids in id_list: map(self.respawn, [npc_id for npc_id in ids if rbsm.getRaidBossStatusId(npc_id) == StatusEnum.DEAD])
def getPageHtm(self, player, selected_tab="2x"): def getTabHtm(): keys = self.pages.keys() keys.sort() r = "<table border=0 cellpadding=0 cellspacing=0><tr>" for key in keys: r += "<td><button width=30 height=20 fore=\"L2UI_CT1.Tab_DF_Tab" if selected_tab == key: r += "_Selected" else: r += "_Unselected" r += "\" value=\"" + key + "\" action=\"bypass -h Quest " + self.qn + " " + key + "\"></td>" r += "</tr></table>" return r rbsm = RaidBossSpawnManager.getInstance() l2world = L2World.getInstance() r = "<table border=0 cellpadding=0 cellspacing=0>" for id, id_list in self.pages.items(): if id == selected_tab: for lv, ids in id_list: for npc_id in ids: if npc_id in self.backlist: continue status = rbsm.getRaidBossStatusId(npc_id) if status == StatusEnum.UNDEFINED: if not self.isNoDataShow: continue npc = self.getL2Npc(npc_id) v = None if npc: v = l2world.findObject(npc.getObjectId()) isInCombat = npc.isInCombat() r += "<tr>" r += "<td width=30>" showTele = False if not status == StatusEnum.UNDEFINED:# and v: if not status == StatusEnum.DEAD or self.isAllowTeleDead: showTele = True if v: if not isInCombat or self.isAllowTeleInCombat: showTele = True if showTele: r += "<a action=\"bypass -h Quest " + self.qn + " teleport_" + str(npc_id) + "\">" + "傳送" + "</a>" r += "</td>" r += "<td>Lv" + str(lv) + " " + self.npcNameTable.getName(npc_id) + "(" + str(npc_id) + ")</td>" if status == StatusEnum.ALIVE: if v: if isInCombat: r += "<td><font color=FF0000>挑戰中</font></td>" else: r += "<td>可挑戰</td>" else: r += "<td>消失</td>" elif status == StatusEnum.DEAD: if v: r += "<td>死亡</td>" else: if player.isGM(): r += "<td><a action=\"bypass -h Quest " + self.qn + " respawn_" + str(npc_id) + "\">" + "GM重生" + "</a></td>" else: r += "<td>待重生</td>" else: r+= "<td><font color=666666>沒數據</font></td>" r += "</tr>" break r += "</table>" return self.htm_header + getTabHtm() + r + self.htm_footer