Project1

标题: 两种动态选择光标脚本 [打印本页]

作者: 洛克人SZ    时间: 2007-12-28 23:06
标题: 两种动态选择光标脚本
如题,就是两种动态选择光标

光标 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

就这样了…………
作者: 洛克人SZ    时间: 2007-12-28 23:06
标题: 两种动态选择光标脚本
如题,就是两种动态选择光标

光标 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

就这样了…………
作者: enghao_lim    时间: 2007-12-29 03:57
很好,这个功能非常的实用,指示大概看了一下,没仔细测试,
不过具体上真的不错。{/qiang}
作者: 洛克人SZ    时间: 2007-12-30 19:22
为什么大家对这种动态选择光标都没兴趣呢?{/ll}难道大家都很喜欢 RMXP 中默认的那种光斑式样的选择光标吗?{/gg}这个东西应该就像 enghao_lim 大人说得那样很实用吧…………

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

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

难道是之前没有说明白?不过光看图片的确是看不到动态效果,大家可以看看范例啊。
作者: link006007    时间: 2007-12-30 22:23
其实是很好的  只是这里的帖子大多回的比较少
作者: yike    时间: 2007-12-30 23:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 洛克人SZ    时间: 2007-12-31 00:26
以下引用yike于2007-12-30 15:36:03的发言:

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


有人喜欢就好…………
作者: 光郎    时间: 2007-12-31 01:10
很强大~
收藏~
赞~
作者: tiaozao999    时间: 2008-1-2 04:16
我就一直想有这个效果~
LZ太感谢你了~
作者: yangff    时间: 2008-1-2 05:24
发布完成
VIP++2
http://rpg.blue/web/htm/news889.htm

作者: 水迭澜    时间: 2008-1-7 17:50
Orz……
这个效果我自己在window_selectable和window_message里改过……总觉得要改的部位又多又繁琐……LZ这个东西很有参考价值,收了~~~
作者: 露丝莱斯    时间: 2008-1-16 10:45
想死了..,
无论如何也用不了这脚本..,
范例全研究了.,
都照搬了图片也复制了还是用不了.,
楼主能详细点说下怎么使用吗?
我新建工程实验了还是不行哎.,
作者: 风雪优游    时间: 2008-1-17 03:15
支持!!
作者: 洛克人SZ    时间: 2008-1-19 18:55
以下引用露丝莱斯于2008-1-16 2:45:58的发言:

想死了..,
无论如何也用不了这脚本..,
范例全研究了.,
都照搬了图片也复制了还是用不了.,
楼主能详细点说下怎么使用吗?
我新建工程实验了还是不行哎.,


使用方法:http://rpg.blue/viewthread.php?t ... 1%2D19+10%3A51%3A48
作者: 露丝莱斯    时间: 2008-1-19 19:09
还是有问题..,

现在能够使用了..,

但问题一...,
比如说打开菜单后返回地图..,那个光标居然不会消失..,
比如在菜单中光标最后位置是在物品那里.,
返回地图后.,
那个位置总是有一个光标..,
重新打开菜单.,
那个位置还是总是有一个光标..,

问题二....,
我战斗的时候用了图标选项..,
结果那个光标也会跟着出现...,

怎么解决呢?
作者: 真·姜维    时间: 2008-1-25 00:27
两个效果都喜欢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1