作者laechan (打死不投马冏,李系咩安抓)
看板mud_sanc
标题Re: [wizs]问题请教(十三)
时间Mon Jul 9 22:52:46 2007
※ 引述《amosdeus (幽素)》之铭言:
底下的函数你必须说明一下,它是写在哪里
1) 道具?
2) 房间?
: int beachscape()
: {
: mixed usr=all_inventory(environment(this_player()));
: object ppl;
: int r;
: r=random(2);
: switch(r)
: {
: case 1:
: foreach(ppl in usr)
: {
: if(!userp(ppl)) continue;
: if(!interactive(ppl)) continue;
: tell_object(ppl,"....");
: }
: break;
: default:
这个要特别讲,random(2) 只有两个值,0 跟 1,所以 default
就是指 0 的情况。
: shout("XXXX");
: write("XXXX");
: break;
: }
: return 1;
: }
: 这是我的程式码,这样的写法有一个问题就是当使用道具的人呼叫出
: int beachscape() 而他又离开这间房间(A)到房间(B)去时,执行的
: 叙述会出现在房间(B),而不是在我规定的房间(A)。
我假设两种情况
一、你使用道具,道具去呼叫房间的 beachscape,那这个时候
usr=all_inventory(environment(this_player())) 读出来
的是「使用该道具者当时所在房间的所有物件」。
二、你使用道具,道具内有 beachscape 函数,那同上。
所以不管哪一种,usr 都是指该玩家当时所在房间的所有物件。
换言之,你在 A 房间执行该道具->呼叫 beachscape 函数时,
它读出来的 usr 自然等於 A 房间的所有物件。
同样的道具在 B 房间执行该道具->呼叫 beachscape 函数时,
它读出来的 usr 自然等於 B 房间的所有物件。
this_player() 指的是正在呼叫这个函数的「主体」,因为使
用道具的是你,所以 this_player() = 你。
environment(你)就是读出你呼叫该函数时所存在的房间(环境)
all_inventory(所在房间) 自然就等於读出所在房间的所有物
件。
: 第二个问题是在 default: 中我希望是用 tell_object 来告诉房间的
: 玩家没事情发生,但是经过我测试之後 tell_object 是不会被执行的
: 不用 show 的原因是当玩家不在房间(A)还可以收到叙述也是不合理的
: 以上
: 谢谢
: Plain@Sanc
应该是上面 random(2) 的问题。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.231.227.20