Это базовая и простая банковская система. Она очень простая:
Работает со следующими коммандами:
.bank
.deposit
.withdraw
.bank - Даёт инфу о банковской системе
.deposit - Будет менять Х адены на У голд бар
.withdraw - Будет делать обратное действие
Вы можете расширить её, как вам нравится, или полностью игнорировать ее, либо использовать ее в качестве справочного материала для чего-то большего.
Index: java/config/l2jmods.properties =================================================================== --- java/config/l2jmods.properties (revision 1791) +++ java/config/l2jmods.properties (working copy) @@ -138,3 +138,13 @@ # ex.: 1;2;3;4;5;6 # no ";" at the start or end TvTEventDoorsCloseOpenOnStartEnd = + +#--------------------------------------------------------------- +# L2J Banking System - +#--------------------------------------------------------------- +# To enable banking system set this value to true, default is false. +BankingEnabled = false +# This is the amount of Goldbars someone will get when they do the .deposit command, and also the same amount they will lose when they do .withdraw +BankingGoldbarCount = 1 +# This is the amount of Adena someone will get when they do the .withdraw command, and also the same amount they will lose when they do .deposit +BankingAdenaCount = 500000000 Index: java/net/sf/l2j/Config.java =================================================================== --- java/net/sf/l2j/Config.java (revision 1791) +++ java/net/sf/l2j/Config.java (working copy) @@ -529,6 +529,9 @@ public static boolean L2JMOD_WEDDING_SAMESEX; public static boolean L2JMOD_WEDDING_FORMALWEAR; public static int L2JMOD_WEDDING_DIVORCE_COSTS; + public static boolean BANKING_SYSTEM_ENABLED; + public static int BANKING_SYSTEM_GOLDBARS; + public static int BANKING_SYSTEM_ADENA; /** ************************************************** **/ /** L2JMods Settings -End **/ @@ -1676,6 +1679,10 @@ } } } + + BANKING_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("BankingEnabled", "false")); + BANKING_SYSTEM_GOLDBARS = Integer.parseInt(L2JModSettings.getProperty("BankingGoldbarCount", "1")); + BANKING_SYSTEM_ADENA = Integer.parseInt(L2JModSettings.getProperty("BankingAdenaCount", "500000000")); } catch (Exception e) Index: java/net/sf/l2j/gameserver/GameServer.java =================================================================== --- java/net/sf/l2j/gameserver/GameServer.java (revision 1791) +++ java/net/sf/l2j/gameserver/GameServer.java (working copy) @@ -197,6 +197,7 @@ import net.sf.l2j.gameserver.handler.usercommandhandlers.OlympiadStat; import net.sf.l2j.gameserver.handler.usercommandhandlers.PartyInfo; import net.sf.l2j.gameserver.handler.usercommandhandlers.Time; +import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Banking; import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Wedding; import net.sf.l2j.gameserver.handler.voicedcommandhandlers.stats; import net.sf.l2j.gameserver.idfactory.IdFactory; @@ -618,9 +619,10 @@ if(Config.L2JMOD_ALLOW_WEDDING) _voicedCommandHandler.registerVoicedCommandHandler(new Wedding()); + if(Config.BANKING_SYSTEM_ENABLED) + _voicedCommandHandler.registerVoicedCommandHandler(new Banking()); + _log.config("VoicedCommandHandler: Loaded " + _voicedCommandHandler.size() + " handlers."); - - if(Config.L2JMOD_ALLOW_WEDDING) CoupleManager.getInstance(); Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Banking.java =================================================================== --- java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Banking.java (revision 0) +++ java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/Banking.java (revision 0) @@ -0,0 +1,73 @@ +/* + * 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 3 of the License, 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, see <http://www.gnu.org/licenses/>. + */ +package net.sf.l2j.gameserver.handler.voicedcommandhandlers; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; +import net.sf.l2j.gameserver.serverpackets.InventoryUpdate; + +/** + * This class trades Gold Bars for Adena and vice versa. + * + * @author Ahmed + */ +public class Banking implements IVoicedCommandHandler +{ + private static String[] _voicedCommands = { "bank", "withdraw", "deposit" }; + + public boolean useVoicedCommand(String command, L2PcInstance activeChar, + String target) + { + if (command.equalsIgnoreCase("bank")) + { + activeChar.sendMessage(".deposit (" + Config.BANKING_SYSTEM_ADENA + " Adena = " + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar) / .withdraw (" + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar = " + Config.BANKING_SYSTEM_ADENA + " Adena)"); + } else if (command.equalsIgnoreCase("deposit")) + { + if (activeChar.getInventory().getInventoryItemCount(57, 0) >= Config.BANKING_SYSTEM_ADENA) + { + InventoryUpdate iu = new InventoryUpdate(); + activeChar.getInventory().reduceAdena("Goldbar", Config.BANKING_SYSTEM_ADENA, activeChar, null); + activeChar.getInventory().addItem("Goldbar", 3470, Config.BANKING_SYSTEM_GOLDBARS, activeChar, null); + activeChar.getInventory().updateDatabase(); + activeChar.sendPacket(iu); + activeChar.sendMessage("Thank you, you now have " + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar(s), and " + Config.BANKING_SYSTEM_ADENA + " less adena."); + } else + { + activeChar.sendMessage("You do not have enough Adena to convert to Goldbar(s), you need " + Config.BANKING_SYSTEM_ADENA + " Adena."); + } + } else if (command.equalsIgnoreCase("withdraw")) + { + if (activeChar.getInventory().getInventoryItemCount(3470, 0) >= Config.BANKING_SYSTEM_GOLDBARS) + { + InventoryUpdate iu = new InventoryUpdate(); + activeChar.getInventory().destroyItemByItemId("Adena", 3470, Config.BANKING_SYSTEM_GOLDBARS, activeChar, null); + activeChar.getInventory().addAdena("Adena", Config.BANKING_SYSTEM_ADENA, activeChar, null); + activeChar.getInventory().updateDatabase(); + activeChar.sendPacket(iu); + activeChar.sendMessage("Thank you, you now have " + Config.BANKING_SYSTEM_ADENA + " Adena, and " + Config.BANKING_SYSTEM_GOLDBARS + " less Goldbar(s)."); + } else + { + activeChar.sendMessage("You do not have any Goldbars to turn into " + Config.BANKING_SYSTEM_ADENA + " Adena."); + } + } + return true; + } + + public String[] getVoicedCommandList() + { + return _voicedCommands; + } +} \ No newline at end of file