Register for your free account! | Forgot your password?

You last visited: Today at 01:03

  • Please register to post and access all features, it's quick, easy and FREE!

 

Modelchange 4.0.3

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2010
Posts: 14
Received Thanks: 10
Modelchange 4.0.3

Moin zusamm, gibt es schon eine möglichkeit nach 4.0.3 mit dem change ? Habe selbst mal etwas rumprobiert und leider keine alternative gefunden,jetzt hoffe ich auf Fakku der schon für 4.0.1 eine lösung gefunden hat Hoffe bald was zufinden,als b11 Pala rumzulaufen ist ziemlich naja Siegfried und Roy mässig *grins*

mfg und hoffe auf baldige lösung euer Sarok121



sarok121 is offline  
Old   #2
 
elite*gold: 0
Join Date: Nov 2010
Posts: 3
Received Thanks: 0
Als Male Human rumzutapern ist noch ätzender ...
Looking for Fakku =( !!


Atreyuz is offline  
Old   #3
 
elite*gold: 0
Join Date: Mar 2009
Posts: 12
Received Thanks: 0
Tauren Female kann wer unterbieten? +.+
firestorm2291 is offline  
Old   #4
 
elite*gold: 0
Join Date: Jan 2010
Posts: 596
Received Thanks: 663
ich sag nur



gnom


Ka!ser is offline  
Old   #5
 
elite*gold: 0
Join Date: Nov 2009
Posts: 466
Received Thanks: 186
Und ich sag nur, 20 Euro Race Change.
Denny x3 is offline  
Old   #6
 
elite*gold: 0
Join Date: Sep 2010
Posts: 14
Received Thanks: 10
Solche kommentare kannste dir sparen, geb was sinnvolles von dir oder lass es einfach bitte , und B11 zu Orc Pala geht auch via 20 Euro nicht bzw Undead Shaman

sarok121 is offline  
Old   #7
 
elite*gold: 0
Join Date: Mar 2009
Posts: 12
Received Thanks: 0
[QUOTE=sarok121;7886337][B][I]Solche kommentare kannste dir sparen, geb was sinnvolles von dir oder lass es einfach bitte , und B11 zu Orc Pala geht auch via 20 Euro nicht bzw Undead Shaman

genau da liegt das problem ^^
firestorm2291 is offline  
Old   #8
 
elite*gold: 0
Join Date: May 2009
Posts: 33
Received Thanks: 1
need wieder mein Orc female um UD ich DREH DURCH xD .......
Tayron112 is offline  
Old   #9
 
elite*gold: 0
Join Date: Nov 2010
Posts: 3
Received Thanks: 0
Schon jemand herausgefunden wie man jetzt in 4.0.3 Modelchanged?
Atreyuz is offline  
Old   #10
 
elite*gold: 0
Join Date: Sep 2010
Posts: 14
Received Thanks: 10
leider noch nicht, laut ein paar Amy foren soll es ab cata wieder gehen, wie nach 4.0 und demnach soll es derzeit nur an 4.0.3 bzw 4.0.3a liegen .... es bleibt wohl nur abwarten und gucken was in na woche passiert :-D

nur glauben tue ich nicht dran .... :-( Fakku du hast uns 4.0 erleuchtet nun pack mal ne lösung aus :P
sarok121 is offline  
Old   #11
 
elite*gold: 0
Join Date: Mar 2009
Posts: 12
Received Thanks: 0
ihr könnt euch den noggenfoggerverschließ meiner Taurin garnich vorstellen
firestorm2291 is offline  
Old   #12
 
elite*gold: 0
Join Date: Apr 2009
Posts: 6
Received Thanks: 0
Hi leute hab grad was gefunden, da hat einer einen code geschrieben für eine dll und eine exe die MPQs iniziert und zum loaden bringt kanns leider nicht noch nicht ausprobieren aber hier mal der code:

Ihr erstellt eine dll mit dem code.
----------------------------------------------------------------------------------------
#include <iostream>
#include <string>
#include <fstream>

#include <Windows.h>

struct SFileArchive
{
int m_type;
int m_handle;
};

typedef bool (__stdcall *tSFileOpenArchive)(const char* file, int zero, int flags, SFileArchive** ppNode);
typedef int (__stdcall *tSFileSystem__AddMPQ)(SFileArchive* node, const char* prefix, int zero, int unk, SFileArchive** dest);
typedef int (__stdcall *tArray__Unk)(int unkNum);
typedef int (__stdcall *tArray__Resize)(int unkNum);

#define GetAddr(T, A) ((T)((DWORD)GetModuleHandle(NULL) + A))

extern "C"
__declspec(dllexport) unsigned long InjectFunction(LPVOID)
{
tSFileOpenArchive SFileOpenArchive = GetAddr(tSFileOpenArchive, 0x303E20);
tSFileSystem__AddMPQ SFileSystem__AddMPQ = GetAddr(tSFileSystem__AddMPQ, 0x303FA0);
tArray__Unk Array__Unk = GetAddr(tArray__Unk, 0x2BA7D0);
tArray__Resize Array__Resize = GetAddr(tArray__Resize, 0x32D0);

LPDWORD lpNumArchives = GetAddr(LPDWORD, 0x831A44);
SFileArchive*** lpArchives = GetAddr(SFileArchive***, 0x831A48);
LPDWORD lpCapacity = GetAddr(LPDWORD, 0x831A40);
LPDWORD lpGain = GetAddr(LPDWORD, 0x831A4C);

std::ifstream input("MpqFiles.txt");
if(!input.is_open())
{
std::cout << "Could not locate or open \"MpqFiles.txt\" in wow directory!" << std::endl;
ExitThread(0);
}

std::string curFile;
while(std::getline(input, curFile))
{
std::ifstream tst(curFile);
std::cout << "Loading file '" << curFile << "'..." << std::endl;
if(!tst.is_open())
{
std::cout << "file does not exist!" << std::endl;
continue;
}

tst.close();

SFileArchive* pNode = NULL;
if(!SFileOpenArchive(curFile.c_str(), 0, 0, &pNode))
{
std::cout << "SFileOpenArchive returned false!" << std::endl;
continue;
}

++(*lpNumArchives);
if(*lpNumArchives > *lpCapacity)
{
DWORD gain = *lpGain;
if(!gain)
{
DWORD v4 = *lpNumArchives;
DWORD pThis = GetAddr(DWORD, 0x831A40);
__asm
{
mov eax, v4
push eax
lea ecx, pThis
lea eax, Array__Unk
call far eax
mov gain, eax
}
}

DWORD v4 = *lpNumArchives;
if(v4 % gain)
v4 = *lpNumArchives + gain - *lpNumArchives % gain;

DWORD pThis = GetAddr(DWORD, 0x831A40);
__asm
{
mov eax, v4
push eax
mov ecx, pThis
mov eax, Array__Resize
call far eax
}
}

SFileSystem__AddMPQ(pNode, NULL, 64 + *lpNumArchives, 0, *lpArchives + *lpNumArchives);
}

ExitThread(0);
}
-------------------------------------------------------------------------------------------------
dann macht ihr eine exe mit dem code:
-----------------------------------------------------------------------------------------------
#include <iostream>
#include <cassert>
#include <windows.h>

int main()
{
HWND hWindow = FindWindow("GxWindowClass", "World of Warcraft");
assert(hWindow != NULL);

DWORD dwProcess = 0;
assert(GetWindowThreadProcessId(hWindow, &dwProcess) != FALSE);

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcess);
assert(hProcess != NULL);

CHAR szProc[MAX_PATH];
GetCurrentDirectory(MAX_PATH, szProc);

LPVOID dllAddr = VirtualAllocEx(hProcess, NULL, strlen(szProc) + 1, MEM_COMMIT, PAGE_READWRITE);
assert(dllAddr != NULL);

DWORD dwRet = WriteProcessMemory(hProcess, dllAddr, szProc, strlen(szProc) + 1, NULL);
assert(dwRet == TRUE);

HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)SetDllDirectory, dllAddr, 0, NULL);
assert(hThread != NULL);

dwRet = WaitForSingleObject(hThread, INFINITE);
assert(dwRet == WAIT_OBJECT_0);

VirtualFreeEx(hProcess, dllAddr, strlen(szProc) + 1, MEM_COMMIT);

HMODULE hDll = LoadLibrary("Mopaq.dll");
FARPROC fp = GetProcAddress(hDll, "InjectFunction");
assert(fp != NULL && (DWORD)hDll < (DWORD)fp);

DWORD dwOffset = (DWORD)fp - (DWORD)hDll;

CHAR szDllName[] = "Mopaq.dll";
dllAddr = VirtualAllocEx(hProcess, NULL, strlen(szDllName) + 1, MEM_COMMIT, PAGE_READWRITE);
assert(dllAddr != NULL);

dwRet = WriteProcessMemory(hProcess, dllAddr, szDllName, strlen(szDllName) + 1, NULL);
assert(dwRet == TRUE);

hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)LoadLibrary, dllAddr, 0, NULL);
assert(hThread != NULL);

dwRet = WaitForSingleObject(hThread, INFINITE);
assert(dwRet == WAIT_OBJECT_0);

HMODULE hRemote = NULL;
dwRet = GetExitCodeThread(hThread, (LPDWORD)&hRemote);
assert(dwRet == TRUE);
assert(hRemote != NULL);

VirtualFreeEx(hProcess, dllAddr, strlen(szDllName) + 1, MEM_COMMIT);

LPTHREAD_START_ROUTINE initProc = (LPTHREAD_START_ROUTINE)((DWORD)hRemote + dwOffset);
hThread = CreateRemoteThread(hProcess, NULL, 0, initProc, NULL, 0, NULL);
assert(hThread != NULL);

dwRet = WaitForSingleObject(hThread, INFINITE);
assert(dwRet == WAIT_OBJECT_0);

hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)FreeLibrary, (LPVOID)hRemote, 0, NULL);
WaitForSingleObject(hThread, INFINITE);

return 0;
}
-------------------------------------------------------------------------------------------------


How to
- Compile DLL-code to Mopaq.dll (dunno if it works for other compilers then M$, didnt look for portability)
- Compile Exe-code to random exe file (dunno if it works for other compilers then M$, didnt look for portability)
- Place DLL and exe into the same folder (no matter where)
- In the wow-directory (NOT data) create a file named MpqFiles.txt
- Write the path to each MPQ on one line. Paths can be relative to the WoW-Directory (e.g. Data\myPatch.MPQ) or absolute (e.g. C:\Patches\myPatch.mpq)
- Start WoW
- At login screen run exe. If something goes wrong a large box pops up and after pressing abort you see an error message in the console.
- MPQs are injected now and loaded

Hints:
- Start the exe using CMD to prevent the window from being closed to see the error messages.
...

Preview:
- Loading MPQs before WoW loads the DBC to also make changes on DBC possible. Or delayed reloading of DBCs at loading screen (not prefered )
- Compiled binaries
babl1990 is offline  
Old   #13
 
elite*gold: 0
Join Date: Feb 2008
Posts: 10
Received Thanks: 14
Und "einer" hat es hier gepostet, was man zumindest als Quelle hätte angeben können, denn da werden dann nämlich auch entsprechende Updates veröffentlicht:


/Edit:
Wegen der absolut kindischen und peinlichen Zensur (Armutszeugnis für ein Forum):
plerion is offline  
Thanks
1 User
Old   #14
 
elite*gold: 0
Join Date: Apr 2009
Posts: 6
Received Thanks: 0
jo sry wusste nicht ob das hier erwünscht is von anderen forums links reinzumachen
babl1990 is offline  
Old   #15
 
elite*gold: 0
Join Date: Jun 2008
Posts: 2
Received Thanks: 0
Quote:
Originally Posted by plerion View Post

/Edit:
Wegen der absolut kindischen und peinlichen Zensur (Armutszeugnis für ein Forum):
jop echt arm!


odyzeuz is offline  
Reply



« Previous Thread | Next Thread »



All times are GMT +1. The time now is 01:03.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.