2014年6月4日 星期三

【Java教學】假釣魚系統...

假釣魚真抽獎...


改的非常濫...請不要嫌棄
我先講原理
假設有一個釣竿(道具)
又有一個魚餌(裝備)
釣竿要使用先檢查有沒有魚餌(裝備)
如果有才能釣魚

然後還要再加入判斷
釣魚的所在地點...釣魚場的魚池附近!

至於釣上來什麼呢...請各為GM自己新增,想要讓玩家自己得到什麼吧!
以下開始程式碼

首先先找
ItemTable.java
然後再找
_armorTypes.put("ring2", new Integer(11));
複製代碼


接著新增

//add偽.釣魚

_armorTypes.put("6", new Integer(18));//魚餌

//add結束

複製代碼

以後魚餌在裝備欄TYPE的地方請設6

這樣玩家才能裝備魚餌上去

接著到C_RequestItemUSe.java  ( C_ItemUSe )


我是在無限箭桶(itemId == 40330)的結束後面新增

//add假釣竿



if (itemId == 600004) {

int x = pc.getX();

int y = pc.getY();

int map = pc.getMapId();

if (x == 32807 && y == 32799 && map == 5124 || x == 32807 && y == 32798 && map == 5124 || x == 32807 && y == 32797 && map == 5124 || x == 32807 && y == 32796 && map == 5124 || x == 32807 && y == 32793 && map == 5124 || x == 32801 && y == 32812 && map == 5124 || x == 32790 && y == 32800 && map == 5124 || x == 32793 && y == 32793 && map == 5124 || x == 32807 && y == 32795 && map == 5124 || x == 32807 && y == 32794 && map == 5124 || x == 32807 && y == 32792 && map == 5124 || x == 32800 && y == 32812 && map == 5124

|| x == 32790 && y == 32800 && map == 5124 || x == 32790 && y == 32799 && map == 5124 || x == 32790 && y == 32798 && map == 5124 || x == 32790 && y == 32797 && map == 5124 || x == 32790 && y == 32796 && map == 5124 || x == 32799 && y == 32812 && map == 5124

|| x == 32790 && y == 32795 && map == 5124 || x == 32792 && y == 32793 && map == 5124 || x == 32804 && y == 32812 && map == 5124 || x == 32803 && y == 32812 && map == 5124 || x == 32802 && y == 32812 && map == 5124 || x == 32798 && y == 32812 && map == 5124

|| x == 32794 && y == 32792 && map == 5124 || x == 32795 && y == 32792 && map == 5124 || x == 32795 && y == 32791 && map == 5124 || x == 32797 && y == 32812 && map == 5124

|| x == 32797 && y == 32788 && map == 5124 || x == 32798 && y == 32788 && map == 5124) {

if (pc.getInventory().checkEquipped(600005)) {

L1ItemInstance consume_item = pc.getInventory().findItemId(600005);

int l1 = 0;

int l2 = 1;

Random random = new Random();

int k4 = random.nextInt(100);

int k3 = random.nextInt(100);

if (k4 < 50) {

try {

Thread.sleep(2000);

}

catch (Exception exception) {

}

pc.sendPackets(new S_SystemMessage("上鉤了!"));

if (k3 <= 79) { // 

l1 = 40744;

l2 = 4000;

}

if (k3 >= 80 && k3 <= 89) { // 矢

l1 = 40746;

l2 = 2000;

}

if (k3 >= 90 && k3 <= 94) { // 

l1 = 40747;

l2 = 500;

}

if (k3 >= 95 && k3 <= 99) { // 

l1 = 40748;

l2 = 300;

}

if (!CreateNewItem(pc, l1, l2)) {

// 失敗場互效果入

isDelayEffect = false;

}

pc.getInventory().removeItem(consume_item, 100);

}

else {

try {

Thread.sleep(2000);

}

catch (Exception exception) {

}

pc.sendPackets(new S_SystemMessage("可惜沒有掉到!"));

pc.getInventory().removeItem(consume_item, 100);

}

} else

pc.sendPackets(new S_SystemMessage("沒有裝備釣餌"));

} else

pc.sendPackets(new S_SystemMessage("不在魚池旁邊"));

} else



//add結束


複製代碼說明

  1. k4<50就是多少機率會掉到東西
  2. l1就是你想要讓玩家釣上些什麼
  3. l2就是你想要讓玩家釣上幾個
  4. Thread.sleep(2000);2000就是讓玩家停頓2秒鐘


以上是用非常濫的寫法做出來的釣魚系統...

喜歡的先湊互著用吧

再來我當然不能放我對我自己惡搞嚕!
但是我只有說方式...
那就是如果再配互上
yamca2701大大的時間程式

你們可以做出來一個釣魚大賽!
就是再某個時間內掉上來的東西更好!
以下是大概方式,因為我懶的再多寫了ˇˇ...if (itemId == 600004) {

                                      int x = pc.getX();

                                      int y = pc.getY();

                                      int map = pc.getMapId();

                                        if (x == 32807 && y == 32799 && map == 5124 || x == 32807 && y == 32798 && map == 5124 || x == 32807 && y == 32797 && map == 5124 || x == 32807 && y == 32796 && map == 5124 || x == 32807 && y == 32793 && map == 5124 || x == 32801 && y == 32812 && map == 5124

                                          || x == 32790 && y == 32800 && map == 5124 || x == 32793 && y == 32793 && map == 5124 || x == 32807 && y == 32795 && map == 5124 || x == 32807 && y == 32794 && map == 5124 || x == 32807 && y == 32792 && map == 5124 || x == 32800 && y == 32812 && map == 5124

                                          || x == 32790 && y == 32800 && map == 5124 || x == 32790 && y == 32799 && map == 5124 || x == 32790 && y == 32798 && map == 5124 || x == 32790 && y == 32797 && map == 5124 || x == 32790 && y == 32796 && map == 5124 || x == 32799 && y == 32812 && map == 5124

                                          || x == 32790 && y == 32795 && map == 5124 || x == 32792 && y == 32793 && map == 5124 || x == 32804 && y == 32812 && map == 5124 || x == 32803 && y == 32812 && map == 5124 || x == 32802 && y == 32812 && map == 5124 || x == 32798 && y == 32812 && map == 5124

                                          || x == 32794 && y == 32792 && map == 5124 || x == 32795 && y == 32792 && map == 5124 || x == 32795 && y == 32791 && map == 5124 || x == 32797 && y == 32812 && map == 5124

                                          || x == 32797 && y == 32788 && map == 5124 || x == 32798 && y == 32788 && map == 5124) {

複製代碼在這堆地圖位子的判斷後面新增
if(釣魚大賽的時間)下面都一樣
然後再

} else

pc.sendPackets(new S_SystemMessage("不在魚池旁邊"));

複製代碼的上面在新增

else

再把地圖判斷以下的東西全部都複製一遍!

直到上面那個CODE之前的

然後兩個物品...

第一種設定更好的東西
第二種設定普通時間的東西

以上...有幾個缺點

第一我沒有釣魚的動作...(我做不出來阿... )
第二程式寫法很不漂亮...
第三地圖判斷寫了一大堆,因為我使用>=&&<=的時候,也不知道為什麼,都會判斷失敗...
所以只好土法煉鋼一個一個慢慢寫了...





沒有留言:

張貼留言