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

нпц топ пвп

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

добавил на сервер нпц топ пвп, брал с сборки теон и правил импорты, почти идеально работает, при первом нажатии на статистику нету реакции и выдает вот эту ошибку, думаю дело в импортах, а дальше работает без проблем, как можно решить сие чудо ?

 

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

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


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

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)

Hide  

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


Ссылка на сообщение
Поделиться на другие сайты
Только что, zGosu сказал:
Проверка на NULL

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)

Скрыть

можешь подсказать как это исправить плз? не сталкивался с таким еще

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


Ссылка на сообщение
Поделиться на другие сайты
Только что, joniko1990 сказал:

можешь подсказать как это исправить плз? не сталкивался с таким еще

Я же написал, проверку на NULL сделать, типо:
 

if (element != null){
  // твой код
}

 

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


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

Не хватает Квест стейт 

new QuestState 

И тут дописать какую стату давать при нуле

Очевидно Start или Created

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


Ссылка на сообщение
Поделиться на другие сайты
Только что, Demoncool сказал:

Не хватает Квест стейт 

new QuestState 

И тут дописать какую стату давать при нуле

Очевидно Start или Created

ааа теперь ясно, попробую сейчас поправить

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


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

либо в инстализацию квеста добавить

        State st = new State("Start", this);
        setInitialState(st);

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


Ссылка на сообщение
Поделиться на другие сайты
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>

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


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

Говорю же, проверку на NULL сделай.
Вот пример из моей сборки:

if not st : return

 

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


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

 

1 час назад, zGosu сказал:

Говорю же, проверку на NULL сделай.
Вот пример из моей сборки:


if not st : return

 

и что это даст? у него нет квест стейта и его не будет. Он всегда равен нулл...

 

я скинул для явы.

для питона есть в сборке скрипты, смотри пример

CREATED   = State('Start',     QUEST)

QUEST.setInitialState(CREATED)

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


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Demoncool сказал:

 

и что это даст? у него нет квест стейта и его не будет. Он всегда равен нулл...

 

я скинул для явы.

для питона есть в сборке скрипты, смотри пример

CREATED   = State('Start',     QUEST)

QUEST.setInitialState(CREATED)

Этот что ли?

st = self.getQuestState(player, False)
if not st : return

 

Изменено пользователем zGosu

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


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, Demoncool сказал:

 

и что это даст? у него нет квест стейта и его не будет. Он всегда равен нулл...

 

я скинул для явы.

для питона есть в сборке скрипты, смотри пример

CREATED   = State('Start',     QUEST)

QUEST.setInitialState(CREATED)

 

ОГРОМНОЕ спасибо за помощь ) такой кайф когда после пару часов мучений наконец получается) 

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


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

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

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

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

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

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

Войти

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

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

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

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

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