Jump to content
  • 0

[Help] Apply Patches Question


Question

Posted

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

  • 0
Posted

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 am-beep-t;

	for(Map.Entry<Integer, PvPRewardItem> item : _rewards.entrySet())
	{
		if(item.getKey() < random)
		{
			am-beep-t = item.getValue().getAm-beep-t(winner);

			if(am-beep-t > 0)
				winner.addItem("PvPReward", item.getValue().id, am-beep-t, null, true);
		}
	}
}

public class PvPRewardItem
{
	public int id;
	public int minAm-beep-t;
	public int maxAm-beep-t;
	public int chance;
	public int pvpRequired;
	public int levelRequired;

	public PvPRewardItem(int id, int minAm-beep-t, int maxAm-beep-t, int chance, int pvpRequired, int levelRequired)
	{
		this.id = id;
		this.minAm-beep-t = minAm-beep-t;
		this.maxAm-beep-t = maxAm-beep-t;
		this.chance = chance;
		this.pvpRequired = pvpRequired;
		this.levelRequired = levelRequired;
	}

	public int getAm-beep-t(L2PcInstance player)
	{
		if(player.getLevel() >= levelRequired && player.getPvpKills() >= pvpRequired)
			return Rnd.get(minAm-beep-t, maxAm-beep-t);
		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("minAm-beep-t"), rset.getInt("maxAm-beep-t"), 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

when you see a patch without + or - it's because the author creates a new class.

example,if you see in a code without + or - this:

package com.l2jserver.gameserver.datatables;

you 'll understand that you will have to create a new class in this specific package,now about the name you'll just have to see what's the name of the class,here:

public class PvPRewardsTable

so PvPRewardsTable will be the name of the class.

 

in order to create a class,you'll have to right click -> new -> class.

 

about the 2nd part of your question,just read some tuts/guides in the forum [use search button and you'll be k]

  • 0
Posted

Your first c/p isn't a diff patch at all, whatever is its current extension. Calling a cat a dog won't help it bark. Create a new class in datatable folder, named 'PvPRewardsTable.java' and c/p the content of your 1st c/p on it.

 

The second c/p is a diff patch, as you can see - and + on it. +++ / --- you haven't to care about it's revision. Simply add 'PvPRewardsTable.getInstance();' before tvt crap, save the file which will automatically import the import and you're done.

  • 0
Posted

ok so heres what i got so far lol, i am trying to apply this patch i go to team>Apply Patch  then i get this: what does the red x mean, and i cant click next, if i click finish will it apply my patch...or do i have to do this manuly,  Thanks again guys

 

error.jpg

  • 0
Posted

ok so heres what i got so far lol, i am trying to apply this patch i go to team>Apply Patch  then i get this: what does the red x mean, and i cant click next, if i click finish will it apply my patch...or do i have to do this manuly,  Thanks again guys

 

error.jpg

Guest
This topic is now closed to further replies.


  • Posts

    • Fix Visual Boundary for AutoFarm when entering a new zone. Fix Assassin Interface Automatic SoulShot usage. Fix Assassin Interface not displaying Castle/Base. Fix Achievements displaying item rewards for CommunityBoard & NPC. Fix Prevent players from purchasing their own Auctioned items. Added ''.raid'' and ''.achievement'' commands. Added support for multiple currencies on Auction Added Search feature to Auction. Added Offline Stores Added '.exit' & '.quit' command to Dungeon System so players can now exit/quit dungeons Added VIP Account System (Alternative XP, SP & Drop Rates, Unlocks Costumes) Added Loot Box System Changed DungeonsManager now displays reward list on dungeon pages. Changed GlobalShop to include pages for all currencies. HTML/XML edits
    • When I teleport to town, my current location is differ from the map. How do I fix this?    
    • A New Chapter Begins We're Rebuilding – Join Our Staff Team After many years of activity, growth, and challenges, it’s finally time for our community to restructure and move forward. We’re ready to turn a new page and evolve into something greater — but we can’t do it without the help of passionate and committed people. That’s why we’re now opening up staff applications for those who want to actively shape the future of our community. If you have the motivation, time, and patience to contribute to something meaningful, this is your chance to step in and make a real impact. What We're Looking For We’re building a fresh and dedicated team of individuals who are ready to support and grow this project. Open roles include: Moderators – to keep the forum clean, safe, and organized Gaming Moderators – to help manage gaming boards (e.g., Lineage, GTA FiveM) Content Creators – to post updates, guides, and articles Community Managers – to engage users and drive activity Technical Staff – for development, backend, and server work We’re not focusing only on Lineage anymore. Our vision is expanding to new areas — including GTA FiveM and other multiplayer games you might have expertise in. If you have a good idea, a server plan, or something new to suggest — we’re open to it. Now’s the time to bring it forward. Requirements We’re looking for individuals who have: A history of activity on the forum (preferred) Available time to contribute consistently A sense of teamwork and responsibility A genuine interest in gaming and community building If you're interested, just send a private message to me or Celestine. (or just reply here) Tell us a few things about yourself and how you’d like to contribute. Let’s bring this community back to life. Let’s rebuild something great — together.   M M G A 
  • Topics

×
×
  • Create New...