Project1

标题: 有没有战斗时分前后站位的脚本? [打印本页]

作者: 备用镧桐翎    时间: 2016-10-10 20:52
标题: 有没有战斗时分前后站位的脚本?
理想的是不同站位有不同优劣势、并限制一些动作的系统,另外得兼容全动画战斗,不知道有没有类似的?大概有也不会十全十美吧,如果有愿意写的我可以付现金。
作者: jiushiainilip19    时间: 2016-10-11 18:33
本帖最后由 jiushiainilip19 于 2016-10-11 18:34 编辑

写我不会 但是做一些提示可以
战斗画面是有坐标的
RUBY 代码复制
  1. screen_y screen_x screen_z

这三种
在游戏中每一个角色都有一个固定的待机坐标,这些坐标在全动画战斗脚本中是这样写的
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 取得战斗画面的 X 坐标
  4.   #--------------------------------------------------------------------------
  5.   def screen_x
  6.     # 返回计算后的队伍 X 坐标的排列顺序
  7.     if self.index != nil
  8.       #......................................................................
  9.       return self.index * 90 + 500
  10.       #......................................................................
  11.       else
  12.       return 0
  13.     end
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 取得战斗画面的 Y 坐标
  17.   #--------------------------------------------------------------------------
  18.   def screen_y
  19.     #........................................................................
  20.     return 464 - self.index * 110 ;  
  21.     #........................................................................
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 取得战斗画面的 Z 坐标
  25.   #--------------------------------------------------------------------------
  26.   def screen_z
  27.     # 返回计算后的队伍 Z 坐标的排列顺序
  28.     if self.index != nil
  29.       return 4 - self.index
  30.     else
  31.       return 0
  32.     end
  33.   end
  34. end


看不懂没关系,但是可以从另一个方式去看他,我们把视线转移到Game_Battler 3中!

然后在Game_Battler 3中P出来 例如:
RUBY 代码复制
  1. if hit_result == true
  2.       # 计算威力
  3.       power = skill.power + user.atk * skill.atk_f / 100
  4.       if power > 0
  5.         power -= self.pdef * skill.pdef_f / 200
  6.         power -= self.mdef * skill.mdef_f / 200
  7.         power = [power, 0].max
  8.       end
  9.       p user.screen_y  #P 出行动这角色的原点Y坐标  可以看下图!
  10.  
  11.       if user.is_a?(Game_Actor)  && user.screen_y==354
  12.         power*=100000
  13.       p "站位好就是牛"
  14.       end
  15.   #我方角色在Y==354的时候威力增益100000 请看实际图片如下

结果出来了,这个在行动中的角色Y值在464

好了,那我们就有办法治理他了   请看上面的代码

好了 ,我会的只有这些了,高深的没辙了,当然想写出什么效果你可以说出来
我试一试能够告诉你怎么达到(前提是我要会 - -!)

QQ截图20161011182814.png (205.03 KB, 下载次数: 10)

QQ截图20161011182814.png

QQ截图20161011183126.png (210.22 KB, 下载次数: 12)

QQ截图20161011183126.png

QQ截图20161011183134.png (104.39 KB, 下载次数: 9)

QQ截图20161011183134.png

作者: 备用镧桐翎    时间: 2016-10-13 16:20
jiushiainilip19 发表于 2016-10-11 18:33
写我不会 但是做一些提示可以
战斗画面是有坐标的

谢谢回答,没弹消息我没发现有响应了。。不知道你玩过跨过我的尸体没有?我希望的效果差不多就类似。一个是希望能在战斗中移动站位(仅前后移动),可以灵活的应对不同的情况,增加战斗的策略性,另一个是希望拉大不同武器的多样性,例如长武器可能会伤害前排所有人,射击武器前后贯穿,单手武器在后排无法攻击之类的效能差距。我想的模式看起来基本是这样: ;
作者: bboodd    时间: 2016-10-13 17:20
等高手指导,我也想知道,楼主的设想怎么去实现。
作者: jiushiainilip19    时间: 2016-10-14 08:27
备用镧桐翎 发表于 2016-10-13 16:20
谢谢回答,没弹消息我没发现有响应了。。不知道你玩过跨过我的尸体没有?我希望的效果差不多就类似。一个 ...

单手武器装备无法攻击的效果直接可以用一个if来直接判断就好了
RUBY 代码复制
  1. if @active_battler.is_a?(Game_Actor) && @active_battler.weapon_id == xx
  2.          p "我不  准你这么做 "
  3.        else
  4.  
  5.         # 演奏确定 SE
  6.         $game_system.se_play($data_system.decision_se)
  7.         # 设置行动
  8.         @active_battler.current_action.kind = 0
  9.         @active_battler.current_action.basic = 0
  10.         # 开始选择敌人
  11.         start_enemy_select
  12. end


长武器会有几率伤害其前排这个效果 我游戏也用过 我自己的思路是 先 要把 敌人的站位定好然后取出敌人站位坐标

然后在例如敌人是五人   1      2     3
                                          4      5
角色 A佩戴S武器对敌人进行技能攻击. 假如 P出4 5敌人的坐标是  248 384
RUBY 代码复制
  1. if user.is_a?(Game_Actor) && user.weapon_id == 1 #需要几率就添加rand(100)<多少自己设置了
  2.    for enemy in $game_troop.enemies
  3.      if enemy.exist? && enemy!=self
  4.     case enemy.screen_x
  5.      when 248
  6.        enemy.hp-=self.damage and enemy.damage=-self.damage and  enemy.damage_pop = true
  7.     when 384
  8.        enemy.hp-=self.damage and enemy.damage=-self.damage and  enemy.damage_pop = true
  9.      end
  10.    end
  11. end
  12. end
  13. #这是我的一个方法,好的做法是对技能行动结果去搞,我也不怎么会。我也不需要 因为我要做许多特效! 贯穿也是 一个道理

作者: 备用镧桐翎    时间: 2016-10-28 19:53
jiushiainilip19 发表于 2016-10-14 08:27
单手武器装备无法攻击的效果直接可以用一个if来直接判断就好了
      
if @active_battler.is_a?(Game_A ...

感谢,抱歉没有及时回复,断断续续的看了几遍你的脚本,想多少明白一些再回复,但是结果还是只能看懂一点,实际操作估计完全不行=A=。如果可能还是希望能直接有一个完整的脚本。
ps:而且我的设计也比较怪,其实我的想法是围绕boss战设计战斗的,所以敌人有无站位其实不太重要,主要是不同特点的boss让玩家被迫改变战术,所以其实被贯穿、横扫的主要是玩家队伍。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1