L2JLisvus

Would you like to react to this message? Create an account in a few clicks or log in to continue.

2 posters

    [Share] Custom Drop View Window

    improvise
    improvise


    Posts : 144
    Join date : 2017-07-21

    [Share] Custom Drop View Window Empty [Share] Custom Drop View Window

    Post  improvise 27th June 2019, 11:10

    [Share] Custom Drop View Window Drop_v10

    Custom Shift+Click Drop View Window

    To enable this option set AltGameViewNpc = True in AltSettings.properties

    In gameserver\model\actor\instance\L2NpcInstance.java find and replace:

    Code:

          else if (Config.ALT_GAME_VIEWNPC)
          {
             NpcHtmlMessage html = new NpcHtmlMessage(0);
             StringBuilder html1 = new StringBuilder("<html><body><center>");
             
             html1.append("<table border=1 width=\"100%\">");
             html1.append("<tr><td>Max.HP</td><td>" + getMaxHp() + "</td><td>P.Atk.</td><td>" + getPAtk(null) + "</td><td>P.Def</td><td>" + getPDef(null) + "</td></tr>");
             html1.append("<tr><td>Max.MP</td><td>" + getMaxMp() + "</td><td>M.Atk.</td><td>" + getMAtk(null, null) + "</td><td>M.Def.</td><td>" + getMDef(null, null) + "</td></tr>");
             html1.append("</table><br>");
             html1.append("<table border=1 width=\"100%\">");
             html1.append("<tr><td><center>Item Name</center></td><td><center>Chance</center></td></tr>");

               if (getTemplate().getDropData() != null)
             {
                       for (L2DropCategory cat : getTemplate().getDropData())
                       for (L2DropData drop : cat.getAllDrops())
                   if (cat.getCategoryType() >= 0)
                       {
                       String name = ItemTable.getInstance().getTemplate(drop.getItemId()).getName();
                   html1.append("<tr><td><font color=\"FFCF48\">" + name + "</font></td>" + "<td><center>" + (drop.getChance() >= 10 ? (double)drop.getChance() / 10000 : "0.001") + "%</center></td></tr>");
                   }
                   for (L2DropCategory cat : getTemplate().getDropData())
                       for (L2DropData drop : cat.getAllDrops())
                   if (cat.getCategoryType() < 0)
                       {
                           String name = ItemTable.getInstance().getTemplate(drop.getItemId()).getName();
                      html1.append("<tr><td><font color=\"42AAFF\">" + name + "</font></td>" + "<td><center>" + (double)drop.getChance() / 10000 + "%</center></td></tr>");
                   }
             }
             
                html1.append("</table>");         
             html1.append("</center></body></html>");
             
             html.setHtml(html1.toString());
             player.sendPacket(html);
          }
     

    To prevent issues with too long item names and symbols in dyes names.

    Code:
    UPDATE etcitem SET name = REPLACE (name, '<', '(');
    UPDATE etcitem SET name = REPLACE (name, '>', ')');
    UPDATE etcitem SET name = REPLACE (name, 'Compressed Package(100%)', '(Packed)');
    UPDATE etcitem SET name = REPLACE (name, 'Compressed Package (100%)', '(Packed)');
    UPDATE etcitem SET name = REPLACE (name, 'Greater Blessed', 'Gr.Blessed');
    UPDATE etcitem SET name = REPLACE (name, 'Greater Spiritshot', 'Gr.Spiritshot');
    UPDATE etcitem SET name = REPLACE (name, 'Greater Soulshot', 'Gr.Soulshot');

    Optionally you can round values (for mid/high rate servers)

    Code:
    UPDATE droplist SET chance = ROUND(chance,-3) WHERE chance > 100000;
    UPDATE droplist SET chance = ROUND(chance,-2) WHERE chance BETWEEN 1000 AND 100000;
    UPDATE droplist SET chance = ROUND(chance,-1) WHERE chance BETWEEN 100 AND 1000;

    Tested with build 713.


    Last edited by improvise on 14th February 2020, 07:43; edited 10 times in total

    Karakan likes this post

    SCRASH0
    SCRASH0


    Posts : 203
    Join date : 2019-03-07

    [Share] Custom Drop View Window Empty Re: [Share] Custom Drop View Window

    Post  SCRASH0 8th August 2019, 02:31


    I did not understand.
    do i have to replace all this here?


    Code:
    else if (Config.ALT_GAME_VIEWNPC)
     {
     NpcHtmlMessage html = new NpcHtmlMessage(0);
     StringBuilder sb = new StringBuilder(1000);
     
     StringUtil.append(sb, "<html><body>");
     StringUtil.append(sb, "<br><center><font color=\"LEVEL\">[Combat Stats]</font></center>");
     StringUtil.append(sb, "<table border=0 width=\"100%\">");
     StringUtil.append(sb, "<tr><td>Max.HP</td><td>" + (int) (getMaxHp() / getStat().calcStat(Stats.MAX_HP, 1, this, null)) + "*" + (int) getStat().calcStat(Stats.MAX_HP, 1, this, null) + "</td><td>Max.MP</td><td>" + getMaxMp() + "</td></tr>");
     StringUtil.append(sb, "<tr><td>P.Atk.</td><td>" + getPAtk(null) + "</td><td>M.Atk.</td><td>" + getMAtk(null, null) + "</td></tr>");
     StringUtil.append(sb, "<tr><td>P.Def.</td><td>" + getPDef(null) + "</td><td>M.Def.</td><td>" + getMDef(null, null) + "</td></tr>");
     StringUtil.append(sb, "<tr><td>Accuracy</td><td>" + getAccuracy() + "</td><td>Evasion</td><td>" + getEvasionRate(null) + "</td></tr>");
     StringUtil.append(sb, "<tr><td>Critical</td><td>" + getCriticalHit(null, null) + "</td><td>Speed</td><td>" + getMoveSpeed() + "</td></tr>");
     StringUtil.append(sb, "<tr><td>Atk.Speed</td><td>" + getPAtkSpd() + "</td><td>Cast.Speed</td><td>" + getMAtkSpd() + "</td></tr>");
     StringUtil.append(sb, "<tr><td>Race</td><td>" + getTemplate().race + "</td><td></td><td></td></tr>");
     StringUtil.append(sb, "</table>");
     
     StringUtil.append(sb, "<br><center><font color=\"LEVEL\">[Basic Stats]</font></center>");
     StringUtil.append(sb, "<table border=0 width=\"100%\">");
     StringUtil.append(sb, "<tr><td>STR</td><td>" + getSTR() + "</td><td>DEX</td><td>" + getDEX() + "</td><td>CON</td><td>" + getCON() + "</td></tr>");
     StringUtil.append(sb, "<tr><td>INT</td><td>" + getINT() + "</td><td>WIT</td><td>" + getWIT() + "</td><td>MEN</td><td>" + getMEN() + "</td></tr>");
     StringUtil.append(sb, "</table>");
     
     StringUtil.append(sb, "<br><center><font color=\"LEVEL\">[Drop Info]</font></center>");
     StringUtil.append(sb, "Rates legend: <font color=\"ff0000\">50%+</font> <font color=\"00ff00\">30%+</font> <font color=\"0000ff\">less than 30%</font>");
     StringUtil.append(sb, "<table border=0 width=\"100%\">");
     
     if (getTemplate().getDropData() != null)
     {
     for (L2DropCategory cat : getTemplate().getDropData())
     {
     for (L2DropData drop : cat.getAllDrops())
     {
     String name = ItemTable.getInstance().getTemplate(drop.getItemId()).getName();
     
     if (drop.getChance() >= 600000)
     {
     StringUtil.append(sb, "<tr><td><font color=\"ff0000\">" + name + "</font></td><td>" + (drop.isQuestDrop() ? "Quest" : (cat.isSweep() ? "Sweep" : "Drop")) + "</td></tr>");
     }
     else if (drop.getChance() >= 300000)
     {
     StringUtil.append(sb, "<tr><td><font color=\"00ff00\">" + name + "</font></td><td>" + (drop.isQuestDrop() ? "Quest" : (cat.isSweep() ? "Sweep" : "Drop")) + "</td></tr>");
     }
     else
     {
     StringUtil.append(sb, "<tr><td><font color=\"0000ff\">" + name + "</font></td><td>" + (drop.isQuestDrop() ? "Quest" : (cat.isSweep() ? "Sweep" : "Drop")) + "</td></tr>");
     }
     }
     }
     }
     
     StringUtil.append(sb, "</table>");
     StringUtil.append(sb, "</body></html>");
     
     html.setHtml(sb.toString());
     player.sendPacket(html);
     }

    why do you put that?

      Current date/time is 19th May 2024, 14:58