Project1

标题: 用了这个HP/SP显示脚本很多脚本不不能用了,脑子都快烂掉了 [打印本页]

作者: tonygta    时间: 2011-8-7 21:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: Wind2010    时间: 2011-8-7 21:44
请将这些脚本放在这个脚本的下方,Main的上方
作者: tonygta    时间: 2011-8-7 21:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: 零式翅膀    时间: 2011-8-7 21:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: fgdfg88    时间: 2011-8-8 07:50
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================




  4. #◆◇◆◇◆-----XRXS54. マップ上で簡易ウィンドウ表示 ver1.0 -----◇◆◇◆◇
  5. # by 刻宮

  6. # 「ディフォルト機能 & 仕様」
  7. #  ・$WIN_2 = true。としても、スイッチがONでかつ、アクターが存在しなければ
  8. #   ウィンドウは表示されません。この3要素が揃った時にウィンドウを表示します。
  9. #  ・逆にこの要素が一つでも欠けるとウィンドウは自動的に非表示になります。
  10. #  ・ツクール開始時はスイッチはOFFなので、ONにしないと表示されません。
  11. #------------------------------------------------------------------
  12. # カスタマイズポイント
  13. #(*存在しないスイッチを指定されるとエラーになります。)


  14. #----------------------------------------------------------------
  15. # 使用说明(66RPG提示:本脚本其实难度不是很高,建议学习RGSS略有心得
  16. #           的人尝试自己编写一个同类功能窗口)
  17. #----------------------------------------------------------------
  18.   WIN_1     = true  # 是否使用1号窗口,true为使用,false为不使用
  19.   SWITVH_1  = 100    # 当此编号开关打开的时候窗口显示。如设置为40则40号开关打开,1号窗口显示
  20.   OPACITY_1 = 144   # 1号窗口透明度
  21.   X_1       = 0     # 1号窗口X坐标
  22.   Y_1       = 384   # 1号窗口Y坐标
  23.   
  24.   $WIN_2    = true  # 是否使用2号窗口,true为使用,false为不使用
  25.   SWITVH_2  = 0    # 当此编号开关打开的时候窗口显示。如设置为41则41号开关打开,2号窗口显示
  26.   OPACITY_2 = 144   # 2号窗口透明度
  27.   X_2       = 160   # 2号窗口X坐标
  28.   Y_2       = 384   # 2号窗口Y坐标
  29.   
  30.   WIN_3     = true  # 是否使用3号窗口,true为使用,false为不使用
  31.   SWITVH_3  = 0    # 当此编号开关打开的时候窗口显示。如设置为42则42号开关打开,3号窗口显示
  32.   OPACITY_3 = 144   # 3号窗口透明度
  33.   X_3       = 320   # 3号窗口X坐标
  34.   Y_3       = 384   # 3号窗口Y坐标
  35.   
  36.   WIN_4     = true  # 是否使用4号窗口,true为使用,false为不使用
  37.   SWITVH_4  = 0    # 当此编号开关打开的时候窗口显示。如设置为43则43号开关打开,4号窗口显示
  38.   OPACITY_4 = 144   # 4号窗口透明度
  39.   X_4       = 480   # 4号窗口X坐标
  40.   Y_4       = 384   # 4号窗口Y坐标
  41.   
  42.   SET_SP    = [true,false,true,true] # 决定各个窗口是否显示SP数值,true为显示,false为不显示。
  43.   OPTION    = 44    # 决定在对话的时候是否让窗口隐藏的开关编号。
  44.                     # 比如设置为44,则当44号开关打开,则在对话的时候窗口隐藏
  45.                     # 否则窗口不隐藏。
  46.                     
  47.                     
  48. #=========================================================================
  49. # ■ Scene_Map
  50. #=========================================================================
  51. class Scene_Map
  52.   #---------------------------------------------------------------------
  53.   # ● フレーム更新
  54.   #---------------------------------------------------------------------
  55.   alias main_tokimiya main
  56.   def main
  57.     # 簡易ウィンドウ1を作成
  58.       @simple_window1 = Window_MapStatus.new(X_1,Y_1,0)
  59.       @simple_window1.opacity = OPACITY_1
  60.       @simple_window1.visible = $game_switches[SWITVH_1]
  61.       unless $game_party.actors.size > 0
  62.         @simple_window1.visible = false
  63.       end
  64.     # 簡易ウィンドウ2を作成
  65.       @simple_window2 = Window_MapStatus.new(X_2,Y_2,1)
  66.       @simple_window2.opacity = OPACITY_2
  67.       @simple_window2.visible = $game_switches[SWITVH_2]
  68.       unless $game_party.actors.size > 1
  69.         @simple_window2.visible = false
  70.       end
  71.     # 簡易ウィンドウ3を作成
  72.       @simple_window3 = Window_MapStatus.new(X_3,Y_3,2)
  73.       @simple_window3.opacity = OPACITY_3
  74.       @simple_window3.visible = $game_switches[SWITVH_3]
  75.       unless $game_party.actors.size > 2
  76.         @simple_window3.visible = false
  77.       end
  78.     # 簡易ウィンドウ4を作成
  79.       @simple_window4 = Window_MapStatus.new(X_4,Y_4,3)
  80.       @simple_window4.opacity = OPACITY_4
  81.       @simple_window4.visible = $game_switches[SWITVH_4]
  82.       unless $game_party.actors.size > 3
  83.         @simple_window4.visible = false
  84.       end
  85.    
  86.       main_tokimiya   # 旧メソッドの呼び出し
  87.    
  88.     # 簡易ウィンドウの解放
  89.       @simple_window1.dispose
  90.       @simple_window2.dispose
  91.       @simple_window3.dispose
  92.       @simple_window4.dispose
  93.   end

  94.   #---------------------------------------------------------------------
  95.   # ● フレーム更新
  96.   #---------------------------------------------------------------------
  97.   alias update_tokimiya update
  98.   def update
  99.     update_tokimiya   # 旧メソッドの呼び出し
  100.     # 以前のパラメーターと相違があれば、内容を更新する。
  101.     #
  102.     # ウィンドウ1の更新。
  103.     if WIN_1 == true and $game_party.actors.size > 0
  104.       # データの更新
  105.       actor = $game_party.actors[0]
  106.       factor_1 = @simple_window1.before_1[0] != actor.name
  107.       factor_2 = @simple_window1.before_1[1] != actor.hp
  108.       factor_3 = @simple_window1.before_1[2] != actor.sp
  109.       if factor_1 or factor_2 or factor_3
  110.         @simple_window1.before_1[0] = actor.name
  111.         @simple_window1.before_1[1] = actor.hp
  112.         @simple_window1.before_1[2] = actor.sp
  113.         @simple_window1.refresh(0)
  114.       end
  115.       # 非表示機能の実行
  116.       if @message_window.visible == true and $game_switches[OPTION] == true
  117.         @simple_window1.before_1[3] = false
  118.         @simple_window1.visible = false
  119.       elsif @simple_window1.before_1[3] != $game_switches[SWITVH_1]
  120.         @simple_window1.before_1[3] = $game_switches[SWITVH_1]
  121.         @simple_window1.visible = $game_switches[SWITVH_1]
  122.       end
  123.     end
  124.    
  125.     # ウィンドウ2の更新。
  126.     if $WIN_2 == true and $game_party.actors.size > 1
  127.       # データの更新
  128.       actor = $game_party.actors[1]
  129.       factor_1 = @simple_window2.before_2[0] != actor.name
  130.       factor_2 = @simple_window2.before_2[1] != actor.hp
  131.       factor_3 = @simple_window2.before_2[2] != actor.sp
  132.       if factor_1 or factor_2 or factor_3
  133.         @simple_window2.before_2[0] = actor.name
  134.         @simple_window2.before_2[1] = actor.hp
  135.         @simple_window2.before_2[2] = actor.sp
  136.         @simple_window2.refresh(1)
  137.         # ウィンドウを強制的に生成
  138.         @simple_window2.before_2[3] = true
  139.         @simple_window2.visible = true
  140.       end
  141.       # 非表示機能の実行
  142.       if @message_window.visible == true and $game_switches[OPTION] == true
  143.         @simple_window2.before_2[3] = false
  144.         @simple_window2.visible = false
  145.       elsif @simple_window2.before_2[3] != $game_switches[SWITVH_2]
  146.         @simple_window2.before_2[3] = $game_switches[SWITVH_2]
  147.         @simple_window2.visible = $game_switches[SWITVH_2]
  148.       end
  149.     # アクターが存在しないのにウィンドウが表示されたままの場合。
  150.     elsif @simple_window2.visible == true and @simple_window2.before_2 != nil
  151.       # ウィンドウを消去。
  152.       @simple_window2.before_2[3] = false
  153.       @simple_window2.visible = false
  154.     end
  155.    
  156.     # ウィンドウ3の更新。
  157.     if WIN_3 == true and $game_party.actors.size > 2
  158.       # データの更新
  159.       actor = $game_party.actors[2]
  160.       factor_1 = @simple_window3.before_3[0] != actor.name
  161.       factor_2 = @simple_window3.before_3[1] != actor.hp
  162.       factor_3 = @simple_window3.before_3[2] != actor.sp
  163.       if factor_1 or factor_2 or factor_3
  164.         @simple_window3.before_3[0] = actor.name
  165.         @simple_window3.before_3[1] = actor.hp
  166.         @simple_window3.before_3[2] = actor.sp
  167.         @simple_window3.refresh(2)
  168.         # ウィンドウを強制的に生成
  169.         @simple_window3.before_3[3] = true
  170.         @simple_window3.visible = true
  171.       end
  172.       # 非表示機能の実行
  173.       if @message_window.visible == true and $game_switches[OPTION] == true
  174.         @simple_window3.before_3[3] = false
  175.         @simple_window3.visible = false
  176.       elsif @simple_window3.before_3[3] != $game_switches[SWITVH_3]
  177.         @simple_window3.before_3[3] = $game_switches[SWITVH_3]
  178.         @simple_window3.visible = $game_switches[SWITVH_3]
  179.       end
  180.     # アクターが存在しないのにウィンドウが表示されたままの場合。
  181.     elsif @simple_window3.visible == true and @simple_window3.before_3 != nil
  182.       # ウィンドウを消去。
  183.       @simple_window3.before_3[3] = false
  184.       @simple_window3.visible = false
  185.     end
  186.    
  187.     # ウィンドウ4の更新。
  188.     if WIN_4 == true and $game_party.actors.size > 3
  189.       # データの更新
  190.       actor = $game_party.actors[3]
  191.       factor_1 = @simple_window4.before_4[0] != actor.name
  192.       factor_2 = @simple_window4.before_4[1] != actor.hp
  193.       factor_3 = @simple_window4.before_4[2] != actor.sp
  194.       if factor_1 or factor_2 or factor_3
  195.         @simple_window4.before_4[0] = actor.name
  196.         @simple_window4.before_4[1] = actor.hp
  197.         @simple_window4.before_4[2] = actor.sp
  198.         @simple_window4.refresh(3)
  199.         # ウィンドウを強制的に生成
  200.         @simple_window4.before_4[3] = true
  201.         @simple_window4.visible = true
  202.       end
  203.       # 非表示機能の実行
  204.       if @message_window.visible == true and $game_switches[OPTION] == true
  205.         @simple_window4.before_4[3] = false
  206.         @simple_window4.visible = false
  207.       elsif @simple_window4.before_4[3] != $game_switches[SWITVH_4]
  208.         @simple_window4.before_4[3] = $game_switches[SWITVH_4]
  209.         @simple_window4.visible = $game_switches[SWITVH_4]
  210.       end
  211.     # アクターが存在しないのにウィンドウが表示されたままの場合。
  212.     elsif @simple_window4.visible == true and @simple_window4.before_4 != nil
  213.       # ウィンドウを消去。
  214.       @simple_window4.before_4[3] = false
  215.       @simple_window4.visible = false
  216.     end
  217.   end
  218. end



  219. #=========================================================================
  220. # ■ Window_MapStatus,脚本来自www.66rpg.com,转载请注意说明
  221. #=========================================================================
  222. class Window_MapStatus < Window_Base
  223.   #--------------------------------------------------------------------------
  224.   # ○ 公開インスタンス変数
  225.   #--------------------------------------------------------------------------
  226.   attr_accessor   :before_1              # 更新前のウィンドウ1のパラメーター
  227.   attr_accessor   :before_2              # 更新前のウィンドウ2のパラメーター
  228.   attr_accessor   :before_3              # 更新前のウィンドウ3のパラメーター
  229.   attr_accessor   :before_4              # 更新前のウィンドウ4のパラメーター
  230.   #---------------------------------------------------------------------
  231.   # ● フレーム更新
  232.   #---------------------------------------------------------------------
  233.   def initialize(x,y,id)
  234.     super(x,y,160,96)
  235.     self.contents = Bitmap.new(width - 32, height - 32)
  236.     self.contents.font.size = 18
  237.     @before_1=[]
  238.     @before_2=[]
  239.     @before_3=[]
  240.     @before_4=[]
  241.      # 現段階のアクターのパラメーターと可視状態を記憶。
  242.     data
  243.     # 項目の描画。
  244.     refresh(id)
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 項目の描画
  248.   #--------------------------------------------------------------------------
  249.   def data
  250.     # アクター1の記憶(ただし、パーティが1名以上の場合)
  251.     if $game_party.actors.size > 0
  252.       actor = $game_party.actors[0]
  253.       @before_1 = [actor.name, actor.hp, actor.sp,true]
  254.     end
  255.     # アクター2の記憶(ただし、パーティが2名以上の場合)
  256.     if $game_party.actors.size > 1
  257.       actor = $game_party.actors[1]
  258.       @before_2 = [actor.name, actor.hp, actor.sp,true]
  259.     end
  260.     # アクター3の記憶(ただし、パーティが3名以上の場合)
  261.     if $game_party.actors.size > 2
  262.       actor = $game_party.actors[2]
  263.       @before_3 = [actor.name, actor.hp, actor.sp,true]
  264.     end
  265.     # アクター3の記憶(ただし、パーティが4名以上の場合)
  266.     if $game_party.actors.size > 3
  267.       actor = $game_party.actors[3]
  268.       @before_4 = [actor.name, actor.hp, actor.sp,true]
  269.     end
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 項目の描画
  273.   #--------------------------------------------------------------------------
  274.   def refresh(id)
  275.     # 再描画のために一旦内容を破棄する
  276.     self.contents.clear
  277.     # 対応するアクターがいなければ、何もせずに終了する。
  278.     actor = $game_party.actors[id]
  279.     if actor == nil
  280.       return
  281.     end
  282.     # 名前の描画
  283.     draw_actor_name(actor, 0, -5)
  284.     # HPの描画
  285.     if SET_SP[id]
  286.       draw_actor_hp_custom(actor, 0, 18)
  287.     else
  288.       draw_actor_hp_custom(actor, 0, 28)
  289.     end
  290.     # SPの描画
  291.     if SET_SP[id]
  292.       draw_actor_sp_custom(actor, 0, 36)
  293.     end
  294.   end
  295.   
  296.   #--------------------------------------------------------------------------
  297.   # ● HP の描画
  298.   #     actor : アクター
  299.   #     x     : 描画先 X 座標
  300.   #     y     : 描画先 Y 座標
  301.   #     width : 描画先の幅
  302.   #--------------------------------------------------------------------------
  303.   def draw_actor_hp_custom(actor, x, y, width = 144)
  304.     # 文字列 "HP" を描画
  305.     self.contents.font.color = system_color
  306.     self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
  307.     # MaxHP を描画するスペースがあるか計算
  308.     if width - 32 >= 108
  309.       hp_x = x + width - 108
  310.       flag = true
  311.     elsif width - 32 >= 48
  312.       hp_x = x + width - 48
  313.       flag = false
  314.     end
  315.     # HP を描画
  316.     self.contents.font.color = actor.hp == 0 ? knockout_color :
  317.       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  318.     self.contents.draw_text(hp_x - 12, y, 48, 32, actor.hp.to_s, 2)
  319.     # MaxHP を描画
  320.     if flag
  321.       self.contents.font.color = normal_color
  322.       self.contents.draw_text(hp_x + 48 - 12, y, 12, 32, "/", 1)
  323.       self.contents.draw_text(hp_x + 60 - 12, y, 48, 32, actor.maxhp.to_s)
  324.     end
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● SP の描画
  328.   #     actor : アクター
  329.   #     x     : 描画先 X 座標
  330.   #     y     : 描画先 Y 座標
  331.   #     width : 描画先の幅
  332.   #--------------------------------------------------------------------------
  333.   def draw_actor_sp_custom(actor, x, y, width = 144)
  334.     # 文字列 "SP" を描画
  335.     self.contents.font.color = system_color
  336.     self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
  337.     # MaxSP を描画するスペースがあるか計算
  338.     if width - 32 >= 108
  339.       sp_x = x + width - 108
  340.       flag = true
  341.     elsif width - 32 >= 48
  342.       sp_x = x + width - 48
  343.       flag = false
  344.     end
  345.     # SP を描画
  346.     self.contents.font.color = actor.sp == 0 ? knockout_color :
  347.       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  348.     self.contents.draw_text(sp_x - 12, y, 48, 32, actor.sp.to_s, 2)
  349.     # MaxSP を描画
  350.     if flag
  351.       self.contents.font.color = normal_color
  352.       self.contents.draw_text(sp_x + 48 - 12, y, 12, 32, "/", 1)
  353.       self.contents.draw_text(sp_x + 60 - 12, y, 48, 32, actor.maxsp.to_s)
  354.     end
  355.   end
  356. end

  357. #==============================================================================
  358. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  359. #==============================================================================


复制代码
试试这个,插入在Main前就行了。
作者: 灵魂の补给    时间: 2011-8-8 08:21
MOG是什么?
作者: tonygta    时间: 2011-8-8 13:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: |.мīss.чou    时间: 2011-8-8 14:17
提示: 作者被禁止或删除 内容自动屏蔽




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