Перейти к содержанию
Авторизация  
gekasav

Пекло на пв

Рекомендуемые сообщения

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.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 net.sf.l2j.gameserver.model import L2World
from net.sf.l2j.gameserver.network.serverpackets import CreatureSay
from java.lang import System
from time import gmtime, strftime 

qn = "5555_Peklo"
# =======================================
#                НЕ ТРОГАЕМ
# =======================================
annom=1
ATTAKERS = []
tek = 0
nyj = 1
closed = 1
# =======================================
#                КОНФИГ
# =======================================
# Название (только английские символы)
NAME = "IIeklo"
LOC = "Town of Giran"                     # Место, где вы поставили регистрирующего НПЦ.
REGISTER = 55557                  # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [[82448,149424,-3468]] # Соответственно координаты, где будет появляться НПЦ. Сколько угодно различных точек
PENI = 1164                       # Итем, необходимый для участия
PENI_KOL = 5                      # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
LEVEL = 80                        # Минимальный уровень, на котором игрок сможет принять участие в ивенте.
AFTER_RESTART = 1                # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.
TIME_FOR_WAIT = 50                # Время между ивентами в минутах
TIME_FOR_REG = 20                 # Время на регистрацию в минутах 
ANNOUNCE_INTERVAL = 2             # Как часто аннонсить о регистрации на ивент в минутах.
MOB = 55556                       # Моб, которого надо убивать. С него ничего не должно дропаться. Желательно не менять, т.к. есть защита от незарегистрированных игроков.
locf = [-88957,136220,-3085]     # Соответственно координаты, где будет появляться 1 моб
locfp = [-88651,136535,-3118]    # Соответственно координаты, куда телепортируются игроки. Здесь же и ресаются.
RADIUS = 10                       # Радиус появления мобов относительно 1 моба
MOB_R = 55555                     # Моб, при помощи которого выдаётся награда. Здесь должен быть прописан дроп.
YCH_MIN = 1                       # Минимальное количество участников 
YCH_MAX = 35                      # Максимальное количество участников.
MOBS_TO_CHEL = 1                  # Количество мобов на человека. Максимальное количество мобов, которое придётся убить участникам за последний заход= кл-во участников * на MOBS_TO_CHEL.
CANCEL_TIME = 10                   # Если в течение этого времени (минуты) мобы не атакуются - ивент считается проигранным. Пишется, что мобы выиграли и все они исчезают.
REWARD =[[9840,20,25,100]]            # Список наград. Выдайтся каждому участнику. Формат записи: [[itemId1,countMIN1,countMAX1,chance1],[itemId2,countMIN2,countMAX2,chanceN],...[itemIdN,countMINN,countMAXN,chanceN]]
TIM = []      # Часы, в течение которых ивент не начнётся. Т.е если написано 20, то в период с 20:00:00 до 20:59:59 ивент не стартует.
RAD = 5000                        # Если в момент выдачи награды игрок находится вне этого радиуса, то награда не выдаётся.

class Quest (JQuest) :
 def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

 def init_LoadGlobalData(self) :
   self.startQuestTimer("open", AFTER_RESTART *60000, None, None)
   return

 def onTalk (Self,npc,player):
  global closed
  st = player.getQuestState(qn)
  global ATTAKERS
  npcId = npc.getNpcId()
  if npcId == REGISTER:
   if closed<>1 and int(Date().getHours()) not in TIM :
    if not player.isInOlympiadMode() :
     if player.getLevel() >= LEVEL:
      if player.getName() not in ATTAKERS :
       kolych = len(ATTAKERS)
       if kolych <= YCH_MAX :
        if PENI_KOL<>0:   
         if st.getQuestItemsCount(PENI)>PENI_KOL:
           st.takeItems(PENI,PENI_KOL)
           ATTAKERS.append(player.getName())
           return "reg.htm"
         else:
           st.exitQuest(1)
           return "nopeni.htm"
        else:
           ATTAKERS.append(player.getName())
           return "reg.htm"
       else:		 
         return "max.htm"
      else:
       return "yje.htm"
     else:
      return "lvl.htm"
    else:
     return "You register in olympiad games now"
   else:
    return "noreg.htm"  
  return

 def onAdvEvent (self,event,npc,player):
   global tek,nyj,ATTAKERS,kolych,annom,closed
   if event == "open" :
     ATTAKERS=[]
     closed=0
     annom=1
     spawncoord=locr[Rnd.get(len(locr))]
     npc=self.addSpawn(REGISTER,spawncoord[0],spawncoord[1],spawncoord[2],30000,False,0)
     npc.startAbnormalEffect(8192)
     self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
     Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom [u][b]- 1[/b][/u]) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
     annom=annom+1
   if event == "close":
    tek=0
    nyj=1
    self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
    kolych = len(ATTAKERS)
    if kolych < YCH_MIN :
      npc.deleteMe()
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(NAME)+" was canceled due lack of participation.") 
    else:
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(NAME)+" has started!")
      npc.deleteMe()
      self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,CANCEL_TIME*60000)
      self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
      for nm in ATTAKERS :
       i=L2World.getInstance().getPlayer(nm)
       try :
        if i.isOnline() :
         i.stopAllEffects()
         i.teleToLocation(locfp[0],locfp[1],locfp[2]) 
       except : pass
   if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)<>0: 
     Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
     annom=annom+1
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
   if event == "return" :
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Players win!")
     for nm in ATTAKERS :
      i=L2World.getInstance().getPlayer(nm)
      try :
       if i.isOnline() :
        i.teleToLocation(83456,148208,-3406)
      except : pass
   if event == "return_l" :
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Monsters win!")
     for nm in ATTAKERS :
      i=L2World.getInstance().getPlayer(nm)
      try :
       if i.isOnline() :
        i.teleToLocation(83456,148208,-3406)
      except : pass
   if event == "exit" :
     ATTAKERS.remove(player.getName())
     return "exit.htm"
   return 
 
 def onAttack (self,npc,player,damage,isPet):
  if player.getName() not in ATTAKERS :
    try:
     player.teleToLocation(147725,-56517,9999)
    except : pass
  return

 def onKill(self,npc,player,isPet):
  global tek,nyj,kolych
  mobcount=(MOBS_TO_CHEL * kolych)+15
  tek=tek+1
  if tek==nyj and (2*nyj) < mobcount:
   for i in range(0,2*tek) :
      randx = 25*(20-Rnd.get(40))
      randy = 25*(20-Rnd.get(40))
      self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
   nyj=2*tek
   tek=0
   self.cancelQuestTimer("return_l",None,None)
   self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
   npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
   npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, "Event "+str(NAME)+": ","You have "+str(CANCEL_TIME)+" minutes for kill this monsters!"))
   npcppc.deleteMe()
  elif tek==nyj and (2*nyj) >= mobcount:
   for i in range(0,mobcount) :
      randx = 25*(20-Rnd.get(40))
      randy = 25*(20-Rnd.get(40))
      mobb=self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
      mobb.startAbnormalEffect(8192)
   nyj=mobcount+1
   tek=0
   self.cancelQuestTimer("return_l",None,None)
   self.startQuestTimer("return_l", (CANCEL_TIME)*60000, None, None)
   npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
   npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, "Event "+str(NAME)+": ","You have "+str(CANCEL_TIME)+" minutes for kill this monsters!"))
   npcppc.deleteMe()
  elif tek==mobcount:
   for nm in ATTAKERS :
    player=L2World.getInstance().getPlayer(nm)
    if player<>None:
     if abs(abs(player.getX())-abs(locf[0]))>RAD or abs(abs(player.getY())-abs(locf[1]))>RAD :
      ATTAKERS.remove(nm)
    else:
      ATTAKERS.remove(nm)
   for nm in ATTAKERS :
    i=L2World.getInstance().getPlayer(nm)
    try:
     for id, countmin, countmax, chance in REWARD :
      if Rnd.get(100)<=chance :
       count=Rnd.get(countmin,countmax)
       i.getQuestState(qn).giveItems(id,count)
    except : pass
   self.startQuestTimer("return", 30000, None, None)  
   self.cancelQuestTimer("return_l",None,None)     
  return
	
QUEST = Quest(5555, qn, "Peklo")

QUEST.addKillId(int(MOB))
QUEST.addAttackId(int(MOB))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))

Помогите настроить импорты для pwsoft Или дайте пожалуйсто рабочий для pwsoft сейчас пишит гейм сервер  failed to import custom :  5555_Peklo

Изменено пользователем gekasav

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

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.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 net.sf.l2j.gameserver.model import L2World
from net.sf.l2j.gameserver.network.serverpackets import CreatureSay
from java.lang import System
from time import gmtime, strftime 

qn = "5555_Peklo"
# =======================================
#                НЕ ТРОГАЕМ
# =======================================
annom=1
ATTAKERS = []
tek = 0
nyj = 1
closed = 1
# =======================================
#                КОНФИГ
# =======================================
# Название (только английские символы)
NAME = "IIeklo"
LOC = "Town of Giran"                     # Место, где вы поставили регистрирующего НПЦ.
REGISTER = 55557                  # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [[82448,149424,-3468]] # Соответственно координаты, где будет появляться НПЦ. Сколько угодно различных точек
PENI = 1164                       # Итем, необходимый для участия
PENI_KOL = 5                      # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
LEVEL = 80                        # Минимальный уровень, на котором игрок сможет принять участие в ивенте.
AFTER_RESTART = 1                # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.
TIME_FOR_WAIT = 50                # Время между ивентами в минутах
TIME_FOR_REG = 20                 # Время на регистрацию в минутах 
ANNOUNCE_INTERVAL = 2             # Как часто аннонсить о регистрации на ивент в минутах.
MOB = 55556                       # Моб, которого надо убивать. С него ничего не должно дропаться. Желательно не менять, т.к. есть защита от незарегистрированных игроков.
locf = [-88957,136220,-3085]     # Соответственно координаты, где будет появляться 1 моб
locfp = [-88651,136535,-3118]    # Соответственно координаты, куда телепортируются игроки. Здесь же и ресаются.
RADIUS = 10                       # Радиус появления мобов относительно 1 моба
MOB_R = 55555                     # Моб, при помощи которого выдаётся награда. Здесь должен быть прописан дроп.
YCH_MIN = 1                       # Минимальное количество участников 
YCH_MAX = 35                      # Максимальное количество участников.
MOBS_TO_CHEL = 1                  # Количество мобов на человека. Максимальное количество мобов, которое придётся убить участникам за последний заход= кл-во участников * на MOBS_TO_CHEL.
CANCEL_TIME = 10                   # Если в течение этого времени (минуты) мобы не атакуются - ивент считается проигранным. Пишется, что мобы выиграли и все они исчезают.
REWARD =[[9840,20,25,100]]            # Список наград. Выдайтся каждому участнику. Формат записи: [[itemId1,countMIN1,countMAX1,chance1],[itemId2,countMIN2,countMAX2,chanceN],...[itemIdN,countMINN,countMAXN,chanceN]]
TIM = []      # Часы, в течение которых ивент не начнётся. Т.е если написано 20, то в период с 20:00:00 до 20:59:59 ивент не стартует.
RAD = 5000                        # Если в момент выдачи награды игрок находится вне этого радиуса, то награда не выдаётся.

class Quest (JQuest) :
 def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

 def init_LoadGlobalData(self) :
   self.startQuestTimer("open", AFTER_RESTART *60000, None, None)
   return

 def onTalk (Self,npc,player):
  global closed
  st = player.getQuestState(qn)
  global ATTAKERS
  npcId = npc.getNpcId()
  if npcId == REGISTER:
   if closed<>1 and int(Date().getHours()) not in TIM :
    if not player.isInOlympiadMode() :
     if player.getLevel() >= LEVEL:
      if player.getName() not in ATTAKERS :
       kolych = len(ATTAKERS)
       if kolych <= YCH_MAX :
        if PENI_KOL<>0:   
         if st.getQuestItemsCount(PENI)>PENI_KOL:
           st.takeItems(PENI,PENI_KOL)
           ATTAKERS.append(player.getName())
           return "reg.htm"
         else:
           st.exitQuest(1)
           return "nopeni.htm"
        else:
           ATTAKERS.append(player.getName())
           return "reg.htm"
       else:		 
         return "max.htm"
      else:
       return "yje.htm"
     else:
      return "lvl.htm"
    else:
     return "You register in olympiad games now"
   else:
    return "noreg.htm"  
  return

 def onAdvEvent (self,event,npc,player):
   global tek,nyj,ATTAKERS,kolych,annom,closed
   if event == "open" :
     ATTAKERS=[]
     closed=0
     annom=1
     spawncoord=locr[Rnd.get(len(locr))]
     npc=self.addSpawn(REGISTER,spawncoord[0],spawncoord[1],spawncoord[2],30000,False,0)
     npc.startAbnormalEffect(8192)
     self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
     Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom [u][b]- 1[/b][/u]) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
     annom=annom+1
   if event == "close":
    tek=0
    nyj=1
    self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
    kolych = len(ATTAKERS)
    if kolych < YCH_MIN :
      npc.deleteMe()
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(NAME)+" was canceled due lack of participation.") 
    else:
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(NAME)+" has started!")
      npc.deleteMe()
      self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,CANCEL_TIME*60000)
      self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
      for nm in ATTAKERS :
       i=L2World.getInstance().getPlayer(nm)
       try :
        if i.isOnline() :
         i.stopAllEffects()
         i.teleToLocation(locfp[0],locfp[1],locfp[2]) 
       except : pass
   if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)<>0: 
     Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
     annom=annom+1
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
   if event == "return" :
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Players win!")
     for nm in ATTAKERS :
      i=L2World.getInstance().getPlayer(nm)
      try :
       if i.isOnline() :
        i.teleToLocation(83456,148208,-3406)
      except : pass
   if event == "return_l" :
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Monsters win!")
     for nm in ATTAKERS :
      i=L2World.getInstance().getPlayer(nm)
      try :
       if i.isOnline() :
        i.teleToLocation(83456,148208,-3406)
      except : pass
   if event == "exit" :
     ATTAKERS.remove(player.getName())
     return "exit.htm"
   return 
 
 def onAttack (self,npc,player,damage,isPet):
  if player.getName() not in ATTAKERS :
    try:
     player.teleToLocation(147725,-56517,9999)
    except : pass
  return

 def onKill(self,npc,player,isPet):
  global tek,nyj,kolych
  mobcount=(MOBS_TO_CHEL * kolych)+15
  tek=tek+1
  if tek==nyj and (2*nyj) < mobcount:
   for i in range(0,2*tek) :
      randx = 25*(20-Rnd.get(40))
      randy = 25*(20-Rnd.get(40))
      self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
   nyj=2*tek
   tek=0
   self.cancelQuestTimer("return_l",None,None)
   self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
   npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
   npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, "Event "+str(NAME)+": ","You have "+str(CANCEL_TIME)+" minutes for kill this monsters!"))
   npcppc.deleteMe()
  elif tek==nyj and (2*nyj) >= mobcount:
   for i in range(0,mobcount) :
      randx = 25*(20-Rnd.get(40))
      randy = 25*(20-Rnd.get(40))
      mobb=self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
      mobb.startAbnormalEffect(8192)
   nyj=mobcount+1
   tek=0
   self.cancelQuestTimer("return_l",None,None)
   self.startQuestTimer("return_l", (CANCEL_TIME)*60000, None, None)
   npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
   npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, "Event "+str(NAME)+": ","You have "+str(CANCEL_TIME)+" minutes for kill this monsters!"))
   npcppc.deleteMe()
  elif tek==mobcount:
   for nm in ATTAKERS :
    player=L2World.getInstance().getPlayer(nm)
    if player<>None:
     if abs(abs(player.getX())-abs(locf[0]))>RAD or abs(abs(player.getY())-abs(locf[1]))>RAD :
      ATTAKERS.remove(nm)
    else:
      ATTAKERS.remove(nm)
   for nm in ATTAKERS :
    i=L2World.getInstance().getPlayer(nm)
    try:
     for id, countmin, countmax, chance in REWARD :
      if Rnd.get(100)<=chance :
       count=Rnd.get(countmin,countmax)
       i.getQuestState(qn).giveItems(id,count)
    except : pass
   self.startQuestTimer("return", 30000, None, None)  
   self.cancelQuestTimer("return_l",None,None)     
  return
	
QUEST = Quest(5555, qn, "Peklo")

QUEST.addKillId(int(MOB))
QUEST.addAttackId(int(MOB))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))

Помогите настроить импорты для pwsoft Или дайте пожалуйсто рабочий для pwsoft сейчас пишит гейм сервер  failed to import custom :  5555_Peklo

 

 

 

 

импорты правильно прописаны, у вас скорее всего нет библиотек для:

from java.lang import Systemfrom time import gmtime, strftime

P.S я не понимаю, так трудно это все под спойлер взять? Ленивые, лишь бы быстрее выложить, а ждете помощи.

Изменено пользователем gvb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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.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 net.sf.l2j.gameserver.model import L2World
from net.sf.l2j.gameserver.network.serverpackets import CreatureSay
from java.lang import System
from time import gmtime, strftime 

qn = "5555_Peklo"
# =======================================
#                НЕ ТРОГАЕМ
# =======================================
annom=1
ATTAKERS = []
tek = 0
nyj = 1
closed = 1
# =======================================
#                КОНФИГ
# =======================================
# Название (только английские символы)
NAME = "IIeklo"
LOC = "Town of Giran"                     # Место, где вы поставили регистрирующего НПЦ.
REGISTER = 55557                  # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [[82448,149424,-3468]] # Соответственно координаты, где будет появляться НПЦ. Сколько угодно различных точек
PENI = 1164                       # Итем, необходимый для участия
PENI_KOL = 5                      # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
LEVEL = 80                        # Минимальный уровень, на котором игрок сможет принять участие в ивенте.
AFTER_RESTART = 1                # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.
TIME_FOR_WAIT = 50                # Время между ивентами в минутах
TIME_FOR_REG = 20                 # Время на регистрацию в минутах 
ANNOUNCE_INTERVAL = 2             # Как часто аннонсить о регистрации на ивент в минутах.
MOB = 55556                       # Моб, которого надо убивать. С него ничего не должно дропаться. Желательно не менять, т.к. есть защита от незарегистрированных игроков.
locf = [-88957,136220,-3085]     # Соответственно координаты, где будет появляться 1 моб
locfp = [-88651,136535,-3118]    # Соответственно координаты, куда телепортируются игроки. Здесь же и ресаются.
RADIUS = 10                       # Радиус появления мобов относительно 1 моба
MOB_R = 55555                     # Моб, при помощи которого выдаётся награда. Здесь должен быть прописан дроп.
YCH_MIN = 1                       # Минимальное количество участников 
YCH_MAX = 35                      # Максимальное количество участников.
MOBS_TO_CHEL = 1                  # Количество мобов на человека. Максимальное количество мобов, которое придётся убить участникам за последний заход= кл-во участников * на MOBS_TO_CHEL.
CANCEL_TIME = 10                   # Если в течение этого времени (минуты) мобы не атакуются - ивент считается проигранным. Пишется, что мобы выиграли и все они исчезают.
REWARD =[[9840,20,25,100]]            # Список наград. Выдайтся каждому участнику. Формат записи: [[itemId1,countMIN1,countMAX1,chance1],[itemId2,countMIN2,countMAX2,chanceN],...[itemIdN,countMINN,countMAXN,chanceN]]
TIM = []      # Часы, в течение которых ивент не начнётся. Т.е если написано 20, то в период с 20:00:00 до 20:59:59 ивент не стартует.
RAD = 5000                        # Если в момент выдачи награды игрок находится вне этого радиуса, то награда не выдаётся.

class Quest (JQuest) :
 def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

 def init_LoadGlobalData(self) :
   self.startQuestTimer("open", AFTER_RESTART *60000, None, None)
   return

 def onTalk (Self,npc,player):
  global closed
  st = player.getQuestState(qn)
  global ATTAKERS
  npcId = npc.getNpcId()
  if npcId == REGISTER:
   if closed<>1 and int(Date().getHours()) not in TIM :
    if not player.isInOlympiadMode() :
     if player.getLevel() >= LEVEL:
      if player.getName() not in ATTAKERS :
       kolych = len(ATTAKERS)
       if kolych <= YCH_MAX :
        if PENI_KOL<>0:   
         if st.getQuestItemsCount(PENI)>PENI_KOL:
           st.takeItems(PENI,PENI_KOL)
           ATTAKERS.append(player.getName())
           return "reg.htm"
         else:
           st.exitQuest(1)
           return "nopeni.htm"
        else:
           ATTAKERS.append(player.getName())
           return "reg.htm"
       else:		 
         return "max.htm"
      else:
       return "yje.htm"
     else:
      return "lvl.htm"
    else:
     return "You register in olympiad games now"
   else:
    return "noreg.htm"  
  return

 def onAdvEvent (self,event,npc,player):
   global tek,nyj,ATTAKERS,kolych,annom,closed
   if event == "open" :
     ATTAKERS=[]
     closed=0
     annom=1
     spawncoord=locr[Rnd.get(len(locr))]
     npc=self.addSpawn(REGISTER,spawncoord[0],spawncoord[1],spawncoord[2],30000,False,0)
     npc.startAbnormalEffect(8192)
     self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
     Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom [u][b]- 1[/b][/u]) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
     annom=annom+1
   if event == "close":
    tek=0
    nyj=1
    self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
    kolych = len(ATTAKERS)
    if kolych < YCH_MIN :
      npc.deleteMe()
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(NAME)+" was canceled due lack of participation.") 
    else:
      closed=1
      Announcements.getInstance().announceToAll("Event "+str(NAME)+" has started!")
      npc.deleteMe()
      self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,CANCEL_TIME*60000)
      self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
      for nm in ATTAKERS :
       i=L2World.getInstance().getPlayer(nm)
       try :
        if i.isOnline() :
         i.stopAllEffects()
         i.teleToLocation(locfp[0],locfp[1],locfp[2]) 
       except : pass
   if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)<>0: 
     Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + " minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
     annom=annom+1
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
   if event == "return" :
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Players win!")
     for nm in ATTAKERS :
      i=L2World.getInstance().getPlayer(nm)
      try :
       if i.isOnline() :
        i.teleToLocation(83456,148208,-3406)
      except : pass
   if event == "return_l" :
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. Monsters win!")
     for nm in ATTAKERS :
      i=L2World.getInstance().getPlayer(nm)
      try :
       if i.isOnline() :
        i.teleToLocation(83456,148208,-3406)
      except : pass
   if event == "exit" :
     ATTAKERS.remove(player.getName())
     return "exit.htm"
   return 
 
 def onAttack (self,npc,player,damage,isPet):
  if player.getName() not in ATTAKERS :
    try:
     player.teleToLocation(147725,-56517,9999)
    except : pass
  return

 def onKill(self,npc,player,isPet):
  global tek,nyj,kolych
  mobcount=(MOBS_TO_CHEL * kolych)+15
  tek=tek+1
  if tek==nyj and (2*nyj) < mobcount:
   for i in range(0,2*tek) :
      randx = 25*(20-Rnd.get(40))
      randy = 25*(20-Rnd.get(40))
      self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
   nyj=2*tek
   tek=0
   self.cancelQuestTimer("return_l",None,None)
   self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
   npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
   npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, "Event "+str(NAME)+": ","You have "+str(CANCEL_TIME)+" minutes for kill this monsters!"))
   npcppc.deleteMe()
  elif tek==nyj and (2*nyj) >= mobcount:
   for i in range(0,mobcount) :
      randx = 25*(20-Rnd.get(40))
      randy = 25*(20-Rnd.get(40))
      mobb=self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
      mobb.startAbnormalEffect(8192)
   nyj=mobcount+1
   tek=0
   self.cancelQuestTimer("return_l",None,None)
   self.startQuestTimer("return_l", (CANCEL_TIME)*60000, None, None)
   npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
   npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, "Event "+str(NAME)+": ","You have "+str(CANCEL_TIME)+" minutes for kill this monsters!"))
   npcppc.deleteMe()
  elif tek==mobcount:
   for nm in ATTAKERS :
    player=L2World.getInstance().getPlayer(nm)
    if player<>None:
     if abs(abs(player.getX())-abs(locf[0]))>RAD or abs(abs(player.getY())-abs(locf[1]))>RAD :
      ATTAKERS.remove(nm)
    else:
      ATTAKERS.remove(nm)
   for nm in ATTAKERS :
    i=L2World.getInstance().getPlayer(nm)
    try:
     for id, countmin, countmax, chance in REWARD :
      if Rnd.get(100)<=chance :
       count=Rnd.get(countmin,countmax)
       i.getQuestState(qn).giveItems(id,count)
    except : pass
   self.startQuestTimer("return", 30000, None, None)  
   self.cancelQuestTimer("return_l",None,None)     
  return
	
QUEST = Quest(5555, qn, "Peklo")

QUEST.addKillId(int(MOB))
QUEST.addAttackId(int(MOB))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))

Помогите настроить импорты для pwsoft Или дайте пожалуйсто рабочий для pwsoft сейчас пишит гейм сервер  failed to import custom :  5555_Peklo

 

по сути бы конкретную бы ошибку либо если не сделал отпиши по скайпу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят решил проблему взял скрипт с другой сборки 

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.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
from net.sf.l2j.gameserver.model import L2World
from net.sf.l2j.gameserver.network.serverpackets import CreatureSay
from java.util import Date
from time import gmtime, strftime

qn = "5555_Peklo"
# =======================================
# НЕ ТРОГАЕМ
# =======================================
annom=1
ATTAKERS = []
tek = 0
nyj = 1
closed = 1
# =======================================
# КОНФИГ
# =======================================

NAME = u"IIeklo" # Название (только английские символы)
LOC = u"Town of Giran" # Место, где вы поставили регистрирующего НПЦ.
REGISTER = 55557 # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [[82840,149361,-3469]] # Соответственно координаты, где будет появляться НПЦ. Сколько угодно различных точек
PENI = 1164 # Итем, необходимый для участия
PENI_KOL = 1 # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
LEVEL = 61 # Минимальный уровень, на котором игрок сможет принять участие в ивенте.
AFTER_RESTART = 1 # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.
TIME_FOR_WAIT = 420 # Время между ивентами в минутах
TIME_FOR_REG = 3 # Время на регистрацию в минутах
ANNOUNCE_INTERVAL = 1 # Как часто аннонсить о регистрации на ивент в минутах.
MOB = 20158 # Моб, которого надо убивать. С него ничего не должно дропаться. Желательно не менять, т.к. есть защита от незарегистрированных игроков.
locf = [-88957,136220,-3085] # Соответственно координаты, где будет появляться 1 моб
locfp = [-88957,136220,-3085] # Соответственно координаты, куда телепортируются игроки. Здесь же и ресаются.
RADIUS = 10 # Радиус появления мобов относительно 1 моба
MOB_R = 20158 # Моб, при помощи которого выдаётся награда. Здесь должен быть прописан дроп.
YCH_MIN = 1 # Минимальное количество участников
YCH_MAX = 80 # Максимальное количество участников.
MOBS_TO_CHEL = 1 # Количество мобов на человека. Максимальное количество мобов, которое придётся убить участникам за последний заход= кл-во участников * на MOBS_TO_CHEL.
CANCEL_TIME = 10 # Если в течение этого времени (минуты) мобы не атакуются - ивент считается проигранным. Пишется, что мобы выиграли и все они исчезают.
REWARD =[[4357,1,1,100]] # Список наград. Выдайтся каждому участнику. Формат записи: [[itemId1,countMIN1,countMAX1,chance1],[itemId2,countMIN2,countMAX2,chanceN],...[itemIdN,countMINN,countMAXN,chanceN]]
TIM = [] # Часы, в течение которых ивент не начнётся. Т.е если написано 20, то в период с 20:00:00 до 20:59:59 ивент не стартует.
RAD = 10000 # Если в момент выдачи награды игрок находится вне этого радиуса, то награда не выдаётся.

print "Event IIeklo:................................Initialized"

class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def init_LoadGlobalData(self) :
self.startQuestTimer("open", AFTER_RESTART *60000, None, None)
return

def onTalk (Self,npc,player):
global closed
st = player.getQuestState(qn)
global ATTAKERS
npcId = npc.getNpcId()
if npcId == REGISTER:
if closed<>1 and int(Date().getHours()) not in TIM :
if not player.isInOlympiadMode() :
if player.getLevel() >= LEVEL:
if player.getName() not in ATTAKERS :
kolych = len(ATTAKERS)
if kolych <= YCH_MAX :
if PENI_KOL<>0:
if st.getQuestItemsCount(PENI)>PENI_KOL:
st.takeItems(PENI,PENI_KOL)
ATTAKERS.append(player.getName())
return "reg.htm"
else:
st.exitQuest(1)
return "nopeni.htm"
else:
ATTAKERS.append(player.getName())
return "reg.htm"
else:
return "max.htm"
else:
return "yje.htm"
else:
return "lvl.htm"
else:
return "You register in olympiad games now"
else:
return "noreg.htm"
return

def onAdvEvent (self,event,npc,player):
global tek,nyj,ATTAKERS,kolych,annom,closed
if event == "open" :
ATTAKERS=[]
closed=0
annom=1
spawncoord=locr[Rnd.get(len(locr))]
npc=self.addSpawn(REGISTER,spawncoord[0],spawncoord[1],spawncoord[2],30000,False,0)
npc.startAbnormalEffect(8192)
self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + u" minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")
annom=annom+1
if event == "close":
tek=0
nyj=1
self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
kolych = len(ATTAKERS)
if kolych < YCH_MIN :
npc.deleteMe()
closed=1
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u043e\u0442\u043c\u0435\u043d\u0451\u043d \u0438\u0437-\u0437\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432!!!")
else:
closed=1
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u043d\u0430\u0447\u0430\u043b\u0441\u044f!!!")
npc.deleteMe()
self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,CANCEL_TIME*60000)
self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
try :
if i.isOnline() :
i.stopAllEffects()
i.teleToLocation(locfp[0],locfp[1],locfp[2])
except : pass
if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)<>0:
Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + u" \u043c\u0438\u043d\u0443\u0442(\u044b) \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u0432\u0435\u043d\u0442\u0430 "+str(NAME)+u" \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0433\u043e\u0440\u043e\u0434\u0435 "+str(LOC)+".")
annom=annom+1
self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
if event == "return" :
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u0418\u0433\u0440\u043e\u043a\u0438 \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438!!!")
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
try :
if i.isOnline() :
i.teleToLocation(83456,148208,-3406)
except : pass
if event == "return_l" :
Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041c\u043e\u043d\u0441\u0442\u0440\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438!!!")
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
try :
if i.isOnline() :
i.teleToLocation(83456,148208,-3406)
except : pass
if event == "exit" :
ATTAKERS.remove(player.getName())
return "exit.htm"
return

def onAttack (self,npc,player,damage,isPet):
if player.getName() not in ATTAKERS :
try:
player.teleToLocation(147725,-56517,9999)
except : pass
return

def onKill(self,npc,player,isPet):
global tek,nyj,kolych
mobcount=(MOBS_TO_CHEL * kolych)+15
tek=tek+1
if tek==nyj and (2*nyj) < mobcount:
for i in range(0,2*tek) :
randx = 25*(20-Rnd.get(40))
randy = 25*(20-Rnd.get(40))
self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
nyj=2*tek
tek=0
self.cancelQuestTimer("return_l",None,None)
self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)
npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+": ",u"\u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c "+str(CANCEL_TIME)+u" \u043c\u0438\u043d\u0443\u0442 \u0447\u0442\u043e\u0431\u044b \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u0432!!!"))
npcppc.deleteMe()
elif tek==nyj and (2*nyj) >= mobcount:
for i in range(0,mobcount) :
randx = 25*(20-Rnd.get(40))
randy = 25*(20-Rnd.get(40))
mobb=self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)
mobb.startAbnormalEffect(8192)
nyj=mobcount+1
tek=0
self.cancelQuestTimer("return_l",None,None)
self.startQuestTimer("return_l", (CANCEL_TIME)*60000, None, None)
npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)
npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+": ",u"\u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c "+str(CANCEL_TIME)+u" \u043c\u0438\u043d\u0443\u0442 \u0447\u0442\u043e\u0431\u044b \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u0432!!!"))
npcppc.deleteMe()
elif tek==mobcount:
for nm in ATTAKERS :
player=L2World.getInstance().getPlayer(nm)
if player<>None:
if abs(abs(player.getX())-abs(locf[0]))>RAD or abs(abs(player.getY())-abs(locf[1]))>RAD :
ATTAKERS.remove(nm)
else:
ATTAKERS.remove(nm)
for nm in ATTAKERS :
i=L2World.getInstance().getPlayer(nm)
try:
for id, countmin, countmax, chance in REWARD :
if Rnd.get(100)<=chance :
count=Rnd.get(countmin,countmax)
i.getQuestState(qn).giveItems(id,count)
except : pass
self.startQuestTimer("return", 30000, None, None)
self.cancelQuestTimer("return_l",None,None)
return

QUEST = Quest(5555, qn, "Peklo")

QUEST.addKillId(int(MOB))
QUEST.addAttackId(int(MOB))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят решил проблему взял скрипт с другой сборки 

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.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

from net.sf.l2j.gameserver.model import L2World

from net.sf.l2j.gameserver.network.serverpackets import CreatureSay

from java.util import Date

from time import gmtime, strftime

 

qn = "5555_Peklo"

# =======================================

# НЕ ТРОГАЕМ

# =======================================

annom=1

ATTAKERS = []

tek = 0

nyj = 1

closed = 1

# =======================================

# КОНФИГ

# =======================================

 

NAME = u"IIeklo" # Название (только английские символы)

LOC = u"Town of Giran" # Место, где вы поставили регистрирующего НПЦ.

REGISTER = 55557 # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.

locr = [[82840,149361,-3469]] # Соответственно координаты, где будет появляться НПЦ. Сколько угодно различных точек

PENI = 1164 # Итем, необходимый для участия

PENI_KOL = 1 # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0

LEVEL = 61 # Минимальный уровень, на котором игрок сможет принять участие в ивенте.

AFTER_RESTART = 1 # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.

TIME_FOR_WAIT = 420 # Время между ивентами в минутах

TIME_FOR_REG = 3 # Время на регистрацию в минутах

ANNOUNCE_INTERVAL = 1 # Как часто аннонсить о регистрации на ивент в минутах.

MOB = 20158 # Моб, которого надо убивать. С него ничего не должно дропаться. Желательно не менять, т.к. есть защита от незарегистрированных игроков.

locf = [-88957,136220,-3085] # Соответственно координаты, где будет появляться 1 моб

locfp = [-88957,136220,-3085] # Соответственно координаты, куда телепортируются игроки. Здесь же и ресаются.

RADIUS = 10 # Радиус появления мобов относительно 1 моба

MOB_R = 20158 # Моб, при помощи которого выдаётся награда. Здесь должен быть прописан дроп.

YCH_MIN = 1 # Минимальное количество участников

YCH_MAX = 80 # Максимальное количество участников.

MOBS_TO_CHEL = 1 # Количество мобов на человека. Максимальное количество мобов, которое придётся убить участникам за последний заход= кл-во участников * на MOBS_TO_CHEL.

CANCEL_TIME = 10 # Если в течение этого времени (минуты) мобы не атакуются - ивент считается проигранным. Пишется, что мобы выиграли и все они исчезают.

REWARD =[[4357,1,1,100]] # Список наград. Выдайтся каждому участнику. Формат записи: [[itemId1,countMIN1,countMAX1,chance1],[itemId2,countMIN2,countMAX2,chanceN],...[itemIdN,countMINN,countMAXN,chanceN]]

TIM = [] # Часы, в течение которых ивент не начнётся. Т.е если написано 20, то в период с 20:00:00 до 20:59:59 ивент не стартует.

RAD = 10000 # Если в момент выдачи награды игрок находится вне этого радиуса, то награда не выдаётся.

 

print "Event IIeklo:................................Initialized"

 

class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

 

def init_LoadGlobalData(self) :

self.startQuestTimer("open", AFTER_RESTART *60000, None, None)

return

 

def onTalk (Self,npc,player):

global closed

st = player.getQuestState(qn)

global ATTAKERS

npcId = npc.getNpcId()

if npcId == REGISTER:

if closed<>1 and int(Date().getHours()) not in TIM :

if not player.isInOlympiadMode() :

if player.getLevel() >= LEVEL:

if player.getName() not in ATTAKERS :

kolych = len(ATTAKERS)

if kolych <= YCH_MAX :

if PENI_KOL<>0:

if st.getQuestItemsCount(PENI)>PENI_KOL:

st.takeItems(PENI,PENI_KOL)

ATTAKERS.append(player.getName())

return "reg.htm"

else:

st.exitQuest(1)

return "nopeni.htm"

else:

ATTAKERS.append(player.getName())

return "reg.htm"

else:

return "max.htm"

else:

return "yje.htm"

else:

return "lvl.htm"

else:

return "You register in olympiad games now"

else:

return "noreg.htm"

return

 

def onAdvEvent (self,event,npc,player):

global tek,nyj,ATTAKERS,kolych,annom,closed

if event == "open" :

ATTAKERS=[]

closed=0

annom=1

spawncoord=locr[Rnd.get(len(locr))]

npc=self.addSpawn(REGISTER,spawncoord[0],spawncoord[1],spawncoord[2],30000,False,0)

npc.startAbnormalEffect(8192)

self.startQuestTimer("close", TIME_FOR_REG*60000, npc, None)

self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)

Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + u" minutes until event "+str(NAME)+" will start! You can register in "+str(LOC)+".")

annom=annom+1

if event == "close":

tek=0

nyj=1

self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)

kolych = len(ATTAKERS)

if kolych < YCH_MIN :

npc.deleteMe()

closed=1

Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u043e\u0442\u043c\u0435\u043d\u0451\u043d \u0438\u0437-\u0437\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432!!!")

else:

closed=1

Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u043d\u0430\u0447\u0430\u043b\u0441\u044f!!!")

npc.deleteMe()

self.addSpawn(MOB,locf[0],locf[1],locf[2],30000,False,CANCEL_TIME*60000)

self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)

for nm in ATTAKERS :

i=L2World.getInstance().getPlayer(nm)

try :

if i.isOnline() :

i.stopAllEffects()

i.teleToLocation(locfp[0],locfp[1],locfp[2])

except : pass

if event == "announce" and closed==0 and (TIME_FOR_REG - ANNOUNCE_INTERVAL * annom)<>0:

Announcements.getInstance().announceToAll(str(TIME_FOR_REG - ANNOUNCE_INTERVAL * annom ) + u" \u043c\u0438\u043d\u0443\u0442(\u044b) \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u0432\u0435\u043d\u0442\u0430 "+str(NAME)+u" \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0433\u043e\u0440\u043e\u0434\u0435 "+str(LOC)+".")

annom=annom+1

self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)

if event == "return" :

Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u0418\u0433\u0440\u043e\u043a\u0438 \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438!!!")

for nm in ATTAKERS :

i=L2World.getInstance().getPlayer(nm)

try :

if i.isOnline() :

i.teleToLocation(83456,148208,-3406)

except : pass

if event == "return_l" :

Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041c\u043e\u043d\u0441\u0442\u0440\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438!!!")

for nm in ATTAKERS :

i=L2World.getInstance().getPlayer(nm)

try :

if i.isOnline() :

i.teleToLocation(83456,148208,-3406)

except : pass

if event == "exit" :

ATTAKERS.remove(player.getName())

return "exit.htm"

return

 

def onAttack (self,npc,player,damage,isPet):

if player.getName() not in ATTAKERS :

try:

player.teleToLocation(147725,-56517,9999)

except : pass

return

 

def onKill(self,npc,player,isPet):

global tek,nyj,kolych

mobcount=(MOBS_TO_CHEL * kolych)+15

tek=tek+1

if tek==nyj and (2*nyj) < mobcount:

for i in range(0,2*tek) :

randx = 25*(20-Rnd.get(40))

randy = 25*(20-Rnd.get(40))

self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)

nyj=2*tek

tek=0

self.cancelQuestTimer("return_l",None,None)

self.startQuestTimer("return_l", CANCEL_TIME*60000, None, None)

npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)

npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+": ",u"\u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c "+str(CANCEL_TIME)+u" \u043c\u0438\u043d\u0443\u0442 \u0447\u0442\u043e\u0431\u044b \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u0432!!!"))

npcppc.deleteMe()

elif tek==nyj and (2*nyj) >= mobcount:

for i in range(0,mobcount) :

randx = 25*(20-Rnd.get(40))

randy = 25*(20-Rnd.get(40))

mobb=self.addSpawn(MOB,locf[0] + randx, locf[1] + randy, locf[2]+100,30000,False,CANCEL_TIME*60000)

mobb.startAbnormalEffect(8192)

nyj=mobcount+1

tek=0

self.cancelQuestTimer("return_l",None,None)

self.startQuestTimer("return_l", (CANCEL_TIME)*60000, None, None)

npcppc=self.addSpawn(MOB,locf[0],locf[1],locf[2]+100,30000,False,CANCEL_TIME*60000)

npcppc.broadcastPacket(CreatureSay(npcppc.getObjectId(), 1, u"\u042d\u0432\u0435\u043d\u0442 "+str(NAME)+": ",u"\u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c "+str(CANCEL_TIME)+u" \u043c\u0438\u043d\u0443\u0442 \u0447\u0442\u043e\u0431\u044b \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u0432!!!"))

npcppc.deleteMe()

elif tek==mobcount:

for nm in ATTAKERS :

player=L2World.getInstance().getPlayer(nm)

if player<>None:

if abs(abs(player.getX())-abs(locf[0]))>RAD or abs(abs(player.getY())-abs(locf[1]))>RAD :

ATTAKERS.remove(nm)

else:

ATTAKERS.remove(nm)

for nm in ATTAKERS :

i=L2World.getInstance().getPlayer(nm)

try:

for id, countmin, countmax, chance in REWARD :

if Rnd.get(100)<=chance :

count=Rnd.get(countmin,countmax)

i.getQuestState(qn).giveItems(id,count)

except : pass

self.startQuestTimer("return", 30000, None, None)

self.cancelQuestTimer("return_l",None,None)

return

 

QUEST = Quest(5555, qn, "Peklo")

 

QUEST.addKillId(int(MOB))

QUEST.addAttackId(int(MOB))

QUEST.addStartNpc(int(REGISTER))

QUEST.addTalkId(int(REGISTER))

 

Робочий евент Пекло на пв?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Робочий евент Пекло на пв?

да есле что пиши в скайп помогу gekasav1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скачай новый и поставь , их много , в этом ты много лазил и сбил , проще скачать, чем восстановить .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...