Простой эвент на Jython проблема с диалого НПС
8 replies211 viewsCurrently viewing: 1
· 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))
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
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>
<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
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
Вопрос: в чем причина и как исправить?
Мои соображения по этому поводу: Ошибка в коде но где
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
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
· 10/19/2009, 01:46 PM
ДА не какой не пишет квест прогрузился нормально нпс соспаунился апнонсы прааносил а вот диалог регистрация не паказывает точьней не паказывает то если лвл меньше или что зареген уже
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):<<<<<<<<<<<<<<<<<<Потом
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
· 10/20/2009, 11:51 AM
Возможно вы допустили ошибку в отступах.
p.s.От перемены мест onTalk onAdvEvent результат не изменится.
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
Войдите или зарегистрируйтесь чтобы ответить




