Jump to content
  • 0

Question

14 answers to this question

Recommended Posts

  • 0
Posted (edited)

Omg ... he want Donate NPC.... and he this called "SmartShop" cuz elfo named SmartShop

RLtuC.png

/* 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 by T9Text
  • 0
Posted

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
Posted

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
Posted

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
Posted

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
Posted (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 by Tryskell
  • 0
Posted

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
Posted

 


The values and the stuff must be set in the database. (To bored to code an ingame edit environment)

 

Right :troll:

 

Locked.

Guest
This topic is now closed to further replies.
×
×
  • Create New...