is there a guide anywhere as to how to allocate memory in the gs for new maps? I have not been able to find one.
and yes the character keeps regenerating or flashing when i move to the map. How can i fix that? are there any guides anywhere?
Printable View
is there a guide anywhere as to how to allocate memory in the gs for new maps? I have not been able to find one.
and yes the character keeps regenerating or flashing when i move to the map. How can i fix that? are there any guides anywhere?
soo somebody have the dll compiled? with all the maps? bcuz i have problems compiling >.<
very good
how to add to SCF 5 Series?
Coz i thik they use someting for the maps they add right?
Thanks
i cant add maps for me GS... because dll is not found...
why are you giving when it compiles?
error C3861: 'LoadMap': identifier not found
error C2061: syntax error : identifier 'DWORD'
@pegasus128
=============================================Quote:
why are you giving when it compiles?
error C3861: 'LoadMap': identifier not found
error C2061: syntax error : identifier 'DWORD
You have to do so
mapas.h
and mapas.cppPHP Code:# include <stdio.h>
# include <windows.h>
void LoadMaps ();
void LoadMap (char * mapname, DWORD mapnr);
PHP Code:# include "mapas.h"
void LoadMaps ()
{
LoadMap ("..\\ Data\\Terrain41.att", 40);
LoadMap ("..\\ Data\\Terrain42.att", 41);
}
__declspec (naked) void LoadMap (char * mapname, DWORD mapnr)
{
_asm
{
PUSH EBP
MOV EBP, ESP
SUB ESP, 4
MOV ECX, mapnr
IMUL ECX, ECX, 0x51068
ADD ECX, 0x9FF4BD0
MOV EDX, 0x403A6C
CALL EDX
MOV EAX, mapname
PUSH EAX
MOV ECX, mapnr
IMUL ECX, ECX, 0x51068
ADD ECX, 0x9FF4BD0
MOV EDX, 0x403698
CALL EDX
MOV ESP, EBP
POP EBP
RETN
}
}
Delete this line: LoadMap void (char * mapname, DWORD mapnr); and it will work, but it's a bad method to do this.
Nice job, DMCahir.
But I think it will occur some problems
With GS 1.00.18:
0x9FF4BD0 is the BASE Offset of MapArray
The default Max number of Map is 0x28
The Map size is 0x51068
The BASE Dir Offset is 0xAC9DC10
You can see: 0x9FF4BD0 + 0x28 * 0x51068 = 0xAC9DC10
So, If we increase the Max number (sample to: 0x33), and after _asm code execute, the memory of MapArray overwrite the value at offset 0xAC9DC10, or if some thing done by GameServer orverwrite the memory of Map number 0x29 ect...
I think some problem will occur!
Hello, I have a question
First: how to do this? "We Must call to make Our DLL. The best place is GameMainInit function"
Second: If I create a. dll with the given source, it compiled and hook it works?
Greetings..
How to load new map in CLient? 1.04D Main
someone could be so kind as to do the same guide for versions 97d or 97 + 99
thank you very much
Para la 97D
#include "mapas.h"
CHAR MapBuff[21][15] = {
"Terrain1.att",
"Terrain2.att",
"Terrain3.att",
"Terrain4.att",
"Terrain5.att",
"Terrain6.att",
"Terrain7.att",
"Terrain8.att",
"Terrain9.att",
"Terrain10.att",
"Terrain11.att",
"Terrain12.att",
"Terrain17.att",
"Terrain18.att",
"Terrain19.att",
"Terrain20.att",
"Terrain21.att",
};
void MapLoad()
{
for(int i=0;i<0x15;i++)
{
_asm
{
Mov Ecx, i
Imul Ecx, Ecx, 0x4DB68
Add Ecx, 0x6354C78
Mov Eax, 0x00402225
Call Eax
Mov Eax, i
Push Eax
Mov Ecx, i
Imul Ecx, Ecx, 0FH
Add Ecx, offset MapBuff
Push Ecx
Mov Ecx, 0x0687DE60
Mov Eax, 0x00401A7D
Call Eax
Push Eax
Mov Ecx, i
Imul Ecx, Ecx, 0x4DB68
Add Ecx, 0x6354C78
Mov Eax, 0x00401FC3
Call Eax
}
}
}
//LoadMaps 100%
SetByte(0x00489424,0x15);
SetByte(0x0048948F,0x15);
SetByte(0x0047C7D4,0x15);
SetByte(0x0047334E,0x15);
SetByte(0x0047C499,0x15);
SetByte(0x0047C7D4,0x15);
SetByte(0x0047C7FE,0x15);
SetByte(0x0045D153,0x15);
SetByte(0x00443782,0x14);
SetByte(0x00497B30,0x14);
SetByte(0x00497C00,0x14);
SetByte(0x0045C620,0x14);
SetByte(0x0045C77B,0x14);
SetByte(0x0045BA63,0x14);
*(DWORD*)(0x004D0A00) = (DWORD)&MapLoad;