Jump to content

Enoc

Members
  • Posts

    9
  • Credits

  • Joined

  • Last visited

    Never
  • Feedback

    0%

Posts posted by Enoc

  1. Hey pals, i have a problem whit this event's Code, the same throws a error when the player teleport into the event.

     

    #Instance Engine
    
    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                            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 = "Bloodshed2"
    
    #Items
    B_Eva	= 30000
    G_Bar	= 57
    STONE	= 14008
    Codex	= 6622
    
    #NPCs
    ROSE	= 40014
    CHEST	= 40015
    
    #Monsters
    NAGLFAR	= 40019
    SENTRY1	= 40016
    SENTRY2	= 40017
    HOUND	= 40018
    
    #Timelimit
    TIMELIMIT = 2700000
    
    #Instance Id
    INSTANCEID = 500000
    
    #Doors
    DOOR1	= 17130043
    DOOR2	= 17130045
    DOOR3	= 17130046
    
    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 openDoor(doorId,instanceId):
    for door in InstanceManager.getInstance().getInstance(instanceId).getDoors():
    	if door.getDoorId() == doorId:
    		door.openMe()			
    
    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 player.getLevel() >= 21:
    	player.sendPacket(SystemMessage.sendString("Tiene que ser 20 para poder entrar"))
    	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) + " Lineage 2 " + 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 Bloodshed2(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 = -87926
    		tele.y = -143042
    		tele.z = -9172
    		enterInstance(self, player, "Bloodshed2.xml", tele)
    		st.playSound("ItemSound.quest_middle")
    	elif npcId == CHEST :
    		npc.decayMe()
    		tele = PyObject()
    		tele.x = -47124
    		tele.y = 58932
    		tele.z = -3360
    		exitInstance(player,tele)
    		st.giveItems(B_Eva,1000)
    		st.giveItems(G_Bar,100000)
    		st.giveItems(STONE,0)
    		st.giveItems(Codex,0)
    		st.playSound("ItemSound.quest_finish")
    		player.sendPacket(ExShowScreenMessage("Felicitaciones", 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(), "Me Has Derrotado Puedes Pasar!"))
    			st.giveItems(B_Eva,4)
    			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(), "Me Has Derrotado Puedes Pasar!"))
    			st.giveItems(B_Eva,4)
    			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(B_Eva,5)
    			openDoor(DOOR3,npc.instanceId)
    			player.sendPacket(ExShowScreenMessage("Death Whisper a Aparecido Ten Cuidado!", 8000))
    			newNpc = self.addSpawn(NAGLFAR,-87785,-153302,-9179,337,False,0,False,npc.instanceId)
    			player.sendPacket(Earthquake(154323,144443,-12585,20,10))
    	elif npcId == NAGLFAR :
    		if npc.getInstanceId() in self.worlds:
    			world = self.worlds[npc.getInstanceId()]
    			player.sendPacket(CreatureSay(npc.getObjectId(), 0, npc.getName(), "Como eh sido Derrotado!?"))
    			player.sendPacket(ExShowScreenMessage("Felicitaciones! Tu Has Vencido a Death Whisper.", 12000))
    			st.playSound("ItemSound.quest_middle")
    			st.giveItems(B_Eva,6)
    			newNpc = self.addSpawn(CHEST,-87785,-153302,-9179,337,False,0,False,npc.instanceId)
    	return
    
    QUEST = Bloodshed2(-1, qn, "Bloodshed2")
    QUEST.addStartNpc(ROSE)
    QUEST.addTalkId(ROSE)
    QUEST.addTalkId(CHEST)
    
    QUEST.addKillId(NAGLFAR)
    QUEST.addKillId(HOUND)
    QUEST.addKillId(SENTRY1)
    QUEST.addKillId(SENTRY2)

     

    thump_8188048dibujo.jpg

     

    Thanks all for the help. 

     

×
×
  • Create New...