Resource icon

CLEO Release supremeVision.cs [not a cheat, piece of code]

CLEO related
Status
Not open for further replies.

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
Some time ago I made damage/cheat detector but the management of the server where I was playing didn't approve it because they thought it gives some unfair advantage.

I don't have idea nor motivation to make something different with this script so I release it, maybe someone will find it useful. It includes "authenticity code" generator and checker which is a pretty cool feature as it assures that the detection was made by using this particular Cleo mod, not some fake text displayer or photoshop edit.  The password for checkcode command is "eagle" (/checkcode eagle).

Mechanism of action:
The mod detects player's shooting rate, current weapon, distance from enemy and number of accurate shots. Then it compares detected data with the results of the tests made for each weapon from specific distance stated in the script. (Tested on IMRP, shooting rate may be different on other servers). If the number of hits in a row with certain weapon from specific distance is over the limit then the data is displayed, the camera moves near both players, and F8 is pressed automatically. The video presents its mechanism of work so the limits for each wepons are set to minimum to maximise the number of detections just to show how it works. The mod is restricted to IMRP server by IP check at the begining of the script.(not anymore)

Tested with:
Cleo 4.1
Sampfuncs 3.1.2
MG functions 4.3

Video:
https://www.youtube.com/watch?v=A_F2OCbHLVQ
 

Attachments

  • supremeVision.rar
    20.8 KB · Views: 229

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
Sorry I forgot to add the plugin specification. It was tested with Cleo 4.1, sampfuncs 3.1.2, MG functions 4.3
 

|]_ReT1neX_[|

Active member
Joined
Jul 28, 2014
Messages
132
Reaction score
0
Huh dude.. i dont know what to say.

This is awesome, actualy, i was thinking about creating something like this and now, you released it.

Thanks for the release.  :urtheman:
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
[member=23472]|]_ReT1neX_[|[/member]
Thanks

[member=25494]Haxzorlmao[/member]
I'll take that as a compliment, the script was made by me except of few snippets made by Opcode.exe(getScreenXYFrom3DCoords, drawbox, run cleo in cleo, get3DXYZInFrontOf, keyPress)
 

Codex1337

Active member
Joined
Mar 1, 2014
Messages
170
Reaction score
1
Still the same.
I tested with MG funcs 4.3, CLEO 4.1, SF 3.2 and 4.0
 

|]_ReT1neX_[|

Active member
Joined
Jul 28, 2014
Messages
132
Reaction score
0
[member=21092]monday[/member]

There's something wrong with the script. i think.

So. the first time when i ran it. it worked. But the second time (after i quitted the game and joined again) the script did not load. and now. it does not load anymore.

:eek:hgodwhy:
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
[member=23472]|]_ReT1neX_[|[/member]
There was "hex 1 2 3 4 5..." thing at the beggining of the script because originally it was crypted, I deleted this + IP restriction and uploaded it again. I hope this will help, if it doesn't then I can't do anything more to be honest because it works for me (just tested on NEF server).

Btw code checker doesn't work with sampfuncs 4.0 because of the "run cleo in cleo" snippet so 3.1.2 is better for this.
 

|]_ReT1neX_[|

Active member
Joined
Jul 28, 2014
Messages
132
Reaction score
0
monday link said:
[member=23472]|]_ReT1neX_[|[/member]
There was "hex 1 2 3 4 5..." thing at the beggining of the script because originally it was crypted, I deleted this + IP restriction and uploaded it again. I hope this will help, if it doesn't then I can't do anything more to be honest because it works for me (just tested on NEF server).

Btw code checker doesn't work with sampfuncs 4.0 because of the "run cleo in cleo" snippet so 3.1.2 is better for this.

Yeah. now everything is OK. Once again. Thanks for the cleo  :urtheman:

Worth Repping and liking
 

anonalonius

Member
Joined
Jun 12, 2014
Messages
13
Reaction score
0
I didn't understand a fucking word OP said. :imoverit:
Had to watch the video.
 

Opcode.eXe

Expert
Joined
Feb 18, 2013
Messages
1,486
Reaction score
226
Location
( ͡° ͜ʖ ͡°)
Code:
for 31@ = 0 to 300    
    if 
    SAMP.IsPlayerConnected(31@)
    then
You should use 0 to 1000 ... some servers have more users than 300..
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
[member=14864]vincetan789[/member]
I'll give example. Let's say you're standing at 15m distance from your enemy and you're using TEC(single hand) weapon. If he's standing still and you're using full-auto fire there's no way for you to hit him 5-6 times in a row without using no-spread or having godlike skills to compensate the spread. Here comes the mod, it checks the distance, checks how many times in a row you hit him with TEC. Shooting rate limit + distance limit + hits in a row limit are set in the script separately for each weapon (adjusted for IMRP, no double weapons there).


Example of limit settings for TEC in the script:
Code:
if 
02D8:   actor 0@ current_weapon == 32 //tec
then
29@ = 167 //tec shotrate - 1bullet per 127ms
5@ = 4 //number of shots needed to detect
3@ = 12.950 //distance needed to detect
06D2: 24@v = "TEC" 
end
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
[member=20482]anonalonius[/member]
Every time the mod makes a detection it creates a code (authentication code). The code is based on 2nd, 4th, 6th and 8th letter of the victim and suspect + coded distance + coded length of both names. Let's say that you find someone using obvious cheats by using this mod and upload evidence with displayed data on the server's forum. On the screen shot the admin or whoever will check it will see:
-the name of the victim
-the name of the suspect
-distance
-code generated for this detection

If an admin would like to check if the screen shot is valid (not made by using photoshop or fake samp text displayer) he can use /checkcode password command, then follow instructions in order to check if the code provided is valid for the names + distance. So that's what the /checkcode command does.

The only way to know what code is appropriate for some random names/distance is to know a formula, so you could change the formula personally to your needs after I released the source. Current password is "eagle" (/checkcode eagle). Password is there to prevent someone from getting the formula by spamming the checker but there's also a 30 seconds delay between each checks.

That's the part of the script responsible for coding the letters, by adjusting 5@, 6@, 7@ and 8@ you change the value assigned for each set of letter types:
Code:
Ignore comments such as: "//first letter code output for b,g,l,q,v,_", i copied acccidently the same comments for each letter because I didn't know I'm going to release it someday




:code_2th_4th_6th_8th_letter
//0AB1: call_scm_func @code_2th_4th_6th_8th_letter 4 Letters_input 1@ 2@ 3@ 4@ Individual_name_code_store_to 5@

//SECOND LETTER

06D2: 24@v = "z"
06D2: 26@v = "u"
06D2: 27@v = "p"
06D2: 28@v = "k"
06D2: 29@v = "f"
06D2: 30@v = "a"
if or 
0C18: 31@ = strstr string1 0@ string2 24@v
0C18: 31@ = strstr string1 0@ string2 26@v
0C18: 31@ = strstr string1 0@ string2 27@v                    
0C18: 31@ = strstr string1 0@ string2 28@v
0C18: 31@ = strstr string1 0@ string2 29@v
0C18: 31@ = strstr string1 0@ string2 30@v
then
//first letter code output for a,f,k,p,u,z
5@ = 18
else
    06D2: 24@v = "_"
    06D2: 26@v = "v"
    06D2: 27@v = "q"
    06D2: 28@v = "l"
    06D2: 29@v = "g"
    06D2: 30@v = "b"   
    if or 
    0C18: 31@ = strstr string1 0@ string2 24@v
    0C18: 31@ = strstr string1 0@ string2 26@v
    0C18: 31@ = strstr string1 0@ string2 27@v
    0C18: 31@ = strstr string1 0@ string2 28@v
    0C18: 31@ = strstr string1 0@ string2 29@v
    0C18: 31@ = strstr string1 0@ string2 30@v   
    then
    //first letter code output for b,g,l,q,v,_
    5@ = 14
    else
        06D2: 26@v = "c"
        06D2: 27@v = "h"
        06D2: 28@v = "m"
        06D2: 29@v = "r"
        06D2: 30@v = "w"
        if or 
        0C18: 31@ = strstr string1 0@ string2 26@v
        0C18: 31@ = strstr string1 0@ string2 27@v
        0C18: 31@ = strstr string1 0@ string2 28@v
        0C18: 31@ = strstr string1 0@ string2 29@v
        0C18: 31@ = strstr string1 0@ string2 30@v
        then
        //first letter code output for c,h,m,r,w
        5@ = 32
        else
            06D2: 26@v = "d"
            06D2: 27@v = "i"
            06D2: 28@v = "n"
            06D2: 29@v = "t"
            06D2: 30@v = "x"
            if or
            0C18: 31@ = strstr string1 0@ string2 26@v
            0C18: 31@ = strstr string1 0@ string2 27@v
            0C18: 31@ = strstr string1 0@ string2 28@v
            0C18: 31@ = strstr string1 0@ string2 29@v  
            0C18: 31@ = strstr string1 0@ string2 30@v  
            then
            //first letter code output for d,i,n,t,x
            5@ = 62
            else
                06D2: 26@v = "e"
                06D2: 27@v = "j"
                06D2: 28@v = "o"
                06D2: 29@v = "u"
                06D2: 30@v = "y"
                if or
                0C18: 31@ = strstr string1 0@ string2 26@v
                0C18: 31@ = strstr string1 0@ string2 27@v
                0C18: 31@ = strstr string1 0@ string2 28@v
                0C18: 31@ = strstr string1 0@ string2 29@v
                0C18: 31@ = strstr string1 0@ string2 30@v
                then
                //first letter code output for e,j,o,u,y
                5@ = 44
                else
                //first letter code output for capital letter or any other letter/number
                5@ = 67
                end
            end    
        end        
    end            
end    
                                 
//FOURTH LETTER

06D2: 24@v = "a"
06D2: 26@v = "f"
06D2: 27@v = "k"
06D2: 28@v = "p"
06D2: 29@v = "u"
06D2: 30@v = "z"
if or 
0C18: 31@ = strstr string1 1@ string2 24@v
0C18: 31@ = strstr string1 1@ string2 26@v
0C18: 31@ = strstr string1 1@ string2 27@v
0C18: 31@ = strstr string1 1@ string2 28@v
0C18: 31@ = strstr string1 1@ string2 29@v
0C18: 31@ = strstr string1 1@ string2 30@v
then
//first letter code output for a,f,k,p,u,z
6@ = 43
else
    06D2: 24@v = "b"
    06D2: 26@v = "g"
    06D2: 27@v = "l"
    06D2: 28@v = "q"
    06D2: 29@v = "v"
    06D2: 30@v = "_"
    if or 
    0C18: 31@ = strstr string1 1@ string2 24@v
    0C18: 31@ = strstr string1 1@ string2 26@v
    0C18: 31@ = strstr string1 1@ string2 27@v
    0C18: 31@ = strstr string1 1@ string2 28@v
    0C18: 31@ = strstr string1 1@ string2 29@v
    0C18: 31@ = strstr string1 1@ string2 30@v
    then
    //first letter code output for b,g,l,q,v,_
    6@ = 76
    else
        06D2: 26@v = "c"
        06D2: 27@v = "h"
        06D2: 28@v = "m"
        06D2: 29@v = "r"
        06D2: 30@v = "w"
        if or 
        0C18: 31@ = strstr string1 1@ string2 26@v
        0C18: 31@ = strstr string1 1@ string2 27@v
        0C18: 31@ = strstr string1 1@ string2 28@v
        0C18: 31@ = strstr string1 1@ string2 29@v
        0C18: 31@ = strstr string1 1@ string2 30@v
        then
        //first letter code output for c,h,m,r,w
        6@ = 86
        else
            06D2: 26@v = "d"
            06D2: 27@v = "i"
            06D2: 28@v = "n"
            06D2: 29@v = "t"
            06D2: 30@v = "x"
            if or
            0C18: 31@ = strstr string1 1@ string2 26@v
            0C18: 31@ = strstr string1 1@ string2 27@v
            0C18: 31@ = strstr string1 1@ string2 28@v
            0C18: 31@ = strstr string1 1@ string2 29@v  
            0C18: 31@ = strstr string1 1@ string2 30@v  
            then
            //first letter code output for d,i,n,t,x
            6@ = 81
            else
                06D2: 26@v = "e"
                06D2: 27@v = "j"
                06D2: 28@v = "o"
                06D2: 29@v = "u"
                06D2: 30@v = "y"
                if or
                0C18: 31@ = strstr string1 1@ string2 26@v
                0C18: 31@ = strstr string1 1@ string2 27@v
                0C18: 31@ = strstr string1 1@ string2 28@v
                0C18: 31@ = strstr string1 1@ string2 29@v
                0C18: 31@ = strstr string1 1@ string2 30@v
                then
                //first letter code output for e,j,o,u,y
                6@ = 84
                else
                //first letter code output for capital letter or any other letter/number
                6@ = 29
                end
            end    
        end        
    end            
end  

//SIXTH LETTER

06D2: 24@v = "a"
06D2: 26@v = "f"
06D2: 27@v = "k"
06D2: 28@v = "p"
06D2: 29@v = "u"
06D2: 30@v = "z"
if or 
0C18: 31@ = strstr string1 2@ string2 24@v
0C18: 31@ = strstr string1 2@ string2 26@v
0C18: 31@ = strstr string1 2@ string2 27@v
0C18: 31@ = strstr string1 2@ string2 28@v
0C18: 31@ = strstr string1 2@ string2 29@v
0C18: 31@ = strstr string1 2@ string2 30@v
then
//first letter code output for a,f,k,p,u,z
7@ = 5
else
    06D2: 24@v = "b"
    06D2: 26@v = "g"
    06D2: 27@v = "l"
    06D2: 28@v = "q"
    06D2: 29@v = "v"
    06D2: 30@v = "_"
    if or 
    0C18: 31@ = strstr string1 2@ string2 24@v
    0C18: 31@ = strstr string1 2@ string2 26@v
    0C18: 31@ = strstr string1 2@ string2 27@v
    0C18: 31@ = strstr string1 2@ string2 28@v
    0C18: 31@ = strstr string1 2@ string2 29@v
    0C18: 31@ = strstr string1 2@ string2 30@v
    then
    //first letter code output for b,g,l,q,v,_
    7@ = 65
    else
        06D2: 26@v = "c"
        06D2: 27@v = "h"
        06D2: 28@v = "m"
        06D2: 29@v = "r"
        06D2: 30@v = "w"
        if or 
        0C18: 31@ = strstr string1 2@ string2 26@v
        0C18: 31@ = strstr string1 2@ string2 27@v
        0C18: 31@ = strstr string1 2@ string2 28@v
        0C18: 31@ = strstr string1 2@ string2 29@v
        0C18: 31@ = strstr string1 2@ string2 30@v
        then
        //first letter code output for c,h,m,r,w
        7@ = 87
        else
            06D2: 26@v = "d"
            06D2: 27@v = "i"
            06D2: 28@v = "n"
            06D2: 29@v = "t"
            06D2: 30@v = "x"
            if or
            0C18: 31@ = strstr string1 2@ string2 26@v
            0C18: 31@ = strstr string1 2@ string2 27@v
            0C18: 31@ = strstr string1 2@ string2 28@v
            0C18: 31@ = strstr string1 2@ string2 29@v  
            0C18: 31@ = strstr string1 2@ string2 30@v  
            then
            //first letter code output for d,i,n,t,x
            7@ = 52
            else
                06D2: 26@v = "e"
                06D2: 27@v = "j"
                06D2: 28@v = "o"
                06D2: 29@v = "u"
                06D2: 30@v = "y"
                if or
                0C18: 31@ = strstr string1 2@ string2 26@v
                0C18: 31@ = strstr string1 2@ string2 27@v
                0C18: 31@ = strstr string1 2@ string2 28@v
                0C18: 31@ = strstr string1 2@ string2 29@v
                0C18: 31@ = strstr string1 2@ string2 30@v
                then
                //first letter code output for e,j,o,u,y
                7@ = 10
                else
                //first letter code output for capital letter or any other letter/number
                7@ = 90
                end
            end    
        end        
    end            
end    


//EIGHTH LETTER

06D2: 24@v = "a"
06D2: 26@v = "f"
06D2: 27@v = "k"
06D2: 28@v = "p"
06D2: 29@v = "u"
06D2: 30@v = "z"
if or 
0C18: 31@ = strstr string1 3@ string2 24@v
0C18: 31@ = strstr string1 3@ string2 26@v
0C18: 31@ = strstr string1 3@ string2 27@v
0C18: 31@ = strstr string1 3@ string2 28@v
0C18: 31@ = strstr string1 3@ string2 29@v
0C18: 31@ = strstr string1 3@ string2 30@v
then
//first letter code output for a,f,k,p,u,z
8@ = 57
else
    06D2: 24@v = "b"
    06D2: 26@v = "g"
    06D2: 27@v = "l"
    06D2: 28@v = "q"
    06D2: 29@v = "v"
    06D2: 30@v = "_"
    if or 
    0C18: 31@ = strstr string1 3@ string2 24@v
    0C18: 31@ = strstr string1 3@ string2 26@v
    0C18: 31@ = strstr string1 3@ string2 27@v
    0C18: 31@ = strstr string1 3@ string2 28@v
    0C18: 31@ = strstr string1 3@ string2 29@v
    0C18: 31@ = strstr string1 3@ string2 30@v
    then
    //first letter code output for b,g,l,q,v,_
    8@ = 35
    else
        06D2: 26@v = "c"
        06D2: 27@v = "h"
        06D2: 28@v = "m"
        06D2: 29@v = "r"
        06D2: 30@v = "w"
        if or 
        0C18: 31@ = strstr string1 3@ string2 26@v
        0C18: 31@ = strstr string1 3@ string2 27@v
        0C18: 31@ = strstr string1 3@ string2 28@v
        0C18: 31@ = strstr string1 3@ string2 29@v
        0C18: 31@ = strstr string1 3@ string2 30@v
        then
        //first letter code output for c,h,m,r,w
        8@ = 88
        else
            06D2: 26@v = "d"
            06D2: 27@v = "i"
            06D2: 28@v = "n"
            06D2: 29@v = "t"
            06D2: 30@v = "x"
            if or
            0C18: 31@ = strstr string1 3@ string2 26@v
            0C18: 31@ = strstr string1 3@ string2 27@v
            0C18: 31@ = strstr string1 3@ string2 28@v
            0C18: 31@ = strstr string1 3@ string2 29@v  
            0C18: 31@ = strstr string1 3@ string2 30@v  
            then
            //first letter code output for d,i,n,t,x
            8@ = 2
            else
                06D2: 26@v = "e"
                06D2: 27@v = "j"
                06D2: 28@v = "o"
                06D2: 29@v = "u"
                06D2: 30@v = "y"
                if or
                0C18: 31@ = strstr string1 3@ string2 26@v
                0C18: 31@ = strstr string1 3@ string2 27@v
                0C18: 31@ = strstr string1 3@ string2 28@v
                0C18: 31@ = strstr string1 3@ string2 29@v
                0C18: 31@ = strstr string1 3@ string2 30@v
                then
                //first letter code output for e,j,o,u,y
                8@ = 9
                else
                //first letter code output for capital letter or any other letter/number
                8@ = 48
                end
            end    
        end        
    end            
end 
006A: 5@ *= 6@
006A: 5@ *= 7@
0072: 5@ /= 8@    
0AB2: ret 1 5@ 


If you'd like to base your authentication code on some different letters than 2/4/6/8 you'd have to adjust the following line from ":get_2th_4th_6th_8th_letter" and adjust all the parts of the script where it's used
Code:
0AB2: ret 4 14@ 16@ 18@ 20@ //1st=13@ 2nd=14@ 3rd=15@ 4th=16@ 5th=17@ 6th=18@ 7th=19@ 8th=20@ 9th=21@ 10th=22@ 11th=23@ 12th=24@


Below is the part of the code responsible for coding distance, by adjusting 1@ value you change the final output distance code.
Code:
//0AB1: call_scm_func @code_distance 1 Distance 18@ Distance_code 18@
:code_distance
if 0033: 1.50 >= 0@
then 
1@ = 5.2
else
    if 0033: 7.75 >= 0@
    then 
    1@ = 3.1
    else
        if 0033: 12.50 >= 0@
        then
        1@ = 2.6
        else
            if 0033: 17.50 >= 0@
            then 
            1@ = 6.7
            else
                if 0033: 22.50 >= 0@
                then
                1@ = 1.6
                else
                    if 0033: 27.50 >= 0@
                    then
                    1@ = 7.9
                    else
                        if 0033: 32.50 >= 0@
                        then
                        1@ = 2.1
                        else
                            if 0033: 37.50 >= 0@
                            then 
                            1@ = 11.2
                            else
                                if 0033: 42.50 >= 0@
                                then
                                1@ = 1.2
                                else
                                    if 0033: 47.50 >= 0@
                                    then
                                    1@ = 24.4
                                    else
                                        if 0033: 52.50 >= 0@
                                        then
                                        1@ = 7.9
                                        else
                                            if 0033: 57.50 >= 0@
                                            then
                                            1@ = 2.1
                                            else
                                                if 0033: 62.50 >= 0@
                                                then 
                                                1@ = 11.2
                                                else
                                                    if 0033: 67.50 >= 0@
                                                    then
                                                    1@ = 1.2
                                                    else
                                                        if 0033: 72.50 >= 0@
                                                        then
                                                        1@ = 24.4
                                                        else
                                                            if 0033: 77.50 >= 0@
                                                            then
                                                            1@ = 15.7
                                                            else 
                                                                if 0033: 82.50 >= 0@
                                                                then
                                                                1@ = 12.9
                                                                else
                                                                1@ = 50.7
                                                                end
                                                            end
                                                        end
                                                    end
                                                end
                                            end
                                        end  
                                    end                                                                                                                                             
                                end     
                            end          
                        end             
                    end                 
                end                     
            end                         
        end
    end
end
006B: 0@ *= 1@
0017: 0@ /= 2.2
0AB2: ret 1 0@


Below is the part of the code responsible for coding length of the names, by adjusting 1@ you change the final output:
Code:
//0AB1: call_scm_func @code_letters_number 1 Number 22@ Individual_number_code 22@
:code_letters_number
if 0@ == 16
then 
1@ = 5154
else
    if 0@ == 17
    then 
    1@ = 3488
    else
        if 0@ == 18
        then
        1@ = 2915
        else
            if 0@ == 19
            then 
            1@ = 1221
            else
                if 0@ == 20
                then
                1@ = 1919
                else
                    if 0@ == 21
                    then
                    1@ = 6236
                    else
                        if 0@ == 22
                        then
                        1@ = 4124
                        else
                            if 0@ == 23
                            then 
                            1@ = 5753
                            else
                                if 0@ == 24
                                then
                                1@ = 9875
                                else
                                    if 0@ = 25
                                    then
                                    1@ = 2312
                                    else
                                    1@ = 12312
                                    end                                                                                                                                             
                                end     
                            end          
                        end             
                    end                 
                end                     
            end                         
        end
    end
end
0AB2: ret 1 1@

To replace password change "eagle" into any word(1752nd line of the script):
Code:
06D2: 11@v = "eagle" // @v = string


If you're going to adjust the way the code is generated then make sure that you also analogically change the checker function which is futher in the script marked as:
":CHECK_CODE_get_2th_4th_6th_8th_letter"
":CHECK_code_2th_4th_6th_8th_letter"
":CHECK_code_letters_number"
":CHECK_code_distance"
 

anonalonius

Member
Joined
Jun 12, 2014
Messages
13
Reaction score
0
I think you misunderstood me.  :youdontsay:

First I use /checkcode eagle

Then I use /victim NAMEHERE
Then I use /suspect NAMEHERE
Then I use /Distance DISTANCEHERE
Then I use /CODE  WTF DO I PUT HERE?
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
jO1vyam.png
 

monday

Expert
Joined
Jun 23, 2014
Messages
1,125
Reaction score
149
The code is generated automatically. Checking of the code is manual and that's where you use /code <xxxxxx> command
 
Status
Not open for further replies.
Top