求助
mud吧
全部回复
仅看楼主
level 1
cdfsx 楼主
——————————————<Bugs Report>——————————————
[ 错误时间 ]: Thu Oct 02 11:20:03 2014
[ 错误内容 ]: *Bad argument 3 to replace_string() Expected: string Got: 0.
[ 错误档案 ]: adm/daemons/story/labazhou.c
[ 错误行数 ]: 111
[ 资料回溯 ]:
-- 第 1 层调用 --
[ 触动物件 ]: adm/daemons/storyd
[ 程式档案 ]: adm/daemons/storyd.c
[ 函式名称 ]: process_story(object)
[ 呼叫行数 ]: 165
[ 传入参数 ]:
** (object)adm/daemons/story/labazhou
[ 程式变数 ]:
** (int)0
** (int)0
** (int)0
** (int)0
** (int)0
-- 第 2 层调用 --
[ 触动物件 ]: adm/daemons/story/labazhou
[ 程式档案 ]: adm/daemons/story/labazhou.c
[ 函式名称 ]: query_story_message(int)
[ 呼叫行数 ]: 111
[ 传入参数 ]:
** (int)0
[ 程式变数 ]:
** (string)"又是一年的冬天。"
——————————————<Bugs Report>——————————————
执行时段错误:*Bad argument 3 to replace_string()
Expected: string Got: 0.
程式:adm/daemons/story/labazhou.c 第 111 行
物件:/adm/daemons/story/labazhou
呼叫来自:adm/daemons/storyd.c 的 process_story() 第 165 行,物件: adm/daemons/storyd
呼叫来自:adm/daemons/story/labazhou.c 的 query_story_message() 第 111 行,物件: adm/daemons/story/labazhou
2014年10月02日 03点10分 1
level 1
cdfsx 楼主
这是 故事传闻 腊八粥 报错了,请问下怎么修改?
2014年10月02日 13点10分 2
level 15
呼叫来自:adm/daemons/story/labazhou.c 的 query_story_message() 第 111 行,把100-125行贴出来看看,从log上看是efun:replace_string的传入参数数量有错。应该三个,结果一个都没传进来。具体还要看代码。
2014年10月03日 13点10分 3
level 1
cdfsx 楼主
mixed query_story_message(int step)
{
mixed msg;
if (step >= sizeof(story))
return 0;
msg = story[step];
if (stringp(msg))
{
msg = replace_string(msg, "$N", char_name);
msg = replace_string(msg, "$ID", char_id);
msg = replace_string(msg, "$F", fam_name);
msg = replace_string(msg, "$AN", ann_name);
msg = replace_string(msg, "$AID", ann_id);
}
return msg;
}
mixed give_pai()
{
object ob;
object pai;
ob = find_player(char_id);
if (! ob) return 1;
if (random(4) > 0)
{
ob->set("story/labazhou", 1);
CHANNEL_D->do_channel(this_object(), "rumor", "听说" + ob->name(1) +
"收到龙、木二岛主的邀请去侠客岛喝腊八粥。");
// 正神是赏善,负神是惩恶
if (ob->query("shen") >= 0)
pai = new("/d/xiakedao/obj/tongpai1");
else
pai = new("/d/xiakedao/obj/tongpai2");
pai->move(ob, 1);
STORY_D->remove_story("labazhou");
return 0;
}
// 25%的几率被抢
if (ann_id != char_id)
return "一道黑影掠过,一掌重重的击在" + char_name + "的背心," + char_name + "大叫一声,吐出一口鲜血。";
}
int rob_pai()
{
object ob, rob;
object pai;
ob = find_player(char_id);
rob = find_player(ann_id);
if ((! ob) || (! rob)) return 1;
rob->set("story/labazhou", 1);
CHANNEL_D->do_channel(this_object(), "rumor",
"听说" + rob->name(1) + "从" + ob->name(1) + "手中夺走了"
"赏善罚恶令牌。");
STORY_D->remove_story("labazhou");
if (rob)
{
// 正神是赏善,负神是惩恶
if (rob->query("shen") >= 0)
pai = new("/d/xiakedao/obj/tongpai1");
else
pai = new("/d/xiakedao/obj/tongpai2");
if (pai) pai->move(rob, 1);
}
return 0;
}
2014年10月05日 07点10分 4
level 15
错误提示就是replace_string的第一个参数传入的不是string是0。
query_story_message()里面的story,char_name之类的变量都是哪里定义的?全局变量?
不过你这里有个if(stringp(msg))的判断,按道理来讲应该是msg赋值是成功的而且是string才会进入执行replace_string。
如果story等的赋值没问题的话,代码上没什么错误。
实在不行加我qq,我连上看下。
2014年10月05日 13点10分 5
1