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

Project1

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

[已经解决] 关于NPC头顶显示文字

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
312 小时
注册时间
2014-2-28
帖子
914
跳转到指定楼层
发表于 2014-5-4 17:52:29 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
我找到一个但是提示错误,搜了很多都搜不到,求高人给一个正解!

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
由于我不服H·H·Y大触事件满于是他让我的事件也调满于是我照着做了结果那货居然把事件调低了……结果我现在原稿找不回来了只好保持着事件满的状态在大家面前闹笑话擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦擦

Lv2.观梦者

梦石
0
星屑
549
在线时间
59 小时
注册时间
2017-11-19
帖子
71
3
发表于 2017-11-19 13:39:44 | 只看该作者

感谢,不过怎么设置名字出现时间呀?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22948
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2014-5-4 23:58:39 | 只看该作者
本帖最后由 tseyik 于 2014-5-5 00:02 编辑

這個也可以(一様是tomoaky的脚本)
  1. #==============================================================================
  2. # ★ RGSS3_村人のつぶやき Ver0.11a
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記は閉鎖しました。 (http://hikimoki.sakura.ne.jp/)

  7. キャラクターの頭上にフキダシメッセージを表示します。

  8. イベント名、あるいは実行内容の先頭に注釈コマンドでメッセージを設定します。
  9.   <mrbt 少年>
  10.     メッセージタイプを 少年 に設定します、メッセージタイプは
  11.     自由に編集、追加することができます。
  12.    
  13.   イベントコマンドのスクリプトを使い、手動でメッセージを表示することもできます。
  14.   mrbt(0, "動き理解した?")
  15.     最初の数値でメッセージを表示するイベントを指定してください、
  16.     0 で実行中のイベント、-1 でプレイヤー、1 以上でそのIDのイベントが対象です。
  17.    
  18. メッセージには以下の制御文字が利用できます、内容は文章の表示コマンドと同様です。
  19.   \V[1] / \N[1] / \P / \C[2] / \G
  20.   上記以外に \L で手動での改行が可能です。
  21.   
  22. 注意事項
  23.   イベント名と注釈コマンドの両方でメッセージタイプを指定した場合は
  24.   注釈コマンドが優先されます。注釈コマンドでの指定がないイベントページでのみ
  25.   イベント名による指定が有効になります。

  26. 動作に必要な画像
  27.   Graphics/System/mrbt_window.png
  28.   
  29. 2013.08.27  Ver0.11a
  30.   出現条件を満たしていないイベントがあるとエラー落ちする不具合を修正
  31.   
  32. 2013.08.20 Ver0.1a
  33.   公開

  34. =end

  35. #==============================================================================
  36. # ■ 設定項目
  37. #==============================================================================
  38. module TMMRBT
  39.   FONT_SIZE = 16                  # フォントサイズ
  40.   BACK_OPACITY = 192              # つぶやきウィンドウの不透明度
  41.   MESSAGE_DURATION = 240          # つぶやきの表示時間(フレーム)
  42.   
  43.   MIN_INTERVAL = 180              # 次のつぶやきまでの最小間隔(フレーム)
  44.   MAX_INTERVAL = 360              # 次のつぶやきまでの最大間隔(フレーム)
  45.   
  46.   # メッセージタイプの設定
  47.   # メッセージは '' で囲み、カンマで区切って必要な数だけ設定します
  48.   DATABASE = {}
  49.   DATABASE["少年"] = ['わーい!', '\C[2]動き\C[0]理解した?', '\N[1]さん!\Lこんにちは!']
  50.   DATABASE["盗賊"] = ['げへへへ', 'ひゃっはーー!!']
  51. end

  52. #==============================================================================
  53. # ■ Game_Character
  54. #==============================================================================
  55. class Game_Character
  56.   #--------------------------------------------------------------------------
  57.   # ○ 現在のつぶやき内容を返す
  58.   #--------------------------------------------------------------------------
  59.   def mrbt
  60.     @mrbt
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ○ つぶやきをセット
  64.   #--------------------------------------------------------------------------
  65.   def set_mrbt(text)
  66.     @mrbt = text
  67.   end
  68. end

  69. #==============================================================================
  70. # ■ Game_Event
  71. #==============================================================================
  72. class Game_Event
  73.   #--------------------------------------------------------------------------
  74.   # ● イベントページの設定をセットアップ
  75.   #--------------------------------------------------------------------------
  76.   alias tmmrbt_game_event_setup_page_settings setup_page_settings
  77.   def setup_page_settings
  78.     tmmrbt_game_event_setup_page_settings
  79.     set_next_mrbt_count
  80.     @mrbt_type = /<mrbt\s+(\S+?)>/i =~ @event.name ? $1 : nil
  81.     if @list
  82.       @list.each do |list|
  83.         if list.code == 108 || list.code == 408
  84.           @mrbt_type = $1 if /<mrbt\s+(\S+?)>/i =~ list.parameters[0]
  85.         else
  86.           break
  87.         end
  88.       end
  89.     else
  90.       @mrbt = nil
  91.     end
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● フレーム更新
  95.   #--------------------------------------------------------------------------
  96.   def update
  97.     super
  98.     update_mrbt
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ○ つぶやきの更新
  102.   #--------------------------------------------------------------------------
  103.   def update_mrbt
  104.     if @mrbt_count && @mrbt_count > 0
  105.       @mrbt_count -= 1
  106.       if @mrbt_count == 0
  107.         set_mrbt(get_random_mrbt)
  108.         set_next_mrbt_count
  109.       end
  110.     end
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ○ ランダムつぶやきの内容取得
  114.   #--------------------------------------------------------------------------
  115.   def get_random_mrbt
  116.     return nil unless @mrbt_type && TMMRBT::DATABASE[@mrbt_type]
  117.     TMMRBT::DATABASE[@mrbt_type][rand(TMMRBT::DATABASE[@mrbt_type].size)].clone
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ○ ランダムつぶやきの待機時間をセット
  121.   #--------------------------------------------------------------------------
  122.   def set_next_mrbt_count
  123.     n = rand([TMMRBT::MAX_INTERVAL - TMMRBT::MIN_INTERVAL, 1].max)
  124.     @mrbt_count = TMMRBT::MIN_INTERVAL + n
  125.   end
  126. end

  127. #==============================================================================
  128. # ■ Game_Interpreter
  129. #==============================================================================
  130. class Game_Interpreter
  131.   #--------------------------------------------------------------------------
  132.   # ● 指定したIDのイベントにつぶやきを強制
  133.   #--------------------------------------------------------------------------
  134.   def mrbt(id, text)
  135.     event = $game_map.interpreter.get_character(id)
  136.     event.set_mrbt(text) if event
  137.   end
  138. end

  139. #==============================================================================
  140. # ■ Sprite_Character
  141. #==============================================================================
  142. class Sprite_Character
  143.   #--------------------------------------------------------------------------
  144.   # ● オブジェクト初期化
  145.   #     viewport  : ビューポート
  146.   #     character : キャラクター (Game_Character)
  147.   #--------------------------------------------------------------------------
  148.   alias tmmrbt_sprite_character_initialize initialize
  149.   def initialize(viewport, character = nil)
  150.     @bitmap_mrbt = Cache.system("mrbt_window")
  151.     @mrbt_duration = 0
  152.     tmmrbt_sprite_character_initialize(viewport, character)
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 解放
  156.   #--------------------------------------------------------------------------
  157.   alias tmmrbt_sprite_character_dispose dispose
  158.   def dispose
  159.     dispose_mrbt
  160.     tmmrbt_sprite_character_dispose
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ○ フキダシメッセージの解放
  164.   #--------------------------------------------------------------------------
  165.   def dispose_mrbt
  166.     if @mrbt_sprite
  167.       @mrbt_sprite.bitmap.dispose if @mrbt_sprite.bitmap
  168.       @mrbt_sprite.dispose
  169.       @mrbt_sprite = nil
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● その他の更新
  174.   #--------------------------------------------------------------------------
  175.   alias tmmrbt_sprite_character_update_other update_other
  176.   def update_other
  177.     tmmrbt_sprite_character_update_other
  178.     update_mrbt
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ○ フキダシメッセージの更新
  182.   #--------------------------------------------------------------------------
  183.   def update_mrbt
  184.     if @mrbt_duration > 0
  185.       @mrbt_duration -= 1
  186.       if @mrbt_duration == 0
  187.         @character.set_mrbt(nil)
  188.       else
  189.         @mrbt_sprite.x = x
  190.         @mrbt_sprite.y = y - height
  191.         @mrbt_sprite.opacity = @mrbt_duration * 24
  192.       end
  193.     end
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 新しいエフェクトの設定
  197.   #--------------------------------------------------------------------------
  198.   alias tmmrbt_sprite_character_setup_new_effect setup_new_effect
  199.   def setup_new_effect
  200.     tmmrbt_sprite_character_setup_new_effect
  201.     if @mrbt != @character.mrbt
  202.       @mrbt = @character.mrbt
  203.       start_mrbt(@mrbt)
  204.     end
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ○ 文字色取得
  208.   #     n : 文字色番号 (0~31)
  209.   #--------------------------------------------------------------------------
  210.   def text_color(n)
  211.     x = (n % 8) * 8
  212.     y = 32 + (n / 8) * 8
  213.     return @bitmap_mrbt.get_pixel(x, y)
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ○ 特殊文字の変換
  217.   #--------------------------------------------------------------------------
  218.   def convert_special_characters(text)
  219.     text.gsub!(/\\/)               { "\e" }
  220.     text.gsub!(/\e\e/)             { "\\" }
  221.     text.gsub!(/\eV\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  222.     text.gsub!(/\eV\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  223.     text.gsub!(/\eN\[([0-9]+)\]/i) { actor_name($1.to_i) }
  224.     text.gsub!(/\eP\[(\d+)\]/i)    { party_member_name($1.to_i) }
  225.     text.gsub!(/\eG/i)             { Vocab::currency_unit }
  226.     text.gsub!(/\eL/i)             { "\x00" }
  227.     text.gsub!(/\eC\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  228.     text
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ○ アクター n 番の名前を取得
  232.   #--------------------------------------------------------------------------
  233.   def actor_name(n)
  234.     actor = n >= 1 ? $game_actors[n] : nil
  235.     actor ? actor.name : ""
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ○ パーティメンバー n 番の名前を取得
  239.   #--------------------------------------------------------------------------
  240.   def party_member_name(n)
  241.     actor = n >= 1 ? $game_party.members[n - 1] : nil
  242.     actor ? actor.name : ""
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ○ フキダシメッセージ表示の開始
  246.   #--------------------------------------------------------------------------
  247.   def start_mrbt(text)
  248.     dispose_mrbt
  249.     return unless text
  250.     @mrbt_duration = TMMRBT::MESSAGE_DURATION
  251.     text = convert_special_characters(text)
  252.     pos = {:x => 4, :y => 0, :width => 0, :line_height => TMMRBT::FONT_SIZE + 4}
  253.     bitmap = Bitmap.new(160, 160)
  254.     bitmap.font.size = TMMRBT::FONT_SIZE
  255.     loop do
  256.       c = text.slice!(/./m)         # 次の文字を取得
  257.       case c
  258.       when nil
  259.         break                           # 描画すべき文字がなければ終了
  260.       when "\x00"                       # 改行
  261.         process_new_line(pos)
  262.       when "\x01"                       # \C[n]  (文字色変更)
  263.         text.sub!(/\[([0-9]+)\]/, "")
  264.         bitmap.font.color = text_color($1.to_i)
  265.       else
  266.         bitmap.draw_text(pos[:x], pos[:y], 40, pos[:line_height], c)
  267.         c_width = bitmap.text_size(c).width
  268.         pos[:x] += c_width
  269.         process_new_line(pos) if pos[:x] >= 140   # 右端にきていれば改行
  270.       end
  271.     end
  272.     w = [pos[:x], pos[:width]].max + 4
  273.     h = pos[:y] + (pos[:x] == 4 ? 0 : pos[:line_height])
  274.     create_mrbt_sprite(w, h)            # フキダシウィンドウのスプライトを作成
  275.     @mrbt_sprite.bitmap.blt(0, 0, bitmap, bitmap.rect)
  276.     bitmap.dispose
  277.     update_mrbt
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ○ 改行の処理
  281.   #--------------------------------------------------------------------------
  282.   def process_new_line(pos)
  283.     pos[:width] = pos[:x] if pos[:width] < pos[:x]
  284.     pos[:x] = 4
  285.     pos[:y] += pos[:line_height]
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   # ○ フキダシウィンドウのスプライトを作成
  289.   #--------------------------------------------------------------------------
  290.   def create_mrbt_sprite(width, height)
  291.     @mrbt_sprite = ::Sprite.new(nil)
  292.     @mrbt_sprite.z = 90
  293.     @mrbt_sprite.ox = width / 2
  294.     @mrbt_sprite.oy = height + 4
  295.     @mrbt_sprite.bitmap = Bitmap.new(width, height + 8)
  296.     rect = Rect.new(0, 0, 8, 8)
  297.     alpha = TMMRBT::BACK_OPACITY
  298.     @mrbt_sprite.bitmap.blt(0, 0, @bitmap_mrbt, rect, alpha)
  299.     rect.x += 8
  300.     @mrbt_sprite.bitmap.blt(width - 8, 0, @bitmap_mrbt, rect, alpha)
  301.     rect.y += 8
  302.     @mrbt_sprite.bitmap.blt(width - 8, height - 8, @bitmap_mrbt, rect, alpha)
  303.     rect.x -= 8
  304.     @mrbt_sprite.bitmap.blt(0, height - 8, @bitmap_mrbt, rect, alpha)
  305.     rect.set(16, 0, 8, 8)
  306.     @mrbt_sprite.bitmap.blt(@mrbt_sprite.ox - 4, height, @bitmap_mrbt, rect, alpha)
  307.     color = @bitmap_mrbt.get_pixel(8, 8)
  308.     color.alpha = alpha
  309.     @mrbt_sprite.bitmap.fill_rect(8, 0, width - 16, height, color)
  310.     @mrbt_sprite.bitmap.fill_rect(0, 8, 8, height - 16, color)
  311.     @mrbt_sprite.bitmap.fill_rect(width - 8, 8, 8, height - 16, color)
  312.   end
  313. end


复制代码
▼ 動作必要画像
放入
Graphics/System/mrbt_window.png

点评

这个貌似功能多很多诶,可用用控制符  发表于 2014-5-5 12:30

评分

参与人数 1星屑 +150 收起 理由
taroxd + 150 塞糖

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

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

开拓者贵宾

1
发表于 2014-5-4 19:54:42 | 只看该作者
  1. #==============================================================================
  2. # ★ RGSS3_ネームポップ Ver1.1
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

  7. 事件里如下命名事件名字
  8. <namepop 文字列>
  9. と記述してください。
  10. イベントキャラクターの頭上に文字列が表示されます。

  11. イベント名で指定した場合はイベント全ページに適用されますが、
  12. 優先度は注釈コマンドの方が高くなっています。

  13. 文字を消したい場合は <namepop none> としてください。

  14. 2011.12.16  Ver1.1
  15.   ・フォントの縁取り不透明度を設定項目に追加

  16. 2011.12.15  Ver1.0
  17.   公開

  18. =end

  19. #==============================================================================
  20. # □ 設定項目
  21. #==============================================================================
  22. module TMNPOP
  23.   FONT_SIZE = 14          # フォントサイズ
  24.   FONT_OUT_ALPHA = 255    # フォントの縁取り不透明度
  25. end

  26. #==============================================================================
  27. # ■ Game_Character
  28. #==============================================================================
  29. class Game_Character
  30.   #--------------------------------------------------------------------------
  31.   # ● 公開インスタンス変数
  32.   #--------------------------------------------------------------------------
  33.   attr_accessor :namepop                  # ポップアップテキスト
  34.   #--------------------------------------------------------------------------
  35. end

  36. #==============================================================================
  37. # ■ Game_Event
  38. #==============================================================================
  39. class Game_Event < Game_Character
  40.   #--------------------------------------------------------------------------
  41.   # ● イベントページの設定をセットアップ
  42.   #--------------------------------------------------------------------------
  43.   alias tmnpop_game_event_setup_page_settings setup_page_settings
  44.   def setup_page_settings
  45.     tmnpop_game_event_setup_page_settings
  46.     if @list
  47.       @namepop = $1 if /<namepop\s*(\S+?)>/i =~ @event.name
  48.       @list.each do |list|
  49.         if list.code == 108 || list.code == 408
  50.           @namepop = $1 if /<namepop\s*(\S+?)>/i =~ list.parameters[0]
  51.         else
  52.           break
  53.         end
  54.       end
  55.     end
  56.   end
  57. end

  58. #==============================================================================
  59. # ■ Sprite_Character
  60. #==============================================================================
  61. class Sprite_Character < Sprite_Base
  62.   #--------------------------------------------------------------------------
  63.   # ● 解放
  64.   #--------------------------------------------------------------------------
  65.   alias tmnpop_sprite_character_dispose dispose
  66.   def dispose
  67.     dispose_namepop
  68.     tmnpop_sprite_character_dispose
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● フレーム更新
  72.   #--------------------------------------------------------------------------
  73.   alias tmnpop_sprite_character_update update
  74.   def update
  75.     tmnpop_sprite_character_update
  76.     update_namepop
  77.     if @character.namepop != @namepop
  78.       @namepop = @character.namepop
  79.       start_namepop
  80.     end
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ○ namepopの開始
  84.   #--------------------------------------------------------------------------
  85.   def start_namepop
  86.     dispose_namepop
  87.     return if @namepop == "none" || @namepop == nil
  88.     @namepop_sprite = ::Sprite.new(viewport)
  89.     h = TMNPOP::FONT_SIZE + 4
  90.     @namepop_sprite.bitmap = Bitmap.new(h * 10, h)
  91.     @namepop_sprite.bitmap.font.size = TMNPOP::FONT_SIZE
  92.     @namepop_sprite.bitmap.font.out_color.alpha = TMNPOP::FONT_OUT_ALPHA
  93.     @namepop_sprite.bitmap.draw_text(0, 0, h * 10, h, @namepop, 1)
  94.     @namepop_sprite.ox = h * 5
  95.     @namepop_sprite.oy = h
  96.     update_namepop
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ○ namepopの更新
  100.   #--------------------------------------------------------------------------
  101.   def update_namepop
  102.     if @namepop_sprite
  103.       @namepop_sprite.x = x
  104.       @namepop_sprite.y = y - height
  105.       @namepop_sprite.z = z + 200
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ○ namepopの解放
  110.   #--------------------------------------------------------------------------
  111.   def dispose_namepop
  112.     if @namepop_sprite
  113.       @namepop_sprite.bitmap.dispose
  114.       @namepop_sprite.dispose
  115.       @namepop_sprite = nil
  116.     end
  117.   end
  118. end


复制代码

点评

就是显示过了,再让它不在显示  发表于 2017-11-19 14:10
怎么让它消除  发表于 2017-11-19 14:01
用法是在事件名里添加<namepop 名字>  发表于 2014-5-4 19:55

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 22:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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