參考資料:天堂透視鏡
http://gametsg.techbang.com/lineage/index.php?view=npc&npc=40011
在下只是按照資料中的字面解釋下去做這隻怪物的...
使用版本:Rev2021.
以下是大概能實裝的作法:
l1j\server\server\model\Instance\L1MonsterInstance.java
搜尋這一段:
http://gametsg.techbang.com/lineage/index.php?view=npc&npc=40011
在下只是按照資料中的字面解釋下去做這隻怪物的...
使用版本:Rev2021.
以下是大概能實裝的作法:
l1j\server\server\model\Instance\L1MonsterInstance.java
搜尋這一段:
private void hide() {
在迴圈中新增這一段:
} else if (npcid == 怪物的ID) {
if
(getMaxHp() / 3 > getCurrentHp()) { //暫定剩餘血量
if (1 > _random.nextInt(20)) { //暫定閉殼治療的機率
allTargetClear();
setHiddenStatus(HIDDEN_STATUS_FLY);
broadcastPacket(new
S_DoActionGFX(getId(),
4));
setStatus(4);
broadcastPacket(new
S_NPCPack(this));
}
}
再找到這一段:
} else if (leader.getHiddenStatus() ==
HIDDEN_STATUS_FLY) {
在if敘述中插入你怪物的ID
--------------------------------------------------
再來修改:
l1j\server\server\model\Instance\L1NpcInstance.java
找到這一段:
--------------------------------------------------
再來修改:
l1j\server\server\model\Instance\L1NpcInstance.java
找到這一段:
int pickupIndex = (int) (Math.random() *
gInventorys.size());
L1GroundInventory inventory =
gInventorys.get(pickupIndex);
for (L1ItemInstance item :
inventory.getItems()) {
...以下省略
整段改成以下
...以下省略
整段改成以下
int pickupIndex = (int) (Math.random() * gInventorys.size());L1GroundInventory inventory = gInventorys.get(pickupIndex);
for (L1ItemInstance item : inventory.getItems()) {
if (getInventory().checkAddItem(item, item.getCount()) == L1Inventory.OK) {
if (getPassispeed() > 0) {
_targetItem = item;
_targetItemList.add(_targetItem);
}
}
if (_npcTemplate.get_npcId() == 8888) {//TODO 怪物編號
int item_Id = item.getItem().getItemId();
if (item_Id == 1234 && (item.getItem().getType() != 6 || item.getItem().getType() != 7)) {//TODO 品質寶石編號
if (getHiddenStatus() == HIDDEN_STATUS_FLY) {
L1Inventory groundInventory = L1World.getInstance()
.getInventory(item.getX(), item.getY(), item.getMapId());
setHiddenStatus(HIDDEN_STATUS_NONE);
broadcastPacket(new S_DoActionGFX(getId(), 11));
setStatus(0);
broadcastPacket(new S_NPCPack(this));
onNpcAI();
startChat(CHAT_TIMING_HIDE);
groundInventory.removeItem(item);
}
}
}
}
}
for (L1ItemInstance item : inventory.getItems()) {
if (getInventory().checkAddItem(item, item.getCount()) == L1Inventory.OK) {
if (getPassispeed() > 0) {
_targetItem = item;
_targetItemList.add(_targetItem);
}
}
if (_npcTemplate.get_npcId() == 8888) {//TODO 怪物編號
int item_Id = item.getItem().getItemId();
if (item_Id == 1234 && (item.getItem().getType() != 6 || item.getItem().getType() != 7)) {//TODO 品質寶石編號
if (getHiddenStatus() == HIDDEN_STATUS_FLY) {
L1Inventory groundInventory = L1World.getInstance()
.getInventory(item.getX(), item.getY(), item.getMapId());
setHiddenStatus(HIDDEN_STATUS_NONE);
broadcastPacket(new S_DoActionGFX(getId(), 11));
setStatus(0);
broadcastPacket(new S_NPCPack(this));
onNpcAI();
startChat(CHAT_TIMING_HIDE);
groundInventory.removeItem(item);
}
}
}
}
}
----------------------------------------------------
DB的部分
gfxId 5767
passispeed 0
atkSpeed 1000
alt_atk_speed 960
atk_magic_speed 1100
sub_magic_speed 1100
arrowgfx 5773
skillgfx 5771
attack actionid 1,18,19,30
沒有留言:
張貼留言