【前言】 本來在思考,是否該教學要放置論壇,並限制回文或金幣購買機制,但覺得 該教學實際難度不高,也屬於月經文問題,因此直接提供給大家製作教學, 該教學會使用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步驟是如何寫出 方法的,並不會難懂,與資料庫對照著看,很容易明白。
如有不懂請至論壇討論區發問。
【後記】 本來卡納也沒這功能,發現有人發問,於是覺得不如卡納也裝一下吧?? 造福自己也造福大家,以下是實際功能畫面截圖。
還可以做出很多變化,例如讓換的條件更多,或是增加更多兌換選項, 但這篇主要為教學用途,其他而外的寫法是靠個人功力,還請各位服主 多多培養實力。
|