Скажите плиз как поменять место появление в ивенте
вот код
вот код
Код:
import sys
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.datatables import DoorTable
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
from net.sf.l2j.gameserver import Announcements
from net.sf.l2j import L2DatabaseFactory
from net.sf.l2j.gameserver.ai import CtrlIntention
from net.sf.l2j.util import Rnd
from java.lang import System
qn = "5555_Peklo"
ATTAKERS = []
tek = 0
nyj = 1
NAME = "peklo" # Название (только английские символы)
REGISTER = 55557 # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [82698,148638,-3473] # Соответственно координаты, где будет появляться НПЦ
PENI = 4037 # Итем, необходимый для участия
PENI_KOL = 0 # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
TIME_FOR_WAIT = 90 # Время между ивентами в минутах
TIME_FOR_REG = 5 # Время на регистрацию в минутах
TEST_AFTER_RESTART = 2 # Время, через которое начнётся ивент после рестарта в минутах.
ANNOUNCE_INTERVAL = 2 # Как часто аннонсить о регистрации на ивент в минутах.
MOB = 55556 # Моб, которого надо убивать. С него ничего не должно дропаться. Желательно не менять, т.к. есть защита от незарегистрированных игроков.
locf = [174238,89532,5192] # Соответственно координаты, где будет появляться 1 моб
RADIUS = 400 # Радиус появления мобов относительно 1 моба
MOB_R = 55555 # Моб, при помощи которого выдаётся награда. Здесь должен быть прописан дроп.
YCH_MIN = 1 # Минимальное количество участников
YCH_MAX = 20 # Максимальное количество участников.
MOBS_TO_CHEL = 5 # Количество мобов на человека. Максимальное количество мобов, которое придётся убить участникам за последний заход= кл-во участников * на MOBS_TO_CHEL.
DOORS = [] # Пишем сюда список DoorId дверей через запятую, которые необходимо закрывать/открывать по началу/окончанию ивента. Или оставляем пустым.
class Quest (JQuest) :
tek=0
nyj=1
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def init_LoadGlobalData(self) :
self.saveGlobalQuestVar("annom", "1")
closed = self.loadGlobalQuestVar("closed")
self.saveGlobalQuestVar("count", "0")
self.startQuestTimer("open", TEST_AFTER_RESTART *60000, None, None)
return
def onTalk (Self,npc,player):
npcId = npc.getNpcId()
if npcId == REGISTER:
if player not in ATTAKERS :
kolych = 0
for i in ATTAKERS :
kolych = kolych + 1
if kolych <= YCH_MAX :
if PENI_KOL<>0:
if st.getQuestItemsCount(PENI)>PENI_KOL:
st.takeItems(PENI,PENI_KOL)
ATTAKERS.append(player)
Self.saveGlobalQuestVar(str(player.getObjectId()), "in")
return "reg.htm"
else:
st.exitQuest(1)
return "nopeni.htm"
else:
ATTAKERS.append(player)
Self.saveGlobalQuestVar(str(player.getObjectId()), "in")
return "reg.htm"
else:
return "max.htm"
else:
return "yje.htm"
return
def onAdvEvent (self,event,npc,player):
global tek
global nyj
global ATTAKERS
closed = self.loadGlobalQuestVar("closed")
annom = int(self.loadGlobalQuestVar("annom"))
if event == "open" :
self.saveGlobalQuestVar("closed", "0")
self.saveGlobalQuestVar("annom", "1")
npc=self.addSpawn(REGISTER,locr[0],locr[1],locr[2],30000,False,0)
self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
Announcements.getInstance().announceToAll("Opened registration for "+str(NAME)+" event!")
if event == "close":
tek=0
nyj=1
self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
kolych = 0
for i in ATTAKERS :
kolych = kolych + 1
if kolych < YCH_MIN :
npc.deleteMe()
self.saveGlobalQuestVar("closed", "1")
Announcements.getInstance().announceToAll("Event "+str(NAME)+" was canceled.")
else:
self.saveGlobalQuestVar("kolych", str(kolych))
self.saveGlobalQuestVar("closed", "1")
if DOORS<>[]:
for i in DOORS:
DoorTable.getInstance().getDoor(int(i)).closeMe()
Announcements.getInstance().announceToAll("Event "+str(NAME)+" has started!")
npc.deleteMe()
self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,600000)
for i in ATTAKERS :
if i.isOnline() :
i.teleToLocation(174238,89532,-5192)
if event == "announce" and closed=="0" and (TIME_FOR_REG - ANNOUNCE_INTERVAL * int(annom))<>0:
Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * int(annom) ) + " minutes until event "+str(NAME)+" start!")
self.saveGlobalQuestVar("annom", str(annom+1))
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
if event == "return" :
if DOORS<>[]:
for i in DOORS:
DoorTable.getInstance().getDoor(int(i)).openMe()
self.saveGlobalQuestVar("count", "0")
con=L2DatabaseFactory.getInstance().getConnection()
delchars=con.prepareStatement("DELETE FROM `quest_global_data` WHERE quest_name='5555_Peklo' AND value='in'")
try :
delchars.executeUpdate()
delchars.close()
con.close()
except :
try : con.close()
except : pass
Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended!")
for i in ATTAKERS :
if i.isOnline() :
i.teleToLocation(locr[0],locr[1],locr[2])
ATTAKERS=[]
if event == "exit" :
ATTAKERS.remove(player)
con=L2DatabaseFactory.getInstance().getConnection()
delchars=con.prepareStatement("DELETE FROM `quest_global_data` WHERE quest_name='5555_Peklo' AND var=?")
delchars.setString(1, str(player.getObjectId()))
try :
delchars.executeUpdate()
delchars.close()
con.close()
except :
try : con.close()
except : pass
return "exit.htm"
return
def onAttack (self,npc,player,damage,isPet):
if player not in ATTAKERS :
if self.loadGlobalQuestVar(str(player.getObjectId())) == "in" :
ATTAKERS.append(player)
else:
player.teleToLocation(174238,89532,5192)
return
def onKill(self,npc,player,isPet):
global tek
global nyj
mobcount=(MOBS_TO_CHEL * int(self.loadGlobalQuestVar("kolych")))
tek=tek+1
if tek==nyj and (2*nyj) < mobcount:
for i in range(0,2*tek) :
rand = Rnd.get(7)
if rand in [0,4] :
randx = 25*Rnd.get(20)
randy = 25*Rnd.get(20)
elif rand in [1,5] :
randx = -25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [2,6] :
randx = 25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [3,7] :
randx = -25*Rnd.get(20)
randy = 25*Rnd.get(20)
self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,600000)
nyj=2*tek
tek=0
elif tek==nyj and (2*nyj) > mobcount:
for i in range(0,mobcount) :
rand = Rnd.get(7)
if rand in [0,4] :
randx = 25*Rnd.get(20)
randy = 25*Rnd.get(20)
elif rand in [1,5] :
randx = -25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [2,6] :
randx = 25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [3,7] :
randx = -25*Rnd.get(20)
randy = 25*Rnd.get(20)
self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,600000)
nyj=mobcount+1
tek=0
elif tek==mobcount:
for i in range(0,mobcount) :
rand = Rnd.get(7)
if rand in [0,4] :
randx = 25*Rnd.get(20)
randy = 25*Rnd.get(20)
elif rand in [1,5] :
randx = -25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [2,6] :
randx = 25*Rnd.get(20)
randy = -25*Rnd.get(20)
elif rand in [3,7] :
randx = -25*Rnd.get(20)
randy = 25*Rnd.get(20)
npc = self.addSpawn(MOB_R,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,600000)
npc.reduceCurrentHp(9999999,player)
npc.deleteMe()
self.startQuestTimer("return", 120000, None, None)
return
QUEST = Quest(5555, qn, "Peklo")
QUEST.addKillId(int(MOB))
QUEST.addAttackId(int(MOB))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))