Перейти к содержанию

[SCRIPT][NPC]NT Craft Api v1.02 + NPC


wl.illusion

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

[sCRIPT][NPC] NT Craft Api v1.01 + NPC

Это API писалось уже больше года назад, я в него почти не вносил изменений с тех пор, так что может что-то работать не так.

Я отлично понимаю, что можно сделать лучше и сейчас бы так и поступил, но интерес к данному API минимален, так что если вас устраивает - используйте, если вас что-то не устраивает, просто пропустите мимо глаз.

Так же учтите, что здесь выложена информация об API, а не об NPC. Для примера добавлены и сами NPC - простенький и более сложный вариант с квестами.

В Базе API всего несколько предметов, если нужно - добавляйте, я обновляю базу API по мере работы с ней.

История изменений

2014.05.18:

- Добавлена версия 1.02;

- Обновлена информация по новой версии (добавление описания/свойства предмета).

Описание

API позволяет эмулировать формулы крафта и варки зелий (можно дописать и что-то другое). Основной плюс в том, что можно создавать предметы для крафта доступные только через NPC, или другим классам персонажей иметь доступ к крафту и варке без изменений сорцов.

Скачать

Craft API v1.02: nt_craft_api.txt (v1.02)

Craft API v1.01: nt_craft_api.v1.1.txt (v1.01)

Простенький NPC-варки: nt_craft_simple.txt (v1.00)

NPC-алхимик с квестами: nt_craft_alchemist.txt (v2.00)

Принцип работы

API работает на вызовах, которые вы подаёте через стандартный callfunc, каждый вызов требует определённого кол-ва параметров, постараюсь привести все с примерами.

Синтаксис:

callfunc("alch_func", <номер ключа>, <префикс базы>(, <входящие переменные>));

Для начала стоит рассказать о том, что такое <префикс базы> — каждая база создаваемых предметов имеет определённый префикс, это сделано для хранения различных баз на разные случаи (база может быть и одна).

Список ключей и их описание:

  • 0 — инициализация базы, во время её вызова создаются дефолтовые переменные, синтаксис:
    callfunc("alch_func", 0, <префикс базы в кавычках>);


    Пример:

    callfunc("alch_func", 0, "potion");


  • 1 — добавления элемента в базу, здесь нельзя ошибаться и нужно быть внимательным, т.к. функция требует много переменных, синтаксис:
    callfunc(
    "alch_func",
    1,
    <префикс базы в кавычках>,
    <тип визуальных эффектов>,
    <показывать кол-во создаваемых предметов>
    <id создаваемого предмета>,
    <кол-во создаваемых предметов>,
    <название в списке создаваемых предметов>,
    <стоимость зени>,
    <какую формулу учитываем>,
    (<id необходимого предмета для создания>, <кол-во этого предмета>,)
    0, (идентификатор окончания списка необходимых предметов)
    "" (дополнительное описание выводимое о предмете, символ # - разделитель строк)
    );


    Пример, добавления Red Potion за 25 зени:

    callfunc(
    "alch_func",
    1,
    "potion",
    0,
    .@hide_amount,
    501,
    1,
    "",
    25,
    2,
    507, 1,
    0,
    "Отличный напиток#придаёт жизненных сил."
    );


    Теперь нужно рассказать о каждом необходимом параметре:
    <тип визуальных эффектов>: какой набор визуальных эффектов будет использовать во время крафта предмета, всего есть три набора:
    0 - эффекты создания напитков
    1 - обычные надписи Success и Failed
    2 - эффекты псоздания оружия
    <показывать кол-во создаваемых напитков>: всё просто, показывать или нет в списке сколько будет создано предметов, 0 - показывать или 1 - скрывать, для удобства сделаны переменные .@hide_amount и .@view_amount.
    <id создаваемого предмета>: id предмета, который будет создан из списка в item_db.txt, можно указывать любой предмет.
    <кол-во создаваемых предметов>: какое кол-во будет создано (формула вычисляет только один раз).
    <название в списке создаваемых предметов>: название предмета, оно будет выводиться только в списке, после создания предмет получит обычное название, если указать пустые кавычки, то имя возьмётся из базы.
    <стоимость зени>: если указать 0, то требование не будет учитываться.
    <какую формулу учитываем>: для создания в игре много формул, вот список тех, которые реализованы (вы и сами можете что-то дополнить):
    0 - всегда 100% шанс успеха
    1 - базовая формула создания напитков (см калькуляторы варки)
    2 - формула создания red/yellow/white potion (см калькуляторы варки)
    3 - формула создания алкоголя (см калькуляторы варки)
    4 - формула создания Bottle Grenade(Fire Bottle)/Acid Bottle/Plant Bottle/Marine Sphere Bottle (см калькуляторы варки)
    5 - формула создания Condensed Yellow Potion (см калькуляторы варки)
    6 - формула создания Condensed White Potion/Glistening Coat (см калькуляторы варки)
    7 - всегда 100% шанс, используется для элементальных свитков
    8 - формула крафта Железа (см калькуляторы крафта)
    9 - формула крафта Стали (см калькуляторы крафта)
    10 - формула крафта Элементальных камней (см калькуляторы крафта)
    11 - формула крафта оружия (см калькуляторы крафта)
    <id необходимого предмета для создания>: id предмета необходимого для производства
    <кол-во этого предмета>: какое кол-во указанного предмета нужно для производства
    Эти две строки вы можете повторять много раз (указывая список необходимых предметов для производства).
    0 - в конце списка обязателен.
    Запоминайте порядок добавленных предметов, т.к. это необходимо для будущего построения списка. Отсчёт ведётся от 1.

  • 2 — отрисовка меню выбора предмета для крафта, синтаксис:
    callfunc("alch_func", 2, <префикс базы в кавычках>, <текст сообщения об отмене>, <array предметов>);


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    mes "Вы выбрали элемент: "+.@itemselect;
    close;


    Возвращает 0, если был выбрал пункт отмены действия или id из списка, в примере переменную из .@craft_array.

  • 3 — возвращает название выбранного элемента, синтаксис:
    callfunc("alch_func", 3, <префикс базы в кавычках>, <id выбранного элемента>);


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) mes "Выбран пункт отмены.";
    else mes "Вы выбрали элемент: "+callfunc("alch_func", 3, "potion", .@itemselect);
    close;


  • 4 — возвращает id-предмета из item_db.txt выбранного элемента, синтаксис:
    callfunc("alch_func", 4, <префикс базы в кавычках>, <id выбранного элемента>);


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) mes "Выбран пункт отмены.";
    else mes "id-предмета: "+callfunc("alch_func", 4, "potion", .@itemselect);
    close;


  • 5 — возвращает создаваемое кол-во выбранного элемента, синтаксис:
    callfunc("alch_func", 5, <префикс базы в кавычках>, <id выбранного элемента>);


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) mes "Выбран пункт отмены.";
    else mes "Вы получите: "+callfunc("alch_func", 5, "potion", .@itemselect)+"шт";
    close;


  • 6 — выводит список необходимого для крафта выбранного элемента, синтаксис:
    callfunc("alch_func", 6, <префикс базы в кавычках>, <id выбранного элемента>);


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) mes "Выбран пункт отмены.";
    else mes "Для создания необходимо:",callfunc("alch_func", 6, "potion", .@itemselect);
    close;


  • 7 — проверка на наличие всего необходимого для создания выбранного элемента, возвращает 0 - если всё необходимое есть и 1 - если чего-то нехватает, синтаксис:
    callfunc("alch_func", 7, <префикс базы в кавычках>, <id выбранного элемента>(, <кол-во starcramb>, <id элемента стихии>));


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) {
    mes "Выбран пункт отмены.";
    close;
    }
    if ( callfunc("alch_func", 7, "potion", .@itemselect) ) {
    mes "Чего-то нехватает...";
    close;
    }
    mes "Всё необходимое есть!";
    close;


    Параметры <кол-во starcramb> и <id элемента стихии> необходимы только для крафта оружия (уровень Strong и элемент стихии).
    Стихии:
    0 - Без стихий
    1 - Лёд
    2 - Земля
    3 - Огонь
    4 - Ветер

  • 8 — проверка и вывод недостающего для создания выбранного элемента, синтаксис:
    callfunc("alch_func", 8, <префикс базы в кавычках>, <id выбранного элемента>(, <кол-во starcramb>, <id элемента стихии>));


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) {
    mes "Выбран пункт отмены.";
    close;
    }
    if ( callfunc("alch_func", 7, "potion", .@itemselect) ) {
    mes "Нехватает:";
    callfunc("alch_func", 8, "potion", .@itemselect)
    close;
    }
    mes "Всё необходимое есть!";


  • 9 — процесс создания выбранного элемента, возвращает 0 - если создание прошло успешно, 1 - создание не удалось и 2 - если случились проблемы похожие на читорство игрока, синтаксис для варки:
    callfunc("alch_func", 9, <префикс базы в кавычках>, <id выбранного элемента>, <joblevel>, <int>, <dex>, <luk>, <Skill lvl Learning Potion>, <Skill lvl Pharmacy>);


    Синтаксис для крафта:

    callfunc("alch_func", 9, <префикс базы в кавычках>, <id выбранного элемента>, <joblevel>, <dex>, <luk>, <Anvil level>, <Skill lvl Iron create>, <Skill lvl Steel create>, <Skill lvl Element stone create>, <Skill lvl Smith>, <Skill lvl Weaponry>, <Skill lvl Oridecon>, <кол-во starcramb>, <id элемента стихии>);


    Уровни наковальни:
    0 - Anvil
    1 - Oridecon Anvil
    2 - Golden Anvil
    3 - Emperium Anvil

  • 10 — стоимость в Zeny выбранного элемента, синтаксис:
    callfunc("alch_func", 10, <префикс базы в кавычках>, <id выбранного элемента>);


    Пример:

    setarray .@craft_array[0],1,2,3,4;
    set .@itemselect, callfunc("alch_func", 2, "potion", "^888888 Ничего не нужно, я передумал^000000", .@craft_array);
    if ( !.@itemselect ) mes "Выбран пункт отмены.";
    else mes "Стоимость: "+callfunc("alch_func", 10, "potion", .@itemselect)+" Zeny";
    close;


  • 11 — проверка на наличие описания к предмету:
    callfunc("alch_func", 10, <префикс базы в кавычках>, <id выбранного элемента>);


  • 12 — вывод описания к предмету:
    callfunc("alch_func", 10, <префикс базы в кавычках>, <id выбранного элемента>);


Примерное описание работы NPC в следующих постах.

Изменено пользователем wl.illusion
  • Upvote 6
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика