幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2924|回复: 11

[RM2K&2K3] 如何将存档/读档界面上的行走图换成头像?

[复制链接]

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
发表于 2009-1-7 07:26:54 | 显示全部楼层 |阅读模式
RT,还有Window_MenuStatus和Window_Status窗口里的行走图,我也想全部换成人物头像,但我在脚本编辑器里看了半天,也试验了一些方法,结果都是失败= =只好上这里请教达人了~~~~
回复

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-1-7 10:01:18 | 显示全部楼层
VX?XP?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
 楼主| 发表于 2009-1-7 14:15:11 | 显示全部楼层
是XP的说,VX好像就不存在这个问题了吧,汗……
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-1-7 14:50:19 | 显示全部楼层
那我的先问问你人物头像你是怎么做的?

F9打开数据库。会发现人物那一页,只有战斗图,行走图两个图片。。。。。

另。。。存档的在 window_Save_File 52行  看到下面那个循环了么?
状态在Window_MenuStatus 的28行

如果你告诉我头像是怎么做的我可以帮你改好,现在一切皆是未知。。。只能告诉你位置,阁下自己动手吧
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
 楼主| 发表于 2009-1-7 23:16:52 | 显示全部楼层
这个,头像就是截的图片,75*75像素的,目前是放在Pictures/face的目录下,格式为png。

昨天我尝试改动那个draw_actor_graphic,结果以失败告终……
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-1-7 23:23:39 | 显示全部楼层
那图片时怎么和人物关联起来的?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
 楼主| 发表于 2009-1-7 23:36:43 | 显示全部楼层
想用人物的ID编号与图片关联,结果依旧失败Orz
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-1-8 07:53:50 | 显示全部楼层
ID  或者是名字都可以的

下面讲解一下哈

状态那个  window_MenuStatus

就像上面我讲的  28行,它是调用Window_Base里面的一个方法def draw_actor_graphic
既然这样,自己可以做一个方法来代替之
我在Window_Base 添加了一个方法 def draw_actor_graphic_face(actor, x, y)
这样把28行的draw_actor_graphic 改成draw_actor_graphic_face 就可以了


代码
  1.   #放到Window_Base 或者是Window_MenuStatus中
  2.   #如果别的继承类也能调用放Base里
  3.   #--------------------------------------------------------------------------
  4.   # ● 图形的描绘
  5.   #     actor : 角色
  6.   #     x     : 描画目标 X 坐标
  7.   #     y     : 描画目标 Y 坐标
  8.   #--------------------------------------------------------------------------
  9.   def draw_actor_graphic_face(actor, x, y)
  10.     bitmap = Bitmap.new("Graphics/Pictures/face/"+actor.actor_id.to_s+".png")
  11.     cw = bitmap.width
  12.     ch = bitmap.height
  13.     src_rect = Rect.new(0, 0, cw, ch)
  14.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  15.   end
复制代码

光是这样是不够的 于编号关联 你会发现 调用不了 actor_id 这个东西
PS:所以说和角色名字关联 这样可以省去这一步

好吧,既然是编号就找 Game_Actor 看看编号在哪里吧
有这么几句
  1.   #--------------------------------------------------------------------------
  2.   # ● 初始化对像
  3.   #     actor_id : 角色 ID
  4.   #--------------------------------------------------------------------------
  5.   def initialize(actor_id)
  6.     super()
  7.     setup(actor_id)
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 设置
  11.   #     actor_id : 角色 ID
  12.   #--------------------------------------------------------------------------
  13.   def setup(actor_id)
  14.     actor = $data_actors[actor_id]
  15.     @actor_id = actor_id
复制代码
很显然实力变量里有 编号的定义  但是前面没有
attr_reader   :actor_id   
所以无法调用
那么很简单添上就可以了
24行插入这一句
  1. attr_reader   :actor_id                 # 人物ID
复制代码

另:为什么找到 Game_Actor 没有经验的话就全局搜索来一步一步查找
会发现 Window_Status 中 actor = $game_party.actors 那么就去Game_Pary找 actor方法或实例变量
Game_Party中有这么几句

    @actors = []
    for i in $data_system.party_members
      @actors.push($game_actors)
    end
那么很显然 是在 Game_actors 中 而 Game_Actors 就是 Game_Actor的一个数组
那么最后定为肯定是 Game_Actor

其实有别的方法
既然知道了 是数组   ######## 看到这些有觉悟了吧    actor = $game_party.actors ,@actors.push($game_actors)
那么可以用 index方法。。。。。看F1吧我不具体说了

那么下一个,Window_SaveFile还挺麻烦的

上面的帖子我说过,52行的循环

改成下面的样子
  1.       for i in 0...@characters.size
  2.         bitmap = Bitmap.new("Graphics/Pictures/face/"+@characters[i].to_s+".jpg")
  3.         cw = bitmap.width
  4.         ch = bitmap.height
  5.         src_rect = Rect.new(0, 0, cw, ch)
  6.         x = 300 - @characters.size * 32 + i * 64 - cw / 2
  7.         self.contents.blt(x, 68 - ch, bitmap, src_rect)
  8.       end
复制代码
你会发现这个东西很有意思,@characters
前面有这么一句@characters = Marshal.load(file)
那么这个就是存档的时候就存进去的,那么是干什么用的呢?
不要说他存的是Game_actor因为那是别的句子存的。。。。
既然是存档的时候存的那么去 Scene_Save 看看吧

很快就发现了这一句


    # 生成描绘存档文件用的角色图形
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      characters.push([actor.character_name, actor.character_hue])
    end
那么就明了了 存了一个数组 [图片名称,色调]  这样可以方便的调用图片来显示
那么我们来改成与编号关联的吧
  1.     # 生成描绘存档文件用的角色图形
  2.     characters = []
  3.     for i in 0...$game_party.actors.size
  4.       actor = $game_party.actors[i]
  5.       ####################################################
  6.       characters.push(actor.actor_id)
  7.       ###################################################
  8.     end
复制代码

这样就OK了

汇报完毕
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

30

主题

196

帖子

1977

积分

⑥精研

积分
1977
 楼主| 发表于 2009-1-8 08:42:55 | 显示全部楼层
哦哦哦,现在一切都完美无缺了!多谢多谢~~~~我的脚本才刚刚开始学,感觉这东东很是烦人啊~
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-1-8 22:22:31 | 显示全部楼层
我给你讲的都是我做这个的顺序。。。反正就是全局,确定位置,改之即可
,时间长了就容易了,慢慢来,我刚开始1年根本就没有碰过脚本地说。。。。。。后来也学会了不是
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-22 21:05 , Processed in 0.024359 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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