查看: 5828|回复: 7

[RMVA发布] 【VA】角色站在椅子上的小细节。。

[复制链接]

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2014-3-28 20:21:13 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 cinderelmini 于 2016-1-24 19:25 编辑

首先要说的是这个效果原型来自《魔女之家》~
但制作思路是自己的~此外还得到了@烁灵 的支援~

因为先后有几位RMer提起这个~
于是我干脆统一发个脚本好了……_(:3ゝ∠)_

简单地说呢~
就是让角色经过【凳子】属性的图块的时候,会往上提几个像素,
造成了【站在椅子上】的假象~
实际效果就像这样:

普通:


椅子上

(其实我是拿别人提问帖的图(你多懒!?))


以下就是脚本内容了~
====================
注意事项:
·地图图块设定地形标志为7则有椅子属性,角色经过或站上去会往上8像素~
·地形标志为6的话也有效果,但只往上提4个像素,作为相对较低的台阶之类~
·此外有需要修改往上提的像素数的话,参照

  1.   #--------------------------------------------------------------------------
  2.   # ● 设置站在椅子上的y调整
  3.   #--------------------------------------------------------------------------
  4.   def chair_y
复制代码
这里面if分歧的两个返回数字~
====================
旧(⑨)版
  1. #==============================================================================
  2. # ■ Game_CharacterBase
  3. #------------------------------------------------------------------------------
  4. #  管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
  5. #------------------------------------------------------------------------------
  6. # *12/12/07  By。Cinderciella
  7. #  通过对【椅子】图块设定地形标志7而让人物站在椅子上。
  8. #  此外设定为6则对人物有稍微抬起效果,相当于稍高一点点的地形之类的,设定为6。
  9. #==============================================================================

  10. class Game_CharacterBase
  11.   attr_accessor :screen_z
  12.   #--------------------------------------------------------------------------
  13.   # ● 重置screen_z
  14.   #--------------------------------------------------------------------------
  15.   def screen_z
  16.     @priority_type * 100
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 判定是否地图人物(暂时只支持主角)
  20.   #--------------------------------------------------------------------------
  21.   def player?
  22.     self.is_a?(Game_Player)
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 判定是否站在椅子上
  26.   #   (对象是主角 且不处于移动中 且不是地图人物的实例)
  27.   #--------------------------------------------------------------------------
  28.   def on_chair?
  29.     return player? && !moving? && !object_character?
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 设置站在椅子上的y调整
  33.   #--------------------------------------------------------------------------
  34.   def chair_y
  35.     if object_character? || moving? || !player?
  36.       return 0
  37.     elsif on_chair?
  38.       if $game_map.terrain_tag($game_player.x, $game_player.y) == 7
  39.         return 8
  40.       elsif $game_map.terrain_tag($game_player.x, $game_player.y) == 6
  41.         return 4
  42.       else
  43.         return 0
  44.       end
  45.     else
  46.       return 0
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 获取画面 Y 坐标(加上椅子高度)
  51.   #--------------------------------------------------------------------------
  52.   def screen_y
  53.     $game_map.adjust_y(@real_y) * 32 + 32 - shift_y - jump_height - chair_y
  54.   end
  55. end
复制代码



这里是分割线



※160124更新:
·优化了部分代码
·整合了队友的相同效果
160124更新版
  1. #==============================================================================
  2. # □ 站在椅子上的小细节
  3. #------------------------------------------------------------------------------
  4. # *12/12/07  By。椎名YASHIRO
  5. #------------------------------------------------------------------------------
  6. # *12/12/07   站在椅子上的小效果
  7. # *14/07/01   优化了站在椅子上的效果代码
  8. # *16/01/24   整合了队友的相同效果
  9. #==============================================================================
  10. module SHIINA
  11.   # 队友是否需要这个效果?
  12.   FOLLOWER_NEED = true
  13. end
  14. class Game_Player < Game_Character
  15.   # 站在椅子上的效果搬到Game_Player会更好……
  16.   #--------------------------------------------------------------------------
  17.   # ● 判定是否站在椅子上
  18.   #   (对象是主角 且不处于移动中 且不是地图人物的实例)
  19.   #--------------------------------------------------------------------------
  20.   def on_chair?
  21.     return !moving? && !object_character?
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 设置站在椅子上的y调整
  25.   #--------------------------------------------------------------------------
  26.   def chair_y
  27.     if object_character? || moving?
  28.       return 0
  29.     elsif on_chair?
  30.       if $game_map.terrain_tag(self.x, self.y) == 7
  31.         return 12
  32.       elsif $game_map.terrain_tag(self.x, self.y) == 6
  33.         return 6
  34.       else
  35.         return 0
  36.       end
  37.     else
  38.       return 0
  39.     end
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 获取画面 Y 坐标(加上椅子高度)
  43.   #--------------------------------------------------------------------------
  44.   alias sn160124_screen_y screen_y
  45.   def screen_y
  46.     return sn160124_screen_y - chair_y
  47.   end
  48. end

  49. class Game_Follower < Game_Character
  50.   include SHIINA
  51.   # 这里是队友的
  52.   #--------------------------------------------------------------------------
  53.   # ● 判定是否站在椅子上
  54.   #   (对象是主角 且不处于移动中 且不是地图人物的实例)
  55.   #--------------------------------------------------------------------------
  56.   def on_chair?
  57.     return !moving? && !object_character?
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 设置站在椅子上的y调整
  61.   #--------------------------------------------------------------------------
  62.   def chair_y
  63.     if object_character? || moving? || !FOLLOWER_NEED
  64.       return 0
  65.     elsif on_chair?
  66.       if $game_map.terrain_tag(self.x, self.y) == 7
  67.         return 12
  68.       elsif $game_map.terrain_tag(self.x, self.y) == 6
  69.         return 6
  70.       else
  71.         return 0
  72.       end
  73.     else
  74.       return 0
  75.     end
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 获取画面 Y 坐标(加上椅子高度)
  79.   #--------------------------------------------------------------------------
  80.   alias sn160124_screen_y screen_y
  81.   def screen_y
  82.     return sn160124_screen_y - chair_y
  83.   end
  84. end
复制代码


点评

啊哈……这个旧版的思路太渣,而且不支持队列~至于新版……我不发了……好累…………  发表于 2014-9-21 15:31
(ΦωΦ)偷偷盗用到我的组群里 http://rm.66rpg.com/thread-371699-1-1.html  发表于 2014-9-20 23:33
啊啊~使用方法就是main前insert~~  发表于 2014-3-28 20:28

评分

参与人数 1星屑 +10 收起 理由
Q_Lucky + 10 能发个MV版本滴吗?

查看全部评分

梦石
0
星屑
757
在线时间
469 小时
注册时间
2013-8-3
回帖
853
发表于 2014-3-28 20:39:12 | 显示全部楼层
呵呵,好人,我抱走了!
貌似怪可能不触,但貌似怪会努力脱离渣的
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-3-28 21:10:07 | 显示全部楼层
这个解密的脚本可以放出来吗?
回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

 楼主| 发表于 2014-3-28 21:24:49 | 显示全部楼层
VIPArcher 发表于 2014-3-28 21:10
这个解密的脚本可以放出来吗?

噗……
这个不打算放了……
首先脚本内容我写得混乱不堪~
提取/移植的话略麻烦~
然后使用上也不方便……

所以还是不拿出来现世了…………
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10450
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-3-28 21:34:50 | 显示全部楼层
cinderelmini 发表于 2014-3-28 21:24
噗……
这个不打算放了……
首先脚本内容我写得混乱不堪~

哦,好吧!这游戏超赞
回复

使用道具 举报

职业の水客

梦石
2
星屑
16999
在线时间
7497 小时
注册时间
2010-6-16
回帖
3464

极短27评委MZ评测员极短26评委开拓者

发表于 2014-3-30 15:01:59 | 显示全部楼层
相当不错的东西~{:2_277:}
游戏开发工具集,一站式AI生图+图片完美像素化及相关处理网站。
群爆炸重建后状态:论坛老人最多(只剩下了活跃的老人),技术力很强(依旧不变)的编程灌水群:901540785
专门讨论RM相关的Q群:56875149
PS:第一个群不是专门讨论RM的,第二个才是哦。
PS2:接受MV/MZ插件定制(QQ763992443)
回复

使用道具 举报

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
回帖
313
发表于 2014-4-4 14:31:58 | 显示全部楼层
寂静的夜里 发表于 2014-3-30 15:01
相当不错的东西~

哎呦我擦  ac娘少女版
你的意思就是要打架咯?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
174 小时
注册时间
2010-12-9
回帖
43
发表于 2014-5-1 20:23:48 | 显示全部楼层
正需要这个脚本呢,不过我想要XP的,找了半天没找到
自己动手把凡是报错的语句都#掉了,由于我不是很懂脚本,可能会有问题,但是大致上能用

#==============================================================================
# ■ Game_CharacterBase
#------------------------------------------------------------------------------
#  管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
#------------------------------------------------------------------------------
# *12/12/07  By。Cinderciella
#  通过对【椅子】图块设定地形标志7而让人物站在椅子上。
#  此外设定为6则对人物有稍微抬起效果,相当于稍高一点点的地形之类的,设定为6。
#==============================================================================


class Game_Character
# attr_accessor :screen_z
  #--------------------------------------------------------------------------
  # ● 重置screen_z
  #--------------------------------------------------------------------------
# def screen_z
#   @priority_type * 100
# end
  #--------------------------------------------------------------------------
  # ● 判定是否地图人物(暂时只支持主角)
  #--------------------------------------------------------------------------
  def player?
    self.is_a?(Game_Player)
  end
  #--------------------------------------------------------------------------
  # ● 判定是否站在椅子上
  #   (对象是主角 且不处于移动中 且不是地图人物的实例)
  #--------------------------------------------------------------------------


  def on_chair?
    return player? && !moving? #&& !object_character?
  end
  #--------------------------------------------------------------------------
  # ● 设置站在椅子上的y调整
  #--------------------------------------------------------------------------
  def chair_y
    if  moving? || !player? #||object_character?
      return 0
    elsif on_chair?
      if $game_map.terrain_tag($game_player.x, $game_player.y) == 7
        return 8
      elsif $game_map.terrain_tag($game_player.x, $game_player.y) == 6
        return 4
      else
        return 0
      end
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 获取画面 Y 坐标(加上椅子高度)
  #--------------------------------------------------------------------------
    def screen_y
    # 通过实际坐标和地图的显示位置来求得画面坐标
    y = (@real_y - $game_map.display_y + 3) / 4 + 32 - chair_y

    end
end
  
  
  #def screen_y
#   $game_map.adjust_y(@real_y) * 32 + 32 - jump_height - chair_y
# end
#end

点评

XP啊。。。原则上R3的脚本用到R1上会出问题是必须的吧……待我稍后折腾一下XP版的。。吧……(更新了的话我再艾特一下你吧……  发表于 2014-5-1 20:59
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部