Project1

标题: 请教技能获得的问题 [打印本页]

作者: 流光飞雪    时间: 2013-12-26 17:09
标题: 请教技能获得的问题
我的主角有几十位,我想用类似于买技能书、技能符神马的来使使用者获得相应技能,请注意,主角有几十位,技能几十种,请问怎么做?
作者: 欧买歌    时间: 2013-12-26 18:12
在物品上使用公共事件001,然后在公共事件001上的事件插入获得技能xxxx。
最后,万恶的验证码。
作者: 流光飞雪    时间: 2013-12-26 18:17
欧买歌 发表于 2013-12-26 18:12
在物品上使用公共事件001,然后在公共事件001上的事件插入获得技能xxxx。
最后,万恶的验证码。 ...

这种方法只能指定一位角色……
作者: 欧买歌    时间: 2013-12-26 18:23
本帖最后由 欧买歌 于 2013-12-26 18:30 编辑
流光飞雪 发表于 2013-12-26 18:17
这种方法只能指定一位角色……


条件分支:阿尔西斯在队伍中
  ·增减特技:阿尔西斯+xxxx
    ·脚本:print “阿尔西斯习得xxxx。”
  除此以外的场合
  ·脚本:print “阿尔西斯不在队伍中。”
得到答案后请把帖子类改为“已经解决”。
作者: fux2    时间: 2013-12-26 18:41
本帖最后由 fux2 于 2013-12-26 18:42 编辑
流光飞雪 发表于 2013-12-26 18:17
这种方法只能指定一位角色……


刚刚才有人问呢,你把技能书做成友方单体道具,不消耗,给目标附加一个状态
然后这个道具再附带公共事件,判断谁身上有状态即可。然后清除这个状态。
但考虑到你人物太多,你用这个事件脚本好了。
RUBY 代码复制
  1. sid = 17 #状态编号
  2. skid = 80 #技能编号
  3. itid = 11 #道具编号
  4. a=$game_party.actors.find{|i|i.state?(sid)}
  5. return unless a
  6. a.remove_state(sid)
  7. if a.skill_learn?(skid)
  8. $game_temp.message_text="目标已经有这个技能"
  9. else
  10. a.learn_skill(skid)
  11. $game_party.gain_item(itid,-1)
  12. end

算了发个范例给你吧。
流光飞雪.rar (187.18 KB, 下载次数: 30)
作者: 流光飞雪    时间: 2013-12-26 19:01
fux2 发表于 2013-12-26 18:41
刚刚才有人问呢,你把技能书做成友方单体道具,不消耗,给目标附加一个状态
然后这个道具再附带公共事件 ...

谢谢,范例已看,就是要这种效果,我正在捣鼓。感谢所有人的解答{:2_287:}
作者: 天地有正气    时间: 2013-12-26 19:42
本帖最后由 天地有正气 于 2013-12-26 19:53 编辑

4楼分明就是在误导啊。
3楼的点评也是误导啊!
首先,这种东西最好用脚本,因为楼主的角色太多了,即使不用脚本,也应该用“状态法”!而不是什么条件分歧某某角色是否在队伍中!而且,这种对话框也不应该用print,而应该用普通的显示文章!
既然楼主的游戏角色很多,不方便用事件制作,我给出一个脚本:
  1. #技能书 by 天地有正气
  2. class Interpreter
  3.   def skill_book(book_id,skill_id,skill_state)
  4.     for i in 0..$game_party.actors.size
  5.       if $game_party.actors[i].states[0] == skill_state
  6.         i += 1
  7.         if $game_actors[i].skills.include?(skill_id)
  8.           $game_system.se_play($data_system.buzzer_se)
  9.           $game_actors[i].remove_state(skill_state)
  10.           $game_party.gain_item(book_id,1)
  11.           $scene = Scene_Menu.new(0)
  12.         end  
  13.         $game_actors[i].learn_skill(skill_id)
  14.         $game_actors[i].remove_state(skill_state)
  15.         break
  16.       end  
  17.     end  
  18.   end
  19. end
复制代码
这个脚本就是我刚弄的技能书脚本。LZ可以在技能书那里带入公共事件,然后在
公共事件里用事件脚本skill_book(技能书物品编号,习得技能编号,附带状态编号),
然后我来解释一下,第一个编号是你在数据库中设置的技能书物品编号,第二个编
号是你要习得的技能编号,而第三个编号则是要你在数据库状态里设置一个定量为
10,不能抵抗的无名称状态,然后把编号输进去。最后你要做的就是在技能书那里
把刚才那个状态给勾上,然后就可以达成你要的技能书效果啦!!!
希望能够满足楼主的需求!!!
(p.s. 我以后会在技术发布区发布该脚本,并且注上一些优化策略,希望楼主能够来捧场!毕竟我写脚本也不容易的嘛~)
作者: 流光飞雪    时间: 2013-12-26 20:31
天地有正气 发表于 2013-12-26 19:42
4楼分明就是在误导啊。
3楼的点评也是误导啊!
首先,这种东西最好用脚本,因为楼主的角色太多了,即使不用 ...

感谢您的回答,您的脚本我先收着了{:2_287:}




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