[ COLLECTION OF 0.3.7 - 0.*.* OFFSETS ]

Like before on the 0.3z version, here you can share updated offset's / structures / infos about samp 0.3.7 RC's.

SAMP_INFO_OFFSET - Tested (0.3.7-RC1) (0x688)
Code:
"samp.dll"+0x215B40
Code:
SAMP_INFO_OFFSET + 0x3C8 = RakClientInterface PTR

SAMP_CHAT_INFO_OFFSET - Tested (0.3.7-RC1) (0x688)
Code:
"samp.dll"+0x215B2C
Code:
"samp.dll"+0x62C10 = FUNC_ADDTOCHATWND

cmon kye i'm tired :(

Packet ID's (by 0x688):
Code:
ID_AUTH_KEY = 12
ID_PLAYER_SYNC = 207
ID_AIM_SYNC = 203
ID_VEHICLE_SYNC = 200
ID_STATS_UPDATE = 205
ID_BULLET_SYNC = 206

Structures / Structs
SAMP_INFO - Tested (0.3.7-RC1) (povargek)
Code:
struct stSAMP
{
#pragma pack( 1 )
   uint8_t               byteUnk[0x20];
   char               szIP[257];
   char               szHostname[255];
   void               *unk1;
   uint32_t            ulPort;
   uint32_t            ulMapIcons[99];
   uint32_t            ulConnectTick; // not tested
   int                  iLanMode; // not tested
   int                  iGameState;
   void               *unk3;
   struct stSampSettings   *pSettings;
   void               *pRakClientInterface;
   struct stSAMPPools      *pPools;
};


INFO: You can use them to reverse structs, as there was never a real change in structs after rc's.
 

kraneq

Member
Joined
Jun 25, 2019
Messages
6
Reaction score
1
#define SAMP_FUNC_SAY 0x57F0
It's like void say();
but how do i call the function, i really have no clue, i tried: (void*)(samp.dll+SAMP_FUNC_SAY)("AAA"); and it doesn't work (who would've guessed)
 

batonkal

Active member
Joined
May 6, 2017
Messages
100
Reaction score
16
Location
Bosnia and Herzegovina
0.3.7-R4
Code:
SAMP_SCOREBOARD_INFO_PTR = samp.dll + 0x26E9C4
FUNC_SAMP_SETCHECKPOINT = samp.dll + 0xA1DF0
FUNC_SAMP_SENDCMD = samp.dll + 0x698C0
FUNC_SAMP_SENDSAY = samp.dll + 0x5A00
FUNC_SAMP_ADDTOCHATWND = samp.dll + 0x680B0
FUNC_SAMP_SHOWGAMETEXT = samp.dll + 0xA0D10
FUNC_SAMP_PLAYAUDIOSTR = samp.dll + 0x66920
FUNC_SAMP_STOPAUDIOSTR = samp.dll + 0x66520
FUNC_UPDATESCOREBOARD = samp.dll + 0x8F00
SAMP_INFO_OFFSET = samp.dll + 0x26EA0C

Anybody knows how to get SAMP_PPOOLS_OFFSET, SAMP_PPOOL_PLAYER_OFFSET and other offsets and addresses for R4 version of the game?
 

seven.eXe

Member
Joined
Apr 16, 2020
Messages
5
Reaction score
5
Location
Russia
SAMP 0.3.7 R4
C++:
SAMP_CHAT_INFO_PTR = samp.dll + 0x26E9F8
SAMP_INPUT_INFO_PTR = samp.dll + 0x26E9FC
SAMP_KILL_INFO_PTR = samp.dll + 0x26EA00
SAMP_MISC_INFO_PTR = samp.dll + 0x26EA24
SAMP_DIALOG_INFO_PTR = samp.dll + 0x26E9C8
SAMP_FUNC_ADD_CLIENT_COMMAND = samp.dll + 0x69730
 
Joined
Jan 12, 2019
Messages
6
Reaction score
5
SA:MP 0.3.7 R4

C++:
FUNC_SAMP_SPECIALACTION = samp.dll + 0x30F0 // by S E V E N
SAMP_HOOK_RPC_HANDLER1 = samp.dll + 0x3AEDD
SAMP_HOOK_RPC_HANDLER2 = samp.dll + 0x3AE69
 
Joined
Jan 12, 2019
Messages
6
Reaction score
5
0.3.7 R4
C++:
FUNC_SAMP_SETSPAWNINFO = samp.dll + 0x3BE0 // by S E V E N
FUNC_SAMP_SETCOLOR = samp.dll + 0x3EC0 // by S E V E N

ToggleHeadMoves = samp.dll + 0x68920 // by S E V E N
TestDeathWindow = samp.dll + 0x684C0 // by S E V E N
SetPageSize = samp.dll + 0x685B0 // by S E V E N
SetFontSize = samp.dll + 0x68630 // by S E V E N
DrawTimeStamp = samp.dll + 0x686F0 // by S E V E N
EnableHudScaleFix = samp.dll + 0x68830 // by S E V E N
SendExitFromGame = samp.dll + 0x689A0 // by S E V E N
SaveCurrentCoordinates = samp.dll + 0x689C0 // by S E V E N
SaveCurrentCooordinates(RAW) = samp.dll + 0x68B40 // by S E V E N
SendRconCommand = samp.dll + 0x68FF0 // by S E V E N
ShowMem = samp.dll + 0x68870 // by S E V E N
EnableFpsLimit = samp.dll + 0x68890 // by S E V E N
TestDW (/testdw)? = samp.dll + 0x684C0 // by S E V E N
(DEBUG) SpawnCar = samp.dll + 0x68E70 // by S E V E N
(DEBUG) SpawnCar = samp.dll + 0x68D30 // by S E V E N
(DEBUG) SetPlayerSkin = samp.dll + 0x68CC0 // by S E V E N
(DEBUG) SetWeather = samp.dll + 0x68E90 // by S E V E N
(DEBUG) SetTime = samp.dll + 0x68EE0 // by S E V E N
CurrentInterior = samp.dll + 0x68F90 // by S E V E N
ToggleObjectLights = samp.dll + 0x68FC0 // by S E V E N
EnableDL = samp.dll + 0x68FE0 // by S E V E N
EnableLogUrls = samp.dll + 0x687C0 // by S E V E N
/dl render distance = samp.dll + 0xE5804 // by S E V E N
 
Last edited:
Joined
Jan 12, 2019
Messages
6
Reaction score
5
0.3.7 R4
by S E V E N
C++:
CChat::CChat(IDirect3DDevice9* pDevice, CFonts* pFontRenderer, const char* szLogPath) {
    ((void(__thiscall*)(CChat*, IDirect3DDevice9*, CFonts*, const char*))GetAddress(0x68340))(this, pDevice, pFontRenderer, szLogPath);
}

int CChat::GetMode() {
    return ((int(__thiscall*)(CChat*))GetAddress(0x61270))(this);
}

void CChat::SwitchMode() {
    ((void(__thiscall*)(CChat*))GetAddress(0x61280))(this);
}

void CChat::OnResetDevice() {
    ((void(__thiscall*)(CChat*))GetAddress(0x68190))(this);
}

void CChat::AddMessage(D3DCOLOR color, const char* szText) {
    ((void(__thiscall*)(CChat*, D3DCOLOR, const char*))GetAddress(0x68130))(this, color, szText);
}

void CChat::AddChatMessage(const char* szPrefix, D3DCOLOR prefixColor, const char* szText) {
    ((void(__thiscall*)(CChat*, const char*, D3DCOLOR, const char*))GetAddress(0x67FE0))(this, szPrefix, prefixColor, szText);
}
 
Joined
Jan 12, 2019
Messages
6
Reaction score
5
by S E V E N (0.3.7 R4)
C++:
void CChat::RecalcFontSize() {
    ((void(__thiscall*)(CChat*))GetAddress(0x670E0))(this);
}

void CChat::OnLostDevice() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67160))(this);
}

void CChat::UpdateScrollbar() {
    ((void(__thiscall*)(CChat*))GetAddress(0x671C0))(this);
}

void CChat::SetPageSize(int nValue) {
    ((void(__thiscall*)(CChat*, int))GetAddress(0x67260))(this, nValue);
}

void CChat::PageUp() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67290))(this);
}

void CChat::PageDown() {
    ((void(__thiscall*)(CChat*))GetAddress(0x672F0))(this);
}

void CChat::ScrollToBottom() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67350))(this);
}

void CChat::Scroll(int nDelta) {
    ((void(__thiscall*)(CChat*, int))GetAddress(0x67380))(this, nDelta);
}

void CChat::PushBack() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67410))(this);
}

void CChat::RenderEntry(const char* szText, CRect rect, D3DCOLOR color) {
    ((void(__thiscall*)(CChat*, const char*, CRect, D3DCOLOR))GetAddress(0x67430))(this, szText, rect, color);
}

void CChat::Log(int nType, const char* szText, const char* szPrefix) {
    ((void(__thiscall*)(CChat*, int, const char*, const char*))GetAddress(0x67790))(this, nType, szText, szPrefix);
}

void CChat::ResetDialogControls(CDXUTDialog* pGameUi) {
    ((void(__thiscall*)(CChat*, CDXUTDialog*))GetAddress(0x67860))(this, pGameUi);
}

void CChat::Render() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67900))(this);
}

void CChat::AddEntry(int nType, const char* szText, const char* szPrefix, D3DCOLOR textColor, D3DCOLOR prefixColor) {
    ((void(__thiscall*)(CChat*, int, const char*, const char*, D3DCOLOR, D3DCOLOR))GetAddress(0x67BA0))(this, nType, szText, szPrefix, textColor, prefixColor);
}

void CChat::Draw() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67DC0))(this);
}

void CChat::RenderToSurface() {
    ((void(__thiscall*)(CChat*))GetAddress(0x67E90))(this);
}
 
Joined
Jan 12, 2019
Messages
6
Reaction score
5
0.3.7 R4 by S E V E N
CInput:

C++:
CInput::CInput(IDirect3DDevice9* pDevice) {
    ((void(__thiscall*)(CInput*, IDirect3DDevice9*))GetAddress(0x69390))(this, pDevice);
}

void CInput::GetRect(CRect* pRect) {
    ((void(__thiscall*)(CInput*, CRect*))GetAddress(0x69400))(this, pRect);
}

void CInput::Open() {
    ((void(__thiscall*)(CInput*))GetAddress(0x69440))(this);
}

void CInput::Close() {
    ((void(__thiscall*)(CInput*))GetAddress(0x69540))(this);
}

void CInput::AddRecall(const char* szString) {
    ((void(__thiscall*)(CInput*, const char*))GetAddress(0x69590))(this, szString);
}

void CInput::RecallUp() {
    ((void(__thiscall*)(CInput*))GetAddress(0x695F0))(this);
}

void CInput::RecallDown() {
    ((void(__thiscall*)(CInput*))GetAddress(0x69660))(this);
}

void CInput::EnableCursor() {
    ((void(__thiscall*)(CInput*))GetAddress(0x696B0))(this);
}

CMDPROC CInput::GetCommandHandler(const char* szName) {
    return ((CMDPROC(__thiscall*)(CInput*, const char*))GetAddress(0x696D0))(this, szName);
}

void CInput::SetDefaultCommand(CMDPROC proc) {
    ((void(__thiscall*)(CInput*, CMDPROC))GetAddress(0x69720))(this, proc);
}

void CInput::AddCommand(const char* szName, CMDPROC handler) {
    ((void(__thiscall*)(CInput*, const char*, CMDPROC))GetAddress(0x69730))(this, szName, handler);
}

BOOL CInput::MsgProc(int uMsg, int wParam, int lParam) {
    return ((BOOL(__thiscall*)(CInput*, int, int, int))GetAddress(0x69790))(this, uMsg, wParam, lParam);
}

void CInput::ResetDialogControls(CDXUTDialog* pGameUi) {
    ((void(__thiscall*)(CInput*, CDXUTDialog*))GetAddress(0x69800))(this, pGameUi);
}

void CInput::Send(const char* szString) {
    ((void(__thiscall*)(CInput*, const char*))GetAddress(0x698C0))(this, szString);
}

void CInput::ProcessInput() {
    ((void(__thiscall*)(CInput*))GetAddress(0x69990))(this);
}
CDeathWindow (killlist):

C++:
CDeathWindow::CDeathWindow(IDirect3DDevice9* pDevice) {
    ((void(__thiscall*)(CDeathWindow*, IDirect3DDevice9*))GetAddress(0x6A610))(this, pDevice);
}

CDeathWindow::~CDeathWindow() {
    ((void(__thiscall*)(CDeathWindow*))GetAddress(0x69AFD))(this);
}

void CDeathWindow::InitializeAuxFonts() {
    ((void(__thiscall*)(CDeathWindow*))GetAddress(0x69B70))(this);
}

void CDeathWindow::PushBack() {
    ((void(__thiscall*)(CDeathWindow*))GetAddress(0x69BE0))(this);
}

void CDeathWindow::DrawText(const char* szText, CRect rect, D3DCOLOR color, int nFormat) {
    ((void(__thiscall*)(CDeathWindow*, const char*, CRect, D3DCOLOR, int))GetAddress(0x69C00))(this, szText, rect, color, nFormat);
}

void CDeathWindow::DrawWeaponSprite(const char* szSpriteId, CRect rect, D3DCOLOR color) {
    ((void(__thiscall*)(CDeathWindow*, const char*, CRect, D3DCOLOR))GetAddress(0x69D00))(this, szSpriteId, rect, color);
}

void CDeathWindow::GetWeaponSpriteRectSize(void* pPoint) {
    ((void(__thiscall*)(CDeathWindow*, void*))GetAddress(0x69D90))(this, pPoint);
}

const char* CDeathWindow::GetWeaponSpriteId(char nWeapon) {
    return ((const char*(__thiscall*)(CDeathWindow*, char))GetAddress(0x69E10))(this, nWeapon);
}

void CDeathWindow::ResetFonts() {
    ((void(__thiscall*)(CDeathWindow*))GetAddress(0x6A110))(this);
}

void CDeathWindow::Draw() {
    ((void(__thiscall*)(CDeathWindow*))GetAddress(0x6A2A0))(this);
}

void CDeathWindow::AddEntry(const char* szKiller, const char* szVictim, D3DCOLOR killerColor, D3DCOLOR victimColor, char nWeapon) {
    ((void(__thiscall*)(CDeathWindow*, const char*, const char*, D3DCOLOR, D3DCOLOR, char))GetAddress(0x6A590))(this, szKiller, szVictim, killerColor, victimColor, nWeapon);
}

void CDeathWindow::AddMessage(const char* szKiller, const char* szVictim, D3DCOLOR killerColor, D3DCOLOR victimColor, char nWeapon) {
    ((void(__thiscall*)(CDeathWindow*, const char*, const char*, D3DCOLOR, D3DCOLOR, char))GetAddress(0x6A670))(this, szKiller, szVictim, killerColor, victimColor, nWeapon);
}
 

Daslee

Member
Joined
Jun 3, 2013
Messages
9
Reaction score
1
Couple 0.3.7 R4 offsets (I will update my post if I find more):

pPools (in stSAMP struct) offset is 0x3DE
pTextdraw (textdraw pool pointer in stSAMPPools struct) offset is 0x20

I see you guys posting different addresses for 0.3.7 R4 samp version functions, so this is addresses that I use and I guarantee that it works 100% in R4 version:
Code:
SAMP_FUNC_ADDCLIENTCMD    0x69730
SAMP_FUNC_ADDTOCHATWND    0x67BA0
SAMP_FUNC_SAY            0x05A00
SAMP_FUNC_SAY_CMD        0x69590

Maybe anyone have offsets for object pool and/or player pool of 0.3.7 R4 version?
 

Parazitas

God
Staff member
Joined
Jan 2, 2017
Messages
3,315
Solutions
7
Reaction score
935
Location
Lithuania
R4
PHP:
SAMP_ST_INFO_OFFSET 0x26EA0C
SAMP_ST_POOLS_OFFSET 0x3DE
SAMP_ST_PLAYER_POOLS_OFFSET 0x8
SAMP_ST_TEXTDRAW_POOLS_OFFSET 0x20
 
Last edited:

SIGKILL

Active member
Joined
Apr 29, 2020
Messages
38
Reaction score
23
Location
Earth
R4

C++:
SET_FPS_LIMIT = samp.dll + 0x68890 (void SetFPSLimit(char *value))
TOGGLE_DEBUG_LABELS = samp.dll + 0x26EA30 (1 byte set to 0 or 1)
 
Last edited:

Parazitas

God
Staff member
Joined
Jan 2, 2017
Messages
3,315
Solutions
7
Reaction score
935
Location
Lithuania
R4

C++:
#define SAMP_MISC_INFO                                0x26EA24 
#define SAMP_FUNC_TOGGLECURSOR                        0xA0720
#define SAMP_FUNC_CURSORUNLOCKACTORCAM                0xA0600

DL

C++:
#define SAMP_MISC_INFO                                0x2ACA3C 
#define SAMP_FUNC_TOGGLECURSOR                        0xA0530
#define SAMP_FUNC_CURSORUNLOCKACTORCAM                0xA0410
 
Last edited:

SIGKILL

Active member
Joined
Apr 29, 2020
Messages
38
Reaction score
23
Location
Earth
R4
C++:
USER_FILES_PATH = samp.dll + 0xC3AE0  (char* GetUserFilesPath())

There are some extra commands like /set_weather or /set_time. To unlock these you can apply a patch to samp.dll because upon startup these aren't registered unless you start samp_debug.exe . There are other ways to get them to work (involving calling the RegisterCommand function manually) but I'm not going to address that here. To apply a patch use a hex editor and open samp.dll, navigate to this offset: 0x6920D. You'll find a JZ instruction, or in hex it'll look like: 74 7e. There are a couple of ways to change this instruction so the commands get registered when you start SA-MP. What I have done is change the instruction into a JMP so the commands get registered regardless of being in debug mode or not. So to get to the point, you have to change 74 7e into eb 7e and then overwrite samp.dll. Restart the game and enjoy using these commands. Just to be clear, I only tested this on R4 and I can't be bothered doing it for other versions, maybe @Parazitas has interest :D
 
Last edited:

Parazitas

God
Staff member
Joined
Jan 2, 2017
Messages
3,315
Solutions
7
Reaction score
935
Location
Lithuania
0.3.7 R4 - v2

C++:
#define SAMP_INFO_OFFSET                  0x26EA0C
#define SAMP_PPOOLS_OFFSET                0x3DE
#define SAMP_PPOOL_PLAYER_OFFSET          0x4
#define SAMP_REMOTEPLAYER_OFFSET          0x1F8A
#define SAMP_REMOTEPLAYER_DATA_OFFSET      0x10
#define SAMP_REMOTEPLAYER_DATA_ACTOR_OFFSET       0x1DD
#define SAMP_REMOTEPLAYER_DATA_HEATLH_OFFSET      0x1B0
#define SAMP_REMOTEPLAYER_DATA_ARMOR_OFFSET       0x1AC
#define SAMP_REMOTEPLAYER_DATA_STRUCT_OFFSET      0x40
#define SAMP_REMOTEPLAYER_DATA_HANDLE_OFFSET      0x44
 
Last edited:

Parazitas

God
Staff member
Joined
Jan 2, 2017
Messages
3,315
Solutions
7
Reaction score
935
Location
Lithuania
0.3.7 R4 - v2

C++:
#define SAMP_DISABLE_NAMETAGS = samp.dll + 0x75390
#define SAMP_DISABLE_NAMETAGS_HP = samp.dll + 0x74270
 

SIGKILL

Active member
Joined
Apr 29, 2020
Messages
38
Reaction score
23
Location
Earth
More offsets for R4-2. I don't keep up with the way people name these things so you'll have to see for yourself.

C++:
ADDR_FUNC_REGISTER_COMMAND           = samp.dll + 0x69770
ADDR_FUNC_SEND_DEBUG                 = samp.dll + 0x67BE0
ADDR_FUNC_SEND_LOCAL                 = samp.dll + 0x68070
ADDR_FUNC_SEND_CHAT                  = samp.dll + 0x05A10
ADDR_FUNC_SEND_COMMAND               = samp.dll + 0x69900
ADDR_FUNC_CHATLOG_WRITE              = samp.dll + 0x677D0
ADDR_FUNC_SET_FPS_LIMIT              = samp.dll + 0x688D0
ADDR_FUNC_TOGGLE_CURSOR              = samp.dll + 0x696F0
ADDR_FUNC_GET_USER_FILES_PATH        = samp.dll + 0xC3B10
ADDR_FUNC_TOGGLE_INPUT_STATE         = samp.dll + 0xA0750
ADDR_FUNC_CURSOR_UNLOCK_ACTOR_CAM    = samp.dll + 0xA0630
ADDR_FUNC_RAK_CLIENT_RECEIVE         = samp.dll + 0x35200
ADDR_FUNC_RAK_HANDLE_RPC             = samp.dll + 0x3ADE0
 
Top