※ 引述《laechan (小太保)》之銘言:
: 可以模擬成 godware 的方式(不過不建議).
如果是我的話, 因為字串拆解挺麻煩的, 所以我會用偷懶的方式..
int call_xxx(string str)
{
string tmp,s1,s2;
object tar,ob;
// 例1: call xxx->ooo()
// 例2: call xxx->set("leve",100)
// 例3: call xxx->add("guild/slasher",20)
// . ....
sscanf(str,"%s->%s",s1,s2);
if(!tar=present(s1,environment(this_player())))
if(!tar=find_player(s1))
if(!tar=find_living(s1))
if(!tar=find_object_or_load(s1))
return notify_fail("call: 沒有 "+s1+" 這個目標喔.\n");
tmp="inherit ROOM;\n\n"+
"void call_xxx(string s1,string s2)\n"+
"{\n"+
" object tar;\n"+@LONG
if(!tar=present(s1,environment(this_player())))
if(!tar=find_player(s1))
if(!tar=find_living(s1))
tar=find_object_or_load(s1);
LONG
+
" tar->"+s2+";\n"+
"}\n";
write_file("/open/tmp_call_room.c",tmp);
"/cmds/file/_update"->cmd_update("/open/tmp_call_room");
if(!catch(ob=find_object_or_load("/open/tmp_call_room")))
{
rm("/open/tmp_call_room.c");
write("You Let "+str+"...");
if(!catch(ob->call_xxx(s1,s2)))
write(str+" Success!\n");
else
write(str+" Fail!\n");
}
return 1;
}
這是 godware 架構的一部份寫法.
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 115.80.128.16 (03/29 12:26)