0 T9Text Posted August 5, 2015 Posted August 5, 2015 (edited) Omg ... he want Donate NPC.... and he this called "SmartShop" cuz elfo named SmartShop /* This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */ package com.l2jfrozen.gameserver.model.actor.instance; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.StringTokenizer; import com.l2jfrozen.gameserver.ai.CtrlIntention; import com.l2jfrozen.gameserver.datatables.sql.ItemTable; import com.l2jfrozen.gameserver.network.SystemMessageId; import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed; import com.l2jfrozen.gameserver.network.serverpackets.CharInfo; import com.l2jfrozen.gameserver.network.serverpackets.InventoryUpdate; import com.l2jfrozen.gameserver.network.serverpackets.MyTargetSelected; import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage; import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage; import com.l2jfrozen.gameserver.network.serverpackets.UserInfo; import com.l2jfrozen.gameserver.network.serverpackets.ValidateLocation; import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance; import com.l2jfrozen.gameserver.templates.L2NpcTemplate; import com.l2jfrozen.util.CloseUtil; import com.l2jfrozen.util.database.L2DatabaseFactory; import javolution.text.TextBuilder; /** * * @author Elfocrash * */ public class L2SmartMultisellInstance extends L2FolkInstance { public L2SmartMultisellInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(L2PcInstance player, String command) { if(player == null) { return; } if(command.startsWith("buyItem ")) { String itemId = null; StringTokenizer st = new StringTokenizer(command, " "); while (st.hasMoreTokens()) { itemId = st.nextToken(); } int id = Integer.parseInt(itemId); if(player.getInventory().getItemByItemId(getItemCostId(id)).getCount() >= getItemCostCount(id)) { player.getInventory().destroyItemByItemId("delete", getItemCostId(id), getItemCostCount(id), player, null); L2ItemInstance item = null; item = player.getInventory().addItem("Elfo", getItemId(id), 1, null, null); item.setEnchantLevel(getItemEnchant(id)); // send packets InventoryUpdate iu = new InventoryUpdate(); iu.addItem(item); player.sendPacket(iu); player.broadcastPacket(new CharInfo(player)); player.sendPacket(new UserInfo(player)); SystemMessage sm = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2); sm.addItemName(item.getItemId()); sm.addNumber(1); player.sendPacket(sm); iu = null; } else { player.sendMessage("You don't have enough items in order to buy this one"); return; } } } @Override public void onAction(L2PcInstance player) { if (!canTarget(player)) { return; } if (this != player.getTarget()) { player.setTarget(this); player.sendPacket(new MyTargetSelected(getObjectId(), 0)); player.sendPacket(new ValidateLocation(this)); } else if (!canInteract(player)) { player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this); } else { showHtmlWindow(player); } player.sendPacket(new ActionFailed()); } private void showHtmlWindow(L2PcInstance activeChar) { NpcHtmlMessage nhm = new NpcHtmlMessage(5); TextBuilder tb = new TextBuilder(""); tb.append("<html><head><title>Smart Shop</title></head><body>"); tb.append("<center>"); tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">"); tb.append("<tr>"); tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>"); tb.append("<td valign=\"top\"><font color=\"FF6600\">Smart Shop</font>"); tb.append("<br1><font color=\"00FF00\">"+activeChar.getName()+"</font>, Here you can buy Enchanted Gear.</td>"); tb.append("</tr>"); tb.append("</table>"); tb.append("</center>"); tb.append("<center>"); for(int i = 1; i<= getRowsCount(); i++) tb.append("<br><a action=\"bypass -h npc_" + getObjectId() + "_buyItem " + i + "\">Item name: " + ItemTable.getInstance().getTemplate(getItemId(i)).getName() + " Enchant: +"+ getItemEnchant(i) + " Cost: " + getItemCostCount(i) + " " + ItemTable.getInstance().getTemplate(getItemCostId(i)).getName() + "</a>"); tb.append("</center>"); tb.append("<center>"); tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32 align=center>"); tb.append("<font color=\"FF6600\">By Elfocrash</font>"); tb.append("</center>"); tb.append("</body></html>"); nhm.setHtml(tb.toString()); activeChar.sendPacket(nhm); activeChar.sendPacket(new ActionFailed()); } private int getRowsCount() { int rows = 0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT * FROM smart_shop"); ResultSet rset = statement.executeQuery(); while (rset.next()) { rows++; } rset.close(); statement.close(); } catch(Exception e) { e.printStackTrace(); }finally{ CloseUtil.close(con); con = null; } return rows; } private int getItemId(int itemId) { int itemIdd = 0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT item_id FROM smart_shop WHERE id=?"); statement.setInt(1, itemId); ResultSet rset = statement.executeQuery(); while (rset.next()) { itemIdd = rset.getInt("item_id"); } rset.close(); statement.close(); } catch(Exception e) { e.printStackTrace(); }finally{ CloseUtil.close(con); con = null; } return itemIdd; } private int getItemCostId(int costid) { int costIt = 0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT cost_item_id FROM smart_shop WHERE id=?"); statement.setInt(1, costid); ResultSet rset = statement.executeQuery(); while (rset.next()) { costIt = rset.getInt("cost_item_id"); } rset.close(); statement.close(); } catch(Exception e) { e.printStackTrace(); }finally{ CloseUtil.close(con); con = null; } return costIt; } private int getItemCostCount(int costid) { int costIt = 0; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT cost_item_count FROM smart_shop WHERE id=?"); statement.setInt(1, costid); ResultSet rset = statement.executeQuery(); while (rset.next()) { costIt = rset.getInt("cost_item_count"); } rset.close(); statement.close(); } catch(Exception e) { e.printStackTrace(); }finally{ CloseUtil.close(con); con = null; } return costIt; } private int getItemEnchant(int id) { int itemEnch = 0; Connection con = null; PreparedStatement statement = null; try { con = L2DatabaseFactory.getInstance().getConnection(); statement = con.prepareStatement("SELECT item_enchant FROM smart_shop WHERE id=?"); statement.setInt(1, id); ResultSet rset = statement.executeQuery(); while (rset.next()) { itemEnch = rset.getInt("item_enchant"); } rset.close(); statement.close(); } catch(Exception e) { e.printStackTrace(); }finally{ CloseUtil.close(con); con = null; } return itemEnch; } } Edited August 5, 2015 by T9Text
0 Kelrzher Posted August 5, 2015 Posted August 5, 2015 Look For L2jAcis SmartShop!!! explain how it works maybe we can code it
0 SweeTs Posted August 5, 2015 Posted August 5, 2015 SmartShop - you talk to the npc and it's giving you everything you have in your mind. Sort of a Witcher, your wish list comes true.
0 Kelrzher Posted August 5, 2015 Posted August 5, 2015 SmartShop - you talk to the npc and it's giving you everything you have in your mind. Sort of a Witcher, your wish list comes true. what the.. how i suppose to make that when i dont know what they need are you trolling ? :troll:
0 IoNuTzU01 Posted August 5, 2015 Author Posted August 5, 2015 I need a Donation Npc with Donate Coin. Example : For +16 weapon required donate coin,but i can't make to give from a ingredient a weapons/armors ++. This is all,Help me Tnk's.
0 Tessa Posted August 5, 2015 Posted August 5, 2015 I thought "Smart Shop" can be achieved by adding a class and / or mage / fighter detection so the shop offers only the proper equipment. :lol: For example: You are Hawkeye, so the shop shows you only bows, arrows, soul shots etc. I've done something like that in the past, using python... unfortunately some people think that Java's syntax is better than Python and writing 50 lines of code instead of 20 is something cool, so Jython is gone! :P
0 T9Text Posted August 6, 2015 Posted August 6, 2015 So, actually it's not a "Smart Shop" doesn't it? Just Elfo Name it "Smart Shop" :P
0 Tryskell Posted August 6, 2015 Posted August 6, 2015 (edited) A SQL table for 4 static entries ? No static HTM ? A connection each time you want the price, itemid, etc ? Omg where is the respect. Don't use thisssssssss, I beg you. Do a static int[][] array, one static HTM and you can erase 80% of the code. Even the overriden onAction is useless. It's probably 2011 Elfocrash. 2015 Elfocrash would probably facepalm. Edited August 6, 2015 by Tryskell
0 T9Text Posted August 7, 2015 Posted August 7, 2015 A SQL table for 4 static entries ? No static HTM ? A connection each time you want the price, itemid, etc ? Omg where is the respect. Don't use thisssssssss, I beg you. Do a static int[][] array, one static HTM and you can erase 80% of the code. Even the overriden onAction is useless. It's probably 2011 Elfocrash. 2015 Elfocrash would probably facepalm. [share]Smart Enchanted Item Shop « on: January 17, 2013, 05:26:55 PM »
0 Tryskell Posted August 7, 2015 Posted August 7, 2015 (edited) :y u no?: :okey: Shit happens when you code for L2JBroken. Edited August 7, 2015 by Tryskell
0 SweeTs Posted August 7, 2015 Posted August 7, 2015 The values and the stuff must be set in the database. (To bored to code an ingame edit environment) Right :troll: Locked.
Question
IoNuTzU01
Look For L2jAcis SmartShop!!!
14 answers to this question
Recommended Posts