unroot 221 Опубликовано 24 декабря, 2013 Доброго дня, кто может подсказать в чем я туплю, не работает перенос ЛС, доходит до выбора пушки и оп окно закрывается. Заранее спасибо. import sys from java.util import Iterator from net.sf.l2j.util import Rnd from net.sf.l2j.gameserver.network.serverpackets import SystemMessage 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 import L2DatabaseFactory from net.sf.l2j.gameserver.templates import L2EtcItemType from net.sf.l2j.gameserver.templates import L2Item from java.lang import System from net.sf.l2j.gameserver.idfactory import IdFactory from net.sf.l2j.gameserver.model import L2ItemInstance from net.sf.l2j.gameserver.datatables import AugmentationData from net.sf.l2j.gameserver.model import L2Augmentation from net.sf.l2j.gameserver.network.serverpackets import ItemList from net.sf.l2j.gameserver.model import L2Skill from net.sf.l2j.gameserver.datatables import SkillTable qn = "q8014_LifeStone" NPC = 65011 ITEM = 10853 COST = 10 FORBIDDEN = [6611,6612,6613,6614,6615,6616,6617,6618,6619,6620,6621] 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 == "spisok": if st.getQuestItemsCount(ITEM) < COST: htmltext = "<html><body>Перенос Лс стоит <font color=74bff5>"+str(COST)+" L2TOP</font></body></html>" return htmltext htmltext = "<html><body><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI.SquareBlank\" width=260 height=2><br1>" htmltext += "<table width=260><tr><td align=center><font color=LEVEL>Перенос ЛС</font></td></tr></table>" htmltext += "<button value=\"Выбрать пушку\" action=\"bypass -h Quest q8014_LifeStone step1\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"><br1>" htmltext += "<center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></center></body></html>" elif event == "step1": htmltext = "<html><body>Перенос ЛС:<br>Откуда переносим?<br><br><table width=300>" SPWEAPONS = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt"] for Item in st.getPlayer().getInventory().getItems(): itemTemplate = Item.getItem() idtest = Item.getItemId() itype = str(Item.getItemType()) if idtest not in FORBIDDEN and Item.isAugmented() and not Item.isEquipped() and itype in SPWEAPONS: cnt = Item.getCount() count = str(cnt) grade = itemTemplate.getCrystalType() con=L2DatabaseFactory.getInstance().getConnection() listitems=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") listitems.setInt(1, idtest) rs=listitems.executeQuery() while (rs.next()) : icon=rs.getString("itemIcon") try : if grade == 1: pgrade = str("[D]") elif grade == 2: pgrade = str("[C]") elif grade == 3: pgrade = str("") elif grade == 4: pgrade = str("[A]") elif grade == 5: pgrade = str("") else: pgrade = str("") if Item.getEnchantLevel() == 0: enchant = str("") else: enchant = " +"+str(Item.getEnchantLevel())+"" htmltext += "<tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><a action=\"bypass -h Quest q8014_LifeStone step1next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + ""+str(pgrade)+" " + enchant + "</a></td></tr>" except : try : insertion.close() except : pass try : con.close() except : pass htmltext += "</table><br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" elif event.startswith("step1next_"): itemObjId = int(event.replace("step1next_", "")) obj = str(itemObjId) Item = st.getPlayer().getInventory().getItemByObjectId(itemObjId) itemTemplate = Item.getItem() if Item and not Item.isEquipped(): cnt = Item.getCount() count = str(cnt) grade = itemTemplate.getCrystalType() igrade = str(itemTemplate.getCrystalType()) itype = str(Item.getItemType()) idtest = Item.getItemId() con=L2DatabaseFactory.getInstance().getConnection() listitems=con.prepareStatement("SELECT itemIcon, skill, attributes FROM `z_market_icons` icon, `augmentations` aug WHERE icon.itemId=? AND aug.item_id=?") listitems.setInt(1, idtest) listitems.setInt(2, itemObjId) rs=listitems.executeQuery() while (rs.next()) : icon=rs.getString("itemIcon") skill=rs.getInt("skill") attributes=rs.getInt("attributes") try : st.set("oneitem",obj) st.set("skill",str(skill)) grades = {1: "d", 2: "c", 3: "b", 4: "a", 5: "s"} pgrade = grades.get(grade, str("")) enchant = (Item.getEnchantLevel() > 0 and " +"+str(Item.getEnchantLevel())+"") or str("") htmltext = "<html><body>Перенос ЛС:<br>Из этой пушки переносим?<br>" htmltext += "<table width=300><tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><font color=LEVEL>" + itemTemplate.getName() + " " + enchant + "</font><img src=\"symbol.grade_"+str(pgrade)+"\" width=16 height=16><br></td></tr></table><br><br>" if skill != 0: skill = SkillTable.getInstance().getInfo(skill, 1) name = skill.getName() htmltext += "<br><font color=bef574>["+str(name)+"]</font><br>" htmltext += "<button value=\"Продолжить\" action=\"bypass -h Quest q8014_LifeStone step2\" width=60 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"><br>" else: htmltext += "V etoi puwke net skilla" htmltext += "<br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" except : try : listitems.close() except : pass try : con.close() except : pass else : htmltext = "<html><body>Перенос ЛС:<br>Ошибка!<br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" elif event == "step2": htmltext = "<html><body>Перенос ЛС:<br>Куда переносим?<br><br><table width=300>" SPWEAPONS = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt"] weapon1 = st.getInt("oneitem") for Item in st.getPlayer().getInventory().getItems(): itemTemplate = Item.getItem() idtest = Item.getItemId() itype = str(Item.getItemType()) if idtest not in FORBIDDEN and not Item.isEquipped() and itype in SPWEAPONS and Item.getObjectId() != weapon1 and not Item.isAugmented(): grade = itemTemplate.getCrystalType() con=L2DatabaseFactory.getInstance().getConnection() listitems=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") listitems.setInt(1, idtest) rs=listitems.executeQuery() while (rs.next()) : icon=rs.getString("itemIcon") try : if grade == 1: pgrade = str("[D]") elif grade == 2: pgrade = str("[C]") elif grade == 3: pgrade = str("") elif grade == 4: pgrade = str("[A]") elif grade == 5: pgrade = str("") else: pgrade = str("") if Item.getEnchantLevel() == 0: enchant = str("") else: enchant = " +"+str(Item.getEnchantLevel())+"" htmltext += "<tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><a action=\"bypass -h Quest q8014_LifeStone step2next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + ""+str(pgrade)+" " + enchant + "</a></td></tr>" except : try : insertion.close() except : pass try : con.close() except : pass htmltext += "</table><br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" elif event.startswith("step2next_"): itemObjId = int(event.replace("step2next_", "")) obj = str(itemObjId) Item = st.getPlayer().getInventory().getItemByObjectId(itemObjId) itemTemplate = Item.getItem() if Item and not Item.isAugmented() and not Item.isEquipped(): cnt = Item.getCount() count = str(cnt) grade = itemTemplate.getCrystalType() igrade = str(itemTemplate.getCrystalType()) itype = str(Item.getItemType()) idtest = Item.getItemId() con=L2DatabaseFactory.getInstance().getConnection() listitems=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") listitems.setInt(1, idtest) rs=listitems.executeQuery() while (rs.next()) : icon=rs.getString("itemIcon") try : st.set("twoitem",obj) st.set("lcount",count) st.set("grade",igrade) st.set("type",itype) grades = {1: "d", 2: "c", 3: "b", 4: "a", 5: "s"} pgrade = grades.get(grade, str("")) enchant = (Item.getEnchantLevel() > 0 and " +"+str(Item.getEnchantLevel())+"") or str("") htmltext = "<html><body>Перенос ЛС:<br>В эту пушку переносим?<br>" htmltext += "<table width=300><tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><font color=LEVEL>" + itemTemplate.getName() + " " + enchant + "</font><img src=\"symbol.grade_"+str(pgrade)+"\" width=16 height=16><br></td></tr></table><br><br>" htmltext += "<button value=\"Продолжить\" action=\"bypass -h Quest q8014_LifeStone step3\" width=60 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"><br>" htmltext += "<br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" except : try : listitems.close() except : pass try : con.close() except : pass else : htmltext = "<html><body>Перенос Лс:<br>Ошибка!<br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" elif event.startswith("step3"): weapon1 = st.getInt("oneitem") weapon2 = st.getInt("twoitem") skillp = st.getInt("skill") htmltext = "<html><body>Перенос ЛС:<br>Подтверждаете?<br>" skill = SkillTable.getInstance().getInfo(skillp, 1) name = skill.getName() htmltext += "<font color=bef574>["+str(name)+"]</font><br>" htmltext += "Из:" Item = st.getPlayer().getInventory().getItemByObjectId(weapon1) itemTemplate = Item.getItem() if Item and Item.isAugmented() and not Item.isEquipped(): cnt = Item.getCount() count = str(cnt) grade = itemTemplate.getCrystalType() igrade = str(itemTemplate.getCrystalType()) itype = str(Item.getItemType()) idtest = Item.getItemId() con=L2DatabaseFactory.getInstance().getConnection() listitems=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") listitems.setInt(1, idtest) rs=listitems.executeQuery() while (rs.next()) : icon=rs.getString("itemIcon") try : grades = {1: "d", 2: "c", 3: "b", 4: "a", 5: "s"} pgrade = grades.get(grade, str("")) enchant = (Item.getEnchantLevel() > 0 and " +"+str(Item.getEnchantLevel())+"") or str("") htmltext += "<table width=300><tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><font color=LEVEL>" + itemTemplate.getName() + " " + enchant + "</font><img src=\"symbol.grade_"+str(pgrade)+"\" width=16 height=16><br></td></tr></table><br><br>" except : try : listitems.close() except : pass try : con.close() except : pass htmltext += "В:<br>" Item = st.getPlayer().getInventory().getItemByObjectId(weapon2) itemTemplate = Item.getItem() if Item and not Item.isAugmented() and not Item.isEquipped(): cnt = Item.getCount() count = str(cnt) grade = itemTemplate.getCrystalType() igrade = str(itemTemplate.getCrystalType()) itype = str(Item.getItemType()) idtest = Item.getItemId() cons=L2DatabaseFactory.getInstance().getConnection() listitemss=cons.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") listitemss.setInt(1, idtest) rs=listitemss.executeQuery() while (rs.next()) : icon=rs.getString("itemIcon") try : grades = {1: "d", 2: "c", 3: "b", 4: "a", 5: "s"} pgrade = grades.get(grade, str("")) enchant = (Item.getEnchantLevel() > 0 and " +"+str(Item.getEnchantLevel())+"") or str("") htmltext += "<table width=300><tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><font color=LEVEL>" + itemTemplate.getName() + " " + enchant + "</font><img src=\"symbol.grade_"+str(pgrade)+"\" width=16 height=16><br></td></tr></table><br><br>" except : try : listitemss.close() except : pass try : cons.close() except : pass htmltext += "<button value=\"Продолжить\" action=\"bypass -h Quest q8014_LifeStone step4\" width=60 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"><br>" else : htmltext = "<html><body>Перенос Лс:<br>Ошибка!<br><a action=\"bypass -h Quest q8014_LifeStone spisok\">Вернуться.</a></body></html>" elif event.startswith("step4"): weapon1 = st.getInt("oneitem") weapon2 = st.getInt("twoitem") htmltext = "<html><body>Перенос Лс:<br>Подождите...<br><br>" if st.getQuestItemsCount(ITEM) < COST: htmltext = "<html><body>Перенос Лс стоит <font color=74bff5>"+str(COST)+" BaD Coin</font></body></html>" return htmltext item2 = st.getPlayer().getInventory().getItemByObjectId(weapon2) item1 = st.getPlayer().getInventory().getItemByObjectId(weapon1) con=L2DatabaseFactory.getInstance().getConnection() listitems=con.prepareStatement("SELECT * FROM `augmentations` WHERE item_id=?") listitems.setInt(1, weapon1) rs=listitems.executeQuery() while (rs.next()) : attributes=rs.getInt("attributes") skill=rs.getInt("skill") try : st.takeItems(ITEM,COST) item2.setAugmentation(L2Augmentation(item2, attributes, skill, 10, True)) player.sendPacket(ItemList(player, False)) item1.removeAugmentation() skilla = SkillTable.getInstance().getInfo(skill, 1) name = skilla.getName() htmltext += "<font color=bef574>["+str(name)+"]</font> переставлен.<br>" except : try : listitems.close() except : pass try : con.close() except : pass else: htmltext = "<html><body>Перенос ЛС:<br>Oops!</body></html>" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == NPC: htmltext = "privetstvie.htm" return htmltext QUEST = Quest(8014,qn,"custom") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Major 53 Опубликовано 24 декабря, 2013 Возьми готовый сервис переноса лс с шары и впихни в свою сборку Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Fearless 230 Опубликовано 24 декабря, 2013 Может в ГС ошибку бьёт? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unroot 221 Опубликовано 24 декабря, 2013 Возьми готовый сервис переноса лс с шары и впихни в свою сборку Да скачал тут сравнил файлы вроде идентичны, но еще не пробовал, сейчас попробую. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unroot 221 Опубликовано 24 декабря, 2013 Может в ГС ошибку бьёт? Нет ошибок нет, все грузится нормально. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unroot 221 Опубликовано 24 декабря, 2013 (изменено) Все равно не работает, вроде все пересмотрел доходит до выбора оружия и все на этом( Кстати заметил что перенос заточки аналогично не работает на том же моменте, что это за трабла такая Изменено 24 декабря, 2013 пользователем unroot Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Major 53 Опубликовано 24 декабря, 2013 Ошибки точно в ГС нету? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unroot 221 Опубликовано 24 декабря, 2013 ну Ошибки точно в ГС нету? Ну только такого рода: WARNING: Bad RequestBypassToServer: player testetst java.lang.NullPointerException at net.sf.l2j.gameserver.model.quest.QuestState.getStateId(QuestState.java:193) at net.sf.l2j.gameserver.model.quest.Quest.createQuestInDb(Quest.java:824) at net.sf.l2j.gameserver.model.quest.Quest.newQuestState(Quest.java:202) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2NpcInstance.java:1433) at net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance.onBypassFeedback(L2NpcInstance.java:970) at net.sf.l2j.gameserver.network.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:101) at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:51) at org.jboss.netty.handler.execution.MemoryAwareThreadPoolExecutor$MemoryAwareRunnable.run(MemoryAwareThreadPoolExecutor.java:622) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Main 85 Опубликовано 24 декабря, 2013 Зачем вам скрипт переноса ЛС? В ПВ он вшит в ядро. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unroot 221 Опубликовано 24 декабря, 2013 Зачем вам скрипт переноса ЛС? В ПВ он вшит в ядро. а по подробнее можно? узнать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты