Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Выдача скиллов по квесту.
#1
Такой вопрос, написал небольшой тестовый квест, чтобы проверить выдачу скиллов. В итоге вылетают ошибки на addSkill. Может косяк с импортами, но вроде добавил уже всё что можно.

Код:
import sys
from ru.l2open import Config
from ru.l2open.gameserver.model.quest import State
from ru.l2open.gameserver.model.quest import QuestState
from ru.l2open.gameserver.datatables import SkillTable
from ru.l2open.gameserver.model.quest.jython import QuestJython as JQuest
from ru.l2open.gameserver.model.actor.instance import L2PcInstance
from ru.l2open.gameserver.model import L2Skill
from ru.l2open.gameserver.model.L2Skill import *
from ru.l2open.gameserver.model.actor.instance.L2PcInstance import *
from ru.l2open.util import Rnd

qn = "1001_Hunting"

class Quest (JQuest) :

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

def onAdvEvent (self,event,npc,player) :
    htmltext = event
    st = player.getQuestState(qn)
    cond = st.getInt("cond")
    if not st : return
    if event == "30008-01.htm" :
        st.set("cond","1")
        st.setState(State.STARTED)
        st.playSound("ItemSound.quest_accept")
    htmltext = event
    return htmltext

def onTalk (self,npc,player):
   htmltext = "30008-00.htm"
   st = player.getQuestState(qn)
   if not st : return htmltext
   npcId = npc.getNpcId()
   id = st.getState()
   if id == State.CREATED :
    if player.getLevel() < 4 :
        st.setState(State.STARTED)
        htmltext = "30008-01.htm"
        st.set("cond","1")
    else:
        htmltext = "30008-00.htm"
        st.exitQuest(1)
   elif id == State.COMPLETED :
    htmltext = "30008-00.htm"
   elif id == State.STARTED :
        try :
            cond = st.getInt("cond")
        except :
            cond = None
        if cond == 1 :
            if npcId == 30008 :
                st.addExpAndSp(5,0)
                st.takeItems(2,100)
                st.giveItems(57,100)
                st.set("cond","2")
                htmltext = "30008-02.htm"
        elif cond == 2 :
            if npcId == 30008 and st.getQuestItemsCount(57) >=1 :
                st.addExpAndSp(6,0)
                st.takeItems(3,100)
                st.giveItems(57,1)
                st.addSkill(601, true)
                htmltext = "30008-03.htm"
   return htmltext


QUEST       = Quest(1001,qn,"Hunting")

QUEST.addStartNpc(30008)

QUEST.addTalkId(30008)

Вот addSkill

Код:
public L2Skill addSkill(L2Skill newSkill, boolean store)
    {
        // Add a skill to the L2PcInstance _skills and its Func objects to the calculator set of the L2PcInstance
        L2Skill oldSkill = super.addSkill(newSkill);

        // Add or update a L2PcInstance skill in the character_skills table of the database
        if (store) storeSkill(newSkill, oldSkill, -1);

        return oldSkill;
    }

Что не так?
Ответ
#2
Покажите ошибку метода addSkill().

Метод addSkill принимает только L2Skill newSkill, поэтому в квесте декларируйте скил и только тогда отправляйте в метод addSkill.
Ответ
#3
[STIGMATED];217560 Написал:Покажите ошибку метода addSkill().

Метод addSkill принимает только L2Skill newSkill, поэтому в квесте декларируйте скил и только тогда отправляйте в метод addSkill.

Код:
Код:
newSkill = SkillTable.getInstance().getInfo(601, 1)
и
Код:
st.addSkill(newSkill, true)

Ошибка
Ответ
#4
В питоне, если мне память не изменяет, нету true и false. юзайте 0 и 1
Ответ
#5
coldy Написал:В питоне, если мне память не изменяет, нету true и false. юзайте 0 и 1

Изменяет, как минимум потому что часто есть вот такие строчки

Цитата: st.exitQuest(False)

Попробывал 1

Ошибка
Ответ
#6
Код:
st.getPlayer().addSkill(newSkill, true)
Fortuna - non penis, in manus non recipe.
Ответ
#7
Ashe Написал:
Код:
st.getPlayer().addSkill(newSkill, true)

Не так, опять пишет ошибку на синтаксис.

Но, коллективный разум вроде как победил. Вот правильное решение.

Код:
st.getPlayer().addSkill(newSkill, 1)

Добавлено через 1 минуту
Всем, кто помогал, поставил спасибки.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Эффект скиллов 1105 Madness и 1213 Seal of Mirage ntking 0 707 03-28-2023, 12:07 PM
Последний пост: ntking
  Каст скиллов из стана TorBenLino 1 1,583 03-01-2017, 03:35 PM
Последний пост: Gaikotsu
  Заточка скиллов в 1 клик до максимума GOODPower 1 1,283 03-30-2014, 02:48 PM
Последний пост: OneThunder
  Ребеллион 688 выдача хиро OneThunder 2 1,653 08-13-2013, 03:55 AM
Последний пост: OneThunder
  Выдача професии karakym 2 1,516 08-24-2012, 07:47 PM
Последний пост: karakym
  Выдача ауры героя после LH Subzero 0 1,180 02-03-2012, 10:19 PM
Последний пост: Subzero
  Откат скиллов при заточке. Shizooo 18 4,473 12-15-2011, 03:46 PM
Последний пост: Deazer
  Выдача хиро PellePelle 10 4,679 10-15-2011, 05:32 PM
Последний пост: Ro_0TT
  Вопрос по кастомайзной анимации скиллов Gubble 0 1,248 07-24-2011, 03:09 PM
Последний пост: Gubble
  Выдача Hero 16 и 1 числа каждого месяца derron116 6 3,563 02-23-2011, 01:30 AM
Последний пост: derron116

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)