This repository has been archived by the owner on Aug 31, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Command .preview
Sipherion edited this page Aug 21, 2016
·
1 revision
Command itself:
package com.aionemu.gameserver.command.player;
import com.aionemu.gameserver.command.BaseCommand;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.services.ItemRemodelService;
/**
* @author Kashim
*/
public class CmdPreview extends BaseCommand {
public void execute(Player player, String... params) {
if (params.length != 1) {
showHelp(player);
return;
}
ItemRemodelService.commandPreviewRemodelItem(player, ParseInteger(params[0]), 15);
}
}
ItemRemodelService.java:
public static boolean commandPreviewRemodelItem(Player player, int itemId, int duration) {
ItemTemplate template = DataManager.ITEM_DATA.getItemTemplate(itemId);
if (template == null) {
return false;
}
Equipment equip = player.getEquipment();
if (equip == null) {
return false;
}
for (Item item : equip.getEquippedItemsWithoutStigma()) {
if (item.getEquipmentSlot() == ItemSlot.MAIN_OFF_HAND.getSlotIdMask()
|| item.getEquipmentSlot() == ItemSlot.SUB_OFF_HAND.getSlotIdMask()) {
continue;
}
if (item.getItemTemplate().isWeapon()) {
if (item.getItemTemplate().getWeaponType() == template.getWeaponType()
&& item.getItemSkinTemplate().getTemplateId() != itemId) {
systemPreviewRemodelItem(player, item, template, duration);
return true;
}
else if (template.isWeapon()){
PacketSendUtility.sendMessage(player,
"[Preview] Vous avez en main une arme de type " + item.getItemTemplate().getWeaponType() + ", " +
"vous ne pouvez pas afficher un apper\u00E7u d'une arme de type " + template.getWeaponType());
}
}
else if (item.getItemTemplate().isArmor()) {
if (item.getItemTemplate().getItemSlot() == template.getItemSlot()
&& item.getItemSkinTemplate().getTemplateId() != itemId) {
systemPreviewRemodelItem(player, item, template, duration);
return true;
}
}
else {
PacketSendUtility.sendMessage(player,
"[Preview] L'objet [item: " + itemId + "] n'a aucun apper\u00E7u disponible. " +
"Veuillez utiliser cette commande uniquement pour des armes / armures / costumes / ailes.");
}
}
return false;
}
public static void systemPreviewRemodelItem(final Player player, final Item item,
ItemTemplate template, int duration) {
final ItemTemplate oldTemplate = item.getItemSkinTemplate();
item.setItemSkinTemplate(template);
PacketSendUtility.sendPacket(player,
new SM_UPDATE_PLAYER_APPEARANCE(player.getObjectId(), player.getEquipment().getEquippedForApparence()));
PacketSendUtility.sendPacket(player,
new SM_SYSTEM_MESSAGE(1300483, new DescriptionId(item.getItemTemplate().getNameId())));
PacketSendUtility.broadcastPacket(player,
new SM_UPDATE_PLAYER_APPEARANCE(player.getObjectId(), player.getEquipment().getEquippedItemsWithoutStigma()), true);
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
item.setItemSkinTemplate(oldTemplate);
}
}, 50);
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
PacketSendUtility.sendPacket(player,
new SM_UPDATE_PLAYER_APPEARANCE(player.getObjectId(), player.getEquipment().getEquippedForApparence()));
PacketSendUtility.broadcastPacket(player,
new SM_UPDATE_PLAYER_APPEARANCE(player.getObjectId(), player.getEquipment().getEquippedItemsWithoutStigma()), true);
}
}, duration * 1000);
}
Equipment.java:
public List<Item> getEquippedForApparence() {
FastList<Item> equippedItems = FastList.newInstance();
Item twoHanded = null;
for (Item item : equipment.values()) {
long slot = item.getEquipmentSlot();
if (!ItemSlot.isStigma(slot)) {
if (slot <= ItemSlot.WINGS.getSlotIdMask()) {
if (item.getItemTemplate().isTwoHandWeapon()) {
if (twoHanded != null) {
continue;
}
twoHanded = item;
}
equippedItems.add(item);
}
}
}
return equippedItems;
}