- 3
- 0
Приветствую, в этой теме расскажу про интересный инструмент для программирования в самп
Название сие чуду — DX9-Overlay-API.
Итак, DX9-Overlay-API — это инструмент, который позволяет рисовать текст, фигуры или изображения поверх игр, использующих DirectX 9
Возможностей с этим оверлеем тьма, например, уведомления в вашем скрипте или текст с информацией или вообще свой худ сделат
сурс - https://github.com/agrippa1994/DX9-Overlay-API
p.s. понадобится 1.1 ahk
Примеры
Изменил код из стандартного примера что-бы работал лучше
Пример от моего товарища:
Название сие чуду — DX9-Overlay-API.
Итак, DX9-Overlay-API — это инструмент, который позволяет рисовать текст, фигуры или изображения поверх игр, использующих DirectX 9
Возможностей с этим оверлеем тьма, например, уведомления в вашем скрипте или текст с информацией или вообще свой худ сделат
сурс - https://github.com/agrippa1994/DX9-Overlay-API
p.s. понадобится 1.1 ahk
Примеры

Изменил код из стандартного примера что-бы работал лучше
код:
#NoEnv
#SingleInstance, force
#include ..\..\include\ahk\overlay.ahk
text_id := -1
process := "gta_sa.exe"
SetParam("process", process)
DestroyAllVisual()
text_id := TextCreate("Arial", 10, false, false, 10, 580, 0xFFFFFFFF, "Framerate: ", true, true)
if(text_id == -1)
{
MsgBox, The overlay couldn't be created!
ExitApp
}
Gui, Add, Text, x12 y20 w260 h20 vFramerate, %A_Space%
Gui, Show, w286 h64, Framerate
SetTimer, update, 10
return
GuiClose:
cleanOverlay()
ExitApp
update:
frames := GetFrameRate()
if(frames == -1)
{
cleanOverlay()
ExitApp
}
TextSetString(text_id, "FPS: {FFFF00}" . frames)
GuiControl, Text, Framerate, Framerate: %frames%
return
cleanOverlay()
{
DestroyAllVisual()
}
Пример от моего товарища:
Пример с фиксацией людей из моего биндера:
код:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#Include overlay.ahk
#Include udf.ahk
playerInfoTextID := -1
process := "gta_sa.exe"
SetParam("process", process)
playerInfoTextID := TextCreate("Verdana", 14, true, false, 10, 580, 0xFF00FF00, "Player Info: ", true, true)
if (playerInfoTextID == -1) {
MsgBox, The overlay couldn't be created!
ExitApp
}
UpdatePlayerInfoOverlay(name, id, lvl) {
global playerInfoTextID
playerInfo := "Player: " name " | ID: " id " | LVL: " lvl
TextSetString(playerInfoTextID, playerInfo)
}
~f3:: ;фикс по ид
SendMessage, 0x50,, 0x4190419,, A
BlockChatInput()
SendInput, {F6} Введите ID подозреваемого:{Space}
Input, fid, V,{Enter}
fname := GetPlayerNameById(fid)
flvl := GetPlayerScoreById(fid)
roz := WantedPlayer(fid)
playerFraction := playerFraction(fid)
Sleep, 100
if (fid = "") or (fid = "-1") or (fid > 999) {
AddChatMessage(tegg " Вы вписали неверный ID")
UnBlockChatInput()
return
} else {
IniWrite, %fname%, fics.ini, GPD, fnick
IniWrite, %fid%, fics.ini, GPD, fnum
IniWrite, %flvl%, fics.ini, GPD, fscore
if (fname = "") or (fname = "-1") {
AddChatMessage(tegg " Такого игрока нет в сети")
IniWrite, -1, fics.ini, GPD, fnick
IniWrite, -1, fics.ini, GPD, fnum
IniWrite, -1, fics.ini, GPD, fscore
return
} else {
AddChatMessage(tegg " Зафиксирован игрок {" playerFraction.color "} " fname " {FF0000} [" fid " ID] {FF0000}[" flvl " LVL] [Роз." roz "{FF0000}]")
UpdatePlayerInfoOverlay(fname, fid, flvl)
}
}
UnBlockChatInput()
return
GuiClose:
DestroyAllVisual()
ExitApp
f12::
DestroyAllVisual()
return
Последнее редактирование: