黃易群俠傳M脫機外掛應用程式黃易神行
10926
32

[分享]黃易神行腳本分享/徵求區

dennis1010 當前離線
UID
32606
熱心
0 值
嘉獎
0 次
違規
0 次
在線時間
0 小時
經驗
18 點
積分
18
精華
0
最後登錄
2006-11-25
閱讀權限
10
註冊時間
2006-8-26
論壇幣
53 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
31
dennis1010 2006-9-18 09:49:29

看過就別踩我喔...轉貼:

http://www.byeasy.net/twbbs/viewthread.php?tid=15428&extra=page%3D1

菜鳥寫腳本 (基礎篇)

菜鳥寫腳本 (基礎篇)

本文只是提供給想自己寫/改腳本又看不懂腳本的新手. 看的懂腳本的就不必閱讀這篇了, 只想要腳本的也大可不看了.

我曾經寫過C/c++的程序, 不是甚麼高手, 但比較簡單的程序還會看的.
我只修改過autofight.cs 的腳本, 至於寫腳本來run的話, 暫時還沒試過. (別丟磚塊 !~.~!)

想寫/改腳本,必先會看的懂腳本! 10行里面看的懂7,8行就可以了, 不明白的多做測試就明白了...
完全看不懂的, 就再看幾遍, 慢慢看.
再不行的話, 施主的慧根有限, 算了吧. XD

好了, 開始上課.
下面,就autofight.cs (0.94b版) 的腳本來做教材.  
1) 先用notepad.exe
打開/script/sys/autofight.cs來做參考. (我不知道notepad中文叫甚麼,
只是每給window都會有的'簡單文字處理工具')
2) 先找到 while(1) 那一行

1 {
2 while(1)
3 {
4        Sleep(1);
5        int state = GetValue("state" );                        //0:空閒站立 1:坐下 2:走路
6        int isFighting = GetValue("IsFighting" );
7        int underAttacking = GetValue("UnderAttacking" );
8        int isDead = GetValue("IsDead" );
9        int zRunning = GetValuePar1("HAVESTATE", 87);        //真气運行中
10        int hpPer = GetValue("HPPercent" );
11        int mpPer = GetValue("MPPercent" );
12        int zpPer = GetValue("zpPercent" );
13        int haveHPItem = GetValue("haveHPItem" );

14        int id = GetValue("ID");
       
15        if(state == 2)
16        {
17                //移動中,不處理
18                continue;
19        }
        ///////////////////////////////////////////////////////////
20        DebugOutput("緊急保護檢查");

3) 先說明上面這幾行. 
第1行 { <== 開端, 腳本是從這開始的.(注意: 每個'{'會1個'}'來做接尾,而這個接尾就在autofigt.cs的最後1行)
   {} 永遠是1對的, 如果少了,就會發生腳本錯誤的問題.所以我們都會吧 '{' 跟 '}'排成同樣的indent來減少錯誤,
而且也比較容易看.
e.g.  第16行的 '{' 跟第18行的 '}' 是一對的.

第2行 while(1) <== while 是從復指令, 而while(1)的意思就是命令腳本一直從復
第3行 {        <== 是while 的開端, 
第4行 Sleep(1); <== Sleep 是睡覺的的意思,讓給腳本停一會,里面的1是要他休息 1卅1000秒

第5行 int state = GetValue("state");                        //0:空閒站立 1:坐下 2:走路
        這行是設置某些常用到的數據.(~.~" 慘,我學的都用英文,偏偏現在要用中文來解釋...)
int 是整數(integer) 就是1,2,3,4,... 沒有小數點 .
你們就當state 是可以儲存東西的東東好了.
int state <== 就等於 可以儲存整數 . 
GetValue("state"); <== GetValue 是神行的讀取指令來讀取各種資料."state"=角色的狀況
//0:空閒站立 1:坐下 2:走路 <== 是說明. // 之後的全部都是說明(remark),給人看的,腳本是不執行的
int state = GetValue("state");        <== 意思就是將"角色的狀況"儲存在state里面

第6到14行是跟第5行一樣所以不解釋了

第15到19行
15        if(state == 2)
16        {
17                //移動中,不處理
18                continue;
19        }
if(state == 2) <== 如果 state 是2的話就執行16到19的code (參考第5行.2 = 走路)
16-19的code 很簡單, 只有continue 而已. 
continue 就是叫電腦不需要執行下面的code,直接跳到第2行的while(1) 從新執行
如果 state 不等於2的話就跳到第20行(16-19不需執行)

第20行 DebugOutput("緊急保護檢查"); <== 將"緊急保護檢查"顯示在神行’供能管理器’的狀態,
這對你在測試腳本的時候有些幫助

4) 好了,其他同樣的code我不解釋了.不然的話,看這篇文的人會死掉.
5) 接下啦,我講下script 里面的呼叫(call) function 流程. 
在while loop 大該最底的code

1        DebugOutput("反擊動作");
2        if((state==0)&&(isFighting==0)&&(underAttacking==1))
3        {
4                //反擊動作
5                TagNPC = GetValue("AntiAttackNPC");
6                if(TagNPC != 0)
7                {
8                        DoAttack(TagNPC);
9                        continue;
10                }
11                else
12                {
13                        DebugOutput("反擊失敗!");
14                }
        }
再看看autofight.cs 的第一行code
a void        DoAttack(int TagNPC)
b {
c  ... 省略
d }

當程序執行到第8行的時候,它就會跳到第a行,而且將TagNPC的數值放到void        DoAttack(int TagNPC)里面
然後執行到第d行,又跳回第9行. 

 

其實程序/腳本的執行不會複雜, 只有3種而以.
a) Sequantial . (順序性, 從上到下,一個個執行)
b) Selective . (選擇性, 作比較,然後選擇要不要執行) . e.g. if
b) Repeative . (從復, 作比較,然後選擇要不要執行)        e.g while
所以別害怕看不懂, 多看幾次就行了

最後,看看神行可以用的function/指令吧
1) DebugOutput - (上面有寫)
2) GetValue - 可參考 API/sys/GetValue.txt
- 可以用來讀取游戲中的數據.e.g. hp,mp,etc
3) GetConfigValue - 可參考inlineUser/userset.ini
- 可以用來讀取神行設置的數據 
4) DoCommand - 可參考 API/sys/Command.txt
- 命令角色做動作,e.g. 移動,站,坐,打架,etc

(注), GetValuePar1,GetValuePar2 基本是跟GetValue一樣的,只是有多加了1or2個parameter而已. DoCommand 也是

目前腳本的api 不是很完整, 也沒有詳細的說明. 有些需要1/2parameters 的api 是考猜/自己找的, 所以有時候不是所有你要的功能都可以用腳本來解決.
回覆

使用道具 舉報

beavis555 當前離線
UID
24110
熱心
0 值
嘉獎
0 次
違規
0 次
在線時間
0 小時
經驗
11 點
積分
11
精華
0
最後登錄
2006-10-10
閱讀權限
10
註冊時間
2006-8-16
論壇幣
30 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
32
beavis555 2006-10-7 20:42:19
屌喔~明天再來研究~水水嫩ˇ嫩
回覆

使用道具 舉報

tw4699 當前離線
UID
42410
熱心
0 值
嘉獎
0 次
違規
0 次
在線時間
0 小時
經驗
61 點
積分
61
精華
0
最後登錄
2006-11-15
閱讀權限
20
註冊時間
2006-9-12
論壇幣
182 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
33
tw4699 2006-10-7 16:41:26

如題  能教大家怎麼寫就不用一直麻煩別人 [有圖解比較詳細] 用說的不一定懂 看圖比較易懂

看左邊 看右邊 也要看看前面
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

1234

手機版 | Archiver | 外掛聯合國

GMT+8, 2024-11-22 11:14 , Processed in 0.054830 second(s), 16 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?