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

Project1

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

[已经解决] 【高手高手求教!】任务脚本怎么使用啊?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
268 小时
注册时间
2013-1-24
帖子
277
跳转到指定楼层
1
 楼主| 发表于 2013-3-7 13:31:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
昨天下载了别人用的,【任务什么的真的很需要,所以下了】
然后看到别人的脚本:call_guild
然后测试的时候看见了【看见了——【回音】】竟然是原本的。
我想说怎么自己创造任务啊,比如把【啦啦啦】改成【寻找早餐】这个任务。
脚本我有了,可就是不会!求教!


限度![size=7]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
20 小时
注册时间
2013-3-4
帖子
7
2
发表于 2013-3-7 15:08:07 | 只看该作者
你用的是合集日文的那个吗?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
567
在线时间
465 小时
注册时间
2009-10-11
帖子
407
3
发表于 2013-3-7 21:33:46 | 只看该作者
你說的是圖書館的這個嗎?↓
  1. class Task
  2.   attr_reader :desc
  3.   attr_reader :finished
  4.   def initialize(origin_name,desc)
  5.     @origin_name = origin_name
  6.     @desc = desc
  7.     @finished = false
  8.   end
  9.   def name
  10.     if @finished
  11.       return @origin_name + "(完成)"
  12.     else
  13.       return @origin_name
  14.     end
  15.   end
  16.   def finish
  17.     @finished = true
  18.   end
  19.    
  20. end

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

  53. class Window_Task_Type < Window_HorzCommand
  54.   #--------------------------------------------------------------------------
  55.   # ● オブジェクト初期化
  56.   #--------------------------------------------------------------------------
  57.   def initialize
  58.     super(0, 0)
  59.     activate
  60.   end
  61.   def window_width
  62.     return Graphics.width
  63.   end
  64.   def col_max
  65.     return 3
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● コマンドリストの作成
  69.   #--------------------------------------------------------------------------
  70.   def make_command_list
  71.     add_command("未完成任务",  :unfinished_task)
  72.     add_command("已完成任务", :finished_task)
  73.     add_command("取消", :cancel)
  74.   end
  75. end

  76. class Window_TaskLeft < Window_Selectable
  77.   attr_reader :finished
  78.   def initialize
  79.     super(0,48,160,Graphics.height - 48)
  80.     create_contents
  81.     @finished = false
  82.     @index = 0
  83.     refresh
  84.     deactivate
  85.   end
  86.   def set_finish(finish)
  87.     @finished = finish
  88.     set_item_max
  89.   end
  90.   def item_max
  91.     return @item_max != nil ? @item_max : 0
  92.   end
  93.   def set_item_max
  94.     if @finished
  95.       @item_max = $game_party.finished_tasks.size
  96.     else
  97.       @item_max = $game_party.unfinished_tasks.size
  98.     end
  99.   end

  100.   def refresh
  101.     set_item_max
  102.     super
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 項目の描画
  106.   #--------------------------------------------------------------------------
  107.   def draw_item(index)
  108.     text = ""
  109.     unless @finished
  110.       if $game_party.unfinished_tasks[index] != nil
  111.         text = $game_party.unfinished_tasks[index].name
  112.       end
  113.     else
  114.       if $game_party.finished_tasks[index] != nil
  115.         text = $game_party.finished_tasks[index].name  
  116.       end
  117.     end
  118.     draw_text(item_rect_for_text(index), text)
  119.   end

  120. end

  121. class Window_TaskRight < Window_Base
  122.   attr_reader :left_index
  123.   def initialize
  124.     super(160,48,Graphics.width - 160,Graphics.height - 48)
  125.     create_contents
  126.     @left_index = 0
  127.     @finished = false
  128.     refresh
  129.   end
  130.   def set_index(i)
  131.     @left_index = i
  132.     refresh
  133.   end
  134.   def set_finish(i)
  135.     @finished = i
  136.   end
  137.   
  138.   def refresh
  139.     contents.clear
  140.     draw_desc
  141.   end
  142.   def draw_desc
  143.     if @finished
  144.       if $game_party.finished_tasks[@left_index] != nil
  145.         draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
  146.       end
  147.     else
  148.       if $game_party.unfinished_tasks[@left_index] != nil
  149.         draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
  150.       end
  151.     end
  152.   end
  153.   
  154. end

  155. class Scene_Task < Scene_Base
  156.   def start
  157.     super
  158.     create_task_type_window
  159.     create_left_window
  160.     create_right_window
  161.   end
  162.   def update
  163.     super
  164.     if @left_window.active
  165.       if Input.trigger?(:B)
  166.         @left_window.deactivate
  167.         @task_type_window.activate
  168.       end
  169.       if Input.trigger?(:UP) || Input.trigger?(:DOWN)
  170.         @right_window.set_finish(@left_window.finished)
  171.         @right_window.set_index(@left_window.index)
  172.       end
  173.     end
  174.   end
  175.   
  176.   def terminate
  177.     super
  178.   end
  179.   def create_task_type_window
  180.     @task_type_window = Window_Task_Type.new
  181.     @task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
  182.     @task_type_window.set_handler(:finished_task,method(:view_finished_task))
  183.     @task_type_window.set_handler(:cancel,method(:return_scene))
  184.   end
  185.   def create_left_window
  186.     @left_window = Window_TaskLeft.new
  187.     @left_window.set_finish(false)
  188.     @left_window.refresh
  189.   end
  190.   def create_right_window
  191.     @right_window = Window_TaskRight.new
  192.     @right_window.refresh
  193.   end
  194.   def view_unfinished_task
  195.     @left_window.set_finish(false)
  196.     @left_window.refresh
  197.     @left_window.activate
  198.     @task_type_window.deactivate
  199.     @right_window.set_finish(false)
  200.     @right_window.set_index(@left_window.index)
  201.   end
  202.   def view_finished_task
  203.     @left_window.set_finish(true)
  204.     @left_window.refresh
  205.     @left_window.activate
  206.     @task_type_window.deactivate
  207.     @right_window.set_finish(true)
  208.     @right_window.set_index(@left_window.index)
  209.   end
  210.   
  211. end
复制代码
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
567
在线时间
465 小时
注册时间
2009-10-11
帖子
407
4
发表于 2013-3-7 21:38:52 | 只看该作者
如果你用的是上面的腳本,我跟你說用法~ (雖然圖書館也有了...)

在事件插入腳本↓
$game_party.get_task(1,"寻找早餐","找到國王指定的豐盛早餐。")
當你角色接觸後就接到這任務了。
然後完成任務後在給角色接觸這個腳本碼↓
$game_party.finish_task(1)
任務完成~!

然後呼出任務的指令是↓
SceneManager.call(Scene_Task)

這比較簡單你可以試試看~

点评

怎么领取奖励,然后菜单内会显示任务这两个字,不懂 -  发表于 2013-3-24 16:15
XIEXIE!  发表于 2013-3-22 12:50
额。 解决了。。。 打扰了  发表于 2013-3-20 00:42
终于找到个可以用的任务脚本了 谢谢大大 不过任务描述怎么让他第一行从头显示呢  发表于 2013-3-20 00:41
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
268 小时
注册时间
2013-1-24
帖子
277
5
 楼主| 发表于 2013-3-24 16:15:14 | 只看该作者
a000b1745 发表于 2013-3-7 21:38
如果你用的是上面的腳本,我跟你說用法~ (雖然圖書館也有了...)

在事件插入腳本↓

怎么领取奖励,然后菜单内会显示任务这两个字,不懂 - -
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
567
在线时间
465 小时
注册时间
2009-10-11
帖子
407
6
发表于 2013-3-24 17:17:08 | 只看该作者
妹妹 发表于 2013-3-24 16:15
怎么领取奖励,然后菜单内会显示任务这两个字,不懂 - -

接任務的時候,你在事件裡插入的選單中、找到第三頁找到右下角"腳本"
點下去有個空白框你可以插入代碼。

你在任務顯示的事件上用代碼放入"SceneManager.call(Scene_Task)"
就會顯示出任務頁。

A.
接任務的代碼是↓
$game_party.get_task(1,"初次試煉","打敗囚牢所釋放出的怪獸亞拉岡~! 並且取得他身上的牙齒。")

紅色那個"1",只是該任務的編號,你在解開任務那任務也要用一樣的編號。

B.
接著你在他達成任務的事件插入這個↓
$game_party.finish_task(1)
就代表他把任務1給完成了~!!

這是我舉的例子、當有第2.3.4....很多任務的時候,一樣方法把內容換一換就好了^_^
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
268 小时
注册时间
2013-1-24
帖子
277
7
 楼主| 发表于 2013-3-25 19:14:17 | 只看该作者
a000b1745 发表于 2013-3-24 17:17
接任務的時候,你在事件裡插入的選單中、找到第三頁找到右下角"腳本"
點下去有個空白框你可以插入代碼。
...

不是啊, 是在菜单里能查看的
万能小素材课堂开课啦!没有素材怎么办,这里查一下!

http://rpg.blue/forum.php?mod=viewthread&tid=328779&page=1&extra=#pid2281540
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
367
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

8
发表于 2013-3-27 10:31:01 | 只看该作者
本帖最后由 76213585 于 2013-3-27 12:29 编辑

這一斷無視
問這麼多....  菜單方式我也不是很懂
不過絕對不會默認有的..   
我也不是很懂  可是應該是在
Window_MenuCommand 內約45行區弄個..
  1. add_command(Vocab::mission, :mission, main_commands_enabled)
复制代码
然後在Scene_Menu 不管几行  就在
  1.   #--------------------------------------------------------------------------
  2.   # ● 指令“物品”
  3.   #--------------------------------------------------------------------------
  4.   def command_item
  5.     SceneManager.call(Scene_Item)
  6.   end
复制代码
的下面加上個
  1.   def command_mission
  2.     SceneManager.call(Scene_Task)
  3.   end
复制代码
我完全沒試過   只是照原理這應該可行

上面全部無視

我幫你找到了  很簡單就找到了  努力找点....
也幫你改了一下 記得要謝謝我阿 (哪招)
RUBY 代码复制
  1. class Window_MenuCommand < Window_Command  
  2.   alias Task_add_main_commands add_main_commands
  3.   def add_main_commands
  4.       Task_add_main_commands
  5.       add_command("任務", :Task, main_commands_enabled)
  6.   end
  7. end   
  8. class Scene_Menu < Scene_MenuBase
  9.    alias Task_create_command_window create_command_window
  10.    def create_command_window
  11.        Task_create_command_window  
  12.        @command_window.set_handler(:Task,     method(:Tasks))
  13.    end
  14.    def Task
  15.        SceneManager.call(Scene_Task)
  16.    end
  17. end

插入main上方即可

点评

我承認我完全不會...  发表于 2013-3-27 10:40
對不起 還要弄vocab 我不太懂 請問別人吧..  发表于 2013-3-27 10:35
也不要太下面了  发表于 2013-3-27 10:31

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
9
发表于 2013-3-27 20:31:34 | 只看该作者
http://rpg.blue/thread-221055-1-1.html

我个人用的是这一个,虽然是改进版,不过实际上应用方式一样,这帖子中有在菜单上加开启任务界面的方法,照着做就能在主菜单打开任务界面了。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1063
在线时间
89 小时
注册时间
2023-12-26
帖子
127
10
发表于 2024-3-16 12:50:50 | 只看该作者
说那么多还不如发一个工程案例出来让小白研究呢。
回复 支持 0 反对 1

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 10:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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