f003002 發表於 2013-5-29 09:04:33

getd / setd 搭配 array 之用法

本帖最後由 f003002 於 2013-5-29 11:02 AM 編輯

先看這篇教學 http://goo.gl/9OimE

getd和setd用在array中很方便
以下是個簡單的例子setarray $@monster1,1087,1112,1115,1150,1157,1159,1190;
setarray $@monster2,1685,1785,2068,1708,1990,1039,1115;
setarray $@monster3,1115,1650,1649,1648,1112,1646,1874;

set .@level,2;

//從 $@monster2[]中隨機抽出一數值,若數值等於1115,則判斷式成立
if(getd("$@monster"+.@level+"["+rand(getarraysize(getd("$@monster"+.@level)))+"]")==1115)
..........
有點複雜嗎,帶你一步步拆解,由於要標記顏色,所以我把code貼到引用中


Step 1,程式碼說..如果紅色這段等於1115,則判斷式成立,但紅色這段是什麼意思呢,我們來拆解吧
if(getd("$@monster"+.@level+"["+rand(getarraysize(getd("$@monster"+.@level)))+"]")==1115)
Step 2,括弧一層層的就像洋蔥皮,我們要先看洋蔥的核心,就是下面紅色的部分

getd("$@monster"+.@level+"["+rand(getarraysize(getd("$@monster"+.@level)))+"]")
getd("$@monster"+.@level+"["+rand(getarraysize(   getd("$@monster"+"2")   ))+"]")
getd("$@monster"+.@level+"["+rand(getarraysize(      getd("$@monster2")      ))+"]")
getd("$@monster"+.@level+"["+rand(getarraysize(            $@monster2             ))+"]")

看出來了嗎,這四行是一樣的


Step3,我們知道getarraysize($@monster2) 等於7,化簡一下

getd("$@monster"+.@level+"["+rand(7)+"]")
getd("$@monster"+    "2"+"["+rand(7)+"]")
getd(         "$@monster2["      +rand(7)+"]")

Step4,假設rand(7)的結果是 5

getd(         "$@monster2["      +"5"+"]")
getd(         "$@monster2"                   )

getd、setd可以把變數寫成string的形式
到這裡應該沒問題了吧,就是取得變數$@monster中的值

這種很多層的洋蔥code是不太好閱讀的,引號括號太多、
但就是方便使用,如果要用,註解寫清楚一點,造福自己也造福別人

有問題歡迎提出
謝謝大家

巴力 發表於 2013-5-29 12:43:29

寫的好詳細喔
拆開來讀好像比較好理解耶!!!

fantasy83115 發表於 2013-5-30 11:41:04

fanny 發出教學了 {:soso_e179:} 幫你支持一下
不拆解的話應該很多人會認為這是 "天書"
頁: [1]
查看完整版本: getd / setd 搭配 array 之用法