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

Project1

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

[RMVX发布] 人物详细背景资料栏

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
72 小时
注册时间
2010-10-18
帖子
104
跳转到指定楼层
1
发表于 2010-10-26 03:11:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
先放下效果截图

不使用背景图

使用背景图

用到了KGC的两个脚本
拡張ステータス画面(VX専用)
ビットマップ拡張(XP/VX共用)

不过已经经过修改
只简化保留我的脚本会调用到的部份

其实KGC本身的status扩张就够用了
只是应该有人和我一样想使用别的status脚本
又想使用KGC的脚本
那个属性、状态耐性图真的不错看
所以就视自己需要带走吧
使用和设定法大多设定在脚本中了
  1. module Miluko
  2.   #设定资料以角色在数据库中的编号为主  例如拉尔夫在数据库中是1号角色
  3.   #那么1就代表是拉尔夫的资料    2就是吴莉嘉   依此类推
  4.   #若是下面任一list中无该角色的资料   就不会显示
  5.   #例如拉尔夫的BIRTHDAY未设定   则窗口就不会显示拉尔夫的生日
  6.   NAME = {
  7.   1 => "拉尔夫",
  8.   }
  9.   RACE = {
  10.   1 => "人类",
  11.   }
  12.   AGE = {
  13.   1 => "21",
  14.   }
  15.   BIRTHDAY = {
  16.   }
  17.   INTEREST = {
  18.   1 => "打怪",
  19.   }
  20.   LIKE = {
  21.   1 => "装备",
  22.   }
  23.   HATE = {
  24.   1 => "重来",
  25.   }
  26.   #STORY一行大约9字  再多有可能会盖到人物图 不过可视人物图宽度自行调整字数
  27.   #最多四行  避免盖到属性和状态抗性图   
  28.   #以\n为分行符号
  29.   STORY = {
  30.   1 => "目标是成为有史以来最\n伟大的勇者,让後世的\n吟游诗人都传唱他的事\n迹。",
  31.   }
  32.   
  33.   #人物图可自行设定位置
  34.   #人物图档命名规则为"角色脸图名称+角色於脸图中的index"
  35.   #例如使用脸图 Actor1 的0号脸(也就是拉尔夫的脸图)
  36.   #半身图档的命名就要为Actor1_0
  37.   PIC_X = 350
  38.   PIC_Y = 50
  39.   
  40.   #窗口的大标名称
  41.   TITLE_NAME = "人物背景资料"
  42.   #设定字体的大小  预设为18
  43.   DATA_FONT_SIZE = 18
  44.   #设定想使用的字型
  45.   DATA_FONT_NAME = "SimHei"
  46.   #设定文字颜色
  47.   COLOR = Color.new(255,120,255)  #大标题"人物背景资料"的颜色
  48.   COLOR1 = Color.new(120,120,255)  #name、race等小标题颜色
  49.   COLOR2 = Color.new(255,255,255)  #内文颜色
  50.   
  51.   #设定是否使用背景图片  预设为一般视窗  不使用背景图
  52.   #    0:不使用  1:使用
  53.   USE_BG_PIC = 0
  54.   #当USE_BG_PIC设为1时  会自Graphics/Pictures中取出档名为BG_PIC的图做为背景图
  55.   BG_PIC = "MenuBack"
  56. end

  57. class Window_Back_Data < Window_Base
  58.   def initialize(actor)
  59.     super(0,0,544,416)
  60.     @actor = actor
  61.     refresh
  62.   end
  63.   
  64.   def refresh
  65.     self.contents.font.name = Miluko::DATA_FONT_NAME
  66.     self.contents.font.color = Miluko::COLOR
  67.     self.contents.draw_text(0,-10,Miluko::TITLE_NAME.size*11,70,Miluko::TITLE_NAME)
  68.     self.contents.font.name = Miluko::DATA_FONT_NAME
  69.     temp_y = 50
  70.     draw_actor_name(@actor,0,temp_y)
  71.     i = 0
  72.     if Miluko::RACE[@actor.id] != nil
  73.       draw_actor_race(@actor,120,temp_y)
  74.       i+=1
  75.     end
  76.     if Miluko::STORY[@actor.id] != nil
  77.       draw_actor_story(@actor,130,temp_y+i*20)
  78.     end
  79.     i = 1
  80.     if Miluko::NAME[@actor.id] != nil
  81.       draw_actor_age(@actor,10,temp_y+i*20)
  82.       i += 1
  83.     end
  84.     if Miluko::BIRTHDAY[@actor.id] != nil
  85.       draw_actor_birth(@actor,temp_y+i*20)
  86.       i += 1
  87.     end
  88.     if Miluko::LIKE[@actor.id] != nil
  89.       draw_actor_like(@actor,10,temp_y+i*20)
  90.       i += 1
  91.     end
  92.     if Miluko::HATE[@actor.id] != nil
  93.       draw_actor_hate(@actor,0,temp_y+i*20)
  94.       i += 1
  95.     end
  96.     if Miluko::INTEREST[@actor.id] != nil
  97.       draw_actor_interest(@actor,10,temp_y+i*20)
  98.       i += 1
  99.     end
  100.   end
  101.   
  102.   def draw_actor_name(actor,x,y)
  103.     self.contents.font.color = Miluko::COLOR1
  104.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  105.     self.contents.draw_text(x, y, 100, WLH, "Name ")
  106.     name_text = Miluko::NAME[@actor.id]
  107.     self.contents.font.color = Miluko::COLOR2
  108.     self.contents.draw_text(x+50, y, 200, WLH, name_text)
  109.   end
  110.    
  111.   def draw_actor_race(actor,x,y)
  112.     self.contents.font.color = Miluko::COLOR1
  113.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  114.     self.contents.draw_text(x, y, 100, WLH, "Race ")
  115.     race_text = Miluko::RACE[@actor.id]
  116.     self.contents.font.color = Miluko::COLOR2
  117.     self.contents.draw_text(x+50, y, 200, WLH, race_text)
  118.   end
  119.   
  120.   def draw_actor_age(actor,x,y)
  121.     self.contents.font.color = Miluko::COLOR1
  122.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  123.     self.contents.draw_text(x, y, 80, WLH, "Age ")
  124.     age_text = Miluko::AGE[@actor.id]
  125.     self.contents.font.color = Miluko::COLOR2
  126.     self.contents.draw_text(x+50, y, 200, WLH, age_text)
  127.   end
  128.   
  129.   def draw_actor_birth(actor,x,y)
  130.     self.contents.font.color = Miluko::COLOR1
  131.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  132.     self.contents.draw_text(x, y, 120, WLH, "Birth ")
  133.     birth_text = Miluko::BIRTHDAY[@actor.id]
  134.     self.contents.font.color = Miluko::COLOR2
  135.     self.contents.draw_text(x+60, y, 200, WLH, birth_text)
  136.   end
  137.   
  138.   def draw_actor_interest(actor,x,y)
  139.     self.contents.font.color = Miluko::COLOR1
  140.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  141.     self.contents.draw_text(x, y, 120, WLH, "Interest ")
  142.     interest_text = Miluko::INTEREST[@actor.id]
  143.     self.contents.font.color = Miluko::COLOR2
  144.     self.contents.draw_text(x+80, y, 200, WLH, interest_text)
  145.   end
  146.   
  147.   def draw_actor_like(actor,x,y)
  148.     self.contents.font.color = Miluko::COLOR1
  149.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  150.     self.contents.draw_text(x, y, 80, WLH, "Like ")
  151.     like_text = Miluko::LIKE[@actor.id]
  152.     self.contents.font.color = Miluko::COLOR2
  153.     self.contents.draw_text(x+50, y, 200, WLH, like_text)
  154.   end
  155.   
  156.   def draw_actor_hate(actor,x,y)
  157.     self.contents.font.color = Miluko::COLOR1
  158.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  159.     self.contents.draw_text(x, y, 80, WLH, "Hate ")
  160.     hate_text = Miluko::HATE[@actor.id]
  161.     self.contents.font.color = Miluko::COLOR2
  162.     self.contents.draw_text(x+50, y, 200, WLH, hate_text)
  163.   end
  164.   
  165.   def draw_actor_story(actor,x,y)
  166.     self.contents.font.color = Miluko::COLOR1
  167.     self.contents.font.size = Miluko::DATA_FONT_SIZE
  168.     self.contents.draw_text(x, y, 115, WLH, "Other ")
  169.     story_text = Miluko::STORY[@actor.id]
  170.     self.contents.font.color = Miluko::COLOR2
  171.     temp_text = [""]
  172.     temp_text = story_text.split(/\n/)
  173.     for i in 0..temp_text.size
  174.       self.contents.draw_text(x+20, y+Miluko::DATA_FONT_SIZE+Miluko::DATA_FONT_SIZE*i, temp_text[i].to_s.size * Miluko::DATA_FONT_SIZE, WLH, temp_text[i])
  175.     end
  176.   end
  177. end


  178. class Scene_Status < Scene_Base
  179.   def update
  180.     update_menu_background
  181.     @status_window.update
  182.     if Input.trigger?(Input::B)
  183.       Sound.play_cancel
  184.       return_scene
  185.     elsif Input.trigger?(Input::R)
  186.       Sound.play_cursor
  187.       next_actor
  188.     elsif Input.trigger?(Input::L)
  189.       Sound.play_cursor
  190.       prev_actor
  191.     elsif Input.trigger?(Input::C)
  192.       Sound.play_cursor
  193.       $scene = Scene_Back_Data.new(@actor_index)
  194.     end
  195.     super
  196.   end
  197. end

  198. #--------------------------------------------------------------------------
  199. #Scene_Back_Data
  200. #--------------------------------------------------------------------------
  201. class Scene_Back_Data < Scene_Base
  202.   
  203.   def initialize(actor_index = 0)
  204.     @actor_index = actor_index
  205.   end
  206.   
  207.   def main
  208.     start
  209.     perform_transition
  210.     Input.update
  211.     loop do
  212.       Graphics.update
  213.       Input.update
  214.       update
  215.       break if $scene != self
  216.     end
  217.     Graphics.update
  218.     pre_terminate
  219.     Graphics.freeze
  220.     terminate
  221.   end
  222.   
  223.   def start
  224.     @actor_data = $game_party.members[@actor_index]
  225.     if Miluko::USE_BG_PIC
  226.       @data_back = Sprite.new
  227.       @data_back.bitmap = Cache.picture(Miluko::BG_PIC)
  228.       @data_back.opacity = 0
  229.     end
  230.     @data_window = Window_Back_Data.new(@actor_data)
  231.     @data_window.x = -500
  232.     @data_window.contents_opacity = 0
  233.     @data_window.opacity = 0
  234.     @detail_window = Window_StatusDetail.new(@actor_data)
  235.     @detail_window.y = 652
  236.     @detail_window.opacity = 0
  237.     @detail_window.contents_opacity = 0
  238.     allbody_text = "#{@actor_data.face_name}_#{@actor_data.face_index}"
  239.     @allbody_pic = Sprite.new
  240.     @allbody_pic.bitmap = Cache.picture(allbody_text)
  241.     @allbody_pic.x = Miluko::PIC_X+500
  242.     @allbody_pic.y += Miluko::PIC_Y
  243.     @allbody_pic.z = 800
  244.     @allbody_pic.opacity = 0
  245.   end
  246.   
  247.   def perform_transition
  248.     Graphics.transition(0)
  249.   end
  250.   
  251.   def pre_terminate
  252.     for i in 0..25
  253.       @allbody_pic.x -= 20
  254.       @allbody_pic.opacity -= 15
  255.       @data_window.x += 20
  256.       @data_window.contents_opacity -= 15
  257.       @data_window.opacity -= 15 if Miluko::USE_BG_PIC == 0
  258.       @data_back.opacity -= 15 if Miluko::USE_BG_PIC == 1
  259.       @detail_window.y += 20
  260.       @detail_window.contents_opacity -= 15
  261.       @detail_window.refresh
  262.       Graphics.update
  263.     end
  264.   end  
  265.   
  266.   def terminate   
  267.     if Miluko::USE_BG_PIC
  268.       @data_back.dispose
  269.     end
  270.     @data_window.dispose
  271.     @allbody_pic.dispose
  272.     @detail_window.dispose
  273.   end
  274.   
  275.   def return_scene
  276.     $scene = Scene_Status.new(@actor_index)
  277.   end
  278.   
  279.   def next_actor
  280.     @actor_index += 1
  281.     @actor_index %= $game_party.members.size
  282.     $scene = Scene_Back_Data.new(@actor_index)
  283.   end
  284.   
  285.   def prev_actor
  286.     @actor_index += $game_party.members.size - 1
  287.     @actor_index %= $game_party.members.size
  288.     $scene = Scene_Back_Data.new(@actor_index)
  289.   end
  290.   
  291.   def update
  292.     @allbody_pic.opacity += 10
  293.     @data_window.contents_opacity += 10
  294.     @detail_window.contents_opacity += 10
  295.     @data_window.opacity += 10 if Miluko::USE_BG_PIC == 0
  296.     @data_back.opacity += 10 if Miluko::USE_BG_PIC == 1
  297.     if @detail_window.y  > 152
  298.       @detail_window.y -= 20
  299.       @detail_window.refresh
  300.     elsif @detail_window.y  <= 152
  301.       @detail_window.y = 152
  302.       @detail_window.refresh
  303.       @detail_window.contents_opacity = 255
  304.     end
  305.     if @data_window.x  <0
  306.       @data_window.x +=20
  307.     elsif @data_window.x  >=0
  308.       @data_window.x = 0
  309.       @data_window.contents_opacity = 255
  310.       @data_window.opacity = 255 if Miluko::USE_BG_PIC == 0
  311.     end
  312.     if @allbody_pic.x > Miluko::PIC_X
  313.       @allbody_pic.x -=20
  314.     elsif @allbody_pic.x <= Miluko::PIC_X
  315.       @allbody_pic.x = Miluko::PIC_X
  316.       @allbody_pic.opacity = 255
  317.     end
  318.     @data_window.update
  319.     if @detail_window.y == 152
  320.       @detail_window.update
  321.     end
  322.     if Input.trigger?(Input::B)
  323.       Sound.play_cancel
  324.       return_scene
  325.     elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
  326.       Sound.play_cursor
  327.       next_actor
  328.     elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
  329.       Sound.play_cursor
  330.       prev_actor
  331.     end
  332.     super
  333.   end
  334. end
复制代码
修改过的KGC扩张STATUS脚本

  1. module KGC
  2. module ExtendedStatusScene

  3.   # ◆ 属性耐性の表記方法
  4.   #   0 .. 数値
  5.   #   1 .. チャート
  6.   #   2 .. チャート&数値 (:resist はチャートのみ)
  7.   #  1, 2 は ≪ビットマップ拡張≫ が必要。
  8.   RESIST_STYLE = 1
  9.   # ◆ 耐性の数値
  10.   #   0 .. 属性: 100 で通常、99 以下は軽減 (マイナスは吸収)、101 以上は弱点
  11.   #        ステート: 付加成功率 (かかりやすさ)
  12.   #   1 .. 属性: 0 で通常、プラスは軽減 (101 以上は吸収)、マイナスは弱点
  13.   #        ステート: 付加回避率 (かかりにくさ)
  14.   RESIST_NUM_STYLE = 0

  15.   # ◆ チャート色
  16.   CHART_LINE_COLOR  = Color.new(128, 255, 128)  # ライン色
  17.   CHART_BASE_COLOR  = Color.new(128, 192, 255)  # ベース色
  18.   CHART_FLASH_COLOR = Color.new(128, 255, 128)  # フラッシュ色
  19.   # ◆ チャートをなめらかにする
  20.   #   true  : 高品質、低速
  21.   #   false : 低品質、高速
  22.   CHART_HIGHQUALITY = true

  23.   # ~ 以下の項目は ≪モンスター図鑑≫ と互換性があります。 ~
  24.   # ~ ≪モンスター図鑑≫ 側の設定をコピーしても構いません。~

  25.   # ◆ 属性耐性を調べる範囲
  26.   #  耐性を調べる属性の ID を配列に格納。
  27.   #  .. や ... を使用した範囲指定も可能。
  28.   ELEMENT_RANGE = [1..16]
  29.   # ◆ 属性のアイコン
  30.   #  各属性に対応するアイコンの番号を指定。
  31.   #  配列の添字が属性 ID に対応。
  32.   #  (最初が属性 ID: 0 に対応、あとは ID: 1, 2, 3, ... の順)
  33.   ELEMENT_ICON = [0,                         # ID: 0 はダミー (未使用)
  34.      50,   1,   4,  14,  24,  12, 189, 136,  # ID: 1 ~  8
  35.     104, 105, 106, 107, 108, 109, 110, 111,  # ID: 9 ~ 16
  36.   ]  # ← これは消さないこと!

  37.   $data_states = load_data("Data/States.rvdata")
  38.   $data_system = load_data("Data/System.rvdata")
  39.   # ◆ ステート耐性を調べる範囲
  40.   #  耐性を調べるステートの ID を配列に格納。
  41.   #  記述方法は ELEMENT_RANGE と同様。
  42.   STATE_RANGE = [1...$data_states.size]
  43. end
  44. end

  45. $imported = {} if $imported == nil
  46. $imported["ExtendedStatusScene"] = true

  47. module KGC::ExtendedStatusScene
  48.   module_function
  49.   #--------------------------------------------------------------------------
  50.   # ○ Range と Integer の配列を Integer の配列に変換 (重複要素は排除)
  51.   #--------------------------------------------------------------------------
  52.   def convert_integer_array(array, type = nil)
  53.     result = []
  54.     array.each { |i|
  55.       case i
  56.       when Range
  57.         result |= i.to_a
  58.       when Integer
  59.         result |= [i]
  60.       end
  61.     }
  62.     case type
  63.     when :element
  64.       result.delete_if { |x| x >= $data_system.elements.size }
  65.     when :state
  66.       result.delete_if { |x|
  67.         x >= $data_states.size ||
  68.         $data_states[x].nonresistance ||
  69.         $data_states[x].priority == 0
  70.       }
  71.     end
  72.     return result
  73.   end

  74.   # チェックする属性リスト
  75.   CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE, :element)
  76.   # チェックするステートリスト
  77.   CHECK_STATE_LIST   = convert_integer_array(STATE_RANGE, :state)

  78.   # 耐性表記方法
  79.   case RESIST_STYLE
  80.   when 0
  81.     RESIST_STYLE_SYMBOL = :num
  82.   when 1
  83.     RESIST_STYLE_SYMBOL = :chart
  84.   else
  85.     RESIST_STYLE_SYMBOL = :both
  86.   end
  87. end


  88. class Window_StatusDetail < Window_Base
  89.   #--------------------------------------------------------------------------
  90.   # ○ 公開インスタンス変数
  91.   #--------------------------------------------------------------------------
  92. #~   attr_reader   :category
  93.   #--------------------------------------------------------------------------
  94.   # ● オブジェクト初期化
  95.   #     actor : アクター
  96.   #--------------------------------------------------------------------------
  97.   def initialize(actor)
  98.     y = WLH * 5 + 32
  99.     super(0, y, Graphics.width, Graphics.height - y)
  100.     create_chart_sprite
  101.     @actor    = actor
  102.     @duration = 0
  103.     self.z = 1000
  104.     refresh
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ○ レーダーチャートスプライト作成
  108.   #--------------------------------------------------------------------------
  109.   def create_chart_sprite
  110.     @element_chart_sprite = Sprite_Base.new
  111.     @element_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
  112.     @element_chart_sprite.ox = @element_chart_sprite.width  / 2
  113.     @element_chart_sprite.oy = @element_chart_sprite.height / 2
  114.     @element_chart_sprite.blend_type = 1
  115.     @element_chart_sprite.opacity = 0
  116.     @element_chart_sprite.visible = false

  117.     @state_chart_sprite = Sprite_Base.new
  118.     @state_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
  119.     @state_chart_sprite.ox = @state_chart_sprite.width  / 2
  120.     @state_chart_sprite.oy = @state_chart_sprite.height / 2
  121.     @state_chart_sprite.blend_type = 1
  122.     @state_chart_sprite.opacity = 0
  123.     @state_chart_sprite.visible = false
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 破棄
  127.   #--------------------------------------------------------------------------
  128.   def dispose
  129.     @element_chart_sprite.bitmap.dispose
  130.     @element_chart_sprite.dispose
  131.     @state_chart_sprite.bitmap.dispose
  132.     @state_chart_sprite.dispose
  133.     super
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ○ Z 座標設定
  137.   #--------------------------------------------------------------------------
  138.   def z=(value)
  139.     super(value)
  140.     @element_chart_sprite.z = z + 1 if @element_chart_sprite != nil
  141.     @state_chart_sprite.z   = z + 1 if @state_chart_sprite   != nil
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● リフレッシュ
  145.   #--------------------------------------------------------------------------
  146.   def refresh
  147.     @element_chart_sprite.visible = true
  148.     @state_chart_sprite.visible   = true
  149.     self.contents.clear
  150.     draw_resistance
  151.     Graphics.frame_reset
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ○ 耐性描画
  155.   #--------------------------------------------------------------------------
  156.   def draw_resistance
  157.     case KGC::ExtendedStatusScene::RESIST_STYLE
  158.     when 0
  159.       type = :num
  160.     else
  161.       type = :chart
  162.     end
  163.     x = 0
  164.     x = draw_element_resistance(x, WLH, type)
  165.     x = draw_state_resistance(x, WLH, type)
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ○ 属性耐性描画
  169.   #     x, y : 描画先 X, Y
  170.   #     type : 表示形式 (:num, :chart, :both)
  171.   #    描画終了時の X 座標を返す。
  172.   #--------------------------------------------------------------------------
  173.   def draw_element_resistance(x, y, type)
  174.     if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
  175.       Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
  176.     end

  177.     if [:chart, :both].include?(type) && $imported["BitmapExtension"]
  178.       x = draw_element_resistance_chart(x, y)
  179.       @element_chart_sprite.visible = true
  180.     end
  181.     if [:num, :both].include?(type)
  182.       x = draw_element_resistance_num(x, y)
  183.     end

  184.     Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT

  185.     return x
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ○ 属性耐性描画 (チャート)
  189.   #     x, y : 描画先 X, Y
  190.   #    描画終了時の X 座標を返す。
  191.   #--------------------------------------------------------------------------
  192.   def draw_element_resistance_chart(x, y)
  193.     r  = (contents.height - y - 56) / 2
  194.     cx = x + r + 28
  195.     cy = y + r + 28
  196.     pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
  197.     elements = KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST

  198.     draw_chart_line(cx, cy, r, elements.size, 3, pw)

  199.     # チャート
  200.     points = []
  201.     elements.each_with_index { |e, i|
  202.       n   = @actor.element_rate(e)
  203.       n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  204.       n   = [[n, -100].max, 200].min
  205.       dr  = r * (n + 100) / 100 / 3
  206.       rad = Math::PI * (360.0 * i / elements.size - 90.0) / 180.0
  207.       dx  = cx + Integer(dr * Math.cos(-rad))
  208.       dy  = cy + Integer(dr * Math.sin(rad))
  209.       points << [dx, dy]

  210.       dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
  211.       dy = cy + Integer((r + 14) * Math.sin(rad))  - 12
  212.       draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[e], dx, dy)
  213.     }

  214.     draw_chart(cx, cy, r, points, pw)
  215.     draw_chart_flash(@element_chart_sprite, x, y, r, points, pw)

  216.     return (x + cx + r + 42)
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ○ 属性耐性描画 (数値)
  220.   #     x, y : 描画先 X, Y
  221.   #    描画終了時の X 座標を返す。
  222.   #--------------------------------------------------------------------------
  223.   def draw_element_resistance_num(x, y)
  224.     origin_y = y
  225.     contents.font.color = normal_color
  226.     KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST.each { |i|
  227.       if y + WLH > contents.height
  228.         x += 84
  229.         y  = origin_y
  230.       end
  231.       draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[i], x, y)
  232.       n = @actor.element_rate(i)
  233.       n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  234.       rate = sprintf("%4d%%", n)
  235.       contents.draw_text(x + 24, y, 52, WLH, rate, 2)
  236.       y += WLH
  237.     }
  238.     return (x + 96)
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ○ ステート耐性描画
  242.   #     x, y : 描画先 X, Y
  243.   #     type : 表示形式 (:num, :chart, :both)
  244.   #    描画終了時の X 座標を返す。
  245.   #--------------------------------------------------------------------------
  246.   def draw_state_resistance(x, y, type)
  247.     if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
  248.       Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
  249.     end

  250.     if [:chart, :both].include?(type) && $imported["BitmapExtension"]
  251.       x = draw_state_resistance_chart(x, y)
  252.       @state_chart_sprite.visible = true
  253.     end
  254.     if [:num, :both].include?(type)
  255.       x = draw_state_resistance_num(x, y)
  256.     end

  257.     Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT

  258.     return x
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ○ ステート耐性描画 (チャート)
  262.   #     x, y : 描画先 X, Y
  263.   #    描画終了時の X 座標を返す。
  264.   #--------------------------------------------------------------------------
  265.   def draw_state_resistance_chart(x, y)
  266.     r  = (contents.height - y - 56) / 2
  267.     cx = x + r + 28
  268.     cy = y + r + 28
  269.     pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
  270.     states = KGC::ExtendedStatusScene::CHECK_STATE_LIST

  271.     draw_chart_line(cx, cy, r, states.size, 2, pw)

  272.     # チャート
  273.     points = []
  274.     states.each_with_index { |s, i|
  275.       state = $data_states[s]
  276.       n   = @actor.state_probability(s)
  277.       n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  278.       dr  = r * n / 100
  279.       rad = Math::PI * (360.0 * i / states.size - 90.0) / 180.0
  280.       dx  = cx + Integer(dr * Math.cos(-rad))
  281.       dy  = cy + Integer(dr * Math.sin(rad))
  282.       points << [dx, dy]

  283.       dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
  284.       dy = cy + Integer((r + 14) * Math.sin(rad))  - 12
  285.       draw_icon(state.icon_index, dx, dy)
  286.     }

  287.     draw_chart(cx, cy, r, points, pw)
  288.     draw_chart_flash(@state_chart_sprite, x, y, r, points, pw)

  289.     return (x + cx + r + 42)
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ○ ステート耐性描画 (数値)
  293.   #     x, y : 描画先 X, Y
  294.   #    描画終了時の X 座標を返す。
  295.   #--------------------------------------------------------------------------
  296.   def draw_state_resistance_num(x, y)
  297.     origin_y = y
  298.     contents.font.color = normal_color
  299.     KGC::ExtendedStatusScene::CHECK_STATE_LIST.each { |i|
  300.       state = $data_states[i]
  301.       if y + WLH > contents.height
  302.         x += 76
  303.         y  = origin_y
  304.       end
  305.       draw_icon(state.icon_index, x, y)
  306.       n = @actor.state_probability(i)
  307.       n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  308.       rate = sprintf("%3d%%", n)
  309.       contents.draw_text(x + 24, y, 44, WLH, rate, 2)
  310.       y += WLH
  311.     }
  312.     return x
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ○ チャートライン描画
  316.   #     cx, cy : 中心 X, Y
  317.   #     r      : 半径
  318.   #     n      : 頂点数
  319.   #     breaks : 空間数
  320.   #     pw     : ペン幅
  321.   #--------------------------------------------------------------------------
  322.   def draw_chart_line(cx, cy, r, n, breaks, pw)
  323.     color = KGC::ExtendedStatusScene::CHART_BASE_COLOR.clone
  324.     contents.draw_regular_polygon(cx, cy, r, n, color, pw)
  325.     color.alpha = color.alpha * 5 / 8
  326.     contents.draw_spoke(cx, cy, r, n, color, pw)
  327.     (1..breaks).each { |i|
  328.       contents.draw_regular_polygon(cx, cy, r * i / breaks, n, color, pw)
  329.     }
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ○ チャート描画
  333.   #     cx, cy : 中心 X, Y
  334.   #     r      : 半径
  335.   #     points : 頂点リスト
  336.   #     pw     : ペン幅
  337.   #--------------------------------------------------------------------------
  338.   def draw_chart(cx, cy, r, points, pw)
  339.     contents.draw_polygon(points, KGC::ExtendedStatusScene::CHART_LINE_COLOR, 2)
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ○ チャートフラッシュ描画
  343.   #     sprite : チャートスプライト
  344.   #     x, y   : 基準 X, Y
  345.   #     r      : 半径
  346.   #     points : 頂点リスト
  347.   #     pw     : ペン幅
  348.   #--------------------------------------------------------------------------
  349.   def draw_chart_flash(sprite, x, y, r, points, pw)
  350.     points = points.clone
  351.     points.each { |pt| pt[0] -= x }

  352.     cx = x + r + 28
  353.     cy = y + r + 28
  354.     color = KGC::ExtendedStatusScene::CHART_FLASH_COLOR
  355.     sprite.bitmap.clear
  356.     sprite.bitmap.fill_polygon(points, Color.new(0, 0, 0, 0), color)
  357.     sprite.ox = cx - x
  358.     sprite.oy = cy
  359.     sprite.x  = self.x + cx + 16
  360.     sprite.y  = self.y + cy + 16
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● フレーム更新
  364.   #--------------------------------------------------------------------------
  365.   def update
  366.     super
  367.     update_chart
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ○ チャート更新
  371.   #--------------------------------------------------------------------------
  372.   def update_chart
  373.     return if @element_chart_sprite == nil

  374.     @element_chart_sprite.update
  375.     @state_chart_sprite.update

  376.     zoom = opacity = 0
  377.     case @duration
  378.     when 0..11
  379.       zoom    = @duration / 11.0
  380.       opacity = 255
  381.     when 12..27
  382.       zoom    = 1
  383.       opacity = (27 - @duration) * 16
  384.     end
  385.     @element_chart_sprite.zoom_x  = @element_chart_sprite.zoom_y = zoom
  386.     @element_chart_sprite.opacity = opacity
  387.     @state_chart_sprite.zoom_x    = @state_chart_sprite.zoom_y   = zoom
  388.     @state_chart_sprite.opacity   = opacity

  389.     @duration = (@duration + 1) % Graphics.frame_rate
  390.   end
  391. end
复制代码
第三个脚本是和上面要并用的Bitmap扩张 脚本
直接到KGC载即可  传送门
另外使用此脚本的话还需抓TRGSS.sll    同样上面连过去往下拉後就会看到载点
载下来後  脚本中的
  1. DEFAULT_MODE = 0
复制代码
请记得修改成0 (我的设定是0  可视自己脚本状况决定是否设为其他值)
  1. 背景资料栏呼叫方法
  2. 先由菜单进到人物状态栏
  3. 进到状态栏後再按一次Z键即会迈到背景资料栏(RMVX称呼为C键  SPACE、ENTER也都是C键)
  4. 左右切换角色   取消键回到主菜单

  5. 通过脚本直接调用的方法:$scene = Scene_Back_Data.new(@actor_index)
  6. @actor_index为角色在队伍中的序号   第一位为0  第二位为1   依此类推
复制代码
此脚本绝对还有很多改进空间(汗  若是全资料都放上  小空间塞这么多字也真难为这窗口了)
不过大致上也只是调调座标罢了
可以自行修改一下调到自己需要的位置
虽然有想仿下大作游戏   不过暂时先这样吧~(倒)

工程
Project1.rar (550.21 KB, 下载次数: 699)

点评

没有主角名字,年龄,事迹这些东西的显示。  发表于 2011-3-20 17:19
应该会显示 如果没显示代表是未设定 如果真的有问题 可能要等晚点我再看下怎解决 手边无vx中  发表于 2010-10-26 15:55
怎么范例没有显示主角名字这些东西的啊?  发表于 2010-10-26 12:09

评分

参与人数 3星屑 +1004 +4 收起 理由
dorx2010 + 2
shinliwei + 2
九夜神尊 + 1000 + 4 超级强大的东西

查看全部评分

Lv1.梦旅人

梦石
0
星屑
47
在线时间
557 小时
注册时间
2010-8-19
帖子
307
2
发表于 2010-10-26 04:24:35 | 只看该作者
如此华丽,lz大爱啊
不过好是好,但资料总给人一种不爽的感觉(死
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
244 小时
注册时间
2010-10-18
帖子
445
3
发表于 2010-10-26 09:09:48 | 只看该作者
新人来拿东西了...谢啦..
学习中..
我不再捣蛋了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2010-6-25
帖子
29
4
发表于 2010-10-26 09:20:05 | 只看该作者
好东西   谢谢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
115 小时
注册时间
2010-5-3
帖子
346
5
发表于 2010-10-26 11:44:11 | 只看该作者
刚试用了一下,发现这个作品绝对是极品
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
308 小时
注册时间
2010-8-10
帖子
794
6
发表于 2010-10-26 12:05:53 | 只看该作者
支持
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小莹爱水区

梦石
0
星屑
60
在线时间
163 小时
注册时间
2010-9-18
帖子
1085
7
发表于 2010-10-26 12:07:58 | 只看该作者
这个作品是很好滴。可以是精品......但不能说是极品..

点评

哈 我也颇赞同 不过觉得可能连精品也称不上 毕竞只是设定些文字显示和座标罢了 但对大家有用就够了  发表于 2010-10-26 15:58
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
671 小时
注册时间
2008-6-5
帖子
863
8
发表于 2010-10-26 12:22:07 | 只看该作者
似曾相识的感觉。。。

点评

因为华丽啊~(笑)  发表于 2010-10-26 20:45
主要是先前看到过一个同样的属性环, 似乎大家都喜欢那个东东。。  发表于 2010-10-26 17:34
似曾相识应该是正常现久 人物详细资料栏颇多人做过 只是找不到自己想要的风格 就乾脆自己写个出来了  发表于 2010-10-26 16:22
雕风雪,刻山海,存天地,留日月,一曲引苍穹。
断四肢,夺五感,废身体,倦心神,一剑斩罪业。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

9
发表于 2010-10-26 22:06:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
78 小时
注册时间
2011-2-17
帖子
27
10
发表于 2011-3-11 15:35:59 | 只看该作者
年龄那个可以是变量吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 13:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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