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

Project1

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

在地图上面“华丽”地扣血魔(0.9版本)

 关闭 [复制链接]

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

跳转到指定楼层
1
发表于 2008-4-6 00:40:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
恩,清明节闲着没事干写的,大概就是地图上扣两滴血,加两点魔的效果
原来是出现在《探望》这个游戏里面的,后来才发现Bug无语的多……这个是从头重新写起的
效果截图

那个实际上头上的数字是从0200到0000,这是其中的一帧
脚本如下:
  1. =begin
  2. 说明:调用方法如下:
  3.   $scene.cut_new(num,hp_or_not,can_die,matrix,whom)
  4.        num : 字面数字,不超过9999
  5.        hp_or_not : 该值为真,扣血;反之扣魔
  6.        can_die : 允许死亡?
  7.        matrix : 数据处理的时候乘上该数值,[-1]扣数值,1加数值
  8.        whom : 给谁扣血?写-1的话全体
  9.   例如,$scene.cut_new(200,true,false,-1,[0,1])
  10.   则给队伍上前面两个人扣血200点,不允许死亡。
  11. 0.9更新说明:允许多个处理同时存在,后面的处理将在上面。
  12. 方法作了修改
  13. =end
  14. #==============================================================================
  15. # ■ Cuter
  16. #------------------------------------------------------------------------------
  17. #  地图上面削血用脚本
  18. #   IamI制作
  19. #==============================================================================
  20. class Cuter < Sprite
  21.   #常量表
  22.   #数字图片的位置,每一横列必须是0123456789。
  23.   PIC_NAME = "Graphics/Windowskins/num"
  24.   #有多少列?
  25.   Y_NUM = 5
  26.   #扣血的时候用多少步?40步相当于1s
  27.   STEPS = 20
  28.   #一开始的时候等待多少帧?
  29.   START_WAIT = 10
  30.   #非全体扣血的列
  31.   ONE_HP_CUT = 1
  32.   #全体扣血的列
  33.   ALL_HP_CUT = 2
  34.   #非全体加血的列
  35.   ONE_HP_GET = 4
  36.   #全体加血的列
  37.   ALL_HP_GET = 4
  38.   #非全体扣魔的列
  39.   ONE_SP_CUT = 3
  40.   #全体扣魔的列
  41.   ALL_SP_CUT = 3
  42.   #非全体加魔的列
  43.   ONE_SP_GET = 5
  44.   #全体加魔的列
  45.   ALL_SP_GET = 5
  46.   #对外接口
  47.   attr_accessor :cutting
  48.   attr_accessor :up_num
  49.   attr_accessor :where_is
  50.   #--------------------------------------------------------------------------
  51.   # ● 初始化
  52.   #--------------------------------------------------------------------------
  53.   def initialize
  54.     super
  55.     @cutting = false
  56.     @from_bitmap = Bitmap.new(PIC_NAME)
  57.     self.bitmap = Bitmap.new(640,480)
  58.     self.x = 0
  59.     self.y = 0
  60.     self.z = 9999
  61.     self.ox = 0
  62.     self.oy = 0
  63.     @one_rect_x = @from_bitmap.width / 10
  64.     @one_rect_y = @from_bitmap.height / Y_NUM
  65.     @hp_or_not = true
  66.     @can_die = false
  67.     @matrix = -1
  68.     @all_num = 100
  69.     @now_num = 0
  70.     @type = 1
  71.     @now_step = 0
  72.     @whom = []
  73.     @real_step = STEPS
  74.     @wait_count = 0
  75.     @up_num = 0
  76.     @where_is = -1
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 刷新
  80.   #--------------------------------------------------------------------------
  81.   def update(up_num = 0)
  82.     if disposed?
  83.       return
  84.     end
  85.     super()
  86.     if @wait_count > 0
  87.       @wait_count -= 1
  88.       return
  89.     end
  90.     self.bitmap.clear
  91.     if @cutting == true
  92.       @up_num = up_num
  93.       @now_num = @now_num - @all_num / @real_step
  94.       broke(@now_num,@type)
  95.       @now_step += 1
  96.       if @now_step >= @real_step
  97.         @now_step = 0
  98.         @cutting = false
  99.         cut_num
  100.       end
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 最后的数值处理
  105.   #--------------------------------------------------------------------------
  106.   def cut_num
  107.     for i in @whom
  108.       actor = $game_party.actors[i]
  109.       if @hp_or_not == true
  110.         if @can_die == true
  111.          actor.hp += @all_num * @matrix
  112.          if $game_party.all_dead?
  113.            $scene = Scene_Gameover.new
  114.          end
  115.        else
  116.          actor.hp = [actor.hp + @all_num * @matrix,1].max
  117.        end
  118.      else
  119.        actor.sp = [actor.sp + @all_num * @matrix,0].max
  120.      end
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 对外的方法
  125.   #     num : 字面数字,不超过9999
  126.   #     hp_or_not : 该值为真,扣血;反之扣魔
  127.   #     can_die : 允许死亡?
  128.   #     matrix : 数据处理的时候乘上该数值,-1扣数值,1加数值
  129.   #     whom : 给谁扣血?写[-1]的话全体
  130.   #--------------------------------------------------------------------------
  131.   def cut(num,hp_or_not,can_die,matrix,whom,up_num = 0)
  132.     if num > 9999
  133.       return
  134.     end
  135.     @all_num = num
  136.     @now_num = num
  137.     @hp_or_not = hp_or_not
  138.     @can_die = can_die
  139.     @matrix = matrix
  140.     @type = 0
  141.     if hp_or_not == true
  142.       if whom == -1
  143.         if matrix > 0
  144.           @type = ALL_HP_GET
  145.         else
  146.           @type = ALL_HP_CUT
  147.         end
  148.       else
  149.         if matrix > 0
  150.           @type = ONE_HP_GET
  151.         else
  152.           @type = ONE_HP_CUT
  153.         end
  154.       end
  155.     else
  156.       if whom == -1
  157.         if matrix > 0
  158.           @type = ALL_SP_GET
  159.         else
  160.           @type = ALL_SP_CUT
  161.         end
  162.       else
  163.         if matrix > 0
  164.           @type = ONE_SP_GET
  165.         else
  166.           @type = ONE_SP_CUT
  167.         end
  168.       end      
  169.     end
  170.     if whom[0] < 0
  171.       @whom = 0..$game_party.actors.size - 1
  172.     else
  173.       @whom = whom
  174.     end
  175.     @real_step = STEPS
  176.     if @all_num < STEPS
  177.       @real_step = @all_num
  178.     end
  179.     @up_num = up_num
  180.     broke(@all_num,@type)
  181.     @wait_count = START_WAIT
  182.     @cutting = true
  183.   end
  184.   def set_for_water_water(num,up_num,type,where_is)
  185.     @all_num = num
  186.     @now_num = num
  187.     @type = type
  188.     @up_num = up_num
  189.     @real_step = STEPS
  190.     if @all_num < STEPS
  191.       @real_step = @all_num
  192.     end
  193.     @where_is = where_is
  194.     @cutting = true
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 拆数字,并且向下调用draw方法
  198.   #     num : 数字(xxxx)
  199.   #     type : 类型,即第几列
  200.   #--------------------------------------------------------------------------
  201.   def broke(num,type)
  202.     # num必须是一个最高千位数字
  203.     gotnum = num
  204.     # 千位获取
  205.     thousand = gotnum / 1000
  206.     gotnum -= thousand * 1000
  207.     # 百位获取
  208.     hundred = gotnum / 100
  209.     gotnum -= hundred * 100
  210.     # 十位获取
  211.     ten = gotnum / 10
  212.     gotnum -= ten * 10
  213.     # 个位……不能算获取,应该叫捡便宜= =b
  214.     one = gotnum
  215.     # 开始描画
  216.     if @where_is < 0
  217.       gotx = $game_player.real_x / 4.0
  218.       goty = $game_player.real_y / 4.0
  219.     else
  220.       gotx = $game_map.events.values[@where_is - 1].x * 32.0
  221.       goty = $game_map.events.values[@where_is - 1].y * 32.0
  222.     end
  223.     gotx = gotx + 16 - (@one_rect_x * 2)
  224.     goty = goty - @one_rect_y - 16 - @up_num * @one_rect_y
  225.     draw(thousand,type,gotx + @one_rect_x * 0,goty)
  226.     draw(hundred, type,gotx + @one_rect_x * 1,goty)
  227.     draw(ten,     type,gotx + @one_rect_x * 2,goty)
  228.     draw(one,     type,gotx + @one_rect_x * 3,goty)
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ● 描画单个的数字
  232.   #     num : 数值(x)
  233.   #     type : 类型,即第几列
  234.   #     x : x实际坐标
  235.   #     y : y实际坐标
  236.   #--------------------------------------------------------------------------
  237.   def draw(num,type,x,y)
  238.     rectangle = Rect.new(num * @one_rect_x ,(type - 1) * @one_rect_y, @one_rect_x,@one_rect_y)
  239.     self.bitmap.blt(x, y, @from_bitmap,rectangle)
  240.   end
  241.   
  242. end
  243. #==============================================================================
  244. # ■ Scene_Map
  245. #------------------------------------------------------------------------------
  246. #  接入系统的处理
  247. #==============================================================================
  248. class Scene_Map
  249.   attr_accessor :cuter
  250.   alias old_main main
  251.   def main
  252.     @cuter = []
  253.     old_main
  254.     @cuter = []
  255.   end
  256.   alias old_update update
  257.   def update
  258.     old_update
  259.     for i in [email protected] - 1
  260.       if @cuter[i].where_is < 0 then
  261.         @cuter[i].update(i)
  262.       else
  263.         @cuter[i].update
  264.       end
  265.     end
  266.     for i in [email protected] - 1
  267.       if @cuter[i].cutting == false
  268.         @cuter[i].dispose
  269.         @cuter.delete_at i
  270.         break
  271.       end
  272.     end
  273.   end
  274.   alias old_call_menu call_menu
  275.   def call_menu
  276.     unless @cuter == []
  277.       old_call_menu
  278.     end
  279.   end
  280.   def cut_new(num,hp_or_not,can_die,matrix,whom)
  281.     p = Cuter.new
  282.     p.cut(num,hp_or_not,can_die,matrix,whom,@cuter.size)
  283.     @cuter.push(p)
  284.   end
  285.   def water_cut(num,type,where_is)
  286.     p = Cuter.new
  287.     p.set_for_water_water(num,0,type,where_is)
  288.     @cuter.push(p)
  289.   end
  290. end
复制代码

因为估计还是有很多Bug(这是我的一贯风格),所以说明写得很简略,而且也没有范例工程,以后还会有后续的版本。当然如果火星、被54,大多数人认为毫无意义的话就不写了。
要实验的话请在Windowskin下放入这张图:

就是RTAB系统的那张……
如果有什么问题,欢迎指正。
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客

Lv1.梦旅人

真·许愿星

梦石
0
星屑
60
在线时间
44 小时
注册时间
2006-11-5
帖子
1026
2
发表于 2008-4-6 01:04:50 | 只看该作者

这个在ARPG里有了吧……
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
799
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
3
发表于 2008-4-6 01:22:36 | 只看该作者
不错噢,跳动的数字..

记得某人写过一个类似脚本
思路大致相同
但是他解决了一个小问题
重复扣血的时候图片重叠的问题
当两次显示的时间小于图片的消失时间时
将第2次显示的Y坐标提*个数值


另:这个脚本会有很多冲突的{/hx}
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

4
 楼主| 发表于 2008-4-6 01:27:12 | 只看该作者
以下引用传说VS天涯于2008-4-5 17:22:36的发言:

不错噢,跳动的数字..

记得某人写过一个类似脚本
思路大致相同
但是他解决了一个小问题
重复扣血的时候图片重叠的问题
当两次显示的时间小于图片的消失时间时
将第2次显示的Y坐标提*个数值


另:这个脚本会有很多冲突的

alias也可以有这么多冲突……
还有这个脚本只允许存在一个处理……{/gg}
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2008-4-6 04:08:13 | 只看该作者
我做的ARPG是用变量控制的……
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

6
发表于 2008-4-6 21:26:08 | 只看该作者
这个...scene么...
从没想过的思路= =
提问提问.给NPC扣血要怎么办?
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

7
 楼主| 发表于 2008-4-6 21:56:23 | 只看该作者
以下引用水迭澜于2008-4-6 13:26:08的发言:

这个...scene么...
从没想过的思路= =
提问提问.给NPC扣血要怎么办?


[本贴由作者于 2008-4-6 13:26:30 最后编辑]

没有的鸟……NPC有HP吗?有吗?没有吗?要修改的话,请修改Cut_Num方法。
还有就是broke方法里面的x,y坐标值
更新完毕,方法作了修改,允许多个处理同时存在
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

8
发表于 2008-4-6 22:23:05 | 只看该作者
汗,一开始还以为是做ARPG的
继续提问:能否再修改或者扩展一下cut_num的做法,
减少的数值使用代入变量处理,并且让它可以显示在事件上~扣血可以不用直接扣
因为角色的HP也可以用事件变量增减的,而且如果用变量的话可以显示其他东西,扩展起来MS比较方便-v-
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

9
 楼主| 发表于 2008-4-6 23:13:56 | 只看该作者
制作完毕,新定义的方法名很邪恶{/hx}
  1. =begin
  2. 说明:调用方法如下:
  3.   $scene.cut_new(num,hp_or_not,can_die,matrix,whom)
  4.        num : 字面数字,不超过9999
  5.        hp_or_not : 该值为真,扣血;反之扣魔
  6.        can_die : 允许死亡?
  7.        matrix : 数据处理的时候乘上该数值,[-1]扣数值,1加数值
  8.        whom : 给谁扣血?写-1的话全体
  9.   例如,$scene.cut_new(200,true,false,-1,[0,1])
  10.   则给队伍上前面两个人扣血200点,不允许死亡。
  11. 0.9更新说明:允许多个处理同时存在,后面的处理将在上面。
  12. 方法作了修改
  13. =end
  14. #==============================================================================
  15. # ■ Cuter
  16. #------------------------------------------------------------------------------
  17. #  地图上面削血用脚本
  18. #   IamI制作
  19. #==============================================================================
  20. class Cuter < Sprite
  21.   #常量表
  22.   #数字图片的位置,每一横列必须是0123456789。
  23.   PIC_NAME = "Graphics/Windowskins/num"
  24.   #有多少列?
  25.   Y_NUM = 5
  26.   #扣血的时候用多少步?40步相当于1s
  27.   STEPS = 20
  28.   #一开始的时候等待多少帧?
  29.   START_WAIT = 10
  30.   #非全体扣血的列
  31.   ONE_HP_CUT = 1
  32.   #全体扣血的列
  33.   ALL_HP_CUT = 2
  34.   #非全体加血的列
  35.   ONE_HP_GET = 4
  36.   #全体加血的列
  37.   ALL_HP_GET = 4
  38.   #非全体扣魔的列
  39.   ONE_SP_CUT = 3
  40.   #全体扣魔的列
  41.   ALL_SP_CUT = 3
  42.   #非全体加魔的列
  43.   ONE_SP_GET = 5
  44.   #全体加魔的列
  45.   ALL_SP_GET = 5
  46.   #对外接口
  47.   attr_accessor :cutting
  48.   attr_accessor :up_num
  49.   attr_accessor :where_is
  50.   #--------------------------------------------------------------------------
  51.   # ● 初始化
  52.   #--------------------------------------------------------------------------
  53.   def initialize
  54.     super
  55.     @cutting = false
  56.     @from_bitmap = Bitmap.new(PIC_NAME)
  57.     self.bitmap = Bitmap.new(640,480)
  58.     self.x = 0
  59.     self.y = 0
  60.     self.z = 9999
  61.     self.ox = 0
  62.     self.oy = 0
  63.     @one_rect_x = @from_bitmap.width / 10
  64.     @one_rect_y = @from_bitmap.height / Y_NUM
  65.     @hp_or_not = true
  66.     @can_die = false
  67.     @matrix = -1
  68.     @all_num = 100
  69.     @now_num = 0
  70.     @type = 1
  71.     @now_step = 0
  72.     @whom = []
  73.     @real_step = STEPS
  74.     @wait_count = 0
  75.     @up_num = 0
  76.     @where_is = -1
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 刷新
  80.   #--------------------------------------------------------------------------
  81.   def update(up_num = 0)
  82.     if disposed?
  83.       return
  84.     end
  85.     super()
  86.     if @wait_count > 0
  87.       @wait_count -= 1
  88.       return
  89.     end
  90.     self.bitmap.clear
  91.     if @cutting == true
  92.       @up_num = up_num
  93.       @now_num = @now_num - @all_num / @real_step
  94.       broke(@now_num,@type)
  95.       @now_step += 1
  96.       if @now_step >= @real_step
  97.         @now_step = 0
  98.         @cutting = false
  99.         cut_num
  100.       end
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 最后的数值处理
  105.   #--------------------------------------------------------------------------
  106.   def cut_num
  107.     for i in @whom
  108.       actor = $game_party.actors[i]
  109.       if @hp_or_not == true
  110.         if @can_die == true
  111.          actor.hp += @all_num * @matrix
  112.          if $game_party.all_dead?
  113.            $scene = Scene_Gameover.new
  114.          end
  115.        else
  116.          actor.hp = [actor.hp + @all_num * @matrix,1].max
  117.        end
  118.      else
  119.        actor.sp = [actor.sp + @all_num * @matrix,0].max
  120.      end
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 对外的方法
  125.   #     num : 字面数字,不超过9999
  126.   #     hp_or_not : 该值为真,扣血;反之扣魔
  127.   #     can_die : 允许死亡?
  128.   #     matrix : 数据处理的时候乘上该数值,-1扣数值,1加数值
  129.   #     whom : 给谁扣血?写[-1]的话全体
  130.   #--------------------------------------------------------------------------
  131.   def cut(num,hp_or_not,can_die,matrix,whom,up_num = 0)
  132.     if num > 9999
  133.       return
  134.     end
  135.     @all_num = num
  136.     @now_num = num
  137.     @hp_or_not = hp_or_not
  138.     @can_die = can_die
  139.     @matrix = matrix
  140.     @type = 0
  141.     if hp_or_not == true
  142.       if whom == -1
  143.         if matrix > 0
  144.           @type = ALL_HP_GET
  145.         else
  146.           @type = ALL_HP_CUT
  147.         end
  148.       else
  149.         if matrix > 0
  150.           @type = ONE_HP_GET
  151.         else
  152.           @type = ONE_HP_CUT
  153.         end
  154.       end
  155.     else
  156.       if whom == -1
  157.         if matrix > 0
  158.           @type = ALL_SP_GET
  159.         else
  160.           @type = ALL_SP_CUT
  161.         end
  162.       else
  163.         if matrix > 0
  164.           @type = ONE_SP_GET
  165.         else
  166.           @type = ONE_SP_CUT
  167.         end
  168.       end      
  169.     end
  170.     if whom[0] < 0
  171.       @whom = 0..$game_party.actors.size - 1
  172.     else
  173.       @whom = whom
  174.     end
  175.     @real_step = STEPS
  176.     if @all_num < STEPS
  177.       @real_step = @all_num
  178.     end
  179.     @up_num = up_num
  180.     broke(@all_num,@type)
  181.     @wait_count = START_WAIT
  182.     @cutting = true
  183.   end
  184.   def set_for_water_water(num,up_num,type,where_is)
  185.     @all_num = num
  186.     @now_num = num
  187.     @type = type
  188.     @up_num = up_num
  189.     @real_step = STEPS
  190.     if @all_num < STEPS
  191.       @real_step = @all_num
  192.     end
  193.     @where_is = where_is
  194.     @cutting = true
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 拆数字,并且向下调用draw方法
  198.   #     num : 数字(xxxx)
  199.   #     type : 类型,即第几列
  200.   #--------------------------------------------------------------------------
  201.   def broke(num,type)
  202.     # num必须是一个最高千位数字
  203.     gotnum = num
  204.     # 千位获取
  205.     thousand = gotnum / 1000
  206.     gotnum -= thousand * 1000
  207.     # 百位获取
  208.     hundred = gotnum / 100
  209.     gotnum -= hundred * 100
  210.     # 十位获取
  211.     ten = gotnum / 10
  212.     gotnum -= ten * 10
  213.     # 个位……不能算获取,应该叫捡便宜= =b
  214.     one = gotnum
  215.     # 开始描画
  216.     if @where_is < 0
  217.       gotx = $game_player.real_x / 4.0
  218.       goty = $game_player.real_y / 4.0
  219.     else
  220.       gotx = $game_map.events.values[@where_is - 1].x * 32.0
  221.       goty = $game_map.events.values[@where_is - 1].y * 32.0
  222.     end
  223.     gotx = gotx + 16 - (@one_rect_x * 2)
  224.     goty = goty - @one_rect_y - 16 - @up_num * @one_rect_y
  225.     draw(thousand,type,gotx + @one_rect_x * 0,goty)
  226.     draw(hundred, type,gotx + @one_rect_x * 1,goty)
  227.     draw(ten,     type,gotx + @one_rect_x * 2,goty)
  228.     draw(one,     type,gotx + @one_rect_x * 3,goty)
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ● 描画单个的数字
  232.   #     num : 数值(x)
  233.   #     type : 类型,即第几列
  234.   #     x : x实际坐标
  235.   #     y : y实际坐标
  236.   #--------------------------------------------------------------------------
  237.   def draw(num,type,x,y)
  238.     rectangle = Rect.new(num * @one_rect_x ,(type - 1) * @one_rect_y, @one_rect_x,@one_rect_y)
  239.     self.bitmap.blt(x, y, @from_bitmap,rectangle)
  240.   end
  241.   
  242. end
  243. #==============================================================================
  244. # ■ Scene_Map
  245. #------------------------------------------------------------------------------
  246. #  接入系统的处理
  247. #==============================================================================
  248. class Scene_Map
  249.   attr_accessor :cuter
  250.   alias old_main main
  251.   def main
  252.     @cuter = []
  253.     old_main
  254.     @cuter = []
  255.   end
  256.   alias old_update update
  257.   def update
  258.     old_update
  259.     for i in [email protected] - 1
  260.       if @cuter[i].where_is < 0 then
  261.         @cuter[i].update(i)
  262.       else
  263.         @cuter[i].update
  264.       end
  265.     end
  266.     for i in [email protected] - 1
  267.       if @cuter[i].cutting == false
  268.         @cuter[i].dispose
  269.         @cuter.delete_at i
  270.         break
  271.       end
  272.     end
  273.   end
  274.   alias old_call_menu call_menu
  275.   def call_menu
  276.     unless @cuter == []
  277.       old_call_menu
  278.     end
  279.   end
  280.   def cut_new(num,hp_or_not,can_die,matrix,whom)
  281.     p = Cuter.new
  282.     p.cut(num,hp_or_not,can_die,matrix,whom,@cuter.size)
  283.     @cuter.push(p)
  284.   end
  285.   def water_cut(num,type,where_is)
  286.     p = Cuter.new
  287.     p.set_for_water_water(num,0,type,where_is)
  288.     @cuter.push(p)
  289.   end
  290. end
复制代码

(原来给主角的调用仍然不变)
调用为:$scene.water_cut(num,type,where_is)
num:字面数字
type:第几行的数字
where_is:事件的ID
一个事件不允许进行两个调用

顶楼暂不刷新。

喵,刚才改脚本半个小时没去逛自由提问区,水水要……算了,反正也全都是你在答题{/gg}
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

10
发表于 2008-4-7 00:27:31 | 只看该作者
- -我经常一整天不答题的
辛苦了~去吧~(华丽地飘走)
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 20:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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