[Мануал] Делаем бегающего NPC на L2Phoenix - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Обучающие статьи

Обучающие статьи Собрание статей, мануалов и гайдов помогающих в создании и администрировании сервера Lineage 2.

Ответ
Опции темы
Непрочитано 26.03.2011, 12:06   #1
Аватар для FreeGoth
Пользователь

Автор темы (Топик Стартер) [Мануал] Делаем бегающего NPC на L2Phoenix

Всем Привет!
Помнится мне, раньше я пользовался сборками L2J и там был прекрасный NPC, который бегал по гирану и просил голосовать за сервер, покапавшись в инете не видел ни одного такого дополнения на l2phoenix.
Так что делаем такое дополнение сами по этому мануалу)

И так начнем!

В игре уже есть парочку NPC которые бегают, поэтому возьмем за основу уже существующего, я выбрал "Remy"
(server\game\data\scripts\ai\Remy.java)

Копируем его и переименовываем в GAGA.java

Открываем его через notepad++ (для удобной смены кодировки)
GAGA.java:
Свернуть ↑Развернуть ↓


И так, приступим к редактированию.
ВАЖНО! ПРОВЕРЯЙТЕ КАЖДУЮ ЗАПЕТУЮ И ПРОЧИЕ!НЕ СТИРАЙТЕ ЛИШНИЕ ЗНАКИ!ИНАЧЕ СЕРВАК ПРОСТО НАПРОСТО НЕ ЗАПУСТИТСЯ!

1) ( public class Remy extends DefaultAI )
Тут заменяем Remy на GAGA

2) ( public Remy(L2Character actor) )
Также переименовываем Remy на GAGA

Файл подготовлен, к запуску, но запускать его пока не стоит, теперь его редактируем под себя,

Траектория хотьбы:
Нам нужно указать координаты для NPC по которым он будет ходить.
(Чтоб узнать координаты где находится ваш персонаж напишите "/loc")
Важно чтоб цепочка была без преград:
из пункта 1 в пункт 2 => 3 => 4
NPC должен свободно перемещаться к точке 1 из точки 4
И нигде не должно быть преград (камни, деревья, дома)
Иначе он будет врезаться в них, и телепортироваться к следующей точке.

Можно использовать и другую схему:
1=> 2 => 3 => 4 => 3=> 2 => 1
NPC будет бежать по заданной траектории и возвращаться тем же путем по которому пришел...

Думаю суть понятна)

Теперь текст который будет вылазить в чат:

PHP код:
case 0:
wait_timeout System.currentTimeMillis() + 15000;
Functions.npcSay(actor"Новая поставка для Mr. Lector? Очень хорошо!");
wait true;
return 
true
case 0 - это пункт в котором будет исполнено действие (0 это самая первая точка)

15000 - Время в миллисекундах (1 секунда равна 1000 миллисекунд)
То есть NPC будет стоять на этой точке 15 секунд.

Functions.npcSay(actor, "------"); Заменить ------ на свой текст

Вот вроде и все по данному скрипту, мы его настроили и он готов к работе, нам осталось создать NPC.


Создаем NPC
Создаем NPC по данному МАНУАЛУ (если у вас есть в таблице NPC, столбик DisplayID, то в него вписываем ID моба у которого хотим взять скин, в этом случае нам не нужно редактировать DAT файл )

И так мы создали NPC, теперь его нужно настроить.
Значение type (L2Npc)
Значение ai_type (GAGA)

Настройка диалога с NPC
Создадим файл с названием *****.htm , где ***** Id Нашего NPC.
и поместим его в ( server\game\data\html\default\*****.htm )
Теперь мы можем с ним говорить)


SPAWN
И самое главное, SPAWN
Наш NPC должен появиться радом или в самой точке (1), что NPC смог дойти без преград до стартовой точки и начать выполнять скрипт.
______________________________________________

Примечание: я не пробовал делать монстра, возможно моб не будет ходить, но попробывать стоит)

Если NPC стоит на месте, и долго не бежит,то не перезагружайте скрипты в игре из админ панели, это не срабатывает,
Перезагружайте сам сервер, если скрипт всеравно не правильно работает во время его правки, то перезапускайте Java.
После перезагрузки скрипт будет работать нормально.

Естественно при условии что вы не напортачили в коде!
Если вы допустите хоть одну синтаксическую ошибку в редактировании java, то серв не запустится.

Вот теперь все) Плюсуйте если пригодилось)

Последний раз редактировалось Ashe; 01.03.2014 в 03:17. Причина: Корректировал грамотические ошибки)
FreeGoth вне форума Отправить сообщение для FreeGoth с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 04.05.2011, 10:17   #2
Пользователь

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

Возможно не втой теме, но.....
Как я понял, для каждого НПЦ создается свой екзепляр класса.
Идея:
Сделать звязку з БД, что бы все нпц прогружались з БД во время загрузки сервера.
Вопрос: (с джавой не очень, потому и спрашиваю)
1. Теоретически со стороны сервера это возможно?
2. Как в Джава можно на лету создать класс (если возможно), возможно есть что-то типа eval()

На PHP создать такой класс просто
PHP код:
<?php
$name_class
="NewClass";
$text "class $name_class {}";
eval(
$text);
$t = new $name_class;

Последний раз редактировалось Ashe; 01.03.2014 в 03:17.
ZhukV вне форума Ответить с цитированием
Непрочитано 04.05.2011, 10:24   #3
Аватар для [STIGMATED]
Супергерой

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

Так и есть, каждому НПЦ можно присвоить свой AI(класс). Все они загружаются из базы во время загрузки сервера.
__________________
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
[STIGMATED] вне форума Отправить сообщение для [STIGMATED] с помощью Skype™ Ответить с цитированием
Непрочитано 04.05.2011, 10:30   #4
Пользователь

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

[STIGMATED], Я имел введу бегающих нпс, и так чтобы координаты можна было задавать в БД.
ZhukV вне форума Ответить с цитированием
Непрочитано 04.05.2011, 10:37   #5
Аватар для [STIGMATED]
Супергерой

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

А, думаю можно, точкам присвоить переменные, переменные вынести в базу и вперёд.
__________________
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
[STIGMATED] вне форума Отправить сообщение для [STIGMATED] с помощью Skype™ Ответить с цитированием
Непрочитано 04.05.2011, 11:03   #6
Пользователь

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

ZhukV
загрузка точек возможна хоть из базы, хоть из блокнота, хоть из хмл, да хоть из чего
__________________
PaInKiLlEr вне форума Отправить сообщение для PaInKiLlEr с помощью ICQ Ответить с цитированием
Непрочитано 04.05.2011, 21:28   #7
Пользователь

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

Цитата:
Сообщение от PaInKiLlEr Посмотреть сообщение
загрузка точек возможна хоть из базы, хоть из блокнота, хоть из хмл, да хоть из чего
Наверное не верно поняли вопрос

Есть огромная идея интеграции системы Друпал 7 (она найболее подходит) с сервером линяги. Тоесть, все жуткие действия можно делать через сайт.
ПХП найлучше работает с БД, ХМЛ, а не с чем то другим.
Прогрузить точки для какого-то нпц можна спокойно, а вот можно ли динамически создать бегающий нпц, и присвоить ему точки, которые есть в БД.
К примеру, в БД есть две таблицы
1. `id`, `name_npc`, `description`, `other_vars`
2. `nid`, `number_point`, `point_x`, `point_y`, `point_x`, `other_vars`

При старте серва, читается первая таблица, откуда грузит имя нпц, описание, другие переменные. По имени нпц создает новый екземпляр класса (как я понял, для каждого бегающего нпц нужно свой екземпляр класса). Класс имеет одну статическую переменную, где хранится ид нпц. При инициализации класса, опять коннект к БД на вторую таблицу и достаем все точки (сортировка по number_point, виборка по nid [npc_id])

Вопрос так и остается: Возможно ли такое организовать, и можно ли динамически создавать классы в Java

Последний раз редактировалось Ashe; 01.03.2014 в 03:17.
ZhukV вне форума Ответить с цитированием
Непрочитано 04.05.2011, 21:31   #8
Аватар для [STIGMATED]
Супергерой

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

ZhukV, вы, случайно, не собираетесь делать браузерную ла2?
Всё что вы хотите сделать, так и говорит о том, двигать персами с сайта=)
__________________
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
[STIGMATED] вне форума Отправить сообщение для [STIGMATED] с помощью Skype™ Ответить с цитированием
Непрочитано 04.05.2011, 21:39   #9
Пользователь

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

Цитата:
Сообщение от [STIGMATED] Посмотреть сообщение
ZhukV, вы, случайно, не собираетесь делать браузерную ла2?
Всё что вы хотите сделать, так и говорит о том, двигать персами с сайта=)
=) =)

Нет, поскольку на флеше таких анимаций не сделаеш, либо нагрузка будет сумашедшая, а на флеше ограничена вирт память

Идея заключается в том, чтобы все, что касается административных целей в ла2, можно было сделать тупо через сайт. Простой пример -- ISP, CPanel, WebMail, SquareMail и множество других. Они полностью интегрированы с оболочкой своего программного комплекса, который находится в системе.

По теории, интегрировать можно, если все данные звести в одну точку, к примеру в БД. Сайт в БД пишет, перезаписывает, а сервер уже оттуда читает.
ZhukV вне форума Ответить с цитированием
Непрочитано 29.06.2011, 23:18   #10
Аватар для Aaron
Пользователь

По умолчанию Re: [Мануал] Делаем бегающего NPC на L2Phoenix

Господа, подскажите - как подобное реализовать на L2j Freya ?
Просто проблемма в том, что нет папки "data\scripts\ai\".
Aaron вне форума Отправить сообщение для Aaron с помощью ICQ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мануал: Делаем русские ники и титулы на своем сервере Evil-Soft Тех-документация 35 27.07.2016 10:45
Делаем NPC обычными игроками! Из NPCs в PCs Ramzessuss Lineage II 15 22.02.2013 21:04
[Гайд] Делаем изменяемыми все виды оружия и брони xobotyi Документация 24 01.02.2012 01:33
L2Phoenix Forward Lineage II 9 25.04.2010 06:48
Делаем ТП в бездну DoLoD Серверная часть 51 23.03.2010 08:58


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 16:26. Часовой пояс GMT +3.

Вверх