Twain
Rawr Community
Открываем папку D:\server\gameserver\data\jscript\custom - и тут создаем папочку 9999_NPCBuffer
Далее тут же D:\server\gameserver\data\jscript\custom ищем файлик с названием __init__.py и у вас например там такое
Код:
__all__ = [
'3995_echo',
'4000_ShadowWeapons',
'7000_HeroItems',
'7782_Recz',
'7785_HeroSF',
'8000_RaidbossInfo',
'7779_LazyNooblez',
'6050_KetraOrcSupport',
'6051_VarkaSilenosSupport'
]
print ""
print "importing custom data ..."
for name in __all__ :
try :
__import__('data.jscript.custom.'+name,globals(), locals(), ['__init__'], -1)
except:
print "failed to import quest : ",name
print "... done"
print ""
что вам нужно, ето вписать туда своего бафера и код должен получится следующий
Код
__all__ = [
'3995_echo',
'4000_ShadowWeapons',
'7000_HeroItems',
'7782_Recz',
'7785_HeroSF',
'8000_RaidbossInfo',
'7779_LazyNooblez',
'6050_KetraOrcSupport',
'6051_VarkaSilenosSupport',
'9999_NPCBuffer'
]
print ""
print "importing custom data ..."
for name in __all__ :
try :
__import__('data.jscript.custom.'+name,globals(), locals(), ['__init__'], -1)
except:
print "failed to import quest : ",name
print "... done"
print ""
все бафера вписали теперь копируем етот файлик _init_.py и вставляем сюда D:\server\gameserver\data\jscript\custom\9999_NPCBuffer
далее создаем здесь D:\server\gameserver\data\jscript\custom\9999_NPCBuffer файлики например 1.htm 2.htm ( ети файлы ето раззделы с бафами )
и так открываем штмл файлик через блокнот и пишем следующее
Цитата
<html>
<body>
<center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<font color="FF40FF">[COLOR=#ff0000]Бафер[/COLOR]</font><br>
<br>
<font color="00FFBB">Список баффоф:</font><br>
<tr><td><img src="L2UI.SquareWhite" width=260 height=1></tr></td><br>
<tr><td></td><td><button value="Лечить - 1k" action="bypass -h Quest 9999_NPCBuffer 6" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td></tr><br>
<tr><td></td><td><button value="CP - 1k" action="bypass -h Quest 9999_NPCBuffer 69" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td></tr><br>
<tr><td><img src="L2UI.SquareWhite" width=260 height=1></tr></td><br>
<tr>
<td><button value="[COLOR=#f4a460]Баффы[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]4.htm[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Танцы[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]2.htm[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="[COLOR=#ff8c00]Песни[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]3.htm[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Чанты[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]7.htm[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="Животные" action="bypass -h Quest 9999_NPCBuffer 8.htm" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="Дополнительно" action="bypass -h Quest 9999_NPCBuffer 9.htm" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<tr><td><img src="L2UI.SquareWhite" width=260 height=1></tr></td><br>
</center>
</body>
</html>
Красный - надпись Вверху менюшки бафера
Оранжевый - Надпись на картинке что бы зайти в список баффов
Голубой - название штмл при нажатие на картинку вас будет перемещать в тот штмл который вы указали
Далее: настраиваем баффы
Открываем файлик 2.htm и вписываем например это:
Оранжевый - Надпись на картинке что бы зайти в список баффов
Голубой - название штмл при нажатие на картинку вас будет перемещать в тот штмл который вы указали
Далее: настраиваем баффы
Открываем файлик 2.htm и вписываем например это:
Код:
<html>
<body>
<center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<tr>
<td><font color="00FFBB">[COLOR=#ff0000]Танцы (20k каждый)[/COLOR]</font></td>
</tr>
<tr>
<td> </td>
</tr>
<tr><td><img src="L2UI.SquareWhite" width=260 height=1></tr></td>
<table width="260">
<tr>
<td><button value="[COLOR=#ff8c00]Warrior[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]27[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Inspiration[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]28[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="[COLOR=#f4a460]Mystic[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#00ffff]29[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Fire[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#00ffff]30[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="[COLOR=#f4a460]Fury[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#48d1cc]31[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Concentration[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#00ffff]32[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="[COLOR=#f4a460]Light[/COLOR]" action="bypass -h Quest 9999_NPCBuffer 33" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Aqua Guard[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#00ffff]34[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="[COLOR=#f4a460]Earth Guard[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#00ffff]35[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="[COLOR=#f4a460]Vampire[/COLOR]" action="bypass -h Quest 9999_NPCBuffer [COLOR=#00ffff]36[/COLOR]" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</table><br>
<tr><td><img src="L2UI.SquareWhite" width=260 height=1></tr></td><br>
<td><button value="Назад" action="bypass -h Quest 9999_NPCBuffer 1.htm" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</center>
</body>
</html>
Крастный - Надпись вверху списка денсов
Оранжевый - Слово на картинке при нажатие на которую будет даватся Бафф
Голубой - етот номер вам ещо понадобится обязательно смотрите что бы они шли попорядку
Следующий Пункт у нас Добавление самих бафов :
открываем D:\server\gameserver\data\jscript\custom\9999_NPCBuffer и открывайте файлик __init__.py
Там у вас должно быть пусто так что вписываем туда примерно такое:
Код:
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j import L2DatabaseFactory
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 = "9999_NPCBuffer"
NPC=[[COLOR=#ffff00]70022[/COLOR]]
ADENA_ID=[COLOR=#ffff00]57[/COLOR]
QuestId = 9999
QuestName = "NPCBuffer"
QuestDesc = "custom"
InitialHtml = "1.htm"
print "importing custom: 9999: NPCBuffer"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self,event,st):
htmltext = event
count=st.getQuestItemsCount(ADENA_ID)
if count < 150000 or st.getPlayer().getLevel() < 1 :
htmltext = "<html><head><body>You dont have enough Adena,<br> or your level is too low. You must be 40 or higher.</body></html>"
else:
st.takeItems(ADENA_ID,0)
st.getPlayer().setTarget(st.getPlayer())
if event == "2":
st.takeItems(ADENA_ID,160000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4360,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4359,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4358,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4357,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4354,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4353,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4350,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4347,6),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "3":
st.takeItems(ADENA_ID,80000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4352,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4351,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4355,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4356,3),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "4":
st.takeItems(ADENA_ID,140000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4346,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4342,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4343,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4344,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4345,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4349,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4348,6),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "5":
st.takeItems(ADENA_ID,400000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4360,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4359,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4358,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4357,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4354,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4353,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4350,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4348,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4352,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4351,6),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4355,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4356,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4346,4),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4342,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4343,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4344,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4345,3),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4349,2),False,False)
st.getPlayer().restoreHPMP()
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4347,6),False,False)
st.getPlayer().restoreHPMP()
return "4.htm"
st.setState(COMPLETED)
if event == "6":
st.takeItems(ADENA_ID,1000)
st.getPlayer().restoreHPMP()
return "1.htm"
st.setState(COMPLETED)
#[COLOR=#8b0000]Wind Walk[/COLOR]
[COLOR=#00ffff]if event == "7":[/COLOR]
[COLOR=#2e8b57]st.takeItems(ADENA_ID,25000)[/COLOR]
st.getPlayer().useMagic(SkillTable.getInstance().getInfo([COLOR=#c0c0c0]4342[/COLOR],[COLOR=#0000ff]2[/COLOR]),False,False)
st.getPlayer().restoreHPMP()
return "[COLOR=#ff00ff]5.htm[/COLOR]"
st.setState(COMPLETED)
#Decrease Weight
if event == "8":
st.takeItems(ADENA_ID,25000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4343,3),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
st.setState(COMPLETED)
if htmltext != event:
st.setState(COMPLETED)
st.exitQuest(1)
return htmltext
def onTalk (self,npc,player):
st = player.getQuestState(qn)
htmltext = "<html><head><body>I have nothing to say to you</body></html>"
st.setState(STARTED)
return InitialHtml
QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
CREATED=State('Start',QUEST)
STARTED=State('Started',QUEST)
COMPLETED=State('Completed',QUEST)
QUEST.setInitialState(CREATED)
for npcId in NPC:
QUEST.addStartNpc(npcId)
QUEST.addTalkId(npcId)
Розовый - На какую страницу будет возращатся Бафер при использование етого баффа вам нужно поставить например 3.htm
Синий - LvL Скила
Серый - ID Баффа ( Нужный Вам ID вы сможете узнать здесь D:\server\gameserver\data\stats\skills )
Зеленый - число Адены котрое требует для баффа
Желтый - ID Baffer
Красный - ID Итема который будет Братся при бафе
Коричневый - Название Баффа
Голубой - теперь вспоминаем те числа которые были при добавление Денсов ( смотрите сообщение выше обделено голубым цветом ) но я вылаживал там мануал как ставить денсы а нам нужны Бафы значит делаем ешо 1 шмл файлик и туда вписываем тоже самое вто и в денсах токо смените названиестранички Например 3.htm и место дансов пишите баффы ... и вот например вы пишите скил Wind Walk в новом файле сам вид баффа должен получится такой:
Код:
<td><button value="Wind Walk" action="bypass -h Quest 9999_NPCBuffer 7" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
И так далее у нас Запрос в Базу
Создаете файл например buffer.sql и туда вставляете это:
Создаете файл например buffer.sql и туда вставляете это:
(70022,30842,'Buffer',1,'Buffer',1,'NPC.a_trader_FElf',8.00,24.00,70,'female','L2Npc',40,3862,1493,11.85,2.78,40,43,30,21,20,10,0,0,1314,470,780,382,278,0,333,0,
0,0,55,132,NULL,0,1,0,'LAST_HIT');
0,0,55,132,NULL,0,1,0,'LAST_HIT');
Зеленый - ID бафера
Красный - Имя бафера
Жолтый - Титул Бафера
Бафер будет иметь вид как трейдер НПЦ Alexis
Далее открываете:
Navicat нажимаете правой кнопкой по вашей папке в которой все таблицы выбираете
Execute Batch File... нажимаете и указываете путь к вашему buffer.sql
Далее открываете:
Navicat нажимаете правой кнопкой по вашей папке в которой все таблицы выбираете
Execute Batch File... нажимаете и указываете путь к вашему buffer.sql
Конец сказки.