查看: 1687|回复: 1

[已经解决] 持有道具 y 时习得技能 x的脚本改造求指导

[复制链接]
梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
发表于 2015-2-6 16:10:54 | 显示全部楼层 |阅读模式

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

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

×
我曾尝试过新增一个参数z,实现需同时持有两个指定物品才能学会技能的效果。因为对正则表达以及对备注方法的不了解,导致效果没有办法实现,特此请教,谢谢。以下是脚本
#============================================================================
#  〇 require Taroxd基础设置
#     使用方法:在角色处备注 <learn x by y>,表示当持有道具 y 时习得技能 x
#============================================================================

class RPG::Actor < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● 获取由 [技能id, 物品] 构成的数组
  #--------------------------------------------------------------------------
  def learn_skill_by_item
    @learn_skill_by_item ||=
    @note.scan(/<learn\s*(\d+)\s*by\s*(\d+)>/i).map {|(x, y)|
      [x.to_i, $data_items[y.to_i]] }
  end
end

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 获取添加的技能
  #--------------------------------------------------------------------------
  def_with :added_skills do |old|
    actor.learn_skill_by_item.each {|(skill_id, item)|
      old.push(skill_id) if $game_party.has_item?(item) }
    old
  end
end

点评

谢谢,脑子不灵光了。  发表于 2015-2-6 16:28
↓ 那就是“或者”而不是“同时持有”了  发表于 2015-2-6 16:27
<learn x by y><learn x by z>寫二行  发表于 2015-2-6 16:24
已经实现了,但比较蛋疼<learn x by y by z>应该怎么改?求指导  发表于 2015-2-6 16:12

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-2-6 16:24:40 | 显示全部楼层
用 \s* 代替空格,用 (\d+) 代替数字,然后爱怎么改怎么改

点评

谢谢。  发表于 2015-2-6 16:41
给你个测试正则表达式的网站,你可以试试:http://rubular.com/  发表于 2015-2-6 16:34
直接加逗号就可以  发表于 2015-2-6 16:31
你想加可以加。我本来也是用空格而不是逗号当分割的  发表于 2015-2-6 16:31
已经实现了<learn x by y z>,想加个“,”在中间做区分怎么加?  发表于 2015-2-6 16:31

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部