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

Project1

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

[已经解决] 【求助】RP魔塔的伤害显示与地图上显示NPC名字的脚本冲突!

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2012-5-20 15:19:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chd114 于 2012-5-20 15:43 编辑

只要在脚本编辑器同时加入这两种脚本,RP魔塔的伤害显示就出不来,去掉地图上显示NPC名字就可以显示···求解决方法
  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,转载、使用请保留此信息
  3. #==============================================================================
  4. # 作者:柳柳
  5. #
  6. # 使用方法:插入到main前即可,之后就会显示每个事件的名字。
  7. # 不想显示名字的NPC直接把名字设置为一个空格就行了。
  8. #
  9. # 附加功能:名字颜色区分:比如一个NPC的名字是  柳柳,2  就会用2号颜色(红色)显示
  10. #
  11. # 修改NPC名的方法:$game_map.events[事件ID编号].name =
  12. # 比如某个宝箱,原名宝箱,打开后名为“打开的宝箱”,则
  13. # $game_map.events[@event_id].name = "打开的宝箱" 或者
  14. # $game_map.events[2].name = "打开的宝箱" (假设宝箱是2号事件)
  15. #
  16. # 修改颜色定义:70-88行,131-149行,自己随便改。
  17. #
  18. # 给主角带上名字:192行,改 "" 为 "主角" 或者 $game_party.actors[0].name 即可
  19. #
  20. # 是否显示姓名的开关:157行,开头的井号去掉。则以后39号开关打开的时候才会显示姓名
  21. #
  22. #==============================================================================
  23. # ■ Game_Event
  24. #------------------------------------------------------------------------------
  25. #  处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
  26. # 在 Game_Map 类的内部使用。
  27. #==============================================================================
  28. class Game_Event < Game_Character
  29. #——————————————————————————————————————
  30. # 用来返回名称
  31. #——————————————————————————————————————
  32. def name
  33.    return @event.name
  34. end  
  35. def name=(newname)
  36.    @event.name = newname
  37. end
  38. end

  39. #==============================================================================
  40. # ■ Sprite_Character
  41. #------------------------------------------------------------------------------
  42. #  角色显示用脚本。监视 Game_Character 类的实例、
  43. # 自动变化脚本状态。
  44. #==============================================================================

  45. class Sprite_Character < RPG::Sprite
  46. #--------------------------------------------------------------------------
  47. # ● 定义实例变量
  48. #--------------------------------------------------------------------------
  49. attr_accessor :character                # 角色
  50. #--------------------------------------------------------------------------
  51. # ● 初始化对像
  52. #     viewport  : 查看端口
  53. #     character : 角色 (Game_Character)
  54. #--------------------------------------------------------------------------
  55. def initialize(viewport, character = nil)
  56.    name = character.name
  57.    super(viewport)
  58.    @character = character
  59.    @namesprite = Sprite.new
  60.    @namesprite.bitmap = Bitmap.new(160, 48)
  61.    @namesprite.bitmap.font.name = "黑体"
  62.    @namesprite.bitmap.font.size = 16
  63.    @namesprite.bitmap.font.color.set(255, 255, 255)
  64.    @evname = name
  65.    @evname_split = name.split(/,/)[0]
  66.    if name[0, 2]=="EV"
  67.      @evname_split = " "
  68.    else
  69.      if name[0, 3]=="暗"
  70.        @evname_split = " "
  71.      else
  72.        if name=="dead"
  73.          @evname_split = " "
  74.        else
  75.          if name[0, 6]=="怪物"
  76.            @evname_split = "怪物"
  77.          else
  78.            if name[0, 6]=="尸体"
  79.              @evname_split = "尸体"
  80.            end
  81.          end
  82.        end  
  83.      end  
  84.    end
  85.    if name.split(/,/)[1] != nil
  86.      case name.split(/,/)[1]
  87.      when "0"
  88.        @namesprite.bitmap.font.color.set(255, 255, 255)
  89.      when "1"
  90.        @namesprite.bitmap.font.color.set(128, 128, 255)
  91.      when "2"
  92.        @namesprite.bitmap.font.color.set(255, 128, 128)
  93.      when "3"
  94.        @namesprite.bitmap.font.color.set(128, 255, 128)
  95.      when "4"
  96.        @namesprite.bitmap.font.color.set(128, 255, 255)
  97.      when "5"
  98.        @namesprite.bitmap.font.color.set(255, 128, 255)
  99.      when "6"
  100.        @namesprite.bitmap.font.color.set(255, 255, 128)
  101.      when "7"
  102.        @namesprite.bitmap.font.color.set(192, 192, 192)
  103.      else
  104.        @namesprite.bitmap.font.color.set(255, 255, 255)
  105.      end
  106.    end
  107.    if @evname_split != "" and @evname_split != nil
  108.      @namesprite.bitmap.draw_text(0, 0, 160, 36, @evname_split, 1)
  109.    end
  110.    update
  111. end
  112.    #--------------------------------------------------------------------------
  113. # ● 更新画面
  114. #--------------------------------------------------------------------------
  115. def update
  116.    super
  117.    # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  118.    if @tile_id != @character.tile_id or
  119.       @character_name != @character.character_name or
  120.       @character_hue != @character.character_hue
  121.      # 记忆元件 ID 与文件名、色相
  122.      @tile_id = @character.tile_id
  123.      @character_name = @character.character_name
  124.      @character_hue = @character.character_hue
  125.      # 元件 ID 为有效值的情况下
  126.      if @tile_id >= 384
  127.        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  128.          @tile_id, @character.character_hue)
  129.        self.src_rect.set(0, 0, 32, 32)
  130.        self.ox = 16
  131.        self.oy = 32
  132.      # 元件 ID 为无效值的情况下
  133.      else
  134.        self.bitmap = RPG::Cache.character(@character.character_name,
  135.          @character.character_hue)
  136.        @cw = bitmap.width / 4
  137.        @ch = bitmap.height / 4
  138.        self.ox = @cw / 2
  139.        self.oy = @ch
  140.      end
  141.    end
  142.    if @evname != @character.name
  143.      @namesprite.bitmap.clear
  144.      @evname = @character.name
  145.      @evname_split = @character.name.split(/,/)[0]
  146.      if @character.name.split(/,/)[1] != nil
  147.        case @character.name.split(/,/)[1]
  148.        when "0"
  149.          @namesprite.bitmap.font.color.set(255, 255, 255)
  150.        when "1"
  151.          @namesprite.bitmap.font.color.set(128, 128, 255)
  152.        when "2"
  153.          @namesprite.bitmap.font.color.set(255, 128, 128)
  154.        when "3"
  155.          @namesprite.bitmap.font.color.set(128, 255, 128)
  156.        when "4"
  157.          @namesprite.bitmap.font.color.set(128, 255, 255)
  158.        when "5"
  159.          @namesprite.bitmap.font.color.set(255, 128, 255)
  160.        when "6"
  161.          @namesprite.bitmap.font.color.set(255, 255, 128)
  162.        when "7"
  163.          @namesprite.bitmap.font.color.set(192, 192, 192)
  164.        else
  165.          @namesprite.bitmap.font.color.set(255, 255, 255)
  166.        end
  167.      end
  168.      if @evname_split != "" and @evname_split != nil
  169.        @namesprite.bitmap.draw_text(0, 0, 160, 36, @evname_split, 1)
  170.      end
  171.    end
  172.    @namesprite.x = self.x-80
  173.    @namesprite.y = self.y-self.oy-24
  174.    #@namesprite.visible = $game_switches[39]
  175.    # 设置可视状态
  176.    self.visible = (not @character.transparent)
  177.    # 图形是角色的情况下
  178.    if @tile_id == 0
  179.      # 设置传送目标的矩形
  180.      sx = @character.pattern * @cw
  181.      sy = (@character.direction - 2) / 2 * @ch
  182.      self.src_rect.set(sx, sy, @cw, @ch)
  183.    end
  184.    # 设置脚本的坐标
  185.    self.x = @character.screen_x
  186.    self.y = @character.screen_y
  187.    self.z = @character.screen_z(@ch)
  188.    # 设置不透明度、合成方式、茂密
  189.    self.opacity = @character.opacity
  190.    self.blend_type = @character.blend_type
  191.    self.bush_depth = @character.bush_depth
  192.    # 动画
  193.    if @character.animation_id != 0
  194.      animation = $data_animations[@character.animation_id]
  195.      animation(animation, true)
  196.      @character.animation_id = 0
  197.    end
  198. end
  199. end
  200. #==============================================================================
  201. # ■ Game_Player
  202. #------------------------------------------------------------------------------
  203. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  204. # 本类的实例请参考 $game_player。
  205. #==============================================================================

  206. class Game_Player < Game_Character
  207. def name
  208.    return ""
  209. end
  210. end
  211. #==============================================================================
  212. # 本脚本来自www.66rpg.com,转载、使用请保留此信息
  213. #==============================================================================
复制代码
求改法使其与伤害显示脚本兼容[教程]关于RP魔塔伤害显示的制作方法 [精品]


‘‘──chd114于2012-5-20 15:20补充以下内容

@春风莉露!
’’
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
2
发表于 2012-5-20 15:22:46 | 只看该作者
楼主贴出另一个脚本吧
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
 楼主| 发表于 2012-5-20 15:28:24 | 只看该作者
tommay 发表于 2012-5-20 15:22
楼主贴出另一个脚本吧

伤害显示就不是一个脚本了···伤害显示改了好几个地方,除了加新东西还改掉了RM默认的东西


‘‘──chd114于2012-5-20 15:29补充以下内容
  1. module RPG
  2. class Sprite < ::Sprite
  3. def initialize(viewport = nil)
  4. super(viewport)
  5. @_whiten_duration = 0
  6. @_appear_duration = 0
  7. @_escape_duration = 0
  8. @_collapse_duration = 0
  9. @_damage_duration = 0
  10. @_animation_duration = 0
  11. @_blink = false
  12. ###########################################################################
  13. @_word_duration = 0 #(和上面保持阵形 = =|||)
  14. ###########################################################################
  15. end
  16. def dispose
  17. dispose_damage
  18. dispose_animation
  19. dispose_loop_animation
  20. ###########################################################################
  21. dispose_word
  22. ###########################################################################
  23. super
  24. end
  25. def word(value) #本脚本63行 = =||| 众:“太恶劣了!太恶劣了!”
  26. dispose_word #= =b 64行
  27. bitmap = Bitmap.new(250, 48) #.....65
  28. bitmap.font.name = "黑体" #注意字体
  29. bitmap.font.size = 22 #字体大小  
  30. #bitmap.font.italic = true #这个是斜体 一般可以不用
  31. bitmap.font.color.set(0, 0, 0) #R G B
  32. bitmap.draw_text(-1, 12-1, 250, 36, value, 1)
  33. bitmap.draw_text(+1, 12-1, 250, 36, value, 1)
  34. bitmap.draw_text(-1, 12+1, 250, 36, value, 1)
  35. bitmap.draw_text(+1, 12+1, 250, 36, value, 1)
  36. #颜色 当然可以加很多 只要你记得住 = =|||
  37. case $word_color
  38. when 0 #==
  39. bitmap.font.color.set(255, 255, 255)
  40. when 1 #==
  41. bitmap.font.color.set(255, 0, 0)
  42. when 2 #==
  43. bitmap.font.color.set(0, 255, 0)
  44. when 3 #==
  45. bitmap.font.color.set(0, 0, 255)
  46. when 4 # = =
  47. bitmap.font.color.set(255, 255, 0)
  48. when 5 #==
  49. bitmap.font.color.set(255, 255, 255, 255)
  50. when 6 #==
  51. bitmap.font.color.set(128, 128, 255, 255)
  52. when 7 #==
  53. bitmap.font.color.set(255, 128, 128, 255)
  54. when 8 #==
  55. bitmap.font.color.set(128, 255, 128, 255)
  56. when 9 #==
  57. bitmap.font.color.set(128, 255, 255, 255)
  58. when 10#==
  59. bitmap.font.color.set(255, 128, 255, 255)
  60. when 11#==
  61. bitmap.font.color.set(255, 255, 128, 255)
  62. when 12#==
  63. bitmap.font.color.set(192, 192, 192, 255)
  64. when 13#==
  65. bitmap.font.color.set(0, 0, 0, 255)
  66. when 14#==
  67. bitmap.font.color.set(255, 50, 50, 255)
  68. when 15#==
  69. bitmap.font.color.set(128, 255, 128, 255)
  70. when 16#==
  71. bitmap.font.color.set(140, 140, 140, 255)
  72. when 17#==
  73. bitmap.font.color.set(255, 255, 0, 200)
  74. when 18#==
  75. bitmap.font.color.set(0, 255, 255, 255)
  76. when 19#==
  77. bitmap.font.color.set(119, 0, 255, 255)
  78. when 20#==
  79. bitmap.font.color.set(255, 255, 255, 255)
  80. when 21#==
  81. bitmap.font.color.set(128, 128, 255, 255)
  82. when 22#==
  83. bitmap.font.color.set(255, 128, 128, 255)
  84. when 23#==
  85. bitmap.font.color.set(128, 255, 128, 255)
  86. when 24#==
  87. bitmap.font.color.set(128, 255, 255, 255)
  88. when 25#==
  89. bitmap.font.color.set(255, 128, 255, 255)
  90. when 26#==
  91. bitmap.font.color.set(255, 255, 128, 255)
  92. when 27#==
  93. bitmap.font.color.set(192, 192, 192, 255)
  94. end
  95. bitmap.draw_text(0, 12, 250, 36, value, 1)
  96. #那啥 = = 呃....94行
  97. @_word_sprite = ::Sprite.new(self.viewport)
  98. @_word_sprite.bitmap = bitmap
  99. @_word_sprite.ox = 105
  100. @_word_sprite.oy = 15
  101. @_word_sprite.x = self.x - self.ox
  102. @_word_sprite.y = self.y - self.oy
  103. #Z坐标 约等于层次 值越大越在前
  104. @_word_sprite.z = 3001
  105. @_word_duration = 40
  106. end
  107. def dispose_word #善后工作 = =||| 收尸......
  108. if @_word_sprite != nil
  109. @_word_sprite.bitmap.dispose
  110. @_word_sprite.dispose
  111. @_word_sprite = nil
  112. @_word_duration = 0
  113. end
  114. end
  115. def update
  116. super
  117. if @_whiten_duration > 0
  118. @_whiten_duration -= 1
  119. self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  120. end
  121. if @_appear_duration > 0
  122. @_appear_duration -= 1
  123. self.opacity = (16 - @_appear_duration) * 16
  124. end
  125. if @_escape_duration > 0
  126. @_escape_duration -= 1
  127. self.opacity = 256 - (32 - @_escape_duration) * 10
  128. end
  129. if @_collapse_duration > 0
  130. @_collapse_duration -= 1
  131. self.opacity = 256 - (48 - @_collapse_duration) * 6
  132. end
  133. if @_damage_duration > 0
  134. @_damage_duration -= 1
  135. case @_damage_duration
  136. when 38..39
  137. @_damage_sprite.y -= 4
  138. when 36..37
  139. @_damage_sprite.y -= 2
  140. when 34..35
  141. @_damage_sprite.y += 2
  142. when 28..33
  143. @_damage_sprite.y += 4
  144. end
  145. @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  146. if @_damage_duration == 0
  147. dispose_damage
  148. end
  149. end
  150. ###########################################################################
  151. #众:"你小子要抄到什么时候?"
  152. #众人使出了必杀:语法错误!
  153. #Zapper充满恐惧的想要转身逃跑!
  154. if @_word_duration > 0
  155. @_word_duration -= 1
  156. case @_word_duration
  157. when 38..39
  158. @_word_sprite.y -= 4
  159. when 36..37
  160. @_word_sprite.y -= 3
  161. when 34..35
  162. @_word_sprite.y -= 2
  163. when 28..33
  164. @_word_sprite.y -= 1
  165. end
  166. @_word_sprite.opacity = 256 - (12 - @_word_duration) * 32
  167. if @_word_duration == 0
  168. dispose_word #还记得那个善后工作么?
  169. end
  170. end
  171. ###########################################################################
  172. if @_animation != nil and (Graphics.frame_count % 2 == 0)
  173. @_animation_duration -= 1
  174. update_animation
  175. end
  176. if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  177. update_loop_animation
  178. @_loop_animation_index += 1
  179. @_loop_animation_index %= @_loop_animation.frame_max
  180. end
  181. if @_blink
  182. @_blink_count = (@_blink_count + 1) % 32
  183. if @_blink_count < 16
  184. alpha = (16 - @_blink_count) * 6
  185. else
  186. alpha = (@_blink_count - 16) * 6
  187. end
  188. self.color.set(255, 255, 255, alpha)
  189. end
  190. @@_animations.clear
  191. end
  192. end
  193. end

复制代码
上面这个只是添加的,下面还有修改的

’’


‘‘──chd114于2012-5-20 15:29补充以下内容
  1. #==============================================================================
  2. # ■ Sprite_Character
  3. #------------------------------------------------------------------------------
  4. #  角色显示用脚本。监视 Game_Character 类的实例、
  5. # 自动变化脚本状态。
  6. #==============================================================================

  7. class Sprite_Character < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :character                # 角色
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport  : 查看端口
  15.   #     character : 角色 (Game_Character)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport, character = nil)
  18.     super(viewport)
  19.     @character = character
  20.     update
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 更新画面
  24.   #--------------------------------------------------------------------------
  25.   def update
  26.     super
  27.     # RP魔塔伤害提示
  28.     if @character.talk == true
  29.       word(@character.word)
  30.       @character.word = ""
  31.       @character.talk = false
  32.     end
  33.     # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  34.     if @tile_id != @character.tile_id or
  35.        @character_name != @character.character_name or
  36.        @character_hue != @character.character_hue
  37.       # 记忆元件 ID 与文件名、色相
  38.       @tile_id = @character.tile_id
  39.       @character_name = @character.character_name
  40.       @character_hue = @character.character_hue
  41.       # 元件 ID 为有效值的情况下
  42.       if @tile_id >= 384
  43.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  44.           @tile_id, @character.character_hue)
  45.         self.src_rect.set(0, 0, 32, 32)
  46.         self.ox = 16
  47.         self.oy = 32
  48.       # 元件 ID 为无效值的情况下
  49.       else
  50.         self.bitmap = RPG::Cache.character(@character.character_name,
  51.           @character.character_hue)
  52.         @cw = bitmap.width / 4
  53.         @ch = bitmap.height / 4
  54.         self.ox = @cw / 2
  55.         self.oy = @ch
  56.       end
  57.     end
  58.     # 设置可视状态
  59.     self.visible = (not @character.transparent)
  60.     # 图形是角色的情况下
  61.     if @tile_id == 0
  62.       # 设置传送目标的矩形
  63.       sx = @character.pattern * @cw
  64.       sy = (@character.direction - 2) / 2 * @ch
  65.       self.src_rect.set(sx, sy, @cw, @ch)
  66.     end
  67.     # 设置脚本的坐标
  68.     self.x = @character.screen_x
  69.     self.y = @character.screen_y
  70.     self.z = @character.screen_z(@ch)
  71.     # 设置不透明度、合成方式、茂密
  72.     self.opacity = @character.opacity
  73.     self.blend_type = @character.blend_type
  74.     self.bush_depth = @character.bush_depth
  75.     # 动画
  76.     if @character.animation_id != 0
  77.       animation = $data_animations[@character.animation_id]
  78.       animation(animation, true)
  79.       @character.animation_id = 0
  80.     end
  81.   end
  82. end
复制代码

’’
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
4
发表于 2012-5-20 15:29:55 | 只看该作者
chd114 发表于 2012-5-20 15:28
伤害显示就不是一个脚本了···伤害显示改了好几个地方,除了加新东西还改掉了RM默认的东西 ...

那就上传工程吧,羊毛出在羊身上,改动的脚本都有可能导致出错
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
 楼主| 发表于 2012-5-20 15:30:00 | 只看该作者
  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #==============================================================================

  7. class Sprite_Battler < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :battler                  # 战斗者
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport : 显示端口
  15.   #     battler  : 战斗者 (Game_Battler)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport, battler = nil)
  18.     super(viewport)
  19.     @battler = battler
  20.     @battler_visible = false
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 释放
  24.   #--------------------------------------------------------------------------
  25.   def dispose
  26.     if self.bitmap != nil
  27.       self.bitmap.dispose
  28.     end
  29.     super
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 刷新画面
  33.   #--------------------------------------------------------------------------
  34.   def update
  35.     super
  36.     # 战斗者为 nil 的情况下
  37.     if @battler == nil
  38.       self.bitmap = nil
  39.       loop_animation(nil)
  40.       return
  41.     end
  42.     # 文件名和色相与当前情况有差异的情况下
  43.     if @battler.battler_name != @battler_name or
  44.        @battler.battler_hue != @battler_hue
  45.       # 获取、设置位图
  46.       @battler_name = @battler.battler_name
  47.       @battler_hue = @battler.battler_hue
  48.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  49.       @width = bitmap.width
  50.       @height = bitmap.height
  51.       self.ox = @width / 2
  52.       self.oy = @height
  53.       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  54.       if @battler.dead? or @battler.hidden
  55.         self.opacity = 0
  56.       end
  57.     end
  58.     # 动画 ID 与当前的情况有差异的情况下
  59.     if @battler.damage == nil and
  60.        @battler.state_animation_id != @state_animation_id
  61.       @state_animation_id = @battler.state_animation_id
  62.       loop_animation($data_animations[@state_animation_id])
  63.     end
  64.     # 应该被显示的角色的情况下
  65.     if @battler.is_a?(Game_Actor) and @battler_visible
  66.       # 不是主状态的时候稍稍降低点透明度
  67.       if $game_temp.battle_main_phase
  68.         self.opacity += 3 if self.opacity < 255
  69.       else
  70.         self.opacity -= 3 if self.opacity > 207
  71.       end
  72.     end
  73.     # 明灭
  74.     if @battler.blink
  75.       blink_on
  76.     else
  77.       blink_off
  78.     end
  79.     # 不可见的情况下
  80.     unless @battler_visible
  81.       # 出现
  82.       if not @battler.hidden and not @battler.dead? and
  83.          (@battler.damage == nil or @battler.damage_pop)
  84.         appear
  85.         @battler_visible = true
  86.       end
  87.     end
  88.     # 可见的情况下
  89.     if @battler_visible
  90.       # 逃跑
  91.       if @battler.hidden
  92.         $game_system.se_play($data_system.escape_se)
  93.         escape
  94.         @battler_visible = false
  95.       end
  96.       # 白色闪烁
  97.       if @battler.white_flash
  98.         whiten
  99.         @battler.white_flash = false
  100.       end
  101.       # 动画
  102.       if @battler.animation_id != 0
  103.         animation = $data_animations[@battler.animation_id]
  104.         animation(animation, @battler.animation_hit)
  105.         @battler.animation_id = 0
  106.       end
  107.       # 伤害
  108.       if @battler.damage_pop
  109.         damage(@battler.damage, @battler.critical)
  110.         @battler.damage = nil
  111.         @battler.critical = false
  112.         @battler.damage_pop = false
  113.       end
  114.       # korapusu
  115.       if @battler.damage == nil and @battler.dead?
  116.         if @battler.is_a?(Game_Enemy)
  117.           $game_system.se_play($data_system.enemy_collapse_se)
  118.         else
  119.           $game_system.se_play($data_system.actor_collapse_se)
  120.         end
  121.         collapse
  122.         @battler_visible = false
  123.       end
  124.     end
  125.     # 设置活动块的坐标
  126.     self.x = @battler.screen_x
  127.     self.y = @battler.screen_y
  128.     self.z = @battler.screen_z
  129.   end
  130. end
复制代码


‘‘──chd114于2012-5-20 15:30补充以下内容
  1. #==============================================================================
  2. # ■ Game_Character (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理角色的类。本类作为 Game_Player 类与 Game_Event
  5. # 类的超级类使用。
  6. #==============================================================================

  7. class Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :id                       # ID
  12.   attr_reader   :x                        # 地图 X 坐标 (理论坐标)
  13.   attr_reader   :y                        # 地图 Y 坐标 (理论坐标)
  14.   attr_reader   :real_x                   # 地图 X 坐标 (实际坐标 * 128)
  15.   attr_reader   :real_y                   # 地图 Y 坐标 (实际坐标 * 128)
  16.   attr_reader   :tile_id                  # 元件 ID  (0 为无效)
  17.   attr_accessor   :character_name           # 角色 文件名
  18.   attr_reader   :character_hue            # 角色 色相
  19.   attr_reader   :opacity                  # 不透明度
  20.   attr_reader   :blend_type               # 合成方式
  21.   attr_reader   :direction                # 朝向
  22.   attr_reader   :pattern                  # 图案
  23.   attr_reader   :move_route_forcing       # 移动路线强制标志
  24.   attr_reader   :through                  # 穿透
  25.   attr_accessor :animation_id             # 动画 ID
  26.   attr_accessor :transparent              # 透明状态
  27.   attr_accessor :talk # 显示伤害标志
  28.   attr_accessor :word # 伤害值
  29.   #--------------------------------------------------------------------------
  30.   # ● 初始化对像
  31.   #--------------------------------------------------------------------------
  32.   def initialize
  33.     @id = 0
  34.     @x = 0
  35.     @y = 0
  36.     @real_x = 0
  37.     @real_y = 0
  38.     @tile_id = 0
  39.     @character_name = ""
  40.     @character_hue = 0
  41.     @opacity = 255
  42.     @blend_type = 0
  43.     @direction = 2
  44.     @pattern = 0
  45.     @move_route_forcing = false
  46.     @through = false
  47.     @animation_id = 0
  48.     @transparent = false
  49.     @original_direction = 2
  50.     @original_pattern = 0
  51.     @move_type = 0
  52.     @move_speed = 4
  53.     @move_frequency = 6
  54.     @move_route = nil
  55.     @move_route_index = 0
  56.     @original_move_route = nil
  57.     @original_move_route_index = 0
  58.     @walk_anime = true
  59.     @step_anime = false
  60.     @direction_fix = false
  61.     @always_on_top = false
  62.     @anime_count = 0
  63.     @stop_count = 0
  64.     @jump_count = 0
  65.     @jump_peak = 0
  66.     @wait_count = 0
  67.     @locked = false
  68.     @prelock_direction = 0
  69.     @talk = false
  70.     @word = ""
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 移动中判定
  74.   #--------------------------------------------------------------------------
  75.   def moving?
  76.     # 如果在移动中理论坐标与实际坐标不同
  77.     return (@real_x != @x * 128 or @real_y != @y * 128)
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 跳跃中判定
  81.   #--------------------------------------------------------------------------
  82.   def jumping?
  83.     # 如果跳跃中跳跃点数比 0 大
  84.     return @jump_count > 0
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 矫正姿势
  88.   #--------------------------------------------------------------------------
  89.   def straighten
  90.     # 移动时动画以及停止动画为 ON 的情况下
  91.     if @walk_anime or @step_anime
  92.       # 设置图形为 0
  93.       @pattern = 0
  94.     end
  95.     # 清除动画计数
  96.     @anime_count = 0
  97.     # 清除被锁定的向前朝向
  98.     @prelock_direction = 0
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 强制移动路线
  102.   #     move_route : 新的移动路线
  103.   #--------------------------------------------------------------------------
  104.   def force_move_route(move_route)
  105.     # 保存原来的移动路线
  106.     if @original_move_route == nil
  107.       @original_move_route = @move_route
  108.       @original_move_route_index = @move_route_index
  109.     end
  110.     # 更改移动路线
  111.     @move_route = move_route
  112.     @move_route_index = 0
  113.     # 设置强制移动路线标志
  114.     @move_route_forcing = true
  115.     # 清除被锁定的向前朝向
  116.     @prelock_direction = 0
  117.     # 清除等待计数
  118.     @wait_count = 0
  119.     # 自定义移动
  120.     move_type_custom
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 可以通行判定
  124.   #     x : X 坐标
  125.   #     y : Y 坐标
  126.   #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向不能通行的情况判定 (跳跃用)
  127.   #--------------------------------------------------------------------------
  128.   def passable?(x, y, d)
  129.     # 求得新的坐标
  130.     new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  131.     new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  132.    
  133.   
  134.    
  135. #1不能向下、2不能向左、4不能向右、8不能向上
  136. ###以下增加图块中箭头方向的指向功能###箭头画在第3层

  137.     @tu_id=$game_map.data[x,y,2]
  138.     if $game_map.have_an_event?(x,y)
  139.       @iid=$game_map.check_event(x,y)
  140.       @tu_id=$game_map.events[@iid].tile_id
  141.     end#if表示事件采用图片时的情况
  142.    
  143.     @tunew_id=$game_map.data[new_x,new_y,2]
  144.     if $game_map.have_an_event?(new_x,new_y)
  145.       @iid=$game_map.check_event(new_x,new_y)
  146.       @tunew_id=$game_map.events[@iid].tile_id
  147.     end#if表示事件采用图片时的情况

  148.     v=$game_variables[85]
  149.     if @tu_id==v[9]#当前坐标为黑框时
  150.       if d==2 and (@tunew_id==v[0] or @tunew_id==v[4])
  151.         return false#向上同时新坐标为向下箭头那么也不能出去
  152.       end
  153.       if d==8 and (@tunew_id==v[1] or @tunew_id==v[5])
  154.         return false#向下新坐标为向上箭头
  155.       end
  156.       if d==6 and (@tunew_id==v[2] or @tunew_id==v[6])
  157.         return false#向右新坐标为向左箭头
  158.       end
  159.       if d==4 and (@tunew_id==v[3] or @tunew_id==v[7])
  160.         return false#向左新坐标为向右箭头
  161.       end
  162.       $data_tilesets[1].passages[@tu_id]=0#将黑框通行设为全向
  163.     end

  164.     case @tunew_id
  165.       when v[0]#新坐标为向上箭头
  166.         if d!=2#主角不是向下的情况
  167.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  168.             return false#当前坐标也为向上箭头且主角不是向上前进
  169.           else
  170.             return true
  171.           end
  172.         else
  173.           return false
  174.         end
  175.       when v[1]#新坐标为向下箭头
  176.         if d!=8#主角不是向上的情况
  177.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  178.             return false#当前坐标也为向下箭头且主角不是向下前进
  179.           else
  180.             return true
  181.           end
  182.         else
  183.           return false
  184.         end
  185.       when v[2]#新坐标为向左箭头
  186.         if d!=6#主角不是向右的情况
  187.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  188.             return false#当前坐标也为向左箭头且主角不是向左前进
  189.           else
  190.             return true
  191.           end
  192.         else
  193.           return false
  194.         end
  195.       when v[3]#新坐标为向右箭头
  196.         if d!=4#主角不是向左的情况
  197.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  198.             return false#当前坐标也为向右箭头且主角不是向右前进
  199.           else
  200.             return true
  201.           end
  202.         else
  203.           return false
  204.         end
  205.       #以下四个为可以两两交换的箭头标记
  206.       when v[4]#新坐标为向上箭头
  207.         if d!=2#主角不是向下的情况
  208.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  209.             return false#当前坐标也为向上箭头且主角不是向上前进
  210.           else
  211.             return true
  212.           end
  213.         else
  214.           return false
  215.         end
  216.       when v[5]#新坐标为向下箭头
  217.         if d!=8#主角不是向上的情况
  218.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  219.             return false#当前坐标也为向下箭头且主角不是向下前进
  220.           else
  221.             return true
  222.           end
  223.         else
  224.           return false
  225.         end
  226.       when v[6]#新坐标为向左箭头
  227.         if d!=6#主角不是向右的情况
  228.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  229.             return false#当前坐标也为向左箭头且主角不是向左前进
  230.           else
  231.             return true
  232.           end
  233.         else
  234.           return false
  235.         end
  236.       when v[7]#新坐标为向右箭头
  237.         if d!=4#主角不是向左的情况
  238.           if ((@tu_id==v[0] or @tu_id==v[4]) and d!=8) or ((@tu_id==v[1] or @tu_id==v[5]) and d!=2) or ((@tu_id==v[2] or @tu_id==v[6]) and d!=4)  or ((@tu_id==v[3] or @tu_id==v[7]) and d!=6)
  239.             return false#当前坐标也为向右箭头且主角不是向右前进
  240.           else
  241.             return true
  242.           end
  243.         else
  244.           return false
  245.         end
  246.     ###上一段在踩上箭头后设置通行只可沿箭头方向前进###
  247.      #使用楼层范围变量来定位
  248.      when v[8]#菱形标志,双箭头转换
  249.         for i in $game_variables[90][0]...$game_variables[90][0]+$game_variables[90][1]
  250.           for j in $game_variables[90][2]...$game_variables[90][2]+$game_variables[90][3]
  251.             case $game_map.data[i,j,2]
  252.               when v[4]
  253.                 $game_map.data[i,j,2]=v[5]
  254.               when v[5]
  255.                 $game_map.data[i,j,2]=v[4]
  256.               when v[6]
  257.                 $game_map.data[i,j,2]=v[7]
  258.               when v[7]
  259.                 $game_map.data[i,j,2]=v[6]
  260.             end
  261.           end
  262.         end

  263.       when v[9]#黑框不可进入,但可以出去
  264.         #$data_tilesets[1].passages[@tunew_id]=15
  265.         return false#新坐标为黑框则不能通行
  266.     end
  267. ###以上增加图块中箭头方向的指向功能###箭头画在第3层



  268.    
  269.     # 坐标在地图以外的情况
  270.     unless $game_map.valid?(new_x, new_y)
  271.       # 不能通行
  272.       return false
  273.     end
  274.     # 穿透是 ON 的情况下
  275.     if @through
  276.       # 可以通行
  277.       return true
  278.     end
  279.     # 移动者的元件无法来到指定方向的情况下
  280.     unless $game_map.passable?(x, y, d, self)
  281.       # 通行不可
  282.       return false
  283.     end
  284.     # 从指定方向不能进入到移动处的元件的情况下
  285.     unless $game_map.passable?(new_x, new_y, 10 - d)
  286.       # 不能通行
  287.       return false
  288.     end
  289.     # 循环全部事件
  290.     for event in $game_map.events.values
  291.       # 事件坐标于移动目标坐标一致的情况下
  292.       if event.x == new_x and event.y == new_y
  293.         # 穿透为 ON
  294.         unless event.through
  295.           # 自己就是事件的情况下
  296.           if self != $game_player
  297.             # 不能通行
  298.             return false
  299.           end
  300.           # 自己是主角、对方的图形是角色的情况下
  301.           if event.character_name != ""
  302.             # 不能通行
  303.             return false
  304.           end
  305.         end
  306.       end
  307.     end
  308.     # 主角的坐标与移动目标坐标一致的情况下
  309.     if $game_player.x == new_x and $game_player.y == new_y
  310.       # 穿透为 ON
  311.       unless $game_player.through
  312.         # 自己的图形是角色的情况下
  313.         if @character_name != ""
  314.           # 不能通行
  315.           return false
  316.         end
  317.       end
  318.     end
  319.     # 可以通行
  320.     return true
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 锁定
  324.   #--------------------------------------------------------------------------
  325.   def lock
  326.     # 如果已经被锁定的情况下
  327.     if @locked
  328.       # 过程结束
  329.       return
  330.     end
  331.     # 保存锁定前的朝向
  332.     @prelock_direction = @direction
  333.     # 保存主角的朝向
  334.     turn_toward_player
  335.     # 设置锁定中标志
  336.     @locked = true
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● 锁定中判定
  340.   #--------------------------------------------------------------------------
  341.   def lock?
  342.     return @locked
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● 解除锁定
  346.   #--------------------------------------------------------------------------
  347.   def unlock
  348.     # 没有锁定的情况下
  349.     unless @locked
  350.       # 过程结束
  351.       return
  352.     end
  353.     # 清除锁定中标志
  354.     @locked = false
  355.     # 没有固定朝向的情况下
  356.     unless @direction_fix
  357.       # 如果保存了锁定前的方向
  358.       if @prelock_direction != 0
  359.         # 还原为锁定前的方向
  360.         @direction = @prelock_direction
  361.       end
  362.     end
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 移动到指定位置
  366.   #     x : X 坐标
  367.   #     y : Y 坐标
  368.   #--------------------------------------------------------------------------
  369.   def moveto(x, y)
  370.     @x = x % $game_map.width
  371.     @y = y % $game_map.height
  372.     @real_x = @x * 128
  373.     @real_y = @y * 128
  374.     @prelock_direction = 0
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ● 获取画面 X 坐标
  378.   #--------------------------------------------------------------------------
  379.   def screen_x
  380.     # 通过实际坐标和地图的显示位置来求得画面坐标
  381.     return (@real_x - $game_map.display_x + 3) / 4 + 16
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 获取画面 Y 坐标
  385.   #--------------------------------------------------------------------------
  386.   def screen_y
  387.     # 通过实际坐标和地图的显示位置来求得画面坐标
  388.     y = (@real_y - $game_map.display_y + 3) / 4 + 32
  389.     # 取跳跃计数小的 Y 坐标
  390.     if @jump_count >= @jump_peak
  391.       n = @jump_count - @jump_peak
  392.     else
  393.       n = @jump_peak - @jump_count
  394.     end
  395.     return y - (@jump_peak * @jump_peak - n * n) / 2
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # ● 获取画面 Z 坐标
  399.   #     height : 角色的高度
  400.   #--------------------------------------------------------------------------
  401.   def screen_z(height = 0)
  402.     # 在最前显示的标志为 ON 的情况下
  403.     if @always_on_top
  404.       # 无条件设置为 999
  405.       return 999
  406.     end
  407.     # 通过实际坐标和地图的显示位置来求得画面坐标
  408.     z = (@real_y - $game_map.display_y + 3) / 4 + 32
  409.     # 元件的情况下
  410.     if @tile_id > 0
  411.       # 元件的优先不足 * 32
  412.       return z + $game_map.priorities[@tile_id] * 32
  413.     # 角色的场合
  414.     else
  415.       # 如果高度超过 32 就判定为满足 31
  416.       return z + ((height > 32) ? 31 : 0)
  417.     end
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 取得茂密
  421.   #--------------------------------------------------------------------------
  422.   def bush_depth
  423.     # 是元件、并且在最前显示为 ON 的情况下
  424.     if @tile_id > 0 or @always_on_top
  425.       return 0
  426.     end
  427.     # 以跳跃中以外要是繁茂处属性的元件为 12,除此之外为 0
  428.     if @jump_count == 0 and $game_map.bush?(@x, @y)
  429.       return 12
  430.     else
  431.       return 0
  432.     end
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # ● 取得地形标记
  436.   #--------------------------------------------------------------------------
  437.   def terrain_tag
  438.     return $game_map.terrain_tag(@x, @y)
  439.   end
  440. end
复制代码
改了3个默认的地方···
’’


‘‘──chd114于2012-5-20 15:31补充以下内容

没有出错,就是看不到···
’’


‘‘──chd114于2012-5-20 15:31补充以下内容

如果是出错的话运行会提示那里出错还可以改···可关键是它既不出错也不会运行···
’’


‘‘──chd114于2012-5-20 15:37补充以下内容

内部文件错误,无法上传···
’’


‘‘──chd114于2012-5-20 15:47补充以下内容

限制太大了···只能把DATA发上来···
’’
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
6
发表于 2012-5-20 15:49:38 | 只看该作者
楼主还是用115或别的网盘上传吧,实在不知道魔塔伤害那个脚本怎么用,然后也没测试出啥
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2007-1-6
帖子
50
7
发表于 2012-5-20 15:50:29 | 只看该作者
这两个功能需要分两个脚本吗?把伤害显示脚本稍加修改,应该就能再显示 NPC 名字了吧。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
 楼主| 发表于 2012-5-20 15:52:57 | 只看该作者
魔塔作家 发表于 2012-5-20 15:50
这两个功能需要分两个脚本吗?把伤害显示脚本稍加修改,应该就能再显示 NPC 名字了吧。 ...

这两个脚本放到一个游戏的时候,伤害显示的脚本就无用···我刚才试过修改NPC显示了,可是无用,而且提示未知错误···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2007-1-6
帖子
50
9
发表于 2012-5-20 15:54:16 | 只看该作者
chd114 发表于 2012-5-20 15:52
这两个脚本放到一个游戏的时候,伤害显示的脚本就无用···我刚才试过修改NPC显示了,可是无用,而且提 ...

我的意思是只用伤害显示脚本,然后修改它,让它也能显示 NPC 名称。而不是两个脚本都用。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

10
 楼主| 发表于 2012-5-20 16:03:13 | 只看该作者
魔塔作家 发表于 2012-5-20 15:54
我的意思是只用伤害显示脚本,然后修改它,让它也能显示 NPC 名称。而不是两个脚本都用。 ...

伤害显示脚本是显示一下就完了···NPC名称显示是一直的···除非它不在了
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 18:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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