Connect 4 Posted December 14, 2015 Скрипт работает правильно, но сохраняет скилл только до релога. А мне надо навсегда. Прошу помощи. 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
3DSdesing 90 Posted December 14, 2015 скрипт даже не читал может проверка на скилы работает ? как это было раньше даёшь обычному персонажу супер хаст, он с ним бегает до релога, а потом скил или пропадает или не юзается Share this post Link to post Share on other sites
Connect 4 Posted December 14, 2015 Пробовал я все, скилл не исчезает и все пашет. И по конфигам все проверил ( Share this post Link to post Share on other sites
TaleQale 213 Posted December 15, 2015 Пробовал я все, скилл не исчезает и все пашет. И по конфигам все проверил ( # Проверять чара на левые скиллы? CheckSkills = True Share this post Link to post Share on other sites
Connect 4 Posted December 15, 2015 CheckSkillsOnEnter = false Я же написал, что у меня выключена проверка, а толку нет. Все равно, скилл который я покупаю пропадает. Share this post Link to post Share on other sites
TaleQale 213 Posted December 15, 2015 (edited) Не туда Edited December 15, 2015 by TaleQale Share this post Link to post Share on other sites
Ромашка 70 Posted December 15, 2015 Ид меньше делай для новых скилов. Например 9000. Share this post Link to post Share on other sites
Connect 4 Posted December 16, 2015 Ид меньше делай для новых скилов. Например 9000. Да у меня стандартные скиллы) ид 200-300 Share this post Link to post Share on other sites
Connect 4 Posted December 16, 2015 (edited) 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 December 16, 2015 by Connect Share this post Link to post Share on other sites