Project1

标题: 如何实现显示职业称号? [打印本页]

作者: 美丽晨露    时间: 2012-12-21 19:11
标题: 如何实现显示职业称号?
本帖最后由 美丽晨露 于 2012-12-22 17:19 编辑

就是在每个职业后面显示一个称号
然后这些称号可以在游戏中更换
作者: 匈魔剑    时间: 2012-12-22 09:37
本帖最后由 匈魔剑 于 2012-12-22 09:40 编辑

我写了个,插到main前就可以。
你可以参考着改改
59行是改颜色。
31和43行是改坐标。
使用时,直接在事件脚本里写cheng(角色编号, 称号)就可以了。
如果写cheng(角色编号, “”)或者cheng(角色编号, nil),就是删除这个角色的称号
范例:
http://pan.baidu.com/share/link?shareid=168975&uk=738612603&third=0
  1. # 存储称号的全局变量
  2. $TitleName=[]


  3. class Interpreter
  4.   # 变更称号方法
  5.   def cheng(num, name)
  6.     if name!=nil && name!=""
  7.       $TitleName[num]=name
  8.     else
  9.       $TitleName[num]=nil
  10.     end
  11.   end
  12. end


  13. #==============================================================================
  14. # ■ Window_MenuStatus
  15. #==============================================================================
  16. class Window_MenuStatus < Window_Selectable
  17.   alias ori_refresh refresh
  18.   #--------------------------------------------------------------------------
  19.   # ● 刷新
  20.   #--------------------------------------------------------------------------
  21.   def refresh
  22.     ori_refresh
  23.     for i in 0...$game_party.actors.size
  24.       x = 64
  25.       y = i * 116
  26.       actor = $game_party.actors[i]
  27.       draw_actor_titleName(actor, x + 236, y)
  28.     end
  29.   end  
  30. end

  31. #==============================================================================
  32. # ■ Window_Status
  33. #==============================================================================
  34. class Window_Status < Window_Base
  35.   alias ori_refresh refresh
  36.   def refresh
  37.     ori_refresh
  38.     draw_actor_titleName(@actor, 4 + 236, 0)
  39.   end
  40. end

  41. #==============================================================================
  42. # ■ Window_Base
  43. #==============================================================================
  44. class Window_Base < Window
  45.   #--------------------------------------------------------------------------
  46.   # ● 称号的描绘
  47.   #     actor : 角色
  48.   #     x     : 描画目标 X 坐标
  49.   #     y     : 描画目标 Y 坐标
  50.   #--------------------------------------------------------------------------
  51.   def draw_actor_titleName(actor, x, y)
  52.     #self.contents.font.color = normal_color
  53.     self.contents.font.color = Color.new(255,155,155,255)
  54.     tname = $TitleName[actor.actor_id]
  55.     tname = "" if tname==nil
  56.     self.contents.draw_text(x, y, 236, 32, tname)
  57.   end
  58. end

  59. #==============================================================================
  60. # ■ Game_Actor
  61. #==============================================================================
  62. class Game_Actor < Game_Battler
  63.   attr_reader   :actor_id                     # id
  64. end

  65. #==============================================================================
  66. # ■ Scene_Save
  67. #==============================================================================
  68. class Scene_Save < Scene_File
  69.   alias ori_sd write_save_data
  70.   def write_save_data(file)
  71.     ori_sd(file)
  72.     Marshal.dump($TitleName, file)
  73.   end
  74. end

  75. #==============================================================================
  76. # ■ Scene_Load
  77. #==============================================================================
  78. class Scene_Load < Scene_File
  79.   alias ori_rd read_save_data
  80.   def read_save_data(file)
  81.     ori_rd(file)
  82.     $TitleName        = Marshal.load(file)
  83.   end
  84. end
复制代码

作者: 美丽晨露    时间: 2012-12-22 10:36
匈魔剑 发表于 2012-12-22 09:37
我写了个,插到main前就可以。
你可以参考着改改
59行是改颜色。

非常感谢
这样的效果还算不错。




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