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

Project1

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

想在地图上显示人物和宠物的血法和经验,还有头像

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-9
帖子
25
跳转到指定楼层
1
发表于 2009-2-16 22:41:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv5.捕梦者

梦石
0
星屑
39163
在线时间
5737 小时
注册时间
2006-11-10
帖子
6638
2
发表于 2009-2-16 23:27:40 | 只看该作者
  1. #◆◇◆◇◆-----XRXS54. マップ上で簡易ウィンドウ表示 ver1.0 -----◇◆◇◆◇
  2. # by 刻宮

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


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

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



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


该脚本只是参考,具体设置要根据自己的情况设置。本人不负责售后服务。
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-17 15:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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