Fixed boat visibility and dock heading issues.
This commit is contained in:
parent
38366a9017
commit
b244ccce81
@ -130,8 +130,8 @@
|
||||
<point speed1="150" speed2="800" x="111264" y="226240" z="-3610" time="-1" />
|
||||
</path>
|
||||
<!-- Load after paths, since boats need paths on initialization. -->
|
||||
<boat name="TI_Gludin_TI" id="1" spawnX="-96622" spawnY="261660" spawnZ="-3610" heading="32768" pathIdA="1" ticketA="1074" xTeleNoTicketA="-96777" yTeleNoTicketA="258970" zTeleNoTicketA="-3623" announcerA=" Passenger Boat Info" message10A="The ferry arrived at Talking Island Harbor. The ferry will leave for Gludin Harbor after anchoring for ten minutes." message5A="The ferry will leave for Gludin Harbor in five minutes." message1A="The ferry will leave for Gludin Harbor in one minute." message0A="The ferry will be leaving soon for Gludin Harbor." messageBeginA="The ferry is leaving for Gludin Harbor." pathIdB="2" ticketB="1075" xTeleNoTicketB="-90015" yTeleNoTicketB="150422" zTeleNoTicketB="-3610" announcerB=" Passenger Boat Info" message10B="The ferry has arrived at Gludin Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5B="The ferry will leave for Talking Island Harbor in five minutes." message1B="The ferry will leave for Talking Island Harbor in one minute." message0B="The ferry will be leaving soon for Talking Island Harbor." messageBeginB="The ferry is leaving for Talking Island Harbor." />
|
||||
<boat name="TI_Giran_TI" id="2" spawnX="48950" spawnY="190613" spawnZ="-3610" heading="60800" pathIdA="3" ticketA="3946" xTeleNoTicketA="46763" yTeleNoTicketA="187041" zTeleNoTicketA="-3451" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Giran Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5A="We depart for Talking Island Harbor in five minutes." message1A="We depart for Talking Island Harbor in one minute." message0A="All aboard for Talking Island!" messageBeginA="We are now leaving for Talking Island!" pathIdB="4" ticketB="3945" xTeleNoTicketB="-96777" yTeleNoTicketB="258970" zTeleNoTicketB="-3623" announcerB=" Passenger Boat Info" message10B="The ferry arrived at Talking Island Harbor.The ferry will leave for Giran Harbor after anchoring for ten minutes." message5B="The ferry will leave for Giran Harbor in five minutes." message1B="The ferry will leave for Giran Harbor in one minute. Those wishing to ride should make haste to get on." message0B="The ferry will be leaving soon for Giran Harbor." messageBeginB="The ferry is leaving for Giran Harbor." />
|
||||
<boat name="Gludin_Rune_Gludin" id="3" spawnX="-95686" spawnY="150514" spawnZ="-3610" heading="16723" pathIdA="5" ticketA="7905" xTeleNoTicketA="-90015" yTeleNoTicketA="150422" zTeleNoTicketA="-3000" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Gludin Harbor. Departure for Rune Harbor will take place after anchoring for ten minutes." message5A="Departure for Rune Harbor will take place in five minutes!" message1A="Departure for Rune Harbor will take place in one minute!" message0A="Make haste! We will be departing for Rune shortly." messageBeginA="We are now departing for Rune Harbor. Hold on and enjoy the ride!" pathIdB="6" ticketB="7904" xTeleNoTicketB="35929" yTeleNoTicketB="-39403" zTeleNoTicketB="-3152" announcerB=" Passenger Boat Info" message10B="Arrived at Rune Harbor. Departure for Gludin Harbor will take place after anchoring for ten minutes" message5B="Departure for Gludin Harbor will take place in five minutes." message1B="Departure for Gludin Harbor will take place in one minute." message0B="Make haste! We will be departing for Gludin shortly." messageBeginB="We are now departing for Gludin Harbor. Hold on and enjoy the ride!" />
|
||||
<boat name="Innadril_Tour" id="4" spawnX="111264" spawnY="226240" spawnZ="-3610" heading="32768" pathIdA="7" ticketA="0" xTeleNoTicketA="107092" yTeleNoTicketA="219098" zTeleNoTicketA="-3952" announcerA="Passenger Boat Info" message10A="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5A="The Innadril pleasure boat will leave in five minutes." message1A="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0A="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginA="Innadril pleasure boat is leaving." pathIdB="7" ticketB="0" xTeleNoTicketB="107092" yTeleNoTicketB="219098" zTeleNoTicketB="-3952" announcerB="Passenger Boat Info" message10B="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5B="The Innadril pleasure boat will leave in five minutes." message1B="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0B="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginB="Innadril pleasure boat is leaving." />
|
||||
<boat name="TI_Gludin_TI" id="1" spawnX="-96622" spawnY="261660" spawnZ="-3610" dockHeadingA="32768" dockHeadingB="-32777" pathIdA="1" ticketA="1074" xTeleNoTicketA="-96777" yTeleNoTicketA="258970" zTeleNoTicketA="-3623" announcerA=" Passenger Boat Info" message10A="The ferry arrived at Talking Island Harbor. The ferry will leave for Gludin Harbor after anchoring for ten minutes." message5A="The ferry will leave for Gludin Harbor in five minutes." message1A="The ferry will leave for Gludin Harbor in one minute." message0A="The ferry will be leaving soon for Gludin Harbor." messageBeginA="The ferry is leaving for Gludin Harbor." pathIdB="2" ticketB="1075" xTeleNoTicketB="-90015" yTeleNoTicketB="150422" zTeleNoTicketB="-3610" announcerB=" Passenger Boat Info" message10B="The ferry has arrived at Gludin Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5B="The ferry will leave for Talking Island Harbor in five minutes." message1B="The ferry will leave for Talking Island Harbor in one minute." message0B="The ferry will be leaving soon for Talking Island Harbor." messageBeginB="The ferry is leaving for Talking Island Harbor." />
|
||||
<boat name="TI_Giran_TI" id="2" spawnX="48950" spawnY="190613" spawnZ="-3610" dockHeadingA="60800" dockHeadingB="-37877" pathIdA="3" ticketA="3946" xTeleNoTicketA="46763" yTeleNoTicketA="187041" zTeleNoTicketA="-3451" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Giran Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5A="We depart for Talking Island Harbor in five minutes." message1A="We depart for Talking Island Harbor in one minute." message0A="All aboard for Talking Island!" messageBeginA="We are now leaving for Talking Island!" pathIdB="4" ticketB="3945" xTeleNoTicketB="-96777" yTeleNoTicketB="258970" zTeleNoTicketB="-3623" announcerB=" Passenger Boat Info" message10B="The ferry arrived at Talking Island Harbor.The ferry will leave for Giran Harbor after anchoring for ten minutes." message5B="The ferry will leave for Giran Harbor in five minutes." message1B="The ferry will leave for Giran Harbor in one minute. Those wishing to ride should make haste to get on." message0B="The ferry will be leaving soon for Giran Harbor." messageBeginB="The ferry is leaving for Giran Harbor." />
|
||||
<boat name="Gludin_Rune_Gludin" id="3" spawnX="-95686" spawnY="150514" spawnZ="-3610" dockHeadingA="16723" dockHeadingB="-24577" pathIdA="5" ticketA="7905" xTeleNoTicketA="-90015" yTeleNoTicketA="150422" zTeleNoTicketA="-3000" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Gludin Harbor. Departure for Rune Harbor will take place after anchoring for ten minutes." message5A="Departure for Rune Harbor will take place in five minutes!" message1A="Departure for Rune Harbor will take place in one minute!" message0A="Make haste! We will be departing for Rune shortly." messageBeginA="We are now departing for Rune Harbor. Hold on and enjoy the ride!" pathIdB="6" ticketB="7904" xTeleNoTicketB="35929" yTeleNoTicketB="-39403" zTeleNoTicketB="-3152" announcerB=" Passenger Boat Info" message10B="Arrived at Rune Harbor. Departure for Gludin Harbor will take place after anchoring for ten minutes" message5B="Departure for Gludin Harbor will take place in five minutes." message1B="Departure for Gludin Harbor will take place in one minute." message0B="Make haste! We will be departing for Gludin shortly." messageBeginB="We are now departing for Gludin Harbor. Hold on and enjoy the ride!" />
|
||||
<boat name="Innadril_Tour" id="4" spawnX="111264" spawnY="226240" spawnZ="-3610" dockHeadingA="32768" dockHeadingB="32768" pathIdA="7" ticketA="0" xTeleNoTicketA="107092" yTeleNoTicketA="219098" zTeleNoTicketA="-3952" announcerA="Passenger Boat Info" message10A="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5A="The Innadril pleasure boat will leave in five minutes." message1A="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0A="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginA="Innadril pleasure boat is leaving." pathIdB="7" ticketB="0" xTeleNoTicketB="107092" yTeleNoTicketB="219098" zTeleNoTicketB="-3952" announcerB="Passenger Boat Info" message10B="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5B="The Innadril pleasure boat will leave in five minutes." message1B="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0B="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginB="Innadril pleasure boat is leaving." />
|
||||
</list>
|
@ -32,7 +32,8 @@
|
||||
<xs:attribute type="xs:int" name="spawnX" use="required"/>
|
||||
<xs:attribute type="xs:int" name="spawnY" use="required"/>
|
||||
<xs:attribute type="xs:short" name="spawnZ" use="required"/>
|
||||
<xs:attribute type="xs:int" name="heading" use="required"/>
|
||||
<xs:attribute type="xs:int" name="dockHeadingA" use="required"/>
|
||||
<xs:attribute type="xs:int" name="dockHeadingB" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="pathIdA" use="required"/>
|
||||
<xs:attribute type="xs:short" name="ticketA" use="required"/>
|
||||
<xs:attribute type="xs:int" name="xTeleNoTicketA" use="required"/>
|
||||
|
@ -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)
|
||||
{
|
||||
|
10
L2J_Mobius_C6_Interlude/dist/game/data/Boats.xml
vendored
10
L2J_Mobius_C6_Interlude/dist/game/data/Boats.xml
vendored
@ -151,9 +151,9 @@
|
||||
<point speed1="180" speed2="1800" x="37890" y="-35765" z="-3610" time="-1" />
|
||||
</path>
|
||||
<!-- Load after paths, since boats need paths on initialization. -->
|
||||
<boat name="TI_Gludin_TI" id="1" spawnX="-96622" spawnY="261660" spawnZ="-3610" heading="32768" pathIdA="1" ticketA="1074" xTeleNoTicketA="-96777" yTeleNoTicketA="258970" zTeleNoTicketA="-3623" announcerA=" Passenger Boat Info" message10A="The ferry arrived at Talking Island Harbor. The ferry will leave for Gludin Harbor after anchoring for ten minutes." message5A="The ferry will leave for Gludin Harbor in five minutes." message1A="The ferry will leave for Gludin Harbor in one minute." message0A="The ferry will be leaving soon for Gludin Harbor." messageBeginA="The ferry is leaving for Gludin Harbor." pathIdB="2" ticketB="1075" xTeleNoTicketB="-90015" yTeleNoTicketB="150422" zTeleNoTicketB="-3610" announcerB=" Passenger Boat Info" message10B="The ferry has arrived at Gludin Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5B="The ferry will leave for Talking Island Harbor in five minutes." message1B="The ferry will leave for Talking Island Harbor in one minute." message0B="The ferry will be leaving soon for Talking Island Harbor." messageBeginB="The ferry is leaving for Talking Island Harbor." />
|
||||
<boat name="TI_Giran_TI" id="2" spawnX="48950" spawnY="190613" spawnZ="-3610" heading="60800" pathIdA="3" ticketA="3946" xTeleNoTicketA="46763" yTeleNoTicketA="187041" zTeleNoTicketA="-3451" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Giran Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5A="We depart for Talking Island Harbor in five minutes." message1A="We depart for Talking Island Harbor in one minute." message0A="All aboard for Talking Island!" messageBeginA="We are now leaving for Talking Island!" pathIdB="4" ticketB="3945" xTeleNoTicketB="-96777" yTeleNoTicketB="258970" zTeleNoTicketB="-3623" announcerB=" Passenger Boat Info" message10B="The ferry arrived at Talking Island Harbor.The ferry will leave for Giran Harbor after anchoring for ten minutes." message5B="The ferry will leave for Giran Harbor in five minutes." message1B="The ferry will leave for Giran Harbor in one minute. Those wishing to ride should make haste to get on." message0B="The ferry will be leaving soon for Giran Harbor." messageBeginB="The ferry is leaving for Giran Harbor." />
|
||||
<boat name="Gludin_Rune_Gludin" id="3" spawnX="-95686" spawnY="150514" spawnZ="-3610" heading="16723" pathIdA="5" ticketA="7905" xTeleNoTicketA="-90015" yTeleNoTicketA="150422" zTeleNoTicketA="-3000" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Gludin Harbor. Departure for Rune Harbor will take place after anchoring for ten minutes." message5A="Departure for Rune Harbor will take place in five minutes!" message1A="Departure for Rune Harbor will take place in one minute!" message0A="Make haste! We will be departing for Rune shortly." messageBeginA="We are now departing for Rune Harbor. Hold on and enjoy the ride!" pathIdB="6" ticketB="7904" xTeleNoTicketB="35929" yTeleNoTicketB="-39403" zTeleNoTicketB="-3152" announcerB=" Passenger Boat Info" message10B="Arrived at Rune Harbor. Departure for Gludin Harbor will take place after anchoring for ten minutes" message5B="Departure for Gludin Harbor will take place in five minutes." message1B="Departure for Gludin Harbor will take place in one minute." message0B="Make haste! We will be departing for Gludin shortly." messageBeginB="We are now departing for Gludin Harbor. Hold on and enjoy the ride!" />
|
||||
<boat name="Innadril_Tour" id="4" spawnX="111264" spawnY="226240" spawnZ="-3610" heading="32768" pathIdA="7" ticketA="0" xTeleNoTicketA="107092" yTeleNoTicketA="219098" zTeleNoTicketA="-3952" announcerA="Passenger Boat Info" message10A="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5A="The Innadril pleasure boat will leave in five minutes." message1A="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0A="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginA="Innadril pleasure boat is leaving." pathIdB="7" ticketB="0" xTeleNoTicketB="107092" yTeleNoTicketB="219098" zTeleNoTicketB="-3952" announcerB="Passenger Boat Info" message10B="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5B="The Innadril pleasure boat will leave in five minutes." message1B="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0B="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginB="Innadril pleasure boat is leaving." />
|
||||
<boat name="Rune_Primeval_Rune" id="5" spawnX="37885" spawnY="-35767" spawnZ="-3615" heading="0" pathIdA="8" ticketA="8924" xTeleNoTicketA="34513" yTeleNoTicketA="-38009" zTeleNoTicketA="-3610" announcerA="Passenger Boat Info" message10A="The boat for Primeval Isle has arrived. It will anchor for ten minutes." message5A="The boat for Primeval Isle will leave in five minutes." message1A="The boat for Primeval Isle will leave in one minute. Those wishing to ride should make haste to get on." message0A="The boat for Primeval Isle is leaving soon. Those wishing to ride should make haste to get on." messageBeginA="The boat for Primeval Isle is leaving." pathIdB="9" ticketB="8925" xTeleNoTicketB="10449" yTeleNoTicketB="-25180" zTeleNoTicketB="-3688" announcerB="Passenger Boat Info" message10B="The boat from Rune arrived. It will anchor for ten minutes." message5B="The boat for Rune will leave in five minutes." message1B="The boat for Rune will leave in one minute. Those wishing to ride should make haste to get on." message0B="The boat for Rune is leaving soon. Those wishing to ride should make haste to get on." messageBeginB="The boat for Rune is leaving." />
|
||||
<boat name="TI_Gludin_TI" id="1" spawnX="-96622" spawnY="261660" spawnZ="-3610" dockHeadingA="32768" dockHeadingB="-32777" pathIdA="1" ticketA="1074" xTeleNoTicketA="-96777" yTeleNoTicketA="258970" zTeleNoTicketA="-3623" announcerA=" Passenger Boat Info" message10A="The ferry arrived at Talking Island Harbor. The ferry will leave for Gludin Harbor after anchoring for ten minutes." message5A="The ferry will leave for Gludin Harbor in five minutes." message1A="The ferry will leave for Gludin Harbor in one minute." message0A="The ferry will be leaving soon for Gludin Harbor." messageBeginA="The ferry is leaving for Gludin Harbor." pathIdB="2" ticketB="1075" xTeleNoTicketB="-90015" yTeleNoTicketB="150422" zTeleNoTicketB="-3610" announcerB=" Passenger Boat Info" message10B="The ferry has arrived at Gludin Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5B="The ferry will leave for Talking Island Harbor in five minutes." message1B="The ferry will leave for Talking Island Harbor in one minute." message0B="The ferry will be leaving soon for Talking Island Harbor." messageBeginB="The ferry is leaving for Talking Island Harbor." />
|
||||
<boat name="TI_Giran_TI" id="2" spawnX="48950" spawnY="190613" spawnZ="-3610" dockHeadingA="60800" dockHeadingB="-37877" pathIdA="3" ticketA="3946" xTeleNoTicketA="46763" yTeleNoTicketA="187041" zTeleNoTicketA="-3451" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Giran Harbor. The ferry will leave for Talking Island Harbor after anchoring for ten minutes." message5A="We depart for Talking Island Harbor in five minutes." message1A="We depart for Talking Island Harbor in one minute." message0A="All aboard for Talking Island!" messageBeginA="We are now leaving for Talking Island!" pathIdB="4" ticketB="3945" xTeleNoTicketB="-96777" yTeleNoTicketB="258970" zTeleNoTicketB="-3623" announcerB=" Passenger Boat Info" message10B="The ferry arrived at Talking Island Harbor.The ferry will leave for Giran Harbor after anchoring for ten minutes." message5B="The ferry will leave for Giran Harbor in five minutes." message1B="The ferry will leave for Giran Harbor in one minute. Those wishing to ride should make haste to get on." message0B="The ferry will be leaving soon for Giran Harbor." messageBeginB="The ferry is leaving for Giran Harbor." />
|
||||
<boat name="Gludin_Rune_Gludin" id="3" spawnX="-95686" spawnY="150514" spawnZ="-3610" dockHeadingA="16723" dockHeadingB="-24577" pathIdA="5" ticketA="7905" xTeleNoTicketA="-90015" yTeleNoTicketA="150422" zTeleNoTicketA="-3000" announcerA=" Passenger Boat Info" message10A="The ferry has arrived at Gludin Harbor. Departure for Rune Harbor will take place after anchoring for ten minutes." message5A="Departure for Rune Harbor will take place in five minutes!" message1A="Departure for Rune Harbor will take place in one minute!" message0A="Make haste! We will be departing for Rune shortly." messageBeginA="We are now departing for Rune Harbor. Hold on and enjoy the ride!" pathIdB="6" ticketB="7904" xTeleNoTicketB="35929" yTeleNoTicketB="-39403" zTeleNoTicketB="-3152" announcerB=" Passenger Boat Info" message10B="Arrived at Rune Harbor. Departure for Gludin Harbor will take place after anchoring for ten minutes" message5B="Departure for Gludin Harbor will take place in five minutes." message1B="Departure for Gludin Harbor will take place in one minute." message0B="Make haste! We will be departing for Gludin shortly." messageBeginB="We are now departing for Gludin Harbor. Hold on and enjoy the ride!" />
|
||||
<boat name="Innadril_Tour" id="4" spawnX="111264" spawnY="226240" spawnZ="-3610" dockHeadingA="32768" dockHeadingB="32768" pathIdA="7" ticketA="0" xTeleNoTicketA="107092" yTeleNoTicketA="219098" zTeleNoTicketA="-3952" announcerA="Passenger Boat Info" message10A="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5A="The Innadril pleasure boat will leave in five minutes." message1A="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0A="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginA="Innadril pleasure boat is leaving." pathIdB="7" ticketB="0" xTeleNoTicketB="107092" yTeleNoTicketB="219098" zTeleNoTicketB="-3952" announcerB="Passenger Boat Info" message10B="The Innadril pleasure boat has arrived. It will anchor for ten minutes." message5B="The Innadril pleasure boat will leave in five minutes." message1B="The Innadril pleasure boat will leave in one minute. Those wishing to ride should make haste to get on." message0B="Innadril pleasure boat is leaving soon. Those wishing to ride should make haste to get on." messageBeginB="Innadril pleasure boat is leaving." />
|
||||
<boat name="Rune_Primeval_Rune" id="5" spawnX="37885" spawnY="-35767" spawnZ="-3615" dockHeadingA="0" dockHeadingB="0" pathIdA="8" ticketA="8924" xTeleNoTicketA="34513" yTeleNoTicketA="-38009" zTeleNoTicketA="-3610" announcerA="Passenger Boat Info" message10A="The boat for Primeval Isle has arrived. It will anchor for ten minutes." message5A="The boat for Primeval Isle will leave in five minutes." message1A="The boat for Primeval Isle will leave in one minute. Those wishing to ride should make haste to get on." message0A="The boat for Primeval Isle is leaving soon. Those wishing to ride should make haste to get on." messageBeginA="The boat for Primeval Isle is leaving." pathIdB="9" ticketB="8925" xTeleNoTicketB="10449" yTeleNoTicketB="-25180" zTeleNoTicketB="-3688" announcerB="Passenger Boat Info" message10B="The boat from Rune arrived. It will anchor for ten minutes." message5B="The boat for Rune will leave in five minutes." message1B="The boat for Rune will leave in one minute. Those wishing to ride should make haste to get on." message0B="The boat for Rune is leaving soon. Those wishing to ride should make haste to get on." messageBeginB="The boat for Rune is leaving." />
|
||||
</list>
|
@ -32,7 +32,8 @@
|
||||
<xs:attribute type="xs:int" name="spawnX" use="required"/>
|
||||
<xs:attribute type="xs:int" name="spawnY" use="required"/>
|
||||
<xs:attribute type="xs:short" name="spawnZ" use="required"/>
|
||||
<xs:attribute type="xs:int" name="heading" use="required"/>
|
||||
<xs:attribute type="xs:int" name="dockHeadingA" use="required"/>
|
||||
<xs:attribute type="xs:int" name="dockHeadingB" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="pathIdA" use="required"/>
|
||||
<xs:attribute type="xs:short" name="ticketA" use="required"/>
|
||||
<xs:attribute type="xs:int" name="xTeleNoTicketA" use="required"/>
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user