PDA

Просмотр полной версии : [Помогите!] Изменение параметра защиты. 2.2.3.


diman329
02.02.2010, 16:15
На сколько я понял редактируется это в след Дат файлах:

HelmetItem.dat - шлем
GauntletItem.dat - перчатки
LowerItem.dat - штаны
ShoeItem.dat - ботинки
UpperItem.dat - торс
WeaponItem.dat - оружие

Струкутры под них:

HelmetItem.strs - шлем
GauntletItem.strs - перчатки
LowerItem.strs - штаны
ShoeItem.strs - ботинки
UpperItem.strs - торс
WeaponItem.strs - оружие

У меня структуры не реально палённые... И вобще понять что-либо, не реально! Если есть у кого-нибудь хоть какие-то, то выложите.. Или свяжитесь со мной... Могу купить.

kAwAii
02.02.2010, 18:42
А мнеб тоже самое ток для 6 апа))))

добрые люди помогите

FFForever
04.02.2010, 16:33
Вроде выкладывал, юзайте поиск.

kAwAii
04.02.2010, 16:56
Вроде выкладывал, юзайте поиск.

поискал нашол только кривые структуры для 5 апа.

FFForever
05.02.2010, 11:22
структура GauntletItem, подходит структура под Shielditem.dat, GauntletItem.dat, HelmetItem.dat, ShoeItem.dat, UpperItem.dat, LowerItem.dat, только надо изменить в структуре [filemask="GauntletItem.dat"] на название соответствующие серверного файла.

[filemask="GauntletItem.dat"]

struct ArmorItemFile
{
u32 ArmorItemBlocks;
u32 ArmorItemColumns;
u32 ArmorItemBlockSize;
child ArmorItemBlock [count=ArmorItemBlocks];
}

struct ArmorItemBlock [preload=1, tableview=1]
{
u32 [tag="Индекс"] DWORD;
cstr [len=64] ID;
u32 [tag="Активно"] DWORD;
cstr [len=64] "Текстура";
u32 [tag="Спрайт"] DWORD;
cstr [len=64] "Название";
u32 [tag="――"] DWORD;
u32 [tag="Тип Предмета"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
cstr [len=64] "Раса";
u32 [tag="Мин Ур."] DWORD;
u32 [tag="Макс Ур."] DWORD;
u32 [tag="Статус"] DWORD;
u32 [tag="Тип ПТ"] DWORD;
u32 [tag="ПТ"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="Тип Цены"] DWORD;
u32 [tag="Цена"] DWORD;
u32 [tag="Цена PvP"] DWORD;
u32 [tag="Цена (Банк)"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
float [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
float [tag="Огонь"] DWORD;
float [tag="Вода"] DWORD;
float [tag="Земля"] DWORD;
float [tag="Воздух"] DWORD;
float [tag="Защита"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
float [tag="Критерий"] DWORD;
float [tag="Доп. защита"] DWORD;
u32 [tag="Св-во 1"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="Св-во 2"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="Св-во 3"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="Св-во 4"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="Продажа"] DWORD;
u32 [tag="Передача"] DWORD;
u32 [tag="Выкинуть"] DWORD;
u32 [tag="Банк"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="Кол-во слотов"] DWORD;
cstr [len=64] "Описание";
u32 [tag="――"] DWORD;
u32 [tag="Timer Item"] DWORD;
}

diman329
05.02.2010, 11:27
хм... Извини за нубский вопрос.. в скриптах я не очень.. Как я понял это изменение (перевод) структур.. Если можешь, подскажи пожалуйста, куда надо эт вписать, чтобы руссификация прошла?)

FFForever
05.02.2010, 11:29
Открой структуру свою и подумай.

kAwAii
05.02.2010, 13:03
структура GauntletItem, подходит структура под Shielditem.dat, GauntletItem.dat, HelmetItem.dat, ShoeItem.dat, UpperItem.dat, LowerItem.dat, только надо изменить в структуре [filemask="GauntletItem.dat"] на название соответствующие серверного файла.

[filemask="GauntletItem.dat"]

struct ArmorItemFile
{
u32 ArmorItemBlocks;
u32 ArmorItemColumns;
u32 ArmorItemBlockSize;
child ArmorItemBlock [count=ArmorItemBlocks];
}

struct ArmorItemBlock [preload=1, tableview=1]
{
u32 [tag="Индекс"] DWORD;
cstr [len=64] ID;
u32 [tag="Активно"] DWORD;
cstr [len=64] "Текстура";
u32 [tag="Спрайт"] DWORD;
cstr [len=64] "Название";
u32 [tag="――"] DWORD;
u32 [tag="Тип Предмета"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
cstr [len=64] "Раса";
u32 [tag="Мин Ур."] DWORD;
u32 [tag="Макс Ур."] DWORD;
u32 [tag="Статус"] DWORD;
u32 [tag="Тип ПТ"] DWORD;
u32 [tag="ПТ"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="Тип Цены"] DWORD;
u32 [tag="Цена"] DWORD;
u32 [tag="Цена PvP"] DWORD;
u32 [tag="Цена (Банк)"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
float [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
float [tag="Огонь"] DWORD;
float [tag="Вода"] DWORD;
float [tag="Земля"] DWORD;
float [tag="Воздух"] DWORD;
float [tag="Защита"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="――"] DWORD;
float [tag="Критерий"] DWORD;
float [tag="Доп. защита"] DWORD;
u32 [tag="Св-во 1"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="Св-во 2"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="Св-во 3"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="Св-во 4"] DWORD;
float [tag="Значение"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="Продажа"] DWORD;
u32 [tag="Передача"] DWORD;
u32 [tag="Выкинуть"] DWORD;
u32 [tag="Банк"] DWORD;
u32 [tag="――"] DWORD;
u32 [tag="Кол-во слотов"] DWORD;
cstr [len=64] "Описание";
u32 [tag="――"] DWORD;
u32 [tag="Timer Item"] DWORD;
}




Как назло именно эти у меня были норм)))
Оч прошу скинь структуры для WeaponItem ,MonsterCharacte.
Или научи исправлятЬ) а переделывал WeaponItem но получилось всеравно криво)
p.s. для 6 up

FFForever
05.02.2010, 14:28
Нам нужны:
1)Мозг и прямые руки
2)Dateditor
3)Notepad или любой текстовой редактор
4)Знание хотя бы клиента рфки и устройства dat файлов
Файлы структур имеют расширение strs и открываются тестовым редактором
I.Типы данных и их атрибуты
u8-целое число занимающие 1 байт(от 0 до 256)
u16-целое число занимающие 2 байта(от 0 до 65535)
u32-целое число занимающее 4 байта (от 0 до 16777215)
cstr-текст
x8-16-ричное число занимающие 1 байт(от 00 до FF)
x16-16-ричное число занимающие 2 байта(от 0000 до FFFF)
x32-16-ричное число занимающее 4 байта (от 0 до FFFFFFFF)
float - число с плавающей запятой
Атрибуты для типов данных типа u* и x* и float
а)tag="Название"-название данного блока
б)hidden=Число- если число=1 то блок скрыт
Атрибуты для cstr
а)len="Число"-Длина текста в байтах(1 буква кодируется байтом)
Для рфки в серве обычно ид записаны с длиной 64 а в клиенте 32
Атрибуты записываются в квадратных скобках и через запятую
u32 [tag="----",hidden=1] DWORD;
float [tag="----",hidden=1] DWORD;
cstr [len=64] "Название";
II.Создание однородной структуры
Первый оператор-ето какой файл мы будем загружать
[filemask="Имя файла.dat"]
Здесь можно указать * тогда можно будет загрузить любой файл([filemask="*.dat"])
Дальше идет описание структуры самого файла
Для рфки- файлы начинаются с количество блоков длиной u32 потом размер блока длиной u32 (для сервера идет дальше размер файла длиной u32)
Дальше идет загрузка структуры блока
struct "Название"
{
u32 nBlocks;
u32 nBlockSize
child Block [count=nBlocks];
}
Атрибуты child
a) count - сколько блоков будет с данной структурой блока
б)offset - оффсет с которого начнутся блоки с данной структурой
в)group="Название" - Название группы данных блоков
Дальше мы пишем структуру блока с название которое мы указали при child
struct block
{
u32 [tag="----"] DWORD;
....
...
....
...
...
}
Писать структуру можно добавляя(убавляя) кол-во блоков u32 пока не увидите упорядоченность в Dateditor а потом меняя всякие значения смотреть что изменилось в клиенте

III.Создание структуры для файла состоящего из нескольких частей

(например:Item.edf Character.edf и тд)
Такое возникает когда мы написали однородную структуру а в окне показа самого файла в Dateditor видите что файл не кончился.
Для этого нам понадобится оператор seek
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Он пропускает опреденное количество байтов в файле(те чтение структуры начинается с какогото оффсета а не с начала)
struct "Название"
{
u32 nBlocks1;
u32 nBlockSize1;
child Block1 [group="1",count=nBlocks1];
seek(nBlocks1*nBlockSize1 +8)
u32 nBlocks2;
u32 nBlockSize2;
child Block2 [group="2",count=nBlocks2,offset=nBlocks1*nBlockSize1 +16];
}
Как правило между частями файла в рф находится 8 байтов(хотя в некоторых есть и 4)
seek(nBlocks1*nBlockSize1 +8)
Ето означает что мы пропустили первую часть файла (те кол-во блоков1*размер блока1 + 8 свободных байтов)
Обязательно указывайте группу для child
Так же в child для второй части указан оффсет с которой ета часть начнется (те кол-во блоков1*размер блока1+8 свободных байтов + 8 байтов отвечающих за кол-во блоков2 и размер блока2)
После структуры для блока Block1 пишем структуру для блока Block2
struct Block1
{
u32 [tag="----"] DWORD;
....
...
....
...
...
}
struct Block2
{
u32 [tag="----"] DWORD;
....
...
....
...
...
}
Итак мы получаем структуру вида
[filemask="Имя файла.dat"]
struct "Название"
{
u32 nBlocks1;
u32 nBlockSize1;
child Block1 [group="1",count=nBlocks1];
seek(nBlocks1*nBlockSize1 +8)
u32 nBlocks2;
u32 nBlockSize2;
child Block2 [group="2",count=nBlocks2,offset=nBlocks1*nBlockSize1 +16];
......
.....
}
struct Block1
{
u32 [tag="----"] DWORD;
....
...
....
...
...
}
struct Block2
{
u32 [tag="----"] DWORD;
....
...
....
...
...
}
IV.Оператор repeat
Так же существует оперотор repeat-он повторяет данный блок несколько раз
Например
repeat 7
{
u32 [tag="----"] DWORD;
}
И мы увидим в Dateditor что он повторен 7 раз
Ето удобно когда мы видим что одно и тоже повторяется много раз( например Store,StoreList и тд) и чтобы структура была удобнее для чтение можно употреблять данный оператор
---------------------------------------------
Спасибо за основные данные Martin
(с)[scaR]

Добавлено через 59 минут
Ну вроде как бы понятно.

А вот как подогнать структурку 6 апа под 2.2.3

[filemask="UnitFrame.dat"]


struct UnitFrameFile
{
u32 nBlocks;
u32 nColumns;
u32 nSize;
child UnitFrameBlock [count=nBlocks];
}

struct UnitFrameBlock [preload=1]
{
u32 nCount;
cstr [len=64] UnitName;
u32 [tag="DWORD"] DWORD;
u32 [tag="HP"] DWORD;
u32 [tag="----"] DWORD;
u32 [tag="----"] DWORD;
u32 [tag="----"] DWORD;
u32 [tag="----"] DWORD;
u32 [tag="----"] DWORD;
u32 [tag="MoneyCode"] DWORD;
u32 [tag="Count"] DWORD;
cstr [len=4, hidden=1] Lable3;
u32 [tag="----"] DWORD;
u32 [tag="----"] DWORD;
cstr [len=64] Head;
cstr [len=64] UpBody;
cstr [len=64] LowBody;
cstr [len=64] Item1;
cstr [len=64] Item2;
cstr [len=64] Item3;
cstr [len=64] Item4;
cstr [len=64] Item5;
}
Добавляй по 1 строке в конец u32 [tag="----"] DWORD;
и перезагружай ее пока не увидишь что все ок а дальше расшифровываешь
Есть более умный спосбо в Hex-просмотре внизу Dateditor смотришь сколько еще байтов осталось до следующих 4-х байтов перед ID и добавляешь нужное колво строк в структуру

kAwAii
05.02.2010, 15:54
мля...
вот я сделал...уже раз 10 проверил не магу найти ошибку!
проверь плиззз(((

ps если ошибка вообще нубская не смейтесь((
это мои первые попытки

FFForever
05.02.2010, 17:08
зачем цитировать такие большие посты?

Добавлено через 3 часа 15 минут
Хмм, мой веапон айтем от 5 апа выглядит так
[filemask="WeaponItem.dat"]


struct WeaponItemFile
{
u32 nBlocks;
u32 nColumns;
u32 nSize;
child WeaponItemBlock [count=nBlocks];
}

struct WeaponItemBlock [preload=1]
{
u32 nCount;
cstr [len=64] ItemCode;
u32 Active;
cstr [len=64] TextureCode;
u32 SprCode;
cstr [len=64] ItemName;
u32 DWORD;
u32 [tag="0=mel 1=ran 2=lun 3=for"] DWORD;
u32 DWORD;
cstr [len=64] Lable1;
u32 DWORD;
u32 DWORD;
u32 DWORD;
cstr [len=64] ----;
u32 DWORD;
u32 DWORD;
cstr [len=64] Race;
cstr [len=64] Lable2;
u32 [tag="LVL"] DWORD;
u32 [tag=""] DWORD;
u32 DWORD;
u32 [tag="PT"] DWORD;
cstr [len=8, hidden=1] Lable3;
u32 [tag=""] DWORD;
u32 [tag="PRISE"] DWORD;
u32 [tag="ATAKA"] DWORD;
u32 [tag=""] DWORD;
u32 [tag=""] DWORD;
u32 [tag=""] DWORD;
u32 [tag="speed?"] DWORD;
u32 [tag=""] DWORD;
u32 [tag=""] DWORD;
u32 [tag=""] DWORD;
cstr [len=16, hidden=1] Lable5;
u32 [tag=""] DWORD;
u32 [tag="--------------------"] DWORD;
u32 [tag=""] DWORD;
u32 [tag=""] DWORD;
u8 [tag=""] DWORD;
u8 [tag=""] DWORD;
u16 DWORD;
u32 [tag=""] DWORD;
u32 [tag="Min Attack"] DWORD;
u32 [tag=""] DWORD;
u32 [tag="Max Attack"] DWORD;
u32 DWORD;
u32 DWORD;
u32 [tag="Min Force"] DWORD;
u32 DWORD;
u32 [tag="Max Force"] DWORD;
u32 [tag="Special Ability 1"] DWORD;
u32 [tag="Special Ability 1 Value"] DWORD;
u32 DWORD;
cstr [len=28] Lable7;
u32 Sell;
u32 Trade;
u32 Drop;
u32 DWORD;
u32 DWORD;
u32 Socket;
cstr [len=64] Item2;
u32 DWORD;
}

diman329
06.02.2010, 16:32
Ребят у мня такая ошибка.. См ниже.. .

Может ктонить помочь? Делал вроде всё правильно.. Увеличивал только деф и всё...

xotab26rus
06.02.2010, 17:09
датэдитор закрой серв к файлу доступ получить не может

diman329
06.02.2010, 17:51
датэдитор закрой серв к файлу доступ получить не может

не молоти чушь... Естественнов всё закрыто... И я не напрямую из сервера редакчу, а копирую наверно)) Ты не думал об этом?


Хм.. Может структура FFForever'а не очень правильно переведена?(( Там они не очень то совпадают с оригиналом..

kAwAii
06.02.2010, 20:50
зачем цитировать такие большие посты?

Добавлено через 3 часа 15 минут
Хмм, мой веапон айтем от 5 апа выглядит так
[filemask="WeaponItem.dat"]

. . . .

}
я выложил от 6 апа!)
или там нет разницы?

diman329
06.02.2010, 20:51
Кавайк помочь не можешь?(((

kAwAii
06.02.2010, 20:59
Кавайк помочь не можешь?(((

ну вообще(врятли для тебя это будет новость) у тебя ошибка в файле Upper я советую сначала заменить этот фаил если будет норм открыть рабочий и сравнить где ошибка, скорей всего гдет поставил пробел когда менял статы.

Добавлено через 1 час 45 минут
зачем цитировать такие большие посты?

Добавлено через 3 часа 15 минут
Хмм, мой веапон айтем от 5 апа выглядит так
[filemask="WeaponItem.dat"]

}


Эээээ
приехал домой протестил твою структурку Веапод (нарыл у себя сервак 5 апа)
может конечно так и надо...но почему там атака оружия значится 10 цифрами?

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

FFForever
07.02.2010, 01:24
Хм.. Может структура FFForever'а не очень правильно переведена?(( Там они не очень то совпадают с оригиналом..
Зато моя стуктура от 5 апа похожа, на структуры для Shielditem.dat, GauntletItem.dat, HelmetItem.dat, ShoeItem.dat, UpperItem.dat, LowerItem.dat для 2.2.3


Скинте мне ваш weaponitem.dat

kAwAii
07.02.2010, 01:31
Всем спс)все мои вопросы решены)

Добавлено через 13 часов 19 минут
Кавайк помочь не можешь?(((

!!!
пороверь не припесал ли дат эдитор лишние байты!