设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2763|回复: 6
打印 上一主题 下一主题

MS华丽的队员管理脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-5-3
帖子
151
跳转到指定楼层
1
发表于 2008-4-6 19:59:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
Version 1.1c

载图





特点:可以解锁、加锁人物
注意:请将范例中\Graphics\System\下的Locked.png复制到
你的游戏下的\Graphics\System\中!

Call代码:
#这里是找到角色的代码
$data_actors[n].found = true
#true是找到了角色(添加到角色替换列表)
$data_actors[n].unavailable = true
#是否可用?Ture:是 否:false
#其中n 为角色代码

解锁队长替换:
$data_actors.each do |a|
  a.required = false if a
end

找到全部角色:
$data_actors.each do |a|
  a.found = true if a
end

使全部角色可用:
$data_actors.each do |a|
  a.unavailable = false if a
end

调用脚本代码:
$scene = Scene_Party.new


脚本:
#==============================================================================
# ** 队员管理脚本(v1.1c)
#------------------------------------------------------------------------------
#==============================================================================

module RPG
  class Actor
    def setup
      @found = false
      @unavailable = false
      @required = false
    end
    attr_accessor :found
    attr_accessor :unavailable
    attr_accessor :required
  end
end

class Game_Actors
  attr_reader :data
  alias prex_party_g_actors_initialize initialize
  def initialize
    prex_party_g_actors_initialize
    $data_actors.each do |actor|
      actor.setup if actor
      @data[actor.id] = Game_Actor.new(actor.id) if actor
    end
  end
end

class Scene_File < Scene_Base
  alias prex_party_s_file_write_save_data write_save_data
  alias prex_party_s_file_read_save_data read_save_data
  def write_save_data(file)
    prex_party_s_file_write_save_data(file)
    Marshal.dump($data_actors, file)
  end
  def read_save_data(file)
    prex_party_s_file_read_save_data(file)
    $data_actors = Marshal.load(file)
  end
end

class Scene_Title < Scene_Base
  alias prex_party_s_title_command_new_game command_new_game
  def command_new_game
    prex_party_s_title_command_new_game
    $game_party.members.each {|s| s.actor.found = true if s}
  end
end

class Window_Base < Window
  def draw_item_name(item, x, y, enabled = true, width = 172)
    if item != nil
      draw_icon(item.icon_index, x, y, enabled)
      self.contents.font.color = normal_color
      self.contents.font.color.alpha = enabled ? 255 : 128
      self.contents.draw_text(x + 24, y, width, WLH, item.name)
    end
  end
end

class Scene_Party < Scene_Base
  def start
    super
    create_menu_background
    create_windows
  end
  def create_windows
    @member_window = Window_CurrentMember.new
    @party_window = Window_CurrentParty.new
    @party_window.active = true
    @selectable_window = Window_SelectMember.new
  end
  def update_windows
    @member_window.update
    @party_window.update
    @selectable_window.update
    if @party_window.active
      @member_window.set_member(@party_window.member)
    elsif @selectable_window.active
      @member_window.set_member(@selectable_window.member)
    end
  end
  def terminate
    super
    @member_window.dispose
    @party_window.dispose
    @selectable_window.dispose
  end
  def update
    super
    update_windows
    update_input
  end
  def update_input
    if Input.trigger?(Input::A)
      if @member_window.mode == 1
        @member_window.set_mode(0)
      elsif @member_window.mode == 0
        @member_window.set_mode(1)
      end
    end
    if @party_window.active
      if Input.trigger?(Input::B)
        Sound.play_cancel
        $scene = Scene_Map.new
      elsif Input.trigger?(Input::C)
        member = @party_window.member
        if member != nil
          if member.actor.unavailable or member.actor.required
            Sound.play_buzzer
            return
          end
        end
        Sound.play_decision
        @party_window.active = false
        @selectable_window.active = true
        @selectable_window.index = 0
      end
    elsif @selectable_window.active
      if Input.trigger?(Input::B)
        Sound.play_cancel
        @selectable_window.index = -1
        @selectable_window.active = false
        @party_window.active = true
      elsif Input.trigger?(Input::C)
        member = @selectable_window.member
        if member != nil
          if member.actor.unavailable
            Sound.play_buzzer
            return
          end
        end
        Sound.play_decision
        $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil
        $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil
        @selectable_window.refresh
        @party_window.refresh
        @selectable_window.index = -1
        @selectable_window.active = false
        @party_window.active = true
      end
    end
  end
end

class Window_CurrentMember < Window_Base
  attr_reader :mode
  def initialize(member = nil, mode = 0)
    super(304, 80, 192, 256)
    create_contents
    @member = member
    @mode = 0
    refresh
  end
  def member
    return @member
  end
  def set_member(member)
    old_member = @member
    @member = member
    refresh if old_member != @member
  end
  def set_mode(mode)
    @mode = mode if [0, 1].include?(mode)
    refresh
  end
  def refresh
    self.contents.clear
    return unless @member
    x, y = 0, 0
    self.draw_actor_face(@member, x, y, 48)
    self.draw_actor_name(@member, x + 52, y)
    self.draw_actor_class(@member, x + 52, y + WLH)
    self.draw_actor_level(@member, x, y + WLH*2)
    case @mode
    when 0
      self.draw_icon(142, self.contents.width - 24, y + WLH*2)
      self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Equip', 2)
      self.draw_actor_hp(@member, x, y + WLH*3, 160)
      self.draw_actor_mp(@member, x, y + WLH*4, 160)
      self.draw_actor_parameter(@member, x, y + WLH*5, 0)
      self.draw_actor_parameter(@member, x, y + WLH*6, 1)
      self.draw_actor_parameter(@member, x, y + WLH*7, 2)
      self.draw_actor_parameter(@member, x, y + WLH*8, 3)
    when 1
      self.draw_icon(143, self.contents.width - 24, y + WLH*2)
      self.contents.draw_text(x, y + WLH*2, self.contents.width - 12, WLH, 'Stat', 2)
      for i in [email protected]
        item = @member.equips
        self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24)
      end
    end
  end
end

class Window_CurrentParty < Window_Selectable
  def initialize
    super(48, 80, 256, 64)
    @item_max = 4
    @column_max = @item_max
    create_contents
    self.index = 0
    refresh
  end
  def member
    return $game_party.members[self.index]
  end
  def refresh
    for i in 0...@item_max
      rect = item_rect(i)
      self.contents.clear_rect(rect)
    end
    for i in 0...$game_party.members.size
      rect = item_rect(i)
      bitmap = Cache.character($game_party.members.character_name)
      sign = $game_party.members.character_name[/^[\!\$]./]
      if sign != nil and sign.include?('$')
        cw = bitmap.width / 3
        ch = bitmap.height / 4
      else
        cw = bitmap.width / 12
        ch = bitmap.height / 8
      end
      n = $game_party.members.character_index
      src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
      if $game_party.members.actor.unavailable
        self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
      else
        self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
      end
      if $game_party.members.actor.required
        lock_bitmap = Cache.system("Locked")
        self.contents.blt(rect.x + rect.width - lock_bitmap.width,
                          rect.y + rect.height - lock_bitmap.height,
                          lock_bitmap, lock_bitmap.rect)
      end
    end
  end
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = (contents.width + @spacing) / @column_max - @spacing
    rect.height = 32
    rect.x = index % @column_max * (rect.width + @spacing)
    rect.y = index / @column_max * 32
    return rect
  end
end

class Window_SelectMember < Window_Selectable
  def initialize
    super(48, 144, 256, 192)
    calculate_actors
    @item_max = @actors.size + 1
    @column_max = 4
    self.index = -1
    self.active = false
    refresh
  end
  def calculate_actors
    @actors = []
    for a in $game_actors.data
      @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a)
    end
  end
  def member
    return @actors[self.index]
  end
  def refresh
    self.contents.clear
    calculate_actors
    @item_max = @actors.size + 1
    for i in [email protected]
      rect = item_rect(i)
      bitmap = Cache.character(@actors.character_name)
      sign = @actors.character_name[/^[\!\$]./]
      if sign != nil and sign.include?('$')
        cw = bitmap.width / 3
        ch = bitmap.height / 4
      else
        cw = bitmap.width / 12
        ch = bitmap.height / 8
      end
      n = @actors.character_index
      src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
      if @actors.actor.unavailable
        self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
      else
        self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
      end
      if @actors.actor.required
        lock_bitmap = Cache.system("Locked")
        self.contents.blt(rect.x + rect.width - lock_bitmap.width,
                          rect.y + rect.height - lock_bitmap.height,
                          lock_bitmap, lock_bitmap.rect)
      end
    end
  end
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = (contents.width + @spacing) / @column_max - @spacing
    rect.height = 32
    rect.x = index % @column_max * (rect.width + @spacing)
    rect.y = index / @column_max * 32
    return rect
  end
end


范例(中文的)http://rpg.blue/upload_program/files/Party_87911823.rar

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3367
在线时间
3624 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
发表于 2008-4-6 20:51:32 | 只看该作者
头像只显示了一小部分……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-5-3
帖子
151
3
 楼主| 发表于 2008-4-6 20:59:35 | 只看该作者
....调整一下应该可以了
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

4
发表于 2008-4-6 21:51:10 | 只看该作者
LZ貌似很爱缩水版,称不上华丽吧?
血条占太多位置了吧
能力值文字分的太开了
整体感觉上不如日站的队员管理脚本

VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-5-3
帖子
151
5
 楼主| 发表于 2008-4-6 21:56:56 | 只看该作者
呵呵
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

6
发表于 2008-4-6 22:43:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2007-5-28
帖子
364
7
发表于 2008-4-6 23:54:54 | 只看该作者
转地球村吧……
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-4-5 02:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表