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

Project1

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

[已经解决] 这个任务脚本怎么添加新任务???

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2015-5-18
帖子
9
跳转到指定楼层
1
发表于 2015-5-20 18:09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个任务脚本怎么添加新任务???好像是叫韩云溪脚本。找不到添加新任务的地方啊我

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2015-5-18
帖子
9
2
 楼主| 发表于 2015-5-20 18:11:35 | 只看该作者
  1. #用法:
  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. #========================================================
  10. class Task
  11.   attr_reader :desc
  12.   attr_reader :finished
  13.   def initialize(origin_name,desc)
  14.     @origin_name = origin_name
  15.     @desc = desc
  16.     @finished = false
  17.   end
  18.   def name
  19.     if @finished
  20.       return @origin_name + "(完成)"
  21.     else
  22.       return @origin_name
  23.     end
  24.   end
  25.   def finish
  26.     @finished = true
  27.   end

  28. end

  29. class Game_Party < Game_Unit
  30.   alias old_init initialize
  31.   def initialize
  32.     old_init
  33.     @tasks = {}
  34.   end
  35.   def get_task(i,name,desc)
  36.     @tasks[i]=Task.new(name,desc)
  37.   end
  38.   def have_task?(i)
  39.     @tasks[i] != nil
  40.   end
  41.   def finish_task(i)
  42.     @tasks[i].finish if have_task?(i)
  43.   end
  44.   def unfinished_tasks
  45.     n = []
  46.     for i in @tasks.values
  47.       next if i.finished
  48.       n.push(i)
  49.     end
  50.     return n
  51.   end
  52.   def finished_tasks
  53.     n = []
  54.     for i in @tasks.values
  55.       next unless i.finished
  56.       n.push(i)
  57.     end
  58.     return n
  59.   end
  60. end

  61. #========================================================
  62. # * 任务界面最上面的横向选项区域
  63. #========================================================
  64. class Window_Task_Type < Window_HorzCommand
  65.   #--------------------------------------------------------------------------
  66.   # ● 对象初期化
  67.   #--------------------------------------------------------------------------
  68.   def initialize
  69.     super(0, 0)
  70.     activate
  71.   end
  72.   def window_width
  73.     return Graphics.width
  74.   end
  75.   def col_max
  76.     return 3
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 生成指令
  80.   #--------------------------------------------------------------------------
  81.   def make_command_list
  82.     add_command("未完成任务",  :unfinished_task)
  83.     add_command("已完成任务", :finished_task)
  84.     add_command("取消", :cancel)
  85.   end
  86. end

  87. #========================================================
  88. # * 任务界面左边的纵向选项区域
  89. #========================================================
  90. class Window_TaskLeft < Window_Selectable
  91.   attr_reader :finished
  92.   def initialize
  93.     super(0,48,200,Graphics.height - 48)
  94.     create_contents
  95.     @finished = false
  96.     @index = 0
  97.     refresh
  98.     deactivate
  99.   end
  100.   def set_finish(finish)
  101.     @finished = finish
  102.     set_item_max
  103.   end
  104.   def item_max
  105.     return @item_max != nil ? @item_max : 0
  106.   end
  107.   def set_item_max
  108.     if @finished
  109.       @item_max = $game_party.finished_tasks.size
  110.     else
  111.       @item_max = $game_party.unfinished_tasks.size
  112.     end
  113.   end

  114.   def refresh
  115.     set_item_max
  116.     super
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 描绘项目
  120.   #--------------------------------------------------------------------------
  121.   def draw_item(index)
  122.     text = ""
  123.     unless @finished
  124.       if $game_party.unfinished_tasks[index] != nil
  125.         text = $game_party.unfinished_tasks[index].name
  126.       end
  127.     else
  128.       if $game_party.finished_tasks[index] != nil
  129.         text = $game_party.finished_tasks[index].name  
  130.       end
  131.     end
  132.     draw_text(item_rect_for_text(index), text)
  133.   end

  134. end

  135. #========================================================
  136. # * 任务界面右边的任务描述区域
  137. #========================================================
  138. class Window_TaskRight < Window_Base
  139.   attr_reader :left_index
  140.   def initialize
  141.     super(200,48,Graphics.width - 200,Graphics.height - 48)
  142.     create_contents
  143.     @left_index = 0
  144.     @finished = false
  145.     refresh
  146.   end
  147.   def set_index(i)
  148.     @left_index = i
  149.     refresh
  150.   end
  151.   def set_finish(i)
  152.     @finished = i
  153.   end

  154.   def refresh
  155.     contents.clear
  156.     draw_desc
  157.   end
  158.   def draw_desc
  159.     if @finished
  160.       if $game_party.finished_tasks[@left_index] != nil
  161.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  162.       end
  163.     else
  164.       if $game_party.unfinished_tasks[@left_index] != nil
  165.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  166.       end
  167.     end
  168.   end

  169. end

  170. #========================================================
  171. # * 完全看不懂在说什么
  172. #========================================================
  173. class Scene_Task < Scene_Base
  174.   def start
  175.     super
  176.     create_task_type_window
  177.     create_left_window
  178.     create_right_window
  179.   end
  180.   def update
  181.     super
  182.     if @left_window.active
  183.       if Input.trigger?(:B)
  184.         @left_window.deactivate
  185.         @task_type_window.activate
  186.       end
  187.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  188.         @right_window.set_finish(@left_window.finished)
  189.         @right_window.set_index(@left_window.index)
  190.       end
  191.     end
  192.   end

  193.   def terminate
  194.     super
  195.   end
  196.   def create_task_type_window
  197.     @task_type_window = Window_Task_Type.new
  198.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  199.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  200.     @task_type_window.set_handler(:cancel,method(:return_scene))
  201.   end
  202.   def create_left_window
  203.     @left_window = Window_TaskLeft.new
  204.     @left_window.set_finish(false)
  205.     @left_window.refresh
  206.   end
  207.   def create_right_window
  208.     @right_window = Window_TaskRight.new
  209.     @right_window.refresh
  210.   end
  211.   def view_unfinished_task
  212.     @left_window.set_finish(false)
  213.     @left_window.select(0)
  214.     @left_window.refresh
  215.     @left_window.activate
  216.     @task_type_window.deactivate
  217.     @right_window.set_finish(false)
  218.     @right_window.set_index(@left_window.index)
  219.   end
  220.   def view_finished_task
  221.     @left_window.set_finish(true)
  222.     @left_window.select(0)
  223.     @left_window.refresh
  224.     @left_window.activate
  225.     @task_type_window.deactivate
  226.     @right_window.set_finish(true)
  227.     @right_window.set_index(@left_window.index)
  228.   end

  229. end

  230. #========================================================
  231. # * 在菜单里加入“任务”选项
  232. #========================================================
  233. class Window_MenuCommand < Window_Command
  234.   alias add_original_commands_task_zabing add_original_commands
  235.   def add_original_commands
  236.     add_original_commands_task_zabing
  237.     add_command("事件任务", :maphint)
  238.   end
  239. end
  240. class Scene_Menu < Scene_MenuBase
  241.   alias create_command_window_task_zabing create_command_window
  242.   def create_command_window
  243.     create_command_window_task_zabing
  244.     @command_window.set_handler(:maphint,   method(:command_maphint))
  245.   end
  246.   def command_maphint
  247.     SceneManager.call(Scene_Task)
  248.   end
  249. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2015-5-18
帖子
9
3
 楼主| 发表于 2015-5-20 18:12:34 | 只看该作者
以前有个版本是在这里添加新任务,但这里面的没有啊
  1. Task = []
  2.   Task[0] = { # 任务id
  3.   "Icon" => 406, # 图标id
  4.   "Name" => "遗失的手风琴",# 任务名称
  5.   "Title Help" => "委托人:音乐家", # 任务简短说明
  6.   "Caption" => "   村庄里有一个伟大的音乐家,应邀去参加一个音乐会,但是他的手风琴不见了,你能帮他找找吗?",
  7.   "Reward" => {"Item" => [[1, 1]],           # 完成任务后奖励的物品
  8.                "Weapon" => [[1, 1], [2, 1]],         # 完成任务后奖励的武器
  9.                "Armor" => [[1, 1], [2,1]],          # 完成任务后奖励的防具
  10.                "Gold" => 0,            # 完成任务后奖励的金钱
  11.                "Level_Plus" => [[0,5],[1,5]],     # 完成任务后奖励的等级
  12.                "Exp_Plus" => [[0, 5], [2, 5]]        # 完成任务后奖励的经验
  13.                },
  14.   "Can Abandonment?" => true, # 可否放弃此任务
  15.   "Level" => 3,  # 任务等级
  16.   "Max Complete Value" => 10, # 任务最大完成度
  17.   }
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
115 小时
注册时间
2012-11-15
帖子
119
4
发表于 2015-5-20 18:37:34 | 只看该作者
仔细看,这个脚本并不需要在脚本内设置,而是在事件脚本调用
#领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
即如果在事件脚本执行,就会出现一个对应的任务。
如在事件脚本执行$game_party.get_task(1,测试,只是测试)
任务栏就会出现一个序号为1 名字为测试,点开后的描述为只是测试的任务
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
251 小时
注册时间
2010-7-22
帖子
88
5
发表于 2015-5-20 18:56:12 | 只看该作者
貌似加上#的都是注释
所以你按着格式复制,然后你再把第二个任务改成1 第三个改成2
貌似所有脚本都有说明啊,

评分

参与人数 1星屑 +200 收起 理由
taroxd + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2015-5-18
帖子
9
6
 楼主| 发表于 2015-5-20 19:18:41 | 只看该作者
zhaoxun96 发表于 2015-5-20 18:37
仔细看,这个脚本并不需要在脚本内设置,而是在事件脚本调用
#领取任务:$game_party.get_task(任意数字, ...

明白了 谢谢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2015-5-18
帖子
9
7
 楼主| 发表于 2015-5-20 19:19:35 | 只看该作者
szcszc156 发表于 2015-5-20 18:56
貌似加上#的都是注释
所以你按着格式复制,然后你再把第二个任务改成1 第三个改成2
貌似所有脚本都有说明 ...

才发现两个脚本不一样的 我之前给弄混了  
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
251 小时
注册时间
2010-7-22
帖子
88
8
发表于 2015-5-20 20:10:13 | 只看该作者
wuer 发表于 2015-5-20 19:19
才发现两个脚本不一样的 我之前给弄混了

你解决了问题就好了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-12 09:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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