Project1
标题: features_set是一个只读吗? [打印本页]
作者: chd114 时间: 2015-3-14 13:53
标题: features_set是一个只读吗?
- def skill_type_cover_add(stype_id)
- features_set(FEATURE_STYPE_COVER).push(stype_id)
- end
- def cover_skill_types
- features_set(FEATURE_STYPE_COVER)
- end
复制代码 参考add和seal改了一段之后没找到修改办法然后用了push,依然无效···
作者: taroxd 时间: 2015-3-14 14:10
features_set 是一个方法
# --- 防止追问专用分割线 --- #
作者: tan12345 时间: 2015-3-14 16:47
是那个想通过features_set来控制添加、删除技能类型?
作者: howhow1314 时间: 2015-3-14 18:11
本帖最后由 howhow1314 于 2015-3-14 19:52 编辑
$game_actors[1].class.features.push(RPG::BaseItem::Feature.new(41,x))
大概是這樣。。電腦不在
作者: chd114 时间: 2015-3-14 19:21
howhow1314 发表于 2015-3-14 01:11
$game_actors[1].class.features.push(RPG::Baseitem::Feature.new(41,x))
大概是這樣。。電腦不在 ...
能push但是不能delete···
作者: howhow1314 时间: 2015-3-14 20:11
本帖最后由 howhow1314 于 2015-3-14 20:13 编辑
chd114 发表于 2015-3-14 19:21
能push但是不能delete···
你delete(RPG::BaseItem::Feature.new(41,x))當然沒用... #話說好像要Item才行,剛打錯item了
RPG::BaseItem::Feature.new(41,x)是個新的Feature,不是原有的某個參數一模一樣的Feature..
除非你- a = RPG::BaseItem::Feature.new(41,x)
- $game_actors[1].class.features.push(a)
复制代码 這樣可以- $game_actors[1].class.features.delete(a)
复制代码 ...............
如果你要delete的話其中一個方法是找出$game_actors[1].class.features裡code=41,data_id=x的Feature來delete..
$game_actors[1].class.features.each do |i|
if i.code == 41 and i.data_id == x then
a.delete(i)
end
end
$game_actors[1].class.features.each do |i|
if i.code == 41 and i.data_id == x then
a.delete(i)
end
end
這樣...(不是很熟遍歷的函數..不知道有沒有更簡單的寫法...記得見過有個帶花括號的忘了是怎樣的{:2_276:} )
作者: chd114 时间: 2015-3-14 20:31
howhow1314 发表于 2015-3-14 03:11
你delete(RPG::BaseItem::Feature.new(41,x))當然沒用... #話說好像要Item才行,剛打錯item了
RPG::Base ...
不是在原来那个里面添加吗···那就是说不管数据库怎么设置的,一定要用脚本push过才能被删掉?
作者: howhow1314 时间: 2015-3-14 20:50
本帖最后由 howhow1314 于 2015-3-14 20:51 编辑
chd114 发表于 2015-3-14 20:31
不是在原来那个里面添加吗···那就是说不管数据库怎么设置的,一定要用脚本push过才能被删掉? ...
$game_actors[1].class.features.each do |i|
$game_actors[1].class.features.each.delete(i) if i.code == 41 and i.data_id == x
end
$game_actors[1].class.features.each do |i|
$game_actors[1].class.features.each.delete(i) if i.code == 41 and i.data_id == x
end
這樣不用push過才能delete
作者: taroxd 时间: 2015-3-14 20:56
howhow1314 发表于 2015-3-14 20:50
$game_actors[1].class.features.each do |i|
$game_actors[1].class.features.each.delete(i) if i.c ...
用 each 迭代时不要对数组做出修改。更好的做法是 delete_if。
$game_actors[1].class.features.delete_if do |i|
i.code == 41 && i.data_id == x
end
$game_actors[1].class.features.delete_if do |i|
i.code == 41 && i.data_id == x
end
但是,这个更好只是针对数组操作而言。实际上你还是不应该去操作数据库!!!再说一遍,这样会出问题的!
作者: chd114 时间: 2015-3-14 22:12
howhow1314 发表于 2015-3-14 03:50
$game_actors[1].class.features.each do |i|
$game_actors[1].class.features.each.delete(i) if i.c ...
唔···那VA里面自带的features_set(FEATURE_STYPE_ADD)是在什么时候改变的呢···表示全局搜索没有找到···
作者: howhow1314 时间: 2015-3-14 22:21
如果用我的方法需要另建職業數據庫...(我能想到的)最簡單的方式大概是以下這樣...
class Game_Actors
attr_accessor :classes
def initialize
@data = []
@classes = $data_classes.dup
end
end
class Game_Actor < Game_Battler
def class
$game_actors.classes[@class_id]
end
end
class Game_Actors
attr_accessor :classes
def initialize
@data = []
@classes = $data_classes.dup
end
end
class Game_Actor < Game_Battler
def class
$game_actors.classes[@class_id]
end
end
作者: chd114 时间: 2015-3-14 23:04
howhow1314 发表于 2015-3-14 05:21
如果用我的方法需要另建職業數據庫...(我能想到的)最簡單的方式大概是以下這樣...
class Game_Actors
att ...
听起来有点动的太多手脚了···https://rpg.blue/thread-375706-1-1.html如果只是优化一下这样的功能呢?(原来的脚本是禁用技能类型就直接删除那个类型,但这样一来的话被沉默也会删掉了···)
作者: howhow1314 时间: 2015-3-15 00:46
本帖最后由 howhow1314 于 2015-3-15 00:51 编辑
呃..有點看不懂你的問題,你不是要增減features嗎?反正只要加了11樓的腳本後,
就可以直接
$game_actors[1].class.features.delete_if do |i|
i.code == 41 && i.data_id == x
end
$game_actors[1].class.features.delete_if do |i|
i.code == 41 && i.data_id == x
end
刪除啟用技能類型
$game_actors[1].class.features.push(RPG::BaseItem::Feature.new(41,x))
$game_actors[1].class.features.push(RPG::BaseItem::Feature.new(41,x))
增加啟用技能類型
..當然其他的features也可以
作者: chd114 时间: 2015-3-15 08:51
howhow1314 发表于 2015-3-14 07:46
呃..有點看不懂你的問題,你不是要增減features嗎?反正只要加了11樓的腳本後,
就可以直接
$game_actors[1].c ...
我那个网址里面是把禁用的当成删除的···但是这样一来角色中了沉默也会删掉这个技能类型有点不合理···所以我想试试直接增删···
作者: howhow1314 时间: 2015-3-15 12:48
本帖最后由 howhow1314 于 2015-3-15 12:50 编辑
chd114 发表于 2015-3-15 08:51
我那个网址里面是把禁用的当成删除的···但是这样一来角色中了沉默也会删掉这个技能类型有点不合理·· ...
因為我在做的遊戲也有修改啟用技能的需要...於是找到這方法(記得是從taroxd翻譯的f1幫助文檔中找出來的..那些RPG::XXX的貌似都要在幫助文檔中查看)
不過我的遊戲本來就有另建數據庫的特別需要,所以就能直接操作數據庫(另建的數據庫)
而那數據庫就更複雜了,不是直接把原先的數據庫整個dup....
至於11樓的腳本則是直接把$data_classes dup過來(而且還只要放在game_actors裡,所以說手續應該還滿簡單的..除非有潔癖吧QQ
作者: chd114 时间: 2015-3-22 15:43
howhow1314 发表于 2015-3-14 19:48
因為我在做的遊戲也有修改啟用技能的需要...於是找到這方法(記得是從taroxd翻譯的f1幫助文檔中找出來的.. ...
@VIPArcher 认可答案···(虽然没有用到但是还是感谢了)
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |