위치 : psjump.server.model.L1TeleporterInstance.java
텔레포트를 이용 할 때 목록에 표시되어 있는 요금 만큼 아데나를 회수하는 기능입니다.
기존 공개된 코드로는 문제점이 아데나를 1원이라도 가지고 있지 않은 경우에 원래 요금을 받지 않는 텔레포터도 아데나를 체크해서 아데나가 없을 경우 비용이 없다고 텔레포트를 시켜주지 않는 문제점이 있는데 그 부분을 수정하면서 완벽하게 동작하도록 작업 한 것 입니다.
즉, 기본적으로 요금을 청구하는 npc 를 지정해서 해당 npc 는 요금을 받고 텔을 시켜주고 요금을 청구하지 않는 무료 텔레포터 npc 들은 그냥 텔을 바로 보내주는 방식으로 짜여져 있습니다.
아래의 코드들을 기존 위치의 코드를 삭제하고 붙여넣어서 작업하시면 됩니다.
public void doFinalAction(L1PcInstance player, String action){
TeleportLocations tl = TeleportLocationsTable.getInstance().getTemplate(action);
L1ItemInstance chaAden = player.get_cil().getAden();
if(getNpcTemplate().get_npcId() == 50004 || getNpcTemplate().get_npcId() == 50005 || getNpcTemplate().get_npcId() == 50006 || getNpcTemplate().get_npcId() == 50007 || getNpcTemplate().get_npcId() == 50008 || getNpcTemplate().get_npcId() == 50009 || getNpcTemplate().get_npcId() == 50010 || getNpcTemplate().get_npcId() == 50013 || getNpcTemplate().get_npcId() == 50014 || getNpcTemplate().get_npcId() == 50015){
if(tl != null && chaAden != null && chaAden.getCount() >= tl.getPrice()){
if((chaAden.getCount()-tl.getPrice())>0){
chaAden.setCount(chaAden.getCount() - (tl.getPrice()));
player.sendPackets(player.get_netConnection().bph().get_Item().ItemStatus(chaAden), true);
}else{
player.get_cil().removeItems(chaAden);
player.sendPackets(player.get_netConnection().bph().get_Item().ItemStatus(chaAden), true);
}
L1Teleport.getInstance().teleport(player, tl.getLocx(), tl.getLocy(), tl.getMapid());
}else{
player.sendPackets(player.get_netConnection().bph().get_Message().S_ServerMessage(189, ""), true);
}
}
else if(tl != null){
L1Teleport.getInstance().teleport(player, tl.getLocx(), tl.getLocy(), tl.getMapid());
}
}
위의 코드를 사용하면 아래 목록의 npc 들만 요금을 받게 됩니다.
메트 50004, 트레이 50005, 스티브 50006, 루카스 50007, 스텐리 50008, 리올 50009, 시리우스 50010, 키리우스 50013, 레슬리 50014, 윌마 50015 << 여기까지의 npc만이 요금을 받으며, 추가적으로 요금을 받아야하는 npc 가 있을 경우 상단 번호가 메겨진 부분의 코드를 복사해서 추가하면 됩니다.
npc 지정부분에 있어서 크거나 작거나와 같은 조건으로 최소화 할 수 있겠지만, 나중에 추가되면서 띄엄띄엄되면서 더 복잡해지고 길어 질 것 같아서 npc 하나하나를 지정하도록 하였습니다.
이 부분은 본인의 입맛에 맞도록 수정해서 사용하시기 바랍니다.
추가되어야 하는 npc 는 다른분들의 제보 및 도움이 필요 할 것으로 예상합니다.
제가 파악하는 요금을 청구하는 npc 는 위에 npc 들 밖에 찾아내지를 못했습니다.
[출처] 텔레포트 요금 청구하기 (비공개 카페)