Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
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]/[error]Эвент Захват Баз
Search

[error]Эвент Захват Баз

8 replies158 viewsCurrently viewing: 1
D
DarkMemphis

User

Участник

Posts: 75

На форуме с: 07/03/2009

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

Рейтинг: 0

· 08/08/2009, 10:46 AM

Сборка: CT.2.2, l2Emu-rt, rev.477
Краткое изложение СУТИ проблемы: ГС пишет ошибку при загрузке квеста
Вопрос: в чем причина и как исправить?
Мои соображения по этому поводу: никаких....
скрин ошибки

текст ___init___.py

Раскрывающийся текст
Код
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.datatables import        SkillTable
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

qn = "5556_Base"
# =======================================
#  Этот стоблик остаётся без изменений
# =======================================
closed=1
res_timer=0
npc1=0
npc2=0
TEAM1 = []
TEAM2 = []
attacked = 0
annom = 1
# =======================================
#       Все настройки в этой таблице
# =======================================
NAME = "Baza" # Название Эвента (только английские символы)

LOC = "Goddard" # Город, в котором вы хотите поставить регистрирующего НПЦ.

REGISTER = 1000 # ID-номер регистрирующего нпц

locr = [147712,-55520,-2733] # Координаты, где будет появляться регистрирующий НПЦ

PENI = 57 # Вещь, необходимый для участия в Эвете.

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

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

AFTER_RESTART = 10 # Через какое время эвент запустится после рестарта сервера.(указывать в минутах)

TIME_FOR_WAIT = 30 # Время между Эвентами.(указывать в минутах)

TIME_FOR_REG = 10 # Время на регистрацию.(указывать в минутах)

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

YCH_MIN = 1 # Минимальное количество игроков в команде.

YCH_MAX = 10 # Максимальное количество игроков в команде.

REWARD =[[6696,10,100],[4037,1,100]] # Список наград при победе в эвенте. Выдаётся каждому игроку. Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...[itemIdN,countN,chanceN]]

t1 =[175732,-87983,-5107] # Координаты точки куда будут телепортироваться первая команда и их база.

t2 =[172713,-87983,-5107] # Координаты точки куда будут телепортироваться вторая команда и их база.

BASE1 = 1001 # ID-номер базы первой команды

BASE2 = 1002 # ID-номер базы Второй команды.

com1 = "Dark power" # Название первой команды.

com2 = "Light power" # Название второй команды.

RES_TIME = 5 # Время, через которое будут ресаться убитый игрок.(указывать в секундах)


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: 78

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

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

Рейтинг: 0

· 08/08/2009, 10:50 AM

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.datatables import SkillTable
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

Импорт нужно переделать под еиу,за пример возьми свои квесты.

0
D
DarkMemphis

User

Участник

Posts: 75

На форуме с: 07/03/2009

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

Рейтинг: 0

· 08/08/2009, 10:55 AM

менял на это эфект тотже самый....

Раскрывающийся текст
Код
import sys
from net.l2emuproject.gameserver.model.quest import State
from net.l2emuproject.gameserver.model.quest import QuestState
from net.l2emuproject.gameserver.datatables import DoorTable
from net.l2emuproject.gameserver.datatables import        SkillTable
from net.l2emuproject.gameserver.model.quest.jython import QuestJython as JQuest
from net.l2emuproject.gameserver import Announcements
from net.l2emuproject import L2DatabaseFactory
from net.l2emuproject.gameserver.ai import CtrlIntention
from net.l2emuproject.util import Rnd
from java.lang import System
from net.l2emuproject.gameserver.model import L2World

по примеру бафера
Раскрывающийся текст
Код
import sys
from net.l2emuproject.gameserver.model.actor.instance import L2PcInstance
from net.l2emuproject.gameserver.model.actor.instance import L2NpcInstance
from net.l2emuproject.gameserver.model.actor.instance import L2PetInstance
from java.util import Iterator
from net.l2emuproject.gameserver.datatables import SkillTable
from net.l2emuproject import L2DatabaseFactory
from net.l2emuproject.gameserver.model.quest import State
from net.l2emuproject.gameserver.model.quest import QuestState
from net.l2emuproject.gameserver.model.quest.jython import QuestJython as JQuest

from net.l2emuproject.gameserver.model import L2Skill
может еще что то нада подравить?? подскажите

0
Ден
Ден

User

Участник

Posts: 78

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

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

Рейтинг: 0

· 08/08/2009, 01:07 PM

Лучше тебе немучатся он очень кривой.Даже если ты его зделаеш,то потом в ближайшем времени удалиш.Персы нересаются,не портаются и много-много багов.

0
extrime
extrime

User

Участник

Posts: 85

На форуме с: 01/03/2008

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

Рейтинг: 0

· 08/08/2009, 01:25 PM

а что в ___init___.py.error.log написано?

0
D
DarkMemphis

User

Участник

Posts: 75

На форуме с: 07/03/2009

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

Рейтинг: 0

· 08/09/2009, 11:16 AM

Цитата(extrimexxx)
а что в ___init___.py.error.log написано?

Код
Error on: F:\SERVER\l2emurt-game\dist\data\scripts\quests\5556_Base\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  (no code object) at line 0
ValueError: Strings added to sha hashes must not contain characters with value > 255


Цитата(FirstLordDen)
Лучше тебе немучатся он очень кривой.Даже если ты его зделаеш,то потом в ближайшем времени удалиш.Персы нересаются,не портаются и много-много багов.

может тогда посоветуете эвент под мою сборку для пвп сервера?

0
Kirill
Kirill

User

Бывалый

Posts: 102

На форуме с: 06/29/2008

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

Рейтинг: 0

· 08/09/2009, 11:45 AM

TvT, Ctf если встроены у тебя их в таком случае)))

0
D
DarkMemphis

User

Участник

Posts: 75

На форуме с: 07/03/2009

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

Рейтинг: 0

· 08/09/2009, 01:12 PM

как CTF настроить? вроде бы в сборке есть, пишу //ctf открывает панель, но там все 0, npc none, item id 0.....и естественно его запуск ничего недает...

0
Topic is closed for replies