This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..
Question
Urbanhack
Hello Guys.. im here again...
this is very complicated for me beacause i try and try and try.. but i'm going crazy.
i wanna put "QUEST B" into "QUEST A"
For Start Quest With This Movie
(I Have The Core y DP Side Working Need The Quest.)
"QUEST A"
# Halisha and Frintezza Halisha1 = 100200 Halisha1a = 29046 Halisha3 = 29047 dummy = 29053 Frintezza = 29045 FRINTEZZA = 29045 Ghost1 = 29050 Ghost2 = 29051 Ghost3 = 29050 Ghost4 = 29051 #other NPC Messenger = 100110 FRINTEZZA_TELE = 32011 #MOBS SECOND ROOM SPAWN LOCATIONS XXX = 174058 YYY = -81690 ZZZ = -5124 #OUTER MOBS SPAWN COORDS ROOM 2 XX1 = 175174 YY1 = -81804 ZZ1 = -5108 XX2 = 172988 YY2 = -81719 ZZ2 = -5108 #MOBS SPAWN LOCATIONS ROOM 1 XX = 174157 YY = -76232 ZZ = -5108 #SPAWN COORDS FOR FRINTEZZA AND HALISHA FX = 174239 FY = -89802 FZ = -5021 HX = 174231 HY = -88006 HZ = -5115 #TELEPORT ITEM FRINTEZZA_SCROLL = 8073 #STATUS DORMANT = 0 FIGHTING = 2 DEAD = 3 #I used a different statue than on official because the #one used on retail doesnt show a HP bar on L2J and because #this one is honestly cooler STATUE_1 = 100100 STATUE_2 = 100101 STATUE_3 = 100102 STATUE_4 = 100103 STATUE_5 = 100104 class frintezza(JQuest): # init function. Add in here variables that you'd like to be inherited by subclasses (if any) def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) # finally, don't forget to call the parent constructor to prepare the event TriggerThreeing # mechanisms etc. self.Despawn ={29045: {"bosses": [ 29045, 29046, 29047, 18335, 18338, 18334, 18334, 18329, 18330, 18331, 18332, 18333, 18329, 18336, 18337 ]},} self.MobSpawns ={ 18336: {"spawns": [ 18334, 18334, 18334, 18334 ], "chance": 30}, # mobs who will spawn 18337: {"spawns": [ 18334, 18334, 18334, 18334 ], "chance": 30}, 29046: {}, 29047: {}, 31453: {}, 100200: {}, 100100: {"spawns": [ 18329, 18331, 18330, 18332, 18333 ], "room2": [ 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337 ], "chance": 30}, # mobs who will spawn 100101: {"spawns": [ 18329, 18330, 18330, 18330, 18330 ], "room2": [ 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337 ], "chance": 30}, 100102: {"spawns": [ 18329, 18331, 18331, 18331, 18331 ], "room2": [ 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337 ], "chance": 30}, 100103: {"spawns": [ 18329, 18332, 18332, 18332, 18332 ], "room2": [ 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337 ], "chance": 30}, 100104: {"spawns": [ 18329, 18333, 18333, 18333, 18333 ], "room2": [ 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337, 18336, 18337 ], "chance": 30}, } self.TriggerOne = True self.Start = False self.TriggerTwo = True self.Done = True self.isMorphed = False self.TriggerThree = True self.TriggerLock = True self.TriggerUnlock = False self.EntryLocked = False self.dummy = [] self.halisha2 = [] self.halisha1 = [] self.halisha3 = [] self.SpawnGhost1 = [] self.SpawnGhost2 = [] self.SpawnGhost3 = [] self.SpawnGhost4 = [] self.frintezza = [] self.song1trigger = False self.FrintezzaZone = GrandBossManager.getInstance().getZone(174231,-88006,-5108) self.TombZone = GrandBossManager.getInstance().getZone(174157,-76232,-5108) info = GrandBossManager.getInstance().getStatsSet(FRINTEZZA) status = GrandBossManager.getInstance().getBossStatus(FRINTEZZA) if status == DEAD : # load the unlock date and time for Frintezza from DB temp = long(info.getLong("respawn_time")) - System.currentTimeMillis() if temp > 0 : self.EntryLocked = True self.startQuestTimer("FRINTEZZA_unlock", temp, None, None) else : # the time has already expired while the server was offline. # Set teleport to locked self.EntryLocked = False GrandBossManager.getInstance().setBossStatus(FRINTEZZA,DORMANT) else : self.EntryLocked = False def onTalk (self,npc,player) : npcId = npc.getNpcId() if npcId == FRINTEZZA_TELE : #need to check here if FRINTEZZA is dead, not done yet #data will be saved in quest global data if player.getQuestState("frintezza").getQuestItemsCount(FRINTEZZA_SCROLL) >= 1 : if self.EntryLocked == False : party = player.getParty() if party : if party.isInCommandChannel() : channel = party.getCommandChannel() channelsize = len(channel.getPartys()) channelmembers = list(channel.getMembers()) channelleader = channel.getChannelLeader() if channelsize >= 2 and channelsize <= 5 and channelleader == player: player.getQuestState("frintezza").takeItems(FRINTEZZA_SCROLL,1) self.TriggerOne = self.Start pointA = [] for i in range(len(channelmembers)/2) : pointA.append(channelmembers.pop(Rnd.get(len(channelmembers)))) pointB = channelmembers for i in pointA: GrandBossManager.getInstance().getZone(174157,-76232,-5108).allowPlayerEntry(i, 60) i.teleToLocation(174157,-76232,-5108)#tele to location A for i in pointB: GrandBossManager.getInstance().getZone(174157,-76232,-5108).allowPlayerEntry(i, 60) i.teleToLocation(173102,-75248,-5108)#tele to location A return "<html><body>Your group has been split into 2. The group on the outer rim need to kill the alarms in order to free the one inside. From this point, you have 35 minutes to complete the challenges and get into Frintezza's chambers</body></html>" #teleport out not finished self.startQuestTimer("teleport_out", 2100000, None, None) self.startQuestTimer("Area_open", 10800800, None, None) else: return "<html><body>Your command channel needs to have at least 4 parties and a maximum of 5.</html></body>" else: return "<html><body>You are not in a command channel</html></body>" else: return "<html><body>You are not in a party</html></body>" else: return "<html><body>Either there is another group in the Last Imperial Tomb or Frintezza cannot recieve visitors at the moment. Come back later.</html></body>" else: return "<html><body>You do not have the necessary scroll in your possession.</html></body>" return def onAttack (self,npc,player,damage,isPet) : npcId = npc.getNpcId() objId = npc.getObjectId() if npcId == STATUE_1 or npcId == STATUE_2 or npcId == STATUE_3 or npcId == STATUE_4 or npcId == STATUE_5 : if self.EntryLocked == False : #Makes sure that no other group goes to the Last Imperial Tomb when another group is there self.EntryLocked = self.TriggerLock if npcId == FRINTEZZA : self.frintezza.setCurrentHpMp(700000,10000) if npcId == Halisha1 : self.lastAttackVsHalisha = System.currentTimeMillis() self.startQuestTimer("FRINTEZZA_despawn",60000, None, None) if self.TriggerThree == False : self.TriggerThree = self.Done if self.TriggerThree == True : CurrentHP = npc.getCurrentHp() if CurrentHP <= npc.getMaxHp() * 0.5 and self.isMorphed == False: self.startQuestTimer("poly1", 100, npc, player) if npcId == Halisha1a : self.lastAttackVsHalisha = System.currentTimeMillis() self.startQuestTimer("FRINTEZZA_despawn",60000, None, None) if npcId == Halisha3 : self.lastAttackVsHalisha = System.currentTimeMillis() self.startQuestTimer("FRINTEZZA_despawn",60000, None, None) return def onKill (self,npc,player,isPet) : npcId = npc.getNpcId() npcObjId = npc.getObjectId() rr2 = Rnd.get(700) rr = Rnd.get(690) MobSpawns = self.MobSpawns if MobSpawns.has_key(npcId) : if npcId == 100100 or npcId == 100101 or npcId == 100102 or npcId == 100103 or npcId == 100104 : if self.TriggerOne == False : if Rnd.get(100) < MobSpawns[npcId]["chance"] : #First sequence finished, open the walls and doors and spawn the mobs in the second room self.TriggerOne = self.Done self.TriggerTwo = self.Start for i in range(len(MobSpawns[npcId]["spawns"])): rr2 = Rnd.get(500) rr = Rnd.get(480) objId = self.addSpawn(MobSpawns[npcId]["spawns"][i],XX+(250-rr),YY+(250-rr2),ZZ,0,False,0) for i in range(25150051,25150059): DoorTable.getInstance().getDoor(i).openMe() DoorTable.getInstance().getDoor(25150042).openMe() DoorTable.getInstance().getDoor(25150043).openMe() for i in range(len(MobSpawns[npcId]["room2"])): rr2 = Rnd.get(680) rr = Rnd.get(700) objId = self.addSpawn(MobSpawns[npcId]["room2"][i],XXX+(350-rr),YYY+(350-rr2),ZZZ,0,False,0) else : for i in range(len(MobSpawns[npcId]["spawns"])): rr2 = Rnd.get(700) rr = Rnd.get(680) objId = self.addSpawn(MobSpawns[npcId]["spawns"][i],XX+(350-rr),YY+(350-rr2),ZZ,0,False,0) if npcId == 18336 or npcId == 18337 : if Rnd.get(100) < MobSpawns[npcId]["chance"] : if self.TriggerTwo == self.Start : self.TriggerTwo = self.Done if player: party = player.getParty() if party : channel = party.getCommandChannel() channelmembers = list(channel.getMembers()) for play in channelmembers: GrandBossManager.getInstance().getZone(174231,-88006,-5115).allowPlayerEntry(play, 360) else: GrandBossManager.getInstance().getZone(174231,-88006,-5115).allowPlayerEntry(player, 360) for i in range(25150061,25150071): DoorTable.getInstance().getDoor(i).openMe() DoorTable.getInstance().getDoor(25150045).openMe() DoorTable.getInstance().getDoor(25150046).openMe() for i in range(25150051,25150059): DoorTable.getInstance().getDoor(i).closeMe() DoorTable.getInstance().getDoor(25150042).closeMe() DoorTable.getInstance().getDoor(25150043).closeMe() for i in range(len(MobSpawns[npcId]["spawns"])): objId = self.addSpawn(MobSpawns[npcId]["spawns"][i],XX1,YY1,ZZ1,0,False,0) for i in range(len(MobSpawns[npcId]["spawns"])): objId = self.addSpawn(MobSpawns[npcId]["spawns"][i],XX2,YY2,ZZ2,0,False,0) self.startQuestTimer("halisha_timer", 210000, npc, player) self.frintezza = self.addSpawn(Frintezza,FX,FY,FZ,0,False,0) GrandBossManager.getInstance().addBoss(self.frintezza) if npcId == Halisha1a : self.startQuestTimer("poly2", 7500, npc, player) npc.setRHandId(8204) self.isMorphed = False if npcId == Halisha3 : respawnTime = long(48 * 3600000) npc.broadcastPacket(PlaySound(1, "BS01_D", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())) self.startQuestTimer("FRINTEZZA_unlock", 432000000, None, None) self.startQuestTimer("spawn_cubes", 10000, npc, None) if self.frintezza: self.frintezza.onDecay() GrandBossManager.getInstance().setBossStatus(FRINTEZZA,DEAD) # also save the respawn time so that the info is maintained past reboots info = GrandBossManager.getInstance().getStatsSet(FRINTEZZA) info.set("respawn_time",(long(System.currentTimeMillis()) + respawnTime)) GrandBossManager.getInstance().setStatsSet(FRINTEZZA,info) #I set the unlock for 5 days but this value needs to be checked return def onAdvEvent (self,event,npc,player) : if event == "poly1" and npc and player: self.isMorphed = True heading = npc.getHeading() hp = npc.getCurrentHp() mp = npc.getCurrentMp() npc.deleteMe() self.halisha2 = self.addSpawn(Halisha1a, npc) self.halisha2.broadcastPacket(CreatureSay(self.halisha2.getObjectId(),0,"Scarlet Von Halisha","You will die!!!")) self.startQuestTimer("poly1a", 100, npc, player) self.halisha2.setHeading(heading) self.halisha2.setCurrentHpMp(hp,mp) self.cancelQuestTimer("poly1", npc, None) elif event == "poly1a" and npc and player: self.halisha2.broadcastPacket(SpecialCamera(self.halisha2.getObjectId(),800,0,150,0,7000)) self.halisha2.broadcastPacket(SocialAction(self.halisha2.getObjectId(),1)) self.startQuestTimer("attack", 7000, npc, player) elif event == "attack" and npc and player: self.halisha2.addDamageHate(player,0,500) self.halisha2.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player) elif event == "poly2" and npc and player: self.halisha3 = self.addSpawn(Halisha3, npc) self.halisha3.addDamageHate(player,0,500) self.halisha3.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player) self.cancelQuestTimer("poly2", npc, None) elif event == "halisha_timer": self.halisha1 = self.addSpawn(Halisha1,HX,HY,HZ,0,False,0) self.frintezza.broadcastPacket(CreatureSay(self.frintezza.getObjectId(),0,"Frintezza","Halisha!!! Get rid of these ones!")) self.frintezza.broadcastPacket(SpecialCamera(self.frintezza.getObjectId(),200,-50,150,0,6000)) self.frintezza.broadcastPacket(SocialAction(self.frintezza.getObjectId(),3)) self.SpawnGhost1 = self.addSpawn(Ghost1,175840,-87156,-5089,21221,False,0) self.SpawnGhost2 = self.addSpawn(Ghost2,175863,-88702,-5108,29413,False,0) self.SpawnGhost3 = self.addSpawn(Ghost3,172618,-88696,-5108,4962,False,0) self.SpawnGhost4 = self.addSpawn(Ghost4,172643,-87179,-5108,62044,False,0) self.cancelQuestTimer("halisha_timer", npc, None) elif event == "FRINTEZZA_unlock" : GrandBossManager.getInstance().addBoss(FRINTEZZA) GrandBossManager.getInstance().setBossStatus(FRINTEZZA,AWAKE) self.cancelQuestTimer("FRINTEZZA_unlock", npc, None) self.EntryLocked = False elif event == "spawn_cubes" : cube = self.addSpawn(31859,HX,HY,HZ,0,False,0) self.cancelQuestTimer("FRINTEZZA_despawn", npc, None) self.cancelQuestTimer("spawn_cubes", npc, None) self.startQuestTimer("remove_players",900000, None, None) elif event == "remove_players" : self.FrintezzaZone.oustAllPlayers() elif event == "teleport_out" : # Now we need to send back to town the players who did not make # it to Frintezza's chamber within 35minutes(like retail) for i in range(25150061,25150071): DoorTable.getInstance().getDoor(i).closeMe() DoorTable.getInstance().getDoor(25150045).closeMe() DoorTable.getInstance().getDoor(25150046).closeMe() self.cancelQuestTimer("teleport_out", npc, None) self.TombZone.oustAllPlayers() elif event == "FRINTEZZA_despawn" and npc: if (self.lastAttackVsHalisha + 1800000 < System.currentTimeMillis()) : if self.SpawnGhost1: self.SpawnGhost1.deleteMe() if self.SpawnGhost2: self.SpawnGhost2.deleteMe() if self.SpawnGhost3: self.SpawnGhost3.deleteMe() if self.SpawnGhost4: self.SpawnGhost4.deleteMe() if self.halisha1: self.halisha1.deleteMe() if self.halisha2: self.halisha2.deleteMe() if self.halisha3: self.halisha3.deleteMe() if self.frintezza: self.frintezza.deleteMe() self.EntryLocked = False self.TombZone.oustAllPlayers() self.FrintezzaZone.oustAllPlayers() self.cancelQuestTimer("FRINTEZZA_despawn", npc, None) return # now call the constructor (starts up the ai) QUEST = frintezza(-1,"frintezza","ai") CREATED = State('Start', QUEST) # Quest initialization QUEST.setInitialState(CREATED) for i in QUEST.MobSpawns.keys() : QUEST.addAttackId(i) QUEST.addKillId(i) QUEST.addTalkId(i) QUEST.addStartNpc(FRINTEZZA_TELE)"QUEST B"
#created by KKnD import sys from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest from net.sf.l2j.gameserver.instancemanager import FrintezzaManager from net.sf.l2j.gameserver.instancemanager import GrandBossManager from java.lang import System class Frintezza(JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.isMorphed = False self.FirstAttacked = False self.status = 0 def onAdvEvent(self,event,npc,player) : if event == "start" : FrintezzaManager.getInstance().startBattle() return def onTalk (self,npc,player): npcId = npc.getNpcId() htmltext = "1" if npcId == 31453 : if self.status == 0 : if FrintezzaManager.getInstance().telePlayers(player, npc) == True : self.startQuestTimer("start", 180000, npc, player) if self.status == 1 : htmltext = "<html><body>Some other group entered lair.</body></html>" if self.status == 2 : htmltext = "<html><body>Frintezza is now busy.</body></html>" return htmltext QUEST = Frintezza(-1,"Frintezza","ai") QUEST.addStartNpc(31453) QUEST.addTalkId(31453) print "AI: individuals: Frintezza...loaded!"Tx For Read. ;)
2 answers to this question
Recommended Posts