사이트 로그인
2017.01.23 23:08
package admincommands;
import gameserver.model.gameobjects.player.Player;
import gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import gameserver.services.ItemService;
import gameserver.utils.PacketSendUtility;
import gameserver.utils.chathandlers.AdminCommand;
import org.apache.log4j.Logger;
public class Exchange extends AdminCommand
{
private static final Logger log = Logger.getLogger(Exchange.class);
public Exchange()
{
super("교환");
}
@Override
public void executeCommand(Player admin, String[] params)
{
int apValue;
int numValue;
int itemId;
if(params == null || params.length < 2)
{
PacketSendUtility.sendMessage(admin, "명령어 구조 : //교환 [백금공/금공/은공/키나/어포] <갯수>");
return;
}
try
{
numValue = Integer.parseInt(params[1]);
}
catch(NumberFormatException e)
{
PacketSendUtility.sendMessage(admin, "갯수 입력이 잘못되었습니다.\n오류유도로 로그에 기록됩니다.");
log.info("[ITEM][교환오류] 플레이어 " + admin.getName() + " : 교환수량 입력오류.");
return;
}
if(numValue < 1)
{
PacketSendUtility.sendMessage(admin, "갯수 입력이 잘못되었습니다.\n오류유도로 로그에 기록됩니다.");
log.info("[ITEM][교환오류] 플레이어 " + admin.getName() + " : 교환수량 입력오류.");
return;
}
if(params[0].equals("백금공"))
{
apValue = 27000 * numValue;
itemId = 186000096;
}
else if(params[0].equals("금공"))
{
apValue = 13500 * numValue;
itemId = 186000030;
}
else if(params[0].equals("은공"))
{
apValue = 4500 * numValue;
itemId = 186000031;
}
else if(params[0].equals("키나"))
{
if(numValue < 10000 || numValue > 2000000000)
{
PacketSendUtility.sendMessage(admin, "키나교환시에는 최소 10,000 이상 입력하셔야 합니다.");
return;
}
apValue = (int) Math.floor(numValue * 0.0001f);
itemId = 182400001;
}
else if(params[0].equals("어포"))
{
if(numValue < 54000 || numValue > 2000000000)
{
PacketSendUtility.sendMessage(admin, "어포 교환시에는 최소 54,000 이상 입력하셔야 합니다.");
return;
}
final int itemCount = Math.round(numValue / 54000);
final int playerAP = admin.getAbyssRank().getAp();
itemId = 186000096;
if(playerAP < itemCount * 54000 || itemCount < 1)
{
PacketSendUtility.sendMessage(admin, "어비스 포인트가 부족합니다.");
log.info("[ITEM][교환오류] 플레이어 " + admin.getName() + " : 어비스포인트부족 : " + numValue);
return;
}
if(admin.getInventory().isFull())
{
PacketSendUtility.sendMessage(admin, "인벤토리 공간이 부족합니다.");
return;
}
admin.getCommonData().addAp(itemCount * 54000 * -1);
long count = ItemService.addItem(admin, itemId, itemCount);
if(count == 0)
PacketSendUtility.sendMessage(admin, "아이템이 추가되었습니다.");
else
PacketSendUtility.sendMessage(admin, "아이템을 추가하는데 오류가 발생하였습니다.");
return;
}
else
{
PacketSendUtility.sendMessage(admin, "명령어 구조 : //교환 [백금공/금공/은공/키나/어포] <갯수>");
return;
}
if(itemId == 182400001)
{
if(numValue > admin.getInventory().getKinahItem().getItemCount())
{
PacketSendUtility.sendPacket(admin, SM_SYSTEM_MESSAGE.NOT_ENOUGH_KINAH(numValue));
return;
}
admin.getInventory().decreaseKinah(numValue);
}
else
{
if(admin.getInventory().getItemCountByItemId(itemId) < numValue)
{
PacketSendUtility.sendMessage(admin, "해당 아이템 수량이 부족합니다.\n오류유도로 로그에 기록됩니다.");
log.info("[ITEM][교환오류] 플레이어 " + admin.getName() + " : 교환수량부족시도.");
return;
}
admin.getInventory().removeFromBagByItemId(itemId, numValue);
}
admin.getCommonData().addAp(apValue);
PacketSendUtility.sendMessage(admin, "어비스포인트 : " + apValue + "\n교환에 성공하였습니다.");
}
}