Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Пак гайдов от *rage* (взято из ево сурса и закопипастено сюда, так как народ очень часто стал теряться в таких вещах) - с 2010 года.
Справка по мультиселлам
Справка по скиллам:
Старый мануал, делаем по его образцу
Редактируем petsummon.java которая находится хз гдето в сервере
Код:
С серверной частью закончили.
Теперь нужно править клиент.
Добавляем нового пета в npcgrp.dat и npcname-e.dat
Добавляем новый итем в etcitem.dat и itemname-e.dat
Возвращаемся к серверу.
Заносите пета и колар в свою базу данных.
Теперь осталось сделать XML для пета, который будет хранится в l2jfolder/data/script/PetData.zip
Для удобства можно взять xml волка, в качестве шаблона, отредактировать и сохранить под другим именем.
L2.ini Содержит основные настройки клиента, движка игры, видео, звука, DirectX, OpenGL и т.д.
Настроек много, можете сами попробовать разобраться )
Наиболее интересные:
1. Dat файлы, что и где.
==========Редактирование файла L2Font-e.utx==========
Справка по мультиселлам
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1. Формат файлов xml
<?xml version='1.0' encoding='utf-8'?>
<list>
<config showall="true" notax="false" keepenchanted="false" nokey="false" />
<!-- Harvester -->
<item>
<ingredient id="57" count="500"/>
<production id="5125" count="1"/>
</item>
</list>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?xml version='1.0' encoding='utf-8'?>
Начало файла, заголовок
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<list>
Начало списка предметов, в конце файла нужно закрыть тегом </list>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<config showall="true" notax="false" keepenchanted="false" />
Глобальные настройки мультиселла
showall - показывать весь мультиселл либо только те предметы что можно приобрести
notax - отключить налоги с мультиселла
keepenchanted - сохранять заточку у экипировки
Внимание: keepenchanted НЕ должно быть установлено в мультиселлах, где в одном блоке возможны два одинаковых нестекуемых предмета (напрмиер dual)
nokey - управляет обработкой showall, если true то наличие любого ингридиента списка разрешает отображение, иначе только экипировки
Если ключ не указан он устанавливается равным false
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Комментарии согласно спецификации XML ограничиваются тегами <!-- -->
Рекомендуется для каждого блока оставлять комментарий с расшифровкой
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Блок item описывает одну вещь в мультиселле, должен содержать минимум по одному элменту ingredient и production
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Блок ingredient описывает цену предмета, должен содержать id и count
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Блок production описывает итоговую вещь, должен содержать id и count
1. Формат файлов xml
<?xml version='1.0' encoding='utf-8'?>
<list>
<config showall="true" notax="false" keepenchanted="false" nokey="false" />
<!-- Harvester -->
<item>
<ingredient id="57" count="500"/>
<production id="5125" count="1"/>
</item>
</list>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?xml version='1.0' encoding='utf-8'?>
Начало файла, заголовок
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<list>
Начало списка предметов, в конце файла нужно закрыть тегом </list>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<config showall="true" notax="false" keepenchanted="false" />
Глобальные настройки мультиселла
showall - показывать весь мультиселл либо только те предметы что можно приобрести
notax - отключить налоги с мультиселла
keepenchanted - сохранять заточку у экипировки
Внимание: keepenchanted НЕ должно быть установлено в мультиселлах, где в одном блоке возможны два одинаковых нестекуемых предмета (напрмиер dual)
nokey - управляет обработкой showall, если true то наличие любого ингридиента списка разрешает отображение, иначе только экипировки
Если ключ не указан он устанавливается равным false
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Комментарии согласно спецификации XML ограничиваются тегами <!-- -->
Рекомендуется для каждого блока оставлять комментарий с расшифровкой
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Блок item описывает одну вещь в мультиселле, должен содержать минимум по одному элменту ingredient и production
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Блок ingredient описывает цену предмета, должен содержать id и count
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Блок production описывает итоговую вещь, должен содержать id и count
Справка по скиллам:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Все теги должны открываться и закрываться.
Теги, которые можно уместить в одну строку могут закрываться внутри себя.
Пример:
<add .....> ..... </add>
<add ...../>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
формат xml-файлов:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1. <?xml version='1.0' encoding='utf-8'?>
Начало файла, заголовок
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2. <list>
Начало списка скиллов, в конце файла нужно закрыть тегом </list>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3. <skill id="1312" levels="1" name="Fishing">
Начало описания скилла. После всех тегов должно завершаться </skill>
skill id - уникальный id для всех скиллов (и для мобов и для чаров)
levels - максимальное количество уровней у этого скилла
name - его название
Описание скиллов:
A) <table name="#power"> 19 28 38 50 </table>
Таблица. При ссылке на параметр #power, будет браться значение, соответствующее текущему левелу скилла.
Таблиц может быть несколько. Значения могут быть целыми и дробными, и должны отделяться пробелами.
Значений должно быть столько, сколько левелов у этого скилла.
B) <set name="COMMAND" val="VALUE"/>
Обязательные параметры для каждого скилла:
mpConsume - сколько маны требует
reuseDelay - время перезарядки
target - кто может быть целью
skillType - тип скилла
operateType - активный, пассивный, переключаемый (toggle)
Список параметров:
C) <cond>...</cond>
условия для активации скилла. Не используется в пассивках. Если скилл уже активирован, а условие
не соответствует, он НЕ отключается. условия проверяются только для активации.
Примеры использования:
<cond msg="Too much hit points."><player percentHP="25"/></cond> (будет выдаваться сообщение)
без сообщения:
<cond><player percentHP="25"/></cond> (25% hp)
или
<cond><player minHP="25"/></cond> (>25 hp)
D) <for>...</for>
список эффектов, которые применяются при активном скилле или пассивных.
Пример:
<!-- добавить к параметру MEN значение 2. -->
<for>
<add order="0x10" stat="MEN" val="2"/>
</for>
<!-- умножить значение maxHP на значение взятое из таблицы Tab-maxHP и высветить иконку баффа -->
эффекты добавляются словами:
<add - добавить
<mul - умножить
<set - установить
<sub - отнять
<div - разделить
order означает порядок вычисления. (order 0x08, 0x10, 0x30, 0x40, 0x50, 0x60)
Список изменяемых параметров:
статы:
параметры:
остальное:
рефлекты:
разное:
рейты:
резисты:
E) условия:
<COMMAND VARIABLE="VALUE">
могут быть заключены в теги <and> <or> <not>
пример:
список команд (COMMAND):
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
F) Эффекты:
<effect count="1" name="Buff" time="1200" val="0" stackOrder="#stack" stackType="hp_up">
count = кол-во тиков, которые длится эффект
time = длина тика в секундах для этого эффекта (В примере у нас имеется один тик длинной 1200сек=20мин)
name = что это за эффект. У эффектов могут быть аффекты на старт, стоп и на время действия.
val = значение для "name"
stackOrder = "Сила эффекта", чтобы сравнивать какой более сильный при обновлении
stackType = "Тип эффекта", чтобы не накладывались схожие баффы
пример: добавляется скорость атаки на 25%, но при этом отнимается mana каждые 2 тика 35 HP
длительность эффекта не ограничена (это у нас toggle)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Saboteur.
Данный хелп действителен на 12.09.2006 (сборка Fortress 3992)
P.S. Особая благодарность Муркту за разъяснение многих моментов.
Все теги должны открываться и закрываться.
Теги, которые можно уместить в одну строку могут закрываться внутри себя.
Пример:
<add .....> ..... </add>
<add ...../>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
формат xml-файлов:
Код:
<?xml version='1.0' encoding='utf-8'?>
<list>
<skill id="1312" levels="1" name="Fishing">
<set name="weaponsAllowed" val="8192"/>
<set name="mpConsume" val="1"/>
<set name="reuseDelay" val="1000"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="FISHING"/>
<set name="operateType" val="OP_ACTIVE"/>
<for>
</for>
</skill>
<skill id="1313" levels="27" name="Pumping">
<table name="#power"> 19 28 38 50 55 60 65 70 86 92 97 103 109 115 136 143 149 156 187 195 202 245 253 262 271 312 321 </table>
<set name="weaponsAllowed" val="8192"/>
<set name="mpConsume" val="2"/>
<set name="power" val="#power"/>
<set name="reuseDelay" val="2000"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="PUMPING"/>
<set name="operateType" val="OP_ACTIVE"/>
<for>
</for>
</skill>
</list>
1. <?xml version='1.0' encoding='utf-8'?>
Начало файла, заголовок
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2. <list>
Начало списка скиллов, в конце файла нужно закрыть тегом </list>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3. <skill id="1312" levels="1" name="Fishing">
Начало описания скилла. После всех тегов должно завершаться </skill>
skill id - уникальный id для всех скиллов (и для мобов и для чаров)
levels - максимальное количество уровней у этого скилла
name - его название
Описание скиллов:
A) <table name="#power"> 19 28 38 50 </table>
Таблица. При ссылке на параметр #power, будет браться значение, соответствующее текущему левелу скилла.
Таблиц может быть несколько. Значения могут быть целыми и дробными, и должны отделяться пробелами.
Значений должно быть столько, сколько левелов у этого скилла.
B) <set name="COMMAND" val="VALUE"/>
Обязательные параметры для каждого скилла:
mpConsume - сколько маны требует
reuseDelay - время перезарядки
target - кто может быть целью
skillType - тип скилла
operateType - активный, пассивный, переключаемый (toggle)
Список параметров:
Код:
COMMAND: canLearn - (value = "" - Этот скилл нельзя будет выучить. default - не прописывать)
castRange - Радиус действия каста
activateRate - VALUE
absorbAbs - VALUE
absorbPart - VALUE
advancedFlag - true/false
advancedMultiplier - VALUE
behind - true/false
cancelable - true/false
cancelTarget - true/false
charge_skill_id - skill_id для charge
corpse - true/false
critical - true/false
crush - true/false
deathlink - true/false
displayId - VALUE
element - VALUE
expPenalty - пенальти на эксп ("0.9")
hitTime - VALUE
hpConsume - VALUE
isCubic - true/false
isDwarven - true/false
isMagic - true/false
itemConsumeCount - VALUE
itemConsumeCountInTime - VALUE
itemConsumeDelay - VALUE
itemConsumeId - item_id предмета, который будет использован "1458"
itemConsumeIdInTime - item_id предмета, который будет использован регулярно "1458"
itemConsumePeriods - период за который будет идти регулярный расход предмета
lethal - true/false
levelModifier - VALUE
magicLevel - VALUE
minPledgeClass - VALUE
mpConsume - VALUE
negateDebuffs - true/false
negateEffects - "SLEEP"
negateEffects - "STUN SLEEP MUTE POISON BLEED BUFF DEBUFF PARALYZE"
negatePower - VALUE
negateStats - "mAtk mAtkSpd"
npcId - VALUE
num_charges - VALUE
onCrit - true/false
operateType - OP_ACTIVE/OP_PASSIVE/OP_TOGGLE
overHit - true/false
power - VALUE
reuseDelay - VALUE
save - VALUE
seed_any - true/false
seed1 - VALUE
seed2 - VALUE
seedCount - VALUE
seedcount1 - VALUE
skillInterrupt - true/false
skillRadius - VALUE
skillTime - VALUE
skillType - AGGRESSION/AIEFFECTS/BALANCE/BLEED/BUFF/CANCEL/CHARGE/CHARGEDAM/COMBATPOINTHEAL/
CONFUSION/CONT/CRAFT/DANCE/DEBUFF/DOT/DRAIN/DRAIN_SOUL/ENCHANT_ARMOR/ENCHANT_WEAPON/FATALBLOW/FEED_PET/FISHING/HEAL
HEAL_PERCENT/HOT/INTERRUPT_DISARM/LETHAL_SHOT/LUCK/MANADAM/MANAHEAL/MDAM/MDAM_ELEMENTAL/MDOT/MUTE
NEGATE_EFFECTS/NEGATE_STATS/NOTDONE/PARALYZE/PASSIVE/PDAM/PDAM/POISON/PUMPING/RECALL/REELING/RESURRECT
ROOT/SEED/SIEGEFLAG/SLEEP/SONG/SOULSHOT/SPIRITSHOT/SPOIL/STUN/SUMMON/SUMMON/SUMMON_ITEM/SWEEP/TAKECASTLE
TELEPORT_NPC/TURNER/UNLOCK
SummonItemId - VALUE
SummonMinCount - VALUE
target - TARGET_ALLY/TARGET_AREA/TARGET_AREA_AIM_CORPSE/TARGET_AURA/TARGET_CORPSE/
TARGET_CORPSE_PLAYER/TARGET_HOLY/TARGET_ITEM/TARGET_MULTIFACE/TARGET_NONE/TARGET_ONE/TARGET_PARTY/
TARGET_PET/TARGET_SELF/TARGET_UNLOCKABLE
unaggroing - true/false
undeadOnly - true/false
weaponsAllowed - VALUE
условия для активации скилла. Не используется в пассивках. Если скилл уже активирован, а условие
не соответствует, он НЕ отключается. условия проверяются только для активации.
Примеры использования:
<cond msg="Too much hit points."><player percentHP="25"/></cond> (будет выдаваться сообщение)
без сообщения:
<cond><player percentHP="25"/></cond> (25% hp)
или
<cond><player minHP="25"/></cond> (>25 hp)
D) <for>...</for>
список эффектов, которые применяются при активном скилле или пассивных.
Пример:
<!-- добавить к параметру MEN значение 2. -->
<for>
<add order="0x10" stat="MEN" val="2"/>
</for>
<!-- умножить значение maxHP на значение взятое из таблицы Tab-maxHP и высветить иконку баффа -->
Код:
<for>
<effect count="1" name="Buff" time="1200" val="0" stackOrder="#stack" stackType="hp_up">
<mul order="0x50" stat="maxHp" val="#Tab-maxHp"/>
</effect>
</for>
<add - добавить
<mul - умножить
<set - установить
<sub - отнять
<div - разделить
order означает порядок вычисления. (order 0x08, 0x10, 0x30, 0x40, 0x50, 0x60)
Код:
0x08 используется для базовой установки параметра
0x10 используется для базовой модификации параметра
0x30 используется для добавления базовых бонусов к параметру
0x40 для прибавления статических бонусов к параметру
0x50 для множителей параметров
0x60 для прибавления статических бонусов ПОСЛЕ множителей
статы:
Код:
CON
DEX
INT
MEN
STR
WIT
Код:
accCombat
cAtk
cAtkStatic
hpEff
mAtk
mAtkSpd
maxCp
maxHp
maxLoad
maxMp
mDef
mpConsum
mpConsumePhysical
mpEff
mReuse
pAtk
pAtkRange
pAtkSpd
pDef
pReuse
rCrit
rCritPercent
regCp
regHp
regMp
sDef
Код:
absorbDam
breath
concentration
element
ExpSpMultiplier
poleAngle
rEvas
rShld
runSpd
shldAngle
transferDam
bighead
Код:
reflectDam
reflectMagicSkill
reflectPhysicSkill
Код:
CommonRecipeLimit
DwarvenRecipeLimit
inventoryLimit
storageLimit
tradeLimit
Код:
activateRate
blowRate
mCritRate
Код:
bleedRcpt
bluntWpnRcpt
bowWpnRcpt
cancelRcpt
daggerWpnRcpt
debuffRcpt
earthRcpt
fearRcpt
fireRcpt
paralyzeRcpt
poisonRcpt
poleWpnRcpt
rootRcpt
sacredRcpt
sleepRcpt
stunRcpt
swordWpnRcpt
unholyRcpt
waterRcpt
windRcpt
<COMMAND VARIABLE="VALUE">
могут быть заключены в теги <and> <or> <not>
пример:
Код:
<sub order="0x10" stat="STR" val="1">
<game night="true"/>
</sub>
<and>
<player riding="strider"/>
<target castledoor="true"/>
</and>
Код:
<player VARIABLE="PARAM">
VARIABLE: race (Undead/MagicCreatures/Beasts/Animals/Plants/Humanoids/Spirits/Angels/Demons/Dragons/Giants/Bugs/Fairies/Humans/Elves/DarkElves/Orcs/Dwarves/Others/NonLivingBeings/SiegeWeapons/DefendingArmy/Mercenaries/UnknownCreature)
level
resting (true/false)
moving (true/false)
running (true/false)
riding (strider/wyvern/none)
hp
<target VARIABLE="PARAM">
VARIABLE: aggro (true/false)
undead (true/false)
pvp (true/false)
mob (true/false)
race (Undead/MagicCreatures/Beasts/Animals/Plants/Humanoids/Spirits/Angels/Demons/Dragons/Giants/Bugs/Fairies/Humans/Elves/DarkElves/Orcs/Dwarves/Others/NonLivingBeings/SiegeWeapons/DefendingArmy/Mercenaries/UnknownCreature)
castledoor (true/false)
direction (behind/front/side)
<using VARIABLE="PARAM">
VARIABLE: kind (Shield/Sword/Blunt/Dagger/Bow/Pole/Etc/Fist/Dual Sword/Dual Fist/Big Sword/Pet/Rod)
armor (None/Light/Heavy/Magic/Pet)
skill (skill_id)
slotitem
<game VARIABLE="PARAM">
VARIABLE: night (true/false)
F) Эффекты:
<effect count="1" name="Buff" time="1200" val="0" stackOrder="#stack" stackType="hp_up">
count = кол-во тиков, которые длится эффект
time = длина тика в секундах для этого эффекта (В примере у нас имеется один тик длинной 1200сек=20мин)
name = что это за эффект. У эффектов могут быть аффекты на старт, стоп и на время действия.
val = значение для "name"
stackOrder = "Сила эффекта", чтобы сравнивать какой более сильный при обновлении
stackType = "Тип эффекта", чтобы не накладывались схожие баффы
пример: добавляется скорость атаки на 25%, но при этом отнимается mana каждые 2 тика 35 HP
длительность эффекта не ограничена (это у нас toggle)
Код:
<for>
<effect count="0x7fffffff" name="HealOverTime" time="2" val="-35">
<mul order="0x50" stat="pAtkSpd" val="1.25"/>
</effect>
</for>
Saboteur.
Данный хелп действителен на 12.09.2006 (сборка Fortress 3992)
P.S. Особая благодарность Муркту за разъяснение многих моментов.
Старый мануал, делаем по его образцу
Редактируем petsummon.java которая находится хз гдето в сервере
Код:
Код:
/ // all the items ids that this handler knowns
private static final int[] _itemIds = { 2375, 3500, 3501, 3502, 4422, 4423, 4424, 69000, 69001, //Здесь дописываем ID предмета, который будет использоваться для вызова пета// **;
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.handler.IItemHandler#useItem(net.sf.l2j.gameserver.model.L2PcInstance, net.sf.l2j.gameserver.model.L2ItemInstance)
*/
public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if (!(playable instanceof L2PcInstance))
return;
L2PcInstance activeChar = (L2PcInstance)playable;
int npcId;
if (activeChar.getPet() != null)
{
if (Config.DEBUG) _log.fine("player has a pet already. ignore use item");
return;
**
if (activeChar.isMounted())
return;
switch (item.getItemId())
{
// wolf pet a
case 2375:
npcId = 12077;
break;
// hatchling of wind
case 3500:
npcId = 12311;
break;
// hatchling of star
case 3501:
npcId = 12312;
break;
// hatchling of twilight
case 3502:
npcId = 12313;
break;
// wind strider
case 4422:
npcId = 12526;
break;
// Star strider
case 4423:
npcId = 12527;
break;
// Twilight strider
case 4424:
npcId = 12528;
break;
//Название пета
case //ид предмета для вызова//:
npcId = //Id монстра который будет вызываться//;
break;
Теперь редактируем l2petinstance.java в хз гдето в сервере
Код:
**
L2ItemInstance food = null;
switch (getTemplate().npcId)
{
// wolf
case 12077:
food = getInventory().findItemByItemId(2515);
break;
//hatchling of wind
case 12311:
food = getInventory().findItemByItemId(4038);
break;
// hatchling of star
case 12312:
food = getInventory().findItemByItemId(4038);
break;
// hatchling of twilight
case 12313:
food = getInventory().findItemByItemId(4038);
break;
// wind strider
case 12526:
food = getInventory().findItemByItemId(5168);
break;
// Star strider
case 12527:
food = getInventory().findItemByItemId(5168);
break;
// Twilight strider
case 12528:
food = getInventory().findItemByItemId(5168);
break;
//Новый Пет
case //ID пета[/COLOR]:
food = getInventory().findItemByItemId(5168); // Здесь можно использовать ID любово предмета который будет использоваться в качестве пищи - здесь для удобство взята еда для волка//
break;
С серверной частью закончили.
Теперь нужно править клиент.
Добавляем нового пета в npcgrp.dat и npcname-e.dat
Добавляем новый итем в etcitem.dat и itemname-e.dat
Возвращаемся к серверу.
Заносите пета и колар в свою базу данных.
Теперь осталось сделать XML для пета, который будет хранится в l2jfolder/data/script/PetData.zip
Для удобства можно взять xml волка, в качестве шаблона, отредактировать и сохранить под другим именем.
L2.ini Содержит основные настройки клиента, движка игры, видео, звука, DirectX, OpenGL и т.д.
Настроек много, можете сами попробовать разобраться )
Наиболее интересные:
ServerAddr=10.0.0.5 - IP адрес сервера
L2UseKeyCrypt=false - включение/выключение криптования при вводе логина и пассворда (при L2UseKeyCrypt=true - не сможете писать буквами в ID и Pass при коннекте на сервер)
[CharacterDisplay]
Dist=1000 - дистанция видимости PC и NPC (при Dist=10000 можно видеть очень далеко (в игре тоже стоит тогда включить все параметры видимости (PC Limit, PC/NPC Range, Terrain Range) на максимум - 5
[WinDrv.WindowsClient]
WindowedViewportX=640
WindowedViewportY=480 - разрешение экрана игры в оконном режиме
FullscreenViewportX=1024
FullscreenViewportY=768 - разрешение экрана игры в полноэкранном режиме
UseJoystick=False - использовать/не использовать джойстик для ходьбы в игре, при True - не позволит бегать с помощью клавиатуры
StartupFullscreen=True - запускать игру в полноэкранном режиме (False - в оконном режиме)
[D3DDrv.D3DRenderDevice]
DesiredRefreshRate=60 - желательная частота обновления экрана в игре (Например, если вы в игре поставили частоту 85 Гц, то иногда при переключении в винду, а потом обратно в игру - частота падает до 60 Гц и сразу режет глаза. В этом случае следует попробовать поменять в DesiredRefreshRate= на 85)
В принципе все, в остальном можно разобраться самому, там все интуитивно понятно, а можно вообще ничего больше не трогать.
User.ini
Не открывается сразу блокнотом, закриптован 412 ключом.
Содержит дополнительные настройки игры, преимущественно настройки управления, клавиатуры, джойстика, мышки, камер и т.д.
[Engine.LineagePlayerController]
MaxZoomingDist=250 - максимальная дистанция удаления камеры (меняем на MaxZoomingDist=65000 и получаем неограниченное удаление камеры, т.н. Zoom Patch
MinZoomingDist=-200 - минимальная дистанция удаления камеры
MouseWheelDown=ZoomInPress Speed=20.0
MouseWheelUp=ZoomOutPress Speed=20.0 - скорости удаления/приближения камеры с помощью прокрутки колесика мышки
Можно много и долго экспериментировать с индивидуальными настройками управления.
Декодирование Файлов Клиента, L2encdec
Многие наверно пробовали открывать различные файлы клиента и сталкивались с проблемой, что получали что-то в виде неразборчивых каракулей. Это происходит потому, что большинство файлов клиента, содержащих скрипты, текстуры, различные настройки - зашифрованы.
Причем ключи, которыми зашифрованы файлы, всегда разные. Это зависит от версии клиента для разных серверов, а также от конкретных файлов.
Кодировать и раскодировать файлы клиента Lineage2 можно с помощью специальной программы L2encdec или любой другой, какую найдете в Интернете и способную делать это.
Раскодировав какой-либо файл клиента, можно его отредактировать (чаще всего блокнотом или любым текстовым редактором, иногда требуются другие спецальные проги для изменения файла уже после его раскодировки) и потом измененный файл вставить обратно в клиент, предварительно зашифровав его подходящим ключом. Иначе игра просто не поймет файл и не запустится.
Как правило (но совсем не факт), необходимый ключ для каждого конкретного файла можно посмотреть в нем самом, попробовав его открыть блокнотом и получив что-то в виде: "Lineage2Ver412.... <тут неразборчивые каракули> ... ", где 412 (или любое другое число) и является необходимым ключом.
L2encdec
Раскодировка:
Перед использованием программы L2encdec для раскодировки файла необходимо нужный файл сначало пропатчить. Патчер (patcher) находится в одном архиве с L2encdec.
- копируем файл куда-нибудь в одну папку с L2encdec и Patcher
- запускаем Patcher, он патчит файл (при этом предварительно сам создает его бэкап)
- запускаем L2encdec с параметрами -s <название файла>
- получаем раскодированный файл с приставкой в названии dec- , который уже можно использовать и изменять
Кодировка:
- запускаем L2encdec с параметрами -h <ключ> <название файла>
- получаем закодированный файл с приставкой в названии enc-
- изменяем название на первоначальное, какое оно должно быть в клиенте, вставляем файл в клиент
!!! Внимание !!! При использовании L2encdec в <название файла> нужно писать только полное его название вместе с расширением.
!!! Внимание !!! Чтобы после всех процедур файлы работали (точнее клиент их понял и запустился) нужно предварительно пропатчить сам движок клиента - L2.exe, engine.dll, ... и т.д.
Легче всего это сделать пропатчив сразу всю папку System:
- делаем бекап папки System куда-нибудь на всякий случай
- кидаем L2encdec и Patcher в System и запускаем Patcher
- патч займет 1-2 минуты
После завершения все файлы в папке уже окажутся пропатченными, и не нужно будет повторно их патчить для раскодировки, как описано выше + измененные и закодированные обратно файлы будут свободно восприниматься игрой.
Само по себе пропатчивание папки System совершенно никак не отражается на работоспособности игры.
Для примера всего, что было написано выше, возьмем файл Env.int из папки System в директории с игрой
- делаем бекап папки System куда-нибудь на всякий случай
- кидаем L2encdec и Patcher в System и запускаем Patcher
- патч займет 1-2 минуты
- пробуем открыть Env.int блокнотом, видим ключ Lineage2Ver111
- запускаем L2encdec с параметрами -s Env.int
Код
l2encdec.exe -s Env.int (проще всего выполнять эти действия в windows commander, прописывая это в командной строке)
- получаем dec-Env.int, открываем блокнотом, редактируем по своему усмотрению (а лучше не трогаем ), сохраняем
- запускаем L2encdec с параметрами -h 111 dec-Env.int
Код
l2encdec.exe -h 111 dec-Env.int
- получем enc-dec-Env.int, переименовываем в Env.int, кидаем обратно в System, играем
L2UseKeyCrypt=false - включение/выключение криптования при вводе логина и пассворда (при L2UseKeyCrypt=true - не сможете писать буквами в ID и Pass при коннекте на сервер)
[CharacterDisplay]
Dist=1000 - дистанция видимости PC и NPC (при Dist=10000 можно видеть очень далеко (в игре тоже стоит тогда включить все параметры видимости (PC Limit, PC/NPC Range, Terrain Range) на максимум - 5
[WinDrv.WindowsClient]
WindowedViewportX=640
WindowedViewportY=480 - разрешение экрана игры в оконном режиме
FullscreenViewportX=1024
FullscreenViewportY=768 - разрешение экрана игры в полноэкранном режиме
UseJoystick=False - использовать/не использовать джойстик для ходьбы в игре, при True - не позволит бегать с помощью клавиатуры
StartupFullscreen=True - запускать игру в полноэкранном режиме (False - в оконном режиме)
[D3DDrv.D3DRenderDevice]
DesiredRefreshRate=60 - желательная частота обновления экрана в игре (Например, если вы в игре поставили частоту 85 Гц, то иногда при переключении в винду, а потом обратно в игру - частота падает до 60 Гц и сразу режет глаза. В этом случае следует попробовать поменять в DesiredRefreshRate= на 85)
В принципе все, в остальном можно разобраться самому, там все интуитивно понятно, а можно вообще ничего больше не трогать.
User.ini
Не открывается сразу блокнотом, закриптован 412 ключом.
Содержит дополнительные настройки игры, преимущественно настройки управления, клавиатуры, джойстика, мышки, камер и т.д.
[Engine.LineagePlayerController]
MaxZoomingDist=250 - максимальная дистанция удаления камеры (меняем на MaxZoomingDist=65000 и получаем неограниченное удаление камеры, т.н. Zoom Patch
MinZoomingDist=-200 - минимальная дистанция удаления камеры
MouseWheelDown=ZoomInPress Speed=20.0
MouseWheelUp=ZoomOutPress Speed=20.0 - скорости удаления/приближения камеры с помощью прокрутки колесика мышки
Можно много и долго экспериментировать с индивидуальными настройками управления.
Декодирование Файлов Клиента, L2encdec
Многие наверно пробовали открывать различные файлы клиента и сталкивались с проблемой, что получали что-то в виде неразборчивых каракулей. Это происходит потому, что большинство файлов клиента, содержащих скрипты, текстуры, различные настройки - зашифрованы.
Причем ключи, которыми зашифрованы файлы, всегда разные. Это зависит от версии клиента для разных серверов, а также от конкретных файлов.
Кодировать и раскодировать файлы клиента Lineage2 можно с помощью специальной программы L2encdec или любой другой, какую найдете в Интернете и способную делать это.
Раскодировав какой-либо файл клиента, можно его отредактировать (чаще всего блокнотом или любым текстовым редактором, иногда требуются другие спецальные проги для изменения файла уже после его раскодировки) и потом измененный файл вставить обратно в клиент, предварительно зашифровав его подходящим ключом. Иначе игра просто не поймет файл и не запустится.
Как правило (но совсем не факт), необходимый ключ для каждого конкретного файла можно посмотреть в нем самом, попробовав его открыть блокнотом и получив что-то в виде: "Lineage2Ver412.... <тут неразборчивые каракули> ... ", где 412 (или любое другое число) и является необходимым ключом.
L2encdec
Раскодировка:
Перед использованием программы L2encdec для раскодировки файла необходимо нужный файл сначало пропатчить. Патчер (patcher) находится в одном архиве с L2encdec.
- копируем файл куда-нибудь в одну папку с L2encdec и Patcher
- запускаем Patcher, он патчит файл (при этом предварительно сам создает его бэкап)
- запускаем L2encdec с параметрами -s <название файла>
- получаем раскодированный файл с приставкой в названии dec- , который уже можно использовать и изменять
Кодировка:
- запускаем L2encdec с параметрами -h <ключ> <название файла>
- получаем закодированный файл с приставкой в названии enc-
- изменяем название на первоначальное, какое оно должно быть в клиенте, вставляем файл в клиент
!!! Внимание !!! При использовании L2encdec в <название файла> нужно писать только полное его название вместе с расширением.
!!! Внимание !!! Чтобы после всех процедур файлы работали (точнее клиент их понял и запустился) нужно предварительно пропатчить сам движок клиента - L2.exe, engine.dll, ... и т.д.
Легче всего это сделать пропатчив сразу всю папку System:
- делаем бекап папки System куда-нибудь на всякий случай
- кидаем L2encdec и Patcher в System и запускаем Patcher
- патч займет 1-2 минуты
После завершения все файлы в папке уже окажутся пропатченными, и не нужно будет повторно их патчить для раскодировки, как описано выше + измененные и закодированные обратно файлы будут свободно восприниматься игрой.
Само по себе пропатчивание папки System совершенно никак не отражается на работоспособности игры.
Для примера всего, что было написано выше, возьмем файл Env.int из папки System в директории с игрой
- делаем бекап папки System куда-нибудь на всякий случай
- кидаем L2encdec и Patcher в System и запускаем Patcher
- патч займет 1-2 минуты
- пробуем открыть Env.int блокнотом, видим ключ Lineage2Ver111
- запускаем L2encdec с параметрами -s Env.int
Код
l2encdec.exe -s Env.int (проще всего выполнять эти действия в windows commander, прописывая это в командной строке)
- получаем dec-Env.int, открываем блокнотом, редактируем по своему усмотрению (а лучше не трогаем ), сохраняем
- запускаем L2encdec с параметрами -h 111 dec-Env.int
Код
l2encdec.exe -h 111 dec-Env.int
- получем enc-dec-Env.int, переименовываем в Env.int, кидаем обратно в System, играем
1. Dat файлы, что и где.
sysstring-e.dat - Тут храниться инфа из меню логин, чар и т.д.
zonename-e.dat - Тут храниться все то что появляется когда мы находимся на какой либо территории. Тоесть по среди экрана текст высвечивается - Gludio Territory и тд.
systemmsg-e.dat- Тут храниться системные сообщения. Пример: Вы нанесли X урона. Вы подобрали 12 аден. Я думаю понятно про что я говорю.
symbolname-e.dat - Точно незнаю, но точно знаю, что здесь есть тот текст или "смайл" когда в клиенте мы ругаемся матом вместо мата появляется.
staticobject-e.dat - Невижу смысла этого файла, но в нем хранятся названия дверей которые существуют в Lineage 2.
skillname-e.dat - В этом файле находятся названия скилов и их описание.
servername-e.dat - Здесь распологаются названия серверов. Тоесть когда мы заходим в Lineage 2, авторизовавшись мы вибираем сервер. Так вот в этом файле хранятся их имена и их можно изменить на собственное. Например на My server. И когда вы дадите патч другому пользователю он увидит не сервер Bartz (первый сервер по умолчанию), а My server. Красиво, согласен
questname-e.dat - В этом файле хранятся все названия квестов которые вы видите в клиенте когда берете квест.
obscene-e.dat - Здесь находится фильтр мата, а если говорить конкретней не сам фильтр, а тот текст который фильтрует сервер. Декодера для этого файла я ненашел, а жалко, можно было бы русский мат превращать в безабидный смайлик Ну да ладно оно может и к лудшему
npcname-e.dat - Здесь хранятся имена NPC и многое другое, я бы нестал здесь ничего менять. Это может дезинформировать пользователей вашего сервера.
itemname-e.dat - Здесь хранятся имена вещей, я его нестал переводить на русский так как люди уже привыкли к обычным английским названиям, да это и удобней, но если вы захотите все же его руссифицировать то лучше для начало используйте поиск, на данный момент уже имеется русская, но не полная версия этого файла.
hennagrp-e.dat - Как я понял тут находятся имена тату. При сильной потребности можно руссифицировать.
eula-e.dat - Говорят здесь хранится лицензионное соглашение которое показывается при конекте к серверу....
creditgrp-e.dat - Здесь хранится информация о настройке заставки о создателях игры. Ничего интересного честно скажу.
commandname-e.dat - Здесь хранится информация о командах которые можно прописывать в чате. Пример:/loc - выведет ваше месторасположение по 3 осям - x,y,z. Не стал бы это трогать так как можно нарушить структуру и игра может зависать или вылетать. Нам не нужны лишние баги.
classinfo-e.dat - Без понятия что это, но и без него все хорошо работает. Если узнаю дополню
castlename-e.dat - Из названия уже все понятно Если нет, то скажу - название замков и клан холлов в этом файле лежит.
actionname-e.dat- В этом файле находятся название и описание стандартных скилов или умений если так можно выразиться. Такие как сесть, обмен и тд. Это не файл в котором находятся комманды, прошу не путать с commandname-e.dat. Тоесть те умения которые можно поместить в специальное меню быстрого реагирования .
zonename-e.dat - Тут храниться все то что появляется когда мы находимся на какой либо территории. Тоесть по среди экрана текст высвечивается - Gludio Territory и тд.
systemmsg-e.dat- Тут храниться системные сообщения. Пример: Вы нанесли X урона. Вы подобрали 12 аден. Я думаю понятно про что я говорю.
symbolname-e.dat - Точно незнаю, но точно знаю, что здесь есть тот текст или "смайл" когда в клиенте мы ругаемся матом вместо мата появляется.
staticobject-e.dat - Невижу смысла этого файла, но в нем хранятся названия дверей которые существуют в Lineage 2.
skillname-e.dat - В этом файле находятся названия скилов и их описание.
servername-e.dat - Здесь распологаются названия серверов. Тоесть когда мы заходим в Lineage 2, авторизовавшись мы вибираем сервер. Так вот в этом файле хранятся их имена и их можно изменить на собственное. Например на My server. И когда вы дадите патч другому пользователю он увидит не сервер Bartz (первый сервер по умолчанию), а My server. Красиво, согласен
questname-e.dat - В этом файле хранятся все названия квестов которые вы видите в клиенте когда берете квест.
obscene-e.dat - Здесь находится фильтр мата, а если говорить конкретней не сам фильтр, а тот текст который фильтрует сервер. Декодера для этого файла я ненашел, а жалко, можно было бы русский мат превращать в безабидный смайлик Ну да ладно оно может и к лудшему
npcname-e.dat - Здесь хранятся имена NPC и многое другое, я бы нестал здесь ничего менять. Это может дезинформировать пользователей вашего сервера.
itemname-e.dat - Здесь хранятся имена вещей, я его нестал переводить на русский так как люди уже привыкли к обычным английским названиям, да это и удобней, но если вы захотите все же его руссифицировать то лучше для начало используйте поиск, на данный момент уже имеется русская, но не полная версия этого файла.
hennagrp-e.dat - Как я понял тут находятся имена тату. При сильной потребности можно руссифицировать.
eula-e.dat - Говорят здесь хранится лицензионное соглашение которое показывается при конекте к серверу....
creditgrp-e.dat - Здесь хранится информация о настройке заставки о создателях игры. Ничего интересного честно скажу.
commandname-e.dat - Здесь хранится информация о командах которые можно прописывать в чате. Пример:/loc - выведет ваше месторасположение по 3 осям - x,y,z. Не стал бы это трогать так как можно нарушить структуру и игра может зависать или вылетать. Нам не нужны лишние баги.
classinfo-e.dat - Без понятия что это, но и без него все хорошо работает. Если узнаю дополню
castlename-e.dat - Из названия уже все понятно Если нет, то скажу - название замков и клан холлов в этом файле лежит.
actionname-e.dat- В этом файле находятся название и описание стандартных скилов или умений если так можно выразиться. Такие как сесть, обмен и тд. Это не файл в котором находятся комманды, прошу не путать с commandname-e.dat. Тоесть те умения которые можно поместить в специальное меню быстрого реагирования .
==========Редактирование файла L2Font-e.utx==========
1) Программа UT Package Tool v2.0 beta 5 (сокращенно UTPT)-для просмотра и вытаскивания нужных текстур.
2) Программа l2decrypt - для кодирования и декодирования файлов
3) Программа l2tool - для замены отредактированных текстур в файлах .utx
Качаем dstuff.luftbrandzlung.org/l2asylum/
4) Плагин Fotoshop DDS - для открытия и редактирования файлов DDS в Fotoshop.
(ложим его в ....\Photoshop 7.0\Plug-Ins\File Formats )
-----------------------------------------------------------------------------------------------
Работа:
1) Создаем папку с любым названием и помещаем в неё файл L2Font-e.utx и программу 2decrypt. Затем открываем эту папку в стандартном Проводнике Windows(обязательно). Далее берем L2Font-e.utx и перетаскиваем его на файл программы l2decrypt.exe. Открывается окно l2decrypt и ждём появления внизу этого окошечка надписи: All tasks have be finished,hit return to exit. Дождавшись этой надписи, можно закрыть окошечко l2 decrypt.Теперь в этой самой папке после расшифровки образовался файл "L2Font-e.clear.utx"
2) Теперь с помощью UTPT.exe вытаскиваем нужную текстуру, в нашем случае это-"loading02-e" и сохраняешь её в формате DDS в нашу созданную папочку.
Дальше редактируем её в Фотошопе. Рекомендуемый размер картинки которой вы будете заменять экран Загрузки или карту=1600х1200
==Теперь главное:СОХРАНЕНИЕ dds в Фотошопе!==
Файл>Сохранить как>Ставим расширение DDS и нажимаем сохранить>Откроется окошко "NVIDIA dds format" (если не откроется, то скачать этот файлик из инета). В нем несколько настроек: Нажимаем кнопочку "MIP maps.." и ставим параметр "Generate MIP maps" равное 1.
(это очень важно) ,если возник вопрос что такое MIP maps, то идем по ссылке
Параметр Save Format должен быть DXT3 ARGB(Explicit Alpha) и 2D Texture.
Остальные параметры не меняем.
!!!Если вы сохраните файл с кол-вом MIP maps больше 1,то получите размытую картинку во время заставки с эффектом пикселезации!!!
3) Открываем l2tool (она на японском языке) и
--в первой строке указываем запакованный(исходный) архив L2Font-e.utx
--во второй строке указываем свой отредактированный в Фотошопе файл DDS с тем же названием,с которым вынимал из UTPT.exe.
--в третьей строке указываем расшифрованный архив L2Font-e.clear.utx, который вы расшифровали с помощью l2 decrypt, сразу же появляется окно в котором вы должены выбрать название текстуры, которую редактировали. После всего этого нажимаем кнопку "set", и вуаля, все готово.
4) Ваша отредактированная текстура сохранилась в расшифрованном вами архиве L2Font-e.clear.utx
5) Дальше переименовываем файл в L2Font-e.utx, копируем его в папку Systextures игры и заменяем им старый оригинальный зашифрованный архив.
2) Программа l2decrypt - для кодирования и декодирования файлов
3) Программа l2tool - для замены отредактированных текстур в файлах .utx
Качаем dstuff.luftbrandzlung.org/l2asylum/
4) Плагин Fotoshop DDS - для открытия и редактирования файлов DDS в Fotoshop.
(ложим его в ....\Photoshop 7.0\Plug-Ins\File Formats )
-----------------------------------------------------------------------------------------------
Работа:
1) Создаем папку с любым названием и помещаем в неё файл L2Font-e.utx и программу 2decrypt. Затем открываем эту папку в стандартном Проводнике Windows(обязательно). Далее берем L2Font-e.utx и перетаскиваем его на файл программы l2decrypt.exe. Открывается окно l2decrypt и ждём появления внизу этого окошечка надписи: All tasks have be finished,hit return to exit. Дождавшись этой надписи, можно закрыть окошечко l2 decrypt.Теперь в этой самой папке после расшифровки образовался файл "L2Font-e.clear.utx"
2) Теперь с помощью UTPT.exe вытаскиваем нужную текстуру, в нашем случае это-"loading02-e" и сохраняешь её в формате DDS в нашу созданную папочку.
Дальше редактируем её в Фотошопе. Рекомендуемый размер картинки которой вы будете заменять экран Загрузки или карту=1600х1200
==Теперь главное:СОХРАНЕНИЕ dds в Фотошопе!==
Файл>Сохранить как>Ставим расширение DDS и нажимаем сохранить>Откроется окошко "NVIDIA dds format" (если не откроется, то скачать этот файлик из инета). В нем несколько настроек: Нажимаем кнопочку "MIP maps.." и ставим параметр "Generate MIP maps" равное 1.
(это очень важно) ,если возник вопрос что такое MIP maps, то идем по ссылке
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или Регистрация
Параметр Save Format должен быть DXT3 ARGB(Explicit Alpha) и 2D Texture.
Остальные параметры не меняем.
!!!Если вы сохраните файл с кол-вом MIP maps больше 1,то получите размытую картинку во время заставки с эффектом пикселезации!!!
3) Открываем l2tool (она на японском языке) и
--в первой строке указываем запакованный(исходный) архив L2Font-e.utx
--во второй строке указываем свой отредактированный в Фотошопе файл DDS с тем же названием,с которым вынимал из UTPT.exe.
--в третьей строке указываем расшифрованный архив L2Font-e.clear.utx, который вы расшифровали с помощью l2 decrypt, сразу же появляется окно в котором вы должены выбрать название текстуры, которую редактировали. После всего этого нажимаем кнопку "set", и вуаля, все готово.
4) Ваша отредактированная текстура сохранилась в расшифрованном вами архиве L2Font-e.clear.utx
5) Дальше переименовываем файл в L2Font-e.utx, копируем его в папку Systextures игры и заменяем им старый оригинальный зашифрованный архив.
Последнее редактирование: