Project1

标题: 如果角色死了能不能让行走图变成灰色? [打印本页]

作者: 乱摸阿弥陀佛    时间: 2008-12-12 00:13
标题: 如果角色死了能不能让行走图变成灰色?
就是按ESC出现主窗口中的行走图,如果战斗不能状态的话就让行走图变灰 [LINE]1,#dddddd[/LINE]此贴于 2008-12-12 12:40:33 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2008-12-14 13:26:34 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 精灵使者    时间: 2008-12-12 00:18
应该画行走图的时候添加一句,如果中有战斗不能状态,则改变行走图的色调为灰色,是么?
作者: 乱摸阿弥陀佛    时间: 2008-12-12 00:25
画行走图?在哪儿加阿。。主窗口里那些头象行走图也会变灰么
作者: 精灵使者    时间: 2008-12-12 00:34
如果估计没错的话就应该是windows_base里面的draw_actor_graphic类里面……
期待高手……
变成灰色似乎不是太现实……bitmap没有tone属性……
看来可以变成红色如何?
用这个看看……

  1. #==============================================================================
  2. # ■ Window_Base
  3. #------------------------------------------------------------------------------
  4. #  游戏中全部窗口的超级类。
  5. #==============================================================================

  6. class Window_Base < Window
  7.   #--------------------------------------------------------------------------
  8.   # ● 图形的描绘
  9.   #     actor : 角色
  10.   #     x     : 描画目标 X 坐标
  11.   #     y     : 描画目标 Y 坐标
  12.   #--------------------------------------------------------------------------
  13.   def draw_actor_graphic(actor, x, y)
  14.     if actor.state?(1)
  15.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue + 300)
  16.   else
  17.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  18.     end   
  19.     cw = bitmap.width / 4
  20.     ch = bitmap.height / 4
  21.     src_rect = Rect.new(0, 0, cw, ch)

  22.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  23.   end
  24. end
复制代码

这个可以使战斗不能的行走图变成红色……如果本来是红色的则会继续偏移。
作者: redant    时间: 2008-12-12 01:14
变蓝色绿色红色之类的好办= =| 灰色……

def draw_actor_graphic1(actor, x, y)
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue+100 )
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end

在window_base里 找到def draw_actor_graphic
然后把这个拷到下面
Window_MenuStatus里然后 draw_actor_graphic(actor, x - 40, y + 80)
换成

if actor.hp<1
       draw_actor_graphic1(actor, x - 40, y + 80)
    else
      draw_actor_graphic(actor, x - 40, y + 80)
    end

试验下就会变色了


作者: 精灵使者    时间: 2008-12-12 01:44
redant的说法感觉不如我那个简单。
只要角色中了1号状态就会自动改变行走图色调,不用再继续拷贝了……
用这个吧……
http://rpg.blue/viewthread.php?tid=112344
这个可以更加高级一些…… [LINE]1,#dddddd[/LINE]版主对此帖的评论:『orz 是状态  没看清不好意思= =| 只看到是”战斗不能“了』,积分『-0』。这些被扣积分的一半会用于对本帖正确答案的悬赏。 [LINE]1,#dddddd[/LINE]版主对此帖的评论:『1号状态就是战斗不能。嗯哪。 by 精灵』,积分『-0』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: 玄月    时间: 2008-12-12 04:13
有人回答过了,自我屏蔽之…………
惭愧惭愧。
作者: 乱摸阿弥陀佛    时间: 2008-12-12 20:48
就是没有灰色吗?{/dk}
作者: 不取名字了    时间: 2008-12-13 00:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2008-12-13 05:40
def draw_actor_graphic(actor, x, y)
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
if actor.hp<1

    for i in 0...bitmap.width
      for j in 0...bitmap.height
        color = bitmap.get_pixel(i, j)
        if color.alpha != 0 and !(color.red == color.green and color.green == color.blue)
          bitmap.set_pixel(i, j, Color.new(128,128,128,128))
        end
      end
    end
    end
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  #--------


呃~效果好雷。。。
作者: 消隐    时间: 2008-12-13 05:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 08:52
以下引用乱摸阿弥陀佛于2008-12-12 12:48:07的发言:

就是没有灰色吗?

可以变成灰色,但是倒下的行走图必须你自己做。
for i in 0...bitmap.width
    for j in 0...bitmap.height
      color = bitmap.get_pixel(i, j)
      if color.alpha != 0 and !(color.red == color.green and color.green == color.blue)
        bitmap.set_pixel(i, j, Color.new(128,128,128,128))
      end
    end
  end
这个……恩……
是黑白行走图么…… 效率是不是有些太低了……
不知道可以不可以建sprite以后改变色调……
作者: 精灵使者    时间: 2008-12-13 08:55
for i in 0...bitmap.width
     for j in 0...bitmap.height
       color = bitmap.get_pixel(i, j)
       if color.alpha != 0 and !(color.red == color.green and color.green == color.blue)
         bitmap.set_pixel(i, j, Color.new(128,128,128,128))
       end
     end
   end
这个……恩……
是黑白行走图么……
作者: 一路一风尘    时间: 2008-12-13 09:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 09:20
我知道sprite可以更改色调的呢。
不知道怎么写……
默认是bitmap类的,似乎不支持tone
作者: 一路一风尘    时间: 2008-12-13 09:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 09:40
也就是说,把bitmap使用sprite来体现么……
刚才说的那个我是知道的。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 图形的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y)
    @sprite = sprite.new
    #如何代入bitmap图片
    if actor.state?(1)
    @sprite.tone = Tone.new(0,0,0,255)
  else
    @sprite.tone = Tone.new(0,0,0,0)   
    end   
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    如何画此bitmap图片
    @sprite.dispose
  end
end
如何把这个转化成sprite的模式,这样添加tone就容易了吧。我现在就差这两句不懂了= =
另外,还要添加sprite.dispose?
作者: 一路一风尘    时间: 2008-12-13 09:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 09:45
恩~参考我上面的脚本(原帖已编辑)
这个脚本核心就在那里。
我就是代入图片和传递等这里不是太懂。
作者: 一路一风尘    时间: 2008-12-13 09:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 10:35
似乎sprite不能用blt传递……如果用sprite.bitmap的话传递不过来tone……
不知道对否。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window

  #--------------------------------------------------------------------------
  # ● 图形的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y)
    @actor_sprite = Sprite.new
    @actor_sprite.bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    @actor_sprite.tone = Tone.new(0,0,0,255)
    cw = @actor_sprite.bitmap.width / 4
    ch = @actor_sprite.bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, @actor_sprite, src_rect)
    @actor_sprite.dispose
  end
end
结果运行的应该是把所有的菜单里的人变成灰色才对。
结果他说无法转换sprite
作者: 一路一风尘    时间: 2008-12-13 17:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 20:06
其实我感觉重新制作一个灰色行走图比较好。如果强调效果的话。
然后在战斗不能的时候更换行走图文件名。岂不是更好。
PS里很简单的处理……
作者: 3nξhα0_lim    时间: 2008-12-13 20:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-13 20:55
以下引用3nξhα0_lim于2008-12-13 12:26:57的发言:

我懒得写,所以只给个建议,
把Window_Base里的draw_actor_graphics改为用sprite生成图片,然后追加判断死亡了后追加
『.color.set(100,100,100,150)』

.color.set?
我已经写出了那个范例,而不是用TONE……?我试验下看。
奇怪。生成了sprite,但是无法显示……莫非……
作者: redant    时间: 2008-12-13 21:17
显示 是有
把z调到9999 就看见了

不过是16个小人= =|

[LINE]1,#dddddd[/LINE]
还是PS 换个图
更容易出 灰色
作者: 3nξhα0_lim    时间: 2008-12-13 22:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乱摸阿弥陀佛    时间: 2008-12-15 17:08
谢谢小LIM!用以上脚本完全代替Window_Base吗?直接插在MAIN上面怎么主窗口状态画面不显示行走图啊
作者: 精灵使者    时间: 2008-12-15 19:39
如果小lim的脚本能成功的话,精灵也打算顺手修改一下自己的那个状态脚本呢= =
不过先解决楼上的问题吧= =
作者: 3nξhα0_lim    时间: 2008-12-15 20:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乱摸阿弥陀佛    时间: 2008-12-15 20:38
我新开了一个工程,把上面的脚本插在main之前,为什么角色的行走图在主窗口画面都消失了呢?

成了这样:

作者: 3nξhα0_lim    时间: 2008-12-15 20:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 3nξhα0_lim    时间: 2008-12-15 20:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-12-15 21:05
多谢……我以后就拿回去测试,如果成功的话我会修改哦。
上面那个@graphics 支持以前的hue修改么?
如果能支持的话我就可以开发此方式……
哦~看到了,呵呵~我这就拿回去改……
作者: 乱摸阿弥陀佛    时间: 2008-12-15 21:33
原来是色调变暗了而不是变灰?好像颜色还在?不过也可以用了
作者: 精灵使者    时间: 2008-12-16 03:09
自我PIA飞之……
似乎都是暗色的而不是那个色调问题……
我再思考下
作者: 3nξhα0_lim    时间: 2008-12-16 07:59
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1