boris160
17/11/2017, 12:54 PM
bom alguém aki ja tentou add novos mapas na versão 1.05? estou tentando adicionar tendo como base o code do Nemesis mas a source zteam s6, o problema é q ao tentar mover para o mapa simplesmente n acontece nda,acho que deve ser os offsets de aumentar o limite de terrains,pois na versão 1.03 jmp os offsets são visíveis,já na 1.04E são invisíveis ! por exemplo um dos offsets é 5D7761 (visível) já pra a 1.04E ele pula três dígitos pra frente 5D7764(invisível).... n sei se isso seria o problema muitos aki entendem mais que eu,então poderão ajudar !
deixo aki a source de leitura .tga de novos mapas,linha text.bmd de novos mapas e aumentar .atts
NewMap.h
void NewMapHooks();
NewMap.cpp
#include "stdafx.h"
#include "NewMap.h"
#include "ToolKit.h"
#include "TMemory.h"
#include "Defines.h"
DWORD MapTextOffset = 0x00402570;
DWORD MapJumpOffset = 0x00597A81;
DWORD MapReturnOffset = 0x0059779F;
void __declspec(naked) LoadNewTextMapName()
{
_asm
{
CMP ESI,0x22 // Crywolf MapId: 34
JNZ NextMapText1
PUSH 0x73B
MOV ECX, 0x079F5190
CALL MapTextOffset
JMP MapJumpOffset
// ---
NextMapText1:
// ---
CMP ESI,0x3F //NewMap : 63
JNZ ReturnMapLoad
PUSH 0x741 // Text.bmd number line: 1857
MOV ECX, 0x079F5190
CALL MapTextOffset
JMP MapJumpOffset
// ---
ReturnMapLoad:
// ---
JMP MapReturnOffset
}
}
char * arkania_map = "Interface\\Arkania_Map.tga";
void __declspec(naked) LoadNewInterfaceMapName()
{
_asm
{
MOV DWORD PTR SS:[EBP-0x0D0],0x3E // 0x3E = 62 santatown (Hook place)
PUSH 0x0083ECE8 // Arg1 = ASCII "Interface\santatown.tga"
LEA EAX,DWORD PTR SS:[EBP-0x0D0]
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x0D4]
ADD ECX,0x4
CALL InterfaceLoad1
MOV ECX,EAX
CALL InterfaceLoad2
MOV DWORD PTR SS:[EBP-0x0D0],0x3F
PUSH arkania_map
LEA EAX,DWORD PTR SS:[EBP-0x0D0]
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x0D4]
ADD ECX,0x4
CALL InterfaceLoad1
MOV ECX,EAX
CALL InterfaceLoad2
MOV ESP,EBP
POP EBP
RETN
InterfaceLoad1:
MOV EDI, 0x0045E270
JMP EDI
// ---
InterfaceLoad2:
MOV EDI, 0x004087B0
JMP EDI
}
}
void NewMapHooks()
{
ToolKit.WriteJmp(0x00597786,(DWORD)&LoadNewTextMapName);
ToolKit.WriteJmp(0x0045DEB0,(DWORD)&LoadNewInterfaceMapName);
////.att
SetByte((PVOID)0x005D7764,0xEB);
SetByte((PVOID)0x005D776A,0xEB);
SetByte((PVOID)0x005D79BB,0xEB);
SetByte((PVOID)0x005D79C1,0xEB);
SetByte((PVOID)0x005D7A5E,0xEB);
SetByte((PVOID)0x005D7A64,0xEB);
SetByte((PVOID)0x005D7763,0x69);
SetByte((PVOID)0x005D79BA,0x69);
SetByte((PVOID)0x005D7A5D,0x69);
}
deixo aki a source de leitura .tga de novos mapas,linha text.bmd de novos mapas e aumentar .atts
NewMap.h
void NewMapHooks();
NewMap.cpp
#include "stdafx.h"
#include "NewMap.h"
#include "ToolKit.h"
#include "TMemory.h"
#include "Defines.h"
DWORD MapTextOffset = 0x00402570;
DWORD MapJumpOffset = 0x00597A81;
DWORD MapReturnOffset = 0x0059779F;
void __declspec(naked) LoadNewTextMapName()
{
_asm
{
CMP ESI,0x22 // Crywolf MapId: 34
JNZ NextMapText1
PUSH 0x73B
MOV ECX, 0x079F5190
CALL MapTextOffset
JMP MapJumpOffset
// ---
NextMapText1:
// ---
CMP ESI,0x3F //NewMap : 63
JNZ ReturnMapLoad
PUSH 0x741 // Text.bmd number line: 1857
MOV ECX, 0x079F5190
CALL MapTextOffset
JMP MapJumpOffset
// ---
ReturnMapLoad:
// ---
JMP MapReturnOffset
}
}
char * arkania_map = "Interface\\Arkania_Map.tga";
void __declspec(naked) LoadNewInterfaceMapName()
{
_asm
{
MOV DWORD PTR SS:[EBP-0x0D0],0x3E // 0x3E = 62 santatown (Hook place)
PUSH 0x0083ECE8 // Arg1 = ASCII "Interface\santatown.tga"
LEA EAX,DWORD PTR SS:[EBP-0x0D0]
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x0D4]
ADD ECX,0x4
CALL InterfaceLoad1
MOV ECX,EAX
CALL InterfaceLoad2
MOV DWORD PTR SS:[EBP-0x0D0],0x3F
PUSH arkania_map
LEA EAX,DWORD PTR SS:[EBP-0x0D0]
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x0D4]
ADD ECX,0x4
CALL InterfaceLoad1
MOV ECX,EAX
CALL InterfaceLoad2
MOV ESP,EBP
POP EBP
RETN
InterfaceLoad1:
MOV EDI, 0x0045E270
JMP EDI
// ---
InterfaceLoad2:
MOV EDI, 0x004087B0
JMP EDI
}
}
void NewMapHooks()
{
ToolKit.WriteJmp(0x00597786,(DWORD)&LoadNewTextMapName);
ToolKit.WriteJmp(0x0045DEB0,(DWORD)&LoadNewInterfaceMapName);
////.att
SetByte((PVOID)0x005D7764,0xEB);
SetByte((PVOID)0x005D776A,0xEB);
SetByte((PVOID)0x005D79BB,0xEB);
SetByte((PVOID)0x005D79C1,0xEB);
SetByte((PVOID)0x005D7A5E,0xEB);
SetByte((PVOID)0x005D7A64,0xEB);
SetByte((PVOID)0x005D7763,0x69);
SetByte((PVOID)0x005D79BA,0x69);
SetByte((PVOID)0x005D7A5D,0x69);
}