Skip to content
La2Base
Home
DownloadsWikiForumFAQ
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/Ошибка\Квест не читает.
Search

Ошибка\Квест не читает.

7 replies109 viewsCurrently viewing: 1
M
ml9xa:)

User

Новичок

Posts: 23

На форуме с: 10/01/2009

Рейтинг: 0

· 10/02/2009, 05:16 PM

Сборка: IL, La2Base, Final
Краткое изложение СУТИ проблемы: error _init_ выскакивает при загрузки ГС)))
Вопрос: в чем причина и как исправить?
Мои соображения по этому поводу: Не знаю..
А вот сам init:

Раскрывающийся текст
Код
net.la2base.gameserver.model.quest import State
from net.la2base.gameserver.model.quest import QuestState
from net.la2base.gameserver.datatables import DoorTable
from net.la2base.gameserver.datatables import SkillTable
from la2base.gameserver.model.quest.jython import QuestJython as JQuest
from la2base.gameserver import Announcements
from net.la2base import L2DatabaseFactory
from net.la2base.gameserver.ai import CtrlIntention
from la2base.util import Rnd
from la2base.java.lang import System
from net.la2basegameserver.model import L2World
qn = "5556_Base"
# =======================================
#                НЕ ТРОГАЕМ
# =======================================
closed=1
res_timer=0
npc1=0
npc2=0
TEAM1 = []
TEAM2 = []
attacked = 0
annom = 1
# =======================================
#                КОНФИГ
# =======================================
NAME = "Захватим базу!" # Название (только английские символы)
LOC = "Giran" # Место, где вы поставили регистрирующего НПЦ.
REGISTER = 55558 # Регистрирующий нпц. НЕ ЗАБЫВАЕМ ДЕЛАТЬ ЕГО БЕССМЕРТНЫМ.
locr = [83632,-148368,-3473] # Соответственно координаты, где будет появляться НПЦ
PENI = 4037 # Итем, необходимый для участия
PENI_KOL = 0 # Сколько итемов необходимо для участия. Если хотите чтобы участие было бесплатным - поставте 0
LEVEL = 76 # Минимальный уровень, на котором игрок сможет принять участие в ивенте.
AFTER_RESTART = 10 # Время, которое пройдёт от запуска сервера(перезагрузки скрипта) до начала ивента.
TIME_FOR_WAIT = 1 # Время между ивентами в минутах
TIME_FOR_REG = 15 # Время на регистрацию в минутах
ANNOUNCE_INTERVAL = 1 # Как часто аннонсить о регистрации на ивент в минутах.
YCH_MIN = 1 # Минимальное количество участников в команде
YCH_MAX = 50 # Максимальное количество участников в команде
REWARD =[[1162,100,100],[1165,1,100],[1166,10,100] # Список наград. Выдаётся каждому участнику. Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...[itemIdN,countN,chanceN]]
t1 =[164624,-205088,-3521] # Место телепорта 1 команды и 1 базы
t2 =[169936,-206224,-3511] # Место телепорта 2 команды и 1 базы
BASE1 = 55561 # ИД НПЦ базы №1
BASE2 = 55562 # ИД НПЦ базы №2
com1 = "Dark power" # Название 1 команды
com2 = "Light power" # Название 2 команды
RES_TIME = 8 # Время, через которое будут ресаться дохлые игроки - секунды.


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 TEAM1,TEAM2,npc1,npc2,closed
  st = player.getQuestState(qn)
  npcId = npc.getNpcId()
  if npcId == REGISTER:
   if closed<>1:
    if not player.isInOlympiadMode() :
     if player.getLevel() >= LEVEL:
      if player.getName() not in TEAM1 + TEAM2 :
       if len(TEAM1)>len(TEAM2) :
        kolych = len(TEAM1)
       else:
        kolych = len(TEAM2)
       if kolych <= YCH_MAX :
        if PENI_KOL<>0:  
         if st.getQuestItemsCount(PENI)>PENI_KOL:
           st.takeItems(PENI,PENI_KOL)
           if len(TEAM1)>len(TEAM2):
            TEAM2.append(player.getName())
            return "reg.htm"
           else:
            TEAM1.append(player.getName())
            return "reg.htm"
         else:
           st.exitQuest(1)
           return "nopeni.htm"
        else:
           if len(TEAM1)>len(TEAM2):
            TEAM2.append(player.getName())
            return "reg.htm"
           else:
            TEAM1.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 TEAM1,TEAM2,npc1,npc2,res_timer,annom,closed
   if event == "open" :
     TEAM1=[]
     TEAM2=[]
     closed=0
     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! You can register in "+str(LOC)+".")
   if event == "close":
    res_timer = 1
    self.startQuestTimer("res", RES_TIME*1000, None, None)
    self.startQuestTimer("open", TIME_FOR_WAIT*60000, None, None)
    for nm in TEAM1:
     i=L2World.getInstance().getPlayer(nm)
     if i<>None:
      if not i.isOnline() or i.isInOlympiadMode():
       TEAM1.remove(nm)
     else:
       TEAM1.remove(nm)
    for nm in TEAM2:
     i=L2World.getInstance().getPlayer(nm)
     if i<>None:
      if not i.isOnline() or i.isInOlympiadMode():
       TEAM2.remove(nm)
     else:
       TEAM2.remove(nm)
    while abs(len(TEAM1)-len(TEAM2))>1:
     if len(TEAM1)>len(TEAM2):
      self.saveGlobalQuestVar(str(TEAM1[0].getObjectId()), "team2")
      TEAM2.append(TEAM1[0])
      TEAM1.remove(TEAM1[0])
     else:
      self.saveGlobalQuestVar(str(TEAM2[0].getObjectId()), "team1")
      TEAM1.append(TEAM2[0])
      TEAM2.remove(TEAM2[0])
    if (len(TEAM1)+len(TEAM2))< 2*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()
      npc1=self.addSpawn(BASE1,t1[0],t1[1],t1[2],30000,False,0)
      npc2=self.addSpawn(BASE2,t2[0],t2[1],t2[2],30000,False,0)
      for nm in TEAM1 :
       i=L2World.getInstance().getPlayer(nm)
       if i<>None:
        if i.isOnline() :
         i.stopAllEffects()
         i.setTeam(2)
         i.broadcastStatusUpdate()
         i.broadcastUserInfo()
         i.teleToLocation(t1[0]+100,t1[1],t1[2])
      for nm in TEAM2 :
       i=L2World.getInstance().getPlayer(nm)
       if i<>None:
        if i.isOnline() :
         i.stopAllEffects()
         i.setTeam(1)
         i.broadcastStatusUpdate()
         i.broadcastUserInfo()
         i.teleToLocation(t2[0]+100,t2[1],t2[2])        
   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)+". There are "+str(len(TEAM1))+" Dark warriors and "+str(len(TEAM2))+" Heroes of Light.")
     annom=annom+1
     self.startQuestTimer("announce", ANNOUNCE_INTERVAL*60000, None, None)
   if event == "return_1" :
     res_timer = 0
     for nm in TEAM1 :
      i=L2World.getInstance().getPlayer(nm)
      if i<>None:
       if i.isOnline() :
        i.teleToLocation(locr[0],locr[1],locr[2])
        i.setTeam(0)
        i.broadcastStatusUpdate()
        i.broadcastUserInfo()
     for nm in TEAM2 :
      i=L2World.getInstance().getPlayer(nm)
      if i<>None:
       if i.isOnline() :
        i.teleToLocation(locr[0],locr[1],locr[2])
        i.setTeam(0)
        i.broadcastStatusUpdate()
        i.broadcastUserInfo()
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. "+str(com1)+" win!")
   if event == "return_2" :
     res_timer = 0
     for nm in TEAM1 :
      i=L2World.getInstance().getPlayer(nm)
      if i<>None:
       if i.isOnline() :
        i.teleToLocation(locr[0],locr[1],locr[2])
        i.setTeam(0)
        i.broadcastStatusUpdate()
        i.broadcastUserInfo()
     for nm in TEAM2 :
      i=L2World.getInstance().getPlayer(nm)
      if i<>None:
       if i.isOnline() :
        i.teleToLocation(locr[0],locr[1],locr[2])
        i.setTeam(0)
        i.broadcastStatusUpdate()
        i.broadcastUserInfo()
     Announcements.getInstance().announceToAll("Event "+str(NAME)+" has ended. "+str(com2)+" win!")
   if event == "exit" :
     if player.getName() in TEAM1:
      TEAM1.remove(player.getName())
     else:
      TEAM2.remove(player.getName())
     return "exit.htm"
   if event == "res" and res_timer==1:
    self.startQuestTimer("res", RES_TIME*1000, None, None)
    for nm in TEAM1:
     i=L2World.getInstance().getPlayer(nm)
     if i<>None:
      if i.isOnline() :
       if i.isDead():
        i.doRevive()
        i.setCurrentCp(i.getMaxCp())
        i.setCurrentHp(i.getMaxHp())
        i.setCurrentMp(i.getMaxMp())
        i.stopAllEffects()
        i.setTeam(0)
        i.setTeam(2)
        i.broadcastStatusUpdate()
        i.broadcastUserInfo()
        i.teleToLocation(t1[0],t1[1],t1[2])
    for nm in TEAM2:
     i=L2World.getInstance().getPlayer(nm)
     if i<>None:
      if i.isOnline() :
       if i.isDead():
        i.doRevive()
        i.setCurrentCp(i.getMaxCp())
        i.setCurrentHp(i.getMaxHp())
        i.setCurrentMp(i.getMaxMp())
        i.stopAllEffects()
        i.setTeam(0)
        i.setTeam(1)
        i.broadcastStatusUpdate()
        i.broadcastUserInfo()
        i.teleToLocation(t2[0],t2[1],t2[2])
   return

def onAttack (self,npc,player,damage,isPet):
  npcId = npc.getNpcId()
  if npcId == BASE2 and player.getName() not in TEAM1 :
     player.reduceCurrentHp(99999,player)
  if npcId == BASE1 and player.getName() not in TEAM2 :
     player.reduceCurrentHp(99999,player)
  return  

def onSkillSee (self,npc,player,skill,targets,isPet) :
     if player.getTarget() == npc and skill.getId() in [1218,1015,1258,1011,1401,58,1217,329]:
      player.setTeam(0)
      player.broadcastStatusUpdate()
      player.broadcastUserInfo()      
      player.teleToLocation(locr[0],locr[1],locr[2])
      if player.getName() in TEAM1 :
       TEAM1.remove(player.getName())
      elif player.getName() in TEAM2 :
       TEAM2.remove(player.getName())
      
def onKill(self,npc,player,isPet):
  global TEAM1,TEAM2,npc1,npc2,res_timer
  npcId = npc.getNpcId()
  if npcId == BASE1:
   res_timer=0
   self.startQuestTimer("return_2", 10000, None, None)  
   npc2.deleteMe()
   for nm in TEAM2 :
    i=L2World.getInstance().getPlayer(nm)
    if i<>None:
     if i.isOnline() :
      for id, count, chance in REWARD :
       if Rnd.get(100)<=chance :
        i.getQuestState(qn).giveItems(id,count)
  if npcId == BASE2:
   res_timer=0
   self.startQuestTimer("return_1", 10000, None, None)
   npc1.deleteMe()
   for nm in TEAM1 :
    i=L2World.getInstance().getPlayer(nm)
    if i<>None:
     if i.isOnline() :
      for id, count, chance in REWARD :
       if Rnd.get(100)<=chance :
        i.getQuestState(qn).giveItems(id,count)
  return

QUEST = Quest(5556, qn, "Base")

QUEST.addKillId(int(BASE1))
QUEST.addAttackId(int(BASE1))
QUEST.addKillId(int(BASE2))
QUEST.addAttackId(int(BASE2))
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))
QUEST.addSkillSeeId(int(BASE1))
QUEST.addSkillSeeId(int(BASE2))

Это евент ужержание баз типо..помогите плиз!

0
Денис
Денис

User

Бывалый

Posts: 130

На форуме с: 11/26/2008

Репутация: +26

Рейтинг: 0

· 10/02/2009, 08:03 PM

Ищи монуал по настройки этого эвента!

0
M
ml9xa:)

User

Новичок

Posts: 23

На форуме с: 10/01/2009

Рейтинг: 0

· 10/03/2009, 12:07 PM

GILZA92: Ищи монуал по настройки этого эвента!

Нашел.....
Моей ошибки там нету для разбора..
Вот моя ошибка:
Код
SyntaxError: ('invalid syntax', ('__init__.py', 1, 36, 'net.la2base.gameserver.model.quest import State'))

0
Александр
Александр

User

Ветеран

Posts: 1306

На форуме с: 05/25/2009

Репутация: +296

Рейтинг: 0

· 10/04/2009, 12:43 AM

Код
import sys
from net.sf.l2j import L2DatabaseFactory
from net.sf.l2j.gameserver import Announcements
from net.sf.l2j.gameserver.ai import CtrlIntention
from net.sf.l2j.gameserver.datatables import DoorTable
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j.gameserver.model import L2World
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.util import Rnd

You can't feeling! No you can't feeling! And you can't feeling!

— People = Shit

0
Андрей
Андрей

User

Бывалый

Posts: 314

На форуме с: 05/05/2007

Репутация: +55

Рейтинг: 0

· 10/04/2009, 01:27 AM

ml9xa:): Нашел.....
Моей ошибки там нету для разбора..
Вот моя ошибка:
Код
SyntaxError: ('invalid syntax', ('__init__.py', 1, 36, 'net.la2base.gameserver.model.quest import State'))

Допиши в начале from net.la2base.gameserver.model.quest import State

Ктулху зохавывает всех (;,;)
Lineage 2: C4 - online / C5,IT,Kamael - offline>

0
Александр
Александр

User

Ветеран

Posts: 1306

На форуме с: 05/25/2009

Репутация: +296

Рейтинг: 0

· 10/04/2009, 03:20 AM

Stalkerok: Допиши в начале from net.la2base.gameserver.model.quest import State

В la2base сборках вообще нет такого пути: net/la2base/gameserver.
Импорты я написал выше...

You can't feeling! No you can't feeling! And you can't feeling!

— People = Shit

0
Андрей
Андрей

User

Бывалый

Posts: 314

На форуме с: 05/05/2007

Репутация: +55

Рейтинг: 0

· 10/04/2009, 03:24 AM

MeCAiR: В la2base сборках вообще нет такого пути: net/la2base/gameserver.
Импорты я написал выше...

La2Base сборки не юзал, написал конкретно в чем ошибка, а импорты это да нужно править под каждый сервер по своему....

Ктулху зохавывает всех (;,;)
Lineage 2: C4 - online / C5,IT,Kamael - offline>

0
Войдите или зарегистрируйтесь чтобы ответить