Hello UG-BASE, I've decided to release a cleo mod for you!
In this cleo mod, it search for streamed pickups (gun pickups, health pickups, armour pickups and all other server sided pickups) and then marks the position of pickup in mini-map, creates a red box around the pickup (which can be seen through solid objects), shows the distance from the pickup and also shows the amount of streamed pickups.
This pickup finder is only limited to 33 pickups at a time else it will crash the game. It do not find/search for mapped objects (like stairs, lights or gates).
This mod is screenshot protected, means if you take a screen, the cheat will be toggled for 1 second and then will be enabled again automatically!
Commands to toggle this cheat : /sp
This mod has been updated to PickupV1.1.
Added few commands (/spstp, /sptp, /spspec, /spspecoff, /spdel, /spsync, use /spcmds to view the function of each command in detail)
Every pickup has it's own ID which is shown when the mod is activated, by that pickup ID (Not model number) you can perform the commands above!
I'm not releasing the source of PickupV1.1 since my other mods have been released illegally.
Requirements to run this mod are (Same for V1.1):
SAMPFUNC 5.2.1
CLEO 4.1
Source code of 1.1[UPDATED]:
If you want to find with model ID, here is the snippet from blasthack.net.
It's an open source, feel free to edit it according to your needs.
Download in Attachments
Password is "ugbase.eu"
In this cleo mod, it search for streamed pickups (gun pickups, health pickups, armour pickups and all other server sided pickups) and then marks the position of pickup in mini-map, creates a red box around the pickup (which can be seen through solid objects), shows the distance from the pickup and also shows the amount of streamed pickups.
This pickup finder is only limited to 33 pickups at a time else it will crash the game. It do not find/search for mapped objects (like stairs, lights or gates).
This mod is screenshot protected, means if you take a screen, the cheat will be toggled for 1 second and then will be enabled again automatically!
Commands to toggle this cheat : /sp
This mod has been updated to PickupV1.1.
Added few commands (/spstp, /sptp, /spspec, /spspecoff, /spdel, /spsync, use /spcmds to view the function of each command in detail)
Every pickup has it's own ID which is shown when the mod is activated, by that pickup ID (Not model number) you can perform the commands above!
I'm not releasing the source of PickupV1.1 since my other mods have been released illegally.
Requirements to run this mod are (Same for V1.1):
SAMPFUNC 5.2.1
CLEO 4.1
Source code of 1.1[UPDATED]:
Code:
{$CLEO}
0000: NOP
Thread "Pickup finder, version 1.1 by Codex1337"
const
SCREEN_SHOT_KEY = 119
end
:Misc
wait 0
if 0AAB: file_exists "CLEO\PickupSett.ini"
then
0B34: samp register_client_command "sp" to_label @Pickup_status
0B34: samp register_client_command "spcmds" to_label [member=21661]S[/member]pcmds
0B34: samp register_client_command "sptp" to_label [member=21661]S[/member]ptp
0B34: samp register_client_command "spstp" to_label [member=21661]S[/member]pstp
0B34: samp register_client_command "tpdel" to_label @tpdel
0B34: samp register_client_command "spspec" to_label [member=21661]S[/member]pspec
0B34: samp register_client_command "spspecoff" to_label [member=21661]S[/member]pspecoff
0B34: samp register_client_command "spsync" to_label [member=21661]S[/member]psync
0B34: samp register_client_command "spdel" to_label [member=21661]S[/member]pdel
0B34: samp register_client_command "sppool" to_label [member=21661]S[/member]ppool
0AA8: call_function_method 0x6A0050 0xC1B340 num_params 1 pop 0 'CRED445' 10@
0AA5: call 0x718600 2 pop 2 10@ "...Pickup distance: ~1~ meters..."
0AA8: call_function_method 0x6A0050 0xC1B340 num_params 1 pop 0 'CRED444' 11@
0AA5: call 0x718600 2 pop 2 11@ "~N~...Pickup ID : ~1~..."
0AA8: call_function_method 0x6A0050 0xC1B340 num_params 1 pop 0 'CRED444' 12@
0AA5: call 0x718600 2 pop 2 12@ "~N~...Pickup Model : ~1~..."
wait 1000
0AF8: samp add_message_to_chat "{BFBFBF}Pickup finder has been loaded successfully! {FFF000}Current cheat version : 1.1 - Type /spcmds to begin!" color -1
else printf "~R~ERROR: ~P~Missing ~R~'PickupSett.ini ~B~from ~Y~GTASA/CLEO ~L~folder! ~N~~P~Closing the mod" 5000
end
03F0: enable_text_draw 1
WHILE TRUE
wait 0
if 31@ == 1
then
for 1@ = 0 to 4096
if 0B51: samp 2@ = pickup_handle_by_id 1@
then
065B: store_pickup 2@ position_to 3@ 4@ 5@
0AB1: call_scm_func @mark_on_radar 4 Pickup 3@ 4@ 5@ colour 0xFF3F44D1
0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 3@ Y 4@ Z 5@ store_screen_X_to 7@ Y_to 8@
0AB1: call_scm_func @DRAW_OUTLINED_BOX 9 POS 7@ 8@ SIZE 50.0 50.0 RGBA 255 0 0 255 THICKNESS 2.5
00A0: store_actor $PLAYER_ACTOR position_to 10@ 11@ 12@
050A: 13@ = distance_between_XYZ 3@ 4@ 5@ and_XYZ 10@ 11@ 12@
0092: 13@ = float 13@ to_integer
0342: set_text_draw_centered 1
03E0: draw_text_behind_textures 0
033F: set_text_draw_letter_size width 0.17 height 0.77
081C: draw_text_outline 1 RGBA 0 0 0 255
0340: set_text_draw_RGBA 0 255 0 255
045A: draw_text_1number 7@ 8@ GXT 'CRED445' number 13@
0342: set_text_draw_centered 1
03E0: draw_text_behind_textures 0
033F: set_text_draw_letter_size width 0.17 height 0.77
081C: draw_text_outline 1 RGBA 0 0 0 255
0340: set_text_draw_RGBA 0 255 0 255
045A: draw_text_1number 7@ 8@ GXT 'CRED444' number 1@
9@++
end
end
printf "~R~Streamed ~P~pickups:~B~ %d" 1 9@
9@ = 0
end
if $TP_BACK_TO_POINT == 1
then
28@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
29@ = SAMP.GetPlayerPing(28@)
0AF0: 29@ = get_int_from_ini_file "cleo\PickupSett.ini" section "Settings" key "TeleportDel"
wait 29@
$BACKUP_POS_Z -= 1.0
00A1: put_actor $PLAYER_ACTOR at $BACKUP_POS_X $BACKUP_POS_Y $BACKUP_POS_Z
$TP_BACK_TO_POINT = 0
end
if $SPSPEC_CMD == 1
then
15@ += 5.0
16@ += 5.0
015F: set_camera_position 14@ 15@ 16@ rotation 0.0 0.0 0.0
15@ -= 5.0
16@ -= 5.0
0160: set_camera_point_at 14@ 15@ 16@ switchstyle 2
end
if $pPickupSyncEnabled == 1
then
0BD1: samp send_picked_up_pickup $PICKUP_HANDLE1337
$pPickupSyncEnabled = 0
end
if key_down SCREEN_SHOT_KEY
then
if $SPSPEC_CMD == 1
then
$SPSPEC_CMD = 0
02EB: restore_camera_with_jumpcut
wait 1000
$SPSPEC_CMD = 1
else
wait 1000
end
end
END
:Pickup_status
0B12: 31@ = 31@ XOR 1
if 31@ == 1
then
0AF8: samp add_message_to_chat "{BFBFBF}Pickup finder has been {FF0000}started" color -1
else
0AF8: samp add_message_to_chat "{BFBFBF}Pickup finder has been {FF0000}stopped" color -1
end
SAMP.CmdRet()
:spcmds
0AF8: samp add_message_to_chat "{BFBFBF}...{FF0000}...{BFBFBF}...{FF0000} ___ Pickup finder{FF0000} commands list ___ ...{BFBFBF}...{FF0000}...{BFBFBF}." color -1
0AF8: samp add_message_to_chat "{BFBFBF}/sp -{FF0000} Toggles the pickup finder [ Must enabled it before using any command given below ]" color -1
0AF8: samp add_message_to_chat "{BFBFBF}/sptp <pickupid> -{FF0000} Teleports to the pickup location" color -1
0AF8: samp add_message_to_chat "{BFBFBF}/spstp <pickupid> -{FF0000} Teleports to the pickup location and then back to your old location" color -1
0AF8: samp add_message_to_chat "{BFBFBF}Type /tpdel {FF0000}<milliseconds> - Adjust the duration between teleporting back to your old location " color -1
0AF8: samp add_message_to_chat "{BFBFBF}/spspec <pickupid> -{FF0000} Lets you to spectate the pickup" color -1
0AF8: samp add_message_to_chat "{BFBFBF}/spspecoff <pickupid> -{FF0000} Turns off the pickup spectating mode" color -1
0AF8: samp add_message_to_chat "{BFBFBF}/spsync <pickupid> -{FF0000} Sends fake picked up pickup data" color -1
0AF8: samp add_message_to_chat "{BFBFBF}/spdel -{FF0000} Deletes the pickup (Not synched)" color -1
0AF8: samp add_message_to_chat "{BFBFBF}Any feature in this mod is {FFF000}Screenshot(F8) protected" color -1
0AF8: samp add_message_to_chat "{BFBFBF}----------------------------------------{FF0000}----------------------------------------" color -1
SAMP.CmdRet()
:sptp
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $NOUSETILLNOW //IF and SET
then
for 1@ = 0 to 10000
if 0B51: samp $PICKUP_HANDLE1337 = pickup_handle_by_id 1@
then
if 003B: 1@ == $NOUSETILLNOW
then
065B: store_pickup $PICKUP_HANDLE1337 $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3
$TEMPVAR_FLOAT_3 -= 1.0
00A1: put_actor $PLAYER_ACTOR at $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3
else 0AF8: samp add_message_to_chat "{BFBFBF}Invalid -{FF0000} Pickup ID" color -1
end
end
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /sptp <pickupid>" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:spstp
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $NOUSETILLNOW //IF and SET
then
for 1@ = 0 to 10000
if 0B51: samp $PICKUP_HANDLE1337 = pickup_handle_by_id 1@
then
if 003B: 1@ == $NOUSETILLNOW
then
00A0: store_actor $PLAYER_ACTOR position_to $BACKUP_POS_X $BACKUP_POS_Y $BACKUP_POS_Z
065B: store_pickup $PICKUP_HANDLE1337 $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3
$TEMPVAR_FLOAT_3 -= 1.0
00A1: put_actor $PLAYER_ACTOR at $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3
$TP_BACK_TO_POINT = 1
else 0AF8: samp add_message_to_chat "{BFBFBF}Invalid -{FF0000} Pickup ID" color -1
end
end
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /spstp <pickupid>" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:spspec
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $NOUSETILLNOW //IF and SET
then
for 1@ = 0 to 10000
if 0B51: samp $PICKUP_HANDLE1337 = pickup_handle_by_id 1@
then
if 003B: 1@ == $NOUSETILLNOW
then
$SPSPEC_CMD = 0
$SPSPEC_CMD = 1
065B: store_pickup $PICKUP_HANDLE1337 14@ 15@ 16@
else 0AF8: samp add_message_to_chat "{BFBFBF}Invalid -{FF0000} Pickup ID" color -1
end
end
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /spstp <pickupid>" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:spspecoff
if 31@ == 1
then
if $SPSPEC_CMD == 1
then
$SPSPEC_CMD = 0
02EB: restore_camera_with_jumpcut
else 0AF8: samp add_message_to_chat "{BFBFBF}You are not{FF0000} spectating!" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:spsync
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $NOUSETILLNOW //IF and SET
then
for 1@ = 0 to 10000
if 0B51: samp $PICKUP_HANDLE1337 = pickup_handle_by_id 1@
then
if 003B: 1@ == $NOUSETILLNOW
then
$pPickupSyncEnabled = 1
065B: store_pickup $PICKUP_HANDLE1337 position to $pPickupPosX199 $pPickupPosY199 $pPickupPosZ199
else 0AF8: samp add_message_to_chat "{BFBFBF}Invalid -{FF0000} Pickup ID" color -1
end
end
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /spsync <pickupid>" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:spdel
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $NOUSETILLNOW //IF and SET
then
for 1@ = 0 to 10000
if 0B51: samp $PICKUP_HANDLE1337 = pickup_handle_by_id 1@
then
if 003B: 1@ == $NOUSETILLNOW
then
0215: destroy_pickup $PICKUP_HANDLE1337
else 0AF8: samp add_message_to_chat "{BFBFBF}Invalid -{FF0000} Pickup ID" color -1
end
end
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /spdel <pickupid>" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:tpdel
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $WAIT_DURATION_BEFORE_TP_BACK //IF and SET
then
if $WAIT_DURATION_BEFORE_TP_BACK >= 0
then
0AF8: samp add_message_to_chat "{BFBFBF}Teleport delay {FF0000}set to %d milliseconds" color -1 $WAIT_DURATION_BEFORE_TP_BACK
0AF1: write_int $WAIT_DURATION_BEFORE_TP_BACK to_ini_file "cleo\PickupSett.ini" section "Settings" key "TeleportDel"
else 0AF8: samp add_message_to_chat "{BFBFBF}Delay duration can not be{FF0000} negative" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /tpdel <delay in ms>" color -1
end
else
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
:sppool
if 31@ == 1
then
SAMP.IsCommandTyped(0@)
if 0AD4: 0@ = scan_string 0@ format "%d" $NOUSETILLNOW //IF and SET
then
for 1@ = 0 to 10000
if 0B51: samp $PICKUP_HANDLE1337 = pickup_handle_by_id 1@
then
if 003B: 1@ == $NOUSETILLNOW
then
0BB9: samp 25@ = get_pickup_pool_ptr
0A9A: $hFILE = openfile "PickupSett.ini" mode 0x77 // IF and SET
0A9E: writefile $hFILE size 256 from 25@
else 0AF8: samp add_message_to_chat "{BFBFBF}Invalid -{FF0000} Pickup ID" color -1
end
end
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Usage -{FF0000} /sppool <pickupid>" color -1
end
else 0AF8: samp add_message_to_chat "{BFBFBF}Please toggle the Pickup finder first -{FF0000} COMMAND: /sp" color -1
end
SAMP.CmdRet()
//0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@
:getScreenXYFrom3DCoords
0AA7: call_function 0x70CE30 num_params 6 pop 6 clipNear 1 clipFar 1 yMult 7[member=21661]S[/member] xMult 6[member=21661]S[/member] outVector 2[member=21661]S[/member] inVector 0[member=21661]S[/member] result 29@
0073: 2@ /= 6@
0073: 2@ /= 4@
0073: 3@ /= 7@
0073: 3@ /= 4@
2@ *= 640.0
3@ *= 448.0
0AB2: ret 2 2@ 3@
//0AB1: @DRAW_OUTLINED_BOX 9 POS 300.0 300.0 SIZE 50.0 50.0 RGBA 255 0 0 255 THICKNESS 0.5
:DRAW_OUTLINED_BOX
0087: 14@ = 8@ // (float)
0087: 12@ = 2@ // (float)
0087: 13@ = 3@ // (float)
12@ /= 2.0 // (float)
13@ /= 2.0 // (float)
0087: 8@ = 0@ // (float)
005B: 8@ += 2@ // (float)
0063: 8@ -= 12@ // (float)
0087: 9@ = 0@ // (float)
0063: 9@ -= 2@ // (float)
005B: 9@ += 12@ // (float)
0087: 10@ = 1@ // (float)
005B: 10@ += 3@ // (float)
0063: 10@ -= 13@ // (float)
0087: 11@ = 1@ // (float) by OpcodeXe
0063: 11@ -= 3@ // (float)
005B: 11@ += 13@ // (float)
03F0: enable_text_draw 1
038E: draw_box_position 8@ 1@ size 14@ 3@ RGBA 4@ 5@ 6@ 7@ // links
038E: draw_box_position 9@ 1@ size 14@ 3@ RGBA 4@ 5@ 6@ 7@ // rechts
038E: draw_box_position 0@ 10@ size 2@ 14@ RGBA 4@ 5@ 6@ 7@ // oben
038E: draw_box_position 0@ 11@ size 2@ 14@ RGBA 4@ 5@ 6@ 7@ // unten
0AB2: 0
//0AB1: call_scm_func @mark_on_radar 1 Pickup 0@
:mark_on_radar
06AC: 21@ = actor $PLAYER_ACTOR movement_speed
if 0021: 21@ > 50.0
then
21@ = 50.0
end
006B: 21@ *= 21@
17@ = -0.514
0017: 17@ /= 2500.0
006B: 17@ *= 21@
000B: 17@ += 0.7
0B60: convert_game_screen_coords 86.0 383.0 to_window_screen_coords 6@ 7@
0AB1: @POSITION_TO_RADAR 7 XYZ 0@ 1@ 2@ RADAR_POS 6@ 7@ DISTANCE_MULTIPLIER 17@ MAX_DISTANCE 130.0 _STORE_TO 0@ 1@
0B70: draw_polygon_pos 0@ 1@ size 15 15 corners 50 rotation 0 color 3@ //
0AB2: ret 0
//0AB1: @POSITION_TO_RADAR 7 XYZ 0.0 0.0 0.0 RADAR_POS 400 400 DISTANCE_MULTIPLIER 1.5 MAX_DISTANCE 300.0 _STORE_TO 1@ 2@
:POSITION_TO_RADAR
04C4: 10@ 11@ 12@ = XYZ $PLAYER_ACTOR 0.0 0.0 0.0
050A: 13@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 10@ 11@ 12@
IF
0025: 13@ > 6@
THEN
0087: 13@ = 6@ // (float)
END
006B: 13@ *= 5@
0AB1: @getZAngleBetweenPoints 4 from_XY 10@ 11@ and_XY 0@ 1@ store_to 14@
14@ *= -1.0
0AB1: @getCameraFacingAngle 0 15@
005B: 14@ += 15@
0093: 3@ = integer 3@ to_float
0093: 4@ = integer 4@ to_float
0AB1: @makeCordinate 4 posXY 3@ 4@ Z_Angle 14@ Distance 13@ STORE_TO 16@ 17@
0092: 16@ = float 16@ to_integer
0092: 17@ = float 17@ to_integer
0AB2: 2 16@ 17@
:makeCordinate
//0@ = radar pos X
//1@ = radar pos Y
//2@ = z_angle
//3@ = Distance
//10@ = new variable
2@ *= -1.0
//x adjustment
02F6: 10@ = sine 2@
006B: 10@ *= 3@
005B: 0@ += 10@
//y adjustment
02F7: 10@ = cosine 2@
006B: 10@ *= 3@
0017: 10@ /= 640.0
0013: 10@ *= 480.0
005B: 1@ += 10@
0AB2: 2 0@ 1@
:getCameraFacingAngle
00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@
0AA6: call_method 0x514970 struct 0xB6F028 num_params 6 pop 0 0xA49994 0xA499A0 3@ 2@ 1@ 20.0
0AB1: call_scm_func @getZAngleBetweenPoints 4 from_XY $13 $14 and_XY 1@ 2@ store_to 4@
0AB2: 1 4@
:getZAngleBetweenPoints
0063: 0@ -= 2@
0063: 1@ -= 3@
0604: get_Z_angle_for_point 0@ 1@ store_to 4@
0AB2: 1 4@
If you want to find with model ID, here is the snippet from blasthack.net.
Code:
:getPickupIdByModel
0BB9: samp 1@ = get_pickup_pool_ptr
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0 // PickupsCount
if 2@ > 0
then
0A8E: 2@ = 1@ + 0x4 // ul_GTA_PickupID
0A8E: 3@ = 1@ + 0xF004 // stPickup
for 4@ = 0 to 4095 step 1
0A90: 5@ = 4@ * 4
005A: 5@ += 2@
0A8D: 5@ = read_memory 5@ size 4 virtual_protect 0
if 5@ <> 0
then
0A90: 5@ = 4@ * 20
005A: 5@ += 3@
0A8D: 5@ = read_memory 5@ size 4 virtual_protect 0 // pickupModel
if 003b: 5@ == 0@
then
0485: return_true
0AB2: ret 1 4@
end
end
end
end
059A: return_false
0AB2: ret 1 -1
It's an open source, feel free to edit it according to your needs.
Download in Attachments
Password is "ugbase.eu"