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

Project1

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

[原创发布] 【加工】行走图转换器(VA/VX -> XP)

[复制链接]

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

跳转到指定楼层
1
发表于 2016-2-2 13:36:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2016-5-8 17:38 编辑

之前写过一个脚本可以直接在XP上使用VA/VX的单个行走图,这个脚本用起来还凑合,主要的问题就是VX/VA的行走图有很多是8个人放在一张图上的,放到XP里面还得先裁剪。即便是单张4×3的行走图,在编辑器中显示也是怪怪的。最近锅盖要办什么事件剧情设计大赛,需要把VA行走图搞的XP上,于是就写了这个脚本。
用法十分简单,脚本里面已经附上说明。
RUBY 代码复制
  1. #=========================================================================
  2. # 行走图转换工具 VA->XP Ver 1.0
  3. #-------------------------------------------------------------------------
  4. # @Author : RyanBern
  5. #-------------------------------------------------------------------------
  6. # 用法:
  7. #   将待转换的 VA 行走图放入工程根目录的 vx_chara_s 文件夹下,并新建一个
  8. #   文件夹 xp_chara_s 用于存放转换好的 XP 行走图。新的行走图文件名会命名
  9. #   为 原行走图_00~原行走图_07.png,必要时请设置横向和纵向格栅数。
  10. #   然后将此脚本插入到 Main 组之前,运行游戏工程,在标题画面按下 Z 键即可
  11. #   进行批量转换。使用完毕后,可以将此脚本删除(附带的MGC_PNG.dll如果用不
  12. #   到也可以删掉)
  13. #=========================================================================
  14. module Char_VA2XP
  15.   # VA 行走图文件夹(输入)
  16.   Dir_In  = "vx_chara_s"
  17.  
  18.   # XP 行走图文件夹(输出)
  19.   Dir_Out = "xp_chara_s"
  20.  
  21.   # 横向格栅数(即一张图横向有多少个角色)
  22.   NUMS_X = 4
  23.  
  24.   # 纵向格栅数(即一张图纵向有多少个角色)
  25.   NUMS_Y = 2
  26.  
  27.   def self.start_covert
  28.     $scene = Scene_Char_Convert
  29.   end
  30.   class Window_Progress < ::Window_Base
  31.     def initialize
  32.       super(0, 0, 288, 96)
  33.       @curr = @tol = 0
  34.       self.contents = Bitmap.new(width - 32, height - 32)
  35.       self.x = 320 - width / 2
  36.       self.y = 240 - height / 2
  37.       self.opacity = 0
  38.       refresh
  39.     end
  40.     def refresh
  41.       self.contents.clear
  42.       refresh_words
  43.       refresh_progress
  44.     end
  45.     def refresh_words
  46.       self.contents.draw_text(4, 0, width - 36, 32, "Converting...Please wait...")
  47.     end
  48.     def refresh_progress
  49.       self.contents.fill_rect(0, 32, width - 32, 32, Color.new(0, 0, 0, 0))
  50.       self.contents.draw_text(96, 32, 48, 32, @curr.to_s, 2)
  51.       self.contents.draw_text(144, 32, 24, 32, "/", 1)
  52.       self.contents.draw_text(168, 32, 48, 32, @tol.to_s)
  53.     end
  54.     def set(curr, tol)
  55.       if @curr != curr || @tol != tol
  56.         @curr, @tol = curr, tol
  57.         refresh_progress
  58.       end
  59.     end
  60.   end
  61.   class Scene_Char_Convert
  62.     def main
  63.       @progress_window = Window_Progress.new
  64.       Graphics.transition
  65.       start_convert
  66.       Graphics.freeze
  67.       @progress_window.dispose
  68.       print "done"
  69.       exit
  70.     end
  71.     def start_convert
  72.       filenames_in = []
  73.       unless FileTest.exist?(Dir_Out)
  74.         Dir.mkdir(Dir_Out)
  75.       end
  76.       Dir.foreach(Dir_In) do |s|
  77.         filenames_in << s if s != "." && s != ".."
  78.       end
  79.       tol = NUMS_X * NUMS_Y
  80.       curr = 0
  81.       @progress_window.set(curr, tol)
  82.       Graphics.update
  83.       filenames_in.each do |filename|
  84.         filename_out_base = filename.split(/\./)[0]
  85.         src_bitmap = Bitmap.new(Dir_In + "/" + filename)
  86.         (0...tol).each do |i|
  87.           w = src_bitmap.width / NUMS_X
  88.           h = src_bitmap.height / NUMS_Y
  89.           x = i % NUMS_X * w
  90.           y = i / NUMS_X * h
  91.           out_bitmap = Bitmap.new(w / 3 * 4, h)
  92.           src_rect1 = Rect.new(x, y, w, h)
  93.           src_rect2 = Rect.new(x + w / 3, y, w / 3, h)
  94.           out_bitmap.blt(0, 0, src_bitmap, src_rect2)
  95.           out_bitmap.blt(w / 3, 0, src_bitmap, src_rect1)
  96.           filename_out = sprintf("%s_%02d.png", filename_out_base, i)
  97.           out_bitmap.save_as_png(Dir_Out + "/" + filename_out)
  98.           curr += 1
  99.           @progress_window.set(curr, tol * filenames_in.size)
  100.           Graphics.update
  101.           out_bitmap.dispose
  102.         end
  103.         src_bitmap.dispose
  104.       end
  105.     end
  106.   end
  107. end
  108.  
  109. class Scene_Title
  110.   alias rb_update_20160202 update
  111.   def update
  112.     if Input.trigger?(Input::A)
  113.       $scene = Char_VA2XP::Scene_Char_Convert.new
  114.       return
  115.     end
  116.     rb_update_20160202
  117.   end
  118. end
  119.  
  120. #==============================================================================
  121. # ■ Bitmap
  122. #------------------------------------------------------------------------------
  123. #  关联到Bitmap。
  124. #==============================================================================
  125. class Bitmap
  126.   #--------------------------------------------------------------------------
  127.   # * Constantes
  128.   #--------------------------------------------------------------------------
  129.   CREATE_PNG = Win32API.new("MGC_PNG", "createPNG", "ll", "l")
  130.   #--------------------------------------------------------------------------
  131.   # * Méthode d'appel pour créer un fichier PNG
  132.   #     chemin : chemin + nom du fichier à créer
  133.   #--------------------------------------------------------------------------
  134.   def save_as_png(chemin)
  135.     unless chemin[/\//] then chemin = './' << chemin end
  136.     CREATE_PNG.call(self.__id__, chemin.__id__)
  137.   end
  138. end


范例还是照常附上: Char_Va2XP.7z (985.05 KB, 下载次数: 333)

评分

参与人数 5星屑 +185 +1 收起 理由
半昭吖! + 1 塞糖
houyuxiaoyang + 10
jiushiainilip19 + 15 塞糖
邪月长啸 + 60 塞糖
SailCat + 100 我很赞同

查看全部评分

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

本版积分规则

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

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

GMT+8, 2024-4-28 14:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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