作者laechan (小太保)
看板mud_sanc
标题Re: justinj>你的文章里有乱码,请更改
时间Wed Apr 7 18:06:04 2010
※ 引述《justinj (闇冥)》之铭言:
: Q1.A,B两个档案里面都是function
: 若A里面有name,start,end等function
: B里面也一样...
: 那要如何叫出A里的start,B里的start..而不会混太一起..
: Q2.
: 另一个问题是.在同一个档案里
: 假设有
: mixed fuc(var B)
: {
: ..return C;
: }
: 那如何使用这个东西..像要 C 的话..
: 是c=fuc(B)..
: 还是取内容就c[0],c[1]之类的
比方某函数 写在 /open/test1.c
mixed get_userid(mixed usr)
{
mixed C=({});
object ppl;
foreach(ppl in usr)
C+=({ppl->query("name")});
return C; // 传回线上所有玩家的 id
}
然後假设你是在别的档案要用这东西(假设是 /open/test2.c)
void test()
{
mixed c;
c="/open/test1"->get_userid(users()); // 把线上玩家物件总合丢给它
}
比较保险的写法则是
c=(mixed)"/open/test1"->get_userid(users());
即强制 -> 回传的东西是 mixed 型态。
: Q3.
: int init()
: {
: int num;
: num=sizeof(all_inventory(environment(this_player())));
: if(num<=3 && !query("clone_ob"))
: {
: set("clone_ob",1);
: clone_object(DM"rob")->move(DR"b010");
: }
: }
: 是想写一个当这个房间只有3人以下时才会触发的条件
: 但这种写法感觉不会成功
: 有没有法子写出来?
这有很多种情况要看你是要哪一种。
用 init 判断的话代表你是用「进入」来当做判断依据,
那麽你这样写是不保险的,因为任何房间只要进入任何的
东西(如玩家),那你的 num 就是 1,就一定会视为 <3
那依你程式的写法, 个人建议你不要用触发式的, 而是改
用指令式的, 比方房间有 N 个人, 其中一个人下了指令,
这时才判断房间有几个人, 才是较好的判断方式.
<3 个人: 指令执行成功
>=3 个人: 就不理会你下指令的动作
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.160.106
1F:推 justinj :....了解... 04/07 18:20