Jump to content
Sign in to follow this  
Connect

Не сохраняется купленный скилл

Recommended Posts

Скрипт работает правильно, но сохраняет скилл только до релога. А мне надо навсегда. Прошу помощи.

import sys
from ru.catssoftware import Config
from ru.catssoftware import L2DatabaseFactory
from ru.catssoftware.tools.random import Rnd
from ru.catssoftware.gameserver.datatables import SkillTable
from ru.catssoftware.gameserver.model.quest import State
from ru.catssoftware.gameserver.model.quest import QuestState
from ru.catssoftware.gameserver.model import L2Augmentation
from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest
from ru.catssoftware.gameserver.templates.item import L2EtcItemType
from ru.catssoftware.gameserver.templates.item import L2WeaponType
from ru.catssoftware.gameserver.templates.item import L2Item
from ru.catssoftware.gameserver.network.serverpackets import InventoryUpdate
from java.lang import System




NPC_ID = 60007
ITEM_ID = 57
#ITEM_COUNT = 0
#Do not need a subject
ITEM_COUNT = 1

#A player can learn just one skill? 1 = true 0 = false
ONLY_ONE = 0


qn = "9994_skill_trader"
print "9994_skill_trader Loading Started"

class Quest (JQuest) :

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

 def onTalk (self,npc,player):
    st = player.getQuestState(qn)
    htmltext = "<html><head><body>I have nothing to say you</body></html>"
    npcId = npc.getNpcId()
    if not st : return
    cond = st.getInt("cond")
    onlyone = st.getInt("onlyone")
    if ONLY_ONE :
        if onlyone > 0 :
            return "fail.htm"
    if cond >= 0 :
        st.set("cond", "1")
        st.setState(State.STARTED)
        htmltext = "start.htm"
    return htmltext



 def onEvent (self,event,st) :
    htmltext = event
    cond = st.getInt("cond")
    if event == "buy" :
        htmltext = "buy.htm"
    elif event.startswith('buy_') :
        if st.getQuestItemsCount(ITEM_ID) <= ITEM_COUNT :
            return "n-money.htm"
        buy_skill = str(event.replace("buy_", ""))
        buy_skill_splite = buy_skill.split('_')
        st.takeItems(ITEM_ID, ITEM_COUNT)
        st.getPlayer().addSkill(SkillTable.getInstance().getInfo(int(buy_skill_splite[0]), int(buy_skill_splite[1])))
        if ONLY_ONE :
            st.set("onlyone", "1")
        st.set("cond", "0")
        st.setState(State.COMPLETED)
        htmltext = "buy.htm"
    return htmltext


QUEST 		= Quest(9994, qn, "Skill Trader")

QUEST.addStartNpc(NPC_ID)
QUEST.addTalkId(NPC_ID)

Share this post


Link to post
Share on other sites

скрипт даже не читал

может проверка на скилы работает ? 

как это было раньше

даёшь обычному персонажу супер хаст, он с ним бегает до релога, а потом скил или пропадает или не юзается 

Share this post


Link to post
Share on other sites

Пробовал я все, скилл не исчезает и все пашет. И по конфигам все проверил (

Share this post


Link to post
Share on other sites

Пробовал я все, скилл не исчезает и все пашет. И по конфигам все проверил (

# Проверять чара на левые скиллы?

CheckSkills = True

Share this post


Link to post
Share on other sites

CheckSkillsOnEnter = false

Я же написал, что у меня выключена проверка, а толку нет. Все равно, скилл который я покупаю пропадает.

Share this post


Link to post
Share on other sites

Ид меньше делай для новых скилов. Например 9000.

Да у меня стандартные скиллы) ид 200-300

Share this post


Link to post
Share on other sites
import sys
from java.util import Iterator
from java.lang import System
from time import gmtime, strftime
from net.sf.l2j import L2DatabaseFactory
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 CharInfo
from net.sf.l2j.gameserver.network.serverpackets import SocialAction
from net.sf.l2j.gameserver.network.serverpackets import UserInfo

qn = "q8019_SetHero"

NPC = 59022
ITEM = 12222 # итем необходимый для обмена
COST = 5 # стоимость
INAME = "Donate Coin" # название итема

class Quest (JQuest) :

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

 def onAdvEvent (self,event,npc,player):
   st = player.getQuestState(qn)
   if event == "step1":
     if st.getQuestItemsCount(ITEM) < COST:
       htmltext = "ServiceHero.htm"
       return htmltext
     elif player.isHero():
       htmltext = "HeroIsHero.htm"
       return htmltext
     htmltext = "ServiceHero.htm"       
   elif event == "step2":
     if st.getQuestItemsCount(ITEM) < COST:
       htmltext = "HeroErr.htm"
       return htmltext
     htmltext = "Теперь Вы Герой!"
    #<
     st.takeItems(ITEM,COST)
     player.setHero(3)
    #<
     login = str(player.getAccountName()) 
     name = str(player.getName())
     date = str(strftime("%Y-%m-%d", gmtime()))
     time = str(strftime("%H:%M:%S", gmtime()))
     writelog=L2DatabaseFactory.getInstance().getConnection()
     write=writelog.prepareStatement("INSERT INTO zz_donate_log (date,time,login,name,action,payment) VALUES (?,?,?,?,?,?)")
     write.setString(1, date)
     write.setString(2, time)
     write.setString(3, login)
     write.setString(4, name)
     write.setString(5, "Hero Status")
     write.setInt(6, COST)
     try :
       write.executeUpdate()
       write.close()
       writelog.close()
     except :
       try : writelog.close()
       except : pass
    #<
     htmltext += ""
   else:
     htmltext = "HeroErr1.htm"
   return htmltext

 def onTalk (self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   if npcId == NPC:
     self.startQuestTimer("step1",100,None,player)      
   return

QUEST       = Quest(8019,qn,"custom")
CREATED     = State('Start', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

Короче нашел этот скриптик и хочу маленько переделать, но из не опытности что то не катит ;D

writelog=L2DatabaseFactory.getInstance().getConnection()
write=writelog.prepareStatement("INSERT INTO zz_donate_log (date,time,login,name,action,payment) VALUES (?,?,?,?,?,?)")
write.setString(1, date)
write.setString(2, time)
write.setString(3, login)
write.setString(4, name)
write.setString(5, "Hero Status")
write.setInt(6, COST)

Вот такая ошибка : ( в который я подставляю)

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 71, 17, '\t\tcharId = str(player.getObjectId())'))
 
		charId = str(player.getObjectId())
		skill_id = str(skill.getId())
		skill_level = str(skill.getLevel())
		skill_name = str(skill.getName())
		class_index = str(player.getClass())
		writelog=L2DatabaseFactory.getInstance().getConnection()
		write=writelog.prepareStatement("INSERT INTO character_skills (charId,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)")
		write.setString(1, charId)
		write.setString(2, skill_id)
		write.setString(3, skill_level)
		write.setString(4, skill_name)
		write.setString(5, class_index)
Edited by Connect

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...