Сообщений: 41
Тем: 8
Зарегистрирован: Aug 2010
Репутация:
0
Ну это я так понимаю проверка скилов. Но мы же поняли что дело не в этом,а в том что не пишится в базу скил.
DreamTheater так что разобрался с файлом что я дал?
Сообщений: 62
Тем: 5
Зарегистрирован: Aug 2010
Репутация:
1,369
Сообщений: 41
Тем: 8
Зарегистрирован: Aug 2010
Репутация:
0
Извини не заметил. Проверил,вот что за ошибку выдаёт серв:
Код: C:\server\gameserver\data\scripts\quests\5809_Usweer_NPC_add_skill\__init__.py
Traceback (innermost last):
File "__init__.py", line 46, in onTalk
TypeError: addSkill(): expected 1-2 args; got 0
at org.python.core.Py.TypeError(Unknown Source)
at org.python.core.PyReflectedFunction.throwError(Unknown Source)
at org.python.core.PyReflectedFunction.throwArgCountError(Unknown Source
)
at org.python.core.PyReflectedFunction.throwError(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyInstance.invoke(Unknown Source)
at org.python.pycode.serializable._pyx1283883634062.onTalk$3(__init__.py
:46)
at org.python.pycode.serializable._pyx1283883634062.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$410.onTalk(Unknown Source)
at com.l2jserver.gameserver.model.quest.Quest.notifyTalk(Quest.java:447)
at handlers.bypasshandlers.QuestLink.showQuestWindow(QuestLink.java:172)
at handlers.bypasshandlers.QuestLink.useBypass(QuestLink.java:59)
at com.l2jserver.gameserver.model.actor.L2Npc.onBypassFeedback(L2Npc.jav
a:978)
at com.l2jserver.gameserver.network.clientpackets.RequestBypassToServer.
runImpl(RequestBypassToServer.java:139)
at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run
(L2GameClientPacket.java:93)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Сообщений: 62
Тем: 5
Зарегистрирован: Aug 2010
Репутация:
1,369
Ой, сори, пропустил аргумент. Вот так правильно:
Код: import sys
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
qn = "5809_Usweer_NPC_add_skill"
#Айтим для бафа (ID Айтима)
ID_ITEM = 6673
#Колличество айтимов для бафа
NEED_ITEM = 1
#Айди скила который будет выдан
ID_SKILL = 420
#Левел скила который будет выдан
LEVEL_SKILL = 1
#Минимальные левел который может получать баф
MIN_LVL = 1
#Максимальные левел который может получить баф
MAX_LVL = 80
NPC=[51809]
QuestId = 5809
QuestName = "Usweer_NPC_add_skill"
QuestDesc = "quest"
print "importing quest: 51809: Usweer NPC ---add skill---"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
st = player.getQuestState(qn)
if st.getPlayer().getLevel() < MIN_LVL or st.getPlayer().getLevel() > MAX_LVL :
return "badlevel.htm"
elif st.getState() == State.COMPLETED :
return "skillinyou.htm"
elif st.getQuestItemsCount(ID_ITEM) < NEED_ITEM :
return "noitem.htm"
else:
st.takeItems(ID_ITEM,NEED_ITEM)
skill = SkillTable.getInstance().getInfo(ID_SKILL,LEVEL_SKILL)
st.getPlayer().addSkill(skill)
st.getPlayer().storeSkill(skill,null,0)
st.setState(State.COMPLETED)
return "skilladd.htm"
QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
Сообщений: 41
Тем: 8
Зарегистрирован: Aug 2010
Репутация:
0
Выдаёт такую ошибку:
Код: E:\serv\gameserver\data\scripts\quests\5809_Usweer_NPC_add_skill\__init__.py
Traceback (innermost last):
File "__init__.py", line 47, in onTalk
NameError: null
at org.python.core.Py.NameError(Unknown Source)
at org.python.core.PyFrame.getglobal(Unknown Source)
at org.python.pycode.serializable._pyx1283885165343.onTalk$3(__init__.py
:47)
at org.python.pycode.serializable._pyx1283885165343.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$410.onTalk(Unknown Source)
at com.l2jserver.gameserver.model.quest.Quest.notifyTalk(Quest.java:447)
at handlers.bypasshandlers.QuestLink.showQuestWindow(QuestLink.java:172)
at handlers.bypasshandlers.QuestLink.useBypass(QuestLink.java:59)
at com.l2jserver.gameserver.model.actor.L2Npc.onBypassFeedback(L2Npc.jav
a:978)
at com.l2jserver.gameserver.network.clientpackets.RequestBypassToServer.
runImpl(RequestBypassToServer.java:139)
at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run
(L2GameClientPacket.java:93)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
но скил даёт. Правда при перезаходе он всёровно исчезает
Сообщений: 62
Тем: 5
Зарегистрирован: Aug 2010
Репутация:
1,369
Код: import sys
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
qn = "5809_Usweer_NPC_add_skill"
#Айтим для бафа (ID Айтима)
ID_ITEM = 6673
#Колличество айтимов для бафа
NEED_ITEM = 1
#Айди скила который будет выдан
ID_SKILL = 420
#Левел скила который будет выдан
LEVEL_SKILL = 1
#Минимальные левел который может получать баф
MIN_LVL = 1
#Максимальные левел который может получить баф
MAX_LVL = 80
NPC=[51809]
QuestId = 5809
QuestName = "Usweer_NPC_add_skill"
QuestDesc = "quest"
print "importing quest: 51809: Usweer NPC ---add skill---"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
st = player.getQuestState(qn)
if st.getPlayer().getLevel() < MIN_LVL or st.getPlayer().getLevel() > MAX_LVL :
return "badlevel.htm"
elif st.getState() == State.COMPLETED :
return "skillinyou.htm"
elif st.getQuestItemsCount(ID_ITEM) < NEED_ITEM :
return "noitem.htm"
else:
st.takeItems(ID_ITEM,NEED_ITEM)
skill = SkillTable.getInstance().getInfo(ID_SKILL,LEVEL_SKILL)
st.getPlayer().addSkill(skill)
st.getPlayer().storeSkill(skill,0,0)
st.setState(State.COMPLETED)
return "skilladd.htm"
QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
Не помню я всех тонкостей питона. Пробуйте так.
Сообщений: 41
Тем: 8
Зарегистрирован: Aug 2010
Репутация:
0
Не помогает,та же ошибка. А что это за питон?
Сообщений: 62
Тем: 5
Зарегистрирован: Aug 2010
Репутация:
1,369
09-07-2010, 10:08 PM
(Сообщение последний раз редактировалось: 09-07-2010, 10:14 PM DreamTheater.)
dgokill Написал:Не помогает,та же ошибка. А что это за питон?
Расширение *.py ни о чем не говорит? http://ru.wikipedia.org/wiki/Python
Добавлено через 6 минут
Решение кроется в этой строке:
st.getPlayer().storeSkill(skill,0,0)
Второй аргумент, там где сейчас стоит ноль, называется L2Skill oldSkill. Он ставится в том случае если персонаж просто поднимает уровень скилла, в таком случае старый скилл удаляется, а новый записывается. В Вашем случае ничего удалять не надо, так как скилл просто добавляется, следовательно на месте аргумента должен стоять нуль. Значения null и 0 вызывают ошибку, экспериментируйте дальше сами.
Сообщений: 41
Тем: 8
Зарегистрирован: Aug 2010
Репутация:
0
Вроде ход мыслей уловил буду пробовать. Не можешь ещё подсказать насчёт продавца точённого оружия,где достать или как сделать?
|