joniko1990 43 Опубликовано 14 января, 2018 добавил на сервер нпц топ пвп, брал с сборки теон и правил импорты, почти идеально работает, при первом нажатии на статистику нету реакции и выдает вот эту ошибку, думаю дело в импортах, а дальше работает без проблем, как можно решить сие чудо ? Bad RequestBypassToServer: player Admin java.lang.NullPointerException at net.sf.l2j.gameserver.model.quest.QuestState.getStateId(QuestState.ja va:191) at net.sf.l2j.gameserver.model.quest.Quest.createQuestInDb(Quest.java:82 4) at net.sf.l2j.gameserver.model.quest.Quest.newQuestState(Quest.java:202) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.showQuestWin dow(L2NpcInstance.java:1463) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.onBypassFeed back(L2NpcInstance.java:984) at net.sf.l2j.gameserver.model.actor.instance.L2DonateInstance.onBypassF eedback(L2DonateInstance.java:438) at net.sf.l2j.gameserver.network.clientpackets.RequestBypassToServer.run Impl(RequestBypassToServer.java:138) at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2 GameClientPacket.java:46) at org.mmocore.network.nio.impl.MMOExecutableQueue.run(MMOExecutableQueu e.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) вот как стоят импорты: import sys from java.util import Iterator from net.sf.l2j.util import Rnd 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 from net.sf.l2j.gameserver.network.serverpackets import CreatureSay from net.sf.l2j import L2DatabaseFactory Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 14 января, 2018 Проверка на NULL Bad RequestBypassToServer: player Adminjava.lang.NullPointerException at net.sf.l2j.gameserver.model.quest.QuestState.getStateId(QuestState.ja va:191) at net.sf.l2j.gameserver.model.quest.Quest.createQuestInDb(Quest.java:82 4) at net.sf.l2j.gameserver.model.quest.Quest.newQuestState(Quest.java:202) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.showQuestWin dow(L2NpcInstance.java:1463) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.onBypassFeed back(L2NpcInstance.java:984) at net.sf.l2j.gameserver.model.actor.instance.L2DonateInstance.onBypassF eedback(L2DonateInstance.java:438) at net.sf.l2j.gameserver.network.clientpackets.RequestBypassToServer.run Impl(RequestBypassToServer.java:138) at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2 GameClientPacket.java:46) at org.mmocore.network.nio.impl.MMOExecutableQueue.run(MMOExecutableQueu e.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Hide Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joniko1990 43 Опубликовано 14 января, 2018 Только что, zGosu сказал: Проверка на NULL Bad RequestBypassToServer: player Adminjava.lang.NullPointerException at net.sf.l2j.gameserver.model.quest.QuestState.getStateId(QuestState.ja va:191) at net.sf.l2j.gameserver.model.quest.Quest.createQuestInDb(Quest.java:82 4) at net.sf.l2j.gameserver.model.quest.Quest.newQuestState(Quest.java:202) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.showQuestWin dow(L2NpcInstance.java:1463) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.onBypassFeed back(L2NpcInstance.java:984) at net.sf.l2j.gameserver.model.actor.instance.L2DonateInstance.onBypassF eedback(L2DonateInstance.java:438) at net.sf.l2j.gameserver.network.clientpackets.RequestBypassToServer.run Impl(RequestBypassToServer.java:138) at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2 GameClientPacket.java:46) at org.mmocore.network.nio.impl.MMOExecutableQueue.run(MMOExecutableQueu e.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Скрыть можешь подсказать как это исправить плз? не сталкивался с таким еще Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 14 января, 2018 Только что, joniko1990 сказал: можешь подсказать как это исправить плз? не сталкивался с таким еще Я же написал, проверку на NULL сделать, типо: if (element != null){ // твой код } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 14 января, 2018 Не хватает Квест стейт new QuestState И тут дописать какую стату давать при нуле Очевидно Start или Created Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joniko1990 43 Опубликовано 14 января, 2018 Только что, Demoncool сказал: Не хватает Квест стейт new QuestState И тут дописать какую стату давать при нуле Очевидно Start или Created ааа теперь ясно, попробую сейчас поправить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 14 января, 2018 либо в инстализацию квеста добавить State st = new State("Start", this); setInitialState(st); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joniko1990 43 Опубликовано 14 января, 2018 4 минуты назад, Demoncool сказал: либо в инстализацию квеста добавить State st = new State("Start", this); setInitialState(st); видимо что то не правильно делаю, скрипт грузится с правкой но все равно та же фигня, вот как выглядит чистый скрипт полностью, без правки, в чем косяк ? import sys from java.util import Iterator from net.sf.l2j.util import Rnd 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 from net.sf.l2j.gameserver.network.serverpackets import CreatureSay from net.sf.l2j import L2DatabaseFactory print "importing statistics" # *************************************** # Inicializacion de Variables del Quest * # *************************************** NPC=[80007] Precio_ID = 57 QuestId = 50300 QuestName = "PKlist" QuestDesc = "custom" InitialHtml = "1.htm" # ************************ # Creando la Clase Quest * # ************************ class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) # *********************** # Si hablas con el NPC: * # *********************** def onTalk (self,npc,player): return InitialHtml # *********************** # ***************************************************** # Ahora gobernamos los eventos que vienen desde el HTML # ***************************************************** def onEvent(self,event,st): htmltext = event cantidad_pago = st.getQuestItemsCount(Precio_ID) # ********* # PK info * # ********* if event == "1" and cantidad_pago >= 3000 : st.takeItems(Precio_ID,3000) total_asesinados = 0 htmltext_ini = "<html><head><title>Pk Info Online</title></head><body><table width=300><tr><td><font color =\"FF00FF\">Position</td><td><center><font color =\"FFFF00\">Player</color></center></td><td><center>Kills</center></td></tr>" htmltext_info ="" color = 1 pos = 0 con = L2DatabaseFactory.getInstance().getConnection() pks = con.prepareStatement("SELECT char_name,pkkills FROM characters WHERE pkkills>0 and accesslevel=0 order by pkkills desc limit 20") rs = pks.executeQuery() while (rs.next()) : char_name = rs.getString("char_name") char_pkkills = rs.getString("pkkills") total_asesinados = total_asesinados + int(char_pkkills) pos = pos + 1 posstr = str(pos) if color == 1: color_text = "<font color =\"00FFFF\">" color = 2 htmltext_info = htmltext_info + "<tr><td><center><font color =\"FF00FF\">" + posstr + "</td><td><center>" + color_text + char_name +"</center></td><td><center>" + char_pkkills + "</center></td></tr>" elif color == 2: color_text = "<font color =\"FF0000\">" color = 1 htmltext_info = htmltext_info + "<tr><td><center><font color =\"FF00FF\">" + posstr + "</td><td><center>" + color_text + char_name +"</center></td><td><center>" + char_pkkills + "</center></td></tr>" htmltext_end = "</table><center><font color=\"FFFFFF\">" + "A Total of " + str(total_asesinados) + " Pk's.</center></body></html> Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joniko1990 43 Опубликовано 14 января, 2018 весь код не поместился Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joniko1990 43 Опубликовано 14 января, 2018 вот сам файл короче __init__.py Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 14 января, 2018 Говорю же, проверку на NULL сделай. Вот пример из моей сборки: if not st : return Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 14 января, 2018 1 час назад, zGosu сказал: Говорю же, проверку на NULL сделай. Вот пример из моей сборки: if not st : return и что это даст? у него нет квест стейта и его не будет. Он всегда равен нулл... я скинул для явы. для питона есть в сборке скрипты, смотри пример CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 14 января, 2018 (изменено) 5 минут назад, Demoncool сказал: и что это даст? у него нет квест стейта и его не будет. Он всегда равен нулл... я скинул для явы. для питона есть в сборке скрипты, смотри пример CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) Этот что ли? st = self.getQuestState(player, False) if not st : return Изменено 14 января, 2018 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joniko1990 43 Опубликовано 15 января, 2018 11 часов назад, Demoncool сказал: и что это даст? у него нет квест стейта и его не будет. Он всегда равен нулл... я скинул для явы. для питона есть в сборке скрипты, смотри пример CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) ОГРОМНОЕ спасибо за помощь ) такой кайф когда после пару часов мучений наконец получается) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты