Project1

标题: 请问!有没有VX的对话框的一种脚本 进来看 [打印本页]

作者: canonl    时间: 2009-5-4 11:12
标题: 请问!有没有VX的对话框的一种脚本 进来看
  就是想实现的效果 人物对话的时候 直接显示名字在头像上面 这个图是XP的 现在需要VX的 有吗?我翻了21个多小时的教程 也没找到想要的。。如果有知道的话 给个链接 我自己去拿 谢谢啊~~ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: canonl    时间: 2009-5-4 11:14
顺便再问下 到那里去下载论坛附件 。。。上传了1下图片 忘了复制链接。。找不到了。。只好重新上传。。囧!
作者: 妲己    时间: 2009-5-4 18:03
有是有一个.不过不大好看......作些修改比较好......
基本方法:
显示名字:\w[你的名字].脚本如下:
  1. =begin rdoc

  2. = #037 メッセージ制御文字追加

  3. == 概要
  4. メッセージウィンドウに名前ウィンドウを追加します。左右の表示位置を指定でき、
  5. 内容には制御文字を使用することが出来ます。
  6. また、アイテム・武器・防具の名前を呼び出せるようになります。

  7. == 注記事項
  8. * #008「メッセージバグ修正」#009「アイテム名取り込み対応」を取り込んでいます。
  9.   これらと併用する必要はありません。
  10. * 動作の詳細は下記の[動作について]をご覧下さい。

  11. == このスクリプトの情報
  12. バージョン:: 2.0.0
  13. 対応::       RPGツクールVX
  14. 配布元::     http://quiet-labs.net/s/037/
  15. 作成者::     ユミル ( mailto:[email protected] )
  16. 挿入位置::   [VX] 標準の位置に挿入
  17. 動作条件::   [VX] 特に無し

  18. == 動作について
  19. * メッセージの先頭に「 \w[ (内容) ] 」の形式で入力してください。
  20.   メッセージの表示の際にこの位置に到達すると、名前欄に内容を表示します。
  21.   * 「 \w[\n[1]] 」の用に指定した場合、そのアクターの名前を画面に表示できます。
  22.   * \w もしくは \wl で左に表示、\wr で右側に表示します。
  23.   * メッセージの中で何度でも使用することが出来ます。メッセージの表示中に名前欄を
  24.     変更することも出来ます。
  25. * また、以下の特殊文字を使用できるようになります。
  26.   - \It[n] ID n 番のアイテムの名前に置き換えられます。
  27.   - \We[n] ID n 番の武器の名前に置き換えられます。
  28.   - \Ar[n] ID n 番の防具の名前に置き換えられます。
  29.   * n には半角数字を入力します。
  30.     \It[\v[1]] のように変数で指定することも可能です。
  31. * また、RPGツクールVX の標準スクリプトの以下の不具合を修正します。
  32.   * \G が小文字の時に動作しない不具合。
  33.   * 構文をエスケープできない不具合。(通常「\\G」などと入力した場合、画面には
  34.     「\G」と表示されるべきであるが、不具合により「\G」と同じ動作をしてしまう)
  35. * 英文字は大文字・小文字の区別はありません。
  36. * 特殊文字はメッセージ編集中に表示できるプレビューには反映されませんが、
  37.   ゲーム中での動作時は問題なく反映されます。

  38. ==サポート
  39. * 不具合などがありましたら掲示板で報告していただければ幸いです。
  40. * 設定や組み込みなどで不明な点が有れば掲示板にてお尋ね下さい。

  41. == 更新履歴
  42. [2.0.0]
  43.   更新 : 2008-05-04
  44.   * #008「メッセージバグ修正」を吸収。
  45.   * #009「アイテム名取り込み対応」を吸収。
  46. [1.0.2]
  47.   更新 : 2008-03-06
  48.   * 特殊文字の追加を容易にするために Window_Message#convert_special_characters
  49.     を分割。
  50. [1.0.1]
  51.   更新 : 2008-02-26
  52.   * 戦闘中、名前ウィンドウの位置が上に固定される不具合を修正。
  53.   * 左右位置の設定が有効にならない不具合を修正。
  54. [1.0.0]
  55.   更新 : 2008-01-29
  56.   * 公開。
  57. =end

  58. # このサイトのスクリプトの名前空間。
  59. module QuietLab
  60. end

  61. # このスクリプトの名前空間。
  62. module QuietLab::Script_37
  63.   
  64.   # このスクリプトのバージョンの日付表記。
  65.   Version = 2008_05_04
  66. end

  67. # 名前を表示するクラス。
  68. class QuietLab::Script_37::Window_Name < Window_Base
  69.   
  70.   # ウィンドウに表示する文字列。
  71.   attr_reader :text
  72.   
  73.   # オブジェクトを初期化します。
  74.   def initialize(x = 0, y = 0)
  75.     super(x, y, 160, WLH + 32)
  76.     @text = ""
  77.     refresh
  78.   end
  79.   
  80.   # 内容を再描画します。
  81.   def refresh
  82.     self.contents.clear
  83.     self.contents.draw_text(4, 0, self.width - 32 - 8, WLH, @text)
  84.     self.open if @text != ""
  85.   end
  86.   
  87.   # 表示する文字列を設定します。位置は [ 0:左, 2:右 ] です。
  88.   def set_text(pos, val)
  89.     @text = val
  90.     self.x = (pos == 2 ? 544 - self.width : 0)
  91.     refresh
  92.   end
  93. end

  94. # メッセージウィンドウのクラス。
  95. class Window_Message
  96.   
  97.   #-- alias 定義
  98.   # 判別のため、メソッド名末尾に _by_QuietLab37 を付加します。
  99.   #++
  100.   alias :initialize_by_QuietLab37         :initialize
  101.   alias :dispose_by_QuietLab37            :dispose
  102.   alias :update_by_QuietLab37             :update
  103.   alias :create_gold_window_by_QuietLab37 :create_gold_window
  104.   alias :start_message_by_QuietLab37      :start_message
  105.   alias :reset_window_by_QuietLab37       :reset_window
  106.   alias :terminate_message_by_QuietLab37  :terminate_message
  107.   alias :update_message_by_QuietLab37     :update_message
  108.   
  109.   # オブジェクトを初期化します。
  110.   def initialize
  111.     initialize_by_QuietLab37
  112.     create_name_window
  113.   end
  114.   
  115.   # 使用しているウィンドウ・スプライトを解放します。
  116.   def dispose
  117.     dispose_by_QuietLab37
  118.     dispose_name_window
  119.   end
  120.   
  121.   # ウィンドウを更新します。
  122.   def update
  123.     update_name_window
  124.     update_by_QuietLab37
  125.   end
  126.   
  127.   # ゴールドウィンドウを作成します。
  128.   def create_gold_window
  129.     create_gold_window_by_QuietLab37
  130.     @gold_window.z = self.z + 1
  131.   end
  132.   
  133.   # メッセージの表示処理を開始します。
  134.   def start_message
  135.     @name_window.close
  136.     start_message_by_QuietLab37
  137.   end
  138.   
  139.   # ウィンドウの状態をリセットします。
  140.   def reset_window
  141.     reset_window_by_QuietLab37
  142.     if @position == 0
  143.       self.y = 24
  144.       @gold_window.y = -16
  145.     end
  146.     reset_name_window
  147.   end
  148.   
  149.   # 発言者ウィンドウの位置をリセットします。
  150.   def reset_name_window
  151.     @name_window.opacity = self.opacity
  152.     @name_window.y = self.y - 40
  153.   end
  154.   
  155.   # メッセージの表示処理を終了します。
  156.   def terminate_message
  157.     terminate_message_by_QuietLab37
  158.     @name_window.close
  159.   end
  160.   
  161.   # メッセージの内容を更新します。
  162.   def update_message
  163.     loop do
  164.       case @text.slice(/./m)
  165.       when "\x0a"
  166.         @text.sub!(/\x0a\[(.*?)\]/, "")
  167.         @name_window.set_text(0, $1)
  168.       when "\x0b"
  169.         @text.sub!(/\x0b\[(.*?)\]/, "")
  170.         @name_window.set_text(2, $1)
  171.       else
  172.         break
  173.       end
  174.       break unless @show_fast or @line_show_fast
  175.     end
  176.     update_message_by_QuietLab37
  177.   end
  178.   
  179.   # 発言者ウィンドウを作成します。
  180.   def create_name_window
  181.     @name_window = QuietLab::Script_37::Window_Name.new
  182.     @name_window.openness = 0
  183.     @name_window.z = self.z + 1
  184.   end
  185.   
  186.   # 発言者ウィンドウを解放します。
  187.   def dispose_name_window
  188.     @name_window.dispose
  189.   end
  190.   
  191.   # 発言者ウィンドウを更新します。
  192.   def update_name_window
  193.     @name_window.update
  194.   end
  195.   
  196.   # 表示する内容に含まれる特殊文字を変換します。
  197.   # このメソッドは分割されており、ここではエスケープの置き換えを行います。
  198.   def convert_special_characters
  199.     @text.gsub!(/\\\\/) { "\x7f" }
  200.     convert_special_characters_main
  201.     @text.gsub!(/\x7f/) { "\\" }
  202.   end
  203.   
  204.   # 表示する内容に含まれる特殊文字を変換します。
  205.   # このメソッドは分割されており、ここではエディタ標準の制御文字の置き換えを
  206.   # 行います。
  207.   def convert_special_characters_system
  208.     @text.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
  209.     @text.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
  210.     @text.gsub!(/\\N\[(\d+)\]/i) { $game_actors[$1.to_i].name }
  211.     @text.gsub!(/\\C\[(\d+)\]/i) { "\x01[#{$1}]" }
  212.     @text.gsub!(/\\G/i)          { "\x02" }
  213.     @text.gsub!(/\\\./)          { "\x03" }
  214.     @text.gsub!(/\\\|/)          { "\x04" }
  215.     @text.gsub!(/\\!/)           { "\x05" }
  216.     @text.gsub!(/\\>/)           { "\x06" }
  217.     @text.gsub!(/\\</)           { "\x07" }
  218.     @text.gsub!(/\\\^/)          { "\x08" }
  219.   end
  220.   
  221.   # 表示する内容に含まれる特殊文字を変換します。
  222.   # このメソッドは分割されており、ここでは文字の置き換えを行うメソッドを
  223.   # 呼び出します。
  224.   def convert_special_characters_main
  225.     convert_special_characters_system
  226.     convert_special_characters_item
  227.     convert_special_characters_name
  228.   end
  229.   
  230.   # 表示する内容に含まれる特殊文字を変換します。
  231.   # このメソッドは分割されており、ここではこのスクリプトで追加された
  232.   # アイテム関連の制御文字の置き換えを行います。
  233.   def convert_special_characters_item
  234.     @text.gsub!(/\\It\[(\d+)\]/i) do
  235.       $data_items[$1.to_i].nil? ? "" : $data_items[$1.to_i].name
  236.     end
  237.     @text.gsub!(/\\We\[(\d+)\]/i) do
  238.       $data_weapons[$1.to_i].nil? ? "" : $data_weapons[$1.to_i].name
  239.     end
  240.     @text.gsub!(/\\Ar\[(\d+)\]/i) do
  241.       $data_armors[$1.to_i].nil? ? "" : $data_armors[$1.to_i].name
  242.     end
  243.   end
  244.   
  245.   # 表示する内容に含まれる特殊文字を変換します。
  246.   # このメソッドは分割されており、ここではこのスクリプトで追加された
  247.   # 名前ウィンドウ関連の制御文字の置き換えを行います。
  248.   def convert_special_characters_name
  249.     @text.gsub!(/\\WR\[(.*?)\]/i)   { "\x0b[#{$1}]" }
  250.     @text.gsub!(/\\WL?\[(.*?)\]/i)  { "\x0a[#{$1}]" }
  251.   end
  252. end

  253. # 戦闘中に使用されるメッセージウィンドウのクラス。
  254. class Window_BattleMessage
  255.   
  256.   #-- alias 定義
  257.   # 判別のため、メソッド名末尾に _by_QuietLab37 を付加します。
  258.   #++
  259.   alias :reset_window_by_QuietLab37 :reset_window
  260.   
  261.   # ウィンドウの状態をリセットします。
  262.   def reset_window
  263.     reset_window_by_QuietLab37
  264.     reset_name_window
  265.   end
  266. end

  267. # QuietLab ScriptFormat v1.20
复制代码

效果图:

个人觉得...还是用VX呼出对话框好看些.就是偶有小冲突...... [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: PAME    时间: 2009-5-4 18:34
我觉的还是事先做在图片上好 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 妲己    时间: 2009-5-4 18:57
同感.使用自己制作的对话框美......
作者: 雪流星    时间: 2009-5-4 19:49
地球村搜索關鍵字「ATS」
作者: canonl    时间: 2009-5-4 21:59
谢谢各位 谢谢妲己,,我是脚本白痴,这个太难了点。。 。。不过做在图片上倒是可以试试 - -
作者: 妲己    时间: 2009-5-4 22:18
这个脚本很简单哪.其他的不用管.只要根据需要在对话里写:\w[名字]今天天气不错~~~这种类型的就行了{/cy}
作者: canonl    时间: 2009-5-4 23:16
最后还是自己制作了图片 哈哈 果然很美 而且还不用输命令。。直接上图就OK 谢谢~!
作者: canonl    时间: 2009-5-4 23:18
老规矩,只要帮忙的人都有分。。大部分的分给最后采用了的人 谢谢




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