- 0
This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..
Question
protoftw
hey guys i have a quick question for this npc: http://www.maxcheaters.com/topic/144148-donation-npc-item-market-for-l2jfrozen/..
The Donate Shop Npc...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 one where icons appear black
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)1 answer to this question
Recommended Posts