这个脚本用于随时按下Shift定位鼠标位置。
module Stop
@@bitmap = Bitmap.new(640 * 2 + 1,480 * 2 + 1)
@@bitmap.fill_rect(640,0,1,960,Color.new(255,0,0))
@@bitmap.fill_rect(0,480,1280,1,Color.new(255,0,0))
@@viewport = Viewport.new(0,0,640,480)
@@viewport.z = 2000
@@sprite = Sprite.new(@@viewport)
@@sprite.bitmap = @@bitmap
@@sprite.visible = false
@@help_bitmap = Bitmap.new(200,48)
@@help_bitmap.font.color = Color.new(255,255,0)
@@help_sprite = Sprite.new(@@viewport)
@@help_sprite.bitmap = @@help_bitmap
@@help_sprite.visible = false
def self.main
@@sprite.visible = true
@@help_sprite.visible = true
@@sprite.x = -320
@@sprite.y = -240
begin
Graphics.update
Mouse.update
a = Mouse.pixels
@@sprite.x = a[0] - 640
@@sprite.y = a[1] - 480
@@help_bitmap.clear
@@help_bitmap.draw_text(0,0,200,48,"[#{a[0].to_s},#{a[1].to_s}]")
end until Mouse.press?(3) or Mouse.press?(2) or Mouse.press?(1)
@@sprite.visible = false
@@help_sprite.visible = false
end
end
class <<Input
alias stop_update_add update unless method_defined?("stop_update_add")
def update
stop_update_add
if Input.trigger?(Input::SHIFT)
Stop.main
end
end
end
需要一个鼠标脚本。如下:
#==============================================================================
# ** 鼠标输入模块
#------------------------------------------------------------------------------
# 微调 by zh99998
# 版本 1.2a
# 06-30-2010
# 修复press判定
# 基于沉影的鼠标系统修改版alpha
#------------------------------------------------------------------------------
# by DerVVulfman
# 版本 1.2
# 08-18-2007
#------------------------------------------------------------------------------
# 建立在鼠标输入模块...
#
# by Near Fantastica
#------------------------------------------------------------------------------
# Set_Pos feature by
# Freakboy
#------------------------------------------------------------------------------
#
# CALLS:
#
# Mouse.click?
# 判断鼠标是否真的按下(Ture/False).
# 这个值控制您按下的是左/右键,还是中键
#
# Mouse.press?
# 判断鼠标是否真的按下/保持按下状态
# 这个值控制您按下的是左/右键,还是中键
# Mouse.pixels
# Mouse.pixels
# 这个值返回鼠标所在的坐标(640*480大小),如果鼠标超出游戏画面,这个值为空
#
# Mouse.tiles
# This returns the mouse's screen coordinates in map tiles. Based on the
# system's 20x15 tile size, this returns it in index values (a 0-19 width &
# a 0-14 height). This functions the same manner as Mouse.pixels.
#
# Mouse.set_pos
# This allows you to forcefully position the mouse at an x/y position within
# the game screen by pixel coordinates. Given the game's normal screen width
# of 640x480, adding: Mouse.set_pos(320,240) should position the mouse dead
# center of the gaming window.
#
# Mouse.update
# Add this routine into your update routines to update the mouse position.
# It must be called otherwise you won't get valid mouse coordinates.
#
#==============================================================================
module Mouse
#--------------------------------------------------------------------------
# ## 常量
#--------------------------------------------------------------------------
GetAsyncKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
GetKeyState = Win32API.new("user32","GetKeyState",['i'],'i')
ScreenToClient = Win32API.new('user32', 'ScreenToClient', 'lp', 'i')
GetCursorPos = Win32API.new('user32', 'GetCursorPos', 'p', 'i')
GetClientRect = Win32API.new('user32', 'GetClientRect', 'lp', 'i')
#--------------------------------------------------------------------------
# * Mouse Click
# button : button
#--------------------------------------------------------------------------
def Mouse.click?(button)
return false if button == 1 and !$click_abled
return true if @keys.include?(button)
return false
end
#--------------------------------------------------------------------------
# * Mouse Pressed
# button : button
#--------------------------------------------------------------------------
def Mouse.press?(button)
return true if @press.include?(button)
return false
end
#--------------------------------------------------------------------------
# * Mouse Pressed
# button : button
#--------------------------------------------------------------------------
def Mouse.area?(x, y, width=32, height=32)
return false if @pos == nil
return true if @pos[0] >= x and @pos[0] <= (x+width) and @pos[1] >= y and @pos[1] <= (y+height)
return false
end
#--------------------------------------------------------------------------
# * Mouse Pixel Position
#--------------------------------------------------------------------------
def Mouse.pixels
return @pos == nil ? [0, 0] : @pos
end
#--------------------------------------------------------------------------
# * Mouse Tile Position
#--------------------------------------------------------------------------
def Mouse.tiles
return nil if @pos == nil
x = @pos[0] / 32
y = @pos[1] / 32
return [x, y]
end
#--------------------------------------------------------------------------
# * Set Mouse Position
#--------------------------------------------------------------------------
def Mouse.set_pos(x_pos=0, y_pos=0)
width, height = Mouse.client_size
if (x_pos.between?(0, width) && y_pos.between?(0, height))
x = Mouse.client_pos[0] + x_pos; y = Mouse.client_pos[1] + y_pos
Win32API.new('user32', 'SetCursorPos', 'NN', 'N').call(x, y)
end
end
#--------------------------------------------------------------------------
# * Mouse Update
#--------------------------------------------------------------------------
def Mouse.update
@pos = Mouse.pos
@keys, @press = [], []
@keys.push(1) if GetAsyncKeyState.call(1) & 0X01 == 1
@keys.push(2) if GetAsyncKeyState.call(2) & 0X01 == 1
@keys.push(3) if GetAsyncKeyState.call(4) & 0X01 == 1
@press.push(1) if GetKeyState.call(1) > 1
@press.push(2) if GetKeyState.call(2) > 1
@press.push(3) if GetKeyState.call(4) > 1
## 鼠标双击
@wait ||= 0
@wait += 1 if @key != nil
(@key = nil; @wait = 0) if @wait > 30 # 双击时间
end
#--------------------------------------------------------------------------
# * Automatic functions below
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
# * Obtain Mouse position in screen
#--------------------------------------------------------------------------
def Mouse.global_pos
pos = [0, 0].pack('ll')
if GetCursorPos.call(pos) != 0
return pos.unpack('ll')
else
return nil
end
end
#--------------------------------------------------------------------------
# * Return Screen mouse position within game window
#--------------------------------------------------------------------------
def Mouse.pos
x, y = Mouse.screen_to_client(*Mouse.global_pos)
width, height = Mouse.client_size
begin
if (x >= 0 and y >= 0 and x < width and y < height)
return x, y
else
return nil
end
rescue
return nil
end
end
#--------------------------------------------------------------------------
# * Pass Screen to Game System
#--------------------------------------------------------------------------
def Mouse.screen_to_client(x, y)
return nil unless x and y
pos = [x, y].pack('ll')
if ScreenToClient.call(HWND, pos) != 0
return pos.unpack('ll')
else
return nil
end
end
#--------------------------------------------------------------------------
# * Get Game Window Size
#--------------------------------------------------------------------------
def Mouse.client_size
rect = [0, 0, 0, 0].pack('l4')
GetClientRect.call(HWND, rect)
right, bottom = rect.unpack('l4')[2..3]
return right, bottom
end
#--------------------------------------------------------------------------
# * Get Window Position
#--------------------------------------------------------------------------
def Mouse.client_pos
rect = [0, 0, 0, 0].pack('l4')
## 用户区
GetClientRect.call(HWND, rect)
left, upper = rect.unpack('l4')[0..1]
return left, upper
end
#--------------------------------------------------------------------------
# ## 句柄
#--------------------------------------------------------------------------
def Mouse.get_hwnd
game_name = "\0" * 256
Win32API.new('kernel32', 'GetPrivateProfileStringA', 'pppplp', 'l').call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
return Win32API.new('user32', 'FindWindowA', 'pp', 'l').call('RGSS Player',game_name)
end
#--------------------------------------------------------------------------
# ## 双击
#--------------------------------------------------------------------------
def self.double_click?(key)
if @keys.include?(key)
@key !=key ? (@key = key; return false) : (@key = nil; return true)
end
end
## 句柄常量
HWND = Mouse.get_hwnd
###############
GetMessage = Win32API.new('user32','GetMessage','plll','l')
Point = Struct.new(:x, :y)
Message = Struct.new(:message, :wparam, :lparam, :pt)
Param = Struct.new(:x, :y, :scroll)
def self.scroll
msg = "\0"*32
GetMessage.call(msg,0,0,0)
r = wmcallback(unpack_msg(msg))
return r unless r.nil?
end
def wmcallback(msg)
return unless msg.message == Scroll
param = Param.new
param.x = word2signed_short(loword(msg.lparam))
param.y = word2signed_short(hiword(msg.lparam))
param.scroll = word2signed_short(hiword(msg.wparam))
return [param.x,param.y,param.scroll]
end
def hiword(dword)
###return ((dword&0xffff0000)>>16)&0x0000ffff
return (dword & 0xffff0000) / 0x10000
end
def loword(dword)
return dword&0x0000ffff
end
end
2024年1月21日 00:41
JNANABHUMI AP provides a CBSE syllabus for all classes for the academic year 2024 has been designed as per the guidelines of the CBSE Board. The syllabus offers a conceptual background and lays the groundwork for the Class 10 Board exams. jnanabhumiap.in By visiting the page, students will find the downloadable pdf of the reduced CBSE 10th Syllabus along with the deleted portion of the syllabus for each subject. So, students are advised to prepare for the exam, as per the syllabus mentioned here.
2024年1月27日 21:42
Board Model Papers 2024 Download with Suggestions for 10th Class Textbooks 2024 Pdf Download and SSLC New Syllabus Sample Question Paper 2024 and different types of model papers boardmodelpaper.com and question papers for following the website and Arts, Science, Commerce Stream Subject Wise Solved Question Bank for Hindi & English Medium Students with Exam Pattern & Blueprint and subject Wise with 11th & 12th Question Bank 2024 for General & Vocational Course Languages & Subjects Important Question for the above link.