| 
  
 
 【前言】
 本來在思考,是否該教學要放置論壇,並限制回文或金幣購買機制,但覺得
 該教學實際難度不高,也屬於月經文問題,因此直接提供給大家製作教學,
 該教學會使用SRC、JS、SQL,等於把私服該玩的都玩一遍,很值得服主們
 練習。
 
 【教學開始】
 請打開IDE,並開啟自家伺服器源碼(SRC)。
 隨後,請開啟"MapleCharacter.java",新增以下兩種方法。
 
 
  此為獲取PrizeLog訊息 
 |      public int getPrizeLog(String bossid) {         Connection con1 = DatabaseConnection.getConnection();         try {             int ret_count = 0;             PreparedStatement ps;             ps = con1.prepareStatement("select count(*) from prizelog where accid = ? and bossid = ?");             ps.setInt(1, getClient().getAccID());             ps.setString(2, bossid);             ResultSet rs = ps.executeQuery();             if (rs.next()) {                 ret_count = rs.getInt(1);             } else {                 ret_count = -1;             }             rs.close();             ps.close();             return ret_count;         } catch (Exception Wx) {             return -1;         }     } 
 | 
 
  此為寫入PrizeLog訊息 
 | 
         public void setPrizeLog(String bossid) {         Connection con1 = DatabaseConnection.getConnection();         try {             PreparedStatement ps;             ps = con1.prepareStatement("insert into prizelog (accid, bossid) values (?,?)");             ps.setInt(1, getClient().getAccID());             ps.setString(2, bossid);             ps.executeUpdate();             ps.close();         } catch (Exception Wx) {         }     } 
 | 
 新增後,會如下圖相同
 
 
   
 接著,打開SQL資料庫,新增資料表,設置如下圖相同,
 prizelog 欄位請記得勾選"自動增遞"選項,名稱取為"prizelog "。
 
 
   
 請找任意NPC,並新增腳本,腳本內容如下。
 該腳本是很簡單的兌換腳本,只是判斷式換成判斷帳號是否領取過。
 
 
 | 
 var status = 0; //判定文字 var log = "123"; //獎品 var i = 4031579; 
 function start() {      status = -1;      action(1, 0, 0);  }  
 function action(mode, type, selection) {      if (mode == -1) {          cm.dispose();      } else {          if (mode == 0 && status == 0) {              cm.dispose();              return;          }          if (mode == 1)              status++;          else              status--;          if (status == 0) {              cm.sendSimple (                                  "#e#r[帳號獎勵]#n#k只要來找我就可以拿到獎勵一份喔!#e" +                  "#k\r\n#L1#我要領取帳號獎勵!!!" );         } else if (selection == 1) {            //判定是否領取過                         if (cm.getPlayer().getPrizeLog(log) >= 1) {                                 cm.sendOk("您的帳號已經領取過了喔!");                                        cm.dispose();                                                   }            //判定等級                         else if(cm.getPlayer().getLevel() < 10){                                 cm.sendOk("您的等級不足10");                                 cm.dispose();                                           }else{                                 cm.getPlayer().setPrizeLog(log);                                 cm.gainItem(i, 1);                                                   cm.sendOk("恭喜您獲得了帳號獎勵 #r#z"+ i +"");                         }                         cm.dispose();                 }     } } 
 | 
 完成上述步驟後即可完成,基本上如要研究,請研究SRC步驟是如何寫出
 方法的,並不會難懂,與資料庫對照著看,很容易明白。
 
 如有不懂請至論壇討論區發問。
 
 【後記】
 本來卡納也沒這功能,發現有人發問,於是覺得不如卡納也裝一下吧??
 造福自己也造福大家,以下是實際功能畫面截圖。
 
 
   
 
   
 
   
 還可以做出很多變化,例如讓換的條件更多,或是增加更多兌換選項,
 但這篇主要為教學用途,其他而外的寫法是靠個人功力,還請各位服主
 多多培養實力。
 |