HexColor:在RGSS中使用16进制颜色表示法(2017.06.12更新)

此脚本使Color类支持十六进制颜色表示法。使用形如”#FFFFFF”的字符串(#号可省略)替代形如(255,255,255)的RGB颜色数值表示。
可使用缩略形式,如”#112233″可写作”#123″,”#000000″可写作”#0″
示例:

FireBrick = Color.new("#B22222",222)
p FireBrick #=> (178.000000,34.000000,34.000000,222.000000)

(更多…)

更多

卫星游戏工作室祝各位新春愉快!

不知不觉间,这已经是工作室成立以来的第六个春节了。新的一年里我们将牢记“所有的执着只为了超越”的口号,为制作出更优秀的游戏而努力。

过去的一年中,工作室重启了《龙印传说》项目,游戏的开发工作正逐渐走上正轨。下面是游戏的新Logo:

Logo_only

更多具体信息将在不久后公布。新的一年里我们将继续致力于《龙印传说》的开发,请关注工作室网站以获取最新信息。

此外,我们为工作室网站增加了分享按钮,并对外观细节进行了一些调整。

 

最后,再次祝各位新春愉快!

失落的乐章

2017年1月28日

更多

在RGSS中读取/写入ini文件(2016.10.14更新)

使用这段脚本可以在RGSS中比较快捷地读取、写入ini文件中的值。需要转码模块才能正常处理中文等字符。

INI = IniFile.new(".\\Game.ini")
p INI[:Game][:Title] #获取游戏标题,缓冲区大小默认为128
p INI[:Game][:Title2] #读取一个不存在的键,则返回空字符串
INI.default = "NONE" #若读取的键不存在则返回"NONE"
INI.buffer_size = 256 #指定缓冲区大小为256
INI[:Game][:Title] = "测试工程" #写入键值

(更多…)

更多

EasyConv : 字符串转码模块

在RGSS中使用Win32API时,如果涉及中文及其他特殊字符,就必须在系统代码页及UTF-8间进行必要的转换,否则就会出现乱码。在许许多多的脚本中都可以见到类似的转码脚本,其中大多数年代久远,作者已不可考。我的这个版本只是选取一个常见的版本,简单地进行了些许优化。

#==============================================================================
# ■ EasyConv
#------------------------------------------------------------------------------
#  转码模块。原作者不明,由失落的乐章优化。
#==============================================================================

module EasyConv
  #--------------------------------------------------------------------------
  # ● 常量定义
  #--------------------------------------------------------------------------
  CP_ACP = 0
  CP_UTF8 = 65001
  M2W = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  W2M = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  #--------------------------------------------------------------------------
  # ● 转码
  #--------------------------------------------------------------------------
  def s2u
    len = M2W.call(CP_ACP, 0, self, -1, nil, 0)
    buf = "\0" * (len*2)
    M2W.call(CP_ACP, 0, self, -1, buf, buf.size/2)
    len = W2M.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil)
    ret = "\0" * len
    W2M.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil)
    ret[-1] = ""
    return ret
  end
  #--------------------------------------------------------------------------
  # ● 转码
  #--------------------------------------------------------------------------
  def u2s
    len = M2W.call(CP_UTF8, 0, self, -1, nil, 0)
    buf = "\0" * (len*2)
    M2W.call(CP_UTF8, 0, self, -1, buf, buf.size/2)
    len = W2M.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
    ret = "\0" * len
    W2M.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil)
    return ret
  end
end

class String
  include EasyConv
end
更多

卫星游戏工作室祝各位新年快乐

时间飞快地过去,一年多前,我还在犹豫着该如何写2014年的年度总结,而现在2015也将过去。卫星游戏工作室即将迎来第五个年头。在此我没有更多想说的话,希望新的一年里工作室能交出令人满意的答卷。

祝新年快乐,各位明年见!

卫星游戏工作室 失落的乐章

2015年12月31日

更多

Win32API应用:窗口篇

1.禁用窗口最小化、关闭按钮:

MF_GRAYED = 0x01
SC_MINIMIZE = 0xF020  #最小化
SC_CLOSE = 0xF060 #关闭
HWND = Win32API.new('user32.dll','GetActiveWindow',nil,'l').call
GSM  = Win32API.new('user32.dll','GetSystemMenu','ll','l').call(HWND,0)
Win32API.new('user32.dll','RemoveMenu','lll','l').call(GSM,SC_MINIMIZE,MF_GRAYED) #禁用最小化
Win32API.new('user32.dll','RemoveMenu','lll','l').call(GSM,SC_CLOSE,MF_GRAYED) #禁用关闭

由于不明原因,最小化按钮无法变灰,只会失效;关闭按钮可以正常变灰。

 

2.半透明窗口:

#设置不透明度(有效范围0~255)
OPACITY = 150
#获取窗口句柄
HWND = Win32API.new('user32','GetActiveWindow',nil,'l').call
#设置窗口风格WS_EX_LAYERED (0x00080000)
Win32API.new('user32','SetWindowLong','lil','l').call(HWND,-20,0x00080000)
Win32API.new('user32','SetLayeredWindowAttributes','llil','l').call(HWND,0,OPACITY,2)

 

(更多…)

更多