Декомпиляция скриптов

FYP

Известный
Автор темы
Администратор
1,763
5,904
GVWUrNJ.png
eNo5cSj.png


Общая тема для просьб о помощи в декомпиляциии и декриптованиии скриптов, плагинов и приложений.
Запрещено просить о декомпиляции/декриптовании софта, выставленного на продажу на нашем сайте.

Рекомендации:
  1. Сначала воспользуйтесь поиском по теме и по форуму, возможно его в декомпилированном виде или с исходным кодом уже выкладывали у нас на сайте.
  2. Попытайтесь декомпилировать самостоятельно: CLEO - декриптор, декомпилятор; AHK - распаковщик .exe; LuaJIT - декомпилятор1, декомпилятор2.
  3. Просить о декомпиляции .asi, .sf, .dll, .exe почти бесполезно, часто такие просьбы остаются без ответа и вряд ли вам это что-то даст. Можете попробовать сами, IDA Pro или Ghidra к вашим услугам.
    • Это не касается .exe, которые являются скомпилированными AutoHotKey-скриптами (.ahk).
  4. Добавьте название скрипта к сообщению, если оно известно - это поможет другим пользователям найти его с помощью поиска.
  5. Сообщения по типу "спасибо, помог" по правилам форума считаются флудом и скорее всего будут удалены. Если вам помогли, вы можете нажать кнопку Мне нравится под ответом - это даст понять, что ответ верный.
 
Последнее редактирование:

midnight.exe

Участник
121
13
Код:
{$INCLUDE SF}
0000:
thread "@astap"
                              
0662: 0.ResourseFinder " "                                                                                                                                                             
0662: 0.Made_by_astap_ " "                                                                                                                                                                 
0662: 0.BlastHack.Net  " "                                                                                                                                                     

if 8AAB:   file_exists "CLEO\rwh.ini"
then
    0AF1: write_int 1 to_ini_file "cleo\rwh.ini" section "Settings" key "RenderStone"
    0AF1: write_int 1 to_ini_file "cleo\rwh.ini" section "Settings" key "AntiReset"
    0AF1: write_int 1 to_ini_file "cleo\rwh.ini" section "Settings" key "ResourceNotification"
end                                                                                       
0AF0: 11@ = get_int_from_ini_file "cleo\rwh.ini" section "Settings" key "RenderStone"
0AF0: 21@ = get_int_from_ini_file "cleo\rwh.ini" section "Settings" key "ResourceNotification"

while not SAMP.Available()
    wait 0
end
0C6A: 16@ = create_custom_thread_at_label @wanted
if 21@ == 1
then
    0C6A: 10@ = create_custom_thread_at_label @3dtextHOOK
end
27@ = Render.CreateFont("Arial", 9, 5)
0B6C: render 9@ = font 27@ draw_height
0b34: cmd "rwh" to_label @rwh

while 8B61:  samp is_local_player_spawned
    wait 0
end
CHATMSG "{ffcc00}[Resource Finder 2.0]{FFFFFF}: успешно загружен! {ffcc00}Используйте:{FFFFFF} /rwh." -1
CHATMSG "{ffcc00}[Resource Finder 2.0]{FFFFFF}: Разработчик: {ffcc00}astap{FFFFFF}." -1

while true
    wait 0
    if 31@ == true
    then
        for 0@ = 1000 to 1200
            if 0B46:     samp 3d_text 0@ defined
            then
                0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 0 position 28@ 29@ 30@ view_distance 0 show_behind_walls 0 attached_to_player 0 attached_to_vehicle 0
                Actor.StorePos($PLAYER_ACTOR 22@ 23@ 24@)
                0B55: convert_3D_coords 22@ 23@ 24@ to_screen 20@ 21@
                050A: 19@ = distance_between_XYZ 22@ 23@ 24@ and_XYZ 28@ 29@ 30@
                
                alloc 18@ 24
                format 18@ = "DIST: %2.f" 19@
                
                alloc 2@ 256
                format 2@ = "%s" 1@
                                
                if 00C2:   sphere_onscreen 28@ 29@ 30@ radius 0.0
                then
                
                    if 0C18: 3@ = strstr string1 2@ string2 "золота"
                    then
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFFffcc00)
                        Render.DrawText(27@ , "[GOLD]" 25@ 26@ 0xFFffcc00)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFFffcc00)
                    end
                
                    if 0C18: 3@ = strstr string1 2@ string2 "металла"
                    then                 
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFF86877F)
                        Render.DrawText(27@ , "[METAL]" 25@ 26@ 0xFF86877F)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFF86877F)
                    end                 
                    
                    if 0C18: 3@ = strstr string1 2@ string2 "бронзы"
                    then
            
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFFa54e22)
                        Render.DrawText(27@ , "[BRONZE]" 25@ 26@ 0xFFa54e22)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFFa54e22)
                    end
                    
                    if 0C18: 3@ = strstr string1 2@ string2 "серебра"
                    then                 
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFF42f4df)
                        Render.DrawText(27@ , "[SILVER]" 25@ 26@ 0xFF42f4df)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFF42f4df)
                    end
                    
                    if and
                    0C18: 3@ = strstr string1 2@ string2 "камня"
                    11@ == 1
                    then             
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFFFFFFFF)
                        Render.DrawText(27@ , "[STONE]" 25@ 26@ 0xFFFFFFFF)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFFFFFFFF)
                    end
                    free 2@
                    free 18@
                    
                else
                    free 2@
                    free 18@       
                end
            end
        end
    end
end


:teleport
0BE3: raknet setup_incoming_rpc_hook @sppHook
4@ = 0
while true
wait 0
    for 0@ = 1000 to 1200
        if 0B46:     samp 3d_text 0@ defined
        then
            0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 0 position 28@ 29@ 30@ view_distance 0 show_behind_walls 0 attached_to_player 0 attached_to_vehicle 0   
            alloc 2@ 256
            format 2@ = "%s" 1@
                
            if
            0C18: 3@ = strstr string1 2@ string2 "золота"
            then
                free 2@
                Actor.StorePos($PLAYER_ACTOR, 11@ 12@ 13@)
                050A: 8@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 28@ 29@ 30@
                chatmsg "• Вижу {ffcc00}золото (ID: %i){FFFFFF}! Дистанция: {ffcc00}%2.f м.{FFFFFF} Нажмите {ffcc00}F9{FFFFFF} для телепортации." -1 0@ 8@                   
                018C: SOUND 1139 0.0 0.0 0.0
                
                while true
                    wait 1
                    4@ += 1
                    if 4@ == 1000
                    then
                         goto @teleport
                    end
                    if 0c89: 120
                    then
                        0C83: samp force_onfoot_sync
                        break // teleport confirmed!
                    end
                end
                
            9@ = TRUE // hook incoming RPC
            Player.CanMove($PLAYER_ACTOR) = false
            
            if Actor.Driving($PLAYER_ACTOR)                                                                                                   
            then
                0792: disembark_instantly_actor $PLAYER_ACTOR
            end
            
            04D7: set_actor $PLAYER_ACTOR locked 1
            04E4: refresh_game_renderer_at 11@ 12@
            03CB: set_rendering_origin_at 11@ 12@ 13@
            Actor.StorePos($PLAYER_ACTOR , 5@ 6@ 7@)
            
            while 0031:   not  7@ >= -100.0
                7@ -= 0.94
                call @emulFalling 3 5@ 6@ 7@
                if Actor.Driving($PLAYER_ACTOR)
                then
                    0792: disembark_instantly_actor $PLAYER_ACTOR
                end
            end
        
            call @emulFalling 3 5@ 6@ -101.0
            04E4: refresh_game_renderer_at 11@ 12@
            03CB: set_rendering_origin_at 11@ 12@ 13@
            00A1: put_actor $PLAYER_ACTOR at 11@ 12@ 13@
            04BB: select_interior 0
            0860: link_actor $PLAYER_ACTOR to_interior 0
            0BCF: samp send_interior_change 0
            Player.CanMove($PLAYER_ACTOR) = true
            02EB: restore_camera_with_jumpcut
            
            for 26@ = 1 to 3 [step 1]
                0C83: samp force_onfoot_sync
            end
            print "~y~teleported" 1500
            
            21@ = FALSE
            Actor.PutAt($PLAYER_ACTOR 28@ 29@ 30@)
            wait 15000
            9@ = FALSE
            else
                free 2@
            end
        end
    end
end

:sppHook
0BE5: raknet 10@ = get_hook_param PARAM_PACKETID
    IF 9@ == TRUE
    THEN
        IF 10@ == RPC_SCRSETPLAYERPOS
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Внимание! RPC_SCRSETPLAYERPOS проигнорирован. {FFCC00}Возможен кик." 0xffcc00
            0BE0: raknet hook_ret FALSE   
        END
    END
0BE0: raknet hook_ret TRUE       
 
:info
0@ = Render.CreateFont("Arial", 10, 5)
0B60: convert_game_screen_coords x: 497.0 y: 98.0 to_window_screen_coords 1@ 2@
0B60: convert_game_screen_coords x: 536.0 y: 106.0 to_window_screen_coords 3@ 4@
0B60: convert_game_screen_coords x: 545.0 y: 114.0 to_window_screen_coords 5@ 6@
0B60: convert_game_screen_coords x: 494.0 y: 97.0 to_window_screen_coords 13@ 14@
0B60: convert_game_screen_coords x: 120.0 y: 28.0 to_window_screen_coords 15@ 16@
            
while true
    wait 0   
    call @GetLocalTime 0 7@ 8@ 9@
    alloc 10@ 124
    alloc 11@ 124
    alloc 12@ 124
    FORMAT 12@ = "{FFCC00}[{FFFFFF}%i{FFCC00}:{FFFFFF}%i{FFCC00}:{FFFFFF}%i{FFCC00}]" 7@ 8@ 9@
    format 10@ = "Resource{FFFFFF}Finder{FFCC00} v2.0 {FFFFFF}| {FFcc00}Developer: {FFFFFF}astap"
    format 11@ = "Blast{FFFFFF}Hack{FFcc00}.Net" 
    //0B6A: render draw_box_with_border_pos 13@ 14@ size 15@ 16@ color 0x50000000 border_size 1 border_color 0xffffcc00   
    Render.DrawText(0@ 10@ 1@ 2@ 0xFFFFCC00)
    Render.DrawText(0@ 11@ 3@ 4@ 0xFFFFCC00)
    Render.DrawText(0@ 12@ 5@ 6@ 0xFFFFCC00)
    free 10@
    free 11@
    free 12@
end
        

:GetLocalTime
0AA2: 0@ = load_library "kernel32.dll"
0AA4: 1@ = get_proc_address "GetLocalTime" library 0@
0AC8: 2@ = alloc mem 16
0AA5: call 1@ params 1 pop 0 2@
0085: 3@ = 2@

0A8D: 4@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 5@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 6@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 7@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 8@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 9@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 10@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 11@ = read mem 3@ size 2 vp 0

0AC9: free_allocated_memory 2@
ret 3 8@ 9@ 10@

:emulFalling
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0AC8: 4@ = allocate_memory_size 68
0BBA: samp store_player 3@ onfoot_data 4@
0C0D: struct 4@ offset 6 size 4 = 0@
0C0D: struct 4@ offset 10 size 4 = 1@
0C0D: struct 4@ offset 14 size 4 = 2@
0C0D: struct 4@ offset 38 size 4 = 0.0
0C0D: struct 4@ offset 42 size 4 = 0.0
0C0D: struct 4@ offset 46 size 4 = -0.939
0BC0: samp send_onfoot_data 4@
0AC9: free_allocated_memory 4@
0AB2: ret 0

:wanted
while true
    wait 0
    if 010F:   player $PLAYER_CHAR wanted_level > 0
    then
        010D: set_player $PLAYER_CHAR wanted_level_to 0
    end
end   

:rwh
0B12: 31@ = 31@ XOR 1
if 31@ == true
then
    print "resourse finder ~y~acivated!" 2000
    018C: SOUND 1083 0.0 0.0 0.0
    0C6A: 15@ = create_custom_thread_at_label @teleport
    0C6A: 12@ = create_custom_thread_at_label @info
    0C6A: 13@ = create_custom_thread_at_label @antiReset
end
if 31@ == false
then
    print "resourse finder ~r~deacivated!~n~~s~visit ~b~blast.hk" 2000
    018C: SOUND 1085 0.0 0.0 0.0
    0C6E: destroy_custom_thread 15@
    0C6E: destroy_custom_thread 13@
    0C6E: destroy_custom_thread 12@
end
CMDRET

:antiReset
0BE3: raknet setup_incoming_rpc_hook @ApplyAnimHook
call @prepare_animation_info 1 id 589 save_to lib 8@ name 9@
call @prepare_animation_info 1 id 39 save_to lib 10@ name 11@
call @prepare_animation_info 1 id 37 save_to lib 12@ name 13@
0AF0: 0@ = get_int_from_ini_file "cleo\rwh.ini" section "Settings" key "AntiReset"

repeat
    wait 0
until false

:ApplyAnimHook
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if and
1@ == RPC_SCRAPPLYANIMATION
0@ == 1
then
    0BE5: raknet 2@ = get_hook_param PARAM_BITSTREAM

    0BE7: raknet 3@ = bit_stream_read 2@ type BS_TYPE_SHORT
    4@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
    if 003B: 3@ == 4@
    then
        alloc 6@ 48
        alloc 7@ 48

        0BE7: raknet 5@ = bit_stream_read 2@ type BS_TYPE_BYTE // lib len
        0BE8: raknet bit_stream 2@ read_array 6@ size 5@ // lib string
        0C1E: array 6@ element 5@ el_size 1 = 0x0
      
        0BE7: raknet 5@ = bit_stream_read 2@ type BS_TYPE_BYTE // anim len
        0BE8: raknet bit_stream 2@ read_array 7@ size 5@ // anim string
        0C1E: array 7@ element 5@ el_size 1 = 0x0

        if and
            0C21: stricmp string1 6@ string2 12@
            0C21: stricmp string1 7@ string2 13@
        then
            free 6@
            free 7@
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Вам попытались сбить анимацию {FFCC00}(kiss){FFFFFF}, но скрипт этому помешал." 0xffcc00
            0BE0: raknet hook_ret false
        end
                
        if and
            0C21: stricmp string1 6@ string2 10@
            0C21: stricmp string1 7@ string2 11@
        then
            free 6@
            free 7@
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Вам попытались сбить анимацию {FFCC00}(kiss){FFFFFF}, но скрипт этому помешал." 0xffcc00
            0BE0: raknet hook_ret false
        end

        if and
            0C21: stricmp string1 6@ string2 8@
            0C21: stricmp string1 7@ string2 9@
        then
            free 6@
            free 7@
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Вам попытались сбить анимацию {FFCC00}(hi){FFFFFF}, но скрипт этому помешал." 0xffcc00
            0BE0: raknet hook_ret false
        end

        free 6@
        free 7@
    end
end
0BE0: raknet hook_ret true

:prepare_animation_info
alloc 1@ 48
alloc 2@ 48
0C11: memset 1@ value 0x0 size 48
0C11: memset 2@ value 0x0 size 48
0B58: samp get_animation_name_to 1@ file_to 2@ by_id 0@
ret 2 1@ 2@

:3dtextHOOK
0BE3: raknet setup_incoming_rpc_hook @hook

repeat
    wait 100
until false

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_SCRCREATE3DTEXTLABEL
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_SHORT{2} // id  16
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT{3}  // color 5       
        0BE7: raknet 4@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // posX 82
        0BE7: raknet 5@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // posY  114
        0BE7: raknet 6@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // posZ  146         
        0BE7: raknet 7@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // dist 178         
        0BE7: raknet 8@ = bit_stream_read 0@ type BS_TYPE_BYTE{1} // los?
        0BE7: raknet 9@ = bit_stream_read 0@ type BS_TYPE_SHORT{2} // player ID
        0BE7: raknet 10@ = bit_stream_read 0@ type BS_TYPE_SHORT{2} // car id? da
        alloc 11@ 1024
        0C11: memset 11@ 0 1024
        0BF4: raknet bit_stream 0@ decode_string 11@ size 1023
        IF 0C29: 31@ = stristr string1 11@ string2 "металла"
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Появился метал (ID: {86877F}%i{FFFFFF})." 0xffcc00 2@             
        END
        IF 0C29: 31@ = stristr string1 11@ string2 "серебра"
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Появилось серебро (ID: {42f4df}%i{FFFFFF})." 0xffcc00 2@               
        END
        IF 0C29: 31@ = stristr string1 11@ string2 "бронзы"
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Появилась бронза (ID: {a54e22}%i{FFFFFF})." 0xffcc00 2@             
        END
        free 11@
    END
      
0BE0: raknet hook_ret TRUE
 
  • Нравится
Реакции: Neykuratick

Neykuratick

Новичок
28
4
Код:
{$INCLUDE SF}
0000:
thread "@astap"
                             
0662: 0.ResourseFinder " "                                                                                                                                                            
0662: 0.Made_by_astap_ " "                                                                                                                                                                
0662: 0.BlastHack.Net  " "                                                                                                                                                    

if 8AAB:   file_exists "CLEO\rwh.ini"
then
    0AF1: write_int 1 to_ini_file "cleo\rwh.ini" section "Settings" key "RenderStone"
    0AF1: write_int 1 to_ini_file "cleo\rwh.ini" section "Settings" key "AntiReset"
    0AF1: write_int 1 to_ini_file "cleo\rwh.ini" section "Settings" key "ResourceNotification"
end                                                                                      
0AF0: 11@ = get_int_from_ini_file "cleo\rwh.ini" section "Settings" key "RenderStone"
0AF0: 21@ = get_int_from_ini_file "cleo\rwh.ini" section "Settings" key "ResourceNotification"

while not SAMP.Available()
    wait 0
end
0C6A: 16@ = create_custom_thread_at_label @wanted
if 21@ == 1
then
    0C6A: 10@ = create_custom_thread_at_label @3dtextHOOK
end
27@ = Render.CreateFont("Arial", 9, 5)
0B6C: render 9@ = font 27@ draw_height
0b34: cmd "rwh" to_label @rwh

while 8B61:  samp is_local_player_spawned
    wait 0
end
CHATMSG "{ffcc00}[Resource Finder 2.0]{FFFFFF}: успешно загружен! {ffcc00}Используйте:{FFFFFF} /rwh." -1
CHATMSG "{ffcc00}[Resource Finder 2.0]{FFFFFF}: Разработчик: {ffcc00}astap{FFFFFF}." -1

while true
    wait 0
    if 31@ == true
    then
        for 0@ = 1000 to 1200
            if 0B46:     samp 3d_text 0@ defined
            then
                0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 0 position 28@ 29@ 30@ view_distance 0 show_behind_walls 0 attached_to_player 0 attached_to_vehicle 0
                Actor.StorePos($PLAYER_ACTOR 22@ 23@ 24@)
                0B55: convert_3D_coords 22@ 23@ 24@ to_screen 20@ 21@
                050A: 19@ = distance_between_XYZ 22@ 23@ 24@ and_XYZ 28@ 29@ 30@
               
                alloc 18@ 24
                format 18@ = "DIST: %2.f" 19@
               
                alloc 2@ 256
                format 2@ = "%s" 1@
                               
                if 00C2:   sphere_onscreen 28@ 29@ 30@ radius 0.0
                then
               
                    if 0C18: 3@ = strstr string1 2@ string2 "золота"
                    then
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFFffcc00)
                        Render.DrawText(27@ , "[GOLD]" 25@ 26@ 0xFFffcc00)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFFffcc00)
                    end
               
                    if 0C18: 3@ = strstr string1 2@ string2 "металла"
                    then                
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFF86877F)
                        Render.DrawText(27@ , "[METAL]" 25@ 26@ 0xFF86877F)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFF86877F)
                    end                
                   
                    if 0C18: 3@ = strstr string1 2@ string2 "бронзы"
                    then
           
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFFa54e22)
                        Render.DrawText(27@ , "[BRONZE]" 25@ 26@ 0xFFa54e22)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFFa54e22)
                    end
                   
                    if 0C18: 3@ = strstr string1 2@ string2 "серебра"
                    then                
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFF42f4df)
                        Render.DrawText(27@ , "[SILVER]" 25@ 26@ 0xFF42f4df)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFF42f4df)
                    end
                   
                    if and
                    0C18: 3@ = strstr string1 2@ string2 "камня"
                    11@ == 1
                    then            
                        0B55: convert_3D_coords 28@ 29@ 30@ to_screen 25@ 26@
                        Render.DrawLine(20@, 21@, 25@, 26@, 1, 0xFFFFFFFF)
                        Render.DrawText(27@ , "[STONE]" 25@ 26@ 0xFFFFFFFF)
                        005a: 26@ += 9@
                        Render.DrawText(27@ , 18@ 25@ 26@ 0xFFFFFFFF)
                    end
                    free 2@
                    free 18@
                   
                else
                    free 2@
                    free 18@      
                end
            end
        end
    end
end


:teleport
0BE3: raknet setup_incoming_rpc_hook @sppHook
4@ = 0
while true
wait 0
    for 0@ = 1000 to 1200
        if 0B46:     samp 3d_text 0@ defined
        then
            0C46: samp get_3d_text_info_by_id 0@ string_ptr 1@ color 0 position 28@ 29@ 30@ view_distance 0 show_behind_walls 0 attached_to_player 0 attached_to_vehicle 0  
            alloc 2@ 256
            format 2@ = "%s" 1@
               
            if
            0C18: 3@ = strstr string1 2@ string2 "золота"
            then
                free 2@
                Actor.StorePos($PLAYER_ACTOR, 11@ 12@ 13@)
                050A: 8@ = distance_between_XYZ 11@ 12@ 13@ and_XYZ 28@ 29@ 30@
                chatmsg "• Вижу {ffcc00}золото (ID: %i){FFFFFF}! Дистанция: {ffcc00}%2.f м.{FFFFFF} Нажмите {ffcc00}F9{FFFFFF} для телепортации." -1 0@ 8@                  
                018C: SOUND 1139 0.0 0.0 0.0
               
                while true
                    wait 1
                    4@ += 1
                    if 4@ == 1000
                    then
                         goto @teleport
                    end
                    if 0c89: 120
                    then
                        0C83: samp force_onfoot_sync
                        break // teleport confirmed!
                    end
                end
               
            9@ = TRUE // hook incoming RPC
            Player.CanMove($PLAYER_ACTOR) = false
           
            if Actor.Driving($PLAYER_ACTOR)                                                                                                  
            then
                0792: disembark_instantly_actor $PLAYER_ACTOR
            end
           
            04D7: set_actor $PLAYER_ACTOR locked 1
            04E4: refresh_game_renderer_at 11@ 12@
            03CB: set_rendering_origin_at 11@ 12@ 13@
            Actor.StorePos($PLAYER_ACTOR , 5@ 6@ 7@)
           
            while 0031:   not  7@ >= -100.0
                7@ -= 0.94
                call @emulFalling 3 5@ 6@ 7@
                if Actor.Driving($PLAYER_ACTOR)
                then
                    0792: disembark_instantly_actor $PLAYER_ACTOR
                end
            end
       
            call @emulFalling 3 5@ 6@ -101.0
            04E4: refresh_game_renderer_at 11@ 12@
            03CB: set_rendering_origin_at 11@ 12@ 13@
            00A1: put_actor $PLAYER_ACTOR at 11@ 12@ 13@
            04BB: select_interior 0
            0860: link_actor $PLAYER_ACTOR to_interior 0
            0BCF: samp send_interior_change 0
            Player.CanMove($PLAYER_ACTOR) = true
            02EB: restore_camera_with_jumpcut
           
            for 26@ = 1 to 3 [step 1]
                0C83: samp force_onfoot_sync
            end
            print "~y~teleported" 1500
           
            21@ = FALSE
            Actor.PutAt($PLAYER_ACTOR 28@ 29@ 30@)
            wait 15000
            9@ = FALSE
            else
                free 2@
            end
        end
    end
end

:sppHook
0BE5: raknet 10@ = get_hook_param PARAM_PACKETID
    IF 9@ == TRUE
    THEN
        IF 10@ == RPC_SCRSETPLAYERPOS
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Внимание! RPC_SCRSETPLAYERPOS проигнорирован. {FFCC00}Возможен кик." 0xffcc00
            0BE0: raknet hook_ret FALSE  
        END
    END
0BE0: raknet hook_ret TRUE      

:info
0@ = Render.CreateFont("Arial", 10, 5)
0B60: convert_game_screen_coords x: 497.0 y: 98.0 to_window_screen_coords 1@ 2@
0B60: convert_game_screen_coords x: 536.0 y: 106.0 to_window_screen_coords 3@ 4@
0B60: convert_game_screen_coords x: 545.0 y: 114.0 to_window_screen_coords 5@ 6@
0B60: convert_game_screen_coords x: 494.0 y: 97.0 to_window_screen_coords 13@ 14@
0B60: convert_game_screen_coords x: 120.0 y: 28.0 to_window_screen_coords 15@ 16@
           
while true
    wait 0  
    call @GetLocalTime 0 7@ 8@ 9@
    alloc 10@ 124
    alloc 11@ 124
    alloc 12@ 124
    FORMAT 12@ = "{FFCC00}[{FFFFFF}%i{FFCC00}:{FFFFFF}%i{FFCC00}:{FFFFFF}%i{FFCC00}]" 7@ 8@ 9@
    format 10@ = "Resource{FFFFFF}Finder{FFCC00} v2.0 {FFFFFF}| {FFcc00}Developer: {FFFFFF}astap"
    format 11@ = "Blast{FFFFFF}Hack{FFcc00}.Net"
    //0B6A: render draw_box_with_border_pos 13@ 14@ size 15@ 16@ color 0x50000000 border_size 1 border_color 0xffffcc00  
    Render.DrawText(0@ 10@ 1@ 2@ 0xFFFFCC00)
    Render.DrawText(0@ 11@ 3@ 4@ 0xFFFFCC00)
    Render.DrawText(0@ 12@ 5@ 6@ 0xFFFFCC00)
    free 10@
    free 11@
    free 12@
end
       

:GetLocalTime
0AA2: 0@ = load_library "kernel32.dll"
0AA4: 1@ = get_proc_address "GetLocalTime" library 0@
0AC8: 2@ = alloc mem 16
0AA5: call 1@ params 1 pop 0 2@
0085: 3@ = 2@

0A8D: 4@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 5@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 6@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 7@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 8@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 9@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 10@ = read mem 3@ size 2 vp 0
3@ += 2
0A8D: 11@ = read mem 3@ size 2 vp 0

0AC9: free_allocated_memory 2@
ret 3 8@ 9@ 10@

:emulFalling
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0AC8: 4@ = allocate_memory_size 68
0BBA: samp store_player 3@ onfoot_data 4@
0C0D: struct 4@ offset 6 size 4 = 0@
0C0D: struct 4@ offset 10 size 4 = 1@
0C0D: struct 4@ offset 14 size 4 = 2@
0C0D: struct 4@ offset 38 size 4 = 0.0
0C0D: struct 4@ offset 42 size 4 = 0.0
0C0D: struct 4@ offset 46 size 4 = -0.939
0BC0: samp send_onfoot_data 4@
0AC9: free_allocated_memory 4@
0AB2: ret 0

:wanted
while true
    wait 0
    if 010F:   player $PLAYER_CHAR wanted_level > 0
    then
        010D: set_player $PLAYER_CHAR wanted_level_to 0
    end
end  

:rwh
0B12: 31@ = 31@ XOR 1
if 31@ == true
then
    print "resourse finder ~y~acivated!" 2000
    018C: SOUND 1083 0.0 0.0 0.0
    0C6A: 15@ = create_custom_thread_at_label @teleport
    0C6A: 12@ = create_custom_thread_at_label @info
    0C6A: 13@ = create_custom_thread_at_label @antiReset
end
if 31@ == false
then
    print "resourse finder ~r~deacivated!~n~~s~visit ~b~blast.hk" 2000
    018C: SOUND 1085 0.0 0.0 0.0
    0C6E: destroy_custom_thread 15@
    0C6E: destroy_custom_thread 13@
    0C6E: destroy_custom_thread 12@
end
CMDRET

:antiReset
0BE3: raknet setup_incoming_rpc_hook @ApplyAnimHook
call @prepare_animation_info 1 id 589 save_to lib 8@ name 9@
call @prepare_animation_info 1 id 39 save_to lib 10@ name 11@
call @prepare_animation_info 1 id 37 save_to lib 12@ name 13@
0AF0: 0@ = get_int_from_ini_file "cleo\rwh.ini" section "Settings" key "AntiReset"

repeat
    wait 0
until false

:ApplyAnimHook
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if and
1@ == RPC_SCRAPPLYANIMATION
0@ == 1
then
    0BE5: raknet 2@ = get_hook_param PARAM_BITSTREAM

    0BE7: raknet 3@ = bit_stream_read 2@ type BS_TYPE_SHORT
    4@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
    if 003B: 3@ == 4@
    then
        alloc 6@ 48
        alloc 7@ 48

        0BE7: raknet 5@ = bit_stream_read 2@ type BS_TYPE_BYTE // lib len
        0BE8: raknet bit_stream 2@ read_array 6@ size 5@ // lib string
        0C1E: array 6@ element 5@ el_size 1 = 0x0
     
        0BE7: raknet 5@ = bit_stream_read 2@ type BS_TYPE_BYTE // anim len
        0BE8: raknet bit_stream 2@ read_array 7@ size 5@ // anim string
        0C1E: array 7@ element 5@ el_size 1 = 0x0

        if and
            0C21: stricmp string1 6@ string2 12@
            0C21: stricmp string1 7@ string2 13@
        then
            free 6@
            free 7@
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Вам попытались сбить анимацию {FFCC00}(kiss){FFFFFF}, но скрипт этому помешал." 0xffcc00
            0BE0: raknet hook_ret false
        end
               
        if and
            0C21: stricmp string1 6@ string2 10@
            0C21: stricmp string1 7@ string2 11@
        then
            free 6@
            free 7@
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Вам попытались сбить анимацию {FFCC00}(kiss){FFFFFF}, но скрипт этому помешал." 0xffcc00
            0BE0: raknet hook_ret false
        end

        if and
            0C21: stricmp string1 6@ string2 8@
            0C21: stricmp string1 7@ string2 9@
        then
            free 6@
            free 7@
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Вам попытались сбить анимацию {FFCC00}(hi){FFFFFF}, но скрипт этому помешал." 0xffcc00
            0BE0: raknet hook_ret false
        end

        free 6@
        free 7@
    end
end
0BE0: raknet hook_ret true

:prepare_animation_info
alloc 1@ 48
alloc 2@ 48
0C11: memset 1@ value 0x0 size 48
0C11: memset 2@ value 0x0 size 48
0B58: samp get_animation_name_to 1@ file_to 2@ by_id 0@
ret 2 1@ 2@

:3dtextHOOK
0BE3: raknet setup_incoming_rpc_hook @hook

repeat
    wait 100
until false

:hook
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
    IF 0@ == RPC_SCRCREATE3DTEXTLABEL
    THEN
        0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
        0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_SHORT{2} // id  16
        0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT{3}  // color 5      
        0BE7: raknet 4@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // posX 82
        0BE7: raknet 5@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // posY  114
        0BE7: raknet 6@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // posZ  146        
        0BE7: raknet 7@ = bit_stream_read 0@ type BS_TYPE_FLOAT{4} // dist 178        
        0BE7: raknet 8@ = bit_stream_read 0@ type BS_TYPE_BYTE{1} // los?
        0BE7: raknet 9@ = bit_stream_read 0@ type BS_TYPE_SHORT{2} // player ID
        0BE7: raknet 10@ = bit_stream_read 0@ type BS_TYPE_SHORT{2} // car id? da
        alloc 11@ 1024
        0C11: memset 11@ 0 1024
        0BF4: raknet bit_stream 0@ decode_string 11@ size 1023
        IF 0C29: 31@ = stristr string1 11@ string2 "металла"
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Появился метал (ID: {86877F}%i{FFFFFF})." 0xffcc00 2@            
        END
        IF 0C29: 31@ = stristr string1 11@ string2 "серебра"
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Появилось серебро (ID: {42f4df}%i{FFFFFF})." 0xffcc00 2@              
        END
        IF 0C29: 31@ = stristr string1 11@ string2 "бронзы"
        THEN
            chatmsg "[ResourceFinder 2.0]: {FFFFFF}Появилась бронза (ID: {a54e22}%i{FFFFFF})." 0xffcc00 2@            
        END
        free 11@
    END
     
0BE0: raknet hook_ret TRUE
там же нет стиллера?
 

midnight.exe

Участник
121
13
код открыт.

Код:
0000: NOP
0001: wait 0 ms
0AFA:  is_samp_available
004D: jump_if_false NAN.0
00D6: if
0038:   $707 == 0
004D: jump_if_false NAN.0
0A93: end_custom_thread
00D6: if
0AAB:   file_exists "cleo\save_settings\settings.ini"
004D: jump_if_false NAN.0
0002: jump NAN.0
0AF8: samp add_message_to_chat "{919191}[Error] Файл settings.ini не найден!" color 9539985 
0A93: end_custom_thread
0B34: samp register_client_command "nhelp" to_label @Noname_1386
0B34: samp register_client_command "nkey" to_label @Noname_1651
0B34: samp register_client_command "npos" to_label @Noname_1854
0B34: samp register_client_command "ntime" to_label @Noname_2161
0B34: samp register_client_command "nsbiv" to_label @Noname_2382
0B34: samp register_client_command "nalomka" to_label @Noname_2622
0B78: log "USEDRUGS >> ACTIVE [by Alllss]"
0001: wait 0 ms
00D6: if
056D:   actor $PLAYER_ACTOR defined
004D: jump_if_false NAN.0
0AC8: 1@ = allocate_memory_size 64
0AC8: 2@ = allocate_memory_size 64
0AC8: 3@ = allocate_memory_size 64
0AC8: 4@ = allocate_memory_size 64
0AC8: 5@ = allocate_memory_size 64
0AC8: 6@ = allocate_memory_size 64
0AF0: 1@ = get_int_from_ini_file "cleo\save_settings\settings.ini" section "SelectKey" key "Key"
0AF2: 2@ = get_float_from_ini_file "cleo\save_settings\settings.ini" section "Position" key "X"
0AF2: 3@ = get_float_from_ini_file "cleo\save_settings\settings.ini" section "Position" key "Y"
0AF0: 4@ = get_int_from_ini_file "cleo\save_settings\settings.ini" section "SelectTime" key "Time"
0AF0: 5@ = get_int_from_ini_file "cleo\save_settings\settings.ini" section "Sbiv" key "Active"
0AF0: 6@ = get_int_from_ini_file "cleo\save_settings\settings.ini" section "AutoUsedrugs" key "Active"
0B6D: render 0@ = create_font "Arial" height 11 flags 5
0001: wait 0 ms
0B60: convert_game_screen_coords 2@ 3@ to_window_screen_coords 7@ 8@
0AC8: 9@ = allocate_memory_size 64
0AC8: 10@ = allocate_memory_size 260
0AD3: 9@ = format "Можно юзать!" 
0B6F: render font 0@ draw_text 9@ pos 7@ 8@ color -16724992
0B75: samp get_chat_string 99 text_to 10@ prefix_to 11@ color_to 11@ prefix_color_to 11@
0AC9: free_allocated_memory 9@
0AC9: free_allocated_memory 10@
0226: 12@ = actor $PLAYER_ACTOR health
00D6: if and
0039:   6@ == 1
0C29: 13@ = stristr string1 10@ string2 "Принять наркотик - /usedrugs"
004D: jump_if_false NAN.0
0AF9: samp say_msg "/usedrugs 1" 
00D6: if
0039:   5@ == 1
004D: jump_if_false NAN.0
0001: wait 250 ms
0687: clear_actor $PLAYER_ACTOR task
0002: jump NAN.0
0006: 14@ = 1
0006: 15@ = 1
0002: jump NAN.0
00D6: if
0AB0:   key_pressed 1@
004D: jump_if_false NAN.0
00D6: if
8B21:   not samp is_chat_opened
004D: jump_if_false NAN.0
00D6: if and
0029:   12@ >= 151
8019:   not  12@ > 160
004D: jump_if_false NAN.0
0AF9: samp say_msg "/usedrugs 1" 
00D6: if
0039:   5@ == 1
004D: jump_if_false NAN.0
0001: wait 250 ms
0687: clear_actor $PLAYER_ACTOR task
0002: jump NAN.0
0006: 14@ = 1
0006: 15@ = 1
0002: jump NAN.0
0006: 14@ = 1
0039:   14@ == 1
004D: jump_if_false NAN.0
0006: 14@ = 0
0C74: 16@ = create_timer_interval 1000 on_label @Noname_1377
0226: 12@ = actor $PLAYER_ACTOR health
0006: 17@ = 160
0062: 17@ -= 12@ // (int)
0016: 17@ /= 10
00D6: if
0029:   17@ >= 16
004D: jump_if_false NAN.0
0006: 17@ = 15
00D6: if
8039:   not  15@ == 1
004D: jump_if_false NAN.0
0AF9: samp say_msg "/usedrugs %d" 17@ 
00D6: if
0039:   5@ == 1
004D: jump_if_false NAN.0
00D6: if
80DF:   not actor $PLAYER_ACTOR driving
004D: jump_if_false NAN.0
0001: wait 250 ms
0687: clear_actor $PLAYER_ACTOR task
0002: jump NAN.0
0006: 15@ = 0
0001: wait 0 ms
0AC8: 18@ = allocate_memory_size 64
0C7C: 19@ = get_timer 16@ time_left
0016: 19@ /= 100
0AD3: 18@ = format "Осталось %d.%dсек." 4@ 19@ 
0B6F: render font 0@ draw_text 18@ pos 7@ 8@ color -1
0AC9: free_allocated_memory 18@
8019:   not  4@ > -1
004D: jump_if_false NAN.0
0C78: set_timer 16@ active 0
018C: play_sound 1057 at 0.0 0.0 0.0
0AC9: free_allocated_memory 1@
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
0AC9: free_allocated_memory 4@
0AC9: free_allocated_memory 5@
0AC9: free_allocated_memory 6@
0002: jump NAN.0

:Noname_1377
000E: 4@ -= 1
0B43: samp cmd_ret

:Noname_1386
0AC6: 20@ = label @Noname_1437 offset
0B3B: samp show_dialog id 3222 caption "{FF8C00}Информация" text 20@ button_1 "Выход" button_2 "" style 0
0B43: samp cmd_ret

:Noname_1437
hex
 2F 6E 6B 65 79 20 2D 20 D3 F1 F2 E0 ED EE E2 E8
 F2 FC 20 EA EB E0 E2 E8 F8 F3 20 E0 EA F2 E8 E2
 E0 F6 E8 E8 0A 2F 6E 74 69 6D 65 20 2D 20 D3 F1
 F2 E0 ED EE E2 E8 F2 FC 20 E8 ED F2 E5 F0 E2 E0
 EB 20 F2 E0 E9 EC E5 F0 E0 2E 0A 2F 6E 70 6F 73
 20 2D 20 D3 F1 F2 E0 ED EE E2 E8 F2 FC 20 EF EE
 E7 E8 F6 E8 FE 20 F2 E5 EA F1 F2 E0 20 ED E0 20
 FD EA F0 E0 ED E5 2E 0A 2F 6E 73 62 69 76 20 2D
 20 D1 E1 E8 E2 E0 F2 FC 20 E0 ED E8 EC E0 F6 E8
 FE 3F 20 5B 31 2D C4 E0 7C 30 2D CD E5 F2 5D 0A
 2F 6E 61 6C 6F 6D 6B 61 20 2D 20 D3 EF EE F2 F0
 E5 E1 EB FF F2 FC 20 ED E0 F0 EA EE 20 EF F0 E8
 20 EB EE EC EA E5 3F 20 5B 31 2D C4 E0 7C 30 2D
 CD E5 F2 5D A0 00
end

:Noname_1651
0B35: samp 21@ = get_last_command_params
00D6: if
0AD4: 22@ = scan_string 21@ format "%d" 1@ 
004D: jump_if_false NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Клавиша активации была изменена на [ID:%d]" color 16747520 1@ 
0AF1: write_int 1@ to_ini_file "cleo\save_settings\settings.ini" section "SelectKey" key "Key"
0002: jump NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Используйте /nkey - [keyID]" color 16747520 
0B43: samp cmd_ret

:Noname_1854
0B35: samp 21@ = get_last_command_params
00D6: if
0AD4: 22@ = scan_string 21@ format "%d %d" 2@ 3@ 
004D: jump_if_false NAN.0
0093: 2@ = integer 2@ to_float
0093: 3@ = integer 3@ to_float
0AF8: samp add_message_to_chat "{FF8C00}Кординаты текста на экране были изменены на [PosX - %f | PosY - %f]" color 16747520 2@ 3@ 
0AF3: write_float 2@ to_ini_file "cleo\save_settings\settings.ini" section "Position" key "X"
0AF3: write_float 3@ to_ini_file "cleo\save_settings\settings.ini" section "Position" key "Y"
0002: jump NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Используйте /npos - [PosX] [PosY]" color 16747520 
0B43: samp cmd_ret

:Noname_2161
0B35: samp 21@ = get_last_command_params
00D6: if
0AD4: 22@ = scan_string 21@ format "%d" 4@ 
004D: jump_if_false NAN.0
000E: 4@ -= 1
0085: 23@ = 4@ // (int)
000A: 23@ += 1
0AF8: samp add_message_to_chat "{FF8C00}Время таймера было изменено на %dсек." color 16747520 23@ 
0AF1: write_int 4@ to_ini_file "cleo\save_settings\settings.ini" section "SelectTime" key "Time"
0002: jump NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Используйте /ntime - [sec]" color 16747520 
0B43: samp cmd_ret

:Noname_2382
0B35: samp 21@ = get_last_command_params
00D6: if
0AD4: 22@ = scan_string 21@ format "%d" 5@ 
004D: jump_if_false NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Значение сбива анимации изменено на %d [1-Включено|0-Отключено]" color 16747520 5@ 
0AF1: write_int 5@ to_ini_file "cleo\save_settings\settings.ini" section "Sbiv" key "Active"
0002: jump NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Используйте /nsbiv - [1-Включено|0-Отключено]" color 16747520 
0B43: samp cmd_ret

:Noname_2622
0B35: samp 21@ = get_last_command_params
00D6: if
0AD4: 22@ = scan_string 21@ format "%d" 6@ 
004D: jump_if_false NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Значение автоупотребления нарко при ломке изменено на %d [1-Включено|0-Отключено]" color 16747520 6@ 
0AF1: write_int 6@ to_ini_file "cleo\save_settings\settings.ini" section "AutoUsedrugs" key "Active"
0002: jump NAN.0
0AF8: samp add_message_to_chat "{FF8C00}Используйте /nalomka - [1-Включено|0-Отключено]" color 16747520 
0B43: samp cmd_ret
 
  • Нравится
Реакции: chuchetumare