Моветон 413 Опубликовано 25 июня, 2012 Приведу пример на продаже ЛСов и Ц-грейд гемстонов на лыжеподобных сборках. Идем в \data\scripts\custom\ Создаём папку, к примеру 2062_LSShop В папке создаём файлы: __init__.py, 1.htm, 2.htm Содержимое __init__.py: import sys 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 import QuestStateManager from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest from java.util import Iterator qn = "2062_LSShop" #Itemz ADENA = 57 COUNT = 1 # NPCz NPC = 80000 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 = " " if not st : return htmltext if npcId == NPC: htmltext = "1.htm" return htmltext def onEvent (self,event,st) : count=st.getQuestItemsCount(57) htmltext = "1.htm" htmltext1 = "2.htm" if event == "1" : if count < 1 : return htmltext1 else : st.giveItems(8762,4) st.takeItems(57,1) if event == "2" : if count < 1 : return htmltext1 else : st.giveItems(2131,15000) st.takeItems(57,1) return htmltext QUEST = Quest(2062, qn, "custom") QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) print "LS Trade Manager Loaded." Содержимое 1.htm: <html> <body> <center> <font color=LEVEL>Обмен</font><br><br><br> <img src="L2UI.SquareWhite" width=260 height=1> <br><br> <a action="bypass -h Quest 2062_LSShop 1">1 Adena - 4 Life Stone's</a><br> <a action="bypass -h Quest 2062_LSShop 2">1 Adena - 15,000 GemStone C</a><br> <br> <img src="L2UI.SquareWhite" width=260 height=1><br> <br><br> </center> </body> </html> Содержимое 2.htm: <html> <body> <center> Недостаточно предметов.<br> <a action="bypass -h Quest 2062_LSShop 1.htm">"Вернутся назад."</a> </center> </body> </html> В \data\scripts\custom\__init__.py добавляем строчку '2062_LSShop', Создаем NPC c id 80000, или меняем id в скрипте на свой Бибас для вызова диалога: <a action="bypass -h Quest 2062_LSShop 1"> Зачем это всё нужно, если есть мультиселлы? Да просто мультиселлы уже за***ли) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 25 июня, 2012 На некоторых сборка можно поймать еррор: java.lang.NullPointerException at net.sf.l2j.gameserver.model.quest.Quest.playerEnter(Quest.java:517) at net.sf.l2j.gameserver.clientpackets.EnterWorld.runImpl(EnterWorld.java:272) at net.sf.l2j.gameserver.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:70) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Лечится так: В скрипте после строчки: QUEST = Quest(2062, qn, "custom") Добавляем: CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 25 июня, 2012 через мультиселы вполне делается Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HECKBuK 229 Опубликовано 25 июня, 2012 Для чего это? Можно просто сделать отдельного NPC и добавить ему мультиселы. смысла не вижу Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Eminence 107 Опубликовано 25 июня, 2012 Для чего это?Можно просто сделать отдельного NPC и добавить ему мультиселы. смысла не вижу Для разгрузки ГСа мультиселамми вашими ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HECKBuK 229 Опубликовано 25 июня, 2012 Если такое и делать, то лишь на замену 1-5 мультиселам писать такое на все мультиселы, смысла нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 25 июня, 2012 много итемов тут умрешь писать) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 26 июня, 2012 Разве никому не надоели мультиселлы и байлисты? Тем более это даёт возможность всё очень красиво оформить. Те же бипасы под текстурками) Уникал контент так сказать) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HECKBuK 229 Опубликовано 26 июня, 2012 Не спорю, контент уникальный. НО! Мне допустим нужен ГМшоп, полный, от НГ до Ы грейда + свои вещи + банки,склянки, + некоторые квест айтемы. В итоге мы получаем более 500 предметов в 1 шопе, и ты мне все эти предметы напишешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 26 июня, 2012 Не спорю, контент уникальный. НО!Мне допустим нужен ГМшоп, полный, от НГ до Ы грейда + свои вещи + банки,склянки, + некоторые квест айтемы. В итоге мы получаем более 500 предметов в 1 шопе, и ты мне все эти предметы напишешь? автор как бы рассчитывал на уникальные предметы, шапки, маски, лс) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HECKBuK 229 Опубликовано 26 июня, 2012 тогда надо писать не ГМшоп а Уник. Шоп) Разница есть! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 26 июня, 2012 Пишите все что угодно) Материал есть) Я вот например пофотошожабил немного и запилил текстурку в клиент, которую потом и запилил в бипас. Смотрится очень эффектно) Но можно просто иконками сделать, тоже будет неплохо смотреться. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 26 июня, 2012 Интересный мануал, полезный, но в тоже время бесполезен для многих посетителей нашего портала, так как для многих быстрее скачать готовый шоп и залить его на свою ГФШ, чем впиливать уник итемы в скриптс-шоп Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 26 июня, 2012 Интересный мануал, полезный, но в тоже время бесполезен для многих посетителей нашего портала, так как для многих быстрее скачать готовый шоп и залить его на свою ГФШ, чем впиливать уник итемы в скриптс-шоп да что тут,с5 минут делов скрамсать итемы и хтмл к шопу) хотите сделаю простенький) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 26 июня, 2012 Хотим, давай) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KFan 7 Опубликовано 26 июня, 2012 (изменено) а в чем проблема написать 1 раз код на продажу? а потом тупо заполнять массив итемами? нафига стока мороки? items = [["CoL",4037, 1, 57, 1000000], [bypassname, productid, productcount, ingridientid, ingridientcount]] def onEvent (self,event,st) : htmltext = "Error" for item in items : if item[0] == event : if st.getQuestItemsCount(item[3]) >= item[4] : st.takeItems(item[3], item[4]) st.giveItems(item[1], item[2]) htmltext = "success.htm" else : st.getPlayer().sendMessage("Бомжара") return htmltext Изменено 26 июня, 2012 пользователем KFan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 26 июня, 2012 Хотим, давай) ок Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 27 июня, 2012 Тык Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты