Установка и поддержка RFO сервера : Обсуждение RFO серверов, их установки, конфигурации, устранения ошибок, а также поддержке. Уголок Администратора.
10.08.2018, 11:16
#1
Нуб
OFFLINE
Регистрация: 16.06.2008
Сообщений: 0
Вопрос про НПС
Добавил блок нового НПС в сервер и клиент. Все нормально работает.
Но есть одно неудобство: новый ID нпс есть (04003), а модели ($4003) нет. Приходится ручками прописывать модель существующего НПСа ($4071) - брал его как базовый. Понимаю, что где то надо прописать такую модель. Но не знаю где. Судя по тому, что оч.много одинаковых моделей, то не будут же рисовать одинаковых нпс с разными ID, значит где то прописано к каким ID идет данная модель. Подскажите кто знает, решение. (естественно речь про клиент сайд.)
10.08.2018, 11:23
#2
На доске почёта
OFFLINE
Регистрация: 21.10.2013
Возраст: 29
Сообщений: 611
Благодарностей:
2,004 всего
Надо прописать её в Resource.edf как новую модель с новым названием, ибо в ресурсе не читаются строки с одинаковыми названиями.
Тебе надо найти модель мешку НПСа в клиенте копировать её, переименовать и упаковать обратно в RFS, после чего сделать тоже самое с текстурой, а под Ид НПСа нового прописать твоё новое название модели и текстуры и не забывай про кости...
10.08.2018, 11:23
#3
Старичок форума
OFFLINE
Регистрация: 01.08.2008
Возраст: 46
Сообщений: 640
Благодарностей:
1,948 всего
Будут рисовать одинаковых, рисуй, на сколько помню так и работает.
lolz i dont remember i ever said pidaras in normal chat
10.08.2018, 13:53
#4
Нуб
OFFLINE
Регистрация: 16.06.2008
Сообщений: 0
Еле наваял структурку для Resource.dat. Попробую просто копи паст блока с изменением ID
(Структура моя. Расшифровка не полная)
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Чтобы его прочитать, вы должны заработать сообщения. Как это сделать бесплатно, описано в
правилах форума . Как купить доступ, описано в
Платных услугах .
Последний раз редактировалось supra86reg; 10.08.2018 в 15:32 .
Причина: Поправил
10.08.2018, 18:10
#5
На доске почёта
OFFLINE
Регистрация: 21.10.2013
Возраст: 29
Сообщений: 611
Благодарностей:
2,004 всего
Цитата:
Сообщение от
supra86reg
Еле наваял структурку для Resource.dat. Попробую просто копи паст блока с изменением ID
(Структура моя. Расшифровка не полная)
*** скрытый текст ***
Молодец) но щас все парсер юзают, мало кому она нужна, да и готовая уже где то была)
Последний раз редактировалось Император; 10.08.2018 в 19:15 .
10.08.2018, 18:20
#6
Освоившийся
OFFLINE
Регистрация: 07.01.2009
Возраст: 35
Сообщений: 63
Благодарностей:
1,116 всего
Вот зачем выкладывать под хайдом, то что давным давно находится в свободном доступе, да и еще с нормальной расшифровкой:
Оффтоп
Код:
[filemask="Resource.dat"]
struct ResourceFile
{
u32 PlayerBone;
seek (4+PlayerBone*260);
u32 PlayerMesh;
seek (8+PlayerBone*260+PlayerMesh*328);
u32 PlayerAni;
seek (12+PlayerBone*260+PlayerMesh*328+PlayerAni*244);
u32 MonsterBone;
seek (16+(PlayerBone+MonsterBone)*260+PlayerMesh*328+PlayerAni*244);
u32 MonsterMesh;
seek (20+(PlayerBone+MonsterBone)*260+(PlayerMesh+MonsterMesh)*328+PlayerAni*244);
u32 MonsterAni;
seek (24+(PlayerBone+MonsterBone)*260+(PlayerMesh+MonsterMesh)*328+(PlayerAni+MonsterAni)*244);
u32 AnimusBone;
seek (28+(PlayerBone+MonsterBone+AnimusBone)*260+(PlayerMesh+MonsterMesh)*328+(PlayerAni+MonsterAni)*244);
u32 AnimusMesh;
seek (32+(PlayerBone+MonsterBone+AnimusBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh)*328+(PlayerAni+MonsterAni)*244);
u32 AnimusAni;
seek (36+(PlayerBone+MonsterBone+AnimusBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh)*328+(PlayerAni+MonsterAni+AnimusAni)*244);
u32 GuardTowerBone;
seek (40+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh)*328+(PlayerAni+MonsterAni+AnimusAni)*244);
u32 GuardTowerMesh;
seek (44+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh)*328+(PlayerAni+MonsterAni+AnimusAni)*244);
u32 GuardTowerAni;
seek (48+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni)*244);
u32 NPCBone;
seek (52+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni)*244);
u32 NPCMesh;
seek (56+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni)*244);
u32 NPCAni;
seek (60+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni)*244);
u32 ItemBone;
seek (64+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni)*244);
u32 ItemMesh;
seek (68+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni)*244);
u32 ItemAni;
seek (72+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni)*244);
u32 UnitBone;
seek (76+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni)*244);
u32 UnitMesh;
seek (80+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni)*244);
u32 UnitAni;
seek (84+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni)*244);
u32 SkillBone;
seek (88+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni)*244);
u32 SkillMesh;
seek (92+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni)*244);
u32 SkillAni;
seek (96+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni+SkillAni)*244);
u32 ForceBone;
seek (100+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone+ForceBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni+SkillAni)*244);
u32 ForceMesh;
seek (104+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone+ForceBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh+ForceMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni+SkillAni)*244);
u32 ForceAni;
child Bone [group="PlayerBone", offset=(4), count=PlayerBone];
child Mesh [group="PlayerMesh", offset=(8+PlayerBone*260), count=PlayerMesh];
child Ani [group="PlayerAni", offset=(12+PlayerBone*260+PlayerMesh*328), count=PlayerAni];
child Bone [group="MonsterBone", offset=(16+PlayerBone*260+PlayerMesh*328+PlayerAni*244), count=MonsterBone];
child Mesh [group="MonsterMesh", offset=(20+(PlayerBone+MonsterBone)*260+PlayerMesh*328+PlayerAni*244), count=MonsterMesh];
child Ani [group="MonsterAni", offset=(24+(PlayerBone+MonsterBone)*260+(PlayerMesh+MonsterMesh)*328+PlayerAni*244), count=MonsterAni];
child Bone [group="AnimusBone", offset=(28+(PlayerBone+MonsterBone)*260+(PlayerMesh+MonsterMesh)*328+(PlayerAni+MonsterAni)*244), count=AnimusBone];
child Mesh [group="AnimusMesh", offset=(32+(PlayerBone+MonsterBone+AnimusBone)*260+(PlayerMesh+MonsterMesh)*328+(PlayerAni+MonsterAni)*244), count=AnimusMesh];
child Ani [group="AnimusAni", offset=(36+(PlayerBone+MonsterBone+AnimusBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh)*328+(PlayerAni+MonsterAni)*244), count=AnimusAni];
child Bone [group="GuardTowerBone", offset=(40+(PlayerBone+MonsterBone+AnimusBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh)*328+(PlayerAni+MonsterAni+AnimusAni)*244), count=GuardTowerBone];
child Mesh [group="GuardTowerMesh", offset=(44+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh)*328+(PlayerAni+MonsterAni+AnimusAni)*244), count=GuardTowerMesh];
child Ani [group="GuardTowerAni", offset=(48+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh)*328+(PlayerAni+MonsterAni+AnimusAni)*244), count=GuardTowerAni];
child Bone [group="NPCBone", offset=(52+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni)*244), count=NPCBone];
child Mesh [group="NPCMesh", offset=(56+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni)*244), count=NPCMesh];
child Ani [group="NPCAni", offset=(60+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni)*244), count=NPCAni];
child Bone [group="ItemBone", offset=(64+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni)*244), count=ItemBone];
child Mesh [group="ItemMesh", offset=(68+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni)*244), count=ItemMesh];
child Ani [group="ItemAni", offset=(72+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni)*244), count=ItemAni];
child Bone [group="UnitBone", offset=(76+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni)*244), count=UnitBone];
child Mesh [group="UnitMesh", offset=(80+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni)*244), count=UnitMesh];
child Ani [group="UnitAni", offset=(84+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni)*244), count=UnitAni];
child Bone [group="SkillBone", offset=(88+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni)*244), count=SkillBone];
child Mesh [group="SkillMesh", offset=(92+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni)*244), count=SkillMesh];
child Ani [group="SkillAni", offset=(96+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni)*244), count=SkillAni];
child Bone [group="ForceBone", offset=(100+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni+SkillAni)*244), count=ForceBone];
child Mesh [group="ForceMesh", offset=(104+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone+ForceBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni+SkillAni)*244), count=ForceMesh];
child Ani [group="ForceAni", offset=(108+(PlayerBone+MonsterBone+AnimusBone+GuardTowerBone+NPCBone+ItemBone+UnitBone+SkillBone+ForceBone)*260+(PlayerMesh+MonsterMesh+AnimusMesh+GuardTowerMesh+NPCMesh+ItemMesh+UnitMesh+SkillMesh+ForceMesh)*328+(PlayerAni+MonsterAni+AnimusAni+GuardTowerAni+NPCAni+ItemAni+UnitAni+SkillAni)*244), count=ForceAni];
}
struct Bone [preload]
{
// u32 [tag="ID"];
x32 [tag="ID"];
cstr [len=128] PathName;
cstr [len=64] FileName;
cstr [len=64] BBoxName;
}
struct Mesh [preload]
{
// u32 [tag="ID"];
x32 [tag="ID"];
// u32 [tag="BoneID"];
x32 [tag="BoneID"];
cstr [len=128] PathName;
cstr [len=64] FileName;
cstr [len=128] TexturePath;
}
struct Ani [preload]
{
// u32 [tag="ID"];
x32 [tag="ID"];
u32 [tag="Num"];
cstr [len=128] PathName;
cstr [len=64] FileName;
u32 [tag="EffectNum"];
repeat 10
{
u32 [tag="EffectFrame"];
}
}
10.08.2018, 22:19
#7
Старичок форума
OFFLINE
Регистрация: 01.08.2008
Возраст: 46
Сообщений: 640
Благодарностей:
1,948 всего
Цитата:
Сообщение от
Emka
Вот зачем выкладывать под хайдом, то что давным давно находится в свободном доступе, да и еще с нормальной расшифровкой:
Не так.
- Вот зачем ваять то что давным давно находится в свободном доступе, да и еще с нормальной расшифровкой.
lolz i dont remember i ever said pidaras in normal chat
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.