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

Project1

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

[已经解决] 如何调整作用范围为敌我均可?

 关闭 [复制链接]

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
跳转到指定楼层
1
发表于 2009-8-30 18:26:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 奶油Da蛋糕 于 2009-8-30 19:51 编辑

如何调整作用范围为敌我均可?此技能既可以对敌方单体使用,又可以对我方单体使用。
我爱66RPG,但我讨厌66.

Lv1.梦旅人

梦石
0
星屑
55
在线时间
869 小时
注册时间
2009-3-13
帖子
782
2
发表于 2009-8-30 19:04:25 | 只看该作者
1、设置两个事件,表明【我方用】与【敌方用】
2、(这个没尝试过哈)公共事件 文章:你想对我方发动技能还是敌方发动技能?然后选择项,然后就强制动作......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
3
 楼主| 发表于 2009-8-30 19:14:28 | 只看该作者
  1.       # 效果范围是敌单体的情况下
  2.       if @skill.scope == 1
  3.         # 开始选择敌人
  4.         start_enemy_select
  5.       # 效果范围是我方单体的情况下
  6.       elsif @skill.scope == 3 or @skill.scope == 5
  7.         # 开始选择角色
  8.         start_actor_select
  9.     # 效果范围是敌我均可的情况下
  10.          elsif @skill.scope == 8
  11.             start_ae_select
  12.       # 效果范围不是单体的情况下
  13.       else
  14.         # 选择特技结束
  15.         end_skill_select
  16.         # 转到下一位角色的指令输入
  17.         phase3_next_actor
  18.       end
复制代码
但是不知道要用什么方法给@skill.scope 赋值 8
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
4
 楼主| 发表于 2009-8-30 19:21:05 | 只看该作者
本帖最后由 奶油Da蛋糕 于 2009-8-30 19:23 编辑

比较难做。start_ae_select里面还要打开一个Arrow类,这个Arrow类又要重新写,并且$game_troop.enemies[@index]与$game_party.actors[@index]是两个毫不相干的变量,根本没法儿关联起来。
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
869 小时
注册时间
2009-3-13
帖子
782
5
发表于 2009-8-30 19:21:54 | 只看该作者
那个,我随便瞎猜的,用一个=号试试看......
貌似=是赋值号,==是等于号......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
6
 楼主| 发表于 2009-8-30 19:26:27 | 只看该作者
那个,我随便瞎猜的,用一个=号试试看......
貌似=是赋值号,==是等于号......
认真的学 发表于 2009-8-30 19:21


关键是在哪个地方赋值?直接用公共事件写@skill.scope = 8的话可能不一定会生效。
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
869 小时
注册时间
2009-3-13
帖子
782
7
发表于 2009-8-30 19:29:14 | 只看该作者
那个,我是脚本盲......不要问我.......不过如果公共事件的话貌似可以试一试......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
8
 楼主| 发表于 2009-8-30 19:30:36 | 只看该作者
仔细看完了。

class Arrow_AE < Arrow_Base
这个类是我的能力写不出来的。

第一个问题是不知道哪个变量作为index,难道是$game_troop??
我觉得我应该先生成$game_troop.enemies[@index],然后
左右加减@index,上下键就切换为$game_party.actors[@index],同样左右键加减@index。
不过即使写完了,也没有鼠标判定。
貌似鼠标的判定是根据类来的(因为上次我删除了一个系统里的窗口类,结果鼠标有报错)。
所以鼠标的判定又要重新写。
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
9
 楼主| 发表于 2009-8-30 19:45:38 | 只看该作者
OK,鼠标看完了,鼠标里的地方和我方的鼠标控制也不过只有刚刚那个变量不同罢了。
其实,按照我刚才那种方法,上下键切换变量,左右键增减@index,如果细心点,说不定我还是可以搞定的。
但是,鼠标却有难题。鼠标最不好搞定的还是判定什么情况下用$game_troop.enemies,什么情况下用$game_party.actors。我在想,如果没有一个变量包含这两个变量的值的话,就很难写鼠标的了。
  1. class Arrow_Actor
  2. if @self_alias == nil
  3.    alias self_update update
  4.    @self_alias = true
  5. end
  6. def update
  7.    mouse_x, mouse_y = Mouse.get_mouse_pos
  8.    idx = 0
  9.    for i in $game_party.actors do
  10.      if i.exist?
  11.        top_x = i.screen_x - self.ox
  12.        top_y = i.screen_y - self.oy
  13.        bottom_x = top_x + self.src_rect.width
  14.        bottom_y = top_y + self.src_rect.height
  15.        if (mouse_x > top_x - $角色选框扩大) and (mouse_y > top_y - $角色选框扩大) and
  16.           (mouse_x < bottom_x + $角色选框扩大) and (mouse_y < bottom_y + $角色选框扩大)
  17.          if @index != idx
  18.            $game_system.se_play($data_system.cursor_se)
  19.            @index = idx
  20.          end
  21.        end
  22.      end
  23.      idx += 1
  24.    end
  25.    self_update
  26. end
  27. end
复制代码
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
10
 楼主| 发表于 2009-8-30 20:25:13 | 只看该作者
  1. class Arrow_AE < Arrow_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取光标指向的角色
  4.   #--------------------------------------------------------------------------
  5.   def actor
  6.     return $game_party.actors[@index]
  7.   end
  8.   def enemy
  9.     return $game_troop.enemies[@index]
  10.   end
  11.   #--------------------------------------------------------------------------
  12.   # ● 刷新画面
  13.   #--------------------------------------------------------------------------
  14.   def update
  15.     super
  16.     # 如果是选择角色
  17.     if @actor
  18.       # 光标右
  19.     if Input.repeat?(Input::RIGHT)
  20.       $game_system.se_play($data_system.cursor_se)
  21.       @index += 1
  22.       @index %= $game_party.actors.size
  23.     end
  24.     # 光标左
  25.     if Input.repeat?(Input::LEFT)
  26.       $game_system.se_play($data_system.cursor_se)
  27.       @index += $game_party.actors.size - 1
  28.       @index %= $game_party.actors.size
  29.     end
  30.     # 光标上
  31.     if Input.repeat?(Input::UP)
  32.       $game_system.se_play($data_system.cursor_se)
  33.       @actor = false
  34.     end   
  35.     # 设置活动块坐标
  36.     if self.actor != nil
  37.       self.x = self.actor.s_x - 420
  38.       self.y = self.actor.s_y - 50
  39.     end
  40.     else
  41.     # 如果指向不存在的敌人就离开
  42.     $game_troop.enemies.size.times do
  43.       break if self.enemy.exist?
  44.       @index += 1
  45.       @index %= $game_troop.enemies.size
  46.     end
  47.     # 光标右
  48.     if Input.repeat?(Input::RIGHT)
  49.       $game_system.se_play($data_system.cursor_se)
  50.       $game_troop.enemies.size.times do
  51.         @index += 1
  52.         @index %= $game_troop.enemies.size
  53.         break if self.enemy.exist?
  54.       end
  55.     end
  56.     # 光标左
  57.     if Input.repeat?(Input::LEFT)
  58.       $game_system.se_play($data_system.cursor_se)
  59.       $game_troop.enemies.size.times do
  60.         @index += $game_troop.enemies.size - 1
  61.         @index %= $game_troop.enemies.size
  62.         break if self.enemy.exist?
  63.       end
  64.     end   
  65.     # 光标下
  66.     if Input.repeat?(Input::DOWN)
  67.       $game_system.se_play($data_system.cursor_se)
  68.       @actor = true
  69.     end  
  70.   end  
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 刷新帮助文本
  74.   #--------------------------------------------------------------------------
  75.   def update_help
  76.     if @actor
  77.     # 帮助窗口显示角色的状态
  78.     @help_window.set_actor(self.actor)
  79.   else
  80.     @help_window.set_enemy(self.enemy)
  81.     end
  82.   end
  83. end
复制代码
  1. def start_ae_select
  2.     # 生成角色箭头
  3.     @actor_arrow = Arrow_AE.new(@spriteset.viewport2)
  4.     @actor_arrow.index = @actor_index
  5.     # 关联帮助窗口
  6.     @actor_arrow.help_window = @help_window
  7.     # 无效化角色指令窗口
  8.    # @actor_command_window.active = false
  9.    # @actor_command_window.visible = false
  10.    
  11. #-------------------宠------------------------   
  12.     # 无效化角色指令窗口
  13.     @actor_command_window.active = false
  14.     @actor_command_window.visible = false
  15.     @actor2_command_window.active = false
  16.     @actor2_command_window.visible = false  
  17. #-------------------宠------------------------

  18. end
复制代码
  1.   def end_ae_select
  2.     # 释放角色箭头
  3.    # @actor_arrow.dispose
  4.    # @actor_arrow = nil
  5.   
  6. #-------------------------宠--------------------------
  7.     # 释放角色箭头
  8.     @actor_arrow.dispose
  9.     @actor_arrow = nil
  10.     if @active_battler.id < 20 and @active_battler.current_action.kind == 6
  11.       @actor_command_window.active = true
  12.       @actor_command_window.visible = true
  13.       @help_window.visible = false
  14.     elsif @active_battler.current_action.kind == 6
  15.       @actor2_command_window.active = true
  16.       @actor2_command_window.visible = true
  17.       @help_window.visible = false
  18.     end   
  19. #-------------------------宠--------------------------

  20. end
复制代码
OK,理论上没问题,实际上可能会有问题。
特别是这个,@actor_arrow = Arrow_AE.new(@spriteset.viewport2)
不知道viewport2这个参数的意义,究竟是用viewport1还是viewport2呢?
鼠标还在构思中。。。。。
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 04:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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