avatar_positive

Как снять лимиты на вещи и текстуры в MU Online: Серверные файлы, помощь

Автор positive, 2014 Июнь 29, 14:32

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

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

Ключевые слова [SEO] mu onlineсерверные файлылимиты

positive

В общем столкнулся с проблемой. Решил снять лимиты в мейне на вещи и текстуры, но тут я столкнулся с проблемой.

Нашел я код, переискал все оффсеты:

extern "C" _declspec(dllexport) void Items()
{

DWORD OldProtect;
if(VirtualProtect(LPVOID(0x401000),4310016,PAGE_EXECUTE_READWRITE,&OldProtect))
{
// Items
*(BYTE*)(0x005F43A4+3)        = 0x7F; // Helms
*(BYTE*)(0x005F43EE+3)        = 0x7F; // Armor, Pants, Glowes, Boots
*(BYTE*)(0x005F58F5+3)        = 0x7F; // Swords
*(BYTE*)(0x005F59C8+3)        = 0x7F; // Axes
*(BYTE*)(0x005F5A05+3)        = 0x7F; // Maces 1
*(BYTE*)(0x005F5A5B+3)        = 0x7F; // Maces 2
*(BYTE*)(0x005F5AB1+3)        = 0x7F; // Spears
*(BYTE*)(0x005F5B07+3)        = 0x7F; // Shields
*(BYTE*)(0x005F5B76+3)        = 0x7F; // Staffs
*(BYTE*)(0x005F5BFE+3)        = 0x7F; // Sticks
*(BYTE*)(0x005F5C3B+3)        = 0x7F; // Bow
*(BYTE*)(0x005F5C78+3)        = 0x7F; // Crossbow

// Textures
*(BYTE*)(0x005F57D6+3)        = 0x7F; // Helms
*(BYTE*)(0x005F5821+3)        = 0x7F; // Armor, Pants, Glowes, Boots
*(BYTE*)(0x005F820E+3)        = 0x7F; // Swords
*(BYTE*)(0x005F83AC+3)        = 0x7F; // Axes
*(BYTE*)(0x005F83E9+3)        = 0x7F; // Maces
*(BYTE*)(0x005F8426+3)        = 0x7F; // Maces 2
*(BYTE*)(0x005F8462+3)        = 0x7F; // Spears
*(BYTE*)(0x005F84BD+3)        = 0x7F; // Shields
*(BYTE*)(0x005F84FA+3)        = 0x7F; // Staffs
*(BYTE*)(0x005F8626+3)        = 0x7F; // Sticks
*(BYTE*)(0x005F878F+3)        = 0x7F; // Bow
*(BYTE*)(0x005F87CC+3)        = 0x7F; // Crossbow
}
}


Но текстуры новых вещей не грузятся. Если увеличивать лимиты в самом майне, через ольку, то для Sword сами модельки загружает, но они белого цвета.


И если менять в мейне лимиты на текстуры для Sword, то он при загрузке закрывается. На РЗ читал, что этот способ, что я привел выше, староват и не факт, что рабочий. Так же там говорили, что есть более эффективный способ снять лимиты, но не сказано как, и я не смог найти исходники, где есть другой код увеличения текстурвещей.
Может кто-то может посоветовать что-то по этому поводу? Или может у кого "заволялся" альтернативный код для всего этого?

--------------------------------------------------------------------
upd:

Нашел такой вот код:

.cpp
void InitModel(int ItemID, char* ModelName, char* Folder, char* Form)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH Form
PUSH ItemID
mov eax,BMDModelLoad
CALL eax

PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH Folder
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}

void InitSets(int ItemID, char* ModelName, char* Folder, char* Form)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH Form
PUSH ItemID
mov eax,BMDModelLoad
CALL eax

PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH Folder
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}

__declspec(naked) void PatchNewModel()
{
for (i = 5; i <    512; i++)
{
if(i > 28 && i < 31 || i > 35 && i < 256)//swords
{
sprintf_s(Item, "Sword%d", i+1);
InitModel(LOAD_ITEM(0, i), Item, ItemFolder, ItemDir);
}
if(i > 8)//axes
{
sprintf_s(Item, "Axe%d", i+1);
InitModel(LOAD_ITEM(1, i), Item, ItemFolder, ItemDir);
}
if(i > 18)//maces
{
sprintf_s(Item, "Mace%d", i+1);
InitModel(LOAD_ITEM(2, i), Item, ItemFolder, ItemDir);
}
if(i > 11)//spears
{
sprintf_s(Item, "Spear%d", i+1);
InitModel(LOAD_ITEM(3, i), Item, ItemFolder, ItemDir);
}
if(i > 24 && i < 210)//bow
{
sprintf_s(Item, "Bow%d", i+1);
InitModel(LOAD_ITEM(4, i), Item, ItemFolder, ItemDir);
}
if(i > 209 && i < 511)//crossbow
{
sprintf_s(Item, "Crossbow%d", i+1);
InitModel(LOAD_ITEM(4, i), Item, ItemFolder, ItemDir);
}
if(i > 36)//staff
{
sprintf_s(Item, "Staff%d", i+1);
InitModel(LOAD_ITEM(5, i), Item, ItemFolder, ItemDir);
}
if(i > 21)//shield
{
sprintf_s(Item, "Shield%d", i+1);
InitModel(LOAD_ITEM(6, i), Item, ItemFolder, ItemDir);
}
if(i > 199 && i < 255)//jewels (extend custom jewels load models)
{
sprintf_s(Item, "Jewel%d", i+1);
InitModel(LOAD_ITEM(14, i), Item, ItemFolder, ItemDir);
}
if(i > 199 && i < 255)//wings (fix mini wings)
{
sprintf_s(Item, "Wing%d", i+1);
InitModel(LOAD_ITEM(12, i), Item, ItemFolder, ItemDir);
}
}
_asm
{
PUSH -1
PUSH 0x00D2F7C4
PUSH 0x00D2F7CC
PUSH 0x20B2
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnOffset
JMP eax
}
}

__declspec(naked) void PatchNewSets()
{
for (i = 5; i < 512; i++)
{
if(i > 73)//helms
{
sprintf_s(Sets, "HelmMale%d", i+1);
InitSets(LOAD_ITEM(7, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 73)//armors
{
sprintf_s(Sets, "ArmorMale%d", i+1);
InitSets(LOAD_ITEM(8, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 72)//pants (fix Phoenix soul pants)
{
sprintf_s(Sets, "PantMale%d", i+1);
InitSets(LOAD_ITEM(9, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 73)//gloves
{
sprintf_s(Sets, "GloveMale%d", i+1);
InitSets(LOAD_ITEM(10, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 73)//boots
{
sprintf_s(Sets, "BootMale%d", i+1);
InitSets(LOAD_ITEM(11, i), Sets, PlayerFolder, PlayerDir);
}
}
_asm
{
PUSH -1
PUSH 0x00D2D790
PUSH 0x00D2D79C
PUSH 0x14DC
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnSetOffset
JMP eax
}
}

void InitItems()
{
//Patch new model in game
PatchJMP g_ModelPatch;
ToolKit.SetNop(LoadModel, 25);
g_ModelPatch.Command = 0xE9;
g_ModelPatch.Pointer = (DWORD)&PatchNewModel;
memcpy((int*)LoadModel, &g_ModelPatch, sizeof(g_ModelPatch));
ToolKit.HookThis((DWORD)&PatchNewModel, LoadModel);
}

void InitSets()
{
//Patch new sets in game
PatchJMP g_SetsPatch;
ToolKit.SetNop(LoadSetModel, 25);
g_SetsPatch.Command    = 0xE9;
g_SetsPatch.Pointer    = (DWORD)&PatchNewSets;
memcpy((int*)LoadSetModel, &g_SetsPatch, sizeof(g_SetsPatch));
ToolKit.HookThis((DWORD)&PatchNewSets, LoadSetModel);
}

.h
char *ItemDir      = "Data\Item\";
char *ItemFolder  = "Item\";
char *PlayerDir      = "Data\Player\";
char *PlayerFolder = "Player\";
char Item[15];
char Sets[30];
int i;


#define LoadModel        0x006194DD //1.03Y -> 0x005F34C3
#define OpenTexture        0x00614710 //1.03Y -> 0x005F2E10
#define LoadSetModel    0x00615DB4 //1.03Y -> ??
#define BMDModelLoad    0x00614D10 //1.03Y -> 0x005F34C3
#define ReturnOffset    0x006194F6 //1.03Y -> 0x005F6CCD
#define ReturnSetOffset    0x00615DE6 //1.03Y -> ??

#define ItemAdder 1171
#define ITEM(x, y) ((x * 512) + y)
#define ITEM2(x, y) ((x * 512) + y + ItemAdder)
#define LOAD_ITEM(x, y) ((x) * 512 + (y) + ItemAdder)
void InitModel(int ItemID, char* ModelName, char* Folder, char* Form);
void InitSets(int ItemID, char* ModelName, char* Folder, char* Form);
void PatchNewModel();
void PatchNewSets();
void InitItems();
void InitSets();

Как видно уже начал искать оффсеты (4 нашел), но с остальными напряг = От помощи не откажусь)

NZK

Ты попробуй загрузить main.exe в olly потом search > text > swordmale > и просто поставь их сколько тебе нужно (к примеру 100 ) в hex'e.
такой способ всегда работал.

по стандарту все модели белые - если сделать операцию что я привел выше то проблема решалась.

positive

Цитата: NZK от 2014 Июнь 29, 17:29  Ты попробуй загрузить main.exe в olly потом search > text > swordmale > и просто поставь их сколько тебе нужно (к примеру 100 ) в hex'e.
такой способ всегда работал.

по стандарту все модели белые - если сделать операцию что я привел выше то проблема решалась.

Ты наверное не понимаешь.. Я же написал, что если менять в самом мейне (не через либу), то моделька грузится, но цвет белый. Это значит, что нужно расширить лимиты на текстуры, НО! Когда я это делаю, сам мейн при загрузкы закрывается.

NZK

#3
полного кода в паблике нет.
**** p4f выкладывал часть кода что бы похвастаться какие они умные  
ну конечно без smallhabita там не было бы даже куска кода  


p.s. Smallhabit'y напиши )

positive

Есть код, рабочий, под 1.04D мейн. Нужно только оффсеты найти все.

Спойлер
Особо на помощь не надеюсь, ибо в му комуне (именно русской му комуне), почти уже не осталось тех, кто поможет. Но все же..
[свернуть]

jawa

Я добавил вещи в клиент и в сервер. Но как захожу в игру, на вещи нету текстуры. Почему так есть ? Это и за этого что я лимит в майне не увеличивал ? или так и за чего та ?

Смотрите, у меня такая ситуация. Я добавил вещи, добавил текстуры, вписал в сервере и клиенте. Закидываю вещь в магазин, а она прозрачна, но так опт, скилы, название пишет. Текстуры 100 проц. хорошо вставлены, через PentiumTool проверял в 3д, показывает картинку. Начал в майне копать, что типо лимит надо больше сделать, но не нахожу такого места как в данном уроке... что посоветуете ещё сделать, почему так есть ? Сборка у меня вор эта:  https://forum.ragezone.com/f508/bug-free-se...source-1026832/ .

Вот паро скринав с OllyDBG.

1:


2:

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