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

Project1

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

[已经解决] 反击的设定问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
跳转到指定楼层
1
发表于 2016-5-11 21:53:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 夜狠简单 于 2016-5-11 21:58 编辑

使用方法
#对于身中“反击”状态的角色,当收到单独的攻击的时候会自动反击
#反击的模式可以在下面设定

#-cr (counter react)下面设定可以反击的挨打设定:

# 比如设定一个状态名为“反击 -crm”,则受到魔法攻击的时候会自动反击
#-cra50(attack)   =>遭到物理攻击(普攻)的时候50%概率反击。
#-crp  (physical) =>遭到物理伤害(物攻+物理技能)的时候反击。
#-crm  (magic)    =>遭到法术伤害(法术技能)的时候反击。
#-crs  (skill)    =>遭到技能伤害(物理技能+法术技能)的时候反击。
#-1cre7 (element)  =>遭到属性ID为7的攻击的时候反击。

#-ca (counter act)下面设定反击行为:

#比如设置一个状态名叫做“反击 -cas19”,那么受到攻击的时候就会用19号特技反击。
#-caa  (attack)   =>使用物理攻击反击。
#-cas1 (skill)    =>使用ID为1的技能反击。
#-cac  (copy)     =>复制敌人攻击方式(普攻+技能)进行反击。
#-cai1 (item)     =>使用ID为1的物品。
#-cae  (escape)   =>逃跑,敌人使用。

#注意和即时战斗的共同使用问题……

#举例:设置一个状态,使得遭遇物理攻击的时候使用物品4,“反击 -crp -cai4”
@578783944
使用过程遇到一些过程
反击 -cae1
在默认工程里面,我设置史莱姆用特技炎【炎是属性001】打我。但是不会反击。
反击 -crp-cas 这样只会反击攻击


还有希望crp这些能附加概率,概率的值由变量来控制。

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
97 小时
注册时间
2015-3-27
帖子
225
5
发表于 2016-5-11 22:26:06 | 只看该作者
反击 -crp-cas 这样只会反击攻击


你这个问题,也是定义问题。
说明中定义的cas1 代表用1号技能反击,你如果不写数字,0号技能为空,所以不会用技能反击

点评

嗯嗯,我get到了,已经到想要的功能了,再次谢谢解答  发表于 2016-5-11 22:34
我的博客:http://wang1212.github.io/
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
4
 楼主| 发表于 2016-5-11 22:23:10 | 只看该作者
578783944 发表于 2016-5-11 22:08
我先给你说概率这个问题,其实很简单 你在脚本中 Ctrl+F 搜索下面这段代码按照这个样子修改这句为下面这样 ...

alias original_initialize_before_counter_action initialize
  def initialize
    original_initialize_before_counter_action()
    @counter_action = Game_BattleAction.new
  end  

还有脚本里这和原来的有什么不一样用途吗?我感觉是一样的
这是原来的
#--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    @battler_name = ""
    @battler_hue = 0
    @hp = 0
    @sp = 0
    @states = []
    @states_turn = {}
    @maxhp_plus = 0
    @maxsp_plus = 0
    @str_plus = 0
    @dex_plus = 0
    @agi_plus = 0
    @int_plus = 0
    @Hidden = false
    @immortal = false
    @damage_pop = false
    @damage = nil
    @critical = false
    @animation_id = 0
    @animation_hit = false
    @white_flash = false
    @blink = false
    @current_action = Game_BattleAction.new
  end

点评

def counter_action_for(attacker, skill = nil) 你改这个方法就行了,只改里面的elsif 条件就可以。建议还是把状态加上,以后只要对象有"反击"这个状态+开关开...   发表于 2016-5-12 13:53
嗯,我看看吧,这也是最简便的方法了  发表于 2016-5-12 13:38
那就是所有的角色?我建议你用一个状态加开关来组合,如果存在此状态和开关开启时反击  发表于 2016-5-12 13:28
只要角色方会反击,敌人暂时不要了。  发表于 2016-5-12 13:20
你如果只用开关控制,就相当于全场都会反击。这样是你要的效果吗?  发表于 2016-5-12 13:13
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
97 小时
注册时间
2015-3-27
帖子
225
3
发表于 2016-5-11 22:18:22 | 只看该作者
反击 -cae1
在默认工程里面,我设置史莱姆用特技炎【炎是属性001】打我。但是不会反击。


你这个问题,首先你要明确 -cr 和 -ca 的区别
-cr 代表的是你遭受什么样的攻击才反击
-ca 代表的是受到攻击用什么样的方式反击
然后, 你写的-cae1 是没有定义的,只有 -cae 代表只要收到攻击就会逃跑,这个只定义给敌人
你应该写成 -cre1

点评

准确的说并不是这样,因为定义中只有敌人会逃跑,而角色不会逃跑,如果是角色,就不会有什么反应  发表于 2016-5-11 22:31
哈哈,的确,那个复制攻击的敌人用炎打我我其实已经反击用炎打他了是吧,只是是物理攻击动画效果  发表于 2016-5-11 22:26
我的博客:http://wang1212.github.io/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
97 小时
注册时间
2015-3-27
帖子
225
2
发表于 2016-5-11 22:08:20 | 只看该作者
本帖最后由 578783944 于 2016-5-11 22:09 编辑

我先给你说概率这个问题,其实很简单 你在脚本中 Ctrl+F 搜索下面这段代码
  1. if skill.nil? && (rand(100) < id)
复制代码
按照这个样子修改这句
  1. if skill.nil? || skill.atk_f != 0
复制代码
为下面这样
  1. if (skill.nil? || skill.atk_f != 0) && (rand(100) < id)
复制代码
即可实现
<hr>
至于概率为多少,你可以写crp50 crp60 等等,
当然你也可以把脚本中那个id改成你想要用来控制的变量也可以

点评

好的,我去改。其他的麻烦了  发表于 2016-5-11 22:13

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

我的博客:http://wang1212.github.io/
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 22:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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