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

Project1

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

[RMVX发布] 纸娃娃换装系统v0.65

 关闭 [复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2009-2-11 21:37:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
脚本更新
- 2009/2/11
  * 放出半成品
- 2009/2/15
  * 支援功能:主角装备可以设定成纸娃娃部件

预计下次更新:
支援角色加上胡须、疤痕的部件(素材制作中)

设定方式:
在武器/防具的备注里面添加
*charapart 文件名 优先度
乃设定该武器/装备的行走图,
优先度留空的话,使用默认设定
行走图的index与角色一致

急需素材完成:http://rpg.blue/viewthread.php?tid=118515

范例:点我下载
进入游戏後会看到灰发的拉尔夫
与右边的女孩对话,进入颜色设定
按L、R调整RGB的亮度,右边会显示出效果
设定完毕後按取消键退出,就可以看到效果了

然後进入装备画面,卸下武器,回到地图看看效果

脚本:
主要部分

  1. #==============================================================================
  2. # ■ Sprite_Character
  3. #------------------------------------------------------------------------------
  4. #  角色显示用脚本。监视 Game_Character 类的实例、自动变化脚本状态。
  5. #==============================================================================

  6. class Sprite_Character < Sprite_Base
  7.   alias snstar2006_zhiwawa_initialize initialize
  8.   def initialize(viewport, character = nil)
  9.     if character.paper_doll?
  10.       @chara_part_sprites = {}
  11.       
  12.       chara_w_part_sprite = Sprite.new      
  13.       chara_a1_part_sprite = Sprite.new
  14.       chara_a2_part_sprite = Sprite.new
  15.       chara_a3_part_sprite = Sprite.new
  16.       chara_a4_part_sprite = Sprite.new
  17.       
  18.       chara_h_part_sprite = Sprite.new
  19.       chara_s_part_sprite = Sprite.new
  20.       chara_e_part_sprite = Sprite.new
  21.       chara_b_part_sprite = Sprite.new
  22.       
  23.       @chara_part_sprites["weapon"] = [chara_w_part_sprite, 3]
  24.       @chara_part_sprites["armor"] = [chara_a1_part_sprite, 1]
  25.       @chara_part_sprites["helmet"] = [chara_a2_part_sprite, 9]
  26.       @chara_part_sprites["shield"] = [chara_a3_part_sprite, 10]
  27.       @chara_part_sprites["accesory"] = [chara_a4_part_sprite, 1]
  28.       
  29.       @chara_part_sprites["hair"] = [chara_h_part_sprite, 4]
  30.       @chara_part_sprites["eye"] = [chara_e_part_sprite, 2]
  31.       @chara_part_sprites["beard"] = [chara_b_part_sprite, 4]
  32.       @chara_part_sprites["scar"] = [chara_s_part_sprite, 3]
  33.       
  34.     end
  35.     snstar2006_zhiwawa_initialize(viewport, character)
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 更新画面
  39.   #--------------------------------------------------------------------------
  40.   alias snstar2006_zhiwawa_update update
  41.   def update
  42.     snstar2006_zhiwawa_update
  43.     if @character.paper_doll?
  44.       # 更新部件座标
  45.       update_parts("weapon")
  46.       update_parts("armor")
  47.       update_parts("helmet")
  48.       update_parts("shield", true)
  49.       update_parts("accesory")
  50.       
  51.       update_parts("hair")
  52.       update_parts("eye")
  53.       update_parts("beard")
  54.       update_parts("scar")
  55.     end
  56.    
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 更新部件
  60.   #  l 左手持的防具/武器
  61.   #--------------------------------------------------------------------------
  62.   def update_parts(type, l=false)
  63.     # 获取精灵物件
  64.     sprite = @chara_part_sprites[type][0]
  65.     case type
  66.     when "weapon"
  67.       # 获取武器部件
  68.       wid = $game_player.weapon_id
  69.       pic_name = wid > 0 ? $data_weapons[wid].part[0] : ""
  70.       prty = wid > 0 ? $data_weapons[wid].part[1] : 0
  71.     when "helmet"
  72.       # 获取头部部件
  73.       aid = $game_player.armor2_id
  74.       pic_name = aid > 0 ? $data_armors[aid].part[0] : ""
  75.       prty = aid > 0 ? $data_weapons[aid].part[1] : 0
  76.     when "armor"
  77.       # 获取盔甲部件
  78.       aid = $game_player.armor3_id
  79.       pic_name = aid > 0 ? $data_armors[aid].part[0] : ""
  80.       prty = aid > 0 ? $data_weapons[aid].part[1] : 0
  81.     when "shield"
  82.       # 获取盾牌部件
  83.       aid = $game_player.armor1_id
  84.       pic_name = aid > 0 ? $data_armors[aid].part[0] : ""
  85.       prty = aid > 0 ? $data_weapons[aid].part[1] : 0
  86.     when "accesory"
  87.       # 获取饰品部件
  88.       aid = $game_player.armor4_id
  89.       pic_name = aid > 0 ? $data_armors[aid].part[0] : ""
  90.       prty = aid > 0 ? $data_weapons[aid].part[1] : 0
  91.     when "hair"
  92.       # 获取发型部件
  93.       pic_name = "hair1"
  94.       prty = 0
  95.       $color ||= Color.new(255, 0, 0, 64)
  96.       sprite.color = $color
  97.     when "eye"
  98.       # 获取眼睛部件
  99.       pic_name = ""
  100.       prty = 0
  101.     when "scar"
  102.       # 获取疤痕部件
  103.       pic_name = ""
  104.       prty = 0
  105.     when "beard"
  106.       # 获取胡须部件
  107.       pic_name = ""
  108.       prty = 0
  109.     else
  110.       pic_name = ""
  111.       prty = 0
  112.     end
  113.    
  114.     # 设定精灵物件
  115.     sprite.bitmap = Cache.charapart(pic_name)   
  116.     sprite.src_rect = self.src_rect
  117.     sprite.x = (self.x - 32)
  118.     sprite.y = (self.y - 64)

  119.     d = @character.direction
  120.     k = (d%4==0 ? -101 : 10)
  121.     #sprite.z = @character.screen_z
  122.     @chara_part_sprites[type][1] = prty if prty > 0
  123.     pr = @chara_part_sprites[type][1]
  124.     case d
  125.     when 2
  126.       sprite.z = self.z + pr
  127.     when 4
  128.       sprite.z = self.z + (l ? pr : -pr)
  129.     when 6
  130.       sprite.z = self.z - (l ? pr : -pr)
  131.     when 8
  132.       sprite.z = self.z - pr
  133.     end
  134.     if Input.trigger?(Input::X) and type == "shield"
  135.       p [type, pr]
  136.     end
  137.   end
  138.   
  139.   alias snstar2006_zhiwawa_dispose dispose
  140.   def dispose
  141.     if @character.paper_doll?
  142.       @chara_part_sprites.clear
  143.     end   
  144.     snstar2006_zhiwawa_dispose   
  145.   end

  146. end
  147. class Game_Player < Game_Character
  148.   def weapon_id
  149.     return $game_party.members[0].weapon_id
  150.   end
  151.   def armor1_id
  152.     return $game_party.members[0].armor1_id
  153.   end
  154.   def armor2_id
  155.     return $game_party.members[0].armor3_id
  156.   end
  157.   def armor3_id
  158.     return $game_party.members[0].armor3_id
  159.   end
  160.   def armor4_id
  161.     return $game_party.members[0].armor4_id
  162.   end
  163.   def paper_doll?
  164.     return true
  165.   end
  166.   def actor?
  167.     return true
  168.   end
  169. end
  170. class Game_Character
  171.   def paper_doll?
  172.     return false
  173.   end
  174.   def actor?
  175.     return false
  176.   end
  177. end
  178. module Cache
  179.   #--------------------------------------------------------------------------
  180.   # * 获取角色行走图部件图档
  181.   #     filename : 文件名
  182.   #--------------------------------------------------------------------------
  183.   def self.charapart(filename)
  184.     if filename == ""
  185.       return Bitmap.new(64, 64)
  186.     else
  187.       load_bitmap("Graphics/Characters/parts/", filename)
  188.     end
  189.   end
  190. end
  191. module PaperDoll
  192.   def part
  193.     self.note.split(/[\r\n]+/).each { |line|
  194.       if line =~ /\*charapart (\w*|use_icon)(?: (\d*)|)/
  195.         name = $1
  196.         name = self.icon_index if $1 == "use_icon"
  197.         return [name, $2.to_i] if $2
  198.         return [name, 0]
  199.       end
  200.     }
  201.     return [name, 0]
  202.   end
  203. end
  204. class RPG::Weapon < RPG::BaseItem
  205.   include PaperDoll
  206. end
  207. class RPG::Armor < RPG::BaseItem
  208.   include PaperDoll
  209. end
复制代码


编辑部分(现在只有调整发色功能)
  1. #~ class Window_Base < Window
  2. #~   alias snstar2006_zhiwawa_initialize initialize
  3. #~   def initialize(x, y, width, height)
  4. #~     snstar2006_zhiwawa_initialize(x, y, width, height)
  5. #~     @character_sprite = []
  6. #~   end
  7. #~   def draw_character(character_party_index, x, y)
  8. #~     i = character_party_index
  9. #~     v = self.viewport
  10. #~     @character_sprite[i] ||= Sprite_Character.new(v, $game_party.members[i])
  11. #~     @character_sprite[i].visible = true
  12. #~   end
  13. #~ end

  14. class Window_ChooseColor < Window_Selectable
  15.   def initialize(x, y)
  16.     super(x, y, 176, 128)
  17.     @item_max = 4
  18.     @column_max = 1
  19.     @red ||= 0
  20.     @green ||= 0
  21.     @blue ||= 0
  22.     @alpha ||= 64
  23.     @color_R1 = Color.new(0, 0, 0)
  24.     @color_R2 = Color.new(255, 0, 0)
  25.     @color_G1 = Color.new(0, 0, 0)
  26.     @color_G2 = Color.new(0, 255, 0)
  27.     @color_B1 = Color.new(0, 0, 0)
  28.     @color_B2 = Color.new(0, 0, 255)
  29.     self.color = $color
  30.     @arrow_R_sprite = Sprite.new
  31.     @arrow_G_sprite = Sprite.new
  32.     @arrow_B_sprite = Sprite.new
  33.     @arrow_A_sprite = Sprite.new
  34.     @arrow_R_sprite.bitmap = @arrow_G_sprite.bitmap = @arrow_B_sprite.bitmap = @arrow_A_sprite.bitmap = Cache.system("Window")
  35.     @arrow_R_sprite.src_rect = @arrow_G_sprite.src_rect = @arrow_B_sprite.src_rect = @arrow_A_sprite.src_rect = Rect.new(96, 80, 16, 16)
  36.     @arrow_R_sprite.x = self.x + 48 + (64*@red/255)
  37.     @arrow_G_sprite.x = self.x + 48 + (64*@green/255)
  38.     @arrow_B_sprite.x = self.x + 48 + (64*@blue/255)
  39.     @arrow_A_sprite.x = self.x + 48 + (64*@alpha/255)
  40.     @arrow_R_sprite.z = @arrow_G_sprite.z = @arrow_B_sprite.z = @arrow_A_sprite.z = self.x + 100
  41.     @arrow_R_sprite.y = y + 8
  42.     @arrow_G_sprite.y = y + 32
  43.     @arrow_B_sprite.y = y + 56
  44.     @arrow_A_sprite.y = y + 80
  45.    
  46.     refresh
  47.   end
  48.   def refresh
  49.     self.contents.clear
  50.     @color_R1.set(0, @green , @blue)
  51.     @color_R2.set(255, @green , @blue)
  52.     @color_G1.set(@red, 0 , @blue)
  53.     @color_G2.set(@red, 255 , @blue)
  54.     @color_B1.set(@red, @green , 0)
  55.     @color_B2.set(@red, @green , 255)
  56.     c1 = color.clone
  57.     c2 = color.clone
  58.     c1.alpha = 0
  59.     c2.alpha = 255
  60.     self.contents.draw_text(0, 0, 24, WLH, "R")
  61.     self.contents.draw_text(0, 24, 24, WLH, "G")
  62.     self.contents.draw_text(0, 48, 24, WLH, "B")
  63.     self.contents.draw_text(0, 72, 24, WLH, "A")
  64.     self.contents.draw_text(12, 0, 24, WLH, @red)
  65.     self.contents.draw_text(12, 24, 24, WLH, @green)
  66.     self.contents.draw_text(12, 48, 24, WLH, @blue)
  67.     self.contents.draw_text(12, 72, 24, WLH, @alpha)
  68.     self.contents.gradient_fill_rect(40, 8, 64, 8, @color_R1, @color_R2)
  69.     self.contents.gradient_fill_rect(40, 32, 64, 8, @color_G1, @color_G2)
  70.     self.contents.gradient_fill_rect(40, 56, 64, 8, @color_B1, @color_B2)
  71.     self.contents.gradient_fill_rect(40, 80, 64, 8, c1, c2)
  72.     self.contents.fill_rect(120, 0, 24, 96, Color.new(0, 0, 0, 255))
  73.     self.contents.fill_rect(122, 2, 20, 92, color)
  74.   end
  75.   def update
  76.     super
  77.     if Input.repeat?(Input::L) or Input.repeat?(Input::R)
  78.       self.contents.clear
  79.       kkk =  8 if Input.repeat?(Input::R)
  80.       kkk = -8 if Input.repeat?(Input::L)
  81.       case @index
  82.       when 0
  83.         @red += kkk
  84.         @red = [[@red, 0].max, 255].min
  85.         @arrow_R_sprite.x = self.x + 48 + (64*@red/255)
  86.       when 1
  87.         @green += kkk
  88.         @green = [[@green, 0].max, 255].min
  89.         @arrow_G_sprite.x = self.x + 48 + (64*@green/255)
  90.       when 2
  91.         @blue += kkk
  92.         @blue = [[@blue, 0].max, 255].min
  93.         @arrow_B_sprite.x = self.x + 48 + (64*@blue/255)
  94.       when 3
  95.         @alpha += kkk
  96.         @alpha = [[@alpha, 0].max, 255].min
  97.         @arrow_A_sprite.x = self.x + 48 + (64*@alpha/255)
  98.       end
  99.       refresh
  100.     end
  101.   end
  102.   def dispose
  103.     @arrow_R_sprite.dispose
  104.     @arrow_G_sprite.dispose
  105.     @arrow_B_sprite.dispose
  106.     @arrow_A_sprite.dispose
  107.     super
  108.   end
  109.   def color
  110.     return Color.new(@red, @green, @blue, @alpha)
  111.   end
  112.   def color=(c)
  113.     @red = (c.red - c.red%8).to_i
  114.     @green = (c.green - c.green%8).to_i
  115.     @blue = (c.blue - c.blue%8).to_i
  116.     @alpha = (c.alpha - c.alpha%8).to_i
  117.   end
  118.   def item_rect(index)
  119.     rect = Rect.new(32, 0, 80, 24)
  120.     rect.y = index / @column_max * WLH
  121.     return rect
  122.   end
  123. end
  124. class Scene_Character < Scene_Base
  125.   def start
  126.     @color_window = Window_ChooseColor.new(0, 0)
  127.     @color_window.active = true
  128.     @color_window.index = 0
  129.     @color_window.color = $color
  130.   end
  131.   def update
  132.     @color_window.update
  133.     if Input.trigger?(Input::B)
  134.       $scene = Scene_Map.new
  135.     end
  136.   end
  137.   def terminate
  138.     $color = @color_window.color
  139.     @color_window.dispose
  140.   end
  141. end
复制代码
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv4.逐梦者

世界坑化协会

梦石
0
星屑
8183
在线时间
1567 小时
注册时间
2007-3-13
帖子
5545

极短25参与极短23参与极短21参与开拓者贵宾第一届化妆舞会最佳服饰奖

2
发表于 2009-2-11 21:41:13 | 只看该作者
因为是繁体名?解压不能

把乱码 绾稿▋濞冪郴缁? 去掉解压后进入

把刀卸下后出错
你的肩膀上有肩周炎~♪  秒懂  ☚   \没有
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

3
 楼主| 发表于 2009-2-11 21:44:14 | 只看该作者
我明明特别改成简体的说.....怎麽会......{/pz}
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

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

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

4
发表于 2009-2-11 21:48:52 | 只看该作者
下载不了……  = =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
174 小时
注册时间
2008-9-17
帖子
387
5
发表于 2009-2-11 21:50:35 | 只看该作者
感觉这个系统对美工自理的用处最大


欢迎来到我的空间【我的空间】
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
180 小时
注册时间
2008-2-6
帖子
92
6
发表于 2009-2-13 04:05:15 | 只看该作者
下载地址是http://rpg.blue/upload_program/d/snstar2006_paper_doll_sys_114788479.zip  去掉.zip188就行了。

我怎么改不了颜色的呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

7
 楼主| 发表于 2009-2-13 08:42:27 | 只看该作者
以下引用v2sam于2009-2-11 13:41:13的发言:
把刀卸下后出错

出什麽错?
我这里没错阿??
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-8
帖子
142
8
发表于 2009-2-13 09:25:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

9
 楼主| 发表于 2009-2-13 10:40:12 | 只看该作者
以下引用孟凡生于2009-2-13 1:25:56的发言:
下载连接报错~

很完整的下載下來啦....怎麼會報錯????
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Poison·

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-30
帖子
2391
10
发表于 2009-2-14 00:20:56 | 只看该作者
我想问/...怎么改颜色啊....按了没反应/.......
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 01:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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