Index: /TrunK/L2JBrasil_CORE/java/config/L2JBrasil-Custom.properties
===================================================================
--- /TrunK/L2JBrasil_CORE/java/config/L2JBrasil-Custom.properties (revision 59)
+++ /TrunK/L2JBrasil_CORE/java/config/L2JBrasil-Custom.properties (revision 65)
@@ -30,2 +30,15 @@
# Castle Circlets can be equipped only by clan members if they own a castle - default true
CastleCircletsRestriction = True
+
+#---------------------------------------------------------------
+# Donator Config -
+#---------------------------------------------------------------
+# Donator Color Name & Title Config
+# Donator Name Color Enabled?.
+DonatorNameColorEnabled = False
+# Donator Color Name Selection
+DonatorColorName = 00FFFF
+# Donator Title Color Enabled?
+DonatorTitleColorEnabled = False
+# Donator Color Name Selection
+DonatorTitleColor = 00FF00
Index: /TrunK/L2JBrasil_CORE/java/net/sf/l2j/Config.java
===================================================================
--- /TrunK/L2JBrasil_CORE/java/net/sf/l2j/Config.java (revision 59)
+++ /TrunK/L2JBrasil_CORE/java/net/sf/l2j/Config.java (revision 65)
@@ -891,4 +891,8 @@
public static boolean CASTLE_CROWN;
public static boolean CASTLE_CIRCLETS;
+ public static boolean DONATOR_NAME_COLOR_ENABLED;
+ public static int DONATOR_NAME_COLOR;
+ public static boolean DONATOR_TITLE_COLOR_ENABLED;
+ public static int DONATOR_TITLE_COLOR;
/** L2JBRASIL Custom - End */
@@ -1983,5 +1987,10 @@
is.close();
- CASTLE_SHIELD = Boolean.parseBoolean(L2JBrasilCustom.getProperty("CastleShieldRestriction", "true"));
+ DONATOR_NAME_COLOR_ENABLED = Boolean.parseBoolean(L2JBrasilCustom.getProperty("DonatorNameColorEnabled", "False"));
+ DONATOR_NAME_COLOR = Integer.decode("0x" + L2JBrasilCustom.getProperty("DonatorColorName", "00FFFF"));
+ DONATOR_TITLE_COLOR_ENABLED = Boolean.parseBoolean(L2JBrasilCustom.getProperty("DonatorTitleColorEnabled", "False"));
+ DONATOR_TITLE_COLOR = Integer.decode("0x" + L2JBrasilCustom.getProperty("DonatorTitleColor", "00FF00"));
+
+ CASTLE_SHIELD = Boolean.parseBoolean(L2JBrasilCustom.getProperty("CastleShieldRestriction", "true"));
CLANHALL_SHIELD = Boolean.parseBoolean(L2JBrasilCustom.getProperty("ClanHallShieldRestriction", "true"));
APELLA_ARMORS = Boolean.parseBoolean(L2JBrasilCustom.getProperty("ApellaArmorsRestriction", "true"));
@@ -1989,5 +1998,5 @@
CASTLE_CROWN = Boolean.parseBoolean(L2JBrasilCustom.getProperty("CastleLordsCrownRestriction", "true"));
CASTLE_CIRCLETS = Boolean.parseBoolean(L2JBrasilCustom.getProperty("CastleCircletsRestriction", "true"));
- }
+ }
catch (Exception e)
{
Index: /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
===================================================================
--- /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 56)
+++ /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 65)
@@ -153,5 +153,13 @@
activeChar.setProtection(true);
- activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
+ if (activeChar.isdonator())
+ {
+ activeChar.getAppearance().setNameColor(Config.DONATOR_NAME_COLOR);
+ activeChar.getAppearance().setTitleColor(Config.DONATOR_TITLE_COLOR);
+ activeChar.sendMessage("Welcome "+activeChar.getName()+" to our Server!");
+ activeChar.sendMessage("Enjoy your Stay Mate!");
+ }
+
+ activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
if (L2Event.active && L2Event.connectionLossData.containsKey(activeChar.getName()) && L2Event.isOnEvent(activeChar))
Index: /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 57)
+++ /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 65)
@@ -216,6 +216,6 @@
private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";
- private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE obj_id=?";
- private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE obj_id=?";
+ private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,donator=? WHERE obj_id=?";
+ private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,donator FROM characters WHERE obj_id=?";
private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC";
private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
@@ -453,5 +453,6 @@
private boolean _noble = false;
private boolean _hero = false;
-
+ private boolean _donator = false;
+
/** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
private L2FolkInstance _lastFolkNpc = null;
@@ -5480,5 +5481,5 @@
"exp,sp,karma,pvpkills,pkkills,clanid,maxload,race,classid,deletetime," +
"cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace," +
- "base_class,newbie,nobless,power_grade,last_recom_date) " +
+ "base_class,newbie,nobless,power_grade,last_recom_date,donator) " +
"values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
statement.setString(1, _accountName);
@@ -5539,4 +5540,5 @@
statement.setLong(56, 0);
statement.setLong(57,System.currentTimeMillis());
+ statement.setInt(58, isdonator() ? 1 :0);
statement.executeUpdate();
statement.close();
@@ -5612,5 +5614,6 @@
player.setNewbie(rset.getInt("newbie")==1);
player.setNoble(rset.getInt("nobless")==1);
-
+ player.setdonator(rset.getInt("donator")==1);
+
player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time"));
if (player.getClanJoinExpiryTime() < System.currentTimeMillis())
@@ -6076,5 +6079,6 @@
statement.setString(55, getName());
statement.setLong(56, getDeathPenaltyBuffLevel());
- statement.setInt(57, getObjectId());
+ statement.setInt(57, isdonator() ? 1 : 0);
+ statement.setInt(58, getObjectId());
statement.execute();
@@ -6207,4 +6211,14 @@
{
return _isIn7sDungeon;
+ }
+
+ public boolean isdonator()
+ {
+ return _donator;
+ }
+
+ public void setdonator(boolean donator)
+ {
+ _donator = donator;
}
Index: /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminDonator.java
===================================================================
--- /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminDonator.java (revision 65)
+++ /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminDonator.java (revision 65)
@@ -0,0 +1,165 @@
+/*
+ * 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+import net.sf.l2j.Config;
+import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.GmListTable;
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.SystemMessageId;
+import net.sf.l2j.gameserver.serverpackets.SystemMessage;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+/**
+ *
+ * Author Rayan
+ *
+ */
+public class AdminDonator implements IAdminCommandHandler
+{
+ private static String[] _adminCommands =
+ {
+ "admin_setdonator",};
+ private final static Log _log = LogFactory.getLog(AdminDonator.class.getName());
+ private static final int REQUIRED_LEVEL = Config.GM_MENU;
+
+ public boolean useAdminCommand(String command, L2PcInstance activeChar)
+ {
+ if (!Config.ALT_PRIVILEGES_ADMIN)
+ {
+ if (!(checkLevel(activeChar.getAccessLevel()) && activeChar.isGM()))
+ {
+ return false;
+ }
+ }
+ if (command.startsWith("admin_setdonator"))
+ {
+ L2Object target = activeChar.getTarget();
+ L2PcInstance player = null;
+ SystemMessage sm = new SystemMessage(SystemMessageId.S1_S2);
+ if (target instanceof L2PcInstance)
+ {
+ player = (L2PcInstance)target;
+ } else
+ {
+ player = activeChar;
+ }
+
+ if (player.isdonator())
+ {
+ player.setdonator(false);
+ sm.addString("You are no longer a server donator.");
+ GmListTable.broadcastMessageToGMs("GM "+activeChar.getName()+" removed donator stat of player"+ target.getName());
+ Connection connection = null;
+ try
+ {
+ connection = L2DatabaseFactory.getInstance().getConnection();
+
+ PreparedStatement statement = connection.prepareStatement("SELECT obj_id FROM characters where char_name=?");
+ statement.setString(1,target.getName());
+ ResultSet rset = statement.executeQuery();
+ int objId = 0;
+ if (rset.next())
+ {
+ objId = rset.getInt(1);
+ }
+ rset.close();
+ statement.close();
+
+ if (objId == 0) {connection.close(); return false;}
+
+ statement = connection.prepareStatement("UPDATE characters SET donator=0 WHERE obj_id=?");
+ statement.setInt(1, objId);
+ statement.execute();
+ statement.close();
+ connection.close();
+ }
+ catch (Exception e)
+ {
+ _log.warn("could not set donator stats of char:", e);
+ }
+ finally
+ {
+ try { connection.close(); } catch (Exception e) {}
+ }
+ }
+ else
+ {
+ player.setdonator(true);
+ sm.addString("You are now a server donator, congratulations!");
+ GmListTable.broadcastMessageToGMs("GM "+activeChar.getName()+" has given donator stat for player "+target.getName()+".");
+ Connection connection = null;
+ try
+ {
+ connection = L2DatabaseFactory.getInstance().getConnection();
+
+ PreparedStatement statement = connection.prepareStatement("SELECT obj_id FROM characters where char_name=?");
+ statement.setString(1,target.getName());
+ ResultSet rset = statement.executeQuery();
+ int objId = 0;
+ if (rset.next())
+ {
+ objId = rset.getInt(1);
+ }
+ rset.close();
+ statement.close();
+
+ if (objId == 0) {connection.close(); return false;}
+
+ statement = connection.prepareStatement("UPDATE characters SET donator=1 WHERE obj_id=?");
+ statement.setInt(1, objId);
+ statement.execute();
+ statement.close();
+ connection.close();
+ }
+ catch (Exception e)
+ {
+ _log.warn("could not set donator stats of char:", e);
+ }
+ finally
+ {
+ try { connection.close(); } catch (Exception e) {}
+ }
+
+ }
+ player.sendPacket(sm);
+ player.broadcastUserInfo();
+ if(player.isdonator() == true)
+ {
+ Announcements.getInstance().announceToAll(player.getName() + " Has Become a Server Donator!");
+ }
+ }
+ return false;
+ }
+ public String[] getAdminCommandList() {
+ return _adminCommands;
+ }
+ private boolean checkLevel(int level)
+ {
+ return (level >= REQUIRED_LEVEL);
+ }
+}
Index: /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/GameServer.java (revision 56)
+++ /TrunK/L2JBrasil_CORE/java/net/sf/l2j/gameserver/GameServer.java (revision 65)
@@ -77,4 +77,5 @@
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminCursedWeapons;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDelete;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDonator;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDoorControl;
import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminEditChar;
@@ -570,4 +571,5 @@
_adminCommandHandler.registerAdminCommandHandler(new AdminTvTEvent());
//_adminCommandHandler.registerAdminCommandHandler(new AdminRadar());
+ _adminCommandHandler.registerAdminCommandHandler(new AdminDonator());
_log.config("AdminCommandHandler: Loaded " + _adminCommandHandler.size() + " handlers.");