| 赞 | 0  | 
 
| VIP | 0 | 
 
| 好人卡 | 3 | 
 
| 积分 | 1 | 
 
| 经验 | 14100 | 
 
| 最后登录 | 2024-6-29 | 
 
| 在线时间 | 393 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 105 
 
        - 在线时间
 - 393 小时
 
        - 注册时间
 - 2008-11-7
 
        - 帖子
 - 353
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
#============================================================================== 
 
# 本脚本来自http://rpg.blue/web/,使用和转载请保留此信息 
 
#==============================================================================  
 
 
 
#呼叫魔法商店的时候,在事件中使用脚本:$scene = Scene_MShop.new([魔法编号1,2]) 
 
#在数据库的说明里,在说明文字后面加上@50 表示这个魔法价格为 50 
 
 
 
#============================================================================== 
 
 
 
#——以下是一些自定义的内容 
 
 
 
$mShop_use_1 = "技能点"    #——这项是购买魔法特技的货币的名称,如“灵魄”、“金钱” 
 
 
 
$mShop_use_2 = "点"  #——这项是购买魔法特技的货币单位,如“点”、“¥” 
 
 
 
$mShop_use_variable = 20   #——这项是购买魔法特技时消耗的变量编号,如果=0 则是消耗金钱 
 
 
 
$mShop_Window_Opacity = 200  #——这项是窗口透明度 
 
 
 
#============================================================================== 
 
# ■ Window_MGold 
 
#------------------------------------------------------------------------------ 
 
#  显示金钱的窗口。 
 
#============================================================================== 
 
class Window_MGold < Window_Base 
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化窗口 
 
  #-------------------------------------------------------------------------- 
 
  def initialize 
 
    super(0, 0, 272, 64) 
 
    self.contents = Bitmap.new(width - 32, height - 32) 
 
    refresh 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新 
 
  #-------------------------------------------------------------------------- 
 
  def refresh 
 
    self.contents.clear 
 
    self.contents.font.color = system_color 
 
    self.contents.draw_text(0, 0 , 240,32 ,$mShop_use_1) 
 
    self.contents.font.color = normal_color 
 
    self.contents.draw_text(0, 0, 240-contents.text_size($mShop_use_2).width-6, 32, $mShop_gold.to_s, 2) 
 
    self.contents.font.color = system_color 
 
    self.contents.draw_text(0, 0, 240, 32, $mShop_use_2, 2) 
 
  end 
 
end 
 
#============================================================================== 
 
# ■ Scene_MShop 
 
#------------------------------------------------------------------------------ 
 
#  处理特技商店画面的类。 
 
#============================================================================== 
 
class Scene_MShop 
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化 
 
  #-------------------------------------------------------------------------- 
 
  def initialize(id) 
 
    @id = id 
 
  end   
 
  #-------------------------------------------------------------------------- 
 
  # ● 主处理 
 
  #-------------------------------------------------------------------------- 
 
  def main 
 
    screen = Spriteset_Map.new 
 
    if $mShop_use_variable == 0 
 
      $mShop_gold = $game_party.gold 
 
    else 
 
      $mShop_gold = $game_variables[$mShop_use_variable] 
 
    end 
 
    # 生成帮助窗口 
 
    @help_window = Window_Help.new 
 
    @help_window.opacity = $mShop_Window_Opacity 
 
    @help_window.z = 10000 
 
    # 生成金钱窗口 
 
    @gold_window = Window_MGold.new 
 
    @gold_window.x = 368 
 
    @gold_window.y = 416 
 
    @gold_window.opacity = $mShop_Window_Opacity 
 
    @gold_window.z = 10000 
 
    # 生成购买窗口 
 
    @buy_window = Window_MShopBuy.new(@id) 
 
    @buy_window.active = true 
 
    @buy_window.visible = true 
 
    @buy_window.help_window = @help_window 
 
    @buy_window.opacity = $mShop_Window_Opacity 
 
    @buy_window.z = 10000 
 
    # 生成状态窗口 
 
    @status_window = Window_MShopStatus.new 
 
    @status_window.visible = true 
 
    @status_window.active = false 
 
    @status_window.opacity = $mShop_Window_Opacity 
 
    @status_window.z = 10000 
 
    # 执行过渡 
 
    Graphics.transition 
 
    # 主循环 
 
    loop do 
 
      # 刷新游戏画面 
 
      Graphics.update 
 
      # 刷新输入信息 
 
      Input.update 
 
      # 刷新画面 
 
      update 
 
      # 如果画面切换的话就中断循环 
 
      if $scene != self 
 
        break 
 
      end 
 
    end 
 
    # 准备过渡 
 
    Graphics.freeze 
 
    # 释放窗口 
 
    @help_window.dispose 
 
    #@mhelp_window.dispose 
 
    @gold_window.dispose 
 
    @buy_window.dispose 
 
    @status_window.dispose 
 
    screen.dispose 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新画面 
 
  #-------------------------------------------------------------------------- 
 
  def update 
 
    # 刷新窗口 
 
    @help_window.update 
 
    #@mhelp_window.update 
 
    @gold_window.update 
 
    @buy_window.update 
 
    @status_window.update 
 
    # 购买窗口激活的情况下: 调用 update_buy 
 
    if @buy_window.active 
 
      update_buy 
 
      return 
 
    end 
 
    if @status_window.active 
 
      update_status 
 
      return 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新画面 (购买窗口激活的情况下) 
 
  #-------------------------------------------------------------------------- 
 
  def update_buy 
 
    @status_window.skill = @buy_window.skill 
 
    if Input.trigger?(Input::B) 
 
      $game_system.se_play($data_system.cancel_se) 
 
      $scene = Scene_Map.new 
 
      return 
 
    end 
 
    if Input.trigger?(Input::C) 
 
      @skill = @buy_window.skill 
 
      if @skill == nil or @skill.price > $mShop_gold 
 
        $game_system.se_play($data_system.buzzer_se) 
 
        return 
 
      end 
 
      $game_system.se_play($data_system.decision_se) 
 
      @buy_window.active = false 
 
      @status_window.index = 0 
 
      @status_window.active = true 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新画面 (状态窗口激活的情况下) 
 
  #-------------------------------------------------------------------------- 
 
  def update_status 
 
    if Input.trigger?(Input::B) 
 
      $game_system.se_play($data_system.cancel_se) 
 
      @status_window.active = false 
 
      @status_window.index = -1 
 
      @buy_window.active = true 
 
    end 
 
    if Input.trigger?(Input::C) 
 
      if $game_party.actors[@status_window.index].skill_learn?(@skill.id) 
 
        $game_system.se_play($data_system.cancel_se) 
 
        return 
 
      else 
 
        $game_system.se_play($data_system.decision_se) 
 
        if $mShop_use_variable == 0 
 
          $game_party.gain_gold([email protected]) 
 
          $mShop_gold -= @skill.price 
 
        else 
 
          $game_variables[$mShop_use_variable] -= @skill.price 
 
          $mShop_gold -= @skill.price 
 
        end 
 
        $game_party.actors[@status_window.index].learn_skill(@skill.id) 
 
        @gold_window.refresh 
 
        @buy_window.refresh 
 
        @status_window.refresh 
 
        @status_window.active = false 
 
        @status_window.index = -1 
 
        @buy_window.active = true 
 
      end       
 
    end     
 
  end 
 
end 
 
#============================================================================== 
 
# ■ Window_MShopStatus 
 
#------------------------------------------------------------------------------ 
 
#  特技商店画面、显示物品所持数与角色装备的窗口。 
 
#============================================================================== 
 
class Window_MShopStatus < Window_Selectable 
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化对像 
 
  #-------------------------------------------------------------------------- 
 
  def initialize 
 
    super(368, 64, 272, 352) 
 
    self.contents = Bitmap.new(width - 32, height - 32) 
 
    self.contents.font.size = 18 
 
    @skill = nil 
 
    refresh 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新 
 
  #-------------------------------------------------------------------------- 
 
  def refresh 
 
    self.contents.clear 
 
    for i in 0...$game_party.actors.size 
 
      actor = $game_party.actors[i] 
 
      draw_actor_graphic(actor,22,80*i+68) 
 
      self.contents.font.color = system_color 
 
      self.contents.draw_text(44, 80*i, 240, 32, actor.name) 
 
      self.contents.draw_text(0, 80*i , 200,32,"Lv",2) 
 
      self.contents.font.color = normal_color 
 
      self.contents.draw_text(0, 80*i, 230, 32, actor.level.to_s , 2) 
 
      self.contents.font.color = system_color 
 
      self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp) 
 
      self.contents.font.color = normal_color 
 
      self.contents.draw_text(44, 80*i+22, 80, 32, actor.maxhp.to_s,2) 
 
      self.contents.font.color = system_color 
 
      self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp) 
 
      self.contents.font.color = normal_color 
 
      self.contents.draw_text(150, 80*i+22, 80, 32, actor.maxsp.to_s,2)       
 
      if actor.skill_learn?(@skill.id) 
 
        self.contents.font.color = Color.new(255,255,255,128) 
 
        self.contents.draw_text(44, 80*i+44, 196, 32, "已经学习",2)         
 
      else 
 
        self.contents.font.color = Color.new(255,255,0,255) 
 
        self.contents.draw_text(44, 80*i+44, 240, 32, "没有学习") 
 
      end 
 
    end 
 
    @item_max = 4#$game_party.actors.size 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 设置物品 
 
  #     item : 新的物品 
 
  #-------------------------------------------------------------------------- 
 
  def skill=(skill) 
 
    if @skill != skill 
 
      @skill = skill 
 
      refresh 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新光标矩形 
 
  #-------------------------------------------------------------------------- 
 
  def update_cursor_rect 
 
    if @index < 0 
 
      self.cursor_rect.empty 
 
    else 
 
      self.cursor_rect.set(0, @index * 80, self.width - 32, 80) 
 
    end 
 
  end 
 
end 
 
#============================================================================== 
 
# ■ Window_MShopBuy 
 
#------------------------------------------------------------------------------ 
 
#  特技商店画面、浏览显示可以购买的商品的窗口。 
 
#============================================================================== 
 
class Window_MShopBuy < Window_Selectable 
 
  #-------------------------------------------------------------------------- 
 
  # ● 初始化对像 
 
  #     shop_goods : 商品 
 
  #-------------------------------------------------------------------------- 
 
  def initialize(id) 
 
    super(0, 64, 368, 416) 
 
    @id = id 
 
    refresh 
 
    self.index = 0 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 获取物品 
 
  #-------------------------------------------------------------------------- 
 
  def skill 
 
    return @data[self.index] 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新 
 
  #-------------------------------------------------------------------------- 
 
  def refresh 
 
    if self.contents != nil 
 
      self.contents.dispose 
 
      self.contents = nil 
 
    end 
 
    @data = [] 
 
    for skill_id in @id 
 
      skill = $data_skills[skill_id] 
 
      if skill != nil 
 
        @data.push(skill) 
 
      end 
 
    end 
 
    @item_max = @data.size 
 
    if @item_max > 0 
 
      self.contents = Bitmap.new(width - 32, row_max * 32) 
 
      for i in 0...@item_max 
 
        draw_item(i) 
 
      end 
 
    end 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 描绘羡慕 
 
  #     index : 项目编号 
 
  #-------------------------------------------------------------------------- 
 
  def draw_item(index) 
 
    skill = @data[index] 
 
    # 除此之外的情况设置为无效文字色 
 
    if skill.price <= $mShop_gold 
 
      self.contents.font.color = normal_color 
 
    else 
 
      self.contents.font.color = disabled_color 
 
    end 
 
    x = 4 
 
    y = index * 32 
 
    rect = Rect.new(x, y, self.width - 32, 32) 
 
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) 
 
    bitmap = RPG::Cache.icon(skill.icon_name) 
 
    opacity = self.contents.font.color == normal_color ? 255 : 128 
 
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) 
 
    self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0) 
 
    self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2) 
 
  end 
 
  #-------------------------------------------------------------------------- 
 
  # ● 刷新帮助文本 
 
  #-------------------------------------------------------------------------- 
 
  def update_help 
 
    @help_window.set_text(self.skill == nil ? "" : self.skill.description) 
 
  end 
 
end 
 
#============================================================================== 
 
# ■ RPG原装定义 
 
#============================================================================== 
 
module RPG 
 
  class Skill 
 
    def description 
 
      description = @description.split(/@/)[0] 
 
      return description != nil ? description : '' 
 
    end 
 
    def price 
 
      price = @description.split(/@/)[1] 
 
      return price != nil ? price.to_i : 0 
 
    end 
 
  end 
 
end 
 
 
 
 
 
 
 
#============================================================================== 
 
# 本脚本来自http://rpg.blue/web/,使用和转载请保留此信息 
 
#============================================================================== |   
 
 
 
 |