На форуме временно ведутся технические работы! Подробнее.

Вход
Логин: Пароль:Забыли пароль?
Запомнить вас на этом компьютере?
Войти скрытым?

Здравствуйте, гость ( Вход | Регистрация )

> описание и правила

MU Development - раздел в котором каждый может предложить готовое и полезное решение для сервера/клиента/сайта mu online. Перед названием темы обезательно ставить приставку [Dev].
Каждый разработчик имеет второстепенную группу Developers.
Developers - могут в любое время закрывать и открывать свои темы.

 
Ответить в данную темуНачать новую тему
Смена внешнего вида NPC, Оффсеты + функция

DarkSim
сообщение 11.8.2012, 4:14
Сообщение #1

zTeam
*****
Группа: V.I.P.
Сообщений: 380
Регистрация: 14.7.2008
Пользователь №: 1543
Спасибо сказали: 591 раз(а)



Репутация:   12  
В общем не так давно попросили найти оффсеты смены вида вещей некоторых NPC (таких как Marlon, Soldier Elf и прочие, одетые с помощью Preview).

Гебрид поднимал подобную тему, но как оказалось большинству нужны конкретные оффсеты, а не объяснение того как все работает, собственно:

Свёрнутая информация:
CODE

//Marlon:

*(WORD*)(0x0051983A + 7) = ITEM2(7, 9); // -> First Weapon Slot
*(BYTE*)(0x00519846 + 6) = 8; // -> First Weapon Level

*(WORD*)(0x00519850 + 7) = -1; // -> Second Weapon Slot

*(WORD*)(0x005197CC + 7) = ITEM2(7, 9); // -> Helm Slot
*(BYTE*)(0x005197D8 + 6) = 7; // -> Helm Level

*(WORD*)(0x005197E2 + 7) = ITEM2(8, 9); // -> Armor Slot
*(BYTE*)(0x005197EE + 6) = 7; // -> Armor Level

*(WORD*)(0x005197F8 + 7) = ITEM2(9, 9); // -> Pants Slot
*(BYTE*)(0x00519804 + 6) = 7; // -> Pants Level

*(WORD*)(0x0051980E + 7) = ITEM2(10, 9); // -> Gloves Slot
*(BYTE*)(0x0051981A + 6) = 7; // -> Gloves Level

*(WORD*)(0x00519824 + 7) = ITEM2(11, 9); // -> Boots Slot
*(BYTE*)(0x00519830 + 6) = 7; // -> Boots Level

//Elf Soldier:

*(WORD*)(0x005155A8 + 7) = ITEM2(12, 3); // -> Wings Slot

*(WORD*)(0x005155B4 + 7) = ITEM2(7, 24); // -> Helm Slot
*(BYTE*)(0x005155F0 + 6) = 13; // -> Helm Level

*(WORD*)(0x005155C0 + 7) = ITEM2(8, 24); // -> Armor Slot
*(BYTE*)(0x005155FA + 6) = 13; // -> Armor Level

*(WORD*)(0x005155CC + 7) = ITEM2(9, 24); // -> Pants Slot
*(BYTE*)(0x00515604 + 6) = 13; // -> Pants Level

*(WORD*)(0x005155D8 + 7) = ITEM2(10, 24); // -> Gloves Slot
*(BYTE*)(0x0051560E + 6) = 13; // -> Gloves Level

*(WORD*)(0x005155E4 + 7) = ITEM2(11, 24); // -> Boots Slot
*(BYTE*)(0x00515618 + 6) = 13; // -> Boots Level

//Chaos Card Master:

*(WORD*)(0x0051A741 + 7) = ITEM2(12, 1); // -> Wings Slot
*(WORD*)(0x0051A705 + 7) = ITEM2(7, 30); // -> Helm Slot
*(WORD*)(0x0051A711 + 7) = ITEM2(8, 30); // -> Armor Slot
*(WORD*)(0x0051A71D + 7) = ITEM2(9, 30); // -> Pants Slot
*(WORD*)(0x0051A729 + 7) = ITEM2(10, 30); // -> Gloves Slot
*(WORD*)(0x0051A735 + 7) = ITEM2(11, 30); // -> Boots Slot

*(DWORD*)(0x0051A74A + 3) = 7; // -> Set Level

// Crossbow Guard

*(WORD*)(0x00519F07 + 7) = ITEM2(7, 9); // -> Helm Slot
*(WORD*)(0x00519F13 + 7) = ITEM2(8, 9); // -> Armor Slot
*(WORD*)(0x00519F1F + 7) = ITEM2(9, 9); // -> Pants Slot
*(WORD*)(0x00519F2B + 7) = ITEM2(10, 9); // -> Gloves Slot
*(WORD*)(0x00519F37 + 7) = ITEM2(11, 9); // -> Boots Slot

*(WORD*)(0x00519F43 + 7) = ITEM2(4, 11); // -> First Weapon Slot
*(WORD*)(0x00519F4F + 7) = ITEM2(4, 7); // -> Second Weapon Slot

// Berdysh Guard

*(WORD*)(0x0051A012 + 7) = ITEM2(7, 9); // -> Helm Slot
*(WORD*)(0x0051A01E + 7) = ITEM2(8, 9); // -> Armor Slot
*(WORD*)(0x0051A02A + 7) = ITEM2(9, 9); // -> Pants Slot
*(WORD*)(0x0051A036 + 7) = ITEM2(10, 9); // -> Gloves Slot
*(WORD*)(0x0051A042 + 7) = ITEM2(11, 9); // -> Boots Slot

*(WORD*)(0x0051A04E + 7) = ITEM2(3, 7); // -> First Weapon Slot


Версия клиента 1.03.25 (он же 1.03Y+ JPN).

Ну и пока я рылся не мог не заметить как WebZen особенно подчеркнули важность Soldier Elf'a, выделив ему аж отдельную функцию для внешнего вида:

CODE

// -> 515596 -> 1 Call
int gMakePreviewSoldierElf(Preview * gPreview)
{
gPreview->WingsSlot = ITEM2(12, 3);
// ----
gPreview->HelmSlot = ITEM2(7, 24);
gPreview->HelmLevel = 13;
// ----
gPreview->ArmorSlot = ITEM2(8, 24);
gPreview->ArmorLevel = 13;
// ----
gPreview->PantsSlot = ITEM2(9, 24);
gPreview->PantsLevel = 13;
// ----
gPreview->GlovesSlot = ITEM2(10, 24);
gPreview->GlovesLevel = 13;
// ----
gPreview->BootsSlot = ITEM2(11, 24);
gPreview->BootsLevel = 13;
// ----
gPreview->Action = eAction::Fly;
gPreview->ModelScale = 0x3F800000;
gPreview->SelectZone += 70.0;
// ----
return gPreview->IndexResult;
}


Это кстати фактическое доказательство того, что если потрахаться с маином не долгое время - можно воспроизвести основные структуры, это я к словам от "знатоков", которые во всю твердят, что это все нереальное дело...

И чуть не забыл - ITEM2 это макрос:
CODE
#define ITEM_INTER 887 // У каждой версии он свой
#define ITEM2(x, y) ((x * 512) + y + ITEM_INTER)


Скриншоты:
## здесь был скриншот ##
--
## здесь был скриншот ##

Сообщение отредактировал DarkSim - 11.8.2012, 4:51
Перейти в начало страницы
+Цитировать сообщение

Телега
сообщение 6.11.2013, 21:04
Сообщение #2


LTP-project.com
*****
Группа: Заморожен!
Сообщений: 329
Регистрация: 12.4.2009
Пользователь №: 5661
Спасибо сказали: 31 раз(а)



Репутация:   2  
Простите за глупый вопрос, но как узнать "ITEM_INTER" ?

Edit: узнал. Для 6,3 GMO майна (1.4.4) ITEM_INTER = 493
Перейти в начало страницы
+Цитировать сообщение

DarkSim
сообщение 7.11.2013, 3:32
Сообщение #3

zTeam
*****
Группа: V.I.P.
Сообщений: 380
Регистрация: 14.7.2008
Пользователь №: 1543
Спасибо сказали: 591 раз(а)



Репутация:   12  
Телега
1. Search for -> All command sequences... -> push 1 push 8e

2. Переходим к результату (по идеи должен быть всего один) и видим ITEM_INTER в HEX:


----
HEX -> DEC
377 = 887
----
Проверял только на новых маинах (Season 3+)

Сообщение отредактировал DarkSim - 7.11.2013, 3:46
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
Нет новых сообщений Смена скинов
5 PaSaD 1057 28.2.2016, 3:11 Посл. сообщение: wo7as
Нет новых сообщений Смена
ник нейм
1 vadimka4234 1054 8.11.2014, 10:47 Посл. сообщение: Sparkling
Нет новых сообщений Смена пароля
Смена пароля и пользователя
1 sereja 1242 10.10.2014, 8:54 Посл. сообщение: EvgGen
Нет новых Смена названия клана в msmysql
Выводит ошибку
10 AlexDIXI 1410 22.7.2013, 18:46 Посл. сообщение: Furion
Нет новых сообщений Help Смена серва
ффф
0 fiesta214 1105 20.7.2013, 15:14 Посл. сообщение: fiesta214

 

RSS Текстовая версия Сейчас: 7.2.2023, 5:07
Яндекс.Метрика  Перевод с помощью Google English French German Italian Portuguese Russian Spanish