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

Project1

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

我工程內的Akea Battle Order没显示我方脸图

[复制链接]

Lv5.捕梦者

梦石
0
星屑
26209
在线时间
5349 小时
注册时间
2016-3-8
帖子
1655
跳转到指定楼层
1
发表于 2020-9-2 22:52:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 alexncf125 于 2024-1-25 13:13 编辑

Akea Battle Order.rar (1.33 MB, 下载次数: 34)
附件的工程不是我的工程

在我的工程中, 敌人的脸图会正常显示, 但我方的脸图却没有显示
Party_Face 经已是 true 了, 所以可能是我方的脸图跑到框子外面去了
可我又看不见框子外的東西, 那就不知 sx 和 sy 要如何调整了

所以有没有方法能看到框外的東西呢???

RUBY 代码复制
  1. #=======================================================
  2. #        Akea Battle Order
  3. # Autor: Raizen
  4. # Comunidade: [url]http://www.centrorpg.com/[/url]
  5. # Compatibilidade: RMVXAce
  6. #
  7. #=======================================================
  8. # =========================Não modificar==============================
  9. $included ||= Hash.new
  10. $included[:akea_battleorder] = true
  11. module Akea_BattleOrder
  12. Party_Images = []
  13. Monster_Images = []
  14. Enemy_Characters = []
  15. # =========================Não modificar==============================
  16. # Configuração começa Aqui
  17. #=======================================================
  18. #        INSTRUÇÕES
  19. # Bem simples, basta colocar o script acima do main e configurar como é
  20. # pedido abaixo, o script adiciona a função de mostrar a ordem de batalha,
  21. # Combine esse script com outros add-ons de batalha para fazer algo bem legalz :)
  22. #=======================================================
  23. # Se vai usar face para personagem, true usa face, false usa charset
  24. # Se true ele vai utilizar uma parte da imagem das faces
  25. # Se false vai utilizar o charset
  26. Party_Face = true
  27. # Se vai usar face para inimigo, true usa face, false usa charset
  28. # Se true ele vai utilizar uma parte da imagem dos battlers
  29. # Se false vai utilizar o charset, configurado logo mais no script
  30. Enemy_Face = true
  31. # Imagem adicional que ficará na tela de batalha
  32. Battle_Image = 'Battle_Order'
  33. Image_X = 500
  34. Image_Y = 40
  35. # Imagem de moldura, caso os chars precisem de moldura
  36. # Caso não queira adicionar uma moldura basta colocar como
  37. # Mold = ''
  38. Mold = 'mold2'
  39. # Correção da posição da moldura
  40. Mold_X = -4
  41. Mold_Y = -4
  42. # Correção do recorte das faces ou charsets
  43. Size = {
  44. 'Sx' => 30, # em %, no eixo X ele irá recortar
  45. 'Sy' => 30, # em %, no eixo Y ele irá recortar
  46. 'X' => 60, # Tamanho da imagem recortada em X
  47. 'Y' => 30, # Tamanho da imagem recortada em Y
  48. }
  49. # Tempo que leva para os quadros se movimentarem em frames
  50. Movement_Time = 5
  51. # Posição de inicio dos quadros [x, y]
  52. Start_Position = [465, 250]
  53. # Posição de fim dos quadros [x, y]
  54. End_Position = [465, 50]
  55. # Opacidade das faces/characters de batalha,
  56. # a opacidade do membro que está no turno é 255(100%),
  57. # A opacidade dos demais pode ser configurado aqui
  58. Opacity = 150
  59. # Imagens para personagens e inimigos # OPCIONAL
  60. # Para utilizar uma imagem ao invés da face ou char,
  61. # basta colocar
  62. # Party_Images[id] = 'nome_da_imagem'
  63. # Id sendo o id do actor no database
  64. Party_Images[0] = 'Battle_Order'
  65. # Monster_Images[id] = 'nome_da_imagem'
  66. # Id sendo o id do inimigo no database
  67. Monster_Images[0] = 'Battle_Order'
  68. # Enemy_Characters, Configure APENAS se o Enemy_Face = false
  69. # Caso contrário o script termina aqui.
  70. #==============================================================================
  71. # ** Enemy_Characters[0] => Padrão, caso o inimigo não tenha charset pre-configurado aqui.
  72. #==============================================================================
  73. # Padrão, caso o inimigo não tenha charset pre-configurado aqui.
  74. Enemy_Characters[0] = {
  75. 'CharName' => 'Monster1', #Nome da imagem na pasta Characters
  76. 'Index' => 1, # Indice nos charsets com 8 chars, começando do 0.
  77. }
  78. #==============================================================================
  79. # ** Enemy_Characters[1] => Slime
  80. #==============================================================================
  81. Enemy_Characters[1] = {
  82. 'CharName' => 'Monster2', #Nome da imagem na pasta Characters
  83. 'Index' => 2, # Indice nos charsets com 8 chars, começando do 0.
  84. }
  85. end
  86. #==============================================================================
  87. # ** Scene_Battle
  88. #------------------------------------------------------------------------------
  89. #  Esta classe executa o processamento da tela de batalha.
  90. #==============================================================================
  91. class Scene_Battle < Scene_Base
  92. alias :akea_bo_start :start
  93. alias :akea_bo_turn_start :turn_start
  94. alias :akea_bo_update :update
  95. alias :akea_bo_process_action :process_action
  96. alias :akea_bo_terminate :terminate
  97.   #--------------------------------------------------------------------------
  98.   # * Inicialização do processo
  99.   #--------------------------------------------------------------------------
  100.   def start(*args, &block)
  101.     @start_bo_anime = false
  102.     @bo_turn_start = false
  103.     create_battle_order_images
  104.     @bo_action = []
  105.     akea_bo_start(*args, &block)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # * Início do turno
  109.   #--------------------------------------------------------------------------
  110.   def turn_start
  111.     @start_bo_anime = true
  112.     akea_bo_turn_start
  113.     @battle_order = []
  114.     for n in 0...all_battle_members.size
  115.       @battle_order.push(all_battle_members.index(BattleManager.akea_battle_turn[n])) if BattleManager.akea_battle_turn[n].alive?
  116.     end
  117.     @bo_pos_x = (Akea_BattleOrder::End_Position[0] - Akea_BattleOrder::Start_Position[0])/ @battle_order.size
  118.     @bo_pos_y = (Akea_BattleOrder::End_Position[1] - Akea_BattleOrder::Start_Position[1])/ @battle_order.size
  119.     @battle_order.reverse!
  120.     @bo_correction = 0
  121.     for n in 0...@battle_order.size
  122.       @bo_battlers[@battle_order[n]].x = Akea_BattleOrder::Start_Position[0] + @bo_pos_x*n
  123.       @bo_battlers[@battle_order[n]].y = Akea_BattleOrder::Start_Position[1] + @bo_pos_y*n
  124.       @mold_battlers[@battle_order[n]].x = Akea_BattleOrder::Start_Position[0] + @bo_pos_x*n + Akea_BattleOrder::Mold_X
  125.       @mold_battlers[@battle_order[n]].y = Akea_BattleOrder::Start_Position[1] + @bo_pos_y*n + Akea_BattleOrder::Mold_Y
  126.       @bo_battlers[@battle_order[n]].z = 100 + n*2
  127.       @mold_battlers[@battle_order[n]].z = 100 + n*2 + 1
  128.       @mold_battlers[@battle_order[n]].opacity = 0
  129.     end
  130.     @battle_order.reverse!
  131.     @reserve_order = []
  132.     @bo_timer_count = 0
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # * Processamento de ações
  136.   #--------------------------------------------------------------------------
  137.   def process_action   
  138.     return if @start_bo_anime
  139.     return if scene_changing?
  140.     if (!@subject || !@subject.current_action)
  141.       if @battle_order.include?(all_battle_members.index(BattleManager.akea_battle_turn[0])) && BattleManager.akea_battle_turn[0] && BattleManager.akea_battle_turn[0].dead?
  142.         @check_condition = BattleManager.akea_battle_turn
  143.         n = 0
  144.         while @check_condition[n] && @check_condition[n].dead?
  145.           n += 1
  146.           @bo_action.push(@battle_order.first)
  147.           @reserve_order.push(@battle_order.first)
  148.           @battle_order.shift
  149.         end
  150.         return unless @reserve_order.empty?
  151.       end
  152.       @bo_action.push(@battle_order.first)
  153.       @battle_order.shift
  154.     end
  155.     if @bo_action.first
  156.       @bo_battlers[@bo_action.first].opacity = 255
  157.       @mold_battlers[@bo_action.first].opacity = 255
  158.     end
  159.     akea_bo_process_action
  160.   end
  161.  
  162.   #--------------------------------------------------------------------------
  163.   # * Atualização da tela
  164.   #--------------------------------------------------------------------------
  165.   def update(*args, &block)
  166.     if @start_bo_anime
  167.       start_bo_pics
  168.       super
  169.       return
  170.     end
  171.     unless moving_bo_order
  172.       super
  173.       return
  174.     end
  175.     akea_bo_update(*args, &block)
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # * Animação de inicio
  179.   #--------------------------------------------------------------------------
  180.   def start_bo_pics
  181.     for n in 0...@battle_order.size
  182.       @bo_battlers[@battle_order[n]].opacity += 20 if @bo_battlers[@battle_order[n]].opacity < Akea_BattleOrder::Opacity
  183.       @mold_battlers[@battle_order[n]].opacity += 20 if @mold_battlers[@battle_order[n]].opacity < Akea_BattleOrder::Opacity
  184.     end
  185.     @bo_Image.opacity += 20
  186.     @start_bo_anime = false if @bo_Image.opacity == 255
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # * Movimento das faces dos battlers
  190.   #--------------------------------------------------------------------------
  191.   def moving_bo_order
  192.     return true if @bo_action.compact.empty?
  193.     unless @bo_action.compact.empty?
  194.       if @bo_action.first == nil
  195.         @bo_action.shift
  196.         return false
  197.       end
  198.       if @bo_battlers[@bo_action.first].opacity > 0
  199.         @bo_battlers[@bo_action.first].opacity -= 30
  200.         @mold_battlers[@bo_action.first].opacity -= 30
  201.         @bo_Image.opacity -= 30 if @battle_order.size == 0
  202.       else
  203.         @bo_timer_count += 1
  204.         for n in 0...@battle_order.size
  205.           if @bo_timer_count != Akea_BattleOrder::Movement_Time + 1
  206.             @bo_battlers[@battle_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  207.             @bo_battlers[@battle_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  208.             @mold_battlers[@battle_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  209.             @mold_battlers[@battle_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  210.           else
  211.             @bo_battlers[@battle_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  212.             @bo_battlers[@battle_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  213.             @mold_battlers[@battle_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  214.             @mold_battlers[@battle_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  215.           end
  216.         end
  217.         @reserve_order.compact!
  218.         for n in 0...@reserve_order.size
  219.           if @bo_timer_count != Akea_BattleOrder::Movement_Time + 1
  220.             @bo_battlers[@reserve_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  221.             @bo_battlers[@reserve_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  222.             @mold_battlers[@reserve_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  223.             @mold_battlers[@reserve_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  224.           else
  225.             @bo_battlers[@reserve_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  226.             @bo_battlers[@reserve_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  227.             @mold_battlers[@reserve_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  228.             @mold_battlers[@reserve_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  229.           end
  230.         end
  231.         if @bo_timer_count == Akea_BattleOrder::Movement_Time
  232.           @bo_action.shift
  233.           @bo_timer_count = 0
  234.         end
  235.       end
  236.     else
  237.       @bo_action.shift
  238.       @bo_timer_count = 0
  239.     end
  240.     false
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # * Criação das imagens dos battlers
  244.   #--------------------------------------------------------------------------
  245.   def create_battle_order_images
  246.     @bo_Image = Sprite.new
  247.     @bo_Image.bitmap = Cache.akea(Akea_BattleOrder::Battle_Image)
  248.     @bo_Image.x = Akea_BattleOrder::Image_X
  249.     @bo_Image.y = Akea_BattleOrder::Image_Y
  250.     @bo_Image.opacity = 0
  251.     @bo_battlers = Array.new
  252.     @mold_battlers = Array.new
  253.     akea_size = Akea_BattleOrder::Size
  254.     for n in 0...$game_party.battle_members.size
  255.       act = $game_party.battle_members[n]
  256.       @bo_battlers[n] = Sprite.new
  257.       if Akea_BattleOrder::Party_Images[$game_party.battle_members[n].id]
  258.         @bo_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Party_Images[$game_party.battle_members[n].id])
  259.         @bo_battlers[n].opacity = 0
  260.         @mold_battlers[n] = Sprite.new
  261.         @mold_battlers[n].bitmap = Cache.akea('')
  262.         next
  263.       end
  264.       if Akea_BattleOrder::Party_Face
  265.         @bo_battlers[n].bitmap = Cache.face(act.face_name)
  266.         face_index = act.face_index
  267.         sx = @bo_battlers[n].bitmap.width/4 * akea_size['Sx'] / 100
  268.         sy = @bo_battlers[n].bitmap.height/2 * akea_size['Sy'] / 100
  269.         @bo_battlers[n].src_rect.set(sx + face_index % 4 * 96, sy + face_index / 4 * 96, akea_size['X'], akea_size['Y'])
  270.       else
  271.         @bo_battlers[n].bitmap = Cache.character(act.character_name)
  272.         face_index = act.character_index
  273.         sign = act.character_name[/^[\!\$]./]
  274.         if sign && sign.include?('$')
  275.           cw = @bo_battlers[n].bitmap.width
  276.           ch = @bo_battlers[n].bitmap.height
  277.           sx = @bo_battlers[n].bitmap.width * akea_size['Sx'] / 100
  278.           sy = @bo_battlers[n].bitmap.height * akea_size['Sy'] / 100
  279.         else
  280.           cw = @bo_battlers[n].bitmap.width / 4
  281.           ch = @bo_battlers[n].bitmap.height / 2
  282.           sx = @bo_battlers[n].bitmap.width/4 * akea_size['Sx'] / 100
  283.           sy = @bo_battlers[n].bitmap.height/2 * akea_size['Sy'] / 100
  284.         end
  285.         @bo_battlers[n].src_rect.set(sx + face_index % 4 * cw + cw/3, sy + face_index / 4 * ch, akea_size['X'], akea_size['Y'])
  286.       end
  287.       @bo_battlers[n].opacity = 0
  288.       @mold_battlers[n] = Sprite.new
  289.       @mold_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Mold)
  290.     end
  291.     for n in $game_party.battle_members.size...($game_troop.members.size + $game_party.battle_members.size)
  292.       act = $game_troop.members[n-$game_party.battle_members.size]
  293.       @bo_battlers[n] = Sprite.new
  294.       if Akea_BattleOrder::Monster_Images[all_battle_members[n].enemy_id]
  295.         @bo_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Monster_Images[all_battle_members[n].enemy_id])
  296.         @bo_battlers[n].opacity = 0
  297.         @mold_battlers[n] = Sprite.new
  298.         @mold_battlers[n].bitmap = Cache.akea('')
  299.         next
  300.       end
  301.       if Akea_BattleOrder::Enemy_Face
  302.         @bo_battlers[n].bitmap = Cache.battler($data_enemies[act.enemy_id].battler_name, act.battler_hue)
  303.         sx = @bo_battlers[n].bitmap.width * akea_size['Sx'] / 100
  304.         sy = @bo_battlers[n].bitmap.height * akea_size['Sy'] / 100
  305.         @bo_battlers[n].src_rect.set(sx, sy, akea_size['X'], akea_size['Y'])
  306.       else
  307.         if Akea_BattleOrder::Enemy_Characters[act.enemy_id]
  308.           @bo_battlers[n].bitmap = Cache.character(Akea_BattleOrder::Enemy_Characters[act.enemy_id]['CharName'])
  309.           face_index = Akea_BattleOrder::Enemy_Characters[act.enemy_id]['Index']
  310.           sign = Akea_BattleOrder::Enemy_Characters[act.enemy_id]['CharName'][/^[\!\$]./]
  311.         else
  312.           @bo_battlers[n].bitmap = Cache.character(Akea_BattleOrder::Enemy_Characters[0]['CharName'])
  313.           face_index = Akea_BattleOrder::Enemy_Characters[0]['Index']
  314.           sign = Akea_BattleOrder::Enemy_Characters[0]['CharName'][/^[\!\$]./]
  315.         end
  316.         if sign && sign.include?('$')
  317.           cw = @bo_battlers[n].bitmap.width
  318.           ch = @bo_battlers[n].bitmap.height
  319.           sx = @bo_battlers[n].bitmap.width * akea_size['Sx'] / 100
  320.           sy = @bo_battlers[n].bitmap.height * akea_size['Sy'] / 100
  321.         else
  322.           cw = @bo_battlers[n].bitmap.width / 4
  323.           ch = @bo_battlers[n].bitmap.height / 2
  324.           sx = @bo_battlers[n].bitmap.width/4 * akea_size['Sx'] / 100
  325.           sy = @bo_battlers[n].bitmap.height/2 * akea_size['Sy'] / 100
  326.         end
  327.         @bo_battlers[n].src_rect.set(sx + face_index % 4 * cw + cw/3, sy + face_index / 4 * ch, akea_size['X'], akea_size['Y'])
  328.       end
  329.         @bo_battlers[n].opacity = 0
  330.         @mold_battlers[n] = Sprite.new
  331.         @mold_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Mold)
  332.     end
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # * Finalização do processo
  336.   #--------------------------------------------------------------------------
  337.   def terminate
  338.     @bo_Image.bitmap.dispose
  339.     @bo_Image.dispose
  340.     @bo_battlers.each{|battler|battler.bitmap.dispose; battler.dispose}
  341.     @mold_battlers.each{|battler|battler.bitmap.dispose; battler.dispose}
  342.     akea_bo_terminate
  343.   end
  344. end
  345. #==============================================================================
  346. # ** Cache
  347. #------------------------------------------------------------------------------
  348. #  Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  349. # Para acelerar o carregamento e preservar memória, este módulo matém o
  350. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  351. # pré-existentes quando mesmo Bitmap é requerido novamente.
  352. #==============================================================================
  353. module Cache
  354.   #--------------------------------------------------------------------------
  355.   # * Carregamento dos gráficos de animação
  356.   #     filename : nome do arquivo
  357.   #     hue      : informações da alteração de tonalidade
  358.   #--------------------------------------------------------------------------
  359.   def self.akea(filename)
  360.     load_bitmap("Graphics/Akea/", filename)
  361.   end
  362. end
  363. #==============================================================================
  364. # ** BattleManager
  365. #------------------------------------------------------------------------------
  366. #  Este módulo gerencia o andamento da batalha.
  367. #==============================================================================
  368. module BattleManager
  369.   #--------------------------------------------------------------------------
  370.   # * Configuração inicial
  371.   #--------------------------------------------------------------------------
  372.   def self.akea_battle_turn
  373.     @action_battlers
  374.   end
  375. end

Lv5.捕梦者

梦石
0
星屑
26209
在线时间
5349 小时
注册时间
2016-3-8
帖子
1655
2
 楼主| 发表于 2020-9-3 10:57:25 | 只看该作者
本帖最后由 alexncf125 于 2020-9-3 11:01 编辑

啊这...
到底为什么我只不过是在 Window_BattleStatus 的 def draw_basic_area(rect, actor) 內,
加了一句 draw_face(actor.face_name, actor.face_index, rect.x - 4, rect.y)
就会令到我方的脸图不见了!??
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21589
在线时间
9407 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

3
发表于 2020-9-3 19:36:26 | 只看该作者
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26209
在线时间
5349 小时
注册时间
2016-3-8
帖子
1655
4
 楼主| 发表于 2020-9-3 19:45:42 | 只看该作者
本帖最后由 alexncf125 于 2020-9-3 19:47 编辑


唔...看不太懂...
结论...把那句bitmap.dispose注释掉就是了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-6 05:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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