最後更新於 2022 年 5 月 30 日
改SRC
- 打開
constants\ServerConstants.java
在宣告變數處加上:
public static String 點數掉落 = "1,3,15";
- 打開
server\maps\MapleMap.java
在最開始import加上:
import constants.ServerConstants
在 dropFromMonster
方法的最後一個括號前加上:
int moblevel = mob.getStats().getLevel(); int difference = chr.getLevel() > 120 ? chr.getLevel() > 150 ? 75 : 75 : 75;//相差等級 boolean YesNo = (chr.getLevel() - moblevel) <= difference; int Percentage = Randomizer.rand(1, 100); //轉換百分比 int GetPoints = (int) Randomizer.rand(Integer.parseInt(ServerConstants.點數掉落.split(",")[0]), Integer.parseInt(ServerConstants.點數掉落.split(",")[1])); if (Percentage < Integer.parseInt(ServerConstants.點數掉落.split(",")[2]) && chr.getLevel() > 10) { //隨機產生數由1~100 如果<15 才會掉點 if (YesNo) { chr.modifyCSPoints(2, GetPoints); //掉點類型 1為CASH 2為楓葉點數 chr.dropMessage(-1, "從怪物身上獲得了 " + GetPoints + " 楓葉點數"); } else { chr.dropMessage(-1, "與怪物等級相差大於 " + difference + " 故無法獲得點數。"); } }
大大擬好
請問我可以在我的影片下方標註你嗎
https://www.youtube.com/watch?v=d5ds6Uf_C9M
可以 沒問題呦
謝謝
請問大大
知道要怎麼讓遊戲登入方式變成只有唯一的方式嗎?
防止玩家自己另外造一個bat登入器
這方面我也沒有研究,沒辦法幫上忙
大大,我照著上面步驟做了,也將更改後的src取代先前的了,但進遊戲內還是沒更改後的狀態,想請問是哪裡出了問題?
是我程式貼錯位置了嗎?
麻煩大大了
你有編譯嗎? 是要將編譯好的jar檔(如圖中的TMS120.jar)覆蓋到伺服器端的dist資料夾內
補充:
我發現我忘記註明是v120版本的,我看到你的好像是v113,如果有編譯覆蓋還是沒效果那應該是版本的問題。
上面的圖我是拿白狐v113的src來改的,沒效果捏qq
確定是編譯好後的jar檔覆蓋進去且沒效果
照理來說113應該也是同樣的寫法才對…
你可以參考文章中的寫法,自己改著試試
作者你好 根據你這篇文 我有個疑問 本人是程式新手
請問你文中說的
在最開始import加上:import constants.ServerConstants
在宣告變數處加上:public static String 點數掉落 = “1,3,15”;
的具體位置在哪裡 可以跟我說一下嗎 新手實在不知道在哪XD
import 都是在檔案最上方,隨便找一處放就可以。
至於宣告變數會在 class 底下,最簡單的方式就是你找有一堆 public static final 的地方,最下面加上這句就行了。這個算是 JAVA 基礎,可以多少學一點💪
好的 另外請教一下作者您
目前在編譯SRC怪物點數掉落過程遇到一個問題(如圖)
請問為什麼在775行會顯示驚嘆號? 且錯誤是在”mob.getStars()”
程式碼都是照著打的 不可能有錯吧
如果有看到紅色底線可以在左邊列數那邊燈泡點一下看是什麼錯誤訊息,這裡出錯應該是因為沒有 mob,看起來是你程式碼放錯地方了。
正確的位置是放在 dropFromMonster 這個方法最後一個 } 之前。
感謝作者大大 實測已經成功掉落楓葉點數了
另外再請教最後一個問題 要如何更改點數掉落數量呢?
目前掉落點數的值是在1~3間 想改到更高可以嗎
你可以自行修改 public static String 點數掉落 = “1,3,15”; 這裡的 1 跟 3,現在 1, 3 就代表在 1 ~ 3 之間亂數取整,所以不管如何都只會是 1, 2, 3 其中一個數。
那“1,3,15” 的”15″的用意是?
你可以看一下有一個變數叫做 Percentage,會從 1 ~ 100 中隨機產生一個數。
然後下面有一個判斷式,當 Percentage 小於 Integer.parseInt(ServerConstants.點數掉落.split(“,”)[2]),這邊的 ServerConstants.點數掉落.split(“,”)[2] 就是 15,而 Integer.parseInt 就是取整數的意思。
所以整個 if 描述就是「當 Percentage 小於 15 並且角色等級大於 10」 的時候才會有點數掉落。
這邊的 15 你可以當成是機率,在 1 ~ 100 中只有生成的隨機數小於 15 的時候才會有點數掉落的情況發生,如果你希望掉落機率更高,你可以把數字調高,如果大於等於 100 就是必掉落。
瞭解了! 感謝作者大大詳細且耐心的回覆 本人剛接觸私服 可能疑問稍多 再次感謝: )