- 0
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..
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.
Question
Chakl22
well i have a "Solo Instance Event" and this work perfect with Check for Rojin Time. So other guy modify this same code for make this a "Instance Party Event" but without Rejoining Time, so since the code is very similar i try to copy the Time Part from the Solo Event and put this on the Party Event, but give me error.
Solo Event: (Working Perfect With Rejoin 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.instancemanager.InstanceManager import InstanceWorld from com.l2jserver.gameserver.model 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 = 14720 ADENA = 57 STONE = 9576 SCROLL = 960 #NPCs ROSE = 40000 CHEST = 40001 #Monsters NAGLFAR = 40002 SENTRY1 = 40003 BRAVERY = 40005 #Timelimit TIMELIMIT = 2400000 #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() >= 80: player.sendPacket(SystemMessage.sendString("You must be level 80 or higher to enter.")) return False if System.currentTimeMillis() < reentertime : InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID) hours = (reentertime-System.currentTimeMillis())/3600000 minutes = ((reentertime-System.currentTimeMillis())%3600000)/60000 seconds = ((reentertime-System.currentTimeMillis())%60000)/1000 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 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.getPet() 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.getPet() 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,2750000) st.giveItems(STONE,1) st.giveItems(SCROLL,1) st.playSound("ItemSound.quest_finish") player.sendPacket(ExShowScreenMessage("Solo Instance Event (80+): 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) openDoor(DOOR2,npc.instanceId) elif npcId == BRAVERY : 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_fanfare_2") st.giveItems(E_APIGA,10) 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(BRAVERY) QUEST.addKillId(SENTRY1)Party Event, (Trying to put a Rejoin Time taking like a example the Code of Solo Event but i get Error.)
#Instance Event by Bloodshedparty from com.l2jserver.gameserver.instancemanager import InstanceManager from com.l2jserver.gameserver.model 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 = "Bloodshedparty" #Items E_APIGA = 14720 ADENA = 57 STONE = 9576 STONE82 = 10486 STONE84 = 14169 SCROLL = 960 SCROLLB = 6577 #NPCs ROSE = 50000 CHEST = 50001 #Monsters NAGLFAR = 50002 SENTRY1 = 50003 SENTRY2 = 50004 HOUND = 50005 #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 not enough people in your party. Minimum is 2 people.")) return False if System.currentTimeMillis() < reentertime : InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID) hours = (reentertime-System.currentTimeMillis())/3600000 minutes = ((reentertime-System.currentTimeMillis())%3600000)/60000 seconds = ((reentertime-System.currentTimeMillis())%60000)/1000 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 if party and party.getLeader() != player: player.sendPacket(SystemMessage.sendString("Only the party leader can begin the Event.")) return False for partyMember in party.getPartyMembers().toArray(): if partyMember.getLevel() < 78: player.sendPacket(SystemMessage.sendString(partyMember.getName()+"s level is below 78 and cannot enter.")) return False if not Util.checkIfInRange(1000, player, partyMember, True) and new: player.sendPacket(SystemMessage.sendString(partyMember.getName()+" is too far away, ask them 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.getPet() 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) #added for partyMember in party.getPartyMembers().toArray(): partyMember.stopAllEffects() 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.getPartyMembers().toArray(): teleportplayer(self,partyMember,teleto) #added for partyMember in party.getPartyMembers().toArray(): partyMember.stopAllEffects() return instanceId return instanceId def exitInstance(player,tele): party = player.getParty() instanceId = player.getInstanceId() if party : for partyMember in party.getPartyMembers().toArray(): partyMember.setInstanceId(0) partyMember.teleToLocation(tele.x, tele.y, tele.z) pet = partyMember.getPet() if pet != None : pet.setInstanceId(0) pet.teleToLocation(tele.x, tele.y, tele.z) InstanceManager.getInstance().destroyInstance(instanceId) return class Bloodshedparty(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, "Bloodshedparty.xml", tele) elif npcId == CHEST : party = player.getParty() if not party: player.sendPacket(SystemMessage.sendString("Get out of here you noob!")) return if party and party.getLeader() != player: player.sendPacket(SystemMessage.sendString("Your party leader must claim the treasure!")) return npc.decayMe() tele = PyObject() tele.x = 82200 tele.y = 148347 tele.z = -3467 for partyMember in party.getPartyMembers().toArray(): st1 = partyMember.getQuestState("Bloodshedparty") if not st1: st1 = self.newQuestState(partyMember) st1.giveItems(ADENA,10000) st1.giveItems(STONE84,1) st1.giveItems(STONE82,1) st1.giveItems(STONE,1) st1.giveItems(SCROLLB,1) st1.giveItems(SCROLL,1) exitInstance(partyMember,tele) st1.playSound("ItemSound.quest_finish") partyMember.sendPacket(ExShowScreenMessage("You have Completed the Party Event!", 8000)) return def onKill(self,npc,player,isPet): party = player.getParty() st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == SENTRY1 : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] for partyMember in party.getPartyMembers().toArray(): st1 = partyMember.getQuestState("Bloodshedparty") if not st1: st1 = self.newQuestState(partyMember) st1.playSound("ItemSound.quest_middle") partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Beginners luck...")) st.giveItems(E_APIGA,1) openDoor(DOOR1,npc.instanceId) elif npcId == SENTRY2 : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] for partyMember in party.getPartyMembers().toArray(): st1 = partyMember.getQuestState("Bloodshedparty") if not st1: st1 = self.newQuestState(partyMember) st1.playSound("ItemSound.quest_middle") partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "I'll get you next time, Noob!!")) st.giveItems(E_APIGA,1) openDoor(DOOR2,npc.instanceId) elif npcId == HOUND : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] for partyMember in party.getPartyMembers().toArray(): st1 = partyMember.getQuestState("Bloodshedparty") if not st1: st1 = self.newQuestState(partyMember) st1.playSound("ItemSound.quest_middle") partyMember.sendPacket(ExShowScreenMessage("Demonic Lord Naglfar Has Appeared!", 8000)) partyMember.sendPacket(Earthquake(240826,219982,-9985,20,10)) newNpc = self.addSpawn(NAGLFAR,-242754,219982,-9985,306,False,0,False,npc.instanceId) st.giveItems(E_APIGA,2) elif npcId == NAGLFAR : if npc.getInstanceId() in self.worlds: world = self.worlds[npc.getInstanceId()] for partyMember in party.getPartyMembers().toArray(): st1 = partyMember.getQuestState("Bloodshedparty") if not st1: st1 = self.newQuestState(partyMember) partyMember.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Hax!! GM GM GM!! WtF!?")) partyMember.sendPacket(ExShowScreenMessage("Congratulations! You Have Defeated Demonic Lord Naglfar.", 12000)) st1.playSound("ItemSound.quest_finish") st.giveItems(E_APIGA,4) newNpc = self.addSpawn(CHEST,-242754,219982,-9985,306,False,0,False,npc.instanceId) return QUEST = Bloodshedparty(-1, qn, "Bloodshedparty") QUEST.addStartNpc(ROSE) QUEST.addTalkId(ROSE) QUEST.addTalkId(CHEST) QUEST.addKillId(NAGLFAR) QUEST.addKillId(HOUND) QUEST.addKillId(SENTRY1) QUEST.addKillId(SENTRY2)if System.currentTimeMillis() < reentertime :
InstanceManager.getInstance().getInstanceTime(player.getObjectId(), INSTANCEID)
hours = (reentertime-System.currentTimeMillis())/3600000
minutes = ((reentertime-System.currentTimeMillis())%3600000)/60000
seconds = ((reentertime-System.currentTimeMillis())%60000)/1000
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
st = player.getQuestState(qn)
InstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, ((System.currentTimeMillis() + TIMELIMIT)))
This the Code i added to Party Event for try to get Rejoin Time but get this error:
Error on: C:\server\gameserver\data\scripts\instances\Bloodshedparty\__init__.py.error.log
Line: -1 - Column: -1
Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 262, 17, '\t\tInstanceManager.getInstance().setInstanceTime(player.getObjectId(), INSTANCEID, ((System.currentTimeMillis() + TIMELIMIT)))'))
I hope someone can help with this, ty.
2 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now