下面是 辐射吧赌场 的交互对话内容(赌场里的赌局是绝对公平的哦),希望能给愿意参与的人提供一个参考和启发。
天那!已经看晕了.....
貌似我当初组织赌场规则的时候没有写得这么复杂。..
天那!已经看晕了.....
貌似我当初组织赌场规则的时候没有写得这么复杂。..
计算机很死板的,必须要这样它才知道该怎么做,呵呵。
赌场是个极端的例子,只是为大家开阔下思路,其实单做“谈判专家”那样的对话内容还是比较容易的。
呵呵,最近我也在用cs3做一个类似于infinite 引擎的对白小程序...
参考了下planescape的对白结构,规则判断是蛮麻烦的事情.
感觉XML对白文件格式的自定义也值得斟酌
planescape的对话树
问: Text [index 3070]:DO phrase 0,weight 0
[index 3070]:ID
DO :NPC名字 (这里是冒烟尸体酒吧里的O)
phrase 0:问题数组元素索引
weight 0:第几次碰到该NPC
Condition
满足什么条件才能看到这个选项
答:
Text [index 3070]:DO Response 0
[index 3070]:ID
DO :NPC名字
Response 0:答案数组元素索引
Condition
满足什么条件才能看到这个选项
action
对玩家属性进行修改,或者update 任务
PermanentStatChange(Protagonist, WIS, 2, 1)
DestroySelf()...
另外辐射原来的对白数据也可以参考下的:
以赌场那个对白为例:(我稍微编辑了下,结构看得清除些)
# 0. QUICK LOOK
{100}{}{你看到一个庄家。}
{101}{}{你看到一个骰子桌。}
# has no gambling skill messages
{110}{}{你看到一个女孩。}
{111}{}{你看到一张桌子。}
# 0. EXAMINES
# table
{140}{}{你看到一张用来玩骰子的桌子。}
# no skill
{141}{}{你看到一张桌子,上面有些东西。}
# dealer
{150}{}{你看到一个赌场的庄家。}
{151}{}{你看到一个赌场的庄家。她对你比着过去玩的手势。}
{152}{}{你看到一个赌场的庄家。她穿的衣服几乎不能够遮住她的身体。}
{153}{}{你看到一个赌场的庄家。她的身材还真不错啊。}
{154}{}{你看到一个赌场的庄家。她对你使着眼色。}
{155}{}{你看到一个赌场的庄家。她闻起来好香啊。}
# no skill
{160}{}{你看到一个漂亮的女孩。}
{161}{}{她对你比着过去的手势。}
{162}{}{她穿的衣服几乎不能够遮住她的身体。}
{163}{}{她的身材还真不错啊。}
{164}{}{她对你使着眼色。}
{165}{}{她闻起来好香啊。}
# use gambling skill on dealer
# dealer dice amounts are screwed up
{175}{}{没有骰子!}
{176}{}{太多骰子!}
# dealer has loaded dice planted by player
{177}{}{在你偷换了骰子之後,好像机率变得比较正常了。}
{178}{}{机率好像有些不太对劲。}
{179}{}{你无法断定赌局的机率。}
# dealer has regular dice
{185}{}{赌局的机率看起来没错。}
{186}{}{你无法断定赌局的机率。}
{187}{}{机率好像有些不太对劲。}
# 2. FLOAT [ENCLAVE_DESTROYED == TRUE]
{200}{}{::欢呼::}
{201}{}{::拍手::}
{202}{}{::吹口哨::}
{203}{}{}
{204}{}{我还以为你拯救世界之後会忘了我们咧。}
# 3. FLOAT [MADE MAN, SAME CASINO] (WTG)
{215}{}{你好,}
{216}{}{如果你等一下要找人陪的话 }
{217}{}{嘿,你想要赌一局吗?}
{218}{}{他看起来好危险啊。}
{219}{}{欢迎到赌场来,}
{220}{}{可以在老板面前说我的好话吗?}
{221}{}{你好,如果需要我帮忙的,尽管跟我说。}
{222}{}{想要赌一局吗?}
{223}{}{她看起来好危险啊。}
# 5. FLOAT [MADE MAN, WRONG CASINO] (WTG)
{235}{}{看起来这一个人已经在赌自己的性命了。}
{236}{}{嗯,我想他刚刚走进了错的赌场了。}
{237}{}{如果他不在保镳们看到他之前离开的话 }
{238}{}{喔,麻烦来了}
{239}{}{看起来这一个人已经在赌自己的性命了。}
{240}{}{嗯,我想她刚刚走进了错的赌场了。}
{241}{}{如果她不在保镳们看到她之前离开的话 }
# 7. FLOAT [MALE, PRIZEFIGHTER] (WTG)
{250}{}{嘿,壮丁,想要花一些钱吗?}
{251}{}{嘿,壮丁,你想要赌钱吗?}
{252}{}{嘿,壮丁,想要赌一局吗?}
{253}{}{如果你等一下要找人陪的话 }
{254}{}{不知道我是否应该去与他说话}
{255}{}{嘿,}
{256}{}{如果你想要蠃一些钱的话,你来对地方了。}
{257}{}{今晚幸运之神降临了,全场都是蠃家啊!}
{258}{}{过来吧,}
{259}{}{要再来一杯吗?}
{260}{}{欢迎来到赌场,}
{261}{}{你好,}
{262}{}{想要赌一局吗,}
{263}{}{欢迎来到赌场,}
# 9. FLOAT [PORN STAR] (WTG)
{270}{}{嘿,电影明星,想要花一些钱吗?}
{271}{}{嘿,}
{272}{}{嘿,}
{273}{}{如果你想要蠃一些钱的话}
{274}{}{幸运女神今晚降临了,全场到处都是蠃家!}
{275}{}{进来吧,}
{276}{}{要再来一杯吗?}
{277}{}{欢迎来到赌场,}
{278}{}{嘿,电影明星小姐,想要花钱吗?}
{279}{}{你今晚要跳舞吗?}
# 11. FLOAT [MALE, NO REP] (WTG)
{290}{}{你好,甜心。你想要花一些钱吗?}
{291}{}{嘿,甜心,你想要赌几局吗?}
{292}{}{嘿,甜心,你想要来一局吗?}
{293}{}{如果你想要蠃一些钱的话,你来对地方了。}
{294}{}{幸运女神今晚降临了,全场到处都是蠃家!}
{295}{}{进来吧,蠃些钱吧。}
{296}{}{要再来一杯吗?甜心。}
{297}{}{欢迎来到赌场,甜心。}
{298}{}{这一桌空开了,如果你想要赌的话 }
{299}{}{嘿,甜心。你想要花一些钱吗?}
{300}{}{想要赌钱吗,甜心?}
{301}{}{欢迎来到赌场,甜心。}
# 13.? PLACE YOUR BETS (WTG)
{320}{}{[庄家很紧张的看着你,并且咬着她自己的嘴唇。] 下注下注,最低注是$}
{321}{}{先生,下注。最低赌注是$}
{322}{}{小姐,下注。最低赌注是$}
{323}{}{下注。最低赌注是$}
{324}{}{我比你厉害}
{325}{}{我用膝盖就能够玩骰子}
{326}{}{这是什麽游戏?可以赌蜥 皮吗?我有皮![离开。]}
{327}{}{[你有$}
{328}{}{赌$}
{329}{}{哇,对我来说太贵了。}
{330}{}{今天不赌,谢了。}
{331}{}{嗯,抱歉,我不知道要何玩这一种游戏。}
# 14.? RETARD (14)
{340}{}{我听说後面在古怪,你应该去检查一下才是。}
{341}{}{嗯,很好。马上回来。}
{342}{}{嗯,很好。马上回来。}
{343}{}{再见}
{344}{}{好啊。}
{345}{}{古怪什麽?我去看!}
# 15. POOR MAN (13)
{350}{}{嗯,很好。马上回来。}
{351}{}{嗯,很好。马上回来。}
{352}{}{[庄家眉头皱了一下。]$}
{354}{}{我会的,谢谢。}
{355}{}{也许吧。}
# 16. LOOOOOOSER (13)
{400}{}{抱歉,下次会比较好运吧。}
{401}{}{抱歉,先生,下次会比较好运吧。}
{402}{}{抱歉,小姐,下次会比较好运吧。}
{410}{}{蠃家!}
{411}{}{蠃家!做得好,先生!}
{412}{}{蠃家!做得好,小姐!}
{420}{}{蠃家!你的钱变成双倍了。}
{421}{}{蠃家!做得好,你的钱变成双倍了,先生!}
{422}{}{蠃家!做得好,你的钱变成双倍了,小姐!}
{430}{}{蠃家!你的钱变成三倍了。}
{431}{}{蠃家!做得好,你的钱变成三倍了,先生!}
{432}{}{蠃家!做得好,你的钱变成三倍了,小姐!}
{440}{}{今天就先这样吧。}
{441}{}{今晚就先这样吧。}
#17. TABLE TAMPER
{450}{}{抱歉,这一桌已经不能赌了。有人在骰子上面动了手脚。}
{451}{}{抱歉,先生,这一桌已经不能赌了。有人在骰子上面动了手脚。}
{452}{}{抱歉,小姐,这一桌已经不能赌了。有人在骰子上面动了手脚。}
{453}{}{喔,好。}
{454}{}{真是坏消息啊,再见。}
# message parts
{2203}{}{!欢迎来到赌场,英雄!}
{2215}{}{。我可以帮你吗?}
{2219}{}{。}
{2255}{}{。想要蠃一些钱吗?}
{2258}{}{,蠃一些钱吧。}
{2260}{}{。}
{2261}{}{。只要有我能帮你的,就跟我说吧。}
{2262}{}{?}
{2263}{}{。}
{2321}{}{。下注。}
{2327}{}{。]}
{2328}{}{。}
{2344}{}{总是可以使用物品栏内的物件[离开。]}
{2352}{}{没钱?那你来错地方了。}
{2353}{}{没钱?那你来错地方了。}
我暂时的对白程序结构是这样的...
question=[];
answer=[];
因为question和answer的对应关系为:
1 question 后面接 n answer
1 answer 后面接 1 question
所以正则表达式上稍有区别如下:
question:
ID{-}NODE{-}CONTEXT{-}CONDITION{-}
ID:Number //索引号,读取正则用 question[ID]=...即可
NODE:array //链接的答案ID
CONTEXT:内容
CONDITION:满足条件(比如智力要求等),调用player类函数
answer:
ID{-}NODE{-}CONTEXT{-}CONDITION{-}ACTION
ID:Number //索引号,读取正则用 question[ID]=...即可
NODE:Number//链接的答案ID
CONTEXT:内容
CONDITION:满足条件(比如智力要求等),调用player类函数
ACTION:对player操作,更新日志,或者修改玩家属性,升级等等,调用player类函数
另外在开启对白时候,修改player实例的log数组,方便回显对白
当然,最后整合的时候还是将 question和answer 放一个txt文件里...主要是做一个前期的对白编辑器会比较好,因为CS3不方便存档,所以让程序输出在textfield剪辑中,然后copy出来自己存也行,虽然麻烦点,UI会友好很多吧...:)另外,像辐射的对白txt档,实际上把查看数据等等也放进去了 :)
准备优化结构,现在感觉比较臃肿,不知道沙木你的对白程序结构是啥样的,现在的对白编写的感觉还是挺累的啊... 期待讨论 : )
对白结构我的相对比较“傻瓜化”,辐射吧的交互对话系统只采用主楼中提到形式,暂时不考虑别的形式,DavinciY建议你另开一贴进行你的对话系统讨论。