Project1

标题: [事件脚本糖]随机对话 [打印本页]

作者: viktor    时间: 2013-1-6 16:42
标题: [事件脚本糖]随机对话
嘛……最近看@墟源 做的地图里面 NPC随机对话都是这样写的事件:


人物一多还真的很麻烦。
于是就写了一个事件糖啦。这样的话随机对话可以这样写:



顺便演练了一下随机抽样的算法。
脚本:
RUBY 代码复制
  1. class Interpreter
  2.   def 随机对话
  3.     return false if $game_temp.message_text != nil
  4.  
  5.     n=0; @index+=1; show_text = ""
  6.     while @index<@list.size and @list[@index].code==101
  7.       # 读取一条完整的文字
  8.       text = @list[@index].parameters[0]+"\n"
  9.       @index+=1
  10.       while @index<@list.size and @list[@index].code==401
  11.         text += @list[@index].parameters[0]+"\n"
  12.         @index+=1
  13.       end
  14.       # 判断是否取
  15.       n+=1
  16.       show_text = text if rand() < 1.0/n
  17.     end
  18.     $game_temp.message_text = show_text
  19.  
  20.     # 设置信息结束后待机和返回调用标志
  21.     @message_waiting = true
  22.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  23.     # 不继续
  24.     return false
  25.   end
  26. end

作者: 你最珍贵    时间: 2013-1-6 19:48
请问楼主这个怎么用
作者: viktor    时间: 2013-1-7 10:53
你最珍贵 发表于 2013-1-6 19:48
请问楼主这个怎么用

脚本丢进去。然后原来像图1那样写的随机对话,就可以像图2那样写了。

另外如果把return false 改成return true的话也许可以继续执行后面的事件呢
作者: Denis    时间: 2013-1-11 17:35
可以用类似的办法做1%。概率的随机抽奖吗?
作者: 墟源    时间: 2013-2-4 21:27
本帖最后由 墟源 于 2013-2-4 21:29 编辑

哟罗曼曼,你打算把脚本都发上来?
作者: 哀筝一弄湘江曲    时间: 2013-2-4 23:03
微微膜拜樓主。
順便求同一事件頁當中終止隨機對話的方法~
作者: satgo1546    时间: 2013-2-5 19:04

我一直这么弄的。感觉还不错
作者: Munchen1921    时间: 2013-2-17 13:36
有没有VA的?
作者: 摸金校尉    时间: 2014-11-11 00:03
大赞啊。。。。。好东西。。
作者: yang1zhi    时间: 2014-11-11 18:28
这个兼容高吗?
假如第一行写了脚本:随机脚本了。那么接下去的文章就都享有随机脚本的效果。那么是不是再接下去的就全都是随机效果的了,能连吗。
就是(1,2,3)可以{[(1,2,3),(4,5,6)],7,8,9}之类的吗
作者: chd114    时间: 2014-11-11 22:21
这样子每个对话出现的概率都是一样的吧···
作者: j296196585    时间: 2014-11-24 21:49
神者,( ⊙ o ⊙ )啊!小弟膜拜中。。。
作者: makeyoufun    时间: 2017-8-17 10:01
厉害了!!!喜欢哦~~~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1