Доброго времени суток.
Есть такой нпц - продавец аugment скиллов: ссылка
Написан он на java языке, по этому прошу помощи у знающих людей java.
Дело в том, что он вставляет ЛС абсолютно в любую пушку, мне нужно сделать запрет на вставку в геройское оружие, оружие нг,д, грейда, и ещо один момент: при вставке ЛС на оружии нету анимации ЛСа.
Вот код, заранее спасибо.
package custom.AugmentShop;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.model.quest.QuestState;
import net.sf.l2j.gameserver.model.Inventory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import net.sf.l2j.L2DatabaseFactory;
import java.util.logging.Level;
import net.sf.l2j.gameserver.model.L2ItemInstance;
/**
*
* @author adapted by Samar 2011 RUSSIA
*
*/
public class AugmentShop extends Quest
{
private final static int ITEM_ID = 4037;
private final static int ITEM_COUNT = 15;
private final static String qn = "AugmentShop";
private final static int NPC = 91000;
public AugmentShop(int questId, String name, String descr)
{
super(questId, name, descr);
addFirstTalkId(NPC);
addStartNpc(NPC);
addTalkId(NPC);
}
@Override
public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player)
{
String htmltext = "";
if (event.equalsIgnoreCase("active"))
{
htmltext = "active.htm";
}
else if (event.equalsIgnoreCase("passive"))
{
htmltext = "passive.htm";
}
else if (event.equalsIgnoreCase("chance"))
{
htmltext = "chance.htm";
}
else
{
updateAugment(player, Integer.parseInt(event.substring(0,5)), Integer.parseInt(event.substring(6,10)), Integer.parseInt(event.substring(11,13)));
}
return htmltext;
}
@Override
public String onFirstTalk(L2NpcInstance npc, L2PcInstance player)
{
String htmltext = "";
QuestState qs = player.getQuestState(qn);
if (qs == null)
qs = newQuestState(player);
htmltext = "main.htm";
return htmltext;
}
public static void main(String[] args)
{
new AugmentShop(-1, qn, "AugmentShop");
}
private static void updateAugment(L2PcInstance player, int attributes, int skill, int level)
{
L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null)
{
player.sendMessage("You have to equip a weapon.");
return;
}
if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented())
{
player.sendMessage("The weapon is already augmented.");
return;
}
if (player.getInventory().getInventoryItemCount(ITEM_ID, -1) < ITEM_COUNT)
{
player.sendMessage("You dont have enough item.");
return;
}
Connection con = null;
try
{
player.destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true);
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("REPLACE INTO augmentations VALUES(?,?,?,?)");
statement.setInt(1, item.getObjectId());
statement.setInt(2, attributes*65536+1);
statement.setInt(3, skill);
statement.setInt(4, level);
statement.executeUpdate();
player.sendMessage("Succesfully augmented. You have to relog now.");
statement.close();
}
catch (Exception e)
{
_log.log(Level.SEVERE, "Could not augment item: "+item.getObjectId()+" ", e);
}
finally
{
try
{
/*L2DatabaseFactory.close(con);*/
con.close();
}
catch (Exception e)
{
}
}
}
}