| 
 
					
UID9904閱讀權限10主題5帖子30精華0A幣1098 在線時間93 小時最後登錄2023-12-9 
 
集團新軍 
 
	主題5帖子30精華0綜合社群主題發文量10 電玩社群主題發文量0 娛樂社群主題發文量0 技術社群主題發文量0 閱讀權限10註冊時間2017-4-2 
 	
 TA的每日心情|  | 衰 2021-8-16 01:14
 | 
|---|
 簽到天數: 68 天 連續簽到: 1 天 [LV.6]常住居民II | 
| 回復 2# 恆恆恆 
 
 不太清楚您的問題所在 方便的話 請po出程式碼
 那我在這裡還是解釋一下端內讀取js常見的方法
 ------------------------------------------------------------
 相信在你編寫js 很常看見兩個函數和一個全域變數分別是
 
 
   
 ------------------------------------------------------------複製代碼function action(mode, type, selection) {
}
三個扮演的角色:
 
 注意: start 與 action 的函數名稱 並不是亂取的 而是根據端口讀取方式而命名的
 status 可以想成目前執行動作到幾個的指標
 start() 為端口執行NPC時所執行的第一個函數 (注意這函數只在開啟NPC時執行)
 action() 為整體NPC的主體
 ------------------------------------------------------------
 常見的start內的程式碼
 
 
 
   
 status = -1; 做一個指標的初始化動作
 action(1, 0 ,0); 呼叫 action函數 mode = 1
 ------------------------------------------------------------
 action 常見的做法
 
   
 
 這裡的作用就是讓status 可以記錄我們所執行到哪個步驟
 所以 當 start 去呼叫了 action(1(mode),0(type),0(selection));
 mode == 1 原本的 status 是-1 在經過這裡後 會變成 0
 才會有接下來的
 接下來當我選擇 哈囉這個選項時 因為端口內的 NpcTalk封包執行完後 會在呼叫一次action()這個函數複製代碼if(status == 0){
  cm.sendSimple("#L1#哈囉");
}
題外話:這時的mode 數值 是根據 端內 從客戶端接收到的 Byte 而做決定的
 所以我們假設 當我選擇了 哈囉  action的mode值理所當然會帶入1 而 selection 會帶入 1 (這裡關鍵是#L數字#) 數字所帶的值 selection 就帶入什麼值
 當我mode = 1  時就像我們上面所說的了 status 就會變成1
 程式碼就可以變成這樣
 複製代碼if(status ==0){
   cm.sendSimple("#L1#哈囉");
}else if(status == 1){
   switch(selection){
       case 1:
             cm.sendOk("你好呀");
             break;
   }
   cm.dispose();
}
 | 
 評分
查看全部評分
 |