View previous topic :: View next topic |
Author |
Message |
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25281 Location: The netherlands
|
Posted: Sat May 19, 2012 8:27 pm Post subject: How to show an ingame menu in d3d games |
|
|
the following code is an example of how to enable the d3dhook, creating the textures, sprites and textcontainers, and displaying them inside the game.
The result should be a blue window in the topcenter of the screen with 3 menu options.
Those menu options can be clicked to toggle, but the keyboard can also be used to navigate the menu. Enter toggles the option
Code: |
--create a background image (in this case, just a simple 1 pixel color stretched)
background=createPicture()
bmp=picture_getBitmap(background);
graphic_setHeight(bmp,1)
graphic_setWidth(bmp,1)
c=rasterimage_getCanvas(bmp)
canvas_setPixel(c,0,0,0xff0000)
highlighter=createPicture()
bmp=picture_getBitmap(highlighter);
graphic_setHeight(bmp,1)
graphic_setWidth(bmp,1)
c=rasterimage_getCanvas(bmp)
canvas_setPixel(c,0,0,0x0000ff)
d3dhook_initializeHook()
bgtexture=d3dhook_createTexture(background)
bgsprite=d3dhook_createSprite(bgtexture);
d3dhook_renderobject_setX(bgsprite, -1) --center it horizontally
d3dhook_sprite_setWidth(bgsprite,200)
d3dhook_sprite_setHeight(bgsprite,200)
highlightertexture=d3dhook_createTexture(highlighter)
hlsprite=d3dhook_createSprite(highlightertexture)
d3dhook_renderobject_setVisible(hlsprite, false) --don't show it just yet
d3dhook_renderobject_setX(hlsprite, -1) --center (so matches with the background)
d3dhook_sprite_setWidth(hlsprite,200)
font=createFont()
fontmap=d3dhook_createFontmap(font)
lineheight=d3dhook_texture_getHeight(fontmap) --fontmap inherits from texture so this can be used
d3dhook_sprite_setHeight(hlsprite,lineheight) --make the highlightr the same height as a textline
Option1=d3dhook_createTextContainer(fontmap,-1,50,'Option 1: OFF')
Option2=d3dhook_createTextContainer(fontmap,-1,50+lineheight,'Option 2: OFF')
Option3=d3dhook_createTextContainer(fontmap,-1,50+lineheight*2,'Option 3: OFF')
Option1State=false
Option2State=false
Option3State=false
selectedOption=1
function setHighlighterToSelectedOption()
d3dhook_renderobject_setY(hlsprite, 50+lineheight*(selectedOption-1))
end
setHighlighterToSelectedOption()
d3dhook_renderobject_setVisible(hlsprite, true)
function ExecuteSelectedOption()
local onoff="OFF";
if (selectedOption==1) then
Option1State=not Option1State
if (Option1State) then
onoff="ON"
else
onoff="OFF"
end
d3dhook_textcontainer_setText(Option1,'Option 1: '..onoff);
end
if (selectedOption==2) then
Option2State=not Option2State
if (Option2State) then
onoff="ON"
else
onoff="OFF"
end
d3dhook_textcontainer_setText(Option2,'Option 2: '..onoff);
end
if (selectedOption==3) then
Option3State=not Option3State
if (Option3State) then
onoff="ON"
else
onoff="OFF"
end
d3dhook_textcontainer_setText(Option3,'Option 3: '..onoff);
end
end
function objectclick(object, x, y)
--bla=userDataToInteger(object)
--print(string.format("click on %x",bla))
if (object==Option1) then
selectedOption=1
ExecuteSelectedOption()
end
if (object==Option2) then
selectedOption=2
ExecuteSelectedOption()
end
if (object==Option3) then
selectedOption=3
ExecuteSelectedOption()
end
setHighlighterToSelectedOption()
end
d3dhook_onClick(objectclick)
function keydown(virtualkey,char)
if (virtualkey==VK_DOWN) then
--down arrow
if (selectedOption<3) then
selectedOption=selectedOption+1
end
end
if (virtualkey==VK_UP) then
--up arrow
if (selectedOption>1) then
selectedOption=selectedOption-1
end
end
if (virtualkey==VK_RETURN) then
ExecuteSelectedOption()
end
setHighlighterToSelectedOption()
return true
end
d3dhook_onKey(keydown)
|
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
mgr.inz.Player I post too much Reputation: 218
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Sun May 20, 2012 5:02 am Post subject: |
|
|
Gr8.
Looks like d3dhook_onClick(objectclick) and d3dhook_onKey(keydown) does not work in XRay Engine. I must use memoryrecord with few hotkeys set, and few onHotkey functions.
Code: |
-- commented out d3dhook_onKey(keydown)
-- commented out d3dhook_onClick(objectclick)
addresslist=getAddressList()
d3d_hotkeys_memrec=addresslist_getMemoryRecordByID(addresslist,5)
d3d_hotkeys_memrec_hotkey0=memoryrecord_getHotkeyByID(d3d_hotkeys_memrec,0)
d3d_hotkeys_memrec_hotkey1=memoryrecord_getHotkeyByID(d3d_hotkeys_memrec,1)
d3d_hotkeys_memrec_hotkey2=memoryrecord_getHotkeyByID(d3d_hotkeys_memrec,2)
d3d_hotkeys_memrec_hotkey3=memoryrecord_getHotkeyByID(d3d_hotkeys_memrec,3)
d3d_hotkeys_memrec_hotkey4=memoryrecord_getHotkeyByID(d3d_hotkeys_memrec,4)
function onHotkey0(Hotkey)
keydown(VK_UP,'')
end
memoryrecordhotkey_onHotkey(d3d_hotkeys_memrec_hotkey0,onHotkey0)
function onHotkey1(Hotkey)
keydown(VK_DOWN,'')
end
memoryrecordhotkey_onHotkey(d3d_hotkeys_memrec_hotkey1,onHotkey1)
function onHotkey234(Hotkey)
keydown(VK_RETURN,'')
end
memoryrecordhotkey_onHotkey(d3d_hotkeys_memrec_hotkey2,onHotkey234)
memoryrecordhotkey_onHotkey(d3d_hotkeys_memrec_hotkey3,onHotkey234)
memoryrecordhotkey_onHotkey(d3d_hotkeys_memrec_hotkey4,onHotkey234) |
_________________
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25281 Location: The netherlands
|
Posted: Sun May 20, 2012 8:37 am Post subject: |
|
|
Yes, it depends on the game and how it handles window messages. (and if it used directinput)
For example if it completely disregards all conventional windows messaging (like header, resize, moving, etc...) then the window hook won't be getting many messages to work with
If realtime keyboard and mouse control is necessary for what you wish to do, you could try an hook on PeekMessage/GetMessage and pass WM_MOUSEDOWN , WM_LBUTTONDOWN and WM_LBUTTONUP down to the window handler anyhow
Or a hook someplace else, as long as you end up sending a message to the window handler with these messages
Tip: createHotkey might be easier to work with
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
toanhung1 Newbie cheater Reputation: 0
Joined: 07 Apr 2012 Posts: 11
|
Posted: Wed Aug 29, 2012 2:18 pm Post subject: |
|
|
question..
Any sample how to make it work when the option is change to on ?
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25281 Location: The netherlands
|
Posted: Wed Aug 29, 2012 3:11 pm Post subject: |
|
|
you basically just write your code at "if (Option1State) then "
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
toanhung1 Newbie cheater Reputation: 0
Joined: 07 Apr 2012 Posts: 11
|
Posted: Thu Aug 30, 2012 11:42 am Post subject: |
|
|
thanks got that to work
1 more question
the background is on center , i can move to left or right , but how to i move to between left and center ,,, let say
======================== <--- screen
.......move here .............................
or center left instead on top center
thank for help
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25281 Location: The netherlands
|
Posted: Thu Aug 30, 2012 1:13 pm Post subject: |
|
|
In that case, instead of an x coordinate of -1 (-1=center on that axis) give the pixels exactly
Use d3dhook_getWidth() to find the center of the screen and go from there
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
toanhung1 Newbie cheater Reputation: 0
Joined: 07 Apr 2012 Posts: 11
|
Posted: Fri Aug 31, 2012 9:09 am Post subject: |
|
|
got that!!! to work
1 more question dark b
let say when we create that menu, when we click on the menu area, it will only work for the menu instead send the actual click on game too?
because when it click the game start to move to that click
sorry for alot question
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25281 Location: The netherlands
|
Posted: Sat Sep 01, 2012 8:03 am Post subject: |
|
|
That's not possible in this version yet. But perhaps next one
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
sandaasu How do I cheat? Reputation: 0
Joined: 29 Dec 2012 Posts: 3
|
Posted: Sat Dec 29, 2012 12:12 pm Post subject: |
|
|
Hello everyone
i am sorry for pulling that thread out of its grave but i wonder how exaclty to use this code in action.
I already tested it and the menu works for me but i DONT know how to
add a cheat table "function" like a moneyhack etc. to it.
Please help me out a bit
|
|
Back to top |
|
|
abhijeet1001 Advanced Cheater Reputation: 0
Joined: 10 Apr 2013 Posts: 87
|
Posted: Wed Dec 24, 2014 10:21 am Post subject: |
|
|
any way to delete erase the textures , sprites ?
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25281 Location: The netherlands
|
Posted: Wed Dec 24, 2014 10:42 am Post subject: |
|
|
first assign a new texture to the sprite, or destroy it.
then you can destroy the texture if you like
you can use object_destroy(sprite/texture) or the recommended sprite.destroy()
(this is very old code)
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
iGuzmonJ How do I cheat? Reputation: 0
Joined: 24 Oct 2014 Posts: 9
|
Posted: Sun Feb 22, 2015 1:47 am Post subject: |
|
|
Is there a way to get the same effect without using d3d? The game i am trying it on doesn't use d3d.
|
|
Back to top |
|
|
Peppe90 Newbie cheater Reputation: 0
Joined: 19 Mar 2010 Posts: 24
|
Posted: Fri Jun 05, 2015 6:56 am Post subject: |
|
|
Is possible to show just the Value of the address?
Something like fraps that show fps, but I want see the value of the address that change when playing.
|
|
Back to top |
|
|
|