Project1

标题: 想以超过道具id为条件的条件句要怎么写? [打印本页]

作者: alianlord    时间: 2021-2-21 12:42
标题: 想以超过道具id为条件的条件句要怎么写?
在vx 脚本只要写成 if item.id > 100 就行了。
但在 va 中就行不通了。请教之。
作者: alexncf125    时间: 2021-2-21 13:12
为啥行不通

只要 item 不为 nil , 是个 RPG::Item 就行得通的吧...

#<RPG::Item:0xc8a9678 @description="回复500HP。", @name="药水", @consumable=true, @occasion=0, @icon_index=192, @price=50, @scope=7, @animation_id=37, @note="", @speed=0, @id=1, @features=[], @effects=[#<RPG::UsableItem::Effect:0xc8a9484 @code=11, @data_id=0, @value1=0.0, @value2=500.0>], @damage=#<RPG::UsableItem::Damage:0xc8a9204 @type=0, @element_id=0, @formula="0", @variance=20, @critical=false>, @success_rate=100, @hit_type=0, @itype_id=1, @repeats=1, @tp_gain=0>
作者: soulsaga    时间: 2021-2-21 15:20
item可以是道具可以是技能...所以不行吗
作者: alianlord    时间: 2021-2-21 16:28
搞不定,我是在window_help 中想用条件句切换显示内容。
item.id 似乎要在Scene_Item之中,使用才会正常。
如果要在别的场景中使用,有时灵有时不灵。
可能是在va中,必需对item 先做限制声明,不然会直接弹窗“找不到 id 的方法。
作者: alexncf125    时间: 2021-2-21 16:53
本帖最后由 alexncf125 于 2021-2-21 17:01 编辑
alianlord 发表于 2021-2-21 16:28
搞不定,我是在window_help 中想用条件句切换显示内容。
item.id 似乎要在Scene_Item之中,使用才会正常。
...


请问为什么我在Window_Help写的这红句能正常地p出物品ID

class Window_Help < Window_Base
  alias set_item_p_item_id set_item
  def set_item(item)
    p item.id if item && item.is_a?(RPG::Item)
    p_item_id_set_item(item)
  end
end
作者: alianlord    时间: 2021-2-21 17:24
alexncf125 发表于 2021-2-21 16:53
请问为什么我在Window_Help写的这红句能正常地p出物品ID

class Window_Help < Window_Base

我题出的推理只是假设,错了也正常。
你能在地图场景中,写个能显示item_id的触发事件吗?
作者: alexncf125    时间: 2021-2-21 18:54
本帖最后由 alexncf125 于 2021-2-21 20:22 编辑
alianlord 发表于 2021-2-21 17:24
我题出的推理只是假设,错了也正常。
你能在地图场景中,写个能显示item_id的触发事件吗? ...


我就不写了
看看Scene_Map(地图场景)下的Window_KeyItem第45行item.id
只就「地图场景中,显示item_id」这问题而言, 我觉得应该很有关联

至于为什么在Scene_Item之中,能正常使用item.id呢
一是因为Scene_Item第35行有@item_window = Window_ItemList.new吧...
二是因为Scene_ItemBase第27-29行有  def item; @item_window.item; end吧...

而Window_ItemList里有什么呢...
  def item
    @data && index >= 0 ? @data[index] : nil
  end

@data是什么呢...
  def make_item_list
    @data = $game_party.all_items.select {|item| include?(item) }
    @data.push(nil) if include?(nil)
  end
作者: alianlord    时间: 2021-2-21 20:45
alexncf125 发表于 2021-2-21 18:54
我就不写了
看看Scene_Map(地图场景)下的Window_KeyItem第45行item.id
只就「地图场景中,显示item_id」 ...

感谢答主如此详细的说明。
想用帮助窗口来显示相关信息好像只有item 和 skill 两种场景。
va系统的 item.id事实上有很多(Skill,Item,Weapon,Armor)共用。
单纯的 item.id 在没有前置的分流下 会产生错误。
至于要如何改写我也还没试出来。
脚本真是牵一发而动全身啊………




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