Admiralio 0 Опубликовано 23 февраля, 2011 у меня есть скрипт на НПЦ-точилку, он вполне исправно точит вещи, нормально меняет цены в зависимости от уровня заточки. Я хочу добавить множитель, который будет зависеть от грэйда вещей что-то типа (d=1; c=2; b=3; a=4; s=5; s80=6; s84=7), то есть все эти множители нужно как-то объединить под одну общую переменную, которую я смогу вписать в скрипт. Помогите плс)) вот сам код скрипта: import sys from com.l2emu import Config from com.l2emu.gameserver.model.quest import State from com.l2emu.gameserver.model.quest import QuestState from com.l2emu.gameserver.model.quest.jython import QuestJython as JQuest qn = "55554_NPCEnchant" ENCHANT_PRICE_ID = 57 # ID вещи в качестве оплаты заточки ENCHANT_PRICE_COUNT = 2000 # цена заточки (умножается на уровень вещи, который будет после заточки) AMOUNT_OF_ENCHANT = 1 # на сколько уровней повышать заточку MAX_ENCHANT_LEVEL = 25 # Максимальный уровень заточки ENCHANT_NPC = 80007 weapons = ['Sword','Blunt','Dagger','Bow','Pole' ,'Etc','Fist','Dual Sword','Dual Fist','Big Sword','Big Blunt','Ancient','Crossbow','Rapier'] armors = ['Light','Heavy','Magic','Shield'] jewels = ['None'] acceptableItemTypes = weapons+armors+jewels class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : if event == "choose_item" : htmltext = "" for Item in st.getPlayer().getInventory().getItems(): itemType = Item.getItem().getItemType().toString() grade = Item.getItem().getCrystalType() if itemType in acceptableItemTypes and grade > 0 : htmltext += "<a action=\"bypass -h Quest 55554_NPCEnchant enchantItem_" + str(Item.getObjectId()) +"\">" + Item.getItem().getName() + "+" + str(Item.getEnchantLevel()) + "</a><br>" if htmltext == "": htmltext = "." htmltext = "<html><body>.<br>" + htmltext + "</body></html>" elif event.startswith("enchantItem_"): objId = int(event.replace("enchantItem_", "")) Item = st.getPlayer().getInventory().getItemByObjectId(objId ) if Item and not Item.isEquipped() : itemType = Item.getItem().getItemType().toString() itemEnchant = Item.getEnchantLevel() if st.getQuestItemsCount(ENCHANT_PRICE_ID) >= ENCHANT_PRICE_COUNT*(itemEnchant+AMOUNT_OF_ENCHANT) : if (itemType in weapons and itemEnchant > (MAX_ENCHANT_LEVEL-AMOUNT_OF_ENCHANT)) or (itemType in armors and itemEnchant > (MAX_ENCHANT_LEVEL-AMOUNT_OF_ENCHANT)) or (itemType in jewels and itemEnchant > (MAX_ENCHANT_LEVEL-AMOUNT_OF_ENCHANT)) : htmltext = "reachedMaxEnchant.htm" else : st.takeItems(ENCHANT_PRICE_ID, ENCHANT_PRICE_COUNT*(itemEnchant+AMOUNT_OF_ENCHANT)) Item.setEnchantLevel(itemEnchant+AMOUNT_OF_ENCHANT) htmltext = "congratulations.htm" else : htmltext = "notEnoughItems.htm" else : htmltext = "cheater.htm" return htmltext def onTalk (self,npc,player): htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>" st = player.getQuestState(qn) if not st : return htmltext if npc.getNpcId() == ENCHANT_NPC : htmltext = "1.htm" return htmltext QUEST = Quest(55554,qn,"NPCEnchant") QUEST.addStartNpc(ENCHANT_NPC) QUEST.addTalkId(ENCHANT_NPC) Вот что сюда нужно вписать подскажите плс. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Admiralio 0 Опубликовано 25 февраля, 2011 АП, что никто питоном не занимается ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KFan 7 Опубликовано 2 марта, 2011 бесплатно делать не будут... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Admiralio 0 Опубликовано 5 марта, 2011 Всё, множитель по грэйду уже есть, сам с горем по полам разобрался. Так-же добавил отображение цены заточки, дописал фильтр, чтобы вещи заточенные до параметра MAX_ENCHANT_LEVEL и выше не выводились в список, а так-же сделал чтобы вещи всегда дотачивалиьсь до параметра "MAX_ENCHANT_LEVEL" независимо от параметра "AMOUNT_OF_ENCHANT" . Теперь мне бы добавить inventory update, чтобы в случае не корректного завершения работы сервера заточка по любому сохранялась. в этом то мне хоть кто нибудь поможет то ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты