Chaos Project

RPG Maker => RPG Maker Scripts => Topic started by: finalholylight on July 10, 2014, 09:56:37 am

Title: Need someone share Neo-Bahamut's "Always on top" demo
Post by: finalholylight on July 10, 2014, 09:56:37 am
When travel this forum, I saw a topic that is discussing about something of this topic :
http://www.hbgames.org/forums/viewtopic.php?t=71126
I follow the link and like the demo so much :x , but demo's link died, if anyone have downloaded this demo, would you mind sharing it, please  :)
Title: Re: Need someone share Neo-Bahamut's "Always on top" demo
Post by: G_G on July 10, 2014, 10:14:30 am
Or do some actual work for yourself and compile it yourself.

Here's an article explaining how to compile Ruby scripts into executables.
http://rubyonwindows.blogspot.com/2009/05/ocra-one-click-ruby-application-builder.html

Install Ruby, Install Ruby Gems, Install Ocra, compile the "aot.exe" code into an EXE.

Here's the script for "aot.exe"
require 'win32api'

Smallest_Float = 0.00000000000000001

Readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', 'pppplp', 'l')
Findwindow = Win32API.new('user32', 'FindWindowA', 'pp', 'l')

def get_rgss_handel(ini = ".\\Game.ini")
   if !FileTest.exist?(ini)
       exit
   end
 game_name = "\0" * 256
 Readini.call('Game', 'Title', '', game_name, 255, ini)
 game_name.delete!("\0")
 return Findwindow.call('RGSS Player', game_name)
end

GetAct = Win32API.new('user32.dll', 'GetActiveWindow', '', 'i')
SetAct = Win32API.new('user32.dll', 'SetActiveWindow', 'i', 'i')
SetFor = Win32API.new('user32.dll', 'SetForegroundWindow', 'i', 'i')
IsWnd = Win32API.new('user32.dll', 'IsWindow', 'i', 'i')

$handel = get_rgss_handel

cores = ENV['NUMBER_OF_PROCESSORS'].to_i
sleeptime = ARGV[0].to_f

loop do
   is_window = IsWnd.call($handel)
   if is_window == 0
       exit
   end
   act = GetAct.call
   if act != $handel
   #   SetAct.call($handel)
       SetFor.call($handel)
   end
   sleep(sleeptime)
end


Here's the script to put into your RMXP project
# RGSS Player running always (not only when selected):
# Copy the aot.exe into your project directory and place this script into your
# script editor:

IO.popen('aot.exe 0.001')
# The number behind aot.exe represents the sleep time between a check.
# For example 0.05 means the programm will check if the RGSS Player is not on top
# every 50 milliseconds. I recommend something like 0.001

# Thanks to Skade for the idea to use IO.popen

# There may occure problems with print windows. Usually you won't be able to close
# them with pressing "ok" but the close button (red X) should work.

# Should only work on Windows, sorry :(


If you had just read the topic a bit you would have realized that he left all the code for people to work with.
Title: Re: Need someone share Neo-Bahamut's "Always on top" demo
Post by: ForeverZer0 on July 10, 2014, 11:13:52 am
Couldn't you simply use Win32API to change the window style?

EDIT:
Nevermind, just thought that would only solve half the problem, it will still be allowed to be deactivated.
Title: Re: Need someone share Neo-Bahamut's "Always on top" demo
Post by: Blizzard on July 10, 2014, 12:07:42 pm
I think it's funny how "handle" is constantly misspelled.
Title: Re: Need someone share Neo-Bahamut's "Always on top" demo
Post by: KK20 on July 10, 2014, 01:51:59 pm
Quote from: Blizzard on July 10, 2014, 12:07:42 pm
I think it's funny how "handle" is constantly misspelled.

I am deeply offended by this post, sir: ShowHide
(http://puu.sh/a5nP1/371c5c2f31.png)
Title: Re: Need someone share Neo-Bahamut's "Always on top" demo
Post by: ForeverZer0 on July 11, 2014, 02:13:15 pm
Made a better and MUCH smaller version of this.
http://forum.chaos-project.com/index.php/topic,14347.new.html