U3Games

Lineage II | Desarrollo & Soporte => Implementaciones => Desarrollo de Servidores => Eventos => Mensaje iniciado por: Swarlog en Ago 06, 2022, 02:19 AM

Título: Evento Día Master PvP
Publicado por: Swarlog en Ago 06, 2022, 02:19 AM
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`)
) ;