Jump to content

Recommended Posts

Posted

Core:

Index: java/com/l2jserver/communityserver/communityboard/boards/TopBoard.java

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

--- java/com/l2jserver/communityserver/communityboard/boards/TopBoard.java (revision 631)

+++ java/com/l2jserver/communityserver/communityboard/boards/TopBoard.java (working copy)

@@ -16,9 +16,12 @@

 

import java.util.StringTokenizer;

 

+import javolution.text.TextBuilder;

+

import com.l2jserver.communityserver.cache.HtmCache;

import com.l2jserver.communityserver.communityboard.CommunityBoard;

import com.l2jserver.communityserver.communityboard.CommunityBoardManager;

+import com.l2jserver.communityserver.model.PlayerList;

 

public class TopBoard extends CommunityBoard

{

@@ -42,6 +45,10 @@

}

if (file.isEmpty())

content = "<html><body><br><br><center>Error: no file name </center></body></html>";

+ else if (file.equals("top_pk"))

+ content = top10pk();

+ else if (file.equals("top_pvp"))

+ content = top10pvp();

else

content = HtmCache.getInstance().getHtm(this.getCommunityBoardManager().getSQLDPId(),"html/" + file);

if (content == null)

@@ -50,6 +57,26 @@

super.send(playerObjId, content);

}

 

+ public String top10pk() {

+ PlayerList pl = new PlayerList(0);

+ String content = HtmCache.getInstance().getHtm("cb_data/staticfiles/html/top-players.htm");

+ //content = content.replaceAll("%Link%","top_pk");

+ content = content.replaceAll("%LinkTitle%","Top PK");

+ content = content.replaceAll("%Title%","<font color=\"LEVEL\">[Top PK]</font>");

+ content = content.replaceAll("%PlayerList%", pl.loadPlayerList());

+ return content;

+ }

+

+ public String top10pvp() {

+ PlayerList pl = new PlayerList(1);

+ String content = HtmCache.getInstance().getHtm("cb_data/staticfiles/html/top-players.htm");

+ //content = content.replaceAll("%Link%","top_pvp");

+ content = content.replaceAll("%LinkTitle%","Top PvP");

+ content = content.replaceAll("%Title%","<font color=\"LEVEL\">[Top PvP]</font>");

+ content = content.replaceAll("%PlayerList%", pl.loadPlayerList());

+ return content;

+ }

+

@Override

public final void parseWrite(final int playerObjId, final String ar1, final String ar2, final String ar3, final String ar4, final String ar5)

{

Index: java/com/l2jserver/communityserver/model/PlayerList.java

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

--- java/com/l2jserver/communityserver/model/PlayerList.java (revision 0)

+++ java/com/l2jserver/communityserver/model/PlayerList.java (revision 0)

@@ -0,0 +1,206 @@

+package com.l2jserver.communityserver.model;

+

+import java.sql.PreparedStatement;

+import java.sql.ResultSet;

+import java.util.Map;

+import java.util.logging.Logger;

+

+import com.l2jserver.communityserver.L2DatabaseFactory;

+

+import javolution.text.TextBuilder;

+import javolution.util.FastMap;

+

+public class PlayerList

+{

+ private static Logger _log = Logger.getLogger(PlayerList.class.getName());

+

+ private int _posId;

+ private TextBuilder _playerList = new TextBuilder();

+

+

+ public PlayerList(int type)

+ {

+ loadFromDB(type);

+ }

+

+ private void loadFromDB(int type) {

+ java.sql.Connection con = null;

+ String top;

+ if (type==0)

+ top = "pkkills";

+ else

+ top = "pvpkills";

+ try

+ {

+ _posId = 0;

+ con = L2DatabaseFactory.getInstance().getConnection();

+ PreparedStatement statement = con.prepareStatement("SELECT c.char_name, c.base_class, c."+top+", c.level, c.online, cl.clan_name, cl.ally_name FROM characters c LEFT JOIN clan_data cl ON cl.clan_id=c.clanid WHERE c.accesslevel=0 ORDER BY c."+top+" DESC, c.char_name ASC LIMIT 10");

+

+ ResultSet result = statement.executeQuery();

+

+ while (result.next())

+ {

+ boolean status = false;

+ _posId = _posId + 1;

+

+ if(result.getInt("online") == 1)

+ status = true;

+

+ addPlayerToList(_posId, result.getString("char_name"), result.getString("clan_name"), result.getString("ally_name"), result.getInt("base_class"), result.getInt("level"), result.getInt(top), status);

+ }

+

+ result.close();

+ statement.close();

+ }

+ catch (Exception e)

+ {

+ e.printStackTrace();

+ }

+ finally

+ {

+ try

+ {

+ con.close();

+ }

+ catch (Exception e)

+ {

+ }

+ }

+ }

+

+ public String loadPlayerList()

+ {

+ return _playerList.toString();

+ }

+

+ private void addPlayerToList(int objId, String name, String clan, String alliance, int ChrClass, int level, int points, boolean isOnline)

+ {

+ _playerList.append("<table border=0 cellspacing=0 cellpadding=2 width=750>");

+ _playerList.append("<tr>");

+ _playerList.append("<td FIXWIDTH=10></td>");

+ _playerList.append("<td FIXWIDTH=40>"+objId+".</td>");

+ _playerList.append("<td FIXWIDTH=150>"+name+"</td>");

+ _playerList.append("<td FIXWIDTH=80>"+level+"</td>");

+ _playerList.append("<td FIXWIDTH=160>"+className(ChrClass)+"</td>");

+ _playerList.append("<td FIXWIDTH=160>"+clan+"</td>");

+ _playerList.append("<td FIXWIDTH=160>"+alliance+"</td>");

+ _playerList.append("<td FIXWIDTH=60>"+points+"</td>");

+ _playerList.append("<td FIXWIDTH=90>"+((isOnline) ? "<font color=99FF00>Online</font>" : "<font color=CC0000>Offline</font>")+"</td>");

+ _playerList.append("<td FIXWIDTH=5></td>");

+ _playerList.append("</tr>");

+ _playerList.append("</table>");

+ _playerList.append("<img src=\"L2UI.Squaregray\" width=\"740\" height=\"1\">");

+ }

+

+ private final String className(int classId)

+ {

+ Map<Integer, String> classList;

+ classList = new FastMap<Integer, String>();

+ classList.put(0, "Fighter");

+ classList.put(1, "Warrior");

+ classList.put(2, "Gladiator");

+ classList.put(3, "Warlord");

+ classList.put(4, "Knight");

+ classList.put(5, "Paladin");

+ classList.put(6, "Dark Avenger");

+ classList.put(7, "Rogue");

+ classList.put(8, "Treasure Hunter");

+ classList.put(9, "Hawkeye");

+ classList.put(10, "Mage");

+ classList.put(11, "Wizard");

+ classList.put(12, "Sorcerer");

+ classList.put(13, "Necromancer");

+ classList.put(14, "Warlock");

+ classList.put(15, "Cleric");

+ classList.put(16, "Bishop");

+ classList.put(17, "Prophet");

+ classList.put(18, "Elven Fighter");

+ classList.put(19, "Elven Knight");

+ classList.put(20, "Temple Knight");

+ classList.put(21, "Swordsinger");

+ classList.put(22, "Elven Scout");

+ classList.put(23, "Plains Walker");

+ classList.put(24, "Silver Ranger");

+ classList.put(25, "Elven Mage");

+ classList.put(26, "Elven Wizard");

+ classList.put(27, "Spellsinger");

+ classList.put(28, "Elemental Summoner");

+ classList.put(29, "Oracle");

+ classList.put(30, "Elder");

+ classList.put(31, "Dark Fighter");

+ classList.put(32, "Palus Knightr");

+ classList.put(33, "Shillien Knight");

+ classList.put(34, "Bladedancer");

+ classList.put(35, "Assasin");

+ classList.put(36, "Abyss Walker");

+ classList.put(37, "Phantom Ranger");

+ classList.put(38, "Dark Mage");

+ classList.put(39, "Dark Wizard");

+ classList.put(40, "Spellhowler");

+ classList.put(41, "Phantom Summoner");

+ classList.put(42, "Shillien Oracle");

+ classList.put(43, "Shilien Elder");

+ classList.put(44, "Orc Fighter");

+ classList.put(45, "Orc Raider");

+ classList.put(46, "Destroyer");

+ classList.put(47, "Orc Monk");

+ classList.put(48, "Tyrant");

+ classList.put(49, "Orc Mage");

+ classList.put(50, "Orc Shaman");

+ classList.put(51, "Overlord");

+ classList.put(52, "Warcryer");

+ classList.put(53, "Dwarven Fighter");

+ classList.put(54, "Scavenger");

+ classList.put(55, "Bounty Hunter");

+ classList.put(56, "Artisan");

+ classList.put(57, "Warsmith");

+ classList.put(88, "Duelist");

+ classList.put(89, "Dreadnought");

+ classList.put(90, "Phoenix Knight");

+ classList.put(91, "Hell Knight");

+ classList.put(92, "Sagittarius");

+ classList.put(93, "Adventurer");

+ classList.put(94, "Archmage");

+ classList.put(95, "Soultaker");

+ classList.put(96, "Arcana Lord");

+ classList.put(97, "Cardinal");

+ classList.put(98, "Hierophant");

+ classList.put(99, "Evas Templar");

+ classList.put(100, "Sword Muse");

+ classList.put(101, "Wind Rider");

+ classList.put(102, "Moonlight Sentinel");

+ classList.put(103, "Mystic Muse");

+ classList.put(104, "Elemental Master");

+ classList.put(105, "Evas Saint");

+ classList.put(106, "Shillien Templar");

+ classList.put(107, "Spectral Dancer");

+ classList.put(108, "Ghost Hunter");

+ classList.put(109, "Ghost Sentinel");

+ classList.put(110, "Storm Screamer");

+ classList.put(111, "Spectral Master");

+ classList.put(112, "Shillien Saint");

+ classList.put(113, "Titan");

+ classList.put(114, "Grand Khavatari");

+ classList.put(115, "Dominator");

+ classList.put(116, "Doomcryer");

+ classList.put(117, "Fortune Seeker");

+ classList.put(118, "Maestro");

+ classList.put(123, "Male Soldier");

+ classList.put(124, "Female Soldier");

+ classList.put(125, "Trooper");

+ classList.put(126, "Warder");

+ classList.put(127, "Berserker");

+ classList.put(128, "Male Soulbreaker");

+ classList.put(129, "Female Soulbreaker");

+ classList.put(130, "Arbalester");

+ classList.put(131, "Doombringer");

+ classList.put(132, "Male Soulhound");

+ classList.put(133, "Female Soulhound");

+ classList.put(134, "Trickster");

+ classList.put(135, "Inspector");

+ classList.put(136, "Judicator");

+

+ return classList.get(classId);

+ }

+}

 

DP:

Index: cb_data/staticfiles/html/top-players.htm

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

--- cb_data/staticfiles/html/top-players.htm (revision 0)

+++ cb_data/staticfiles/html/top-players.htm (revision 0)

@@ -0,0 +1,36 @@

+<html>

+

+

+<body>

+

+<center><br><br> <br1><br1>

+

+<table border=0 cellspacing=0 cellpadding=0>

+<tr>

+<td FIXWIDTH=15> </td>

+<td width=750 height=30 align=left><a action="bypass _bbshome"> LOCAL COMMUNITY </a> > %LinkTitle%</td>

+</tr></table>

+%Title%

+<br>

+<table border=0 cellspacing=0 cellpadding=2 bgcolor=5A5A5A width=750>

+<tr>

+

+<td FIXWIDTH=10></td>

+<td FIXWIDTH=40>#</td>

+<td FIXWIDTH=150>Name</td>

+<td FIXWIDTH=80>Lv</td>

+<td FIXWIDTH=160>Class</td>

+<td FIXWIDTH=160>Clan</td>

+<td FIXWIDTH=160>Ally</td>

+<td FIXWIDTH=60>Points</td>

+<td FIXWIDTH=90>Status</td>

+<td FIXWIDTH=5></td>

+</tr>

+</table>

+

+%PlayerList%

+

+<br> <br> <br>

+</center>

+</body>

+</html>

Index: cb_data/top/bartz/html/index.htm

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

--- cb_data/top/bartz/html/index.htm (revision 631)

+++ cb_data/top/bartz/html/index.htm (working copy)

@@ -80,6 +80,37 @@

<tr><td width=755><img src="l2ui.squaregray" width="750" height="1"></td></tr>

</table>

  <br>

+

+<table border=0 cellspacing=0 cellpadding=2>

+<tr>

+<td FIXWIDTH=100 align=right valign=top><img src="l2ui.bbs_folder" width=32 height=32></td>

+<td FIXWIDTH=410 align=left valign=top><a action="bypass _bbshome;top_pvp">Top PvP</a><br1>

+

+<font color="AAAAAA">Top PvP players</font></td>

+<td FIXWIDTH=95 align=center valign=top>10</td>

+<td FIXWIDTH=150 align=center valign=top>mochitto</td>

+</tr>

+</table>

+<table border=0 cellspacing=0 cellpadding=0>

+<tr><td width=755><img src="l2ui.squaregray" width="750" height="1"></td></tr>

+</table>

+ <br>

+

+ <table border=0 cellspacing=0 cellpadding=2>

+<tr>

+<td FIXWIDTH=100 align=right valign=top><img src="l2ui.bbs_folder" width=32 height=32></td>

+<td FIXWIDTH=410 align=left valign=top><a action="bypass _bbshome;top_pk">Top PK</a><br1>

+

+<font color="AAAAAA">Top PK players</font></td>

+<td FIXWIDTH=95 align=center valign=top>10</td>

+<td FIXWIDTH=150 align=center valign=top>mochitto</td>

+</tr>

+</table>

+<table border=0 cellspacing=0 cellpadding=0>

+<tr><td width=755><img src="l2ui.squaregray" width="750" height="1"></td></tr>

+</table>

+ <br>

<br>

 

<font color="LEVEL">L2J Community Board.</font>

Credits : L2j-Forum

Patch is for epilogue

Posted

That is realy cool !

I did not see that thing before thank you.

I will try adapt for interlude :D

 

Do faster :D becouse i am trying now, and nothing xD

Posted

Do faster :D becouse i am trying now, and nothing xD

 

If You had errors, you can show us them, if you expect help.

Posted
      if (file.isEmpty())

          content = "<html><body><br><br><center>Error: no file name </center></body></html>";

+      else if (file.equals("top_pk"))

+        content = top10pk();

+      else if (file.equals("top_pvp"))

+        content = top10pvp();

      else

          content = HtmCache.getInstance().getHtm(this.getCommunityBoardManager().getSQLDPId(),"html/" + file);

      if (content == null)

@@ -50,6 +57,26 @@

      super.send(playerObjId, content);

    }

 

+  public String top10pk() {

+      PlayerList pl = new PlayerList(0);

+      String content = HtmCache.getInstance().getHtm("cb_data/staticfiles/html/top-players.htm");

+      //content = content.replaceAll("%Link%","top_pk");

+      content = content.replaceAll("%LinkTitle%","Top PK");

+      content = content.replaceAll("%Title%","<font color=\"LEVEL\">[Top PK]</font>");

+      content = content.replaceAll("%PlayerList%", pl.loadPlayerList());

+      return content;

+  }

+  public String top10pvp() {

+      PlayerList pl = new PlayerList(1);

+      String content = HtmCache.getInstance().getHtm("cb_data/staticfiles/html/top-players.htm");

+      //content = content.replaceAll("%Link%","top_pvp");

+      content = content.replaceAll("%LinkTitle%","Top PvP");

+      content = content.replaceAll("%Title%","<font color=\"LEVEL\">[Top PvP]</font>");

+      content = content.replaceAll("%PlayerList%", pl.loadPlayerList());

+      return content;

+  }

 

this part do not fit i my community board :) it's very diffrent codes.

Posted

if (file.isEmpty())
          content = "<html><body><br><br><center>Error: no file name </center></body></html>";

no these lines

 content = content.replaceAll("%LinkTitle%","Top PK");

nothing like this anywhere... I think for il need to do full rework becouse in mine files is like

			htmlCode.append("<table>");

		htmlCode.append(trOpen);
		htmlCode.append("<td align=left valign=top>Server Restarted: " + GameServer.dateTimeServerStarted.getTime() + tdClose);
		htmlCode.append(trClose);

		htmlCode.append("</table>");

		htmlCode.append("<table>");
		htmlCode.append(trOpen);
		htmlCode.append("<td><img src=\"sek.cbui355\" width=600 height=1><br></td>");
		htmlCode.append(trClose);

 

at all no word like content

Posted

if (file.isEmpty())
          content = "<html><body><br><br><center>Error: no file name </center></body></html>";

no these lines

 content = content.replaceAll("%LinkTitle%","Top PK");

nothing like this anywhere... I think for il need to do full rework becouse in mine files is like

			htmlCode.append("<table>");

		htmlCode.append(trOpen);
		htmlCode.append("<td align=left valign=top>Server Restarted: " + GameServer.dateTimeServerStarted.getTime() + tdClose);
		htmlCode.append(trClose);

		htmlCode.append("</table>");

		htmlCode.append("<table>");
		htmlCode.append(trOpen);
		htmlCode.append("<td><img src=\"sek.cbui355\" width=600 height=1><br></td>");
		htmlCode.append(trClose);

 

at all no word like content

You can replace online players with top pvp/pk ..

Posted

maybe u can explain a little bit more? how to do that.

 

atleast i don't know where tu put these

+      else if (file.equals("top_pk"))

+        content = top10pk();

+      else if (file.equals("top_pvp"))

+        content = top10pvp();

about others i don't talk at all...

Guest
This topic is now closed to further replies.



  • Posts

    • We can help your Telegram group or channel grow fast with real, targeted Telegram members, safely and efficiently.   Our Telegram Member Add service lets you add members to Telegram group or channel from real, active communities — not bots or fakes.   With this Telegram group growth service, you’ll see results within hours, backed by clear reporting and safe automation.   ✅ What We Offer   • Done-for-you Telegram Member Add campaigns (Groups · Channels) • Targeted Telegram members from real, active users • Fast growth — up to 10K members in 24 hours • English-speaking or regional audiences (US · UK · EU) • Fully managed Telegram channel growth service with reports & analytics   💡 Why Choose Us   We don’t use spam or fake accounts. Our process safely adds members to your Telegram group or channel through verified multi-account setups, proxy rotation, and opt-out compliance. This ensures lasting growth and minimizes churn. Every campaign is managed by experts using tested Telegram infrastructure and growth systems. We also recommend combining Member Add with Telegram Mass DM for better engagement and retention after join.   🧩 Works Best For   • Businesses or communities launching new Telegram channels • Crypto, SaaS, and marketing projects needing visibility • Influencers and agencies growing multiple Telegram groups • Anyone seeking a reliable Telegram group growth service with real members 📩 To Get More Information   Telegram : @TeleLoopPulse   Website : https://telegramgrowthstudio.com/telegram-member-add.html
    • well,its SharedCreatureData.h problem.   /* 0398 */ //WCHAR m_sResurrectSpellerName[25];   this variable will cause L2server.exe crash...  
    • Custom High Five server L2insolence will open 2025-10-17 21:00 GMT+2 ! ! ! Web site: http://www.l2insolence.eu All info updates on Discord: https://discord.gg/duMjnj3y9A Last wipe was more then 1 year ago. We have custom skill, farm zones, materials for items to buy. Custom wepons, armor, jewels and more. All items in game have own stats. With custom looks. Glowing etc. Rates XP, SP: 25x Spoil and Drop: 10x Adena: 20x Server Hard Farm Enchantment Safe enchant Weapon: +20099 Safe enchant Armor: +20099 Max enchant Weapon: +20099 Max enchant Armor: +20099 Normal scrolls: 100% Blessed scrolls: 100% You can use scrolls or item enchant NPC to make +++ abd life beter. NPC Buffer There's an NPC buffer in all of our main towns: Aden, Giran and Goddard. It supplies Prophet Buffs, Songs and Dances for a small fee. Include all buff. We have custom self buffs learned with npc with custom stats. Global Gatekeeper GM Shop with normal items and custom ones, vote NPC, Event NPC, item upgrader NPC. Raid Bosses, every zone have its own boss and drops for rare mats. Olympiad The olympiad is ongoing every two weeks. Meaning if you become a hero you will have your hero status for two weeks. And hero have own custom stats on items.
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock