Перейти к содержанию

Рисование сообщения внутри игры


MasterGH

Рекомендуемые сообщения

СООБЩЕНИЕ ВНУТРИ ИГРЫ

post-3-0-34065400-1349798647_thumb.png

Например, необходимо

1) сообщить пользователю об активации чита прямо внутри игры

2) нет времени писать на С++

3) любим использовать формат *.CETRAINER или другие генерируемые Cheat Engine

4) хотим просто воспользоваться моим примером

5) хотим исследовать функциональность Cheat Egine

Итак я покажу как вывести сообщение внутри игры при нажатии комбинации горячих клавиш. Это сообщение пропадёт через 2 секунды.

Конечный результат. Это просто окно DirectX программы в которой клинтские части могут двигать звезду на серверной части... Короче это вместо окна любой игры на Windows (поддерживающая directx 9,10,11).

post-3-0-34065400-1349798647_thumb.png

рис.1

Техническая форма трейнера

post-3-0-56368600-1349798635_thumb.png

рис.2

Скачать .CETRAINER

CenterMessageInGame.rar

Как разобраться в моём скрипте.

Сначала посмотрим на него целиком через редактор Notpad++


isD3dhook_initializeHook = false
isTimerShowingMessageInGameMenu = false
function OnCloseClick(sender)
closeCE()
return caFree
end
trainerForm = createForm()
form_onClose(trainerForm, OnCloseClick)
control_setCaption(trainerForm, 'Trainer Form v1.0 (in game message)')
form_centerScreen(trainerForm)
exitBtn = createButton(trainerForm)
control_setCaption(exitBtn, 'Exit')
control_onClick(exitBtn, OnCloseClick)
control_setSize(exitBtn, 200, 70)
control_setPosition(exitBtn, 62, 130)
labelCaption1 = createLabel(trainerForm)
control_setCaption(labelCaption1, 'Press in game: CTRL + 1')
control_setPosition(labelCaption1, 62, 30)
form_show(trainerForm)

autoAttachList = getAutoAttachList()
stringlist_add(autoAttachList, processName);
function onOpenProcess(processid)
if not isD3dhook_initializeHook then
reinitializeSymbolhandler()
d3dhook_initializeHook()
isD3dhook_initializeHook = true
ShowMessageInGame('GAMEHACKLAB Present', 400, 100, 2)
end
end

function OnTickTimerShowingMessageInGameMenu(senderTimer)
timer_setEnabled(senderTimer, false)
object_destroy(senderTimer)
object_destroy(displayedTextObject)
object_destroy(fontmap)
object_destroy(font)
isTimerShowingMessageInGameMenu = false
end

function ShowMessageInGame(stringMessage, fontWidthTextContainer, fontHeightTextContainer, timeShowing)
font = createFont()
font_setSize(font, 24)
font_setColor(font,0x0000ff) --red rgb
fontmap = d3dhook_createFontmap(font)
displayedTextObject = d3dhook_createTextContainer(fontmap, fontWidthTextContainer, fontHeightTextContainer, stringMessage )
d3dhook_renderobject_setY(displayedTextObject, -1)
d3dhook_renderobject_setX(displayedTextObject, -1)
messageTimer = createTimer(nil, false)
timer_setInterval(messageTimer, timeShowing * 1000)
timer_onTimer(messageTimer, OnTickTimerShowingMessageInGameMenu)
timer_setEnabled(messageTimer, true)
isTimerShowingMessageInGameMenu = true
end

pressCount = 0
function OnKeyPressSomeActivate()
if not isTimerShowingMessageInGameMenu then
pressCount = pressCount + 1
ShowMessageInGame('Message count №'..pressCount..' !', 400, 100, 2)
end
end
createHotkey(OnKeyPressSomeActivate, VK_CONTROL, VK_1)
processName = 'Trainer.exe'

Код создаёт техническую форму трейнера и начитает искать процесс Trainer.exe

Код создаёт ХотКей комбинацию горячих клавиш (см. [1*])

Когда код находит процесс, то код проводит инициализацию DirectX хука.

Затем показывается сообщение GAMEHACKLAB Present

Теперь если нажали на комбинацию клавиш, то видим другое сообщение и его счётчик

Мы не можем теперь вывести другое сообщение пока старое не пропадёт.

Если старое сообщение пропало, то теперь можно вывести новое.

Более подробное ищите информацию по функциям.

Важное дополнения после статьи.

[1*] Я увидел, что создаю хоткей независимо от того нашёлся процесс или нет. Поэтому нужно создавать его после иницилазации DirectX хука

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.