Сообщений: 142
Тем: 11
Зарегистрирован: Oct 2012
Репутация:
186
Товарищи подскажите, накидал простенькой скрипт ради теста, вроде работает, но в ГС выдаёт ошибки
сборка люцера 1
PHP код: <?php
import sys
from ru.catssoftware.gameserver import Announcements
from ru.catssoftware.gameserver.model.quest import State
from ru.catssoftware.gameserver.model.quest import QuestState
from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest
qn = "1230_useAnn"
NPC = 40010
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc,player):
st = player.getQuestState(qn)
if event == "annuse":
Announcements.getInstance().announceToAll("О боже, оно работает")
st.setState(State.COMPLETED)
else:
htmltext = "<html><body><br><center>Что то не работает..</center></body></html>"
return htmltext
def onTalk (self,npc,player) :
st = player.getQuestState(qn)
npcId = npc.getNpcId()
htmltext = "<html><head><body>Ошибка npc</body></html>"
if not st : return htmltext
if npcId == NPC:
htmltext = "<html><head><body><a action=\"bypass -h Quest 1230_useAnn annuse\">Юзануть аннонс</a></body></html>"
return htmltext
QUEST = Quest(1230,qn,"custom")
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)
Сообщений: 273
Тем: 4
Зарегистрирован: May 2010
Репутация:
2,953
Если, он ошибки выдает, как он может работать!?)
Этож питон, он так не умеет =)))
Сообщений: 142
Тем: 11
Зарегистрирован: Oct 2012
Репутация:
186
Anikey Написал:Если, он ошибки выдает, как он может работать!?)
Этож питон, он так не умеет =)))
Я понятия не имею = ), скрипт работает отлично в игре, в игре нажимаю и анонс пишется, но при нажатии чтобы крикнуть анонс в ГС высвечивается ошибки, чуть позже скину лог ошибки
Сообщений: 66
Тем: 1
Зарегистрирован: Dec 2011
Репутация:
240
Какую именно ошибку выдает?
Сообщений: 142
Тем: 11
Зарегистрирован: Oct 2012
Репутация:
186
Вот ошибка
1
[WARN 16:07:47]: D:\serverl2\game\data\scripts\testQuest2\__init__.py
Traceback (innermost last):
File "__init__.py", line 26, in onAdvEvent
UnboundLocalError: local: 'htmltext'
at org.python.core.Py.UnboundLocalError(Unknown Source)
at org.python.core.PyFrame.getlocal(Unknown Source)
at org.python.core.PyFrame.getlocal(Unknown Source)
at org.python.pycode.serializable._pyx1357989462843.onAdvEvent$3(__init_
_.py:26)
at org.python.pycode.serializable._pyx1357989462843.call_function(__init
__.py)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at org.python.proxies.main$Quest$324.onAdvEvent(Unknown Source)
at ru.catssoftware.gameserver.model.quest.Quest.notifyEvent(Quest.java:4
74)
at ru.catssoftware.gameserver.model.actor.instance.L2PcInstance.processQ
uestEvent(L2PcInstance.java:1460)
at ru.catssoftware.gameserver.network.clientpackets.RequestBypassToServe
r.runImpl(RequestBypassToServer.java:219)
at ru.catssoftware.gameserver.network.clientpackets.L2GameClientPacket.r
un(L2GameClientPacket.java:67)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
В игре всё нормально работает, всё выполняется , но мне чисто в учебных целях интересно что не правильно.
Сообщений: 66
Тем: 1
Зарегистрирован: Dec 2011
Репутация:
240
Попробуйте вот так:
Код: import sys
from ru.catssoftware.gameserver import Announcements
from ru.catssoftware.gameserver.model.quest import State
from ru.catssoftware.gameserver.model.quest import QuestState
from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest
qn = "1230_useAnn"
NPC = 40010
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onAdvEvent (self,event,npc,player):
st = player.getQuestState(qn)
[size=4][color=Red]htmltext = "<html><body>Сработало!</body></html>"[/color][/size]
if event == "annuse":
Announcements.getInstance().announceToAll("О боже, оно работает")
st.setState(State.COMPLETED)
else:
htmltext = "<html><body><br><center>Что то не работает..</center></body></html>"
return htmltext
def onTalk (self,npc,player) :
st = player.getQuestState(qn)
npcId = npc.getNpcId()
htmltext = "<html><head><body>Ошибка npc</body></html>"
if not st : return htmltext
if npcId == NPC:
htmltext = "<html><head><body><a action=\"bypass -h Quest 1230_useAnn annuse\">Юзануть аннонс</a></body></html>"
return htmltext
QUEST = Quest(1230,qn,"custom")
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)
Сообщений: 438
Тем: 12
Зарегистрирован: Aug 2010
Репутация:
2,935
DakChe Написал:Вот ошибка
1
[WARN 16:07:47]: D:\serverl2\game\data\scripts\testQuest2\__init__.py
Traceback (innermost last):
File "__init__.py", line 26, in onAdvEvent
UnboundLocalError: local: 'htmltext'
at org.python.core.Py.UnboundLocalError(Unknown Source)
at org.python.core.PyFrame.getlocal(Unknown Source)
at org.python.core.PyFrame.getlocal(Unknown Source)
at org.python.pycode.serializable._pyx1357989462843.onAdvEvent$3(__init_
_.py:26)
at org.python.pycode.serializable._pyx1357989462843.call_function(__init
__.py)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at org.python.proxies.main$Quest$324.onAdvEvent(Unknown Source)
at ru.catssoftware.gameserver.model.quest.Quest.notifyEvent(Quest.java:4
74)
at ru.catssoftware.gameserver.model.actor.instance.L2PcInstance.processQ
uestEvent(L2PcInstance.java:1460)
at ru.catssoftware.gameserver.network.clientpackets.RequestBypassToServe
r.runImpl(RequestBypassToServer.java:219)
at ru.catssoftware.gameserver.network.clientpackets.L2GameClientPacket.r
un(L2GameClientPacket.java:67)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
В игре всё нормально работает, всё выполняется , но мне чисто в учебных целях интересно что не правильно.
Метод пытается вернуть переменную htmltext, которая не объявлена.
Сообщений: 142
Тем: 11
Зарегистрирован: Oct 2012
Репутация:
186
Всем спасибо, всё верно подсказали, всё работает
|