查看: 2157|回复: 8

[已经解决] 需要一个可以这么用的脚本.

[复制链接]
梦石
0
星屑
50
在线时间
155 小时
注册时间
2013-7-8
回帖
153
发表于 2013-11-23 13:41:59 | 显示全部楼层 |阅读模式

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

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

×
就是   武器
         防具
         ....
        技能
         技能
        技能                (装备界面
       技能
       技能
对,就是这样,...我的语文没学多好,解释不鸟,感谢各位神了....

点评

完全看不懂= =…………  发表于 2013-11-23 14:08
http://rpg.blue/forum.php?mod=viewthread&tid=327114看见大家那么做了...我也这么做了.
梦石
0
星屑
50
在线时间
155 小时
注册时间
2013-7-8
回帖
153
 楼主| 发表于 2013-11-23 14:37:15 | 显示全部楼层
就是.....让装备有添加技能的特性并且这一个装备可以放到五个不同的位置.
http://rpg.blue/forum.php?mod=viewthread&tid=327114看见大家那么做了...我也这么做了.
回复

使用道具 举报

梦石
0
星屑
244
在线时间
155 小时
注册时间
2013-9-14
回帖
184
发表于 2013-11-23 16:13:48 | 显示全部楼层
本帖最后由 moeno_ 于 2013-11-23 17:20 编辑

楼主是要能把技能当做武器防具一样装备起来吗…

点评

Oh,YES  发表于 2013-11-24 10:05
剧本真烦。。。
回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2013-11-23 16:37:13 | 显示全部楼层
那啥,可以用画图的方式表达出来吗……
回复

使用道具 举报

梦石
0
星屑
803
在线时间
2068 小时
注册时间
2011-10-3
回帖
1620
发表于 2013-11-23 17:18:09 | 显示全部楼层

点评

谢谢啦,虽然不是...  发表于 2013-11-24 10:05
楼主的目的好像是 同一个装备可以装备在不同的地方 而不是 更多的装备栏  发表于 2013-11-23 17:21
回复

使用道具 举报

百合控

梦石
0
星屑
6548
在线时间
1275 小时
注册时间
2013-8-21
回帖
3522

开拓者

发表于 2013-11-23 17:22:30 | 显示全部楼层
可不可以理解为:
  戴上某装备后 可以释放特定技能 脱下就不可以 [如果时间长甚至能够领悟此技能 不需要装备]
  并且这个装备可以装备在任意的位置

点评

不是啦,...是一个装备可以装备在多个装备位置.  发表于 2013-11-24 10:05
萌新瑟瑟发抖
看到我请叫我去干活
回复

使用道具 举报

梦石
0
星屑
803
在线时间
2068 小时
注册时间
2011-10-3
回帖
1620
发表于 2013-11-23 17:52:38 | 显示全部楼层
余烬之中 发表于 2013-11-23 17:22
可不可以理解为:
  戴上某装备后 可以释放特定技能 脱下就不可以 [如果时间长甚至能够领悟此技能 不需要装 ...

虽然这脚本我没用过,不过也许弄N个都是“技能”的装备栏,就可以让“技能类装备”随便换位置了吧

点评

每个装备仍然只能对应一个装备栏……  发表于 2013-11-23 18:26
回复

使用道具 举报

梦石
0
星屑
50
在线时间
155 小时
注册时间
2013-7-8
回帖
153
 楼主| 发表于 2013-11-24 11:02:05 | 显示全部楼层
找到了谁能给翻一下?
http://www.lemon-slice.net/3_Skill_Slot.txt

点评

错了 这个脚本的功能是 装备特定武器后 拓展装备栏 拓展的栏中 只能放饰品  发表于 2013-11-24 12:02
比如你填写<技能槽 8>那么这个武器就可以装备在8号位……没有那么多装备槽?放心 脚本会自动添加  发表于 2013-11-24 11:58
论坛自动给脚本加了点料 第182行是@actor = nil 现在再试试  发表于 2013-11-24 11:50
你想给悬赏还早了点  发表于 2013-11-24 11:48
http://rpg.blue/forum.php?mod=viewthread&tid=327114看见大家那么做了...我也这么做了.
回复

使用道具 举报

百合控

梦石
0
星屑
6548
在线时间
1275 小时
注册时间
2013-8-21
回帖
3522

开拓者

发表于 2013-11-24 11:17:30 | 显示全部楼层
蛙仔 发表于 2013-11-24 11:02
找到了谁能给翻一下?
http://www.lemon-slice.net/3_Skill_Slot.txt

只翻译了使用方法 具体还需要自己实验一下
[pre lang="ruby" line="1"]#==============================================================================
# ▲スロット式装備システム(RGSS3)
# 武器に「スロット数」というパラメータを設定し、
# その数だけ装飾品を装備できるようにします。
# 武器を変えれば、スロット数も変動します。
###################################################
#  设定槽数方法:在武器的备注栏写   ###############
#  <技能槽 x>  (x是任意数字)       ############### 如果你懂脚本
#  即可。                         ############### 那么可以在120行
################################################# 改有关的正则式
# 制作元:Lemon slice http://www.lemon-slice.net/
#==============================================================================
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 装備品の初期化
  #     equips : 初期装備の配列
  #--------------------------------------------------------------------------
  def init_equips(equips)
    @equips = Array.new(equip_slots.size) { Game_BaseItem.new }
    equips.each_with_index do |item_id, i|
      etype_id = index_to_etype_id(i)
      slot_id = empty_slot(etype_id)
      @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
    end
    if equip_slots.size > @equips.size
      size = equip_slots.size - @equips.size
      size.times { @equips.push(Game_BaseItem.new) }
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 装備の変更
  #     slot_id : 装備スロット ID
  #     item    : 武器/防具(nil なら装備解除)
  #--------------------------------------------------------------------------
  def change_equip(slot_id, item, dev_flag = false)
    return unless trade_item_with_party(item, equips[slot_id])
    return if item && equip_slots[slot_id] != item.etype_id
    if equip_slots.size > @equips.size
      size = equip_slots.size - @equips.size
      size.times { @equips.push(Game_BaseItem.new) }
    end
    @equips[slot_id].object = item
    return if dev_flag
    skill_slot_reset
    release_unequippable_items
    refresh
  end
  #--------------------------------------------------------------------------
  # ● スキルスロット数の更新
  #--------------------------------------------------------------------------
  def skill_slot_reset
    if equip_slots.size > @equips.size
      size = equip_slots.size - @equips.size
      size.times { @equips.push(Game_BaseItem.new) }
    elsif equip_slots.size < @equips.size
      size = @equips.size - equip_slots.size
      size.times do
        change_equip(-1, nil, true)
        @equips.pop
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 装備を全て外す
  #--------------------------------------------------------------------------
  def clear_equipments
    5.times do |i|
      change_equip(i, nil) if equip_change_ok?(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 最強装備
  #--------------------------------------------------------------------------
  def optimize_equipments
    clear_equipments
    4.times do |i|
      next if !equip_change_ok?(i)
      items = $game_party.equip_items.select do |item|
        item.etype_id == equip_slots &&
        equippable?(item) && item.performance >= 0
      end
      change_equip(i, items.max_by {|item| item.performance })
    end
  end
  #--------------------------------------------------------------------------
  # ● 装備スロットの配列を取得
  #--------------------------------------------------------------------------
  def equip_slots
    slot = [0,1,2,3]                       # 通常
    slot = [0,0,2,3] if dual_wield?        # 二刀流
    skill_slots.times { slot.push(4) }
    return slot
  end
  #--------------------------------------------------------------------------
  # ● スキルスロットの最大数を取得
  #--------------------------------------------------------------------------
  def skill_slots
    if dual_wield?
      slot1 = set_skill_slots(weapons[0])
      slot2 = set_skill_slots(weapons[1])
      slot = slot1 + slot2
    else
      slot = set_skill_slots(weapons[0])
    end
    return [[slot, slot].min, 1].max
  end
  #--------------------------------------------------------------------------
  # ● スキルスロットの最大数を設定
  #--------------------------------------------------------------------------
  def set_skill_slots(weapon)
    return 0 if weapon == nil
    n = /<技能槽\s+(\d+)>/ =~ weapon.note ? $1.to_i : 1 #被修改
    return n
  end
end
#==============================================================================
# ■ Window_EquipSlot
#------------------------------------------------------------------------------
#  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================

class Window_EquipSlot < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    return unless @actor
    rect = item_rect_for_text(index)
    change_color(system_color, enable?(index))
    draw_text(rect.x, rect.y, 92, line_height, slot_name(index)) if index <= 4
    draw_item_name(@actor.equips[index], rect.x + 92, rect.y, enable?(index))
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    draw_all_items
  end
end
#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  ステータス画面で表示する、フル仕様のステータスウィンドウです。
#==============================================================================

class Window_Status < Window_Selectable
  #--------------------------------------------------------------------------
  # ● ブロック 3 の描画
  #--------------------------------------------------------------------------
  def draw_block3(y)
    draw_parameters(32, y)
  end
end
#==============================================================================
# ■ Window_StatusEquip
#------------------------------------------------------------------------------
#  ステータス画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================

class Window_StatusEquip < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    x = 272
    y = line_height * 7
    width = 224
    super(x, y, width, window_height)
    self.back_opacity = 0
    self.opacity = 0
    self.active = true
    self.index = 0
    @actor = nil
    refresh
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ高さの取得
  #--------------------------------------------------------------------------
  def window_height
    fitting_height(visible_line_number)
  end
  #--------------------------------------------------------------------------
  # ● 表示行数の取得
  #--------------------------------------------------------------------------
  def visible_line_number
    return 6
  end
  #--------------------------------------------------------------------------
  # ● アクターの設定
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if @item_window
      @item_window.slot_id = index < 4 ? index : 4
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目数の取得
  #--------------------------------------------------------------------------
  def item_max
    @actor ? @actor.equip_slots.size : 0
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    @actor ? @actor.equips[index] : nil
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    return unless @actor
    rect = item_rect_for_text(index)
    change_color(system_color, true)
    draw_item_name(@actor.equips[index], rect.x, rect.y, true)
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    draw_all_items
  end
end
#==============================================================================
# ■ Scene_Status
#------------------------------------------------------------------------------
#  ステータス画面の処理を行うクラスです。
#==============================================================================

class Scene_Status < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    @status_window = Window_Status.new(@actor)
    @status_window.set_handler(:cancel,   method(:return_scene))
    @status_window.set_handler(:pagedown, method(:next_actor))
    @status_window.set_handler(:pageup,   method(:prev_actor))
    create_slot_window
  end
  #--------------------------------------------------------------------------
  # ● スロットウィンドウの作成
  #--------------------------------------------------------------------------
  def create_slot_window
    @slot_window = Window_StatusEquip.new
    @slot_window.actor = @actor
  end
  #--------------------------------------------------------------------------
  # ● アクターの切り替え
  #--------------------------------------------------------------------------
  def on_actor_change
    @status_window.actor = @actor
    @status_window.activate
    @slot_window.actor = @actor
  end
end[/pre]

点评

十分感谢!我已经会用了!  发表于 2013-11-24 13:27
大神还是解释错了..我解释对了?  发表于 2013-11-24 12:01
哦...这样啊?  发表于 2013-11-24 11:59
明白了点,技能槽的备注是给武器的..但是怎么装备技能还不请粗  发表于 2013-11-24 11:55
嗯.  发表于 2013-11-24 11:50

评分

参与人数 1星屑 +66 收起 理由
熊喵酱 + 66 认可答案

查看全部评分

萌新瑟瑟发抖
看到我请叫我去干活
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部