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

Project1

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

[已经解决] 如何在存档和读档处显示头像

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
跳转到指定楼层
1
发表于 2011-2-12 15:16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 步兵中尉 于 2011-2-13 15:21 编辑

           这个问题其实以前解决过,但由于硬盘故障而将方法遗失,故再向诸位大侠请教。
          普通情况下在存档和读档处显示的是角色行走图。用什么方法可以将行走图换成特定文件夹中的头像?只记得是在Window_SaveFile中的52行改,忘的是具体方法
          我用了下面的脚本,一并附上
  1. #在覆盖存档的时候弹出对话框提示
  2. class Scene_Save < Scene_File
  3. # -----------------------------
  4.   def initialize
  5.     super("储存到哪一个进度")
  6.     @confirm_window = Window_Base.new(120, 188, 400, 64)
  7.     @confirm_window.contents = Bitmap.new(368, 32)
  8.     string = "要覆盖先前的进度吗?"
  9.     @confirm_window.contents.font.name = "楷体_GB2312"
  10.     @confirm_window.contents.font.size = 24
  11.     @confirm_window.contents.draw_text(4, 0, 368, 32, string)
  12.     @yes_no_window = Window_Command.new(100, ["覆盖", "取消"])
  13.     @confirm_window.visible = false
  14.     @confirm_window.z = 1500
  15.     @yes_no_window.visible = false
  16.     @yes_no_window.active = false
  17.     @yes_no_window.index = 1
  18.     @yes_no_window.x = 270
  19.     @yes_no_window.y = 252
  20.     @yes_no_window.z = 1500
  21.     @mode = 0
  22.   end
  23. # -----------------------------
  24.   def on_decision(filename)
  25.     if FileTest.exist?(filename)
  26.       @confirm_window.visible = true
  27.       @yes_no_window.visible = true
  28.       @yes_no_window.active = true
  29.       @mode = 1
  30.     else
  31.       $game_system.se_play($data_system.save_se)
  32.       file = File.open(filename, "wb")
  33.       write_save_data(file)
  34.       file.close
  35.       if $game_temp.save_calling
  36.         $game_temp.save_calling = false
  37.         $scene = Scene_Map.new
  38.       return
  39.     end
  40.     $scene = Scene_Menu.new(4)
  41.     end
  42.   end
  43. # -----------------------------
  44.   def update
  45.     if @mode == 0
  46.       super
  47.     else
  48.       @help_window.update
  49.       @yes_no_window.update
  50.       if Input.trigger?(Input::C)
  51.         $game_system.se_play($data_system.decision_se)
  52.         if @yes_no_window.index == 0
  53.           @yes_no_window.visible = false
  54.           @yes_no_window.active = false
  55.           @confirm_window.visible = false
  56.           filename = make_filename(@file_index)
  57.           $game_system.se_play($data_system.save_se)
  58.           file = File.open(filename, "wb")
  59.           write_save_data(file)
  60.           file.close
  61.           if $game_temp.save_calling
  62.             $game_temp.save_calling = false
  63.             $scene = Scene_Map.new
  64.           else
  65.             $scene = Scene_Menu.new(4)
  66.           end
  67.         else
  68.           @confirm_window.visible = false
  69.           @yes_no_window.visible = false
  70.           @yes_no_window.active = false
  71.           @yes_no_window.index = 1
  72.           @mode = 0
  73.         end
  74.       end
  75.       if Input.trigger?(Input::B)
  76.         @confirm_window.visible = false
  77.         @yes_no_window.visible = false
  78.         @yes_no_window.active = false
  79.         @yes_no_window.index = 1
  80.         @mode = 0
  81.       return
  82.     end
  83.   end
  84. end
  85. # -----------------------------
  86.   def on_cancel
  87.     $game_system.se_play($data_system.cancel_se)
  88.     if $game_temp.save_calling
  89.       $game_temp.save_calling = false
  90.       $scene = Scene_Map.new
  91.       return
  92.     end
  93.     $scene = Scene_Menu.new(4)
  94.   end
  95. # -----------------------------
  96.   def write_save_data(file)
  97.     characters = []
  98.     for i in 0...$game_party.actors.size
  99.       actor = $game_party.actors[i]
  100.       characters.push([actor.character_name, actor.character_hue])
  101.     end
  102.     Marshal.dump(characters, file)
  103.     Marshal.dump(Graphics.frame_count, file)
  104.     $game_system.save_count += 1
  105.     $game_system.magic_number = $data_system.magic_number
  106.     Marshal.dump($game_system, file)
  107.     Marshal.dump($game_switches, file)
  108.     Marshal.dump($game_variables, file)
  109.     Marshal.dump($game_self_switches, file)
  110.     Marshal.dump($game_screen, file)
  111.     Marshal.dump($game_actors, file)
  112.     Marshal.dump($game_party, file)
  113.     Marshal.dump($game_troop, file)
  114.     Marshal.dump($game_map, file)
  115.     Marshal.dump($game_player, file)
  116.   end
  117. end

  118. class Scene_File
  119.   alias carol3_main main
  120.   def main
  121.     carol3_main
  122.     if self.is_a?(Scene_Save)
  123.       @confirm_window.dispose
  124.       @yes_no_window.dispose
  125.     end
  126.   end
  127. end

复制代码

点评

OK  发表于 2011-2-12 15:51

评分

参与人数 1星屑 +40 收起 理由
钢铁列兵 + 40

查看全部评分

步兵中尉

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2011-2-12 15:25:58 | 只看该作者
本帖最后由 忧雪の伤 于 2011-2-12 15:51 编辑
行走图换成特定文件夹中的头像

创建base的一个新类来描绘头像。

  1. def xxxxx
  2. for i in 0...$game_party.actors.size
  3. actor = $game_party.actors[i]
  4. @xxx = Sprite.new
  5. @xxx.bitmap = Bitmap.new("位置" + actor.name)
  6. end
  7. end
复制代码

点评

关键是怎么建?久了没碰这块,忘的东西太多了  发表于 2011-2-12 15:44
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
3
 楼主| 发表于 2011-2-12 16:01:26 | 只看该作者
问题是你的这个东西放什么地方?

评分

参与人数 1星屑 +40 收起 理由
钢铁列兵 + 40

查看全部评分

步兵中尉
回复 支持 反对

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

4
发表于 2011-2-12 16:05:08 | 只看该作者
步兵中尉 发表于 2011-2-12 16:01
问题是你的这个东西放什么地方?

龙骑士徒有虚名……
window_base第一个END下面。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
5
 楼主| 发表于 2011-2-12 21:53:45 | 只看该作者
按你的做法又牵扯到了我其它的地方。
后来记起了一种简单的制作法,不需要改动base,只直接改动Window_SaveFile就能实现
  1. # 描绘角色
  2.        for i in [email protected]
  3.        bitmap=RPG::Cache.battler(@characters[i][0], @characters[i][1])
  4.         zoom_x = 80 / bitmap.width
  5.         zoom_y = 80 / bitmap.height
  6.         src_rect = Rect.new(0, 0, 85, 85) #——可自己调整大小
  7.         x = 300 - @characters.size * 40 + i * 82 - bitmap.width / 2 + 11
  8.         self.contents.blt(x, -3, bitmap, src_rect)
  9.       end
复制代码

评分

参与人数 1星屑 +40 收起 理由
钢铁列兵 + 40

查看全部评分

步兵中尉
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 03:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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