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

Project1

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

[已经解决] VA中,如何在对话中显示N号队员的昵称

[复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
43 小时
注册时间
2013-7-29
帖子
6
跳转到指定楼层
发表于 2014-6-23 00:39:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
每个角色设置一个名字,还有一个昵称,可是如何在对话中显示N号队员的昵称

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

7
发表于 2014-6-26 20:40:01 | 只看该作者
  1. class Game_Actor
  2.   attr_accessor :cnickname
  3.   alias cnickname_setup setup
  4.   def setup(actor_id)
  5.     cnickname_setup(actor_id)
  6.     @cnickname = actor.cnickname
  7.   end
  8. end
  9. class RPG::Actor < RPG::BaseItem
  10.   def cnickname
  11.     @note.each_line do |l|
  12.       case l
  13.       when /\<nickname ([\w\W]+)\>/i
  14.         return $1
  15.       end
  16.     end
  17.     return ""
  18.   end
  19. end
  20. #==============================================================================
  21. # ■ Window_Base
  22. #------------------------------------------------------------------------------
  23. #  游戏中所有窗口的父类
  24. #==============================================================================

  25. class Window_Base < Window
  26.   #--------------------------------------------------------------------------
  27.   # ● 进行控制符的事前变换
  28.   #    在实际绘制前、将控制符替换为实际的内容。
  29.   #    为了减少歧异,文字「\」会被首先替换为转义符(\e)。
  30.   #--------------------------------------------------------------------------
  31.   alias cnick_name_convert_escape_characters convert_escape_characters
  32.   def convert_escape_characters(text)
  33.     cnick_name_convert_escape_characters(text).gsub!(/\eK\[(\d+)\]/i){ $game_actors[$1.to_i].cnickname}
  34.   end
  35. end
复制代码
在显示文章里用\k[n]来显示n号角色的昵称,昵称在角色的备注栏里设置,游戏中使用事件脚本$game_actors[n].cnickname = "xxx"来设置n号角色的昵称为xxx
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
23068
在线时间
8648 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2014-6-24 21:25:03 | 只看该作者
mymiao2012 发表于 2014-6-24 19:19
我不要显示称号,而是显示自定义的昵称,最好是在数据库里给每个角色加个昵称 ...

#==============================================================================
# □ 二つ名拡張 (for VX Ace)
#------------------------------------------------------------------------------
# Version : 1_20120112
# by サリサ・タイクーン
# http://www.tycoon812.com/rgss/
#==============================================================================

#==============================================================================
# □ 素材スイッチ
#==============================================================================
$rgsslab = {} if $rgsslab == nil
$rgsslab["二つ名拡張"] = true

if $rgsslab["二つ名拡張"]

#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module RGSSLAB end
module RGSSLAB::NickName_Extension
  #--------------------------------------------------------------------------
  # ○ 二つ名拡張設定
  #    アクターの二つ名を設定します。
  #
  #    通常は、データベースで設定された二つ名が使われますが
  #    イベントコマンドのスクリプトの操作で変更する際に
  #    ここで指定したものを選択する事ができるようになります。
  #
  #    ・設定方法
  #     アクターID => ["二つ名", …],
  #    (最後の設定のみ、後ろのカンマを省略する事ができます)
  #--------------------------------------------------------------------------
  EXTENSION = {
   1 => ["サンプルヒーロー", "VX Ace主人公", "ラルフ2世", "アルシェス3世"],
  }
  #--------------------------------------------------------------------------
  # ○ ランダム機能
  #    trueにすると、EXTENSIONと現在の二つ名(デフォルト)の内
  #    ランダムに選択するようになります。
  #    (二つ名が表示されている箇所にて、表示する度にランダムで選ばれます)
  #
  #    ・イベントコマンドのスクリプトでの変更方法
  #     $game_actors[アクターID].random_nickname_flag = true/false
  #--------------------------------------------------------------------------
  RANDOM = true
end

# カスタマイズポイントは、ここまで

#==============================================================================
# □ RGSSLAB::NickName_Extension [module]
#==============================================================================
module RGSSLAB::NickName_Extension
  #--------------------------------------------------------------------------
  # ○ 素材設定用の定数定義
  #--------------------------------------------------------------------------
  MATERIAL_NAME = "二つ名拡張"
  VERSION       = 1
  RELEASE       = 20120112
end

#==============================================================================
# ■ Game_Actor [class]
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ○ モジュールの設定
  #--------------------------------------------------------------------------
  RGSSLAB_105 = RGSSLAB::NickName_Extension
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :use_nickname
  attr_accessor :random_nickname_flag
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化 [エイリアス]
  #     actor_id : アクターID
  #--------------------------------------------------------------------------
  alias nickname_extension_initialize initialize
  def initialize(actor_id)
    nickname_extension_initialize(actor_id)
    @use_nickname         = nil
    @random_nickname_flag = RGSSLAB_105::RANDOM
  end
  #--------------------------------------------------------------------------
  # ○ 二つ名の取得 [再定義]
  #--------------------------------------------------------------------------
  def nickname
    if @random_nickname_flag
      return @nickname if RGSSLAB_105::EXTENSION[@actor_id] == nil
      n = rand(RGSSLAB_105::EXTENSION[@actor_id].size + 1)
      return @nickname if RGSSLAB_105::EXTENSION[@actor_id][n] == nil
      return RGSSLAB_105::EXTENSION[@actor_id][n]
    end
    return @nickname if @use_nickname == nil
    result = @nickname
    if RGSSLAB_105::EXTENSION[@actor_id]
      if RGSSLAB_105::EXTENSION[@actor_id][@use_nickname]
        result = RGSSLAB_105::EXTENSION[@actor_id][@use_nickname]
      end
    end
    return result
  end
end

end

点评

只有二個設定(隨機和設定角色的二の名),不難巴  发表于 2014-6-24 22:27
楼主需要谷歌翻译......  发表于 2014-6-24 21:42
你怎么什么乱七八糟的脚本都有……and 你确定楼主看得懂使用方式吗?  发表于 2014-6-24 21:31

评分

参与人数 1星屑 +200 收起 理由
taroxd + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
43 小时
注册时间
2013-7-29
帖子
6
5
 楼主| 发表于 2014-6-24 19:19:02 | 只看该作者
VIPArcher 发表于 2014-6-23 02:06
楼主这个帖子你怎么看

可以做到,只要改一点点脚本。

我不要显示称号,而是显示自定义的昵称,最好是在数据库里给每个角色加个昵称

点评

那个称号可以当成昵称使用 啊~喂!  发表于 2014-6-24 19:58
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10104
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

4
发表于 2014-6-23 02:06:24 | 只看该作者
本帖最后由 VIPArcher 于 2014-6-24 21:36 编辑

那个称号不能当昵称用吗?

点评

已测试!!  发表于 2014-6-23 02:08

评分

参与人数 1星屑 +15 收起 理由
Mr.Jin + 15

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

3
发表于 2014-6-23 02:03:06 | 只看该作者
本帖最后由 moy 于 2014-6-23 08:38 编辑
已过时

点评

moy
我完全没有想过那玩意叫啥(捶地  发表于 2014-6-23 08:37
是啊是啊  发表于 2014-6-23 08:35
moy
有吗,咦,有吗,啊咧,难道是那个称号一样的东西  发表于 2014-6-23 08:34
nickname在数据库有设置的啊喂  发表于 2014-6-23 05:40
moy
不过我没测试- -  发表于 2014-6-23 02:05
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10104
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-6-23 01:27:32 | 只看该作者
本帖最后由 VIPArcher 于 2014-6-24 21:43 编辑

可以做到,只要改一点点脚本。
在脚本Window_Base里233行左右插入
RUBY 代码复制
  1. result.gsub!(/\eS\[(\d+)\]/i) { actor_nickname($1.to_i) }
  2.     result.gsub!(/\eM\[(\d+)\]/i) { party_member_nickname($1.to_i) }

在下面几行插入
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取第 n 号角色的称号
  3.   #--------------------------------------------------------------------------
  4.   def actor_nickname(n)
  5.     actor = n >= 1 ? $game_actors[n] : nil
  6.     actor ? actor.nickname : ""
  7.   end
  8.   #--------------------------------------------------------------------------
  9.   # ● 获取第 n 号队伍成员的称号
  10.   #--------------------------------------------------------------------------
  11.   def party_member_nickname(n)
  12.     actor = n >= 1 ? $game_party.members[n - 1] : nil
  13.     actor ? actor.nickname : ""
  14.   end

然后就可以在对话中使用\S[x]获取第X号角色的称号;\M[x]获取第X号队员的称号~\(≧▽≦)/~啦啦啦
可喜可贺,可喜可贺!

评分

参与人数 1星屑 +10 收起 理由
Sion + 10 已合并

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
23068
在线时间
8648 小时
注册时间
2011-12-31
帖子
3367
1
发表于 2014-6-23 00:54:58 | 只看该作者
本帖最后由 tseyik 于 2014-6-23 00:56 编辑

[box=Lime]# \Y[ID]  : IDで指定したアクターの二つ名
# \E[ID]  : IDで指定したエネミーの名前
# \T[ID]  : IDで指定したアイテムの名前
# \W[ID]  : IDで指定した武器の名前
# \A[ID]  : IDで指定した防具の名前
# \S[ID]  : IDで指定したスキルの名前
# \J[ID]  : IDで指定した職業の名前
# \M[ID]  : IDで指定したマップ名
# \R[ID]  : IDで指定した予約語[/box]
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-13 制御文字拡張  [Ver1.0.0]    by Claimh
  3. #------------------------------------------------------------------------------
  4. # メッセージ等で使用できる制御文字を増やします。
  5. #------------------------------------------------------------------------------
  6. # \Y[ID]  : IDで指定したアクターの二つ名
  7. # \E[ID]  : IDで指定したエネミーの名前
  8. # \T[ID]  : IDで指定したアイテムの名前
  9. # \W[ID]  : IDで指定した武器の名前
  10. # \A[ID]  : IDで指定した防具の名前
  11. # \S[ID]  : IDで指定したスキルの名前
  12. # \J[ID]  : IDで指定した職業の名前
  13. # \M[ID]  : IDで指定したマップ名
  14. # \R[ID]  : IDで指定した予約語
  15. #==============================================================================


  16. module ReserveName
  17.   #--------------------------------------------------------------------------
  18.   # ● 予約語取得
  19.   #--------------------------------------------------------------------------
  20.   def self.name(id)
  21.     case id
  22.     when 1; return "予約した言葉"
  23.     when 2; return "Reserved"
  24.     when 3; return $data_system.game_title      # ゲームタイトル
  25.     end
  26.     return ""
  27.   end
  28. end


  29. module MapName
  30.   #--------------------------------------------------------------------------
  31.   # ● マップ名取得
  32.   #--------------------------------------------------------------------------
  33.   def self.name(id)
  34.     return load_data(sprintf("Data/Map%03d.rvdata2", id)).display_name
  35.   end
  36. end




  37. #==============================================================================
  38. # ■ Window_Base
  39. #==============================================================================
  40. class Window_Base < Window
  41.   #--------------------------------------------------------------------------
  42.   # ● 制御文字の事前変換
  43.   #    実際の描画を始める前に、原則として文字列に変わるものだけを置き換える。
  44.   #    文字「\」はエスケープ文字(\e)に変換。
  45.   #--------------------------------------------------------------------------
  46.   alias convert_escape_characters_add convert_escape_characters
  47.   def convert_escape_characters(text)
  48.     result = convert_escape_characters_add(text)
  49.     result.gsub!(/\eY\[(\d+)\]/i) { $game_actors[$1.to_i].nickname }
  50.     result.gsub!(/\eE\[(\d+)\]/i) { $data_enemies[$1.to_i].name }
  51.     result.gsub!(/\eT\[(\d+)\]/i) { $data_items[$1.to_i].name }
  52.     result.gsub!(/\eW\[(\d+)\]/i) { $data_weapons[$1.to_i].name }
  53.     result.gsub!(/\eA\[(\d+)\]/i) { $data_armors[$1.to_i].name }
  54.     result.gsub!(/\eS\[(\d+)\]/i) { $data_skills[$1.to_i].name }
  55.     result.gsub!(/\eJ\[(\d+)\]/i) { $data_classes[$1.to_i].name }
  56.     result.gsub!(/\eM\[(\d+)\]/i) { MapName.name($1.to_i) }
  57.     result.gsub!(/\eR\[(\d+)\]/i) { ReserveName.name($1.to_i) }
  58.     result
  59.   end
  60. end

复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 10:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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