Как работать с баффером и делать Премиум баффы

Data Location:
NPC id по умолчанию - 40010
Диалоги- gameserver\data\html-en\mods\buffer
XML схема с баффами, уровнями, наборами и стоимостью - gameserver\data\buff_templates.xml

Теперь рассмотрим сам buff_templates.xml формат:

Пример:

Code:
<template menuId="200" target="BUFF_PLAYER">
<consume>
<item id="57" amount="200000" />
</consume>
<produce>
<skill id="1068" level="3" />
<skill id="1040" level="3" />
<skill id="1086" level="2" />
<skill id="1204" level="2" />
<skill id="1077" level="3" />
<skill id="1242" level="2" />
<skill id="1268" level="4" />
</produce>
</template>

menuId - ID on which we address a buffer
target - whom buff, BUFF_PLAYER or BUFF_PET
consume - id and quantity of items.
produce - here is stored buff or schemes of buffs.
Example:
Code:
<consume>
<item id="57" amount="200000" /> снимаем 200000 adena
<item id="4037" amount="0" /> для премиума при 0 просто проверяем наличие предмета в инвентаре
</consume>
Если мы хотим снимать предметы от определенного уровня то:
Code:
<consume>
<item id="57" amount="200000" from_level="20"/> Таким образом чар до 20того будет баффатся бесплатно
</consume>
Если мы хотим баффать сет чарам с минимальным уровнем к примеру от 51:
Code:
<template menuId="126" target="BUFF_PLAYER" minLevel="51">
    <consume>
        <item id="57" amount="200000" />
    </consume>
    <produce>
        <skill id="1068" level="3" />
        <skill id="1040" level="3" />
        <skill id="1086" level="2" />
    </produce>
</template>

Так же вы можете использовать несколько предметов в листе из которых будет вбираться первый из существующих в инвентаре - удобно для премиум аккаунтов с разной длительностью.
Пример:
Code:
  <consume anyFirst="true">
  <item id="6673" amount="0" />
  <item id="4037" amount="0" />
  </consume>

Проверка на наличие премиум аккаунта у игрока:
Code:
<template menuId="124" target="BUFF_PLAYER">
    <consume>
        <item id="57" amount="600000" is_premium_required="true"/>
    </consume>
    <produce>
        <skill id="1068" level="3" />
        <skill id="1040" level="3" />
        <skill id="1086" level="2" />
        <skill id="1204" level="2" />
        <skill id="1077" level="3" />
        <skill id="1242" level="2" />
        <skill id="1268" level="4" />
    </produce>
</template>

produce - здесь указываются сами баффы и их уровни
Example:
Code:
<produce>
<skill id="1068" level="1" />
</produce>

Множество баффов

Code:
<produce>
<skill id="1068" level="3" />
<skill id="1040" level="3" />
<skill id="1086" level="2" />
<skill id="1204" level="2" />
<skill id="1077" level="3" />
<skill id="1242" level="2" />
<skill id="1268" level="4" />
</produce>

Пример для добавления в XML и диалога:

2. Кнопка, с которой мы добавляем диалог
<a action="bypass -h scripts_services.Buffer:act ask=200&reply=1">Fighter 1 lvl</a>

Теперь подробно:
ask=200 - Это menuId к Баффу с XML или сету баффов
&reply=1 - на какую страничку будет возврат. В нашем случаи будет возвращено на 1.htm
_____________________________________________________________
<template menuId="200" target="BUFF_PLAYER">
<consume>
<item id="57" amount="200000" />
</consume>
<produce>
<skill id="1068" level="3" />
<skill id="1040" level="3" />
<skill id="1086" level="2" />
<skill id="1204" level="2" />
<skill id="1077" level="3" />
<skill id="1242" level="2" />
<skill id="1268" level="4" />
</produce>
</template>
 
Last edited:
Ребята, подскажите, каким образом можно включить анимацию накладывания баффов по типу ньюби баффера?
 
Доброго времени суток. Есть способ реализовать авто баф пета, тем же бафом, что и хозяина? (что на себя набафал, то и слуге досталось) Если такое возможно, поделитесь
 
Подскажите, тут указано проверка на премиум именно бафа (бафнуть или не бафнуть), а как сделать проверку при нажатии на кнопку,чтобы сначала он проверил,а потом открыл лист с бафами?

button action="bypass -h scripts_services.Buffer:act reply=20" value="Premium" width=79 height=21 back="eter1.1kn_over" fore="eter1.1kn">
 
Подскажите, тут указано проверка на премиум именно бафа (бафнуть или не бафнуть), а как сделать проверку при нажатии на кнопку,чтобы сначала он проверил,а потом открыл лист с бафами?

button action="bypass -h scripts_services.Buffer:act reply=20" value="Premium" width=79 height=21 back="eter1.1kn_over" fore="eter1.1kn">
в конфиге это есть.
# При включении для владельцев премиум аккаунта будет отображается ХТМЛ с префиксом -pa.htm
# Example: for normal player npc-40010.htm, for premium npc-40010-pa.htm
AltNpcBufferPremiumHtmlPrefix = False

в своем npc-40010-pa.htm протягиваешь баффы для па или же делаешь проверку
is_premium_required="true"
 
в конфиге это есть.
# При включении для владельцев премиум аккаунта будет отображается ХТМЛ с префиксом -pa.htm
# Example: for normal player npc-40010.htm, for premium npc-40010-pa.htm
AltNpcBufferPremiumHtmlPrefix = False

в своем npc-40010-pa.htm протягиваешь баффы для па или же делаешь проверку
is_premium_required="true"

Спасибо.
 
Пытаюсь отредактировать стоимость Cancel и Restore, которые соответствую байпассам с отрицательными значениями в ask:
Code:
bypass -h scripts_services.Buffer:act ask=-2
bypass -h scripts_services.Buffer:act ask=-3

Для этого в buff_templates.xml внутрь секции list добавляю, например:
Code:
    <template menuId="-2" target="BUFF_PLAYER">
        <consume>
            <item id="57" amount="10000" from_level="40" />
        </consume>
        <produce>
            <skill id="1204" level="1" />
        </produce>
    </template>
и рестартую gameserver, но бафер по-прежнему делает Cancel вместо Wind Walk и взимает 100 аден.

Подскажите, пожалуйста, что я делаю не так, и как правильно?
 
Last edited:
Пытаюсь отредактировать стоимость Cancel и Restore, которые соответствую байпассам с отрицательными значениями в ask:
Code:
bypass -h scripts_services.Buffer:act ask=-2
bypass -h scripts_services.Buffer:act ask=-3

Для этого в buff_templates.xml внутрь секции list добавляю, например:
Code:
    <template menuId="-2" target="BUFF_PLAYER">
        <consume>
            <item id="57" amount="100" from_level="40" />
        </consume>
        <produce>
            <skill id="1204" level="1" />
        </produce>
    </template>
и рестартую gameserver, но бафер по-прежнему делает Cancel вместо Wind Walk и взимает 100 аден.

Подскажите, пожалуйста, что я делаю не так, и как правильно?

gameserver\data\buff_templates.xml


здесь прописываешь скилл и его стоимость
 
gameserver\data\buff_templates.xml


здесь прописываешь скилл и его стоимость
Видимо, я недостаточно подробно написал. Именно этот файл я и редактирую. Изменения в остальных находящихся в нем template'ах применяются. А вот если значение menuId отрицательное, то нет.
 
Пытаюсь отредактировать стоимость Cancel и Restore, которые соответствую байпассам с отрицательными значениями в ask:
Code:
bypass -h scripts_services.Buffer:act ask=-2
bypass -h scripts_services.Buffer:act ask=-3

Для этого в buff_templates.xml внутрь секции list добавляю, например:
Code:
    <template menuId="-2" target="BUFF_PLAYER">
        <consume>
            <item id="57" amount="10000" from_level="40" />
        </consume>
        <produce>
            <skill id="1204" level="1" />
        </produce>
    </template>
и рестартую gameserver, но бафер по-прежнему делает Cancel вместо Wind Walk и взимает 100 аден.

Подскажите, пожалуйста, что я делаю не так, и как правильно?
<template menuId="109" target="BUFF_PLAYER">
<consume>
<item id="57" amount="25000" />
</consume>
<produce>
<skill id="1416" level="1" />
</produce>
</template>

вот тебе пример бафа овера на цп ( id скилла и его цена), а потом уже прописываешь байпас на этот скил в диалоге у бафера

<td><img src=icon.skill1416 width=32 height=32 align=left></td>
<td><button value="Pa'agrio's Fist" action="bypass -h scripts_services.Buffer:act ask=109&reply=5" width=94 height=25 back="у меня тут стоит кнопка"></td>
 
<template menuId="109" target="BUFF_PLAYER">
<consume>
<item id="57" amount="25000" />
</consume>
<produce>
<skill id="1416" level="1" />
</produce>
</template>

вот тебе пример бафа овера на цп ( id скилла и его цена), а потом уже прописываешь байпас на этот скил в диалоге у бафера

<td><img src=icon.skill1416 width=32 height=32 align=left></td>
<td><button value="Pa'agrio's Fist" action="bypass -h scripts_services.Buffer:act ask=109&reply=5" width=94 height=25 back="у меня тут стоит кнопка"></td>
Спасибо за быстрые ответы, но перечитай, пожалуйста, мой вопрос еще раз внимательнее.
 
Пытаюсь отредактировать стоимость Cancel и Restore, которые соответствую байпассам с отрицательными значениями в ask:
Code:
bypass -h scripts_services.Buffer:act ask=-2
bypass -h scripts_services.Buffer:act ask=-3

Для этого в buff_templates.xml внутрь секции list добавляю, например:
Code:
    <template menuId="-2" target="BUFF_PLAYER">
        <consume>
            <item id="57" amount="10000" from_level="40" />
        </consume>
        <produce>
            <skill id="1204" level="1" />
        </produce>
    </template>
и рестартую gameserver, но бафер по-прежнему делает Cancel вместо Wind Walk и взимает 100 аден.

Подскажите, пожалуйста, что я делаю не так, и как правильно?
Может проблема в том, что значение "template menuId="-2"" отрицательное, а гс не видит отрицательных значений, и принимает как "template menuId="2"". Попробуй поменять на "1оо5оо"
 
Вот пример со моего buff_templates.xml
XML:
 <!-- Wind Walk -->
    <template menuId="9" target="BUFF_PLAYER">
        <consume>
            <item id="57" amount="1000" from_level="52"/>
        </consume>
        <produce>
            <skill id="1204" level="2" />
        </produce>
    </template>
 <!-- Max CP over'a (Pa'agrio's Fist) -->
    <template menuId="111" target="BUFF_PLAYER">
        <consume>
            <item id="9999" amount="0" />
        </consume>
        <produce>
            <skill id="1416" level="1" />
        </produce>
    </template>
 <!-- Cleanse -->
    <template menuId="200" target="BUFF_PLAYER">
        <consume>
            <item id="57" amount="1" />
       </consume>
        <produce>
            <skill id="1409" level="1" />
        </produce>
    </template>
А сам Cancel вероятно захардкоден
 
Как сделать что бы Баф или Набор был Доступен с 1 до 40 и с 40 по 76.
 
Как сделать что бы Баф или Набор был Доступен с 1 до 40 и с 40 по 76.

Code:
<template menuId="126" target="BUFF_PLAYER" minLevel="51">
    <consume>
        <item id="9999" amount="1" />
    </consume>
    <produce>
        <skill id="1068" level="3" />
        <skill id="1040" level="3" />
        <skill id="1086" level="2" />
    </produce>
</template>
А если поставить итем 9999 который игрок нигде не сможет взять?
Будет до 51 получать бафф за адену, а уже после не сможет, поскольку у него не будет этого итема?
 
А обратный мамент когда бафом нельзя пользоваться пока не возмешь к примеру 40 уровень
 
Собственно, заточенный баф возможно добавить сюда?
 
Back
Top