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