效果按照點裝分類成 臉飾、眼飾、耳環、帽子、上衣、褲子、手套、套服、披風、戒指、盾牌、鞋子、武器,當然怎麼分全靠你怎麼設定範圍。 輸入代碼領取點裝。 不能領取的點裝會提示不能領取。 代碼我先解釋一下會用到的一些方法是什麼意思,最後會附上完整的程式碼。
主要會用到 sendGetNumber() 和 isCash() 兩個方法 sendGetNumber 是可以獲取玩家輸入的數值的方法 在 NPCConversationManager.java 可以看到方法是怎麼定義的: [JavaScript] 纯文本查看 复制代码 public void sendGetNumber(String text, int def, int min, int max) {
if (lastMsg > -1) {
return;
}
if (text.contains("#L")) { // will dc otherwise!
sendSimple(text);
return;
}
c.getSession().write(MaplePacketCreator.getNPCTalkNum(npc, text, def, min, max));
lastMsg = 4;
} 這裡的 text 為顯示的對話內容,def 為預設的數值,min 為最小值,max 為最大值。 我們將用這個方法來做點裝的分類,至於點裝代碼是怎麼去分類的請看 伺服端\wz\String.wz\Eqp.img 比如說我點裝臉飾是代碼介於 1010001 ~ 1012672 就可以這樣寫: [JavaScript] 纯文本查看 复制代码 cm.sendGetNumber("#h0#,你想領取什麼臉飾呢?請輸入代碼吧!\r\n",1010001,1010001,1012672); 接收到玩家輸入的數值後就有幾種狀況需要去判斷: - 是否為點裝? => 使用 isCash() 方法判斷
- 這個道具是否存在?
- 是否介於這個分類範圍? => 不需要特別寫判斷式,因為如果輸入的數值不在那個分類設定的最小值和最大值區間,系統會直接提示。
[JavaScript] 纯文本查看 复制代码 if(cm.isCash(id)){ // 判斷是否為點裝
if(id==1112127){ // welcome back戒指 不能直接領取
cm.sendOk("#z"+id+"##i"+id+"#可不能用領取的哦!!!!");
cm.dispose();
}else{
cm.sendYesNo("你確定要領取#z"+id+"##i"+id+"#嗎?");
}
}else{ // 不是點裝或不存在
cm.sendOk("你輸入的代碼不存在或者非點裝!");
cm.dispose();
}
|