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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1075
在线时间
159 小时
注册时间
2020-9-19
帖子
23
跳转到指定楼层
1
发表于 2023-10-31 14:23:11 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如何实现提交任务之后任务就不能在接了,这个脚本提交任务之后还可以反复去接任务如果做主线任务的话不方便 我想让每个任务只能接一次提交后任务界面里的任务消失或者变色
谢谢了
RUBY 代码复制
  1. #---------------------------------------------------------------------------
  2. # 仿网游多任务系统v0.1 by秀秀
  3. #---------------------------------------------------------------------------
  4. =begin
  5.    
  6.   作者:秀秀
  7.  
  8.   版本:v1.0
  9.  
  10.   [使用方法]
  11.  
  12.     在脚本开始的地方的设置常量Missions
  13.  
  14.     设置好之后 调用 $scene = SceneMission.new 即可
  15.     
  16.   [Mission数据结构]  
  17.  
  18.     Mission 是一个用来存放任务的数组
  19.     
  20.     格式: Mission[任务1,任务2,任务3,任务n], 可无限设置
  21.  
  22.     而Mission数组里的每个元素 又是一个数组 大小为固定size = 5
  23.    
  24.     分别为: 1.任务名称 (字符串)
  25.          
  26.             2.任务等级 (整数)
  27.             
  28.             3.任务类型和条件(数组)
  29.             
  30.                第一个元素为类型
  31.                
  32.                类型: 0 为触发式
  33.                      1 为持有物品
  34.                      2 为杀敌数一定
  35.                
  36.                第二个元素为条件
  37.                    当第一个元素为0时候
  38.                      设置为字符串(即开关名)
  39.                    当第二个元素为1时候
  40.                      设置为 hash(即某物品或者武器和数量
  41.                                  键为类型,0:物品,1:武器,2:防具)
  42.                      如{0=>[[1,3],[2,4]],1=>[[5,10]],2=>[10,12]}
  43.                      表示 物品id为1 数量3
  44.                           物品id为2 数量为4
  45.                           武器id为5,数量为10
  46.                           防具id为10,数量为12
  47.                    当第二个元素为1时候(即杀敌数量)
  48.                      设置为 hash(敌人id和数量)
  49.                      如{14=>5,6=>12,7=>8}
  50.                      表示需要干掉
  51.                         id为14敌人5次
  52.                         id为6的敌人12次
  53.                         id为7的敌人8次
  54.                          
  55.             4.任务描述(字符串)
  56.             
  57.             5.报酬(数组)
  58.              
  59.               第一个元素为金钱(整数)
  60.             
  61.               第二个元素为物品,武器,防具
  62.                 设置为 hash(即某物品或者武器和数量
  63.                             键为类型,0:物品,1:武器,2:防具)
  64.                 如:{0=>[[1,10],[2,6]],1=>[[6,8]]}
  65.                    表示 物品id为1 数量10
  66.                         物品id为2 数量为6
  67.                         武器id为6,数量为8
  68.                          
  69.             6.其他描述(字符串)
  70.                如:如此任务达成 我会帮你打开XX门
  71.                配合事件里插入脚本
  72.                $game_system.finishNameSort.include?(name)
  73.                name是任务名称
  74.                可以检测是否已经完成改任务 来判断是否打开XX门
  75.     [其他功能]
  76.            接受一个任务
  77.              MissionList.Start(name)
  78.            判断一个任务是否执行中
  79.              Mission.mission_run?(name)
  80.            提交一个任务  
  81.              Mission.checkMission(name)
  82.            判断某个任务是否完成
  83.              $game_system.finishNameSort.include?(name)
  84.              
  85.            还有一些功能就不单独描述了 具体看脚本核心部分
  86.              
  87. =end
  88.  
  89. #-----------------------------------------------------------------------------
  90. # 设置任务部分
  91. #------------------------------------------------------------------------------
  92. module MissionList
  93.   Missions = [
  94.   #任务1
  95.     ["寻找内裤",1,
  96.     [0,"寻找内裤"],"找到隐藏的内裤",[100,
  97.     {0=>[[1,10],[2,6]],1=>[[6,8]]}],"可能就在附近,仔细找找吧"],
  98.   #   ======================================================
  99.     ["对话",1,
  100.     [0,"对话01"],"去找阿尔西斯对话",[100,
  101.     {0=>[[1,5]],}],"可能就在附近,仔细找找吧"+"这信息是刷屏幕,主要测试自动换行功能"*10],
  102.  
  103.  
  104.  
  105.     #=============================杀敌任务范例===================================  
  106.       #任务名称    任务星级  (0触发,1持物,2杀敌) 敌人ID  杀敌数
  107.     ["测试杀敌任务",   1    ,[          2          ,{  3  =>   5    }],
  108.       #任务描述   金钱 (0物品,1武器,2防具)  道具ID  数量   任务说明
  109.     "干掉5个幽灵",[0,           {1=>            [[3,     5]]}],"哈哈哈"],
  110.   #============================================================================  
  111.   #============================================================================  
  112.       #任务名称  任务星级  (0触发,1持物,2杀敌) (0:物品,1:武器,2:防具)  ID   数量
  113.     ["寻找密斯里",  2,   [            1,                    {1=>           [[4,   1]]}],
  114.     #任务描述     
  115.      "也许在地图的某个角落",
  116.   # 金钱 (0物品,1武器,2防具)  ID  数量   (0物品,1武器,2防具)  道具ID  数量         
  117.      [0,            {1=>         [[1,  1]],             2=>            [[1,     1]]}],
  118.      #说明
  119.      "也许在地图的某个角落"],   
  120.   #====================================================================================   
  121.     ["寻找圣剑材料",10,
  122.     [1,{0=>[[32,5],[33,8],[34,11]]}],
  123.     "寻找圣剑所需的三个材料,圣剑材料1,圣剑材料2,圣剑材料3",
  124.     [0,{1=>[[33,1]]}],"找到这些可以做圣剑"],   
  125.     ]  
  126.   module_function  
  127.   def self.Start(name)
  128.     Missions.each do |mission|
  129.       Mission.startMission(*mission) if mission[0] == name
  130.     end
  131.   end  
  132.  
  133.   def canMissionList
  134.     if Missions.empty? or Missions.nil?
  135.       raise "任务没有设置好,请检查"
  136.     end  
  137.     temp = []
  138.     Missions.each do |mission|
  139.       # if $game_system.missions[mission[0]].nil?
  140.         #添加到任务列表 并设置不需要在列表里的任务
  141.         temp << mission[0] if mission[0] != "寻找圣剑材料"
  142.       # end
  143.     end  
  144.     return temp
  145.   end  
  146. end  
  147. #------------------------------------------------------------------------------
  148. # 内部类定义部分
  149. #------------------------------------------------------------------------------
  150. class Hash < Object
  151.   def soft
  152.     @temp = []
  153.     self.each_pair{|key, value| @temp << [key,value] }
  154.     return @temp
  155.   end  
  156. end  
  157.  
  158. class Integer
  159.   def rStar
  160.     return "★"*self
  161.   end
  162. end  
  163.  
  164. class Bitmap
  165.   def auto_line_draw_text(x,y,text,limit,height,align)
  166.     lines = text.getLines(limit)
  167.     @limit = limit
  168.     @n = 0
  169.     for i in 0...lines
  170.       @t1 = []
  171.       if lines == 1
  172.         @t1 << text
  173.       end  
  174.       if lines > 1
  175.         @t= text.split(//)
  176.         while @t1.join.size < @limit
  177.           break if @t[@n].nil?
  178.           @t1.push(@t[@n])
  179.           @n += 1
  180.         end
  181.       end  
  182.       draw_text(x,y+i*height,500,height,@t1.join,align)
  183.     end
  184.   end  
  185. end  
  186.  
  187. class String
  188.   def getLines(limit)
  189.     lines = (self.length/limit).to_i
  190.     lines += 1 if self.length%limit != 0
  191.     return lines
  192.   end  
  193. end  
  194.  
  195. #------------------------------------------------------------------------------
  196. # 系统重定义部分
  197. #------------------------------------------------------------------------------
  198. class Game_Battler
  199.   def dead?
  200.     if (@hp == 0 and not @immortal)
  201.      @temp_a = 0 if @temp_a == nil
  202.      if self.is_a?(Game_Enemy) and @temp_a == 0
  203.        id = self.instance_variable_get :@enemy_id
  204.        now_mission = $game_system.missionEnemyIds  #[name][id]
  205.        goal_mission = $game_system.missions        # [name].kind[1][id]
  206.        # 检索是否存在于列表中
  207.        $game_system.missionEnemyIds.keys.each do |name|
  208.          # return true if $game_system.missionEnemyIds[name] == nil
  209.          if now_mission[name][id] != nil and goal_mission[name] != nil and
  210.             now_mission[name][id] < goal_mission[name].kind[1][id]
  211.             # $game_system.missions[name].stutas == 0
  212.             $game_system.missionEnemyIds[name][id] += 1
  213.             break
  214.          end  
  215.        end
  216.        @temp_a = 1
  217.      end
  218.      return true
  219.     end
  220.   end
  221. end
  222.  
  223. class Game_System
  224.   attr_accessor  :missions
  225.   #attr_accessor  :finishMissionTimes
  226.   attr_accessor  :finishMissionList
  227.   attr_accessor  :missionSwitch  
  228.   attr_accessor  :missionEnemyIds
  229.   attr_accessor  :missionNameSort
  230.   attr_accessor  :finishNameSort
  231.   alias ori_initialize initialize
  232.   def initialize
  233.     ori_initialize
  234.     @missions = {}
  235.     #@finishMissionTimes = {}
  236.     @finishMissionList = {}
  237.     @missionSwitch = {}
  238.     @missionEnemyIds = {}
  239.     @missionNameSort = []
  240.     @finishNameSort = []
  241.     @missionHouseList = []
  242.   end  
  243. end  
  244.  
  245. class GetMission
  246.   attr_reader    :level
  247.   attr_reader    :kind
  248.   attr_reader    :description
  249.   attr_reader    :money
  250.   attr_reader    :items
  251.   attr_reader    :reswards_des
  252.   # attr_accessor  :stutas
  253.   def initialize(level,kind,description,rewards,rewards_des)
  254.     @level = level
  255.     @kind = kind
  256.     @description = description
  257.     @money = rewards[0]
  258.     @items = rewards[1]
  259.     @reswards_des = rewards_des
  260.   end
  261. end  
  262.  
  263. class FinishMission < GetMission
  264.   attr_accessor   :times
  265.   def initialize(times,*args)
  266.     new_args = [args[0],args[1],args[2],[args[3],args[4]],args[5]]
  267.     super(*new_args)
  268.     @times = times
  269.   end  
  270. end  
  271.  
  272. #----------------------------------------------------------------------------
  273. # 任务核心部分
  274. #----------------------------------------------------------------------------
  275. module Mission
  276.   module_function
  277.   def startMission(name,level,kind,description,rewards,rewards_des)
  278.     unless $game_system.missions.has_key?(name)
  279.       # 检查参数合法性
  280.       self.getError(name,level,kind,description,rewards,rewards_des)
  281.       $game_system.missions[name] = GetMission.new(
  282.          level,kind,description,rewards,rewards_des)
  283.       $game_system.missionNameSort << name unless $game_system.missionNameSort.include?(name)  
  284.       case kind[0]
  285.       when 0
  286.       # 设置开关初始状态
  287.       $game_system.missionSwitch[kind[1]] = false
  288.       when 1
  289.       # 开启了一个获得物品的任务
  290.       when 2  
  291.       # 开启了一个杀敌数的任务并设置列表
  292.       # {name1=>{id1=number,id2=number},name2={id1=number,id2=number}}
  293.       $game_system.missionEnemyIds[name] = {}
  294.       enemies = kind[1].sort
  295.       enemies.each{|id| $game_system.missionEnemyIds[name][id[0]] = 0}
  296.       end
  297.     end
  298.     return
  299.   end
  300.  
  301.   # 开启一个组合任务
  302.   #(- -,好像没必要了 可以直接接受2个或者多个无报酬任务
  303.   # 全部完成后再给报酬)
  304.   def startComboMission;end  
  305.  
  306.   def getError(name,level,kind,description,rewards,rewards_des)
  307.     raise sprintf("任务:%s的参数 level 不是一个 Integer",name) unless level.kind_of?(Integer)
  308.     raise sprintf("任务:%s的参数 kind[0] 不是一个 Integer",name) unless kind[0].kind_of?(Integer)
  309.     case kind[0]
  310.       when 0
  311.       raise sprintf("任务:%s的参数 kind[1] 不是一个 String",name) unless kind[1].kind_of?(String)
  312.       when 1..2
  313.       unless (kind[1].kind_of?(Hash))
  314.         raise sprintf("任务:%s的参数 kind[1] 不是一个 Hash",name)
  315.       end   
  316.     end
  317.     raise sprintf("任务:%s的参数 description 不是一个 String",name) unless description.kind_of?(String)
  318.     raise sprintf("任务:%s的参数 rewards[0] 不是一个 Integer",name) unless rewards[0].kind_of?(Integer)
  319.     raise sprintf("任务:%s的参数 rewards[1] 不是一个 Hash",name) unless rewards[1].kind_of?(Hash)
  320.     raise sprintf("任务:%s的参数 rewards_des 不是一个 String",name) unless rewards_des.kind_of?(String)
  321.   end  
  322.  
  323.   # 接受一个或多个任务添加到任务所
  324.   def addMissionHouse(*missions)
  325.     missions.each{|a|$game_system.missionHouseList << a}
  326.   end
  327.  
  328.   # 任务所删除一个或多个任务
  329.   def deleteMissionHouse(*missions)
  330.     missions.each{|a|$game_system.missionHouseList.delete(a)}
  331.   end
  332.  
  333.   # 放弃任务 可多个  
  334.   def stopMission(*name)
  335.     name.each do |aname|
  336.       $game_system.missions.delete(aname) if $game_system.missions.include?(aname)
  337.     end
  338.   end
  339.  
  340.   # 检索任务
  341.   def checkMission(name)
  342.     # 检索是否已接了任务
  343.     if $game_system.missions[name] != nil
  344.       kind = $game_system.missions[name].kind
  345.     else
  346.       return self.missionReslut(2,name,self.message(4)){|msg|self.putsMessage(msg);return}
  347.     end  
  348.  
  349.     # 类型
  350.     case kind[0]
  351.     # 条件触发式
  352.     when 0
  353.       switch_name = $game_system.missions[name].kind[1]
  354.       if $game_system.missionSwitch[switch_name] == true
  355.         $game_system.missionSwitch.delete(name)
  356.         # 返回成功结果
  357.         return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
  358.       else
  359.         # 返回未完成结果
  360.         self.missionReslut(1,name,self.message(1)){|msg|self.putsMessage(msg);return}
  361.       end  
  362.     # 持有物品
  363.     when 1
  364.       # 转化为 item格式的数组
  365.       # 如 [[1,10],[5,15]] 道具1数量10 道具5数量15
  366.         items = kind[1].select{|akind,array| akind == 0}[0][1] if kind[1][0] != nil
  367.         weapons = kind[1].select{|bkind,array| bkind == 1}[0][1] if kind[1][1] != nil
  368.         armors = kind[1].select{|ckind,array| ckind == 2}[0][1] if kind[1][2] != nil
  369.       unless items.nil?
  370.         unless self.check(name,0,items)
  371.           # 道具数量不合格
  372.           return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
  373.         end  
  374.       end
  375.       unless weapons.nil?
  376.         unless self.check(name,1,weapons)
  377.           # 武器数量不合格
  378.           return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
  379.         end
  380.       end
  381.       unless armors.nil?
  382.         unless self.check(name,2,armors)
  383.           # 防具数量不合格
  384.           return self.missionReslut(1,name,self.message(2)){|msg|self.putsMessage(msg);return}
  385.         end
  386.       end
  387.       # 返回成功结果
  388.       return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
  389.     # 杀敌数一定  
  390.     when 2  
  391.       enemies = kind[1].soft
  392.       enemies.each do |id,number|  
  393.         if $game_system.missionEnemyIds[name][id] < number
  394.           return self.missionReslut(1,name,self.message(3)){|msg|self.putsMessage(msg);return}
  395.         end  
  396.       end
  397.       # 清空敌人id列表
  398.       $game_system.missionEnemyIds.delete(name)
  399.       # 返回成功结果
  400.       return self.missionReslut(0,name,self.message(0)){|msg|self.putsMessage(msg);return}
  401.     end  
  402.  
  403.   end  
  404.  
  405.   def message(kind)
  406.     if kind == 0
  407.       return "恭喜你任务完成,请查收奖品"
  408.     elsif kind == 1
  409.       return "似乎还未达到要求"
  410.     elsif kind == 2
  411.       return "请检查是否获得了任务所需物品和数量"
  412.     elsif kind == 3
  413.       return "任务所需杀敌数还不够"
  414.     elsif kind == 4
  415.       return "未开启的任务类型"
  416.     else
  417.       return
  418.     end  
  419.   end  
  420.  
  421.   def putsMessage(msg)
  422.     if $scene.is_a?(SceneMission)
  423.       $scene.message = msg
  424.     end
  425.     return
  426.   end  
  427.  
  428.   def check(name,kind,*args)
  429.     if kind == 0
  430.       # 任务所需物品array
  431.       items = args
  432.       # 获取现在物品
  433.       now_items = $game_party.instance_variable_get :@items
  434.       # 检查是否包含物品
  435.       ids01 = []
  436.       items[0].each{|item| ids01 << item[0]}
  437.       now_ids = now_items.keys
  438.       unless now_ids|ids01 == now_ids
  439.         return false
  440.       end
  441.       # 检查数量是否合格
  442.       items[0].each do |item|
  443.        return false if now_items[item[0]] < item[1]
  444.       end  
  445.     elsif kind == 1  
  446.       # 任务所需武器array
  447.       weapons = args
  448.       # 获取现在物品
  449.       now_weapons = $game_party.instance_variable_get :@weapons
  450.       # 检查是否包含物品
  451.       ids02 = []
  452.       weapons[0].each{|weapon| ids02 << weapon[0]}
  453.       now_ids = now_weapons.keys
  454.       unless now_ids|ids02 == now_ids
  455.         return false
  456.       end
  457.       # 检查数量是否合格
  458.       weapons[0].each do |weapon|
  459.        return false if now_weapons[weapon[0]] < weapon[1]
  460.       end  
  461.     elsif kind == 2
  462.       # 任务所需物品array
  463.       armors = args
  464.       # 获取现在物品
  465.       now_armors = $game_party.instance_variable_get :@armors
  466.       # 检查是否包含物品
  467.       ids03 = []
  468.       armors[0].each{|armor| ids03 << armor[0][0]}
  469.       now_ids = now_armors.keys
  470.       unless now_ids|ids03 == now_ids
  471.         return false
  472.       end
  473.       # 检查数量是否合格
  474.       armors[0].each do |armor|
  475.        return false if now_armors[armor[0]] < armor[1]
  476.       end  
  477.     else
  478.  
  479.     end  
  480.     # 检查通过
  481.     return true
  482.   end
  483.  
  484.   #返回一种任务结果
  485.   def missionReslut(result,name,message)
  486.     case result
  487.     when 0
  488.       # 将任务转移到完成列表
  489.       self.missionMove(name)
  490.       # 获得报酬
  491.       self.getRewards(name)
  492.       # 清空任务
  493.       $game_system.missionNameSort.delete(name)
  494.       $game_system.missions.delete(name)
  495.       # 抛出任务成功信息
  496.       yield message
  497.     when 1
  498.       # 抛出未完成信息
  499.       yield message
  500.       #任务还未完成
  501.       return false
  502.     when 2  
  503.       # 抛出未完成信息
  504.       yield message
  505.       #无此任务
  506.       return false
  507.     end
  508.     return
  509.   end  
  510.  
  511.   # 转移到任务完成列表
  512.   def missionMove(name)
  513.     @mission = $game_system.missions[name]
  514.     # 保存全部实例变量
  515.     @include = ["@level","@kind","@description","@money","@items","@reswards_des"]
  516.     @include_value = []
  517.     temp = []
  518.     @include.each do |a|
  519.       if a == "@monney"
  520.         temp << a
  521.         next
  522.       end
  523.       if a == "@tiems"
  524.         temp << a
  525.         a = temp
  526.       end  
  527.       @include_value.push @mission.instance_variable_get eval(":"+a)
  528.     end  
  529.  
  530.     if $game_system.finishMissionList.include? name
  531.       # 任务名称=>完成次数
  532.       # 如果包含 完成次数+1
  533.       $game_system.finishMissionList[name].times += 1
  534.     else
  535.       # 如果不包含 建立一个完成任务的列表
  536.       $game_system.finishNameSort.push(name) unless $game_system.finishNameSort.include?(name)
  537.       $game_system.finishMissionList[name] = FinishMission.new(1,*@include_value)
  538.     end
  539.     return
  540.   end
  541.  
  542.   # 获取报酬
  543.   def getRewards(name)
  544.      return if $game_system.missions[name] == nil
  545.      # [金钱,{种类1=>[[ID1,数量],[ID2,数量]],种类2=>[[ID1,数量],[ID2,数量]]}]
  546.      money = $game_system.missions[name].money
  547.      items = $game_system.missions[name].items
  548.      # 获取赏金
  549.      self.get_money(money) if money != 0
  550.      # 获得物品
  551.      if items[0] != nil
  552.        items[0].each{|id,number|
  553.        $game_party.send :gain_item,id,number
  554.        }
  555.      end  
  556.      # 获得武器
  557.      if items[1] != nil
  558.        items[1].each{|id,number|
  559.        $game_party.send :gain_weapon,id,number
  560.        }
  561.      end  
  562.      # 获得防具
  563.      if items[2] != nil
  564.        items[2].each{|id,number|
  565.        $game_party.send :gain_armor,id,number
  566.        }
  567.      end  
  568.      return
  569.   end  
  570.  
  571.   def get_money(n)
  572.     $game_party.send :gain_gold,n
  573.   end  
  574.  
  575.   # *mission 可接收多个任务名称作为参数
  576.   def mission_finished?(*missions)
  577.     # return $game_system.finishMissionList.keys | missions
  578.     missions.each do |mission|
  579.       return false unless $game_system.finishMissionList.has_key?(mission)
  580.     end  
  581.     return true
  582.   end
  583.  
  584.   # 检查mission是否正在执行
  585.   def mission_run?(*missions)
  586.     #p missions
  587.     #p $game_system.missions
  588.     missions.each do |mission|
  589.       return false unless $game_system.missions.has_key?(mission)
  590.     end  
  591.     return true
  592.     # p $game_system.missions.keys | missions
  593.     # return $game_system.missions.keys | missions
  594.   end  
  595.  
  596.   # 获取当前任务数量
  597.   def mission_counts
  598.     return $game_system.missions.length
  599.   end  
  600.  
  601. end  
  602.  
  603. #-----------------------------------------------------------------------------
  604. # 菜单部分
  605. #-----------------------------------------------------------------------------
  606. # 任务所主菜单
  607. class WindowMissionMain < Window_Selectable
  608.   def initialize
  609.     super(240,100,160,160)
  610.     self.contents = Bitmap.new(width - 32, height - 32)
  611.     @item_max = 4
  612.     @column_max = 1
  613.     self.opacity = 255
  614.     refresh
  615.     self.index = 0
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 刷新
  619.   #--------------------------------------------------------------------------
  620.   def refresh
  621.     self.contents.clear
  622.     self.contents.draw_text(0,0,200,32,"主线任务",0)
  623.     self.contents.draw_text(0,32,200,32,"提交任务",0)
  624.     self.contents.draw_text(0,32*2,200,32,"查看任务",0)
  625.     self.contents.draw_text(0,32*3,200,32,"完成列表",0)
  626.   end
  627. end
  628.  
  629.  
  630. # 可接受任务的列表
  631. class WindowCanAcceptList < Window_Selectable
  632.   def initialize
  633.     super(70,60,500,360)
  634.     @width = width
  635.     @column_max = 1
  636.     self.opacity = 255
  637.     self.visible = false
  638.     self.index = 0
  639.   end
  640.   #--------------------------------------------------------------------------
  641.   # ● 刷新
  642.   #--------------------------------------------------------------------------
  643.   def refresh(*list)
  644.     self.contents.clear if self.contents != nil
  645.     self.contents = Bitmap.new(@width - 32, list.size * 32+32)
  646.     @item_max = list.size
  647.     for i in list
  648.       MissionList::Missions.each do |mission|
  649.         if  mission[0] == i
  650.           @level = mission[1]
  651.           @name = i
  652.           break
  653.         end
  654.       end
  655.       pos = list.index(i)
  656.       if $game_system.missions[@name] != nil
  657.         self.contents.font.color = disabled_color
  658.       else
  659.         self.contents.font.color = normal_color
  660.       end
  661.       self.contents.draw_text(0,pos*32,200,32,i,0)
  662.       self.contents.draw_text(220,pos*32,200,32,@level.rStar,0)
  663.     end
  664.   end
  665. end
  666.  
  667.  
  668.  
  669. # 任务中的列表
  670. class WindowAccetpedList < Window_Selectable
  671.   def initialize
  672.     super(70,60,500,360)
  673.     @width = width
  674.     @column_max = 1
  675.     self.opacity = 255
  676.     self.visible = false
  677.     self.index = 0
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ● 刷新
  681.   #--------------------------------------------------------------------------
  682.   def refresh(*list)
  683.     return if list.empty?
  684.     self.contents.clear if self.contents != nil
  685.     self.contents = Bitmap.new(@width - 32, list.size * 32)
  686.     @item_max = list.size
  687.     for i in list
  688.       levels = $game_system.missions[i].level.rStar
  689.       pos = list.index(i)
  690.       self.contents.draw_text(0,pos*32,200,32,i,0)
  691.       self.contents.draw_text(220,pos*32,200,32,levels,0)
  692.     end
  693.   end
  694. end
  695.  
  696.  
  697. # 任务完成的列表
  698. class WindowFinishList < Window_Selectable
  699.   def initialize
  700.     super(70,60,500,360)
  701.     @width = width
  702.     @column_max = 1
  703.     self.visible = false
  704.     self.opacity = 255
  705.     self.index = 0
  706.   end
  707.   #--------------------------------------------------------------------------
  708.   # ● 刷新
  709.   #--------------------------------------------------------------------------
  710.   def refresh(*list)
  711.     return if list.empty?
  712.     self.contents.clear if self.contents != nil
  713.     self.contents = Bitmap.new(@width - 32,list.size * 32)
  714.     @item_max = list.size
  715.     for i in list
  716.       level = $game_system.finishMissionList[i].level.rStar
  717.       pos = list.index(i)
  718.       self.contents.draw_text(0,pos*32,200,32,i,0)
  719.       self.contents.draw_text(220,pos*32,200,32,level,0)
  720.     end
  721.   end
  722. end  
  723.  
  724.  
  725. # 任务描述窗口
  726. class WindowMissionDes < Window_Base
  727.   TEXT = ["[任务等级]","[任务条件]","[任务描述]","[任务报酬]","[其他]"]
  728.   TEXT2 = "接受任务请按确定键,返回上级菜单按取消键"
  729.   def initialize
  730.     super(70,40,500,400)
  731.     @viewport = Viewport.new(70,40+64,500,400-64)
  732.     @viewport.z = self.z + 1
  733.     self.visible = false
  734.     self.contents = Bitmap.new(width-32,64)
  735.   end
  736.  
  737.   def update
  738.     super
  739.     if self.active
  740.       if @text != nil
  741.         @text.x > - 300 ? @text.x -= 2 : @text.x = 650
  742.       end  
  743.       case Input.dir4
  744.       when 2
  745.         move_block(0)
  746.         move_bar(1)
  747.       when 8
  748.         move_block(1)
  749.         move_bar(0)
  750.       end
  751.     end   
  752.   end  
  753.  
  754.   def nVisible
  755.     if self.visible == true
  756.       @sprite.visible = true if @sprite != nil
  757.       @bar.visible = true if @bar != nil
  758.       #@text.visible = true if @text != nil
  759.     end
  760.     if self.visible == false
  761.       @sprite.visible = false if @sprite != nil
  762.       @bar.visible = false if @bar != nil
  763.       @text.visible = false if @text != nil
  764.     end  
  765.   end  
  766.  
  767.   def dispose
  768.     super
  769.     @sprite.dispose if @sprite != nil
  770.     @bar.dispose if @bar != nil
  771.     @text.dispose if @text != nil
  772.   end  
  773.  
  774.   def move_block(kind)
  775.     if kind == 0
  776.       @sprite.y -= 4
  777.     end
  778.     if kind == 1
  779.       @sprite.y += 4
  780.     end  
  781.   end
  782.  
  783.   def move_bar(kind)
  784.     if kind == 0
  785.       @bar.y -= (4/@rate).to_f if @bar.y > 112
  786.     end
  787.     if kind == 1
  788.       @bar.y += (4/@rate).to_f if @bar.y < 400 - @bar.bitmap.height
  789.     end   
  790.   end  
  791.  
  792.   def getColor(n)
  793.     if n == 0
  794.       return Color.new(255,255,255,255)
  795.     elsif n == 1
  796.       return Color.new(255,255,0,255)
  797.     elsif n == 2
  798.       return Color.new(255,0,0,255)
  799.     elsif n == 3
  800.       return Color.new(128,128,128,255)
  801.     else
  802.  
  803.     end
  804.   end  
  805.  
  806.   def refresh(name,listKind)
  807.     raise "listKind参数设置不正确" unless [0,1,2].include? listKind
  808.     self.contents.clear
  809.     # bitmap.clear if bitmap != nil
  810.     @sprite.dispose if @sprite != nil
  811.     @bar.dispose if @bar != nil
  812.     @name = name
  813.     # 可接受列表
  814.     if listKind == 0   
  815.       MissionList::Missions.each do |mission|
  816.         if mission[0] == @name
  817.           @mission = mission
  818.           break
  819.         end  
  820.       end  
  821.  
  822.       #mission_name                        = @mission[0]
  823.       level                               = @mission[1]
  824.       kind                                = @mission[2][0]
  825.       condition                           = @mission[2][1]
  826.       description                         = @mission[3]
  827.       money                               = @mission[4][0]
  828.       @mission[4][1][0] != nil ? item     = @mission[4][1][0] : item = "无"
  829.       @mission[4][1][1] != nil ? weapon   = @mission[4][1][1] : weapon = "无"
  830.       @mission[4][1][2] != nil ? armor    = @mission[4][1][2] : armor = "无"
  831.       reward_des                          = @mission[5]
  832.     end
  833.  
  834.  
  835.     # 任务中列表
  836.     if listKind == 1
  837.       $game_system.missionNameSort.each do |mission|
  838.         if mission == @name
  839.           @mission = $game_system.missions[@name]
  840.           break
  841.         end  
  842.       end  
  843.  
  844.       #mission_name                        = @mission.name
  845.       level                               = @mission.level
  846.       kind                                = @mission.kind[0]
  847.       condition                           = @mission.kind[1]
  848.       description                         = @mission.description
  849.       money                               = @mission.money
  850.       @mission.items[0] != nil ? item     = @mission.items[0] : item = "无"
  851.       @mission.items[1] != nil ? weapon   = @mission.items[1] : weapon = "无"
  852.       @mission.items[2] != nil ? armor    = @mission.items[2] : armor = "无"
  853.       reward_des                          = @mission.reswards_des
  854.     end  
  855.  
  856.  
  857.     # 完成列表
  858.     if listKind == 2
  859.       $game_system.finishNameSort.each do |mission|
  860.         if mission == @name
  861.           @mission = $game_system.finishMissionList[@name]
  862.           break
  863.         end  
  864.       end  
  865.       #mission_name                       = @mission.name
  866.       finish_times                        = @mission.times
  867.       level                               = @mission.level
  868.       kind                                = @mission.kind[0]
  869.       condition                           = @mission.kind[1]
  870.       description                         = @mission.description
  871.       money                               = @mission.money
  872.       @mission.items[0] != nil ? item     = @mission.items[0] : item = "无"
  873.       @mission.items[1] != nil ? weapon   = @mission.items[1] : weapon = "无"
  874.       @mission.items[2] != nil ? armor    = @mission.items[2] : armor = "无"
  875.       reward_des                          = @mission.reswards_des
  876.     end  
  877.  
  878.       self.contents.font.color = getColor(2)
  879.       self.contents.draw_text(0,0,450-32,32,"【"+name+"】",1)
  880.       if listKind == 2
  881.         self.contents.font.color = getColor(1)
  882.         self.contents.draw_text(0,20,450-32,32,"任务完成:#{finish_times}",1)
  883.       end
  884.       self.contents.fill_rect(16,48,450,2,getColor(0))
  885.  
  886.       # 开始计算Bitmap的height
  887.       @height = 11
  888.  
  889.       case kind
  890.       when 0
  891.         # 40个字节一行计算
  892.         condition == "" ? @height += 1 : @height += condition.getLines(40)
  893.       when 1
  894.         @height += condition[0].size if condition[0] != nil
  895.         @height += condition[1].size if condition[1] != nil
  896.         @height += condition[2].size if condition[2] != nil
  897.       when 2
  898.         @height += condition.size
  899.       end  
  900.       description == "" ? @height += 1 : @height += description.getLines(40) + 1
  901.  
  902.       if listKind == 0
  903.         # 计算若无报酬的情况
  904.         @mission[4][1][0] == nil ? @height += 1 : @height += @mission[4][1][0].size
  905.         @mission[4][1][1] == nil ? @height += 1 : @height += @mission[4][1][1].size
  906.         @mission[4][1][2] == nil ? @height += 1 : @height += @mission[4][1][2].size
  907.       end
  908.  
  909.       if listKind == 1
  910.         item == "无" ? @height += 1 : @height += item.size
  911.         weapon == "无" ? @height += 1 : @height += weapon.size
  912.         armor == "无" ? @height += 1 : @height += armor.size
  913.       end
  914.       if listKind == 2
  915.  
  916.       end
  917.  
  918.       reward_des == "" ? @height += 1 : @height += reward_des.getLines(40)
  919.  
  920.       # 设置滚动字幕
  921.       if listKind == 0
  922.         @text = Sprite.new
  923.         @text.bitmap = Bitmap.new(640,32)
  924.         @text.bitmap.draw_text(0,0,640,32,TEXT2,0)
  925.         @text.x,@text.y,@text.ox,@text.oy = 650,0,0,0
  926.       end
  927.  
  928.       # 计算滚动条
  929.       barHeight = 100
  930.       @rate = 2
  931.       #@rate = ((@height * 32) / barHeight).to_f
  932.       #if @rate >= 1
  933.       #  barHeight = (barHeight/@rate).to_f
  934.       #end
  935.       bitmapBar = Bitmap.new(12,barHeight)
  936.       bitmapBar.fill_rect(0,0,bitmapBar.width,bitmapBar.height,getColor(0))
  937.       @bar = Sprite.new
  938.       @bar.bitmap = bitmapBar
  939.       @bar.x,@bar.y,@bar.z,@bar.ox,@bar.oy = 490,112,self.z+2,0,0
  940.  
  941.       # 设置显示内容矩形
  942.       bitmap = Bitmap.new(500-32,@height*32)
  943.  
  944.       @sprite = Sprite.new(@viewport)
  945.       @sprite.x,@sprite.y,@sprite.ox,@sprite.oy = 40,0,0,0
  946.       @sprite.bitmap = bitmap
  947.  
  948.       @sprite.bitmap.font.color = getColor(1)
  949.       @sprite.bitmap.draw_text(0,0,468,32,TEXT[0],0)
  950.       @sprite.bitmap.font.color = getColor(0)
  951.       @sprite.bitmap.draw_text(0,32,468,32,level.rStar,0)
  952.       @sprite.bitmap.font.color = getColor(1)
  953.       @sprite.bitmap.draw_text(0,32*2,468,32,TEXT[1],0)
  954.       @sprite.bitmap.font.color = getColor(0)
  955.       # 完成事件的情况
  956.       if kind == 0
  957.         @sprite.bitmap.auto_line_draw_text(0,32*3,"无",40,32,0)
  958.         if condition.getLines(40) == 0
  959.           next_line = 32*4
  960.         else  
  961.           next_line = 32*(3+condition.getLines(40))
  962.         end
  963.       end  
  964.  
  965.       # 取得物品的情况
  966.       if kind == 1
  967.         tem01 = 0
  968.         pos = 0
  969.         if condition[0] != nil
  970.           condition[0].each do |id,number|
  971.             pos = condition[0].index([id,number])
  972.             name = $data_items[id].name
  973.             icon_name = $data_items[id].icon_name
  974.  
  975.             # blt(x, y, src_bitmap, src_rect[, opacity])
  976.             bt = RPG::Cache.icon(icon_name)
  977.             rect1 = Rect.new(0,32*3+pos*32,24,24)
  978.             rect2 = Rect.new(0,0,bt.width,bt.height)
  979.             @sprite.bitmap.stretch_blt(rect1,bt,rect2)
  980.  
  981.             @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
  982.             case listKind
  983.             when 0,2
  984.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
  985.             when 1
  986.               now_items = $game_party.instance_variable_get :@items
  987.               now_number = (now_items[id].nil? ? 0 : now_items[id])
  988.               @sprite.bitmap.draw_text(250,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
  989.             when 2
  990.             end
  991.  
  992.           end  
  993.           tem01 += condition[0].size
  994.         end  
  995.         if condition[1] != nil
  996.           condition[1].each do |id,number|
  997.             pos = condition[1].index([id,number]) + tem01
  998.             name = $data_weapons[id].name
  999.             icon_name = $data_weapons[id].icon_name
  1000.  
  1001.             bt = RPG::Cache.icon(icon_name)
  1002.             rect1 = Rect.new(0,32*3+pos*32,24,24)
  1003.             rect2 = Rect.new(0,0,bt.width,bt.height)
  1004.             @sprite.bitmap.stretch_blt(rect1,bt,rect2)
  1005.  
  1006.             case listKind
  1007.             when 0,2
  1008.               @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
  1009.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
  1010.             when 1
  1011.               now_weapons = $game_party.instance_variable_get :@weapons
  1012.               now_number = (now_weapons[id].nil? ? 0 : now_weapons[id])
  1013.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
  1014.             when 2
  1015.             end
  1016.  
  1017.           end  
  1018.           tem01 += condition[1].size
  1019.         end  
  1020.         if condition[2] != nil
  1021.           p condition[2]
  1022.           condition[2].each do |id,number|
  1023.             pos = condition[2].index([id,number]) + tem01
  1024.             name = $data_armors[id].name
  1025.             icon_name = $data_armors[id].icon_name
  1026.  
  1027.             bt = RPG::Cache.icon(icon_name)
  1028.             rect1 = Rect.new(0,32*3+pos*32,24,24)
  1029.             rect2 = Rect.new(0,0,bt.width,bt.height)
  1030.             @sprite.bitmap.stretch_blt(rect1,bt,rect2)
  1031.  
  1032.  
  1033.            case listKind
  1034.             when 0,2
  1035.               @sprite.bitmap.draw_text(64,32*3+pos*32,400,32,name,0)
  1036.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,"x"+number.to_s,0)
  1037.             when 1
  1038.               now_armors = $game_party.instance_variable_get :@armors
  1039.               now_number = (now_armors[id].nil? ? 0 : now_armors[id])
  1040.               @sprite.bitmap.draw_text(300,32*3+pos*32,100,32,now_number.to_s+"/"+number.to_s,0)
  1041.             when 2
  1042.             end
  1043.           end  
  1044.           tem01 += condition[2].size
  1045.         end  
  1046.           next_line = 32*(3+tem01)
  1047.       end
  1048.  
  1049.       # 杀敌的情况
  1050.       if kind == 2
  1051.         pos01 = 0
  1052.         condition.sort.each do |id,number|
  1053.           pos01 = condition.sort.index([id,number])
  1054.           name = $data_enemies[id].name
  1055.           @sprite.bitmap.draw_text(0,32*3+pos01*32,400,32,name,0)
  1056.          case listKind
  1057.           when 0,2
  1058.             @sprite.bitmap.draw_text(300,32*3+pos01*32,100,32,"x"+number.to_s,0)
  1059.           when 1
  1060.             if $game_system.missionEnemyIds[@name][id] == nil
  1061.               now_number = 0
  1062.             else
  1063.               now_number = $game_system.missionEnemyIds[@name][id]
  1064.             end
  1065.             @sprite.bitmap.draw_text(300,32*3+pos01*32,100,32,now_number.to_s+"/"+number.to_s,0)
  1066.           end  
  1067.         end  
  1068.         next_line = 32*(3+condition.sort.size)
  1069.       end  
  1070.       @sprite.bitmap.font.color = getColor(1)
  1071.       @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[2],0)
  1072.  
  1073.       @sprite.bitmap.font.color = getColor(0)
  1074.       @sprite.bitmap.auto_line_draw_text(0,next_line+32,description,40,32,0)
  1075.  
  1076.       if description.getLines(40) == 0
  1077.         next_line = next_line+32*2
  1078.       else  
  1079.         next_line = (next_line+32)+32*description.getLines(40)
  1080.       end
  1081.  
  1082.       @sprite.bitmap.font.color = getColor(1)
  1083.       @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[3],0)
  1084.  
  1085.       # 分割线
  1086.       @sprite.bitmap.fill_rect(0,next_line+48,250,1,getColor(0))
  1087.       @sprite.bitmap.font.color = getColor(0)
  1088.  
  1089.       @sprite.bitmap.draw_text(0,next_line+32*2,400,32,"[金钱]",0)
  1090.       @sprite.bitmap.draw_text(0,next_line+32*3,150,32,money.to_s+"G",0)
  1091.  
  1092.       @sprite.bitmap.draw_text(0,next_line+32*4,400,32,"[道具]",0)
  1093.       next_line = next_line+32*5
  1094.  
  1095.  
  1096.       tem02 = 0
  1097.       if item == "无"
  1098.         @sprite.bitmap.draw_text(0,next_line,400,32,item,0)
  1099.         tem02 += 1
  1100.       else
  1101.         item.each do |id,number|
  1102.           name = $data_items[id].name
  1103.           pos02 = item.index([id,number])
  1104.           icon_name = $data_items[id].icon_name
  1105.  
  1106.           bt = RPG::Cache.icon(icon_name)
  1107.           rect1 = Rect.new(0,next_line+pos02*32,24,24)
  1108.           rect2 = Rect.new(0,0,bt.width,bt.height)
  1109.           @sprite.bitmap.stretch_blt(rect1,bt,rect2)
  1110.  
  1111.           @sprite.bitmap.draw_text(64,next_line+pos02*32,400,32,name,0)
  1112.           @sprite.bitmap.draw_text(300,next_line+pos02*32,100,32,"x"+number.to_s,0)
  1113.         end  
  1114.         tem02 += item.size
  1115.       end  
  1116.       next_line += tem02*32
  1117.  
  1118.       @sprite.bitmap.draw_text(0,next_line,400,32,"[武器]",0)
  1119.       next_line += 32
  1120.  
  1121.       tem03 = 0
  1122.       if weapon == "无"
  1123.         @sprite.bitmap.draw_text(0,next_line,400,32,weapon,0)
  1124.         tem03 += 1
  1125.       else
  1126.         weapon.each do |id,number|
  1127.           name = $data_weapons[id].name
  1128.           pos03 = weapon.index([id,number])
  1129.           icon_name = $data_weapons[id].icon_name
  1130.  
  1131.           bt = RPG::Cache.icon(icon_name)
  1132.           rect1 = Rect.new(0,next_line+pos03*32,24,24)
  1133.           rect2 = Rect.new(0,0,bt.width,bt.height)
  1134.           @sprite.bitmap.stretch_blt(rect1,bt,rect2)
  1135.  
  1136.           @sprite.bitmap.draw_text(64,next_line+pos03*32,400,32,name,0)
  1137.           @sprite.bitmap.draw_text(300,next_line+pos03*32,100,32,"x"+number.to_s,0)
  1138.         end  
  1139.         tem03 += weapon.size
  1140.       end
  1141.       next_line += tem03*32
  1142.  
  1143.       @sprite.bitmap.draw_text(0,next_line,400,32,"[防具]",0)
  1144.       next_line += 32
  1145.  
  1146.       tem04 = 0
  1147.       if armor == "无"
  1148.         @sprite.bitmap.draw_text(0,next_line,400,32,armor,0)
  1149.         tem04 += 1
  1150.       else
  1151.         armor.each do |id,number|
  1152.           name = $data_armors[id].name
  1153.           pos04 = armor.index([id,number])
  1154.           icon_name = $data_armors[id].icon_name
  1155.  
  1156.           bt = RPG::Cache.icon(icon_name)
  1157.           rect1 = Rect.new(0,next_line+pos04*32,24,24)
  1158.           rect2 = Rect.new(0,0,bt.width,bt.height)
  1159.           @sprite.bitmap.stretch_blt(rect1,bt,rect2)
  1160.  
  1161.           @sprite.bitmap.draw_text(64,next_line+pos04*32,400,32,name,0)
  1162.           @sprite.bitmap.draw_text(300,next_line+pos04*32,100,32,"x"+number.to_s,0)
  1163.         end  
  1164.         tem04 += armor.size
  1165.       end
  1166.       next_line += tem04*32
  1167.  
  1168.       @sprite.bitmap.font.color = getColor(1)
  1169.       @sprite.bitmap.draw_text(0,next_line,400,32,TEXT[4],0)
  1170.       @sprite.bitmap.font.color = getColor(0)
  1171.       next_line += 32
  1172.  
  1173.       @sprite.bitmap.auto_line_draw_text(0,next_line,reward_des,40,32,0)
  1174.  
  1175.  
  1176.   end  
  1177.  
  1178. end   
  1179. #-----------------------------------------------------------------------------
  1180. # 场景部分
  1181. #-----------------------------------------------------------------------------
  1182. class SceneMission
  1183.   attr_accessor     :message
  1184.   attr_accessor     :reward_list
  1185.   def main
  1186.     # 外部接口
  1187.     @message = ""
  1188.     @reward_list = {}
  1189.     @spriteset = Spriteset_Map.new
  1190.     @main_window = WindowMissionMain.new
  1191.     @main_window.active = true
  1192.     @can_accept = WindowCanAcceptList.new
  1193.     @can_accept.active = false
  1194.     @accepted = WindowAccetpedList.new
  1195.     @accepted.active = false
  1196.     @finished = WindowFinishList.new
  1197.     @finished.active = false
  1198.     @window_des = WindowMissionDes.new
  1199.     @window_des.active = false
  1200.     @result = Window_Help.new
  1201.     @result.active = false
  1202.     @result.visible = false
  1203.     @result.x,@result.y,@result.z = 0,200,@window_des.z+100
  1204.     # @yes_or_no = WindowYesOrNo.new
  1205.     Graphics.transition
  1206.     loop do
  1207.       Graphics.update
  1208.       Input.update
  1209.       update
  1210.       if $scene != self
  1211.         break
  1212.       end
  1213.     end
  1214.     Graphics.freeze
  1215.     @main_window.dispose
  1216.     @can_accept.dispose
  1217.     @accepted.dispose
  1218.     @finished.dispose
  1219.     @window_des.dispose
  1220.     @result.dispose
  1221.     @spriteset.dispose
  1222.   end
  1223.  
  1224.   def update
  1225.     return update_main if @main_window.active
  1226.     return update_can_accept if @can_accept.active
  1227.     return update_accepted if @accepted.active
  1228.     return update_finished if @finished.active
  1229.     return update_window_des if @window_des.active
  1230.     return update_result if @result.active
  1231.   end  
  1232.   def update_main
  1233.     @main_window.update
  1234.     if Input.trigger?(Input::B)
  1235.       $game_system.se_play($data_system.cancel_se)
  1236.       $scene = Scene_Map.new
  1237.       return
  1238.     end  
  1239.     if Input.trigger?(Input::C)
  1240.       $game_system.se_play($data_system.decision_se)
  1241.       @main_window.visible = false
  1242.       @main_window.active = false
  1243.       case @main_window.index
  1244.       when 0 # 接受
  1245.         #$scene = Scene_Questdiary.new
  1246.         @can_accept.active = true
  1247.         @can_accept.visible = true
  1248.         @can_accept.refresh(*MissionList.canMissionList)
  1249.         @can_accept.index = 0
  1250.         return
  1251.       when 1 # 提交
  1252.         @accepted.active = true
  1253.         @accepted.visible = true
  1254.         @accepted.refresh(*$game_system.missionNameSort)
  1255.         @accepted.index = 0
  1256.         return
  1257.       when 2 # 查看
  1258.         @accepted.active = true
  1259.         @accepted.visible = true
  1260.         @accepted.refresh(*$game_system.missionNameSort)
  1261.         @accepted.index = 0
  1262.         return
  1263.       when 3 # 完成
  1264.         @finished.active = true
  1265.         @finished.visible = true
  1266.         @finished.refresh(*$game_system.finishNameSort)
  1267.         @finished.index = 0
  1268.         return
  1269.       end
  1270.     end
  1271.   end
  1272.   def update_can_accept
  1273.     @can_accept.update
  1274.     if Input.trigger?(Input::B)
  1275.       $game_system.se_play($data_system.cancel_se)
  1276.       @can_accept.active = false
  1277.       @can_accept.visible = false
  1278.  
  1279.       @main_window.visible = true
  1280.       @main_window.active = true
  1281.       # @main_window.index = 0
  1282.       return
  1283.     end  
  1284.     if Input.trigger?(Input::C)
  1285.       $game_system.se_play($data_system.decision_se)
  1286.       name = MissionList.canMissionList[@can_accept.index]
  1287.  
  1288.       return if $game_system.missions[name] != nil
  1289.  
  1290.       @can_accept.active = false
  1291.       @can_accept.visible = false
  1292.  
  1293.       @window_des.visible = true
  1294.       @window_des.refresh(MissionList.canMissionList[@can_accept.index],0)
  1295.       @window_des.active = true
  1296.       return
  1297.     end
  1298.   end  
  1299.  
  1300.   # 接受了的列表
  1301.   def update_accepted
  1302.     @accepted.update
  1303.     if Input.trigger?(Input::B)
  1304.       $game_system.se_play($data_system.cancel_se)
  1305.       @accepted.active = false
  1306.       @accepted.visible = false
  1307.  
  1308.       @main_window.visible = true
  1309.       @main_window.active = true
  1310.       # @main_window.index = 0
  1311.     end  
  1312.  
  1313.     if Input.trigger?(Input::C)
  1314.       $game_system.se_play($data_system.decision_se)
  1315.  
  1316.       case @main_window.index
  1317.       when 1 #提交 检索任务
  1318.         return if $game_system.missionNameSort[@accepted.index].nil?
  1319.         Mission.checkMission($game_system.missionNameSort[@accepted.index])
  1320.         @accepted.active = false
  1321.         @result.set_text(@message,1)
  1322.         @result.active = true
  1323.         @result.visible = true
  1324.  
  1325.       when 2
  1326.         if $game_system.missionNameSort[@accepted.index].nil?
  1327.           return
  1328.         end  
  1329.         @accepted.active = false
  1330.         @accepted.visible = false
  1331.  
  1332.         @window_des.active = true
  1333.         @window_des.visible = true
  1334.  
  1335.         @window_des.refresh($game_system.missionNameSort[@accepted.index],1)
  1336.       when 3
  1337.       end
  1338.     end
  1339.   end  
  1340.  
  1341.   # 完成了的列表
  1342.   def update_finished
  1343.     @finished.update
  1344.     if Input.trigger?(Input::C)
  1345.       return if $game_system.finishNameSort[@finished.index].nil?
  1346.       $game_system.se_play($data_system.decision_se)
  1347.  
  1348.       @finished.active = false
  1349.       @finished.visible = false
  1350.  
  1351.       @window_des.active = true
  1352.       @window_des.visible = true
  1353.  
  1354.       @window_des.refresh($game_system.finishNameSort[@finished.index],2)
  1355.       return
  1356.     end
  1357.     if Input.trigger?(Input::B)
  1358.       $game_system.se_play($data_system.cancel_se)
  1359.       @finished.active = false
  1360.       @finished.visible = false
  1361.  
  1362.       @main_window.visible = true
  1363.       @main_window.active = true
  1364.       # @main_window.index = 0
  1365.       return
  1366.     end
  1367.   end
  1368.  
  1369.  
  1370.   def update_window_des
  1371.     @window_des.update
  1372.     if Input.trigger?(Input::C)
  1373.       case @main_window.index
  1374.       when 0
  1375.         $game_system.se_play($data_system.decision_se)
  1376.         @window_des.active = false
  1377.         @result.active = true
  1378.         name = MissionList.canMissionList[@can_accept.index]
  1379.        # MissionList.Start(name)
  1380.         @result.set_text("该任务请联系相关NPC" + name,1)
  1381.       when 1 # 提交任务
  1382.       when 2 # 查看任务
  1383.       when 3 # 完成列表
  1384.       end
  1385.       return
  1386.     end
  1387.     if Input.trigger?(Input::B)
  1388.       $game_system.se_play($data_system.cancel_se)
  1389.       @window_des.visible = false
  1390.       @window_des.active = false
  1391.       @window_des.nVisible
  1392.       case @main_window.index
  1393.       # 接受
  1394.       when 0
  1395.         @can_accept.active = true
  1396.         @can_accept.visible = true
  1397.         return
  1398.       # 提交  
  1399.       when 2
  1400.         @accepted.active = true
  1401.         @accepted.visible = true
  1402.         return
  1403.       when 3
  1404.         @finished.active = true
  1405.         @finished.visible = true
  1406.       end  
  1407.     end
  1408.   end  
  1409.  
  1410.   def update_result
  1411.     if Input.trigger?(Input::C)
  1412.       $game_system.se_play($data_system.decision_se)
  1413.  
  1414.       @result.active = false
  1415.       @result.visible = false
  1416.  
  1417.       @window_des.visible = false
  1418.       @window_des.nVisible
  1419.       @can_accept.visible = false
  1420.       @accepted.visible = false
  1421.       @finished.visible = false
  1422.  
  1423.       @main_window.visible = true
  1424.       @main_window.active = true
  1425.       @main_window.index = 0
  1426.  
  1427.       return
  1428.     end  
  1429.     @result.update
  1430.   end
  1431.  
  1432. end
  1433.  
  1434. #-----------------------------------------------------------------------------
  1435. # 结束
  1436. #-----------------------------------------------------------------------------

Lv3.寻梦者

梦石
0
星屑
1075
在线时间
159 小时
注册时间
2020-9-19
帖子
23
2
 楼主| 发表于 2023-11-10 21:47:45 | 显示全部楼层
谢谢谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-7 07:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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