[ytin]求教关于ytin的一个问题。
使用了很长时间的ytin了,一直感觉很好,基本上需要的功能也都有。最近出现个必须要act抓取匹配结束标志的问题,怎么都找不到ytin的结束标志。试了$,根据ytin作者给我回的邮件又试了\$,\\$,都宣告失败。
我现在遇到的问题,必须要匹配行结束才行,不然无法解决。不知道哪位ytin高手知道ytin的结束标志是什么。
坐等答案哦。
北大侠客行MUD,中国最好的MUD ytin应该和tintin++类似吧,@redcoat ytin的语法的确和tt++差不多,毕竟ytin是yet another tintin++,呵呵!
如果ytin采用的是tintin++的act的话,下面是官方的解释:If the message ends with a $ the end of the action message and mud message must match.所以$在结尾就行。楼主已经提出了不工作,那就是ytin的用法不一样了。 我查了一下ytin的源码,粗略浏览下,貌似没有对$的限制,只有对^的限制:(见源码17行)/******************************************************************/
/* check if a text triggers an action and fill into the variables */
/* return TRUE if triggered */
/******************************************************************/
int check_a_action(const char *line, const char *action, struct session* ses)
{
char result;
char *temp2, *tptr = result;
const char *line2;
inti, len, flag;
for(i = 0; i < 10; i++)
var_len = -1;
substitute_myvars(action, result, ses);
if(*tptr == '^') {
if((len = match_a_string(line, ++tptr)) == -1)
return(FALSE);
line += len;
tptr += len;
}
else {
flag = TRUE;
len = -1;
while(*line && flag)
if((len = match_a_string(line, tptr)) != -1)
flag = FALSE;
else
line++;
if(len != -1) {
line += len;
tptr += len;
}
else
return(FALSE);
}
while(*line && *tptr) {
temp2 = tptr+2;
if(!*temp2) {
var_len-'0'] = strlen(line);
var_ptr-'0'] = line;
return(TRUE);
}
line2 = line;
flag = TRUE;
len = -1;
while(*line2 && flag)
if((len = match_a_string(line2, temp2)) != -1)
flag = FALSE;
else
line2++;
if(len != -1) {
var_len-'0'] = line2-line;
var_ptr-'0'] = line;
line = line2+len;
tptr = temp2+len;
}
else
return(FALSE);
}
return(*tptr ? FALSE : TRUE);
} ytin基于早期的tt++,现在tt++已经和早期的tt++完全不一样了。从代码层上,基本上已经重新实现。而且有很多很酷的新功能。
如果喜欢ytin的话,建议尝试下tt++ 正准备转型到ytin,谢谢帮忙,我就没想到去看源码。不过我的c水平太差,看了也看不懂。
对了,再问redcoat一个问题,tintin里面怎么改变当前文件路径,比如ytin里面有个cd命令,可以改变文件系统的当前路径。
再有就是tintin里面是不是默认颜色的?怎么开关颜色触发? 回复 7# yllr
linux下的话调用#system命令就行,比如#system cd来改变路径。
颜色触发用~来触发,比如#act {~颜色代码some thing}
颜色代码#config convert来查看。
为了便于阅读,最好把颜色做成变量,比如:
#var RED 红色的颜色代码 测试了半天tintin++的windows版本,感觉很别扭。没有ytin好用,主要有以下几点:
1.tintin++的windows版本是调用putty实现的远程登录,服务器的响应很慢,感觉像慢动作。字体显示的颜色也很暗淡,很不爽。
2.最后输入的命令不保留,如果你想连续用一个命令,必须一次一次的输入,很郁闷。
3.没有找到字符串的处理和文件方面的处理命令,这个在ytin里面非常全。
4.ytin其实就少个地图的功能,不知道北侠没有地图能不能活下去。。。。。。。。 其实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} 本帖最后由 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++本属一家,喜欢哪个就用哪个吧,地图可以调用数据库解决
页:
[1]
2