Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Квесты/Простой эвент на Jython проблема с диалого НПС
Поиск

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

8 ответов229 просмотровСейчас просматривают: 1
TosikZOL
TosikZOL

Пользователь

Участник

Постов: 82

На форуме с: 11.04.2009

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

Рейтинг: 0

· 18.10.2009, 17:29

Сборка: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

Пользователь

Участник

Постов: 82

На форуме с: 11.04.2009

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

Рейтинг: 0

· 19.10.2009, 13:34

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

Код
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

Пользователь

Бывалый

Постов: 146

На форуме с: 07.06.2007

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

Рейтинг: 0

· 19.10.2009, 13:42

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

0
TosikZOL
TosikZOL

Пользователь

Участник

Постов: 82

На форуме с: 11.04.2009

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

Рейтинг: 0

· 19.10.2009, 13:46

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

0
mihey888
mihey888

Пользователь

Бывалый

Постов: 358

На форуме с: 27.06.2007

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

Рейтинг: 0

· 20.10.2009, 02:34

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

Код
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

Пользователь

Бывалый

Постов: 103

На форуме с: 17.04.2009

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

Рейтинг: 0

· 20.10.2009, 11:51

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

0
TosikZOL
TosikZOL

Пользователь

Участник

Постов: 82

На форуме с: 11.04.2009

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

Рейтинг: 0

· 20.10.2009, 14:48

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

Пользователь

Участник

Постов: 82

На форуме с: 11.04.2009

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

Рейтинг: 0

· 20.10.2009, 19:08

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

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

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