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

Гмшоп На Питоне - Легко!

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

Приведу пример на продаже ЛСов и Ц-грейд гемстонов на лыжеподобных сборках.

 

 

Идем в \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">

 

Зачем это всё нужно, если есть мультиселлы?

Да просто мультиселлы уже за***ли)

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


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

На некоторых сборка можно поймать еррор:

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)

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


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

через мультиселы вполне делается

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


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

Для чего это?

Можно просто сделать отдельного NPC и добавить ему мультиселы.

смысла не вижу

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


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

Можно просто сделать отдельного NPC и добавить ему мультиселы.

смысла не вижу

 

Для разгрузки ГСа мультиселамми вашими )

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


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

Если такое и делать, то лишь на замену 1-5 мультиселам

писать такое на все мультиселы, смысла нет.

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


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

много итемов тут умрешь писать)

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


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

Разве никому не надоели мультиселлы и байлисты?

Тем более это даёт возможность всё очень красиво оформить. Те же бипасы под текстурками) Уникал контент так сказать)

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


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

Не спорю, контент уникальный. НО!

Мне допустим нужен ГМшоп, полный, от НГ до Ы грейда + свои вещи + банки,склянки, + некоторые квест айтемы.

В итоге мы получаем более 500 предметов в 1 шопе, и ты мне все эти предметы напишешь?:(

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


Ссылка на сообщение
Поделиться на другие сайты
Не спорю, контент уникальный. НО!

Мне допустим нужен ГМшоп, полный, от НГ до Ы грейда + свои вещи + банки,склянки, + некоторые квест айтемы.

В итоге мы получаем более 500 предметов в 1 шопе, и ты мне все эти предметы напишешь?:(

 

автор как бы рассчитывал на уникальные предметы, шапки, маски, лс)

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


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

тогда надо писать не ГМшоп

а Уник. Шоп)

Разница есть!

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


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

Пишите все что угодно) Материал есть)

Я вот например пофотошожабил немного и запилил текстурку в клиент, которую потом и запилил в бипас.

Смотрится очень эффектно)

Но можно просто иконками сделать, тоже будет неплохо смотреться. :(

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


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

Интересный мануал, полезный, но в тоже время бесполезен для многих посетителей нашего портала, так как для многих быстрее скачать готовый шоп и залить его на свою ГФШ, чем впиливать уник итемы в скриптс-шоп

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


Ссылка на сообщение
Поделиться на другие сайты
Интересный мануал, полезный, но в тоже время бесполезен для многих посетителей нашего портала, так как для многих быстрее скачать готовый шоп и залить его на свою ГФШ, чем впиливать уник итемы в скриптс-шоп

 

да что тут,с5 минут делов скрамсать итемы и хтмл к шопу) хотите сделаю простенький)

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


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

а в чем проблема написать 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

Изменено пользователем KFan

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


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

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

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

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

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

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

Войти

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

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

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

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

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