wl.illusion

[NPC] Very Advanced Warper v2

10 сообщений в этой теме

[NPC] Very Advanced Warper v2

Осторожнее с настройками данного варпера, так же варпер весьма «тяжёлый» — использует много переменных, есть несколько циклов, размер которых зависит от внесённых по указанному направлению целей перемещения.

Описание

Данный Варпер полностью универсален, позволяет создавать сложные схемы перемещения, взымать различную оплату (купоны, зени, предмет(ы)).

Варпер указывает цены (перемещение может быть и бесплатным, о чём игроку будет сообщено), предлагает направления, а так же сообщает чего именно нехватает для перемещения и в каком кол-ве.

Скачать

Сам NPC: nt_warper.txt

NPC не будет работать без вот этого: nt_extra.txt

Настройка, добавление направлений

Скрипт достаточно сложный, поэтому принцип работы мы обсуждать не будем (кому интересно внутри достаточно много комментариев). Давайте поговорим о создание направлений и целей для перемещения.

Для начала определимся с некоторыми терминами, важный термин — Маркер направления. Всего может быть 5 направлений (запомните, это чертовски важно). Маркер направления — это символ-идентификатор (любой принимаемый символ скриптами).

Текстовые значения для меню направлений задаются в скрипте:

    set .menu_name_waycity$[[email protected]_waycity], "В город";
set .menu_name_waycity$[[email protected]_waydun], "В подземелье";
set .menu_name_waycity$[[email protected]_wayvip], "Особые места";
set .menu_name_waycity$[[email protected]_wayvip2], "Бесплатное перемещение";
set .menu_name_waycity$[[email protected]_wayvip3], "За предметы";

Можете заменить на свои значения, это делается только в одном месте и безболезненно.

В скрипте есть define для ID-направлений — их менять нельзя, это временные переменные, созданные для удобства создания целей для перемещения. Вот их список:

    set [email protected]_waycity, 1; // ID перемещения в город
set [email protected]_waydun, 2; // ID перемещения в подземелье
set [email protected]_wayvip, 3; // ID перемещения в vip
set [email protected]_wayvip2, 4; // ID перемещения в vip
set [email protected]_wayvip3, 5; // ID перемещения в vip

Каждый NPC имеет 5 разных маркеров, которые и определяют доступные перемещения для игрока. Рассмотрим имя NPC:

alberta,113,53,5    duplicate(nt_wrp)    Телепортация#00000_02    124

У любого NPC есть понятие «Скрытое имя», в указанном примере оно: «00000_02» — последние «_02» всего лишь порядковый номер NPC (кстати, будет лучше, если для каждого NPC они не будут совпадать, указывать их можно не только цифрами, но и буквами), а вот первые пять символов — это и есть Маркер направления. Данный маркер определяет с каким именно списком целей нужно работать. Каждый маркер — один символ!

<[email protected]_waycity><[email protected]_waydun><[email protected]_wayvip><[email protected]_wayvip2><[email protected]_wayvip3>

Раз заговорили о настройках NPC, то важно будет ещё сказать, что можно указать имя NPC отображаемое в диалогах и минимальный базовый уровень для работы с NPC.

    // Имя NPC отображаемое в диалогах
set .npc_name$, "Сервис Телепортации";

// Минимальный базовый уровень необходимые для телепортации
set .wrp_min_baselvl, 18;

Вы можете менять эти значения на своё усмотрение.

Теперь перейдём к самому важному — создание целей для перемещения. Пример:

    callsub L_AddWarpPoint, [email protected]_waycity, "0:(p|1),1:(p|1)", "Alberta", "alberta", 116, 56;

За добавления цели отвечает функция L_AddWarpPoint, её параметры для использования:

— ID-направления ([email protected]_waycity/[email protected]_waydun/[email protected]_wayvip/[email protected]_wayvip2/[email protected]_wayvip3)

— Работа со стоимостью Макера направлений

— Название цели для пункта меню

— Название карты (из map_index.txt)

— Координата X

— Координата Y

Стоимость задётся очень просто:

"<Маркер направления для данного ID-направления><тип стоимости>)|<стоимость>|<только для предметов - название предмета>;...<>"

Тип стоимости:

z — зени

p — кафра купоны

<id предмета> — предмет, который необходим, так же к данной записи добавляется параметр с названием, если указать '-', то имя будет браться из базы

Если ничего не указывать в стоимости, то перемещение будет бесплатно! (Например: "0:()")

Несколько примеров, для понимания:

"0:(p|1;z|500;909|20|-)"

В данном примере стоимость по Маркеру 0 составит: 1 кафра купон, 500 зени и 20 Jellopy (всё вместе, а не что-то по отдельности или что-то из перечисленного)

Более сложный пример

"0:(p|5;),1:(z|5000),3:(4001|1|Карта Поринга)"

В этом примере видно, что можно указывать стоимость сразу для нескольких маркеров разделённых ',', но вы можете и вызывать для каждого маркера отдельно функцию — оба способа обрабатываются корректно, пример всё в одном:

    callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|5;),1:(z|5000),3:(4001|1|Карта Поринга)", "Муравьиный ад", "cmd_fild08", 320, 356;

Но, можно и вот так:

    callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|5;)", "Муравьиный ад", "cmd_fild08", 320, 356;
callsub L_AddWarpPoint, [email protected]_waydun, "1:(z|5000)", "Муравьиный ад", "cmd_fild08", 320, 356;
callsub L_AddWarpPoint, [email protected]_waydun, "3:(4001|1|Карта Поринга)", "Муравьиный ад", "cmd_fild08", 320, 356;

Что ж, думаю будет уместен хороший сложный пример, давайте сделаем перемещение в Московию из Пронтеры и телепортацию на территорию Московии из самого города, укажем разные цены и сделаем, невозможным перемещение из Пронтеры на карту с мобами Московии, а вернуться в Пронтеру будет возможно только из Московии:


// Цели перемещения
// В Московии можно попасть из Пронтеры, но и с mosk_fild02 (сделаем за зени)
callsub L_AddWarpPoint, [email protected]_waycity, "0:(p|6),2:(z|1500)", "Moskovia", "moscovia", 223, 184;
callsub L_AddWarpPoint, [email protected]_waycity, "1:(p|5)", "Prontera", "prontera", 156, 183;

// Данж доступен только из московии (Маркер 1)
callsub L_AddWarpPoint, [email protected]_waydun, "1:(p|2)", "Moskovia Field", "mosk_fild02", 197, 247;


// Разместим NPC по местам
prontera,161,193,5 duplicate(nt_wrp) Телепортация#00000_17 124
moscovia,220,191,5 duplicate(nt_wrp) Телепортация#11000_44 124

mosk_fild02,194,252,4 duplicate(nt_wrp) Телепортация#22000_43 124

Схема, телепортироваться из Пронтеры можно только в Московию за 6 купонов (зачем Варперу в Пронтере портить в Пронтеру?), из Московии в город — Пронтеру за 5 купонов или в данж ("Moskovia Field") за 2 купона, с "Moskovia Field" можно попасть в город Московию за 1500 зеней.

Примечание

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

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

Изменено пользователем wl.illusion
14

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Единственный нормальный варпер во всем интернете.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Красавчик все нормально расписал, были бы + поставил бы)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кнопочка нравится уже не считается за +?

UPD: "Вам и Sanasol любят это" капец,товарищи...

Изменено пользователем kadze
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кнопочка нравится уже не считается за +?

UPD: "Вам и Sanasol любят это" капец,товарищи...

ой, я забыл вообще про это)) щяс тыкну)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Разве в eA дефолтной есть explode

Ибо я помню что кто-то выкладывал пак команд phpшных для еА

Нашел

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Таких полно на rathena.org :)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|2),1:(p|2)", "Anthell", "cmd_fild08", 320, 356;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|2),1:(p|2)", "Byalan Dungeon", "izlu2dun", 107, 94;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|7),1:(p|7),2:(p|2)", "Moskovia Field", "mosk_fild02", 197, 247;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|1),1:(p|1)", "Orc Dungeon", "gef_fild10", 70, 332;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|1),1:(z|400)", "Payon Dungeon", "pay_arche", 48, 131;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|1),1:(p|1)", "Pyramids", "moc_ruins", 69, 157;

Зачем класть, если надо дописывать?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|2),1:(p|2)", "Anthell", "cmd_fild08", 320, 356;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|2),1:(p|2)", "Byalan Dungeon", "izlu2dun", 107, 94;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|7),1:(p|7),2:(p|2)", "Moskovia Field", "mosk_fild02", 197, 247;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|1),1:(p|1)", "Orc Dungeon", "gef_fild10", 70, 332;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|1),1:(z|400)", "Payon Dungeon", "pay_arche", 48, 131;
callsub L_AddWarpPoint, [email protected]_waydun, "0:(p|1),1:(p|1)", "Pyramids", "moc_ruins", 69, 157;

Зачем класть, если надо дописывать?

Каждый в праве дописать свои точки для телепорта, делать под каждый сервер с прописыванием всех woe данжей, а небездумно брать чужой скрипт. Если давать всё готовое — то админов нубов меньше не станет.

А вообще, не нравится - попросите модераторов удалить тему, мне лично дела нет, free — не означает, что будет всё и сразу, проявите немного своего внимания и помогите доработать, вам скажут спасибо.

Изменено пользователем wl.illusion
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все работает. Лучший Варпер на свете)

Изменено пользователем vlitov
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас