瘋天堂私服發佈網站廣告欄位!
害怕天堂私服倒閉嗎?快使用天堂分析師!
天堂私服抽獎扭蛋物品及機率測試器
天堂私服稱號顏色製造器
瘋天堂私服發佈網站教您註冊推文收藏私服!
天堂私服血量魔力計算器
瘋天堂私服發布網站廣告贊助及爆料私服客服
教您如何不用註冊也可以推文天堂私服!
天堂私服270怪物查詢掉落資料庫
天堂私服盟徽製造器
test0428
2008-02-21 17:00

天堂任務性道具接任務才打得到的java寫法!


限制任務性道具的掉落<<接任務才打得到>>

(11/26)修正重登才能取得道具的問題,終於完成啦!!~>w<
------------------------
取消對L1Character的修改,紅色刪除部分。

public L1Character() {
_level = 1;
_currentState = 0;//add 實裝 牛 豬 雞 鴨 對話 use srwh code 1/2
_dropQuest = new DropTable(this);//限制任務掉落1/2
}
//限制任務掉落2/2
public DropTable getDpQuest() {
return _dropQuest;
}
private DropTable _dropQuest;
//end 2008.10.5


-------------------------
※底下的 DropTable.java 也有被改過!!
-------------------------
但是,照著這樣改會有一種情況,
L1NpcInstance.onNpcAI()無法與L1MonsterInstance.onNpcAI(L1Character cha)連結的情況,
如果前者不連到後者的話,會遁地或飛行的怪物一出現就會在原地發呆......
直到你砍它時,他才會開始反擊
所以修改的最後,最好在L1NpcInstance加入public void onNpcAI(L1Character cha) {

}
複製代碼然後同在L1NpcInstance內尋找onNpcAI()的相關位置,
也加入onNpcAI(_target);
-------------------------


花了不少時間做這個冏
如果只要在接任務的時候,才能取得的道具,也許可以減少許多困擾吧~


修改的檔案:
L1SummonInstance.java、
L1MonsterInstance.java、
L1Drop.java、
DropTable.java
L1SummonInstance.java


尋找
public L1SummonInstance(L1NpcInstance target, L1Character master,
boolean createZombie) {......
if (target instanceof L1MonsterInstance
&& !((L1MonsterInstance) target).is_storeDroped()) {......
DropTable.getInstance().setDrop(target, target.getInventory());

改成
DropTable.getInstance().setDrop(master, target, target.getInventory());//限制任務掉落

複製代碼L1MonsterInstance.java

尋找
public void onPerceive(L1PcInstance perceivedFrom) {...
onNpcAI();

改成
onNpcAI(perceivedFrom);//限制任務掉落1/5


複製代碼 找到
public void onNpcAI() {

改成
public void onNpcAI(L1Character cha) {


複製代碼下一個
DropTable.getInstance().setDrop(this, getInventory());

改成
DropTable.getInstance().setDrop(cha, this, getInventory());//限制任務掉落2/5


複製代碼 找到
public void ReceiveManaDamage(L1Character attacker, int mpDamage) {...
onNpcAI();

改成
onNpcAI(attacker);//限制任務掉落3/5

複製代碼 找到
public void receiveDamage(L1Character attacker, int damage) {...
onNpcAI();

改成
onNpcAI(attacker);//限制任務掉落4/5

複製代碼最下面
protected void transform(int transformId) {...
DropTable.getInstance().setDrop(this, getInventory());

改成
L1Character cha=(L1Character)_target;

DropTable.getInstance().setDrop(cha, this, getInventory());//限制任務掉落5/5

複製代碼
L1Drop.java

新增

//限制任務掉落by13630020

int questId;

public int get_questId() {

return questId;

}

public void set_questId(int quest_id) {

this.questId = quest_id;

}

int questStep;

public int get_step() {

return questStep;

}

public void set_step(int quest_step) {

this.questStep = quest_step;

}

//end 2008.10.4


複製代碼
DropTable.java

最重要的部份...
找到
l1drop.setChance(rs.getInt("chance"));

往下加入.

//限制任務掉落1/3

l1drop.set_questId(rs.getInt("quest_id"));

l1drop.set_step(rs.getInt("quest_step"));

//end 2008.10.5

複製代碼

public void setDrop(L1Character cha, L1NpcInstance npc, L1Inventory inventory) {...
for (L1Drop drop : dropList) {...
往下加入.


// 限制任務掉落2/3

boolean isQueat = false;

int quest_id = drop.get_questId();

int quest_step = drop.get_step();

if(quest_id==0 && quest_step==0){ //通常預設

isQueat = true;

}else{

if(quest_id != 0){

if(cha instanceof L1PcInstance){

L1PcInstance pc = (L1PcInstance) cha;

if(pc.getQuest().get_step(quest_id) == quest_step){

isQueat = true;

}

}

}

}

// end


複製代碼然後找到

item = ItemTable.getInstance().createItem(itemId);
item.setCount(itemCount);if(isQueat){//限制任務掉落3/3

※包覆在這個括弧裡面

}
複製代碼補充:加完之後,有些會出現尚未設定初始值,大概有兩個,分別打上(null)
L1ItemInstance item = null;
private HashMap<Integer, ArrayList<L1Drop>> _droplists = null ;

droplist.sql
在最後面新增 quest_id 和 quest_step 欄位quest_id int 10 0

quest_step int 10 0

預設值"0"
複製代碼這樣就OK了。排得有點亂@@,希望沒打漏的!~~



上一篇文章:天堂指定狀態才可攻擊到怪物的java寫法!
下一篇文章:瘋天堂私服發佈網站給想玩天堂私服的人一些小小的提示!

分享文章:分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!