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

Project1

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

[已经过期] 换装脚本,人物被事件覆盖了...

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5621
在线时间
177 小时
注册时间
2011-6-3
帖子
32
跳转到指定楼层
1
发表于 2017-8-14 18:08:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2017-8-14 19:18 编辑

换装脚本,人物被事件覆盖了...求大神帮忙~
以下是脚本


RUBY 代码复制
  1. #==============================================================================
  2. # ■ 角色装备行走图变更                                          BY:亿万星辰
  3. #------------------------------------------------------------------------------
  4. #  使用了一种特殊的方法来改变行走图,不是更换,而是在原图的基础上继续描绘新的
  5. # 层以实现层的叠加,类似暗黑里的装备帽子以后角色的行走图就多出帽子,装备盾牌以
  6. # 后就会看到角色的左手拿着盾牌。
  7. #
  8. # 介绍:
  9. # 现在默认分为5层,最下为默认的行走图,也就是数据库里角色那里设置的。之后分为头
  10. # 部、身体、左右手4层,也可自行添加,但需要一定的功底,以防备逻辑上的混乱……
  11. #
  12. # 使用说明:
  13. # 全部都是在数据库里设置,对应的武器或防具后逗号追加一个图片文件名即可,此文件
  14. # 放在graphics/characters下,至于图片的绘制,实属虐待美工…… 具体可参考范例里
  15. # 的graphics/characters目录,不过盾牌的图画的不是很合适
  16. #==============================================================================
  17. module RPG
  18.   class Weapon
  19.     def name
  20.       return @name.split(/,/)[0].nil? ? "" : @name.split(/,/)[0]
  21.     end
  22.     def part
  23.       return @name.split(/,/)[1].nil? ? "" : @name.split(/,/)[1]
  24.     end
  25.   end
  26.  
  27.   class Armor
  28.     def name
  29.       return @name.split(/,/)[0].nil? ? "" : @name.split(/,/)[0]
  30.     end
  31.     def part
  32.       return @name.split(/,/)[1].nil? ? "" : @name.split(/,/)[1]
  33.     end
  34.   end
  35. end
  36. #==============================================================================
  37. # ■ Game_Player
  38. #------------------------------------------------------------------------------
  39. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  40. # 本类的实例请参考 $game_player。
  41. #==============================================================================
  42.  
  43. class Game_Player < Game_Character
  44.   attr_accessor   :part_name                # 角色 文件名
  45.   attr_accessor   :turn_z
  46. =begin
  47.   #--------------------------------------------------------------------------
  48.   # ● 初始化对像
  49.   #--------------------------------------------------------------------------
  50.   def initialize
  51.     super
  52.     @turn_z = [0,3,4,1,2] # 优先级,靠后的显示在最前 0主身体 1武器 2盾牌 3身体 4头
  53.     @part_name = [
  54.       $game_party.actors[0].character_name,
  55.       $game_party.actors[0].weapon_id != 0 ? $data_weapons[$game_party.actors[0].weapon_id].part : "",
  56.       $game_party.actors[0].armor1_id != 0 ? $data_armors[$game_party.actors[0].armor1_id].part : "",
  57.       $game_party.actors[0].armor2_id != 0 ? $data_armors[$game_party.actors[0].armor2_id].part : "",
  58.       $game_party.actors[0].armor3_id != 0 ? $data_armors[$game_party.actors[0].armor3_id].part : ""]
  59.   end
  60. =end
  61.   #--------------------------------------------------------------------------
  62.   def refresh
  63.     # 同伴人数为 0 的情况下
  64.     if $game_party.actors.size == 0
  65.       # 清除角色的文件名及对像
  66.       @character_name = ""
  67.       @character_hue = 0
  68. #修改-------------------------------------------------------------------------
  69.       @turn_z = [0,3,4,1,2,5]
  70.       @part_name = ["","","","","",""]
  71.       # 分支结束
  72.       return
  73.     end
  74.     # 获取带头的角色
  75.     actor = $game_party.actors[0]
  76.  
  77.     #-----------------------------------
  78.     # X☆R: 貌似放在这儿比较好一点。
  79.  
  80.     @turn_z = case @direction
  81. #修改-------------------------------------------------------------------------
  82. # 优先级,靠后的显示在最前 0主身体 1武器.发1 2盾牌.发2 3身体.衣服 4头.裤子 5鞋子
  83.     when 2 :[0,3,4,1,2,5] #面向向下
  84.     when 4 :[1,0,3,4,2,5] #面向向左
  85.     when 6 :[2,0,3,4,1,5] #面向向右
  86.     when 8 :[0,1,2,3,4,5] #面向向上
  87.     end
  88.     @part_name = [actor.character_name,
  89.                   actor.weapon_id != 0 ? $data_weapons[actor.weapon_id].part : "",
  90.                   actor.armor1_id != 0 ? $data_armors[actor.armor1_id].part : "",
  91.                   actor.armor2_id != 0 ? $data_armors[actor.armor2_id].part : "",
  92.                   actor.armor3_id != 0 ? $data_armors[actor.armor3_id].part : "",
  93.                   actor.armor4_id != 0 ? $data_armors[actor.armor4_id].part : ""]
  94.     #------------------------------------
  95.  
  96.     # 设置角色的文件名及对像
  97.     @character_name = actor.character_name
  98.     @character_hue = actor.character_hue
  99.     # 初始化不透明度和合成方式
  100.     @opacity = 255
  101.     @blend_type = 0
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 面向向下
  105.   #--------------------------------------------------------------------------
  106.   def turn_down
  107.     unless @direction_fix
  108.       @direction = 2
  109.       @stop_count = 0
  110.       @turn_z = [0,3,4,1,2,5] # 优先级,靠后的显示在最前
  111.     end
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 面向向左
  115.   #--------------------------------------------------------------------------
  116.   def turn_left
  117.     unless @direction_fix
  118.       @direction = 4
  119.       @stop_count = 0
  120.       @turn_z = [1,0,3,4,2,5] # 优先级,靠后的显示在最前
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 面向向右
  125.   #--------------------------------------------------------------------------
  126.   def turn_right
  127.     unless @direction_fix
  128.       @direction = 6
  129.       @stop_count = 0
  130.       @turn_z = [2,0,3,4,1,5] # 优先级,靠后的显示在最前
  131.     end
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 面向向上
  135.   # (这里感觉不太好处理,有些时候有的图一步在角色主图前,一步在角色主图后,
  136.   # 不怎么好处理,只能麻烦美工了……比如范例里的盾牌……)
  137.   #--------------------------------------------------------------------------
  138.   def turn_up
  139.     unless @direction_fix
  140.       @direction = 8
  141.       @stop_count = 0
  142.       @turn_z = [0,1,2,3,4,5] # 优先级,靠后的显示在最前
  143.     end
  144.   end
  145. end
  146.  
  147. #==============================================================================
  148. # ■ Sprite_Character
  149. #------------------------------------------------------------------------------
  150. #  角色显示用脚本。监视 Game_Character 类的实例、
  151. # 自动变化脚本状态。
  152. #==============================================================================
  153.  
  154. class Sprite_Player < RPG::Sprite
  155.   #--------------------------------------------------------------------------
  156.   # ● 定义实例变量
  157.   #--------------------------------------------------------------------------
  158.   attr_accessor :part                # 角色
  159.   #--------------------------------------------------------------------------
  160.   # ● 初始化对像
  161.   #     viewport  : 查看端口
  162.   #     character : 角色 (Game_Character)
  163.   #--------------------------------------------------------------------------
  164.   def initialize(viewport, part)
  165.     super(viewport)
  166.     @part = part
  167.     [url=home.php?mod=space&uid=2631396]@character[/url] = $game_player
  168.     self.z += $game_player.turn_z.index(part)
  169.     update
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 更新画面
  173.   #--------------------------------------------------------------------------
  174.   def update
  175.     super
  176.     # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  177.     if @tile_id != @character.tile_id or
  178.        @character_name != @character.character_name or
  179.        @character_hue != @character.character_hue
  180.       # 记忆元件 ID 与文件名、色相
  181.       @tile_id = @character.tile_id
  182.       @character_name = @character.character_name
  183.       @character_hue = @character.character_hue
  184.       # 元件 ID 为有效值的情况下
  185.       pic = @character.part_name[@part]
  186.       self.bitmap = RPG::Cache.character(pic, @character.character_hue)
  187.       @cw = bitmap.width / 4
  188.       @ch = bitmap.height / 4
  189.       self.ox = @cw / 2
  190.       self.oy = @ch
  191.     end
  192.     # 设置可视状态
  193.     self.visible = (not @character.transparent)
  194.     # 图形是角色的情况下
  195.     if @tile_id == 0
  196.       # 设置传送目标的矩形
  197.       sx = @character.pattern * @cw
  198.       sy = (@character.direction - 2) / 2 * @ch
  199.       self.src_rect.set(sx, sy, @cw, @ch)
  200.     end
  201.     # 设置脚本的坐标
  202.     self.x = @character.screen_x
  203.     self.y = @character.screen_y
  204.     self.z = @character.turn_z.index(part)
  205.     # 设置不透明度、合成方式、茂密
  206.     self.opacity = @character.opacity
  207.     self.blend_type = @character.blend_type
  208.     self.bush_depth = @character.bush_depth
  209.     # 动画
  210.     if @character.animation_id != 0
  211.       animation = $data_animations[@character.animation_id]
  212.       animation(animation, true)
  213.       @character.animation_id = 0
  214.     end
  215.   end
  216. end
  217.  
  218. class Spriteset_Map
  219.   #--------------------------------------------------------------------------
  220.   # ● 初始化对像
  221.   #--------------------------------------------------------------------------
  222.   def initialize
  223.     # 生成显示端口
  224.     @viewport1 = Viewport.new(0, 0, 1280, 704)
  225.     @viewport2 = Viewport.new(0, 0, 1280, 704)
  226.     @viewport3 = Viewport.new(0, 0, 1280, 704)
  227.     @viewport2.z = 200
  228.     @viewport3.z = 5000
  229.     # 生成元件地图
  230.     @tilemap = Tilemap.new(@viewport1)
  231.     @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  232.     for i in 0..6
  233.       autotile_name = $game_map.autotile_names[i]
  234.       @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  235.     end
  236.     @tilemap.map_data = $game_map.data
  237.     @tilemap.priorities = $game_map.priorities
  238.     # 生成远景平面
  239.     [url=home.php?mod=space&uid=2658185]@Panorama[/url] = Plane.new(@viewport1)
  240.     @panorama.z = -1000
  241.     # 生成雾平面
  242.     [url=home.php?mod=space&uid=14217]@fog[/url] = Plane.new(@viewport1)
  243.     @fog.z = 3000
  244.     # 生成角色活动块
  245.     @character_sprites = []
  246.     for i in $game_map.events.keys.sort
  247.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  248.       @character_sprites.push(sprite)
  249.     end
  250.     @character_sprites.push(Sprite_Player.new(@viewport1, 0)) # 主体
  251.     @character_sprites.push(Sprite_Player.new(@viewport1, 1)) # 武器
  252.     @character_sprites.push(Sprite_Player.new(@viewport1, 2)) # 盾牌
  253.     @character_sprites.push(Sprite_Player.new(@viewport1, 3)) # 身体
  254.     @character_sprites.push(Sprite_Player.new(@viewport1, 4)) # 头
  255.     @character_sprites.push(Sprite_Player.new(@viewport1, 5)) #饰品
  256.     # 生成天气
  257.     @weather = RPG::Weather.new(@viewport1)
  258.     # 生成图片
  259.     @picture_sprites = []
  260.     for i in 1..50
  261.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  262.         $game_screen.pictures[i]))
  263.     end
  264.     # 生成计时器块
  265.     @timer_sprite = Sprite_Timer.new
  266.     # 刷新画面
  267.     update
  268.   end
  269. end
  270.  
  271. #==============================================================================
  272. class Game_Actor < Game_Battler
  273.   #--------------------------------------------------------------------------
  274.   # X☆R
  275.   def self_is_player?
  276.     return $game_party.actors[0] == self
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 变更装备
  280.   #     equip_type : 装备类型
  281.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  282.   #--------------------------------------------------------------------------
  283.   alias add_equip_xdrs equip
  284.   def equip(equip_type, id)
  285.     add_equip_xdrs(equip_type, id)
  286.     $game_player.refresh if self_is_player? #X☆R
  287.   end
  288. end
  289. #==============================================================================
# 基于RMMV/MZ基础编写插件,持续更新,请多多支持.
# 需求人多的优先编写!最新消息请关注下面通道.

[插件交流群][个人插件网]

Lv4.逐梦者

梦石
0
星屑
14629
在线时间
2152 小时
注册时间
2016-9-20
帖子
861
2
发表于 2018-2-7 22:34:28 | 只看该作者
你試一試 他的2013年版本,解決了这个問題,不过没試過
  1. #==============================================================================
  2. # ■ 角色装备行走图变更_—— 主角版
  3. #------------------------------------------------------------------------------
  4. #  使用了一种特殊的方法来改变行走图,不是更换,而是在原图的基础上继续描绘新的
  5. # 层以实现层的叠加,类似暗黑里的装备帽子以后角色的行走图就多出帽子,装备盾牌以
  6. # 后就会看到角色的左手拿着盾牌。
  7. #
  8. # 使用说明:
  9. # 全部都是在数据库里设置,对应的武器或防具后逗号追加一个图片文件名即可,此文件
  10. # 放在graphics/characters下,至于图片的绘制,实属虐待美工…… 具体可参考范例里
  11. # 的graphics/characters目录。
  12. #
  13. # 此部分为通用脚本。
  14. #==============================================================================
  15. module RPG
  16.   class Weapon
  17.     def name
  18.       return @name.split(/,/)[0]
  19.     end
  20.     def part
  21.       return @name.split(/,/)[1]
  22.     end
  23.   end
  24.   
  25.   class Armor
  26.     def name
  27.       return @name.split(/,/)[0]
  28.     end
  29.     def part
  30.       return @name.split(/,/)[1]
  31.     end
  32.   end
  33. end

  34. #==============================================================================
  35. # ■ Game_Player
  36. #------------------------------------------------------------------------------
  37. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  38. # 本类的实例请参考 $game_player。
  39. #==============================================================================

  40. class Game_Player < Game_Character
  41.   attr_accessor :change                 # 重绘行走图开关
  42.   def refresh
  43.     # 同伴人数为 0 的情况下
  44.     if $game_party.actors.size == 0
  45.       # 清除角色的文件名及对像
  46.       @character_name = ""
  47.       @character_hue = 0
  48.       # 分支结束
  49.       return
  50.     end
  51.     # 获取带头的角色
  52.     actor = $game_party.actors[0]
  53.     # 设置角色的文件名及对像
  54.     @character_name = actor.character_name
  55.     @character_hue = actor.character_hue
  56.     # 初始化不透明度和合成方式子
  57.     @opacity = 255
  58.     @blend_type = 0
  59.     pic = RPG::Cache.character(@character_name,0)
  60.     width = pic.width
  61.     height = pic.height
  62.     $player_bitmap = Bitmap.new(width, height)
  63.     self.part_update
  64.   end
  65. end

  66. class Game_Actor < Game_Battler
  67.   #--------------------------------------------------------------------------
  68.   # ● 变更装备
  69.   #     equip_type : 装备类型
  70.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  71.   #--------------------------------------------------------------------------
  72.   alias old_equip equip
  73.   def equip(equip_type, id)
  74.     old_equip(equip_type, id)
  75.     $game_player.part_update if $game_party.actors.index(self) == 0
  76.   end
  77. end

  78. class Scene_Title
  79.   #--------------------------------------------------------------------------
  80.   # ● 命令 : 新游戏
  81.   #--------------------------------------------------------------------------
  82.   def command_new_game
  83.     # 演奏确定 SE
  84.     $game_system.se_play($data_system.decision_se)
  85.     # 停止 BGM
  86.     Audio.bgm_stop
  87.     # 重置测量游戏时间用的画面计数器
  88.     Graphics.frame_count = 0
  89.     # 生成各种游戏对像
  90.     $game_temp          = Game_Temp.new
  91.     $game_system        = Game_System.new
  92.     $game_switches      = Game_Switches.new
  93.     $game_variables     = Game_Variables.new
  94.     $game_self_switches = Game_SelfSwitches.new
  95.     $game_screen        = Game_Screen.new
  96.     $game_actors        = Game_Actors.new
  97.     $game_party         = Game_Party.new
  98.     $game_troop         = Game_Troop.new
  99.     $game_map           = Game_Map.new
  100.     # 设置初期同伴位置
  101.     $game_party.setup_starting_members
  102.     $game_player        = Game_Player.new
  103.     # 设置初期位置的地图
  104.     $game_map.setup($data_system.start_map_id)
  105.     # 主角向初期位置移动
  106.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  107.     # 刷新主角
  108.     $game_player.refresh
  109.     # 执行地图设置的 BGM 与 BGS 的自动切换
  110.     $game_map.autoplay
  111.     # 刷新地图 (执行并行事件)
  112.     $game_map.update
  113.     # 切换地图画面
  114.     $scene = Scene_Map.new
  115.   end
  116. end

  117. class Scene_Map
  118.   #--------------------------------------------------------------------------
  119.   # ● 主处理
  120.   #--------------------------------------------------------------------------
  121.   alias old_main main
  122.   def main
  123.     # 生成活动块
  124.     $game_player.part_update
  125.     old_main
  126.   end
  127. end
复制代码
我发的贴子大多未经整理是草稿抱歉
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 19:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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