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

Project1

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

[已经过期] 求一个读书的脚本

 关闭 [复制链接]

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4719
在线时间
5242 小时
注册时间
2009-4-29
帖子
14318

贵宾

跳转到指定楼层
1
发表于 2009-10-22 21:03:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想求一个VX的读书脚本,希望达到这样的效果:
当变量1号为1时显示文章1的内容,当变量1号为2时显示文章2的内容……
文章很长,希望把正个版面扩充,按下确定转下一页,直到读完;按取消键返回。

希望在开关1为真时用事件调用:
条件分歧:要是开关1为真,那么脚本处理:$scene = Scene_book.new

文字在脚本中设置,像这样:
text1="自己输入的内容1"
text2="自己输入的内容2"
text3="自己输入的内容3"
case $game_variables[1]
  when 1
  text = text1
  when 2
  text = text2
  when 3
  text = text3
end
显示text
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747

Lv4.逐梦者

醉啸 长风万里

梦石
0
星屑
6202
在线时间
6595 小时
注册时间
2007-12-16
帖子
4501

贵宾

2
发表于 2009-10-23 08:58:34 | 只看该作者
用叶子的“详尽任务显示界面”就行了

还在龟速填坑中
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4719
在线时间
5242 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
 楼主| 发表于 2009-10-23 09:07:21 | 只看该作者
可是他的任务脚本我已经使用了。
要是读书脚本再使用,那么就会和任务系统冲突了。:(
有不有办法修改一下他的任务脚本,使得
$scene = Scene_task.new  #调用任务脚本
$scene = Scene_book.new #调用读书脚本
??
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4719
在线时间
5242 小时
注册时间
2009-4-29
帖子
14318

贵宾

4
 楼主| 发表于 2009-10-23 10:09:17 | 只看该作者
这里附上叶子的任务脚本,哪位大哥来帮助修改一下。谢谢了。

  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. =begin
  5. --------------------------------------------------------------------------
  6. 详尽任务显示界面 v2.1
  7. --------------------------------------------------------------------------
  8. By 叶子

  9. 日期与更新
  10. 3-29-2006 -v1.0
  11. 4-3-2006  -v2.0
  12. -可以改变文字颜色,显示变量,显示图标,显示图片
  13. -大幅简化了编写任务内容的过程,加入自动换行功能
  14. -精简了窗口,使其还可以用作图鉴系统、日记系统等等
  15. 4-6-2006  -v2.1
  16. -增加了获得全部任务与删除全部任务命令
  17. -改正通假字,修改了示例任务3
  18. --------------------------------------------------------------------------
  19. 改版 by snstar2006

  20. 修改部分:
  21. - 将XP的一些脚本改成VX版的
  22. - 将窗口大小缩放成VX的大小(依照比例)
  23. - 将一些会变成很长的脚本精简
  24.    (如:用$game_pary.item_no(物品编号)
  25.         代替原来的$game_party.item_number($data_items[物品编号]) = ="好长)
  26. - 精简一些代码,将 Window_Task_Name 和Window_Task 重合部分用继承方式精简
  27. - 依照VX的 RGSS2 规范编写 Scene_Task
  28. - 增加使用16进位颜色代码变换字体颜色功能
  29. - 修改Scene_Menu的召唤方式,使脚本新手使用起来更容易

  30. --------------------------------------------------------------------------
  31. 顾名思义,就是显示任务数据的界面
  32. 任务数据要预先在这里设定好
  33. 下载范例工程,能帮助你更快更好地掌握使用方法
  34. --------------------------------------------------------------------------
  35. 使用方法:

  36. 1、召唤任务显示界面:$scene = Scene_Task.new

  37. 可以在事件中的「脚本」指令加入这段东西,
  38. 又或者修改 Scene_Menu 来增加一个显示任务的选项。
  39. 如果是修改 Scene_Menu 增加選項的話,请使用

  40.     $scene = Scene_Task.new(任务在菜单的index)

  41. 例如:$scene = Scene_Task.new(7)

  42. 2、设置任务数据

  43.   2.1、相关内容解析
  44.   
  45.   所有内容文字必须用双引号括住
  46.   
  47.   名称:任务的名字(显示在左边窗口中),大小为172×32,如果全部为文字的话,
  48.         够放九个全角字符
  49.         
  50.   简介:任务的介绍(显示在右边窗口中),宽308,高不限
  51.   
  52.         文字可以自动换行
  53.   
  54.    2.1.1、控制码解析
  55.    
  56.    名称和内容均可用控制码,注意两条反斜杠都要打!
  57.    
  58.    \\v[n] 显示n号变量
  59.    \\c[n] 改变字体颜色。n 为窗口外观图片中所设定的颜色,可为0-31

  60.    \\c[HRRGGBB]设定字体颜色为RRGGBB色, RRGGBB 为16进位颜色代码
  61.    \\n[i] 显示i号角色名字
  62.    \\i[图标编号] 显示图标    # 图标编号为图标在IconSet里的顺序
  63.    \\p[文件名] 显示图片
  64.    
  65.    2.1.2、高级:内嵌表达式
  66.         
  67.    请参考帮助-脚本入门-字符串-内嵌表达式相关内容。
  68.    它可以用来在任务的名称和简介那里显示变量。
  69.    常用的表达式(注意不要漏了井号和大括号):
  70.    #{$game_variables[n]}       ——插入n号变量的值
  71.    #{$game_party.item_no(n)}  —— 插入持有n号物品数量
  72.                                   同理还有 weapon_no,armor_no

  73.    还可以预先定义一个变量,再插入(例子见示例任务3-灵魂线)
  74.    
  75.   2.2、注意事项
  76.   
  77.    2.2.1、括号、逗号和双引号 [ ] , " 必须使用半角符号(英文输入),
  78.           引号内的内容则没有关系
  79.          
  80.    2.2.2、单引号 ' 和双引号 " 的区别:
  81.           为了不出错误,全部用双引号吧!当然如果你对Ruby很熟悉,那就没所谓了
  82.   
  83.   2.3、开始设置吧!
  84.   从107行开始设置任务数据,可以参考示例任务来设置,请仔细阅读附加讲解
  85.   
  86. 3、接受任务

  87. 事件里的「脚本」指令输入:get_task(任务ID)
  88. 例如 get_task(1) 就是接受1号任务

  89.   3.1、获得全部任务
  90.   
  91.   事件里的「脚本」指令输入:get_all_task
  92.   这个功能基本上是用来在编写好所有任务数据后测试排版的
  93.   

  94. 4、完成/删除任务

  95. 事件里的「脚本」指令输入:finish_task(任务ID)
  96. 例如 finish_task(1) 就是完成1号任务

  97. 注意:本脚本不负责完成任务后的奖励之类的东西,请自行在事件中判断,
  98.        这里的完成任务指的是从任务列表中删去此任务

  99.   4.1、删除全部任务
  100.   
  101.   事件里的「脚本」指令输入:finish_all_task
  102.   作为获得全部任务的对应功能存在,似乎不会怎么用到


  103. class Scene_Task
  104.   # 这里设置任务内容翻页音效
  105.   CHANGE_PAGE_SE = "Audio/SE/046-Book01"
  106. end
  107. =end
  108. class Game_Party
  109.   #--------------------------------------------------------------------------
  110.   # ● 设置任务资料
  111.   #--------------------------------------------------------------------------
  112.   def get_tasks_info
  113.     @tasks_info = []

  114.     #-讲解-
  115.     # 三个示例任务由浅入深,其实只要看懂第一个就可以使用了。
  116.     # 任务的写法多种多样,不限于这三个任务的方法
  117.     #----
  118.     #-----------------------------
  119.     # 示例任务1:沙漠中的五叶花
  120.     #-----------------------------
  121.     名称 = "\\c[6]沙漠中的五叶花"
  122.     #-讲解-
  123.     # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符
  124.     # 串的一部分,所以不要忘记在内容最后打一个双引号
  125.     # 按回车是强制换行
  126.     #----
  127.     简介 = "\\c[6]沙漠中的五叶花

  128. \\c[9]任务目标:
  129. 获得5朵五叶花,交给西露达

  130. \\c[0]五叶花数目:\\v[1]/5

  131. 西露达:
  132. \\c[Hff0000]人家等着你的花哦~"
  133.     #-讲解-
  134.     # 每个任务最后一定要加上:
  135.     # @tasks_info[任务ID] = Game_Task.new(名称, 简介)
  136.     # 接受任务和完成任务都是用这个任务ID来索引
  137.     #----
  138.     @tasks_info[1] = Game_Task.new(名称, 简介)
  139.    
  140.     #-----------------------------
  141.     # 示例任务2:克萝莉亚的药瓶
  142.     #-----------------------------
  143.     名称 = "\\c[6]克萝莉亚的药瓶"
  144.     #-讲解-
  145.     # 这里使用了字符串相加,例如 s = "a" + "b" ,s 就是 "ab"
  146.     # 还用了内嵌表达式,$game_party.item_number(38) 就是38号物品的数量
  147.     #----
  148.     简介 = 名称 + "
  149.    
  150. \\c[9]任务目标:
  151. 问克萝莉亚要一个药瓶,交给西露达

  152. \\c[0]药瓶:#{$game_party.item_no(1)}/1

  153. 西露达:
  154. 克萝莉亚就在西边的屋子里"
  155.     @tasks_info[2] = Game_Task.new(名称, 简介)
  156.    
  157.     #-----------------------------
  158.     # 示例任务3:灵魂线
  159.     #-----------------------------
  160.     #-讲解-
  161.     # 这里用了条件判断,当3号变量大于等于1时,加上“完成”字样,同时变色
  162.     #----
  163.     if $game_variables[3] >= 1
  164.       名称 = "\\c[8]灵魂线(完成)"
  165.       item = "\\c[8]灵魂线:#{$game_variables[3]}/1 (完成)"
  166.     else
  167.       名称 = "\\c[2]灵魂线"
  168.       item = "\\c[0]灵魂线:#{$game_variables[3]}/1"
  169.     end
  170.     #-讲解-
  171.     # 预先定义变量,用内嵌表达式插入
  172.     # 最后用了显示图标
  173.     #----
  174.     简介 = "#{名称}
  175.    
  176. \\c[9]任务目标:
  177. 找到埋起来的灵魂线,交给克萝莉亚

  178. #{item}

  179. \\c[0]克萝莉亚:
  180. 灵魂线就埋在其中一棵树下,给我好好找\\i[157]"
  181.     @tasks_info[3] = Game_Task.new(名称, 简介)
  182.   end
  183. end

  184. #==============================================================================
  185. # ■ Interpreter
  186. #------------------------------------------------------------------------------
  187. #  执行事件命令的解释器。本类在 Game_System 类
  188. # 与 Game_Event 类的内部使用。
  189. #==============================================================================

  190. class Game_Interpreter
  191.   #--------------------------------------------------------------------------
  192.   # ● 接受任务
  193.   #--------------------------------------------------------------------------
  194.   def get_task(id)
  195.     task = $game_party.tasks_info[id]
  196.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  197.     $game_party.current_tasks.unshift(task.id)
  198.     return true
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 获得全部任务
  202.   #--------------------------------------------------------------------------
  203.   def get_all_task
  204.     # 清空当前任务
  205.     $game_party.current_tasks.clear
  206.     for task in $game_party.tasks_info
  207.       next if task.nil?
  208.       $game_party.current_tasks.unshift(task.id)
  209.     end
  210.     return true
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 完成/放弃任务
  214.   #--------------------------------------------------------------------------
  215.   def finish_task(id)
  216.     task = $game_party.tasks_info[id]
  217.     return true if task.nil?
  218.     $game_party.current_tasks.delete(task.id)
  219.     return true
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● 删除全部任务
  223.   #--------------------------------------------------------------------------
  224.   def finish_all_task
  225.     $game_party.current_tasks.clear
  226.     return true
  227.   end
  228. end

  229. #==============================================================================
  230. # ■ Game_Party
  231. #------------------------------------------------------------------------------
  232. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  233. # 请参考 $game_party。
  234. #==============================================================================

  235. class Game_Party
  236.   #--------------------------------------------------------------------------
  237.   # ● 定义实例变量
  238.   #--------------------------------------------------------------------------
  239.   attr_writer     :latest_task                  # 上次查看的任务
  240.   #--------------------------------------------------------------------------
  241.   # ● 取得任务资料
  242.   #--------------------------------------------------------------------------
  243.   def tasks_info
  244.     if @tasks_info.nil?
  245.       get_tasks_info
  246.     end
  247.     return @tasks_info
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 取得当前任务
  251.   #--------------------------------------------------------------------------
  252.   def current_tasks
  253.     if @current_tasks.nil?
  254.       @current_tasks = []
  255.     end
  256.     return @current_tasks
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 上次查看的任务
  260.   #--------------------------------------------------------------------------
  261.   def latest_task
  262.     if !current_tasks.include?(@latest_task)
  263.       @latest_task = current_tasks[0]
  264.     end
  265.     return @latest_task
  266.   end
  267. end

  268. #==============================================================================
  269. # ■ Game_Task
  270. #------------------------------------------------------------------------------
  271. #  处理任务的类。包含任务的信息。
  272. #==============================================================================

  273. class Game_Task
  274.   attr_accessor   :name                   # 名称
  275.   attr_accessor   :briefing               # 简介
  276.   def initialize(name, briefing)
  277.     @name = name
  278.     @briefing = briefing
  279.   end
  280.   def height
  281.     text = @briefing.clone
  282.     x = 0
  283.     y = 64
  284.     min_y = 0
  285.     # 限制文字处理
  286.     begin
  287.       last_text = text.clone
  288.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  289.     end until text == last_text
  290.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  291.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  292.     end
  293.     # 为了方便、将 "\\\\" 变换为 "\000"
  294.     text.gsub!(/\\\\/) { "\000" }
  295.     # "\C" 变为 "\001"
  296.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  297.     # "\I" 变为 "\002"
  298.     text.gsub!(/\\[Ii]/) { "\002" }
  299.     # "\P" 变为 "\003"
  300.     text.gsub!(/\\[Pp]/) { "\003" }
  301.     # c 获取 1 个字 (如果不能取得文字就循环)
  302.     while ((c = text.slice!(/./m)) != nil)
  303.       # \\ 的情况下
  304.       if c == "\000"
  305.         # 还原为本来的文字
  306.         c = "\\"
  307.       end
  308.       # \C[n] 的情况下
  309.       if c == "\001"
  310.         # 更改文字色
  311.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  312.         # 下面的文字
  313.         next
  314.       end
  315.       # 图标的情况下
  316.       if c == "\002"
  317.         icon_name = ''
  318.         while ((cha = text.slice!(/./m)) != ']')
  319.           next if cha == '['
  320.           icon_name += cha
  321.         end
  322.         if x + 24 > 368
  323.           x = 0
  324.           y += [24, min_y].max
  325.           min_y = 0
  326.         end
  327.         x += 28
  328.         next
  329.       end
  330.       # 图片的情况下
  331.       if c == "\003"
  332.         pic_name = ''
  333.         while ((cha = text.slice!(/./m)) != ']')
  334.           next if cha == '['
  335.           pic_name += cha
  336.         end
  337.         pic = Cache.picture(pic_name)
  338.         if x + pic.width > 368
  339.           x = 0
  340.           y += [24, min_y].max
  341.           min_y = 0
  342.         end
  343.         x += pic.width
  344.         min_y = [pic.height, 24].max
  345.         next
  346.       end
  347.       # 另起一行文字的情况下
  348.       if c == "\n"
  349.         y += [24, min_y].max
  350.         min_y = 0
  351.         x = 0
  352.         # 下面的文字
  353.         next
  354.       end
  355.       # 自动换行处理
  356.       if x + 22 > 368
  357.         y += [24, min_y].max
  358.         min_y = 0
  359.         x = 0
  360.       end
  361.       # x 为要描绘文字的加法运算
  362.       x += 22
  363.     end
  364.     return (y + [24, min_y].max)
  365.   end
  366.   def id
  367.     return $game_party.tasks_info.index(self)
  368.   end
  369. end

  370. #==============================================================================
  371. # ■ Window_Task_Name
  372. #------------------------------------------------------------------------------
  373. #  任务名称显示窗口。
  374. #==============================================================================

  375. class Window_Task_Name < Window_Selectable
  376.   #--------------------------------------------------------------------------
  377.   # ● 初始化对像
  378.   #--------------------------------------------------------------------------
  379.   def initialize(tasks)
  380.     super(0, 0, 204, 416)
  381.     @tasks = []
  382.     for id in tasks
  383.       @tasks.push($game_party.tasks_info[id])
  384.     end
  385.     @item_max = tasks.size
  386.     self.contents = Bitmap.new(
  387.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  388.     refresh
  389.     self.index = 0
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ● 刷新
  393.   #--------------------------------------------------------------------------
  394.   def refresh
  395.     self.contents.clear
  396.     if @tasks != []
  397.       for task in @tasks
  398.         draw_item(task)
  399.       end
  400.     else
  401.       draw_blank
  402.     end
  403.   end
  404.   #--------------------------------------------------------------------------
  405.   # ● 描绘项目
  406.   #--------------------------------------------------------------------------
  407.   def draw_item(task)
  408.     text = task.name.clone
  409.     y = @tasks.index(task) * WLH
  410.     chenge_special_character(text, 0, y)
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ● 描绘空行
  414.   #--------------------------------------------------------------------------
  415.   def draw_blank
  416.     self.contents.font.color = Color.new(255, 255, 255, 128)
  417.     rect = Rect.new(4, -4, self.contents.width - 8, 32)
  418.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  419.     self.contents.draw_text(rect, '当前没有任何任务')
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ● 获取任务
  423.   #--------------------------------------------------------------------------
  424.   def task
  425.     return @tasks[self.index]
  426.   end
  427. end
  428.   
  429. #==============================================================================
  430. # ■ Window_Task
  431. #------------------------------------------------------------------------------
  432. #  任务内容显示窗口。
  433. #==============================================================================

  434. class Window_Task < Window_Base
  435.   #--------------------------------------------------------------------------
  436.   # ● 初始化对像
  437.   #--------------------------------------------------------------------------
  438.   def initialize(task_id)
  439.     super(204, 0, 340, 416)
  440.     refresh(task_id)
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● 刷新内容
  444.   #--------------------------------------------------------------------------
  445.   def refresh(task_id)
  446.     self.oy = 0
  447.     self.visible = true
  448.     return if task_id.nil?
  449.     task = $game_party.tasks_info[task_id]
  450.     if !task.nil?
  451.       self.contents = Bitmap.new(self.width - 32, task.height)
  452.     else
  453.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  454.       return
  455.     end
  456.     self.contents.font.color = normal_color
  457.     # 描绘任务内容
  458.     draw_task_info(task)
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ● 描绘任务内容
  462.   #--------------------------------------------------------------------------
  463.   def draw_task_info(task)
  464.     self.contents.font.color = normal_color
  465.     # 描绘任务简介
  466.     chenge_special_character(task.briefing.clone)
  467.   end
  468. end

  469. class Window_Base < Window
  470.   def chenge_special_character(text, x=0, y=0)
  471.     # 记录换行时y坐标最小加值
  472.     min_y = 0
  473.     # 限制文字处理
  474.     begin
  475.       last_text = text.clone
  476.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  477.     end until text == last_text
  478.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  479.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  480.     end
  481.     # 为了方便、将 "\\\\" 变换为 "\000"
  482.     text.gsub!(/\\\\/) { "\000" }
  483.     # "\C" 变为 "\001"
  484.     text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
  485.     # "\I" 变为 "\002"
  486.     text.gsub!(/\\[Ii]/) { "\002" }
  487.     # "\P" 变为 "\003"
  488.     text.gsub!(/\\[Pp]/) { "\003" }
  489.     # c 获取 1 个字 (如果不能取得文字就循环)
  490.     while ((c = text.slice!(/./m)) != nil)
  491.       # \\ 的情况下
  492.       if c == "\000"
  493.         # 还原为本来的文字
  494.         c = "\\"
  495.       end
  496.       # \C[n] 的情況下
  497.       if c == "\001"
  498.         # 更改文字色
  499.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  500.         # 如果是设定RGB颜色
  501.         if $1[0,1]=="H"
  502.           # 先拷贝一下文字
  503.           c=$1.dup
  504.           # 分3段分别取出R,G,B颜色
  505.           c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
  506.           # 设定文字颜色
  507.           self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
  508.         else
  509.           color = $1.to_i
  510.           if color >= 0 and color <= 31
  511.             self.contents.font.color = text_color(color)
  512.           elsif color == 32
  513.             self.contents.font.color = disabled_color
  514.           elsif color == 33
  515.             self.contents.font.color = system_color
  516.           end
  517.         end
  518.         # 下面的文字
  519.         next
  520.       end
  521.       # 图标的情况下
  522.       if c == "\002"
  523.         icon_name = ''
  524.         while ((cha = text.slice!(/./m)) != ']')
  525.           next if cha == '['
  526.           icon_name += cha
  527.         end
  528.         if x + 24 > self.contents.width
  529.           x = 0
  530.           y += [WLH, min_y].max
  531.           min_y = 0
  532.         end
  533.         draw_icon(icon_name.to_i, x+4, y+4, true)
  534.         x += 28
  535.         next
  536.       end
  537.       # 图片的情况下
  538.       if c == "\003"
  539.         pic_name = ''
  540.         while ((cha = text.slice!(/./m)) != ']')
  541.           next if cha == '['
  542.           pic_name += cha
  543.         end
  544.         pic = Cache.picture(pic_name)
  545.         if x + pic.width > self.contents.width
  546.           x = 0
  547.           y += [WLH, min_y].max
  548.           min_y = 0
  549.         end
  550.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  551.         x += pic.width
  552.         min_y = [pic.height, WLH].max
  553.         next
  554.       end
  555.       # 另起一行文字的情况下
  556.       if c == "\n"
  557.         y += [WLH, min_y].max
  558.         min_y = 0
  559.         x = 0
  560.         # 下面的文字
  561.         next
  562.       end
  563.       # 自动换行处理
  564.       if x + self.contents.text_size(c).width > self.contents.width
  565.         y += [WLH, min_y].max
  566.         min_y = 0
  567.         x = 0
  568.       end
  569.       # 描绘文字
  570.       self.contents.draw_text(4 + x, y, 40, WLH, c)
  571.       # x 为要描绘文字的加法运算
  572.       x += self.contents.text_size(c).width
  573.     end
  574.   end
  575. end

  576. class Game_Party < Game_Unit
  577.   def item_no(n)
  578.     return item_number($data_items[n])
  579.   end
  580.   def weapon_no(n)
  581.     return item_number($data_weapons[n])
  582.   end
  583.   def armor_no(n)
  584.     return item_number($data_armors[n])
  585.   end
  586. end

  587. #==============================================================================
  588. # ■ Scene_Task
  589. #------------------------------------------------------------------------------
  590. #  处理任务画面的类。
  591. #==============================================================================

  592. class Scene_Task < Scene_Base
  593.   def initialize(index=nil)
  594.     @menu_index = index
  595.   end
  596.   #--------------------------------------------------------------------------
  597.   # ● 主处理
  598.   #--------------------------------------------------------------------------
  599.   def start
  600.     # 刷新任务资料
  601.     $game_party.get_tasks_info
  602.     # 生成任务名称窗口
  603.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  604.     @task_names_window.active = true
  605.     if $game_party.current_tasks != []
  606.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  607.     end
  608.     # 生成任务内容窗口
  609.     @task_info_window = Window_Task.new($game_party.latest_task)
  610.     @task_info_window.active = true
  611.   end

  612.   def terminate
  613.     # 释放窗口
  614.     @task_names_window.dispose
  615.     @task_info_window.dispose
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 刷新画面
  619.   #--------------------------------------------------------------------------
  620.   def update
  621.     # 刷新窗口
  622.     @task_names_window.update
  623.     @task_info_window.update
  624.     update_task_names_window
  625.   end
  626.   #--------------------------------------------------------------------------
  627.   # ● 刷新任务名称窗口
  628.   #--------------------------------------------------------------------------
  629.   def update_task_names_window
  630.     # 按下 B 键的情况下
  631.     if Input.trigger?(Input::B)
  632.       # 演奏取消 SE
  633.       Sound.play_cancel
  634.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  635.       if @menu_index == nil
  636.         $scene = Scene_Map.new
  637.       else
  638.         $scene = Scene_Menu.new(4)
  639.       end
  640.       return
  641.     end
  642.     # 按下 C 键的情况下
  643.     if Input.trigger?(Input::C)
  644.       # 无任务可显示的话
  645.       if @task_names_window.task == nil
  646.         # 演奏冻结 SE
  647.         Sound.play_buzzer
  648.         return
  649.       end
  650.       # 如果光标没有移动的话,翻页
  651.       if $game_party.latest_task == @task_names_window.task.id
  652.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  653.           @task_info_window.oy = 0
  654.         else
  655.           @task_info_window.oy += 480-32
  656.         end
  657.         if @task_info_window.contents.height > @task_info_window.height - 32
  658.           # 演奏翻页 SE
  659. #          Sound.se_play(CHANGE_PAGE_SE)
  660.         end
  661.       else
  662.         @task_info_window.refresh(@task_names_window.task.id)
  663.         $game_party.latest_task = @task_names_window.task.id
  664.         # 演奏确定 SE
  665.         Sound.play_decision
  666.       end
  667.     end
  668.   end
  669. end




  670. #==============================================================================
  671. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  672. #==============================================================================

复制代码
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 05:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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