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

Project1

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

[已经解决] 怎么把这个任务系统在界面出来?

[复制链接]

Lv2.观梦者

梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
帖子
587
跳转到指定楼层
1
发表于 2014-7-31 16:49:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个脚本怎么用?

就是说怎么在界面加上一个任务的选项
然后里面有任务。。。

然后怎么产生任务。。

怎么判定完成任务。。

还有放弃任务的选项。。

怎么办,怎么做

求解答

RUBY 代码复制
  1. #==============================================================================02.# ■ 弹性滚动地图 V 1.00 BY SLICK03.#------------------------------------------------------------------------------04.#  处理主角的类。事件启动的判定、以及地图的滚动等功能。05.# 本类的实例请参考 $game_player。06.# 我:。。。这个黄金版已经被改的面目全非了07.#==============================================================================08. 09.class Game_Player < Game_Character10.  MOVESPEA = 0.265625#这数值。。。囧11.  def update_scroll(last_real_x, last_real_y)12.    ax1 = $game_map.adjust_x(last_real_x)13.    ay1 = $game_map.adjust_y(last_real_y)14.    ax2 = $game_map.adjust_x(@real_x)15.    ay2 = $game_map.adjust_y(@real_y)16.    movespeb = (2 ** (@move_speed+1))*MOVESPEA17.    movesped = movespeb / Graphics.width18.    movespec = movespeb / Graphics.height19.    tmp=center_x-ax220.    $game_map.scroll_left(movesped*tmp) if tmp>021.    $game_map.scroll_right(-movesped*tmp) if tmp<022.    tmp=center_y-ay223.    $game_map.scroll_up(movespec*tmp) if tmp>024.    $game_map.scroll_down(-movespec*tmp) if tmp<0    25.  end  26.end#==============================================================================
  2. # 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
  3. # 完成任务:$game_party.finish_task(领取任务时设定的数字)
  4. # 如:前面有事件$game_party.get_task(1,"测试","只是测试")
  5. # 后面完成任务的脚本就是$game_party.finish_task(1)
  6. # 召唤任务界面:SceneManager.call(Scene_Task)
  7. #==============================================================================
  8.  
  9. class Task
  10.   attr_reader :desc
  11.   attr_reader :finished
  12.   def initialize(origin_name,desc)
  13.     @origin_name = origin_name
  14.     @desc = desc
  15.     @finished = false
  16.   end
  17.   def name
  18.     if @finished
  19.       return @origin_name + "(完成)"
  20.     else
  21.       return @origin_name
  22.     end
  23.   end
  24.   def finish
  25.     @finished = true
  26.   end
  27.  
  28. end
  29.  
  30. class Game_Party < Game_Unit
  31.   alias old_init initialize
  32.   def initialize
  33.     old_init
  34.     @tasks = {}
  35.   end
  36.   def get_task(i,name,desc)
  37.     @tasks[i]=Task.new(name,desc)
  38.   end
  39.   def have_task?(i)
  40.     @tasks[i] != nil
  41.   end
  42.   def finish_task(i)
  43.     @tasks[i].finish if have_task?(i)
  44.   end
  45.   def unfinished_tasks
  46.     n = []
  47.     for i in @tasks.values
  48.       next if i.finished
  49.       n.push(i)
  50.     end
  51.     return n
  52.   end
  53.   def finished_tasks
  54.     n = []
  55.     for i in @tasks.values
  56.       next unless i.finished
  57.       n.push(i)
  58.     end
  59.     return n
  60.   end
  61. end
  62.  
  63. class Window_Task_Type < Window_HorzCommand
  64.   #--------------------------------------------------------------------------
  65.   # ● オブジェクト初期化
  66.   #--------------------------------------------------------------------------
  67.   def initialize
  68.     super(0, 0)
  69.     activate
  70.   end
  71.   def window_width
  72.     return Graphics.width
  73.   end
  74.   def col_max
  75.     return 3
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● コマンドリストの作成
  79.   #--------------------------------------------------------------------------
  80.   def make_command_list
  81.     add_command("未完成任务",  :unfinished_task)
  82.     add_command("已完成任务", :finished_task)
  83.     add_command("取消", :cancel)
  84.   end
  85. end
  86.  
  87. class Window_TaskLeft < Window_Selectable
  88.   attr_reader :finished
  89.   def initialize
  90.     super(0,48,160,Graphics.height - 48)
  91.     create_contents
  92.     @finished = false
  93.     @index = 0
  94.     refresh
  95.     deactivate
  96.   end
  97.   def set_finish(finish)
  98.     @finished = finish
  99.     set_item_max
  100.   end
  101.   def item_max
  102.     return @item_max != nil ? @item_max : 0
  103.   end
  104.   def set_item_max
  105.     if @finished
  106.       @item_max = $game_party.finished_tasks.size
  107.     else
  108.       @item_max = $game_party.unfinished_tasks.size
  109.     end
  110.   end
  111.  
  112.   def refresh
  113.     set_item_max
  114.     super
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 項目の描画
  118.   #--------------------------------------------------------------------------
  119.   def draw_item(index)
  120.     text = ""
  121.     unless @finished
  122.       if $game_party.unfinished_tasks[index] != nil
  123.         text = $game_party.unfinished_tasks[index].name
  124.       end
  125.     else
  126.       if $game_party.finished_tasks[index] != nil
  127.         text = $game_party.finished_tasks[index].name  
  128.       end
  129.     end
  130.     draw_text(item_rect_for_text(index), text)
  131.   end
  132.  
  133. end
  134.  
  135. class Window_TaskRight < Window_Base
  136.   attr_reader :left_index
  137.   def initialize
  138.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  139.     create_contents
  140.     @left_index = 0
  141.     @finished = false
  142.     refresh
  143.   end
  144.   def set_index(i)
  145.     @left_index = i
  146.     refresh
  147.   end
  148.   def set_finish(i)
  149.     @finished = i
  150.   end
  151.  
  152.   def refresh
  153.     contents.clear
  154.     draw_desc
  155.   end
  156.   def draw_desc
  157.     if @finished
  158.       if $game_party.finished_tasks[@left_index] != nil
  159.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  160.       end
  161.     else
  162.       if $game_party.unfinished_tasks[@left_index] != nil
  163.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  164.       end
  165.     end
  166.   end
  167.  
  168. end
  169.  
  170. class Scene_Task < Scene_Base
  171.   def start
  172.     super
  173.     create_task_type_window
  174.     create_left_window
  175.     create_right_window
  176.   end
  177.   def update
  178.     super
  179.     if @left_window.active
  180.       if Input.trigger?(:B)
  181.         @left_window.deactivate
  182.         @task_type_window.activate
  183.       end
  184.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  185.         @right_window.set_finish(@left_window.finished)
  186.         @right_window.set_index(@left_window.index)
  187.       end
  188.     end
  189.   end
  190.  
  191.   def terminate
  192.     super
  193.   end
  194.   def create_task_type_window
  195.     @task_type_window = Window_Task_Type.new
  196.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  197.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  198.     @task_type_window.set_handler(:cancel,method(:return_scene))
  199.   end
  200.   def create_left_window
  201.     @left_window = Window_TaskLeft.new
  202.     @left_window.set_finish(false)
  203.     @left_window.refresh
  204.   end
  205.   def create_right_window
  206.     @right_window = Window_TaskRight.new
  207.     @right_window.refresh
  208.   end
  209.   def view_unfinished_task
  210.     @left_window.set_finish(false)
  211.     @left_window.refresh
  212.     @left_window.activate
  213.     @task_type_window.deactivate
  214.     @right_window.set_finish(false)
  215.     @right_window.set_index(@left_window.index)
  216.   end
  217.   def view_finished_task
  218.     @left_window.set_finish(true)
  219.     @left_window.refresh
  220.     @left_window.activate
  221.     @task_type_window.deactivate
  222.     @right_window.set_finish(true)
  223.     @right_window.set_index(@left_window.index)
  224.   end
  225.  
  226. end
我忘了,我要怎么遗忘。

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-7-31 17:21:56 | 只看该作者
按照下面这段注释调用事件脚本:
# 领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
# 完成任务:$game_party.finish_task(领取任务时设定的数字)
# 如:前面有事件$game_party.get_task(1,"测试","只是测试")
# 后面完成任务的脚本就是$game_party.finish_task(1)
# 召唤任务界面:SceneManager.call(Scene_Task)

至于“怎么在界面加上一个任务的选项”
@VIPArcher 上吧~
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
帖子
587
3
 楼主| 发表于 2014-7-31 17:28:02 | 只看该作者
我忘了,我要怎么遗忘。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

4
发表于 2014-7-31 17:37:32 | 只看该作者
本帖最后由 VIPArcher 于 2014-7-31 17:38 编辑
千夙 发表于 2014-7-31 17:28
@VIPArcher
  1. class Scene_Menu < Scene_MenuBase
  2.   alias vip_create_command_window create_command_window
  3.   def create_command_window
  4.     vip_create_command_window
  5.     @command_window.set_handler(:task,    method(:command_task))
  6.   end
  7.   def command_task
  8.     SceneManager.call(Scene_Task)#召唤任务界面:SceneManager.call(Scene_Task)
  9.   end
  10. end


  11. class Window_MenuCommand < Window_Command
  12.   alias vip_add_main_commands add_main_commands
  13.   def add_main_commands
  14.     vip_add_main_commands
  15.     add_command("任务", :task,   main_commands_enabled)#添加按钮
  16.   end  
  17. end
复制代码

点评

谢谢亲测可用  发表于 2014-7-31 17:40

评分

参与人数 1星屑 +1 梦石 +1 收起 理由
taroxd + 1 + 1 我觉得我是不是越来越懒了

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 06:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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