查看: 1386|回复: 2

[有事请教] 任务系统可以重复接任务如何每个任务只接一次

[复制链接]
梦石
0
星屑
1120
在线时间
210 小时
注册时间
2020-9-19
回帖
19
发表于 2023-10-31 14:23:11 | 显示全部楼层 |阅读模式

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

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

×
如何实现提交任务之后任务就不能在接了,这个脚本提交任务之后还可以反复去接任务如果做主线任务的话不方便 我想让每个任务只能接一次提交后任务界面里的任务消失或者变色
谢谢了
[pre lang="ruby"]#---------------------------------------------------------------------------
# 仿网游多任务系统v0.1 by秀秀
#---------------------------------------------------------------------------
=begin
   
  作者:秀秀

  版本:v1.0
  
  [使用方法]
  
    在脚本开始的地方的设置常量Missions

    设置好之后 调用 $scene = SceneMission.new 即可
   
  [Mission数据结构]  
  
    Mission 是一个用来存放任务的数组
   
    格式: Mission[任务1,任务2,任务3,任务n], 可无限设置

    而Mission数组里的每个元素 又是一个数组 大小为固定size = 5
   
    分别为: 1.任务名称 (字符串)
         
            2.任务等级 (整数)
            
            3.任务类型和条件(数组)
            
               第一个元素为类型
               
               类型: 0 为触发式
                     1 为持有物品
                     2 为杀敌数一定
               
               第二个元素为条件
                   当第一个元素为0时候
                     设置为字符串(即开关名)
                   当第二个元素为1时候
                     设置为 hash(即某物品或者武器和数量
                                 键为类型,0:物品,1:武器,2:防具)
                     如{0=>[[1,3],[2,4]],1=>[[5,10]],2=>[10,12]}
                     表示 物品id为1 数量3
                          物品id为2 数量为4
                          武器id为5,数量为10
                          防具id为10,数量为12
                   当第二个元素为1时候(即杀敌数量)
                     设置为 hash(敌人id和数量)
                     如{14=>5,6=>12,7=>8}
                     表示需要干掉
                        id为14敌人5次
                        id为6的敌人12次
                        id为7的敌人8次
                        
            4.任务描述(字符串)
            
            5.报酬(数组)
              
              第一个元素为金钱(整数)
            
              第二个元素为物品,武器,防具
                设置为 hash(即某物品或者武器和数量
                            键为类型,0:物品,1:武器,2:防具)
                如:{0=>[[1,10],[2,6]],1=>[[6,8]]}
                   表示 物品id为1 数量10
                        物品id为2 数量为6
                        武器id为6,数量为8
                          
            6.其他描述(字符串)
               如:如此任务达成 我会帮你打开XX门
               配合事件里插入脚本
               $game_system.finishNameSort.include?(name)
               name是任务名称
               可以检测是否已经完成改任务 来判断是否打开XX门
    [其他功能]
           接受一个任务
             MissionList.Start(name)
           判断一个任务是否执行中
             Mission.mission_run?(name)
           提交一个任务  
             Mission.checkMission(name)
           判断某个任务是否完成
             $game_system.finishNameSort.include?(name)
            
           还有一些功能就不单独描述了 具体看脚本核心部分
              
=end

#-----------------------------------------------------------------------------
# 设置任务部分
#------------------------------------------------------------------------------
module MissionList
  Missions = [
  #任务1
    ["寻找内裤",1,
    [0,"寻找内裤"],"找到隐藏的内裤",[100,
    {0=>[[1,10],[2,6]],1=>[[6,8]]}],"可能就在附近,仔细找找吧"],
  #   ======================================================
    ["对话",1,
    [0,"对话01"],"去找阿尔西斯对话",[100,
    {0=>[[1,5]],}],"可能就在附近,仔细找找吧"+"这信息是刷屏幕,主要测试自动换行功能"*10],

   
   
    #=============================杀敌任务范例===================================  
      #任务名称    任务星级  (0触发,1持物,2杀敌) 敌人ID  杀敌数
    ["测试杀敌任务",   1    ,[          2          ,{  3  =>   5    }],
      #任务描述   金钱 (0物品,1武器,2防具)  道具ID  数量   任务说明
    "干掉5个幽灵",[0,           {1=>            [[3,     5]]}],"哈哈哈"],
  #============================================================================  
  #============================================================================  
      #任务名称  任务星级  (0触发,1持物,2杀敌) (0:物品,1:武器,2:防具)  ID   数量
    ["寻找密斯里",  2,   [            1,                    {1=>           [[4,   1]]}],
    #任务描述     
     "也许在地图的某个角落",
  # 金钱 (0物品,1武器,2防具)  ID  数量   (0物品,1武器,2防具)  道具ID  数量         
     [0,            {1=>         [[1,  1]],             2=>            [[1,     1]]}],
     #说明
     "也许在地图的某个角落"],   
  #====================================================================================   
    ["寻找圣剑材料",10,
    [1,{0=>[[32,5],[33,8],[34,11]]}],
    "寻找圣剑所需的三个材料,圣剑材料1,圣剑材料2,圣剑材料3",
    [0,{1=>[[33,1]]}],"找到这些可以做圣剑"],   
    ]  
  module_function  
  def self.Start(name)
    Missions.each do |mission|
      Mission.startMission(*mission) if mission[0] == name
    end
  end  

  def canMissionList
    if Missions.empty? or Missions.nil?
      raise "任务没有设置好,请检查"
    end  
    temp = []
    Missions.each do |mission|
      # if $game_system.missions[mission[0]].nil?
        #添加到任务列表 并设置不需要在列表里的任务
        temp << mission[0] if mission[0] != "寻找圣剑材料"
      # end
    end  
    return temp
  end  
end  
#------------------------------------------------------------------------------
# 内部类定义部分
#------------------------------------------------------------------------------
class Hash < Object
  def soft
    @temp = []
    self.each_pair{|key, value| @temp << [key,value] }
    return @temp
  end  
end  

class Integer
  def rStar
    return "★"*self
  end
end  

class Bitmap
  def auto_line_draw_text(x,y,text,limit,height,align)
    lines = text.getLines(limit)
    @limit = limit
    @n = 0
    for i in 0...lines
      @t1 = []
      if lines == 1
        @t1 << text
      end  
      if lines > 1
        @t= text.split(//)
        while @t1.join.size < @limit
          break if @t[@n].nil?
          @t1.push(@t[@n])
          @n += 1
        end
      end  
      draw_text(x,y+i*height,500,height,@t1.join,align)
    end
  end  
end  

class String
  def getLines(limit)
    lines = (self.length/limit).to_i
    lines += 1 if self.length%limit != 0
    return lines
  end  
end  

#------------------------------------------------------------------------------
# 系统重定义部分
#------------------------------------------------------------------------------
class Game_Battler
  def dead?
    if (@hp == 0 and not @immortal)
     @temp_a = 0 if @temp_a == nil
     if self.is_a?(Game_Enemy) and @temp_a == 0
       id = self.instance_variable_get :@enemy_id
       now_mission = $game_system.missionEnemyIds  #[name][id]
       goal_mission = $game_system.missions        # [name].kind[1][id]
       # 检索是否存在于列表中
       $game_system.missionEnemyIds.keys.each do |name|
         # return true if $game_system.missionEnemyIds[name] == nil
         if now_mission[name][id] != nil and goal_mission[name] != nil and
            now_mission[name][id] < goal_mission[name].kind[1][id]
            # $game_system.missions[name].stutas == 0
            $game_system.missionEnemyIds[name][id] += 1
            break
         end  
       end
       @temp_a = 1
     end
     return true
    end
  end
end

class Game_System
  attr_accessor  :missions
  #attr_accessor  :finishMissionTimes
  attr_accessor  :finishMissionList
  attr_accessor  :missionSwitch  
  attr_accessor  :missionEnemyIds
  attr_accessor  :missionNameSort
  attr_accessor  :finishNameSort
  alias ori_initialize initialize
  def initialize
    ori_initialize
    @missions = {}
    #@finishMissionTimes = {}
    @finishMissionList = {}
    @missionSwitch = {}
    @missionEnemyIds = {}
    @missionNameSort = []
    @finishNameSort = []
    @missionHouseList = []
  end  
end  

class GetMission
  attr_reader    :level
  attr_reader    :kind
  attr_reader    :description
  attr_reader    :money
  attr_reader    :items
  attr_reader    :reswards_des
  # attr_accessor  :stutas
  def initialize(level,kind,description,rewards,rewards_des)
    @level = level
    @kind = kind
    @description = description
    @money = rewards[0]
    @items = rewards[1]
    @reswards_des = rewards_des
  end
end  

class FinishMission < GetMission
  attr_accessor   :times
  def initialize(times,*args)
    new_args = [args[0],args[1],args[2],[args[3],args[4]],args[5]]
    super(*new_args)
    @times = times
  end  
end  

#----------------------------------------------------------------------------
# 任务核心部分
#----------------------------------------------------------------------------
module Mission
  module_function
  def startMission(name,level,kind,description,rewards,rewards_des)
    unless $game_system.missions.has_key?(name)
      # 检查参数合法性
      self.getError(name,level,kind,description,rewards,rewards_des)
      $game_system.missions[name] = GetMission.new(
         level,kind,description,rewards,rewards_des)
      $game_system.missionNameSort << name unless $game_system.missionNameSort.include?(name)  
      case kind[0]
      when 0
      # 设置开关初始状态
      $game_system.missionSwitch[kind[1]] = false
      when 1
      # 开启了一个获得物品的任务
      when 2  
      # 开启了一个杀敌数的任务并设置列表
      # {name1=>{id1=number,id2=number},name2={id1=number,id2=number}}
      $game_system.missionEnemyIds[name] = {}
      enemies = kind[1].sort
      enemies.each{|id| $game_system.missionEnemyIds[name][id[0]] = 0}
      end
    end
    return
  end
  
  # 开启一个组合任务
  #(- -,好像没必要了 可以直接接受2个或者多个无报酬任务
  # 全部完成后再给报酬)
  def startComboMission;end  

  def getError(name,level,kind,description,rewards,rewards_des)
    raise sprintf("任务:%s的参数 level 不是一个 Integer",name) unless level.kind_of?(Integer)
    raise sprintf("任务:%s的参数 kind[0] 不是一个 Integer",name) unless kind[0].kind_of?(Integer)
    case kind[0]
      when 0
      raise sprintf("任务:%s的参数 kind[1] 不是一个 String",name) unless kind[1].kind_of?(String)
      when 1..2
      unless (kind[1].kind_of?(Hash))
        raise sprintf("任务:%s的参数 kind[1] 不是一个 Hash",name)
      end   
    end
    raise sprintf("任务:%s的参数 description 不是一个 String",name) unless description.kind_of?(String)
    raise sprintf("任务:%s的参数 rewards[0] 不是一个 Integer",name) unless rewards[0].kind_of?(Integer)
    raise sprintf("任务:%s的参数 rewards[1] 不是一个 Hash",name) unless rewards[1].kind_of?(Hash)
    raise sprintf("任务:%s的参数 rewards_des 不是一个 String",name) unless rewards_des.kind_of?(String)
  end  
  
  # 接受一个或多个任务添加到任务所
  def addMissionHouse(*missions)
    missions.each{|a|$game_system.missionHouseList << a}
  end
  
  # 任务所删除一个或多个任务
  def deleteMissionHouse(*missions)
    missions.each{|a|$game_system.missionHouseList.delete(a)}
  end
  
  # 放弃任务 可多个  
  def stopMission(*name)
    name.each do |aname|
      $game_system.missions.delete(aname) if $game_system.missions.include?(aname)
    end
  end
  
  # 检索任务
  def checkMission(name)
    # 检索是否已接了任务
    if $game_system.missions[name] != nil
      kind = $game_system.missions[name].kind
    else
      return self.missionReslut(2,name,self.message(4)){|msg|self.putsMessage(msg);return}
    end  
   
    # 类型
    case kind[0]
    # 条件触发式
    when 0
      switch_name = $game_system.missions[name].kind[1]
      if $game_system.missionSwitch[switch_name] == true
        $game_system.missionSwitch.delete(name)
        # 返回成功结果
        return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
      else
        # 返回未完成结果
        self.missionReslut(1,name,self.message(1)){|msg|self.putsMessage(msg);return}
      end  
    # 持有物品
    when 1
      # 转化为 item格式的数组
      # 如 [[1,10],[5,15]] 道具1数量10 道具5数量15
        items = kind[1].select{|akind,array| akind == 0}[0][1] if kind[1][0] != nil
        weapons = kind[1].select{|bkind,array| bkind == 1}[0][1] if kind[1][1] != nil
        armors = kind[1].select{|ckind,array| ckind == 2}[0][1] if kind[1][2] != nil
      unless items.nil?
        unless self.check(name,0,items)
          # 道具数量不合格
          return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
        end  
      end
      unless weapons.nil?
        unless self.check(name,1,weapons)
          # 武器数量不合格
          return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
        end
      end
      unless armors.nil?
        unless self.check(name,2,armors)
          # 防具数量不合格
          return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
        end
      end
      # 返回成功结果
      return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
    # 杀敌数一定  
    when 2  
      enemies = kind[1].soft
      enemies.each do |id,number|  
        if $game_system.missionEnemyIds[name][id] < number
          return self.missionReslut(1,name,self.message(3)){|msg|self.putsMessage(msg);return}
        end  
      end
      # 清空敌人id列表
      $game_system.missionEnemyIds.delete(name)
      # 返回成功结果
      return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
    end  
      
  end  
  
  def message(kind)
    if kind == 0
      return "恭喜你任务完成,请查收奖品"
    elsif kind == 1
      return "似乎还未达到要求"
    elsif kind == 2
      return "请检查是否获得了任务所需物品和数量"
    elsif kind == 3
      return "任务所需杀敌数还不够"
    elsif kind == 4
      return "未开启的任务类型"
    else
      return
    end  
  end  
  
  def putsMessage(msg)
    if $scene.is_a?(SceneMission)
      $scene.message = msg
    end
    return
  end  
  
  def check(name,kind,*args)
    if kind == 0
      # 任务所需物品array
      items = args
      # 获取现在物品
      now_items = $game_party.instance_variable_get :@items
      # 检查是否包含物品
      ids01 = []
      items[0].each{|item| ids01 << item[0]}
      now_ids = now_items.keys
      unless now_ids|ids01 == now_ids
        return false
      end
      # 检查数量是否合格
      items[0].each do |item|
       return false if now_items[item[0]] < item[1]
      end  
    elsif kind == 1  
      # 任务所需武器array
      weapons = args
      # 获取现在物品
      now_weapons = $game_party.instance_variable_get :@weapons
      # 检查是否包含物品
      ids02 = []
      weapons[0].each{|weapon| ids02 << weapon[0]}
      now_ids = now_weapons.keys
      unless now_ids|ids02 == now_ids
        return false
      end
      # 检查数量是否合格
      weapons[0].each do |weapon|
       return false if now_weapons[weapon[0]] < weapon[1]
      end  
    elsif kind == 2
      # 任务所需物品array
      armors = args
      # 获取现在物品
      now_armors = $game_party.instance_variable_get :@armors
      # 检查是否包含物品
      ids03 = []
      armors[0].each{|armor| ids03 << armor[0][0]}
      now_ids = now_armors.keys
      unless now_ids|ids03 == now_ids
        return false
      end
      # 检查数量是否合格
      armors[0].each do |armor|
       return false if now_armors[armor[0]] < armor[1]
      end  
    else
      
    end  
    # 检查通过
    return true
  end

  #返回一种任务结果
  def missionReslut(result,name,message)
    case result
    when 0
      # 将任务转移到完成列表
      self.missionMove(name)
      # 获得报酬
      self.getRewards(name)
      # 清空任务
      $game_system.missionNameSort.delete(name)
      $game_system.missions.delete(name)
      # 抛出任务成功信息
      yield message
    when 1
      # 抛出未完成信息
      yield message
      #任务还未完成
      return false
    when 2  
      # 抛出未完成信息
      yield message
      #无此任务
      return false
    end
    return
  end  
  
  # 转移到任务完成列表
  def missionMove(name)
    @mission = $game_system.missions[name]
    # 保存全部实例变量
    @include = ["@level","@kind","@description","@money","@items","@reswards_des"]
    @include_value = []
    temp = []
    @include.each do |a|
      if a == "@monney"
        temp << a
        next
      end
      if a == "@tiems"
        temp << a
        a = temp
      end  
      @include_value.push @mission.instance_variable_get eval(":"+a)
    end  

    if $game_system.finishMissionList.include? name
      # 任务名称=>完成次数
      # 如果包含 完成次数+1
      $game_system.finishMissionList[name].times += 1
    else
      # 如果不包含 建立一个完成任务的列表
      $game_system.finishNameSort.push(name) unless $game_system.finishNameSort.include?(name)
      $game_system.finishMissionList[name] = FinishMission.new(1,*@include_value)
    end
    return
  end
  
  # 获取报酬
  def getRewards(name)
     return if $game_system.missions[name] == nil
     # [金钱,{种类1=>[[ID1,数量],[ID2,数量]],种类2=>[[ID1,数量],[ID2,数量]]}]
     money = $game_system.missions[name].money
     items = $game_system.missions[name].items
     # 获取赏金
     self.get_money(money) if money != 0
     # 获得物品
     if items[0] != nil
       items[0].each{|id,number|
       $game_party.send :gain_item,id,number
       }
     end  
     # 获得武器
     if items[1] != nil
       items[1].each{|id,number|
       $game_party.send :gain_weapon,id,number
       }
     end  
     # 获得防具
     if items[2] != nil
       items[2].each{|id,number|
       $game_party.send :gain_armor,id,number
       }
     end  
     return
  end  
  
  def get_money(n)
    $game_party.send :gain_gold,n
  end  
  
  # *mission 可接收多个任务名称作为参数
  def mission_finished?(*missions)
    # return $game_system.finishMissionList.keys | missions
    missions.each do |mission|
      return false unless $game_system.finishMissionList.has_key?(mission)
    end  
    return true
  end
  
  # 检查mission是否正在执行
  def mission_run?(*missions)
    #p missions
    #p $game_system.missions
    missions.each do |mission|
      return false unless $game_system.missions.has_key?(mission)
    end  
    return true
    # p $game_system.missions.keys | missions
    # return $game_system.missions.keys | missions
  end  
  
  # 获取当前任务数量
  def mission_counts
    return $game_system.missions.length
  end  
  
end  

#-----------------------------------------------------------------------------
# 菜单部分
#-----------------------------------------------------------------------------
# 任务所主菜单
class WindowMissionMain < Window_Selectable
  def initialize
    super(240,100,160,160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item_max = 4
    @column_max = 1
    self.opacity = 255
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.draw_text(0,0,200,32,"主线任务",0)
    self.contents.draw_text(0,32,200,32,"提交任务",0)
    self.contents.draw_text(0,32*2,200,32,"查看任务",0)
    self.contents.draw_text(0,32*3,200,32,"完成列表",0)
  end
end


# 可接受任务的列表
class WindowCanAcceptList < Window_Selectable
  def initialize
    super(70,60,500,360)
    @width = width
    @column_max = 1
    self.opacity = 255
    self.visible = false
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh(*list)
    self.contents.clear if self.contents != nil
    self.contents = Bitmap.new(@width - 32, list.size * 32+32)
    @item_max = list.size
    for i in list
      MissionList::Missions.each do |mission|
        if  mission[0] == i
          @level = mission[1]
          @name = i
          break
        end
      end
      pos = list.index(i)
      if $game_system.missions[@name] != nil
        self.contents.font.color = disabled_color
      else
        self.contents.font.color = normal_color
      end
      self.contents.draw_text(0,pos*32,200,32,i,0)
      self.contents.draw_text(220,pos*32,200,32,@level.rStar,0)
    end
  end
end



# 任务中的列表
class WindowAccetpedList < Window_Selectable
  def initialize
    super(70,60,500,360)
    @width = width
    @column_max = 1
    self.opacity = 255
    self.visible = false
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh(*list)
    return if list.empty?
    self.contents.clear if self.contents != nil
    self.contents = Bitmap.new(@width - 32, list.size * 32)
    @item_max = list.size
    for i in list
      levels = $game_system.missions.level.rStar
      pos = list.index(i)
      self.contents.draw_text(0,pos*32,200,32,i,0)
      self.contents.draw_text(220,pos*32,200,32,levels,0)
    end
  end
end


# 任务完成的列表
class WindowFinishList < Window_Selectable
  def initialize
    super(70,60,500,360)
    @width = width
    @column_max = 1
    self.visible = false
    self.opacity = 255
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh(*list)
    return if list.empty?
    self.contents.clear if self.contents != nil
    self.contents = Bitmap.new(@width - 32,list.size * 32)
    @item_max = list.size
    for i in list
      level = $game_system.finishMissionList.level.rStar
      pos = list.index(i)
      self.contents.draw_text(0,pos*32,200,32,i,0)
      self.contents.draw_text(220,pos*32,200,32,level,0)
    end
  end
end  


# 任务描述窗口
class WindowMissionDes < Window_Base
  TEXT = ["[任务等级]","[任务条件]","[任务描述]","[任务报酬]","[其他]"]
  TEXT2 = "接受任务请按确定键,返回上级菜单按取消键"
  def initialize
    super(70,40,500,400)
    @viewport = Viewport.new(70,40+64,500,400-64)
    @viewport.z = self.z + 1
    self.visible = false
    self.contents = Bitmap.new(width-32,64)
  end
  
  def update
    super
    if self.active
      if @text != nil
        @text.x > - 300 ? @text.x -= 2 : @text.x = 650
      end  
      case Input.dir4
      when 2
        move_block(0)
        move_bar(1)
      when 8
        move_block(1)
        move_bar(0)
      end
    end   
  end  
  
  def nVisible
    if self.visible == true
      @sprite.visible = true if @sprite != nil
      @bar.visible = true if @bar != nil
      #@text.visible = true if @text != nil
    end
    if self.visible == false
      @sprite.visible = false if @sprite != nil
      @bar.visible = false if @bar != nil
      @text.visible = false if @text != nil
    end  
  end  
   
  def dispose
    super
    @sprite.dispose if @sprite != nil
    @bar.dispose if @bar != nil
    @text.dispose if @text != nil
  end  
  
  def move_block(kind)
    if kind == 0
      @sprite.y -= 4
    end
    if kind == 1
      @sprite.y += 4
    end  
  end
  
  def move_bar(kind)
    if kind == 0
      @bar.y -= (4/@rate).to_f if @bar.y > 112
    end
    if kind == 1
      @bar.y += (4/@rate).to_f if @bar.y < 400 - @bar.bitmap.height
    end   
  end  
  
  def getColor(n)
    if n == 0
      return Color.new(255,255,255,255)
    elsif n == 1
      return Color.new(255,255,0,255)
    elsif n == 2
      return Color.new(255,0,0,255)
    elsif n == 3
      return Color.new(128,128,128,255)
    else
      
    end
  end  
  
  def refresh(name,listKind)
    raise "listKind参数设置不正确" unless [0,1,2].include? listKind
    self.contents.clear
    # bitmap.clear if bitmap != nil
    @sprite.dispose if @sprite != nil
    @bar.dispose if @bar != nil
    @name = name
    # 可接受列表
    if listKind == 0   
      MissionList::Missions.each do |mission|
        if mission[0] == @name
          @mission = mission
          break
        end  
      end  
      
      #mission_name                        = @mission[0]
      level                               = @mission[1]
      kind                                = @mission[2][0]
      condition                           = @mission[2][1]
      description                         = @mission[3]
      money                               = @mission[4][0]
      @mission[4][1][0] != nil ? item     = @mission[4][1][0] : item = "无"
      @mission[4][1][1] != nil ? weapon   = @mission[4][1][1] : weapon = "无"
      @mission[4][1][2] != nil ? armor    = @mission[4][1][2] : armor = "无"
      reward_des                          = @mission[5]
    end
   
   
    # 任务中列表
    if listKind == 1
      $game_system.missionNameSort.each do |mission|
        if mission == @name
          @mission = $game_system.missions[@name]
          break
        end  
      end  

      #mission_name                        = @mission.name
      level                               = @mission.level
      kind                                = @mission.kind[0]
      condition                           = @mission.kind[1]
      description                         = @mission.description
      money                               = @mission.money
      @mission.items[0] != nil ? item     = @mission.items[0] : item = "无"
      @mission.items[1] != nil ? weapon   = @mission.items[1] : weapon = "无"
      @mission.items[2] != nil ? armor    = @mission.items[2] : armor = "无"
      reward_des                          = @mission.reswards_des
    end  
   
   
    # 完成列表
    if listKind == 2
      $game_system.finishNameSort.each do |mission|
        if mission == @name
          @mission = $game_system.finishMissionList[@name]
          break
        end  
      end  
      #mission_name                       = @mission.name
      finish_times                        = @mission.times
      level                               = @mission.level
      kind                                = @mission.kind[0]
      condition                           = @mission.kind[1]
      description                         = @mission.description
      money                               = @mission.money
      @mission.items[0] != nil ? item     = @mission.items[0] : item = "无"
      @mission.items[1] != nil ? weapon   = @mission.items[1] : weapon = "无"
      @mission.items[2] != nil ? armor    = @mission.items[2] : armor = "无"
      reward_des                          = @mission.reswards_des
    end  
      
      self.contents.font.color = getColor(2)
      self.contents.draw_text(0,0,450-32,32,"【"+name+"】",1)
      if listKind == 2
        self.contents.font.color = getColor(1)
        self.contents.draw_text(0,20,450-32,32,"任务完成:#{finish_times}",1)
      end
      self.contents.fill_rect(16,48,450,2,getColor(0))
      
      # 开始计算Bitmap的height
      @height = 11
      
      case kind
      when 0
        # 40个字节一行计算
        condition == "" ? @height += 1 : @height += condition.getLines(40)
      when 1
        @height += condition[0].size if condition[0] != nil
        @height += condition[1].size if condition[1] != nil
        @height += condition[2].size if condition[2] != nil
      when 2
        @height += condition.size
      end  
      description == "" ? @height += 1 : @height += description.getLines(40) + 1
      
      if listKind == 0
        # 计算若无报酬的情况
        @mission[4][1][0] == nil ? @height += 1 : @height += @mission[4][1][0].size
        @mission[4][1][1] == nil ? @height += 1 : @height += @mission[4][1][1].size
        @mission[4][1][2] == nil ? @height += 1 : @height += @mission[4][1][2].size
      end
      
      if listKind == 1
        item == "无" ? @height += 1 : @height += item.size
        weapon == "无" ? @height += 1 : @height += weapon.size
        armor == "无" ? @height += 1 : @height += armor.size
      end
      if listKind == 2

      end
      
      reward_des == "" ? @height += 1 : @height += reward_des.getLines(40)

      # 设置滚动字幕
      if listKind == 0
        @text = Sprite.new
        @text.bitmap = Bitmap.new(640,32)
        @text.bitmap.draw_text(0,0,640,32,TEXT2,0)
        @text.x,@text.y,@text.ox,@text.oy = 650,0,0,0
      end
        
      # 计算滚动条
      barHeight = 100
      @rate = 2
      #@rate = ((@height * 32) / barHeight).to_f
      #if @rate >= 1
      #  barHeight = (barHeight/@rate).to_f
      #end
      bitmapBar = Bitmap.new(12,barHeight)
      bitmapBar.fill_rect(0,0,bitmapBar.width,bitmapBar.height,getColor(0))
      @bar = Sprite.new
      @bar.bitmap = bitmapBar
      @bar.x,@bar.y,@bar.z,@bar.ox,@bar.oy = 490,112,self.z+2,0,0
      
      # 设置显示内容矩形
      bitmap = Bitmap.new(500-32,@height*32)
      
      @sprite = Sprite.new(@viewport)
      @sprite.x,@sprite.y,@sprite.ox,@sprite.oy = 40,0,0,0
      @sprite.bitmap = bitmap
      
      @sprite.bitmap.font.color = getColor(1)
      @sprite.bitmap.draw_text(0,0,468,32,TEXT[0],0)
      @sprite.bitmap.font.color = getColor(0)
      @sprite.bitmap.draw_text(0,32,468,32,level.rStar,0)
      @sprite.bitmap.font.color = getColor(1)
      @sprite.bitmap.draw_text(0,32*2,468,32,TEXT[1],0)
      @sprite.bitmap.font.color = getColor(0)
      # 完成事件的情况
      if kind == 0
        @sprite.bitmap.auto_line_draw_text(0,32*3,"无",40,32,0)
        if condition.getLines(40) == 0
          next_line = 32*4
        else  
          next_line = 32*(3+condition.getLines(40))
        end
      end  
      
      # 取得物品的情况
      if kind == 1
        tem01 = 0
        pos = 0
        if condition[0] != nil
          condition[0].each do |id,number|
            pos = condition[0].index([id,number])
            name = $data_items[id].name
            icon_name = $data_items[id].icon_name
            
            # blt(x, y, src_bitmap, src_rect[, opacity])
            bt = RPG::Cache.icon(icon_name)
            rect1 = Rect.new(0,32*3+pos*32,24,24)
            rect2 = Rect.new(0,0,bt.width,bt.height)
            @sprite.bitmap.stretch_blt(rect1,bt,rect2)
            
            @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
            case listKind
            when 0,2
              @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
            when 1
              now_items = $game_party.instance_variable_get :@items
              now_number = (now_items[id].nil? ? 0 : now_items[id])
              @sprite.bitmap.draw_text(250,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
            when 2
            end
            
          end  
          tem01 += condition[0].size
        end  
        if condition[1] != nil
          condition[1].each do |id,number|
            pos = condition[1].index([id,number]) + tem01
            name = $data_weapons[id].name
            icon_name = $data_weapons[id].icon_name
            
            bt = RPG::Cache.icon(icon_name)
            rect1 = Rect.new(0,32*3+pos*32,24,24)
            rect2 = Rect.new(0,0,bt.width,bt.height)
            @sprite.bitmap.stretch_blt(rect1,bt,rect2)
            
            case listKind
            when 0,2
              @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
              @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
            when 1
              now_weapons = $game_party.instance_variable_get :@weapons
              now_number = (now_weapons[id].nil? ? 0 : now_weapons[id])
              @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
            when 2
            end

          end  
          tem01 += condition[1].size
        end  
        if condition[2] != nil
          p condition[2]
          condition[2].each do |id,number|
            pos = condition[2].index([id,number]) + tem01
            name = $data_armors[id].name
            icon_name = $data_armors[id].icon_name
            
            bt = RPG::Cache.icon(icon_name)
            rect1 = Rect.new(0,32*3+pos*32,24,24)
            rect2 = Rect.new(0,0,bt.width,bt.height)
            @sprite.bitmap.stretch_blt(rect1,bt,rect2)

            
           case listKind
            when 0,2
              @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
              @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
            when 1
              now_armors = $game_party.instance_variable_get :@armors
              now_number = (now_armors[id].nil? ? 0 : now_armors[id])
              @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
            when 2
            end
          end  
          tem01 += condition[2].size
        end  
          next_line = 32*(3+tem01)
      end
        
      # 杀敌的情况
      if kind == 2
        pos01 = 0
        condition.sort.each do |id,number|
          pos01 = condition.sort.index([id,number])
          name = $data_enemies[id].name
          @sprite.bitmap.draw_text(0,32*3+pos01*32,400,32,name,0)
         case listKind
          when 0,2
            @sprite.bitmap.draw_text(300,32*3+pos01*32,100,32,"x"+number.to_s,0)
          when 1
            if $game_system.missionEnemyIds[@name][id] == nil
              now_number = 0
            else
              now_number = $game_system.missionEnemyIds[@name][id]
            end
            @sprite.bitmap.draw_text(300,32*3+pos01*32,100,32,now_number.to_s+"/"+number.to_s,0)
          end  
        end  
        next_line = 32*(3+condition.sort.size)
      end  
      @sprite.bitmap.font.color = getColor(1)
      @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[2],0)
      
      @sprite.bitmap.font.color = getColor(0)
      @sprite.bitmap.auto_line_draw_text(0,next_line+32,description,40,32,0)
      
      if description.getLines(40) == 0
        next_line = next_line+32*2
      else  
        next_line = (next_line+32)+32*description.getLines(40)
      end
      
      @sprite.bitmap.font.color = getColor(1)
      @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[3],0)
      
      # 分割线
      @sprite.bitmap.fill_rect(0,next_line+48,250,1,getColor(0))
      @sprite.bitmap.font.color = getColor(0)
      
      @sprite.bitmap.draw_text(0,next_line+32*2,400,32,"[金钱]",0)
      @sprite.bitmap.draw_text(0,next_line+32*3,150,32,money.to_s+"G",0)
      
      @sprite.bitmap.draw_text(0,next_line+32*4,400,32,"[道具]",0)
      next_line = next_line+32*5
      
      
      tem02 = 0
      if item == "无"
        @sprite.bitmap.draw_text(0,next_line,400,32,item,0)
        tem02 += 1
      else
        item.each do |id,number|
          name = $data_items[id].name
          pos02 = item.index([id,number])
          icon_name = $data_items[id].icon_name
            
          bt = RPG::Cache.icon(icon_name)
          rect1 = Rect.new(0,next_line+pos02*32,24,24)
          rect2 = Rect.new(0,0,bt.width,bt.height)
          @sprite.bitmap.stretch_blt(rect1,bt,rect2)

          @sprite.bitmap.draw_text(64,next_line+pos02*32,400,32,name,0)
          @sprite.bitmap.draw_text(300,next_line+pos02*32,100,32,"x"+number.to_s,0)
        end  
        tem02 += item.size
      end  
      next_line += tem02*32
      
      @sprite.bitmap.draw_text(0,next_line,400,32,"[武器]",0)
      next_line += 32
      
      tem03 = 0
      if weapon == "无"
        @sprite.bitmap.draw_text(0,next_line,400,32,weapon,0)
        tem03 += 1
      else
        weapon.each do |id,number|
          name = $data_weapons[id].name
          pos03 = weapon.index([id,number])
          icon_name = $data_weapons[id].icon_name
            
          bt = RPG::Cache.icon(icon_name)
          rect1 = Rect.new(0,next_line+pos03*32,24,24)
          rect2 = Rect.new(0,0,bt.width,bt.height)
          @sprite.bitmap.stretch_blt(rect1,bt,rect2)

          @sprite.bitmap.draw_text(64,next_line+pos03*32,400,32,name,0)
          @sprite.bitmap.draw_text(300,next_line+pos03*32,100,32,"x"+number.to_s,0)
        end  
        tem03 += weapon.size
      end
      next_line += tem03*32
      
      @sprite.bitmap.draw_text(0,next_line,400,32,"[防具]",0)
      next_line += 32
      
      tem04 = 0
      if armor == "无"
        @sprite.bitmap.draw_text(0,next_line,400,32,armor,0)
        tem04 += 1
      else
        armor.each do |id,number|
          name = $data_armors[id].name
          pos04 = armor.index([id,number])
          icon_name = $data_armors[id].icon_name
         
          bt = RPG::Cache.icon(icon_name)
          rect1 = Rect.new(0,next_line+pos04*32,24,24)
          rect2 = Rect.new(0,0,bt.width,bt.height)
          @sprite.bitmap.stretch_blt(rect1,bt,rect2)
         
          @sprite.bitmap.draw_text(64,next_line+pos04*32,400,32,name,0)
          @sprite.bitmap.draw_text(300,next_line+pos04*32,100,32,"x"+number.to_s,0)
        end  
        tem04 += armor.size
      end
      next_line += tem04*32
      
      @sprite.bitmap.font.color = getColor(1)
      @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[4],0)
      @sprite.bitmap.font.color = getColor(0)
      next_line += 32
      
      @sprite.bitmap.auto_line_draw_text(0,next_line,reward_des,40,32,0)


  end  

end   
#-----------------------------------------------------------------------------
# 场景部分
#-----------------------------------------------------------------------------
class SceneMission
  attr_accessor     :message
  attr_accessor     :reward_list
  def main
    # 外部接口
    @message = ""
    @reward_list = {}
    @spriteset = Spriteset_Map.new
    @main_window = WindowMissionMain.new
    @main_window.active = true
    @can_accept = WindowCanAcceptList.new
    @can_accept.active = false
    @accepted = WindowAccetpedList.new
    @accepted.active = false
    @finished = WindowFinishList.new
    @finished.active = false
    @window_des = WindowMissionDes.new
    @window_des.active = false
    @result = Window_Help.new
    @result.active = false
    @result.visible = false
    @result.x,@result.y,@result.z = 0,200,@window_des.z+100
    # @yes_or_no = WindowYesOrNo.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @main_window.dispose
    @can_accept.dispose
    @accepted.dispose
    @finished.dispose
    @window_des.dispose
    @result.dispose
    @spriteset.dispose
  end
  
  def update
    return update_main if @main_window.active
    return update_can_accept if @can_accept.active
    return update_accepted if @accepted.active
    return update_finished if @finished.active
    return update_window_des if @window_des.active
    return update_result if @result.active
  end  
  def update_main
    @main_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end  
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @main_window.visible = false
      @main_window.active = false
      case @main_window.index
      when 0 # 接受
        #$scene = Scene_Questdiary.new
        @can_accept.active = true
        @can_accept.visible = true
        @can_accept.refresh(*MissionList.canMissionList)
        @can_accept.index = 0
        return
      when 1 # 提交
        @accepted.active = true
        @accepted.visible = true
        @accepted.refresh(*$game_system.missionNameSort)
        @accepted.index = 0
        return
      when 2 # 查看
        @accepted.active = true
        @accepted.visible = true
        @accepted.refresh(*$game_system.missionNameSort)
        @accepted.index = 0
        return
      when 3 # 完成
        @finished.active = true
        @finished.visible = true
        @finished.refresh(*$game_system.finishNameSort)
        @finished.index = 0
        return
      end
    end
  end
  def update_can_accept
    @can_accept.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @can_accept.active = false
      @can_accept.visible = false
      
      @main_window.visible = true
      @main_window.active = true
      # @main_window.index = 0
      return
    end  
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      name = MissionList.canMissionList[@can_accept.index]

      return if $game_system.missions[name] != nil
      
      @can_accept.active = false
      @can_accept.visible = false
      
      @window_des.visible = true
      @window_des.refresh(MissionList.canMissionList[@can_accept.index],0)
      @window_des.active = true
      return
    end
  end  

  # 接受了的列表
  def update_accepted
    @accepted.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @accepted.active = false
      @accepted.visible = false
      
      @main_window.visible = true
      @main_window.active = true
      # @main_window.index = 0
    end  
   
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      
      case @main_window.index
      when 1 #提交 检索任务
        return if $game_system.missionNameSort[@accepted.index].nil?
        Mission.checkMission($game_system.missionNameSort[@accepted.index])
        @accepted.active = false
        @result.set_text(@message,1)
        @result.active = true
        @result.visible = true
        
      when 2
        if $game_system.missionNameSort[@accepted.index].nil?
          return
        end  
        @accepted.active = false
        @accepted.visible = false
        
        @window_des.active = true
        @window_des.visible = true
        
        @window_des.refresh($game_system.missionNameSort[@accepted.index],1)
      when 3
      end
    end
  end  
  
  # 完成了的列表
  def update_finished
    @finished.update
    if Input.trigger?(Input::C)
      return if $game_system.finishNameSort[@finished.index].nil?
      $game_system.se_play($data_system.decision_se)

      @finished.active = false
      @finished.visible = false
        
      @window_des.active = true
      @window_des.visible = true
        
      @window_des.refresh($game_system.finishNameSort[@finished.index],2)
      return
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @finished.active = false
      @finished.visible = false
      
      @main_window.visible = true
      @main_window.active = true
      # @main_window.index = 0
      return
    end
  end
  

  def update_window_des
    @window_des.update
    if Input.trigger?(Input::C)
      case @main_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        @window_des.active = false
        @result.active = true
        name = MissionList.canMissionList[@can_accept.index]
       # MissionList.Start(name)
        @result.set_text("该任务请联系相关NPC" + name,1)
      when 1 # 提交任务
      when 2 # 查看任务
      when 3 # 完成列表
      end
      return
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @window_des.visible = false
      @window_des.active = false
      @window_des.nVisible
      case @main_window.index
      # 接受
      when 0
        @can_accept.active = true
        @can_accept.visible = true
        return
      # 提交  
      when 2
        @accepted.active = true
        @accepted.visible = true
        return
      when 3
        @finished.active = true
        @finished.visible = true
      end  
    end
  end  

  def update_result
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      
      @result.active = false
      @result.visible = false
      
      @window_des.visible = false
      @window_des.nVisible
      @can_accept.visible = false
      @accepted.visible = false
      @finished.visible = false
      
      @main_window.visible = true
      @main_window.active = true
      @main_window.index = 0
      
      return
    end  
    @result.update
  end

end

#-----------------------------------------------------------------------------
# 结束
#-----------------------------------------------------------------------------

[/pre]
梦石
0
星屑
6295
在线时间
799 小时
注册时间
2019-1-20
回帖
223
发表于 2023-11-6 21:08:03 | 显示全部楼层
改了,看说明后半部分
  1. #---------------------------------------------------------------------------
  2. # 仿网游多任务系统v0.1 by秀秀
  3. #---------------------------------------------------------------------------
  4. =begin
  5.    
  6.   作者:秀秀

  7.   版本:v1.0
  8.   
  9.   [使用方法]
  10.   
  11.     在脚本开始的地方的设置常量Missions

  12.     设置好之后 调用 $scene = SceneMission.new 即可
  13.    
  14.   [Mission数据结构]  
  15.   
  16.     Mission 是一个用来存放任务的数组
  17.    
  18.     格式: Mission[任务1,任务2,任务3,任务n], 可无限设置

  19.     而Mission数组里的每个元素 又是一个数组 大小为固定size = 5
  20.    
  21.     分别为: 1.任务名称 (字符串)
  22.          
  23.             2.任务等级 (整数)
  24.             
  25.             3.任务类型和条件(数组)
  26.             
  27.                第一个元素为类型
  28.                
  29.                类型: 0 为触发式
  30.                      1 为持有物品
  31.                      2 为杀敌数一定
  32.                
  33.                第二个元素为条件
  34.                    当第一个元素为0时候
  35.                      设置为字符串(即开关名)
  36.                    当第二个元素为1时候
  37.                      设置为 hash(即某物品或者武器和数量
  38.                                  键为类型,0:物品,1:武器,2:防具)
  39.                      如{0=>[[1,3],[2,4]],1=>[[5,10]],2=>[10,12]}
  40.                      表示 物品id为1 数量3
  41.                           物品id为2 数量为4
  42.                           武器id为5,数量为10
  43.                           防具id为10,数量为12
  44.                    当第二个元素为1时候(即杀敌数量)
  45.                      设置为 hash(敌人id和数量)
  46.                      如{14=>5,6=>12,7=>8}
  47.                      表示需要干掉
  48.                         id为14敌人5次
  49.                         id为6的敌人12次
  50.                         id为7的敌人8次
  51.                         
  52.             4.任务描述(字符串)
  53.             
  54.             5.报酬(数组)
  55.               
  56.               第一个元素为金钱(整数)
  57.             
  58.               第二个元素为物品,武器,防具
  59.                 设置为 hash(即某物品或者武器和数量
  60.                             键为类型,0:物品,1:武器,2:防具)
  61.                 如:{0=>[[1,10],[2,6]],1=>[[6,8]]}
  62.                    表示 物品id为1 数量10
  63.                         物品id为2 数量为6
  64.                         武器id为6,数量为8
  65.                           
  66.             6.其他描述(字符串)
  67.                如:如此任务达成 我会帮你打开XX门
  68.                配合事件里插入脚本
  69.                $game_system.finishNameSort.include?(name)
  70.                name是任务名称
  71.                可以检测是否已经完成改任务 来判断是否打开XX门
  72.     [其他功能]
  73.            接受一个任务
  74.              MissionList.Start(name)
  75.            判断一个任务是否执行中
  76.              Mission.mission_run?(name)
  77.            提交一个任务  
  78.              Mission.checkMission(name)
  79.            判断某个任务是否完成
  80.              $game_system.finishNameSort.include?(name)
  81.             
  82.            还有一些功能就不单独描述了 具体看脚本核心部分
  83.               
  84.            


  85. 原脚本需要注意的地方?
  86. 接受主线任务时,脚本默认不会自动使用 MissionList.Start(name)
  87. 这样是无法 开始/提交任务 的,需要手动在适当位置/npc添加
  88. 单次任务单次报酬 需要1个药品时不会因为有20个而取得20次报酬

  89. 不能设置同名任务
  90. 不能设置完全相同的任务
  91. 放弃任务 不等于删除 主线任务

  92. abc的写法是仿照Missions[0]
  93. Mission::addMissionHouse(a,b,c ...) #多个任务时 不要写成 ( [a,b,c...] )
  94. Mission::deleteMissionHouse(a) #一个任务时
  95. Mission::stopMission(*name)
  96. ######################################################
  97. 20231106--srwjrevenger
  98. ### *1 ← 2处更改的地方
  99. 使完成的名字带“*”的任务不会再出现,
  100. 即使使用 接受任务MissionList.Start(name) 也会自动删除

  101. ### *2 ← 1处更改的地方
  102. 修正多个任务同时提交时,最后一个领取报酬后,
  103. 提交/查看任务 会残留信息,需要完全退出界面的问题  
  104. =end

  105. #-----------------------------------------------------------------------------
  106. # 设置任务部分
  107. #------------------------------------------------------------------------------
  108. module MissionList
  109.   Missions = [
  110.   #任务1
  111.     ["寻找内裤",1,
  112.     [0,"寻找内裤"],"找到隐藏的内裤",[100,
  113.     {0=>[[1,10],[2,6]],1=>[[6,8]]}],"可能就在附近,仔细找找吧"],
  114.   #   ======================================================
  115.     ["对话",1,
  116.     [0,"对话01"],"去找阿尔西斯对话",[100,
  117.     {0=>[[1,5]],}],"可能就在附近,仔细找找吧"+"这信息是刷屏幕,主要测试自动换行功能"*10],

  118. ["*X1",1,
  119. [1,{1=>[[1,1]] } ],"找到隐藏的X1",[100,
  120. {0=>[[10,10],[ 11,10] ] }],"可能就在附近,仔细找找吧"],

  121. ["X2",1,
  122. [1,{1=>[[2,1]] } ],"找到隐藏的X2",[100,
  123. {0=>[[10,10],[ 11,10] ] }],"可能就在附近,仔细找找吧"],


  124.     #=============================杀敌任务范例===================================  
  125.       #任务名称    任务星级  (0触发,1持物,2杀敌) 敌人ID  杀敌数
  126.     ["测试杀敌任务",   1    ,[          2          ,{  3  =>   5    }],
  127.       #任务描述   金钱 (0物品,1武器,2防具)  道具ID  数量   任务说明
  128.     "干掉5个幽灵",[0,           {1=>            [[3,     5]]}],"哈哈哈"],
  129.   #============================================================================  
  130.   #============================================================================  
  131.       #任务名称  任务星级  (0触发,1持物,2杀敌) (0:物品,1:武器,2:防具)  ID   数量
  132.     ["寻找密斯里",  2,   [            1,                    {1=>           [[4,   1]]}],
  133.     #任务描述     
  134.      "也许在地图的某个角落",
  135.   # 金钱 (0物品,1武器,2防具)  ID  数量   (0物品,1武器,2防具)  道具ID  数量         
  136.      [0,            {1=>         [[1,  1]],             2=>            [[1,     1]]}],
  137.      #说明
  138.      "也许在地图的某个角落"],   
  139.   #====================================================================================   
  140.     ["寻找圣剑材料",10,
  141.     [1,{0=>[[32,5],[33,8],[34,11]]}],
  142.     "寻找圣剑所需的三个材料,圣剑材料1,圣剑材料2,圣剑材料3",
  143.     [0,{1=>[[33,1]]}],"找到这些可以做圣剑"],   
  144.     ]  
  145.   module_function  
  146.   def self.Start(name)
  147.     Missions.each do |mission|
  148. next if mission[0].include?("*") && $game_system.finishNameSort.include?(mission[0]) ### *1
  149.       Mission.startMission(*mission) if mission[0] == name
  150.     end
  151.   end  

  152.   def canMissionList
  153.     if Missions.empty? or Missions.nil?
  154.       raise "任务没有设置好,请检查"
  155.     end  
  156.     temp = []
  157.     Missions.each do |mission|
  158.       # if $game_system.missions[mission[0]].nil?
  159.         #添加到任务列表 并设置不需要在列表里的任务
  160. next if mission[0].include?("*") && $game_system.finishNameSort.include?(mission[0]) ### *1         
  161.         temp << mission[0] if mission[0] != "寻找圣剑材料"
  162.       # end
  163.     end  
  164.     return temp
  165.   end  
  166. end  
  167. #------------------------------------------------------------------------------
  168. # 内部类定义部分
  169. #------------------------------------------------------------------------------
  170. class Hash < Object
  171.   def soft
  172.     @temp = []
  173.     self.each_pair{|key, value| @temp << [key,value] }
  174.     return @temp
  175.   end  
  176. end  

  177. class Integer
  178.   def rStar
  179.     return "★"*self
  180.   end
  181. end  

  182. class Bitmap
  183.   def auto_line_draw_text(x,y,text,limit,height,align)
  184.     lines = text.getLines(limit)
  185.     @limit = limit
  186.     @n = 0
  187.     for i in 0...lines
  188.       @t1 = []
  189.       if lines == 1
  190.         @t1 << text
  191.       end  
  192.       if lines > 1
  193.         @t= text.split(//)
  194.         while @t1.join.size < @limit
  195.           break if @t[@n].nil?
  196.           @t1.push(@t[@n])
  197.           @n += 1
  198.         end
  199.       end  
  200.       draw_text(x,y+i*height,500,height,@t1.join,align)
  201.     end
  202.   end  
  203. end  

  204. class String
  205.   def getLines(limit)
  206.     lines = (self.length/limit).to_i
  207.     lines += 1 if self.length%limit != 0
  208.     return lines
  209.   end  
  210. end  

  211. #------------------------------------------------------------------------------
  212. # 系统重定义部分
  213. #------------------------------------------------------------------------------
  214. class Game_Battler
  215.   def dead?
  216.     if (@hp == 0 and not @immortal)
  217.      @temp_a = 0 if @temp_a == nil
  218.      if self.is_a?(Game_Enemy) and @temp_a == 0
  219.        id = self.instance_variable_get :@enemy_id
  220.        now_mission = $game_system.missionEnemyIds  #[name][id]
  221.        goal_mission = $game_system.missions        # [name].kind[1][id]
  222.        # 检索是否存在于列表中
  223.        $game_system.missionEnemyIds.keys.each do |name|
  224.          # return true if $game_system.missionEnemyIds[name] == nil
  225.          if now_mission[name][id] != nil and goal_mission[name] != nil and
  226.             now_mission[name][id] < goal_mission[name].kind[1][id]
  227.             # $game_system.missions[name].stutas == 0
  228.             $game_system.missionEnemyIds[name][id] += 1
  229.             break
  230.          end  
  231.        end
  232.        @temp_a = 1
  233.      end
  234.      return true
  235.     end
  236.   end
  237. end

  238. class Game_System
  239.   attr_accessor  :missions
  240.   #attr_accessor  :finishMissionTimes
  241.   attr_accessor  :finishMissionList
  242.   attr_accessor  :missionSwitch  
  243.   attr_accessor  :missionEnemyIds
  244.   attr_accessor  :missionNameSort
  245.   attr_accessor  :finishNameSort
  246.   alias ori_initialize initialize
  247.   def initialize
  248.     ori_initialize
  249.     @missions = {}
  250.     #@finishMissionTimes = {}
  251.     @finishMissionList = {}
  252.     @missionSwitch = {}
  253.     @missionEnemyIds = {}
  254.     @missionNameSort = []
  255.     @finishNameSort = []
  256.     @missionHouseList = []
  257.   end  
  258. end  

  259. class GetMission
  260.   attr_reader    :level
  261.   attr_reader    :kind
  262.   attr_reader    :description
  263.   attr_reader    :money
  264.   attr_reader    :items
  265.   attr_reader    :reswards_des
  266.   # attr_accessor  :stutas
  267.   def initialize(level,kind,description,rewards,rewards_des)
  268.     @level = level
  269.     @kind = kind
  270.     @description = description
  271.     @money = rewards[0]
  272.     @items = rewards[1]
  273.     @reswards_des = rewards_des
  274.   end
  275. end  

  276. class FinishMission < GetMission
  277.   attr_accessor   :times
  278.   def initialize(times,*args)
  279.     new_args = [args[0],args[1],args[2],[args[3],args[4]],args[5]]
  280.     super(*new_args)
  281.     @times = times
  282.   end  
  283. end  

  284. #----------------------------------------------------------------------------
  285. # 任务核心部分
  286. #----------------------------------------------------------------------------
  287. module Mission
  288.   module_function
  289.   def startMission(name,level,kind,description,rewards,rewards_des)
  290.     unless $game_system.missions.has_key?(name)
  291.       # 检查参数合法性
  292.       self.getError(name,level,kind,description,rewards,rewards_des)
  293.       $game_system.missions[name] = GetMission.new(
  294.          level,kind,description,rewards,rewards_des)
  295.       $game_system.missionNameSort << name unless $game_system.missionNameSort.include?(name)  
  296.       case kind[0]
  297.       when 0
  298.       # 设置开关初始状态
  299.       $game_system.missionSwitch[kind[1]] = false
  300.       when 1
  301.       # 开启了一个获得物品的任务
  302.       when 2  
  303.       # 开启了一个杀敌数的任务并设置列表
  304.       # {name1=>{id1=number,id2=number},name2={id1=number,id2=number}}
  305.       $game_system.missionEnemyIds[name] = {}
  306.       enemies = kind[1].sort
  307.       enemies.each{|id| $game_system.missionEnemyIds[name][id[0]] = 0}
  308.       end
  309.     end
  310.     return
  311.   end

  312.   # 开启一个组合任务
  313.   #(- -,好像没必要了 可以直接接受2个或者多个无报酬任务
  314.   # 全部完成后再给报酬)
  315.   def startComboMission;end  

  316.   def getError(name,level,kind,description,rewards,rewards_des)
  317.     raise sprintf("任务:%s的参数 level 不是一个 Integer",name) unless level.kind_of?(Integer)
  318.     raise sprintf("任务:%s的参数 kind[0] 不是一个 Integer",name) unless kind[0].kind_of?(Integer)
  319.     case kind[0]
  320.       when 0
  321.       raise sprintf("任务:%s的参数 kind[1] 不是一个 String",name) unless kind[1].kind_of?(String)
  322.       when 1..2
  323.       unless (kind[1].kind_of?(Hash))
  324.         raise sprintf("任务:%s的参数 kind[1] 不是一个 Hash",name)
  325.       end   
  326.     end
  327.     raise sprintf("任务:%s的参数 description 不是一个 String",name) unless description.kind_of?(String)
  328.     raise sprintf("任务:%s的参数 rewards[0] 不是一个 Integer",name) unless rewards[0].kind_of?(Integer)
  329.     raise sprintf("任务:%s的参数 rewards[1] 不是一个 Hash",name) unless rewards[1].kind_of?(Hash)
  330.     raise sprintf("任务:%s的参数 rewards_des 不是一个 String",name) unless rewards_des.kind_of?(String)
  331.   end  

  332.   # 接受一个或多个任务添加到任务所
  333.   def addMissionHouse(*missions)
  334.     missions.each{|a|$game_system.missionHouseList << a}
  335.   end

  336.   # 任务所删除一个或多个任务
  337.   def deleteMissionHouse(*missions)
  338.     missions.each{|a|$game_system.missionHouseList.delete(a)}
  339.   end

  340.   # 放弃任务 可多个  
  341.   def stopMission(*name)
  342.     name.each do |aname|
  343.       $game_system.missions.delete(aname) if $game_system.missions.include?(aname)
  344.     end
  345.   end

  346.   # 检索任务
  347.   def checkMission(name)
  348.     # 检索是否已接了任务
  349.     if $game_system.missions[name] != nil
  350.       kind = $game_system.missions[name].kind
  351.     else
  352.       return self.missionReslut(2,name,self.message(4)){|msg|self.putsMessage(msg);return}
  353.     end  

  354.     # 类型
  355.     case kind[0]
  356.     # 条件触发式
  357.     when 0
  358.       switch_name = $game_system.missions[name].kind[1]
  359.       if $game_system.missionSwitch[switch_name] == true
  360.         $game_system.missionSwitch.delete(name)
  361.         # 返回成功结果
  362.         return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
  363.       else
  364.         # 返回未完成结果
  365.         self.missionReslut(1,name,self.message(1)){|msg|self.putsMessage(msg);return}
  366.       end  
  367.     # 持有物品
  368.     when 1
  369.       # 转化为 item格式的数组
  370.       # 如 [[1,10],[5,15]] 道具1数量10 道具5数量15
  371.         items = kind[1].select{|akind,array| akind == 0}[0][1] if kind[1][0] != nil
  372.         weapons = kind[1].select{|bkind,array| bkind == 1}[0][1] if kind[1][1] != nil
  373.         armors = kind[1].select{|ckind,array| ckind == 2}[0][1] if kind[1][2] != nil
  374.       unless items.nil?
  375.         unless self.check(name,0,items)
  376.           # 道具数量不合格
  377.           return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
  378.         end  
  379.       end
  380.       unless weapons.nil?
  381.         unless self.check(name,1,weapons)
  382.           # 武器数量不合格
  383.           return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
  384.         end
  385.       end
  386.       unless armors.nil?
  387.         unless self.check(name,2,armors)
  388.           # 防具数量不合格
  389.           return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
  390.         end
  391.       end
  392.       # 返回成功结果
  393.       return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
  394.     # 杀敌数一定  
  395.     when 2  
  396.       enemies = kind[1].soft
  397.       enemies.each do |id,number|  
  398.         if $game_system.missionEnemyIds[name][id] < number
  399.           return self.missionReslut(1,name,self.message(3)){|msg|self.putsMessage(msg);return}
  400.         end  
  401.       end
  402.       # 清空敌人id列表
  403.       $game_system.missionEnemyIds.delete(name)
  404.       # 返回成功结果
  405.       return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
  406.     end  

  407.   end  

  408.   def message(kind)
  409.     if kind == 0
  410.       return "恭喜你任务完成,请查收奖品"
  411.     elsif kind == 1
  412.       return "似乎还未达到要求"
  413.     elsif kind == 2
  414.       return "请检查是否获得了任务所需物品和数量"
  415.     elsif kind == 3
  416.       return "任务所需杀敌数还不够"
  417.     elsif kind == 4
  418.       return "未开启的任务类型"
  419.     else
  420.       return
  421.     end  
  422.   end  

  423.   def putsMessage(msg)
  424.     if $scene.is_a?(SceneMission)
  425.       $scene.message = msg
  426.     end
  427.     return
  428.   end  

  429.   def check(name,kind,*args)
  430.     if kind == 0
  431.       # 任务所需物品array
  432.       items = args
  433.       # 获取现在物品
  434.       now_items = $game_party.instance_variable_get :@items
  435.       # 检查是否包含物品
  436.       ids01 = []
  437.       items[0].each{|item| ids01 << item[0]}
  438.       now_ids = now_items.keys
  439.       unless now_ids|ids01 == now_ids
  440.         return false
  441.       end
  442.       # 检查数量是否合格
  443.       items[0].each do |item|
  444.        return false if now_items[item[0]] < item[1]
  445.       end  
  446.     elsif kind == 1  
  447.       # 任务所需武器array
  448.       weapons = args
  449.       # 获取现在物品
  450.       now_weapons = $game_party.instance_variable_get :@weapons
  451.       # 检查是否包含物品
  452.       ids02 = []
  453.       weapons[0].each{|weapon| ids02 << weapon[0]}
  454.       now_ids = now_weapons.keys
  455.       unless now_ids|ids02 == now_ids
  456.         return false
  457.       end
  458.       # 检查数量是否合格
  459.       weapons[0].each do |weapon|
  460.        return false if now_weapons[weapon[0]] < weapon[1]
  461.       end  
  462.     elsif kind == 2
  463.       # 任务所需物品array
  464.       armors = args
  465.       # 获取现在物品
  466.       now_armors = $game_party.instance_variable_get :@armors
  467.       # 检查是否包含物品
  468.       ids03 = []
  469.       armors[0].each{|armor| ids03 << armor[0][0]}
  470.       now_ids = now_armors.keys
  471.       unless now_ids|ids03 == now_ids
  472.         return false
  473.       end
  474.       # 检查数量是否合格
  475.       armors[0].each do |armor|
  476.        return false if now_armors[armor[0]] < armor[1]
  477.       end  
  478.     else

  479.     end  
  480.     # 检查通过
  481.     return true
  482.   end

  483.   #返回一种任务结果
  484.   def missionReslut(result,name,message)
  485.     case result
  486.     when 0
  487.       # 将任务转移到完成列表
  488.       self.missionMove(name)
  489.       # 获得报酬
  490.       self.getRewards(name)
  491.       # 清空任务
  492.       $game_system.missionNameSort.delete(name)
  493.       $game_system.missions.delete(name)
  494.       # 抛出任务成功信息
  495.       yield message
  496.     when 1
  497.       # 抛出未完成信息
  498.       yield message
  499.       #任务还未完成
  500.       return false
  501.     when 2  
  502.       # 抛出未完成信息
  503.       yield message
  504.       #无此任务
  505.       return false
  506.     end
  507.     return
  508.   end  

  509.   # 转移到任务完成列表
  510.   def missionMove(name)
  511.     @mission = $game_system.missions[name]
  512.     # 保存全部实例变量
  513.     @include = ["@level","@kind","@description","@money","@items","@reswards_des"]
  514.     @include_value = []
  515.     temp = []
  516.     @include.each do |a|
  517.       if a == "@monney"
  518.         temp << a
  519.         next
  520.       end
  521.       if a == "@tiems"
  522.         temp << a
  523.         a = temp
  524.       end  
  525.       @include_value.push @mission.instance_variable_get eval(":"+a)
  526.     end  

  527.     if $game_system.finishMissionList.include? name
  528.       # 任务名称=>完成次数
  529.       # 如果包含 完成次数+1
  530.       $game_system.finishMissionList[name].times += 1
  531.     else
  532.       # 如果不包含 建立一个完成任务的列表
  533.       $game_system.finishNameSort.push(name) unless $game_system.finishNameSort.include?(name)
  534.       $game_system.finishMissionList[name] = FinishMission.new(1,*@include_value)
  535.     end
  536.     return
  537.   end

  538.   # 获取报酬
  539.   def getRewards(name)
  540.      return if $game_system.missions[name] == nil
  541.      # [金钱,{种类1=>[[ID1,数量],[ID2,数量]],种类2=>[[ID1,数量],[ID2,数量]]}]
  542.      money = $game_system.missions[name].money
  543.      items = $game_system.missions[name].items
  544.      # 获取赏金
  545.      self.get_money(money) if money != 0
  546.      # 获得物品
  547.      if items[0] != nil
  548.        items[0].each{|id,number|
  549.        $game_party.send :gain_item,id,number
  550.        }
  551.      end  
  552.      # 获得武器
  553.      if items[1] != nil
  554.        items[1].each{|id,number|
  555.        $game_party.send :gain_weapon,id,number
  556.        }
  557.      end  
  558.      # 获得防具
  559.      if items[2] != nil
  560.        items[2].each{|id,number|
  561.        $game_party.send :gain_armor,id,number
  562.        }
  563.      end  
  564.      return
  565.   end  

  566.   def get_money(n)
  567.     $game_party.send :gain_gold,n
  568.   end  

  569.   # *mission 可接收多个任务名称作为参数
  570.   def mission_finished?(*missions)
  571.     # return $game_system.finishMissionList.keys | missions
  572.     missions.each do |mission|
  573.       return false unless $game_system.finishMissionList.has_key?(mission)
  574.     end  
  575.     return true
  576.   end

  577.   # 检查mission是否正在执行
  578.   def mission_run?(*missions)
  579.     #p missions
  580.     #p $game_system.missions
  581.     missions.each do |mission|
  582.       return false unless $game_system.missions.has_key?(mission)
  583.     end  
  584.     return true
  585.     # p $game_system.missions.keys | missions
  586.     # return $game_system.missions.keys | missions
  587.   end  

  588.   # 获取当前任务数量
  589.   def mission_counts
  590.     return $game_system.missions.length
  591.   end  

  592. end  

  593. #-----------------------------------------------------------------------------
  594. # 菜单部分
  595. #-----------------------------------------------------------------------------
  596. # 任务所主菜单
  597. class WindowMissionMain < Window_Selectable
  598.   def initialize
  599.     super(240,100,160,160)
  600.     self.contents = Bitmap.new(width - 32, height - 32)
  601.     @item_max = 4
  602.     @column_max = 1
  603.     self.opacity = 255
  604.     refresh
  605.     self.index = 0
  606.   end
  607.   #--------------------------------------------------------------------------
  608.   # ● 刷新
  609.   #--------------------------------------------------------------------------
  610.   def refresh
  611.     self.contents.clear
  612.     self.contents.draw_text(0,0,200,32,"主线任务",0)
  613.     self.contents.draw_text(0,32,200,32,"提交任务",0)
  614.     self.contents.draw_text(0,32*2,200,32,"查看任务",0)
  615.     self.contents.draw_text(0,32*3,200,32,"完成列表",0)
  616.   end
  617. end


  618. # 可接受任务的列表
  619. class WindowCanAcceptList < Window_Selectable
  620.   def initialize
  621.     super(70,60,500,360)
  622.     @width = width
  623.     @column_max = 1
  624.     self.opacity = 255
  625.     self.visible = false
  626.     self.index = 0
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ● 刷新
  630.   #--------------------------------------------------------------------------
  631.   def refresh(*list)
  632.     self.contents.clear if self.contents != nil
  633.     self.contents = Bitmap.new(@width - 32, list.size * 32+32)
  634.     @item_max = list.size
  635.     for i in list
  636.       MissionList::Missions.each do |mission|
  637.         if  mission[0] == i
  638.           @level = mission[1]
  639.           @name = i
  640.           break
  641.         end
  642.       end
  643.       pos = list.index(i)
  644.       if $game_system.missions[@name] != nil
  645.         self.contents.font.color = disabled_color
  646.       else
  647.         self.contents.font.color = normal_color
  648.       end
  649.       self.contents.draw_text(0,pos*32,200,32,i,0)
  650.       self.contents.draw_text(220,pos*32,200,32,@level.rStar,0)
  651.     end
  652.   end
  653. end



  654. # 任务中的列表
  655. class WindowAccetpedList < Window_Selectable
  656.   def initialize
  657.     super(70,60,500,360)
  658.     @width = width
  659.     @column_max = 1
  660.     self.opacity = 255
  661.     self.visible = false
  662.     self.index = 0
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ● 刷新
  666.   #--------------------------------------------------------------------------
  667.   def refresh(*list)
  668.     ### *2
  669.     if list.empty?
  670.     self.contents.clear if self.contents != nil
  671.     return  
  672.     end  
  673.     ### *2
  674.     return if list.empty?
  675.     self.contents.clear if self.contents != nil
  676.     self.contents = Bitmap.new(@width - 32, list.size * 32)
  677.     @item_max = list.size
  678.     for i in list
  679.       levels = $game_system.missions[i].level.rStar
  680.       pos = list.index(i)
  681.       self.contents.draw_text(0,pos*32,200,32,i,0)
  682.       self.contents.draw_text(220,pos*32,200,32,levels,0)
  683.     end
  684.   end
  685. end


  686. # 任务完成的列表
  687. class WindowFinishList < Window_Selectable
  688.   def initialize
  689.     super(70,60,500,360)
  690.     @width = width
  691.     @column_max = 1
  692.     self.visible = false
  693.     self.opacity = 255
  694.     self.index = 0
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● 刷新
  698.   #--------------------------------------------------------------------------
  699.   def refresh(*list)
  700.     return if list.empty?
  701.     self.contents.clear if self.contents != nil
  702.     self.contents = Bitmap.new(@width - 32,list.size * 32)
  703.     @item_max = list.size
  704.     for i in list
  705.       level = $game_system.finishMissionList[i].level.rStar
  706.       pos = list.index(i)
  707.       self.contents.draw_text(0,pos*32,200,32,i,0)
  708.       self.contents.draw_text(220,pos*32,200,32,level,0)
  709.     end
  710.   end
  711. end  


  712. # 任务描述窗口
  713. class WindowMissionDes < Window_Base
  714.   TEXT = ["[任务等级]","[任务条件]","[任务描述]","[任务报酬]","[其他]"]
  715.   TEXT2 = "接受任务请按确定键,返回上级菜单按取消键"
  716.   def initialize
  717.     super(70,40,500,400)
  718.     @viewport = Viewport.new(70,40+64,500,400-64)
  719.     @viewport.z = self.z + 1
  720.     self.visible = false
  721.     self.contents = Bitmap.new(width-32,64)
  722.   end

  723.   def update
  724.     super
  725.     if self.active
  726.       if @text != nil
  727.         @text.x > - 300 ? @text.x -= 2 : @text.x = 650
  728.       end  
  729.       case Input.dir4
  730.       when 2
  731.         move_block(0)
  732.         move_bar(1)
  733.       when 8
  734.         move_block(1)
  735.         move_bar(0)
  736.       end
  737.     end   
  738.   end  

  739.   def nVisible
  740.     if self.visible == true
  741.       @sprite.visible = true if @sprite != nil
  742.       @bar.visible = true if @bar != nil
  743.       #@text.visible = true if @text != nil
  744.     end
  745.     if self.visible == false
  746.       @sprite.visible = false if @sprite != nil
  747.       @bar.visible = false if @bar != nil
  748.       @text.visible = false if @text != nil
  749.     end  
  750.   end  

  751.   def dispose
  752.     super
  753.     @sprite.dispose if @sprite != nil
  754.     @bar.dispose if @bar != nil
  755.     @text.dispose if @text != nil
  756.   end  

  757.   def move_block(kind)
  758.     if kind == 0
  759.       @sprite.y -= 4
  760.     end
  761.     if kind == 1
  762.       @sprite.y += 4
  763.     end  
  764.   end

  765.   def move_bar(kind)
  766.     if kind == 0
  767.       @bar.y -= (4/@rate).to_f if @bar.y > 112
  768.     end
  769.     if kind == 1
  770.       @bar.y += (4/@rate).to_f if @bar.y < 400 - @bar.bitmap.height
  771.     end   
  772.   end  

  773.   def getColor(n)
  774.     if n == 0
  775.       return Color.new(255,255,255,255)
  776.     elsif n == 1
  777.       return Color.new(255,255,0,255)
  778.     elsif n == 2
  779.       return Color.new(255,0,0,255)
  780.     elsif n == 3
  781.       return Color.new(128,128,128,255)
  782.     else

  783.     end
  784.   end  

  785.   def refresh(name,listKind)
  786.     raise "listKind参数设置不正确" unless [0,1,2].include? listKind
  787.     self.contents.clear
  788.     # bitmap.clear if bitmap != nil
  789.     @sprite.dispose if @sprite != nil
  790.     @bar.dispose if @bar != nil
  791.     @name = name
  792.     # 可接受列表
  793.     if listKind == 0   
  794.       MissionList::Missions.each do |mission|
  795.         if mission[0] == @name
  796.           @mission = mission
  797.           break
  798.         end  
  799.       end  

  800.       #mission_name                        = @mission[0]
  801.       level                               = @mission[1]
  802.       kind                                = @mission[2][0]
  803.       condition                           = @mission[2][1]
  804.       description                         = @mission[3]
  805.       money                               = @mission[4][0]
  806.       @mission[4][1][0] != nil ? item     = @mission[4][1][0] : item = "无"
  807.       @mission[4][1][1] != nil ? weapon   = @mission[4][1][1] : weapon = "无"
  808.       @mission[4][1][2] != nil ? armor    = @mission[4][1][2] : armor = "无"
  809.       reward_des                          = @mission[5]
  810.     end


  811.     # 任务中列表
  812.     if listKind == 1
  813.       $game_system.missionNameSort.each do |mission|
  814.         if mission == @name
  815.           @mission = $game_system.missions[@name]
  816.           break
  817.         end  
  818.       end  

  819.       #mission_name                        = @mission.name
  820.       level                               = @mission.level
  821.       kind                                = @mission.kind[0]
  822.       condition                           = @mission.kind[1]
  823.       description                         = @mission.description
  824.       money                               = @mission.money
  825.       @mission.items[0] != nil ? item     = @mission.items[0] : item = "无"
  826.       @mission.items[1] != nil ? weapon   = @mission.items[1] : weapon = "无"
  827.       @mission.items[2] != nil ? armor    = @mission.items[2] : armor = "无"
  828.       reward_des                          = @mission.reswards_des
  829.     end  


  830.     # 完成列表
  831.     if listKind == 2
  832.       $game_system.finishNameSort.each do |mission|
  833.         if mission == @name
  834.           @mission = $game_system.finishMissionList[@name]
  835.           break
  836.         end  
  837.       end  
  838.       #mission_name                       = @mission.name
  839.       finish_times                        = @mission.times
  840.       level                               = @mission.level
  841.       kind                                = @mission.kind[0]
  842.       condition                           = @mission.kind[1]
  843.       description                         = @mission.description
  844.       money                               = @mission.money
  845.       @mission.items[0] != nil ? item     = @mission.items[0] : item = "无"
  846.       @mission.items[1] != nil ? weapon   = @mission.items[1] : weapon = "无"
  847.       @mission.items[2] != nil ? armor    = @mission.items[2] : armor = "无"
  848.       reward_des                          = @mission.reswards_des
  849.     end  

  850.       self.contents.font.color = getColor(2)
  851.       self.contents.draw_text(0,0,450-32,32,"【"+name+"】",1)
  852.       if listKind == 2
  853.         self.contents.font.color = getColor(1)
  854.         self.contents.draw_text(0,20,450-32,32,"任务完成:#{finish_times}",1)
  855.       end
  856.       self.contents.fill_rect(16,48,450,2,getColor(0))

  857.       # 开始计算Bitmap的height
  858.       @height = 11

  859.       case kind
  860.       when 0
  861.         # 40个字节一行计算
  862.         condition == "" ? @height += 1 : @height += condition.getLines(40)
  863.       when 1
  864.         @height += condition[0].size if condition[0] != nil
  865.         @height += condition[1].size if condition[1] != nil
  866.         @height += condition[2].size if condition[2] != nil
  867.       when 2
  868.         @height += condition.size
  869.       end  
  870.       description == "" ? @height += 1 : @height += description.getLines(40) + 1

  871.       if listKind == 0
  872.         # 计算若无报酬的情况
  873.         @mission[4][1][0] == nil ? @height += 1 : @height += @mission[4][1][0].size
  874.         @mission[4][1][1] == nil ? @height += 1 : @height += @mission[4][1][1].size
  875.         @mission[4][1][2] == nil ? @height += 1 : @height += @mission[4][1][2].size
  876.       end

  877.       if listKind == 1
  878.         item == "无" ? @height += 1 : @height += item.size
  879.         weapon == "无" ? @height += 1 : @height += weapon.size
  880.         armor == "无" ? @height += 1 : @height += armor.size
  881.       end
  882.       if listKind == 2

  883.       end

  884.       reward_des == "" ? @height += 1 : @height += reward_des.getLines(40)

  885.       # 设置滚动字幕
  886.       if listKind == 0
  887.         @text = Sprite.new
  888.         @text.bitmap = Bitmap.new(640,32)
  889.         @text.bitmap.draw_text(0,0,640,32,TEXT2,0)
  890.         @text.x,@text.y,@text.ox,@text.oy = 650,0,0,0
  891.       end

  892.       # 计算滚动条
  893.       barHeight = 100
  894.       @rate = 2
  895.       #@rate = ((@height * 32) / barHeight).to_f
  896.       #if @rate >= 1
  897.       #  barHeight = (barHeight/@rate).to_f
  898.       #end
  899.       bitmapBar = Bitmap.new(12,barHeight)
  900.       bitmapBar.fill_rect(0,0,bitmapBar.width,bitmapBar.height,getColor(0))
  901.       @bar = Sprite.new
  902.       @bar.bitmap = bitmapBar
  903.       @bar.x,@bar.y,@bar.z,@bar.ox,@bar.oy = 490,112,self.z+2,0,0

  904.       # 设置显示内容矩形
  905.       bitmap = Bitmap.new(500-32,@height*32)

  906.       @sprite = Sprite.new(@viewport)
  907.       @sprite.x,@sprite.y,@sprite.ox,@sprite.oy = 40,0,0,0
  908.       @sprite.bitmap = bitmap

  909.       @sprite.bitmap.font.color = getColor(1)
  910.       @sprite.bitmap.draw_text(0,0,468,32,TEXT[0],0)
  911.       @sprite.bitmap.font.color = getColor(0)
  912.       @sprite.bitmap.draw_text(0,32,468,32,level.rStar,0)
  913.       @sprite.bitmap.font.color = getColor(1)
  914.       @sprite.bitmap.draw_text(0,32*2,468,32,TEXT[1],0)
  915.       @sprite.bitmap.font.color = getColor(0)
  916.       # 完成事件的情况
  917.       if kind == 0
  918.         @sprite.bitmap.auto_line_draw_text(0,32*3,"无",40,32,0)
  919.         if condition.getLines(40) == 0
  920.           next_line = 32*4
  921.         else  
  922.           next_line = 32*(3+condition.getLines(40))
  923.         end
  924.       end  

  925.       # 取得物品的情况
  926.       if kind == 1
  927.         tem01 = 0
  928.         pos = 0
  929.         if condition[0] != nil
  930.           condition[0].each do |id,number|
  931.             pos = condition[0].index([id,number])
  932.             name = $data_items[id].name
  933.             icon_name = $data_items[id].icon_name

  934.             # blt(x, y, src_bitmap, src_rect[, opacity])
  935.             bt = RPG::Cache.icon(icon_name)
  936.             rect1 = Rect.new(0,32*3+pos*32,24,24)
  937.             rect2 = Rect.new(0,0,bt.width,bt.height)
  938.             @sprite.bitmap.stretch_blt(rect1,bt,rect2)

  939.             @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
  940.             case listKind
  941.             when 0,2
  942.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
  943.             when 1
  944.               now_items = $game_party.instance_variable_get :@items
  945.               now_number = (now_items[id].nil? ? 0 : now_items[id])
  946.               @sprite.bitmap.draw_text(250,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
  947.             when 2
  948.             end

  949.           end  
  950.           tem01 += condition[0].size
  951.         end  
  952.         if condition[1] != nil
  953.           condition[1].each do |id,number|
  954.             pos = condition[1].index([id,number]) + tem01
  955.             name = $data_weapons[id].name
  956.             icon_name = $data_weapons[id].icon_name

  957.             bt = RPG::Cache.icon(icon_name)
  958.             rect1 = Rect.new(0,32*3+pos*32,24,24)
  959.             rect2 = Rect.new(0,0,bt.width,bt.height)
  960.             @sprite.bitmap.stretch_blt(rect1,bt,rect2)

  961.             case listKind
  962.             when 0,2
  963.               @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
  964.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
  965.             when 1
  966.               now_weapons = $game_party.instance_variable_get :@weapons
  967.               now_number = (now_weapons[id].nil? ? 0 : now_weapons[id])
  968.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
  969.             when 2
  970.             end

  971.           end  
  972.           tem01 += condition[1].size
  973.         end  
  974.         if condition[2] != nil
  975.           p condition[2]
  976.           condition[2].each do |id,number|
  977.             pos = condition[2].index([id,number]) + tem01
  978.             name = $data_armors[id].name
  979.             icon_name = $data_armors[id].icon_name

  980.             bt = RPG::Cache.icon(icon_name)
  981.             rect1 = Rect.new(0,32*3+pos*32,24,24)
  982.             rect2 = Rect.new(0,0,bt.width,bt.height)
  983.             @sprite.bitmap.stretch_blt(rect1,bt,rect2)


  984.            case listKind
  985.             when 0,2
  986.               @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
  987.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
  988.             when 1
  989.               now_armors = $game_party.instance_variable_get :@armors
  990.               now_number = (now_armors[id].nil? ? 0 : now_armors[id])
  991.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
  992.             when 2
  993.             end
  994.           end  
  995.           tem01 += condition[2].size
  996.         end  
  997.           next_line = 32*(3+tem01)
  998.       end

  999.       # 杀敌的情况
  1000.       if kind == 2
  1001.         pos01 = 0
  1002.         condition.sort.each do |id,number|
  1003.           pos01 = condition.sort.index([id,number])
  1004.           name = $data_enemies[id].name
  1005.           @sprite.bitmap.draw_text(0,32*3+pos01*32,400,32,name,0)
  1006.          case listKind
  1007.           when 0,2
  1008.             @sprite.bitmap.draw_text(300,32*3+pos01*32,100,32,"x"+number.to_s,0)
  1009.           when 1
  1010.             if $game_system.missionEnemyIds[@name][id] == nil
  1011.               now_number = 0
  1012.             else
  1013.               now_number = $game_system.missionEnemyIds[@name][id]
  1014.             end
  1015.             @sprite.bitmap.draw_text(300,32*3+pos01*32,100,32,now_number.to_s+"/"+number.to_s,0)
  1016.           end  
  1017.         end  
  1018.         next_line = 32*(3+condition.sort.size)
  1019.       end  
  1020.       @sprite.bitmap.font.color = getColor(1)
  1021.       @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[2],0)

  1022.       @sprite.bitmap.font.color = getColor(0)
  1023.       @sprite.bitmap.auto_line_draw_text(0,next_line+32,description,40,32,0)

  1024.       if description.getLines(40) == 0
  1025.         next_line = next_line+32*2
  1026.       else  
  1027.         next_line = (next_line+32)+32*description.getLines(40)
  1028.       end

  1029.       @sprite.bitmap.font.color = getColor(1)
  1030.       @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[3],0)

  1031.       # 分割线
  1032.       @sprite.bitmap.fill_rect(0,next_line+48,250,1,getColor(0))
  1033.       @sprite.bitmap.font.color = getColor(0)

  1034.       @sprite.bitmap.draw_text(0,next_line+32*2,400,32,"[金钱]",0)
  1035.       @sprite.bitmap.draw_text(0,next_line+32*3,150,32,money.to_s+"G",0)

  1036.       @sprite.bitmap.draw_text(0,next_line+32*4,400,32,"[道具]",0)
  1037.       next_line = next_line+32*5


  1038.       tem02 = 0
  1039.       if item == "无"
  1040.         @sprite.bitmap.draw_text(0,next_line,400,32,item,0)
  1041.         tem02 += 1
  1042.       else
  1043.         item.each do |id,number|
  1044.           name = $data_items[id].name
  1045.           pos02 = item.index([id,number])
  1046.           icon_name = $data_items[id].icon_name

  1047.           bt = RPG::Cache.icon(icon_name)
  1048.           rect1 = Rect.new(0,next_line+pos02*32,24,24)
  1049.           rect2 = Rect.new(0,0,bt.width,bt.height)
  1050.           @sprite.bitmap.stretch_blt(rect1,bt,rect2)

  1051.           @sprite.bitmap.draw_text(64,next_line+pos02*32,400,32,name,0)
  1052.           @sprite.bitmap.draw_text(300,next_line+pos02*32,100,32,"x"+number.to_s,0)
  1053.         end  
  1054.         tem02 += item.size
  1055.       end  
  1056.       next_line += tem02*32

  1057.       @sprite.bitmap.draw_text(0,next_line,400,32,"[武器]",0)
  1058.       next_line += 32

  1059.       tem03 = 0
  1060.       if weapon == "无"
  1061.         @sprite.bitmap.draw_text(0,next_line,400,32,weapon,0)
  1062.         tem03 += 1
  1063.       else
  1064.         weapon.each do |id,number|
  1065.           name = $data_weapons[id].name
  1066.           pos03 = weapon.index([id,number])
  1067.           icon_name = $data_weapons[id].icon_name

  1068.           bt = RPG::Cache.icon(icon_name)
  1069.           rect1 = Rect.new(0,next_line+pos03*32,24,24)
  1070.           rect2 = Rect.new(0,0,bt.width,bt.height)
  1071.           @sprite.bitmap.stretch_blt(rect1,bt,rect2)

  1072.           @sprite.bitmap.draw_text(64,next_line+pos03*32,400,32,name,0)
  1073.           @sprite.bitmap.draw_text(300,next_line+pos03*32,100,32,"x"+number.to_s,0)
  1074.         end  
  1075.         tem03 += weapon.size
  1076.       end
  1077.       next_line += tem03*32

  1078.       @sprite.bitmap.draw_text(0,next_line,400,32,"[防具]",0)
  1079.       next_line += 32

  1080.       tem04 = 0
  1081.       if armor == "无"
  1082.         @sprite.bitmap.draw_text(0,next_line,400,32,armor,0)
  1083.         tem04 += 1
  1084.       else
  1085.         armor.each do |id,number|
  1086.           name = $data_armors[id].name
  1087.           pos04 = armor.index([id,number])
  1088.           icon_name = $data_armors[id].icon_name

  1089.           bt = RPG::Cache.icon(icon_name)
  1090.           rect1 = Rect.new(0,next_line+pos04*32,24,24)
  1091.           rect2 = Rect.new(0,0,bt.width,bt.height)
  1092.           @sprite.bitmap.stretch_blt(rect1,bt,rect2)

  1093.           @sprite.bitmap.draw_text(64,next_line+pos04*32,400,32,name,0)
  1094.           @sprite.bitmap.draw_text(300,next_line+pos04*32,100,32,"x"+number.to_s,0)
  1095.         end  
  1096.         tem04 += armor.size
  1097.       end
  1098.       next_line += tem04*32

  1099.       @sprite.bitmap.font.color = getColor(1)
  1100.       @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[4],0)
  1101.       @sprite.bitmap.font.color = getColor(0)
  1102.       next_line += 32

  1103.       @sprite.bitmap.auto_line_draw_text(0,next_line,reward_des,40,32,0)


  1104.   end  

  1105. end   
  1106. #-----------------------------------------------------------------------------
  1107. # 场景部分
  1108. #-----------------------------------------------------------------------------
  1109. class SceneMission
  1110.   attr_accessor     :message
  1111.   attr_accessor     :reward_list
  1112.   def main
  1113.     # 外部接口
  1114.     @message = ""
  1115.     @reward_list = {}
  1116.     @spriteset = Spriteset_Map.new
  1117.     @main_window = WindowMissionMain.new
  1118.     @main_window.active = true
  1119.     @can_accept = WindowCanAcceptList.new
  1120.     @can_accept.active = false
  1121.     @accepted = WindowAccetpedList.new
  1122.     @accepted.active = false
  1123.     @finished = WindowFinishList.new
  1124.     @finished.active = false
  1125.     @window_des = WindowMissionDes.new
  1126.     @window_des.active = false
  1127.     @result = Window_Help.new
  1128.     @result.active = false
  1129.     @result.visible = false
  1130.     @result.x,@result.y,@result.z = 0,200,@window_des.z+100
  1131.     # @yes_or_no = WindowYesOrNo.new
  1132.     Graphics.transition
  1133.     loop do
  1134.       Graphics.update
  1135.       Input.update
  1136.       update
  1137.       if $scene != self
  1138.         break
  1139.       end
  1140.     end
  1141.     Graphics.freeze
  1142.     @main_window.dispose
  1143.     @can_accept.dispose
  1144.     @accepted.dispose
  1145.     @finished.dispose
  1146.     @window_des.dispose
  1147.     @result.dispose
  1148.     @spriteset.dispose
  1149.   end

  1150.   def update
  1151.     return update_main if @main_window.active
  1152.     return update_can_accept if @can_accept.active
  1153.     return update_accepted if @accepted.active
  1154.     return update_finished if @finished.active
  1155.     return update_window_des if @window_des.active
  1156.     return update_result if @result.active
  1157.   end  
  1158.   def update_main
  1159.     @main_window.update
  1160.     if Input.trigger?(Input::B)
  1161.       $game_system.se_play($data_system.cancel_se)
  1162.       $scene = Scene_Map.new
  1163.       return
  1164.     end  
  1165.     if Input.trigger?(Input::C)
  1166.       $game_system.se_play($data_system.decision_se)
  1167.       @main_window.visible = false
  1168.       @main_window.active = false
  1169.       case @main_window.index
  1170.       when 0 # 接受
  1171.         #$scene = Scene_Questdiary.new
  1172.         @can_accept.active = true
  1173.         @can_accept.visible = true
  1174.         @can_accept.refresh(*MissionList.canMissionList)
  1175.         @can_accept.index = 0
  1176.         return
  1177.       when 1 # 提交
  1178.         @accepted.active = true
  1179.         @accepted.visible = true
  1180.         @accepted.refresh(*$game_system.missionNameSort)
  1181.         @accepted.index = 0
  1182.         return
  1183.       when 2 # 查看
  1184.         @accepted.active = true
  1185.         @accepted.visible = true
  1186.         @accepted.refresh(*$game_system.missionNameSort)
  1187.         @accepted.index = 0
  1188.         return
  1189.       when 3 # 完成
  1190.         @finished.active = true
  1191.         @finished.visible = true
  1192.         @finished.refresh(*$game_system.finishNameSort)
  1193.         @finished.index = 0
  1194.         return
  1195.       end
  1196.     end
  1197.   end
  1198.   def update_can_accept
  1199.     @can_accept.update
  1200.     if Input.trigger?(Input::B)
  1201.       $game_system.se_play($data_system.cancel_se)
  1202.       @can_accept.active = false
  1203.       @can_accept.visible = false

  1204.       @main_window.visible = true
  1205.       @main_window.active = true
  1206.       # @main_window.index = 0
  1207.       return
  1208.     end  
  1209.     if Input.trigger?(Input::C)
  1210.       $game_system.se_play($data_system.decision_se)
  1211.       name = MissionList.canMissionList[@can_accept.index]

  1212.       return if $game_system.missions[name] != nil

  1213.       @can_accept.active = false
  1214.       @can_accept.visible = false

  1215.       @window_des.visible = true
  1216.       @window_des.refresh(MissionList.canMissionList[@can_accept.index],0)
  1217.       @window_des.active = true
  1218.       return
  1219.     end
  1220.   end  

  1221.   # 接受了的列表
  1222.   def update_accepted
  1223.     @accepted.update
  1224.     if Input.trigger?(Input::B)
  1225.       $game_system.se_play($data_system.cancel_se)
  1226.       @accepted.active = false
  1227.       @accepted.visible = false

  1228.       @main_window.visible = true
  1229.       @main_window.active = true
  1230.       # @main_window.index = 0
  1231.     end  

  1232.     if Input.trigger?(Input::C)
  1233.       $game_system.se_play($data_system.decision_se)

  1234.       case @main_window.index
  1235.       when 1 #提交 检索任务
  1236.         return if $game_system.missionNameSort[@accepted.index].nil?
  1237.         Mission.checkMission($game_system.missionNameSort[@accepted.index])
  1238.         @accepted.active = false
  1239.         @result.set_text(@message,1)
  1240.         @result.active = true
  1241.         @result.visible = true

  1242.       when 2
  1243.         if $game_system.missionNameSort[@accepted.index].nil?
  1244.           return
  1245.         end  
  1246.         @accepted.active = false
  1247.         @accepted.visible = false

  1248.         @window_des.active = true
  1249.         @window_des.visible = true

  1250.         @window_des.refresh($game_system.missionNameSort[@accepted.index],1)
  1251.       when 3
  1252.       end
  1253.     end
  1254.   end  

  1255.   # 完成了的列表
  1256.   def update_finished
  1257.     @finished.update
  1258.     if Input.trigger?(Input::C)
  1259.       return if $game_system.finishNameSort[@finished.index].nil?
  1260.       $game_system.se_play($data_system.decision_se)

  1261.       @finished.active = false
  1262.       @finished.visible = false

  1263.       @window_des.active = true
  1264.       @window_des.visible = true

  1265.       @window_des.refresh($game_system.finishNameSort[@finished.index],2)
  1266.       return
  1267.     end
  1268.     if Input.trigger?(Input::B)
  1269.       $game_system.se_play($data_system.cancel_se)
  1270.       @finished.active = false
  1271.       @finished.visible = false

  1272.       @main_window.visible = true
  1273.       @main_window.active = true
  1274.       # @main_window.index = 0
  1275.       return
  1276.     end
  1277.   end


  1278.   def update_window_des
  1279.     @window_des.update
  1280.     if Input.trigger?(Input::C)
  1281.       case @main_window.index
  1282.       when 0
  1283.         $game_system.se_play($data_system.decision_se)
  1284.         @window_des.active = false
  1285.         @result.active = true
  1286.         name = MissionList.canMissionList[@can_accept.index]
  1287.        # MissionList.Start(name)
  1288.         @result.set_text("该任务请联系相关NPC" + name,1)
  1289.       when 1 # 提交任务
  1290.       when 2 # 查看任务
  1291.       when 3 # 完成列表
  1292.       end
  1293.       return
  1294.     end
  1295.     if Input.trigger?(Input::B)
  1296.       $game_system.se_play($data_system.cancel_se)
  1297.       @window_des.visible = false
  1298.       @window_des.active = false
  1299.       @window_des.nVisible
  1300.       case @main_window.index
  1301.       # 接受
  1302.       when 0
  1303.         @can_accept.active = true
  1304.         @can_accept.visible = true
  1305.         return
  1306.       # 提交  
  1307.       when 2
  1308.         @accepted.active = true
  1309.         @accepted.visible = true
  1310.         return
  1311.       when 3
  1312.         @finished.active = true
  1313.         @finished.visible = true
  1314.       end  
  1315.     end
  1316.   end  

  1317.   def update_result
  1318.     if Input.trigger?(Input::C)
  1319.       $game_system.se_play($data_system.decision_se)

  1320.       @result.active = false
  1321.       @result.visible = false

  1322.       @window_des.visible = false
  1323.       @window_des.nVisible
  1324.       @can_accept.visible = false
  1325.       @accepted.visible = false
  1326.       @finished.visible = false

  1327.       @main_window.visible = true
  1328.       @main_window.active = true
  1329.       @main_window.index = 0

  1330.       return
  1331.     end  
  1332.     @result.update
  1333.   end

  1334. end

  1335. #-----------------------------------------------------------------------------
  1336. # 结束
  1337. #-----------------------------------------------------------------------------
复制代码



评分

参与人数 1赞 +1 收起 理由
195874 + 1 认可答案

查看全部评分


提高解决问题的方法:
查看对应版本的帮助文件或者默认脚本中可能相似的部分 看有没有思路能照搬(不是)
改变问题为更有可能的,常见的,系统性的 如:天气自动变化成下雨→天气系统 要多想几种可能
使用论坛的搜索功能查找相关问题 咦?这跟我想的不一样啊!讨厌啦~\(≧□≦)/~啦啦啦
清楚说明实际上你想解决的问题  想看坛友的女装,想看!  
脚本自己有改过的地方要尽量标明  提高除BUG效率 ... ...
脚本有问题但不是默认脚本的要全部贴出来 大胆点,尽情发,我说的是女装照!
三包原则:包有BUG,包甩锅,包咕咕 长期下线,急事换人!难事换人!啥事都换人!换人换人换人!!!
回复

使用道具 举报

梦石
0
星屑
1120
在线时间
210 小时
注册时间
2020-9-19
回帖
19
 楼主| 发表于 2023-11-10 21:47:45 | 显示全部楼层
谢谢谢谢
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部