Project1
标题:
关于任务系统
[打印本页]
作者:
fish8
时间:
2015-7-19 18:13
标题:
关于任务系统
看了下搜索 好像任务系统只能靠脚本实现 疾风怒涛大大的资源也都没了 想问下谁还保存着好用的任务系统的脚本可否赏赐一个 稍微告知下使用办法 在下在此谢过了
作者:
黑崎一护
时间:
2015-7-19 18:24
本帖最后由 黑崎一护 于 2015-7-19 18:31 编辑
这个是描述型的
#encoding:utf-8
#==============================================================================
# ■ Task
#------------------------------------------------------------------------------
# 任务类。本类在 Game_Task 类的内部使用。
# 任务属性:名称,内容,是否是主线任务,是否有父任务
#==============================================================================
class Task
attr_reader :index
attr_reader :name
attr_reader :description
attr_reader :type
attr_reader :father_task
attr_reader :finished
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(index, name, description, type = true, father_task = -1)
@type = type
@name = name
@description = description
@father_task = father_task
@index = index
@finished = false
end
#--------------------------------------------------------------------------
# ● 是否是主线任务
#--------------------------------------------------------------------------
def key_task?
@type
end
#--------------------------------------------------------------------------
# ● 是否是子任务
#--------------------------------------------------------------------------
def has_father_task?
@father_task > -1
end
#--------------------------------------------------------------------------
# ● 完成任务
#--------------------------------------------------------------------------
def finish
@finished = true
end
end
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
alias old_init initialize
def initialize
old_init
@tasks = {}
@sub_tasks= {}
#定义了一个任务列表,提前把所有的任务都写进去了
@task_list=TaskList.new
@sub = false
end
#--------------------------------------------------------------------------
# ● 是否存在子任务
#--------------------------------------------------------------------------
def is_sub
@sub
end
#--------------------------------------------------------------------------
# ● 启用子任务
#--------------------------------------------------------------------------
def set_sub
@sub = true
end
#--------------------------------------------------------------------------
# ● 添加新的任务
#--------------------------------------------------------------------------
def new_task(i, name, desc, type, father_task = -1)
if !is_sub
@tasks[i] = tmp if !have_task?(i)
return
end
tmp = Task.new(i, name, desc, type, father_task)
if father_task < 0
@tasks[i] = tmp if !have_task?(i)
else
@sub_tasks[i] = tmp if father_task?(father_task) && !sub_task?(i)
end
end
#--------------------------------------------------------------------------
# ● 从已定义好的任务列表中添加新的任务
#--------------------------------------------------------------------------
def set_task(index)
temp = @task_list.get_task(index)
if !is_sub
@tasks[index] = temp if !have_task?(index)
return
end
if temp.has_father_task?
@sub_tasks[index] = temp if father_task?(temp.father_task) && !sub_task?(index)
else
@tasks[index] = temp if !have_task?(index)
end
end
#--------------------------------------------------------------------------
# ● 查询任务是否存在
#--------------------------------------------------------------------------
def have_task?(i)
return father_task?(i) || sub_task?(i)
end
#--------------------------------------------------------------------------
# ● 查询父任务是否存在
#--------------------------------------------------------------------------
def father_task?(i)
@tasks[i] != nil
end
#--------------------------------------------------------------------------
# ● 查询子任务是否存在
#--------------------------------------------------------------------------
def sub_task?(i)
@sub_tasks[i] != nil
end
#--------------------------------------------------------------------------
# ● 完成已有的任务,如果该任务有没有完成的子任务,则不能完成
#--------------------------------------------------------------------------
def finish_task(i)
@tasks[i].finish if father_task?(i) && sub_tasks_finished?(i)
@sub_tasks[i].finish if sub_task?(i)
end
#--------------------------------------------------------------------------
# ● 查询父任务序号为i的子任务,返回一个数组
#--------------------------------------------------------------------------
def get_sub_tasks(i)
return [] if !is_sub
tmp = []
for j in @sub_tasks.values
next if j.father_task != i
tmp.push(j)
end
return tmp
end
#--------------------------------------------------------------------------
# ● 查询父任务序号为i的子任务是否都已完成
#--------------------------------------------------------------------------
def sub_tasks_finished?(i)
return true if !is_sub
for j in @sub_tasks.values
next if j.father_task != i
return false if !j.finished
end
return true
end
#--------------------------------------------------------------------------
# ● 获取任务类型为cat的任务集合
#--------------------------------------------------------------------------
def all_tasks(cat)
n = []
m = []
for i in @tasks.values
next if i.key_task? != cat
tmp = get_sub_tasks(i.index)
if i.finished
n.push(i)
n += tmp
else
m.push(i)
m += tmp
end
end
return m + n
end
end
#==============================================================================
# ■ Window_TaskList
#------------------------------------------------------------------------------
# 任务画面中,显示已获得任务的窗口。
#==============================================================================
class Window_TaskList < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super
@category = :none
@data = []
@sub_task = false
end
#--------------------------------------------------------------------------
# ● 设置是否有子任务
#--------------------------------------------------------------------------
def has_sub_task
@sub_task = true
end
#--------------------------------------------------------------------------
# ● 设置分类
#--------------------------------------------------------------------------
def category=(category)
return if @category == category
@category = category
if category == :true
refresh(true)
else
refresh(false)
end
self.oy = 0
end
#--------------------------------------------------------------------------
# ● 获取列数
#--------------------------------------------------------------------------
def col_max
if @sub_task
return 1
else
return 2
end
end
#--------------------------------------------------------------------------
# ● 获取项目数
#--------------------------------------------------------------------------
def item_max
@data ? @data.size : 1
end
#--------------------------------------------------------------------------
# ● 获取任务
#--------------------------------------------------------------------------
def item
@data && index >= 0 ? @data[index] : nil
end
#--------------------------------------------------------------------------
# ● 获取选择任务的有效状态
#--------------------------------------------------------------------------
def current_item_enabled?
enable?(@data[index])
end
#--------------------------------------------------------------------------
# ● 查询此任务是否完成
#--------------------------------------------------------------------------
def enable?(item)
!item.finished
end
#--------------------------------------------------------------------------
# ● 生成任务列表
#--------------------------------------------------------------------------
def make_item_list(type)
@data = $game_party.all_tasks(type)
end
#--------------------------------------------------------------------------
# ● 返回上一个选择的位置
#--------------------------------------------------------------------------
def select_last
select(0)
end
#--------------------------------------------------------------------------
# ● 绘制项目
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
if item
rect = item_rect(index)
rect.width -= 4
draw_item_name(item, rect.x, rect.y, enable?(item))
end
end
#--------------------------------------------------------------------------
# ● 绘制名称
# enabled : 有效的标志。false 的时候使用半透明效果绘制
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true, width = 172)
return unless item
text = item.name
text = " " + text if @sub_task && item.has_father_task?
text += "(已完成)" if item.finished
change_color(normal_color, enabled)
draw_text(x, y, width, line_height, text)
end
#--------------------------------------------------------------------------
# ● 更新帮助内容
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh(type)
make_item_list(type)
create_contents
draw_all_items
end
end
#==============================================================================
# ■ Window_TaskCategory
#------------------------------------------------------------------------------
# 任务画面中,显示任务列表的窗口。
#==============================================================================
class Window_TaskCategory < Window_HorzCommand
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :item_window
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize
super(0, 0)
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
Graphics.width
end
#--------------------------------------------------------------------------
# ● 获取列数
#--------------------------------------------------------------------------
def col_max
return 2
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
@item_window.category = current_symbol if @item_window
end
#--------------------------------------------------------------------------
# ● 生成指令列表
#--------------------------------------------------------------------------
def make_command_list
add_command("主线任务", :true)
add_command("支线任务", :false)
end
#--------------------------------------------------------------------------
# ● 设置任务窗口
#--------------------------------------------------------------------------
def item_window=(item_window)
@item_window = item_window
update
end
end
#==============================================================================
# ■ Scene_Task
#------------------------------------------------------------------------------
# 任务画面
#==============================================================================
class Scene_Task < Scene_ItemBase
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_help_window
create_category_window
create_task_window
end
#--------------------------------------------------------------------------
# ● 生成分类窗口
#--------------------------------------------------------------------------
def create_category_window
@category_window = Window_TaskCategory.new
@category_window.viewport = @viewport
@category_window.help_window = @help_window
@category_window.y = @help_window.height
@category_window.set_handler(:ok, method(:on_category_ok))
@category_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# ● 生成任务窗口
#--------------------------------------------------------------------------
def create_task_window
wy = @category_window.y + @category_window.height
wh = Graphics.height - wy
@item_window = Window_TaskList.new(0, wy, Graphics.width, wh)
#如果允许子任务则显示子任务
@item_window.has_sub_task if $game_party.is_sub
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.set_handler(:cancel, method(:on_item_cancel))
@category_window.item_window = @item_window
end
#--------------------------------------------------------------------------
# ● 分类“确定”
#--------------------------------------------------------------------------
def on_category_ok
@item_window.activate
@item_window.select_last
end
#--------------------------------------------------------------------------
# ● 任务“取消”
#--------------------------------------------------------------------------
def on_item_cancel
@item_window.unselect
@category_window.activate
end
end
#==============================================================================
# ■ TaskList
#------------------------------------------------------------------------------
#
#==============================================================================
class TaskList
def initialize
#允许子任务
@list = []
@list.push(Task.new(0, "任务0", "任务描述0任务描述0任务描述0任务描述0任务"))
@list.push(Task.new(1, "任务一", "任务描述1"))
@list.push(Task.new(2, "任务2", "任务描述2",false))
@list.push(Task.new(3, "任务3", "任务描述3", true, 1))
@list.push(Task.new(4, "任务4", "任务描述4", true, 1))
@list.push(Task.new(5, "任务5", "任务描述5", false, 2))
@list.push(Task.new(6, "任务6", "任务描述6", false))
@list.push(Task.new(7, "任务7", "任务描述7", true, 1))
end
def get_task(index)
@list[index]
end
end
复制代码
脚本使用方法:
打开任务界面:SceneManager.call(Scene_Task)
添加任务有两种方式(在事件页里编辑)
1 $game_party.new_task(任务序号, 任务名称, 任务描述, 任务类型, 父任务序号)
如果任务类型为true,则为主线任务,否则为支线任务,默认是true
如果父任务序号为-1,则这个任务没有父任务,他自己就是一个顶级的父任务,可以拥有子任务了。如果父任务序号为已存在的父任务,则可以顺利生成一个子任务,否则不能生成任务
2 第二种添加方式是$game_party.set_task(该任务在TaskList里的序号)
当然这个任务在TaskList里的序号和他本身的那个序号是一样的了,如果你要写成不一样的,应该是会出问题。。
完成任务
$game_party.finish_task(任务序号)
子任务系统
系统默认是不使用子任务的,这个时候任务列表里面显示任务的时候会有两列。
如果想要使用子任务的话,需要调用$game_party.set_sub
然后任务列表里就只显示一列了(- -!如果显示两列会灰常混乱),然后子任务会在他的父任务后面缩进显示
该系统只支持一级子任务。。
作者:
黑崎一护
时间:
2015-7-19 19:06
任务系统之二:
zhangchi5大大的任务系统:
使用方法如下:
任务系统使用方法:
任务系统使用方法:
地图提示篇:
在事件里插入脚本 如下
---Script Begin---
$game_maphint.clear
str="地图提示功能"
$game_maphint.setText(0,str)
str="测试"
$game_maphint.setText(1,str)
str="第三行了"
$game_maphint.setText(2,str)
str="这是最后一行"
$game_maphint.setText(3,str)
----Script End----
脚本功能:
$game_maphint.clear
——清除之前地图提示的文字。
$game_maphint.setText(<行号>,<文字>)
——设定指定行号上的文字。
任务篇:
在事件里插入脚本(添加任务) 如下
---Script Begin---
@p=$game_missions.getNoMission
str="搞定这个游戏"
$game_missions.mission(@p).setTitle(str)
str="慢慢享受游戏的乐趣吧~~"
$game_missions.mission(@p).setText(0,str)
str="不是人干的。。。"
$game_missions.mission(@p).setText(1,str)
str="奖励:游戏结束"
$game_missions.mission(@p).setImText(str)
s1="游戏系统";s2="最终结界";
$game_missions.mission(@p).setNPC(s1,s2)
$game_missions.mission(@p).setStatus(true)
----Script End----
在事件里插入脚本(交付任务) 如下
---Script Begin---
@p=$game_missions.serMission("搞定这个游戏")
$game_missions.mission(@p).clear
$game_missions.mission(@p).setStatus(false)
----Script End----
脚本功能:
* @p指用$game_missions.getNoMission获取的任务代码。
$game_missions.mission(@p).clear
——清除之前任务的文字。
$game_missions.mission(@p).setText(<行号>,<文字>)
——设定指定行号上的任务介绍。
$game_missions.mission(@p).setImText(<文字>)
——设定任务重要信息/奖励。
$game_missions.mission(@p).setNPC(<NPC1>,<NPC2>)
——设定任务接任务NPC,交付任务NPC。
$game_missions.mission(@p).setStatus(<状态>)
——设定任务状态(True/False)。
$game_missions.getNoMission
——找到一个可用的任务代码。
$game_missions.serMission(<任务标题>)
——找到对应任务编码。
* $game_missions.serMission(<任务标题>)的返回值为-1时说明任务不存在,否则返回此任务编码。
* 在条件分歧中插入脚本$game_missions.serMission(<任务标题>)!=-1可判断任务是否正在进行。
复制代码
这个才是任务系统的脚本:
#==============================================================================
# ■ 任务系统 By SkyZH
# Version 2
# bbs.66RPG.com
#------------------------------------------------------------------------------
# 任务系统使用方法:
=begin
地图提示篇:
在事件里插入脚本 如下
---Script Begin---
$game_maphint.clear
str="地图提示功能"
$game_maphint.setText(0,str)
str="测试"
$game_maphint.setText(1,str)
str="第三行了"
$game_maphint.setText(2,str)
str="这是最后一行"
$game_maphint.setText(3,str)
----Script End----
脚本功能:
$game_maphint.clear
——清除之前地图提示的文字。
$game_maphint.setText(<行号>,<文字>)
——设定指定行号上的文字。
任务篇:
在事件里插入脚本(添加任务) 如下
---Script Begin---
@p=$game_missions.getNoMission
str="搞定这个游戏"
$game_missions.mission(@p).setTitle(str)
str="慢慢享受游戏的乐趣吧~~"
$game_missions.mission(@p).setText(0,str)
str="不是人干的。。。"
$game_missions.mission(@p).setText(1,str)
str="奖励:游戏结束"
$game_missions.mission(@p).setImText(str)
s1="游戏系统";s2="最终结界";
$game_missions.mission(@p).setNPC(s1,s2)
$game_missions.mission(@p).setStatus(true)
----Script End----
在事件里插入脚本(交付任务) 如下
---Script Begin---
@p=$game_missions.serMission("搞定这个游戏")
$game_missions.mission(@p).clear
$game_missions.mission(@p).setStatus(false)
----Script End----
脚本功能:
* @p指用$game_missions.getNoMission获取的任务代码。、
$game_missions.mission(@p).clear
——清除之前任务的文字。
$game_missions.mission(@p).setText(<行号>,<文字>)
——设定指定行号上的任务介绍。
$game_missions.mission(@p).setImText(<文字>)
——设定任务重要信息/奖励。
$game_missions.mission(@p).setNPC(<NPC1>,<NPC2>)
——设定任务接任务NPC,交付任务NPC。
$game_missions.mission(@p).setStatus(<状态>)
——设定任务状态(True/False)。
$game_missions.getNoMission
——找到一个可用的任务代码。
$game_missions.serMission(<任务标题>)
——找到对应任务编码。
* $game_missions.serMission(<任务标题>)的返回值为-1时说明任务不存在,否则返回此任
务编码。
* 在条件分歧中插入脚本$game_missions.serMission(<任务标题>)!=-1可判断任务是否正在
进行。
=end
#==============================================================================
#==============================================================================
# ■ Game_MapHint
#------------------------------------------------------------------------------
# 地图提示信息显示。
#==============================================================================
class Game_MapHint
def initialize
@texts = []
end
def visible_line
@texts.size
end
def text(line)
@texts[line]
end
def setText(line , text)
@texts[line]=text
end
def clear
for i in
[email protected]
@texts.delete_at(i)
end
end
end
#==============================================================================
# ■ Game_Mission
#------------------------------------------------------------------------------
# 任务信息显示。
#==============================================================================
class Game_Mission
def initialize
@texts = Array.new
@texts[0] = ""
@titletext = ""
@imtext = ""
@NPC1 = ""
@NPC2 = ""
@bool_mission = false
end
def setText(line, text)
@texts[line]=text
end
def setTitle(text)
@tetlitext=text
end
def setImText(text)
@imtext=text
end
def setNPC(t1, t2)
@NPC1=t1
@NPC2=t2
end
def setStatus(b)
@bool_mission=b
end
def getText(line)
@texts[line]
end
def visible_line
@texts.size
end
def getTitle
@tetlitext
end
def getImText
@imtext
end
def getNPC1
@NPC1
end
def getNPC2
@NPC2
end
def getStatus
@bool_mission
end
def clear
for i in
[email protected]
@texts.delete_at(i)
end
@titletext = ""
@imtext = ""
@NPC1 = ""
@NPC2 = ""
@bool_mission = false
end
end
#==============================================================================
# ■ Game_Missions
#------------------------------------------------------------------------------
# 任务信息包装。
#==============================================================================
class Game_Missions
def initialize
@mission_array=Array.new
for i in 0...100
@mission_array[i]=Game_Mission.new
end
end
def mission(t)
return @mission_array[t]
end
def getNoMission
for i in 0...100
if @mission_array[i].getStatus==false
return i
end
end
end
def clear
for i in 0...100
@mission_array[i].clear
end
end
def serMission(titletext)
for i in 0...100
if @mission_array[i].getTitle==titletext && @mission_array[i].getStatus==true then
return i
end
end
return -1
end
def getMissionNum
@r=0
for i in 99..0
if @mission_array[i].getStatus==true
@r=@r+1
end
end
return @r
end
end
#==============================================================================
# ■ Window_MapHint
#------------------------------------------------------------------------------
# 显示地图信息。 By SkyZH
#==============================================================================
class Window_MapHint < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, window_width, Graphics.height)
self.openness = 0
open
refresh
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return Graphics.width - 256
end
def draw_title
self.contents.font.color=system_color
self.contents.font.size=48
if $game_map.display_name.empty?
draw_text(4, 0, window_width-40, self.contents.font.size,"提示",1)
else
draw_text(4, 0, window_width-40, self.contents.font.size,"提示 - " + $game_map.display_name,1)
end
self.contents.font.color=normal_color
self.contents.font.size=Font.default_size
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
draw_title
for i in 0...$game_maphint.visible_line
@tempn=$game_maphint.text(i)
draw_text(4, line_height*(i)+48, window_width-40, self.contents.font.size ,@tempn,1)
end
end
end
#==============================================================================
# ■ Window_MissionShow
#------------------------------------------------------------------------------
# 显示任务信息。 By SkyZH
#==============================================================================
class Window_MissionShow < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, window_width, Graphics.height)
self.openness = 0
open
end
def setNumber(numbers)
@Mnumber=numbers
refresh
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return Graphics.width
end
def draw_title(text, line, size ,dwhere ,color)
self.contents.font.color=color
self.contents.font.size=size
draw_text(4, line*line_height , window_width-40, size, text ,dwhere)
self.contents.font.color=normal_color
self.contents.font.size=Font.default_size
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
contents.clear
@texts= $game_missions.mission(@Mnumber).getTitle
@vl= $game_missions.mission(@Mnumber).visible_line
draw_title(@texts,0,48,1,Color.new(255,100,100))
draw_title("任务介绍",2,22,0,Color.new(100,255,255))
for i in 0...@vl
draw_title($game_missions.mission(@Mnumber).getText(i),3+i,18,0,Color.new(255,255,255))
end
draw_title("任务奖励/重要信息",4 + @vl,22,0,Color.new(100,255,255))
draw_title($game_missions.mission(@Mnumber).getImText,5 + @vl,18,0,Color.new(255,255,255))
draw_title("领取任务NPC",7 + @vl,22,0,Color.new(100,255,255))
draw_title($game_missions.mission(@Mnumber).getNPC1,8 + @vl,18,0,Color.new(255,255,255))
draw_title("交接任务NPC",10 + @vl,22,0,Color.new(100,255,255))
draw_title($game_missions.mission(@Mnumber).getNPC2,11 + @vl,18,0,Color.new(255,255,255))
end
end
#==============================================================================
# ■ Window_MenuCommand
#------------------------------------------------------------------------------
# 任务画面中显示指令的窗口 By SkyZH
#==============================================================================
class Window_MissionCommand < Window_Command
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize
super(0, 0)
end
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return 256
end
#--------------------------------------------------------------------------
# ● 获取显示行数
#--------------------------------------------------------------------------
def visible_line_number
(Graphics.height-standard_padding*2)/line_height
end
#--------------------------------------------------------------------------
# ● 生成指令列表
#--------------------------------------------------------------------------
def make_command_list
add_original_commands
add_return_command
end
#--------------------------------------------------------------------------
# ● 独自添加指令用
#--------------------------------------------------------------------------
def add_original_commands
for i in 0...100
@r=i+1
@t="mission" + i.to_s
if $game_missions.mission(i).getStatus==true
add_command($game_missions.mission(i).getTitle, @t.to_sym)
end
end
end
#--------------------------------------------------------------------------
# ● 结束指令用
#--------------------------------------------------------------------------
def add_return_command
add_command("返回", :returnsc)
end
#--------------------------------------------------------------------------
# ● 按下确定键时的处理
#--------------------------------------------------------------------------
def process_ok
super
end
def call_handler(symbol)
@handler[symbol].call(symbol.id2name[7,symbol.id2name.size-7].to_i) if handle?(symbol)
end
end
#encoding:utf-8
#==============================================================================
# ■ Scene_Mission
#------------------------------------------------------------------------------
# 任务
#==============================================================================
class Scene_Mission < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_command_window
end
#--------------------------------------------------------------------------
# ● 生成指令窗口
#--------------------------------------------------------------------------
def create_command_window
@maphint_window= Window_MapHint.new(256,0)
@command_window = Window_MissionCommand.new
@window_missionShow=Window_MissionShow.new(0,0)
@window_missionShow.hide
@command_window.set_handler(:returnsc, method(:scenereturns))
@command_window.set_handler(:cancel, method(:scenereturns))
@window_missionShow.set_handler(:cancel, method(:missionHide))
@window_missionShow.set_handler(:ok, method(:missionHide))
for i in 0...100
@r=i
@t="mission" + i.to_s
@command_window.set_handler(@t.to_sym, method(:missionShow))
end
end
def scenereturns( t)
SceneManager.return
end
def missionShow( t)
@window_missionShow.setNumber(t)
@command_window.deactivate
@window_missionShow.activate
@window_missionShow.openness=0
@window_missionShow.show
@window_missionShow.open
end
def missionHide
@command_window.activate
@window_missionShow.deactivate
@window_missionShow.close
update until @window_missionShow.close?
@window_missionShow.hide
end
end
#==============================================================================
# ■ DataManager
#------------------------------------------------------------------------------
# 数据库和游戏实例的管理器。所有在游戏中使用的全局变量都在这里初始化。
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# ● 生成各种游戏对象
#--------------------------------------------------------------------------
def self.create_game_objects
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_timer = Game_Timer.new
$game_message = Game_Message.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
$game_maphint = Game_MapHint.new
$game_missions = Game_Missions.new
end
#--------------------------------------------------------------------------
# ● 生成存档内容
#--------------------------------------------------------------------------
def self.make_save_contents
contents = {}
contents[:system] = $game_system
contents[:timer] = $game_timer
contents[:message] = $game_message
contents[:switches] = $game_switches
contents[:variables] = $game_variables
contents[:self_switches] = $game_self_switches
contents[:actors] = $game_actors
contents[:party] = $game_party
contents[:troop] = $game_troop
contents[:map] = $game_map
contents[:player] = $game_player
contents[:maphint] = $game_maphint
contents[:missions] = $game_missions
contents
end
#--------------------------------------------------------------------------
# ● 展开存档内容
#--------------------------------------------------------------------------
def self.extract_save_contents(contents)
$game_system = contents[:system]
$game_timer = contents[:timer]
$game_message = contents[:message]
$game_switches = contents[:switches]
$game_variables = contents[:variables]
$game_self_switches = contents[:self_switches]
$game_actors = contents[:actors]
$game_party = contents[:party]
$game_troop = contents[:troop]
$game_map = contents[:map]
$game_player = contents[:player]
$game_maphint = contents[:maphint]
$game_missions = contents[:missions]
end
end
#==============================================================================
# ■ Window_MenuCommand
#------------------------------------------------------------------------------
# 菜单画面中显示指令的窗口
#==============================================================================
class Window_MenuCommand < Window_Command
#--------------------------------------------------------------------------
# ● 独自添加指令用
#--------------------------------------------------------------------------
def add_original_commands
add_command("地图提示", :maphint)
end
end
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 菜单画面
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 生成指令窗口
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
@command_window.set_handler(:maphint, method(:command_maphint))
end
#--------------------------------------------------------------------------
# ● 指令“地图提示”
#--------------------------------------------------------------------------
def command_maphint
SceneManager.call(Scene_Mission)
end
end
复制代码
作者:
莫言别离
时间:
2015-7-19 19:15
https://rpg.blue/forum.php?mod=viewthread&tid=377754
这个 十分好用 简单易懂
直接下载范例 复制粘贴脚本即可
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1