Перейти к содержанию
Авторизация  
Admiralio

Точилка

Рекомендуемые сообщения

у меня есть скрипт на НПЦ-точилку, он вполне исправно точит вещи, нормально меняет цены в зависимости от уровня заточки.

Я хочу добавить множитель, который будет зависеть от грэйда вещей что-то типа (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)

 

Вот что сюда нужно вписать подскажите плс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

бесплатно делать не будут...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё, множитель по грэйду уже есть, сам с горем по полам разобрался. Так-же добавил отображение цены заточки, дописал фильтр, чтобы вещи заточенные до параметра MAX_ENCHANT_LEVEL и выше не выводились в список, а так-же сделал чтобы вещи всегда дотачивалиьсь до параметра "MAX_ENCHANT_LEVEL" независимо от параметра "AMOUNT_OF_ENCHANT" .

 

Теперь мне бы добавить inventory update, чтобы в случае не корректного завершения работы сервера заточка по любому сохранялась.

в этом то мне хоть кто нибудь поможет то ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...