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

Project1

 找回密码
 注册会员
搜索
查看: 4472|回复: 23

[原创发布] 【小天搬运】RMXP、VX的几个脚本。

[复制链接]

Lv2.观梦者

梦石
0
星屑
531
在线时间
127 小时
注册时间
2013-2-16
帖子
428
发表于 2013-4-30 19:03:06 | 显示全部楼层 |阅读模式

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

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

x
前言                                                                                                                                                                                                     
自从来到66rpg,就没有对这个站带来多大的贡献,于是今天我看到了一个RPG脚本日站,发现里面有很多66里没有的脚
本,所以就把他们的脚本借鉴一下。
然后呢,我想把这些脚本分享给大家使用,有些字翻译的不对,望多多原谅!
我终于上传完成了,一共用了1个多小时,大家不表示表示吗?@eve592370698 @guaneva @Mic_洛洛 @protosssonny @后知后觉 @失落迷白 @小小刀886
XP脚本                                                                                             脚本                                                                                                
1显示气球消息               √      
介绍:卡通气球消息窗口显示。
 我有自动调整大小和字符以下功能。
2、显示气球对话                √     
介绍:尽可能加装任何消息窗口几乎
 显示气球。
 功能依赖于消息显示系统结合使用的脚本。
3、图形变化几许           √         
介绍:要执行任何关键的冲刺移动,
 你可以改变的第一个字符的图形划线时间。
4、武器技能                     √      
介绍:限制可用的技能,每种类型的武器装备。
5、8运动图形变化         √          
介绍:它使8方向移动的同时按下左右键和向上和向下箭头键,
 你可以改变的第一个字符的图形对角线移动时。
6、中断保存                           
介绍:这是一个功能来结束暂时存储的数据播放。
 重新启动中断的数据可以从标题画面,
 然后消失,一旦恢复。
7、状态显示增加                     
介绍:“状态全部名称显示”,“巴特勒/图形显示图片” 三件套“类名隐藏”。
8、活动时间战斗                     
介绍:继续加点(CT)是基于巴特勒实时的速度,战斗形式从巴特勒CT计行事积累。   
9、基于自定义窗口                 
介绍:修改的背景和文字颜色的窗口平铺。   
10、一块画面的背景                
介绍:通过使用全景,让你可以使用作为背景图像一块图片。
11、伤害个性订制                   
介绍:变的伤害显示的字体。
12、垂直类型的战斗状态         
介绍:是一个独立的状态显示部的活动时间的战斗。   
VX脚本                                                                                                                                                                                                  
13、标题画面订制                   
介绍:改变的菜单或使用,信的标题屏幕上的图像的菜单命令。
14、字体变化                         
介绍:可以更改使用的字体的字符显示。
小天说明                                                                                                                                                                                       
现在什么都弄好了,我会定期更新的,而更新的都会是一些6R里没有的内容,也可能有,但是有点不同。还有我的这个
帖子和图书馆不同,因为我的内容不全面,不整齐等等,只不过是自己搜的一些脚本。谢谢大家使用。
还有,请人来支持一下是必须的!
@sprite @零の使魔 @草莓 @后知后觉 @Mic_洛洛 @失落迷白 @柳之一 @永远の路克酱 @eve592370698 @guaneva @protosssonny @小小刀886 @紫英晓狼 @论坛助理

  
QQ截图20130430204444_副本.png

点评

LBQ
继续吐槽。。这个不叫做原创=-=  发表于 2013-5-1 09:49
LBQ
阁下不要用机器翻译误导大众好不好。。。  发表于 2013-5-1 09:48
LBQ
character=>字符 真的大丈夫?  发表于 2013-5-1 09:48

评分

参与人数 1星屑 +15 收起 理由
紫英晓狼1130 + 15 很好

查看全部评分

小天终于要填个新坑了,这个游戏的名字是《欲望恶魔~游侠传记》
剧情:★☆☆☆☆☆☆☆☆☆
脚本:★☆☆☆☆☆☆☆☆☆
素材:☆☆☆☆☆☆☆☆☆☆
预计明年这一个浩大的工程既可以完工了。。有木有支持的!?制作工具:RMVA

Lv2.观梦者

梦石
0
星屑
531
在线时间
127 小时
注册时间
2013-2-16
帖子
428
 楼主| 发表于 2013-4-30 19:08:48 | 显示全部楼层
本帖最后由 1142881837 于 2013-4-30 19:13 编辑

1、显示气球消息                                                           

[摘要]它会自动调整的消息窗口,可以显示您指定的字符上。
还有一个功能,您可以在一个小窗口中显示的字符名称,逐个字符显示一条消息。

[脚本]
RUBY 代码复制
  1. #==============================================================================
  2. # ++ メッセージふきだし表示 ver. 2.01 ++
  3. #  Script by パラ犬
  4. #  [url=http://2d6.parasite.jp/]http://2d6.parasite.jp/[/url]
  5. #------------------------------------------------------------------------------
  6. # ふきだし表示をするには、
  7. # テール用画像「(スキン名)-top」「(スキン名)-under」を
  8. # 「Graphics/Windowskins」フォルダにインポートしておく必要があります。
  9. #------------------------------------------------------------------------------
  10. #
  11. # [ふきだし表示の使い方]
  12. # イベントコマンド「スクリプト」で「$mes_id」にイベントIDを代入することで
  13. # そのイベントにふきだしがポップするようになります。
  14. # (記述例: $mes_id=4 )
  15. # IDに-1を代入するとプレイヤー、0でそのイベント自身。
  16. # nilまたは""を代入すると、通常のメッセージ表示に戻ります。
  17. # 表示位置はイベント「文章オプション」で変更できます。
  18. # 表示位置に「中央」を指定すると、イベントの位置に関係なく
  19. # 画面中央に表示されます。
  20. #
  21. # [名前ウインドウの使い方]
  22. # イベントコマンド「スクリプト」で「$mes_name」に文字列を代入することで
  23. # 名前ウインドウを表示します。
  24. # (記述例: $mes_name="アルシェス" )
  25. # 制御文字 \N[n] を使用する場合、\は\\と記述してください。
  26. # (記述例: $mes_name="\\N[1]"  $mes_name="\\N[\\V[1]]")
  27. # ""またはnilを代入すると、非表示になります。
  28. #
  29. # 二つの機能は独立していますので、それぞれ単体で使えます。
  30. #  $mes_id=(ID) + $mes_name="名前"  :ふきだし表示 + 名前ウインドウ
  31. #  $mes_id=(ID) + $mes_name=""      :ふきだし表示 (名前なし)
  32. #  $mes_id=nil + $mes_name="名前"   :デフォルトウインドウ + 名前ウインドウ
  33. #  $mes_id=nil + $mes_name=""       :デフォルトウインドウ (名前なし)
  34. #
  35. # [メッセージ表示スピードの変更法]
  36. # イベントコマンド「スクリプト」で「$mes_speed」に数値を代入します。
  37. # 0を代入すると瞬間表示になります。
  38. # (記述例: $mes_speed = 1 )
  39. #
  40. # [オートメッセージ送り]
  41. # イベントコマンド「スクリプト」で「$mes_auto」に数値を代入します。
  42. # 数値はメッセージ描画終了後のウエイトのフレーム数です。
  43. # nilを代入すると、オートモードが解除されます。
  44. #
  45. # [追加制御文字]
  46. # \I[ファイル名]   アイコンの描画
  47. #     「Graphics/Icons」内の画像を表示します。( 記述例:\I[001-Weapon01] )
  48. # \S[n]     メッセージスピードの変更
  49. # \size[n]  フォントサイズの変更
  50. #
  51. #==============================================================================
  52.  
  53. module FUKI
  54.  
  55.   # スキンの設定
  56.   # ウインドウスキンと同じものを使うときは「""」
  57.   FUKI_SKIN_NAME = "001-Blue01"   # ふきだし用スキン
  58.   NAME_SKIN_NAME = "001-Blue01"   # 名前表示用スキン
  59.  
  60.   # フォントサイズ
  61.   MES_FONT_SIZE = 22    # ふきだし
  62.   NAME_FONT_SIZE = 14   # 名前ウインドウ
  63.  
  64.   # 文字色
  65.   #( Color.new(0, 0, 0, 0)を指定すると、通常文字色を使用します )
  66.   FUKI_COLOR = Color.new(255, 255, 255, 255)  # ふきだしウインドウ
  67.   NAME_COLOR = Color.new(255, 255, 255, 255)  # 名前ウインドウ
  68.  
  69.   # ウインドウの透明度
  70.   FUKI_OPACITY = 255    # ふきだしウインドウ
  71.   MES_OPACITY = 255     # 通常のメッセージウインドウ
  72.   NAME_OPACITY = 255    # 名前ウインドウ
  73.  
  74.   # 名前ウインドウの相対位置
  75.   NAME_SHIFT_X = 0    # 横位置
  76.   NAME_SHIFT_Y = 16   # 縦位置
  77.  
  78.   # 画面上下からウインドウがはみ出す時は、
  79.   # 自動で表示位置(上下)をチェンジ( true / false )
  80.   POS_FIX = true
  81.  
  82.   # 画面の一番端ではふきだしを少しずらす
  83.   # 角の丸いスキンを使っていて、枠の角がふきだしと重なる場合に true にする
  84.   CORNER_SHIFT = false
  85.   SHIFT_PIXEL = 4   # trueの時にずらすピクセル数
  86.  
  87.   # キャラクターの縦のサイズ
  88.   CHARACTOR_HEIGHT = 48
  89.   # ふきだしの相対位置(縦位置)
  90.   POP_SHIFT_TOP = 0     # 表示位置が上のとき
  91.   POP_SHIFT_UNDER = -16   # 表示位置が下のとき
  92.  
  93.   # メッセージ表示速度(数字が小さいほど速い。0で瞬間表示)
  94.   # $mes_speedに数値を代入することで、ゲーム中に変更可。
  95.   MES_SPEED = 1
  96.  
  97.   # メッセージスキップを使用するか
  98.   MES_SKIP = true     #( true:有効 / false:無効 )
  99.   # メッセージスキップに使うボタン(表記方法は、Input::(ボタン))
  100.   #(キーボードとの対応表はツクールのヘルプ「ゲームの操作方法」にあります)
  101.   MES_SKIP_KEY = Input::A
  102.   # メッセージスキップ禁止イベントスイッチID
  103.   # (イベントコマンド「スイッチの操作」でこの番号のスイッチをONにしている間は
  104.   #  メッセージスキップを機能を無効にします)
  105.   NO_MES_SKIP_SWITCH = 999
  106.  
  107. end
  108.  
  109. #==============================================================================
  110. # ■ Window_Message
  111. #------------------------------------------------------------------------------
  112. #  文章表示に使うメッセージウィンドウです。
  113. #==============================================================================
  114.  
  115. class Window_Message < Window_Selectable
  116.   #--------------------------------------------------------------------------
  117.   # ● オブジェクト初期化
  118.   #--------------------------------------------------------------------------
  119.   alias alias_para_fuki_initialize initialize
  120.   def initialize
  121.     # エイリアスを呼び戻す
  122.     alias_para_fuki_initialize
  123.     # 変数をセット
  124.     [url=home.php?mod=space&uid=133944]@w[/url] = 0
  125.     @h = 0
  126.     [url=home.php?mod=space&uid=36110]@Wait[/url] = 0
  127.     @dx = 0
  128.     @dy = 0
  129.     @dh = 0
  130.     $mes_speed = FUKI::MES_SPEED
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● ウィンドウの位置と不透明度の設定
  134.   #--------------------------------------------------------------------------
  135.   alias alias_para_fuki_reset_window reset_window
  136.   def reset_window
  137.     # エイリアスを呼び戻す
  138.     alias_para_fuki_reset_window
  139.     self.back_opacity = FUKI::MES_OPACITY
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● フレーム更新
  143.   #--------------------------------------------------------------------------
  144.   def update
  145.     super
  146.     # ふきだしモードではイベントの動きに追従
  147.     if @tale != nil
  148.       pos = get_fuki_pos(self.width, self.height)
  149.       self.x = pos[0]
  150.       self.y = pos[1]
  151.       tale_pos = get_tale_pos
  152.       @tale.x = tale_pos[0]
  153.       @tale.y = tale_pos[1]
  154.       if @name_win != nil
  155.         name_height = FUKI::NAME_FONT_SIZE
  156.         @name_win.x = self.x + FUKI::NAME_SHIFT_X
  157.         @name_win.y = self.y - name_height - 16 + FUKI::NAME_SHIFT_Y
  158.         @name_contents.x = @name_win.x + 12
  159.         @name_contents.y = @name_win.y + 8
  160.       end
  161.     end
  162.     # メッセージスキップ
  163.     if mes_skip?
  164.       self.contents_opacity = 255
  165.       if @name_win != nil
  166.         @name_win.opacity = 255
  167.       end
  168.       if @tale != nil
  169.         @tale.opacity = 255
  170.       end
  171.       if @input_number_window != nil
  172.         @input_number_window.contents_opacity = 255
  173.       end
  174.       @fade_in = false
  175.     end
  176.     # フェードインの場合
  177.     if @fade_in
  178.       self.contents_opacity += 24
  179.       if @name_win != nil
  180.         @name_win.opacity += 24
  181.       end
  182.       if @tale != nil
  183.         @tale.opacity += 24
  184.       end
  185.       if @input_number_window != nil
  186.         @input_number_window.contents_opacity += 24
  187.       end
  188.       if self.contents_opacity == 255
  189.         @fade_in = false
  190.       end
  191.       return
  192.     end
  193.     # メッセージ表示中の場合
  194.     if @contents_drawing
  195.         # 一文字ずつ描画
  196.         refresh_drawtext
  197.       return
  198.     end
  199.     # 数値入力中の場合
  200.     if @input_number_window != nil
  201.       @input_number_window.update
  202.       # 決定
  203.       if Input.trigger?(Input::C)
  204.         $game_system.se_play($data_system.decision_se)
  205.         $game_variables[$game_temp.num_input_variable_id] =
  206.           @input_number_window.number
  207.         $game_map.need_refresh = true
  208.         # 数値入力ウィンドウを解放
  209.         @input_number_window.dispose
  210.         @input_number_window = nil
  211.         terminate_message
  212.       end
  213.       return
  214.     end
  215.     # メッセージ表示終了の場合
  216.     if @contents_showing_end
  217.       # メッセージスキップ判定
  218.       if mes_skip?
  219.         # 選択肢の表示中でなければメッセージウインドウを閉じる
  220.         if $game_temp.choice_max == 0
  221.           terminate_message
  222.           # ふきだしを破棄
  223.           del_fukidasi
  224.           return
  225.         end
  226.       end
  227.       # オートモード
  228.       if @mes_auto != nil
  229.         if @mes_auto <= 0
  230.           terminate_message
  231.           # ふきだしを破棄
  232.           del_fukidasi
  233.           @mes_auto = nil
  234.         else
  235.           @mes_auto -= 1
  236.         end
  237.       end
  238.       # 選択肢の表示中でなければポーズサインを表示
  239.       # ふきだしモードでは非表示
  240.       if $game_temp.choice_max == 0 and @tale == nil
  241.         self.pause = true
  242.       else
  243.         self.pause = false
  244.       end
  245.       # キャンセル
  246.       if Input.trigger?(Input::B)
  247.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  248.           $game_system.se_play($data_system.cancel_se)
  249.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  250.           terminate_message
  251.         end
  252.       end
  253.       # 決定
  254.       if Input.trigger?(Input::C) and $mes_auto == nil
  255.         if $game_temp.choice_max > 0
  256.           $game_system.se_play($data_system.decision_se)
  257.           $game_temp.choice_proc.call(self.index)
  258.         end
  259.         terminate_message
  260.         # ふきだしを破棄
  261.         del_fukidasi
  262.       end
  263.       return
  264.     end
  265.     # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
  266.     if @fade_out == false and $game_temp.message_text != nil
  267.       @contents_showing = true
  268.       $game_temp.message_window_showing = true
  269.       reset_window
  270.       refresh_create
  271.       if @name_win != nil
  272.         @name_win.opacity = 0
  273.       end
  274.       if @tale != nil
  275.         @tale.opacity = 0
  276.       end
  277.       Graphics.frame_reset
  278.       self.visible = true
  279.       self.contents_opacity = 0
  280.       if @input_number_window != nil
  281.         @input_number_window.contents_opacity = 0
  282.       end
  283.       @fade_in = true
  284.       @mes_auto = $mes_auto
  285.       return
  286.     end
  287.     # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
  288.     if self.visible
  289.       @fade_out = true
  290.       self.opacity -= 48
  291.       if @name_win != nil
  292.         @name_win.opacity -= 48
  293.       end
  294.       if @tale != nil
  295.         @tale.opacity -= 48
  296.       end
  297.       if self.opacity == 0
  298.         self.visible = false
  299.         @fade_out = false
  300.         $game_temp.message_window_showing = false
  301.         del_fukidasi
  302.       end
  303.       return
  304.     end
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● メッセージ終了処理
  308.   #--------------------------------------------------------------------------
  309.   alias alias_para_fuki_terminate_message terminate_message
  310.   def terminate_message
  311.     # エイリアスを呼び戻す
  312.     alias_para_fuki_terminate_message
  313.     @contents_showing_end = false
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● カーソルの矩形更新
  317.   #--------------------------------------------------------------------------
  318.   def update_cursor_rect
  319.     if @index >= 0
  320.       n = $game_temp.choice_start + @index
  321.       font_size = self.contents.font.size
  322.       self.cursor_rect.set(8, n*(font_size+10)-5, @cursor_width, (font_size+10))
  323.     else
  324.       self.cursor_rect.empty
  325.     end
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ○ メッセージスキップ有効判定
  329.   #--------------------------------------------------------------------------
  330.   def mes_skip?
  331.     if FUKI::MES_SKIP == true and Input.repeat?(FUKI::MES_SKIP_KEY) and $game_switches[FUKI::NO_MES_SKIP_SWITCH] == false
  332.       return true
  333.     else
  334.       return false
  335.     end
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ○ サイズを決定してウインドウを作成
  339.   #--------------------------------------------------------------------------
  340.   def refresh_create
  341.     self.contents.clear
  342.     self.contents.font.color = normal_color
  343.     self.contents.font.size = FUKI::MES_FONT_SIZE
  344.     # ウインドウサイズを取得
  345.     get_windowsize
  346.     w = [url=home.php?mod=space&uid=133944]@w[/url] + 32 + 8
  347.     h = @h + 26
  348.     # ふきだしウインドウを作成
  349.     set_fukidasi(self.x, self.y, w, h)
  350.     # 名前ウインドウを作成
  351.     set_namewindow
  352.     # メッセージ表示用変数の初期化
  353.     @dx = @dy = @dh = @max_font_h = 0
  354.     @cursor_width = 0
  355.     @contents_drawing = true
  356.     # メッセージスピードの初期化
  357.     @mes_speed = $mes_speed
  358.     # フォントサイズの初期化
  359.     self.contents.font.size = FUKI::MES_FONT_SIZE
  360.     @max_font_h = self.contents.font.size
  361.     # 文字描画
  362.     refresh_drawtext
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ○ 一文字ずつ描画
  366.   #--------------------------------------------------------------------------
  367.   def refresh_drawtext
  368.     if $game_temp.message_text != nil
  369.       # メッセージスキップがオンなら
  370.       if mes_skip?
  371.         # 描画が終わるまで描画処理をループ
  372.         while $game_temp.message_text != ""
  373.           draw_massage
  374.         end
  375.       # メッセージスピードが0なら
  376.       elsif @mes_speed == 0
  377.         # 描画が終わるかメッセージスピードが変更されるまで描画処理をループ
  378.         while $game_temp.message_text != "" and @mes_speed == 0
  379.           draw_massage
  380.         end
  381.       else
  382.         if [url=home.php?mod=space&uid=36110]@Wait[/url] > 0
  383.           @wait -= 1
  384.         elsif @wait == 0
  385.           # 描画処理
  386.           draw_massage
  387.           @wait = @mes_speed
  388.         end
  389.       end
  390.     end
  391.     # 描画終了
  392.     if $game_temp.message_text == ""
  393.       draw_opt_text
  394.       @contents_showing_end = true
  395.       @contents_drawing = false
  396.     end
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ○ ウインドウサイズを取得
  400.   #--------------------------------------------------------------------------
  401.   def get_windowsize
  402.     x = y = 0
  403.     @h = @w = 0
  404.     max_font_h = self.contents.font.size
  405.     @cursor_width = 0
  406.     # 選択肢なら字下げを行う
  407.     if $game_temp.choice_start == 0
  408.       x = 16
  409.     end
  410.     # 表示待ちのメッセージがある場合
  411.     if $game_temp.message_text != nil
  412.     text = $game_temp.message_text.clone
  413.       # 制御文字処理
  414.       begin
  415.         last_text = text.clone
  416.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  417.       end until text == last_text
  418.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  419.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  420.       end
  421.       # 便宜上、"\\\\" を "\000" に変換
  422.       text.gsub!(/\\\\/) { "\000" }
  423.       # "\\C" を "\001" に、"\\G" を "\002" に変換
  424.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001" }
  425.       text.gsub!(/\\[Gg]/) { "\002" }
  426.       # "\\I" を "\003" に変換
  427.       text.gsub!(/\\[Ii]\[(.*?)\]/) { "\003[#{$1}]" }
  428.       # "\\S" を "\004" に変換
  429.       text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\004[#{$1}]" }
  430.       # "\\size" を "\005" に変換
  431.       text.gsub!(/\\size\[([0-9]+)\]/) { "\005[#{$1}]" }
  432.       # c に 1 文字を取得 (文字が取得できなくなるまでループ)
  433.       while ((c = text.slice!(/./m)) != nil)
  434.         # \\ の場合
  435.         if c == "\000"
  436.           # 本来の文字に戻す
  437.           c = "\\"
  438.         end
  439.         # \C[n] または \G の場合 または \S[n] のとき
  440.         if c == "\001" or c == "\002" or c == "\004"
  441.           # 次の文字へ
  442.           next
  443.         end
  444.         # 改行文字の場合
  445.         if c == "\n"
  446.           # y に 1 を加算
  447.           y += 1
  448.           # 縦横サイズを取得
  449.           @h += max_font_h + 10
  450.           max_font_h = 0
  451.           @w = x > @w ? x : @w
  452.           if y >= $game_temp.choice_start
  453.             @w = x + 8 > @w ? x + 8 : @w
  454.           end
  455.           x = 0
  456.           # 選択肢なら字下げを行う
  457.           if y >= $game_temp.choice_start
  458.             x = 8
  459.           end
  460.           # 次の文字へ
  461.           next
  462.         end
  463.         # \I[ファイル名] の場合
  464.         if c == "\003"
  465.           text.sub!(/\[(.*?)\]/, "")
  466.           bitmap = RPG::Cache.icon($1)
  467.           # x にアイコンの幅を加算
  468.           x += bitmap.width
  469.           # 次の文字へ
  470.           next
  471.         end
  472.         # \size[n] の場合
  473.         if c == "\005"
  474.           text.sub!(/\[([0-9]+)\]/, "")
  475.           # 文字サイズを変更
  476.           self.contents.font.size = $1.to_i
  477.           # 最大縦幅を取得
  478.           if self.contents.font.size > max_font_h
  479.             max_font_h = self.contents.font.size
  480.           end
  481.         end
  482.         # x に文字の幅を加算
  483.         x += self.contents.text_size(c).width
  484.         # 最大縦幅を取得
  485.         if self.contents.font.size > max_font_h
  486.           max_font_h = self.contents.font.size
  487.         end
  488.       end
  489.     end
  490.     # 文字サイズを戻す
  491.     self.contents.font.size = FUKI::MES_FONT_SIZE
  492.     # 数値入力の場合
  493.     if $game_temp.num_input_variable_id > 0
  494.       digits_max = $game_temp.num_input_digits_max
  495.       number = $game_variables[$game_temp.num_input_variable_id]
  496.       @h += 1
  497.       x = digits_max * self.contents.font.size + 16
  498.       @w = x > @w ? x : @w
  499.     end
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ○ 描画処理
  503.   #--------------------------------------------------------------------------
  504.   def draw_massage
  505.     # 表示待ちのメッセージがある場合
  506.     if $game_temp.message_text != nil
  507.       text = $game_temp.message_text
  508.       # 制御文字処理
  509.       begin
  510.         last_text = text.clone
  511.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  512.       end until text == last_text
  513.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  514.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  515.       end
  516.       # 便宜上、"\\\\" を "\000" に変換
  517.       text.gsub!(/\\\\/) { "\000" }
  518.       # "\\C" を "\001" に、"\\G" を "\002" に変換
  519.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  520.       text.gsub!(/\\[Gg]/) { "\002" }
  521.       # "\\I" を "\003" に変換
  522.       text.gsub!(/\\[Ii]\[(.*?)\]/) { "\003[#{$1}]" }
  523.       # "\\S" を "\004" に変換
  524.       text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\004[#{$1}]" }
  525.       # "\\size" を "\005" に変換
  526.       text.gsub!(/\\size\[([0-9]+)\]/) { "\005[#{$1}]" }
  527.       # c に 1 文字を取得
  528.       if ((c = text.slice!(/./m)) != nil)
  529.         # 選択肢の場合
  530.         if @dy >= $game_temp.choice_start
  531.           # 字下げを行う
  532.           @dx = 8
  533.           # 文字を描画
  534.           font_size = self.contents.font.size
  535.           self.contents.draw_text(4[email protected], @dh, font_size, font_size, c)
  536.           # x に描画した文字の幅を加算
  537.           @dx += self.contents.text_size(c).width
  538.           # ループ
  539.           while ((c = text.slice!(/./m)) != "\n")
  540.             # 文字を描画
  541.             font_size = self.contents.font.size
  542.             self.contents.draw_text(4[email protected], @dh, font_size, font_size, c)
  543.             @max_font_h = font_size
  544.             # x に描画した文字の幅を加算
  545.             @dx += self.contents.text_size(c).width
  546.           end
  547.           if c == "\n"
  548.             # カーソルの幅を更新
  549.             @cursor_width = [@cursor_width, @dx].max
  550.             # フォントの最大の高さを加算
  551.             @dh += @max_font_h + 10
  552.             @max_font_h = self.contents.font.size
  553.             @dx = 0
  554.           end
  555.           return
  556.         end
  557.         # \\ の場合
  558.         if c == "\000"
  559.           # 本来の文字に戻す
  560.           c = "\\"
  561.         end
  562.         # \C[n] の場合
  563.         if c == "\001"
  564.           # 文字色を変更
  565.           text.sub!(/\[([0-9]+)\]/, "")
  566.           color = $1.to_i
  567.           if color >= 0 and color <= 7
  568.             self.contents.font.color = text_color(color)
  569.           end
  570.           return
  571.         end
  572.         # \G の場合
  573.         if c == "\002"
  574.           # ゴールドウィンドウを作成
  575.           if @gold_window == nil
  576.             @gold_window = Window_Gold.new
  577.             @gold_window.x = 560 - @gold_window.width
  578.             if $game_temp.in_battle
  579.               @gold_window.y = 192
  580.             else
  581.               @gold_window.y = self.y >= 128 ? 32 : 384
  582.             end
  583.             @gold_window.opacity = self.opacity
  584.             @gold_window.back_opacity = self.back_opacity
  585.           end
  586.           return
  587.         end
  588.         # 改行文字の場合
  589.         if c == "\n"
  590.           # y に 1 を加算
  591.           @dy += 1
  592.           @dx = 0
  593.           # フォントの最大の高さを加算
  594.           @dh += @max_font_h + 10
  595.           @max_font_h = 0
  596.           return
  597.         end
  598.         # \I[ファイル名] の場合
  599.         if c == "\003"
  600.           text.sub!(/\[(.*?)\]/, "")
  601.           bitmap = RPG::Cache.icon($1)
  602.           font_size = FUKI::MES_FONT_SIZE
  603.           # アイコンを描画
  604.           self.contents.blt(4[email protected], 5[email protected], bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
  605.           # x に描画したアイコンの幅を加算
  606.           @dx += bitmap.width
  607.           # 最大縦幅を取得
  608.           if self.contents.font.size > @max_font_h
  609.             @max_font_h = bitmap.height
  610.           end
  611.           return
  612.         end
  613.         # \S[n] の場合
  614.         if c == "\004"
  615.           text.sub!(/\[([0-9]+)\]/, "")
  616.           # 描画スピードを変更
  617.           @mes_speed = $1.to_i
  618.           return
  619.         end
  620.         # \size[n] の場合
  621.         if c == "\005"
  622.           text.sub!(/\[([0-9]+)\]/, "")
  623.           c = ""
  624.           # 文字サイズを変更
  625.           self.contents.font.size = $1.to_i
  626.         end
  627.         # 文字を描画
  628.         font_size = self.contents.font.size
  629.         self.contents.draw_text(4[email protected], @dh, font_size, font_size, c)
  630.         # x に描画した文字の幅を加算
  631.         @dx += self.contents.text_size(c).width
  632.         # 文字の最大縦幅を取得
  633.         if self.contents.font.size > @max_font_h
  634.           @max_font_h = self.contents.font.size
  635.         end
  636.       end
  637.     end
  638.   end
  639.   #--------------------------------------------------------------------------
  640.   # ○ 選択肢と数値入力を有効に
  641.   #--------------------------------------------------------------------------
  642.   def draw_opt_text
  643.     # 選択肢の場合
  644.     if $game_temp.choice_max > 0
  645.       @item_max = $game_temp.choice_max
  646.       self.active = true
  647.       self.index = 0
  648.     end
  649.     # 数値入力の場合
  650.     if $game_temp.num_input_variable_id > 0
  651.       digits_max = $game_temp.num_input_digits_max
  652.       number = $game_variables[$game_temp.num_input_variable_id]
  653.       @input_number_window = Window_InputNumber.new(digits_max)
  654.       @input_number_window.number = number
  655.       @input_number_window.x = self.x + 8
  656.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  657.     end
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ○ ふきだしを表示
  661.   #--------------------------------------------------------------------------
  662.   def set_fukidasi(x, y, width, height)
  663.     # $mes_id が空のときはふきだしを表示しない
  664.     if $mes_id == nil or $mes_id == ""
  665.       del_fukidasi
  666.       reset_window
  667.     else
  668.       # ポーズサインを非表示
  669.       self.pause = false
  670.       # 位置を取得
  671.       pos = get_fuki_pos(width, height)
  672.       x = pos[0]
  673.       y = pos[1]
  674.       skin = FUKI::FUKI_SKIN_NAME != "" ? FUKI::FUKI_SKIN_NAME : $game_system.windowskin_name
  675.       # ふきだし用メッセージウインドウを作成
  676.       self.windowskin = RPG::Cache.windowskin(skin)
  677.       self.x = x
  678.       self.y = y
  679.       self.height = height
  680.       self.width = width
  681.       self.contents.dispose
  682.       self.contents = Bitmap.new(width - 32, height - 32)
  683.       self.back_opacity = FUKI::FUKI_OPACITY
  684.       self.contents.clear
  685.       self.contents.font.color = normal_color
  686.       self.contents.font.size = FUKI::MES_FONT_SIZE
  687.       # ふきだしのテールを描画
  688.       if $game_system.message_frame == 0
  689.         # 位置を取得
  690.         tale_pos = get_tale_pos
  691.         @tale = Sprite.new
  692.         case @message_position
  693.           when 0  # 上
  694.             @tale.bitmap = RPG::Cache.windowskin(skin + "-top")
  695.             @tale.x = tale_pos[0]
  696.             @tale.y = tale_pos[1]
  697.             @tale.z = self.z + 1
  698.           when 1  # 中
  699.             @tale.dispose
  700.             @tale = nil
  701.           when 2  # 下
  702.             @tale.bitmap = RPG::Cache.windowskin(skin + "-under")
  703.             @tale.x = tale_pos[0]
  704.             @tale.y = tale_pos[1]
  705.             @tale.z = self.z + 1
  706.         end
  707.       end
  708.     end
  709.   end
  710.   #--------------------------------------------------------------------------
  711.   # ○ ふきだしの位置を計算
  712.   #--------------------------------------------------------------------------
  713.   def get_fuki_pos(width, height)
  714.     # キャラクターを取得
  715.     @character = get_character($mes_id)
  716.     if @character == nil
  717.       # キャラクターが存在しないときは通常のメッセージウインドウに
  718.       del_fukidasi
  719.       reset_window
  720.       return
  721.     end
  722.     # 座標処理
  723.     x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - (width / 2)
  724.     # はみ出すときは画面内に収まるように移動
  725.     if x + width > 640
  726.       x = 640 - width
  727.     elsif x < 0
  728.       x = 0
  729.     end
  730.     # ウインドウの位置を決定
  731.     case $game_system.message_position
  732.       when 0  # 上
  733.         y = ( @character.real_y - $game_map.display_y + 64) * 32 / 128 - height - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
  734.       when 1  # 中
  735.         y = (480 - height) / 2
  736.         x = (640 - width) / 2
  737.       when 2  # 下
  738.         y =  ( @character.real_y - $game_map.display_y + 64) * 32 / 128 + 32 + FUKI::POP_SHIFT_UNDER
  739.     end
  740.     #メッセージポジション一時記憶
  741.     @message_position = $game_system.message_position
  742.     # 画面外にはみ出す時はウインドウの上下をチェンジ
  743.     if FUKI::POS_FIX
  744.       case @message_position
  745.         when 0  # 上
  746.           if y <= 0
  747.             @message_position = 2
  748.             y =  ( @character.real_y - $game_map.display_y + 64) * 32 / 128 + FUKI::POP_SHIFT_UNDER
  749.           end
  750.         when 2  # 下
  751.           if y + height >= 480
  752.             @message_position = 0
  753.             y = ( @character.real_y - $game_map.display_y + 64) * 32 / 128 - height + 32 - FUKI::CHARACTOR_HEIGHT + FUKI::POP_SHIFT_TOP
  754.           end
  755.       end
  756.     end
  757.     return [x,y]
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ○ テールの位置を計算
  761.   #--------------------------------------------------------------------------
  762.   def get_tale_pos
  763.     case @message_position
  764.       when 0  # 上
  765.         # 座標処理
  766.         x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
  767.         # 画面端では位置をずらす
  768.         if FUKI::CORNER_SHIFT
  769.           if x == 0
  770.             x = FUKI::SHIFT_PIXEL
  771.           elsif x == 640 - 32
  772.             x = 640 - 32 - FUKI::SHIFT_PIXEL
  773.           end
  774.         end
  775.         y = self.y + self.height - 16
  776.       when 1  # 中
  777.         x = nil
  778.         y = nil
  779.       when 2  # 下
  780.         # 座標処理
  781.         x = ( @character.real_x - $game_map.display_x + 64 ) * 32 / 128 - 16
  782.         # 画面端では位置をずらす
  783.         if FUKI::CORNER_SHIFT
  784.           if x == 0
  785.             x = FUKI::SHIFT_PIXEL
  786.           elsif @tale.x == 640 - 32
  787.             x = 640 - 32 - FUKI::SHIFT_PIXEL
  788.           end
  789.         end
  790.         y = self.y - 16
  791.     end
  792.     return [x,y]
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ○ 名前ウインドウを表示
  796.   #--------------------------------------------------------------------------
  797.   def set_namewindow
  798.     # $mes_name が空のときは名前ウインドウを表示しない
  799.     if $mes_name == nil or $mes_name == ""
  800.       return
  801.     else
  802.       # 変数をセット
  803.       mes_name = $mes_name
  804.       # 制御文字処理
  805.       begin
  806.         last_text = mes_name.clone
  807.         mes_name.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  808.       end until mes_name == last_text
  809.       mes_name.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  810.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  811.       end
  812.       name_width = mes_name.size / 2 * FUKI::NAME_FONT_SIZE
  813.       name_height = FUKI::NAME_FONT_SIZE
  814.       name_x = self.x + FUKI::NAME_SHIFT_X
  815.       name_y = self.y - name_height - 16 + FUKI::NAME_SHIFT_Y
  816.       # 名前ウインドウ(枠のみ)を作成
  817.       @name_win = Window_Base.new(name_x, name_y, name_width + 16, name_height + 16)
  818.       skin = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
  819.       @name_win.windowskin = RPG::Cache.windowskin(skin)
  820.       @name_win.back_opacity = FUKI::NAME_OPACITY
  821.       @name_win.z = self.z + 1
  822.       # 余白をwindowクラスの限界よりも小さくするため、二重構造に
  823.       @name_contents = Sprite.new
  824.       @name_contents.x = name_x + 12
  825.       @name_contents.y = name_y + 8
  826.       @name_contents.bitmap = Bitmap.new(name_width, name_height)
  827.       @name_contents.z = @name_win.z + 2
  828.       # 文字色の設定
  829.       nil_color = Color.new(0,0,0,0)
  830.       if FUKI::NAME_COLOR != nil_color
  831.         @name_contents.bitmap.font.color = FUKI::NAME_COLOR
  832.       else
  833.         @name_contents.bitmap.font.color = normal_color
  834.       end
  835.       @name_contents.bitmap.font.size = FUKI::NAME_FONT_SIZE
  836.       # ウインドウサイズを調整
  837.       rect = @name_contents.bitmap.text_size(mes_name)
  838.       @name_win.width = rect.width + 32
  839.       # 名前を描画
  840.       @name_contents.bitmap.draw_text(rect, mes_name)
  841.     end
  842.   end
  843.   #--------------------------------------------------------------------------
  844.   # ○ ふきだしと名前ウインドウを破棄
  845.   #--------------------------------------------------------------------------
  846.   def del_fukidasi
  847.     if @tale != nil
  848.       @tale.dispose
  849.       @tale = nil
  850.     end
  851.     if @name_win != nil
  852.       @name_win.dispose
  853.       @name_win = nil
  854.       @name_contents.dispose
  855.       @name_contents = nil
  856.     end
  857.     self.opacity = 0
  858.     self.x = 80
  859.     self.width = 480
  860.     self.height = 160
  861.     self.contents.dispose
  862.     self.contents = Bitmap.new(width - 32, height - 32)
  863.     self.pause = true
  864.   end
  865.   #--------------------------------------------------------------------------
  866.   # ○ キャラクターの取得
  867.   #     parameter : パラメータ
  868.   #--------------------------------------------------------------------------
  869.   def get_character(parameter)
  870.     # パラメータで分岐
  871.     case parameter
  872.     when -1  # プレイヤー
  873.       return $game_player
  874.     when 0  # このイベント
  875.       events = $game_map.events
  876.       return events == nil ? nil : events[$active_event_id]
  877.     else  # 特定のイベント
  878.       events = $game_map.events
  879.       return events == nil ? nil : events[parameter]
  880.     end
  881.   end
  882.   #--------------------------------------------------------------------------
  883.   # ● 通常文字色の取得
  884.   #--------------------------------------------------------------------------
  885.   def normal_color
  886.     # ふきだしモード時に設定を適用
  887.     if $mes_id != nil and $mes_id != ""
  888.       nil_color = Color.new(0,0,0,0)
  889.       if FUKI::FUKI_COLOR != nil_color
  890.         color = FUKI::FUKI_COLOR
  891.       else
  892.         color = super
  893.       end
  894.       return color
  895.     else
  896.       # 非ふきだし時には通常文字色
  897.       return super
  898.     end
  899.   end
  900. end
  901.  
  902. #==============================================================================
  903. # ■ Window_InputNumber
  904. #==============================================================================
  905.  
  906. class Window_InputNumber < Window_Base
  907.   #--------------------------------------------------------------------------
  908.   # ● オブジェクト初期化
  909.   #     digits_max : 桁数
  910.   #--------------------------------------------------------------------------
  911.   def initialize(digits_max)
  912.     @digits_max = digits_max
  913.     [url=home.php?mod=space&uid=27178]@Number[/url] = 0
  914.     # 数字の幅からカーソルの幅を計算 (0~9 は等幅と仮定)
  915.     dummy_bitmap = Bitmap.new(32, 32)
  916.     dummy_bitmap.font.size = FUKI::MES_FONT_SIZE
  917.     @cursor_width = dummy_bitmap.text_size("0").width + 8
  918.     dummy_bitmap.dispose
  919.     super(0, 0, @cursor_width * @digits_max + 32, 64)
  920.     self.contents = Bitmap.new(width - 32, height - 32)
  921.     self.contents.font.size = FUKI::MES_FONT_SIZE
  922.     self.z += 9999
  923.     self.opacity = 0
  924.     @index = 0
  925.     refresh
  926.     update_cursor_rect
  927.   end
  928. end
  929.  
  930. #==============================================================================
  931. # ■ Interpreter
  932. #==============================================================================
  933.  
  934. class Interpreter
  935.   #--------------------------------------------------------------------------
  936.   # ● イベントのセットアップ
  937.   #     event_id : イベント ID
  938.   #--------------------------------------------------------------------------
  939.   alias setup_fuki setup
  940.   def setup(list, event_id)
  941.     setup_fuki(list, event_id)
  942.     # 戦闘中でなければ
  943.     if !($game_temp.in_battle)
  944.       # イベントIDを記録
  945.       $active_event_id = event_id
  946.     end
  947.   end
  948. end

[用法]【用法
代的事件ID“$ mes_id命令,在”脚本“
气球“事件显示供应]现在会弹出该事件。:($ Mes_id = 4的描述示例)
事件本身的球员,如果您分配的ID -1。
如果分配“或未缴,然后返回到正常显示消息。:($ Mes_id =无说明的例子), 我可以改变事件中的“文字选项”显示位置。 如果指定了“中央”的显示位置,它会被显示在屏幕的中心,不管该事件的位置的。[用法的名称窗口] 在“脚本”代“$ mes_name。”事件命令字符串 显示窗口的名称。(说明例如:$ mes_name =“Arushesu”), 如果指定一个零或“” $ Mes_name。,它是隐藏的。 \ \ [(演员ID)当你写N,它显示的ID对应的演员的名字。 \此功能相当于是N [N],但请注意,你所描述的“\ \”。 :($ Mes_name =“\ \ n [1]”$ mes_name =“\ \ V [1] \ \ N”的描述为例) 两个名称窗口的功能,显示电源是独立的,所以, 能单独使用,。
在之前使用]准备等于气球的尾巴的部分图像,
然后导入“图形/ Windowskins的文件夹。 图像尺寸为16×16(像素)。 似乎8pixel重叠和窗口它们。 两个图案的气球和顶气球低, 请把名字“(皮肤名称)顶”和“(皮肤名称)下”,分别。 :样品  尾巴RTP材料气球“001 Blue01”  (在“图片另存为”右键单击→)下载
如果你改变窗口的透明度,气球,它不通过尾巴气球。
当使用一个半透明的窗口,使其成为一体地与帧尾。  (下载后,请删除尾随“_B”)样本
[其它功能]更改的消息的显示速度
  通过分配数值事件“$ mes_speed”命令中的“脚本”
  是可以改变的消息的显示速度。
  此刻见受让人0。自动发送消息,   如果你分配一个数值   自动讯息显示指定数量的帧结束后关闭窗口“$ mes_auto”命令,在“脚本”事件已过。   如果你分配一个零,自动模式将被取消。   只要你按任意键跳过消息,我会快速显示该消息。控制字符   图\我的[文件名]图标     显示我的形象“图形/图标”内。:([001-Weapon01] \我描述的例子)     [ 心的表情 (下载“目标另存为”右键单击→)] 是,它并没有看起来在白色背景上的浏览器中出现一个风险这么※白色字符那里。   \ S [N]消息的速度   变化\ [N]字体大小尺寸变化
更多图片 小图 大图
组图打开中,请稍候......
小天终于要填个新坑了,这个游戏的名字是《欲望恶魔~游侠传记》
剧情:★☆☆☆☆☆☆☆☆☆
脚本:★☆☆☆☆☆☆☆☆☆
素材:☆☆☆☆☆☆☆☆☆☆
预计明年这一个浩大的工程既可以完工了。。有木有支持的!?制作工具:RMVA
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
531
在线时间
127 小时
注册时间
2013-2-16
帖子
428
 楼主| 发表于 2013-4-30 19:17:13 | 显示全部楼层
2、显示气球对话                                                            
[摘要]我将添加一个气球消息窗口显示功能。
该功能是改装到几乎任何系统消息窗口脚本。
我将朝着“气球+”也是孤单。

操作验证结束脚本
 (重新发布→脚本像一家小书店像货架
   ): “消息显示全面升级” 城堡的装备,如:“消息控制字符加入” KGC软件,如:“消息窗口重塑”
 
 

(字符跟踪等大小),取决于脚本,消息窗口组合功能。
固定脚本的情况下,只有尾巴会自动跟踪的字符窗口位置。 该脚本已合作与樱花雅土像“XMS脚本保质”。
[脚本]
RUBY 代码复制
  1. #==============================================================================
  2. # +++ コラボレーション「+ふきだし表示」 ver.1.13 +++
  3. # Script by
  4. #    パラ犬  [url]http://2d6.parasite.jp/[/url]
  5. #      ×
  6. #    桜雅 在土 [url]http://xms.rdy.jp/[/url]
  7. #
  8. #------------------------------------------------------------------------------
  9. #   ほぼどんなメッセージウィンドウに対しても後付け可能な「ふきだし表示」です。
  10. #  また、テール部分のみの自動追尾機能を持ちます。
  11. #==============================================================================
  12. # ふきだし表示をするには、
  13. # テール用画像「(スキン名)-top」「(スキン名)-under」を
  14. # 「Graphics/Windowskins」フォルダにインポートしておく必要があります。
  15. #------------------------------------------------------------------------------
  16. #
  17. # [ふきだし表示の使い方]
  18. # イベントコマンド「スクリプト」で「$mes_id」にイベントIDを代入することで
  19. # そのイベントにふきだしがポップするようになります。
  20. # (記述例: $mes_id=4 )
  21. # IDに0を代入するとプレイヤー、 nil代入すると、通常のメッセージ表示に戻ります。
  22. # 表示位置はイベント「文章オプション」で変更できます。
  23. # 表示位置に「中央」を指定すると、イベントの位置に関係なく
  24. # 画面中央に表示されます。
  25. #
  26. #==============================================================================
  27.  
  28. #==============================================================================
  29. # □ カスタマイズポイント
  30. #==============================================================================
  31. class Window_Message < Window_Selectable
  32.   #--------------------------------------------------------------------------
  33.   # ふきだしモード時のスキン設定
  34.   #--------------------------------------------------------------------------
  35.   # スキン名(元のウインドウスキンと同じものを使うときは「""」)
  36.   FUKI_SKIN_NAME = "001-Blue01"
  37.   # ウインドウ背景の不透明度(デフォルトは160)
  38.   FUKI_OPACITY = 255
  39. end
  40.  
  41. #==============================================================================
  42. # ■ Window_Message
  43. #==============================================================================
  44. class Window_Message < Window_Selectable
  45.   #--------------------------------------------------------------------------
  46.   # ● メッセージ終了処理
  47.   #--------------------------------------------------------------------------
  48.   alias parashelf_terminate_message terminate_message
  49.   def terminate_message
  50.     # 呼び戻す
  51.     parashelf_terminate_message
  52.     # ふきだしの消去
  53.     del_tail
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● リフレッシュ
  57.   #--------------------------------------------------------------------------
  58.   alias parashelf_refresh refresh
  59.   def refresh
  60.     # 呼び戻す
  61.     parashelf_refresh
  62.     # ふきだしの再設定
  63.     del_tail
  64.     set_tail
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● ウィンドウの位置と不透明度の設定
  68.   #--------------------------------------------------------------------------
  69.   alias parashelf_reset_window reset_window
  70.   def reset_window
  71.     # 呼び戻す
  72.     parashelf_reset_window
  73.     # テールの位置を変更
  74.     if $mes_id != nil and @tail != nil
  75.       tale_pos = get_tale_pos
  76.       @tail.x = tale_pos[0]
  77.       @tail.y = tale_pos[1]
  78.     end
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● フレーム更新
  82.   #--------------------------------------------------------------------------
  83.   alias parashelf_update update
  84.   def update
  85.     # 呼び戻す
  86.     parashelf_update
  87.     # ふきだしテールの更新
  88.     update_tail
  89.     # メッセージ表示中の場合
  90.     if @contents_showing
  91.       # テールがある場合はポーズサインを非表示
  92.       if @tail != nil
  93.         self.pause = false
  94.       end
  95.     end
  96.     # メッージ終了時にスキン設定が戻っていない場合
  97.     if $game_temp.message_window_showing == false and @def_skin_name != nil
  98.       # スキンを戻す
  99.       reset_fuki_skin
  100.     end
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ○ フレーム更新 (ふきだしテール)
  104.   #--------------------------------------------------------------------------
  105.   def update_tail
  106.     # ふきだしモードではイベントの動きに追従
  107.     if $mes_id != nil and @tail != nil
  108.       tale_pos = get_tale_pos
  109.       @tail.x = tale_pos[0]
  110.       @tail.y = tale_pos[1]
  111.       skin = $game_system.windowskin_name
  112.       case @message_position
  113.       when 0  # 上
  114.         @tail.bitmap = RPG::Cache.windowskin(skin + "-top")
  115.       when 2  # 下
  116.         @tail.bitmap = RPG::Cache.windowskin(skin + "-under")
  117.       end
  118.     end
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ○ ふきだしテールを表示
  122.   #--------------------------------------------------------------------------
  123.   def set_tail
  124.     # $mes_id が空のときと戦闘中はふきだしを表示しない
  125.     if $mes_id == nil or $game_temp.in_battle
  126.       del_tail
  127.       # スキンを戻す
  128.       reset_fuki_skin
  129.     else
  130.       # スキンをセット
  131.       set_fuki_skin
  132.       # ふきだしのテールを描画
  133.       skin = $game_system.windowskin_name
  134.       if $game_system.message_frame == 0
  135.         # 位置を取得
  136.         tale_pos = get_tale_pos
  137.         @tail = Sprite.new
  138.         case $game_system.message_position
  139.         when 0  # 上
  140.           @tail.bitmap = RPG::Cache.windowskin(skin + "-top")
  141.           @tail.x = tale_pos[0]
  142.           @tail.y = tale_pos[1]
  143.           @tail.z = self.z + 1
  144.         when 1  # 中
  145.           @tail.dispose
  146.           @tail = nil
  147.         when 2  # 下
  148.           @tail.bitmap = RPG::Cache.windowskin(skin + "-under")
  149.           @tail.x = tale_pos[0]
  150.           @tail.y = tale_pos[1]
  151.           @tail.z = self.z + 1
  152.         end
  153.         # エクストラスプライトに登録
  154.         @extra_sprites = [] if @extra_sprites.nil?
  155.         @extra_sprites.push(@tail) if @tail != nil
  156.       end
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ○ テールの位置を計算
  161.   #--------------------------------------------------------------------------
  162.   def get_tale_pos
  163.     character = get_character($mes_id)
  164.     x = [[character.screen_x - 16, self.x].max, self.x + self.width - 32].min
  165.     case $game_system.message_position
  166.     when 0
  167.       y = self.y + self.height - 16
  168.     else
  169.       y = self.y - 16
  170.     end
  171.     return [x, y]
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ○ キャラクターの取得
  175.   #     parameter : パラメータ
  176.   #--------------------------------------------------------------------------
  177.   def get_character(parameter)
  178.     # パラメータで分岐
  179.     case parameter
  180.     when 0  # プレイヤー
  181.       return $game_player
  182.     else  # 特定のイベント
  183.       events = $game_map.events
  184.       return events == nil ? nil : events[parameter]
  185.     end
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ○ ふきだしを破棄
  189.   #--------------------------------------------------------------------------
  190.   def del_tail
  191.     if @tail != nil
  192.       @tail.dispose
  193.       @tail = nil
  194.     end
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ○ スキンの設定
  198.   #--------------------------------------------------------------------------
  199.   def set_fuki_skin
  200.     # ウインドウスキンを変更
  201.     if FUKI_SKIN_NAME != "" and FUKI_SKIN_NAME != $game_system.windowskin_name
  202.       @def_skin_name = $game_system.windowskin_name
  203.       $game_system.windowskin_name = FUKI_SKIN_NAME
  204.       self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
  205.     end
  206.     # 不透明度を変更
  207.     if self.back_opacity != FUKI_OPACITY
  208.       @def_back_opacity = self.back_opacity
  209.       self.back_opacity = FUKI_OPACITY
  210.     end
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ スキンを戻す
  214.   #--------------------------------------------------------------------------
  215.   def reset_fuki_skin
  216.     # ウインドウスキンを戻す
  217.     if @def_skin_name != nil
  218.       $game_system.windowskin_name = @def_skin_name
  219.       self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
  220.       @def_skin_name = nil
  221.     end
  222.     # 不透明度を戻す
  223.     if @def_back_opacity != nil
  224.       self.back_opacity = @def_back_opacity
  225.       @def_back_opacity = nil
  226.     end
  227.   end
  228. end



[用法]尾部图像表格,以及如何指定事件ID,显示供应消息是一样的。
(这是一个不支持“(事件本身)$ mes_id = -1”) 的XMS脚本架状“消息显示全面升级”,通过使用扩展的CO-X 控制字符\ P您可以申请$ mes_id设置[自动]。 换句话说,可以引入,而不需要重写的事件,从弹出的命令字符。






[差异外部脚本结合版(旧)]外部脚本组合版(旧)是唯一的字符图“显示气球消息”脚本的一部分
,因为它是由脚本取代其它网站,
你有这样的字符跟踪功能和外观被迫或调整。
因为我给一个比较积极的治疗,是一个困难的某种组合。 “显示气球+”为基的脚本组合的目的地 是可选的部分气球添加到窗口中, 被已成为灵活组合。 它被视为以前的版本,因为它是完全不同的功能支持的要求或错误报告继续。 [ 外部脚本组合版(旧)]
fuki_plus.jpg
小天终于要填个新坑了,这个游戏的名字是《欲望恶魔~游侠传记》
剧情:★☆☆☆☆☆☆☆☆☆
脚本:★☆☆☆☆☆☆☆☆☆
素材:☆☆☆☆☆☆☆☆☆☆
预计明年这一个浩大的工程既可以完工了。。有木有支持的!?制作工具:RMVA
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
531
在线时间
127 小时
注册时间
2013-2-16
帖子
428
 楼主| 发表于 2013-4-30 19:23:56 | 显示全部楼层
3、图形变化几许                                                                 
[摘要]如果你移动的同时按下任意键,移动速度会增加。
如果已提供的图片几许当时的第一个字符,然后显示在使用它。
[脚本]
RUBY 代码复制
  1. #==============================================================================
  2. # ++ グラフィック変更ダッシュ ver. 1.21 ++
  3. #  Script by パラ犬
  4. #  [url=http://2d6.parasite.jp/]http://2d6.parasite.jp/[/url]
  5. #------------------------------------------------------------------------------
  6. # 「Graphics/Characters」フォルダに
  7. # 「(先頭キャラの歩行グラフィック名)+_dash」という名前のファイルがある場合
  8. # ダッシュ時のグラフィックとして使用します。(例:001-Fighter01_dash)
  9. #==============================================================================
  10.  
  11. class Game_Player < Game_Character
  12.  
  13.   SPEED_DASH = 5          # ダッシュ時の移動速度
  14.   SPEED_NORMAL = 4          # 通常の移動速度
  15.  
  16.   # ダッシュに使うボタン(表記方法は、Input::(ボタン))
  17.   #(キーボードとの対応表はツクールのヘルプにあります)
  18.   KEY_DASH = Input::A
  19.  
  20.   # "_dash"グラフィックが存在しない場合ダッシュをするか( true:する / false:しない )
  21.   NO_FILE_DASH = true
  22.  
  23.   # 静止時はグラフィックを変更しない( true:変更しない / false:変更する )
  24.   CHANGE_IN_MOVING = false
  25.  
  26.   # ダッシュ禁止イベントスイッチID
  27.   # (イベントコマンド「スイッチの操作」でこの番号のスイッチをONにしている間は
  28.   #  ダッシュを機能を無効にします)
  29.   NO_DASH_SWITCH = 999
  30.  
  31. end
  32.  
  33. #==============================================================================
  34. # ■ Game_Player
  35. #==============================================================================
  36.  
  37. class Game_Player < Game_Character
  38.  
  39.   #--------------------------------------------------------------------------
  40.   # ● フレーム更新
  41.   #--------------------------------------------------------------------------
  42.   alias dash_update update
  43.   def update
  44.     # イベント実行中、移動ルート強制中、
  45.     # メッセージウィンドウ表示中のいずれでもない場合
  46.     unless $game_system.map_interpreter.running? or
  47.            @move_route_forcing or $game_temp.message_window_showing
  48.       if !($game_switches[NO_DASH_SWITCH])
  49.         # キー判定
  50.         if Input.press?(KEY_DASH) and (CHANGE_IN_MOVING == false or Input.dir8 != 0)
  51.           if (dash_graphic_exist?($game_party.actors[0]) or NO_FILE_DASH)
  52.             # ダッシュ中でなければダッシュ
  53.             if @move_speed != SPEED_DASH
  54.               @move_speed = SPEED_DASH
  55.               @dash_on = true
  56.               $game_player.refresh
  57.             end
  58.           end
  59.         elsif @dash_on == nil or @dash_on
  60.             @move_speed = SPEED_NORMAL
  61.             @dash_on = nil
  62.             $game_player.refresh
  63.         end
  64.       end
  65.     end
  66.     dash_update
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ○ ダッシュグラフィックの有無をチェック
  70.   #--------------------------------------------------------------------------
  71.   def dash_graphic_exist?(actor)   
  72.     # 読み込みテスト
  73.     begin
  74.       RPG::Cache.character(actor.character_name.to_s + "_dash", actor.character_hue)
  75.     rescue
  76.       return false
  77.     end
  78.     return true
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● リフレッシュ
  82.   #--------------------------------------------------------------------------
  83.   alias dash_refresh refresh
  84.   def refresh
  85.     dash_refresh
  86.     # パーティ人数が 0 人でない場合
  87.     if $game_party.actors.size != 0
  88.       actor = $game_party.actors[0]
  89.       # キャラクターのファイル名と色相を設定
  90.       if @dash_on and dash_graphic_exist?(actor)
  91.         fileplus = "_dash"
  92.       else
  93.         fileplus = ""
  94.       end
  95.       @character_name = actor.character_name + fileplus
  96.       @character_hue = actor.character_hue
  97.     end
  98.   end
  99. end

在之前使用]提供的照片的时候,破折号的名称“+ _dash(行走字符图形名称)”
导入“图形/字符”文件夹。
即使是没有图像,虚线功能是可用的。 样本的  RTP材料“001-Fighter01的”冲刺图像  (“图像另存为”右击→下载)





正常运动

正常运动
dash_after.jpg

范例图片

范例图片
小天终于要填个新坑了,这个游戏的名字是《欲望恶魔~游侠传记》
剧情:★☆☆☆☆☆☆☆☆☆
脚本:★☆☆☆☆☆☆☆☆☆
素材:☆☆☆☆☆☆☆☆☆☆
预计明年这一个浩大的工程既可以完工了。。有木有支持的!?制作工具:RMVA
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
531
在线时间
127 小时
注册时间
2013-2-16
帖子
428