Ninklosd
Новичок
- 12
- 0
Код:
{$CLEO .cs}
wait 8500
while true
wait 0
if
0256: player $PLAYER_ACTOR defined
then
0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
29@ += 0x4
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
for 30@ = 0 to 35584 step 0x100
0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
000A: 29@ += 0x1
if and
0029: 31@ >= 0x00
001B: 0x80 > 31@
then
005A: 31@ += 30@
if and
803B: 31@ == $PLAYER_ACTOR
056D: actor 31@ defined // not my ped
then
if and
8118: actor 31@ dead
02CB: actor 31@ bounding_sphere_visible
then
/*0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 31@ _Returned: ID 28@
0AB1: @IsPlayerConnected 1 ID 28@
0AB1: @GetPlayerNameByID 1 ID 28@ _Returned: Name 27@*/
0AB1: call_scm_func @GET_BONE_POS 2 FROM_ACTOR 31@ BONE 6 _STORE_TO 0@ 1@ 2@ // HEAD
0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@
5@ = Actor.Health(31@)
0093: 5@ = integer 5@ to_float
//0AB1: call_scm_func @drawNumber 6 coords_X 3@ coords_Y 4@ value 5@ R 255 G 255 B 255
0AB1: call_scm_func @drawBar 9 coords_X 3@ coords_Y 4@ value 5@ size X 12.0 Y 1.5 thickness 2.0 RGB 255 0 0
03F0: enable_text_draw 1
end
end
end
end
end
end
:drawNumber
//0AB1: call_scm_func @drawNumber 6 coords_X 0@ coords_Y 1@ value 2@ R 3@ G 4@ B 5@
0349: set_text_draw_font 1
0342: set_text_draw_centered 1
033F: set_text_draw_letter_size 0.3 0.9
081C: draw_text_outline 1 RGBA 0 0 0 255
0340: set_text_draw_RGBA 3@ 4@ 5@ 255
045A: draw_text_1number 0@ 1@ GXT 'NUMBER' number 2@ // ~1~
0AB2: ret 0
:IsPlayerConnected
{
IF 0AB1: @IsPlayerConnected 1 ID 0@
}
IF 0AA2: 31@ = "samp.dll"
THEN
0AB1: @get_samp_version_id 0 _returned: ID 17@
IF 17@ > 0
THEN
IF 17@ == 1 // 0.3.7 R1
THEN
0A8E: 30@ = 31@ + 0x21A0F8 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3CD // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x18 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
IF 17@ == 2 // 0.3.7 R2
THEN
0A8E: 30@ = 31@ + 0x21A100 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3C5 // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
IF 17@ == 3 // 0.3.DL
THEN
0A8E: 30@ = 31@ + 0x2ACA24 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
IF 17@ == 4 // 0.3.7 R3
THEN
0A8E: 30@ = 31@ + 0x26E8DC // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
IF 17@ == 5 // 0.3.7 R4
THEN
0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
IF 17@ == 6 // 0.3.7 R4 - v2
THEN
0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
IF 17@ == 7 // 0.3.7 R5
THEN
0A8E: 30@ = 31@ + 0x26EB94 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x10B0 // SAMP_IS_PLAYER_CONNECTED_OFFSET
END
0AA8: call_function_method 29@ struct 30@ num_params 1 pop 0 ID 0@ _Returned: Name 28@
IF 28@ > 0
THEN 0485: RETURN_TRUE
ELSE 059A: RETURN_FALSE
END
END
END
0AB2: ret 0
:GetPlayerNameByID
{
0AB1: @GetPlayerNameByID 1 ID 0@ _Returned: Name 31@
}
IF 0AA2: 31@ = "samp.dll"
THEN
0AB1: @get_samp_version_id 0 _returned: ID 17@
IF 17@ > 0
THEN
IF 17@ == 1 // 0.3.7 R1
THEN
0A8E: 30@ = 31@ + 0x21A0F8 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3CD // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x18 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x13CE0 // SAMP_GET_PLAYER_NAME_OFFSET
END
IF 17@ == 2 // 0.3.7 R2
THEN
0A8E: 30@ = 31@ + 0x21A100 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3C5 // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x13DA0 // SAMP_GET_PLAYER_NAME_OFFSET
END
IF 17@ == 3 // 0.3.DL
THEN
0A8E: 30@ = 31@ + 0x2ACA24 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x170D0 // SAMP_GET_PLAYER_NAME_OFFSET
END
IF 17@ == 4 // 0.3.7 R3
THEN
0A8E: 30@ = 31@ + 0x26E8DC // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x16F00 // SAMP_GET_PLAYER_NAME_OFFSET
END
IF 17@ == 5 // 0.3.7 R4
THEN
0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x8 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x17570 // SAMP_GET_PLAYER_NAME_OFFSET
END
IF 17@ == 6 // 0.3.7 R4 - v2
THEN
0A8E: 30@ = 31@ + 0x26EA0C // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x175C0 // SAMP_GET_PLAYER_NAME_OFFSET
END
IF 17@ == 7 // 0.3.7 R5
THEN
0A8E: 30@ = 31@ + 0x26EB94 // SAMP_INFO_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x3DE // SAMP_PPOOLS_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
30@ += 0x4 // SAMP_PPOOL_PLAYER_OFFSET
0A8D: 30@ = readMem 30@ sz 4 vp 0
0A8E: 29@ = 31@ + 0x175C0 // SAMP_GET_PLAYER_NAME_OFFSET
END
0AA8: call_function_method 29@ struct 30@ num_params 1 pop 0 ID 0@ _Returned: Name 28@
IF 28@ > 0
THEN 0485: RETURN_TRUE
ELSE 059A: RETURN_FALSE
END
END
END
0AB2: ret 1 28@
:SAMPGetPlayerIDByActorHandle
{
0.3.DL
IF 0AB1: @SAMPGetPlayerIDByActorHandle 1 _ActorHandle 0@ _Returned: ID 31@
}
IF 0AA2: 31@ = loadlib "samp.dll" // GET_SAMP_BASE
THEN
31@ += 0x2ACA24 // SAMP_INFO_OFFSET[0]
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_INFO
IF 31@ > 0
THEN
31@ += 0x3DE // SAMP_POOLS_OFFSET[0]
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // SAMP_POOLS_OFFSET
IF 31@ > 0
THEN
31@ += 0x8 // PLAYER_POOLS_OFFSET[0]
0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 // PLAYER_POOLS
IF 31@ > 0
THEN
IF 003B: 0@ == $PLAYER_ACTOR // COMPARE_HANDLE_WHICH_WAS_GIVEN
THEN
0A8E: 30@ = 31@ + 0x0 // LOCAL_PLAYER_ID_OFFSET[0]
0A8D: 28@ = read_memory 30@ size 2 virtual_protect 0 // LOCAL_PLAYER_ID
0AB2: RET 1 28@
ELSE
0A8E: 29@ = 31@ + 0x22 // MAX_PLAYER_ID_STREAMED_ONLY_OFFSET[0]
0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0 // MAX_PLAYER_ID_STREAMED_ONLY
FOR 28@ = 0 TO 29@ // FROM "0" TO "MAX_PLAYER_ID_STREAMED_ONLY"
27@ = 0x4 // SAVE VARIABLE "27@" AS DIGIT "4"
006A: 27@ *= 28@ // 4 * ID
0A8E: 26@ = 31@ + 0x26 // SAVE TO NEW "26@" VARIABLE "PLAYER_POOLS" + "REMOTE_PLAYER_OFFSET[0]"
005A: 26@ += 27@ // REMOTE_PLAYER_OFFSET + 4 * ID
0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // REMOTE_PLAYER
IF 26@ > 0
THEN
26@ += 0x8 // PLAYER_DATA_OFFSET[0]
0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // PLAYER_DATA
IF 26@ > 0
THEN
26@ += 0x4 // SAMP_ACTOR_OFFSET[0]
0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // SAMP_ACTOR
IF 26@ > 0
THEN
26@ += 0x44 // GTA_PED_HANDLE_OFFSET[0]
0A8D: 26@ = read_memory 26@ size 4 virtual_protect 0 // GTA_PED_HANDLE
IF 26@ > 0
THEN
IF 003B: 0@ == 26@ // COMPARE_HANDLE_WHICH_WAS_GIVEN
THEN
0485: RETURN_TRUE
0AB2: RET 1 28@
END
END
END
END
END
END
END
END
END
END
END
059A: RETURN_FALSE
0AB2: RET 0
:get_samp_version_id
// 0AB1: @get_samp_version_id 0 _returned: ID 0@
30@ = 0
IF 0AA2: 31@ = "samp.dll" // IF and SET
THEN
31@ += 0x128
0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
IF 29@ == 0x5542F47A
THEN // 0.3.7 R1
30@ = 1
END
IF 29@ == 0x59C30C94
THEN // 0.3.7 R2
30@ = 2
END
IF 29@ == 0x5A6A3130
THEN // 0.3.DL
30@ = 3
END
31@ -= 8 // reading samp.dll + 0x120
0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
IF 29@ == 0x5C0B4243
THEN // 0.3.7 R3
30@ = 4
END
IF 29@ == 0x5DD606CD
THEN // 0.3.7 R4
30@ = 5
END
IF 29@ == 0x6094ACAB
THEN // 0.3.7 R4 - v2
30@ = 6
END
IF 29@ == 0x6372C39E
THEN // 0.3.7 R5
30@ = 7
END
END
0AB2: ret 1 30@
:GET_BONE_POS
0085: 10@ = 0@ // (int)
0085: 15@ = 1@ // (int)
1@ = 0.0 // X offset
2@ = 0.0 // Y offset {THX TO: WESSER}
3@ = 0.0 // Z offset
0A96: 0@ = actor 10@ struct
0AC7: 4@ = var 1@ offset
0AA6: call_method 0x5E01C0 struct 0@ num_params 3 pop 0 bIncludeAnim 1 iBoneID 15@ vOffset 4@ // CPed__getBonePositionWithOffset
0AB2: retn 3 1@ 2@ 3@
:getScreenXYFrom3DCoords
0AC7: 14@ = var 0@ offset
0AC7: 15@ = var 3@ offset
0AC7: 16@ = var 6@ offset
0AC7: 17@ = var 9@ offset
0AA5: call 0x70CE30 num_params 6 pop 6 {18@ 18@} 0 0 17@ 16@ 15@ 14@
0007: 12@ = 640.0
0007: 13@ = 448.0
0A8D: 14@ = read_memory 0xC17044 size 4 virtual_protect 0
0A8D: 15@ = read_memory 0xC17048 size 4 virtual_protect 0
0093: 14@ = integer 14@ to_float
0093: 15@ = integer 15@ to_float
0073: 12@ /= 14@
0073: 13@ /= 15@
006B: 3@ *= 12@
006B: 4@ *= 13@
0AB2: ret 2 3@ 4@
:drawBar
13@ = 100
0073: 13@ /= 3@ // (float)
0073: 2@ /= 13@ // (float)
0087: 11@ = 3@ // (float)
0087: 12@ = 4@ // (float)
005B: 11@ += 5@ // (float)
005B: 12@ += 5@ // (float)
038E: draw_box_position 0@ 1@ size 11@ 12@ RGBA 0 0 0 255
038E: draw_box_position 0@ 1@ size 3@ 4@ RGBA 6@ 7@ 8@ 255
0087: 10@ = 2@ // (float)
0017: 10@ /= 2.0
0017: 3@ /= 2.0
005B: 0@ += 10@ // (float)
0063: 0@ -= 3@ // (float)
038E: draw_box_position 0@ 1@ size 2@ 4@ RGBA 255 0 0 255
0AB2: ret 0