- 0
[Help] Instance Party Event.
-
Posts
-
Hi everyone, In 2014, I completely stepped away from developing L2 servers and doing L2J-related work. Since then, I’ve only opened this server about once a year and helped a few servers and individuals for free. I haven’t taken on any paid L2J work since then. LINEAGE2.GOLD is a project that has reached about Season 6. The first season launched at the end of 2020 and was a fully rebuilt Gold-style server on the Classic client (protocol 110). It featured many custom systems and enhancements. After several seasons, I decided to abandon the Mobius-based project and move to Lucera, as my goal was to get as close as possible to Interlude PTS behavior while still staying on the L2J platform. The current project was once again completely rebuilt, this time on the Essence client (protocol 306), and is based on Lucera. Because of that, acquiring a license from Deazer is required. My Lucera extender includes, but is not limited to: Formulas.java Basic anti-bot detection, which proved quite effective, we caught most Adrenaline users using relatively simple server-side logic, logged them, and took staff action. Simple admin account lookup commands based on IP, HWID, and similar identifiers. In-game Captcha via https://lineage2.gold/code, protected by Cloudflare, including admin commands for blacklisting based on aggression levels and whitelisting. Additional admin tools such as Auto-Play status checks, Enchanted Hero Weapon live sync, force add/remove clans from castle sieges, item listeners for live item monitoring, and more. A fully rewritten Auto-Play system with support for ExAutoPlaySetting, while still using the Auto-Play UI wheel, featuring: Debuff Efficiency Party Leader Assist Respectful Hunting Healer AI Target Mode Range Mode Summoner buff support Dwarf mechanics Reworked EffectDispelEffects to restore buffs after Cancellation. Raid Bomb item support. Reworked CronZoneSwitcher. Prime Time Raid Respawn Service. Community Board features such as Top rankings and RB/Epic status. Custom systems for Noblesse, Subclasses, support-class rewards, and much more. Depending on the deal, the project can include: The lineage2.gold domain The website built on the Laravel PHP framework The server’s Discord Client Interface source Server files and extender source The server database (excluding private data such as emails and passwords) I’m primarily looking for a serious team to continue the project, as it would be a shame to see this work abandoned. This is not cheap. You can DM me with offers. If you’re wondering why I’m doing this: I’ve felt a clear lack of appreciation from the L2 community, and I’m not interested in doing charity work for people who don’t deserve it. I’m simply not someone who tolerates BS. Server Info: https://lineage2.gold/info Server for test: https://lineage2.gold/download Over 110 videos YouTube playlist: https://www.youtube.com/watch?v=HO7BZaxUv2U&list=PLD9WZ0Nj-zstZaYeWxAxTKbX7ia2M_DUu&index=113
-
By Lineage2Shield · Posted
ACTUALIZATION > SAMURAI CROW PRICE. 500$ (P542) 300$ (P520) 200$ (P509)
-
-
Topics

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