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

Project1

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

[已经解决] 如何做出这样的效果

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
13 小时
注册时间
2006-11-19
帖子
123
跳转到指定楼层
1
发表于 2012-8-16 21:18:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在游戏系统菜单中添加一个“人物介绍”选项,进入该选项后将会显示出一个界面,界面中各种有人物的图片和相应的文字说明。

Lv3.寻梦者

梦石
0
星屑
3583
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
2
发表于 2012-8-16 23:40:19 | 只看该作者
其实可以写在状态里 如果硬要分开 可以仿照状态脚本的写法 自己写个人物介绍脚本
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
13 小时
注册时间
2006-11-19
帖子
123
3
 楼主| 发表于 2012-8-17 10:39:06 | 只看该作者
yagami 发表于 2012-8-16 23:40
其实可以写在状态里 如果硬要分开 可以仿照状态脚本的写法 自己写个人物介绍脚本 ...

那人物介绍脚本应该怎么写

点评

对,不要角色数据,就像是角色图谱一样,只要角色图片+介绍就行  发表于 2012-8-17 17:34
你的人物介绍是否1图流 里面不含角色的数据 只是PS上弄说明?  发表于 2012-8-17 12:17
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
20 小时
注册时间
2012-4-6
帖子
30
4
发表于 2012-8-17 11:35:54 | 只看该作者
本帖最后由 夜之荒芜 于 2012-8-17 11:38 编辑

你可以弄一本人物介绍的书(物品)
调用公共事件~~出现选择框~~选谁就进入谁的人物介绍(显示图片)~~
如果要遇到一人加一人的介绍~可以用条件分歧~

不会写脚本的路过~~(虽然不太符合你的要求)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
5
发表于 2012-8-17 12:29:58 | 只看该作者
主站有个人物介绍脚本
http://www.66rpg.com/articles/3072
插入后再在Scene_Menu内添加呼叫效果

点评

这个脚本好像只能介绍队友吧,我想来个所有人物的介绍  发表于 2012-8-17 18:17
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3583
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
6
发表于 2012-8-17 12:35:54 | 只看该作者
人物说明.rar (197 KB, 下载次数: 64) 帮你写了下脚本 是不是要这效果?

评分

参与人数 1星屑 +132 收起 理由
hcm + 132 感谢回答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
13 小时
注册时间
2006-11-19
帖子
123
7
 楼主| 发表于 2012-8-17 17:43:15 | 只看该作者
yagami 发表于 2012-8-17 12:35
帮你写了下脚本 是不是要这效果?

非常感谢你的脚本,不过可能你还没有理解我的意思,我是想要做出这样的效果。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
8
发表于 2012-8-17 18:11:24 | 只看该作者
本帖最后由 Wind2010 于 2012-8-17 18:12 编辑



发重了,自炸……

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
195
在线时间
339 小时
注册时间
2012-7-16
帖子
148
9
发表于 2012-8-18 11:47:48 | 只看该作者
我认为最老土的方法是用显示图片做- -
字设置一个图片 背景设置一个图片
【6月份回归者】
回复 支持 反对

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3190
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

10
发表于 2012-8-18 11:59:12 | 只看该作者
  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. 顾名思义,就是显示任务资料的界面
  17. 任务资料要预先在这里设定好
  18. 下载范例工程,能帮助你更快更好地掌握使用方法
  19. --------------------------------------------------------------------------
  20. 使用方法:

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

  22. 可以在事件中的“脚本”指令加入这段东西,又或者修改 Scene_Menu 来增加一个显示
  23. 任务的选项。如果是修改 Scene_Menu 增加选项的话,在脚本倒数第30行左右,
  24. 把 $scene = Scene_Map.new 修改成 $scene = Scene_Menu.new(任务界面index)

  25. 2、设置任务资料

  26.   2.1、相关内容解析
  27.   
  28.   所有内容文字必须用双引号括住
  29.   
  30.   名称:任务的名字(显示在左边窗口中),大小为208×32,如果全部为文字的话,
  31.         够放九个全角字符
  32.         
  33.   简介:任务的介绍(显示在右边窗口中),宽368,高不限
  34.   
  35.         文字可以自动换行
  36.   
  37.    2.1.1、控制码解析
  38.    
  39.    名称和内容均可用控制码,注意两条反斜线都要打!
  40.    
  41.    \\v[n] 显示n号变量
  42.    \\c[n] 改变字体颜色。
  43.           n=1~7 时同“显示文章”的\c[n],n=8 时为半透明色,n=9 时为系统色(青色)
  44.    \\n[i] 显示i号角色名字
  45.    \\i[文件名] 显示图标
  46.    \\p[文件名] 显示图片
  47.    
  48.    2.1.2、高级:内嵌表达式
  49.         
  50.    请参考帮助-脚本入门-字符串-内嵌表达式相关内容。
  51.    它可以用来在任务的名称和简介那里显示变量。
  52.    常用的表达式(注意不要漏了井号和大括号):
  53.    #{$game_variables[n]}       ——插入n号变量的值
  54.    #{$game_party.item_number(n)}  ——插入持有n号物品数量
  55.                                       同理还有weapon_number,armor_number
  56.    还可以预先定义一个变量,再插入(例子见示例任务3-灵魂线)
  57.    
  58.   2.2、注意事项
  59.   
  60.    2.2.1、括号、逗号和双引号 [ ] , " 必须使用半角符号(英文输入),
  61.           引号内的内容则没有关系
  62.          
  63.    2.2.2、单引号 ' 和双引号 " 的区别:
  64.           为了不出错误,全部用双引号吧!当然如果你对Ruby很熟悉,那就没所谓了
  65.   
  66.   2.3、开始设置吧!
  67.   从107行开始设置任务资料,可以参考示例任务来设置,请仔细阅读附加讲解
  68.   
  69. 3、接受任务

  70. 事件里的“脚本”指令输入:_command_get_task(任务ID)
  71. 例如 _command_get_task(1) 就是接受1号任务(这里改成添加1号人物的介绍)

  72.   3.1、获得全部任务
  73.   
  74.   事件里的“脚本”指令输入:_command_get_all_task
  75.   这个功能基本上是用来在编写好所有任务资料后测试排版的
  76.   

  77. 4、完成/删除任务

  78. 事件里的“脚本”指令输入:_command_finish_task(任务ID)
  79. 例如 _command_finish_task(1) 就是完成1号任务

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

  82.   4.1、删除全部任务
  83.   
  84.   事件里的“脚本”指令输入:finish_all_task
  85.   作为获得全部任务的对应功能存在,似乎不会怎么用到
  86. =end

  87. class Scene_Task
  88.   # 这里设置任务内容翻页音效
  89.   CHANGE_PAGE_SE = "Audio/SE/046-Book01"
  90. end

  91. class Game_Party
  92.   #--------------------------------------------------------------------------
  93.   # ● 人物属性
  94.   #--------------------------------------------------------------------------
  95.   def get_tasks_info
  96.     @tasks_info = []
  97.    

  98.     名称 = "\\c[6]阿尔西斯"

  99.     简介 = "姓名:"名称+"
  100. 年龄:100岁
  101. 爱好:杀人
  102. 状态:脑动脉硬化
  103. "
  104.     @tasks_info[1] = Game_Task.new(名称, 简介)

  105.    
  106.    
  107.    
  108.     名称 = "\\c[6]拉尔夫"

  109.     简介 = "姓名:"名称+"
  110. 年龄:900岁
  111. 爱好:抢劫
  112. 状态:中风了
  113. "
  114.     @tasks_info[2] = Game_Task.new(名称, 简介)
  115.    

  116.    
  117.   end
  118. end
  119.    
  120. #  占用调解器不道德,hys在前面加_command_
  121. #==============================================================================
  122. # ■ Interpreter
  123. #------------------------------------------------------------------------------
  124. #  执行事件命令的解释器。本类在 Game_System 类
  125. # 与 Game_Event 类的内部使用。
  126. #==============================================================================

  127. class Interpreter
  128.   #--------------------------------------------------------------------------
  129.   # ● 接受任务
  130.   #--------------------------------------------------------------------------
  131.   def _command_get_task(id)
  132.     task = $game_party.tasks_info[id]
  133.     return true if (task.nil? or $game_party.current_tasks.include?(task.id))
  134.     $game_party.current_tasks.unshift(task.id)
  135.     return true
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 获得全部任务
  139.   #--------------------------------------------------------------------------
  140.   def _command_get_all_task
  141.     # 清空当前任务
  142.     $game_party.current_tasks.clear
  143.     for task in $game_party.tasks_info
  144.       next if task.nil?
  145.       $game_party.current_tasks.unshift(task.id)
  146.     end
  147.     return true
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 完成/放弃任务
  151.   #--------------------------------------------------------------------------
  152.   def _command_finish_task(id)
  153.     task = $game_party.tasks_info[id]
  154.     return true if task.nil?
  155.     $game_party.current_tasks.delete(task.id)
  156.     return true
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 删除全部任务
  160.   #--------------------------------------------------------------------------
  161.   def _command_finish_all_task
  162.     $game_party.current_tasks.clear
  163.     return true
  164.   end
  165. end
  166. #  占用调解器不道德,hys在前面加_command_

  167. #==============================================================================
  168. # ■ Game_Party
  169. #------------------------------------------------------------------------------
  170. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  171. # 请参考 $game_party。
  172. #==============================================================================

  173. class Game_Party
  174.   #--------------------------------------------------------------------------
  175.   # ● 定义实例变量
  176.   #--------------------------------------------------------------------------
  177.   attr_writer     :latest_task                  # 上次查看的任务
  178.   #--------------------------------------------------------------------------
  179.   # ● 取得任务资料
  180.   #--------------------------------------------------------------------------
  181.   def tasks_info
  182.     if @tasks_info.nil?
  183.       get_tasks_info
  184.     end
  185.     return @tasks_info
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 取得当前任务
  189.   #--------------------------------------------------------------------------
  190.   def current_tasks
  191.     if @current_tasks.nil?
  192.       @current_tasks = []
  193.     end
  194.     return @current_tasks
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 上次查看的任务
  198.   #--------------------------------------------------------------------------
  199.   def latest_task
  200.     if !current_tasks.include?(@latest_task)
  201.       @latest_task = current_tasks[0]
  202.     end
  203.     return @latest_task
  204.   end
  205. end

  206. #==============================================================================
  207. # ■ Game_Task
  208. #------------------------------------------------------------------------------
  209. #  处理任务的类。包含任务的信息。
  210. #==============================================================================

  211. class Game_Task
  212.   attr_accessor   :name                   # 名称
  213.   attr_accessor   :briefing               # 简介
  214.   def initialize(name, briefing)
  215.     @name = name
  216.     @briefing = briefing
  217.   end
  218.   def height
  219.     text = @briefing.clone
  220.     x = 0
  221.     y = 64
  222.     min_y = 0
  223.     # 限制文字处理
  224.     begin
  225.       last_text = text.clone
  226.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  227.     end until text == last_text
  228.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  229.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  230.     end
  231.     # 为了方便、将 "\\\\" 变换为 "\000"
  232.     text.gsub!(/\\\\/) { "\000" }
  233.     # "\C" 变为 "\001"
  234.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  235.     # "\I" 变为 "\002"
  236.     text.gsub!(/\\[Ii]/) { "\002" }
  237.     # "\P" 变为 "\003"
  238.     text.gsub!(/\\[Pp]/) { "\003" }
  239.     # c 获取 1 个字 (如果不能取得文字就循环)
  240.     while ((c = text.slice!(/./m)) != nil)
  241.       # \\ 的情况下
  242.       if c == "\000"
  243.         # 还原为本来的文字
  244.         c = "\\"
  245.       end
  246.       # \C[n] 的情况下
  247.       if c == "\001"
  248.         # 更改文字色
  249.         text.sub!(/\[([0-9]+)\]/, "")
  250.         # 下面的文字
  251.         next
  252.       end
  253.       # 图标的情况下
  254.       if c == "\002"
  255.         icon_name = ''
  256.         while ((cha = text.slice!(/./m)) != ']')
  257.           next if cha == '['
  258.           icon_name += cha
  259.         end
  260.         icon = RPG::Cache.icon(icon_name)
  261.         if x + icon.width > 368
  262.           x = 0
  263.           y += [32, min_y].max
  264.           min_y = 0
  265.         end
  266.         x += 28
  267.         next
  268.       end
  269.       # 图片的情况下
  270.       if c == "\003"
  271.         pic_name = ''
  272.         while ((cha = text.slice!(/./m)) != ']')
  273.           next if cha == '['
  274.           pic_name += cha
  275.         end
  276.         pic = RPG::Cache.picture(pic_name)
  277.         if x + pic.width > 368
  278.           x = 0
  279.           y += [32, min_y].max
  280.           min_y = 0
  281.         end
  282.         x += pic.width
  283.         min_y = [pic.height, 32].max
  284.         next
  285.       end
  286.       # 另起一行文字的情况下
  287.       if c == "\n"
  288.         y += [32, min_y].max
  289.         min_y = 0
  290.         x = 0
  291.         # 下面的文字
  292.         next
  293.       end
  294.       # 自动换行处理
  295.       if x + 22 > 368
  296.         y += [32, min_y].max
  297.         min_y = 0
  298.         x = 0
  299.       end
  300.       # x 为要描绘文字的加法运算
  301.       x += 22
  302.     end
  303.     return (y + [32, min_y].max)
  304.   end
  305.   def id
  306.     return $game_party.tasks_info.index(self)
  307.   end
  308. end

  309. #==============================================================================
  310. # ■ Window_Task_Name
  311. #------------------------------------------------------------------------------
  312. #  任务名称显示窗口。
  313. #==============================================================================

  314. class Window_Task_Name < Window_Selectable
  315.   #--------------------------------------------------------------------------
  316.   # ● 初始化对像
  317.   #--------------------------------------------------------------------------
  318.   def initialize(tasks)
  319.     super(0, 0, 240, 480)
  320.     @tasks = []
  321.     for id in tasks
  322.       @tasks.push($game_party.tasks_info[id])
  323.     end
  324.     @item_max = tasks.size
  325.     self.contents = Bitmap.new(
  326.     self.width - 32, @item_max == 0 ? 32 : @item_max * 32)
  327.     refresh
  328.     self.index = 0
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ● 刷新
  332.   #--------------------------------------------------------------------------
  333.   def refresh
  334.     self.contents.clear
  335.     if @tasks != []
  336.       for task in @tasks
  337.         draw_item(task)
  338.       end
  339.     else
  340.       draw_blank
  341.     end
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 描绘项目
  345.   #--------------------------------------------------------------------------
  346.   def draw_item(task)
  347.     text = task.name.clone
  348.     x = 0
  349.     y = @tasks.index(task) * 32
  350.     # 限制文字处理
  351.     begin
  352.       last_text = text.clone
  353.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  354.     end until text == last_text
  355.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  356.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  357.     end
  358.     # 为了方便、将 "\\\\" 变换为 "\000"
  359.     text.gsub!(/\\\\/) { "\000" }
  360.     # "\\C" 变为 "\001"
  361.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  362.     # "\I" 变为 "\002"
  363.     text.gsub!(/\\[Ii]/) { "\002" }
  364.     # "\P" 变为 "\003"
  365.     text.gsub!(/\\[Pp]/) { "\003" }
  366.     # c 获取 1 个字 (如果不能取得文字就循环)
  367.     while ((c = text.slice!(/./m)) != nil)
  368.       # \\ 的情况下
  369.       if c == "\000"
  370.         # 还原为本来的文字
  371.         c = "\\"
  372.       end
  373.       # \C[n] 的情况下
  374.       if c == "\001"
  375.         # 更改文字色
  376.         text.sub!(/\[([0-9]+)\]/, "")
  377.         color = $1.to_i
  378.         if color >= 0 and color <= 7
  379.           self.contents.font.color = text_color(color)
  380.         elsif color == 8
  381.           self.contents.font.color = disabled_color
  382.         elsif color == 9
  383.           self.contents.font.color = system_color
  384.         end
  385.         # 下面的文字
  386.         next
  387.       end
  388.       # 图标的情况下
  389.       if c == "\002"
  390.         icon_name = ''
  391.         while ((cha = text.slice!(/./m)) != ']')
  392.           next if cha == '['
  393.           icon_name += cha
  394.         end
  395.         icon = RPG::Cache.icon(icon_name)
  396.         if x + icon.width > self.contents.width
  397.           x = 0
  398.           y += [32, min_y].max
  399.           min_y = 0
  400.         end
  401.         self.contents.blt(x + 4, y + 4, icon, Rect.new(0, 0, 24, 24))
  402.         x += 28
  403.         next
  404.       end
  405.       # 图片的情况下
  406.       if c == "\003"
  407.         pic_name = ''
  408.         while ((cha = text.slice!(/./m)) != ']')
  409.           next if cha == '['
  410.           pic_name += cha
  411.         end
  412.         pic = RPG::Cache.picture(pic_name)
  413.         if x + pic.width > self.contents.width
  414.           x = 0
  415.           y += [32, min_y].max
  416.           min_y = 0
  417.         end
  418.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  419.         x += pic.width
  420.         next
  421.       end
  422.       # 描绘文字
  423.       self.contents.draw_text(4 + x, y, 40, 32, c)
  424.       # x 为要描绘文字的加法运算
  425.       x += self.contents.text_size(c).width
  426.     end
  427.   end
  428.   #--------------------------------------------------------------------------
  429.   # ● 描绘空行
  430.   #--------------------------------------------------------------------------
  431.   def draw_blank
  432.     self.contents.font.color = disabled_color
  433.     rect = Rect.new(4, 0, self.contents.width - 8, 32)
  434.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  435.     self.contents.draw_text(rect, '当前没有任何人物的资料')
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 获取任务
  439.   #--------------------------------------------------------------------------
  440.   def task
  441.     return @tasks[self.index]
  442.   end
  443. end
  444.   
  445. #==============================================================================
  446. # ■ Window_Task
  447. #------------------------------------------------------------------------------
  448. #  任务内容显示窗口。
  449. #==============================================================================

  450. class Window_Task < Window_Base
  451.   #--------------------------------------------------------------------------
  452.   # ● 初始化对像
  453.   #--------------------------------------------------------------------------
  454.   def initialize(task_id)
  455.     super(240, 0, 400, 480)
  456.     refresh(task_id)
  457.   end
  458.   #--------------------------------------------------------------------------
  459.   # ● 刷新内容
  460.   #--------------------------------------------------------------------------
  461.   def refresh(task_id)
  462.     self.oy = 0
  463.     self.visible = true
  464.     return if task_id.nil?
  465.     task = $game_party.tasks_info[task_id]
  466.     if !task.nil?
  467.       self.contents = Bitmap.new(self.width - 32, task.height)
  468.     else
  469.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  470.       return
  471.     end
  472.     self.contents.font.color = normal_color
  473.     # 描绘任务内容
  474.     draw_task_info(task)
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 描绘任务内容
  478.   #--------------------------------------------------------------------------
  479.   def draw_task_info(task)
  480.     # 记录文字x坐标
  481.     x = 0
  482.     # 记录文字y坐标
  483.     y = 0
  484.     # 记录换行时y坐标最小加值
  485.     min_y = 0
  486.     self.contents.font.color = normal_color
  487.     # 描绘任务简介
  488.     text = task.briefing.clone
  489.     # 限制文字处理
  490.     begin
  491.       last_text = text.clone
  492.       text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  493.     end until text == last_text
  494.     text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  495.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  496.     end
  497.     # 为了方便、将 "\\\\" 变换为 "\000"
  498.     text.gsub!(/\\\\/) { "\000" }
  499.     # "\C" 变为 "\001"
  500.     text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  501.     # "\I" 变为 "\002"
  502.     text.gsub!(/\\[Ii]/) { "\002" }
  503.     # "\P" 变为 "\003"
  504.     text.gsub!(/\\[Pp]/) { "\003" }
  505.     # c 获取 1 个字 (如果不能取得文字就循环)
  506.     while ((c = text.slice!(/./m)) != nil)
  507.       # \\ 的情况下
  508.       if c == "\000"
  509.         # 还原为本来的文字
  510.         c = "\\"
  511.       end
  512.       # \C[n] 的情况下
  513.       if c == "\001"
  514.         # 更改文字色
  515.         text.sub!(/\[([0-9]+)\]/, "")
  516.         color = $1.to_i
  517.         if color >= 0 and color <= 7
  518.           self.contents.font.color = text_color(color)
  519.         elsif color == 8
  520.           self.contents.font.color = disabled_color
  521.         elsif color == 9
  522.           self.contents.font.color = system_color
  523.         end
  524.         # 下面的文字
  525.         next
  526.       end
  527.       # 图标的情况下
  528.       if c == "\002"
  529.         icon_name = ''
  530.         while ((cha = text.slice!(/./m)) != ']')
  531.           next if cha == '['
  532.           icon_name += cha
  533.         end
  534.         icon = RPG::Cache.icon(icon_name)
  535.         if x + icon.width > self.contents.width
  536.           x = 0
  537.           y += [32, min_y].max
  538.           min_y = 0
  539.         end
  540.         self.contents.blt(x + 4, y + 4, icon, Rect.new(0, 0, 24, 24))
  541.         x += 28
  542.         next
  543.       end
  544.       # 图片的情况下
  545.       if c == "\003"
  546.         pic_name = ''
  547.         while ((cha = text.slice!(/./m)) != ']')
  548.           next if cha == '['
  549.           pic_name += cha
  550.         end
  551.         pic = RPG::Cache.picture(pic_name)
  552.         if x + pic.width > self.contents.width
  553.           x = 0
  554.           y += [32, min_y].max
  555.           min_y = 0
  556.         end
  557.         self.contents.blt(x + 4, y, pic, Rect.new(0, 0, pic.width, pic.height))
  558.         x += pic.width
  559.         min_y = [pic.height, 32].max
  560.         next
  561.       end
  562.       # 另起一行文字的情况下
  563.       if c == "\n"
  564.         y += [32, min_y].max
  565.         min_y = 0
  566.         x = 0
  567.         # 下面的文字
  568.         next
  569.       end
  570.       # 自动换行处理
  571.       if x + self.contents.text_size(c).width > self.contents.width
  572.         y += [32, min_y].max
  573.         min_y = 0
  574.         x = 0
  575.       end
  576.       # 描绘文字
  577.       self.contents.draw_text(4 + x, y, 40, 32, c)
  578.       # x 为要描绘文字的加法运算
  579.       x += self.contents.text_size(c).width
  580.     end
  581.   end
  582. end

  583. #==============================================================================
  584. # ■ Scene_Task
  585. #------------------------------------------------------------------------------
  586. #  处理任务画面的类。
  587. #==============================================================================

  588. class Scene_Task
  589.   #--------------------------------------------------------------------------
  590.   # ● 主处理
  591.   #--------------------------------------------------------------------------
  592.   def main
  593.     # 刷新任务资料
  594.     $game_party.get_tasks_info
  595.     # 生成任务名称窗口
  596.     @task_names_window = Window_Task_Name.new($game_party.current_tasks)
  597.     @task_names_window.active = true
  598.     if $game_party.current_tasks != []
  599.       @task_names_window.index = $game_party.current_tasks.index($game_party.latest_task)
  600.     end
  601.     # 生成任务内容窗口
  602.     @task_info_window = Window_Task.new($game_party.latest_task)
  603.     @task_info_window.active = true
  604.     # 执行过渡
  605.     Graphics.transition
  606.     # 主循环
  607.     loop do
  608.       # 刷新游戏画面
  609.       Graphics.update
  610.       # 刷新输入信息
  611.       Input.update
  612.       # 刷新画面
  613.       update
  614.       # 如果画面被切换的话就中断循环
  615.       if $scene != self
  616.         break
  617.       end
  618.     end
  619.     # 准备过渡
  620.     Graphics.freeze
  621.     # 释放窗口
  622.     @task_names_window.dispose
  623.     @task_info_window.dispose
  624.   end
  625.   #--------------------------------------------------------------------------
  626.   # ● 刷新画面
  627.   #--------------------------------------------------------------------------
  628.   def update
  629.     # 刷新窗口
  630.     @task_names_window.update
  631.     @task_info_window.update
  632.     update_task_names_window
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● 刷新任务名称窗口
  636.   #--------------------------------------------------------------------------
  637.   def update_task_names_window
  638.     # 按下 B 键的情况下
  639.     if Input.trigger?(Input::B)
  640.       # 演奏取消 SE
  641.       $game_system.se_play($data_system.cancel_se)
  642.       # 这里设置返回的场景,返回地图是Scene_Map.new,菜单是Scene_Menu.new(任务界面index)
  643.       $scene = Scene_Map.new
  644.       return
  645.     end
  646.     # 按下 C 键的情况下
  647.     if Input.trigger?(Input::C)
  648.       # 无任务可显示的话
  649.       if @task_names_window.task == nil
  650.         # 演奏冻结 SE
  651.         $game_system.se_play($data_system.buzzer_se)
  652.         return
  653.       end
  654.       # 如果光标没有移动的话,翻页
  655.       if $game_party.latest_task == @task_names_window.task.id
  656.         if @task_info_window.oy + @task_info_window.height - 32 > @task_info_window.contents.height
  657.           @task_info_window.oy = 0
  658.         else
  659.           @task_info_window.oy += 480-32
  660.         end
  661.         if @task_info_window.contents.height > @task_info_window.height - 32
  662.           # 演奏翻页 SE
  663.           Audio.se_play(CHANGE_PAGE_SE)
  664.         end
  665.       else
  666.         @task_info_window.refresh(@task_names_window.task.id)
  667.         $game_party.latest_task = @task_names_window.task.id
  668.         # 演奏确定 SE
  669.         $game_system.se_play($data_system.decision_se)
  670.       end
  671.     end
  672.   end
  673. end
复制代码
其实脚本可以用来做任何事。(本人将叶子的人物系统充当人物介绍)
修改请参照:
    名称 = "\\c[6]阿尔西斯"

    简介 = "姓名:"名称+"
年龄:100岁
爱好:杀人
状态:脑动脉硬化
"
    @tasks_info[1] = Game_Task.new(名称, 简介)

   
   
   
    名称 = "\\c[6]拉尔夫"

    简介 = "姓名:"名称+"
年龄:900岁
爱好:抢劫
状态:中风了
"
    @tasks_info[2] = Game_Task.new(名称, 简介)

点评

要会活用脚本……  发表于 2012-8-18 12:01

评分

参与人数 2星屑 +240 梦石 +2 收起 理由
hcm + 200 + 2 认可答案,这用法有意思
z121310 + 40 这个蛮好玩的,不过图片呢?

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 22:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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