Automating Fishing.
This commit is contained in:
parent
7d5e51e914
commit
687969b37f
@ -93,7 +93,7 @@ public final class Fishing extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.endFishing(false);
|
player.endFishing(false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.sendPacket(SystemMessageId.YOUR_ATTEMPT_AT_FISHING_HAS_BEEN_CANCELLED);
|
player.sendPacket(SystemMessageId.YOUR_ATTEMPT_AT_FISHING_HAS_BEEN_CANCELLED);
|
||||||
@ -134,7 +134,7 @@ public final class Fishing extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Config.SERVER_CLASSIC_SUPPORT && (player.getLevel() < 85))
|
if (player.getLevel() < 85)
|
||||||
{
|
{
|
||||||
player.sendMessage("You must be level 85 or higher to fish.");
|
player.sendMessage("You must be level 85 or higher to fish.");
|
||||||
return;
|
return;
|
||||||
|
@ -217,6 +217,7 @@ import com.l2jserver.gameserver.model.fishing.L2Fish;
|
|||||||
import com.l2jserver.gameserver.model.fishing.L2Fishing;
|
import com.l2jserver.gameserver.model.fishing.L2Fishing;
|
||||||
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
||||||
import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
|
import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
|
||||||
|
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||||
import com.l2jserver.gameserver.model.holders.SkillUseHolder;
|
import com.l2jserver.gameserver.model.holders.SkillUseHolder;
|
||||||
import com.l2jserver.gameserver.model.interfaces.IEventListener;
|
import com.l2jserver.gameserver.model.interfaces.IEventListener;
|
||||||
import com.l2jserver.gameserver.model.interfaces.ILocational;
|
import com.l2jserver.gameserver.model.interfaces.ILocational;
|
||||||
@ -302,7 +303,6 @@ import com.l2jserver.gameserver.network.serverpackets.ObservationMode;
|
|||||||
import com.l2jserver.gameserver.network.serverpackets.ObservationReturn;
|
import com.l2jserver.gameserver.network.serverpackets.ObservationReturn;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowUpdate;
|
import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowUpdate;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PetInventoryUpdate;
|
import com.l2jserver.gameserver.network.serverpackets.PetInventoryUpdate;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PlaySound;
|
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDelete;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDelete;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
|
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
|
||||||
import com.l2jserver.gameserver.network.serverpackets.PrivateStoreListBuy;
|
import com.l2jserver.gameserver.network.serverpackets.PrivateStoreListBuy;
|
||||||
@ -752,6 +752,7 @@ public final class L2PcInstance extends L2Playable
|
|||||||
private int _fishx = 0;
|
private int _fishx = 0;
|
||||||
private int _fishy = 0;
|
private int _fishy = 0;
|
||||||
private int _fishz = 0;
|
private int _fishz = 0;
|
||||||
|
private final static SkillHolder FISHING_SKILL = new SkillHolder(1312, 1);
|
||||||
|
|
||||||
private volatile Set<Integer> _transformAllowedSkills;
|
private volatile Set<Integer> _transformAllowedSkills;
|
||||||
private ScheduledFuture<?> _taskRentPet;
|
private ScheduledFuture<?> _taskRentPet;
|
||||||
@ -11899,20 +11900,20 @@ public final class L2PcInstance extends L2Playable
|
|||||||
if ((fish == null) || fish.isEmpty())
|
if ((fish == null) || fish.isEmpty())
|
||||||
{
|
{
|
||||||
sendMessage("Error - Fish are not defined");
|
sendMessage("Error - Fish are not defined");
|
||||||
endFishing(false);
|
endFishing(false, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Use a copy constructor else the fish data may be over-written below
|
// Use a copy constructor else the fish data may be over-written below
|
||||||
_fish = fish.get(Rnd.get(fish.size())).clone();
|
_fish = fish.get(Rnd.get(fish.size())).clone();
|
||||||
fish.clear();
|
fish.clear();
|
||||||
sendPacket(SystemMessageId.YOU_CAST_YOUR_LINE_AND_START_TO_FISH);
|
// sendPacket(SystemMessageId.YOU_CAST_YOUR_LINE_AND_START_TO_FISH);
|
||||||
if (!GameTimeController.getInstance().isNight() && _lure.isNightLure())
|
if (!GameTimeController.getInstance().isNight() && _lure.isNightLure())
|
||||||
{
|
{
|
||||||
_fish.setFishGroup(-1);
|
_fish.setFishGroup(-1);
|
||||||
}
|
}
|
||||||
// sendMessage("Hook x,y: " + _x + "," + _y + " - Water Z, Player Z:" + _z + ", " + getZ()); //debug line, uncoment to show coordinates used in fishing.
|
// sendMessage("Hook x,y: " + _x + "," + _y + " - Water Z, Player Z:" + _z + ", " + getZ()); //debug line, uncoment to show coordinates used in fishing.
|
||||||
broadcastPacket(new ExFishingStart(this, _fish.getFishGroup(), _x, _y, _z, _lure.isNightLure()));
|
broadcastPacket(new ExFishingStart(this, _fish.getFishGroup(), _x, _y, _z, _lure.isNightLure()));
|
||||||
sendPacket(new PlaySound(1, "SF_P_01", 0, 0, 0, 0, 0));
|
// sendPacket(new PlaySound(1, "SF_P_01", 0, 0, 0, 0, 0));
|
||||||
startLookingForFishTask();
|
startLookingForFishTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11951,7 +11952,7 @@ public final class L2PcInstance extends L2Playable
|
|||||||
checkDelay = _fish.getGutsCheckTime() * 66;
|
checkDelay = _fish.getGutsCheckTime() * 66;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_taskforfish = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new LookingForFishTask(this, _fish.getStartCombatTime(), _fish.getFishGuts(), _fish.getFishGroup(), isNoob, isUpperGrade), 10000, checkDelay);
|
_taskforfish = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new LookingForFishTask(this, _fish.getStartCombatTime(), _fish.getFishGuts(), _fish.getFishGroup(), isNoob, isUpperGrade), Rnd.get(10000, 40000), checkDelay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12242,7 +12243,7 @@ public final class L2PcInstance extends L2Playable
|
|||||||
_fishCombat = new L2Fishing(this, _fish, isNoob, isUpperGrade, _lure.getId());
|
_fishCombat = new L2Fishing(this, _fish, isNoob, isUpperGrade, _lure.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endFishing(boolean win)
|
public void endFishing(boolean win, boolean continueFishing)
|
||||||
{
|
{
|
||||||
_fishing = false;
|
_fishing = false;
|
||||||
_fishx = 0;
|
_fishx = 0;
|
||||||
@ -12256,11 +12257,21 @@ public final class L2PcInstance extends L2Playable
|
|||||||
_fishCombat = null;
|
_fishCombat = null;
|
||||||
_lure = null;
|
_lure = null;
|
||||||
// Ends fishing
|
// Ends fishing
|
||||||
broadcastPacket(new ExFishingEnd(win, this));
|
if (win && continueFishing)
|
||||||
|
{
|
||||||
addExpAndSp(_fish.getExp(), _fish.getSp()); // Reward Player with Exp and Sp
|
addExpAndSp(_fish.getExp(), _fish.getSp()); // Reward Player with Exp and Sp
|
||||||
|
}
|
||||||
|
broadcastPacket(new ExFishingEnd(continueFishing ? (win ? 1 : 0) : 2, this));
|
||||||
|
stopLookingForFishTask();
|
||||||
|
if (!continueFishing)
|
||||||
|
{
|
||||||
sendPacket(SystemMessageId.YOU_REEL_YOUR_LINE_IN_AND_STOP_FISHING);
|
sendPacket(SystemMessageId.YOU_REEL_YOUR_LINE_IN_AND_STOP_FISHING);
|
||||||
setIsImmobilized(false);
|
setIsImmobilized(false);
|
||||||
stopLookingForFishTask();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
useMagic(FISHING_SKILL.getSkill(), false, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public L2Fishing getFishCombat()
|
public L2Fishing getFishCombat()
|
||||||
|
@ -50,7 +50,7 @@ public class LookingForFishTask implements Runnable
|
|||||||
{
|
{
|
||||||
if (System.currentTimeMillis() >= _endTaskTime)
|
if (System.currentTimeMillis() >= _endTaskTime)
|
||||||
{
|
{
|
||||||
_player.endFishing(false);
|
_player.endFishing(false, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (_fishGroup == -1)
|
if (_fishGroup == -1)
|
||||||
|
@ -20,6 +20,7 @@ package com.l2jserver.gameserver.model.fishing;
|
|||||||
|
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||||
import com.l2jserver.gameserver.data.xml.impl.FishingMonstersData;
|
import com.l2jserver.gameserver.data.xml.impl.FishingMonstersData;
|
||||||
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
|
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
|
||||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||||
@ -105,10 +106,10 @@ public class L2Fishing implements Runnable
|
|||||||
// Succeeded in getting a bite
|
// Succeeded in getting a bite
|
||||||
// _fisher.sendPacket(SystemMessageId.YOU_VE_GOT_A_BITE);
|
// _fisher.sendPacket(SystemMessageId.YOU_VE_GOT_A_BITE);
|
||||||
|
|
||||||
// if (_fishAiTask == null)
|
if ((_fishAiTask == null) && _fisher.isFishing())
|
||||||
// {
|
{
|
||||||
// _fishAiTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this, 1000, 1000);
|
_fishAiTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this, 1000, 1000);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// TODO: New fishing system?
|
// TODO: New fishing system?
|
||||||
doDie(true);
|
doDie(true);
|
||||||
@ -169,7 +170,8 @@ public class L2Fishing implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_fisher.endFishing(win);
|
|
||||||
|
_fisher.endFishing(win, true);
|
||||||
_fisher = null;
|
_fisher = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.clientpackets;
|
|||||||
|
|
||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||||
|
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Mobius
|
* @author Mobius
|
||||||
@ -41,12 +42,20 @@ public class RequestExAutoFish extends L2GameClientPacket
|
|||||||
protected void runImpl()
|
protected void runImpl()
|
||||||
{
|
{
|
||||||
final L2PcInstance activeChar = getActiveChar();
|
final L2PcInstance activeChar = getActiveChar();
|
||||||
if ((activeChar == null) || activeChar.isFishing())
|
if (activeChar == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (activeChar.isFishing())
|
||||||
|
{
|
||||||
|
activeChar.endFishing(true, false);// TODO: Correct Animation
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
activeChar.sendPacket(SystemMessageId.YOU_CAST_YOUR_LINE_AND_START_TO_FISH);
|
||||||
activeChar.useMagic(FISHING_SKILL.getSkill(), false, true);
|
activeChar.useMagic(FISHING_SKILL.getSkill(), false, true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType()
|
public String getType()
|
||||||
|
@ -22,14 +22,14 @@ import com.l2jserver.gameserver.model.actor.L2Character;
|
|||||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author -Wooden-
|
* @author Mobius
|
||||||
*/
|
*/
|
||||||
public class ExFishingEnd extends L2GameServerPacket
|
public class ExFishingEnd extends L2GameServerPacket
|
||||||
{
|
{
|
||||||
private final boolean _win;
|
private final int _win;
|
||||||
private final L2Character _activeChar;
|
private final L2Character _activeChar;
|
||||||
|
|
||||||
public ExFishingEnd(boolean win, L2PcInstance character)
|
public ExFishingEnd(int win, L2PcInstance character)
|
||||||
{
|
{
|
||||||
_win = win;
|
_win = win;
|
||||||
_activeChar = character;
|
_activeChar = character;
|
||||||
@ -41,6 +41,6 @@ public class ExFishingEnd extends L2GameServerPacket
|
|||||||
writeC(0xFE);
|
writeC(0xFE);
|
||||||
writeH(0x1F);
|
writeH(0x1F);
|
||||||
writeD(_activeChar.getObjectId());
|
writeD(_activeChar.getObjectId());
|
||||||
writeC(_win ? 1 : 0);
|
writeC(_win); // lose 0 - win 1 - quit 2
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user