Jump to content
Sign in to follow this  
Meg

Что бы скрипт не забирал итем а просто проверял его наличие

Recommended Posts

Posted (edited)

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

Менеджер покраски ника на PWSoft, в данный момент он забирает Blue Eva (id 4355) а нужно сделать так что бы он просто проверял есть ли предмет в инвентаре..

Можете пожалуйста подсказать как это сделать?

import sys
from java.lang import System
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

qn = "q8024_ChgColor"

NPC = 50001

PRICES = {
1: [4355, 3, "Blue Eva"],
2: [4355, 1, "Blue Eva"],
}

COLOURS = {
1: ["00FF00","00FF00"],
2: ["16721c","1c7216"],
3: ["00FFFF","FFFF00"],
4: ["FF0000","0000FF"],
5: ["FFFB00","00FBFF"],
6: ["337fe6","e67f33"],
7: ["DDA0DD","DDA0DD"],
8: ["808080","808080"],
9: ["000000","000000"],
10: ["81c739","81c739"],
11: ["9120b1","b12091"],
12: ["7c2196","96217c"],
13: ["811664","641681"],
14: ["6b4558","58456b"],
}    

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 == "step1":
     htmltext = "<html><body><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI.SquareBlank\" width=260 height=2><br1>"       
     htmltext += "Что красим?<font color=999966>*</font><br><center><table width=180><tr>"
     htmltext += "<td><button value=\"Ник\" action=\"bypass -h Quest q8024_ChgColor var_1\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td>"
     htmltext += "<td width=40></td>"
     htmltext += "<td><button value=\"Титул\" action=\"bypass -h Quest q8024_ChgColor var_2\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td>"
     htmltext += "</tr></table></center><br><br><font color=999966>*Изза особенностей ЖК-мониторов, цвета на чаре могут выглядить немного ярче или темнее.</font><br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></body></html>"
   elif event.startswith("var_"):
     vtype = int(event.replace("var_", ""))
     if vtype == 1:
       sample = "### " + player.getName() + " ###"
     else:
       sample = "### " + player.getTitle() + " ###"
     htmltext = "<html><body>Покраска:<br>"
     htmltext += "Стоимость: "+str(PRICES[vtype][1])+" "+str(PRICES[vtype][2])+"<br><br>"
     htmltext += "<html><body>>Выберите желаемый цвет из списка:<br><br>"
    #<
     htmltext += "<table width=300>"
     for i in COLOURS.keys():
       htmltext += "<tr><td width=20></td><td><font color="+str(COLOURS[i][1])+">"+str(sample)+"</font></td><td><a msg=\"Точно красим?\" action=\"bypass -h Quest q8024_ChgColor paint_"+str(vtype)+"_"+str(i)+"\">>>>></a></td></tr>"
       htmltext += "<tr><td width=20></td><td><br></td><td></td></tr>"
     htmltext += "</table>"
    #< 
     htmltext += "<a action=\"bypass -h Quest q8024_ChgColor step1\">Вернуться.</a></body></html>"
   elif event.startswith("paint_"):
     get = str(event.replace("paint_", ""))
     vtype,color=get.split("_")
     vtype,color=int(vtype),int(color)
    #<
     paintcolor = int(COLOURS[color][0],16)
     if vtype == 1:
       if st.getQuestItemsCount(PRICES[1][0]) < int(PRICES[1][1]):
         htmltext = "<html><body>Покраска: <font color=74bff5>"+str(PRICES[1][1])+" "+str(PRICES[1][2])+"</font></body></html>"
         return htmltext
       st.takeItems(PRICES[1][0],PRICES[1][1])
       player.getAppearance().setNameColor(paintcolor)
     else:
       if st.getQuestItemsCount(PRICES[2][0]) < int(PRICES[2][1]):
         htmltext = "<html><body>Покраска: <font color=74bff5>"+str(PRICES[2][1])+" "+str(PRICES[2][2])+"</font></body></html>"
         return htmltext
       st.takeItems(PRICES[2][0],PRICES[2][1])
       player.getAppearance().setTitleColor(paintcolor)
    #<
     player.broadcastUserInfo()
     player.store()
     htmltext =  "<html><body>Покраска:<br>Готово.<br><br><br><a action=\"bypass -h Quest q8024_ChgColor step1\">Вернуться.</a></body></html>"
   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 = "<html><body><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI.SquareBlank\" width=260 height=2><br1>"       
     htmltext += "Что красим?<font color=999966>*</font><br><center><table width=180><tr>"
     htmltext += "<td><button value=\"Ник\" action=\"bypass -h Quest q8024_ChgColor var_1\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td>"
     htmltext += "<td width=40></td>"
     htmltext += "<td><button value=\"Титул\" action=\"bypass -h Quest q8024_ChgColor var_2\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"></td>"
     htmltext += "</tr></table></center><br><br><font color=999966>*Изза особенностей ЖК-мониторов, цвета на чаре могут выглядить немного ярче или темнее.</font><br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></body></html>"
   return htmltext

QUEST       = Quest(8024,qn,"custom")
CREATED     = State('Start', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

 

*я догадываюсь что нужно поменять takeItems на некую фенкцию которая не забирает а проверяет но ничего не выходит..

Edited by Meg

Share this post


Link to post
Share on other sites
Posted (edited)

itemid > 0 = true

else - false - недостаточно предметов

 

как преобразовать это в правильный код, думаю ,мозгов хватит

самый банальный пример.

Edited by Khrome

Share this post


Link to post
Share on other sites
st.takeItems(PRICES[1][0],PRICES[1][1])

 

st.takeItems(PRICES[2][0],PRICES[2][1])

убрать эти строки и готово, нужные проверки уже есть.

Share this post


Link to post
Share on other sites
19 часов назад, Khrome сказал:

itemid > 0 = true

else - false - недостаточно предметов

 

как преобразовать это в правильный код, думаю ,мозгов хватит

самый банальный пример.

спасибо попробую)

6 часов назад, Formatter сказал:

st.takeItems(PRICES[1][0],PRICES[1][1])

 


st.takeItems(PRICES[2][0],PRICES[2][1])

убрать эти строки и готово, нужные проверки уже есть.

это гениально!) большое спасибо!

 

Снова обращаюсь за помощью, просидел целый день, перезапускал скрипт наверно раз 200) но видимо интуитивно без знаний программирования это не сделать (или я недогадливый), все время ошибки..

 

Можете пожалуйста подсказать как добавить в этот скрипт что бы разный цвет стоил по разному? или это так просто не реализовать?

Share this post


Link to post
Share on other sites
Posted (edited)

Что-то не выходит сделать разную стоимость для разного цвета, может сюда вообще нельзя добавить это "отдельным элементом" а нужно весь скрипт переделывать?

Edited by Meg

Share this post


Link to post
Share on other sites

для каждого цвета отдельные проверки делать

Share this post


Link to post
Share on other sites
Posted (edited)
46 minutes ago, Khrome said:

для каждого цвета отдельные проверки делать

Я тоже об этом думал, но...

 Для теста добавил тут "пункт 5 за 10 блю ева;

(нумерация тут это ведь как индификатор в css?:unsure:)

PRICES = {
1: [4355, 3, "Blue Eva"],
2: [4355, 1, "Blue Eva"],
5: [4355, 10, "Blue Eva"],
}

Дальше сложнее :D я так догадываюсь что тут нужо копировать вот этот кусочек

     paintcolor = int(COLOURS[color][0],16)
     if vtype == 1:
       if st.getQuestItemsCount(PRICES[1][0]) < int(PRICES[1][1]):
         htmltext = "<html><body>Покраска: <font color=74bff5>"+str(PRICES[1][1])+" "+str(PRICES[1][2])+"</font></body></html>"
         return htmltext
       player.getAppearance().setNameColor(paintcolor)

И дописать в PRICES "5"..  т.е так?

     paintcolor = int(COLOURS[color][0],16)
     if vtype == 1:
       if st.getQuestItemsCount(PRICES[5][0]) < int(PRICES[5][1]):
         htmltext = "<html><body>Покраска: <font color=74bff5>"+str(PRICES[5][1])+"
         return htmltext
       player.getAppearance().setNameColor(paintcolor)

Но к моему "удивлению" эта чудо догадайка не запустилась :unknw:

*p.s а что за цифра 16? это максимальное количество цветов или что?

 

Edited by Meg

Share this post


Link to post
Share on other sites
Posted (edited)

Ох.. замучался.. не хочет работать и все тут.. что я только не пробовал за эти 2 дня..

Скажите пожалуйста, я совсем не то делаю в поледнем примере да?

 

Edited by Meg

Share this post


Link to post
Share on other sites

ты покажи ошибки какие дает

и это питон, тут важно какие знаки пунктуации (если в строке 5 пробелов то таб и 2 пробела будут давать ошибку) может в этом причина

Share this post


Link to post
Share on other sites
12 минут назад, Solution сказал:

за 500 рублей на яву перепишу)

продешевил

Share this post


Link to post
Share on other sites
Posted (edited)
2 hours ago, TURGOR said:

ты покажи ошибки какие дает

и это питон, тут важно какие знаки пунктуации (если в строке 5 пробелов то таб и 2 пробела будут давать ошибку) может в этом причина

Ошибка failed to import custom : q8024_ChgColor (ничего больше не пишет)

import sys
from java.lang import System
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

qn = "q8024_ChgColor"

NPC = 99999

PRICES = {
1: [4355, 30, "Blue Eva"],
2: [4355, 20, "Blue Eva"],
5: [4355, 10, "Blue Eva"],
}

COLOURS = {
1: ["16721c","1c7216"],
2: ["00FFFF","FFFF00"],
3: ["FF0000","0000FF"],
4: ["FFFB00","00FBFF"],
5: ["337fe6","e67f33"],
6: ["DDA0DD","DDA0DD"],
7: ["808080","808080"],
8: ["81c739","81c739"],

9:  ["16721c","1c7216"],
10: ["00FFFF","FFFF00"],
11: ["FF0000","0000FF"],
12: ["FFFB00","00FBFF"],
13: ["337fe6","e67f33"],
14: ["DDA0DD","DDA0DD"],
15: ["808080","808080"],
16: ["81c739","81c739"],
}   

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 == "step1":
     htmltext = "<html><body><title>Box</title><br><br><br><br1>"      
     htmltext += "  Что красим?<font color=3aebff>*</font><br><center><table width=180><tr>"
     htmltext += "<td><button value=\"Ник\" action=\"bypass -h Quest q8024_ChgColor var_1\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td>"
     htmltext += "<td width=40></td>"
     htmltext += "<td><button value=\"Титул\" action=\"bypass -h Quest q8024_ChgColor var_2\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td>"
     htmltext += "</body></html>" 
   elif event.startswith("var_"):
     vtype = int(event.replace("var_", ""))
     if vtype == 1:
       sample = "### " + player.getName() + " ###"
     else:
       sample = "### " + player.getTitle() + " ###"
     htmltext = "<html><body><title>Box</title>  Покраска:<br>"
     htmltext += "  Стоимость: "+str(PRICES[vtype][1])+" "+str(PRICES[vtype][2])+"<br><br>"
     htmltext += "<html><body><title>Box</title>  >Выберите желаемый цвет из списка:<br><br>"
    #<
     htmltext += "<table width=300>"
     for i in COLOURS.keys():
       htmltext += "<tr><td width=20></td><td><font color="+str(COLOURS[i][1])+">"+str(sample)+"</font></td><td><a msg=\"Точно красим?\" action=\"bypass -h Quest q8024_ChgColor paint_"+str(vtype)+"_"+str(i)+"\">>>>></a></td></tr>"
       htmltext += "<tr><td width=20></td><td><br></td><td></td></tr>"
     htmltext += "</table>"
    #< 
     htmltext += "<a action=\"bypass -h Quest q8024_ChgColor step1\">Вернуться.</a></body></html>"
   elif event.startswith("paint_"):
     get = str(event.replace("paint_", ""))
     vtype,color=get.split("_")
     vtype,color=int(vtype),int(color)
    #<
     paintcolor = int(COLOURS[color][0],16)
	 if vtype == 1:
       if st.getQuestItemsCount(PRICES[5][0]) < int(PRICES[5][1]):
         htmltext = "<html><body><title>Box</title>  Покраска: <font color=74bff5>"+str(PRICES[5][1])+"</font></body></html>"
         return htmltext
       player.getAppearance().setNameColor(paintcolor)
     if vtype == 1:
       if st.getQuestItemsCount(PRICES[1][0]) < int(PRICES[1][1]):
         htmltext = "<html><body><title>Box</title>  Покраска: <font color=74bff5>"+str(PRICES[1][1])+" "+str(PRICES[1][2])+"</font></body></html>"
         return htmltext
       player.getAppearance().setNameColor(paintcolor)
     else:
       if st.getQuestItemsCount(PRICES[2][0]) < int(PRICES[2][1]):
         htmltext = "<html><body><title>Box</title>  Покраска: <font color=74bff5>"+str(PRICES[2][1])+" "+str(PRICES[2][2])+"</font></body></html>"
         return htmltext
       player.getAppearance().setTitleColor(paintcolor)
    #<
     player.broadcastUserInfo()
     player.store()
     htmltext =  "<html><body><title>Box</title>  Покраска:<br>  Готово.<br><br><br><a action=\"bypass -h Quest q8024_ChgColor step1\">Вернуться.</a></body></html>"
   else:
     htmltext = "<html><body><title>Box</title>  Покраска:<br>Oops!</body></html>"
   return htmltext

 def onTalk (self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   if npcId == NPC:
     htmltext = "<html><body><title>Box</title><br><br><br><br1>"      
     htmltext += "  Что красим?<font color=3aebff>*</font><br><center><table width=180><tr>"
     htmltext += "<td><button value=\"Ник\" action=\"bypass -h Quest q8024_ChgColor var_1\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td>"
     htmltext += "<td width=40></td>"
     htmltext += "<td><button value=\"Титул\" action=\"bypass -h Quest q8024_ChgColor var_2\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td>"
     htmltext += "</body></html>" 
   return htmltext

QUEST       = Quest(8024,qn,"custom")
CREATED     = State('Start', QUEST)

QUEST.setInitialState(CREATED)

QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

*цвета одинковые это я временно для теста поставил, еще не менял сами цвета

Edited by Meg

Share this post


Link to post
Share on other sites
Posted (edited)

Упс.. больше нельзя редактировать сообщение..

Кажется у меня какая-то путаница с else и if.. 

И я только сейчас опомнился что я добавил стоимость третьему типу но нигде не указал какие цвета должны стоить другую цену (3тий тип) сейчас еще подумаю может разберусь)

Edited by Meg

Share this post


Link to post
Share on other sites
Posted (edited)

image.png.447abb53c51a4b9b6b6fd476a4705e42.png

image.png.cced62e838a8113e97c9c8afdc7605ad.png

включите "отображать все символы" в нотепад++

в вашем варианте должно быть 5 пробелов тут, а не таб и пробел

 

 

и тут вроде одинаковая проверка

image.png.c4df427d528b03f432c8e2c988dd585c.png

 

Edited by TURGOR

Share this post


Link to post
Share on other sites

У вас в прайсе цены за покраску ника и тутула, 1 и 2 соответственно. 

5 нет в варианте

PRICES = {
1: [4355, 30, "Blue Eva"],
2: [4355, 20, "Blue Eva"],
5: [4355, 10, "Blue Eva"],
}

 

5 не сработает

вы когда выбираете что красить ту цену и будет брать 

Share this post


Link to post
Share on other sites
3 minutes ago, TURGOR said:

У вас в прайсе цены за покраску ника и тутула, 1 и 2 соответственно. 

5 нет в варианте

PRICES = {
1: [4355, 30, "Blue Eva"],
2: [4355, 20, "Blue Eva"],
5: [4355, 10, "Blue Eva"],
}

 

5 не сработает

вы когда выбираете что красить ту цену и будет брать 

аааа... понял! кажется теперь все стало на свои места, тогда просто сделаю 3 нопки у нпц, каждую со совими цветами и ценой.

Спасибо огромное!

Share this post


Link to post
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...