- Back to Home »
- 楓之谷教學 »
- 【楓之谷教學】實用功能!結合資料庫限制玩家道具領取次數
【相關網址】
AICL楓之谷私服論壇技術討論區:點此
【前言】
道具兌換是非常基本的入門指令,基本只需參考前人的設定,就可以做出功能相同的JS,但是,如果要限制玩家僅能領取一次呢?這邊所用的是透過"每日領取"的設計技巧,做出全新變化。
【優點】
- 設定簡單,更改條件容易。
- BUG出線機率極低。
- 玩家兌換狀況清楚明瞭。
- 功能彈性,可運用許多不同 JS 判斷寫法。
【教學開始】
# 步驟一
首先,我們要先打開SRC,開啟 「NPCConversationManager.JAVA」
新增底下兩種方法 :
=
public int getBossLog2(String bossid) {
return getPlayer().getBossLog2(bossid);
}
public void setBossLog2(String bossid) {
getPlayer().setBossLog2(bossid);
}
=
紅色部分可隨意更改,但務必顏色的內容要一致。
「解釋」上面的內容,會用於JS方法,第一個是導出,第二個是導入。
# 步驟二
打開SRC,開啟 「MapleCharacer.JAVA」
新增底下兩種方法 :
=
public int getBossLog2(String bossid) {
Connection con1 = DatabaseConnection.getConnection();
try {
int ret_count = 0;
PreparedStatement ps;
ps = con1.prepareStatement("select count(*) from bosslog2 where characterid = ? and bossid = ? ");
ps.setInt(1, id);
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 Ex) {
return -1;
}
}
public void setBossLog2(String bossid) {
Connection con1 = DatabaseConnection.getConnection();
try {
PreparedStatement ps;
ps = con1.prepareStatement("insert into bosslog2 (accountid, characterid, bossid) values (?,?,?)");
ps.setInt(1, accountid);
ps.setInt(2, id);
ps.setString(3, bossid);
ps.executeUpdate();
ps.close();
} catch (Exception Ex) {
}
}
=
此處請注意到,紅色部分要跟第一步的方法名稱相同,否則會出錯。
粉色部分為資料庫名,未來的所有資料都會存在此名稱資料庫。
# 步驟三
新增一個資料庫,設定內容如下。
設定完後,資料庫名稱要是第二步驟,粉色的名稱,設定完後SRC才能正確連接到資料庫。
# 步驟四
接下來最後一步驟,就是寫出您要的 JS 內容囉!!
這部分就不貼上寫法了,照著圖上做,應該不難。
IF會去判斷角色是不是有"DAY1"跟另一個道具,有的話就跳出 IF 的內容,
而玩家在最一開始,資料庫一定是沒有"DAY1"的,所以會先跳 ELSE ,
然後執行了"setBossLog2",並寫入"DAY1",這樣一個簡單的判斷就誕生了!!
謝謝大家