📄 c_result.java
字号:
if (!item.getItem().isTradable()) {
tradable = false;
pc.sendPackets(new S_ServerMessage(210, item.getItem()
.getName())); // \f1%0は捨てたりまたは他人に讓ることができません。
}
Object[] petlist = pc.getPetList().values().toArray();
for (Object petObject : petlist) {
if (petObject instanceof L1PetInstance) {
L1PetInstance pet = (L1PetInstance) petObject;
if (item.getId() == pet.getItemObjId()) {
tradable = false;
// \f1%0は捨てたりまたは他人に讓ることができません。
pc.sendPackets(new S_ServerMessage(210, item
.getItem().getName()));
break;
}
}
}
if (pc.getDwarfForElfInventory().checkAddItemToWarehouse(item,
count, L1Inventory.WAREHOUSE_TYPE_PERSONAL) ==
L1Inventory.SIZE_OVER) {
pc.sendPackets(new S_ServerMessage(75)); // \f1これ以上ものを置く場所がありません。
break;
}
if (tradable) {
pc.getInventory().tradeItem(objectId, count,
pc.getDwarfForElfInventory());
pc.turnOnOffLight();
}
}
} else if (resultType == 9 && size != 0
&& npcImpl.equalsIgnoreCase("L1Dwarf") && level >= 5 && pc
.isElf()) { // 自分のエルフ倉庫から取り出し
int objectId, count;
L1ItemInstance item;
for (int i = 0; i < size; i++) {
objectId = readD();
count = readD();
item = pc.getDwarfForElfInventory().getItem(objectId);
if (pc.getInventory().checkAddItem(item, count) == L1Inventory
.OK) { // 容量重量確認及びメッセージ送信
if (pc.getInventory().consumeItem(40494, 2)) { // ミスリル
pc.getDwarfForElfInventory().tradeItem(item, count,
pc.getInventory());
} else {
pc.sendPackets(new S_ServerMessage(337,"$767")); // \f1%0が不足しています。
break;
}
} else {
pc.sendPackets(new S_ServerMessage(270)); // \f1持っているものが重くて取引できません。
break;
}
}
} else if (resultType == 0 && size != 0 && isPrivateShop) { // 個人商店からアイテム購入
int order;
int count;
int price;
ArrayList sellList;
L1PrivateShopSellList pssl;
int itemObjectId;
int sellPrice;
int sellTotalCount;
int sellCount;
L1ItemInstance item;
boolean[] isRemoveFromList = new boolean[8];
L1PcInstance targetPc = null;
if (findObject instanceof L1PcInstance) {
targetPc = (L1PcInstance) findObject;
if (targetPc == null) {
return;
}
}
if (targetPc.isTradingInPrivateShop()) {
return;
}
sellList = targetPc.getSellList();
synchronized (sellList) {
// 売り切れが発生し、閲覧中のアイテム数とリスト数が異なる
if (pc.getPartnersPrivateShopItemCount() != sellList.size()) {
return;
}
targetPc.setTradingInPrivateShop(true);
for (int i = 0; i < size; i++) { // 購入予定の商品
order = readD();
count = readD();
pssl = (L1PrivateShopSellList) sellList.get(order);
itemObjectId = pssl.getItemObjectId();
sellPrice = pssl.getSellPrice();
sellTotalCount = pssl.getSellTotalCount(); // 売る予定の數量
sellCount = pssl.getSellCount(); // 売った累計
item = targetPc.getInventory().getItem(itemObjectId);
if (item == null) {
continue;
}
if (count > sellTotalCount - sellCount) {
count = sellTotalCount - sellCount;
}
if (count == 0) {
continue;
}
if (pc.getInventory().checkAddItem(item, count) == L1Inventory.OK) { // 容量重量確認及びメッセージ送信
for (int j = 0; j < count; j++) { // オーバーフローをチェック
if (sellPrice * j > 2000000000) {
pc.sendPackets(new S_ServerMessage(904, // 総販売価格は%dアデナを超過できません。
"2000000000"));
targetPc.setTradingInPrivateShop(false);
return;
}
}
price = count * sellPrice;
if (pc.getInventory().checkItem(L1ItemId.ADENA, price)) {
L1ItemInstance adena = pc.getInventory()
.findItemId(L1ItemId.ADENA);
if (targetPc != null && adena != null) {
if (targetPc.getInventory().tradeItem(item,
count, pc.getInventory()) == null) {
targetPc.setTradingInPrivateShop(false);
return;
}
pc.getInventory().tradeItem(adena, price,
targetPc.getInventory());
String message = item.getItem().getName()
+ " (" + String.valueOf(count) + ")";
targetPc.sendPackets(new S_ServerMessage(877, // %1%o
// %0に販売しました。
pc.getName(), message));
pssl.setSellCount(count + sellCount);
sellList.set(order, pssl);
if (pssl.getSellCount() == pssl
.getSellTotalCount()) { // 売る予定の數量を売った
isRemoveFromList[order] = true;
}
}
} else {
pc.sendPackets(new S_ServerMessage(189)); // \f1アデナが不足しています。
break;
}
} else {
pc.sendPackets(new S_ServerMessage(270)); // \f1持っているものが重くて取引できません。
break;
}
}
// 売り切れたアイテムをリストの末尾から削除
for (int i = 7; i >= 0; i--) {
if (isRemoveFromList[i]) {
sellList.remove(i);
}
}
targetPc.setTradingInPrivateShop(false);
}
} else if (resultType == 1 && size != 0 && isPrivateShop) { // 個人商店にアイテム売却
int count;
int order;
ArrayList buyList;
L1PrivateShopBuyList psbl;
int itemObjectId;
L1ItemInstance item;
int buyPrice;
int buyTotalCount;
int buyCount;
L1ItemInstance targetItem;
boolean[] isRemoveFromList = new boolean[8];
L1PcInstance targetPc = null;
if (findObject instanceof L1PcInstance) {
targetPc = (L1PcInstance) findObject;
if (targetPc == null) {
return;
}
}
if (targetPc.isTradingInPrivateShop()) {
return;
}
targetPc.setTradingInPrivateShop(true);
buyList = targetPc.getBuyList();
for (int i = 0; i < size; i++) {
itemObjectId = readD();
count = readCH();
order = readC();
item = pc.getInventory().getItem(itemObjectId);
if (item == null) {
continue;
}
psbl = (L1PrivateShopBuyList) buyList.get(order);
buyPrice = psbl.getBuyPrice();
buyTotalCount = psbl.getBuyTotalCount(); // 買う予定の數量
buyCount = psbl.getBuyCount(); // 買った累計
if (count > buyTotalCount - buyCount) {
count = buyTotalCount - buyCount;
}
if (item.isEquipped()) {
pc.sendPackets(new S_ServerMessage(905)); // 装備しているアイテムは販売できません。
continue;
}
if (targetPc.getInventory().checkAddItem(item, count) == L1Inventory.OK) { // 容量重量確認及びメッセージ送信
for (int j = 0; j < count; j++) { // オーバーフローをチェック
if (buyPrice * j > 2000000000) {
targetPc.sendPackets(new S_ServerMessage(904, // 総販売価格は%dアデナを超過できません。
"2000000000"));
return;
}
}
if (targetPc.getInventory().checkItem(L1ItemId.ADENA,
count * buyPrice)) {
L1ItemInstance adena = targetPc.getInventory()
.findItemId(L1ItemId.ADENA);
if (adena != null) {
targetPc.getInventory().tradeItem(adena,
count * buyPrice, pc.getInventory());
pc.getInventory().tradeItem(item, count,
targetPc.getInventory());
psbl.setBuyCount(count + buyCount);
buyList.set(order, psbl);
if (psbl.getBuyCount() == psbl.getBuyTotalCount()) { // 買う予定の數量を買った
isRemoveFromList[order] = true;
}
}
} else {
targetPc.sendPackets(new S_ServerMessage(189)); // \f1アデナが不足しています。
break;
}
} else {
pc.sendPackets(new S_ServerMessage(271)); // \f1相手が物を持ちすぎていて取引できません。
break;
}
}
// 買い切ったアイテムをリストの末尾から削除
for (int i = 7; i >= 0; i--) {
if (isRemoveFromList[i]) {
buyList.remove(i);
}
}
targetPc.setTradingInPrivateShop(false);
}
}
@Override
public String getType() {
return C_RESULT;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -