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/Квесты/Простой эвент на Jython проблема с диалого НПС
Search

Простой эвент на Jython проблема с диалого НПС

8 replies232 viewsCurrently viewing: 1
TosikZOL
TosikZOL

User

Участник

Posts: 82

На форуме с: 04/11/2009

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

Рейтинг: 0

· 10/18/2009, 05:29 PM

Сборка:L2Emu RT 508,Бесплатная,Part 2
Краткое изложение СУТИ проблемы:

Раскрывающийся текст
Код
import math
import sys
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.actor.instance     import L2PcInstance
from net.l2emuproject.gameserver.model.actor.instance     import L2NpcInstance
from net.l2emuproject.gameserver              import Announcements  
from java.lang                      import System
from net.l2emuproject.gameserver.model.actor.appearance   import PcAppearance
from net.l2emuproject.gameserver              import GameTimeController
from net.l2emuproject.tools.random import Rnd

qn = "2009_Test"
EventStart = 1
ANNOUNCE_INTERVAL = 1
STARTNPC =[83326,148613,-3408]
REGISTER = 1000
LEVEL = 85
YCH_MAX = 5


class Quest (JQuest):
    
    def __init__(self,id,name,descr):
        JQuest.__init__(self,id,name,descr)
        self.startQuestTimer("StartEvent", EventStart *1000, None, None)
        self.EventNames = "TEST"
    def onAdvEvent (self,event,npc,player):
        global ATTAKERS
        if event == "StartEvent":
            self.cancelQuestTimer("StartEvent", None, None)
            self.startQuestTimer("Announce", ANNOUNCE_INTERVAL*2000, None, None)
            Announcestart = "The " + self.EventNames + " event is about to start!!!"
            Announcements.getInstance().announceToAll(Announcestart)
            npc = self.addSpawn(REGISTER,STARTNPC[0],STARTNPC[1],STARTNPC[2],0,False,0)
            ATTAKERS=[]
        if event == "Announce":
            self.cancelQuestTimer("announce", None, None)
            Announce = "The " + self.EventNames + " OPEN REGISTRED TEST ONNOUNCE"
            Announcements.getInstance().announceToAll(Announce)
        if event == "exit" :
            ATTAKERS.remove(player.getName())
            return "exit.htm"
    def onTalk (Self,npc,player):
        st = player.getQuestState(qn)
        global ATTAKERS
        npcId = npc.getNpcId()
        if npcId == REGISTER:
            if not player.isInOlympiadMode():
                if player.getLevel() >= LEVEL:
                    if player.getName() not in ATTAKERS:
                        kolych = len(ATTAKERS)
                        if kolych <= YCH_MAX:
                            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"
        return
QUEST = Quest(2009, "qn", "events")
QUEST.addStartNpc(int(REGISTER))
QUEST.addTalkId(int(REGISTER))


Вот код эвента в каторый у меня не получается диалог с НПС
Код
def onTalk (Self,npc,player):
        st = player.getQuestState(qn)
        global ATTAKERS
        npcId = npc.getNpcId()
        if npcId == REGISTER:
            if not player.isInOlympiadMode():
                if player.getLevel() >= LEVEL:
                    if player.getName() not in ATTAKERS:
                        kolych = len(ATTAKERS)
                        if kolych <= YCH_MAX:
                            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"
        return

Например
if player.getLevel() >= LEVEL:
если лвл игрока меньше 85 то должен паказать диалог lvl.htm. но нечего не выходит а пишет вы не сответствуете минемальным требывание для этого НПС

вот 1000.html
Код
<html>
<title>Event </title>
<center>
<body><br><br><br>
<button action="bypass -h npc_%objectId%_Quest 2009_Test" value="Go to Event LastHero" width=250 height=50 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body>
</center>
</html>

Походу ошибка в коде всё что в onTalk не пашет.не магу понять почему помогите разобратся!сравнимаю с другими эвенатми там также напмер пекло
Раскрывающийся текст
Код
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

Вопрос: в чем причина и как исправить?
Мои соображения по этому поводу: Ошибка в коде но где russian_roulette.gif

0
TosikZOL
TosikZOL

User

Участник

Posts: 82

На форуме с: 04/11/2009

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

Рейтинг: 0

· 10/19/2009, 01:34 PM

АП! Помогите разобратся! ну не пашет диалог и всё

Код
def onTalk (Self,npc,player):
        st = player.getQuestState(qn)
        global ATTAKERS
        npcId = npc.getNpcId()
        if npcId == REGISTER:
            if not player.isInOlympiadMode():
                if player.getLevel() >= LEVEL:
                    if player.getName() not in ATTAKERS:
                        kolych = len(ATTAKERS)
                        if kolych <= YCH_MAX:
                            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"
        return

0
DioNiR90
DioNiR90

User

Бывалый

Posts: 146

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

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

Рейтинг: 0

· 10/19/2009, 01:42 PM

А какую ошибку пишет сервер?

0
TosikZOL
TosikZOL

User

Участник

Posts: 82

На форуме с: 04/11/2009

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

Рейтинг: 0

· 10/19/2009, 01:46 PM

ДА не какой не пишет квест прогрузился нормально нпс соспаунился апнонсы прааносил а вот диалог регистрация не паказывает точьней не паказывает то если лвл меньше или что зареген уже

0
mihey888
mihey888

User

Бывалый

Posts: 358

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

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

Рейтинг: 0

· 10/20/2009, 02:34 AM

Я конечно не спец в питоне, но допустим в моих эвентах сначало идет:

Код
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): <<<<<<<<<<<<<<<<<<<Cначало
бла бла бла

def onAdvEvent (self,event,npc,player):<<<<<<<<<<<<<<<<<<Потом


Условие:
LEVEL = 85
Дальше проверка:
if player.getLevel() >= LEVEL: << (Если уровень большо либо равен 85, то)Интересно, а больше может быть?
Может попробовать поставить 80?

0
Baium
Baium

User

Бывалый

Posts: 103

На форуме с: 04/17/2009

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

Рейтинг: 0

· 10/20/2009, 11:51 AM

Возможно вы допустили ошибку в отступах.
p.s.От перемены мест onTalk onAdvEvent результат не изменится.

0
TosikZOL
TosikZOL

User

Участник

Posts: 82

На форуме с: 04/11/2009

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

Рейтинг: 0

· 10/20/2009, 02:48 PM

Mihey™: Я конечно не спец в питоне, но допустим в моих эвентах сначало идет:

Код
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): <<<<<<<<<<<<<<<<<<<Cначало
бла бла бла

def onAdvEvent (self,event,npc,player):<<<<<<<<<<<<<<<<<<Потом


Условие:
LEVEL = 85
Дальше проверка:
if player.getLevel() >= LEVEL: << (Если уровень большо либо равен 85, то)Интересно, а больше может быть?
Может попробовать поставить 80?

Без разницы что ставлю 80 или 85 а болше или равно там всё грамтно (Немножко нужно подумать) если дапустим стоит 80 лвл я подбигаю 85 то мне нельзя а так как я подбигаю

Baium: Возможно вы допустили ошибку в отступах.
p.s.От перемены мест onTalk onAdvEvent результат не изменится.

С отступами всё норм там ТАбы я его редачю нотепадом++

0
TosikZOL
TosikZOL

User

Участник

Posts: 82

На форуме с: 04/11/2009

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

Рейтинг: 0

· 10/20/2009, 07:08 PM

ТЕму ОФФ я решил Проблему он рашалась путем удаления двух лишних ковыЧЕГГГ

QUEST = Quest(2009, "qn", "events")

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