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

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

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

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

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)

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


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

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

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

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

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

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


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

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

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


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

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

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

CheckSkills = True

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


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

CheckSkillsOnEnter = false

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

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


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

Не туда

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

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


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

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

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

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


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

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


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

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

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

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

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

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

Войти

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

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

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

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

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