Перейти к содержанию

Meg

Пользователи
  • Публикаций

    12
  • Зарегистрирован

  • Посещение

  • Отзывы

    N/A

Весь контент Meg

  1. Может это для юр.лиц? Я интересовался месяц назад в тех.поддержке, они говорят что (для физ.лиц) нужно иметь кошелек в одной любой платежной системе. Так что яндекс должен прокатить. Про палку не знаю.
  2. к сожалению в конфигах у меня не получилось найти этот параметр по id (id Short Sword - 1 ) сейчас пробую в ядре искать но пока пусто package main.engine.events.daily.normal.types; import java.util.ArrayList; import java.util.List; import l2j.gameserver.ThreadPoolManager; import l2j.gameserver.data.ItemData; import l2j.gameserver.model.actor.L2Npc; import l2j.gameserver.model.actor.base.ClassId; import l2j.gameserver.model.actor.instance.L2PcInstance; import l2j.gameserver.model.actor.instance.enums.TeamType; import l2j.gameserver.model.holder.LocationHolder; import l2j.gameserver.model.world.L2World; import l2j.gameserver.network.external.server.NpcHtmlMessage; import l2j.gameserver.network.external.server.PlaySound; import l2j.gameserver.network.external.server.PlaySound.PlaySoundType; import l2j.gameserver.network.external.server.SystemMessage; import l2j.gameserver.network.external.server.TutorialShowQuestionMark; import main.data.ConfigData; import main.engine.events.daily.AbstractEvent; import main.holders.objects.CharacterHolder; import main.holders.objects.NpcHolder; import main.holders.objects.PlayerHolder; import main.util.Util; import main.util.UtilMessage; import main.util.UtilSpawn; import main.util.builders.html.HtmlBuilder; /** * @author fissban */ public class NpcClassMaster extends AbstractEvent { private static final int NPC = 12371; // format: // PriceItemId // PriceItemCount // ReardItemId // RewardItemCount // Usar el 0 para no definir ningun valor private static final List<ClassMasterList> ITEM_LIST = new ArrayList<>(); { // Primer cambio de clase ---------------------- var job1 = new ClassMasterList(); job1.setPriceItemId(ConfigData.CLASSMASTER_PRICE_JOB1.getRewardId()); job1.setPriceItemCount(ConfigData.CLASSMASTER_PRICE_JOB1.getRewardCount()); job1.setRewardItemId(ConfigData.CLASSMASTER_REWARD_JOB1.getRewardId()); job1.setRewardItemCount(ConfigData.CLASSMASTER_REWARD_JOB1.getRewardCount()); ITEM_LIST.add(job1); // Segundo cambio de clase ---------------------- var job2 = new ClassMasterList(); job2.setPriceItemId(ConfigData.CLASSMASTER_PRICE_JOB2.getRewardId()); job2.setPriceItemCount(ConfigData.CLASSMASTER_PRICE_JOB2.getRewardCount()); job2.setRewardItemId(ConfigData.CLASSMASTER_REWARD_JOB2.getRewardCount()); job2.setRewardItemCount(ConfigData.CLASSMASTER_REWARD_JOB2.getRewardCount()); ITEM_LIST.add(job2); // Tercer cambio de clase ----------------------- var job3 = new ClassMasterList(); job3.setPriceItemId(ConfigData.CLASSMASTER_PRICE_JOB3.getRewardId()); job3.setPriceItemCount(ConfigData.CLASSMASTER_PRICE_JOB3.getRewardCount()); job3.setRewardItemId(ConfigData.CLASSMASTER_REWARD_JOB3.getRewardCount()); job3.setRewardItemCount(ConfigData.CLASSMASTER_REWARD_JOB3.getRewardCount()); ITEM_LIST.add(job3); } // Spawns private static final List<LocationHolder> SPAWNS = new ArrayList<>(); { SPAWNS.add(new LocationHolder(11283, 15951, -4584));// ClassChange_DE SPAWNS.add(new LocationHolder(115774, -178666, -958));// ClassChange_DW SPAWNS.add(new LocationHolder(45036, 48384, -3060));// ClassChange_E SPAWNS.add(new LocationHolder(-44747, -113865, -208));// ClassChange_ORC SPAWNS.add(new LocationHolder(-84466, 243171, -3729));// ClassChange_TI } // Html private static final String HTML_PATH = "data/html/engine/events/classmaster/"; private static final List<NpcHolder> npcs = new ArrayList<>(); public NpcClassMaster() { registerEvent(ConfigData.ENABLE_ClassMaster, ConfigData.CLASSMASTER_DATE_START, ConfigData.CLASSMASTER_DATE_END); } @Override public void onModState() { switch (getState()) { case START: UtilMessage.sendAnnounceMsg("Event Class Master: Started!", L2World.getInstance().getAllPlayers()); ThreadPoolManager.schedule(() -> { SPAWNS.forEach(loc -> npcs.add(UtilSpawn.npc(NPC, loc.getX(), loc.getY(), loc.getZ(), 0, 0, 0, TeamType.NONE, 0))); }, 20000); break; case END: UtilMessage.sendAnnounceMsg("Event Class Master: End!", L2World.getInstance().getAllPlayers()); npcs.forEach(npc -> npc.getInstance().deleteMe()); break; } } @Override public void onEnterWorld(PlayerHolder ph) { UtilMessage.sendAnnounceMsg("Event Class Master: Started!", ph); } @Override public boolean onInteract(PlayerHolder ph, CharacterHolder character) { if (Util.areObjectType(L2Npc.class, character)) { var npc = (L2Npc) character.getInstance(); if (npc.getId() == NPC) { sendHtmlFile(ph, npc, HTML_PATH + "index.htm"); return true; } } return false; } @Override public void onEvent(PlayerHolder ph, CharacterHolder npc, String event) { if (((NpcHolder) npc).getId() != NPC) { return; } if (event.startsWith("1stClass")) { showHtmlMenu(ph, npc.getObjectId(), 1); } else if (event.startsWith("2ndClass")) { showHtmlMenu(ph, npc.getObjectId(), 2); } else if (event.startsWith("3rdClass")) { showHtmlMenu(ph, npc.getObjectId(), 3); } else if (event.startsWith("change_class")) { try { int val = Integer.parseInt(event.split(" ")[1]); if (checkAndChangeClass(ph.getInstance(), val)) { // Send sound ph.getInstance().sendPacket(new PlaySound(PlaySoundType.CHAR_CHANGE)); // Send html var html = new NpcHtmlMessage(npc.getObjectId()); html.setFile(HTML_PATH + "ok.htm"); html.replace("%name%", ClassId.getById(val).getName()); ph.getInstance().sendPacket(html); } } catch (Exception e) { // } } } public static final void showHtmlMenu(PlayerHolder ph, int objectId, int level) { var html = new NpcHtmlMessage(objectId); var currentClassId = ph.getInstance().getClassId(); if (currentClassId.level() >= level) { html.setFile(HTML_PATH + "nomore.htm"); } else { var minLevel = getMinLevel(currentClassId.level()); if (ph.getInstance().getLevel() >= minLevel) { var menu = new HtmlBuilder(); for (var cid : ClassId.values()) { if (validateClassId(currentClassId, cid) && (cid.level() == level)) { String className = cid.getName(); menu.append("<img src=L2UI_CH3.br_bar2_mp width=204 height=1>"); menu.append("<table width=204>"); menu.append("<tr>"); menu.append("<td><button value=\"", className, "\" action=\"bypass -h Engine NpcClassMaster change_class ", cid.getId() + "\" width=204 height=20 back=L2UI_CH3.br_party1_back2 fore=L2UI_CH3.balloon2_2></td>>"); menu.append("</tr>"); menu.append("</table>"); } } if (menu.toString().length() > 0) { menu.append("<img src=L2UI_CH3.br_bar2_mp width=204 height=1>"); html.setFile(HTML_PATH + "template.htm"); html.replace("%name%", currentClassId.getName()); html.replace("%menu%", menu.toString()); } else { html.setFile(HTML_PATH + "comebacklater.htm"); html.replace("%level%", String.valueOf(getMinLevel(level - 1))); } } else { if (minLevel < Integer.MAX_VALUE) { html.setFile(HTML_PATH + "comebacklater.htm"); html.replace("%level%", String.valueOf(minLevel)); } else { html.setFile(HTML_PATH + "nomore.htm"); } } } html.replace("%objectId%", String.valueOf(objectId)); html.replace("%req_items%", getRequiredItems(level)); ph.getInstance().sendPacket(html); } private static final void showQuestionMark(L2PcInstance player) { var classId = player.getClassId(); if (getMinLevel(classId.level()) > player.getLevel()) { return; } player.sendPacket(new TutorialShowQuestionMark(1001)); } /** * Returns minimum player level required for next class transfer * @param level - current skillId level (0 - start, 1 - first, etc) * @return */ private static final int getMinLevel(int level) { switch (level) { case 0: return 20; case 1: return 40; case 2: return 76; default: return Integer.MAX_VALUE; } } /** * Returns true if class change is possible * @param oldCID current player ClassId * @param val new class index * @return */ private static final boolean validateClassId(ClassId oldCID, int val) { try { return validateClassId(oldCID, ClassId.getById(val)); } catch (Exception e) { // possible ArrayOutOfBoundsException } return false; } /** * Returns true if class change is possible * @param oldCID current player ClassId * @param newCID new ClassId * @return true if class change is possible */ private static final boolean validateClassId(ClassId oldCID, ClassId newCID) { if ((newCID == null) || (newCID.getRace() == null)) { return false; } if (oldCID.equals(newCID.getParent())) { return true; } return false; } private static String getRequiredItems(int level) { level--; var sb = new StringBuilder(); if ((ITEM_LIST.get(level).getPriceItemId() != 0) && (ITEM_LIST.get(level).getPriceItemCount() != 0)) { var count = ITEM_LIST.get(level).getPriceItemCount(); var itemName = ItemData.getInstance().getTemplate(ITEM_LIST.get(level).getPriceItemId()).getName(); sb.append("<tr><td><img src=L2UI_CH3.mapicon_mark width=32 height=32></td>"); sb.append("<td><font color=\"LEVEL\">[" + count + "]</font></td>"); sb.append("<td>[" + itemName + "]</td>"); sb.append("<td><img src=L2UI_CH3.mapicon_mark width=32 height=32></td></tr>"); } else { sb.append("<tr><td>None</td></tr>"); } return sb.toString(); } private static final boolean checkAndChangeClass(L2PcInstance player, int val) { var currentClassId = player.getClassId(); if (getMinLevel(currentClassId.level()) > player.getLevel()) { return false; } if (!validateClassId(currentClassId, val)) { return false; } var newJobLevel = currentClassId.level(); // Weight/Inventory check if (ITEM_LIST.get(newJobLevel).getRewardItemId() != 0) { if ((player.getWeightPenalty() >= 3) || ((player.getInventoryLimit() * 0.8) <= player.getInventory().getSize())) { player.sendPacket(SystemMessage.INVENTORY_LESS_THAN_80_PERCENT); return false; } } // get all required items for class transfer var priceCount = ITEM_LIST.get(newJobLevel).getPriceItemCount(); var priceItemId = ITEM_LIST.get(newJobLevel).getPriceItemId(); if (!player.getInventory().destroyItemByItemId("ClassMaster", priceItemId, priceCount, player, true)) { player.sendPacket(SystemMessage.NOT_ENOUGH_ITEMS); return false; } // reward player with items var rewardCount = ITEM_LIST.get(newJobLevel).getRewardItemCount(); var rewardItemId = ITEM_LIST.get(newJobLevel).getRewardItemId(); player.getInventory().addItem("ClassMaster", rewardItemId, rewardCount, player, true); player.setClassId(val); if (player.isSubClassActive()) { player.getSubClasses().get(player.getClassIndex()).setClassId(player.getActiveClass()); } else { player.setBaseClass(player.getActiveClass()); } player.broadcastUserInfo(); if (((player.getClassId().level() == 1) && (player.getLevel() >= 40)) || ((player.getClassId().level() == 2) && (player.getLevel() >= 76))) { showQuestionMark(player); } return true; } public class ClassMasterList { private int priceItemId; private int priceItemCount; private int rewardItemId; private int rewardItemCount; public ClassMasterList() { // } public int getPriceItemId() { return priceItemId; } public void setPriceItemId(int priceItemId) { this.priceItemId = priceItemId; } public int getPriceItemCount() { return priceItemCount; } public void setPriceItemCount(int priceItemCount) { this.priceItemCount = priceItemCount; } public int getRewardItemId() { return rewardItemId; } public void setRewardItemId(int rewardItemId) { this.rewardItemId = rewardItemId; } public int getRewardItemCount() { return rewardItemCount; } public void setRewardItemCount(int rewardItemCount) { this.rewardItemCount = rewardItemCount; } } } в конфигах тоже вроде ничего такого Enable_ClassMaster = True # End of event ClassMasterDateStart = 24-2-2015 # Start of event ClassMasterDateEnd = 24-2-2020 # Message to start event ClassMasterMessageStart = Class Master Event: Start! # Define the items necessary to make the change of class. [itemId,ItemCount] ClassMasterPriceJob1 = 57,10000 # Define the items necessary to make the change of class. [itemId,ItemCount] ClassMasterPriceJob2 = 57,100000 # Define the items necessary to make the change of class. [itemId,ItemCount] ClassMasterPriceJob3 = 57,1000000 # Define the prize for making the change of class. [itemId,ItemCount] (0,0 to disable) ClassMasterRewardJob1 = 6622,1 # Define the prize for making the change of class. [itemId,ItemCount] (0,0 to disable) ClassMasterRewardJob2 = 6622,1 # Define the prize for making the change of class. [itemId,ItemCount] (0,0 to disable) ClassMasterRewardJob3 = 6622,1 Буду пробовать дальше.. если у кого-нибудь есть понимание этого напишите пожалуйста. За первую профу дает итем правильно а за вторую и третью подменяет любые итемы (кроме адены) на Short Sword
  3. а можешь просто подсказать в каком направлении искать? а я уже там попробую разобраться. а там уже если не получится то обращусь на платной основе.
  4. нпц должен давать указанный итем но что бы я не указывал он дает мне Short Sword (самая простая нг пушка) если я ставлю количество итемов 2 то дает Long Sword (тоже нг пушка) работает исправно только если выставить итем - адену (любые шмотки\другие валюты -автоматически заменяет на нг пушку) но вот что интересно, нпц - кот дающий профу (за каждую профу можно указать приз) за первую профу дает любой итем который укажешь! а за вторую и третью - заменяет на Short Sword. я так понимаю это какая то защита, но где ее искать не понятно, если есть идеи - напишите пожалуйста!
  5. аааа... понял! кажется теперь все стало на свои места, тогда просто сделаю 3 нопки у нпц, каждую со совими цветами и ценой. Спасибо огромное!
  6. Упс.. больше нельзя редактировать сообщение.. Кажется у меня какая-то путаница с else и if.. И я только сейчас опомнился что я добавил стоимость третьему типу но нигде не указал какие цвета должны стоить другую цену (3тий тип) сейчас еще подумаю может разберусь)
  7. Ошибка 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) *цвета одинковые это я временно для теста поставил, еще не менял сами цвета
  8. Ох.. замучался.. не хочет работать и все тут.. что я только не пробовал за эти 2 дня.. Скажите пожалуйста, я совсем не то делаю в поледнем примере да?
  9. Я тоже об этом думал, но... Для теста добавил тут "пункт 5 за 10 блю ева; (нумерация тут это ведь как индификатор в css?) PRICES = { 1: [4355, 3, "Blue Eva"], 2: [4355, 1, "Blue Eva"], 5: [4355, 10, "Blue Eva"], } Дальше сложнее я так догадываюсь что тут нужо копировать вот этот кусочек 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) Но к моему "удивлению" эта чудо догадайка не запустилась *p.s а что за цифра 16? это максимальное количество цветов или что?
  10. Что-то не выходит сделать разную стоимость для разного цвета, может сюда вообще нельзя добавить это "отдельным элементом" а нужно весь скрипт переделывать?
  11. спасибо попробую) это гениально!) большое спасибо! Снова обращаюсь за помощью, просидел целый день, перезапускал скрипт наверно раз 200) но видимо интуитивно без знаний программирования это не сделать (или я недогадливый), все время ошибки.. Можете пожалуйста подсказать как добавить в этот скрипт что бы разный цвет стоил по разному? или это так просто не реализовать?
  12. Програмировать не умею, пробовал сам разобраться как сделать, но увы, скрипт все время выдает ошибки. Менеджер покраски ника на 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 на некую фенкцию которая не забирает а проверяет но ничего не выходит..
×
×
  • Создать...