05-13-2013, 09:07 PM
нашел в шаре эвент для интерлюде
СКАЧАТЬ
переделал импорты под свою сборку эвент заработал но не корректно выдает кучу ошибок подскажите как можно исправить
Это простой соло эвент. Суть такова: Убить несколько мобов, чтобы добраться до босса, убить его и потребовать вознаграждение. Довольно просто NPC в центре Гирана ввести инстанции для обмена монет. Вы можете получить в некоторые головные уборы (настроить толпу статистика, награды, персонаж навыков и т.д. на ваш вкус вы можете сами )
СКАЧАТЬ
переделал импорты под свою сборку эвент заработал но не корректно выдает кучу ошибок подскажите как можно исправить
Это простой соло эвент. Суть такова: Убить несколько мобов, чтобы добраться до босса, убить его и потребовать вознаграждение. Довольно просто NPC в центре Гирана ввести инстанции для обмена монет. Вы можете получить в некоторые головные уборы (настроить толпу статистика, награды, персонаж навыков и т.д. на ваш вкус вы можете сами )
ОШИБКИ В ГС
__init__.py
Цитата:import sys
from com.l2scoria.gameserver.instancemanager import InstanceManager
from com.l2scoria.gameserver.model.actor.instance import L2ItemInstance
from com.l2scoria.gameserver.model import L2Summon
from com.l2scoria.gameserver.model.entity import Instance
from com.l2scoria.gameserver.model import PcInventory
from com.l2scoria.gameserver.model.quest import State
from com.l2scoria.gameserver.model.quest import QuestState
from com.l2scoria.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2scoria.gameserver.network.serverpackets import CreatureSay
from com.l2scoria.gameserver.network.serverpackets import InventoryUpdate
from com.l2scoria.gameserver.network.serverpackets import MagicSkillUser
from com.l2scoria.gameserver.network.serverpackets import SystemMessage
from com.l2scoria.gameserver.network.serverpackets import ExShowScreenMessage
from com.l2scoria.gameserver.network.serverpackets import Earthquake
from com.l2scoria.gameserver.network import SystemMessageId
from com.l2scoria.gameserver.util import Util
from com.l2scoria.util.random import Rnd
qn = "Bloodshed"
#Items
E_APIGA = 4037
ADENA = 57
STONE = 9576
SCROLL = 960
#NPCs
ROSE = 2009001
CHEST = 2009002
#Monsters
NAGLFAR = 2009010
SENTRY1 = 2009011
SENTRY2 = 2009012
HOUND = 2009013
#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 party:
player.sendPacket(SystemMessage.sendString("You may not enter with a party."))
return False
if not player.getLevel() >= 78:
player.sendPacket(SystemMessage.sendString("You must be level 78 or higher to enter."))
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
self.worlds[instanceId]=world
self.world_ids.append(instanceId)
print "Instance: Started " + template + " Instance: " +str(instanceId) + " created by " + str(player.getName())
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 = 82200
tele.y = 148347
tele.z = -3467
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 (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_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)
Bloodshed.xml
Цитата:<?xml version="1.0" encoding="UTF-8"?>
<instance name="Bloodshed">
<activityTime val="25" />
<timeDelay val="24" />
<allowSummon val="false" />
<spawnlist>
<spawn npcId="2009011" x="82692" y="148703" z="-3469" heading="49277" respawn="0" />
<spawn npcId="2009012" x="82692" y="148703" z="-3469" heading="16337" respawn="0" />
<spawn npcId="2009013" x="82692" y="148703" z="-3469" heading="65268" respawn="0" />
</spawnlist>
<doorlist>
<door doorId="12240001" />
<door doorId="12240002" />
</doorlist>
</instance>