Minor cleanup for previous commit.
This commit is contained in:
@@ -41,7 +41,6 @@ public class BoatData implements IXmlReader
|
|||||||
private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName());
|
||||||
|
|
||||||
private final Map<Integer, BoatInstance> _boats = new HashMap<>();
|
private final Map<Integer, BoatInstance> _boats = new HashMap<>();
|
||||||
private final Map<Integer, Map<Integer, BoatPoint>> _paths = new HashMap<>();
|
|
||||||
|
|
||||||
protected BoatData()
|
protected BoatData()
|
||||||
{
|
{
|
||||||
@@ -52,10 +51,7 @@ public class BoatData implements IXmlReader
|
|||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_boats.clear();
|
_boats.clear();
|
||||||
_paths.clear();
|
|
||||||
parseDatapackFile("data/Boats.xml");
|
parseDatapackFile("data/Boats.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _boats.size() + " boats.");
|
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _paths.size() + " paths.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -71,6 +67,7 @@ public class BoatData implements IXmlReader
|
|||||||
int id;
|
int id;
|
||||||
int index;
|
int index;
|
||||||
final StatSet set = new StatSet();
|
final StatSet set = new StatSet();
|
||||||
|
final Map<Integer, Map<Integer, BoatPoint>> paths = new HashMap<>();
|
||||||
|
|
||||||
final Node n = doc.getFirstChild();
|
final Node n = doc.getFirstChild();
|
||||||
for (Node node = n.getFirstChild(); node != null; node = node.getNextSibling())
|
for (Node node = n.getFirstChild(); node != null; node = node.getNextSibling())
|
||||||
@@ -84,7 +81,6 @@ public class BoatData implements IXmlReader
|
|||||||
set.set(attr.getNodeName(), attr.getNodeValue());
|
set.set(attr.getNodeName(), attr.getNodeValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
final String name = set.getString("name");
|
|
||||||
final StatSet npcDat = new StatSet();
|
final StatSet npcDat = new StatSet();
|
||||||
npcDat.set("npcId", set.getInt("id"));
|
npcDat.set("npcId", set.getInt("id"));
|
||||||
npcDat.set("level", 0);
|
npcDat.set("level", 0);
|
||||||
@@ -119,7 +115,7 @@ public class BoatData implements IXmlReader
|
|||||||
npcDat.set("armor", 0);
|
npcDat.set("armor", 0);
|
||||||
npcDat.set("baseWalkSpd", 0);
|
npcDat.set("baseWalkSpd", 0);
|
||||||
npcDat.set("baseRunSpd", 0);
|
npcDat.set("baseRunSpd", 0);
|
||||||
npcDat.set("name", name);
|
npcDat.set("name", set.getString("name"));
|
||||||
npcDat.set("baseHpMax", 50000);
|
npcDat.set("baseHpMax", 50000);
|
||||||
npcDat.set("baseHpReg", 3.e-3f);
|
npcDat.set("baseHpReg", 3.e-3f);
|
||||||
npcDat.set("baseMpReg", 3.e-3f);
|
npcDat.set("baseMpReg", 3.e-3f);
|
||||||
@@ -127,11 +123,11 @@ public class BoatData implements IXmlReader
|
|||||||
npcDat.set("baseMDef", 100);
|
npcDat.set("baseMDef", 100);
|
||||||
|
|
||||||
final CreatureTemplate template = new CreatureTemplate(npcDat);
|
final CreatureTemplate template = new CreatureTemplate(npcDat);
|
||||||
final BoatInstance boat = new BoatInstance(IdFactory.getInstance().getNextId(), template, name);
|
final BoatInstance boat = new BoatInstance(IdFactory.getInstance().getNextId(), template);
|
||||||
boat.getPosition().setHeading(set.getInt("heading"));
|
boat.getPosition().setHeading(set.getInt("heading"));
|
||||||
boat.setXYZ(set.getInt("spawnX"), set.getInt("spawnY"), set.getInt("spawnZ"));
|
boat.setXYZ(set.getInt("spawnX"), set.getInt("spawnY"), set.getInt("spawnZ"));
|
||||||
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.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.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();
|
boat.spawn();
|
||||||
|
|
||||||
_boats.put(boat.getObjectId(), boat);
|
_boats.put(boat.getObjectId(), boat);
|
||||||
@@ -140,7 +136,7 @@ public class BoatData implements IXmlReader
|
|||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
id = Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue());
|
id = Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue());
|
||||||
_paths.put(id, new HashMap<Integer, BoatPoint>());
|
paths.put(id, new HashMap<Integer, BoatPoint>());
|
||||||
for (Node b = node.getFirstChild(); b != null; b = b.getNextSibling())
|
for (Node b = node.getFirstChild(); b != null; b = b.getNextSibling())
|
||||||
{
|
{
|
||||||
if (!"point".equalsIgnoreCase(b.getNodeName()))
|
if (!"point".equalsIgnoreCase(b.getNodeName()))
|
||||||
@@ -163,10 +159,13 @@ public class BoatData implements IXmlReader
|
|||||||
point.z = set.getInt("z");
|
point.z = set.getInt("z");
|
||||||
point.time = set.getInt("time");
|
point.time = set.getInt("time");
|
||||||
|
|
||||||
_paths.get(id).put(index++, point);
|
paths.get(id).put(index++, point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _boats.size() + " boats.");
|
||||||
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + paths.size() + " paths.");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -179,11 +178,6 @@ public class BoatData implements IXmlReader
|
|||||||
return _boats.get(boatId);
|
return _boats.get(boatId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Integer, BoatPoint> getBoatPath(int pathId)
|
|
||||||
{
|
|
||||||
return _paths.get(pathId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final BoatData getInstance()
|
public static final BoatData getInstance()
|
||||||
{
|
{
|
||||||
return SingletonHolder.INSTANCE;
|
return SingletonHolder.INSTANCE;
|
||||||
|
@@ -43,19 +43,20 @@ import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo;
|
|||||||
public class BoatInstance extends Creature
|
public class BoatInstance extends Creature
|
||||||
{
|
{
|
||||||
public float boatSpeed;
|
public float boatSpeed;
|
||||||
|
public VehicleDeparture vd = null;
|
||||||
|
private int lastx = -1;
|
||||||
|
private int lasty = -1;
|
||||||
|
private int cycle = 0;
|
||||||
|
private int runstate = 0;
|
||||||
|
private BoatPathHolder pathA;
|
||||||
|
private BoatPathHolder pathB;
|
||||||
|
private boolean needOnVehicleCheckLocation = false;
|
||||||
|
private final Map<Integer, PlayerInstance> inboat = new HashMap<>();
|
||||||
|
|
||||||
private final String _name;
|
public BoatInstance(int objectId, CreatureTemplate template)
|
||||||
protected BoatPathHolder _t1;
|
|
||||||
protected BoatPathHolder _t2;
|
|
||||||
protected int _cycle = 0;
|
|
||||||
public VehicleDeparture _vd = null;
|
|
||||||
private Map<Integer, PlayerInstance> _inboat;
|
|
||||||
|
|
||||||
public BoatInstance(int objectId, CreatureTemplate template, String name)
|
|
||||||
{
|
{
|
||||||
super(objectId, template);
|
super(objectId, template);
|
||||||
super.setKnownList(new BoatKnownList(this));
|
super.setKnownList(new BoatKnownList(this));
|
||||||
_name = name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void moveToLocation(int x, int y, int z, float speed)
|
public void moveToLocation(int x, int y, int z, float speed)
|
||||||
@@ -101,159 +102,32 @@ public class BoatInstance extends Creature
|
|||||||
GameTimeController.getInstance().registerMovingObject(this);
|
GameTimeController.getInstance().registerMovingObject(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
class BoatCaptain implements Runnable
|
|
||||||
{
|
|
||||||
private final int _state;
|
|
||||||
private final BoatInstance _boat;
|
|
||||||
|
|
||||||
public BoatCaptain(int state, BoatInstance instance)
|
|
||||||
{
|
|
||||||
_state = state;
|
|
||||||
_boat = instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
BoatCaptain bc;
|
|
||||||
switch (_state)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
_boat.say(5);
|
|
||||||
bc = new BoatCaptain(2, _boat);
|
|
||||||
ThreadPool.schedule(bc, 240000);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
_boat.say(1);
|
|
||||||
bc = new BoatCaptain(3, _boat);
|
|
||||||
ThreadPool.schedule(bc, 40000);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
_boat.say(0);
|
|
||||||
bc = new BoatCaptain(4, _boat);
|
|
||||||
ThreadPool.schedule(bc, 20000);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
_boat.say(-1);
|
|
||||||
_boat.begin();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Boatrun implements Runnable
|
|
||||||
{
|
|
||||||
private int _state;
|
|
||||||
private final BoatInstance _boat;
|
|
||||||
|
|
||||||
public Boatrun(int state, BoatInstance instance)
|
|
||||||
{
|
|
||||||
_state = state;
|
|
||||||
_boat = instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
_boat._vd = null;
|
|
||||||
_boat.needOnVehicleCheckLocation = false;
|
|
||||||
|
|
||||||
if (_boat._cycle == 1)
|
|
||||||
{
|
|
||||||
final int time = _boat._t1.state(_state, _boat);
|
|
||||||
if (time > 0)
|
|
||||||
{
|
|
||||||
_state++;
|
|
||||||
final Boatrun bc = new Boatrun(_state, _boat);
|
|
||||||
ThreadPool.schedule(bc, time);
|
|
||||||
}
|
|
||||||
else if (time == 0)
|
|
||||||
{
|
|
||||||
_boat._cycle = 2;
|
|
||||||
_boat.say(10);
|
|
||||||
final BoatCaptain bc = new BoatCaptain(1, _boat);
|
|
||||||
ThreadPool.schedule(bc, 300000);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_boat.needOnVehicleCheckLocation = true;
|
|
||||||
_state++;
|
|
||||||
_boat._runstate = _state;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (_boat._cycle == 2)
|
|
||||||
{
|
|
||||||
final int time = _boat._t2.state(_state, _boat);
|
|
||||||
if (time > 0)
|
|
||||||
{
|
|
||||||
_state++;
|
|
||||||
final Boatrun bc = new Boatrun(_state, _boat);
|
|
||||||
ThreadPool.schedule(bc, time);
|
|
||||||
}
|
|
||||||
else if (time == 0)
|
|
||||||
{
|
|
||||||
_boat._cycle = 1;
|
|
||||||
_boat.say(10);
|
|
||||||
final BoatCaptain bc = new BoatCaptain(1, _boat);
|
|
||||||
ThreadPool.schedule(bc, 300000);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_boat.needOnVehicleCheckLocation = true;
|
|
||||||
_state++;
|
|
||||||
_boat._runstate = _state;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int _runstate = 0;
|
|
||||||
|
|
||||||
public void evtArrived()
|
public void evtArrived()
|
||||||
{
|
{
|
||||||
if (_runstate != 0)
|
if (runstate != 0)
|
||||||
{
|
{
|
||||||
final Boatrun bc = new Boatrun(_runstate, this);
|
final BoatRun bc = new BoatRun(runstate, this);
|
||||||
ThreadPool.schedule(bc, 10);
|
ThreadPool.schedule(bc, 10);
|
||||||
_runstate = 0;
|
runstate = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendVehicleDeparture(PlayerInstance player)
|
public void sendVehicleDeparture(PlayerInstance player)
|
||||||
{
|
{
|
||||||
if (_vd != null)
|
if (vd != null)
|
||||||
{
|
{
|
||||||
player.sendPacket(_vd);
|
player.sendPacket(vd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public VehicleDeparture getVehicleDeparture()
|
public VehicleDeparture getVehicleDeparture()
|
||||||
{
|
{
|
||||||
return _vd;
|
return vd;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void beginCycle()
|
|
||||||
{
|
|
||||||
say(10);
|
|
||||||
final BoatCaptain bc = new BoatCaptain(1, this);
|
|
||||||
ThreadPool.schedule(bc, 300000);
|
|
||||||
}
|
|
||||||
|
|
||||||
private int lastx = -1;
|
|
||||||
private int lasty = -1;
|
|
||||||
protected boolean needOnVehicleCheckLocation = false;
|
|
||||||
|
|
||||||
public void updatePeopleInTheBoat(int x, int y, int z)
|
public void updatePeopleInTheBoat(int x, int y, int z)
|
||||||
{
|
{
|
||||||
if (_inboat != null)
|
if (inboat != null)
|
||||||
{
|
{
|
||||||
boolean check = false;
|
boolean check = false;
|
||||||
if ((lastx == -1) || (lasty == -1))
|
if ((lastx == -1) || (lasty == -1))
|
||||||
@@ -268,9 +142,9 @@ public class BoatInstance extends Creature
|
|||||||
lastx = x;
|
lastx = x;
|
||||||
lasty = y;
|
lasty = y;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < _inboat.size(); i++)
|
for (int i = 0; i < inboat.size(); i++)
|
||||||
{
|
{
|
||||||
final PlayerInstance player = _inboat.get(i);
|
final PlayerInstance player = inboat.get(i);
|
||||||
if ((player != null) && player.isInBoat() && (player.getBoat() == this))
|
if ((player != null) && player.isInBoat() && (player.getBoat() == this))
|
||||||
{
|
{
|
||||||
player.getPosition().setXYZ(x, y, z);
|
player.getPosition().setXYZ(x, y, z);
|
||||||
@@ -285,85 +159,90 @@ public class BoatInstance extends Creature
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void begin()
|
private void beginCycle()
|
||||||
{
|
{
|
||||||
if (_cycle == 1)
|
say(10);
|
||||||
|
final BoatCaptain bc = new BoatCaptain(1, this);
|
||||||
|
ThreadPool.schedule(bc, 300000);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void begin()
|
||||||
|
{
|
||||||
|
if (cycle == 1)
|
||||||
{
|
{
|
||||||
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
||||||
if ((knownPlayers != null) && !knownPlayers.isEmpty())
|
if ((knownPlayers != null) && !knownPlayers.isEmpty())
|
||||||
{
|
{
|
||||||
_inboat = new HashMap<>();
|
inboat.clear();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (PlayerInstance player : knownPlayers)
|
for (PlayerInstance player : knownPlayers)
|
||||||
{
|
{
|
||||||
if (player.isInBoat() && (player.getBoat() == this))
|
if (player.isInBoat() && (player.getBoat() == this))
|
||||||
{
|
{
|
||||||
ItemInstance it;
|
ItemInstance it;
|
||||||
it = player.getInventory().getItemByItemId(_t1.ticketId);
|
it = player.getInventory().getItemByItemId(pathA.ticketId);
|
||||||
if ((it != null) && (it.getCount() >= 1))
|
if ((it != null) && (it.getCount() >= 1))
|
||||||
{
|
{
|
||||||
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
|
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
|
||||||
final InventoryUpdate iu = new InventoryUpdate();
|
final InventoryUpdate iu = new InventoryUpdate();
|
||||||
iu.addModifiedItem(it);
|
iu.addModifiedItem(it);
|
||||||
player.sendPacket(iu);
|
player.sendPacket(iu);
|
||||||
_inboat.put(i, player);
|
inboat.put(i, player);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if ((it == null) && (_t1.ticketId == 0))
|
else if ((it == null) && (pathA.ticketId == 0))
|
||||||
{
|
{
|
||||||
_inboat.put(i, player);
|
inboat.put(i, player);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.teleToLocation(_t1.ntx, _t1.nty, _t1.ntz, false);
|
player.teleToLocation(pathA.ntx, pathA.nty, pathA.ntz, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final Boatrun bc = new Boatrun(0, this);
|
ThreadPool.execute(new BoatRun(0, this));
|
||||||
ThreadPool.schedule(bc, 0);
|
|
||||||
}
|
}
|
||||||
else if (_cycle == 2)
|
else if (cycle == 2)
|
||||||
{
|
{
|
||||||
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
||||||
if ((knownPlayers != null) && !knownPlayers.isEmpty())
|
if ((knownPlayers != null) && !knownPlayers.isEmpty())
|
||||||
{
|
{
|
||||||
_inboat = new HashMap<>();
|
inboat.clear();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (PlayerInstance player : knownPlayers)
|
for (PlayerInstance player : knownPlayers)
|
||||||
{
|
{
|
||||||
if (player.isInBoat() && (player.getBoat() == this))
|
if (player.isInBoat() && (player.getBoat() == this))
|
||||||
{
|
{
|
||||||
ItemInstance it;
|
ItemInstance it;
|
||||||
it = player.getInventory().getItemByItemId(_t2.ticketId);
|
it = player.getInventory().getItemByItemId(pathB.ticketId);
|
||||||
if ((it != null) && (it.getCount() >= 1))
|
if ((it != null) && (it.getCount() >= 1))
|
||||||
{
|
{
|
||||||
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
|
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
|
||||||
final InventoryUpdate iu = new InventoryUpdate();
|
final InventoryUpdate iu = new InventoryUpdate();
|
||||||
iu.addModifiedItem(it);
|
iu.addModifiedItem(it);
|
||||||
player.sendPacket(iu);
|
player.sendPacket(iu);
|
||||||
_inboat.put(i, player);
|
inboat.put(i, player);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if ((it == null) && (_t2.ticketId == 0))
|
else if ((it == null) && (pathB.ticketId == 0))
|
||||||
{
|
{
|
||||||
_inboat.put(i, player);
|
inboat.put(i, player);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.teleToLocation(_t2.ntx, _t2.nty, _t2.ntz, false);
|
player.teleToLocation(pathB.ntx, pathB.nty, pathB.ntz, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final Boatrun bc = new Boatrun(0, this);
|
ThreadPool.execute(new BoatRun(0, this));
|
||||||
ThreadPool.schedule(bc, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void say(int id)
|
private void say(int id)
|
||||||
{
|
{
|
||||||
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
||||||
CreatureSay sm;
|
CreatureSay sm;
|
||||||
@@ -372,13 +251,13 @@ public class BoatInstance extends Creature
|
|||||||
{
|
{
|
||||||
case 10:
|
case 10:
|
||||||
{
|
{
|
||||||
if (_cycle == 1)
|
if (cycle == 1)
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess10);
|
sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess10);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess10);
|
sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess10);
|
||||||
}
|
}
|
||||||
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
||||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||||
@@ -396,13 +275,13 @@ public class BoatInstance extends Creature
|
|||||||
}
|
}
|
||||||
case 5:
|
case 5:
|
||||||
{
|
{
|
||||||
if (_cycle == 1)
|
if (cycle == 1)
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess5);
|
sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess5);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess5);
|
sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess5);
|
||||||
}
|
}
|
||||||
ps = new PlaySound(0, "itemsound.ship_5min", this);
|
ps = new PlaySound(0, "itemsound.ship_5min", this);
|
||||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||||
@@ -418,13 +297,13 @@ public class BoatInstance extends Creature
|
|||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if (_cycle == 1)
|
if (cycle == 1)
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess1);
|
sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess1);
|
sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess1);
|
||||||
}
|
}
|
||||||
ps = new PlaySound(0, "itemsound.ship_1min", this);
|
ps = new PlaySound(0, "itemsound.ship_1min", this);
|
||||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||||
@@ -440,13 +319,13 @@ public class BoatInstance extends Creature
|
|||||||
}
|
}
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if (_cycle == 1)
|
if (cycle == 1)
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess0);
|
sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess0);
|
sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess0);
|
||||||
}
|
}
|
||||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -460,13 +339,13 @@ public class BoatInstance extends Creature
|
|||||||
}
|
}
|
||||||
case -1:
|
case -1:
|
||||||
{
|
{
|
||||||
if (_cycle == 1)
|
if (cycle == 1)
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmessb);
|
sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmessb);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmessb);
|
sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmessb);
|
||||||
}
|
}
|
||||||
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
||||||
for (PlayerInstance player : knownPlayers)
|
for (PlayerInstance player : knownPlayers)
|
||||||
@@ -483,28 +362,28 @@ public class BoatInstance extends Creature
|
|||||||
|
|
||||||
public void spawn()
|
public void spawn()
|
||||||
{
|
{
|
||||||
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
cycle = 1;
|
||||||
_cycle = 1;
|
|
||||||
beginCycle();
|
beginCycle();
|
||||||
|
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
||||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final VehicleInfo vi = new VehicleInfo(this);
|
final VehicleInfo info = new VehicleInfo(this);
|
||||||
for (PlayerInstance player : knownPlayers)
|
for (PlayerInstance player : knownPlayers)
|
||||||
{
|
{
|
||||||
player.sendPacket(vi);
|
player.sendPacket(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPathA(int idWaypoint1, int idWTicket1, int ntx1, int nty1, int ntz1, String idnpc1, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map<Integer, BoatPoint> path)
|
public void setPathA(int pathId, int ticketId, int ntx, int nty, int ntz, String announcer, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map<Integer, BoatPoint> path)
|
||||||
{
|
{
|
||||||
_t1 = new BoatPathHolder(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name, path);
|
pathA = new BoatPathHolder(pathId, ticketId, ntx, nty, ntz, announcer, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPathB(int idWaypoint1, int idWTicket1, int ntx1, int nty1, int ntz1, String idnpc1, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map<Integer, BoatPoint> path)
|
public void setPathB(int pathId, int ticketId, int ntx, int nty, int ntz, String announcer, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map<Integer, BoatPoint> path)
|
||||||
{
|
{
|
||||||
_t2 = new BoatPathHolder(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name, path);
|
pathB = new BoatPathHolder(pathId, ticketId, ntx, nty, ntz, announcer, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -554,4 +433,118 @@ public class BoatInstance extends Creature
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class BoatCaptain implements Runnable
|
||||||
|
{
|
||||||
|
private final int _state;
|
||||||
|
private final BoatInstance _boat;
|
||||||
|
|
||||||
|
public BoatCaptain(int state, BoatInstance instance)
|
||||||
|
{
|
||||||
|
_state = state;
|
||||||
|
_boat = instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
BoatCaptain bc;
|
||||||
|
switch (_state)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
_boat.say(5);
|
||||||
|
bc = new BoatCaptain(2, _boat);
|
||||||
|
ThreadPool.schedule(bc, 240000);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
_boat.say(1);
|
||||||
|
bc = new BoatCaptain(3, _boat);
|
||||||
|
ThreadPool.schedule(bc, 40000);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
_boat.say(0);
|
||||||
|
bc = new BoatCaptain(4, _boat);
|
||||||
|
ThreadPool.schedule(bc, 20000);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
_boat.say(-1);
|
||||||
|
_boat.begin();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class BoatRun implements Runnable
|
||||||
|
{
|
||||||
|
private int _state;
|
||||||
|
private final BoatInstance _boat;
|
||||||
|
|
||||||
|
public BoatRun(int state, BoatInstance instance)
|
||||||
|
{
|
||||||
|
_state = state;
|
||||||
|
_boat = instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
_boat.vd = null;
|
||||||
|
_boat.needOnVehicleCheckLocation = false;
|
||||||
|
|
||||||
|
if (_boat.cycle == 1)
|
||||||
|
{
|
||||||
|
final int time = _boat.pathA.state(_state, _boat);
|
||||||
|
if (time > 0)
|
||||||
|
{
|
||||||
|
_state++;
|
||||||
|
final BoatRun bc = new BoatRun(_state, _boat);
|
||||||
|
ThreadPool.schedule(bc, time);
|
||||||
|
}
|
||||||
|
else if (time == 0)
|
||||||
|
{
|
||||||
|
_boat.cycle = 2;
|
||||||
|
_boat.say(10);
|
||||||
|
final BoatCaptain bc = new BoatCaptain(1, _boat);
|
||||||
|
ThreadPool.schedule(bc, 300000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_boat.needOnVehicleCheckLocation = true;
|
||||||
|
_state++;
|
||||||
|
_boat.runstate = _state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_boat.cycle == 2)
|
||||||
|
{
|
||||||
|
final int time = _boat.pathB.state(_state, _boat);
|
||||||
|
if (time > 0)
|
||||||
|
{
|
||||||
|
_state++;
|
||||||
|
final BoatRun bc = new BoatRun(_state, _boat);
|
||||||
|
ThreadPool.schedule(bc, time);
|
||||||
|
}
|
||||||
|
else if (time == 0)
|
||||||
|
{
|
||||||
|
_boat.cycle = 1;
|
||||||
|
_boat.say(10);
|
||||||
|
final BoatCaptain bc = new BoatCaptain(1, _boat);
|
||||||
|
ThreadPool.schedule(bc, 300000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_boat.needOnVehicleCheckLocation = true;
|
||||||
|
_state++;
|
||||||
|
_boat.runstate = _state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,7 +37,6 @@ public class BoatPathHolder
|
|||||||
public int ntx;
|
public int ntx;
|
||||||
public int nty;
|
public int nty;
|
||||||
public int ntz;
|
public int ntz;
|
||||||
public String boatName;
|
|
||||||
public String npc;
|
public String npc;
|
||||||
public String sysmess10;
|
public String sysmess10;
|
||||||
public String sysmess5;
|
public String sysmess5;
|
||||||
@@ -55,7 +54,7 @@ public class BoatPathHolder
|
|||||||
public int time;
|
public int time;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BoatPathHolder(int pathId, int pTicketId, int pNtx, int pNty, int pNtz, String pNpc, String pSysmess10, String pSysmess5, String pSysmess1, String pSysmess0, String pSysmessb, String pBoatname, Map<Integer, BoatPoint> path)
|
public BoatPathHolder(int pathId, int pTicketId, int pNtx, int pNty, int pNtz, String pNpc, String pSysmess10, String pSysmess5, String pSysmess1, String pSysmess0, String pSysmessb, Map<Integer, BoatPoint> path)
|
||||||
{
|
{
|
||||||
ticketId = pTicketId;
|
ticketId = pTicketId;
|
||||||
ntx = pNtx;
|
ntx = pNtx;
|
||||||
@@ -67,7 +66,6 @@ public class BoatPathHolder
|
|||||||
sysmess1 = pSysmess1;
|
sysmess1 = pSysmess1;
|
||||||
sysmessb = pSysmessb;
|
sysmessb = pSysmessb;
|
||||||
sysmess0 = pSysmess0;
|
sysmess0 = pSysmess0;
|
||||||
boatName = pBoatname;
|
|
||||||
_path = path;
|
_path = path;
|
||||||
_max = _path.size();
|
_max = _path.size();
|
||||||
}
|
}
|
||||||
@@ -85,7 +83,7 @@ public class BoatPathHolder
|
|||||||
|
|
||||||
boat.getPosition().setHeading((int) (Math.atan2(-sin, -cos) * 10430.378350470452724949566316381) + 32768);
|
boat.getPosition().setHeading((int) (Math.atan2(-sin, -cos) * 10430.378350470452724949566316381) + 32768);
|
||||||
|
|
||||||
boat._vd = new VehicleDeparture(boat, path.speed1, path.speed2, path.x, path.y, path.z);
|
boat.vd = new VehicleDeparture(boat, path.speed1, path.speed2, path.x, path.y, path.z);
|
||||||
boat.boatSpeed = path.speed1;
|
boat.boatSpeed = path.speed1;
|
||||||
boat.moveToLocation(path.x, path.y, path.z, path.speed1);
|
boat.moveToLocation(path.x, path.y, path.z, path.speed1);
|
||||||
final Collection<PlayerInstance> knownPlayers = boat.getKnownList().getKnownPlayers().values();
|
final Collection<PlayerInstance> knownPlayers = boat.getKnownList().getKnownPlayers().values();
|
||||||
@@ -95,7 +93,7 @@ public class BoatPathHolder
|
|||||||
}
|
}
|
||||||
for (PlayerInstance player : knownPlayers)
|
for (PlayerInstance player : knownPlayers)
|
||||||
{
|
{
|
||||||
player.sendPacket(boat._vd);
|
player.sendPacket(boat.vd);
|
||||||
}
|
}
|
||||||
if (path.time == 0)
|
if (path.time == 0)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user