But i had a few questions When i get a patch that dont have any (-) or (+) it cant be added manualy right ? And i have to save this patch in my workspace l2jserver.gameserver.datatables/PvPRewardsTable.java ?
package com.l2jserver.gameserver.datatables;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import javolution.util.FastMap;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.util.Rnd;
/**
* @author hNoke
*
*/
public class PvPRewardsTable
{
private Map<Integer, PvPRewardItem> _rewards;
public static PvPRewardsTable getInstance()
{
return SingletonHolder._instance;
}
public PvPRewardsTable()
{
load();
}
public void rewardLastHit(L2PcInstance winner, L2PcInstance target)
{
int random = Rnd.get(100000);
int ammount;
for(Map.Entry<Integer, PvPRewardItem> item : _rewards.entrySet())
{
if(item.getKey() < random)
{
ammount = item.getValue().getAmmount(winner);
if(ammount > 0)
winner.addItem("PvPReward", item.getValue().id, ammount, null, true);
}
}
}
public class PvPRewardItem
{
public int id;
public int minAmmount;
public int maxAmmount;
public int chance;
public int pvpRequired;
public int levelRequired;
public PvPRewardItem(int id, int minAmmount, int maxAmmount, int chance, int pvpRequired, int levelRequired)
{
this.id = id;
this.minAmmount = minAmmount;
this.maxAmmount = maxAmmount;
this.chance = chance;
this.pvpRequired = pvpRequired;
this.levelRequired = levelRequired;
}
public int getAmmount(L2PcInstance player)
{
if(player.getLevel() >= levelRequired && player.getPvpKills() >= pvpRequired)
return Rnd.get(minAmmount, maxAmmount);
else
return 0;
}
}
private void load()
{
_rewards = new FastMap<Integer, PvPRewardItem>();
Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT * FROM pvp_rewards");
ResultSet rset = statement.executeQuery();
while (rset.next())
{
_rewards.put(rset.getInt("chance"), new PvPRewardItem(rset.getInt("id"), rset.getInt("minAmmount"), rset.getInt("maxAmmount"), rset.getInt("chance"), rset.getInt("pvpRequired"), rset.getInt("levelRequired")));
}
rset.close();
statement.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
con.close();
}
catch (Exception e)
{
}
}
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final PvPRewardsTable _instance = new PvPRewardsTable();
}
}
Also another question about Diff Files: i know that guide says:
@@ -99,7 +99,9 @@ = These are the lines above the edit. Whats that mean,
and do i replace the --- java/com/l2jserver/gameserver/GameServer.java (revision 4402)
with the +++ java/com/l2jserver/gameserver/GameServer.java (working copy)
Question
lowrider88
Ok so i looked at this guide: http://www.l2jserver.com/wiki/How_to_Apply_a_Patch
But i had a few questions When i get a patch that dont have any (-) or (+) it cant be added manualy right ? And i have to save this patch in my workspace l2jserver.gameserver.datatables/PvPRewardsTable.java ?
package com.l2jserver.gameserver.datatables; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; import javolution.util.FastMap; import com.l2jserver.L2DatabaseFactory; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.util.Rnd; /** * @author hNoke * */ public class PvPRewardsTable { private Map<Integer, PvPRewardItem> _rewards; public static PvPRewardsTable getInstance() { return SingletonHolder._instance; } public PvPRewardsTable() { load(); } public void rewardLastHit(L2PcInstance winner, L2PcInstance target) { int random = Rnd.get(100000); int ammount; for(Map.Entry<Integer, PvPRewardItem> item : _rewards.entrySet()) { if(item.getKey() < random) { ammount = item.getValue().getAmmount(winner); if(ammount > 0) winner.addItem("PvPReward", item.getValue().id, ammount, null, true); } } } public class PvPRewardItem { public int id; public int minAmmount; public int maxAmmount; public int chance; public int pvpRequired; public int levelRequired; public PvPRewardItem(int id, int minAmmount, int maxAmmount, int chance, int pvpRequired, int levelRequired) { this.id = id; this.minAmmount = minAmmount; this.maxAmmount = maxAmmount; this.chance = chance; this.pvpRequired = pvpRequired; this.levelRequired = levelRequired; } public int getAmmount(L2PcInstance player) { if(player.getLevel() >= levelRequired && player.getPvpKills() >= pvpRequired) return Rnd.get(minAmmount, maxAmmount); else return 0; } } private void load() { _rewards = new FastMap<Integer, PvPRewardItem>(); Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT * FROM pvp_rewards"); ResultSet rset = statement.executeQuery(); while (rset.next()) { _rewards.put(rset.getInt("chance"), new PvPRewardItem(rset.getInt("id"), rset.getInt("minAmmount"), rset.getInt("maxAmmount"), rset.getInt("chance"), rset.getInt("pvpRequired"), rset.getInt("levelRequired"))); } rset.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { con.close(); } catch (Exception e) { } } } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final PvPRewardsTable _instance = new PvPRewardsTable(); } }Also another question about Diff Files: i know that guide says:
@@ -99,7 +99,9 @@ = These are the lines above the edit. Whats that mean,
and do i replace the --- java/com/l2jserver/gameserver/GameServer.java (revision 4402)
with the +++ java/com/l2jserver/gameserver/GameServer.java (working copy)
and put my rev in where it says "Working Copy"
### Eclipse Workspace Patch 1.0 #P L2j_hNoke_CORE Index: java/com/l2jserver/gameserver/GameServer.java =================================================================== --- java/com/l2jserver/gameserver/GameServer.java (revision 4402) +++ java/com/l2jserver/gameserver/GameServer.java (working copy) @@ -38,7 +38,9 @@ import com.l2jserver.gameserver.datatables.AdminCommandAccessRights; import com.l2jserver.gameserver.datatables.ArmorSetsTable; import com.l2jserver.gameserver.datatables.AugmentationData; import com.l2jserver.gameserver.datatables.CharNameTable; import com.l2jserver.gameserver.datatables.CharTemplateTable; import com.l2jserver.gameserver.datatables.ClanTable; import com.l2jserver.gameserver.datatables.DoorTable; @@ -61,9 +63,11 @@ import com.l2jserver.gameserver.datatables.NpcBufferTable; import com.l2jserver.gameserver.datatables.NpcTable; import com.l2jserver.gameserver.datatables.NpcWalkerRoutesTable; import com.l2jserver.gameserver.datatables.OfflineTradersTable; import com.l2jserver.gameserver.datatables.PetDataTable; import com.l2jserver.gameserver.datatables.PetSkillsTable; +import com.l2jserver.gameserver.datatables.PvPRewardsTable; import com.l2jserver.gameserver.datatables.ResidentialSkillTable; import com.l2jserver.gameserver.datatables.SkillSpellbookTable; import com.l2jserver.gameserver.datatables.SkillTable; @@ -84,11 +88,14 @@ import com.l2jserver.gameserver.instancemanager.AirShipManager; import com.l2jserver.gameserver.instancemanager.AuctionManager; import com.l2jserver.gameserver.instancemanager.BoatManager; import com.l2jserver.gameserver.instancemanager.CastleManager; import com.l2jserver.gameserver.instancemanager.CastleManorManager; import com.l2jserver.gameserver.instancemanager.ClanHallManager; import com.l2jserver.gameserver.instancemanager.CoupleManager; import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager; import com.l2jserver.gameserver.instancemanager.DayNightSpawnManager; import com.l2jserver.gameserver.instancemanager.DimensionalRiftManager; import com.l2jserver.gameserver.instancemanager.FortManager; @@ -115,8 +122,10 @@ import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.PartyMatchRoomList; import com.l2jserver.gameserver.model.PartyMatchWaitingList; import com.l2jserver.gameserver.model.entity.Hero; import com.l2jserver.gameserver.model.entity.TvTManager; import com.l2jserver.gameserver.model.olympiad.Olympiad; import com.l2jserver.gameserver.network.L2GameClient; import com.l2jserver.gameserver.network.L2GamePacketHandler; @@ -205,6 +214,7 @@ L2World.getInstance(); MapRegionTable.getInstance(); Announcements.getInstance(); printSection("Skills"); EnchantGroupsTable.getInstance(); @@ -251,6 +261,7 @@ PathFinding.getInstance(); printSection("NPCs"); NpcTable.getInstance(); NpcWalkerRoutesTable.getInstance(); ZoneManager.getInstance(); @@ -400,6 +411,16 @@ _log.log(Level.WARNING, "DynamicExtension could not be loaded and initialized", ex); } + PvPRewardsTable.getInstance(); + TvTManager.getInstance(); KnownListUpdateTaskManager.getInstance(); Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 4402) +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -21,6 +21,8 @@ /** * Increase the pvp kills count and send the info to the player @@ -5817,17 +6077,175 @@ */ // Add karma to attacker and increase its PK counter setPvpKills(getPvpKills() + 1); + PvPRewardsTable.getInstance().rewardLastHit(this, (L2PcInstance)target); // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); sendPacket(new ExBrExtraUserInfo(this)); } } }Thanks for any help guys, i am new and want to try to learn this stuff Thanks Again :D
5 answers to this question
Recommended Posts