北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 11675|回复: 13

[ytin]求教关于ytin的一个问题。

[复制链接]
发表于 2012-7-27 13:43:34 | 显示全部楼层 |阅读模式
使用了很长时间的ytin了,一直感觉很好,基本上需要的功能也都有。

最近出现个必须要act抓取匹配结束标志的问题,怎么都找不到ytin的结束标志。试了$,根据ytin作者给我回的邮件又试了\$,\\$,都宣告失败。

我现在遇到的问题,必须要匹配行结束才行,不然无法解决。不知道哪位ytin高手知道ytin的结束标志是什么。

坐等答案哦。

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-7-27 19:00:31 | 显示全部楼层
ytin应该和tintin++类似吧,@redcoat
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-7-27 19:17:42 | 显示全部楼层
ytin的语法的确和tt++差不多,毕竟ytin是yet another tintin++,呵呵!
如果ytin采用的是tintin++的act的话,下面是官方的解释:
  1. If the message ends with a $ the end of the action message and mud message must match.
复制代码
所以$在结尾就行。楼主已经提出了不工作,那就是ytin的用法不一样了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-7-27 19:41:19 | 显示全部楼层
我查了一下ytin的源码,粗略浏览下,貌似没有对$的限制,只有对^的限制:(见源码17行)
  1. /******************************************************************/
  2. /* check if a text triggers an action and fill into the variables */
  3. /* return TRUE if triggered                                       */
  4. /******************************************************************/

  5. int check_a_action(const char *line, const char *action, struct session* ses)
  6. {   
  7.         char result[BUFFER_SIZE];
  8.         char *temp2, *tptr = result;
  9.         const char *line2;
  10.         int  i, len, flag;
  11.         
  12.         for(i = 0; i < 10; i++)
  13.                 var_len[i] = -1;
  14.         substitute_myvars(action, result, ses);
  15.         
  16.         if(*tptr == '^') {
  17.                 if((len = match_a_string(line, ++tptr)) == -1)
  18.                         return(FALSE);
  19.                 line += len;
  20.                 tptr += len;
  21.         }
  22.         else {
  23.                 flag = TRUE;
  24.                 len = -1;
  25.                 while(*line && flag)
  26.                         if((len = match_a_string(line, tptr)) != -1)
  27.                         flag = FALSE;
  28.                 else
  29.                         line++;
  30.                
  31.                 if(len != -1) {
  32.                         line += len;
  33.                         tptr += len;
  34.                 }
  35.                 else
  36.                         return(FALSE);
  37.         }
  38.         
  39.         while(*line && *tptr) {
  40.                 temp2 = tptr+2;
  41.                 if(!*temp2) {
  42.                         var_len[tptr[1]-'0'] = strlen(line);
  43.                         var_ptr[tptr[1]-'0'] = line;
  44.                         return(TRUE);
  45.                 }
  46.                
  47.                 line2 = line;
  48.                 flag = TRUE;
  49.                 len = -1;
  50.                
  51.                 while(*line2 && flag)
  52.                         if((len = match_a_string(line2, temp2)) != -1)
  53.                         flag = FALSE;
  54.                 else
  55.                         line2++;
  56.                
  57.                 if(len != -1) {
  58.                         var_len[tptr[1]-'0'] = line2-line;
  59.                         var_ptr[tptr[1]-'0'] = line;
  60.                         line = line2+len;
  61.                         tptr = temp2+len;
  62.                 }
  63.                 else
  64.                         return(FALSE);
  65.         }
  66.         
  67.         return(*tptr ? FALSE : TRUE);
  68. }
复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-7-27 19:44:49 | 显示全部楼层
ytin基于早期的tt++,现在tt++已经和早期的tt++完全不一样了。从代码层上,基本上已经重新实现。而且有很多很酷的新功能。
如果喜欢ytin的话,建议尝试下tt++
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-7-31 17:04:55 | 显示全部楼层
正准备转型到ytin,谢谢帮忙,我就没想到去看源码。不过我的c水平太差,看了也看不懂。

对了,再问redcoat一个问题,tintin里面怎么改变当前文件路径,比如ytin里面有个cd命令,可以改变文件系统的当前路径。
再有就是tintin里面是不是默认颜色的?怎么开关颜色触发?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-7-31 17:18:06 | 显示全部楼层
回复 7# yllr


    linux下的话调用#system命令就行,比如#system cd来改变路径。

颜色触发用~来触发,比如#act {~颜色代码some thing}
颜色代码#config convert来查看。
为了便于阅读,最好把颜色做成变量,比如:
#var RED 红色的颜色代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-7-31 20:26:35 | 显示全部楼层
测试了半天tintin++的windows版本,感觉很别扭。没有ytin好用,主要有以下几点:

1.tintin++的windows版本是调用putty实现的远程登录,服务器的响应很慢,感觉像慢动作。字体显示的颜色也很暗淡,很不爽。
2.最后输入的命令不保留,如果你想连续用一个命令,必须一次一次的输入,很郁闷。
3.没有找到字符串的处理和文件方面的处理命令,这个在ytin里面非常全。
4.ytin其实就少个地图的功能,不知道北侠没有地图能不能活下去。。。。。。。。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-7-31 20:31:18 | 显示全部楼层
其实class在ytin里面虽然没有专门的命令,但是可以通过用变量来实现,默认这些act都开着,用变量来控制开关。我这里有个例子,其实ytin真的很好用,很爽的。

/var hyrCLASS 0

/nop ***********************hyrCLASS************************
/act {殷正廉在你的耳边悄声说道:一个蒙面黑衣人偷了本官的%0} {/if {$hyrCLASS}{findhyr}}
/act {向%1边逃跑了,你去把他杀掉。} {/if {$hyrCLASS}{/var hyplace %1}}
/act {$_HIR「$_HIG%1$_HIR」$_NOR -  (你目前在$_HIY%2$_NOR)} {/if {$hyrCLASS}{/var iweizhi %1;/var Iweizhi %2;/sleep 0.5;Gotohyr}}
/act {$_HIR「$_HIY%1$_HIR」$_NOR -  (你目前在$_HIY%2$_NOR)} {/if {$hyrCLASS}{/var iweizhi %1;/var Iweizhi %2;/sleep 0.5;Gotohyr}}
/act {$_HIR「$_HIY莽林之中$_HIR」$_NOR -  (你目前在$_HIY%2$_NOR)} {/if {$hyrCLASS}{/var mlCLASS 1}} {4}
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-7-31 20:40:09 | 显示全部楼层
本帖最后由 redcoat 于 2012-7-31 09:00 PM 编辑

回复 9# yllr


1.tintin++的windows版本是调用putty实现的远程登录,服务器的响应很慢,感觉像慢动作。字体显示的颜色也很暗淡,很不爽。
我用的是linux,没有出现这种情况哦
2.最后输入的命令不保留,如果你想连续用一个命令,必须一次一次的输入,很郁闷。
#config repeat on
3.没有找到字符串的处理和文件方面的处理命令,这个在ytin里面非常全。
考虑用lua或perl,perl是众所周知的字符串处理的明星
4.ytin其实就少个地图的功能,不知道北侠没有地图能不能活下去。。。。。。。。
ytin和tintin++本属一家,喜欢哪个就用哪个吧,地图可以调用数据库解决
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-17 02:47 PM , Processed in 0.010154 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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