Jump to content
  • 0

high five Help In Custom Instance Reenter Timer


Chemotox

Question

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. 

 

Link to comment
Share on other sites

Recommended Posts

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

Link to comment
Share on other sites

  • 0

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)
Link to comment
Share on other sites

  • 0

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
Link to comment
Share on other sites

  • 0

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
Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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);'))
Link to comment
Share on other sites

  • 0

 

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
Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Posts

    • 2 Factor Authentication Code for 100% secure login. Account provided with full information (email, password, dob, gender, etc).
    • ready server for sale, also available for testing with ready and beautiful npc zone pvp with custom 2 epic core orfen lvl2 with all maps ready all quests work at 100% ready comm  board with buffer teleport gm shop service anyone interested send me a pm many more that I forget  Exp/Sp : x30 (Premium: x40)    Adena : x7 (Premium: x10)   Drop : x7 (Premium: 10)   Spoil : x7 (Premium: 10)   Seal Stones : x7 (Premium: 10)   Raid Boss EXP/SP : x10   Raid Boss Drop : x3 (Premium: x5)   Epic Boss Drop : x1 Enchants   Safe Enchant : +3   Max Enchant : +16   Normal Scroll of Enchant Chance : 55%   Blessed Scroll of Enchant Chance : 60% Game Features   GMShop (Max. B-Grade)   Mana Potions (1000 MP, 10 sec Cooldown)   NPC Buffer (Include all buffs, 2h duration)   Auto-learn skills (Except Divine Inspiration)   Global Gatekeeper   Skill Escape: 15 seconds or /unstuck   1st Class Transfer (Free)   2nd Class Transfer (Free)   3rd Class Transfer (700 halisha mark)   Subclass (Items required from Cabrio / Hallate / Kernon / Golkonda + Top B Weapon + 984 Cry B)   Subclass 5 Subclasses + Main (Previous subclasses to level 75 to add new one)   Noblesse (Full Retail Quest)   Buff Slots: 24 (28 with Divine Inspiration LVL 4)   Skill Sweeper Festival added (Scavenger level 36)   Skill Block Buff added   Maximum delevel to keep Skills: 10 Levels   Shift + Click to see Droplist   Global Shout & Trade Chat   Retail Geodata and Pathnodes   Seven Signs Retail   Merchant and Blacksmith of Mammon at towns   Dimensional Rift (Min. 3 people in party to enter - Instance)   Tyrannosaurus drop Top LS with fixed 50% chance   Fast Augmentation System (Using Life Stones from Inventory)   Chance of getting skills (Normal 1%, Mid 3%, High 5%, Top 10%)   Wedding System with 30 seconds teleport to husband/wife Olympiad & Siege   Olympiad circle 14 days. (Maximum Enchant +6)   Olympiads time 18:00 - 00:00 (GMT +3)   Non-class 5 minimum participants to begin   Class based disabled   Siege every week.   To gain the reward you need to keep the Castle 2 times. Clans, Alliances & Limits   Max Clients/PC: 2   Max Clan Members: 36   Alliances allowed (Max 1 Clans)   24H Clan Penalties   Alliance penalty reset at daily restart (3-5 AM)   To bid for a Clan Hall required Clan Level 6 Quests x3   Alliance with the Ketra Orcs   Alliance with the Varka Silenos   War with Ketra Orcs   War with the Varka Silenos   The Finest Food   A Powerful Primeval Creature   Legacy of Insolence   Exploration of Giants Cave Part 1   Exploration of Giants Cave Part 2   Seekers of the Holy Grail   Guardians of the Holy Grail   Hunt of the Golden Ram Mercenary Force   The Zero Hour   Delicious Top Choice Meat   Heart in Search of Power   Rise and Fall of the Elroki Tribe   Yoke of the Past     Renegade Boss (Monday to Friday 20:00)   All Raid Boss 18+1 hours random respawn   Core (Jewel +1 STR +1 DEX) Monday, Wednesday and Friday 20:00 - 21:00 (Maximum level allowed to enter Cruma Tower: 80)   Orfen (Jewel +1 INT +1 WIT) Monday to Friday, 20:00 - 21:00 (Maximum level allowed to enter Sea of Spores: 80)   Ant Queen Monday and Friday 21:00 - 22:00 (Maximum level allowed to enter Ant Nest: 80)   Zaken Monday,Wednesday,Friday 22:00 - 23:00 (Maximum level allowed to enter Devil's Isle: 80)   Frintezza Tuesday, Thursday and Sunday 22:00 – 23:00 (Need CC of 4 party and 7 people in each party min to join the lair, max is 8 party of 9 people each)   Baium (lvl80) Saturday 22:00 – 23:00   Antharas Every 2 Saturdays 22:00 - 23:00 Every 2 Sundays (alternating with Valakas) 22:00 – 23:00   Valakas Every 2 Saturdays 22:00 - 23:00 Every 2 Sundays (alternating with Antharas) 22:00 – 23:00   Subclass Raids (Cabrio, Kernon, Hallate, Golkonda) 18hours + 1 random   Noblesse Raid (Barakiel) 6 hours + 15min random   Varka’s Hero Shadith 8 hours + 30 mins random (4th lvl of alliance with Ketra)   Ketra’s Hero Hekaton 8 hours + 30 mins random (4th lvl of alliance with Varka)   Varka’s Commander Mos 8 hours + 30 mins random (5th lvl of alliance with Ketra)   Ketra’s Commander Tayr 8 hours + 30 mins random (5th lvl of alliance with Varka)
    • Have a great day! Unfortunately, we can not give you the codes at the moment, but they will be distributed as soon as trial is back online, thanks for understanding! Other users also can reply there for codes, we will send them out some time after.
    • Ok mates i would like to play a pridestyle server (interluide, gracie w/ever) Is there any such server online and worth playing?
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock