Fishing Championship Tournament.

This commit is contained in:
mobius
2015-01-02 11:32:08 +00:00
parent 6e0be1da25
commit b6bdcefdfa
43 changed files with 793 additions and 70 deletions

View File

@@ -610,6 +610,13 @@ public final class Config
public static float ALT_LOTTERY_4_NUMBER_RATE;
public static float ALT_LOTTERY_3_NUMBER_RATE;
public static long ALT_LOTTERY_2_AND_1_NUMBER_PRIZE;
public static boolean ALT_FISH_CHAMPIONSHIP_ENABLED;
public static int ALT_FISH_CHAMPIONSHIP_REWARD_ITEM;
public static int ALT_FISH_CHAMPIONSHIP_REWARD_1;
public static int ALT_FISH_CHAMPIONSHIP_REWARD_2;
public static int ALT_FISH_CHAMPIONSHIP_REWARD_3;
public static int ALT_FISH_CHAMPIONSHIP_REWARD_4;
public static int ALT_FISH_CHAMPIONSHIP_REWARD_5;
public static boolean ALT_ITEM_AUCTION_ENABLED;
public static int ALT_ITEM_AUCTION_EXPIRED_AFTER;
public static long ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID;
@@ -1930,6 +1937,13 @@ public final class Config
ALT_LOTTERY_4_NUMBER_RATE = General.getFloat("AltLottery4NumberRate", 0.2f);
ALT_LOTTERY_3_NUMBER_RATE = General.getFloat("AltLottery3NumberRate", 0.2f);
ALT_LOTTERY_2_AND_1_NUMBER_PRIZE = General.getLong("AltLottery2and1NumberPrize", 200);
ALT_FISH_CHAMPIONSHIP_ENABLED = General.getBoolean("AltFishChampionshipEnabled", true);
ALT_FISH_CHAMPIONSHIP_REWARD_ITEM = General.getInt("AltFishChampionshipRewardItemId", 57);
ALT_FISH_CHAMPIONSHIP_REWARD_1 = General.getInt("AltFishChampionshipReward1", 800000);
ALT_FISH_CHAMPIONSHIP_REWARD_2 = General.getInt("AltFishChampionshipReward2", 500000);
ALT_FISH_CHAMPIONSHIP_REWARD_3 = General.getInt("AltFishChampionshipReward3", 300000);
ALT_FISH_CHAMPIONSHIP_REWARD_4 = General.getInt("AltFishChampionshipReward4", 200000);
ALT_FISH_CHAMPIONSHIP_REWARD_5 = General.getInt("AltFishChampionshipReward5", 100000);
ALT_ITEM_AUCTION_ENABLED = General.getBoolean("AltItemAuctionEnabled", true);
ALT_ITEM_AUCTION_EXPIRED_AFTER = General.getInt("AltItemAuctionExpiredAfter", 14);
ALT_ITEM_AUCTION_TIME_EXTENDS_ON_BID = General.getInt("AltItemAuctionTimeExtendsOnBid", 0) * 1000;

View File

@@ -108,6 +108,7 @@ 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.FishingChampionshipManager;
import com.l2jserver.gameserver.instancemanager.FortManager;
import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
@@ -362,6 +363,11 @@ public class GameServer
CoupleManager.getInstance();
}
if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
{
FishingChampionshipManager.getInstance();
}
TaskManager.getInstance();
AntiFeedManager.getInstance().registerEvent(AntiFeedManager.GAME_ID);

View File

@@ -30,6 +30,7 @@ import com.l2jserver.gameserver.datatables.OfflineTradersTable;
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
import com.l2jserver.gameserver.instancemanager.CastleManorManager;
import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.ItemAuctionManager;
@@ -541,6 +542,13 @@ public class Shutdown extends Thread
GlobalVariablesManager.getInstance().storeMe();
_log.info("Global Variables Manager: Variables saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
// Save Fishing tournament data
if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
{
FishingChampionshipManager.getInstance().shutdown();
_log.info("Fishing Championship data has been saved.");
}
// Save items on ground before closing
if (Config.SAVE_DROPPED_ITEM)
{

View File

@@ -0,0 +1,549 @@
/*
* Copyright (C) 2004-2014 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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 3 of the License, or
* (at your option) any later version.
*
* L2J Server 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, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.instancemanager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.util.Rnd;
/**
* @author n0nam3
* @date 08/08/2010 15:11
*/
public class FishingChampionshipManager
{
protected static final Logger _log = Logger.getLogger(FishingChampionshipManager.class.getName());
private static final String INSERT = "INSERT INTO fishing_championship(player_name,fish_length,rewarded) VALUES (?,?,?)";
private static final String DELETE = "DELETE FROM fishing_championship";
private static final String SELECT = "SELECT `player_name`, `fish_length`, `rewarded` FROM fishing_championship";
private static final FishingChampionshipManager _instance = new FishingChampionshipManager();
public static FishingChampionshipManager getInstance()
{
return _instance;
}
protected long _enddate = 0;
protected final List<String> _playersName = new ArrayList<>();
protected final List<String> _fishLength = new ArrayList<>();
protected final List<String> _winPlayersName = new ArrayList<>();
protected final List<String> _winFishLength = new ArrayList<>();
protected final List<Fisher> _tmpPlayers = new ArrayList<>();
protected final List<Fisher> _winPlayers = new ArrayList<>();
protected double _minFishLength = 0;
protected boolean _needRefresh = true;
private FishingChampionshipManager()
{
restoreData();
refreshWinResult();
recalculateMinLength();
if (_enddate <= System.currentTimeMillis())
{
_enddate = System.currentTimeMillis();
new finishChamp().run();
}
else
{
ThreadPoolManager.getInstance().scheduleGeneral(new finishChamp(), _enddate - System.currentTimeMillis());
}
}
protected void setEndOfChamp()
{
Calendar finishtime = Calendar.getInstance();
finishtime.setTimeInMillis(_enddate);
finishtime.set(Calendar.MINUTE, 0);
finishtime.set(Calendar.SECOND, 0);
finishtime.add(Calendar.DAY_OF_MONTH, 6);
finishtime.set(Calendar.DAY_OF_WEEK, 3);
finishtime.set(Calendar.HOUR_OF_DAY, 19);
_enddate = finishtime.getTimeInMillis();
}
private void restoreData()
{
_enddate = GlobalVariablesManager.getInstance().getLong("fishChampionshipEnd", 0);
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
PreparedStatement statement = con.prepareStatement(SELECT);
ResultSet rs = statement.executeQuery();
while (rs.next())
{
int rewarded = rs.getInt("rewarded");
if (rewarded == 0)
{
_tmpPlayers.add(new Fisher(rs.getString("player_name"), rs.getDouble("fish_length"), 0));
}
else if (rewarded > 0)
{
_winPlayers.add(new Fisher(rs.getString("player_name"), rs.getDouble("fish_length"), rewarded));
}
}
rs.close();
statement.close();
}
catch (SQLException e)
{
_log.log(Level.WARNING, "FishingChampionshipManager: can't restore fishing championship info: " + e.getMessage(), e);
}
}
public synchronized void newFish(L2PcInstance pl, int lureId)
{
if (!Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
{
return;
}
double len = Rnd.get(60, 89) + (Rnd.get(0, 1000) / 1000.);
if ((lureId >= 8484) && (lureId <= 8486))
{
len += Rnd.get(0, 3000) / 1000.;
}
pl.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_CAUGHT_A_FISH_S1_IN_LENGTH).addString(String.valueOf(len)));
if (_tmpPlayers.size() < 5)
{
for (Fisher fisher : _tmpPlayers)
{
if (fisher.getName().equalsIgnoreCase(pl.getName()))
{
if (fisher.getLength() < len)
{
fisher.setLength(len);
pl.sendPacket(SystemMessageId.BECAUSE_OF_THE_SIZE_OF_FISH_CAUGHT_YOU_WILL_BE_REGISTERED_IN_THE_RANKING);
recalculateMinLength();
}
return;
}
}
_tmpPlayers.add(new Fisher(pl.getName(), len, 0));
pl.sendPacket(SystemMessageId.BECAUSE_OF_THE_SIZE_OF_FISH_CAUGHT_YOU_WILL_BE_REGISTERED_IN_THE_RANKING);
recalculateMinLength();
}
else if (_minFishLength < len)
{
for (Fisher fisher : _tmpPlayers)
{
if (fisher.getName().equalsIgnoreCase(pl.getName()))
{
if (fisher.getLength() < len)
{
fisher.setLength(len);
pl.sendPacket(SystemMessageId.BECAUSE_OF_THE_SIZE_OF_FISH_CAUGHT_YOU_WILL_BE_REGISTERED_IN_THE_RANKING);
recalculateMinLength();
}
return;
}
}
Fisher minFisher = null;
double minLen = 99999.;
for (Fisher fisher : _tmpPlayers)
{
if (fisher.getLength() < minLen)
{
minFisher = fisher;
minLen = minFisher.getLength();
}
}
_tmpPlayers.remove(minFisher);
_tmpPlayers.add(new Fisher(pl.getName(), len, 0));
pl.sendPacket(SystemMessageId.BECAUSE_OF_THE_SIZE_OF_FISH_CAUGHT_YOU_WILL_BE_REGISTERED_IN_THE_RANKING);
recalculateMinLength();
}
}
private void recalculateMinLength()
{
double minLen = 99999.;
for (Fisher fisher : _tmpPlayers)
{
if (fisher.getLength() < minLen)
{
minLen = fisher.getLength();
}
}
_minFishLength = minLen;
}
public long getTimeRemaining()
{
return (_enddate - System.currentTimeMillis()) / 60000;
}
public String getWinnerName(int par)
{
if (_winPlayersName.size() >= par)
{
return _winPlayersName.get(par - 1);
}
return "None";
}
public String getCurrentName(int par)
{
if (_playersName.size() >= par)
{
return _playersName.get(par - 1);
}
return "None";
}
public String getFishLength(int par)
{
if (_winFishLength.size() >= par)
{
return _winFishLength.get(par - 1);
}
return "0";
}
public String getCurrentFishLength(int par)
{
if (_fishLength.size() >= par)
{
return _fishLength.get(par - 1);
}
return "0";
}
public boolean isWinner(String playerName)
{
for (String name : _winPlayersName)
{
if (name.equals(playerName))
{
return true;
}
}
return false;
}
public void getReward(L2PcInstance pl)
{
for (Fisher fisher : _winPlayers)
{
if (fisher.getName().equalsIgnoreCase(pl.getName()))
{
if (fisher.getRewardType() != 2)
{
int rewardCnt = 0;
for (int x = 0; x < _winPlayersName.size(); x++)
{
if (_winPlayersName.get(x).equalsIgnoreCase(pl.getName()))
{
switch (x)
{
case 0:
rewardCnt = Config.ALT_FISH_CHAMPIONSHIP_REWARD_1;
break;
case 1:
rewardCnt = Config.ALT_FISH_CHAMPIONSHIP_REWARD_2;
break;
case 2:
rewardCnt = Config.ALT_FISH_CHAMPIONSHIP_REWARD_3;
break;
case 3:
rewardCnt = Config.ALT_FISH_CHAMPIONSHIP_REWARD_4;
break;
case 4:
rewardCnt = Config.ALT_FISH_CHAMPIONSHIP_REWARD_5;
break;
}
}
}
fisher.setRewardType(2);
if (rewardCnt > 0)
{
pl.addItem("fishing_reward", Config.ALT_FISH_CHAMPIONSHIP_REWARD_ITEM, rewardCnt, null, true);
final NpcHtmlMessage html = new NpcHtmlMessage();
html.setFile(pl.getHtmlPrefix(), "data/html/fisherman/championship/fish_event_reward001.htm");
pl.sendPacket(html);
}
}
}
}
}
public void showMidResult(L2PcInstance pl)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
if (_needRefresh)
{
html.setFile(pl.getHtmlPrefix(), "data/html/fisherman/championship/fish_event003.htm");
pl.sendPacket(html);
refreshResult();
ThreadPoolManager.getInstance().scheduleGeneral(new needRefresh(), 60000);
return;
}
html.setFile(pl.getHtmlPrefix(), "data/html/fisherman/championship/fish_event002.htm");
String str = null;
for (int x = 1; x <= 5; x++)
{
str += "<tr><td width=70 align=center>" + x + "</td>";
str += "<td width=110 align=center>" + getCurrentName(x) + "</td>";
str += "<td width=80 align=center>" + getCurrentFishLength(x) + "</td></tr>";
}
html.replace("%TABLE%", str);
html.replace("%prizeItem%", ItemTable.getInstance().getTemplate(Config.ALT_FISH_CHAMPIONSHIP_REWARD_ITEM).getName());
html.replace("%prizeFirst%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_1));
html.replace("%prizeTwo%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_2));
html.replace("%prizeThree%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_3));
html.replace("%prizeFour%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_4));
html.replace("%prizeFive%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_5));
pl.sendPacket(html);
}
public void showChampScreen(L2PcInstance pl, L2NpcInstance npc)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
html.setFile(pl.getHtmlPrefix(), "data/html/fisherman/championship/fish_event001.htm");
String str = null;
for (int x = 1; x <= 5; x++)
{
str += "<tr><td width=70 align=center>" + x + "</td>";
str += "<td width=110 align=center>" + getWinnerName(x) + "</td>";
str += "<td width=80 align=center>" + getFishLength(x) + "</td></tr>";
}
html.replace("%TABLE%", str);
html.replace("%prizeItem%", ItemTable.getInstance().getTemplate(Config.ALT_FISH_CHAMPIONSHIP_REWARD_ITEM).getName());
html.replace("%prizeFirst%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_1));
html.replace("%prizeTwo%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_2));
html.replace("%prizeThree%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_3));
html.replace("%prizeFour%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_4));
html.replace("%prizeFive%", String.valueOf(Config.ALT_FISH_CHAMPIONSHIP_REWARD_5));
html.replace("%refresh%", String.valueOf(getTimeRemaining()));
html.replace("%objectId%", String.valueOf(npc.getObjectId()));
pl.sendPacket(html);
}
public void shutdown()
{
GlobalVariablesManager.getInstance().set("fishChampionshipEnd", _enddate);
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
PreparedStatement statement = con.prepareStatement(DELETE);
statement.execute();
statement.close();
for (Fisher fisher : _winPlayers)
{
statement = con.prepareStatement(INSERT);
statement.setString(1, fisher.getName());
statement.setDouble(2, fisher.getLength());
statement.setInt(3, fisher.getRewardType());
statement.execute();
statement.close();
}
for (Fisher fisher : _tmpPlayers)
{
statement = con.prepareStatement(INSERT);
statement.setString(1, fisher.getName());
statement.setDouble(2, fisher.getLength());
statement.setInt(3, 0);
statement.execute();
statement.close();
}
}
catch (SQLException e)
{
_log.log(Level.WARNING, "FishingChampionshipManager: can't update infos: " + e.getMessage(), e);
}
}
private synchronized void refreshResult()
{
_needRefresh = false;
_playersName.clear();
_fishLength.clear();
Fisher fisher1;
Fisher fisher2;
for (int x = 0; x <= (_tmpPlayers.size() - 1); x++)
{
for (int y = 0; y <= (_tmpPlayers.size() - 2); y++)
{
fisher1 = _tmpPlayers.get(y);
fisher2 = _tmpPlayers.get(y + 1);
if (fisher1.getLength() < fisher2.getLength())
{
_tmpPlayers.set(y, fisher2);
_tmpPlayers.set(y + 1, fisher1);
}
}
}
for (int x = 0; x <= (_tmpPlayers.size() - 1); x++)
{
_playersName.add(_tmpPlayers.get(x).getName());
_fishLength.add(String.valueOf(_tmpPlayers.get(x).getLength()));
}
}
protected void refreshWinResult()
{
_winPlayersName.clear();
_winFishLength.clear();
Fisher fisher1;
Fisher fisher2;
for (int x = 0; x <= (_winPlayers.size() - 1); x++)
{
for (int y = 0; y <= (_winPlayers.size() - 2); y++)
{
fisher1 = _winPlayers.get(y);
fisher2 = _winPlayers.get(y + 1);
if (fisher1.getLength() < fisher2.getLength())
{
_winPlayers.set(y, fisher2);
_winPlayers.set(y + 1, fisher1);
}
}
}
for (int x = 0; x <= (_winPlayers.size() - 1); x++)
{
_winPlayersName.add(_winPlayers.get(x).getName());
_winFishLength.add(String.valueOf(_winPlayers.get(x).getLength()));
}
}
private class finishChamp implements Runnable
{
protected finishChamp()
{
// Do nothing
}
@Override
public void run()
{
_winPlayers.clear();
for (Fisher fisher : _tmpPlayers)
{
fisher.setRewardType(1);
_winPlayers.add(fisher);
}
_tmpPlayers.clear();
refreshWinResult();
setEndOfChamp();
shutdown();
_log.info("FishingChampionshipManager : new event period start.");
ThreadPoolManager.getInstance().scheduleGeneral(new finishChamp(), _enddate - System.currentTimeMillis());
}
}
private class needRefresh implements Runnable
{
protected needRefresh()
{
// Do nothing
}
@Override
public void run()
{
_needRefresh = true;
}
}
private class Fisher
{
private double _length;
private final String _name;
private int _reward;
public Fisher(String name, double length, int rewardType)
{
_name = name;
_length = length;
_reward = rewardType;
}
public void setLength(double value)
{
_length = value;
}
public void setRewardType(int value)
{
_reward = value;
}
public String getName()
{
return _name;
}
public int getRewardType()
{
return _reward;
}
public double getLength()
{
return _length;
}
}
}

View File

@@ -20,13 +20,17 @@ package com.l2jserver.gameserver.model.actor.instance;
import java.util.List;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.SkillTreesData;
import com.l2jserver.gameserver.enums.InstanceType;
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
import com.l2jserver.gameserver.model.L2SkillLearn;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
import com.l2jserver.gameserver.model.base.AcquireSkillType;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
public final class L2FishermanInstance extends L2MerchantInstance
@@ -61,6 +65,35 @@ public final class L2FishermanInstance extends L2MerchantInstance
{
showFishSkillList(player);
}
else if (command.startsWith("FishingChampionship"))
{
if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
{
FishingChampionshipManager.getInstance().showChampScreen(player, this);
}
else
{
sendHtml(player, this, "no_fish_event001.htm");
}
}
else if (command.startsWith("FishingReward"))
{
if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
{
if (FishingChampionshipManager.getInstance().isWinner(player.getName()))
{
FishingChampionshipManager.getInstance().getReward(player);
}
else
{
sendHtml(player, this, "no_fish_event_reward001.htm");
}
}
else
{
sendHtml(player, this, "no_fish_event001.htm");
}
}
else
{
super.onBypassFeedback(player, command);
@@ -90,4 +123,11 @@ public final class L2FishermanInstance extends L2MerchantInstance
player.sendPacket(new ExAcquirableSkillListByClass(skills, AcquireSkillType.FISHING));
}
}
private static void sendHtml(L2PcInstance player, L2Npc npc, String htmlName)
{
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());
html.setFile(player.getHtmlPrefix(), "data/html/fisherman/championship/" + htmlName);
player.sendPacket(html);
}
}

View File

@@ -11938,7 +11938,7 @@ public final class L2PcInstance extends L2Playable
public void startFishCombat(boolean isNoob, boolean isUpperGrade)
{
_fishCombat = new L2Fishing(this, _fish, isNoob, isUpperGrade);
_fishCombat = new L2Fishing(this, _fish, isNoob, isUpperGrade, _lure.getId());
}
public void endFishing(boolean win)

View File

@@ -22,6 +22,7 @@ import java.util.concurrent.Future;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.datatables.FishingMonstersData;
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.AbstractScript;
@@ -49,6 +50,7 @@ public class L2Fishing implements Runnable
private int _fishCurHp;
private final double _regenHp;
private final boolean _isUpperGrade;
private final int _lureId;
@Override
public void run()
@@ -76,7 +78,7 @@ public class L2Fishing implements Runnable
}
}
public L2Fishing(L2PcInstance Fisher, L2Fish fish, boolean isNoob, boolean isUpperGrade)
public L2Fishing(L2PcInstance Fisher, L2Fish fish, boolean isNoob, boolean isUpperGrade, int lureId)
{
_fisher = Fisher;
_fishMaxHp = fish.getFishHp();
@@ -85,6 +87,7 @@ public class L2Fishing implements Runnable
_fishId = fish.getItemId();
_time = fish.getCombatDuration();
_isUpperGrade = isUpperGrade;
_lureId = lureId;
final int lureType;
if (isUpperGrade)
{
@@ -160,6 +163,7 @@ public class L2Fishing implements Runnable
{
_fisher.sendPacket(SystemMessageId.YOU_CAUGHT_SOMETHING);
_fisher.addItem("Fishing", _fishId, 1, null, true);
FishingChampionshipManager.getInstance().newFish(_fisher, _lureId);
}
}
}

View File

@@ -18,6 +18,10 @@
*/
package com.l2jserver.gameserver.network.clientpackets;
import com.l2jserver.Config;
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
* Format: (ch) just a trigger
* @author -Wooden-
@@ -35,7 +39,16 @@ public final class RequestExFishRanking extends L2GameClientPacket
@Override
protected void runImpl()
{
_log.info("C5: RequestExFishRanking");
final L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null)
{
return;
}
if (Config.ALT_FISH_CHAMPIONSHIP_ENABLED)
{
FishingChampionshipManager.getInstance().showMidResult(activeChar);
}
}
@Override
@@ -43,4 +56,4 @@ public final class RequestExFishRanking extends L2GameClientPacket
{
return _C__D0_18_REQUESTEXFISHRANKING;
}
}
}