Перейти к содержанию
Авторизация  
BeLka

Ошибка В Quest "снять Пк/очистить Карму"

Рекомендуемые сообщения

При загрузке всё в порядке. Но при использовании, выдаёт ошибку. Итем забирает, а ни карму ни пк не снимает, в игре "script error". Не хватает импорта? :) Подскажите что ещё нужно ему))). Сборка Lucera.

 

Вот код:

import sys

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

from ru.catssoftware.gameserver.model.actor.instance import L2PcInstance

 

qn = "17_NoKarma"

NPC = 30945

 

ITEM_ID = 4037

COUNT_1 = 1

KARMA = 0

COUNT_2 = 2

PK = 10

 

class Quest (JQuest) :

 

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

 

def onEvent (self,event,st) :

htmltext = event

if event == "1":

count=st.getQuestItemsCount(ITEM_ID)

if count < COUNT_1 :

return "noitem.htm"

else:

st.takeItems(ITEM_ID,COUNT_1)

st.player.getKarma(KARMA)

st.playSound("ItemSound.quest_finish")

return "gratkarma.htm"

st.setState(State.COMPLETED)

if event == "2":

count=st.getQuestItemsCount(ITEM_ID)

if count < COUNT_2 :

return "noitem.htm"

else:

st.takeItems(ITEM_ID,COUNT_2)

st.player.getPkKills(PK)

st.playSound("ItemSound.quest_finish")

return "gratpk.htm"

st.setState(State.COMPLETED)

if htmltext != event:

st.setState(State.COMPLETED)

st.exitQuest(1)

return htmltext

 

 

 

def onTalk (self,npc,player) :

st = player.getQuestState(qn)

npcId = npc.getNpcId()

htmltext = "noreliz.htm"

if not st : return htmltext

if npcId == NPC:

htmltext = "main.htm"

return htmltext

 

QUEST = Quest(17,qn,"custom")

 

QUEST.addStartNpc(NPC)

QUEST.addTalkId(NPC)

 

 

Ошибка в логе при попытке очищения кармы:

 

Traceback (innermost last):

File "__init__.py", line 29, in onEvent

TypeError: getKarma(): expected 0 args; got 1

 

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._pyx1409710167273.onEvent$3(__init__.py:29)

at org.python.pycode.serializable._pyx1409710167273.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$12.onEvent(Unknown Source)

at ru.catssoftware.gameserver.model.quest.Quest.onAdvEvent(Quest.java:651)

at ru.catssoftware.gameserver.model.quest.Quest.notifyEvent(Quest.java:474)

at ru.catssoftware.gameserver.model.actor.instance.L2PcInstance.processQuestEvent(L2PcInstance.java:1460)

at ru.catssoftware.gameserver.network.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:219)

at ru.catssoftware.gameserver.network.clientpackets.L2GameClientPacket.run(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)

 

 

line 29 - это st.player.getKarma(KARMA)

 

При попытке снять опред. кол-во ПК, та же ошибка, только номер линейки другой)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При загрузке всё в порядке. Но при использовании, выдаёт ошибку. Итем забирает, а ни карму ни пк не снимает, в игре "script error". Не хватает импорта? :) Подскажите что ещё нужно ему))). Сборка Lucera.

 

Вот код:

st.player.getKarma(KARMA)

st.player.getPkKills(PK)

 

Может все таки должно быть так

st.player.setKarma(KARMA)

st.player.setPkKills(PK)

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У метода getKarma нет аргументов, так как это геттер (метод, возвращающий значение переменной, недоступной вне класса). Вам же нужен сеттер на подобии setKarma.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо, setKarma работает. Но тогда как быть с PKkills? Мне нужно убрать определённое кол-во, а не установить (обновить) новое число, указанное в конфигурации. setPkKills устанавливает новое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо, setKarma работает. Но тогда как быть с PKkills? Мне нужно убрать определённое кол-во, а не установить (обновить) новое число, указанное в конфигурации. setPkKills устанавливает новое

Получить то что есть отнять и записать в новое что сложного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо, setKarma работает. Но тогда как быть с PKkills? Мне нужно убрать определённое кол-во, а не установить (обновить) новое число, указанное в конфигурации. setPkKills устанавливает новое

xzkaknazvat.setPvpKills(xzkaknazvat.getPvpKills() + PvpCount);

пример, делайте вывод.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...