30.09.2009, 16:15 | #1 |
Пользователь
|
Урок 1. Основы html для разработки в сфере l2 кода.
Здесь представлен урок по детальному изучению HTML, который присутствует в датапаке сборок l2 java сервера. Урок предназначен для будуших разработчиков, в частности - датапакеров.
Что нам будет нужно для изучения данного урока? - NotePad ++ или же любой текстовый редактор. NotePad - удобней, так как можно делать подсветку синтаксиса. Для начала, что же такое HTML. HTML (от англ. HyperText Markup Language) - язык гипертекстовой разметки текста. Многие думают - что знание ХТМЛ (на уровне ява серверов l2) - это пустяк, и там нечего особого нету. Но - это не так. Я думаю, прочитав этот урок вы в этом убедитесь. Для начала, чтобы вы могли ориентироваться в том что мы будем пытаться делать, укажем где же используется "HTML" в ява сервере. 1. Самое большее (примерно 97%) - это датапак, data/html . 2. В небольшом количестве в ядре (пока нам это не нужно) . 3. В небольших количествах в python scripts ( /scripts/python ). Основное предназначение наших файлов html в датапаке ява сервера - это диалоги NPC. Пример : подойдя к любому НПЦ в мире Lineage2, и клацнув на него 2 раза мышкой - мы видем выскочивший диалог(неважно какой) - именно это и есть html часть датапака и именно её мы будем с вами изучать. Раздел 1. Где какие диалоги хранятся. Этот раздел я опишу вам для того, чтобы вы немного поняли структуру расположения ХТМЛ файлов в вашем датапаке ява сервера. Как мы уже выше с вами выяснили, все важные нам файлы (за исключением ядра и питон скриптов) находятся в /data/html (у l2jserver - gameserver/data/html). Зайдя в эту папку, мы видим большое кол-во папок, находящихся в ней. Для того, чтобы вам немного помочь ориентироваться в этой папке, где хранятся наши диалоги, приведу несколько примеров с характеристикой что в них хранится. Код:
/data/html/admin - здесь хранятся диалоги вашей админ панели (//admin в сервере) /data/html/merchant - здесь хранятся диалоги NPC торговцев (в любом городе они есть) /data/html/clanHallManager - здесь хранятся диалоги NPC которые стоят в клан холах /data/html/teleporter - здесь хранятся диалоги всех NPC телепортеров мира lineage2. И так далее, по аналогии. Раздел 2. Как найти файл который мы будем редактировать. В основном, наши попытки отредактировать тот или иной файл вызваны тем, что мы хотим что то поправить (чей то диалог, какого либо нпс в мире lineage2). И вот мы сталкиваемся с проблемой - как же найти диалог того или иного NPC? Раскажу вам 1 из самых простых методов как же это сделать. Для начала, определим ID того NPC, чей диалог мы собираемся редактировать. Сделать это очень просто. Можно - щелкнуть на NPC в игре shift + click мышки - и получить табличку с его данными, где и будет указан его ID, можно - попробовать найти его ID в базе данных, по таблице npc.sql, можно найти любой пак "Id всего" и найти его ID там. Тут выбирайте что вам более по душе. Итак, мы определили ID нашего NPC. Запомните, html файлы с диалогами того или иного npc чаше всего (в 99% случаев) совпадает с названием html файла. Файл, будет иметь вид : id_npc.html. Для яркого примера, я попытаюсь найти диалог NPC с id 31228. Как я поступаю? Я иду в папку /data/html и выполняю поиск по файлу "31228.htm" Вот я и нашел тот файл, который мне хочется изменить. Это уже хорошо. Приступим дальше. Раздел 3. Основные теги используемые в HTML файле диалога NPC. Итак, сейчас мы уже приступим к пониманию основ, с которыми мы будем работать. Понять основную структуру - важно. Если этот раздел вами будет не усвоен - дальнейшее продвижение будет бессмысленным. Как основу, обьясню вам каким же может быть тег html. Контейнерным, это означает что полный тег будет состоять из открытого и закрытого тега. Имеет вид : Код:
<какой_либо_тег>какое либо значение </какой_либо_тег> Второй - закрывающий тег, указывает машине на то, что операцию по выполнению действия с каким либо значением - нужно завершить. Яркий пример контейнерного тега : Код:
<html> </html> Код:
<a href="http://la2.100nt.ru"> Наш любимый сайт </a> Пример одиночного тега : [code]<br> [code] Теперь, рассмотрим теги с которыми мы можем столкнутся при работе с HTML документами диалогов NPC нашего датапака. Теорию - отбросим(частично). 1. Основной тег, который есть в любом файле : Код:
<html> </html> Этот тег является обязательным к любому HTML документу. Тег ставится - в начале документа и в конце документа. Пример использования тега : Код:
<html> Всё содержание нашего диалога </html> Код:
<body> </body> Пример использования тега : Код:
<body> основное содержание документа </body> Код:
<title> заголовок хтмл диалога 4. Один из широко широко используемых тегов для разметки : Код:
<br> На примере, это выглядит так : Код:
Здраствуйте! Я обучатель уроков по HTML. <br> У меня можно многому научится. Код:
Здраствуйте! Я обучатель уроков по HTML. У меня можно многому научится. 5. Маловажный, но часто употребляемый тег : Код:
<font color="LEVEL"> мой текст </font> После преобразования, в игре оно будет выглядить вот так : Код:
Цитата: мой текст Код:
<b> наш текст </b> После преобразования, будет выглядеть так : Код:
Цитата: наш текст Код:
<!-- нечитаемый текст --> Наглядный пример : Код:
Наш сайт - http://l2-scripts.ru <!-- выше - ссылка на наш сайт --> Самый лучший сайт. Код:
Наш сайт - http://l2-scripts.ru Самый лучший сайт. Код:
<html> <title> Наш первый NPC диалог </title> <body> Приветствую вас! Это наш <font color="LEVEL">первый</font> npc. <br> <b>Я</b>, лучший NPC в мире <b>Lineage2</b><br> <!-- Это наш нпс, составленый нами --> Удачи вам в этом <font color="LEVEL">жестоком</font> мире. </body> </html> Код:
Цитата: Заголовок : Наш первый NPC диалог. Приветствую вас! Это наш первый npc. Я, лучший NPC в мире Lineage2 Удачи вам в этом жестоком мире. Раздел 4. Построение таблиц в диалогах NPC. Нередко, мы встречаем "табличный" вид расположения в диалогах NPC либо текста, либо кнопок, либо ссылок. Сейчас, мы с вами рассмотрим основные табличные теги. В HTML, начало и конец таблицы принято отмечать контейнерным тегом : Код:
<table> </table> Для обозначения начала и конца строки, в html принят тег : Код:
<tr> наша строка </tr> Код:
<td> содержимое ячейки </td> Итак, строки и ячейки - образуют общую сетку, или иными словами - саму таблицу. Для примера, я возьму очень простую таблицу, нам важно понять как же они строятся. Код:
<table> <tr> <td> Ячейка один </td> <td> Ячейка два </td> </tr> <tr> <td> Ячейка три </td> <td> Ячейка четыре </td> </tr> </table> Код:
--------------------------------------------- | Ячейка один | Ячейка два | --------------------------------------------- | Ячейка три | Ячейка четыре | --------------------------------------------- Если вы это осмыслили - значит вы сможете работать с таблицами. Примеров в html документов - вы найдете уйму. Раздел 5. Важнейший тег в диалогах - <a .... > text </a>. Данному разделу нужно уделить особое внимание, так как он является одним из сложнейших, и его понимание - даст вам возможность работать и выгибать HTML файлы под себя, как нужно это ВАМ, а не наоборот. Для прелюдии - мы возьмем обычный HTML тег : Код:
<a href="http://l2-scripts.ru">Наш сайт </a> Код:
Наш сайт Я их привел здесь не случайно. Данный пример поможет нам ниже понять нечто посложней. Возьмем типичный тег, образования "гипрссылки" которая будет выполнятся в нашей игре, а мы её должны прописать в нашем хтмл файле. Вот он собственно : Код:
<a action="byppas -h npc_%objectid%_тип значение"> текст ссылки </a> action=" .... " - это действие, а точней - ссылка на тот или иной обьект которая будет выполняться при "клике мышкой" по ней. Теперь, рассмотрим то что стоит в значении запроса "byppas -h npc_%objectid%_тип значение". byppas -h здесь, дает понять машине, что запрос будет выполнен в кеш, или взят оттуда. byppas - это часть анализатора ядра, останавливаться здесь мы пока не будем. npc_%objectId% - получает данные об этом npc, и дает понять ява машине от кого выполняется этот запрос, и может ли он быть выполненым. значение здесь - это либо номер html документа(который выполнится при определенном типе), либо мультиселл файл, либо же sql запрос. текст ссылки - это то, что будет отображено в диалоге нпс. Она будет подсвечена синим цветом(как ссылка любая) и при клике по ниму - выполнится значение "byppas -h npc_%obiectID%_тип значение". А вот тип здесь может быть различным. Приведу вам основные типы и методики их обработки. а) тип = Chat. Это означает, что наш запрос будет направлен на другой html файл. Основной характеристикой использования - является специфика "значения". Так же, значение при этом типе - несет свою специфику. В значении, указываю за частую число какое либо, которое будет "приставлено" к основному HTML файлу. Возьмем наглядный пример. У нас есть файл html с названием "31228.htm". В этом документе, мы используем запрос(ссылку) : Код:
<a action="bypass -h npc_%objectId%_Chat 1">Подгони ка мне пиццы нах</a> На какой же файл он должен попасть? А всё очень просто. В запросе, мы видим значение, которое равно "1". Следуя выше указанному, при клике на этой ссылке - откроется новый файл, с именем 31228-1.htm. Как я и говорил - добавляется "-значение" к имени файла. б) тип = byu, teleport и другие. При использовании данных типов - значения берутся из наших баз данных. Нам известно, что наши базы данных несут некоторую информацию, к которой может обращаться наш сервер. Глубоко я лезть здесь не хочу, поэтому расскажу поверхностно. Здесь, для понятия этого типа сервером, используется как ява-код сервера так и значения в базе данных(получение и обработка, получение - из базы, обработка - ява код). Возьмем типичный пример : Код:
<a action="bypass -h npc_%objectId%_goto 70">Телепорт на l2-scripts.ru</a> А вот тип goto - новое для нас. Откуда он получится? Ну здесь доволи непростой механизм для полного объяснения, скажу вам что при обработке ява-кодом типа _goto - получится вот такой механизм : ява машина, обработав нашу ссылку, после объяснения нашего значения в ядре сервера поймет, что она была послана в базу данных, на выборку значений для телепорта. Зачастую - это таблица teleport. В ней, имеются такие значения как "id", "locx", "locy", "locz", "price". Так вот, наше значение - это и есть тот "id" который ява машина выберет из баз данных. В нашем случае, значение = 70, ява машина выберет из баз данных строку, в которой ID будет равен "70". Вот такой не сложный механизм на примере телепорта. Аналогично, работает и запрос "byu" и другие. в) тип = multisell. При использовании данного типа в ссылке в хтмл диалоге - будет означать, что при её использовании мы откроем файл, из папки /multisell/ (это произойдет при обработке кода ява машиной). Да, именно этим типом многие реализуют "гм шопы" и прочую дрян. Рассмотрим принцип работы с типом = multisell. Код:
<a action="bypass -h npc_%objectId%_Multisell 1111">купить бублики l2-scripts.ru</a> Вот мы и рассмотрели механику данного действия. Заключение этого раздела : типов - много. Они могут быть разных параметров : некоторые обрабатываются только ява машиной, некоторые - ява машиной + запросы в базы данных, некоторые - ява машиной + запрос на гомолог-файл html(одноименный-значение). Раздел 6. Человечность кода и анализация работы. Начнем с человечности кода. Это один из важных факторов. Человечный код - это написание кода "наглядным методом", "понятным для человека". Но, увы, зачастую все пишут(точней копируют, так как нет мозга) при этом делая код - ужасным. Вот няглядный пример такого извращения : Код:
<html><title>мой нпс</title><body> это мой первый нпс. <br> здесь мы попробуем что либо реализовать. <br> <b> Удачи вам </b></body></html> a) Каждой новой визуальной строке - был абзац в хтмл файле (оно не читается ява машиной). Пример как делать ненужно : Код:
Мой любимый сайт <br> именно этот :l2-scripts.ru Код:
Мой любимый сайт <br> именно этот : http://l2-scripts.ru . Пример как нужно делать : Код:
<html> <body> текст </body> </html> Код:
<html> <title>мой нпс</title> <body> это мой первый нпс. <br> здесь мы попробуем что либо реализовать. <br> <b> Удачи вам </b> </body> </html> Удачи тебе начинающий датапакер. |