{$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
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 "|"
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
{
if call @find 1 Information
then
if 29@ == 10
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@
else
0B6B: render LenghtText = font Font draw_text Information length
end
end}
//HeightText += 10
PosY -= 5
PosX -= 3
//LenghtText += 6
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.addcheckbox(Dialog, 2, "ID", 110, 0, 50, 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
//0ab1: @str_replace 3 {String} 0@ {search_symvol} 1@ {replace_symvol} 2@ to {New_string} 0@
0C17: 5@ = strlen 0@
0A8D: 7@ = read_memory 1@ size 1 virtual_protect 0{search_symvol}
0A8D: 8@ = read_memory 2@ size 1 virtual_protect 0{replace_symvol}
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@++
// message "%d" -1 4@
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
{
Params:
In: 0@ - WeaponID
Out: 1@ - weaponName
Example: call @get_weapon_name_by_id 1 id 0@ to 1@
}
0AC6: 1@ = label @weapons offset
0@ *= 19
005A: 1@ += 0@ // (int)
ret 1 1@
:weapons
hex
"Duke" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 0 }
"Brass" 20 "Knuckles" 00 00 00 00 00 { 1 }
"Golf" 20 "Club" 00 00 00 00 00 00 00 00 00 00 { 2 }
"Nite" 20 "Stick" 00 00 00 00 00 00 00 00 00 { 3 }
"Knife" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 4 }
"Baseball" 00 00 00 00 00 00 00 00 00 00 00 { 5 }
"Shovel" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 6 }
"Pool" 20 "Cue" 00 00 00 00 00 00 00 00 00 00 00 { 7 }
"Katana" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 8 }
"Chainsaw" 00 00 00 00 00 00 00 00 00 00 00 { 9 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 10 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 11 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 12 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 13 }
"Flowers" 00 00 00 00 00 00 00 00 00 00 00 00 { 14 }
"Cane" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 15 }
"Grenade" 00 00 00 00 00 00 00 00 00 00 00 00 { 16 }
"Tear" 20 "Gas" 00 00 00 00 00 00 00 00 00 00 00 { 17 }
"Molotov" 00 00 00 00 00 00 00 00 00 00 00 00 { 18 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 19 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 20 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 21 }
"Pistol" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 22 }
"Silencer" 00 00 00 00 00 00 00 00 00 00 00 { 23 }
"Deagle" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 24 }
"Shotgun" 00 00 00 00 00 00 00 00 00 00 00 00 { 25 }
"SawnOff" 00 00 00 00 00 00 00 00 00 00 00 00 { 26 }
"Spas12" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 27 }
"Tec9" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 28 }
"MP5" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 29 }
"AK47" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 30 }
"M4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 31 }
"Mac10" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 32 }
"Rifle" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 33 }
"Sniper" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 34 }
"Rocket" 20 "Launcher" 00 00 00 00 { 35 }
"HS" 20 "Rocket" 20 "Launcher" 00 { 36 }
"Flamethrower" 00 00 00 00 00 00 00 { 37 }
"Minigun" 00 00 00 00 00 00 00 00 00 00 00 00{ 38 }
"C4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 39 }
"Detonator" 00 00 00 00 00 00 00 00 00 00 { 40 }
"Spray" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 41 }
"Fire" 20 "Extinguisher" 00 00 { 42 }
"Camera" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 43 }
"Nightvision" 00 00 00 00 00 00 00 00 { 44 }
"Infrared" 20 "Vision" 00 00 00 00 { 45 }
"Parachute" 00 00 00 00 00 00 00 00 00 00 { 46 }
end