️ Decrypting/Safety Check CLEO/SF/ASI/DLL


Here you can send files and they will be decrypted(cleo/lua/ahk) !

CLEO / LUA / AHK files can have their encryption removed
In full / in part



The SF / ASI / DLL file will be mainly tested
It is not possible to extract code in an orderly manner from files programmed in C ++
Here you will find out if a file is safe and what it does.
 
Last edited:

SobFoX

Expert
Joined
Jul 14, 2015
Messages
1,463
Solutions
5
Reaction score
916
Location
Israel
This is safe ? tell me pls
JavaScript:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:NONAME_2
wait 0
   SAMP.Available
jf @NONAME_2
0BE2: raknet setup_outcoming_packet_hook @NONAME_156
0BE4: raknet setup_incoming_packet_hook @NONAME_367
0@ = 0
1@ = 0
2@ = 0
3@ = 0

:NONAME_57
wait 0
if
key_down 20
jf @NONAME_149

:NONAME_76
key_down 20
jf @NONAME_98
wait 0
goto @NONAME_76

:NONAME_98
0@ = 1

:NONAME_105
wait 0
key_down 20
jf @NONAME_105

:NONAME_120
key_down 20
jf @NONAME_142
wait 0
goto @NONAME_120

:NONAME_142
0@ = 0

:NONAME_149
goto @NONAME_57

:NONAME_156
wait 0
if
  0@ == 1
jf @NONAME_363
0BE5: raknet 1@ = get_hook_param 0
0BE5: raknet 2@ = get_hook_param 1
if
  2@ == 207
jf @NONAME_352
17@ = 2.0
3@ = BitStream.GetDataPtr(1@)
0C0C: 4@ = struct 3@ offset 7 size 4
0C0C: 5@ = struct 3@ offset 11 size 4
0C0C: 6@ = struct 3@ offset 15 size 4
005B: 4@ += 17@ // (float)
02CE: 10@ = ground_z_at 4@ 5@ 6@
10@ += 1.0
0087: 6@ = 10@ // (float)
0C0D: struct 3@ offset 7 size 4 = 4@
0C0D: struct 3@ offset 11 size 4 = 5@
0C0D: struct 3@ offset 15 size 4 = 6@
0BE0: raknet hook_ret 1
goto @NONAME_356

:NONAME_352
0BE0: raknet hook_ret 1

:NONAME_356
goto @NONAME_367

:NONAME_363
0BE0: raknet hook_ret 1

:NONAME_367
wait 0
if
  0@ == 1
jf @NONAME_761
0BE5: raknet 7@ = get_hook_param 1
0BE5: raknet 8@ = get_hook_param 0
if
  7@ == 206
jf @NONAME_750
9@ = BitStream.GetDataPtr(8@)
0C0C: 10@ = struct 9@ offset 0 size 1
0C0C: 11@ = struct 9@ offset 1 size 2
0C0C: 12@ = struct 9@ offset 3 size 4
0C0C: 13@ = struct 9@ offset 7 size 4
0C0C: 14@ = struct 9@ offset 11 size 4
0C0C: 15@ = struct 9@ offset 15 size 4
0C0C: 16@ = struct 9@ offset 19 size 4
0C0C: 17@ = struct 9@ offset 23 size 4
0C0C: 18@ = struct 9@ offset 27 size 4
0C0C: 19@ = struct 9@ offset 31 size 4
0C0C: 20@ = struct 9@ offset 35 size 4
0C0C: 21@ = struct 9@ offset 39 size 1
15@ += 2.0
16@ -= 2.0
0C0D: struct 9@ offset 0 size 1 = 3
0C0D: struct 9@ offset 1 size 2 = 65535
0C0D: struct 9@ offset 3 size 4 = 12@
0C0D: struct 9@ offset 7 size 4 = 13@
0C0D: struct 9@ offset 11 size 4 = 14@
0C0D: struct 9@ offset 15 size 4 = 15@
0C0D: struct 9@ offset 19 size 4 = 16@
0C0D: struct 9@ offset 23 size 4 = 17@
0C0D: struct 9@ offset 27 size 4 = 15@
0C0D: struct 9@ offset 31 size 4 = 16@
0C0D: struct 9@ offset 35 size 4 = 17@
0C0D: struct 9@ offset 39 size 1 = 21@
0BE0: raknet hook_ret 1
goto @NONAME_754

:NONAME_750
0BE0: raknet hook_ret 1

:NONAME_754
goto @NONAME_765

:NONAME_761
0BE0: raknet hook_ret 1

:NONAME_765
 

SobFoX

Expert
Joined
Jul 14, 2015
Messages
1,463
Solutions
5
Reaction score
916
Location
Israel
Hey sir @SobFoX . Can you please decrypt this?
JavaScript:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
wait 5000
alloc 1@ 260
alloc 2@ 260
alloc 5@ 260
alloc 6@ 260
alloc 8@ 260
alloc 9@ 260
alloc 10@ 260
0AF0: 9@ = get_int_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RoleplayMode"
0AF4: 10@ = read_string_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RPFish"
alloc 11@ 260

:NONAME_169
wait 0
if and
key_down 18
key_down 53
jf @NONAME_327
0B12: 30@ = 30@ XOR 1
if
  30@ == 1
jf @NONAME_273
printf "~w~Auto-Fishing berhasil ~g~DIAKTIFKAN" 1337
goto @NONAME_322

:NONAME_273
printf "~w~Auto-Fishing berhasil ~r~DINONAKTIFKAN" 1337

:NONAME_322
wait 137

:NONAME_327
if
  30@ == 1
jf @NONAME_478
0AF0: 9@ = get_int_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RoleplayMode"
0AF4: 10@ = read_string_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RPFish"
if
  9@ == 0
jf @NONAME_478
format 11@ "/me %s" 10@

:NONAME_478
if
  30@ == 1
jf @NONAME_630
0AF0: 9@ = get_int_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RoleplayMode"
0AF4: 10@ = read_string_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RPFish"
if
  9@ == 1
jf @NONAME_630
format 11@ "/lme %s" 10@

:NONAME_630
if
  30@ == 1
jf @NONAME_782
0AF0: 9@ = get_int_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RoleplayMode"
0AF4: 10@ = read_string_from_ini_file "cleo\Auto-Fishing.ini" section "Settings" key "RPFish"
if
  9@ == 2
jf @NONAME_782
format 11@ "/ame %s" 10@

:NONAME_782
if
  30@ == 1
jf @NONAME_1011
if
   Player.Defined($PLAYER_CHAR)
jf @NONAME_1011
0@ = 99

:NONAME_823
call @NONAME_1018 2 3 0@ 1@ 2@ 3@ 4@
call @NONAME_2760 2 1@ 5@
format 6@ "FISHING: You caught something"
if
call @NONAME_3001 2 5@ 6@ 7@
jf @NONAME_990
wait 100
call @NONAME_3352 2 985 50
format 8@ "/fish"
wait 200
call @NONAME_2128 2 3 8@
wait 1300

:NONAME_990
0@ += 1
  0@ > 99
jf @NONAME_823

:NONAME_1011
goto @NONAME_169

:NONAME_1018
if
0AA2: 31@ = load_library "samp.dll" // IF and SET
jf @NONAME_2111
if
  0@ >= 1
jf @NONAME_2106
if
  0@ == 1
jf @NONAME_1236
31@ += 2203876
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0
31@ += 306
1@ *= 252
005A: 31@ += 1@ // (int)
0A8E: 30@ = 31@ + 32 // int
0A8E: 29@ = 31@ + 4 // int
0A8E: 28@ = 31@ + 244 // int
0A8D: 27@ = read_memory 28@ size 4 virtual_protect 0
0A8E: 26@ = 31@ + 248 // int
0A8D: 25@ = read_memory 26@ size 1 virtual_protect 0
if
   not 25@ > 0
jf @NONAME_1224
24@ = 0
goto @NONAME_1236

:NONAME_1224
0A8D: 24@ = read_memory 26@ size 4 virtual_protect 0

:NONAME_1236
if
  0@ == 2
jf @NONAME_1410
31@ += 2203884
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0
31@ += 306
1@ *= 252
005A: 31@ += 1@ // (int)
0A8E: 30@ = 31@ + 32 // int
0A8E: 29@ = 31@ + 4 // int
0A8E: 28@ = 31@ + 244 // int
0A8D: 27@ = read_memory 28@ size 4 virtual_protect 0
0A8E: 26@ = 31@ + 248 // int
0A8D: 25@ = read_memory 26@ size 1 virtual_protect 0
if
   not 25@ > 0
jf @NONAME_1398
24@ = 0
goto @NONAME_1410

:NONAME_1398
0A8D: 24@ = read_memory 26@ size 4 virtual_protect 0

:NONAME_1410
if
  0@ == 3
jf @NONAME_1584
31@ += 2804240
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0
31@ += 306
1@ *= 252
005A: 31@ += 1@ // (int)
0A8E: 30@ = 31@ + 32 // int
0A8E: 29@ = 31@ + 4 // int
0A8E: 28@ = 31@ + 244 // int
0A8D: 27@ = read_memory 28@ size 4 virtual_protect 0
0A8E: 26@ = 31@ + 248 // int
0A8D: 25@ = read_memory 26@ size 1 virtual_protect 0
if
   not 25@ > 0
jf @NONAME_1572
24@ = 0
goto @NONAME_1584

:NONAME_1572
0A8D: 24@ = read_memory 26@ size 4 virtual_protect 0

:NONAME_1584
if
  0@ == 4
jf @NONAME_1758
31@ += 2549960
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0
31@ += 306
1@ *= 252
005A: 31@ += 1@ // (int)
0A8E: 30@ = 31@ + 32 // int
0A8E: 29@ = 31@ + 4 // int
0A8E: 28@ = 31@ + 244 // int
0A8D: 27@ = read_memory 28@ size 4 virtual_protect 0
0A8E: 26@ = 31@ + 248 // int
0A8D: 25@ = read_memory 26@ size 1 virtual_protect 0
if
   not 25@ > 0
jf @NONAME_1746
24@ = 0
goto @NONAME_1758

:NONAME_1746
0A8D: 24@ = read_memory 26@ size 4 virtual_protect 0

:NONAME_1758
if
  0@ == 5
jf @NONAME_1932
31@ += 2550264
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0
31@ += 306
1@ *= 252
005A: 31@ += 1@ // (int)
0A8E: 30@ = 31@ + 32 // int
0A8E: 29@ = 31@ + 4 // int
0A8E: 28@ = 31@ + 244 // int
0A8D: 27@ = read_memory 28@ size 4 virtual_protect 0
0A8E: 26@ = 31@ + 248 // int
0A8D: 25@ = read_memory 26@ size 1 virtual_protect 0
if
   not 25@ > 0
jf @NONAME_1920
24@ = 0
goto @NONAME_1932

:NONAME_1920
0A8D: 24@ = read_memory 26@ size 4 virtual_protect 0

:NONAME_1932
if
  0@ == 6
jf @NONAME_2106
31@ += 2550264
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0
31@ += 306
1@ *= 252
005A: 31@ += 1@ // (int)
0A8E: 30@ = 31@ + 32 // int
0A8E: 29@ = 31@ + 4 // int
0A8E: 28@ = 31@ + 244 // int
0A8D: 27@ = read_memory 28@ size 4 virtual_protect 0
0A8E: 26@ = 31@ + 248 // int
0A8D: 25@ = read_memory 26@ size 1 virtual_protect 0
if
   not 25@ > 0
jf @NONAME_2094
24@ = 0
goto @NONAME_2106

:NONAME_2094
0A8D: 24@ = read_memory 26@ size 4 virtual_protect 0

:NONAME_2106
0AA3: free_library 31@

:NONAME_2111
ret 4 30@ 29@ 27@ 24@

:NONAME_2128
if
0AA2: 20@ = load_library "samp.dll" // IF and SET
jf @NONAME_2755
if
  0@ >= 1
jf @NONAME_2755
if
  0@ == 1
jf @NONAME_2263
0A8E: 21@ = 20@ + 2203880 // int
0A8D: 22@ = read_memory 21@ size 4 virtual_protect 0
0A8E: 26@ = 22@ + 8 // int
0A8D: 27@ = read_memory 26@ size 4 virtual_protect 0
0A8E: 24@ = 20@ + 528224 // int
0A8E: 25@ = 20@ + 417072 // int

:NONAME_2263
if
  0@ == 2
jf @NONAME_2354
0A8E: 21@ = 20@ + 2203888 // int
0A8D: 22@ = read_memory 21@ size 4 virtual_protect 0
0A8E: 26@ = 22@ + 8 // int
0A8D: 27@ = read_memory 26@ size 4 virtual_protect 0
0A8E: 24@ = 20@ + 528384 // int
0A8E: 25@ = 20@ + 417280 // int

:NONAME_2354
if
  0@ == 3
jf @NONAME_2445
0A8E: 21@ = 20@ + 2804244 // int
0A8D: 22@ = read_memory 21@ size 4 virtual_protect 0
0A8E: 26@ = 22@ + 8 // int
0A8D: 27@ = read_memory 26@ size 4 virtual_protect 0
0A8E: 24@ = 20@ + 544768 // int
0A8E: 25@ = 20@ + 431120 // int

:NONAME_2445
if
  0@ == 4
jf @NONAME_2536
0A8E: 21@ = 20@ + 2549964 // int
0A8D: 22@ = read_memory 21@ size 4 virtual_protect 0
0A8E: 26@ = 22@ + 8 // int
0A8D: 27@ = read_memory 26@ size 4 virtual_protect 0
0A8E: 24@ = 20@ + 544368 // int
0A8E: 25@ = 20@ + 430688 // int

:NONAME_2536
if
  0@ == 5
jf @NONAME_2627
0A8E: 21@ = 20@ + 2550268 // int
0A8D: 22@ = read_memory 21@ size 4 virtual_protect 0
0A8E: 26@ = 22@ + 8 // int
0A8D: 27@ = read_memory 26@ size 4 virtual_protect 0
0A8E: 24@ = 20@ + 546224 // int
0A8E: 25@ = 20@ + 432528 // int

:NONAME_2627
if
  0@ == 6
jf @NONAME_2718
0A8E: 21@ = 20@ + 2550268 // int
0A8D: 22@ = read_memory 21@ size 4 virtual_protect 0
0A8E: 26@ = 22@ + 8 // int
0A8D: 27@ = read_memory 26@ size 4 virtual_protect 0
0A8E: 24@ = 20@ + 546272 // int
0A8E: 25@ = 20@ + 432592 // int

:NONAME_2718
0AA8: call_function_method 24@ struct 27@ num_params 2 pop 0 0 1@ 6@
0AA8: call_function_method 25@ struct 22@ num_params 0 pop 0 7@

:NONAME_2755
ret 0

:NONAME_2760
0085: 27@ = 0@ // (int)
31@ = 0

:NONAME_2775
0A8D: 26@ = read_memory 27@ size 1 virtual_protect 0
if
   not 26@ == 0
jf @NONAME_2834
27@ += 1
31@ += 1
  31@ > 1024
jf @NONAME_2775

:NONAME_2834
5@ = 0
30@ = 0

:NONAME_2848
0085: 29@ = 0@ // (int)
005A: 29@ += 30@ // (int)
0A8D: 28@ = read_memory 29@ size 1 virtual_protect 1
if
  28@ == 123
jf @NONAME_2901
5@ = 1

:NONAME_2901
if
  5@ == 0
jf @NONAME_2938
0A8C: write_memory 1@ size 1 value 28@ virtual_protect 1
1@ += 1

:NONAME_2938
if
  28@ == 125
jf @NONAME_2963
5@ = 0

:NONAME_2963
30@ += 1
001D:   30@ > 31@ // (int)
jf @NONAME_2848
0A8C: write_memory 1@ size 1 value 0 virtual_protect 1
ret 0

:NONAME_3001
call @NONAME_3278 1 0@ 31@
call @NONAME_3278 1 1@ 30@
if
001D:   30@ > 31@ // (int)
jf @NONAME_3061
return_false
ret 1 0

:NONAME_3061
31@ -= 1
26@ = 0
29@ = 0

:NONAME_3082
0085: 24@ = 0@ // (int)
005A: 24@ += 29@ // (int)
0A8D: 28@ = read_memory 24@ size 1 virtual_protect 0
0085: 23@ = 1@ // (int)
005A: 23@ += 26@ // (int)
0A8D: 27@ = read_memory 23@ size 1 virtual_protect 0
if
003B:   28@ == 27@ // (int)
jf @NONAME_3215
26@ += 1
if
002D:   26@ >= 30@ // (int)
jf @NONAME_3208
return_true
0062: 24@ -= 30@ // (int)
24@ += 1
ret 1 24@

:NONAME_3208
goto @NONAME_3247

:NONAME_3215
if
  26@ > 0
jf @NONAME_3240
29@ -= 1

:NONAME_3240
26@ = 0

:NONAME_3247
29@ += 1
001D:   29@ > 31@ // (int)
jf @NONAME_3082
return_false
ret 1 0

:NONAME_3278
1@ = 0

:NONAME_3285
0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
if
   not 2@ == 0
jf @NONAME_3344
0@ += 1
1@ += 1
  1@ > 1024
jf @NONAME_3285

:NONAME_3344
ret 1 1@

:NONAME_3352
2@ = 12004552
0@ *= 2
005A: 2@ += 0@ // (int)
0A8C: write_memory 2@ size 1 value 255 virtual_protect 0
wait 1@
0A8C: write_memory 2@ size 1 value 0 virtual_protect 0
ret 0
 

Xeno432

New member
Joined
Mar 18, 2023
Messages
2
Reaction score
0
can someone decrypt this?
 

Attachments

  • FishBot for nephrite.sf
    45.5 KB · Views: 1

SobFoX

Expert
Joined
Jul 14, 2015
Messages
1,463
Solutions
5
Reaction score
916
Location
Israel
hi can you descompile?
JavaScript:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
if
  $707 == 0
else_jump @GHM_20
0A93: end_custom_thread

:GHM_20
if
0@ = SAMP.Base()
else_jump @GHM_38
0A93: end_custom_thread

:GHM_38
thread "GHM"
0@ = Render.CreateFont("Segoe UI", 8, 13)
0B34: samp register_client_command "GMode" to_label @GHM_749
0BE2: raknet setup_outcoming_packet_hook @GHM_182

:GHM_85
wait 0
if
  1@ == 0
else_jump @GHM_175
03F0: enable_text_draw 1
SAMP.GetScreenResolution(2@, 3@)
2@ -= 66
3@ -= 15
Render.DrawBox(2@, 3@, 66, 15, 2130706432)
Render.DrawText(0@, "GhostMode", 2@, 3@, -11296)

:GHM_175
jump @GHM_85

:GHM_182
if
  1@ == 0
else_jump @GHM_745
0BE5: raknet 2@ = get_hook_param 1
if
  2@ == 207
else_jump @GHM_745
0A96: 2@ = actor $PLAYER_ACTOR struct
0C0C: 3@ = struct 2@ offset 1420 size 4
if
  3@ == 0
else_jump @GHM_733
2@ = 0

:GHM_272
if
3@ = SAMP.GetActorHandleByPlayerID(2@)
else_jump @GHM_426
if
02D8:   actor 3@ current_weapon == 34
else_jump @GHM_386
if or
   Actor.Animation(3@) == "RIFLE_CROUCHFIRE"
   Actor.Animation(3@) == "RIFLE_FIRE"
   Actor.Animation(3@) == "RIFLE_FIRE_POOR"
else_jump @GHM_386
0BE0: raknet hook_ret 1

:GHM_386
if
0104:   actor 3@ near_actor $PLAYER_ACTOR radius 1.2 1.2 1.2 sphere 0
else_jump @GHM_426
0BE0: raknet hook_ret 1

:GHM_426
2@ += 1
  2@ > 1000
else_jump @GHM_272
Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@)

:GHM_462
0AE3: 5@ = random_object_near_point 2@ 3@ 4@ in_radius 1.0 find_next 1 //IF and SET
else_jump @GHM_528
6@ = Object.Model(5@)
if
  6@ == 2680
else_jump @GHM_521
0BE0: raknet hook_ret 1

:GHM_521
jump @GHM_462

:GHM_528
0BE5: raknet 2@ = get_hook_param 0
2@ = BitStream.GetDataPtr(2@)
0C0C: 3@ = struct 2@ offset 38 size 1
if
  3@ == 0
else_jump @GHM_591
0C0D: struct 2@ offset 38 size 1 = 3
jump @GHM_726

:GHM_591
0C0C: 3@ = struct 2@ offset 63 size 2
if
3@ = SAMP.GetVehicleHandleBySAMPVehicleID(3@)
else_jump @GHM_696
3@ = 1

:GHM_629
if
4@ = SAMP.GetVehicleHandleBySAMPVehicleID(3@)
else_jump @GHM_667
0C0D: struct 2@ offset 63 size 2 = 3@
jump @GHM_689

:GHM_667
3@ += 1
  3@ > 2000
else_jump @GHM_629

:GHM_689
jump @GHM_726

:GHM_696
if
8547:   not actor $PLAYER_ACTOR colliding_with_car 3@
else_jump @GHM_726
0C0D: struct 2@ offset 63 size 2 = 0

:GHM_726
jump @GHM_745

:GHM_733
0C0D: struct 2@ offset 1420 size 4 = 0

:GHM_745
0BE0: raknet hook_ret 1

:GHM_749
0B12: 1@ = 1@ XOR 1
SAMP.CmdRet
 

SobFoX

Expert
Joined
Jul 14, 2015
Messages
1,463
Solutions
5
Reaction score
916
Location
Israel
has Stealer or Virus?
no
JavaScript:
slot0 = require("lib.samp.events")
slot1 = nil
slot2 = 0
slot3 = 0

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then
        return
    end

    repeat
        wait(0)
    until isSampAvailable()

    sampRegisterChatCommand("kill", function (slot0)
        if active then
            active = false

            msg("\\xc4\\xe5\\xe0\\xea\\xf2\\xe8\\xe2\\xe8\\xf0\\xee\\xe2\\xe0\\xed")

            return
        end

        if select(1, sampGetCharHandleBySampPlayerId(slot0)) then
            if not sampIsLocalPlayerSpawned() then
                msg("\\xc5\\xe1\\xeb\\xee, \\xec\\xee\\xe6\\xe5\\xf2 \\xea \\xf1\\xe5\\xf0\\xe2\\xe5\\xf0\\xf3 \\xef\\xee\\xe4\\xea\\xeb\\xfe\\xf7\\xe8\\xf8\\xfc\\xf1\\xff?")

                return
            end

            if sampIsPlayerPaused(slot0) then
                msg("\\xd2\\xfb \\xe4\\xee\\xeb\\xe1\\xee\\xb8\\xe1 \\xe8\\xeb\\xe8 \\xea\\xe0\\xea? \\xcd\\xe5 \\xe2\\xe8\\xe4\\xe8\\xf8\\xfc \\xee\\xed \\xe0\\xf4\\xea \\xf1\\xf2\\xee\\xe8\\xf2?")

                return
            end

            active = not active

            msg(active and "\\xc0\\xea\\xf2\\xe8\\xe2\\xe8\\xf0\\xee\\xe2\\xe0\\xed" or "\\xc4\\xe5\\xe0\\xea\\xf2\\xe8\\xe2\\xe8\\xf0\\xee\\xe2\\xe0\\xed")
            lua_thread.create(rvan, slot0)
        else
            msg("\\xd7\\xf3\\xf7\\xe5\\xeb\\xee, \\xf2\\xfb \\xe5\\xe3\\xee \\xe2\\xe8\\xe4\\xe8\\xf8\\xfc? \\xc2\\xee\\xf2 \\xe8 \\xff \\xed\\xe5\\xf2!")
        end
    end)
    wait(-1)
end

function rvan(slot0)
    uv1 = 0
    uv0 = 0

    while active do
        wait(0)

        slot1, slot2 = sampGetCharHandleBySampPlayerId(slot0)

        if slot2 and isCharDead(slot2) then
            active = false

            msg("\\xd5\\xe0\\xf5\\xf5\\xe0\\xef\\xf5\\xef, \\xeb\\xee\\xf8\\xe0\\xf0\\xe0 \\xf1\\xe4\\xee\\xf5 \\xe1\\xeb\\xff\\xf2\\xfc, \\xee\\xf0\\xf3 \\xf1\\xf3\\xea\\xe0.")
        end

        if not slot1 then
            active = false

            msg("\\xc4\\xee\\xeb\\xe1\\xee\\xb8\\xe1 \\xeb\\xe8\\xe2\\xed\\xf3\\xeb!")

            break
        end

        uv2 = slot0

        if not isCharInAnyCar(slot2) then
            px, py, pz = getCharCoordinates(slot2)
            x, y, z = getOffsetFromCharInWorldCoords(slot2, 0, 3, 0)
        else
            px, py, pz = getCarCoordinates(getCarCharIsUsing(slot2))
            x, y, z = getOffsetFromCarInWorldCoords(getCarCharIsUsing(slot2), 0, 3, 0)
        end

        slot3 = getCharHeading(slot2)

        printStringNow("~R~SLAP~W~:~B~ " .. sampGetPlayerNickname(slot0) .. "~W~[~R~" .. select(2, sampGetPlayerIdByCharHandle(slot2)) .. "~W~]~N~~B~DEV~W~: ~G~00DD00 ~W~ or ~R~NN - NoName", 1)
    end

    uv2 = nil

    setCharCoordinates(PLAYER_PED, x, y, z)
end

function quat(slot0)
    slot1, slot2, slot3, slot4 = getCharQuaternion(slot0)
    slot5 = {
        convertQuaternionToMatrix(slot4, slot1, slot2, slot3)
    }
    slot5[1] = -slot5[1]
    slot5[2] = -slot5[2]
    slot5[4] = -slot5[4]
    slot5[5] = -slot5[5]
    slot5[7] = -slot5[7]
    slot5[8] = -slot5[8]
    slot6, slot7, slot8, slot9 = convertMatrixToQuaternion(slot5[1], slot5[2], slot5[3], slot5[4], slot5[5], slot5[6], slot5[7], slot5[8], slot5[9])

    return slot6, slot7, slot8, slot9
end

function msg(slot0)
    sampAddChatMessage("{FFFFFF}[{00DD00}Rvanka{FFFFFF}] {FF0000}- {FFC000}" .. tostring(slot0), 9109759)
end

function getMoveSpeed(slot0, slot1)
    moveSpeed = {
        z = 0,
        x = math.sin(-math.rad(slot0)) * slot1,
        y = math.cos(-math.rad(slot0)) * slot1
    }

    return moveSpeed
end

function slot0.onSendPlayerSync(slot0)
    slot1, slot2 = sampGetCharHandleBySampPlayerId(uv0)

    if not active then
        return
    end

    if uv0 == nil then
        return
    end

    if not slot1 then
        return
    end

    if getCharHeading(slot2) >= 180 then
        slot3 = -slot3
    end

    slot3 = math.abs(slot3 + 180)
    uv1 = uv1 + 0.3

    if uv1 >= 1.55 then
        uv1 = 1.55
    end

    slot0.moveSpeed = getMoveSpeed(slot3, uv1)

    if slot0.moveSpeed.z < 0 then
        slot0.moveSpeed.z = -0.25
    else
        slot0.moveSpeed.z = 0.25
    end

    if not isCharInAnyCar(slot2) then
        px, py, pz = getCharCoordinates(slot2)
        x, y, z = getOffsetFromCharInWorldCoords(slot2, 0, 3, 0)
    else
        px, py, pz = getCarCoordinates(getCarCharIsUsing(slot2))
        x, y, z = getOffsetFromCarInWorldCoords(getCarCharIsUsing(slot2), 0, 3, 0)
    end

    slot0.position = {
        x,
        y,
        z - 0.5
    }
    slot0.quaternion[0], slot5, slot6, slot0.quaternion[3] = quat(slot2)
    slot0.quaternion[1] = 0
    slot0.quaternion[2] = 0

    return slot0
end

function slot0.onSendVehicleSync(slot0)
    slot1, slot2 = sampGetCharHandleBySampPlayerId(uv0)

    if not active then
        return
    end

    if uv0 == nil then
        return
    end

    if not slot1 then
        return
    end

    if getCharHeading(slot2) >= 180 then
        slot3 = -slot3
    end

    slot3 = math.abs(slot3 + 180)
    uv1 = uv1 + 0.1

    if uv1 >= 1.65 then
        uv1 = 1.65
    end

    slot0.moveSpeed = getMoveSpeed(slot3, uv1)

    if slot0.moveSpeed.z < 0 then
        slot0.moveSpeed.z = -0.25
    else
        slot0.moveSpeed.z = 0.25
    end

    if not isCharInAnyCar(slot2) then
        px, py, pz = getCharCoordinates(slot2)
        x, y, z = getOffsetFromCharInWorldCoords(slot2, 0, 3, 0)
    else
        px, py, pz = getCarCoordinates(getCarCharIsUsing(slot2))
        x, y, z = getOffsetFromCarInWorldCoords(getCarCharIsUsing(slot2), 0, 3, 0)
    end

    slot0.position = {
        x,
        y,
        z - 0.5
    }
    slot0.quaternion[0], slot5, slot6, slot0.quaternion[3] = quat(slot2)
    slot0.quaternion[1] = 0
    slot0.quaternion[2] = 0

    return slot0
end
 
Top