protoftw Posted December 13, 2016 Posted December 13, 2016 hey guys i have a quick question ..Npc works great but there's one problem ..Icons from customs items do not show to all the services from the npc ..For example npc has , enchanter ( add enchants to your equipment) , transfer enchant ( u know what this is..) When using enchanter ( to add +1 enchant for example ) icons are shown properly But, when using transfer enchant icons are black? can anyone help me with that? I can post u here both _init_py files. here's the right one where i can see all icons. import sys from java.lang import String from java.lang import Integer from com.l2jfrozen.util.random import Rnd from com.l2jfrozen.util.database import L2DatabaseFactory from com.l2jfrozen.gameserver.model.quest import State from com.l2jfrozen.gameserver.model.actor.instance import L2ItemInstance from com.l2jfrozen.gameserver.network.serverpackets import ItemList from com.l2jfrozen.gameserver.network.serverpackets import UserInfo from com.l2jfrozen.gameserver.network.serverpackets import CharInfo from com.l2jfrozen.gameserver.network.serverpackets import InventoryUpdate from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest Qn = "919_Enchanter" Npc = 300300 MaxEnchantWeapon = 25 MaxEnchantArmor = 25 MaxEnchantJewel = 25 Adena = 3488 # Donate coin (adena) ItemName = "Donate Coins" JPrice = [1,1,1,1,1,1] # Price for +1 Jewels (depends Jewels grade, ex. Wprice[0] = No Grade) APrice = [1,1,1,1,1,1] # Price for +1 Armors (depends Armors grade, ex. Wprice[0] = No Grade) WPrice = [2,2,2,2,2,2] # Price for +1 Weapons (depends Weapons grade, ex. Wprice[0] = No Grade) Jewel = ["None"] Armor = ["Light","Heavy","Magic"] Weapon = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt","Shield"] SlotForEnchant = [7,8,6,10,11,9,12,3,1,2,4,5] # editable [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] NoEnchantItem = [] print "Donate Manager: Loaded 40%" def getItemIcon(ItemId): con=L2DatabaseFactory.getInstance().getConnection() II=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") II.setInt(1, ItemId) rs=II.executeQuery() ItemIcon = "" if rs.next() : ItemIcon = rs.getString("itemIcon") else : ItemIcon = "icon.etc_adena_i00" try : con.close() except : pass return ItemIcon def validateItem(ItemId) : for itm in NoEnchantItem : if itm == ItemId : return False return True def getHexSlot(Slot) : if Slot == 0 : return 0x01 elif Slot == 1 : # Left Earring return 0x04 elif Slot == 2 : # Right Earring return 0x02 elif Slot == 3 : # Neck return 0x08 elif Slot == 4 : # Left Ring return 0x20 elif Slot == 5 : # Right Ring return 0x10 elif Slot == 6 : # Helmet return 0x40 elif Slot == 7 : # Left Hand return 0x80 elif Slot == 8 : # Right Hand return 0x0100 elif Slot == 9 : # Gloves return 0x0200 elif Slot == 10 : # Breastplate return 0x0400 elif Slot == 11 : # Gaiters return 0x0800 elif Slot == 12 : # Boots return 0x1000 elif Slot == 13 : # return 0x2000 elif Slot == 14 : # R/L Finger return 0x4000 elif Slot == 15 : # return 0x040000 elif Slot == 16 : # return 0x010000 elif Slot == 17 : # return 0x080000 return 0x00 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onTalk (Self,npc,player) : st = player.getQuestState(Qn) npcId = npc.getNpcId() htmltext = u"<html><title>Donate Shop</title><body><center>Error!</center></body></html>" if not st : return htmltext htmltext = "<html><body><font color=LEVEL>Add +1 Enchant to your equipment</font><br1>Cost: 1 Donate Coin [Armor,Jewels]<br1> Cost: 2 Donate Coins [Weapon]" for Slot in SlotForEnchant : Item1 = player.getInventory().getPaperdollItemByL2ItemId(getHexSlot(Slot)) if Item1 != None : if validateItem(Item1.getItemId()) : Grade = Item1.getItem().getCrystalType() if Grade not in [0] : if Grade == 1: pgrade = str("[D]") elif Grade == 2: pgrade = str("[C]") elif Grade == 3: pgrade = str("[B]") elif Grade == 4: pgrade = str("[A]") elif Grade == 5: pgrade = str("[S]") else: pgrade = str("") htmltext = htmltext + "<img src=\"" + getItemIcon(Item1.getItemId()) + "\" width=32 height=32><a action=\"bypass -h Quest 919_Enchanter slot_" + str(Slot) + "\">" + Item1.getItemName() + " " + str(pgrade) + " +" + str(Item1.getEnchantLevel()) + "</a><br>" htmltext = htmltext + "</body></html>" return htmltext def onAdvEvent (self,event,npc,player) : st = player.getQuestState(Qn) htmltext = u"<html><title>Donate Shop</title><body><center>Error!</center></body></html>" if not st : return htmltext strEvent = String(event) if strEvent.startsWith("slot") : intEvent = Integer.parseInt(strEvent.substring(5)) htmltext = "<html><title>Donate Shop</title><body><br>" Item1 = player.getInventory().getPaperdollItemByL2ItemId(getHexSlot(intEvent)) if Item1 != None : if validateItem(Item1.getItemId()) : ItemEnchant = Item1.getEnchantLevel() htmltext = htmltext + "<img src=\"" + getItemIcon(Item1.getItemId()) + "\" width=32 height=32><br>" htmltext = htmltext + u"" + Item1.getItemName() + " +" + str(ItemEnchant) + "<br>" Grade = Item1.getItem().getCrystalType() Itype = str(Item1.getItemType()) if Itype in Jewel and ItemEnchant < MaxEnchantJewel : if ItemEnchant < MaxEnchantJewel : htmltext = htmltext + u"Add 1 enchant = " + str(JPrice[Grade]) + " " + ItemName + "<br>" if ItemEnchant < MaxEnchantJewel : htmltext = htmltext + "<a action=\"bypass -h Quest 919_Enchanter plusone_" + str(intEvent) + u"\">Add +1 enchant!</a><br>" elif Itype in Armor and ItemEnchant < MaxEnchantArmor : if ItemEnchant < MaxEnchantArmor : htmltext = htmltext + u"Add 1 enchant = " + str(APrice[Grade]) + " " + ItemName + "<br>" if ItemEnchant < MaxEnchantArmor : htmltext = htmltext + "<a action=\"bypass -h Quest 919_Enchanter plusone_" + str(intEvent) + u"\">Add +1 enchant!</a><br>" elif Itype in Weapon and ItemEnchant < MaxEnchantWeapon : if ItemEnchant < MaxEnchantWeapon : htmltext = htmltext + u"Add 1 enchant = " + str(WPrice[Grade]) + " " + ItemName + "<br>" if ItemEnchant < MaxEnchantWeapon : htmltext = htmltext + "<a action=\"bypass -h Quest 919_Enchanter plusone_" + str(intEvent) + u"\">Add +1 enchant!</a><br>" elif Itype in Weapon and ItemEnchant >= MaxEnchantWeapon : if ItemEnchant >= MaxEnchantWeapon : htmltext = htmltext + "<br><br><br><br><br> You can't enchant more than <font color=FF0000>+" + str(ItemEnchant) + "</font><br>" else : htmltext = htmltext + "<br><br><br><br><br> You can't enchant more than <font color=FF0000>+" + str(ItemEnchant) + "</font><br>" else : htmltext = htmltext + u"Your item is not equiped! Check it!<br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br></center><img src=\"L2UI_CH3.onscrmsg_pattern01_2\" width=256 height=32>" elif strEvent.startsWith("plusone") : intEvent = Integer.parseInt(strEvent.substring(8)) htmltext = "<html><title>Donate Shop</title><body><br>" Item1 = player.getInventory().getPaperdollItemByL2ItemId(getHexSlot(intEvent)) if Item1 != None : if validateItem(Item1.getItemId()) : Grade = Item1.getItem().getCrystalType() if Grade not in [0] : ItemEnchant = Item1.getEnchantLevel() Itype = str(Item1.getItemType()) if Itype in Jewel : if ItemEnchant < MaxEnchantJewel : iu = InventoryUpdate() player.sendPacket(iu) player.broadcastPacket(CharInfo(player)) player.sendPacket(UserInfo(player)) if st.getQuestItemsCount(Adena) >= JPrice[Grade]: st.takeItems(Adena,JPrice[Grade]) Item1.setEnchantLevel(ItemEnchant+1) ItemEnchant = Item1.getEnchantLevel() st.playSound("ItemSound.quest_itemget") player.sendPacket(ItemList(player,False)) htmltext = htmltext + u"<br>Your jewel was successfully enchanted to + " + str(ItemEnchant) + "</font>!<br>" else : htmltext = htmltext + u"You need <font color=LEVEL>" + str(JPrice[Grade]) + "</font> " + ItemName + " to do that!" # player donate items < to be enchanted else : htmltext = htmltext + u"<br> You cant enchant more than <font color=FF0000>+" + str(ItemEnchant) + "</font><br>" # in case before add enchant the player is enchant manualy his weap from 19 to 20 and then trying to click enchant elif Itype in Armor : if ItemEnchant < MaxEnchantArmor : iu = InventoryUpdate() player.sendPacket(iu) player.broadcastPacket(CharInfo(player)) player.sendPacket(UserInfo(player)) if st.getQuestItemsCount(Adena) >= APrice[Grade]: st.takeItems(Adena,APrice[Grade]) Item1.setEnchantLevel(ItemEnchant+1) ItemEnchant = Item1.getEnchantLevel() st.playSound("ItemSound.quest_itemget") player.sendPacket(ItemList(player,False)) htmltext = htmltext + u"<br>Your armor was successfully enchanted to + " + str(ItemEnchant) + "</font>!<br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br></center><img src=\"L2UI_CH3.onscrmsg_pattern01_2\" width=256 height=32>" else : htmltext = htmltext + u"You need <font color=LEVEL>" + str(JPrice[Grade]) + "</font> " + ItemName + " to do that!" # player donate items < to be enchanted else : htmltext = htmltext + u"<br> You cant enchant more than <font color=FF0000>+" + str(ItemEnchant) + "</font><br>" # in case before add enchant the player is enchant manualy his weap from 19 to 20 and then trying to click enchant elif Itype in Weapon : if ItemEnchant < MaxEnchantWeapon : iu = InventoryUpdate() player.sendPacket(iu) player.broadcastPacket(CharInfo(player)) player.sendPacket(UserInfo(player)) if st.getQuestItemsCount(Adena) >= WPrice[Grade]: st.takeItems(Adena,WPrice[Grade]) Item1.setEnchantLevel(ItemEnchant+1) ItemEnchant = Item1.getEnchantLevel() st.playSound("ItemSound.quest_itemget") player.sendPacket(ItemList(player,False)) htmltext = htmltext + u"<br>Your weapon was successfully enchanted to + " + str(ItemEnchant) + "</font>!<br>" else : htmltext = htmltext + u"You need <font color=LEVEL>" + str(WPrice[Grade]) + "</font> " + ItemName + " to do that!<br>" # player donate items < to be enchanted else : htmltext = htmltext + u"<br> You cant enchant more than <font color=FF0000>+" + str(ItemEnchant) + "</font><br>" # in case before add enchant the player is enchant manualy his weap from 19 to 20 and then trying to click enchant else : htmltext = htmltext + u"Error, i accept only 3 types : Weapon,Armor,Jewel!<br>" #unknown else : htmltext = htmltext + u"Your current weapon's grade is different!<br>" #in case that the player before add enchant, change weapon to no-weapon type else : htmltext = htmltext + u"Error, Your weapon not found!<br>" #unknown else : htmltext = htmltext + u"" htmltext = htmltext + "Your item not found! try again!</body></html>" return htmltext QUEST = Quest(919,Qn,"custom") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(300300) QUEST.addTalkId(300300) and here's the other one where i cannot see all icons. import sys from java.lang import System from com.l2jfrozen.util.database import L2DatabaseFactory from com.l2jfrozen.gameserver.model.quest import State from com.l2jfrozen.gameserver.model.quest import QuestState from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest from com.l2jfrozen.gameserver.network.serverpackets import CharInfo from com.l2jfrozen.gameserver.network.serverpackets import InventoryUpdate from com.l2jfrozen.gameserver.network.serverpackets import ItemList from com.l2jfrozen.gameserver.network.serverpackets import UserInfo from com.l2jfrozen.gameserver.templates import L2Item qn = "q8015_Enchex" #id νοφ NPC = 300300 #id θςεμΰ δλ ηΰςξχκθ ITEM = 3488 #ρςξθμξρςό ηΰςξχκθ ηΰ κΰζδϋι + COST =100 #νΰηβΰνθε θςεμΰ INAME = "Donate Coins" #ροθρξκ ηΰοπεωεννϋυ θςεμξβ FORBIDDEN = [12,132,6611,6612,6620,6617,6619,6618,6621,6614,6616] print "Donate Manager: Loaded 100%" print "Lineage 2: Donate Manager NPC LOADED" 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": htmltext = "<html><body><center><br1>" htmltext += u"<table width=260><tr><td align=center><font color=LEVEL>\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0437\u0430\u0442\u043e\u0447\u043a\u0438</font></td></tr></table>" htmltext += u"<button value=\"Weapon [S]\" action=\"bypass -h Quest q8015_Enchex step1_0\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br>" htmltext += u"<button value=\"Armor [S]\" action=\"bypass -h Quest q8015_Enchex step1_1\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br>" htmltext += u"<button value=\"Jewels [S]\" action=\"bypass -h Quest q8015_Enchex jewerly\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br>" htmltext += "<center><br></center></body></html>" elif event.startswith("step1_"): itemType = int(event.replace("step1_", "")) htmltext = u"<html><center><body><br>Select the item you wish to remove the enchant!<br><br></center><table width=300>" if itemType == 0: TYPES = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt"] elif itemType == 1: TYPES = ["Light","Heavy","Magic"] else: htmltext = u"<html><body></body></html>" return htmltext st.set("type",str(itemType)) for Item in st.getPlayer().getInventory().getItems(): itemTemplate = Item.getItem() idtest = Item.getItemId() itype = str(Item.getItemType()) grade = itemTemplate.getCrystalType() if idtest not in FORBIDDEN and itemTemplate.getDuration() == -1 and grade == 5 and itype in TYPES and Item.getEnchantLevel() > 0: 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("")) 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 q8015_Enchex step1next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + " ["+str(pgrade)+"] " + enchant + "</a></td></tr>" except : try : listitems.close() except : pass try : con.close() except : pass htmltext += u"</table><center></center><br></body></html>" elif event == "jewerly": htmltext = u"<html><center><body><br>Select the item you wish to remove the enchant!<br><br></center><table width=300>" st.set("type","3") for Item in st.getPlayer().getInventory().getItems(): itemTemplate = Item.getItem() idtest = Item.getItemId() itemType = Item.getItem().getType2() grade = itemTemplate.getCrystalType() if idtest not in FORBIDDEN and itemTemplate.getDuration() == -1 and grade == 5 and itemType == L2Item.TYPE2_ACCESSORY and Item.getEnchantLevel() > 0: 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("")) 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 q8015_Enchex step1next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + " ["+str(pgrade)+"] " + enchant + "</a></td></tr>" except : try : listitems.close() except : pass try : con.close() except : pass htmltext += u"</table><center></center><br></body></html>" elif event.startswith("step1next_"): itemObjId = int(event.replace("step1next_", "")) Item = st.getPlayer().getInventory().getItemByObjectId(itemObjId) itemTemplate = Item.getItem() if Item and itemTemplate.getDuration() == -1 and Item.getEnchantLevel() > 0: grade = itemTemplate.getCrystalType() 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("enchant",str(Item.getEnchantLevel())) st.set("oneitem",str(itemObjId)) 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 = u"<html><body><center><br>This item after the transfer<br1>will <font color=LEVEL>NOT</font> gain the enchantment value of the next item.<br>Will be <font color=LEVEL>+0</font>!</center><br>" htmltext += "<table width=300><tr><td><center><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></center></td></tr></table><br><br>" payment = int(Item.getEnchantLevel()*COST) if st.getQuestItemsCount(ITEM) < payment: htmltext += u"<center>You need <font color=ff2400>"+str(payment)+"</font> "+INAME+" for this tranfer!<br>" else: htmltext += u"<center>The cost will be : <font color=adff2f>"+str(payment)+"</font> "+INAME+"</center><br>" htmltext += u"<center><button value=\"Select the next item\" action=\"bypass -h Quest q8015_Enchex step2\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"></center><br>" htmltext += u"<br><a action=\"bypass -h Quest q8015_Enchex spisok\"><center>Back<br><center></center></a></body></html>" except : try : listitems.close() except : pass try : con.close() except : pass else : htmltext = u"<html><body>\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0437\u0430\u0442\u043e\u0447\u043a\u0438:<br>\u041e\u0448\u0438\u0431\u043a\u0430!<br><a action=\"bypass -h Quest q8015_Enchex spisok\">\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f.</a></body></html>" elif event == "step2": htmltext = u"<html><body><center><br><br>Choose the item you want to transfer the enchant!<br><font color=LEVEL>Attention!</font<br><font color=FF0000>The enchantment value of this item<br1>will not transfer to the other item!</font></center><br><table width=300><center>" itemType = st.getInt("type") if itemType == 0: TYPES = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt"] elif itemType == 1: TYPES = ["Light","Heavy","Magic"] weapon1 = st.getInt("oneitem") for Item in st.getPlayer().getInventory().getItems(): itemTemplate = Item.getItem() idtest = Item.getItemId() itype = str(Item.getItemType()) grade = itemTemplate.getCrystalType() if itemType == 0 or itemType == 1: if idtest not in FORBIDDEN and itemTemplate.getDuration() == -1 and grade == 5 and itype in TYPES and Item.getObjectId() != weapon1: 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("")) 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 q8015_Enchex step2next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + " " + str(pgrade) + " " + enchant + "</a></td></tr>" except : try : listitems.close() except : pass try : con.close() except : pass elif itemType == 3: itemType2 = Item.getItem().getType2() if idtest not in FORBIDDEN and itemTemplate.getDuration() == -1 and grade == 5 and itemType2 == L2Item.TYPE2_ACCESSORY and Item.getObjectId() != weapon1: 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("")) 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 q8015_Enchex step2next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + " "+str(pgrade)+" " + enchant + "</a></td></tr>" except : try : listitems.close() except : pass try : con.close() except : pass htmltext += u"</table><br><center><a action=\"bypass -h Quest q8015_Enchex spisok\">Back</a><br></center></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 itemTemplate.getDuration() == -1: grade = itemTemplate.getCrystalType() 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) 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 = u"<html><body><center><br><br>The next item will get the enchantment you want!</center><br>" htmltext += "<table width=300><tr><td><center><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></center></td></tr></table><br><br>" htmltext += u"<center><button value=\"Continue\" action=\"bypass -h Quest q8015_Enchex step3\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"></center><br>" htmltext += u"<br><a action=\"bypass -h Quest q8015_Enchex spisok\"><center>Back<br><br></center></a></body></html>" except : try : listitems.close() except : pass try : con.close() except : pass else : htmltext = u"<html><body><br>\u041e\u0448\u0438\u0431\u043a\u0430!<br><a action=\"bypass -h Quest q8015_Enchex spisok\">\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f.</a></body></html>" elif event.startswith("step3"): weapon1 = st.getInt("oneitem") weapon2 = st.getInt("twoitem") htmltext = u"<html><body><center><br><br>Transfer almost completed!<br>" htmltext += u"<font color=339900>The next item will be +0</font>" Item = st.getPlayer().getInventory().getItemByObjectId(weapon1) itemTemplate = Item.getItem() if Item: grade = itemTemplate.getCrystalType() 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>" payment = int(Item.getEnchantLevel()*COST) if st.getQuestItemsCount(ITEM) < payment: htmltext += u"Transfer cost : <font color=ff2400>"+str(payment)+"</font> "+INAME+"<br>" else: htmltext += u"Transfer cost : <font color=adff2f>"+str(payment)+"</font> "+INAME+"<br>" except : try : listitems.close() except : pass try : con.close() except : pass htmltext += "<font color=339900>The next item will be " + enchant + "</font>" Item = st.getPlayer().getInventory().getItemByObjectId(weapon2) itemTemplate = Item.getItem() if Item: grade = itemTemplate.getCrystalType() 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 += u"<button value=\"Transfer\" action=\"bypass -h Quest q8015_Enchex step4\" width=135 height=24 back=\"L2UI_CH3.bigbutton3_down\" fore=\"L2UI_CH3.bigbutton3\"><br>" else : htmltext = u"<html><body>\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0437\u0430\u0442\u043e\u0447\u043a\u0438:<br>\u041e\u0448\u0438\u0431\u043a\u0430!<br><a action=\"bypass -h Quest q8015_Enchex spisok\">\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f.</a></body></html>" elif event.startswith("step4"): htmltext = u"<html><body><center><br><br><font color=ff2400>Enchant transfer successfully transfered!</font></center><br><br><br>" ench = st.getInt("enchant") payment = int(ench*COST) if st.getQuestItemsCount(ITEM) < payment: htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>You need <font color=ff2400>"+str(payment)+"</font> "+INAME+" for this transfer!</center><br>" return htmltext #< weapon1 = st.getInt("oneitem") weapon2 = st.getInt("twoitem") item1 = st.getPlayer().getInventory().getItemByObjectId(weapon1) item2 = st.getPlayer().getInventory().getItemByObjectId(weapon2) if item1 == None or item2 == None: st.set("enchant","0") htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>One of the selected weapons are missing!<br1>Try again!<br><br></center><br>" return htmltext itemType = st.getInt("type") itype1 = str(item1.getItemType()) itype2 = str(item2.getItemType()) grade1 = item1.getItem().getCrystalType() grade2 = item2.getItem().getCrystalType() #< if item1.getEnchantLevel() != ench: st.set("enchant","0") htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>One of the selected items enchantment has changed!<br1>Try again!<br><br></center><br>" return htmltext #< if grade1 != 5 or grade2 != 5: st.set("enchant","0") htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>Do not try to scam!<br1>Try again!<br><br></center><br>" return htmltext #< if itemType == 0: TYPES = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt"] if itype1 not in TYPES or itype2 not in TYPES: st.set("enchant","0") htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>Do not try to scam!<br1>Try again!<br><br></center><br>" return htmltext elif itemType == 1: TYPES = ["Light","Heavy","Magic"] if itype1 not in TYPES or itype2 not in TYPES: st.set("enchant","0") htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>Do not try to scam!<br1>Try again!<br><br></center><br>" return htmltext elif itemType == 3: jew1 = item1.getItem().getType2() jew2 = item2.getItem().getType2() if jew1 != L2Item.TYPE2_ACCESSORY or jew2 != L2Item.TYPE2_ACCESSORY: st.set("enchant","0") htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>Do not try to scam!<br1>Try again!<br><br></center><br>" return htmltext else: htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>Do not try to scam!<br1>Try again!<br><br></center><br>" return htmltext #< st.takeItems(ITEM,payment) #< slott = item1.getEquipSlot() if slott > 0: testt = player.getInventory().getPaperdollItem(slott) player.getInventory().unEquipItemInSlotAndRecord(slott) item1.setEnchantLevel(0) player.getInventory().equipItemAndRecord(testt) iut = InventoryUpdate() iut.addModifiedItem(testt) player.sendPacket(iut) player.broadcastPacket(CharInfo(player)) player.sendPacket(UserInfo(player)) else: item1.setEnchantLevel(0) player.sendPacket(ItemList(player, False)) #< slot = item2.getEquipSlot() if slot > 0: test = player.getInventory().getPaperdollItem(slot) player.getInventory().unEquipItemInSlotAndRecord(slot) item2.setEnchantLevel(ench) player.getInventory().equipItemAndRecord(test) iu = InventoryUpdate() iu.addModifiedItem(test) player.sendPacket(iu) player.broadcastPacket(CharInfo(player)) player.sendPacket(UserInfo(player)) else: item2.setEnchantLevel(ench) player.sendPacket(ItemList(player, False)) htmltext += u"<center><font color=bef574>The transfer has been successfully completed!</font><br><br></center><br>" else: htmltext = "<html><body><center><br><br><font color=ff2400>Enchant transfer canceled.</font><br><br><br>Do not try to scam!<br1>Try again!<br><br></center><br>" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == NPC: htmltext = "privetstvie.htm" return htmltext QUEST = Quest(8015,qn,"custom") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) Quote
claww Posted December 14, 2016 Author Posted December 14, 2016 As i saw in the second code it take the icons from a table, have you inserted icon location in that sql table ? listitems=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") Quote
melron Posted December 14, 2016 Posted December 14, 2016 (edited) hey guys i have a quick question ..Npc works great but there's one problem ..Icons from customs items do not show to all the services from the npc .. For example npc has , enchanter ( add enchants to your equipment) , transfer enchant ( u know what this is..) When using enchanter ( to add +1 enchant for example ) icons are shown properly But, when using transfer enchant icons are black? can anyone help me with that? I can post u here both _init_py files. here's the right one where i can see all icons. The code is using one if before it takes the icon from z_market_icons. Did you check the conditions? 1# Your weapon musnt be in FORBIDDEN array (look @ the start) 2# Your weapon template must have duration -1 (db part) 3# Your weapon grade must be 5 (S grade) 4# Your weapon type must be in Types TYPES = ["Sword","Blunt","Dagger","Bow","Etc","Pole","Fist","Dual Sword","Dual Fist","Big Sword","Big Blunt"] 5# Your weapon enchant must be more than 0. if idtest not in FORBIDDEN and itemTemplate.getDuration() == -1 and grade == 5 and itype in TYPES and Item.getEnchantLevel() > 0: Edited December 14, 2016 by melron Quote
protoftw Posted December 14, 2016 Posted December 14, 2016 (edited) 1.My weapons and armors id's are between 9400 and 9900 2.The duration of the custom weapons and custom armors i've added is -1 3.The grade of armors/weapons is S GRADE. 4.Types of my weapons belong to the current one your code is asking. 5.The enchant of the weapons is more than 0. but still icons are black ..as i told u ..i can see the icons at (enchanter : where u add +1 enchant) but i cant see them when i try to transfer enchant or augmentation. Edited December 14, 2016 by protoftw Quote
protoftw Posted December 14, 2016 Posted December 14, 2016 (edited) As i saw in the second code it take the icons from a table, have you inserted icon location in that sql table ? listitems=con.prepareStatement("SELECT itemIcon FROM z_market_icons WHERE itemId=?") i have added all icons to that sql table but still..(also the first code uses that table in order to take icons) the first code: https://postimg.org/image/ypqfrgymr/ the second one: https://postimg.org/image/kz2vavu7z/ is it maybe that the first code is using inventory to get icons? and if yes how can i addapt the second code? Edited December 14, 2016 by protoftw Quote
melron Posted December 14, 2016 Posted December 14, 2016 i have added all icons to that sql table but still..(also the first code uses that table in order to take icons) the first code: https://postimg.org/image/ypqfrgymr/ the second one: https://postimg.org/image/kz2vavu7z/ is it maybe that the first code is using inventory to get icons? and if yes how can i addapt the second code? can you paste the item icon path? Quote
protoftw Posted December 14, 2016 Posted December 14, 2016 (edited) is that what u need?? https://postimg.org/image/4rh8bsm2h/ Edited December 14, 2016 by protoftw Quote
melron Posted December 14, 2016 Posted December 14, 2016 (edited) As you can see your icon path is: ct1icon.weapon_dynasty_hammer_i01 if u look closer in line 73 of init.py <img src=\"Icon."+str(icon)+"\" width=32 it load icons with the string of your path and before this string puts Icon. So in this case trying to load the path : Icon.ct1icon.weapon_dynasty_hammer_i01 .... Edited December 14, 2016 by melron Quote
protoftw Posted December 14, 2016 Posted December 14, 2016 (edited) still not working...here's the result:https://postimg.org/image/grnshxnn1/ https://postimg.org/image/m014kei93/ url is not wrong bcs it works for the other options of the npc...the problem is in the code Edited December 14, 2016 by protoftw Quote
melron Posted December 14, 2016 Posted December 14, 2016 still not working...here's the result: https://postimg.org/image/grnshxnn1/ https://postimg.org/image/m014kei93/ url is not wrong bcs it works for the other options of the npc...the problem is in the code just lol... i mean you have to edit this line bro... Make an array named CUSTOM = [you,ids,here,for,example] and before the line 73 use an if statement for example if idtest not in CUSTOM: .... else: .... Quote
protoftw Posted December 14, 2016 Posted December 14, 2016 (edited) so instead of inserting a new IF check should i change the URL name? im not capable of writing a new IF statement ...if u could do it it would be great if not thank you again for the time u've spent answering my questions :P i just deleted this whole part <img src=\"Icon."+str(icon)+"\" width=32 height=32> and now it's just without icons Edited December 14, 2016 by protoftw Quote
melron Posted December 14, 2016 Posted December 14, 2016 (edited) so instead of inserting a new IF check should i change the URL name? im not capable of writing a new IF statement ...if u could do it it would be great if not thank you again for the time u've spent answering my questions :P i just deleted this whole part <img src=\"Icon."+str(icon)+"\" width=32 height=32> and now it's just without icons create one more array like FORBIDDEN and insert your custom weapons ids CUSTOM = [6367,22] and paste these lines in 73 line (in case u deleted) if idtest in CUSTOM: htmltext += "<tr><td><img src=\""+str(icon)+"\" width=32 height=32></td><td><a action=\"bypass -h Quest q8015_Enchex step1next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + " ["+str(pgrade)+"] " + enchant + "</a></td></tr>" else: htmltext += "<tr><td><img src=\"Icon."+str(icon)+"\" width=32 height=32></td><td><a action=\"bypass -h Quest q8015_Enchex step1next_" + str(Item.getObjectId()) +"\">" + itemTemplate.getName() + " ["+str(pgrade)+"] " + enchant + "</a></td></tr>" Edited December 14, 2016 by melron Quote
protoftw Posted December 14, 2016 Posted December 14, 2016 (edited) i fixed it there is no need for new lines ..thanks tho :P all icons are shown properly :) Edited December 14, 2016 by protoftw Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.