Jump to content

Question

Posted (edited)

Hello guys,

I found a code for l2jserver (to see players inventory items and delete them) and I addapted it to L2jFrozen..So far so good, it's working perfectly but I cant figure out 1 line.

In-game i can use the commands and everything but I can't see the icons.I have installed Icon Parser for interlude but still..

 

Code:

/*
 * Copyright (C) 2004-2014 L2J DataPack
 * 
 * This file is part of L2J DataPack.
 * 
 * L2J DataPack 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 3 of the License, or
 * (at your option) any later version.
 * 
 * L2J DataPack 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, see <http://www.gnu.org/licenses/>.
 */
package com.l2jfrozen.gameserver.handler.admincommandhandlers;

import com.l2jfrozen.gameserver.cache.HtmCache;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.L2Character;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.util.Util;

/**
 * This class handles following admin commands:
 * <ul>
 * <li>show_ivetory</li>
 * <li>delete_item</li>
 * </ul>
 * @author Zealar
 */
public class AdminInventory implements IAdminCommandHandler
{
 private static final String[] ADMIN_COMMANDS =
 {
  "admin_show_inventory",
  "admin_delete_item"
 };
 
 @Override
 public boolean useAdminCommand(String command, L2PcInstance activeChar)
 {
  if ((activeChar.getTarget() == null))
  {
   activeChar.sendMessage("Select a target");
   return false;
  }
  
  if (!(activeChar.getTarget() instanceof L2Character))
  {
   activeChar.sendMessage("Target need to be player");
   return false;
  }
  
  L2PcInstance player = activeChar.getTarget().getActingPlayer();
  
  if (command.startsWith(ADMIN_COMMANDS[0]))
  {
   if (command.length() > ADMIN_COMMANDS[0].length())
   {
    String com = command.substring(ADMIN_COMMANDS[0].length() + 1);
    if (Util.isAlphaNumeric(com))
    {
     showItemsPage(activeChar, Integer.parseInt(com));
    }
   }
   
   else
   {
    showItemsPage(activeChar, 0);
   }
  }
  else if (command.contains(ADMIN_COMMANDS[1]))
  {
   String val = command.substring(ADMIN_COMMANDS[1].length() + 1);
   
   player.destroyItem("GM Destroy", Integer.parseInt(val), player.getInventory().getItemByObjectId(Integer.parseInt(val)).getCount(), null, true);
   showItemsPage(activeChar, 0);
  }
  
  return true;
 }
 
 private void showItemsPage(L2PcInstance activeChar, int page)
 {
  final L2PcInstance target = activeChar.getTarget().getActingPlayer();
  
  final L2ItemInstance[] items = target.getInventory().getItems();
  
  int maxItemsPerPage = 10;
  int maxPages = items.length / maxItemsPerPage;
  if (items.length > (maxItemsPerPage * maxPages))
  {
   maxPages++;
  }
  
  if (page > maxPages)
  {
   page = maxPages;
  }
  
  int itemsStart = maxItemsPerPage * page;
  int itemsEnd = items.length;
  if ((itemsEnd - itemsStart) > maxItemsPerPage)
  {
   itemsEnd = itemsStart + maxItemsPerPage;
  }
  
  final NpcHtmlMessage adminReply = new NpcHtmlMessage(itemsEnd);
  adminReply.setFile(HtmCache.getInstance().getHtm("data/html/admin/inventory.htm"));
  adminReply.replace("%PLAYER_NAME%", target.getName());
  
  StringBuilder sbPages = new StringBuilder();
  for (int x = 0; x < maxPages; x++)
  {
   int pagenr = x + 1;
   sbPages.append("<td><button value=\"" + String.valueOf(pagenr) + "\" action=\"bypass -h admin_show_inventory " + String.valueOf(x) + "\" width=20 height=20 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
  }
  
  adminReply.replace("%PAGES%", sbPages.toString());
  
  StringBuilder sbItems = new StringBuilder();
  
  for (int i = itemsStart; i < itemsEnd; i++)
  {
   sbItems.append("<tr><td><img src=\"" + items[i].getItem().getIcon() + "\" width=32 height=32></td>");
   sbItems.append("<td width=60>" + items[i].getName() + "</td>");
   sbItems.append("<td><button action=\"bypass -h admin_delete_item " + String.valueOf(items[i].getObjectId()) + "\" width=16 height=16 back=\"L2UI_ct1.Button_DF_Delete\" fore=\"L2UI_ct1.Button_DF_Delete\">" + "</td></tr>");
  }
  
  adminReply.replace("%ITEMS%", sbItems.toString());
  
  activeChar.sendPacket(adminReply);
 }
 
 @Override
 public String[] getAdminCommandList()
 {
  return ADMIN_COMMANDS;
 }
} 

FIrst error is that i changed this : if (Util.isDigit(com)) to this : if (Util.isAlphaNumeric(com)) 

And i can't see the number of items in inventory

 

And the other one is here,

 

ISDjkq5.png

Edited by criss22

14 answers to this question

Recommended Posts

  • 0
Posted (edited)

Missing method getIcon()

What it does?

Geticon will show you all icons in server but you must add all icons in your sql..

https://pastebin.com/GSMmwpf6

Edited by Reborn12
  • 0
Posted (edited)

If you are using reborn's example then you have to write

 

IconTable.getIcon(items.getItemId())

Edited by melron
  • 0
Posted

Dude get real... Reborn12 posted a code. And I'm saying "if you are using this one then you have to replace your error line with my example"

  • 0
Posted

 

the Problem is this line

sbItems.append("<tr><td><img src=\"" + items[i].getItem().getIcon() + "\" width=32 height=32></td>");
			

 

  1. Open the file named L2Item.java
  2. Somewhere add the following method
public String getIcon()
{
     return IconTable.getIcon(getItemId());
}

now, if you really added the above code you should not have again this error

  • 0
Posted (edited)

Hey..it`s working....special THX all. now..i can't see Delete button (is black) and pages (Still black icon)

i get error in Gameserver about HTM.

here it`s code:

 

======================

WARN  missing html page <html>

=======================

<html>

<body>
<title>Inventory : %PLAYER_NAME%</title>
<center>
<table width=270>
<tr>
 %PAGES%
</tr>
</table>
</center>
<br>
<table width=270>
 %ITEMS%
</table>
</body>
</html>
 
I make HTM file in `data/htm/admin` folder 
Edited by criss22

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...