Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
Поиск
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Дополнения (GMShop, Buffer, GK)/[мануал]создание Бафера С Нуля
Поиск

[мануал]создание Бафера С Нуля

4 ответов2,815 просмотровСейчас просматривают: 1
B
BlackFighter

Пользователь

Бывалый

Постов: 483

На форуме с: 27.04.2008

Репутация: +506

Рейтинг: 0

· 04.07.2008, 07:40

ТЫКАЙТЕ СПАСИБО !!!




И так приступил

открываем папку 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">Бафер</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="Баффы" action="bypass -h Quest 9999_NPCBuffer 4.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 2.htm" 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 3.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 7.htm" 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>


Красный - надпись Вверху менюшки бафера
Оранжевый - Надпись на картинке что бы зайти в список баффов
Голубой - название штмл при нажатие на картинку вас будет перемещать в тот штмл который вы указали



ето был 1.htm файлик

0
B
BlackFighter

Пользователь

Бывалый

Постов: 483

На форуме с: 27.04.2008

Репутация: +506

Рейтинг: 0

· 04.07.2008, 08:05

ТЫКАЙТЕ СПАСИБО !!!




Далее: настраиваем баффы

открываем файлик 2.htm и вписываем например ето


Цитата
<html>
<body>
<center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<tr>
<td><font color="00FFBB">Танцы (20k каждый)</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="Warrior" action="bypass -h Quest 9999_NPCBuffer 27" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="Inspiration" action="bypass -h Quest 9999_NPCBuffer 28" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="Mystic" action="bypass -h Quest 9999_NPCBuffer 29" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="Fire" action="bypass -h Quest 9999_NPCBuffer 30" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="Fury" action="bypass -h Quest 9999_NPCBuffer 31" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="Concentration" action="bypass -h Quest 9999_NPCBuffer 32" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="Light" 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="Aqua Guard" action="bypass -h Quest 9999_NPCBuffer 34" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
</tr>
<tr>
<td><button value="Earth Guard" action="bypass -h Quest 9999_NPCBuffer 35" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><br>
<td><button value="Vampire" action="bypass -h Quest 9999_NPCBuffer 36" 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>


Крастный - Надпись вверху списка денсов
Оранжевый - Слово на картинке при нажатие на которую будет даватся Бафф
Голубой - етот номер вам ещо понадобится обязательно смотрите что бы они шли попорядку

0
B
BlackFighter

Пользователь

Бывалый

Постов: 483

На форуме с: 27.04.2008

Репутация: +506

Рейтинг: 0

· 04.07.2008, 08:41

Следующий Пункт у нас Добавление самих бафов :

открываем 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=[70022]
ADENA_ID=57
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)

#Wind Walk
if event == "7":
st.takeItems(ADENA_ID,25000)
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4342,2),False,False)
st.getPlayer().restoreHPMP()
return "5.htm"
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 и туда вставляете ето

(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');

Зеленый - ID бафера
Красный - Имя бафера
Жолтый - Титул Бафера


Бафер будет иметь вид как трейдер НПЦ Alexis

так далее ... октрываете
Navicat нажимаете правой кнопкой по вашей папке в которой все таблицы выбираете

Execute Batch File... нажимаете и указываете путь к вашему buffer.sql

0
evs
evs

Пользователь

Новичок

Постов: 9

На форуме с: 13.08.2008

Репутация: +4

Рейтинг: 0

· 18.08.2008, 07:55

Короче сам нашёл, когда делал бафера для сервера la2base interlude 1.0.1. на основе вот этого бафера бафера.
Просто в файле __init__.py нужно вместо

Код
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4360,3),False,False)

писать это
Код
SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer())

И что бы восстановить хп, мп, сп нужно писать это
Код
st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())    [color="#FF0000"]хП[/color]
st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())    [color="#FF0000"]Мп[/color]
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())    [color="#FF0000"]Цп[/color]

0
Тема закрыта для ответов