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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: taoboy
打印 上一主题 下一主题

反击攻击与非反击攻击

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

11
发表于 2008-7-30 18:31:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
12
发表于 2008-7-30 18:47:55 | 只看该作者
好吧,在下不才,根据沉影不器大师的脚本依样画葫芦改了改:
  1. #==============================================================================
  2. # 战斗中机率反击 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 脚本设定为:
  5. #   ① 只有受到物理攻击才能反击
  6. #   ② 默认发动反击的机率为50%,可自定义
  7. #   ③ 防御可提高30%反击机率
  8. #   ④ 默认受击者拥有15号状态时才能反击,可自定义
  9. #------------------------------------------------------------------------------
  10. # ◎ 参数设定
  11. #------------------------------------------------------------------------------
  12. # 发动反击的机率
  13.   PROBA = 50
  14. # 受击对象拥有该ID状态时才反击  
  15.   CATK_STATE_ID = 15
  16. #==============================================================================
  17. # ■ Scene_Battle
  18. #==============================================================================
  19. class Scene_Battle < Scene_Base
  20.   #--------------------------------------------------------------------------
  21.   # ● 执行战斗行动: 攻击
  22.   #--------------------------------------------------------------------------
  23.   def execute_action_attack
  24.     text = sprintf(Vocab::DoAttack, @active_battler.name)
  25.     @message_window.add_instant_text(text)
  26.     targets = @active_battler.action.make_targets
  27.     display_attack_animation(targets)
  28.     wait(20)
  29.     for target in targets
  30.       target.attack_effect(@active_battler)
  31.       display_action_effects(target)
  32.     if target.state?(CATK_STATE_ID)
  33.       proba = PROBA
  34.       # 防御时增加反击机率
  35.       proba += 30 if target.guarding?
  36.       # 计算机率
  37.       next if rand(100) > proba  
  38.       @active_battler.attack_effect(target)
  39.       Sound.play_evasion
  40.       text = sprintf(Vocab::Counterattack, @active_battler.name, target.name)
  41.       @message_window.add_instant_text(text)
  42.       display_attack_animation([@active_battler])
  43.       wait(20)
  44.       display_action_effects(@active_battler)
  45.       end
  46.     end
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 执行战斗行动:使用技能
  50.   #--------------------------------------------------------------------------
  51.   def execute_action_skill
  52.     skill = @active_battler.action.skill
  53.     text = @active_battler.name + skill.message1
  54.     @message_window.add_instant_text(text)
  55.     unless skill.message2.empty?
  56.       wait(10)
  57.       @message_window.add_instant_text(skill.message2)
  58.     end
  59.     targets = @active_battler.action.make_targets
  60.     display_animation(targets, skill.animation_id)
  61.     @active_battler.mp -= @active_battler.calc_mp_cost(skill)
  62.     $game_temp.common_event_id = skill.common_event_id
  63.     for target in targets
  64.       target.skill_effect(@active_battler, skill)
  65.       display_action_effects(target, skill)
  66.     end
  67.    if target.state?(CATK_STATE_ID)
  68.     for target in targets
  69.       proba = PROBA
  70.       # 防御时增加反击机率
  71.       proba += 30 if target.guarding?
  72.       # 计算机率
  73.       next if rand(100) > proba
  74.       @active_battler.attack_effect(target)
  75.       Sound.play_evasion
  76.       text = sprintf(Vocab::Counterattack, @active_battler.name, target.name)
  77.       @message_window.add_instant_text(text)
  78.       display_attack_animation([@active_battler])
  79.       wait(20)
  80.       display_action_effects(@active_battler)
  81.     end
  82.   end
  83. end

  84. end

  85. #==============================================================================
  86. # ■ Vocab
  87. #==============================================================================
  88. module Vocab
  89.   # 反击
  90.   Counterattack          = "%s遭到%s反击!"
  91. end
复制代码


这个脚本是受击者拥有15号状态时才能反击,注意事项:
1.近程武器(就是能反击的武器),请附加上反击状态。
2.能反击的技能,请在【附加状态变更】一栏附加反击状态。
3.反击状态设置为【100%成功率】,0回合后100%解除,挨揍时解除。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-24
帖子
113
13
发表于 2008-7-30 22:25:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-4-24
帖子
260
14
发表于 2008-7-31 01:51:50 | 只看该作者
现在的脚本牛人太可怕了……
【关键词组合大赛】暗黑系《天使的旋律》 http://rpg.blue/forumTopicR ... 7%2D26+11%3A59%3A25
关于一个家族覆灭的故事。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

15
发表于 2008-7-31 04:35:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2008-4-24
帖子
70
16
 楼主| 发表于 2008-7-31 23:49:54 | 只看该作者
TO:沉影不器 水镜风生
   非常感谢两位前辈改写的脚本,通过对比学习你们写的脚本,收获真不小{/se}{/qiang}
特别是攻击设定和状态运用的方法,两位直观的脚本对我这样的新手帮助很大~~再次感谢~{/qiang}
   根据影大的思路,我对state改element作了尝试,结果失败了{/dk},想不通问题出在什么地方……急死了,请帮我看看咯{/hx}
  1. # 受击对象拥有该ID状态时才反击  
  2.   CATK_ELEMENTS_ID = 22
  3.   CATK_STATE_ID = 18
  4. #==============================================================================
  5. # ■ Scene_Battle
  6. #==============================================================================
  7. class Scene_Battle < Scene_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 执行战斗行动: 攻击
  10.   #--------------------------------------------------------------------------
  11.   def execute_action_attack
  12.     text = sprintf(Vocab::DoAttack, @active_battler.name)
  13.     @message_window.add_instant_text(text)
  14.     targets = @active_battler.action.make_targets
  15.     display_attack_animation(targets)
  16.     wait(20)
  17.     for target in targets
  18.       target.attack_effect(@active_battler)
  19.       display_action_effects(target)
  20.     if @active_battler.element_id?(CATK_ELEMENTS_ID)
  21.       proba = PROBA
  22.       # 防御时增加反击机率
  23.       proba += 30 if target.guarding?
  24.       # 计算机率
  25.       next if rand(100) > proba  
  26.       @active_battler.attack_effect(target)
  27.       Sound.play_evasion
  28.       text = sprintf(Vocab::Counterattack, @active_battler.name, target.name)
  29.       @message_window.add_instant_text(text)
  30.       display_attack_animation([@active_battler])
  31.       wait(20)
  32.       display_action_effects(@active_battler)
  33.       end
  34.     end
  35.   end
复制代码
The DPS is who standing last.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2008-4-24
帖子
70
17
 楼主| 发表于 2008-7-31 23:56:30 | 只看该作者
以下引用沉影不器于2008-7-30 20:35:51的发言:

我更倾向于用elements而不用states
仔细想想...脚本需要考虑的方面还挺多的...比如受攻击者直接被打死的情况就不能反击了

-----------------------------------
一口气考虑了更多,像受限状态..带"连续攻击"属性的武器特技什么的:

http://rpg.blue/viewthread.php?tid=96363


[本贴由作者于 2008-7-30 21:17:15 最后编辑]

是啊,死了确实还是会反击……还有像‘受限状态’"连续攻击"的问题能具体讲讲吗?~~
The DPS is who standing last.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-20 17:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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