设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6305|回复: 15
打印 上一主题 下一主题

两种动态选择光标脚本

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
跳转到指定楼层
1
发表于 2007-12-28 23:06:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题,就是两种动态选择光标

光标 A

  1. #==============================================================================
  2. # □ Sprite_Cursor    选项光标类型 A      by 洛克人SZ
  3. #==============================================================================
  4. class Sprite_Cursor < Sprite
  5.   def initialize
  6.     super
  7.     self.visible = false
  8.     self.bitmap = RPG::Cache.windowskin("cursor.png")
  9.     self.z = 9999
  10.     @count = 0
  11.     @wait_count = 0
  12.     update
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 更新画面
  16.   #--------------------------------------------------------------------------
  17. #=begin
  18.   def update
  19.     super
  20.     if @wait_count == 0
  21.       @count = 0
  22.     elsif @wait_count == 8
  23.       @count = 1
  24.     end
  25.     if @count == 0
  26.       self.ox += 1
  27.       @wait_count += 1
  28.     elsif @count == 1
  29.       self.ox -= 1
  30.       @wait_count -= 1
  31.     end
  32.   end
  33. #=end
  34.   #--------------------------------------------------------------------------
  35.   # ● 半透明化
  36.   #--------------------------------------------------------------------------
  37.   def opacitysz(type)
  38.     if type == 0
  39.       self.opacity -= 8 if self.opacity > 180
  40.     else
  41.       self.opacity += 8 if self.opacity < 255
  42.     end
  43.   end
  44. end
复制代码


效果


光标 B

  1. #==============================================================================
  2. # □ Sprite_Cursor    选项光标类型 B      by 洛克人SZ
  3. #==============================================================================
  4. class Sprite_CursorB < Sprite
  5.   def initialize
  6.     super
  7.     self.visible = false
  8.     @bitmap = RPG::Cache.windowskin("cursora.png")
  9.     self.z = 9999
  10.     @count = @count1 = @wait_count = @wait_count1 = 0
  11.     @tp = false
  12.     @ct = false
  13.     @rect = Array.new(5)
  14.     @rect[0] = Rect.new(0, 0, 12, 12)
  15.     @rect[1] = Rect.new(0, 20, 12, 12)
  16.     @rect[2] = Rect.new(20, 0, 12, 12)
  17.     @rect[3] = Rect.new(20, 20, 12, 12)
  18.     @utype = 0
  19.     self.set(32, 32)
  20.     update
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 更新画面
  24.   #--------------------------------------------------------------------------
  25.   def update
  26.     super
  27.     update_type(@utype)
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 设置尺寸
  31.   #--------------------------------------------------------------------------
  32.   def set(width, height)
  33.     width = 24 if width < 24
  34.     height = 24 if height < 24
  35.     @bitmapa.dispose if @bitmapa != nil
  36.     @bitmapa = self.set_size(@bitmapa, width, height)
  37.     @bitmapb.dispose if @bitmapb != nil
  38.     @bitmapb = self.set_size(@bitmapb, width + 2, height + 2)
  39.     @bitmapc.dispose if @bitmapc != nil
  40.     @bitmapc = self.set_size(@bitmapc, width + 4, height + 4)
  41.     self.bitmap.dispose if self.bitmap != nil
  42.     self.bitmap = @bitmapa
  43.     self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 半透明化
  47.   #--------------------------------------------------------------------------
  48.   def opacitysz(type)
  49.     if type == 0
  50.       self.opacity -= 8 if self.opacity > 180
  51.     else
  52.       self.opacity += 8 if self.opacity < 255
  53.     end
  54.   end
  55.   def set_size(bitmapcc, width, height)
  56.     bitmapcc = Bitmap.new(width, height)
  57.     bitmapcc.blt(0, 0, @bitmap, @rect[0])
  58.     bitmapcc.blt(0, height - 12, @bitmap, @rect[1])
  59.     bitmapcc.blt(width - 12, 0, @bitmap, @rect[2])
  60.     bitmapcc.blt(width - 12, height - 12, @bitmap, @rect[3])
  61.     @rect[4] = Rect.new(13, 0, 1, height)
  62.     if width > 24
  63.       for i in 1..width - 24
  64.         bitmapcc.blt(width - 12 - i, 0, @bitmap, @rect[4])
  65.       end
  66.     end
  67.     return bitmapcc
  68.   end
  69.   def set_update_type(type)
  70.     @utype = type
  71.     @ct = true
  72.   end
  73.   def update_type(type)
  74.     case type
  75.     when 0
  76.       self.opacity = 255 if self.opacity < 255 and @ct
  77.       self.bitmap = @bitmapa if @ct
  78.       self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2 if @ct
  79.       @count = @count1 = @wait_count = @wait_count1 = 0 if @ct
  80.       @tp = false if @ct
  81.       @ct = false if @ct
  82.       if @wait_count == 0
  83.         @count = 0
  84.       elsif @wait_count == 15
  85.         @count = 1
  86.       end
  87.       if @count == 0
  88.         self.opacity -= 8
  89.         @wait_count += 1
  90.       elsif @count == 1
  91.         self.opacity += 8
  92.         @wait_count -= 1
  93.       end
  94.     when 1
  95.       self.opacity = 255 if self.opacity < 255 and @ct
  96.       @count = @count1 = @wait_count = @wait_count1 =  0 if @ct
  97.       @tp = false if @ct
  98.       @ct = false if @ct
  99.       if @wait_count == 0
  100.         @count = 0
  101.       elsif @wait_count == 4
  102.         @count = 1
  103.       elsif @wait_count == 8
  104.         @count = 2
  105.       end
  106.       if @count == 0
  107.         self.bitmap = @bitmapa
  108.         self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2
  109.         @wait_count += 1
  110.         @tp = false if @tp
  111.       elsif @count == 1
  112.         self.bitmap = @bitmapb
  113.         self.ox, self.oy = self.bitmap.width / 2 - 1, self.bitmap.height / 2 - 1
  114.         @wait_count += 1 if !@tp
  115.         @wait_count -= 1 if @tp
  116.       elsif @count == 2
  117.         self.bitmap = @bitmapc
  118.         self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  119.         @wait_count -= 1
  120.         @tp = true if !@tp
  121.       end
  122.     when 2
  123.       self.opacity = 255 if self.opacity < 255 and @ct
  124.       self.bitmap = @bitmapa if @ct
  125.       self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2 if @ct
  126.       @count = @count1 = @wait_count =  @wait_count1 = 0 if @ct
  127.       @tp = false if @ct
  128.       @ct = false if @ct
  129.       if @wait_count == 0
  130.         @count = 0
  131.       elsif @wait_count == 4
  132.         @count = 1
  133.       elsif @wait_count == 8
  134.         @count = 2
  135.       end
  136.       if @wait_count1 == 0
  137.         @count1 = 0
  138.       elsif @wait_count1 == 15
  139.         @count1 = 1
  140.       end
  141.       if @count == 0
  142.         self.bitmap = @bitmapa
  143.         self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2
  144.         @wait_count += 1
  145.         @tp = false if @tp
  146.       elsif @count == 1
  147.         self.bitmap = @bitmapb
  148.         self.ox, self.oy = self.bitmap.width / 2 - 1, self.bitmap.height / 2 - 1
  149.         @wait_count += 1 if !@tp
  150.         @wait_count -= 1 if @tp
  151.       elsif @count == 2
  152.         self.bitmap = @bitmapc
  153.         self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  154.         @wait_count -= 1
  155.         @tp = true if !@tp
  156.       end
  157.       if @count1 == 0
  158.         self.opacity -= 8
  159.         @wait_count1 += 1
  160.       elsif @count1 == 1
  161.         self.opacity += 8
  162.         @wait_count1 -= 1
  163.       end
  164.     end
  165.   end
  166. end
复制代码


效果


使用方法:http://rpg.blue/viewthread.php?t ... 1%2D19+10%3A51%3A48

实际效果见范例:http://rpg.blue/UP_PIC/200801/ProjectSZ001.rar

就这样了…………

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
2
 楼主| 发表于 2007-12-28 23:06:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题,就是两种动态选择光标

光标 A

  1. #==============================================================================
  2. # □ Sprite_Cursor    选项光标类型 A      by 洛克人SZ
  3. #==============================================================================
  4. class Sprite_Cursor < Sprite
  5.   def initialize
  6.     super
  7.     self.visible = false
  8.     self.bitmap = RPG::Cache.windowskin("cursor.png")
  9.     self.z = 9999
  10.     @count = 0
  11.     @wait_count = 0
  12.     update
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 更新画面
  16.   #--------------------------------------------------------------------------
  17. #=begin
  18.   def update
  19.     super
  20.     if @wait_count == 0
  21.       @count = 0
  22.     elsif @wait_count == 8
  23.       @count = 1
  24.     end
  25.     if @count == 0
  26.       self.ox += 1
  27.       @wait_count += 1
  28.     elsif @count == 1
  29.       self.ox -= 1
  30.       @wait_count -= 1
  31.     end
  32.   end
  33. #=end
  34.   #--------------------------------------------------------------------------
  35.   # ● 半透明化
  36.   #--------------------------------------------------------------------------
  37.   def opacitysz(type)
  38.     if type == 0
  39.       self.opacity -= 8 if self.opacity > 180
  40.     else
  41.       self.opacity += 8 if self.opacity < 255
  42.     end
  43.   end
  44. end
复制代码


效果


光标 B

  1. #==============================================================================
  2. # □ Sprite_Cursor    选项光标类型 B      by 洛克人SZ
  3. #==============================================================================
  4. class Sprite_CursorB < Sprite
  5.   def initialize
  6.     super
  7.     self.visible = false
  8.     @bitmap = RPG::Cache.windowskin("cursora.png")
  9.     self.z = 9999
  10.     @count = @count1 = @wait_count = @wait_count1 = 0
  11.     @tp = false
  12.     @ct = false
  13.     @rect = Array.new(5)
  14.     @rect[0] = Rect.new(0, 0, 12, 12)
  15.     @rect[1] = Rect.new(0, 20, 12, 12)
  16.     @rect[2] = Rect.new(20, 0, 12, 12)
  17.     @rect[3] = Rect.new(20, 20, 12, 12)
  18.     @utype = 0
  19.     self.set(32, 32)
  20.     update
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 更新画面
  24.   #--------------------------------------------------------------------------
  25.   def update
  26.     super
  27.     update_type(@utype)
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 设置尺寸
  31.   #--------------------------------------------------------------------------
  32.   def set(width, height)
  33.     width = 24 if width < 24
  34.     height = 24 if height < 24
  35.     @bitmapa.dispose if @bitmapa != nil
  36.     @bitmapa = self.set_size(@bitmapa, width, height)
  37.     @bitmapb.dispose if @bitmapb != nil
  38.     @bitmapb = self.set_size(@bitmapb, width + 2, height + 2)
  39.     @bitmapc.dispose if @bitmapc != nil
  40.     @bitmapc = self.set_size(@bitmapc, width + 4, height + 4)
  41.     self.bitmap.dispose if self.bitmap != nil
  42.     self.bitmap = @bitmapa
  43.     self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 半透明化
  47.   #--------------------------------------------------------------------------
  48.   def opacitysz(type)
  49.     if type == 0
  50.       self.opacity -= 8 if self.opacity > 180
  51.     else
  52.       self.opacity += 8 if self.opacity < 255
  53.     end
  54.   end
  55.   def set_size(bitmapcc, width, height)
  56.     bitmapcc = Bitmap.new(width, height)
  57.     bitmapcc.blt(0, 0, @bitmap, @rect[0])
  58.     bitmapcc.blt(0, height - 12, @bitmap, @rect[1])
  59.     bitmapcc.blt(width - 12, 0, @bitmap, @rect[2])
  60.     bitmapcc.blt(width - 12, height - 12, @bitmap, @rect[3])
  61.     @rect[4] = Rect.new(13, 0, 1, height)
  62.     if width > 24
  63.       for i in 1..width - 24
  64.         bitmapcc.blt(width - 12 - i, 0, @bitmap, @rect[4])
  65.       end
  66.     end
  67.     return bitmapcc
  68.   end
  69.   def set_update_type(type)
  70.     @utype = type
  71.     @ct = true
  72.   end
  73.   def update_type(type)
  74.     case type
  75.     when 0
  76.       self.opacity = 255 if self.opacity < 255 and @ct
  77.       self.bitmap = @bitmapa if @ct
  78.       self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2 if @ct
  79.       @count = @count1 = @wait_count = @wait_count1 = 0 if @ct
  80.       @tp = false if @ct
  81.       @ct = false if @ct
  82.       if @wait_count == 0
  83.         @count = 0
  84.       elsif @wait_count == 15
  85.         @count = 1
  86.       end
  87.       if @count == 0
  88.         self.opacity -= 8
  89.         @wait_count += 1
  90.       elsif @count == 1
  91.         self.opacity += 8
  92.         @wait_count -= 1
  93.       end
  94.     when 1
  95.       self.opacity = 255 if self.opacity < 255 and @ct
  96.       @count = @count1 = @wait_count = @wait_count1 =  0 if @ct
  97.       @tp = false if @ct
  98.       @ct = false if @ct
  99.       if @wait_count == 0
  100.         @count = 0
  101.       elsif @wait_count == 4
  102.         @count = 1
  103.       elsif @wait_count == 8
  104.         @count = 2
  105.       end
  106.       if @count == 0
  107.         self.bitmap = @bitmapa
  108.         self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2
  109.         @wait_count += 1
  110.         @tp = false if @tp
  111.       elsif @count == 1
  112.         self.bitmap = @bitmapb
  113.         self.ox, self.oy = self.bitmap.width / 2 - 1, self.bitmap.height / 2 - 1
  114.         @wait_count += 1 if !@tp
  115.         @wait_count -= 1 if @tp
  116.       elsif @count == 2
  117.         self.bitmap = @bitmapc
  118.         self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  119.         @wait_count -= 1
  120.         @tp = true if !@tp
  121.       end
  122.     when 2
  123.       self.opacity = 255 if self.opacity < 255 and @ct
  124.       self.bitmap = @bitmapa if @ct
  125.       self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2 if @ct
  126.       @count = @count1 = @wait_count =  @wait_count1 = 0 if @ct
  127.       @tp = false if @ct
  128.       @ct = false if @ct
  129.       if @wait_count == 0
  130.         @count = 0
  131.       elsif @wait_count == 4
  132.         @count = 1
  133.       elsif @wait_count == 8
  134.         @count = 2
  135.       end
  136.       if @wait_count1 == 0
  137.         @count1 = 0
  138.       elsif @wait_count1 == 15
  139.         @count1 = 1
  140.       end
  141.       if @count == 0
  142.         self.bitmap = @bitmapa
  143.         self.ox, self.oy = self.bitmap.width / 2 - 2, self.bitmap.height / 2 - 2
  144.         @wait_count += 1
  145.         @tp = false if @tp
  146.       elsif @count == 1
  147.         self.bitmap = @bitmapb
  148.         self.ox, self.oy = self.bitmap.width / 2 - 1, self.bitmap.height / 2 - 1
  149.         @wait_count += 1 if !@tp
  150.         @wait_count -= 1 if @tp
  151.       elsif @count == 2
  152.         self.bitmap = @bitmapc
  153.         self.ox, self.oy = self.bitmap.width / 2, self.bitmap.height / 2
  154.         @wait_count -= 1
  155.         @tp = true if !@tp
  156.       end
  157.       if @count1 == 0
  158.         self.opacity -= 8
  159.         @wait_count1 += 1
  160.       elsif @count1 == 1
  161.         self.opacity += 8
  162.         @wait_count1 -= 1
  163.       end
  164.     end
  165.   end
  166. end
复制代码


效果


使用方法:http://rpg.blue/viewthread.php?t ... 1%2D19+10%3A51%3A48

实际效果见范例:http://rpg.blue/UP_PIC/200801/ProjectSZ001.rar

就这样了…………

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……

Lv4.逐梦者

梦石
0
星屑
7946
在线时间
1182 小时
注册时间
2007-7-29
帖子
2055
3
发表于 2007-12-29 03:57:12 | 只看该作者
很好,这个功能非常的实用,指示大概看了一下,没仔细测试,
不过具体上真的不错。{/qiang}
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
4
 楼主| 发表于 2007-12-30 19:22:48 | 只看该作者
为什么大家对这种动态选择光标都没兴趣呢?{/ll}难道大家都很喜欢 RMXP 中默认的那种光斑式样的选择光标吗?{/gg}这个东西应该就像 enghao_lim 大人说得那样很实用吧…………

光标 A 只是个比较普通的动态型光标。

光标 B 则比较特别,可以调整大小: 24*24—??*??(最大是多少没试验过{/gg}),有3种动态效果(闪烁、大小变化、闪烁+大小变化)。

难道是之前没有说明白?不过光看图片的确是看不到动态效果,大家可以看看范例啊。

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

5
发表于 2007-12-30 22:23:41 | 只看该作者
其实是很好的  只是这里的帖子大多回的比较少
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-9-23
帖子
145
6
发表于 2007-12-30 23:36:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11986
在线时间
999 小时
注册时间
2007-12-15
帖子
188
7
 楼主| 发表于 2007-12-31 00:26:53 | 只看该作者
以下引用yike于2007-12-30 15:36:03的发言:

特别喜欢光标A
我就一直想有这个效果~
LZ太感谢你了~


有人喜欢就好…………

正在研究自己编写 DLL 来调用 DirectX ……DLL 完成了,脚本却遇到问题了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

史上最强粉丝

梦石
0
星屑
50
在线时间
9 小时
注册时间
2007-8-20
帖子
5574

贵宾

8
发表于 2007-12-31 01:10:50 | 只看该作者
很强大~
收藏~
赞~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2007-12-24
帖子
182
9
发表于 2008-1-2 04:16:09 | 只看该作者
我就一直想有这个效果~
LZ太感谢你了~
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

10
发表于 2008-1-2 05:24:06 | 只看该作者
发布完成
VIP++2
http://rpg.blue/web/htm/news889.htm
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-9 00:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表