TWAICL

實用功能!結合資料庫限制玩家道具領取次數

發表於 2018-8-20 08:03:22
TWAICL 發表於 2018-8-20 08:03:22 | 顯示全部樓層 |閱讀模式


【前言】
  道具兌換是非常基本的入門指令,基本只需參考前人的設定,

就可以做出功能相同的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",這樣一個簡單的判斷就誕生了!!




謝謝大家
瀏覽 4830 回復 2

您需要登錄後才可以回帖 登錄 | 註冊會員

返回頂部