Project1

标题: 用腳本指令來判斷是否學過某技能,不過出了點問題 [打印本页]

作者: duzine    时间: 2017-3-14 17:11
标题: 用腳本指令來判斷是否學過某技能,不過出了點問題
(一點題外話
是這樣的,由於早期不熟悉腳本,所以製作系統都是採用並行公共事件進行製作
直到後來對事件使用有了心得以後,也大幅的改善了系統運行

不過雖然改善了很多,但是某次在一些評論中
我發現到部分遊戲對某些玩家來說還是很卡的,而這部分遊戲對我來講並不是那麼卡
並且我遊戲的幀數比起這些遊戲還要來的低

於是我開始反省,是否該朝著真正的腳本系統路線邁進
凡事有個起頭,不過我很快碰上了麻煩


----------以下正戲開始---------------

我寫了這麼一個腳本指令,用來判斷角色 1 是否學過 第151號技能
沒學過就讓他學會,學過就讓他忘記
不過這段腳本好像只會傳回 false...所以學了技能以後,再次執行並不會忘掉
請問各位大大們,這是怎麼一回事呢?

if $game_actors[1].skill_learn?(151)
$game_actors[1].forget_skill(151)

else
$game_actors[1].learn_skill(151)
end
作者: 魔法丶小肉包    时间: 2017-3-14 17:36
本帖最后由 魔法丶小肉包 于 2017-3-14 17:45 编辑

仔细观察一下脚本的话你会发现



RUBY 代码复制
  1. a = $data_skills[151]
  2. if $game_actors[1].skill_learn?(a)
  3. $game_actors[1].forget_skill(151)
  4. else
  5. $game_actors[1].learn_skill(151)
  6. end

作者: duzine    时间: 2017-3-14 17:58
雖然只是簡單的代碼
但對我來說卻也是一大步

能緩緩感覺到,曾停止不前的時間,再次流動

作者: cinderelmini    时间: 2017-3-14 19:58
虽然有点废话,不过稍微一提吧,
可以在Game_Actor类里新定义一个方法,用技能数组ID来判定也挺方便的。
  1. class Game_Actor < Game_Battler
  2. def xxx_skill_learn?(skill_id)
  3.   total_list = (@skills | added_skills)
  4.   return total_list.include?(skill_id)
  5. end
  6. end
复制代码
大概就是这样吧,
用这个方法可以直接用技能ID来判定某角色是否学会了某个ID的技能就是了……
(至于为什么官方不这样做,或者说这样做有什么弊端的话,其实我也不是很明白……
作者: duzine    时间: 2017-3-14 21:21
cinderelmini 发表于 2017-3-14 19:58
虽然有点废话,不过稍微一提吧,
可以在Game_Actor类里新定义一个方法,用技能数组ID来判定也挺方便的。
大 ...

感謝提供方法OWO
又可以長姿勢了


目前還在研究這段方法中
(不過我的腳本能力只到入門程度,需要用法上的協助





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