avatar_Fiesta

Как подключить HP bar и рисовать игровую панель в MU online

Автор Fiesta, 2011 Нояб. 25, 20:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlinehp barигровая панель.

Fiesta

Исходник 1.03.28 ENG и 1.03.8JPN (недопилиный). Подключение протокола ядра и рисования игровой панели.


#Серверная часть пакета:
struct PMSG_DAMAGE
{
PMSG_C1Header h; // 0
BYTE NumberH; // 3
BYTE NumberL; // 4
BYTE DamageH; // 5
BYTE DamageL; // 6
BYTE DamageType; // 7
BYTE ShieldH; // 8
BYTE ShieldL; // 9
DWORD Life; // A
DWORD MaxLife; // E
};

Скачать https://yadi.sk/d/uEt8WJvoGTjf

#Кредиты
- mirraseq - HP bar код
- Dudi - Серверная часть кода

Pashka

Цитата: Fiesta от 2011 Нояб. 25, 19:59  #Серверная часть пакета:
struct PMSG_DAMAGE
{
PMSG_C1Header h; // 0
BYTE NumberH; // 3
BYTE NumberL; // 4
BYTE DamageH; // 5
BYTE DamageL; // 6
BYTE DamageType; // 7
BYTE ShieldH; // 8
BYTE ShieldL; // 9
DWORD Life; // A
DWORD MaxLife; // E
};

А не подскажешь куда именно это в серв закидывать?) в какой файл?)

NightWish

Цитата: Pashka от 2013 Май 22, 05:52  А не подскажешь куда именно это в серв закидывать?) в какой файл?)
Без знний программирования, ты это никуда не закинешь)

borsa

Почемубы тогда не выложить пошаговый гайд ? (:
Напрмиер не все умеют моделить и добовлять мобов и т.д, но по гайдам МОНАРХА справляются ведь (:

Profesor08

Это не то-же самое,  что и отредактировать файл или модельку, где тыкать кнопочки надо.

borsa

Создание новых Ancient вещей и другие более сложные фичи по пошаговой инструкции весьма постижимо. Сомневаюсь, что простой HP Bar требует мастерства кодинга (:

Profesor08

Создание Ancient вещей сводится к редактированию .bmd в клиенте и .txt в сервере.

Другое дело, когда надо внедрить код в сурсы сервера, потом это скомпилировать. И сидеть дебажить код.

borsa

И всёже попытка не пытка, не все ведь олени. Но, наверн просто людям влом писать гайды подобные, ведь проще копипастить с рэйджзона (:

NightWish

Цитата: borsa от 2013 Май 22, 12:04  И всёже попытка не пытка, не все ведь олени. Но, наверн просто людям влом писать гайды подобные, ведь проще копипастить с рэйджзона (:

Гайд для этого быть не может, нету знаний программирования - толку с этих сурсов как с козла молока.

f1x

#9
Цитата: state0ftrance от 2013 Май 22, 14:50  Гайд для этого быть не может, нету знаний программирования - толку с этих сурсов как с козла молока.
Почему же?
Если помучатся то можно обойтись и без этих знаний.
Просто нужно внимательно просмотреть тему на РЗ.
Клац
Даже скрины есть где искать оффсет.
## здесь был скриншот ##
Не поленись, почитай тему внимательно и может получится.

Pashka

#10
неужели так тяжело написать как и что.... За деньги все прям герои! А как объяснить человеку, так все...

P.S.: fix я спрашивал про серверную часть...

Profesor08

Ну впишешь ты оффсеты, и что дальше?

borsa

#12
ЦитироватьНу впишешь ты оффсеты, и что дальше?
ну так поведуй нам ! ((:

NightWish

#13
Цитата: f1x от 2013 Май 22, 16:09  Почему же?
Если помучатся то можно обойтись и без этих знаний.

Хорошо что там оффсеты есть, а ты возьми другой мейн, другого сезона и поищи все оффсеты, посмотрим на результат)

Цитата: borsa от 2013 Май 22, 16:32  ну так поведуй нам ! ((:

Что тут поведовать? Раз есть оффсеты тогда редактируй код под свои нужды, подправляй под свой мейн и тестируй.

Pashka

Ребят, ну серверную часть  куда добавлять в исходник?  В User.cpp Monster.cpp или куда???

Simp1e

никогда не добавлял хпбар но кажется что PMSG_DAMAGE можно будет заменить ток в эмуляторе стандартная структура в эмуляторе

struct PMSG_DAMAGE
{
   PBMSG_HEAD h;
   BYTE subcode;
   BYTE DamageH;
   BYTE DamageL;
   BYTE btShieldDamageH;
   BYTE btShieldDamageL;
};


но думаю что просто изменив её она работать не будет как надо ... хотя могу ошибаться

Mr.Kernighan

#16
Цитироватьникогда не добавлял хпбар но кажется что PMSG_DAMAGE можно будет заменить ток в эмуляторе стандартная структура в эмуляторе
Поля нужно не только объявить но и проинициализировать, поэтому в GCDamageSend им нужно передать данные. Типа pDamage.Life = lpObj->Life; pDamage.MaxLife = lpObj->MaxLife

Simp1e

#17
struct HPBAR_SEND
{
   PMSG_C1Header h;  // 0
   DWORD Life; // A
   DWORD MaxLife; // E
};

тогда всё просто перехватываешь функцию

void GCDamageSend(int aIndex, int damage, int iShieldDamage)
{
   OBJECTSTRUCT *lpObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
   // ----
   HPBAR_SEND sHPBarSend;
   // ----
   sHPBarSend->Life         = lpObj->Life;
   sHPBarSend->MaxLife   = lpObj->MaxLife;
   // ----
   GCDamageSendOffset(aIndex, damage, iShieldDamage);
}

Осталось ток найти оффсет хука и функции)

f1x

Цитата: Simp1e от 2013 Май 23, 07:58  struct HPBAR_SEND
{
PMSG_C1Header h;  // 0
DWORD Life; // A
DWORD MaxLife; // E
};

тогда всё просто перехватываешь функцию

void GCDamageSend(int aIndex, int damage, int iShieldDamage)
{
OBJECTSTRUCT *lpObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
// ----
HPBAR_SEND sHPBarSend;
// ----
sHPBarSend->Life         = lpObj->Life;
sHPBarSend->MaxLife   = lpObj->MaxLife;
// ----
GCDamageSendOffset(aIndex, damage, iShieldDamage);
}

Осталось ток найти оффсет хука и функции)
Если каждый будет что то писать, то так можно и гайд слепить:)

Pashka

Кто возьмется поставить сие чудо на сезон 4,6? И сколько стоить будет?

Похожие темы (5)

Сообщений: 37
Просмотров: 21563

Сообщений: 127
Просмотров: 38048

Сообщений: 32
Просмотров: 12376