[27/05 12:39:34] Could not insert char data: Parameter index out of range (39 > number of parameters, which is 38).java.sql.SQLException: Parameter index out of range (39 > number of parameters, which is 38). at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:81) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:55) at com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1482) at com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1497) at com.mysql.cj.jdbc.ClientPreparedStatement.setLong(ClientPreparedStatement.java:1780) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setLong(HikariProxyPreparedStatement.java) at org.l2jmobius.gameserver.model.actor.Player.createDb(Player.java:6899) at org.l2jmobius.gameserver.model.actor.Player.create(Player.java:1019) at org.l2jmobius.gameserver.network.clientpackets.CharacterCreate.runImpl(CharacterCreate.java:237) at org.l2jmobius.gameserver.network.clientpackets.ClientPacket.run(ClientPacket.java:57) at org.l2jmobius.commons.network.PacketExecutor$PacketRunnable.run(PacketExecutor.java:74) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619) at java.base/java.lang.Thread.run(Thread.java:1447)[27/05 12:39:34] Client: [Account: mateus95 - IP: 127.0.0.1] - Failed running: CharacterCreate ; Cannot invoke "org.l2jmobius.gameserver.model.actor.Player.getMaxHp()" because "newChar" is null[27/05 12:39:34] java.lang.NullPointerException: Cannot invoke "org.l2jmobius.gameserver.model.actor.Player.getMaxHp()" because "newChar" is null at org.l2jmobius.gameserver.network.clientpackets.CharacterCreate.runImpl(CharacterCreate.java:241) at org.l2jmobius.gameserver.network.clientpackets.ClientPacket.run(ClientPacket.java:57) at org.l2jmobius.commons.network.PacketExecutor$PacketRunnable.run(PacketExecutor.java:74) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619) at java.base/java.lang.Thread.run(Thread.java:1447)
From 9839c9798d115b945ceb937c7cb46d62c4faeb51 Mon Sep 17 00:00:00 2001From: Debug <[email protected]>Date: Wed, 28 May 2025 20:01:30 +0300Subject: [PATCH] no message--- java/org/l2jmobius/gameserver/model/actor/Player.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/java/org/l2jmobius/gameserver/model/actor/Player.java b/java/org/l2jmobius/gameserver/model/actor/Player.javaindex 60106e88..c4ec2bf4 100644--- a/java/org/l2jmobius/gameserver/model/actor/Player.java+++ b/java/org/l2jmobius/gameserver/model/actor/Player.java@@ -377,7 +377,7 @@ public class Player extends Playable private static final String DELETE_ITEM_REUSE_SAVE = "DELETE FROM character_item_reuse_save WHERE charId=?"; // Character Character SQL String Definitions:- private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,name_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createDate,lastAccess) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";+ private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createDate,lastAccess) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,name_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=?,faction=?,pccafe_points=? WHERE charId=?"; private static final String RESTORE_CHARACTER = "SELECT * FROM characters WHERE charId=?"; -- 2.46.0.windows.1
I’d like to share my contribution to the community. I’ve added several services to the Community Board: Class Master, Subclass Master, a server statistics display service, and a name/title color customization service. It’s my small way of giving back.I will post new services here: https://gitea.com/Debug/ShadowCraftCorehttps://pastebin.com/hU2n5jNf
From d2ecbcceda778f264c3d69c29e5ccfa4820674a6 Mon Sep 17 00:00:00 2001From: Debug <[email protected]>Date: Tue, 27 May 2025 20:55:33 +0300Subject: [PATCH] Added the ability to obtain nobleman status through the community board--- dist/game/config/Custom/CommunityBoard.ini | 12 ++ .../CommunityBoard/Custom/navigation.html | 4 + .../handlers/communityboard/HomeBoard.java | 11 +- .../handlers/communityboard/NoblessBoard.java | 105 ++++++++++++++++++ java/org/l2jmobius/Config.java | 8 ++ 5 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 dist/game/data/scripts/handlers/communityboard/NoblessBoard.javadiff --git a/dist/game/config/Custom/CommunityBoard.ini b/dist/game/config/Custom/CommunityBoard.iniindex 7a8f2ff0..b3118fc1 100644--- a/dist/game/config/Custom/CommunityBoard.ini+++ b/dist/game/config/Custom/CommunityBoard.ini@@ -40,6 +40,18 @@ ColorChangeColors = 00FF00,FF9900,000000,00FFFF,000080,87CEFA,98FF98,808080,FFFF ColorChangeColorNames = Зелёный,Оранжевый,Чёрный,Бирюзовый,Темно-синий,Голубой,Мятный,Серый,Жёлтый,Розовый +# Enables or disables Noblesse service via Community Board+NoblesseService = true++# Item ID required to obtain Noblesse status+NoblesseItemId = 57++# Number of items required for Noblesse+NoblesseItemCount = 100000000++# Tiara item ID granted upon becoming Noblesse+NoblesseTiaraId = 7694+ # Currency used by the Community Board (itemId). # Default: 57 (Adena) CommunityCurrencyId = 57diff --git a/dist/game/data/html/CommunityBoard/Custom/navigation.html b/dist/game/data/html/CommunityBoard/Custom/navigation.htmlindex 7832fa44..fa59773a 100644--- a/dist/game/data/html/CommunityBoard/Custom/navigation.html+++ b/dist/game/data/html/CommunityBoard/Custom/navigation.html@@ -35,4 +35,8 @@ <tr> <td><button value="Top" action="bypass _bbstopboard" width=200 height=30 back="L2UI_CT1.OlympiadWnd_DF_Reward_Down" fore="L2UI_CT1.OlympiadWnd_DF_Reward"></td> </tr>+<tr>+<td>+ <button value="BuyNobless" action="bypass _bbspurchase_noblesse" width=200 height=30 back="L2UI_CT1.OlympiadWnd_DF_Reward_Down" fore="L2UI_CT1.OlympiadWnd_DF_Reward">+</td> </table>\ No newline at end of filediff --git a/dist/game/data/scripts/handlers/communityboard/HomeBoard.java b/dist/game/data/scripts/handlers/communityboard/HomeBoard.javaindex 4249a880..aa142c43 100644--- a/dist/game/data/scripts/handlers/communityboard/HomeBoard.java+++ b/dist/game/data/scripts/handlers/communityboard/HomeBoard.java@@ -58,7 +58,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ShowBoard; /** * Home board.- * @author Zoey76, Mobius+ * @author Zoey76, Mobius. Druid */ public class HomeBoard implements IParseBoardHandler {@@ -69,6 +69,7 @@ public class HomeBoard implements IParseBoardHandler private final TopBoard topBoard = new TopBoard(); private final SubClassMasterBoard subClassMasterBoard = new SubClassMasterBoard(); private final ColorChangeBoard colorChangeBoard = new ColorChangeBoard();+ private final NoblessBoard noblessBoard = new NoblessBoard(); private static final String[] COMMANDS = {@@ -103,7 +104,7 @@ public class HomeBoard implements IParseBoardHandler }; private static final Predicate<Player> KARMA_CHECK = player -> Config.COMMUNITYBOARD_KARMA_DISABLED && (player.getKarma() > 0);- + [member=79]override[/member] public String[] getCommunityBoardCommands() {@@ -114,6 +115,7 @@ public class HomeBoard implements IParseBoardHandler commands.addAll(Arrays.asList(topBoard.getCommunityBoardCommands())); commands.addAll(Arrays.asList(subClassMasterBoard.getCommunityBoardCommands())); commands.addAll(Arrays.asList(colorChangeBoard.getCommunityBoardCommands()));+ commands.addAll(Arrays.asList(noblessBoard.getCommunityBoardCommands())); return commands.stream().filter(Objects::nonNull).toArray(String[]::new); } @@ -173,6 +175,11 @@ public class HomeBoard implements IParseBoardHandler return colorChangeBoard.parseCommunityBoardCommand(command, player); } + if (command.startsWith("_bbspurchase_noblesse"))+ {+ return noblessBoard.parseCommunityBoardCommand(command, player);+ }+ else if (command.startsWith("_bbstop;")) { final String customPath = Config.CUSTOM_CB_ENABLED ? "Custom/" : "";diff --git a/dist/game/data/scripts/handlers/communityboard/NoblessBoard.java b/dist/game/data/scripts/handlers/communityboard/NoblessBoard.javanew file mode 100644index 00000000..8586b18c--- /dev/null+++ b/dist/game/data/scripts/handlers/communityboard/NoblessBoard.java@@ -0,0 +1,105 @@+package handlers.communityboard;++import org.l2jmobius.Config;+import org.l2jmobius.gameserver.data.xml.ItemData;+import org.l2jmobius.gameserver.handler.IParseBoardHandler;+import org.l2jmobius.gameserver.handler.CommunityBoardHandler;+import org.l2jmobius.gameserver.model.actor.Player;+import org.l2jmobius.gameserver.model.item.ItemTemplate;+import org.l2jmobius.gameserver.model.item.enums.ItemProcessType;+import org.l2jmobius.gameserver.model.item.instance.Item;+import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;++/**+ * @author Debug+ */++public class NoblessBoard implements IParseBoardHandler+{+ private static final String[] COMMANDS = {+ "_bbspurchase_noblesse",+ "_bbspurchase_noblesse_yes"+ };++ // Настройки+ final int ITEM_ID = Config.NOBLESSE_ITEM_ID;+ final long ITEM_COUNT = Config.NOBLESSE_ITEM_COUNT;+ final int TIARA_ID = Config.NOBLESSE_TIARA_ID;++ [member=79]override[/member]+ public String[] getCommunityBoardCommands()+ {+ return COMMANDS;+ }++ [member=79]override[/member]+ public boolean parseCommunityBoardCommand(String command, Player player)+ {+ if (!Config.NOBLESSE_SERVICE)+ {+ CommunityBoardHandler.separateAndSend("<html><body><center><br><font color=FF0000>Сервис дворянства отключён</font><br></center></body></html>", player);+ return false;+ }++ StringBuilder sb = new StringBuilder();+ sb.append("<html><body><center>");++ if (command.equals("_bbspurchase_noblesse"))+ {+ sb.append("<br><font color=LEVEL>Вы хотите стать дворянином?</font><br><br>");+ sb.append("Стоимость: <font color=LEVEL>").append(String.format("%,d", ITEM_COUNT)).append("</font> аден.<br><br>");+ sb.append("<table><tr>");+ sb.append("<td><button value=\"Да\" action=\"bypass _bbspurchase_noblesse_yes\" width=80 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>");+ sb.append("<td><button value=\"Нет\" action=\"bypass _bbshome\" width=80 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></td>");+ sb.append("</tr></table>");+ }+ else if (command.equals("_bbspurchase_noblesse_yes"))+ {+ sb.append("<br><font color=LEVEL>Покупка Дворянства</font><br><br>");++ if (player.isNoble())+ {+ sb.append("Вы уже являетесь дворянином.<br>");+ }+ else+ {+ long playerCount = player.getInventory().getInventoryItemCount(ITEM_ID, -1);+ if (playerCount >= ITEM_COUNT)+ {+ Item destroyed = player.getInventory().destroyItemByItemId(ItemProcessType.FEE, ITEM_ID, ITEM_COUNT, player, null);++ if (destroyed != null)+ {+ player.setNoble(true);+ player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 0, 0));+ player.addItem(ItemProcessType.REWARD, TIARA_ID, 1, player, true);+ player.broadcastUserInfo();++ ItemTemplate item = ItemData.getInstance().getTemplate(ITEM_ID);+ String itemName = (item != null) ? item.getName() : ("ID: " + ITEM_ID);+ player.sendMessage("Вы стали дворянином за " + String.format("%,d", ITEM_COUNT) + " " + itemName + ".");++ sb.append("<font color=LEVEL>Поздравляем! Вы стали дворянином!</font><br>");+ }+ else+ {+ sb.append("<font color=FF0000>Ошибка при списании средств.</font><br>");+ player.sendMessage("Ошибка при списании средств.");+ }+ }+ else+ {+ sb.append("У вас недостаточно средств.<br>Необходимо: <font color=LEVEL>")+ .append(String.format("%,d", ITEM_COUNT))+ .append("</font> аден.<br>");+ player.sendMessage("Недостаточно адены. Требуется " + String.format("%,d", ITEM_COUNT) + " аден.");+ }+ }+ sb.append("<br><button value=\"Назад\" action=\"bypass _bbshome\" width=80 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\">");+ }++ sb.append("</center></body></html>");+ CommunityBoardHandler.separateAndSend(sb.toString(), player);+ return true;+ }+}diff --git a/java/org/l2jmobius/Config.java b/java/org/l2jmobius/Config.javaindex 2c1f7768..68679a04 100644--- a/java/org/l2jmobius/Config.java+++ b/java/org/l2jmobius/Config.java@@ -1190,6 +1190,10 @@ public class Config public static long COLOR_CHANGE_ITEM_AMOUNT; public static String[] COLOR_CHANGE_COLORS; public static String[] COLOR_CHANGE_COLOR_NAMES;+ public static boolean NOBLESSE_SERVICE;+ public static int NOBLESSE_ITEM_ID;+ public static long NOBLESSE_ITEM_COUNT;+ public static int NOBLESSE_TIARA_ID; public static int COMMUNITYBOARD_CURRENCY; public static boolean COMMUNITYBOARD_ENABLE_MULTISELLS; public static boolean COMMUNITYBOARD_ENABLE_TELEPORTS;@@ -3047,6 +3051,10 @@ public class Config COLOR_CHANGE_ITEM_AMOUNT = communityBoardConfig.getInt("ColorChangeItemAmount", 100000); COLOR_CHANGE_COLORS = communityBoardConfig.getString("ColorChangeColors", "").split(","); COLOR_CHANGE_COLOR_NAMES = communityBoardConfig.getString("ColorChangeColorNames", "").split(",");+ NOBLESSE_SERVICE = communityBoardConfig.getBoolean("NoblesseService", false);+ NOBLESSE_ITEM_ID = communityBoardConfig.getInt("NoblesseItemId", 57);+ NOBLESSE_ITEM_COUNT = communityBoardConfig.getInt("NoblesseItemCount", 100000000);+ NOBLESSE_TIARA_ID = communityBoardConfig.getInt("NoblesseTiaraId", 7694); COMMUNITYBOARD_CURRENCY = communityBoardConfig.getInt("CommunityCurrencyId", 57); COMMUNITYBOARD_ENABLE_MULTISELLS = communityBoardConfig.getBoolean("CommunityEnableMultisells", true); COMMUNITYBOARD_ENABLE_TELEPORTS = communityBoardConfig.getBoolean("CommunityEnableTeleports", true);-- 2.46.0.windows.1