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

Project1

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

[已经解决] 如何知道技能目标是敌人1-8中的哪一个?

[复制链接]

Lv2.观梦者

梦石
0
星屑
685
在线时间
661 小时
注册时间
2012-10-21
帖子
350
跳转到指定楼层
1
发表于 2015-2-10 12:28:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
公共事件里面有个敌人变身,里面可设定敌人1-8中某个敌人变身成别的怪物,
我想做一个技能,对敌人释放后,调用公共事件,使得目标敌人变身
那么,如何知道目标敌人是敌群中敌人1-8中的哪一个?

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-2-10 12:30:36 | 只看该作者
本帖最后由 taroxd 于 2015-2-10 12:55 编辑

$game_actors[角色ID].last_target_index(未测试)

不知道角色ID的话,就让每个角色使用的技能不同,调用不同的公共事件。

当然,最好的方法还是完全不用公共事件,直接纯脚本解决

点评

见此楼第二行  发表于 2015-2-10 19:37
那释放技能的角色id又是多少呢?如果用你这方法如何获取角色id  发表于 2015-2-10 19:36

评分

参与人数 2星屑 +2 梦石 +1 收起 理由
VIPArcher + 1 我很赞同
bloodyliao + 2 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
685
在线时间
661 小时
注册时间
2012-10-21
帖子
350
3
 楼主| 发表于 2015-2-10 12:42:36 | 只看该作者
是这样的,我有个叫本,能改变敌人的坐标

RUBY 代码复制
  1. =begin
  2. #===============================================================================
  3.  Title: Enemy Re-position
  4.  Author: Hime
  5.  Date: Feb 15, 2014
  6. --------------------------------------------------------------------------------
  7.  ** Change log
  8.  Feb 15, 2014
  9.    - Checks whether enemy exists before trying to re-position
  10.  Apr 6, 2013
  11.    - Initial release
  12. --------------------------------------------------------------------------------   
  13.  ** Terms of Use
  14.  * Free to use in non-commercial projects
  15.  * Contact me for commercial use
  16.  * No real support. The script is provided as-is
  17.  * Will do bug fixes, but no compatibility patches
  18.  * Features may be requested but no guarantees, especially if it is non-trivial
  19.  * Credits to Hime Works in your project
  20.  * Preserve this header
  21. --------------------------------------------------------------------------------
  22.  ** Description
  23.  
  24.  This script allows you to move your enemy's sprites around in battle using
  25.  script calls.
  26. --------------------------------------------------------------------------------
  27.  ** Installation
  28.  
  29.  Place this script below Materials and above Main
  30.  
  31. --------------------------------------------------------------------------------
  32.  ** Usage
  33.  
  34.  Make a script call during battle
  35.  
  36.    position_enemy(enemy_index, x, y)
  37.    move_enemy(enemy_index, x, y)
  38.    
  39.  The enemy_index is the index of the enemy, where 1 is the first enemy,
  40.  2 is the second enemy, and so on.
  41.  
  42.  x, y is the position they will be moved to.
  43.  
  44.  The first call is an absolute position relative to the top-left corner of
  45.  the screen.
  46.  
  47.  The second call is relative to the sprite's current position. So if you say
  48.  x = 100, then it will shift it to the right 100 pixels.
  49.  
  50. #===============================================================================
  51. =end
  52. $imported = {} if $imported.nil?
  53. $imported["TH_Enemy_Reposition"] = true
  54. #===============================================================================
  55. # ** Configuration
  56. #===============================================================================
  57. module TH
  58.   module Enemy_Reposition
  59.  
  60.     # how fast the sprite moves around the screen
  61.     Move_Speed = 12
  62.   end
  63. end
  64. #===============================================================================
  65. # ** Rest of script
  66. #===============================================================================
  67. class Game_Interpreter
  68.  
  69.   #-----------------------------------------------------------------------------
  70.   # Specify absolute position where the enemy should be placed
  71.   #-----------------------------------------------------------------------------
  72.   def position_enemy(index, x, y)
  73.     enemy = $game_troop.members[index-1]
  74.     return unless enemy
  75.     enemy.set_new_position(x, y)
  76.  
  77.   end
  78.  
  79.   #-----------------------------------------------------------------------------
  80.   # Specify relative position where the enemy should be placed.
  81.   #-----------------------------------------------------------------------------
  82.   def move_enemy(index, x, y)
  83.     enemy = $game_troop.members[index-1]
  84.     return unless enemy
  85.     enemy.set_new_position(enemy.screen_x + x, enemy.screen_y + y)
  86.   end
  87. end
  88.  
  89. class Game_Enemy < Game_Battler
  90.  
  91.   attr_accessor :new_screen_x
  92.   attr_accessor :new_screen_y
  93.   attr_accessor :position_changing
  94.  
  95.   def position_changing?
  96.     @position_changing
  97.   end
  98.  
  99.   def set_new_position(x, y)
  100.     @new_screen_x = x
  101.     @new_screen_y = y
  102.     @position_changing = true
  103.   end
  104. end
  105.  
  106. class Game_Troop < Game_Unit
  107.  
  108.   alias :th_enemy_reposition_setup :setup
  109.   def setup(troop_id)
  110.     th_enemy_reposition_setup(troop_id)
  111.     setup_initial_positions
  112.   end
  113.  
  114.   def setup_initial_positions
  115.     @enemies.each do |enemy|
  116.       enemy.new_screen_x = enemy.screen_x
  117.       enemy.new_screen_y = enemy.screen_y
  118.     end
  119.   end
  120. end
  121.  
  122. class Sprite_Battler < Sprite_Base
  123.  
  124.   alias :th_enemy_reposition_update :update
  125.   def update
  126.     th_enemy_reposition_update
  127.     if @battler && @battler.enemy?
  128.       update_move_position if @battler.position_changing?
  129.     end
  130.   end
  131.  
  132.   #-----------------------------------------------------------------------------
  133.   # How fast the sprite's position is changed in pixels
  134.   #-----------------------------------------------------------------------------
  135.   def update_move_speed
  136.     TH::Enemy_Reposition::Move_Speed
  137.   end
  138.  
  139.   #-----------------------------------------------------------------------------
  140.   # Move the sprite towards its new position
  141.   #-----------------------------------------------------------------------------
  142.   def update_move_position
  143.     if @battler.screen_x != @battler.new_screen_x
  144.       if @battler.screen_x < @battler.new_screen_x
  145.         self.x = [@battler.screen_x + update_move_speed, @battler.new_screen_x].min
  146.       else
  147.         self.x = [@battler.screen_x - update_move_speed, @battler.new_screen_x].max
  148.       end
  149.       @battler.screen_x = self.x
  150.     end
  151.  
  152.     if @battler.screen_y != @battler.new_screen_y
  153.       if @battler.screen_x < @battler.new_screen_x
  154.         self.y = [@battler.screen_y + update_move_speed, @battler.new_screen_y].min
  155.       else
  156.         self.y = [@battler.screen_y - update_move_speed, @battler.new_screen_y].max
  157.       end
  158.       @battler.screen_y = self.y
  159.     end
  160.  
  161.     if @battler.screen_x == @battler.new_screen_x && @battler.screen_y == @battler.new_screen_y
  162.       @battler.position_changing = false
  163.     end
  164.     self.z = @battler.screen_z
  165.   end
  166. end



用脚本:move_enemy(enemy_index, x, y)就能改变敌人坐标,但是问题在于,这里的enemy_index如何用赋值,使之成为技能目标所对应的敌人?
我目前只会让enemy_index=1,2,3……之类的,这样就只能固定某个敌人编号了,没法对应技能目标

点评

这个脚本与技能目标完全没有关系,怎么改?  发表于 2015-2-10 13:14
能不能在脚本里直接改下?  发表于 2015-2-10 13:13
2L不是回答了吗?  发表于 2015-2-10 12:56
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7436
在线时间
1098 小时
注册时间
2006-7-18
帖子
569
4
发表于 2015-2-10 17:05:37 | 只看该作者
  1. #==============================================================================
  2. # +++ MOG - Battle Cursor (1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # http://www.atelier-rgss.com/
  6. #==============================================================================
  7. # Sistema de cursor animado de batalha nos sprites dos battlers.
  8. #==============================================================================
  9. # Arquivo necessário. (Graphics/System)
  10. #
  11. # Battle_Cursor.png
  12. #
  13. #==============================================================================

  14. #==============================================================================
  15. # ■ CURSOR SETTING
  16. #==============================================================================
  17. module MOG_BATTLE_CURSOR
  18.   #Definição da posição do cursor em relação ao alvo.
  19. # CURSOR_POSITION = [-45, -16]
  20.   CURSOR_POSITION = [-50, -16]#显示指针的位置
  21.   #Definição da posição do nome do alvo.
  22.   CURSOR_NAME_POSITION = [-50, 25]#显示敌人名字的位置
  23.   #Ativar efeito deslizar.
  24.   CURSOR_SLIDE_EFFECT = true
  25.   #Ativar animação de levitação.
  26.   CURSOR_FLOAT_EFFECT = false#true
  27.   #Definição da prioridade do cursor.
  28.   CURSOR_Z = 0
  29. end

  30. #==============================================================================
  31. # ■ Game Temp
  32. #==============================================================================
  33. class Game_Temp
  34.   
  35.   attr_accessor :battle_cursor
  36.   
  37.   #--------------------------------------------------------------------------
  38.   # ● Initialize
  39.   #--------------------------------------------------------------------------  
  40.   alias mog_battle_cursor_initialize initialize
  41.   def initialize
  42.       @battle_cursor = [0,0,false,""]
  43.       mog_battle_cursor_initialize
  44.   end  
  45.   
  46. end

  47. #==============================================================================
  48. # ■ Spriteset Battle Cursor
  49. #==============================================================================
  50. class Sprite_Battle_Cursor < Sprite
  51.   include MOG_BATTLE_CURSOR
  52.   
  53.   #--------------------------------------------------------------------------
  54.   # ● Initialize
  55.   #--------------------------------------------------------------------------        
  56.   def initialize(viewport = nil)
  57.       super(viewport)
  58.       $game_temp.battle_cursor = [0,0,false,""]
  59.       self.bitmap = Cache.system("Battle_Cursor")
  60.       self.visible = $game_temp.battle_cursor[2]
  61.       self.z = CURSOR_Z
  62.       self.z = 10 if $mog_rgss3_battle_hud != nil
  63.       @cursor_name = Sprite.new
  64.       @cursor_name.bitmap = Bitmap.new(120,32)
  65.       @cursor_name.z = self.z + 1
  66.       @cursor_name.bitmap.font.size = 16
  67.       @cursor_name_enemy = $game_temp.battle_cursor[3]
  68.       @cursor_name_position = [CURSOR_NAME_POSITION[0] ,CURSOR_NAME_POSITION[1]]
  69.       @cursor_float = [0,0]
  70.       refresh_cursor_name
  71.   end
  72.   
  73.   #--------------------------------------------------------------------------
  74.   # ● Dispose Sprite
  75.   #--------------------------------------------------------------------------         
  76.   def dispose
  77.       super
  78.       dispose_sprite_cursor
  79.   end
  80.   
  81.   #--------------------------------------------------------------------------
  82.   # ● Dispose Sprite Cursor
  83.   #--------------------------------------------------------------------------            
  84.   def dispose_sprite_cursor
  85.       if @cursor_name != nil
  86.          @cursor_name.bitmap.dispose
  87.          @cursor_name.dispose
  88.       end
  89.       self.bitmap.dispose
  90.   end

  91.   #--------------------------------------------------------------------------
  92.   # ● Refresh Cursor Name
  93.   #--------------------------------------------------------------------------              
  94.   def refresh_cursor_name
  95.       @cursor_name_enemy = $game_temp.battle_cursor[3]
  96.       @cursor_name.bitmap.clear
  97.       @cursor_name.bitmap.draw_text(0,0,120,32,@cursor_name_enemy.to_s,1)
  98.   end

  99.   #--------------------------------------------------------------------------
  100.   # ● Update
  101.   #--------------------------------------------------------------------------            
  102.   def update
  103.       super
  104.       update_sprite_cursor
  105.   end

  106.   #--------------------------------------------------------------------------
  107.   # ● Update Sprite Cursor
  108.   #--------------------------------------------------------------------------              
  109.   def update_sprite_cursor
  110.       update_visible
  111.       update_cursor_float_effect
  112.       execute_move(0,self.x,$game_temp.battle_cursor[0])
  113.       execute_move(1,self.y,$game_temp.battle_cursor[1] + @cursor_float[1])
  114.       update_sprite_name
  115.   end

  116.   #--------------------------------------------------------------------------
  117.   # ● Update Visible
  118.   #--------------------------------------------------------------------------               
  119.   def update_visible
  120.       self.visible = $game_temp.battle_cursor[2]
  121.       if !self.visible
  122.          self.x = -64
  123.          self.y = -64
  124.       end  
  125.   end  
  126.   
  127.   #--------------------------------------------------------------------------
  128.   # ● Update Sprite Name
  129.   #--------------------------------------------------------------------------               
  130.   def update_sprite_name
  131.       return if @cursor_name == nil
  132.       refresh_cursor_name  if @cursor_name_enemy != $game_temp.battle_cursor[3]
  133.       @cursor_name.x = self.x + @cursor_name_position[0]
  134.       @cursor_name.y = self.y + @cursor_name_position[1]
  135.       @cursor_name.opacity = self.opacity
  136.       @cursor_name.visible = self.visible
  137.   end  
  138.   
  139.   #--------------------------------------------------------------------------
  140.   # ● Update Cursor Float Effect
  141.   #--------------------------------------------------------------------------              
  142.   def update_cursor_float_effect
  143.       return if !CURSOR_FLOAT_EFFECT
  144.       @cursor_float[0] += 1
  145.       case @cursor_float[0]
  146.         when 0..20
  147.           @cursor_float[1] += 1
  148.         when 21..40
  149.           @cursor_float[1]  -= 1
  150.         else
  151.           @cursor_float[0] = 0
  152.           @cursor_float[1] = 0
  153.       end        
  154.   end  
  155.   
  156.   #--------------------------------------------------------------------------
  157.   # ● Execute Move
  158.   #--------------------------------------------------------------------------      
  159.   def execute_move(type,cp,np)
  160.       sp = 5 + ((cp - np).abs / 5)
  161.       if cp > np
  162.          cp -= sp
  163.          cp = np if cp < np
  164.       elsif cp < np
  165.          cp += sp
  166.          cp = np if cp > np
  167.       end     
  168.       self.x = cp if type == 0
  169.       self.y = cp if type == 1
  170.   end      
  171.   
  172. end

  173. #==============================================================================
  174. # ■ Spriteset Battle
  175. #==============================================================================
  176. class Spriteset_Battle
  177.   
  178.   #--------------------------------------------------------------------------
  179.   # ● Initialize
  180.   #--------------------------------------------------------------------------      
  181.   alias mog_battle_cursor_initialize initialize
  182.   def initialize
  183.       mog_battle_cursor_initialize
  184.       create_cursor
  185.   end
  186.   
  187.   #--------------------------------------------------------------------------
  188.   # ● Dispose
  189.   #--------------------------------------------------------------------------      
  190.   alias mog_battle_cursor_dispose dispose
  191.   def dispose
  192.       mog_battle_cursor_dispose
  193.       dispose_cursor
  194.   end
  195.   
  196.   #--------------------------------------------------------------------------
  197.   # ● Update
  198.   #--------------------------------------------------------------------------         
  199.   alias mog_battle_cursor_update update
  200.   def update
  201.       mog_battle_cursor_update
  202.       update_battle_cursor
  203.   end  
  204.   
  205.   #--------------------------------------------------------------------------
  206.   # ● Create_Cursor
  207.   #--------------------------------------------------------------------------        
  208.   def create_cursor
  209.       return if @battle_cursor != nil
  210.       @battle_cursor = Sprite_Battle_Cursor.new      
  211.   end
  212.   
  213.   #--------------------------------------------------------------------------
  214.   # ● Dispose Cursor
  215.   #--------------------------------------------------------------------------        
  216.   def dispose_cursor
  217.       return if @battle_cursor == nil
  218.       @battle_cursor.dispose
  219.   end  
  220.   
  221.   #--------------------------------------------------------------------------
  222.   # ● Update Battle Cursor
  223.   #--------------------------------------------------------------------------         
  224.   def update_battle_cursor
  225.       return if @battle_cursor == nil
  226.       @battle_cursor.update      
  227.   end
  228.   
  229. end

  230. #==============================================================================
  231. # ■ Battle Cursor Index
  232. #==============================================================================
  233. module Battle_Cursor_index
  234.   include MOG_BATTLE_CURSOR
  235.   #--------------------------------------------------------------------------
  236.   # ● Check Index Limit
  237.   #--------------------------------------------------------------------------      
  238.   def check_index_limit
  239.       self.index = 0 if self.index >= item_max
  240.       self.index = (item_max - 1) if self.index < 0
  241.   end      
  242.   
  243.   #--------------------------------------------------------------------------
  244.   # ● Set Cursor Position Enemy
  245.   #--------------------------------------------------------------------------   
  246.   def set_cursor_position_enemy
  247.       return if !self.active
  248.       $game_temp.battle_cursor[0] = $game_troop.alive_members[self.index].screen_x + CURSOR_POSITION[0] rescue nil
  249.       $game_temp.battle_cursor[1] = $game_troop.alive_members[self.index].screen_y + CURSOR_POSITION[1] rescue nil
  250.       $game_temp.battle_cursor[3] = $game_troop.alive_members[self.index].name rescue nil
  251.       $game_temp.battle_cursor = [0,0,false,0] if $game_temp.battle_cursor[0] == nil
  252.   end
  253.   
  254.   #--------------------------------------------------------------------------
  255.   # ● Set Cursor Position Actor
  256.   #--------------------------------------------------------------------------   
  257.   def set_cursor_position_actor
  258.       return if !self.active
  259.       $game_temp.battle_cursor[0] = $game_party.members[self.index].screen_x + CURSOR_POSITION[0] rescue nil
  260.       $game_temp.battle_cursor[1] = $game_party.members[self.index].screen_y + CURSOR_POSITION[1] rescue nil
  261.       $game_temp.battle_cursor[3] = $game_party.members[self.index].name rescue nil
  262.       $game_temp.battle_cursor = [0,0,false,0] if $game_temp.battle_cursor[0] == nil
  263.   end  
  264.   
  265.   #--------------------------------------------------------------------------
  266.   # ● Process Cursor Move
  267.   #--------------------------------------------------------------------------
  268.   def process_cursor_move
  269.       return unless cursor_movable?
  270.       last_index = @index
  271.       cursor_move_index(+1) if Input.repeat?(:DOWN)
  272.       cursor_move_index(-1) if Input.repeat?(:UP)
  273.       cursor_move_index(+1) if Input.repeat?(:RIGHT)
  274.       cursor_move_index(-1) if Input.repeat?(:LEFT)
  275.       if @index != last_index
  276.          Sound.play_cursor
  277.       end
  278.   end

  279.   #--------------------------------------------------------------------------
  280.   # ● Process Cursor Move Index
  281.   #--------------------------------------------------------------------------  
  282.   def cursor_move_index(value = 0)
  283.       self.index += value
  284.       check_index_limit
  285.   end

  286. end

  287. #==============================================================================
  288. # ■ Window_BattleActor
  289. #==============================================================================
  290. class Window_BattleActor < Window_BattleStatus
  291.   include Battle_Cursor_index
  292.   
  293.   #--------------------------------------------------------------------------
  294.   # ● Update
  295.   #--------------------------------------------------------------------------  
  296.   def update
  297.       super
  298.       set_cursor_position_actor
  299.   end  

  300.   #--------------------------------------------------------------------------
  301.   # ● Show
  302.   #--------------------------------------------------------------------------
  303.   alias mog_battle_cursor_show show
  304.   def show
  305.       if @info_viewport
  306.          set_cursor_position_actor
  307.          $game_temp.battle_cursor[2] = true
  308.       end
  309.       mog_battle_cursor_show
  310.   end

  311.   #--------------------------------------------------------------------------
  312.   # ● Hide
  313.   #--------------------------------------------------------------------------
  314.   alias mog_battle_cursor_hide hide
  315.   def hide
  316.       if @info_viewport
  317.           $game_temp.battle_cursor[2] = false
  318.       end
  319.       mog_battle_cursor_hide
  320.   end  
  321.   
  322. end

  323. #==============================================================================
  324. # ■ Window_BattleEnemy
  325. #==============================================================================
  326. class Window_BattleEnemy < Window_Selectable
  327.   include Battle_Cursor_index
  328.   
  329.   #--------------------------------------------------------------------------
  330.   # ● Update
  331.   #--------------------------------------------------------------------------  
  332.   def update
  333.       super
  334.       set_cursor_position_enemy
  335.   end

  336.   #--------------------------------------------------------------------------
  337.   # ● Show
  338.   #--------------------------------------------------------------------------
  339.   alias mog_battle_cursor_show show
  340.   def show
  341.       if @info_viewport
  342.          set_cursor_position_enemy
  343.          $game_temp.battle_cursor[2] = true
  344.       end
  345.       mog_battle_cursor_show
  346.   end

  347.   #--------------------------------------------------------------------------
  348.   # ● Hide
  349.   #--------------------------------------------------------------------------
  350.   alias mog_battle_cursor_hide hide
  351.   def hide
  352.       if @info_viewport
  353.           $game_temp.battle_cursor[2] = false
  354.       end
  355.       mog_battle_cursor_hide
  356.   end  
  357.   
  358. end

  359. $mog_rgss3_battle_cursor = true
复制代码
需要在Graphics\System里添加一个名为Battle_Cursor.png的图标(指针或者箭头或者手指头)

这是一个选择目标名字的时候,目标前面会有个图标来显示当前选中的目标!不过……选技能时技能框太大会遮挡敌人图像,不太容易看见图标!

点评

这个效果应该是类似FF中把敌人变成青蛙的魔法吧!  发表于 2015-2-10 17:17
好像是……看错成使用技能时怎么知道是选中哪个目标……  发表于 2015-2-10 17:15
答非所问吧?  发表于 2015-2-10 17:11
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 21:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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