查看: 2319|回复: 6

[胡扯] 我已丧心病狂!

[复制链接]

百合控

梦石
0
星屑
6548
在线时间
1275 小时
注册时间
2013-8-21
回帖
3522

开拓者

发表于 2014-3-9 11:31:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 余烬之中 于 2014-3-9 15:23 编辑

写脚本的时候常常需要动态移动窗口,每次都要重来很烦的有木有!

于是提高可重用性………………这个不是重点!

这是做好后用来测试的东西 莫名其妙戳中了笑点
001.gif

@晴兰 @taroxd @无脑之人

附  操作方法:
脚本
[pre lang="ruby" line="1"]module Smomo
module Kit
  @@register = {
    dynamical_move: []
  } # @@register
  module_function
  def register
    @@register
  end
end # Smomo::Kit
module_function
def dynamical_move(aim, x = :x, y = :y)
  reg = Smomo::Kit.register[:dynamical_move]
  id = aim.object_id
  return reg[id] if reg[id]
  reg[id] = Object.new
  # class << reg[id]
  class << reg[id]
    attr_accessor :moving,:ox,:oy,:ax,:ay,:x,:y,:aim_id,:duration,:rx,:ry
    # moveto
    def moveto(tx, ty, duration)
      unless moving
        a = ObjectSpace._id2ref(@aim_id)
        @ox, @oy = a.send(@x), a.send(@y)
        @ax, @ay = tx, ty
        @rx, @ry = *[@ox, @oy].collect(&:to_f)
        @duration = duration
        @moving = true
      end
      _moveto
    end
    # _moveto
    def _moveto
      a = ObjectSpace._id2ref(@aim_id)
      @rx += (@ax - @ox).to_f / @duration
      @ry += (@ay - @oy).to_f / @duration
      a.instance_eval %!
        self.#{@x} = #{@rx}
        self.#{@y} = #{@ry}
      !
      stop if (@rx - @ax).to_i == 0 && (@ry - @ay).to_i == 0
    end
    # stop
    define_method(:stop){@moving = false}
    # apos
    define_method(:apos){[@ax, @ay]}
    # opos
    define_method(:opos){[@ox, @oy]}
  end # class << reg[id]
  reg[id].moving, reg[id].x, reg[id].y, reg[id].aim_id = false, x, y, id
  reg[id]
end # dynamical_move
end # Smomo[/pre]

测试脚本
[pre lang="ruby" line="1"]def test
  $adasdasdaf ||= []
  ssssssss = $adasdasdaf.size
  $adasdasdaf[ssssssss] = Window_Base.new(424 * rand, 206 * rand, 120, 210)
  class << $adasdasdaf[ssssssss]
    alias :old_update :update
    def update
      Smomo.dynamical_move(self).moveto(424 * rand, 206 * rand, 60 * rand)
      old_update
    end
  end
  $adasdasdaf[ssssssss + 1] = Window_Base.new(394 * rand, 356 * rand, 150, 60)
  class << $adasdasdaf[ssssssss + 1]
    alias :old_update :update
    def update
      Smomo.dynamical_move(self).moveto(394 * rand, 356 * rand, 30 * rand)
      old_update
    end
  end
  $game_variables[1] += 1
end

class Scene_Map
  alias :woyisangxinbingkuang :update
  def update
    woyisangxinbingkuang
    $adasdasdaf.each_with_index{|w, i|
      w.disposed? ? [$adasdasdaf = nil, $adasdasdaf.compact!] : w.update
    } if $adasdasdaf
  end
end[/pre]

然后在地图上新建事件 事件内容为执行脚本
【test】
然后进入游戏按空格疯狂地触发事件~~












当然 既然disable了…………
002.gif


003.png

点评

消失是说明这个窗口的句柄你已经拿不到了= =  发表于 2014-3-9 15:16
萌新瑟瑟发抖
看到我请叫我去干活

梦石
0
星屑
26
在线时间
2155 小时
注册时间
2010-12-19
回帖
5625

贵宾

发表于 2014-3-9 11:38:37 | 显示全部楼层
程序猿经常把自己弄得面目狰狞,然后又经常被自己做得逗笑
RM,始终放不下,它给我带来的充实生活

【Labyrinth】失落秘密基地!!
请来此看看我的论坛,注册一个会员,来夸或骂我两句~!点图片进入,感谢你的参与!

回复

使用道具 举报

梦石
0
星屑
3905
在线时间
1972 小时
注册时间
2013-1-3
回帖
9146
发表于 2014-3-9 12:49:49 | 显示全部楼层
所以直接加大窗口,移动图片

点评

………………  发表于 2014-3-9 12:59
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复

使用道具 举报

万兽

梦石
0
星屑
602
在线时间
2271 小时
注册时间
2006-11-4
回帖
4701

贵宾

发表于 2014-3-9 12:52:07 | 显示全部楼层
还是会美工好,可以通过图片用一些傻B的方式来弥补俺脚本上的不足
回复

使用道具 举报

梦石
0
星屑
122
在线时间
552 小时
注册时间
2012-8-18
回帖
1392
发表于 2014-3-9 13:20:04 | 显示全部楼层
【程序猿的冷笑话系列么……
不开GC就会爆内存,不做死就不会死你怎么就是不明白www

点评

现在的可以把GC打开了  发表于 2014-3-9 15:22
是的 因为我只用了数组的两个元素 :-P  发表于 2014-3-9 15:22
开了GC有些窗体会半途消失  发表于 2014-3-9 13:29
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
回帖
10960

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

发表于 2014-3-9 13:38:35 | 显示全部楼层
我很好奇那个击破数是用来作什么用的

点评

那是以前写过的另一个脚本 本质是显示变量  发表于 2014-3-9 13:41
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复

使用道具 举报

聪仔

梦石
0
星屑
6187
在线时间
3077 小时
注册时间
2013-12-26
回帖
3076
发表于 2014-3-9 13:46:52 | 显示全部楼层
$adasdasdaf 这个命名很棒
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部