- Хроники
- Master Class
- Исходники
- Присутствуют
- Сборка
- L2jMobius
Ребята, подскажите пожалуйста где искать спистк итемов при получении которых в инвентарь игрока выводится сообщение по центру экрана о том что такойто персонаж получил такой то итем.
Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Код:Compilation diagnostics ----------------------- WARNING: Unknown Source, Line -1, Column -1 code: compiler.warn.option.obsolete.source message: source value 8 is obsolete and will be removed in a future release WARNING: Unknown Source, Line -1, Column -1 code: compiler.warn.option.obsolete.target message: target value 8 is obsolete and will be removed in a future release WARNING: Unknown Source, Line -1, Column -1 code: compiler.warn.option.obsolete.suppression message: To suppress warnings about obsolete options, use -Xlint:-options. ERROR: data\scripts\handlers\itemhandlers\ExtractableItems.java, Line 361, Column 63 code: compiler.err.cant.resolve.location...
скинь файлы в которых сделал замену у себя
пробуй
Compilation diagnostics
-----------------------
WARNING: Unknown Source, Line -1, Column -1
code: compiler.warn.option.obsolete.source
message: source value 8 is obsolete and will be removed in a future release
WARNING: Unknown Source, Line -1, Column -1
code: compiler.warn.option.obsolete.target
message: target value 8 is obsolete and will be removed in a future release
WARNING: Unknown Source, Line -1, Column -1
code: compiler.warn.option.obsolete.suppression
message: To suppress warnings about obsolete options, use -Xlint:-options.
ERROR: data\scripts\handlers\itemhandlers\ExtractableItems.java, Line 361, Column 63
code: compiler.err.cant.resolve.location
message: cannot find symbol
symbol: variable YOU_VE_OBTAINED_S1_X_S2
location: class org.l2jmobius.gameserver.network.SystemMessageId
Код:Compilation diagnostics ----------------------- WARNING: Unknown Source, Line -1, Column -1 code: compiler.warn.option.obsolete.source message: source value 8 is obsolete and will be removed in a future release WARNING: Unknown Source, Line -1, Column -1 code: compiler.warn.option.obsolete.target message: target value 8 is obsolete and will be removed in a future release WARNING: Unknown Source, Line -1, Column -1 code: compiler.warn.option.obsolete.suppression message: To suppress warnings about obsolete options, use -Xlint:-options. ERROR: data\scripts\handlers\itemhandlers\ExtractableItems.java, Line 361, Column 63 code: compiler.err.cant.resolve.location message: cannot find symbol symbol: variable YOU_VE_OBTAINED_S1_X_S2 location: class org.l2jmobius.gameserver.network.SystemMessageId
/*
* Copyright (c) 2013 L2jMobius
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package handlers.itemhandlers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.ItemData;
import org.l2jmobius.gameserver.handler.IItemHandler;
import org.l2jmobius.gameserver.managers.DailyResetManager;
import org.l2jmobius.gameserver.model.ExtractableProduct;
import org.l2jmobius.gameserver.model.actor.Playable;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.request.AutoPeelRequest;
import org.l2jmobius.gameserver.model.item.EtcItem;
import org.l2jmobius.gameserver.model.item.ItemTemplate;
import org.l2jmobius.gameserver.model.item.enums.ItemProcessType;
import org.l2jmobius.gameserver.model.item.enums.SpecialItemType;
import org.l2jmobius.gameserver.model.item.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExItemAnnounce;
import org.l2jmobius.gameserver.network.serverpackets.ExPCCafePointInfo;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.autopeel.ExResultItemAutoPeel;
import org.l2jmobius.gameserver.network.serverpackets.autopeel.ExStopItemAutoPeel;
/**
* Extractable Items handler.
*
* @author HorridoJoho, Mobius
*/
public class ExtractableItems implements IItemHandler
{
@Override
public boolean useItem(Playable playable, Item item, boolean forceUse)
{
if (!playable.isPlayer())
{
playable.sendPacket(SystemMessageId.YOUR_PET_CANNOT_CARRY_THIS_ITEM);
return false;
}
final Player player = playable.asPlayer();
final EtcItem etcitem = (EtcItem) item.getTemplate();
final List<ExtractableProduct> exitems = etcitem.getExtractableItems();
if (exitems == null)
{
LOGGER.info("No extractable data defined for " + etcitem);
return false;
}
if (!player.isInventoryUnder80(false))
{
player.sendPacket(SystemMessageId.YOU_HAVE_EXCEEDED_THE_ITEM_OWNERSHIP_LIMIT_AND_YOU_CANNOT_TAKE_THE_ITEM_CHECK_ITEM_OWNERSHIP_TIME_LIMITS_FOR_THE_INVENTORY_PLEASE);
return false;
}
// destroy item
if (!DailyResetManager.RESET_ITEMS.contains(item.getId()) && !player.destroyItem(ItemProcessType.FEE, item.getObjectId(), 1, player, true))
{
return false;
}
boolean specialReward = false;
final Map<Item, Long> extractedItems = new HashMap<>();
final List<Item> enchantedItems = new ArrayList<>();
if (etcitem.getExtractableCountMin() > 0)
{
while (extractedItems.size() < etcitem.getExtractableCountMin())
{
for (ExtractableProduct expi : exitems)
{
if ((etcitem.getExtractableCountMax() > 0) && (extractedItems.size() == etcitem.getExtractableCountMax()))
{
break;
}
if (Rnd.get(100000) <= expi.getChance())
{
final long min = (long) (expi.getMin() * Config.RATE_EXTRACTABLE);
final long max = (long) (expi.getMax() * Config.RATE_EXTRACTABLE);
long createItemAmount = (max == min) ? min : (Rnd.get((max - min) + 1) + min);
if (createItemAmount == 0)
{
continue;
}
// Do not extract the same item.
boolean alreadyExtracted = false;
for (Item i : extractedItems.keySet())
{
if (i.getTemplate().getId() == expi.getId())
{
alreadyExtracted = true;
break;
}
}
if (alreadyExtracted && (exitems.size() >= etcitem.getExtractableCountMax()))
{
continue;
}
if (expi.getId() == -1) // Prime points
{
player.setPrimePoints(player.getPrimePoints() + (int) createItemAmount);
player.sendMessage("You have obtained " + (createItemAmount / 100) + " Euro!");
specialReward = true;
continue;
}
else if (expi.getId() == SpecialItemType.PC_CAFE_POINTS.getClientId())
{
final int currentPoints = player.getPcCafePoints();
final int upgradePoints = player.getPcCafePoints() + (int) createItemAmount;
player.setPcCafePoints(upgradePoints);
final SystemMessage message = new SystemMessage(SystemMessageId.YOU_EARNED_S1_PA_POINT_S).addInt((int) createItemAmount);
player.sendPacket(message);
player.sendPacket(new ExPCCafePointInfo(currentPoints, upgradePoints, 1));
specialReward = true;
continue;
}
else if (expi.getId() == SpecialItemType.HONOR_COINS.getClientId())
{
player.setHonorCoins(player.getHonorCoins() + (int) createItemAmount);
player.sendMessage("You have obtained " + (createItemAmount) + " Honor Coin.");
specialReward = true;
continue;
}
final ItemTemplate template = ItemData.getInstance().getTemplate(expi.getId());
if (template == null)
{
LOGGER.warning("ExtractableItems: Could not find " + item + " product template with id " + expi.getId() + "!");
continue;
}
if (template.isStackable() || (createItemAmount == 1))
{
final Item newItem = player.addItem(ItemProcessType.REWARD, expi.getId(), createItemAmount, player, false);
if (expi.getMaxEnchant() > 0)
{
newItem.setEnchantLevel(Rnd.get(expi.getMinEnchant(), expi.getMaxEnchant()));
enchantedItems.add(newItem);
}
// Send item announcement if configured
if (expi.isAnnounce())
{
player.broadcastPacket(
new ExItemAnnounce(player, newItem, ExItemAnnounce.LOOT_BOX, item.getId()));
}
addItem(extractedItems, newItem, createItemAmount);
}
else
{
while (createItemAmount > 0)
{
final Item newItem = player.addItem(ItemProcessType.REWARD, expi.getId(), 1, player, false);
if (expi.getMaxEnchant() > 0)
{
newItem.setEnchantLevel(Rnd.get(expi.getMinEnchant(), expi.getMaxEnchant()));
enchantedItems.add(newItem);
}
// Send item announcement if configured
if (expi.isAnnounce())
{
player.broadcastPacket(
new ExItemAnnounce(player, newItem, ExItemAnnounce.LOOT_BOX, item.getId()));
}
addItem(extractedItems, newItem, 1);
createItemAmount--;
}
}
}
}
}
}
else
{
for (ExtractableProduct expi : exitems)
{
if ((etcitem.getExtractableCountMax() > 0) && (extractedItems.size() == etcitem.getExtractableCountMax()))
{
break;
}
if (Rnd.get(100000) <= expi.getChance())
{
final long min = (long) (expi.getMin() * Config.RATE_EXTRACTABLE);
final long max = (long) (expi.getMax() * Config.RATE_EXTRACTABLE);
long createItemAmount = (max == min) ? min : (Rnd.get((max - min) + 1) + min);
if (createItemAmount == 0)
{
continue;
}
if (expi.getId() == -1) // Prime points
{
player.setPrimePoints(player.getPrimePoints() + (int) createItemAmount);
player.sendMessage("You have obtained " + (createItemAmount / 100) + " Euro!");
specialReward = true;
continue;
}
else if (expi.getId() == SpecialItemType.PC_CAFE_POINTS.getClientId())
{
final int currentPoints = player.getPcCafePoints();
final int upgradePoints = player.getPcCafePoints() + (int) createItemAmount;
player.setPcCafePoints(upgradePoints);
final SystemMessage message = new SystemMessage(SystemMessageId.YOU_EARNED_S1_PA_POINT_S).addInt((int) createItemAmount);
player.sendPacket(message);
player.sendPacket(new ExPCCafePointInfo(currentPoints, upgradePoints, 1));
specialReward = true;
continue;
}
else if (expi.getId() == SpecialItemType.HONOR_COINS.getClientId())
{
player.setHonorCoins(player.getHonorCoins() + (int) createItemAmount);
player.sendMessage("You have obtained " + (createItemAmount) + " Honor Coin.");
specialReward = true;
continue;
}
final ItemTemplate template = ItemData.getInstance().getTemplate(expi.getId());
if (template == null)
{
LOGGER.warning("ExtractableItems: Could not find " + item + " product template with id " + expi.getId() + "!");
continue;
}
if (template.isStackable() || (createItemAmount == 1))
{
final Item newItem = player.addItem(ItemProcessType.REWARD, expi.getId(), createItemAmount, player, false);
if (expi.getMaxEnchant() > 0)
{
newItem.setEnchantLevel(Rnd.get(expi.getMinEnchant(), expi.getMaxEnchant()));
enchantedItems.add(newItem);
}
// Send item announcement if configured
if (expi.isAnnounce())
{
player.broadcastPacket(
new ExItemAnnounce(player, newItem, ExItemAnnounce.LOOT_BOX, item.getId()));
}
addItem(extractedItems, newItem, createItemAmount);
}
else
{
while (createItemAmount > 0)
{
final Item newItem = player.addItem(ItemProcessType.REWARD, expi.getId(), 1, player, false);
if (expi.getMaxEnchant() > 0)
{
newItem.setEnchantLevel(Rnd.get(expi.getMinEnchant(), expi.getMaxEnchant()));
enchantedItems.add(newItem);
}
// Send item announcement if configured
if (expi.isAnnounce())
{
player.broadcastPacket(
new ExItemAnnounce(player, newItem, ExItemAnnounce.LOOT_BOX, item.getId()));
}
addItem(extractedItems, newItem, 1);
createItemAmount--;
}
}
}
}
}
if (extractedItems.isEmpty() && !specialReward)
{
player.sendPacket(SystemMessageId.FAILED_TO_CHANGE_THE_ITEM);
}
if (!enchantedItems.isEmpty())
{
final InventoryUpdate playerIU = new InventoryUpdate();
for (Item i : enchantedItems)
{
playerIU.addModifiedItem(i);
}
player.sendInventoryUpdate(playerIU);
}
for (Entry<Item, Long> entry : extractedItems.entrySet())
{
sendMessage(player, entry.getKey(), entry.getValue());
}
final AutoPeelRequest request = player.getRequest(AutoPeelRequest.class);
if (request != null)
{
if (request.isProcessing())
{
request.setProcessing(false);
final List<ItemHolder> rewards = new LinkedList<>();
for (Entry<Item, Long> entry : extractedItems.entrySet())
{
rewards.add(new ItemHolder(entry.getKey().getId(), entry.getValue()));
}
player.sendPacket(new ExResultItemAutoPeel(true, request.getTotalPeelCount(), request.getRemainingPeelCount() - 1, rewards));
}
else
{
player.sendPacket(new ExStopItemAutoPeel(false));
}
}
else // Fixes last auto peel not shown. No effect if auto peel window is closed.
{
final List<ItemHolder> rewards = new LinkedList<>();
for (Entry<Item, Long> entry : extractedItems.entrySet())
{
rewards.add(new ItemHolder(entry.getKey().getId(), entry.getValue()));
}
player.sendPacket(new ExResultItemAutoPeel(true, 0, 0, rewards));
}
return true;
}
private void addItem(Map<Item, Long> extractedItems, Item newItem, long count)
{
if (extractedItems.containsKey(newItem))
{
extractedItems.put(newItem, extractedItems.get(newItem) + count);
}
else
{
extractedItems.put(newItem, count);
}
}
private void sendMessage(Player player, Item item, long count)
{
final SystemMessage sm;
if (count > 1)
{
sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2);
sm.addItemName(item);
sm.addLong(count);
}
else if (item.getEnchantLevel() > 0)
{
sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_S2);
sm.addInt(item.getEnchantLevel());
sm.addItemName(item);
}
else
{
sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1);
sm.addItemName(item);
}
player.sendPacket(sm);
}
}