{$CLEO}
{$NOSOURCE}
const
Information = 0@
Array_Info = 1@
ID = 1
Ping = 2
Health = 3
Armor = 4
Level = 5
Money = 6
Weapon = 7
Ammo = 8
Font = 2@
LenghtText = 3@
HeightText = 4@
ScreenLenghtX = 5@
ScreenLenghtY = 6@
PosX = 7@
PosY = 8@
SymvolSeparation = 9@
Event_Dialog = 11@
Control_Dialog = 12@
Dialog = 10@
Pos_X_Dialog = 0@
Pos_Y_Dialog = 1@
Dialog_Width_Var = 2@
Dialog_Height_Var = 3@
Dialog_Width = 320
Dialog_Height = 250
Dialog_BackGround_Color = 0x88AA0000
VK_ALT = 0x10
end
var
LenghtText : int
HeightText : int
ScreenLenghtX : int
ScreenLenghtY : int
Pos_X_Dialog : int
Pos_Y_Dialog : int
Dialog_Width_Var : int
Dialog_Height_Var : int
Dialog_Width : int
Dialog_Height : int
PosX : int
PosY : int
30@ : int
31@ : int
29@ : int
end
if
not 29@ = samp.Base()
then end_thread
else
while not samp.Available()
wait 0
end
end
gosub @create_dialog
0B6D: render Font = create_font "Comic Sans MS" height 12 flags 12
0ac8: Information = 10240
0c11: Information 0 10240
0ac8: Array_Info = 1024
0c11: Array_Info 0 1024
0ac8: SymvolSeparation = 4
0c11: SymvolSeparation 0 4
0ad3: SymvolSeparation "%c%c%c" 32 124 32
0b78: "{FFFF00}Player Informer load"
while 8B61: samp is_local_player_spawned
wait 0
end
PosY = 5
samp.GetScreenResolution(ScreenLenghtX, ScreenLenghtY)
PosX = ScreenLenghtX
PosX /= 2
gosub @GetInfo
gosub @sprintf
0B6B: render LenghtText = font Font draw_text Information length
LenghtText /= 2
PosX -= LenghtText
while true
wait 0
gosub @reload
gosub @dialog
gosub @OnMouseOver
gosub @GetInfo
gosub @sprintf
gosub @render
end
:render
PosY -= 5
PosX -= 3
0B69: render draw_box_pos PosX PosY size LenghtText HeightText color 0xAA000000
PosY += 5
PosX += 3
0B6F: render Font draw_text Information pos PosX PosY color 0xFFFF8C00
return
:OnMouseOver
dialog.PopEvent(Dialog, Event_Dialog, Control_Dialog)
if and
not Event_Dialog == 0
not Control_Dialog == 0
then
if and
Event_Dialog == 1025
Control_Dialog == 10
then
dialog.SetCheckBoxChecked(Dialog, 11, false)
0ad3: SymvolSeparation "%c%c%c" 32 124 32
end
if and
Event_Dialog == 1025
Control_Dialog == 11
then
dialog.SetCheckBoxChecked(Dialog, 10, false)
0ad3: SymvolSeparation "%c" 0xA
end
end
0B6B: render LenghtText = font Font draw_text Information length
0B6C: render HeightText = font Font draw_height
if call @find 1 Information
then
call @strnumsym 2 Information SymvolSeparation to 29@
29@ ++
HeightText *= 29@
0ac8: 24@ = 4
0ac8: 25@ = 4
0ad3: 24@ = "%c" 0xA
0ad3: 25@ = "/"
call @str_replace 3 Information 24@ 25@ Information
call @SizeX_Draw_Box 2 Information Font to LenghtText
call @str_replace 3 Information 25@ 24@ Information
0ac9: 24@
0ac9: 25@
end
HeightText += 10
LenghtText += 6
if call @is_cursor_here 4 start PosX PosY end_offset LenghtText HeightText to 30@ 31@
then
if key_down 2
then
while key_down 2
wait 0
gosub @render
end
gosub @dialog_active
end
if key_down 1
then
while key_down 1
wait 0
0B5E: get_cursor_pos PosX PosY
PosX -= 30@
PosY -= 31@
gosub @render
end
end
end
return
:GetInfo
$player_actor = actor.EmulateFromPlayer($player_char)
13@ = samp.GetSAMPPlayerIDByActorHandle($player_actor)
0C0F: array Array_Info element ID = 13@
14@ = samp.GetPlayerPing(13@)
0C0F: array Array_Info element Ping = 14@
14@ = samp.GetPlayerScore(13@)
0C0F: array Array_Info element Level = 14@
14@ = actor.Health($player_actor)
0C0F: array Array_Info element Health = 14@
04DD: 14@ = actor $player_actor armour
0C0F: array Array_Info element Armor = 14@
14@ = player.Money($player_char)
0C0F: array Array_Info element Money = 14@
0470: 14@ = actor $player_actor current_weapon
0C0F: array Array_Info element Weapon = 14@
041A: 14@ = actor $PLAYER_ACTOR weapon_id 14@ ammo
0C0F: array Array_Info element Ammo = 14@
return
:sprintf
0c11: Information 0 10240
if dialog.CheckBoxIsChecked(Dialog, 1)
then
0C0E: 14@ = array Array_Info element ID
14@ = samp.GetPlayerNickname(14@)
0ad3: Information = "{FFFF8C00}Nick: {FFFFFFFF}%s" 14@
end
if dialog.CheckBoxIsChecked(Dialog, 2)
then
0C0E: 14@ = array Array_Info element ID
0ad3: Information = "%s{FFFF8C00}%sID: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
if dialog.CheckBoxIsChecked(Dialog, 3)
then
0C0E: 14@ = array Array_Info element Ping
0ad3: Information = "%s{FFFF8C00}%sPing: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
if dialog.CheckBoxIsChecked(Dialog, 4)
then
0C0E: 14@ = array Array_Info element Level
0ad3: Information = "%s{FFFF8C00}%sLevel: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
if dialog.CheckBoxIsChecked(Dialog, 5)
then
0C0E: 14@ = array Array_Info element Health
0ad3: Information = "%s{FFFF8C00}%sHealth: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
if dialog.CheckBoxIsChecked(Dialog, 6)
then
0C0E: 14@ = array Array_Info element Armor
if 14@ > 0
then
0ad3: Information = "%s{FFFF8C00}%sArmor: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
end
if dialog.CheckBoxIsChecked(Dialog, 7)
then
0C0E: 14@ = array Array_Info element Money
if 14@ > 0
then
0ad3: Information = "%s{FFFF8C00}%sMoney: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
end
if dialog.CheckBoxIsChecked(Dialog, 8)
then
0C0E: 14@ = array Array_Info element Weapon
call @get_weapon_name_by_id 1 14@ to 14@
0ad3: Information = "%s{FFFF8C00}%sWeapon: {FFFFFFFF}%s" Information SymvolSeparation 14@
end
if
dialog.CheckBoxIsChecked(Dialog, 9)
then
0C0E: 14@ = array Array_Info element Ammo
if 14@ > 1
then
0ad3: Information = "%s{FFFF8C00}%sAmmo: {FFFFFFFF}%d" Information SymvolSeparation 14@
end
end
return
:create_dialog
dialog.Create(Dialog, "PI setting")
samp.GetScreenResolution(Pos_X_Dialog, Pos_Y_Dialog)
Dialog_Width_Var = Dialog_Width
Dialog_Height_Var = Dialog_Height
Dialog_Width_Var /= 2
Dialog_Height_Var /= 2
Pos_X_Dialog /= 2
Pos_Y_Dialog /= 2
Pos_X_Dialog -= Dialog_Height_Var
Pos_Y_Dialog -= Dialog_Width_Var
dialog.SetRECT(Dialog, Pos_X_Dialog, Pos_Y_Dialog, Dialog_Width, Dialog_Height)
dialog.SetBackgroundColor(Dialog, Dialog_BackGround_Color)
dialog.SetVisible(Dialog, false)
dialog.AddCheckBox(Dialog, 1, "Nickname", 0, 0, 110, 24)
dialog.addcheckbox(Dialog, 2, "ID", 110, 0, 50, 24)
dialog.addcheckbox(Dialog, 3, "Ping", 160, 0, 70, 24)
dialog.addcheckbox(Dialog, 4, "LvL", 230, 0, 60, 24)
dialog.addcheckbox(Dialog, 5, "Health", 0, 24, 90, 24)
dialog.addcheckbox(Dialog, 6, "Armor", 85, 24, 80, 24)
dialog.addcheckbox(Dialog, 7, "Money", 170, 24, 85, 24)
dialog.addcheckbox(Dialog, 8, "Weapon", 0, 48, 100, 24)
dialog.addcheckbox(Dialog, 9, "Ammo", 100 , 48, 80, 24)
dialog.addcheckbox(Dialog, 10, " | ", 0 , 72, 80, 24)
dialog.addcheckbox(Dialog, 11, "\n", 100 , 72, 80, 24)
dialog.SetCheckBoxChecked(Dialog, 1, true)
dialog.SetCheckBoxChecked(Dialog, 2, true)
dialog.SetCheckBoxChecked(Dialog, 3, true)
dialog.SetCheckBoxChecked(Dialog, 4, true)
dialog.SetCheckBoxChecked(Dialog, 5, true)
dialog.SetCheckBoxChecked(Dialog, 6, true)
dialog.SetCheckBoxChecked(Dialog, 7, true)
dialog.SetCheckBoxChecked(Dialog, 8, true)
dialog.SetCheckBoxChecked(Dialog, 9, true)
dialog.SetCheckBoxChecked(Dialog, 10, true)
return
:dialog
if 0adc: "dialog"
then
end
return
:dialog_active
if dialog.IsVisible(Dialog)
then
dialog.SetVisible(Dialog, false)
samp.ToggleCursor(false)
else
dialog.SetVisible(Dialog, true)
samp.ToggleCursor(true)
end
return
:reload
if 0adc: "player"
then
0b78: "{FFFF00}Player Informer reload"
run "Player Informer.cs"
0B6E: render release_font Font
0ac9: Information
0ac9: Array_Info
0BA4: Dialog free
end_thread
end
return
:SizeX_Draw_Box
var
4@ : int
5@ : int
end
0C17: 6@ = strlen 0@
0ac8: 3@ = 6@
0C13: strcpy destination 3@ source 0@
0C16: 2@ = strtok 3@ "/"
0B6B: render 4@ = font 1@ draw_text 3@ length
5@ = 4@
while not 3@ == 0
0C16: 3@ = strtok 0 "/"
if 3@ == 0
then break
end
0B6B: render 4@ = font 1@ draw_text 3@ length
if 4@ > 5@
then 5@ = 4@
end
end
0ac9: 3@
ret 1 5@
:str_replace
var
9@ : int
7@ : int
end
0C17: 5@ = strlen 0@
0A8D: 7@ = read_memory 1@ size 1 virtual_protect 0
0A8D: 8@ = read_memory 2@ size 1 virtual_protect 0
for 6@ = 1 to 5@
0C0C: 9@ = struct 0@ offset 6@ size 1
if 9@ == 7@
then 0C0D: struct 0@ offset 6@ size 1 = 8@
end
end
ret 1 0@
:find
var
0@ : int
1@ : int
5@ : int
4@ : int
end
6@ = 0
0c17: 2@ = strlen 0@
for 3@ = 1 to 2@
0A8D: 4@ = read_memory 0@ size 1 virtual_protect 0
0@ ++
if 4@ == 10
then break
end
end
if 4@ == 10
then return_true
else return_false
end
ret 0
:strnumsym
var
0@ : int
1@ : int
5@ : int
4@ : int
end
6@ = 0
0A8D: 5@ = read_memory 1@ size 1 virtual_protect 0
0c17: 2@ = strlen 0@
for 3@ = 1 to 2@
0A8D: 4@ = read_memory 0@ size 1 virtual_protect 0
0@ ++
if 5@ == 4@
then 6@++
end
end
ret 1 6@
:is_cursor_here
0B5E: get_cursor_pos 4@ 5@
if and
001D: 4@ > 0@
001D: 5@ > 1@
then
005A: 0@ += 2@
005A: 1@ += 3@
if and
001D: 0@ > 4@
001D: 1@ > 5@
then
0485: return_true
else
059A: return_false
end
0062: 0@ -= 2@
0062: 1@ -= 3@
else
059A: return_false
end
0062: 4@ -= 0@
0062: 5@ -= 1@
0AB2: ret 2 4@ 5@
:get_weapon_name_by_id
0AC6: 1@ = label @weapons offset
0@ *= 19
005A: 1@ += 0@
ret 1 1@
:weapons
hex
"Duke" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Brass" 20 "Knuckles" 00 00 00 00 00
"Golf" 20 "Club" 00 00 00 00 00 00 00 00 00 00
"Nite" 20 "Stick" 00 00 00 00 00 00 00 00 00
"Knife" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Baseball" 00 00 00 00 00 00 00 00 00 00 00
"Shovel" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Pool" 20 "Cue" 00 00 00 00 00 00 00 00 00 00 00
"Katana" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Chainsaw" 00 00 00 00 00 00 00 00 00 00 00
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Flowers" 00 00 00 00 00 00 00 00 00 00 00 00
"Cane" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Grenade" 00 00 00 00 00 00 00 00 00 00 00 00
"Tear" 20 "Gas" 00 00 00 00 00 00 00 00 00 00 00
"Molotov" 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Pistol" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Silencer" 00 00 00 00 00 00 00 00 00 00 00
"Deagle" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Shotgun" 00 00 00 00 00 00 00 00 00 00 00 00
"SawnOff" 00 00 00 00 00 00 00 00 00 00 00 00
"Spas12" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Tec9" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"MP5" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"AK47" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"M4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Mac10" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Rifle" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Sniper" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Rocket" 20 "Launcher" 00 00 00 00
"HS" 20 "Rocket" 20 "Launcher" 00
"Flamethrower" 00 00 00 00 00 00 00
"Minigun" 00 00 00 00 00 00 00 00 00 00 00 00
"C4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Detonator" 00 00 00 00 00 00 00 00 00 00
"Spray" 00 00 00 00 00 00 00 00 00 00 00 00 00 00
"Fire" 20 "Extinguisher" 00 00
"Camera" 00 00 00 00 00 00 00 00 00 00 00 00 00
"Nightvision" 00 00 00 00 00 00 00 00
"Infrared" 20 "Vision" 00 00 00 00
"Parachute" 00 00 00 00 00 00 00 00 00 00
end