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

Project1

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

两个问题

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-10
帖子
175
跳转到指定楼层
1
发表于 2008-7-21 22:35:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv4.逐梦者 (暗夜天使)

名侦探小柯

梦石
10
星屑
4248
在线时间
3732 小时
注册时间
2006-9-6
帖子
37430

极短27获奖MZ评测员开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
发表于 2008-7-21 22:38:41 | 只看该作者
任务系统?
游戏中做任务么?这个完全要看你做什么任务了……问这个问题的话就太囧了……
不定期回归 ~ 游戏开发之旅
———————————————————————————————
回复 支持 反对

使用道具 举报

Lv1.梦旅人

今、空を見上げ

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-11
帖子
2022
3
发表于 2008-7-21 22:42:20 | 只看该作者
任务系统??
  1. =begin
  2. --------------------------------------------------------------------------
  3. 详尽任务显示界面 v2.1
  4. --------------------------------------------------------------------------
  5. By 叶子

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

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

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

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

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

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

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

  39. 2、设置任务数据

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

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

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

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

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

  91. 4、完成/删除任务

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

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

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

  101. class Scene_Task
  102.   # 这里设置任务内容翻页音效
  103.   CHANGE_PAGE_SE = "Audio/SE/046-Book01"
  104. end

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

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

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

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

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

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

  176. #{item}

  177. \\c[0]克萝莉亚:
  178. 灵魂线就埋在其中一棵树下,给我好好找\\i[157]"
  179.     @tasks_info[3] = Game_Task.new(名称, 简介)
  180.    
  181.   end
  182. end
  183. #==============================================================================
  184. # ■ Interpreter
  185. #------------------------------------------------------------------------------
  186. #  执行事件命令的解释器。本类在 Game_System 类
  187. # 与 Game_Event 类的内部使用。
  188. #==============================================================================

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

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

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

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

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

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

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

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

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

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

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

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

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



貌似..最高等级不能设置呢 呵呵

话说 LZ不玩XP了??

换VX啦?
做任何事,都不要为自己找借口。任何事都不存在困难的借口。你只有3个字“做得到”
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (暗夜天使)

名侦探小柯

梦石
10
星屑
4248
在线时间
3732 小时
注册时间
2006-9-6
帖子
37430

极短27获奖MZ评测员开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2008-7-21 22:44:40 | 只看该作者
在Game_Actor第525行

把level_up這句換成

   本帖相关代码如下:
if @level < 10
level_up
else
break
end


10代表最高等級
你可以自己替換數字

但只能是全部人。
不定期回归 ~ 游戏开发之旅
———————————————————————————————
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-10
帖子
175
5
 楼主| 发表于 2008-7-21 22:47:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

今、空を見上げ

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-11
帖子
2022
6
发表于 2008-7-21 22:48:22 | 只看该作者


不知道能不能分别定义每个人的最高等级..
我想应该可以吧

只是自己的脚本知识...
做任何事,都不要为自己找借口。任何事都不存在困难的借口。你只有3个字“做得到”
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (暗夜天使)

名侦探小柯

梦石
10
星屑
4248
在线时间
3732 小时
注册时间
2006-9-6
帖子
37430

极短27获奖MZ评测员开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

7
发表于 2008-7-21 22:50:05 | 只看该作者
以下引用问客007于2008-7-21 14:47:21的发言:

囧 是什么啊 看不懂

我给你的方法?
[LINE]1,#dddddd[/LINE]
跑环是什么?
不定期回归 ~ 游戏开发之旅
———————————————————————————————
回复 支持 反对

使用道具 举报

Lv1.梦旅人

今、空を見上げ

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-11
帖子
2022
8
发表于 2008-7-21 22:55:04 | 只看该作者
晕死 .你是说设置一种循环无限能接的任务吧.. 囧
大概应该是和那某OL游戏里的任务差不多..

可能是接了任务 做完了 又能回去接???

偶是来VX区学习的 呵呵...

对VX还不太了解的说

越前前辈 帮他看看吧?
做任何事,都不要为自己找借口。任何事都不存在困难的借口。你只有3个字“做得到”
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
9
发表于 2008-7-21 22:56:51 | 只看该作者
1怎么做任务系统(我说的跑环那种)
   做完任务用一个变量记录下来
   然后再给角色一个任务然后又记录即可!

2怎么设定最高等级上限,各有不同!
   破限 如果要求没歌角色不同的话
   要专门写一段
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (暗夜天使)

名侦探小柯

梦石
10
星屑
4248
在线时间
3732 小时
注册时间
2006-9-6
帖子
37430

极短27获奖MZ评测员开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

10
发表于 2008-7-21 22:58:08 | 只看该作者
以下引用殲滅天使·玲于2008-7-21 14:55:04的发言:

晕死 .你是说设置一种循环无限能接的任务吧.. 囧
大概应该是和那某OL游戏里的任务差不多..

可能是接了任务 做完了 又能回去接???

偶是来VX区学习的 呵呵...

对VX还不太了解的说

越前前辈 帮他看看吧?

话说无限能接的任务是做好做的吧……
基本不用什么操作……

比如第一个页面接了任务打开独立开关A,第二个页面完成后把独立开关A关闭,这样就能无限完成。
不过我觉得是跑路任务……比如和某人说话,然后回去。
那样的话从这里接了任务就打开一个开关,另外一个人那里条件分歧(或者事件出现条件)为这个开关打开,然后另外一个开关打开。回到接的人那里,得到奖励,关闭这两个开关。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
不定期回归 ~ 游戏开发之旅
———————————————————————————————
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-13 02:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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