Fixed boat visibility and dock heading issues.
This commit is contained in:
@ -123,8 +123,10 @@ public class BoatData implements IXmlReader
|
||||
|
||||
final CreatureTemplate template = new CreatureTemplate(npcDat);
|
||||
final Boat boat = new Boat(IdManager.getInstance().getNextId(), template);
|
||||
boat.getLocation().setHeading(set.getInt("heading"));
|
||||
boat.setXYZ(set.getInt("spawnX"), set.getInt("spawnY"), set.getInt("spawnZ"));
|
||||
boat.dockHeadingA = set.getInt("dockHeadingA", -1);
|
||||
boat.dockHeadingB = set.getInt("dockHeadingB", -1);
|
||||
boat.setHeading(boat.dockHeadingA);
|
||||
boat.setPathA(set.getInt("pathIdA"), set.getInt("ticketA"), set.getInt("xTeleNoTicketA"), set.getInt("yTeleNoTicketA"), set.getInt("zTeleNoTicketA"), set.getString("announcerA"), set.getString("message10A"), set.getString("message5A"), set.getString("message1A"), set.getString("message0A"), set.getString("messageBeginA"), paths.get(set.getInt("pathIdA")));
|
||||
boat.setPathB(set.getInt("pathIdB"), set.getInt("ticketB"), set.getInt("xTeleNoTicketB"), set.getInt("yTeleNoTicketB"), set.getInt("zTeleNoTicketB"), set.getString("announcerB"), set.getString("message10B"), set.getString("message5B"), set.getString("message1B"), set.getString("message0B"), set.getString("messageBeginB"), paths.get(set.getInt("pathIdB")));
|
||||
boat.spawn();
|
||||
|
@ -23,6 +23,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.l2jmobius.commons.threads.ThreadPool;
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.knownlist.BoatKnownList;
|
||||
@ -45,10 +46,12 @@ import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
|
||||
public class Boat extends Creature
|
||||
{
|
||||
public float boatSpeed;
|
||||
public int dockHeadingA;
|
||||
public int dockHeadingB;
|
||||
public VehicleDeparture vd = null;
|
||||
private int lastx = -1;
|
||||
private int lasty = -1;
|
||||
protected int cycle = 0;
|
||||
protected int cycle = 1;
|
||||
protected int runstate = 0;
|
||||
protected BoatPathHolder pathA;
|
||||
protected BoatPathHolder pathB;
|
||||
@ -352,10 +355,20 @@ public class Boat extends Creature
|
||||
if (cycle == 1)
|
||||
{
|
||||
sm = new CreatureSay(0, ChatType.SHOUT, pathA.npc, pathA.sysmessb);
|
||||
// Proper dock heading.
|
||||
if (dockHeadingA != -1)
|
||||
{
|
||||
setHeading(dockHeadingA);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = new CreatureSay(0, ChatType.SHOUT, pathB.npc, pathB.sysmessb);
|
||||
// Proper dock heading.
|
||||
if (dockHeadingB != -1)
|
||||
{
|
||||
setHeading(dockHeadingB);
|
||||
}
|
||||
}
|
||||
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
||||
for (Player player : knownPlayers)
|
||||
@ -372,8 +385,16 @@ public class Boat extends Creature
|
||||
|
||||
public void spawn()
|
||||
{
|
||||
cycle = 1;
|
||||
// Add to World.
|
||||
setSpawned(true);
|
||||
setWorldRegion(World.getInstance().getRegion(getLocation()));
|
||||
World.getInstance().storeObject(this);
|
||||
getWorldRegion().addVisibleObject(this);
|
||||
|
||||
// Start AI.
|
||||
beginCycle();
|
||||
|
||||
// Broadcast vehicle info to nearby players.
|
||||
final Collection<Player> knownPlayers = getKnownList().getKnownPlayers().values();
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
{
|
||||
|
@ -19,6 +19,8 @@ package org.l2jmobius.gameserver.model.actor.knownlist;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.Boat;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo;
|
||||
|
||||
/**
|
||||
* @author Maktakien
|
||||
@ -30,6 +32,20 @@ public class BoatKnownList extends CreatureKnownList
|
||||
super(creature);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addKnownObject(WorldObject object)
|
||||
{
|
||||
if (super.addKnownObject(object))
|
||||
{
|
||||
if (object.isPlayer())
|
||||
{
|
||||
object.getActingPlayer().sendPacket(new VehicleInfo((Boat) getActiveObject()));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDistanceToForgetObject(WorldObject object)
|
||||
{
|
||||
|
Reference in New Issue
Block a user