Jump to content

Question

Posted

Hi!

 

I hope somebody can help on my problem. (H5 with .py files)

 

I have a party instance (bloodshed). I want to put a boss to end of instance. Everything work fine. But the players not get reenter time to instance.

I have a solo instance and there work fine the reenter timer. I tried copy the code from that instance but i got many error. 

 

This is the code of party instance (without reenter timer):

#Instance Event by Bloodshed
from com.l2jserver.gameserver.instancemanager        import InstanceManager
from com.l2jserver.gameserver.model.items.instance   import L2ItemInstance
from com.l2jserver.gameserver.model.actor            import L2Summon
from com.l2jserver.gameserver.model.entity           import Instance
from com.l2jserver.gameserver.model.itemcontainer    import PcInventory
from com.l2jserver.gameserver.model.quest            import State
from com.l2jserver.gameserver.model.quest            import QuestState
from com.l2jserver.gameserver.model.quest.jython     import QuestJython as JQuest
from com.l2jserver.gameserver.network.serverpackets  import CreatureSay
from com.l2jserver.gameserver.network.serverpackets  import InventoryUpdate
from com.l2jserver.gameserver.network.serverpackets  import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets  import SystemMessage
from com.l2jserver.gameserver.network.serverpackets  import ExShowScreenMessage
from com.l2jserver.gameserver.network.serverpackets  import Earthquake
from com.l2jserver.gameserver.network                import SystemMessageId
from com.l2jserver.gameserver.util                   import Util
from com.l2jserver.util                              import Rnd

qn = "Bloodshed"

#Items
E_APIGA	= 14720
ADENA	= 57
STONE	= 9576
STONE82	= 10486
STONE84	= 14169
SCROLL	= 960
SCROLLB	= 6577

#NPCs
ROSE	= 40000
CHEST	= 40001

#Monsters
NAGLFAR	= 40002
SENTRY1	= 40003
SENTRY2	= 40004
HOUND	= 40005

#Timelimit
TIMELIMIT = 86400000

#Instance Id
INSTANCEID = 161

#Doors
DOOR1	= 12240001
DOOR2	= 12240002

class PyObject:
	pass

def openDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.openMe()
			
def closeDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.closeMe()
			
def checkConditions(player, new):
	party = player.getParty()
	if not party:
		player.sendPacket(SystemMessage.sendString("You are not currently in a party, so you cannot enter."))
		return False
	if party and party.getMemberCount() < 2:
		player.sendPacket(SystemMessage.sendString("You cannot enter because there is too less people in your party. Minimum is 4 people."))
		return False
	for partyMember in party.getMembers().toArray():
		if partyMember.getLevel() < 78:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered."))
			return False  
		if not Util.checkIfInRange(1000, player, partyMember, True) and new:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here."))
			return False
	return True

def teleportplayer(self,player,teleto):
	player.setInstanceId(teleto.instanceId)
	player.teleToLocation(teleto.x, teleto.y, teleto.z)
	pet = player.getSummon()
	if pet != None :
		pet.setInstanceId(teleto.instanceId)
		pet.teleToLocation(teleto.x, teleto.y, teleto.z)
	return

def enterInstance(self,player,template,teleto):
	instanceId = 0
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			st = partyMember.getQuestState(qn)
			if not st : st = self.newQuestState(partyMember)
			if partyMember.getInstanceId()!=0:
				instanceId = partyMember.getInstanceId()
	else :
		if player.getInstanceId()!=0:
			instanceId = player.getInstanceId()
	if instanceId != 0:
		if not checkConditions(player,False):
			return 0
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	else:
		if not checkConditions(player,True):
			return 0
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not instanceId in self.world_ids:
			world = PyObject()
			world.rewarded=[]
			world.instanceId = instanceId
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "Instance: Started " + template + " Instance: " +str(instanceId) + " created by " + str(player.getName())
		teleto.instanceId = instanceId
		for partyMember in party.getMembers().toArray():
			teleportplayer(self,partyMember,teleto)
		return instanceId
	return instanceId

def exitInstance(player,tele):
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			partyMember.setInstanceId(0)
			partyMember.teleToLocation(tele.x, tele.y, tele.z)
			pet = partyMember.getSummon()
			if pet != None :
				pet.setInstanceId(0)
				pet.teleToLocation(tele.x, tele.y, tele.z)
	else :
		player.setInstanceId(0)
		player.teleToLocation(tele.x, tele.y, tele.z)
		pet = player.getSummon()
		if pet != None :
			pet.setInstanceId(0)
			pet.teleToLocation(tele.x, tele.y, tele.z)
	InstanceManager.getInstance().destroyInstance(player.getInstanceId())

class Bloodshed(JQuest):
	def __init__(self,id,name,descr):
		JQuest.__init__(self,id,name,descr)
		self.worlds = {}
		self.world_ids = []
		
	def onTalk (self,npc,player):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == ROSE :
			tele = PyObject()
			tele.x = -238599
			tele.y = 219983
			tele.z = -10144
			enterInstance(self, player, "Bloodshed.xml", tele)
#			st.playSound("ItemSound.quest_middle")
		elif npcId == CHEST :
			npc.decayMe()
			tele = PyObject()
			tele.x = 82200
			tele.y = 148347
			tele.z = -3467
			party = player.getParty()
			if party :
				for partyMember in party.getMembers().toArray():
					exitInstance(partyMember,tele)

			else:
				exitInstance(player,tele)
			st.giveItems(ADENA,10000)
			if Rnd.get(100) < 10 :
				st.giveItems(STONE84,1)
			if Rnd.get(100) < 15 :
				st.giveItems(STONE82,1)
			if Rnd.get(100) < 25 :
				st.giveItems(STONE,1)
			if Rnd.get(100) < 25 :
				st.giveItems(SCROLLB,1)
			if Rnd.get(100) < 50 :
				st.giveItems(SCROLL,1)
			st.playSound("ItemSound.quest_finish")
			player.sendPacket(ExShowScreenMessage("Solo Instance Event (78+): Completed", 8000))
		return
		
	def onKill(self,npc,player,isPet):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == SENTRY1 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR1,npc.instanceId)
		elif npcId == SENTRY2 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR2,npc.instanceId)
		elif npcId == HOUND :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				st.giveItems(E_APIGA,2)
				player.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000))
				newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId)
				player.sendPacket(Earthquake(240826,219982,-9985,20,10))
		elif npcId == NAGLFAR :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
				player.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord Naglfar.", 12000))
				st.playSound("ItemSound.quest_finish")
				st.giveItems(E_APIGA,4)
				newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId)
		return

QUEST = Bloodshed(-1, qn, "Bloodshed")
QUEST.addStartNpc(ROSE)
QUEST.addTalkId(ROSE)
QUEST.addTalkId(CHEST)

QUEST.addKillId(NAGLFAR)
QUEST.addKillId(HOUND)
QUEST.addKillId(SENTRY1)
QUEST.addKillId(SENTRY2)

This is the solo instance with working timer:

#Instance Engine by Bloodshed, Fixed by Sakretsu

from java.lang                                                 import System
from java.sql                                                  import Connection
from java.sql                                                  import PreparedStatement
from java.sql                                                  import ResultSet
from java.util.logging                                         import Level
from java.util.logging                                         import Logger

from com.l2jserver                                             import L2DatabaseFactory
from com.l2jserver.gameserver.instancemanager                  import InstanceManager
from com.l2jserver.gameserver.model.instancezone               import InstanceWorld
from com.l2jserver.gameserver.model.items.instance             import L2ItemInstance
from com.l2jserver.gameserver.model                            import L2Object
from com.l2jserver.gameserver.model                            import L2World
from com.l2jserver.gameserver.model.actor                      import L2Character
from com.l2jserver.gameserver.model.actor                      import L2Summon
from com.l2jserver.gameserver.model.entity                     import Instance
from com.l2jserver.gameserver.model.itemcontainer              import PcInventory
from com.l2jserver.gameserver.model.quest                      import State
from com.l2jserver.gameserver.model.quest                      import QuestState
from com.l2jserver.gameserver.model.quest.jython               import QuestJython as JQuest
from com.l2jserver.gameserver.network.serverpackets            import CreatureSay
from com.l2jserver.gameserver.network.serverpackets            import InventoryUpdate
from com.l2jserver.gameserver.network.serverpackets            import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets            import SystemMessage
from com.l2jserver.gameserver.network.serverpackets            import ExShowScreenMessage
from com.l2jserver.gameserver.network.serverpackets            import Earthquake
from com.l2jserver.gameserver.network                          import SystemMessageId
from com.l2jserver.gameserver.util                             import Util
from com.l2jserver.util                                        import Rnd

qn = "Bloodshed"

#Items
E_APIGA	= 14721
ADENA	= 57
STONE	= 16167
SCROLL	= 960

#NPCs
ROSE	= 40000
CHEST	= 40001

#Monsters
NAGLFAR	= 40002
SENTRY1	= 40003
SENTRY2	= 40004
HOUND	= 40005

#Timelimit
TIMELIMIT = 86400000

#Instance Id
INSTANCEID = 500000

#Doors
DOOR1	= 12240001
DOOR2	= 12240002

class PyObject:
	pass

def openDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.openMe()
			
def closeDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.closeMe()
			
def checkConditions(player, new):
	st = player.getQuestState(qn)
	reentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);
	party = player.getParty()
	if party:
		player.sendPacket(SystemMessage.sendString("You may not enter with a party."))
		return False
	if not player.getLevel() >= 83:
		player.sendPacket(SystemMessage.sendString("You must be level 83 or higher to enter."))
		return False
	if System.currentTimeMillis() < reentertime :
		InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
		player.sendPacket(SystemMessage.sendString("Solo Instance: You may not re-enter yet."))
		return False
	if not party:
		return True
	return False

def teleportplayer(self,player,teleto):
	player.setInstanceId(teleto.instanceId)
	player.teleToLocation(teleto.x, teleto.y, teleto.z)
	pet = player.getSummon()
	if pet != None :
		pet.setInstanceId(teleto.instanceId)
		pet.teleToLocation(teleto.x, teleto.y, teleto.z)
	return

def enterInstance(self,player,template,teleto):
	instanceId = 0
	party = player.getParty()
	if party :
		for partyMember in party.getPartyMembers().toArray():
			st = partyMember.getQuestState(qn)
			if not st : st = self.newQuestState(partyMember)
			if partyMember.getInstanceId()!=0:
				instanceId = partyMember.getInstanceId()
	else :
		if player.getInstanceId()!=0:
			instanceId = player.getInstanceId()
	if instanceId != 0:
		if not checkConditions(player,False):
			return 0
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	else:
		if not checkConditions(player,True):
			return 0
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not instanceId in self.world_ids:
			world = PyObject()
			world.rewarded=[]
			world.instanceId = instanceId
			world.templateId = INSTANCEID
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "Instance Bloodshed.xml Started: " +str(instanceId) + " created by " + str(player.getName())
		st = player.getQuestState(qn)
		InstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, ((System.currentTimeMillis() + TIMELIMIT)))
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	return instanceId

def exitInstance(player,tele):
	player.setInstanceId(0)
	player.teleToLocation(tele.x, tele.y, tele.z)
	pet = player.getSummon()
	if pet != None :
		pet.setInstanceId(0)
		pet.teleToLocation(tele.x, tele.y, tele.z)

class Bloodshed(JQuest):
	def __init__(self,id,name,descr):
		JQuest.__init__(self,id,name,descr)
		self.worlds = {}
		self.world_ids = []
		
	def onTalk (self,npc,player):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == ROSE :
			tele = PyObject()
			tele.x = -238599
			tele.y = 219983
			tele.z = -10144
			enterInstance(self, player, "Bloodshed.xml", tele)
			st.playSound("ItemSound.quest_middle")
		elif npcId == CHEST :
			npc.decayMe()
			tele = PyObject()
			tele.x = 83279
			tele.y = 148011
			tele.z = -3404
			exitInstance(player,tele)
			st.giveItems(ADENA,5000000)
			st.giveItems(STONE,1)
			st.giveItems(SCROLL,2)
			st.playSound("ItemSound.quest_finish")
			player.sendPacket(ExShowScreenMessage("Solo Instance Event (83+): Completed", 8000))
		return
		
	def onKill(self,npc,player,isPet):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == SENTRY1 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,2)
				openDoor(DOOR1,npc.instanceId)
		elif npcId == SENTRY2 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,2)
				openDoor(DOOR2,npc.instanceId)
		elif npcId == HOUND :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				st.giveItems(E_APIGA,3)
				player.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000))
				newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId)
				player.sendPacket(Earthquake(240826,219982,-9985,20,10))
		elif npcId == NAGLFAR :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
				player.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord Naglfar.", 12000))
				st.playSound("ItemSound.quest_fanfare_2")
				st.giveItems(E_APIGA,4)
				newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId)
		return

QUEST = Bloodshed(-1, qn, "Bloodshed")
QUEST.addStartNpc(ROSE)
QUEST.addTalkId(ROSE)
QUEST.addTalkId(CHEST)

QUEST.addKillId(NAGLFAR)
QUEST.addKillId(HOUND)
QUEST.addKillId(SENTRY1)
QUEST.addKillId(SENTRY2)

Please somebody help on me. 

 

Recommended Posts

  • 0
Posted

no, because if I help you the credits goes to this shitty forum

Or you can write me some information how can i make it via eclipse? I use eclpise but i not professional... :)

  • 0
Posted
I tried copy the code from that instance but i got many error. 

 

What exactly did you try to copy ? On enterInstance, in the second script, you InstanceManager.getInstance().setInstanceTime(. Then on checkConditions you retrieve the timer via InstanceManager.getInstance().getInstanceTime(, put it in a reentertime variable and checks if it's valid (btw you made it wrong on the check, second line got no use)

if System.currentTimeMillis() < reentertime :
	InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
	player.sendPacket(SystemMessage.sendString("Solo Instance: You may not re-enter yet."))
	return False

On that check, the following line is useless. Until I missed a use with that method.

InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)

So basically, copy setInstanceTime( and getInstanceTime( uses, and fixes the line I said in the second script. If the second script is broken dropping the line, re-add it.

  • 0
Posted

What exactly did you try to copy ? On enterInstance, in the second script, you InstanceManager.getInstance().setInstanceTime(. Then on checkConditions you retrieve the timer via InstanceManager.getInstance().getInstanceTime(, put it in a reentertime variable and checks if it's valid (btw you made it wrong on the check, second line got no use)

if System.currentTimeMillis() < reentertime :
	InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
	player.sendPacket(SystemMessage.sendString("Solo Instance: You may not re-enter yet."))
	return False

On that check, the following line is useless. Until I missed a use with that method.

InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)

So basically, copy setInstanceTime( and getInstanceTime( uses, and fixes the line I said in the second script. If the second script is broken dropping the line, re-add it.

Thank you for your reply.

 

I tried this:

from com.l2jserver.gameserver.instancemanager        import InstanceManager
from com.l2jserver.gameserver.model.items.instance   import L2ItemInstance
from com.l2jserver.gameserver.model.actor            import L2Summon
from com.l2jserver.gameserver.model.entity           import Instance
from com.l2jserver.gameserver.model.itemcontainer    import PcInventory
from com.l2jserver.gameserver.model.quest            import State
from com.l2jserver.gameserver.model.quest            import QuestState
from com.l2jserver.gameserver.model.quest.jython     import QuestJython as JQuest
from com.l2jserver.gameserver.network.serverpackets  import CreatureSay
from com.l2jserver.gameserver.network.serverpackets  import InventoryUpdate
from com.l2jserver.gameserver.network.serverpackets  import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets  import SystemMessage
from com.l2jserver.gameserver.network.serverpackets  import ExShowScreenMessage
from com.l2jserver.gameserver.network.serverpackets  import Earthquake
from com.l2jserver.gameserver.network                import SystemMessageId
from com.l2jserver.gameserver.util                   import Util
from com.l2jserver.util                              import Rnd

qn = "Bloodshed"

#Items
E_APIGA	= 14720
ADENA	= 57
STONE	= 9576
STONE82	= 10486
STONE84	= 14169
SCROLL	= 960
SCROLLB	= 6577

#NPCs
ROSE	= 40000
CHEST	= 40001

#Monsters
NAGLFAR	= 40002
SENTRY1	= 40003
SENTRY2	= 40004
HOUND	= 40005

#Timelimit
TIMELIMIT = 86400000

#Instance Id
INSTANCEID = 161

#Doors
DOOR1	= 12240001
DOOR2	= 12240002

class PyObject:
	pass

def openDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.openMe()
			
def closeDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.closeMe()
			
def checkConditions(player, new):
	party = player.getParty()
	if not party:
		player.sendPacket(SystemMessage.sendString("You are not currently in a party, so you cannot enter."))
		return False
	if party and party.getMemberCount() < 2:
		player.sendPacket(SystemMessage.sendString("You cannot enter because there is too less people in your party. Minimum is 4 people."))
		return False
	for partyMember in party.getMembers().toArray():
		if partyMember.getLevel() < 78:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered."))
			return False
		if not Util.checkIfInRange(1000, player, partyMember, True) and new:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here."))
			return False
	if System.currentTimeMillis() < reentertime :
		InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
        	player.sendPacket(SystemMessage.sendString("Solo Instance will be available to re-use in " + str(hours) + " hours " + str(minutes) + " minutes and " + str(seconds) + " seconds."))
	return False         
	return True

def teleportplayer(self,player,teleto):
	player.setInstanceId(teleto.instanceId)
	player.teleToLocation(teleto.x, teleto.y, teleto.z)
	pet = player.getSummon()
	if pet != None :
		pet.setInstanceId(teleto.instanceId)
		pet.teleToLocation(teleto.x, teleto.y, teleto.z)
	return

def enterInstance(self,player,template,teleto):
	instanceId = 0
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			st = partyMember.getQuestState(qn)
			if not st : st = self.newQuestState(partyMember)
			if partyMember.getInstanceId()!=0:
				instanceId = partyMember.getInstanceId()
	else :
		if player.getInstanceId()!=0:
			instanceId = player.getInstanceId()
	if instanceId != 0:
		if not checkConditions(player,False):
			return 0
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	else:
		if not checkConditions(player,True):
			return 0
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not instanceId in self.world_ids:
			world = PyObject()
			world.rewarded=[]
			world.instanceId = instanceId
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "Instance: Started " + template + " Instance: " +str(instanceId) + " created by " + str(player.getName())
			st = player.getQuestState(qn)
		InstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, ((System.currentTimeMillis() + TIMELIMIT)))
		teleto.instanceId = instanceId
		for partyMember in party.getMembers().toArray():
			teleportplayer(self,partyMember,teleto)
		return instanceId
	return instanceId

def exitInstance(player,tele):
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			partyMember.setInstanceId(0)
			partyMember.teleToLocation(tele.x, tele.y, tele.z)
			pet = partyMember.getSummon()
			if pet != None :
				pet.setInstanceId(0)
				pet.teleToLocation(tele.x, tele.y, tele.z)
	else :
		player.setInstanceId(0)
		player.teleToLocation(tele.x, tele.y, tele.z)
		pet = player.getSummon()
		if pet != None :
			pet.setInstanceId(0)
			pet.teleToLocation(tele.x, tele.y, tele.z)
	InstanceManager.getInstance().destroyInstance(player.getInstanceId())

class Bloodshed(JQuest):
	def __init__(self,id,name,descr):
		JQuest.__init__(self,id,name,descr)
		self.worlds = {}
		self.world_ids = []
		
	def onTalk (self,npc,player):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == ROSE :
			tele = PyObject()
			tele.x = -238599
			tele.y = 219983
			tele.z = -10144
			enterInstance(self, player, "Bloodshed.xml", tele)
#			st.playSound("ItemSound.quest_middle")
		elif npcId == CHEST :
			npc.decayMe()
			tele = PyObject()
			tele.x = 82200
			tele.y = 148347
			tele.z = -3467
			party = player.getParty()
			if party :
				for partyMember in party.getMembers().toArray():
					exitInstance(partyMember,tele)

			else:
				exitInstance(player,tele)
			st.giveItems(ADENA,10000)
			if Rnd.get(100) < 10 :
				st.giveItems(STONE84,1)
			if Rnd.get(100) < 15 :
				st.giveItems(STONE82,1)
			if Rnd.get(100) < 25 :
				st.giveItems(STONE,1)
			if Rnd.get(100) < 25 :
				st.giveItems(SCROLLB,1)
			if Rnd.get(100) < 50 :
				st.giveItems(SCROLL,1)
			st.playSound("ItemSound.quest_finish")
			player.sendPacket(ExShowScreenMessage("Solo Instance Event (78+): Completed", 8000))
		return
		
	def onKill(self,npc,player,isPet):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == SENTRY1 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR1,npc.instanceId)
		elif npcId == SENTRY2 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR2,npc.instanceId)
		elif npcId == HOUND :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				st.giveItems(E_APIGA,2)
				player.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000))
				newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId)
				player.sendPacket(Earthquake(240826,219982,-9985,20,10))
		elif npcId == NAGLFAR :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
				player.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord Naglfar.", 12000))
				st.playSound("ItemSound.quest_finish")
				st.giveItems(E_APIGA,4)
				newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId)
		return

QUEST = Bloodshed(-1, qn, "Bloodshed")
QUEST.addStartNpc(ROSE)
QUEST.addTalkId(ROSE)
QUEST.addTalkId(CHEST)

QUEST.addKillId(NAGLFAR)
QUEST.addKillId(HOUND)
QUEST.addKillId(SENTRY1)
QUEST.addKillId(SENTRY2)
  • 0
Posted (edited)

Tryskell,

 

With this code:

#Instance Event by Bloodshed
from com.l2jserver.gameserver.instancemanager        import InstanceManager
from com.l2jserver.gameserver.model.items.instance   import L2ItemInstance
from com.l2jserver.gameserver.model.actor            import L2Summon
from com.l2jserver.gameserver.model.entity           import Instance
from com.l2jserver.gameserver.model.itemcontainer    import PcInventory
from com.l2jserver.gameserver.model.quest            import State
from com.l2jserver.gameserver.model.quest            import QuestState
from com.l2jserver.gameserver.model.quest.jython     import QuestJython as JQuest
from com.l2jserver.gameserver.network.serverpackets  import CreatureSay
from com.l2jserver.gameserver.network.serverpackets  import InventoryUpdate
from com.l2jserver.gameserver.network.serverpackets  import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets  import SystemMessage
from com.l2jserver.gameserver.network.serverpackets  import ExShowScreenMessage
from com.l2jserver.gameserver.network.serverpackets  import Earthquake
from com.l2jserver.gameserver.network                import SystemMessageId
from com.l2jserver.gameserver.util                   import Util
from com.l2jserver.util                              import Rnd

qn = "Bloodshed"

#Items
E_APIGA	= 14720
ADENA	= 57
STONE	= 9576
STONE82	= 10486
STONE84	= 14169
SCROLL	= 960
SCROLLB	= 6577

#NPCs
ROSE	= 40000
CHEST	= 40001

#Monsters
NAGLFAR	= 40002
SENTRY1	= 40003
SENTRY2	= 40004
HOUND	= 40005

#Timelimit
TIMELIMIT = 86400000

#Instance Id
INSTANCEID = 555555

#Doors
DOOR1	= 12240001
DOOR2	= 12240002

class PyObject:
	pass

def openDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.openMe()
			
def closeDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.closeMe()
			
def checkConditions(player, new):
	party = player.getParty()
	if not party:
		player.sendPacket(SystemMessage.sendString("You are not currently in a party, so you cannot enter."))
		return False
	if party and party.getMemberCount() < 2:
		player.sendPacket(SystemMessage.sendString("You cannot enter because there is too less people in your party. Minimum is 4 people."))
		return False
	for partyMember in party.getMembers().toArray():
		if partyMember.getLevel() < 78:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered."))
			return False
		if not Util.checkIfInRange(1000, player, partyMember, True) and new:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here."))
			return False
	if System.currentTimeMillis() < reentertime :
		InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
		player.sendPacket(SystemMessage.sendString("Party Instance: You may not re-enter yet."))
		return False      
	return True

def teleportplayer(self,player,teleto):
	player.setInstanceId(teleto.instanceId)
	player.teleToLocation(teleto.x, teleto.y, teleto.z)
	pet = player.getSummon()
	if pet != None :
		pet.setInstanceId(teleto.instanceId)
		pet.teleToLocation(teleto.x, teleto.y, teleto.z)
	return

def enterInstance(self,player,template,teleto):
	instanceId = 0
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			st = partyMember.getQuestState(qn)
			if not st : st = self.newQuestState(partyMember)
			if partyMember.getInstanceId()!=0:
				instanceId = partyMember.getInstanceId()
	else :
		if player.getInstanceId()!=0:
			instanceId = player.getInstanceId()
	if instanceId != 0:
		if not checkConditions(player,False):
			return 0
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	else:
		if not checkConditions(player,True):
			return 0
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not instanceId in self.world_ids:
			world = PyObject()
			world.rewarded=[]
			world.instanceId = instanceId
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "Instance: Started " + template + " Instance: " +str(instanceId) + " created by " + str(player.getName())
		st = player.getQuestState(qn)
		InstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, ((System.currentTimeMillis() + TIMELIMIT)))      
		teleto.instanceId = instanceId
		for partyMember in party.getMembers().toArray():
			teleportplayer(self,partyMember,teleto)
		return instanceId
	return instanceId

def exitInstance(player,tele):
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			partyMember.setInstanceId(0)
			partyMember.teleToLocation(tele.x, tele.y, tele.z)
			pet = partyMember.getSummon()
			if pet != None :
				pet.setInstanceId(0)
				pet.teleToLocation(tele.x, tele.y, tele.z)
	else :
		player.setInstanceId(0)
		player.teleToLocation(tele.x, tele.y, tele.z)
		pet = player.getSummon()
		if pet != None :
			pet.setInstanceId(0)
			pet.teleToLocation(tele.x, tele.y, tele.z)
	InstanceManager.getInstance().destroyInstance(player.getInstanceId())

class Bloodshed(JQuest):
	def __init__(self,id,name,descr):
		JQuest.__init__(self,id,name,descr)
		self.worlds = {}
		self.world_ids = []
		
	def onTalk (self,npc,player):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == ROSE :
			tele = PyObject()
			tele.x = -238599
			tele.y = 219983
			tele.z = -10144
			enterInstance(self, player, "Bloodshed.xml", tele)
#			st.playSound("ItemSound.quest_middle")
		elif npcId == CHEST :
			npc.decayMe()
			tele = PyObject()
			tele.x = 82200
			tele.y = 148347
			tele.z = -3467
			party = player.getParty()
			if party :
				for partyMember in party.getMembers().toArray():
					exitInstance(partyMember,tele)

			else:
				exitInstance(player,tele)
			st.giveItems(ADENA,10000)
			if Rnd.get(100) < 10 :
				st.giveItems(STONE84,1)
			if Rnd.get(100) < 15 :
				st.giveItems(STONE82,1)
			if Rnd.get(100) < 25 :
				st.giveItems(STONE,1)
			if Rnd.get(100) < 25 :
				st.giveItems(SCROLLB,1)
			if Rnd.get(100) < 50 :
				st.giveItems(SCROLL,1)
			st.playSound("ItemSound.quest_finish")
			player.sendPacket(ExShowScreenMessage("Solo Instance Event (78+): Completed", 8000))
		return
		
	def onKill(self,npc,player,isPet):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == SENTRY1 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR1,npc.instanceId)
		elif npcId == SENTRY2 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR2,npc.instanceId)
		elif npcId == HOUND :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				st.giveItems(E_APIGA,2)
				player.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000))
				newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId)
				player.sendPacket(Earthquake(240826,219982,-9985,20,10))
		elif npcId == NAGLFAR :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
				player.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord Naglfar.", 12000))
				st.playSound("ItemSound.quest_finish")
				st.giveItems(E_APIGA,4)
				newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId)
		return

QUEST = Bloodshed(-1, qn, "Bloodshed")
QUEST.addStartNpc(ROSE)
QUEST.addTalkId(ROSE)
QUEST.addTalkId(CHEST)

QUEST.addKillId(NAGLFAR)
QUEST.addKillId(HOUND)
QUEST.addKillId(SENTRY1)
QUEST.addKillId(SENTRY2)

I get this error:

 error.jpg

Edited by Chemotox
  • 0
Posted (edited)

reentertime doesn't exist. It is used here

if System.currentTimeMillis() < reentertime

On your second script, you can clearly see

def checkConditions(player, new):
	st = player.getQuestState(qn)
	reentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);

reentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);

 

Dunno who coded that script at first, but there are optimizations to do...

Edited by Tryskell
  • 0
Posted

reentertime doesn't exist. It is used here

if System.currentTimeMillis() < reentertime

On your second script, you can clearly see

def checkConditions(player, new):
	st = player.getQuestState(qn)
	reentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);

reentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);

 

Dunno who coded that script at first, but there are optimizations to do...

I trry it now.

  • 0
Posted

I get this error now when start the server:

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('custom/Boss/__init__.py', 66, 9, '\treentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);'))
  • 0
Posted (edited)

 

I get this error now when start the server:

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('custom/Boss/__init__.py', 66, 9, '\treentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);'))

 

Check this with red , you right "treentertime" and if understand good is "reentertime" ... and post you finaly code maybe is better we see the problem...

 

(Sorry for my english )

Edited by BlackDevilDev
  • 0
Posted

Now with this code:

#Instance Event by Bloodshed
from com.l2jserver.gameserver.instancemanager        import InstanceManager
from com.l2jserver.gameserver.model.items.instance   import L2ItemInstance
from com.l2jserver.gameserver.model.actor            import L2Summon
from com.l2jserver.gameserver.model.entity           import Instance
from com.l2jserver.gameserver.model.itemcontainer    import PcInventory
from com.l2jserver.gameserver.model.quest            import State
from com.l2jserver.gameserver.model.quest            import QuestState
from com.l2jserver.gameserver.model.quest.jython     import QuestJython as JQuest
from com.l2jserver.gameserver.network.serverpackets  import CreatureSay
from com.l2jserver.gameserver.network.serverpackets  import InventoryUpdate
from com.l2jserver.gameserver.network.serverpackets  import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets  import SystemMessage
from com.l2jserver.gameserver.network.serverpackets  import ExShowScreenMessage
from com.l2jserver.gameserver.network.serverpackets  import Earthquake
from com.l2jserver.gameserver.network                import SystemMessageId
from com.l2jserver.gameserver.util                   import Util
from com.l2jserver.util                              import Rnd

qn = "Bloodshed"

#Items
E_APIGA	= 14720
ADENA	= 57
STONE	= 9576
STONE82	= 10486
STONE84	= 14169
SCROLL	= 960
SCROLLB	= 6577

#NPCs
ROSE	= 40000
CHEST	= 40001

#Monsters
NAGLFAR	= 40002
SENTRY1	= 40003
SENTRY2	= 40004
HOUND	= 40005

#Timelimit
TIMELIMIT = 86400000

#Instance Id
INSTANCEID = 555555

#Doors
DOOR1	= 12240001
DOOR2	= 12240002

class PyObject:
	pass

def openDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.openMe()
			
def closeDoor(doorId,instanceId):
	for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
		if door.getDoorId() == doorId:
			door.closeMe()
			
def checkConditions(player, new):
	reentertime = InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID);
	party = player.getParty()
	if not party:
		player.sendPacket(SystemMessage.sendString("You are not currently in a party, so you cannot enter."))
		return False
	if party and party.getMemberCount() < 2:
		player.sendPacket(SystemMessage.sendString("You cannot enter because there is too less people in your party. Minimum is 4 people."))
		return False
	for partyMember in party.getMembers().toArray():
		if partyMember.getLevel() < 78:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is too low and cannot be entered."))
			return False
		if not Util.checkIfInRange(1000, player, partyMember, True) and new:
			player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away ask him to come here."))
			return False
	if System.currentTimeMillis() < reentertime :
		InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
		player.sendPacket(SystemMessage.sendString("Party Instance: You may not re-enter yet."))
		return False      
	return True

def teleportplayer(self,player,teleto):
	player.setInstanceId(teleto.instanceId)
	player.teleToLocation(teleto.x, teleto.y, teleto.z)
	pet = player.getSummon()
	if pet != None :
		pet.setInstanceId(teleto.instanceId)
		pet.teleToLocation(teleto.x, teleto.y, teleto.z)
	return

def enterInstance(self,player,template,teleto):
	instanceId = 0
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			st = partyMember.getQuestState(qn)
			if not st : st = self.newQuestState(partyMember)
			if partyMember.getInstanceId()!=0:
				instanceId = partyMember.getInstanceId()
	else :
		if player.getInstanceId()!=0:
			instanceId = player.getInstanceId()
	if instanceId != 0:
		if not checkConditions(player,False):
			return 0
		foundworld = False
		for worldid in self.world_ids:
			if worldid == instanceId:
				foundworld = True
		if not foundworld:
			player.sendPacket(SystemMessage.sendString("You have entered another zone, therefore you cannot enter this one."))
			return 0
		teleto.instanceId = instanceId
		teleportplayer(self,player,teleto)
		return instanceId
	else:
		if not checkConditions(player,True):
			return 0
		instanceId = InstanceManager.getInstance().createDynamicInstance(template)
		if not instanceId in self.world_ids:
			world = PyObject()
			world.rewarded=[]
			world.instanceId = instanceId
			self.worlds[instanceId]=world
			self.world_ids.append(instanceId)
			print "Instance: Started " + template + " Instance: " +str(instanceId) + " created by " + str(player.getName())
		st = player.getQuestState(qn)
		InstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, ((System.currentTimeMillis() + TIMELIMIT)))      
		teleto.instanceId = instanceId
		for partyMember in party.getMembers().toArray():
			teleportplayer(self,partyMember,teleto)
		return instanceId
	return instanceId

def exitInstance(player,tele):
	party = player.getParty()
	if party :
		for partyMember in party.getMembers().toArray():
			partyMember.setInstanceId(0)
			partyMember.teleToLocation(tele.x, tele.y, tele.z)
			pet = partyMember.getSummon()
			if pet != None :
				pet.setInstanceId(0)
				pet.teleToLocation(tele.x, tele.y, tele.z)
	else :
		player.setInstanceId(0)
		player.teleToLocation(tele.x, tele.y, tele.z)
		pet = player.getSummon()
		if pet != None :
			pet.setInstanceId(0)
			pet.teleToLocation(tele.x, tele.y, tele.z)
	InstanceManager.getInstance().destroyInstance(player.getInstanceId())

class Bloodshed(JQuest):
	def __init__(self,id,name,descr):
		JQuest.__init__(self,id,name,descr)
		self.worlds = {}
		self.world_ids = []
		
	def onTalk (self,npc,player):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == ROSE :
			tele = PyObject()
			tele.x = -238599
			tele.y = 219983
			tele.z = -10144
			enterInstance(self, player, "Bloodshed.xml", tele)
#			st.playSound("ItemSound.quest_middle")
		elif npcId == CHEST :
			npc.decayMe()
			tele = PyObject()
			tele.x = 82200
			tele.y = 148347
			tele.z = -3467
			party = player.getParty()
			if party :
				for partyMember in party.getMembers().toArray():
					exitInstance(partyMember,tele)

			else:
				exitInstance(player,tele)
			st.giveItems(ADENA,10000)
			if Rnd.get(100) < 10 :
				st.giveItems(STONE84,1)
			if Rnd.get(100) < 15 :
				st.giveItems(STONE82,1)
			if Rnd.get(100) < 25 :
				st.giveItems(STONE,1)
			if Rnd.get(100) < 25 :
				st.giveItems(SCROLLB,1)
			if Rnd.get(100) < 50 :
				st.giveItems(SCROLL,1)
			st.playSound("ItemSound.quest_finish")
			player.sendPacket(ExShowScreenMessage("Solo Instance Event (78+): Completed", 8000))
		return
		
	def onKill(self,npc,player,isPet):
		st = player.getQuestState(qn)
		npcId = npc.getNpcId()
		if npcId == SENTRY1 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR1,npc.instanceId)
		elif npcId == SENTRY2 :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Master, Forgive Me!"))
				st.giveItems(E_APIGA,1)
				openDoor(DOOR2,npc.instanceId)
		elif npcId == HOUND :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				st.playSound("ItemSound.quest_middle")
				st.giveItems(E_APIGA,2)
				player.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000))
				newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId)
				player.sendPacket(Earthquake(240826,219982,-9985,20,10))
		elif npcId == NAGLFAR :
			if npc.getInstanceId() in self.worlds:
				world = self.worlds[npc.getInstanceId()]
				player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Ugh.... Defeated.. How!?"))
				player.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord Naglfar.", 12000))
				st.playSound("ItemSound.quest_finish")
				st.giveItems(E_APIGA,4)
				newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId)
		return

QUEST = Bloodshed(-1, qn, "Bloodshed")
QUEST.addStartNpc(ROSE)
QUEST.addTalkId(ROSE)
QUEST.addTalkId(CHEST)

QUEST.addKillId(NAGLFAR)
QUEST.addKillId(HOUND)
QUEST.addKillId(SENTRY1)
QUEST.addKillId(SENTRY2)

This error:

error2.jpg

  • 0
Posted

Check this with red , you right "treentertime" and if understand good is "reentertime" ... and post you finaly code maybe is better we see the problem...

 

(Sorry for my english )

That "t" letter only in the error file. Not in code.

Guest
This topic is now closed to further replies.


  • Posts

    • mporeis na valeis l2jaCis i kapoio etimo project  free sources gia aCis edw https://acis.i-live.eu/index.php?topic=1974.0 server install ktl edw https://acis.i-live.eu/index.php?topic=10190.0 an dn vgaleis akrh steile mou discord margazeas2
    • Hello! I am new to l2 server creation and i need your help please!!! I want to make my own l2 interlude c6 server with custom thing in it.  I need help with where to start. What source pack to pick to start and what to do. Please if you can help me i would appreciate it very much !!!
    • Need Discord with rare badge? VISIT US AND SHOP WITH US! NEW STOCK   Aged, Early Supporter Discord Accounts I sell HQ Aged and Early, Discord Accounts that are inactive and not flagged by discord at cheap prices   If you want to contact me, you can add me on discord: worldcoldwar Features: Format - age : email : pass : token Not flagged and undetected by discord HQ % With OGE Emails, password etc can be changed Unverified Early Supporter 24M Boost Badge HypeSquad Events Early Verified Bot Developer Early Supporters SHOP LINK: disvault1.mypaylix.gg/ For PayPal payments, please open a ticket. If you experience any problems with cryptocurrency payments, please open a ticket as well.
    • Tired of frantically switching between windows trying to find that specific Warlock who should be casting saves? Forgot which server you left your Warsmith on? This mod solves these problems! What it does: Turns the boring window title into an information panel: Server Name - Character Name [Class] Real-life examples: - ServerName - HardcoreFarm [Spoilerr] (who's been spoiling for 3 months already) - ServerName - ClericHelper [Buffer] (eternal buffer on standby) - ServerName - MainChar [Gladiator] (main character who's always AFK) Why you need this: For multiboxers - to avoid confusing where the DD is and where the healer is For the forgetful - if your memory is like a goldfish For streamers - viewers immediately see who's on screen For adults - when playing at work and need to quickly hide the window DLL only - no Interface files needed Installation (more complicated than making tea): 1. Download the DLL 2. Drop it into the System folder 3. Launch the client 4. Be amazed how you lived without this before!   Purchase Conditions: Price: 100$ Payment Method: USDT. How to Buy: Contact me on Telegram: @kiselevwv for a quick response. I will answer all your questions and provide additional information if needed. I guarantee functionality at the moment of sale and prompt assistance with setup after purchase.    
  • Topics

×
×
  • Create New...

Important Information

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..