Como su propio nombre indica , anuncia el players con mas PvPs ese dia.
### Eclipse Workspace Patch 1.0
#P Chr.6GMS
Index: java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
===================================================================
--- java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 5263)
+++ java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (working copy)
@@ -272,6 +272,13 @@
sendPacket(new PledgeShowMemberListAll(activeChar.getClan(), activeChar));
sendPacket(new PledgeStatusChanged(activeChar.getClan()));
}
+
+ if(activeChar.isPvpMaster()){
+ Announcements.getInstance().announceToAll("Day's pvp master "+activeChar.getName()+" is now Online.");
+ activeChar.getAppearance().setNameColor(0xFFFF);
+ activeChar.getAppearance().setTitleColor(0xFFFF);
+
+ }
if (activeChar.isAlikeDead())
{
Index: java/net/sf/l2j/gameserver/Olympiad.java
===================================================================
--- java/net/sf/l2j/gameserver/Olympiad.java (revision 5263)
+++ java/net/sf/l2j/gameserver/Olympiad.java (working copy)
@@ -46,6 +46,7 @@
import net.sf.l2j.gameserver.datatables.HeroSkillTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.instancemanager.OlympiadStadiaManager;
+import net.sf.l2j.gameserver.model.DayPvp;
import net.sf.l2j.gameserver.model.Inventory;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Party;
@@ -597,6 +598,8 @@
{
if (isOlympiadEnd())
return;
+
+ DayPvp.newPvpMaster();
_inCompPeriod = true;
OlympiadManager om = new OlympiadManager();
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 5263)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -214,8 +214,8 @@
private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC";
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=?,daypvp=?,pvpmaster=? 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,daypvp,pvpmaster 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 (?,?,?,?,?,?)";
private static final String UPDATE_CHAR_SUBCLASS = "UPDATE character_subclasses SET exp=?,sp=?,level=?,class_id=? WHERE char_obj_id=? AND class_index =?";
@@ -347,6 +347,8 @@
/** The number of player killed during a PvP (the player killed was PvP Flagged) */
private int _pvpKills;
+
+ private int _daypvp;
/** The PK counter of the L2PcInstance (= Number of non PvP Flagged player killed) */
private int _pkKills;
@@ -451,6 +453,7 @@
private boolean _noble = false;
private boolean _hero = false;
+ private boolean _pvpmaster = false;
/** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
private L2FolkInstance _lastFolkNpc = null;
@@ -679,6 +682,8 @@
private int _engageid = 0;
private boolean _marryrequest = false;
private boolean _marryaccepted = false;
+
+ private int masterkills = 0;
// Current force buff this caster is casting to a target
protected ForceBuff _forceBuff;
@@ -1891,6 +1896,14 @@
{
_pvpKills = pvpKills;
}
+
+ public void setDayPvp(int dayPvp){
+ _daypvp = dayPvp;
+ }
+
+ public int getDayPvp(){
+ return _daypvp;
+ }
/**
* Return the ClassId object of the L2PcInstance contained in L2PcTemplate.<BR><BR>
@@ -4176,6 +4189,8 @@
{
pk.kills.add(getName());
}
+
+ masterkills = 0;
// Clear resurrect xp calculation
setExpBeforeDeath(0);
@@ -4448,6 +4463,23 @@
{
// Add karma to attacker and increase its PK counter
setPvpKills(getPvpKills() + 1);
+
+ if(isPvpMaster())
+ masterkills++;
+
+ switch(masterkills){
+ case 4:
+ getStatus().setCurrentCp(getMaxCp());
+ getStatus().setCurrentHp(getMaxHp());
+ getStatus().setCurrentMp(getMaxMp());
+ sendMessage("You rewarded with full hp,cp,mp cause of your pvp master's ability");
+ masterkills = 0;
+ break;
+ default:
+ ;
+ }
+
+ setDayPvp(getDayPvp() + 1);
// Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
sendPacket(new UserInfo(this));
@@ -5463,7 +5495,7 @@
"movement_multiplier,attack_speed_multiplier,colRad,colHeight," +
"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,daypvp,pvpmaster) " +
"values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
statement.setString(1, _accountName);
statement.setInt(2, getObjectId());
@@ -5595,6 +5627,8 @@
player.setOnlineTime(rset.getLong("onlinetime"));
player.setNewbie(rset.getInt("newbie")==1);
player.setNoble(rset.getInt("nobless")==1);
+ player.setPvpMaster(rset.getInt("pvpmaster")==1);
+ player.setDayPvp(rset.getInt("daypvp"));
player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time"));
if (player.getClanJoinExpiryTime() < System.currentTimeMillis())
@@ -6059,7 +6093,9 @@
statement.setLong(54, getClanCreateExpiryTime());
statement.setString(55, getName());
statement.setLong(56, getDeathPenaltyBuffLevel());
- statement.setInt(57, getObjectId());
+ statement.setInt(57, getDayPvp());
+ statement.setInt(58, isPvpMaster() ? 1 : 0);
+ statement.setInt(59, getObjectId());
statement.execute();
statement.close();
@@ -8214,6 +8250,14 @@
}
return true;
}
+
+ public boolean isPvpMaster(){
+ return _pvpmaster;
+ }
+
+ public void setPvpMaster(boolean t){
+ _pvpmaster = t;
+ }
public boolean isNoble()
{
Index: java/net/sf/l2j/gameserver/model/DayPvp.java
===================================================================
--- java/net/sf/l2j/gameserver/model/DayPvp.java (revision 0)
+++ java/net/sf/l2j/gameserver/model/DayPvp.java (revision 0)
@@ -0,0 +1,95 @@
+/* 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.model;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import net.sf.l2j.L2DatabaseFactory;
+import net.sf.l2j.gameserver.Announcements;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ *
+ * @author Iracundus
+ */
+public class DayPvp
+{
+
+ public static void newPvpMaster(){
+
+ int masterId = 0;
+ Connection con = null;
+ PreparedStatement state = null;
+ ResultSet rset = null;
+
+ try{
+ con = L2DatabaseFactory.getInstance().getConnection();
+ state = con.prepareStatement("SELECT obj_Id,daypvp FROM characters ORDER BY daypvp DESC LIMIT 1;");
+ rset = state.executeQuery();
+ if(rset.next())
+ masterId = rset.getInt(1);
+
+ if(masterId == 0)
+ return;
+
+ state.close();
+ rset.close();
+
+ for(L2PcInstance p : L2World.getInstance().getAllPlayers()){
+ if(p.getObjectId() == masterId)
+ {
+ p.getAppearance().setNameColor(0xFFFF);
+ p.getAppearance().setTitleColor(0xFFFF);
+
+ p.sendMessage("You are the pvp master today");
+ p.setPvpMaster(true);
+
+ p.broadcastUserInfo();
+
+ Announcements.getInstance().announceToAll("Day's Pvp Master is : "+p.getName());
+ }
+ }
+
+ state = con.prepareStatement("UPDATE characters SET pvpmaster=1 WHERE obj_Id=?");
+ state.setInt(1, masterId);
+ state.execute();
+ state.close();
+
+ state = con.prepareStatement("UPDATE characters SET daypvp=0,pvpmaster=0 WHERE obj_Id!=?");
+ state.setInt(1, masterId);
+ state.execute();
+ state.close();
+ }
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ finally{
+ try
+ {
+ con.close();
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+}
### Eclipse Workspace Patch 1.0
#P Chr.6DTP
Index: sql/characters.sql
===================================================================
--- sql/characters.sql (revision 8778)
+++ sql/characters.sql (working copy)
@@ -79,6 +79,8 @@
clan_join_expiry_time DECIMAL(20,0) NOT NULL DEFAULT 0,
clan_create_expiry_time DECIMAL(20,0) NOT NULL DEFAULT 0,
death_penalty_level int(2) NOT NULL DEFAULT 0,
+ daypvp decimal(11,0) default NULL,
+ pvpmaster decimal(1,0) NOT NULL DEFAULT 0,
PRIMARY KEY (obj_Id),
KEY `clanid` (`clanid`)
) ;