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

Project1

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

[已经解决] 请问怎么添加一个菜单里的选项

[复制链接]

Lv1.梦旅人

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

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

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

x
如题,我有一个任务的脚本但是我想要在菜单里面加一个选项就是任务
=begin
领取任务:$game_party.get_task(任意数字,任务名称,任务描述)
完成任务:$game_party.finish_task(领取任务时设定的数字)
对已有任务追加说明:$game_party.add_task(任务编号,任务追加描述)


如:
前面有事件$game_party.get_task(1,"测试","只是测试")


此时任务1的说明为


>只是测试


后面完成任务的脚本就是$game_party.finish_task(1)


追加说明$game_party.add_task(1,"真的只是测试哦")


此时任务1的说明为:
>只是测试
>真的只是测试哦


召唤任务界面:SceneManager.call(Scene_Task)


该脚本来自66rpg,发布者:韩云溪
改进:工藤由纪(论坛ID:zyyczp)
=end


#===========================================================
#●任务系统
#===========================================================
class Task
attr_reader :desc
attr_reader :finished
def initialize(origin_name,desc)
@origin_name = origin_name
@desc = desc
@finished = false
end
def name
if @finished
return @origin_name + "(完成)"
else
return @origin_name
end
end
def desc=(desc)
@desc = desc
end

def finish
@finished = true
end

end


class Game_Party < Game_Unit
alias old_init initialize
def initialize
old_init
@tasks = {}
end
def add_task(i,desc)
@tasks[i].desc = @tasks[i].desc + "\n" + desc
end
def get_task(i,name,desc)
@tasks[i]=Task.new(name,desc)
end
def have_task?(i)
@tasks[i] != nil
end
def finish_task(i)
@tasks[i].finish if have_task?(i)
end
def unfinished_tasks
n = []
for i in @tasks.values
next if i.finished
n.push(i)
end
return n
end
def finished_tasks
n = []
for i in @tasks.values
next unless i.finished
n.push(i)
end
return n
end
end


class Window_Task_Type < Window_HorzCommand
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 0)
activate
end
def window_width
return Graphics.width
end
def col_max
return 3
end
#--------------------------------------------------------------------------
# ● コマンドリストの作成
#--------------------------------------------------------------------------
def make_command_list
add_command("未完成任务", :unfinished_task)
add_command("已完成任务", :finished_task)
add_command("取消", :cancel)
end
end


class Window_TaskLeft < Window_Selectable
attr_reader :finished
def initialize
super(0,48,160,Graphics.height - 48)
create_contents
@finished = false
@index = 0
refresh
deactivate
end
def set_finish(finish)
@finished = finish
set_item_max
end
def item_max
return @item_max != nil ? @item_max : 0
end
def set_item_max
if @finished
@item_max = $game_party.finished_tasks.size
else
@item_max = $game_party.unfinished_tasks.size
end
end


def refresh
set_item_max
super
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
text = ""
unless @finished
if $game_party.unfinished_tasks[index] != nil
text = $game_party.unfinished_tasks[index].name
end
else
if $game_party.finished_tasks[index] != nil
text = $game_party.finished_tasks[index].name
end
end
draw_text(item_rect_for_text(index), text)
end


end


class Window_TaskRight < Window_Base
attr_reader :left_index
def initialize
super(160,48,Graphics.width - 160,Graphics.height - 48)
create_contents
@left_index = 0
@finished = false
refresh
end
def set_index(i)
@left_index = i
refresh
end
def set_finish(i)
@finished = i
end

def refresh
contents.clear
draw_desc
end
def draw_desc
if @finished
if $game_party.finished_tasks[@left_index] != nil
draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc)
end
else
if $game_party.unfinished_tasks[@left_index] != nil
draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc)
end
end
end

end


class Scene_Task < Scene_Base
def start
super
create_task_type_window
create_left_window
create_right_window
end
def update
super
if @left_window.active
if Input.trigger?(:B)
@left_window.deactivate
@task_type_window.activate
end
if Input.trigger?(:UP) || Input.trigger?(:DOWN)
@right_window.set_finish(@left_window.finished)
@right_window.set_index(@left_window.index)
end
end
end

def terminate
super
end
def create_task_type_window
@task_type_window = Window_Task_Type.new
@task_type_window.set_handler(:unfinished_task,method(:view_unfinished_task))
@task_type_window.set_handler(:finished_task,method(:view_finished_task))
@task_type_window.set_handler(:cancel,method(:return_scene))
end
def create_left_window
@left_window = Window_TaskLeft.new
@left_window.set_finish(false)
@left_window.refresh
end
def create_right_window
@right_window = Window_TaskRight.new
@right_window.refresh
end
def view_unfinished_task
@left_window.set_finish(false)
@left_window.refresh
@left_window.activate
@task_type_window.deactivate
@right_window.set_finish(false)
@right_window.set_index(@left_window.index)
end
def view_finished_task
@left_window.set_finish(true)
@left_window.refresh
@left_window.activate
@task_type_window.deactivate
@right_window.set_finish(true)
@right_window.set_index(@left_window.index)
end

end
上面的就是脚本

Lv4.逐梦者

梦石
8
星屑
4801
在线时间
1567 小时
注册时间
2014-1-9
帖子
402

开拓者

2
发表于 2016-10-1 21:57:31 | 只看该作者
本帖最后由 余音·魔眼 于 2016-10-1 22:00 编辑

在Window_MenuCommand第65行后面添加
  1. #--------------------------------------------------------------------------
  2.   # ● 获取任务的有效状态
  3.   #--------------------------------------------------------------------------
  4.   def task_enabled
  5.     $game_party.unfinished_tasks.size>= 1 || $game_party.finished_tasks.size>= 1
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 独自添加指令用
  9.   #--------------------------------------------------------------------------
  10.   def add_original_commands
  11.     add_command("任务", :task,task_enabled)
  12.   end
复制代码

评分

参与人数 1星屑 +250 梦石 +1 收起 理由
RaidenInfinity + 250 + 1 楼主认可的解答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2016-9-19
帖子
7
3
 楼主| 发表于 2016-10-1 21:59:41 | 只看该作者
余音·魔眼 发表于 2016-10-1 21:57
在Window_MenuCommand第65行后面添加即可

感谢大神
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 00:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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