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

Project1

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

[推荐问答] 如何使用METHODS 让角色在对话和战斗中显示半身像

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
跳转到指定楼层
1
发表于 2012-8-19 00:44:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 四代天殇 于 2012-8-19 02:33 编辑

今天早上一直在研究游戏脚本,一般来讲,对话的显示头像是用 游戏当中的draw_face 这methods 达成的。

def draw_face(face_name, face_index, x, y, size = 96)
    bitmap = Cache.face(face_name)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = face_index % 4 * 96 + (96 - size) / 2
    rect.y = face_index / 4 * 96 + (96 - size) / 2
    rect.width = size
    rect.height = size
    self.contents.blt(x, y, bitmap, rect)
    bitmap.dispose
  end

所以我在想是否有什么办法在这个methods里面做些手脚,使之能够显示半身图?


但是这个methods 也只能处理这样的图片,且 face_name 必须是 Actor1 ,否则会出现error.



因为试过将 face_name 改成 character_name(譬如 ralf) 然后将新的图片名改成(ralf) 发在 face 文件夹里,结果提醒我 syntax error,所以目前请求脚本高手进行解决。


点评

LZ你确定各位大神必须向你付费才可以帮你解决问题吗?  发表于 2012-8-19 02:12

评分

参与人数 1星屑 +100 收起 理由
Luciffer + 100 分类补助

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
2
 楼主| 发表于 2012-8-19 02:34:54 | 只看该作者
回复A神,我还以为付费是大神解决问题后我付费给他们- -
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2012-8-19 09:15:46 | 只看该作者
没有。(光回答这一句是要被扣分的,这里不宜效仿多啦
draw_face是在Window_Message类下被调用的,所以要更改Window_Message的大小方可显示完全,否则,即使你改draw_face也是无济于事的,因为小窗口无法显示大图片。你其实可以新建一个窗口类,这个窗口的Z要大于对话窗口的Z,在其下仿照draw_face写一个类似的定义,改大rect.width,rect.height,这样就可以了。
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
4
 楼主| 发表于 2012-8-19 16:12:18 | 只看该作者
protosssonny 发表于 2012-8-19 09:15
没有。(光回答这一句是要被扣分的,这里不宜效仿多啦)
draw_face是在Window_Message类下被调用 ...

ef new_page
    print $game_message.face_name
    contents.clear
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      name = $game_message.face_name
      index = $game_message.face_index
      draw_face(name, index, 0, 0)
      @contents_x = 112
    end
    @contents_y = 0
    @line_count = 0
    @show_fast = false
    @line_show_fast = false
    @pause_skip = false
    contents.font.color = text_color(0)
  end


谢谢你的提醒,看来必须修改Window_Message 的大小才行。不过我刚才有了一个新的思路不知道可不可以。我在这个CLASS里面加了一个print ,这个print 显示的是 face_name ,所以我想能否通过修改face_name 的方式让bitmap 不调Actor1 这个图片而是其他 图片? 这样如果我换成大图片的话,那么 这个CLASS就直接可以显示半身像了吧?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1379
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

5
发表于 2012-8-19 16:24:36 | 只看该作者
就没人想到建个精灵么。。。src_rect 的height和width改一下 再调下精灵的z值不就完美解决么。。

评分

参与人数 1星屑 +10 收起 理由
怪蜀黍 + 10 果然是大神,我很赞同。

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
6
 楼主| 发表于 2012-8-19 17:14:08 | 只看该作者
铅笔描绘的思念 发表于 2012-8-19 16:24
就没人想到建个精灵么。。。src_rect 的height和width改一下 再调下精灵的z值不就完美解决么。。 ...

表示 RGSS2新手, sprite 什么的完全不懂

点评

可以慢慢学嘛。。。  发表于 2012-8-19 17:16
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
7
 楼主| 发表于 2012-8-19 21:48:39 | 只看该作者
铅笔描绘的思念 发表于 2012-8-19 16:24
就没人想到建个精灵么。。。src_rect 的height和width改一下 再调下精灵的z值不就完美解决么。。 ...

那么您觉得这样可以吗?
在windows_message 的 def new_page 下把 draw face 的方程改成



     character_half=Sprite.new
     character_half.bitmap=Bitmap.new("Graphics/Half/@{character_name}")
rect=Rect.new(0,0,0,0)
rect.width=character_half.bitmap.width
rect.height=character_half.bitmap.height

  contents.blt(x,y,character_half.bitmap,rect)
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1379
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

8
发表于 2012-8-20 10:08:32 | 只看该作者
本帖最后由 铅笔描绘的思念 于 2012-8-20 12:09 编辑
四代天殇 发表于 2012-8-19 21:48
那么您觉得这样可以吗?
在windows_message 的 def new_page 下把 draw face 的方程改成


没有去看过message的。。不过小错误就有几个。。@{character_name} 插入字符串的话应该是#{}
我想你应该是想吧@character_name套进去吧。。不过@character_name应该没有在Windows_message吧。。记得是Game_character和Sprite_character的变量 不过改draw_face的方法不如新建个方法。。。
仿照draw_face写一个
  1. def draw_half(half_name, x, y)
  2. #方法的参数也是有用的。。可以再加点什么。。。height啊。。。width啊
  3.      half=Sprite.new
  4.      half.bitmap=Bitmap.new("Graphics/Half/#{half_name}")
  5.      half.z = 101 #窗口的z是100
  6.      rect = Rect.new(0,0,0,0)
  7.      rect.width=character_half.bitmap.width  
  8.      rect.height=character_half.bitmap.height

  9.      half.bitmap.blt(x, y , half.bitmap, rect)
  10.    
  11. end
复制代码
还有调用的地方也要改一下。
#--------------------------------------------------------------------------
  # ● 新页处理
  #--------------------------------------------------------------------------
  def new_page
    contents.clear
    if $game_message.face_name.empty?
      @contents_x = 0
    else
      name = $game_message.face_name
      index = $game_message.face_index
      draw_half(name, 0, 0)
      @contents_x = 112
    end
    @contents_y = 0
    @line_count = 0
    @show_fast = false
    @line_show_fast = false
    @pause_skip = false
    contents.font.color = text_color(0)
  end

不过你不如在战上找个脚本吧。。貌似很多的。。半身像对话

点评

谢谢大神的指点。不过战上的半身像脚本第一怕脚本冲突,第二我看得心疼。  发表于 2012-8-20 12:04

评分

参与人数 1星屑 +200 收起 理由
iisnow + 200 多谢指点了

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
9
 楼主| 发表于 2012-8-21 14:15:41 | 只看该作者
铅笔描绘的思念 发表于 2012-8-20 10:08
没有去看过message的。。不过小错误就有几个。。@{character_name} 插入字符串的话应该是#{}
我想你应该 ...

试过了这个代码,经过几轮测试之后发现一些问题:

1.这个代码 的坐标 X,Y(0,0) 是在画面左上角,并且在调过X,Y值之后发现图片是被半透明的对话框覆盖的。所以得出可能用SPRITE 不可行。

2.在之后我修改了代码,把draw_half 里面的sprite 取消,改成 cache 的读取形式,发现图片不会被覆盖,但是由于对话框大小的限制图片无法显示完整,所以想请教关于对话框内 图像头像框的设置代码的位置,然后我想准备朝那个地方下手。

点评

首先精灵类是可以可以改Z值得。。只不过我回帖的时候忘了。现已加上。。 Cache的话。。。和Bitmap.new的方法差不太多。。不过改不了z吧。。  发表于 2012-8-21 14:36
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 05:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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