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

Project1

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

用图标表示某种状态

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2006-6-22
帖子
21
跳转到指定楼层
1
发表于 2006-6-30 22:09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各种各样扩充状态的表示方法。


比方说能够这样的事。
   图标表示状态。
   状态卡通片的替换顺序。
   巴特勒下面表示状态。
   旋转状态的表示


供角色使用的的设定
ACTOR_STATE = true 或 MENU_ST_ICON = true 需要我们设定


↓用图标在战斗表示状态。

分别插入2个……:
  1. #==============================================================================
  2. # 仭 僗僥乕僩昞帵奼挘      Ver.1.0.1              by Claimh
  3. #------------------------------------------------------------------------------
  4. #   丒僗僥乕僩偺傾僯儊乕僔儑儞昞帵傪懡廳壔偟傑偡丅乮弴乆偵愗傝懼偊乯
  5. #   丒僶僩儔乕壓偵僗僥乕僩傪昞帵偝偣傑偡丅
  6. #-< 嵞掕媊売強 >---------------------------------------------------------------
  7. # Sprite_Battler僋儔僗偺慡儊僜僢僪(initialize, dispose, update)
  8. #==============================================================================

  9. module State_Extension
  10. #==============================================================================
  11. # 僇僗僞儅僀僘START
  12. #==============================================================================
  13.   #--------------------------------------------------------------------------
  14.   # 仧 僗僥乕僩傾僯儊乕僔儑儞愝掕
  15.   #--------------------------------------------------------------------------
  16.   # 傾僯儊乕僔儑儞昞帵偺儘乕僥乕僔儑儞婡擻傪桳岠偵偡傞丠
  17.   # 僗僥乕僩傾僯儊乕僔儑儞傪弴孞傝偵曄偊傑偡丅
  18.   # 乮椺乯僗僥乕僩A 佀 僗僥乕僩B 佀 僗僥乕僩C 佀 僗僥乕僩A 丒丒丒
  19.   STATE_ANIME = true            # true丗桳岠丂false丗柍岠

  20.   # 傾僯儊乕僔儑儞儖乕僾夞悢
  21.   LOOP_COUNT = 4
  22.   
  23.   #--------------------------------------------------------------------------
  24.   # 仧 僗僥乕僩昞帵愝掕
  25.   #--------------------------------------------------------------------------
  26.   # 傾僋僞乕壓偵僗僥乕僩昞帵傪偡傞丠
  27.   #   true丗昞帵丂false丗旕昞帵
  28.   ACTOR_STATE = true
  29.   # 僄僱儈乕壓偵僗僥乕僩昞帵傪偡傞丠
  30.   #   true丗昞帵丂false丗旕昞帵
  31.   ENEMY_STATE = true

  32.   # 僗僥乕僩偺昞帵曽朄僷僞乕儞
  33.   #   0丗捠忢昞帵乮昞帵偑偱偒傞僗僥乕僩悢偵尷傝偑偱偒傑偡乯
  34.   #   1丗儘乕僥乕僔儑儞昞帵乮偄偔偮偐偺僗僥乕僩傪弴孞傝偵昞帵乯
  35.   #   2丗僗僥乕僩傾僯儊乕僔儑儞偲摨婜乮昞帵拞偺傾僯儊偲摨偠僗僥乕僩傪昞帵乯
  36.   #       仸傾僯儊乕僔儑儞偺側偄僗僥乕僩偼昞帵偝傟傑偣傫丅
  37.   STATE_PATTERN = 1

  38.   # 昞帵埵抲曗惓乮y幉曽岦乯
  39.   STATE_Y = 4
  40.   #--------------------------------------------------------------------------
  41.   # 仧 儘乕僥乕僔儑儞愝掕   丗STATE_PATTARN = 1 偺偲偒偺傒桳岠
  42.   #--------------------------------------------------------------------------
  43.   # 儘乕僥乕僔儑儞偺峏怴傪偡傞僼儗乕儉悢
  44.   ROT_COUNT = 40

  45.   #--------------------------------------------------------------------------
  46.   # 仧 僗僥乕僩偺傾僀僐儞昞帵愝掕
  47.   #--------------------------------------------------------------------------
  48.   # 愴摤拞偺僗僥乕僩傪傾僀僐儞昞帵偵偡傞丠
  49.   #   true丗傾僀僐儞昞帵丂false丗僥僉僗僩昞帵(張棟廳偄)
  50.   STATE_ICON = true
  51.   
  52.   # 儊僯儏乕偺僗僥乕僩傪傾僀僐儞昞帵偡傞丠
  53.   MENU_ST_ICON = true
  54.   
  55.   # 奺僗僥乕僩偺傾僀僐儞巜掕
  56.   #   仸 傾僀僐儞巜掕偺側偄僗僥乕僩偼昞帵偝傟側偔側傝傑偡
  57.   STATE_ICON_FILE = {
  58.       # 僗僥乕僩ID => "傾僀僐儞僼傽僀儖柤"
  59.       3 => "045-Skill02",
  60.       4 => "046-Skill03",
  61.       5 => "046-Skill03",
  62.       6 => "049-Skill06",
  63.       7 => "050-Skill07",
  64.       8 => "050-Skill07"
  65.   }
  66.   
  67.   # 傾僀僐儞偺昞帵娫妘
  68.   ICON_INTERVAL = 5

  69. #==============================================================================
  70. # 僇僗僞儅僀僘END
  71. #==============================================================================
  72.   module_function
  73.   #--------------------------------------------------------------------------
  74.   # 仠 僗僥乕僩偺傾僯儊乕僔儑儞 ID 庢摼
  75.   #--------------------------------------------------------------------------
  76.   def state_animations(states)
  77.     # 僗僥乕僩偑傂偲偮傕晅壛偝傟偰偄側偄応崌
  78.     if states.size == 0
  79.       return []
  80.     end
  81.     animations = []
  82.     for i in 0...states.size
  83.       animations.push($data_states[states[i]].animation_id)
  84.     end
  85.     # 傾僯儊乕僔儑儞ID = 0傪嶍彍
  86.     animations.delete(0)
  87.     # 慡偰偺傾僯儊乕僔儑儞ID傪曉偡
  88.     return animations
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # 仠 昤夋梡偺僗僥乕僩暥帤楍嶌惉
  92.   #     state       : 僗僥乕僩ID孮
  93.   #     width       : 昤夋愭偺暆
  94.   #--------------------------------------------------------------------------
  95.   def make_state_text(bitmap, state, width)
  96.     # 妵屖偺暆傪庢摼
  97.     brackets_width = bitmap.text_size("[]").width
  98.     # 僗僥乕僩柤偺暥帤楍傪嶌惉
  99.     text = ""
  100.     for i in state
  101.       if $data_states[i].rating >= 1
  102.         if text == ""
  103.           text = $data_states[i].name
  104.         else
  105.           new_text = text + "/" + $data_states[i].name
  106.           text_width = bitmap.text_size(new_text).width
  107.           if text_width > width - brackets_width
  108.             break
  109.           end
  110.           text = new_text
  111.         end
  112.       end
  113.     end
  114.     # 僗僥乕僩柤偺暥帤楍偑嬻丠
  115.     if text != ""
  116.       # 妵屖傪偮偗傞
  117.       text = "[" + text + "]"
  118.     end
  119.     # 姰惉偟偨暥帤楍傪曉偡
  120.     return text
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # 仠 昤夋梡偺僗僥乕僩傾僀僐儞孮嶌惉
  124.   #     state       : 僗僥乕僩ID孮
  125.   #     width       : 昤夋愭偺暆
  126.   #--------------------------------------------------------------------------
  127.   def make_state_icon(state, width)
  128.     icon_width = 0
  129.     icon_states = []
  130.     for i in 0...state.size
  131.       unless STATE_ICON_FILE[state[i]].nil?
  132.         # 傾僀僐儞僼傽僀儖偺價僢僩儅僢僾撉傒崬傒
  133.         bitmap = RPG::Cache.icon(STATE_ICON_FILE[state[i]])
  134.         next_width = icon_width + bitmap.width + ICON_INTERVAL
  135.         # 昞帵斖埻傪僆乕僶乕偟偰偄側偄偐丠
  136.         if width > next_width
  137.           # 昞帵傾僀僐儞偵捛壛
  138.           icon_states.push(STATE_ICON_FILE[state[i]])
  139.           # 暆峏怴
  140.           icon_width += bitmap.width + ICON_INTERVAL
  141.         else
  142.           break
  143.         end
  144.       end
  145.     end
  146.     return icon_states
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # 仠 儘乕僥乕僔儑儞偝偣傞偐偺敾掕
  150.   #     state       : 僗僥乕僩ID孮
  151.   #     width       : 昤夋愭偺暆
  152.   #--------------------------------------------------------------------------
  153.   def do_rotation?(bitmap, state, width)
  154.     case STATE_ICON
  155.     when true   # 傾僀僐儞
  156.       icon_width = 0
  157.       for i in 0...state.size
  158.         unless STATE_ICON_FILE[state[i]].nil?
  159.           # 傾僀僐儞僼傽僀儖偺價僢僩儅僢僾撉傒崬傒
  160.           bitmap = RPG::Cache.icon(STATE_ICON_FILE[state[i]])
  161.           next_width = icon_width + bitmap.width + ICON_INTERVAL
  162.           # 昞帵斖埻傪僆乕僶乕偟偰偄側偄偐丠
  163.           if width > next_width
  164.             # 暆峏怴
  165.             icon_width += bitmap.width + ICON_INTERVAL
  166.           else
  167.             # 儘乕僥乕僔儑儞偑昁梫
  168.             return true
  169.           end
  170.         end
  171.       end
  172.     when false  # 僥僉僗僩
  173.       # 妵屖偺暆傪庢摼
  174.       brackets_width = bitmap.text_size("[]").width
  175.       # 僗僥乕僩柤偺暥帤楍傪嶌惉
  176.       text = ""
  177.       for i in state
  178.         if $data_states[i].rating >= 1
  179.           if text == ""
  180.             text = $data_states[i].name
  181.           else
  182.             new_text = text + "/" + $data_states[i].name
  183.             text_width = bitmap.text_size(new_text).width
  184.             if text_width > width - brackets_width
  185.               # 儘乕僥乕僔儑儞偑昁梫
  186.               return true
  187.             end
  188.             text = new_text
  189.           end
  190.         end
  191.       end
  192.     else
  193.       p "Err:STATE_ICON"
  194.       exit
  195.     end
  196.     # 儘乕僥乕僔儑儞偼晄梫
  197.     return false
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # 仠 僗僥乕僩偺儘乕僥乕僔儑儞
  201.   #     state       : 僗僥乕僩ID孮
  202.   #     index       : 儘乕僥乕僔儑儞奐巒Index
  203.   #--------------------------------------------------------------------------
  204.   def rotation_state(state, index)
  205.     rot_state = []
  206.     for i in index...state.size
  207.       rot_state.push(state[i])
  208.     end
  209.     for i in 0...index
  210.       rot_state.push(state[i])
  211.     end
  212.     return rot_state
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # 仠 僗僥乕僩梡傾僀僐儞偺昤夋奐巒埵抲偺寁嶼
  216.   #     state       : 僗僥乕僩ID孮
  217.   #     width       : 昤夋愭偺暆
  218.   #--------------------------------------------------------------------------
  219.   def make_icon_pos_x(state, width)
  220.     icon_width = 0
  221.     for i in 0...state.size
  222.       bitmap = RPG::Cache.icon(state[i])
  223.       # 暆峏怴
  224.       icon_width += bitmap.width + ICON_INTERVAL
  225.     end
  226.     # 昤夋奐巒埵抲偺寁嶼
  227.     pos_x = (width - icon_width) / 2
  228.     return pos_x
  229.   end
  230. end


  231. #==============================================================================
  232. # 仭 Sprite_Battler
  233. #==============================================================================
  234. class Sprite_Battler < RPG::Sprite
  235.   # 僗僥乕僩昞帵椞堟偺暆丄崅偝傪掕媊
  236.   BITMAP_WIDTH = 120
  237.   BITMAP_HEIGHT = 32
  238.   #--------------------------------------------------------------------------
  239.   # 仠 僆僽僕僃僋僩弶婜壔 [嵞掕媊]
  240.   #     viewport : 價儏乕億乕僩
  241.   #     battler  : 僶僩儔乕 (Game_Battler)
  242.   #--------------------------------------------------------------------------
  243.   def initialize(viewport, battler = nil)
  244.     super(viewport)
  245.     @battler = battler
  246.     @battler_visible = false
  247. #-[僗僥乕僩昞帵奼挘]------
  248.     @rotation_count = 0               # 儘乕僥乕僔儑儞梡偺僇僂儞僩
  249.     @rotation_index = 0               # 儘乕僥乕僔儑儞Index
  250.     @loop_state_animation_count = 0   # 儖乕僾僇僂儞僩
  251.     @battler_state = []               # 撪晹曐帩梡僗僥乕僩
  252.     @state_update_flag = false        # 僗僥乕僩峏怴僼儔僌
  253.     @sync_update_flag = false         # 傾僯儊乕僔儑儞摨婜梡僼儔僌
  254.     # 僗僥乕僩昞帵梡僗僾儔僀僩傪梡堄
  255.     @state_sprite = Sprite.new(viewport)
  256.     @state_sprite.bitmap = Bitmap.new(BITMAP_WIDTH, BITMAP_HEIGHT)
  257. #-------------------------
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # 仠 夝曻 [嵞掕媊]
  261.   #--------------------------------------------------------------------------
  262.   def dispose
  263. #-[僗僥乕僩昞帵奼挘]------
  264.     @state_sprite.dispose
  265. #-------------------------
  266.     if self.bitmap != nil
  267.       self.bitmap.dispose
  268.     end
  269.     super
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # 仠 僼儗乕儉峏怴 [嵞掕媊]
  273.   #--------------------------------------------------------------------------
  274.   def update
  275.     super
  276.     # 僶僩儔乕偑 nil 偺応崌
  277.     if @battler == nil
  278.       self.bitmap = nil
  279.       loop_animation(nil)
  280.       return
  281.     end
  282.     # 僼傽僀儖柤偐怓憡偑尰嵼偺傕偺偲堎側傞応崌
  283.     if @battler.battler_name != @battler_name or
  284.        @battler.battler_hue != @battler_hue
  285.       # 價僢僩儅僢僾傪庢摼丄愝掕
  286.       @battler_name = @battler.battler_name
  287.       @battler_hue = @battler.battler_hue
  288.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  289.       @width = bitmap.width
  290.       @height = bitmap.height
  291.       self.ox = @width / 2
  292.       self.oy = @height
  293.       # 愴摤晄擻傑偨偼塀傟忬懺側傜晄摟柧搙傪 0 偵偡傞
  294.       if @battler.dead? or @battler.hidden
  295.         self.opacity = 0
  296.       end
  297.     end
  298. #-[僗僥乕僩昞帵奼挘]------
  299. =begin
  300.   伀尨宆伀
  301.     # 傾僯儊乕僔儑儞 ID 偑尰嵼偺傕偺偲堎側傞応崌
  302.     if @battler.damage == nil and
  303.        @battler.state_animation_id != @state_animation_id
  304.       @state_animation_id = @battler.state_animation_id
  305.       loop_animation($data_animations[@state_animation_id])
  306.     end
  307.   仾尨宆仾
  308. =end
  309.     # 僗僥乕僩奼挘昞帵
  310.     update_state_extension
  311. #-------------------------
  312.     # 昞帵偝傟傞傋偒傾僋僞乕偺応崌
  313.     if @battler.is_a?(Game_Actor) and @battler_visible
  314.       # 儊僀儞僼僃乕僘偱側偄偲偒偼晄摟柧搙傪傗傗壓偘傞
  315.       if $game_temp.battle_main_phase
  316.         self.opacity += 3 if self.opacity < 255
  317.       else
  318.         self.opacity -= 3 if self.opacity > 207
  319.       end
  320.     end
  321.     # 柧柵
  322.     if @battler.blink
  323.       blink_on
  324.     else
  325.       blink_off
  326.     end
  327.     # 晄壜帇偺応崌
  328.     unless @battler_visible
  329.       # 弌尰
  330.       if not @battler.hidden and not @battler.dead? and
  331.          (@battler.damage == nil or @battler.damage_pop)
  332.         appear
  333.         @battler_visible = true
  334.       end
  335.     end
  336.     # 壜帇偺応崌
  337.     if @battler_visible
  338.       # 摝憱
  339.       if @battler.hidden
  340.         $game_system.se_play($data_system.escape_se)
  341.         escape
  342.         @battler_visible = false
  343.       end
  344.       # 敀僼儔僢僔儏
  345.       if @battler.white_flash
  346.         whiten
  347.         @battler.white_flash = false
  348.       end
  349.       # 傾僯儊乕僔儑儞
  350.       if @battler.animation_id != 0
  351.         animation = $data_animations[@battler.animation_id]
  352.         animation(animation, @battler.animation_hit)
  353.         @battler.animation_id = 0
  354.       end
  355.       # 僟儊乕僕
  356.       if @battler.damage_pop
  357.         damage(@battler.damage, @battler.critical)
  358.         @battler.damage = nil
  359.         @battler.critical = false
  360.         @battler.damage_pop = false
  361.       end
  362.       # 僐儔僾僗
  363.       if @battler.damage == nil and @battler.dead?
  364.         if @battler.is_a?(Game_Enemy)
  365.           $game_system.se_play($data_system.enemy_collapse_se)
  366.         else
  367.           $game_system.se_play($data_system.actor_collapse_se)
  368.         end
  369.         collapse
  370.         @battler_visible = false
  371.       end
  372.     end
  373.     # 僗僾儔僀僩偺嵗昗傪愝掕
  374.     self.x = @battler.screen_x
  375.     self.y = @battler.screen_y
  376.     self.z = @battler.screen_z
  377.   end

  378. #==============================================================================
  379. # 仭 奼挘儊僜僢僪
  380. #==============================================================================
  381.   #--------------------------------------------------------------------------
  382.   # 仠 僗僥乕僩奼挘昞帵偺峏怴
  383.   #--------------------------------------------------------------------------
  384.   def update_state_extension
  385.     # 晄壜帇偺応崌
  386.     unless @battler_visible
  387.       @state_sprite.bitmap.clear
  388.       return
  389.     end
  390.     # 僗僥乕僩偑峏怴偝傟偨丠
  391.     if @battler.damage == nil
  392.       if @battler_state != @battler.states
  393.         @battler_state = @battler.states.dup  # 僗僥乕僩偺峏怴
  394.         @state_update_flag = true         # 峏怴僼儔僌ON
  395.       end
  396.     end
  397.     # 僗僥乕僩傾僯儊乕僔儑儞偺峏怴
  398.     update_state_animation
  399.     # 僗僥乕僩昞帵偺峏怴
  400.     update_state
  401.     # 峏怴偺廔椆
  402.     @state_update_flag = false     # 僗僥乕僩峏怴僼儔僌OFF
  403.     @sync_update_flag = false      # 僗僥乕僩傾僯儊乕僔儑儞偺峏怴僼儔僌OFF
  404.   end
  405.   #--------------------------------------------------------------------------
  406.   # 仠 僗僥乕僩傾僯儊乕僔儑儞峏怴
  407.   #--------------------------------------------------------------------------
  408.   def update_state_animation
  409.     # 僗僥乕僩傾僯儊乕僔儑儞
  410.     if State_Extension::STATE_ANIME
  411.       # 懡廳僗僥乕僩傾僯儊乕僔儑儞傪昞帵偡傞
  412.       multiple_state_animation
  413.     else
  414.       # 捠忢偺昞帵曽朄傪慖戰
  415.       # 傾僯儊乕僔儑儞 ID 偑尰嵼偺傕偺偲堎側傞応崌   [尨宆傪巊梡偡傞]
  416.       if @battler.damage == nil and
  417.          @battler.state_animation_id != @state_animation_id
  418.         @state_animation_id = @battler.state_animation_id
  419.         loop_animation($data_animations[@state_animation_id])
  420.       end
  421.     end
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # 仠 懡廳僗僥乕僩傾僯儊乕僔儑儞
  425.   #--------------------------------------------------------------------------
  426.   def multiple_state_animation
  427.     # 傾僯儊乕僔儑儞偺偁傞僗僥乕僩傪撉傒崬傒
  428.     anime_states = State_Extension.state_animations(@battler_state)
  429.     # 傾僯儊乕僔儑儞偺偁傞僗僥乕僩偑晅梌偝傟偰偄傞
  430.     unless anime_states.empty?
  431.       # 僗僥乕僩偺峏怴偑側偝傟偨応崌
  432.       if @state_update_flag
  433.         # 僗僥乕僩Index傪弶婜壔
  434.         @loop_state_index = 0
  435.         # 儖乕僾傾僯儊乕僔儑儞偺愝掕
  436.         set_loop_animation(anime_states)
  437.       end
  438.       @loop_state_animation_count -= 1
  439.       # 儖乕僾僇僂儞僩偑0偵側偭偨
  440.       if @loop_state_animation_count == 0
  441.         # 僗僥乕僩Index偺峏怴
  442.         @loop_state_index += 1
  443.         if @loop_state_index == anime_states.size
  444.           @loop_state_index = 0
  445.         end
  446.         # 儖乕僾傾僯儊乕僔儑儞偺愝掕
  447.         set_loop_animation(anime_states)
  448.       end
  449.     else
  450.       # 慡僗僥乕僩夝彍帪偵儖乕僾傾僯儊乕僔儑儞傪徚偡
  451.       if @state_update_flag
  452.         # 傾僯儊乕僔儑儞偺峏怴傪専抦
  453.         @sync_update_flag = true
  454.         @loop_state_animation_count = 0
  455.         @loop_state_index = 0
  456.         loop_animation(nil)
  457.       end
  458.     end
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # 仠 儖乕僾傾僯儊乕僔儑儞愝掕
  462.   #--------------------------------------------------------------------------
  463.   def set_loop_animation(anime_states)
  464.     # 傾僯儊乕僔儑儞偺峏怴傪専抦
  465.     @sync_update_flag = true
  466.     # 昞帵偝偣傞僗僥乕僩傾僯儊乕僔儑儞ID傪撉傒崬傒
  467.     animation_id = anime_states[@loop_state_index]
  468.     # 傾僯儊乕僔儑儞撉傒崬傒
  469.     anime_data = $data_animations[animation_id]
  470.     # 僼儗乕儉悢傪愝掕
  471.     @loop_state_animation_count = anime_data.frames.size * State_Extension::LOOP_COUNT
  472.     # 儖乕僾傾僯儊乕僔儑儞傪愝掕
  473.     loop_animation(anime_data)
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # 仠 僗僥乕僩昞帵峏怴
  477.   #--------------------------------------------------------------------------
  478.   def update_state
  479.     # 昞帵桳岠敾掕
  480.     case @battler
  481.     when Game_Actor
  482.       # 傾僋僞乕桳岠丠
  483.       unless State_Extension::ACTOR_STATE
  484.         # 柍懯側偺偱僨僼僅儖僩柍岠偵丅
  485.         return
  486.       end
  487.     when Game_Enemy
  488.       # 僄僱儈乕桳岠丠
  489.       unless State_Extension::ENEMY_STATE
  490.         return
  491.       end
  492.     else
  493.       p "Err: 'Sprite_Battler' can use actor or enemy only"
  494.       exit
  495.     end
  496.     # 僗僥乕僩昞帵偺嵞僙僢僩傾僢僾
  497.     case State_Extension::STATE_PATTERN
  498.     when 0  # 捠忢昞帵
  499.       make_normal_state
  500.     when 1  # 儘乕僥乕僔儑儞
  501.       make_rotation_state
  502.     when 2  # 僗僥乕僩傾僯儊乕僔儑儞偲摨婜
  503.       make_synchronous_state
  504.     else
  505.       p "Err:STATE_PATTERN"
  506.       exit
  507.     end
  508.     # 昞帵埵抲偺峏怴丅
  509.     @state_sprite.x = @battler.screen_x - BITMAP_WIDTH / 2
  510.     @state_sprite.y = @battler.screen_y - BITMAP_HEIGHT + State_Extension::STATE_Y
  511.     @state_sprite.z = @battler.screen_z
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # 仠 捠忢偺僗僥乕僩昞帵
  515.   #--------------------------------------------------------------------------
  516.   def make_normal_state
  517.     # 僗僥乕僩偺峏怴偁傝丠
  518.     if @state_update_flag
  519.       draw_state(@battler_state)
  520.     end
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # 仠 儘乕僥乕僔儑儞偟偨僗僥乕僩昞帵
  524.   #--------------------------------------------------------------------------
  525.   def make_rotation_state
  526.     # 僗僥乕僩偑晅梌偝傟偰偄傞丠
  527.     unless @battler_state.empty?
  528.       # 儘乕僥乕僔儑儞偝偣傞傋偒偐丠
  529.       if State_Extension.do_rotation?(@state_sprite.bitmap, @battler_state, BITMAP_WIDTH)
  530.         # 儘乕僥乕僔儑儞僇僂儞僩+1
  531.         @rotation_count += 1
  532.       end
  533.       # 僗僥乕僩偺峏怴偁傝丠
  534.       if @state_update_flag
  535.         @rotation_count = State_Extension::ROT_COUNT
  536.         @rotation_index = 0
  537.       end
  538.       # 儘乕僥乕僔儑儞偺峏怴偁傝丠
  539.       if @rotation_count == State_Extension::ROT_COUNT
  540.         @rotation_count = 0
  541.         # 儘乕僥乕僔儑儞Index抣偺峏怴
  542.         @rotation_index += 1
  543.         if @rotation_index >= @battler_state.size
  544.           @rotation_index = 0
  545.         end
  546.         # 儘乕僥乕僔儑儞偟偨僗僥乕僩孮偺庢摼
  547.         state = State_Extension.rotation_state(@battler_state, @rotation_index)
  548.         draw_state(state)
  549.       end
  550.     else
  551.       # 僗僥乕僩偺峏怴偁傝丠
  552.       if @state_update_flag
  553.         # 昞帵傪僋儕傾
  554.         @state_sprite.bitmap.clear
  555.         @rotation_count = 0
  556.         @rotation_index = 0
  557.       end
  558.     end
  559.   end
  560.   #--------------------------------------------------------------------------
  561.   # 仠 傾僯儊乕僔儑儞偲摨婜偟偨僗僥乕僩昞帵偺峏怴
  562.   #--------------------------------------------------------------------------
  563.   def make_synchronous_state
  564.     # 僗僥乕僩傾僯儊乕僔儑儞偺峏怴偁傝丠
  565.     if @sync_update_flag
  566.       # 昞帵拞偺傾僯儊乕僔儑儞偵墳偠偨僗僥乕僩ID傪庢摼
  567.       state = [@battler_state[@loop_state_index]]
  568.       draw_state(state)
  569.     end
  570.   end
  571.   #--------------------------------------------------------------------------
  572.   # 仠 僗僥乕僩昞帵乮傾僀僐儞乛僥僉僗僩乯
  573.   #    state  : 僗僥乕僩梡傾僀僐儞僼傽僀儖孮
  574.   #--------------------------------------------------------------------------
  575.   def draw_state(state)
  576.     # 昞帵傪僋儕傾
  577.     @state_sprite.bitmap.clear
  578.     # 僗僥乕僩昞帵
  579.     case State_Extension::STATE_ICON
  580.     when false  # 僥僉僗僩昞帵
  581.       text = State_Extension.make_state_text(@state_sprite.bitmap, state, BITMAP_WIDTH)
  582.       # 僗僥乕僩昤幨(捠忢)
  583.       @state_sprite.bitmap.draw_text(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT, text, 1)
  584.       # 僗僥乕僩昤幨(墢暥帤)
  585.       #@state_sprite.bitmap.draw_edging_text(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT, text, 1)
  586.     when true   # 傾僀僐儞昞帵
  587.       # 僗僥乕僩梡傾僀僐儞偺僼傽僀儖柤傪庢摼
  588.       icon_state = State_Extension.make_state_icon(state, BITMAP_WIDTH)
  589.       # 僗僥乕僩偺傾僀僐儞昤幨
  590.       draw_state_icon(icon_state)
  591.     else
  592.       p "Err:STATE_ICON"
  593.     end
  594.   end
  595.   #--------------------------------------------------------------------------
  596.   # 仠 僗僥乕僩梡傾僀僐儞昞帵
  597.   #    state  : 僗僥乕僩梡傾僀僐儞僼傽僀儖孮
  598.   #--------------------------------------------------------------------------
  599.   def draw_state_icon(state)
  600.     # 昤夋奐巒埵抲偺寛掕
  601.     x = State_Extension.make_icon_pos_x(state, BITMAP_WIDTH)
  602.     for i in 0...state.size
  603.       bitmap = RPG::Cache.icon(state[i])
  604.       cw = bitmap.width
  605.       ch = bitmap.height
  606.       src_rect = Rect.new(0, 0, cw, ch)
  607.       @state_sprite.bitmap.blt(x, 0, bitmap, src_rect)
  608.       # 昤夋埵抲傪恑傔傞
  609.       x += cw + State_Extension::ICON_INTERVAL
  610.     end
  611.   end
  612. end


复制代码
  1. #==============================================================================
  2. # 仭 僗僥乕僩昞帵奼挘[傾僋僞乕梡]                    by Claimh
  3. #------------------------------------------------------------------------------
  4. #   丒傾僋僞乕梡偺僗僥乕僩昞帵奼挘傪偝偣傞偨傔偺捛壛張棟丅
  5. #   丒ACTOR_STATE = true 偺偲偒 MENU_ST_ICON = true 偺偲偒偼昁恵偱偡丅
  6. #==============================================================================

  7. #==============================================================================
  8. # 仭 Window_Base
  9. #==============================================================================
  10. class Window_Base < Window
  11.   #--------------------------------------------------------------------------
  12.   # 仠 僗僥乕僩偺昤夋
  13.   #     actor : 傾僋僞乕
  14.   #     x     : 昤夋愭 X 嵗昗
  15.   #     y     : 昤夋愭 Y 嵗昗
  16.   #     width : 昤夋愭偺暆
  17.   #--------------------------------------------------------------------------
  18.   alias draw_state_normal draw_actor_state
  19.   def draw_actor_state(actor, x, y, width = 120)
  20.     # 愴摤拞丠
  21.     if $scene.is_a?(Scene_Battle)
  22.       if State_Extension::ACTOR_STATE
  23.         # 僗僥乕僩桳傝丠
  24.         unless actor.states.empty?
  25.           # 昞帵偟側偄
  26.           return
  27.         end
  28.       end
  29.     else
  30.       if State_Extension::MENU_ST_ICON
  31.         # 僗僥乕僩桳傝丠
  32.         unless actor.states.empty?
  33.           # 僗僥乕僩傪傾僀僐儞昞帵
  34.           draw_state_icon(actor, x, y, width)
  35.           return
  36.         end
  37.       end
  38.     end
  39.     # 捠忢昞帵
  40.     draw_state_normal(actor, x, y, width)
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # 仠 僗僥乕僩梡傾僀僐儞昞帵
  44.   #    state  : 僗僥乕僩梡傾僀僐儞僼傽僀儖孮
  45.   #--------------------------------------------------------------------------
  46.   def draw_state_icon(actor, x, y, width = 120)
  47.     # 傾僀僐儞僼傽僀儖孮傪庢摼
  48.     icon_state = State_Extension.make_state_icon(actor.states, width)
  49.     # 昤夋奐巒埵抲偺寛掕
  50.     x = 0
  51.     for i in 0...icon_state.size
  52.       bitmap = RPG::Cache.icon(icon_state[i])
  53.       cw = bitmap.width
  54.       ch = bitmap.height
  55.       src_rect = Rect.new(0, 0, cw, ch)
  56.       self.bitmap.blt(x, ch/2, bitmap, src_rect)
  57.       # 昤夋埵抲傪恑傔傞
  58.       x += cw + State_Extension::ICON_INTERVAL
  59.     end
  60.   end
  61. end


  62. #==============================================================================
  63. # 仭 Window_BattleStatus
  64. #==============================================================================
  65. class Window_BattleStatus < Window_Base
  66.   #--------------------------------------------------------------------------
  67.   # 仠 儗儀儖傾僢僾僼儔僌偺愝掕
  68.   #     actor_index : 傾僋僞乕僀儞僨僢僋僗
  69.   #--------------------------------------------------------------------------
  70.   def level_up?(actor_index)
  71.     return @level_up_flags[actor_index]
  72.   end
  73. end

  74. #==============================================================================
  75. # 仭 Scene_Battle
  76. #==============================================================================
  77. class Scene_Battle
  78.   #--------------------------------------------------------------------------
  79.   # 仠 傾僼僞乕僶僩儖僼僃乕僘奐巒
  80.   #--------------------------------------------------------------------------
  81.   alias start_phase5_state_ex start_phase5
  82.   def start_phase5
  83.     start_phase5_state_ex
  84.     # 儗儀儖傾僢僾昞帵帪偵僗僥乕僩傪徚偡
  85.     for i in 0...$game_party.actors.size
  86.       if @status_window.level_up?(i)
  87.         @spriteset.delete_state(i)
  88.       end
  89.     end
  90.   end
  91. end

  92. #==============================================================================
  93. # 仭 Spriteset_Battle
  94. #==============================================================================
  95. class Spriteset_Battle
  96.   #--------------------------------------------------------------------------
  97.   # 仠 僗僥乕僩僗僾儔僀僩傪徚偡
  98.   #--------------------------------------------------------------------------
  99.   def delete_state(index)
  100.     @actor_sprites[index].del_state
  101.   end
  102. end

  103. #==============================================================================
  104. # 仭 Sprite_Battler
  105. #==============================================================================
  106. class Sprite_Battler < RPG::Sprite
  107.   #--------------------------------------------------------------------------
  108.   # 仠 僗僥乕僩僗僾儔僀僩傪徚偡
  109.   #--------------------------------------------------------------------------
  110.   def del_state
  111.     @state_sprite.visible = false
  112.   end
  113. end
复制代码

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2006-6-22
帖子
21
2
 楼主| 发表于 2006-6-30 22:09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各种各样扩充状态的表示方法。


比方说能够这样的事。
   图标表示状态。
   状态卡通片的替换顺序。
   巴特勒下面表示状态。
   旋转状态的表示


供角色使用的的设定
ACTOR_STATE = true 或 MENU_ST_ICON = true 需要我们设定


↓用图标在战斗表示状态。

分别插入2个……:
  1. #==============================================================================
  2. # 仭 僗僥乕僩昞帵奼挘      Ver.1.0.1              by Claimh
  3. #------------------------------------------------------------------------------
  4. #   丒僗僥乕僩偺傾僯儊乕僔儑儞昞帵傪懡廳壔偟傑偡丅乮弴乆偵愗傝懼偊乯
  5. #   丒僶僩儔乕壓偵僗僥乕僩傪昞帵偝偣傑偡丅
  6. #-< 嵞掕媊売強 >---------------------------------------------------------------
  7. # Sprite_Battler僋儔僗偺慡儊僜僢僪(initialize, dispose, update)
  8. #==============================================================================

  9. module State_Extension
  10. #==============================================================================
  11. # 僇僗僞儅僀僘START
  12. #==============================================================================
  13.   #--------------------------------------------------------------------------
  14.   # 仧 僗僥乕僩傾僯儊乕僔儑儞愝掕
  15.   #--------------------------------------------------------------------------
  16.   # 傾僯儊乕僔儑儞昞帵偺儘乕僥乕僔儑儞婡擻傪桳岠偵偡傞丠
  17.   # 僗僥乕僩傾僯儊乕僔儑儞傪弴孞傝偵曄偊傑偡丅
  18.   # 乮椺乯僗僥乕僩A 佀 僗僥乕僩B 佀 僗僥乕僩C 佀 僗僥乕僩A 丒丒丒
  19.   STATE_ANIME = true            # true丗桳岠丂false丗柍岠

  20.   # 傾僯儊乕僔儑儞儖乕僾夞悢
  21.   LOOP_COUNT = 4
  22.   
  23.   #--------------------------------------------------------------------------
  24.   # 仧 僗僥乕僩昞帵愝掕
  25.   #--------------------------------------------------------------------------
  26.   # 傾僋僞乕壓偵僗僥乕僩昞帵傪偡傞丠
  27.   #   true丗昞帵丂false丗旕昞帵
  28.   ACTOR_STATE = true
  29.   # 僄僱儈乕壓偵僗僥乕僩昞帵傪偡傞丠
  30.   #   true丗昞帵丂false丗旕昞帵
  31.   ENEMY_STATE = true

  32.   # 僗僥乕僩偺昞帵曽朄僷僞乕儞
  33.   #   0丗捠忢昞帵乮昞帵偑偱偒傞僗僥乕僩悢偵尷傝偑偱偒傑偡乯
  34.   #   1丗儘乕僥乕僔儑儞昞帵乮偄偔偮偐偺僗僥乕僩傪弴孞傝偵昞帵乯
  35.   #   2丗僗僥乕僩傾僯儊乕僔儑儞偲摨婜乮昞帵拞偺傾僯儊偲摨偠僗僥乕僩傪昞帵乯
  36.   #       仸傾僯儊乕僔儑儞偺側偄僗僥乕僩偼昞帵偝傟傑偣傫丅
  37.   STATE_PATTERN = 1

  38.   # 昞帵埵抲曗惓乮y幉曽岦乯
  39.   STATE_Y = 4
  40.   #--------------------------------------------------------------------------
  41.   # 仧 儘乕僥乕僔儑儞愝掕   丗STATE_PATTARN = 1 偺偲偒偺傒桳岠
  42.   #--------------------------------------------------------------------------
  43.   # 儘乕僥乕僔儑儞偺峏怴傪偡傞僼儗乕儉悢
  44.   ROT_COUNT = 40

  45.   #--------------------------------------------------------------------------
  46.   # 仧 僗僥乕僩偺傾僀僐儞昞帵愝掕
  47.   #--------------------------------------------------------------------------
  48.   # 愴摤拞偺僗僥乕僩傪傾僀僐儞昞帵偵偡傞丠
  49.   #   true丗傾僀僐儞昞帵丂false丗僥僉僗僩昞帵(張棟廳偄)
  50.   STATE_ICON = true
  51.   
  52.   # 儊僯儏乕偺僗僥乕僩傪傾僀僐儞昞帵偡傞丠
  53.   MENU_ST_ICON = true
  54.   
  55.   # 奺僗僥乕僩偺傾僀僐儞巜掕
  56.   #   仸 傾僀僐儞巜掕偺側偄僗僥乕僩偼昞帵偝傟側偔側傝傑偡
  57.   STATE_ICON_FILE = {
  58.       # 僗僥乕僩ID => "傾僀僐儞僼傽僀儖柤"
  59.       3 => "045-Skill02",
  60.       4 => "046-Skill03",
  61.       5 => "046-Skill03",
  62.       6 => "049-Skill06",
  63.       7 => "050-Skill07",
  64.       8 => "050-Skill07"
  65.   }
  66.   
  67.   # 傾僀僐儞偺昞帵娫妘
  68.   ICON_INTERVAL = 5

  69. #==============================================================================
  70. # 僇僗僞儅僀僘END
  71. #==============================================================================
  72.   module_function
  73.   #--------------------------------------------------------------------------
  74.   # 仠 僗僥乕僩偺傾僯儊乕僔儑儞 ID 庢摼
  75.   #--------------------------------------------------------------------------
  76.   def state_animations(states)
  77.     # 僗僥乕僩偑傂偲偮傕晅壛偝傟偰偄側偄応崌
  78.     if states.size == 0
  79.       return []
  80.     end
  81.     animations = []
  82.     for i in 0...states.size
  83.       animations.push($data_states[states[i]].animation_id)
  84.     end
  85.     # 傾僯儊乕僔儑儞ID = 0傪嶍彍
  86.     animations.delete(0)
  87.     # 慡偰偺傾僯儊乕僔儑儞ID傪曉偡
  88.     return animations
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # 仠 昤夋梡偺僗僥乕僩暥帤楍嶌惉
  92.   #     state       : 僗僥乕僩ID孮
  93.   #     width       : 昤夋愭偺暆
  94.   #--------------------------------------------------------------------------
  95.   def make_state_text(bitmap, state, width)
  96.     # 妵屖偺暆傪庢摼
  97.     brackets_width = bitmap.text_size("[]").width
  98.     # 僗僥乕僩柤偺暥帤楍傪嶌惉
  99.     text = ""
  100.     for i in state
  101.       if $data_states[i].rating >= 1
  102.         if text == ""
  103.           text = $data_states[i].name
  104.         else
  105.           new_text = text + "/" + $data_states[i].name
  106.           text_width = bitmap.text_size(new_text).width
  107.           if text_width > width - brackets_width
  108.             break
  109.           end
  110.           text = new_text
  111.         end
  112.       end
  113.     end
  114.     # 僗僥乕僩柤偺暥帤楍偑嬻丠
  115.     if text != ""
  116.       # 妵屖傪偮偗傞
  117.       text = "[" + text + "]"
  118.     end
  119.     # 姰惉偟偨暥帤楍傪曉偡
  120.     return text
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # 仠 昤夋梡偺僗僥乕僩傾僀僐儞孮嶌惉
  124.   #     state       : 僗僥乕僩ID孮
  125.   #     width       : 昤夋愭偺暆
  126.   #--------------------------------------------------------------------------
  127.   def make_state_icon(state, width)
  128.     icon_width = 0
  129.     icon_states = []
  130.     for i in 0...state.size
  131.       unless STATE_ICON_FILE[state[i]].nil?
  132.         # 傾僀僐儞僼傽僀儖偺價僢僩儅僢僾撉傒崬傒
  133.         bitmap = RPG::Cache.icon(STATE_ICON_FILE[state[i]])
  134.         next_width = icon_width + bitmap.width + ICON_INTERVAL
  135.         # 昞帵斖埻傪僆乕僶乕偟偰偄側偄偐丠
  136.         if width > next_width
  137.           # 昞帵傾僀僐儞偵捛壛
  138.           icon_states.push(STATE_ICON_FILE[state[i]])
  139.           # 暆峏怴
  140.           icon_width += bitmap.width + ICON_INTERVAL
  141.         else
  142.           break
  143.         end
  144.       end
  145.     end
  146.     return icon_states
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # 仠 儘乕僥乕僔儑儞偝偣傞偐偺敾掕
  150.   #     state       : 僗僥乕僩ID孮
  151.   #     width       : 昤夋愭偺暆
  152.   #--------------------------------------------------------------------------
  153.   def do_rotation?(bitmap, state, width)
  154.     case STATE_ICON
  155.     when true   # 傾僀僐儞
  156.       icon_width = 0
  157.       for i in 0...state.size
  158.         unless STATE_ICON_FILE[state[i]].nil?
  159.           # 傾僀僐儞僼傽僀儖偺價僢僩儅僢僾撉傒崬傒
  160.           bitmap = RPG::Cache.icon(STATE_ICON_FILE[state[i]])
  161.           next_width = icon_width + bitmap.width + ICON_INTERVAL
  162.           # 昞帵斖埻傪僆乕僶乕偟偰偄側偄偐丠
  163.           if width > next_width
  164.             # 暆峏怴
  165.             icon_width += bitmap.width + ICON_INTERVAL
  166.           else
  167.             # 儘乕僥乕僔儑儞偑昁梫
  168.             return true
  169.           end
  170.         end
  171.       end
  172.     when false  # 僥僉僗僩
  173.       # 妵屖偺暆傪庢摼
  174.       brackets_width = bitmap.text_size("[]").width
  175.       # 僗僥乕僩柤偺暥帤楍傪嶌惉
  176.       text = ""
  177.       for i in state
  178.         if $data_states[i].rating >= 1
  179.           if text == ""
  180.             text = $data_states[i].name
  181.           else
  182.             new_text = text + "/" + $data_states[i].name
  183.             text_width = bitmap.text_size(new_text).width
  184.             if text_width > width - brackets_width
  185.               # 儘乕僥乕僔儑儞偑昁梫
  186.               return true
  187.             end
  188.             text = new_text
  189.           end
  190.         end
  191.       end
  192.     else
  193.       p "Err:STATE_ICON"
  194.       exit
  195.     end
  196.     # 儘乕僥乕僔儑儞偼晄梫
  197.     return false
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # 仠 僗僥乕僩偺儘乕僥乕僔儑儞
  201.   #     state       : 僗僥乕僩ID孮
  202.   #     index       : 儘乕僥乕僔儑儞奐巒Index
  203.   #--------------------------------------------------------------------------
  204.   def rotation_state(state, index)
  205.     rot_state = []
  206.     for i in index...state.size
  207.       rot_state.push(state[i])
  208.     end
  209.     for i in 0...index
  210.       rot_state.push(state[i])
  211.     end
  212.     return rot_state
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # 仠 僗僥乕僩梡傾僀僐儞偺昤夋奐巒埵抲偺寁嶼
  216.   #     state       : 僗僥乕僩ID孮
  217.   #     width       : 昤夋愭偺暆
  218.   #--------------------------------------------------------------------------
  219.   def make_icon_pos_x(state, width)
  220.     icon_width = 0
  221.     for i in 0...state.size
  222.       bitmap = RPG::Cache.icon(state[i])
  223.       # 暆峏怴
  224.       icon_width += bitmap.width + ICON_INTERVAL
  225.     end
  226.     # 昤夋奐巒埵抲偺寁嶼
  227.     pos_x = (width - icon_width) / 2
  228.     return pos_x
  229.   end
  230. end


  231. #==============================================================================
  232. # 仭 Sprite_Battler
  233. #==============================================================================
  234. class Sprite_Battler < RPG::Sprite
  235.   # 僗僥乕僩昞帵椞堟偺暆丄崅偝傪掕媊
  236.   BITMAP_WIDTH = 120
  237.   BITMAP_HEIGHT = 32
  238.   #--------------------------------------------------------------------------
  239.   # 仠 僆僽僕僃僋僩弶婜壔 [嵞掕媊]
  240.   #     viewport : 價儏乕億乕僩
  241.   #     battler  : 僶僩儔乕 (Game_Battler)
  242.   #--------------------------------------------------------------------------
  243.   def initialize(viewport, battler = nil)
  244.     super(viewport)
  245.     @battler = battler
  246.     @battler_visible = false
  247. #-[僗僥乕僩昞帵奼挘]------
  248.     @rotation_count = 0               # 儘乕僥乕僔儑儞梡偺僇僂儞僩
  249.     @rotation_index = 0               # 儘乕僥乕僔儑儞Index
  250.     @loop_state_animation_count = 0   # 儖乕僾僇僂儞僩
  251.     @battler_state = []               # 撪晹曐帩梡僗僥乕僩
  252.     @state_update_flag = false        # 僗僥乕僩峏怴僼儔僌
  253.     @sync_update_flag = false         # 傾僯儊乕僔儑儞摨婜梡僼儔僌
  254.     # 僗僥乕僩昞帵梡僗僾儔僀僩傪梡堄
  255.     @state_sprite = Sprite.new(viewport)
  256.     @state_sprite.bitmap = Bitmap.new(BITMAP_WIDTH, BITMAP_HEIGHT)
  257. #-------------------------
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # 仠 夝曻 [嵞掕媊]
  261.   #--------------------------------------------------------------------------
  262.   def dispose
  263. #-[僗僥乕僩昞帵奼挘]------
  264.     @state_sprite.dispose
  265. #-------------------------
  266.     if self.bitmap != nil
  267.       self.bitmap.dispose
  268.     end
  269.     super
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # 仠 僼儗乕儉峏怴 [嵞掕媊]
  273.   #--------------------------------------------------------------------------
  274.   def update
  275.     super
  276.     # 僶僩儔乕偑 nil 偺応崌
  277.     if @battler == nil
  278.       self.bitmap = nil
  279.       loop_animation(nil)
  280.       return
  281.     end
  282.     # 僼傽僀儖柤偐怓憡偑尰嵼偺傕偺偲堎側傞応崌
  283.     if @battler.battler_name != @battler_name or
  284.        @battler.battler_hue != @battler_hue
  285.       # 價僢僩儅僢僾傪庢摼丄愝掕
  286.       @battler_name = @battler.battler_name
  287.       @battler_hue = @battler.battler_hue
  288.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  289.       @width = bitmap.width
  290.       @height = bitmap.height
  291.       self.ox = @width / 2
  292.       self.oy = @height
  293.       # 愴摤晄擻傑偨偼塀傟忬懺側傜晄摟柧搙傪 0 偵偡傞
  294.       if @battler.dead? or @battler.hidden
  295.         self.opacity = 0
  296.       end
  297.     end
  298. #-[僗僥乕僩昞帵奼挘]------
  299. =begin
  300.   伀尨宆伀
  301.     # 傾僯儊乕僔儑儞 ID 偑尰嵼偺傕偺偲堎側傞応崌
  302.     if @battler.damage == nil and
  303.        @battler.state_animation_id != @state_animation_id
  304.       @state_animation_id = @battler.state_animation_id
  305.       loop_animation($data_animations[@state_animation_id])
  306.     end
  307.   仾尨宆仾
  308. =end
  309.     # 僗僥乕僩奼挘昞帵
  310.     update_state_extension
  311. #-------------------------
  312.     # 昞帵偝傟傞傋偒傾僋僞乕偺応崌
  313.     if @battler.is_a?(Game_Actor) and @battler_visible
  314.       # 儊僀儞僼僃乕僘偱側偄偲偒偼晄摟柧搙傪傗傗壓偘傞
  315.       if $game_temp.battle_main_phase
  316.         self.opacity += 3 if self.opacity < 255
  317.       else
  318.         self.opacity -= 3 if self.opacity > 207
  319.       end
  320.     end
  321.     # 柧柵
  322.     if @battler.blink
  323.       blink_on
  324.     else
  325.       blink_off
  326.     end
  327.     # 晄壜帇偺応崌
  328.     unless @battler_visible
  329.       # 弌尰
  330.       if not @battler.hidden and not @battler.dead? and
  331.          (@battler.damage == nil or @battler.damage_pop)
  332.         appear
  333.         @battler_visible = true
  334.       end
  335.     end
  336.     # 壜帇偺応崌
  337.     if @battler_visible
  338.       # 摝憱
  339.       if @battler.hidden
  340.         $game_system.se_play($data_system.escape_se)
  341.         escape
  342.         @battler_visible = false
  343.       end
  344.       # 敀僼儔僢僔儏
  345.       if @battler.white_flash
  346.         whiten
  347.         @battler.white_flash = false
  348.       end
  349.       # 傾僯儊乕僔儑儞
  350.       if @battler.animation_id != 0
  351.         animation = $data_animations[@battler.animation_id]
  352.         animation(animation, @battler.animation_hit)
  353.         @battler.animation_id = 0
  354.       end
  355.       # 僟儊乕僕
  356.       if @battler.damage_pop
  357.         damage(@battler.damage, @battler.critical)
  358.         @battler.damage = nil
  359.         @battler.critical = false
  360.         @battler.damage_pop = false
  361.       end
  362.       # 僐儔僾僗
  363.       if @battler.damage == nil and @battler.dead?
  364.         if @battler.is_a?(Game_Enemy)
  365.           $game_system.se_play($data_system.enemy_collapse_se)
  366.         else
  367.           $game_system.se_play($data_system.actor_collapse_se)
  368.         end
  369.         collapse
  370.         @battler_visible = false
  371.       end
  372.     end
  373.     # 僗僾儔僀僩偺嵗昗傪愝掕
  374.     self.x = @battler.screen_x
  375.     self.y = @battler.screen_y
  376.     self.z = @battler.screen_z
  377.   end

  378. #==============================================================================
  379. # 仭 奼挘儊僜僢僪
  380. #==============================================================================
  381.   #--------------------------------------------------------------------------
  382.   # 仠 僗僥乕僩奼挘昞帵偺峏怴
  383.   #--------------------------------------------------------------------------
  384.   def update_state_extension
  385.     # 晄壜帇偺応崌
  386.     unless @battler_visible
  387.       @state_sprite.bitmap.clear
  388.       return
  389.     end
  390.     # 僗僥乕僩偑峏怴偝傟偨丠
  391.     if @battler.damage == nil
  392.       if @battler_state != @battler.states
  393.         @battler_state = @battler.states.dup  # 僗僥乕僩偺峏怴
  394.         @state_update_flag = true         # 峏怴僼儔僌ON
  395.       end
  396.     end
  397.     # 僗僥乕僩傾僯儊乕僔儑儞偺峏怴
  398.     update_state_animation
  399.     # 僗僥乕僩昞帵偺峏怴
  400.     update_state
  401.     # 峏怴偺廔椆
  402.     @state_update_flag = false     # 僗僥乕僩峏怴僼儔僌OFF
  403.     @sync_update_flag = false      # 僗僥乕僩傾僯儊乕僔儑儞偺峏怴僼儔僌OFF
  404.   end
  405.   #--------------------------------------------------------------------------
  406.   # 仠 僗僥乕僩傾僯儊乕僔儑儞峏怴
  407.   #--------------------------------------------------------------------------
  408.   def update_state_animation
  409.     # 僗僥乕僩傾僯儊乕僔儑儞
  410.     if State_Extension::STATE_ANIME
  411.       # 懡廳僗僥乕僩傾僯儊乕僔儑儞傪昞帵偡傞
  412.       multiple_state_animation
  413.     else
  414.       # 捠忢偺昞帵曽朄傪慖戰
  415.       # 傾僯儊乕僔儑儞 ID 偑尰嵼偺傕偺偲堎側傞応崌   [尨宆傪巊梡偡傞]
  416.       if @battler.damage == nil and
  417.          @battler.state_animation_id != @state_animation_id
  418.         @state_animation_id = @battler.state_animation_id
  419.         loop_animation($data_animations[@state_animation_id])
  420.       end
  421.     end
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # 仠 懡廳僗僥乕僩傾僯儊乕僔儑儞
  425.   #--------------------------------------------------------------------------
  426.   def multiple_state_animation
  427.     # 傾僯儊乕僔儑儞偺偁傞僗僥乕僩傪撉傒崬傒
  428.     anime_states = State_Extension.state_animations(@battler_state)
  429.     # 傾僯儊乕僔儑儞偺偁傞僗僥乕僩偑晅梌偝傟偰偄傞
  430.     unless anime_states.empty?
  431.       # 僗僥乕僩偺峏怴偑側偝傟偨応崌
  432.       if @state_update_flag
  433.         # 僗僥乕僩Index傪弶婜壔
  434.         @loop_state_index = 0
  435.         # 儖乕僾傾僯儊乕僔儑儞偺愝掕
  436.         set_loop_animation(anime_states)
  437.       end
  438.       @loop_state_animation_count -= 1
  439.       # 儖乕僾僇僂儞僩偑0偵側偭偨
  440.       if @loop_state_animation_count == 0
  441.         # 僗僥乕僩Index偺峏怴
  442.         @loop_state_index += 1
  443.         if @loop_state_index == anime_states.size
  444.           @loop_state_index = 0
  445.         end
  446.         # 儖乕僾傾僯儊乕僔儑儞偺愝掕
  447.         set_loop_animation(anime_states)
  448.       end
  449.     else
  450.       # 慡僗僥乕僩夝彍帪偵儖乕僾傾僯儊乕僔儑儞傪徚偡
  451.       if @state_update_flag
  452.         # 傾僯儊乕僔儑儞偺峏怴傪専抦
  453.         @sync_update_flag = true
  454.         @loop_state_animation_count = 0
  455.         @loop_state_index = 0
  456.         loop_animation(nil)
  457.       end
  458.     end
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # 仠 儖乕僾傾僯儊乕僔儑儞愝掕
  462.   #--------------------------------------------------------------------------
  463.   def set_loop_animation(anime_states)
  464.     # 傾僯儊乕僔儑儞偺峏怴傪専抦
  465.     @sync_update_flag = true
  466.     # 昞帵偝偣傞僗僥乕僩傾僯儊乕僔儑儞ID傪撉傒崬傒
  467.     animation_id = anime_states[@loop_state_index]
  468.     # 傾僯儊乕僔儑儞撉傒崬傒
  469.     anime_data = $data_animations[animation_id]
  470.     # 僼儗乕儉悢傪愝掕
  471.     @loop_state_animation_count = anime_data.frames.size * State_Extension::LOOP_COUNT
  472.     # 儖乕僾傾僯儊乕僔儑儞傪愝掕
  473.     loop_animation(anime_data)
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # 仠 僗僥乕僩昞帵峏怴
  477.   #--------------------------------------------------------------------------
  478.   def update_state
  479.     # 昞帵桳岠敾掕
  480.     case @battler
  481.     when Game_Actor
  482.       # 傾僋僞乕桳岠丠
  483.       unless State_Extension::ACTOR_STATE
  484.         # 柍懯側偺偱僨僼僅儖僩柍岠偵丅
  485.         return
  486.       end
  487.     when Game_Enemy
  488.       # 僄僱儈乕桳岠丠
  489.       unless State_Extension::ENEMY_STATE
  490.         return
  491.       end
  492.     else
  493.       p "Err: 'Sprite_Battler' can use actor or enemy only"
  494.       exit
  495.     end
  496.     # 僗僥乕僩昞帵偺嵞僙僢僩傾僢僾
  497.     case State_Extension::STATE_PATTERN
  498.     when 0  # 捠忢昞帵
  499.       make_normal_state
  500.     when 1  # 儘乕僥乕僔儑儞
  501.       make_rotation_state
  502.     when 2  # 僗僥乕僩傾僯儊乕僔儑儞偲摨婜
  503.       make_synchronous_state
  504.     else
  505.       p "Err:STATE_PATTERN"
  506.       exit
  507.     end
  508.     # 昞帵埵抲偺峏怴丅
  509.     @state_sprite.x = @battler.screen_x - BITMAP_WIDTH / 2
  510.     @state_sprite.y = @battler.screen_y - BITMAP_HEIGHT + State_Extension::STATE_Y
  511.     @state_sprite.z = @battler.screen_z
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # 仠 捠忢偺僗僥乕僩昞帵
  515.   #--------------------------------------------------------------------------
  516.   def make_normal_state
  517.     # 僗僥乕僩偺峏怴偁傝丠
  518.     if @state_update_flag
  519.       draw_state(@battler_state)
  520.     end
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # 仠 儘乕僥乕僔儑儞偟偨僗僥乕僩昞帵
  524.   #--------------------------------------------------------------------------
  525.   def make_rotation_state
  526.     # 僗僥乕僩偑晅梌偝傟偰偄傞丠
  527.     unless @battler_state.empty?
  528.       # 儘乕僥乕僔儑儞偝偣傞傋偒偐丠
  529.       if State_Extension.do_rotation?(@state_sprite.bitmap, @battler_state, BITMAP_WIDTH)
  530.         # 儘乕僥乕僔儑儞僇僂儞僩+1
  531.         @rotation_count += 1
  532.       end
  533.       # 僗僥乕僩偺峏怴偁傝丠
  534.       if @state_update_flag
  535.         @rotation_count = State_Extension::ROT_COUNT
  536.         @rotation_index = 0
  537.       end
  538.       # 儘乕僥乕僔儑儞偺峏怴偁傝丠
  539.       if @rotation_count == State_Extension::ROT_COUNT
  540.         @rotation_count = 0
  541.         # 儘乕僥乕僔儑儞Index抣偺峏怴
  542.         @rotation_index += 1
  543.         if @rotation_index >= @battler_state.size
  544.           @rotation_index = 0
  545.         end
  546.         # 儘乕僥乕僔儑儞偟偨僗僥乕僩孮偺庢摼
  547.         state = State_Extension.rotation_state(@battler_state, @rotation_index)
  548.         draw_state(state)
  549.       end
  550.     else
  551.       # 僗僥乕僩偺峏怴偁傝丠
  552.       if @state_update_flag
  553.         # 昞帵傪僋儕傾
  554.         @state_sprite.bitmap.clear
  555.         @rotation_count = 0
  556.         @rotation_index = 0
  557.       end
  558.     end
  559.   end
  560.   #--------------------------------------------------------------------------
  561.   # 仠 傾僯儊乕僔儑儞偲摨婜偟偨僗僥乕僩昞帵偺峏怴
  562.   #--------------------------------------------------------------------------
  563.   def make_synchronous_state
  564.     # 僗僥乕僩傾僯儊乕僔儑儞偺峏怴偁傝丠
  565.     if @sync_update_flag
  566.       # 昞帵拞偺傾僯儊乕僔儑儞偵墳偠偨僗僥乕僩ID傪庢摼
  567.       state = [@battler_state[@loop_state_index]]
  568.       draw_state(state)
  569.     end
  570.   end
  571.   #--------------------------------------------------------------------------
  572.   # 仠 僗僥乕僩昞帵乮傾僀僐儞乛僥僉僗僩乯
  573.   #    state  : 僗僥乕僩梡傾僀僐儞僼傽僀儖孮
  574.   #--------------------------------------------------------------------------
  575.   def draw_state(state)
  576.     # 昞帵傪僋儕傾
  577.     @state_sprite.bitmap.clear
  578.     # 僗僥乕僩昞帵
  579.     case State_Extension::STATE_ICON
  580.     when false  # 僥僉僗僩昞帵
  581.       text = State_Extension.make_state_text(@state_sprite.bitmap, state, BITMAP_WIDTH)
  582.       # 僗僥乕僩昤幨(捠忢)
  583.       @state_sprite.bitmap.draw_text(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT, text, 1)
  584.       # 僗僥乕僩昤幨(墢暥帤)
  585.       #@state_sprite.bitmap.draw_edging_text(0, 0, BITMAP_WIDTH, BITMAP_HEIGHT, text, 1)
  586.     when true   # 傾僀僐儞昞帵
  587.       # 僗僥乕僩梡傾僀僐儞偺僼傽僀儖柤傪庢摼
  588.       icon_state = State_Extension.make_state_icon(state, BITMAP_WIDTH)
  589.       # 僗僥乕僩偺傾僀僐儞昤幨
  590.       draw_state_icon(icon_state)
  591.     else
  592.       p "Err:STATE_ICON"
  593.     end
  594.   end
  595.   #--------------------------------------------------------------------------
  596.   # 仠 僗僥乕僩梡傾僀僐儞昞帵
  597.   #    state  : 僗僥乕僩梡傾僀僐儞僼傽僀儖孮
  598.   #--------------------------------------------------------------------------
  599.   def draw_state_icon(state)
  600.     # 昤夋奐巒埵抲偺寛掕
  601.     x = State_Extension.make_icon_pos_x(state, BITMAP_WIDTH)
  602.     for i in 0...state.size
  603.       bitmap = RPG::Cache.icon(state[i])
  604.       cw = bitmap.width
  605.       ch = bitmap.height
  606.       src_rect = Rect.new(0, 0, cw, ch)
  607.       @state_sprite.bitmap.blt(x, 0, bitmap, src_rect)
  608.       # 昤夋埵抲傪恑傔傞
  609.       x += cw + State_Extension::ICON_INTERVAL
  610.     end
  611.   end
  612. end


复制代码
  1. #==============================================================================
  2. # 仭 僗僥乕僩昞帵奼挘[傾僋僞乕梡]                    by Claimh
  3. #------------------------------------------------------------------------------
  4. #   丒傾僋僞乕梡偺僗僥乕僩昞帵奼挘傪偝偣傞偨傔偺捛壛張棟丅
  5. #   丒ACTOR_STATE = true 偺偲偒 MENU_ST_ICON = true 偺偲偒偼昁恵偱偡丅
  6. #==============================================================================

  7. #==============================================================================
  8. # 仭 Window_Base
  9. #==============================================================================
  10. class Window_Base < Window
  11.   #--------------------------------------------------------------------------
  12.   # 仠 僗僥乕僩偺昤夋
  13.   #     actor : 傾僋僞乕
  14.   #     x     : 昤夋愭 X 嵗昗
  15.   #     y     : 昤夋愭 Y 嵗昗
  16.   #     width : 昤夋愭偺暆
  17.   #--------------------------------------------------------------------------
  18.   alias draw_state_normal draw_actor_state
  19.   def draw_actor_state(actor, x, y, width = 120)
  20.     # 愴摤拞丠
  21.     if $scene.is_a?(Scene_Battle)
  22.       if State_Extension::ACTOR_STATE
  23.         # 僗僥乕僩桳傝丠
  24.         unless actor.states.empty?
  25.           # 昞帵偟側偄
  26.           return
  27.         end
  28.       end
  29.     else
  30.       if State_Extension::MENU_ST_ICON
  31.         # 僗僥乕僩桳傝丠
  32.         unless actor.states.empty?
  33.           # 僗僥乕僩傪傾僀僐儞昞帵
  34.           draw_state_icon(actor, x, y, width)
  35.           return
  36.         end
  37.       end
  38.     end
  39.     # 捠忢昞帵
  40.     draw_state_normal(actor, x, y, width)
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # 仠 僗僥乕僩梡傾僀僐儞昞帵
  44.   #    state  : 僗僥乕僩梡傾僀僐儞僼傽僀儖孮
  45.   #--------------------------------------------------------------------------
  46.   def draw_state_icon(actor, x, y, width = 120)
  47.     # 傾僀僐儞僼傽僀儖孮傪庢摼
  48.     icon_state = State_Extension.make_state_icon(actor.states, width)
  49.     # 昤夋奐巒埵抲偺寛掕
  50.     x = 0
  51.     for i in 0...icon_state.size
  52.       bitmap = RPG::Cache.icon(icon_state[i])
  53.       cw = bitmap.width
  54.       ch = bitmap.height
  55.       src_rect = Rect.new(0, 0, cw, ch)
  56.       self.bitmap.blt(x, ch/2, bitmap, src_rect)
  57.       # 昤夋埵抲傪恑傔傞
  58.       x += cw + State_Extension::ICON_INTERVAL
  59.     end
  60.   end
  61. end


  62. #==============================================================================
  63. # 仭 Window_BattleStatus
  64. #==============================================================================
  65. class Window_BattleStatus < Window_Base
  66.   #--------------------------------------------------------------------------
  67.   # 仠 儗儀儖傾僢僾僼儔僌偺愝掕
  68.   #     actor_index : 傾僋僞乕僀儞僨僢僋僗
  69.   #--------------------------------------------------------------------------
  70.   def level_up?(actor_index)
  71.     return @level_up_flags[actor_index]
  72.   end
  73. end

  74. #==============================================================================
  75. # 仭 Scene_Battle
  76. #==============================================================================
  77. class Scene_Battle
  78.   #--------------------------------------------------------------------------
  79.   # 仠 傾僼僞乕僶僩儖僼僃乕僘奐巒
  80.   #--------------------------------------------------------------------------
  81.   alias start_phase5_state_ex start_phase5
  82.   def start_phase5
  83.     start_phase5_state_ex
  84.     # 儗儀儖傾僢僾昞帵帪偵僗僥乕僩傪徚偡
  85.     for i in 0...$game_party.actors.size
  86.       if @status_window.level_up?(i)
  87.         @spriteset.delete_state(i)
  88.       end
  89.     end
  90.   end
  91. end

  92. #==============================================================================
  93. # 仭 Spriteset_Battle
  94. #==============================================================================
  95. class Spriteset_Battle
  96.   #--------------------------------------------------------------------------
  97.   # 仠 僗僥乕僩僗僾儔僀僩傪徚偡
  98.   #--------------------------------------------------------------------------
  99.   def delete_state(index)
  100.     @actor_sprites[index].del_state
  101.   end
  102. end

  103. #==============================================================================
  104. # 仭 Sprite_Battler
  105. #==============================================================================
  106. class Sprite_Battler < RPG::Sprite
  107.   #--------------------------------------------------------------------------
  108.   # 仠 僗僥乕僩僗僾儔僀僩傪徚偡
  109.   #--------------------------------------------------------------------------
  110.   def del_state
  111.     @state_sprite.visible = false
  112.   end
  113. end
复制代码

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

3
发表于 2006-6-30 22:12:43 | 只看该作者
感谢楼主...但不要直接复制..会乱码
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2006-6-22
帖子
21
4
 楼主| 发表于 2006-6-30 22:18:00 | 只看该作者
……不好意思……转的时候 ……他们的就这样……日文网站……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

查无此人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2006-5-8
帖子
1399
5
发表于 2006-6-30 22:18:59 | 只看该作者
这个应该放地球村里吧,,,,,,,全乱码的配上那截图啥都看不懂.....
KRKR + NS 学习中..........
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

6
发表于 2006-6-30 22:20:16 | 只看该作者
图标代替状态文字...叶子写过一个
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2006-6-22
帖子
21
7
 楼主| 发表于 2006-6-30 22:20:58 | 只看该作者
呵呵…………   
图片看不懂么?  那个怪下头不是显示着几种状态……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 11:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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