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

Project1

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

[已经解决] 【★】如何制作一个武器,装备后普通攻击敌全体?

[复制链接]

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4145
在线时间
5076 小时
注册时间
2012-1-15
帖子
4618

开拓者贵宾短篇七成年组亚军剧作品鉴家

跳转到指定楼层
1
发表于 2012-10-8 13:47:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 迷糊的安安 于 2012-10-8 20:47 编辑

本问题为【Ace推荐问答计划】活动问题。
详情请点击:http://rpg.blue/forum.php?mod=viewthread&tid=251118

实现要求:使用脚本实现“让部分武器装备后,普通可以攻击敌人全体”的功能。使用方法可以参照以下。
在武器备注栏写<AttackType0>则该武器装备后,普通攻击攻击的是敌人全体。
在武器备注栏写<AttackType1>则该武器装备后,普通攻击攻击的是一个随机敌人。
在武器备注栏写<AttackType2>则该武器装备后,普通攻击攻击的是两个随机敌人。
在武器备注栏写<AttackType3>则该武器装备后,普通攻击攻击的是三个随机敌人。
在武器备注栏写<AttackType4>则该武器装备后,普通攻击攻击的是四个随机敌人。

如果只实现普通攻击敌全体,也可以算认可答案。

点评

嗷呜,已经按要求上传百度网盘了。话说安安很信任P叔的说,还没下载工程就先认可了^^现在可以下了哦。  发表于 2012-10-8 19:01
feizhaodan是大神,所以做得好很多。如安安所说,他的扩展性强。他的技能ID可以自行更改。我的脚本几乎没有扩展性,仅仅能实现题目的要求。  发表于 2012-10-8 18:43
嗷呜,一切按照题目要求来做的。以前因审题不清吃亏太多了的后遗症=.=  发表于 2012-10-8 18:39
安安姐真好0 0还给补充(是你太懒了囧  发表于 2012-10-8 18:33
网盘上传了OTL  发表于 2012-10-8 18:13

评分

参与人数 1星屑 +10 收起 理由
怪蜀黍 + 10 嗷呜,谢谢鼓励^^

查看全部评分

若后退就皆成谎言。

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

2
发表于 2012-10-8 16:31:52 | 只看该作者
本帖最后由 protosssonny 于 2012-10-8 19:02 编辑

就这个是脚本的问题,那么P叔占楼预定答这个好了。事件什么的简单饭菜依旧是先留给大家的。

VA真是不熟悉。各种定义找不到在哪里,忙了半天才有个结果。
安安,P叔交作业了
范例在这里,由于大小限制,请自行添加RGSS300.dll文件。
Project1.rar (300.86 KB, 下载次数: 204)
按照安安的要求,上传到百度网盘,一直没有毅力注册网盘,今天终于注册了。
在百度网盘的范例
按规定截图,但是图看不出什么效果:

脚本在这里,注释得很详细:
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Game_Action
  4. #------------------------------------------------------------------------------
  5. #  处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
  6. #==============================================================================

  7. class Game_Action
  8.   #--------------------------------------------------------------------------
  9.   # ● 目标为敌人
  10.   #--------------------------------------------------------------------------
  11.   def targets_for_opponents
  12.     if item.for_random?
  13.       Array.new(item.number_of_targets) { opponents_unit.random_target }
  14.     elsif item.for_one?
  15.       num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
  16.       num = atk_times_by_weapon  # 添加
  17.       if num == 1                # 如果目标数为1则执行默认情形
  18.         if @target_index < 0
  19.           [opponents_unit.random_target] * num
  20.         else
  21.           [opponents_unit.smooth_target(@target_index)] * num
  22.         end
  23.       elsif num == 5             # 如果目标数为5则执行攻击全体
  24.         opponents_unit.alive_members
  25.       else
  26.         case num
  27.         when 2                   # 如果目标数为2则先攻击1次目标,再攻击1个随机目标
  28.           [opponents_unit.smooth_target(@target_index)] + [opponents_unit.random_target]
  29.         when 3                   # 如果目标数为3则先攻击1次目标,再攻击2个随机目标
  30.           [opponents_unit.smooth_target(@target_index)] + [opponents_unit.random_target] + [opponents_unit.random_target]
  31.         when 4                   # 如果目标数为4则先攻击1次目标,再攻击3个随机目标
  32.           [opponents_unit.smooth_target(@target_index)] + [opponents_unit.random_target] + [opponents_unit.random_target] + [opponents_unit.random_target]
  33.         end  
  34.       end  
  35.     else
  36.       opponents_unit.alive_members
  37.     end
  38.   end
  39.   
  40.   def atk_times_by_weapon
  41.     times = [1]                  # 赋初值
  42.     if @subject.class != Game_Enemy  # 攻击者不为敌人(即为角色)的情形
  43.       for i in @subject.weapons  # 如果注释包含这些文字
  44.         # 因为考虑双手武器,所以用for i in @subject.weapons
  45.         times.push(0) if i.note.include?("<AttackType0>")
  46.         times.push(1) if i.note.include?("<AttackType1>")
  47.         times.push(2) if i.note.include?("<AttackType2>")
  48.         times.push(3) if i.note.include?("<AttackType3>")
  49.         times.push(4) if i.note.include?("<AttackType4>")
  50.       end
  51.     end
  52.     # 当数组times中包含0,则time为5(全体攻击标志),否则就为数组times的最大值。
  53.     time = times.include?(0) ? 5 : times.max
  54.     return time
  55.   end  
  56. end  
复制代码

点评

已收到 =v=  发表于 2012-10-8 19:24
嗷呜,已经传网盘了。本帖子编辑过了,有下载地址。[url=home.php?mod=space&username=迷糊的安安]@迷糊的安安[/url]  发表于 2012-10-8 19:22
= = 当然是试过脚本才认可的…… 不过因为我的VA版本略奇怪,所以范例工程还是乃自己来传比较好……  发表于 2012-10-8 19:18
写代码从【实现功能】走向【编程思想】是个不断成熟的过程(貌似是七夕小雨说的),P叔加油!  发表于 2012-10-8 18:53
范例能用百度网盘传下么 = = 论坛附件下不下来 方法试过是可行了  发表于 2012-10-8 18:50

评分

参与人数 1梦石 +4 收起 理由
迷糊的安安 + 4 认可答案 好人卡+2

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

3
发表于 2012-10-8 17:11:28 | 只看该作者
本帖最后由 feizhaodan 于 2013-6-21 09:09 编辑
  1. class RPG::Weapon < RPG::EquipItem
  2.   def attack_skill
  3.     @note.each_line do |line|
  4.       if line =~ /\<(?:AttackSkill)[ ]*(\d+)\>/i
  5.         return $1.to_i == 0 ? 1 : $1.to_i
  6.       end
  7.     end
  8.     return 1
  9.   end
  10. end
  11. class Game_Actor < Game_Battler
  12.   alias attack_skill_attack_skill_id attack_skill_id
  13.   def attack_skill_id
  14.     return weapons[0].attack_skill if weapons[0]
  15.     if dual_wield?
  16.       return weapons[1].attack_skill if weapons[1]
  17.     end
  18.     return attack_skill_attack_skill_id
  19.   end
  20. end
  21. class Scene_Battle < Scene_Base
  22.   alias attack_skill_command_attack command_attack
  23.   def command_attack
  24.     attack_skill_command_attack
  25.     if !BattleManager.actor.current_action.item.need_selection?
  26.       @enemy_window.deactivate
  27.       on_enemy_ok
  28.     end
  29.   end
  30. end
复制代码
在武器的备注栏里输入<attackskill x>来更换装备中的角色的物理攻击的技能ID。
然后随便设置技能吧。公式啥的也能随便改了。


百度网盘下载范例你某以后再也不做范例了囧
范例。虽然是日文的但是有关的地方都是中文所以因该没问题/w\

设置图示:
首先在武器的备注下面设置该武器的普通攻击对应的技能编号。

再将武器对应的技能按照需求设置,范例中设置的是全体攻击。


补充说明:
范例中为了减小体积,删去了DLL文件,请打开工程以后按下保存再运行即可。
如果需要将效果应用在自己的工程中,请将脚本添加至自己的工程。

Project5.zip

430.6 KB, 下载次数: 237

点评

附件君傲娇中 = = 下了N次下不下来……  发表于 2012-10-8 18:00
如果决定只放脚本不写教程的话就说明一下,奖励会在写教程的人实测通过以后一并发放。  发表于 2012-10-8 17:35
实测通过了的话给个范例工程吧……?再配一张图?  发表于 2012-10-8 17:14

评分

参与人数 2星屑 +6 梦石 +8 收起 理由
迷糊的安安 + 8 最佳答案 好人卡+4
怪蜀黍 + 6 嗷呜,一直都很敬佩的脚本大触.

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
204
在线时间
27 小时
注册时间
2020-8-14
帖子
4
4
发表于 2022-4-29 19:55:00 | 只看该作者
feizhaodan 发表于 2012-10-8 17:11
在武器的备注栏里输入来更换装备中的角色的物理攻击的技能ID。
然后随便设置技能吧。公式啥的也能随便改了 ...

26行出错
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 04:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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