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

Project1

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

[已经解决] 我想要一种娱乐功能的脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-8-31
帖子
15
跳转到指定楼层
1
发表于 2011-9-14 18:04:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乱世佳人。 于 2011-9-14 18:07 编辑

拜师系统,比如说选了谁谁谁就可以在那个人那里学习,但是不能向其他职业的师傅学习。
结拜系统,顾名思义...
还有就是暂时消除事件怎么改成永久消除?
还有就是主线任务的话只说一次,第二次点击那个人物时就会显示另外的话。
比如:哥哥帮我签个名吧。 签名完后第二次点击那个人物会显示:加油,哥哥!

还有就是我朋友测试我的游戏时,她做支线任务比如说要三个螃蟹腿就可以换取奖励,但是她就算没有螃蟹腿也可以换奖励,到底怎么弄?
还有就是我想要一个任务显示界面……

有点多,希望好心人帮帮忙!

还有...有坐骑这个娱乐系统的脚本么……请教教我

Lv2.观梦者

(?????)

梦石
0
星屑
736
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

2
发表于 2011-9-14 18:16:57 | 只看该作者
新手教程
纯事件均可实现

点评

就是因为我做不到阿。。  发表于 2011-9-14 18:24
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
3
发表于 2011-9-14 18:28:42 | 只看该作者
前三个不必用脚本哦~~事件也是很萌的~~(我在口胡神马=A=)
1,用开关控制,例如设置10个师傅,对应10个开关。只能打开一个开关,并且在那个开关打开后,其他9个师傅在事件页的左上角勾上那个开关打开时,出现别的对话,这样就不会再拜师了。
2,在事件最后一行加上——自用开关的设置——A打开。新建事件页,勾上自用开关A打开——图像,事件全为空白就可。
3,同上,图像用原行走图,事件里更改成新对话。
4,用变量,在公共事件中——并行处理——接任务时打开那个开关。事件是——变量的操作——代入——物品——螃蟹腿。条件的分歧——那个变数——等于——常数——3,之后是打开X开关。在那个给任务的人那里新建事件页——左上角勾上X开关被打开——事件里加入报酬就行了。
5,用叶子的任务脚本吧~~
  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.     # 示例任务1:沙漠中的五叶花
  117.     #-----------------------------
  118.     名称 = "\\c[6]沙漠中的五叶花"
  119.     #-讲解-
  120.     # 注意!脚本编辑器的变色功能并不是非常完善,所以换行后字变黑了,但仍然是字符
  121.     # 串的一部分,所以不要忘记在内容最后打一个双引号
  122.     # 按回车是强制换行
  123.     #----
  124.     简介 = "\\c[6]沙漠中的五叶花

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

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

  128. 西露达:
  129. \\c[Hff0000]人家等着你的花哦~"
  130.     #-讲解-
  131.     # 每个任务最后一定要加上:
  132.     # @tasks_info[任务ID] = Game_Task.new(名称, 简介)
  133.     # 接受任务和完成任务都是用这个任务ID来索引
  134.     #----
  135.     @tasks_info[4000] = Game_Task.new(名称, 简介)
  136.    
  137.    
  138.      
  139.     名称 = "\\c[6]村长的神秘物品"
  140.     简介 = "\\c[6]村子中藏着村长的神秘物品,找到它并把它交给村长,但愿那东西不是什么臭袜子之流
  141. \\c[9]任务目标:
  142. 获得某一神秘物品,交给村长
  143. \\c[0]神秘物品:\\v[1]/1
  144. 村长:
  145. \\c[Hff0000]人家等着你哦~"
  146.    @tasks_info[1] = Game_Task.new(名称, 简介)
  147.    
  148.    
  149.     名称 = "\\c[6]被窃的商人"
  150.     简介 = "\\c[6]商人的货物被一只大鸟偷走了,前去把货物抢回来。
  151. \\c[9]任务目标:
  152. 取得货物,交给商人
  153. \\c[0]商人货物:\\v[1]/1
  154. 商人:
  155. \\c[Hff0000]拜托了."
  156.    @tasks_info[2] = Game_Task.new(名称, 简介)
  157.    
  158.    
  159.    名称 = "\\c[6]被窃寻找金牙"
  160.     简介 = "\\c[6]商人的金牙不见了,帮他找找,就在屋内.
  161. \\c[9]任务目标:
  162. 取得金牙,交给商人
  163. \\c[0]金牙:\\v[1]/1
  164. 商人:
  165. \\c[Hff0000]拜托了."
  166.    @tasks_info[3] = Game_Task.new(名称, 简介)
  167.    
  168.    
  169.    
  170.    
  171.    
  172.    
  173.    
  174.    
  175.    
  176.    
  177.    
  178.    
  179.    
  180.    
  181.    
  182.    
  183.    
  184.    
  185.    
  186.    
  187.    
  188.    
  189.    
  190.    
  191.    
  192.    
  193.    
  194.    
  195.    
  196.    
  197.    
  198.    
  199.    
  200.    
  201.    
  202.    
  203.    
  204.    
  205.    
  206.    
  207.    
  208.    
  209.    
  210.    
  211.    
  212.    
  213.     #-----------------------------
  214.     # 示例任务2:克萝莉亚的药瓶
  215.     #-----------------------------
  216.     名称 = "\\c[6]克萝莉亚的药瓶"
  217.     #-讲解-
  218.     # 这里使用了字符串相加,例如 s = "a" + "b" ,s 就是 "ab"
  219.     # 还用了内嵌表达式,$game_party.item_number(38) 就是38号物品的数量
  220.     #----
  221.     简介 = 名称 + "
  222.    
  223. \\c[9]任务目标:
  224. 问克萝莉亚要一个药瓶,交给西露达

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

  226. 西露达:
  227. 克萝莉亚就在西边的屋子里"
  228.     @tasks_info[2000] = Game_Task.new(名称, 简介)
  229.    
  230.     #-----------------------------
  231.     # 示例任务3:灵魂线
  232.     #-----------------------------
  233.     #-讲解-
  234.     # 这里用了条件判断,当3号变量大于等于1时,加上“完成”字样,同时变色
  235.     #----
  236.     if $game_variables[3] >= 1
  237.       名称 = "\\c[8]灵魂线(完成)"
  238.       item = "\\c[8]灵魂线:#{$game_variables[3]}/1 (完成)"
  239.     else
  240.       名称 = "\\c[2]灵魂线"
  241.       item = "\\c[0]灵魂线:#{$game_variables[3]}/1"
  242.     end
  243.     #-讲解-
  244.     # 预先定义变量,用内嵌表达式插入
  245.     # 最后用了显示图标
  246.     #----
  247.     简介 = "#{名称}
  248.    
  249. \\c[9]任务目标:
  250. 找到埋起来的灵魂线,交给克萝莉亚

  251. #{item}

  252. \\c[0]克萝莉亚:
  253. 灵魂线就埋在其中一棵树下,给我好好找\\i[157]"
  254.     @tasks_info[3000] = Game_Task.new(名称, 简介)
  255.    
  256.    
  257.    
  258.    
  259.    
  260.   end
  261. end
  262. #==============================================================================
  263. # ■ Interpreter
  264. #------------------------------------------------------------------------------
  265. #  执行事件命令的解释器。本类在 Game_System 类
  266. # 与 Game_Event 类的内部使用。
  267. #==============================================================================

  268. class Game_Interpreter
  269.   #--------------------------------------------------------------------------
  270.   # ● 接受任务
  271.   #--------------------------------------------------------------------------
  272.   def get_task(id)
  273.     task = $game_party.tasks_info[id]
  274.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  275.     $game_party.current_tasks.unshift(task.id)
  276.     return true
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 获得全部任务
  280.   #--------------------------------------------------------------------------
  281.   def get_all_task
  282.     # 清空当前任务
  283.     $game_party.current_tasks.clear
  284.     for task in $game_party.tasks_info
  285.       next if task.nil?
  286.       $game_party.current_tasks.unshift(task.id)
  287.     end
  288.     return true
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● 完成/放弃任务
  292.   #--------------------------------------------------------------------------
  293.   def finish_task(id)
  294.     task = $game_party.tasks_info[id]
  295.     return true if task.nil?
  296.     $game_party.current_tasks.delete(task.id)
  297.     return true
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 删除全部任务
  301.   #--------------------------------------------------------------------------
  302.   def finish_all_task
  303.     $game_party.current_tasks.clear
  304.     return true
  305.   end
  306. end

  307. #==============================================================================
  308. # ■ Game_Party
  309. #------------------------------------------------------------------------------
  310. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  311. # 请参考 $game_party。
  312. #==============================================================================

  313. class Game_Party
  314.   #--------------------------------------------------------------------------
  315.   # ● 定义实例变量
  316.   #--------------------------------------------------------------------------
  317.   attr_writer     :latest_task                  # 上次查看的任务
  318.   #--------------------------------------------------------------------------
  319.   # ● 取得任务资料
  320.   #--------------------------------------------------------------------------
  321.   def tasks_info
  322.     if @tasks_info.nil?
  323.       get_tasks_info
  324.     end
  325.     return @tasks_info
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 取得当前任务
  329.   #--------------------------------------------------------------------------
  330.   def current_tasks
  331.     if @current_tasks.nil?
  332.       @current_tasks = []
  333.     end
  334.     return @current_tasks
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● 上次查看的任务
  338.   #--------------------------------------------------------------------------
  339.   def latest_task
  340.     if !current_tasks.include?(@latest_task)
  341.       @latest_task = current_tasks[0]
  342.     end
  343.     return @latest_task
  344.   end
  345. end

  346. #==============================================================================
  347. # ■ Game_Task
  348. #------------------------------------------------------------------------------
  349. #  处理任务的类。包含任务的信息。
  350. #==============================================================================

  351. class Game_Task
  352.   attr_accessor   :name                   # 名称
  353.   attr_accessor   :briefing               # 简介
  354.   def initialize(name, briefing)
  355.     @name = name
  356.     @briefing = briefing
  357.   end
  358.   def height
  359.     text = @briefing.clone
  360.     x = 0
  361.     y = 64
  362.     min_y = 0
  363.     # 限制文字处理
  364.     begin
  365.       last_text = text.clone
  366.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  367.     end until text == last_text
  368.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  369.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  370.     end
  371.     # 为了方便、将 "\\\\" 变换为 "\000"
  372.     text.gsub!(/\\\\/) { "\000" }
  373.     # "\C" 变为 "\001"
  374.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  375.     # "\I" 变为 "\002"
  376.     text.gsub!(/\\[Ii]/) { "\002" }
  377.     # "\P" 变为 "\003"
  378.     text.gsub!(/\\[Pp]/) { "\003" }
  379.     # c 获取 1 个字 (如果不能取得文字就循环)
  380.     while ((c = text.slice!(/./m)) != nil)
  381.       # \\ 的情况下
  382.       if c == "\000"
  383.         # 还原为本来的文字
  384.         c = "\\"
  385.       end
  386.       # \C[n] 的情况下
  387.       if c == "\001"
  388.         # 更改文字色
  389.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  390.         # 下面的文字
  391.         next
  392.       end
  393.       # 图标的情况下
  394.       if c == "\002"
  395.         icon_name = ''
  396.         while ((cha = text.slice!(/./m)) != ']')
  397.           next if cha == '['
  398.           icon_name += cha
  399.         end
  400.         if x + 24 > 368
  401.           x = 0
  402.           y += [24, min_y].max
  403.           min_y = 0
  404.         end
  405.         x += 28
  406.         next
  407.       end
  408.       # 图片的情况下
  409.       if c == "\003"
  410.         pic_name = ''
  411.         while ((cha = text.slice!(/./m)) != ']')
  412.           next if cha == '['
  413.           pic_name += cha
  414.         end
  415.         pic = Cache.picture(pic_name)
  416.         if x + pic.width > 368
  417.           x = 0
  418.           y += [24, min_y].max
  419.           min_y = 0
  420.         end
  421.         x += pic.width
  422.         min_y = [pic.height, 24].max
  423.         next
  424.       end
  425.       # 另起一行文字的情况下
  426.       if c == "\n"
  427.         y += [24, min_y].max
  428.         min_y = 0
  429.         x = 0
  430.         # 下面的文字
  431.         next
  432.       end
  433.       # 自动换行处理
  434.       if x + 22 > 368
  435.         y += [24, min_y].max
  436.         min_y = 0
  437.         x = 0
  438.       end
  439.       # x 为要描绘文字的加法运算
  440.       x += 22
  441.     end
  442.     return (y + [24, min_y].max)
  443.   end
  444.   def id
  445.     return $game_party.tasks_info.index(self)
  446.   end
  447. end

  448. #==============================================================================
  449. # ■ Window_Task_Name
  450. #------------------------------------------------------------------------------
  451. #  任务名称显示窗口。
  452. #==============================================================================

  453. class Window_Task_Name < Window_Selectable
  454.   #--------------------------------------------------------------------------
  455.   # ● 初始化对像
  456.   #--------------------------------------------------------------------------
  457.   def initialize(tasks)
  458.     super(0, 0, 204, 416)
  459.     @tasks = []
  460.     for id in tasks
  461.       @tasks.push($game_party.tasks_info[id])
  462.     end
  463.     @item_max = tasks.size
  464.     self.contents = Bitmap.new(
  465.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  466.     refresh
  467.     self.index = 0
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # ● 刷新
  471.   #--------------------------------------------------------------------------
  472.   def refresh
  473.     self.contents.clear
  474.     if @tasks != []
  475.       for task in @tasks
  476.         draw_item(task)
  477.       end
  478.     else
  479.       draw_blank
  480.     end
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● 描绘项目
  484.   #--------------------------------------------------------------------------
  485.   def draw_item(task)
  486.     text = task.name.clone
  487.     y = @tasks.index(task) * WLH
  488.     chenge_special_character(text, 0, y)
  489.   end
  490.   #--------------------------------------------------------------------------
  491.   # ● 描绘空行
  492.   #--------------------------------------------------------------------------
  493.   def draw_blank
  494.     self.contents.font.color = Color.new(255, 255, 255, 128)
  495.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  496.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  497.     self.contents.draw_text(rect, '当前没有任何任务')
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● 获取任务
  501.   #--------------------------------------------------------------------------
  502.   def task
  503.     return @tasks[self.index]
  504.   end
  505. end
  506.   
  507. #==============================================================================
  508. # ■ Window_Task
  509. #------------------------------------------------------------------------------
  510. #  任务内容显示窗口。
  511. #==============================================================================

  512. class Window_Task < Window_Base
  513.   #--------------------------------------------------------------------------
  514.   # ● 初始化对像
  515.   #--------------------------------------------------------------------------
  516.   def initialize(task_id)
  517.     super(204, 0, 340, 416)
  518.     refresh(task_id)
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 刷新内容
  522.   #--------------------------------------------------------------------------
  523.   def refresh(task_id)
  524.     self.oy = 0
  525.     self.visible = true
  526.     return if task_id.nil?
  527.     task = $game_party.tasks_info[task_id]
  528.     if !task.nil?
  529.       self.contents = Bitmap.new(self.width - 32, task.height)
  530.     else
  531.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  532.       return
  533.     end
  534.     self.contents.font.color = normal_color
  535.     # 描绘任务内容
  536.     draw_task_info(task)
  537.   end
  538.   #--------------------------------------------------------------------------
  539.   # ● 描绘任务内容
  540.   #--------------------------------------------------------------------------
  541.   def draw_task_info(task)
  542.     self.contents.font.color = normal_color
  543.     # 描绘任务简介
  544.     chenge_special_character(task.briefing.clone)
  545.   end
  546. end

  547. class Window_Base < Window
  548.   def chenge_special_character(text, x=0, y=0)
  549.     # 记录换行时y坐标最小加值
  550.     min_y = 0
  551.     # 限制文字处理
  552.     begin
  553.       last_text = text.clone
  554.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  555.     end until text == last_text
  556.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  557.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  558.     end
  559.     # 为了方便、将 "\\\\" 变换为 "\000"
  560.     text.gsub!(/\\\\/) { "\000" }
  561.     # "\C" 变为 "\001"
  562.     text.gsub!(/\\[Cc]\[([0-9a-zA-Z]+)\]/)  { "\001[#{$1}]" }
  563.     # "\I" 变为 "\002"
  564.     text.gsub!(/\\[Ii]/) { "\002" }
  565.     # "\P" 变为 "\003"
  566.     text.gsub!(/\\[Pp]/) { "\003" }
  567.     # c 获取 1 个字 (如果不能取得文字就循环)
  568.     while ((c = text.slice!(/./m)) != nil)
  569.       # \\ 的情况下
  570.       if c == "\000"
  571.         # 还原为本来的文字
  572.         c = "\\"
  573.       end
  574.       # \C[n] 的情況下
  575.       if c == "\001"
  576.         # 更改文字色
  577.         text.sub!(/\[([0-9a-zA-Z]+)\]/, "")
  578.         # 如果是设定RGB颜色
  579.         if $1[0,1]=="H"
  580.           # 先拷贝一下文字
  581.           c=$1.dup
  582.           # 分3段分别取出R,G,B颜色
  583.           c.sub!(/H([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})/, "")
  584.           # 设定文字颜色
  585.           self.contents.font.color = Color.new($1.to_i(16), $2.to_i(16), $3.to_i(16))
  586.         else
  587.           color = $1.to_i
  588.           if color >= 0 and color <= 31
  589.             self.contents.font.color = text_color(color)
  590.           elsif color == 32
  591.             self.contents.font.color = disabled_color
  592.           elsif color == 33
  593.             self.contents.font.color = system_color
  594.           end
  595.         end
  596.         # 下面的文字
  597.         next
  598.       end
  599.       # 图标的情况下
  600.       if c == "\002"
  601.         icon_name = ''
  602.         while ((cha = text.slice!(/./m)) != ']')
  603.           next if cha == '['
  604.           icon_name += cha
  605.         end
  606.         if x + 24 > self.contents.width
  607.           x = 0
  608.           y += [WLH, min_y].max
  609.           min_y = 0
  610.         end
  611.         draw_icon(icon_name.to_i, x+4, y+4, true)
  612.         x += 28
  613.         next
  614.       end
  615.       # 图片的情况下
  616.       if c == "\003"
  617.         pic_name = ''
  618.         while ((cha = text.slice!(/./m)) != ']')
  619.           next if cha == '['
  620.           pic_name += cha
  621.         end
  622.         pic = Cache.picture(pic_name)
  623.         if x + pic.width > self.contents.width
  624.           x = 0
  625.           y += [WLH, min_y].max
  626.           min_y = 0
  627.         end
  628.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  629.         x += pic.width
  630.         min_y = [pic.height, WLH].max
  631.         next
  632.       end
  633.       # 另起一行文字的情况下
  634.       if c == "\n"
  635.         y += [WLH, min_y].max
  636.         min_y = 0
  637.         x = 0
  638.         # 下面的文字
  639.         next
  640.       end
  641.       # 自动换行处理
  642.       if x + self.contents.text_size(c).width > self.contents.width
  643.         y += [WLH, min_y].max
  644.         min_y = 0
  645.         x = 0
  646.       end
  647.       # 描绘文字
  648.       self.contents.draw_text(4 + x, y, 40, WLH, c)
  649.       # x 为要描绘文字的加法运算
  650.       x += self.contents.text_size(c).width
  651.     end
  652.   end
  653. end

  654. class Game_Party < Game_Unit
  655.   def item_no(n)
  656.     return item_number($data_items[n])
  657.   end
  658.   def weapon_no(n)
  659.     return item_number($data_weapons[n])
  660.   end
  661.   def armor_no(n)
  662.     return item_number($data_armors[n])
  663.   end
  664. end

  665. #==============================================================================
  666. # ■ Scene_Task
  667. #------------------------------------------------------------------------------
  668. #  处理任务画面的类。
  669. #==============================================================================

  670. class Scene_Task < Scene_Base
  671.   def initialize(index=nil)
  672.     @menu_index = index
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 主处理
  676.   #--------------------------------------------------------------------------
  677.   def start
  678.     # 刷新任务资料
  679.     $game_party.get_tasks_info
  680.     # 生成任务名称窗口
  681.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  682.     @task_names_window.active = true
  683.     if $game_party.current_tasks != []
  684.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  685.     end
  686.     # 生成任务内容窗口
  687.     @task_info_window = Window_Task.new($game_party.latest_task)
  688.     @task_info_window.active = true
  689.   end

  690.   def terminate
  691.     # 释放窗口
  692.     @task_names_window.dispose
  693.     @task_info_window.dispose
  694.   end
  695.   #--------------------------------------------------------------------------
  696.   # ● 刷新画面
  697.   #--------------------------------------------------------------------------
  698.   def update
  699.     # 刷新窗口
  700.     @task_names_window.update
  701.     @task_info_window.update
  702.     update_task_names_window
  703.   end
  704.   #--------------------------------------------------------------------------
  705.   # ● 刷新任务名称窗口
  706.   #--------------------------------------------------------------------------
  707.   def update_task_names_window
  708.     # 按下 B 键的情况下
  709.     if Input.trigger?(Input::B)
  710.       # 演奏取消 SE
  711.       Sound.play_cancel
  712.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  713.       if @menu_index == nil
  714.         $scene = Scene_Map.new
  715.       else
  716.         $scene = Scene_Menu.new(@menu_index)
  717.       end
  718.       return
  719.     end
  720.     # 按下 C 键的情况下
  721.     if Input.trigger?(Input::C)
  722.       # 无任务可显示的话
  723.       if @task_names_window.task == nil
  724.         # 演奏冻结 SE
  725.         Sound.play_buzzer
  726.         return
  727.       end
  728.       # 如果光标没有移动的话,翻页
  729.       if $game_party.latest_task == @task_names_window.task.id
  730.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  731.           @task_info_window.oy = 0
  732.         else
  733.           @task_info_window.oy += 480-32
  734.         end
  735.         if @task_info_window.contents.height > @task_info_window.height - 32
  736.           # 演奏翻页 SE
  737.           Sound.se_play(CHANGE_PAGE_SE)
  738.         end
  739.       else
  740.         @task_info_window.refresh(@task_names_window.task.id)
  741.         $game_party.latest_task = @task_names_window.task.id
  742.         # 演奏确定 SE
  743.         Sound.play_decision
  744.       end
  745.     end
  746.   end
  747. end
复制代码

点评

仔细看了会,没看懂阿 一点没看懂,什么X开关,变数什么的都是什么玩意。。  发表于 2011-9-14 20:07
MSQ
不用谢,大家一起努力做出好游戏~~  发表于 2011-9-14 18:37
谢谢。  发表于 2011-9-14 18:35
回复

使用道具 举报

Lv1.梦旅人

雨狸

梦石
0
星屑
48
在线时间
625 小时
注册时间
2011-3-19
帖子
1296
4
发表于 2011-9-14 18:38:14 | 只看该作者
本帖最后由 絀神入化 于 2011-9-14 18:39 编辑

= =问题太多了,上传附件吧

Project1.zip (248.69 KB, 下载次数: 164)

居然抢先了一步……

评分

参与人数 1星屑 +24 收起 理由
MSQ + 24 还账+深表惭愧+辛苦费

查看全部评分

明夕,何夕
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
5
发表于 2011-9-14 20:31:47 | 只看该作者
额~~可惜现在6R发不了图,我只能再详细的讲一下,话说是第四个,那个任务是吧:
先是打开公共事件,上边勾上并行处理,右上角选择开启该公共事件的开关(在接任务时记得打开该开关)。
事件页上为:变数的操作——点代入——点物品——选择螃蟹腿。这样,该变量就记录了螃蟹腿的个数。
之后选择条件的分歧——点变数——选择那个代入螃蟹腿的变量——等于——点常数——3.这样系统会自动判断螃蟹腿是否会等于3,当等于3时,会引发下个事件。
接下来是打开某个开关。
公共事件完结。
在那个给任务的人那里新建事件页——左上角勾上那个开关被打开——事件里加入报酬就行了。
这已经很详细了~~
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-9 17:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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