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!"
Hello. You may encounter the Push item fail error when trying to pick up an item dropped on the ground by a mob.
or
You can throw something out of your inventory and pick it up again, several times.
Probably this is a quantum dependency) I don't understand at what point this happens, sometimes two items one after another experience push item errors, and sometimes I don't have enough thousands of attempts to repeat this trick)
In any case, this is just a visual error and after the relog, the item appears in the inventory. I think first i need to disconnect the extender and check it on a bare server. I still need time to check this, maybe it's not even about the autoloot function.
https://youtu.be/6mcfmdImofE
-----------
In general, I would like to thank our wonderful Emca Eressea for her deep knowledge in programming and reverse engineering. And for the fact that her work is open to everyone, this is very amazing, and incredibly valuable.
ADENA
500 K = 40e
1kk = 70e
3kk = 190e
ITEMS
staff of life = 150e
karmian set = 90e
elven jewls top D = 30e
Orcish Poleaxe+1 best C pole = 680e
any D grade armor on demand
discord
wiz0642_81242
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"
"QUEST B"
Tx For Read. ;)
2 answers to this question
Recommended Posts