Project1

标题: 【脚写脚本】移动对话窗口信息 [打印本页]

作者: KB.Driver    时间: 2020-4-20 11:24
标题: 【脚写脚本】移动对话窗口信息
本帖最后由 KB.Driver 于 2020-4-20 11:25 编辑


使用方向键可以造成对话窗口会动的感觉。

需要先插入上面这段脚本
点我


脚本本体:
RUBY 代码复制
  1. #encoding:utf-8
  2. ##
  3. # Ugoku
  4. # author: Calendar99
  5. #
  6. # use arrow keys to make your message window ugokemasu.
  7. ##
  8.  
  9. class Window_Message
  10.  
  11.   dur = 15
  12.   power = 90
  13.  
  14.   tw = ->(ab, inout) { "Tween.new(#{ab}, Tween::Cubic::#{inout}, #{dur})" }
  15.   expo_tws = "->(a, b) { [(#{tw['a, b','Out']}), (#{tw['b, a' ,'In']})] }"
  16.  
  17.   {
  18.     :down     => [:oy, "->(ox, oy) { (#{expo_tws})[oy, oy - #{power}] }"],
  19.     :up       => [:oy, "->(ox, oy) { (#{expo_tws})[oy, oy + #{power}] }"],
  20.     :right    => [:ox, "->(ox, oy) { (#{expo_tws})[ox, ox - #{power}] }"],
  21.     :left     => [:ox, "->(ox, oy) { (#{expo_tws})[ox, ox + #{power}] }"],
  22.   }.each {|meth, (attr, tws)|
  23.     class_eval %{
  24.       def ugoku_#{meth}
  25.         if @#{attr}_tweens.empty?
  26.           @#{attr}_tweens += (#{tws}).call(ox, oy)
  27.         else
  28.           @#{attr}_tweens.shift until @#{attr}_tweens.size == 1
  29.           @#{attr}_tweens.unshift (#{tws}).call(ox, oy)[0]
  30.           @#{attr}_tweens[1].start[0] = @#{attr}_tweens[0].finish[0]
  31.           @#{attr}_tweens[1].rewind
  32.         end
  33.       end
  34.     }
  35.   }
  36.  
  37.   alias initialize_ugoku_calendar99 initialize
  38.   def initialize
  39.     initialize_ugoku_calendar99
  40.     @ox_tweens = []
  41.     @oy_tweens = []
  42.   end
  43.  
  44.   alias update_ugoku_calendar99 update
  45.   def update
  46.     process_ugoku
  47.     update_ugoku
  48.     update_ugoku_calendar99
  49.   end
  50.  
  51.   def process_ugoku
  52.     return unless active && open?
  53.     ugoku_down  if Input.trigger?(:DOWN)
  54.     ugoku_up    if Input.trigger?(:UP)
  55.     ugoku_right if Input.trigger?(:RIGHT)
  56.     ugoku_left  if Input.trigger?(:LEFT)
  57.   end
  58.  
  59.  
  60.   upd = ->(param) {
  61.     %{
  62.       unless @#{param}_tweens.empty?
  63.         if @#{param}_tweens[0].done
  64.           @#{param}_tweens.shift
  65.         end
  66.         if tw = @#{param}_tweens[0]
  67.           tw.update
  68.           self.#{param} = tw.value
  69.         end
  70.       end
  71.     }
  72.   }
  73.  
  74.   class_eval %{
  75.     def update_ugoku
  76.       #{upd['ox']}
  77.       #{upd['oy']}
  78.     end
  79.   }
  80. end

作者: PLeaseS    时间: 2020-4-20 11:52
tqltql
不过这个脚本能用在什么地方呢
作者: 百里_飞柳    时间: 2020-4-20 12:38
有点鬼畜hhhhh
实际上这个需要结合 对话框宽高扩展,默认只有4行也就左右移动有点用
但是这么多字其实看起来很累,而且绘制也会卡(如果一口气绘制完的话)
作者: PLeaseS    时间: 2020-4-20 14:20
把对话框扩大
说不定可以做地图
作者: MCCF    时间: 2020-4-20 18:48
仿佛看出了缓动的效果……
总之膜(guan)拜(shui)日历大佬!




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