Перейти к содержимому

Фотография
* * * - - 2 Голосов

[Гайд] Создаём бафера

interlude

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1
Miracle

Miracle

Открываем папку 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>

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


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

Открываем файлик 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 и туда вставляете это:

 


Спойлер (+/-)



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

 

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

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

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

 

Конец сказки.


 


  • 1

#2
zefi

zefi

Насколько я понимаю, в коде надо почистить BB-codes, которыми, вероятно, подсвечивался синтаксис. Но здесь они не распарсились. И если взять и скопировать этот код (как будут делать большинство пользователей), он просто не заработает.


  • 1

#3
Miracle

Miracle

zefi,

Хотелось обьяснить попонятней, в цветах и хорошо расписано, большинство моих гайдов для администраторов, обычные игроки просто даже не поймут что это и куда вписывать.


  • 0

#4
AleksRull

AleksRull
  • 6
    2
    Не выбрано
    • Lvl 4
    • Пользователь
По моему вообще неактуальный гайд. Существует множество готовых баферов, которые нужно просто вставить в определенное место место. Лет 10 назад был бы актуален, в нынешних сборках вшиты баферы, телепорты, классмастерыи т.д.
  • 0

#5
Miracle

Miracle

AleksRull, Этот гайд предназначен именно для создания своего, а не слизаного с кривой сборки.


  • 0

#6
AleksRull

AleksRull
  • 6
    2
    Не выбрано
    • Lvl 4
    • Пользователь
MRX, Есть много отдельных готовых баферов, которые не нужно "выдергивать из кривых сборок".
Очнись друг на дворе 21 век, на питоне никто больше не пишет сервера. Переделай мануал под java плюсану.

Совсем забыл, как же ты переделаешь если скопировать неоткуда. =(
  • 0

#7
EasyNeck

EasyNeck

Спасибо за подробный гуид


  • 1

#8
greffon

greffon
  • 1
    0
    Не выбрано
    • Гремлин

Спасибо за информацию


  • 0

#9
andermeh

andermeh
  • 3
    0
    Горит!
    • Lvl 1
    • Пользователь

Интересный гайд, но для лучшего понимания лучше все это разобрать на практике самому...


  • 0

#10
k1t00

k1t00
  • 4
    0
    Новогоднее
    • Lvl 2
    • Пользователь

На какую сборку сервера оно станет?


  • 0



Темы с аналогичным тегами interlude

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Rawr.su - Сделано с для игроков.