找回密碼
 註冊
搜尋
熱搜: 活動 交友 discuz
查看: 36|回覆: 3

simul_efun

[複製鏈接]
發表於 2005-8-13 21:11:57 | 顯示全部樓層 |閱讀模式
adm/obj/simul_efun.c 這個檔案是不是所有檔案都會包含進去?
不然master.c裡面用了許多函數並沒有先定義便直接使用。
還有能解釋一下call_other這個函數嗎?它的help檔我看不懂...
比如說
string creator_file(string str)
{
return (string)call_other(SIMUL_EFUN_OB, "creator_file", str);
}
發表於 2005-8-14 10:25:54 | 顯示全部樓層
Originally posted by doall at 2005-8-13 09:11 PM:
adm/obj/simul_efun.c 這個檔案是不是所有檔案都會包含進去?
不然master.c裡面用了許多函數並沒有先定義便直接使用。
還有能解釋一下call_other這個函數嗎?它的help檔我看不懂...
比如說
string creator_fi ...


call_other 就是 call object(object型態) 那個 function (function 名稱)
還有輸入參數


ob->set("xy", 1);

call_other( ob, "xy", 1)
是一樣的

其實很少用到
通常會用到這個的情況,是因為 function 名稱不一定的時候

例如

ob 有 query_1 or query_2 or query_3

x = random(3)

沒辦法 ob->set_+"x"+(xxxx) 沒這種寫法

只能用 call_other( ob, "set_"+x, xxxxx)來解決


simul_efun.c 是 mudos 指定放 公定函式 的地方
大部份都是常用的函式...依 mud 需求各有不同
回覆

使用道具 舉報

 樓主| 發表於 2005-8-14 10:39:42 | 顯示全部樓層
也就是說...call_other是存取物件中函數的參數用的?這樣我懂了...
也就是說
ob->set("name","doall")
可以用
call_other(ob,"name","doall")
代替

那麼...
ob.set("name","doall")
等不等同於上述的句子??

[[i] Last edited by doall on 2005-8-14 at 10:48 AM [/i]]
回覆

使用道具 舉報

發表於 2005-8-14 21:01:51 | 顯示全部樓層
lpc 和 c++ 的語法還是有很多不同的地方
你要習慣使用不同語法的程式語言

不過用原理來看的話還是可以看得出相同的地方

在 c++ 中

ob->set("xxxx", 1); --> ob 的值是記憶體中的位址

ob.set("xxxx", 1); --> ob 的值是物件在記憶體中的位址

Mud 裡

只有 ob->set("xxxx", 1); 的寫法,依我猜測,Mud 極大部份的參數都是存位址

所以此時 ob 是記憶體中的位址

不過你大概是看不懂什麼是記憶體中的位址和物件在記憶體中的位址

簡單來說,每個參數都會在記憶體中佔一個空間,會有一個位址

舉例

ob-> 的情況 ob 的值是 0x0001 其值是 0x0002 那 ob-> 是說把 ob 的值當做

是記憶體位址,取出該記憶體的值,所以會取出 0x0002 位址裡的值

ob. 的情況 ob 的值就是 0x0002 的值,直接從這個位址取值

至於參數要怎麼分辨它們自己什麼物件該怎麼取值,這個比較深,就不講解了

書上也有說明,要真的了解的話,可以查查有關資料結構的書
回覆

使用道具 舉報

您需要登入後纔可以回帖 登入 | 註冊

本版積分規則

Archiver|手機版|小黑屋|幻夢心境

GMT+8, 2026-9-2 01:02 PM , Processed in 0.015138 second(s), 18 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回覆 返回頂部 返回列表