Разные адреса samp.dll 0.3x R1

Статус
В этой теме нельзя размещать новые ответы.

MogAika

Известный
Автор темы
Друг
237
441
Копаюсь в этой версии с даты её выхода, выкладываю некоторые возможности. Возможно 90% не имеют полезного назначения, но все же.
Если кому будет надо, продолжу более сложными вещами
Все адреса относительно samp_base!
  • Сделать скриншот:
    Вызов функции: 0x85590 ; void __cdecl TakinScreenshot()
    Либо запись еденицы по: 0x113CEC (1 байт) (самп проверяет это значение, если оно не ноль, то скринит)
  • Открыть окно помощи (Которое на F1)
    Вызов функции 0x7C150 ; void __cdecl CHelpDialog__Show()
  • Сохранить позицию игрока в файл:
    для savedpositions.txt: 0x79D40 ; void __cdecl savePoseInFile(), для rawvehicles.txt: 79EC0 ; void __cdecl savePoseInFileRaw()
  • Установить pagesize:
    вызвать: 0x79A80 ; void __cdecl SetPageSize(char *szPageSize)
    где szPageSize - это строка с нужным значением
  • Управление /dl:
    0x212A58 (1 байт) - вкл/выкл - можно читать и писать
    0xCD7CC (4 байта float) - расстояние
  • Выйти из игры:
    Функция: 0xAC310 ; void __cdecl Quit()
  • Формат чата:
    указатель на строку "[%H:%M:%S]"(для timestamp): 0x78F8C
  • Рисовать дебаг информацию:
    Вызов функции: 0x5AA10 ; char __thiscall DrawDebugInfo(void *this)Для структуры, указатель которой хранится по адресу 0x212A10
Есть указатели на более интересные вещи, но их тут в 2х словах не опишешь.
Кто знает еще адреса, могут оставить их ниже.
 

gcode

нестандартное звание звание звание звание звани...
Друг
789
357
О блин какая тут есть полезная штука :) Спасибо.
Правда при записи значений в дистанцию /dl - оно просто пропадает :(
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,459
Правда при записи значений в дистанцию /dl - оно просто пропадает :(

Страдал вчера херней... но работает ведь:
Код:
:SetDistanceDL // 0AB1: @SetDistanceDL 1 1000
0093: 2@ = integer 0@ to_float
 
1@ = SAMP.Base()
1@ += 0xCD7CC
 
0A8C: write_memory 1@ size 4 value 2@ virtual_protect 1
0AB2: 0

Код:
{$CLEO}
 
var
    1@ : float
    5@ : int
end
 
0000:
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
if 8AF7: get_samp_base_to 33@
then 0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
wait 0
reg_cmd "ldl" @cmd
 
0B80: samp 0@ = create_dialog "DeLimiter: /dl"
SAMP.GetScreenResolution(1@, 2@)
1@ /= 2
2@ /= 2
1@ -= 128
2@ -= 64
 
0B84: samp dialog 0@ set_pos_XY 1@ 2@ size 256 128
0B82: samp dialog 0@ add_button id 1 text "Закрыть" pos_XY 64 72 size 128 24
0B88: samp dialog 0@ add_editbox id 2 text "nil" pos_XY 64 8 size 128 40
 
0B96: samp dialog 0@ add_slider id 3 pos_XY 64 46 size 128 32 max 1000
0B98: samp dialog 0@ slider 3 set_value_to 20
0AB1: @SetValueBox 3 Dialog 0@ control 2 value 20.0
 
0B82: samp dialog 0@ add_button id 4 text "0" pos_XY 36 8 size 24 24
Dialog.SetVisible(0@, 0)
 
while true
    wait 0
    if Dialog.IsVisible(0@)
    then
        SAMP.ToggleCursor(1)
        if 0B81: samp dialog 0@ pop_event_to 3@ control_id_to 4@
        then
            if 4@ == 3
            then
                if 3@ == 0x501
                then
                    0B97: samp dialog 0@ slider 3 get_value_to 5@
                    0093: 1@ = integer 5@ to_float
                    0AB1: @SetValueBox 3 Dialog 0@ control 2 value 1@
                end
            end
           
            if 3@ == 0x0101
            then
                if 4@ == 1
                then
                    Dialog.SetVisible(0@, 0)
                    SAMP.ToggleCursor(0)
                   
                    0B97: samp dialog 0@ slider 3 get_value_to 5@
                    0AB1: @SetDistanceDL 1 Value 5@
                end
               
                if 4@ == 4                                                                                                         
                then
                    0B98: samp dialog 0@ slider 3 set_value_to 20
                    0AB1: @SetValueBox 3 Dialog 0@ control 2 value 20.0
                end
            end
        end
    end
end
 
:SetValueBox
0AC8: 3@ 4
0AD3: 3@ = "%.1f" 2@
0B94: samp dialog 0@ set_control 1@ text_to 3@
0AC9: 3@
0AB2: 0
 
/* EVENT_BUTTON_CLICKED 0x0101
EVENT_COMBOBOX_SELECTION_CHANGED 0x0201
EVENT_RADIOBUTTON_CHANGED 0x0301
EVENT_CHECKBOX_CHANGED 0x0401
EVENT_SLIDER_VALUE_CHANGED 0x0501
EVENT_EDITBOX_STRING 0x0601
EVENT_EDITBOX_CHANGE 0x0602
EVENT_LISTBOX_ITEM_DBLCLK 0x0701
EVENT_LISTBOX_SELECTION 0x0702 */
 
:cmd
if Dialog.IsVisible(0@)
then
    Dialog.SetVisible(0@, 0)
    SAMP.ToggleCursor(0)
else
    Dialog.SetVisible(0@, 1)
    SAMP.ToggleCursor(1)
end
SAMP.CmdRet()
 
:SetDistanceDL
0093: 2@ = integer 0@ to_float
 
1@ = SAMP.Base()
1@ += 0xCD7CC
 
0A8C: write_memory 1@ size 4 value 2@ virtual_protect 1
0AB2: 0
 

gcode

нестандартное звание звание звание звание звани...
Друг
789
357
Страдал вчера херней... но работает ведь:
Код:
:SetDistanceDL // 0AB1: @SetDistanceDL 1 1000
0093: 2@ = integer 0@ to_float
 
1@ = SAMP.Base()
1@ += 0xCD7CC
 
0A8C: write_memory 1@ size 4 value 2@ virtual_protect 1
0AB2: 0

Код:
{$CLEO}
 
var
    1@ : float
    5@ : int
end
 
0000:
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
if 8AF7: get_samp_base_to 33@
then 0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
wait 0
reg_cmd "ldl" @cmd
 
0B80: samp 0@ = create_dialog "DeLimiter: /dl"
SAMP.GetScreenResolution(1@, 2@)
1@ /= 2
2@ /= 2
1@ -= 128
2@ -= 64
 
0B84: samp dialog 0@ set_pos_XY 1@ 2@ size 256 128
0B82: samp dialog 0@ add_button id 1 text "Закрыть" pos_XY 64 72 size 128 24
0B88: samp dialog 0@ add_editbox id 2 text "nil" pos_XY 64 8 size 128 40
 
0B96: samp dialog 0@ add_slider id 3 pos_XY 64 46 size 128 32 max 1000
0B98: samp dialog 0@ slider 3 set_value_to 20
0AB1: @SetValueBox 3 Dialog 0@ control 2 value 20.0
 
0B82: samp dialog 0@ add_button id 4 text "0" pos_XY 36 8 size 24 24
Dialog.SetVisible(0@, 0)
 
while true
    wait 0
    if Dialog.IsVisible(0@)
    then
        SAMP.ToggleCursor(1)
        if 0B81: samp dialog 0@ pop_event_to 3@ control_id_to 4@
        then
            if 4@ == 3
            then
                if 3@ == 0x501
                then
                    0B97: samp dialog 0@ slider 3 get_value_to 5@
                    0093: 1@ = integer 5@ to_float
                    0AB1: @SetValueBox 3 Dialog 0@ control 2 value 1@
                end
            end
         
            if 3@ == 0x0101
            then
                if 4@ == 1
                then
                    Dialog.SetVisible(0@, 0)
                    SAMP.ToggleCursor(0)
                 
                    0B97: samp dialog 0@ slider 3 get_value_to 5@
                    0AB1: @SetDistanceDL 1 Value 5@
                end
             
                if 4@ == 4                                                                                                       
                then
                    0B98: samp dialog 0@ slider 3 set_value_to 20
                    0AB1: @SetValueBox 3 Dialog 0@ control 2 value 20.0
                end
            end
        end
    end
end
 
:SetValueBox
0AC8: 3@ 4
0AD3: 3@ = "%.1f" 2@
0B94: samp dialog 0@ set_control 1@ text_to 3@
0AC9: 3@
0AB2: 0
 
/* EVENT_BUTTON_CLICKED 0x0101
EVENT_COMBOBOX_SELECTION_CHANGED 0x0201
EVENT_RADIOBUTTON_CHANGED 0x0301
EVENT_CHECKBOX_CHANGED 0x0401
EVENT_SLIDER_VALUE_CHANGED 0x0501
EVENT_EDITBOX_STRING 0x0601
EVENT_EDITBOX_CHANGE 0x0602
EVENT_LISTBOX_ITEM_DBLCLK 0x0701
EVENT_LISTBOX_SELECTION 0x0702 */
 
:cmd
if Dialog.IsVisible(0@)
then
    Dialog.SetVisible(0@, 0)
    SAMP.ToggleCursor(0)
else
    Dialog.SetVisible(0@, 1)
    SAMP.ToggleCursor(1)
end
SAMP.CmdRet()
 
:SetDistanceDL
0093: 2@ = integer 0@ to_float
 
1@ = SAMP.Base()
1@ += 0xCD7CC
 
0A8C: write_memory 1@ size 4 value 2@ virtual_protect 1
0AB2: 0
Я в цикле записывал значение 1500.0 и 200.0
При вводе /dl просто ничего не происходило :) Ща попробую не в цикле записывать, а единоразово.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,459
Есть адрес для вызова дебаг информации, та, которая на F5?
 

FYP

Известный
Администратор
1,758
5,726
short __cdecl GetAnimationIDByName( char *pszFile, char *pszAnim ) = 0x605A0
char * __cdecl GetAnimNameByID( short sAnimId ) = 0x60680

samp.dll+2E1E0 - RakClient::Connect
samp.dll+3C660 - RakPeer::Initialize
samp.dll+B0D28 - _beginthreadex
samp.dll+3C5C0 - UpdateNetworkLoop
samp.dll+3B2C0 - RakPeer::RunUpdateCycle
samp.dll+3D8A0 - RakSleep
samp.dll+36950 - RakPeer::SendImmediate
samp.dll + 0x19430 - kyretardizeDatagram
samp.dll + 0x4D790 - SocketLayer::SendTo
samp.dll + 0x4D6E0 - SocketLayer::RecvFrom
samp.dll + 0x391D0 - ProcessNetworkPacket
_RPCNode * ( __thiscall * GetNodeFromIndex )( DWORD _this, int rpcId ) = ( _RPCNode * ( __thiscall * )( DWORD, int ) ) ( g_dwSAMP_Addr + 0x4B360 );

DWORD pCFontRenderObj = * ( DWORD * ) ( g_dwSAMP_Addr + 0x212A3C );
DWORD func = g_dwSAMP_Addr + 0x7B950; // CFontRender::RenderText( DWORD unk, char *str, RECT rect, DWORD color, DWORD unk );

( void ( __thiscall * SAMP_EditObject )( void *_this, UINT sampObjectId, bool unknown ) ) ( g_dwSAMP_Addr + 0x82490 ); // _this = *( DWORD *)( g_dwSAMP_Addr + 0x212A04 ) /* CObjectEditor? */
 

ASUS

Новичок
10
7
Все, приведенное выше, но на 0.3z:
  • Сделать скрин:
Вызов функции: 0x869F0 ; void __cdecl TakinScreenshot()
  • Открыть окно помощи (Которое на F1)
Вызов функции 0x7D4F0 ; void __cdecl CHelpDialog__Show()
  • Сохранить позицию игрока в файл:
для savedpositions.txt: 0x7B0C0 ; void __cdecl savePoseInFile(), для rawvehicles.txt: 0x7B240 ; void __cdecl savePoseInFileRaw()
  • Установить pagesize:
вызвать: 0x7AE00 ; void __cdecl SetPageSize(char *szPageSize)
где szPageSize - это строка с нужным значением
  • Управление /dl:
0x212AA0 (1 байт) - вкл/выкл - можно читать и писать
0xCE7CC (4 байта float) - расстояние
  • Выйти из игры:
Функция: 0xAD770 ; void __cdecl Quit()

  • Формат чата:
указатель на строку "[%H:%M:%S]"(для timestamp): 0x7A125
  • Рисовать дебаг информацию:
Вызов функции: 0x5AE50 ; char __thiscall DrawDebugInfo(void *this) Для структуры, указатель которой хранится по адресу 0x212A58

short __cdecl GetAnimationIDByName( char *pszFile, char *pszAnim ) = 0x609E0
char * __cdecl GetAnimNameByID( short sAnimId ) = 0x60AC0
samp.dll+2E2A0 - RakClient::Connect
samp.dll+B2188 - _beginthreadex
samp.dll+3C900 - UpdateNetworkLoop
samp.dll+3B600 - RakPeer::RunUpdateCycle
samp.dll+3DC40 - RakSleep
samp.dll+38130 - RakPeer::SendImmediate
samp.dll+19810 - kyretardizeDatagram
samp.dll+4DBD0 - SocketLayer::SendTo
samp.dll+4DB20 - SocketLayer::RecvFrom
samp.dll+394E0 - ProcessNetworkPacket
_RPCNode * ( __thiscall * GetNodeFromIndex )( DWORD _this, int rpcId ) = ( _RPCNode * ( __thiscall * )( DWORD, int ) ) ( g_dwSAMP_Addr + 0x4B7A0 );
DWORD pCFontRenderObj = * ( DWORD * ) ( g_dwSAMP_Addr + 0x212A84 );
DWORD func = g_dwSAMP_Addr + 0x7CCF0; // CFontRender::RenderText( DWORD unk, char *str, RECT rect, DWORD color, DWORD unk );
( void ( __thiscall * SAMP_EditObject )( void *_this, UINT sampObjectId, bool unknown ) ) ( g_dwSAMP_Addr + 0x83880 ); // _this = *( DWORD *)( g_dwSAMP_Addr + 0x212A4C ) /* CObjectEditor? */
 
Статус
В этой теме нельзя размещать новые ответы.