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

    • 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.    
    • Hello Everyone   Wts adena  L2 REBORN C5 FRANZ x1 50kk stock 😉   Contact Discord :  topseller4081  
    • tratando de crear un GvE tengo problemas con el scripts como no se mucho de esto me estoy ayudando con IA pero no puedo salir de este bache      [06:19:43]  WARN Quest GvE_AI not found! [06:19:45]  WARN Quest GvE_AI not found! [06:19:50]  WARN Quest GvE_AI not found! [06:25:51]  WARN Quest GvE_AI not found!
    • ## [1.5.5] - 2026-02-02   ### ✨ New Features - **Discord Login**: You can now sign in with your Discord account. Admins enable and configure Discord login in **cpadmin → Users** (Discord auth settings: Client ID, Client Secret, Redirect URI). If you already have an account with the same email (e.g. forum, Google, or legacy), signing in with Discord links to that account so you keep one profile. Discord login is available on Add Server, My Servers, Vote page, and Premium Ads booking. - **Setup Links**: In **cpadmin → Users**, both Google and Discord login settings now include direct links to their official developer portals (Google Cloud Console and Discord Developer Portal) for easier OAuth app setup.   ### 🔒 Security - **Email Required for Registration**: New user registration via OAuth (Forum, Google, Discord) now requires a valid email address. If the OAuth provider doesn't provide an email (e.g. unverified Discord email), registration is rejected with a clear message. This prevents anonymous accounts and ensures all users can receive important notifications.   ### 🔄 Improvements - **User Auth Badges**: In **cpadmin → Users**, the Registered Members table now shows auth method badges: **Forum**, **Google**, **Discord**, or **Legacy**. Users can have multiple badges if they've linked multiple login methods. - **Server Info Labels**: Translated server info labels (Owner Name, Language, Server Location) are now properly localized in all 5 languages (English, Spanish, Portuguese, Greek, Russian).   ---   ## [1.5.4] - 2026-02-01   ### ✨ New Features - **Google Login**: You can now sign in with your Google account. Admins enable and configure Google login in **cpadmin → Users** (Google auth settings: Client ID, Client Secret, Redirect URI). If you already have an account with the same email (e.g. forum or legacy), signing in with Google links to that account so you keep one profile. The login menu (navbar and login prompts) offers **Login with Forum Account**, **Login with Google** (when enabled), and **Create Forum Account**. Google login is available on Add Server, My Servers, Profile Settings, Vote page, and Premium Ads booking. - **Ban/Unban Members**: In **cpadmin → Users**, admins can ban or unban registered members. Banned users see a full-page message: "Sorry, you are banned from using this site." When a user is banned, all their servers are set to inactive. - **Moderator Activity Log**: **cpadmin → Moderators** now records when a moderator or admin enters the CPAdmin panel (e.g. "Moderator X entered CPAdmin panel at &lt;time&gt;") and when they change any cpadmin settings (only write actions are logged; read-only use is not). - **Clear Moderator Logs**: Admins can clear all moderator activity log entries via a **Clear logs** button with confirmation. Logs are shown at 100 per page with pagination. - **Filter by Moderator**: In the Moderator Activity Log, a **Filter by moderator** dropdown lets you view activity for a specific moderator or "All moderators." - **cpadmin → Users Tab**: New **Users** tab in the admin panel with Registered Members list (paginated), Google auth settings card, and per-user Ban/Unban and server links.   ### 🔄 Improvements - **cpadmin → Servers**: Each server name in the servers table is now clickable and opens that server’s info page. - **cpadmin → Users – Servers column**: The servers count/list is clickable and opens a small modal listing that user’s servers; each server name in the modal links to the server info page. - **cpadmin → Users – Search**: A search bar above the Registered Members table lets you search by **username**, **email**, or **server name**. Results are filtered on the server (paginated); clearing the search resets the list. - **Moderator Activity Log**: Pagination shows "Showing X–Y of Z" and "Page N of M" with Previous/Next when there are more than 100 entries. - **Login UI**: Login options (Forum, Google, Create account) are shown in a consistent dropdown and in modals (Add Server, My Servers, Vote, Premium Ads) for a clearer sign-in experience. - **Vote Page – Unauthenticated**: When you must log in to vote, the page now shows "Vote for [Server Name]" as the main heading and presents login options in a compact section.   ---   ## [1.5.3] - 2026-01-30   ### ✨ New Features - **File Logs in Admin Panel**: Admins can now view CodeIgniter PHP logs (api/writable/logs) directly in **cpadmin → Logs**. Select a date to view the log file, refresh to reload, or delete all log files to free up space.   ### 🔄 Improvements - **Cache System**: Full cache audit and improvements — when you clear cache in cpadmin, both backend and frontend caches are cleared. Server listings, My Servers, pricing, ad config, and chronicles all refresh with fresh data. New paid servers now appear in listings and My Servers immediately. - **Admin Panel – Server Rates**: Server rates in the admin servers table now display in compact format (e.g. x10000 → x10k, x100000 → x100k, x1000000 → x1m) for easier scanning. Hover to see the full value.
  • 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..