Boat data moved from CSV to XML.
This commit is contained in:
@@ -64,13 +64,14 @@ import org.l2jmobius.gameserver.datatables.sql.TeleportLocationTable;
|
||||
import org.l2jmobius.gameserver.datatables.xml.AdminData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.ArmorSetData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.AugmentationData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.BoatData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.DoorData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.FenceData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.FishData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.HennaData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.RecipeData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.ManorSeedData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.RecipeData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.StaticObjectData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.SummonItemData;
|
||||
import org.l2jmobius.gameserver.datatables.xml.ZoneData;
|
||||
@@ -86,7 +87,6 @@ import org.l2jmobius.gameserver.idfactory.IdFactory;
|
||||
import org.l2jmobius.gameserver.instancemanager.AuctionManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.AutoSaveManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.AwayManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.BoatManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.CastleManorManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.ClanHallManager;
|
||||
@@ -350,7 +350,7 @@ public class GameServer
|
||||
CrownManager.getInstance();
|
||||
|
||||
Util.printSection("Boat");
|
||||
BoatManager.getInstance();
|
||||
BoatData.getInstance();
|
||||
|
||||
Util.printSection("Doors");
|
||||
DoorData.getInstance().load();
|
||||
|
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program 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.
|
||||
*
|
||||
* This program 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 org.l2jmobius.gameserver.datatables.xml;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.util.IXmlReader;
|
||||
import org.l2jmobius.gameserver.idfactory.IdFactory;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate;
|
||||
import org.l2jmobius.gameserver.model.holders.BoatPathHolder.BoatPoint;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class BoatData implements IXmlReader
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName());
|
||||
|
||||
private final Map<Integer, BoatInstance> _boats = new HashMap<>();
|
||||
private final Map<Integer, Map<Integer, BoatPoint>> _paths = new HashMap<>();
|
||||
|
||||
protected BoatData()
|
||||
{
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load()
|
||||
{
|
||||
_boats.clear();
|
||||
_paths.clear();
|
||||
parseDatapackFile("data/Boats.xml");
|
||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _boats.size() + " boats.");
|
||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _paths.size() + " paths.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parseDocument(Document doc, File f)
|
||||
{
|
||||
if (!Config.ALLOW_BOAT)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
int id;
|
||||
int index;
|
||||
final StatSet set = new StatSet();
|
||||
|
||||
final Node n = doc.getFirstChild();
|
||||
for (Node node = n.getFirstChild(); node != null; node = node.getNextSibling())
|
||||
{
|
||||
if ("boat".equalsIgnoreCase(node.getNodeName()))
|
||||
{
|
||||
final NamedNodeMap attrs = node.getAttributes();
|
||||
for (int i = 0; i < attrs.getLength(); i++)
|
||||
{
|
||||
final Node attr = attrs.item(i);
|
||||
set.set(attr.getNodeName(), attr.getNodeValue());
|
||||
}
|
||||
|
||||
final String name = set.getString("name");
|
||||
final StatSet npcDat = new StatSet();
|
||||
npcDat.set("npcId", set.getInt("id"));
|
||||
npcDat.set("level", 0);
|
||||
npcDat.set("jClass", "boat");
|
||||
npcDat.set("baseSTR", 0);
|
||||
npcDat.set("baseCON", 0);
|
||||
npcDat.set("baseDEX", 0);
|
||||
npcDat.set("baseINT", 0);
|
||||
npcDat.set("baseWIT", 0);
|
||||
npcDat.set("baseMEN", 0);
|
||||
npcDat.set("baseShldDef", 0);
|
||||
npcDat.set("baseShldRate", 0);
|
||||
npcDat.set("baseAccCombat", 38);
|
||||
npcDat.set("baseEvasRate", 38);
|
||||
npcDat.set("baseCritRate", 38);
|
||||
npcDat.set("collision_radius", 0);
|
||||
npcDat.set("collision_height", 0);
|
||||
npcDat.set("sex", "male");
|
||||
npcDat.set("type", "");
|
||||
npcDat.set("baseAtkRange", 0);
|
||||
npcDat.set("baseMpMax", 0);
|
||||
npcDat.set("baseCpMax", 0);
|
||||
npcDat.set("rewardExp", 0);
|
||||
npcDat.set("rewardSp", 0);
|
||||
npcDat.set("basePAtk", 0);
|
||||
npcDat.set("baseMAtk", 0);
|
||||
npcDat.set("basePAtkSpd", 0);
|
||||
npcDat.set("aggroRange", 0);
|
||||
npcDat.set("baseMAtkSpd", 0);
|
||||
npcDat.set("rhand", 0);
|
||||
npcDat.set("lhand", 0);
|
||||
npcDat.set("armor", 0);
|
||||
npcDat.set("baseWalkSpd", 0);
|
||||
npcDat.set("baseRunSpd", 0);
|
||||
npcDat.set("name", name);
|
||||
npcDat.set("baseHpMax", 50000);
|
||||
npcDat.set("baseHpReg", 3.e-3f);
|
||||
npcDat.set("baseMpReg", 3.e-3f);
|
||||
npcDat.set("basePDef", 100);
|
||||
npcDat.set("baseMDef", 100);
|
||||
|
||||
final CreatureTemplate template = new CreatureTemplate(npcDat);
|
||||
final BoatInstance boat = new BoatInstance(IdFactory.getInstance().getNextId(), template, name);
|
||||
boat.getPosition().setHeading(set.getInt("heading"));
|
||||
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.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();
|
||||
|
||||
_boats.put(boat.getObjectId(), boat);
|
||||
}
|
||||
else if ("path".equalsIgnoreCase(node.getNodeName()))
|
||||
{
|
||||
index = 0;
|
||||
id = Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue());
|
||||
_paths.put(id, new HashMap<Integer, BoatPoint>());
|
||||
for (Node b = node.getFirstChild(); b != null; b = b.getNextSibling())
|
||||
{
|
||||
if (!"point".equalsIgnoreCase(b.getNodeName()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
final NamedNodeMap attrs = b.getAttributes();
|
||||
for (int i = 0; i < attrs.getLength(); i++)
|
||||
{
|
||||
final Node attr = attrs.item(i);
|
||||
set.set(attr.getNodeName(), attr.getNodeValue());
|
||||
}
|
||||
|
||||
final BoatPoint point = new BoatPoint();
|
||||
point.speed1 = set.getInt("speed1");
|
||||
point.speed2 = set.getInt("speed2");
|
||||
point.x = set.getInt("x");
|
||||
point.y = set.getInt("y");
|
||||
point.z = set.getInt("z");
|
||||
point.time = set.getInt("time");
|
||||
|
||||
_paths.get(id).put(index++, point);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.warning(getClass().getSimpleName() + ": Error while reading boat data: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public BoatInstance getBoat(int boatId)
|
||||
{
|
||||
return _boats.get(boatId);
|
||||
}
|
||||
|
||||
public Map<Integer, BoatPoint> getBoatPath(int pathId)
|
||||
{
|
||||
return _paths.get(pathId);
|
||||
}
|
||||
|
||||
public static final BoatData getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final BoatData INSTANCE = new BoatData();
|
||||
}
|
||||
}
|
@@ -1,233 +0,0 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program 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.
|
||||
*
|
||||
* This program 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 org.l2jmobius.gameserver.instancemanager;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.LineNumberReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.idfactory.IdFactory;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate;
|
||||
|
||||
public class BoatManager
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(BoatManager.class.getName());
|
||||
|
||||
public static final BoatManager getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private Map<Integer, BoatInstance> _staticItems = new HashMap<>();
|
||||
|
||||
public BoatManager()
|
||||
{
|
||||
LOGGER.info("Initializing BoatManager");
|
||||
load();
|
||||
}
|
||||
|
||||
private final void load()
|
||||
{
|
||||
if (!Config.ALLOW_BOAT)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FileReader reader = null;
|
||||
BufferedReader buff = null;
|
||||
LineNumberReader lnr = null;
|
||||
|
||||
try
|
||||
{
|
||||
final File boatData = new File(Config.DATAPACK_ROOT, "data/csv/boat.csv");
|
||||
|
||||
reader = new FileReader(boatData);
|
||||
buff = new BufferedReader(reader);
|
||||
lnr = new LineNumberReader(buff);
|
||||
|
||||
String line = null;
|
||||
while ((line = lnr.readLine()) != null)
|
||||
{
|
||||
if ((line.trim().length() == 0) || line.startsWith("#"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
final BoatInstance boat = parseLine(line);
|
||||
boat.spawn();
|
||||
_staticItems.put(boat.getObjectId(), boat);
|
||||
}
|
||||
}
|
||||
catch (FileNotFoundException e)
|
||||
{
|
||||
LOGGER.warning("boat.csv is missing in data folder");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.warning("error while creating boat table " + e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (lnr != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
lnr.close();
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
LOGGER.warning("Problem with BoatManager " + e1.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if (buff != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
buff.close();
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
LOGGER.warning("Problem with BoatManager " + e1.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if (reader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
LOGGER.warning("Problem with BoatManager " + e1.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private BoatInstance parseLine(String line)
|
||||
{
|
||||
BoatInstance boat;
|
||||
final StringTokenizer st = new StringTokenizer(line, ";");
|
||||
|
||||
final String name = st.nextToken();
|
||||
final int id = Integer.parseInt(st.nextToken());
|
||||
final int xspawn = Integer.parseInt(st.nextToken());
|
||||
final int yspawn = Integer.parseInt(st.nextToken());
|
||||
final int zspawn = Integer.parseInt(st.nextToken());
|
||||
final int heading = Integer.parseInt(st.nextToken());
|
||||
|
||||
final StatSet npcDat = new StatSet();
|
||||
npcDat.set("npcId", id);
|
||||
npcDat.set("level", 0);
|
||||
npcDat.set("jClass", "boat");
|
||||
|
||||
npcDat.set("baseSTR", 0);
|
||||
npcDat.set("baseCON", 0);
|
||||
npcDat.set("baseDEX", 0);
|
||||
npcDat.set("baseINT", 0);
|
||||
npcDat.set("baseWIT", 0);
|
||||
npcDat.set("baseMEN", 0);
|
||||
|
||||
npcDat.set("baseShldDef", 0);
|
||||
npcDat.set("baseShldRate", 0);
|
||||
npcDat.set("baseAccCombat", 38);
|
||||
npcDat.set("baseEvasRate", 38);
|
||||
npcDat.set("baseCritRate", 38);
|
||||
|
||||
npcDat.set("collision_radius", 0);
|
||||
npcDat.set("collision_height", 0);
|
||||
npcDat.set("sex", "male");
|
||||
npcDat.set("type", "");
|
||||
npcDat.set("baseAtkRange", 0);
|
||||
npcDat.set("baseMpMax", 0);
|
||||
npcDat.set("baseCpMax", 0);
|
||||
npcDat.set("rewardExp", 0);
|
||||
npcDat.set("rewardSp", 0);
|
||||
npcDat.set("basePAtk", 0);
|
||||
npcDat.set("baseMAtk", 0);
|
||||
npcDat.set("basePAtkSpd", 0);
|
||||
npcDat.set("aggroRange", 0);
|
||||
npcDat.set("baseMAtkSpd", 0);
|
||||
npcDat.set("rhand", 0);
|
||||
npcDat.set("lhand", 0);
|
||||
npcDat.set("armor", 0);
|
||||
npcDat.set("baseWalkSpd", 0);
|
||||
npcDat.set("baseRunSpd", 0);
|
||||
npcDat.set("name", name);
|
||||
npcDat.set("baseHpMax", 50000);
|
||||
npcDat.set("baseHpReg", 3.e-3f);
|
||||
npcDat.set("baseMpReg", 3.e-3f);
|
||||
npcDat.set("basePDef", 100);
|
||||
npcDat.set("baseMDef", 100);
|
||||
final CreatureTemplate template = new CreatureTemplate(npcDat);
|
||||
boat = new BoatInstance(IdFactory.getInstance().getNextId(), template, name);
|
||||
boat.getPosition().setHeading(heading);
|
||||
boat.setXYZ(xspawn, yspawn, zspawn);
|
||||
|
||||
int idWaypoint1 = Integer.parseInt(st.nextToken());
|
||||
int idWTicket1 = Integer.parseInt(st.nextToken());
|
||||
int ntx1 = Integer.parseInt(st.nextToken());
|
||||
int nty1 = Integer.parseInt(st.nextToken());
|
||||
int ntz1 = Integer.parseInt(st.nextToken());
|
||||
String npc1 = st.nextToken();
|
||||
String mess10 = st.nextToken();
|
||||
String mess5 = st.nextToken();
|
||||
String mess1 = st.nextToken();
|
||||
String mess0 = st.nextToken();
|
||||
String messb = st.nextToken();
|
||||
boat.setTrajet1(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, npc1, mess10, mess5, mess1, mess0, messb);
|
||||
idWaypoint1 = Integer.parseInt(st.nextToken());
|
||||
idWTicket1 = Integer.parseInt(st.nextToken());
|
||||
ntx1 = Integer.parseInt(st.nextToken());
|
||||
nty1 = Integer.parseInt(st.nextToken());
|
||||
ntz1 = Integer.parseInt(st.nextToken());
|
||||
npc1 = st.nextToken();
|
||||
mess10 = st.nextToken();
|
||||
mess5 = st.nextToken();
|
||||
mess1 = st.nextToken();
|
||||
mess0 = st.nextToken();
|
||||
messb = st.nextToken();
|
||||
boat.setTrajet2(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, npc1, mess10, mess5, mess1, mess0, messb);
|
||||
|
||||
return boat;
|
||||
}
|
||||
|
||||
public BoatInstance GetBoat(int boatId)
|
||||
{
|
||||
if (_staticItems == null)
|
||||
{
|
||||
_staticItems = new HashMap<>();
|
||||
}
|
||||
return _staticItems.get(boatId);
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final BoatManager INSTANCE = new BoatManager();
|
||||
}
|
||||
}
|
@@ -16,23 +16,17 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.actor.instance;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.LineNumberReader;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.concurrent.ThreadPool;
|
||||
import org.l2jmobius.gameserver.GameTimeController;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.knownlist.BoatKnownList;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.CreatureTemplate;
|
||||
import org.l2jmobius.gameserver.model.holders.BoatPathHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.BoatPathHolder.BoatPoint;
|
||||
import org.l2jmobius.gameserver.model.items.Weapon;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.Say2;
|
||||
@@ -48,208 +42,13 @@ import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo;
|
||||
*/
|
||||
public class BoatInstance extends Creature
|
||||
{
|
||||
protected static final Logger LOGGER = Logger.getLogger(BoatInstance.class.getName());
|
||||
|
||||
public float boatSpeed;
|
||||
|
||||
private class BoatTrajet
|
||||
{
|
||||
private Map<Integer, BoatPoint> _path;
|
||||
|
||||
public int idWaypoint1;
|
||||
public int idWTicket1;
|
||||
public int ntx1;
|
||||
public int nty1;
|
||||
public int ntz1;
|
||||
public int max;
|
||||
public String boatName;
|
||||
public String npc1;
|
||||
public String sysmess10_1;
|
||||
public String sysmess5_1;
|
||||
public String sysmess1_1;
|
||||
public String sysmessb_1;
|
||||
public String sysmess0_1;
|
||||
|
||||
protected class BoatPoint
|
||||
{
|
||||
public int speed1;
|
||||
public int speed2;
|
||||
public int x;
|
||||
public int y;
|
||||
public int z;
|
||||
public int time;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pIdWaypoint1
|
||||
* @param pIdWTicket1
|
||||
* @param pNtx1
|
||||
* @param pNty1
|
||||
* @param pNtz1
|
||||
* @param pNpc1
|
||||
* @param pSysmess10
|
||||
* @param pSysmess5
|
||||
* @param pSysmess1
|
||||
* @param pSysmess0
|
||||
* @param pSysmessb
|
||||
* @param pBoatname
|
||||
*/
|
||||
public BoatTrajet(int pIdWaypoint1, int pIdWTicket1, int pNtx1, int pNty1, int pNtz1, String pNpc1, String pSysmess10, String pSysmess5, String pSysmess1, String pSysmess0, String pSysmessb, String pBoatname)
|
||||
{
|
||||
idWaypoint1 = pIdWaypoint1;
|
||||
idWTicket1 = pIdWTicket1;
|
||||
ntx1 = pNtx1;
|
||||
nty1 = pNty1;
|
||||
ntz1 = pNtz1;
|
||||
npc1 = pNpc1;
|
||||
sysmess10_1 = pSysmess10;
|
||||
sysmess5_1 = pSysmess5;
|
||||
sysmess1_1 = pSysmess1;
|
||||
sysmessb_1 = pSysmessb;
|
||||
sysmess0_1 = pSysmess0;
|
||||
boatName = pBoatname;
|
||||
loadBoatPath();
|
||||
}
|
||||
|
||||
public void parseLine(String line)
|
||||
{
|
||||
_path = new HashMap<>();
|
||||
final StringTokenizer st = new StringTokenizer(line, ";");
|
||||
st.nextToken();
|
||||
max = Integer.parseInt(st.nextToken());
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
final BoatPoint bp = new BoatPoint();
|
||||
bp.speed1 = Integer.parseInt(st.nextToken());
|
||||
bp.speed2 = Integer.parseInt(st.nextToken());
|
||||
bp.x = Integer.parseInt(st.nextToken());
|
||||
bp.y = Integer.parseInt(st.nextToken());
|
||||
bp.z = Integer.parseInt(st.nextToken());
|
||||
bp.time = Integer.parseInt(st.nextToken());
|
||||
_path.put(i, bp);
|
||||
}
|
||||
}
|
||||
|
||||
protected void loadBoatPath()
|
||||
{
|
||||
FileReader reader = null;
|
||||
BufferedReader buff = null;
|
||||
LineNumberReader lnr = null;
|
||||
|
||||
try
|
||||
{
|
||||
final File boatpath = new File(Config.DATAPACK_ROOT, "data/csv/boatpath.csv");
|
||||
|
||||
reader = new FileReader(boatpath);
|
||||
buff = new BufferedReader(reader);
|
||||
lnr = new LineNumberReader(buff);
|
||||
|
||||
boolean token = false;
|
||||
String line = null;
|
||||
while ((line = lnr.readLine()) != null)
|
||||
{
|
||||
if ((line.trim().length() == 0) || !line.startsWith(idWaypoint1 + ";"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
parseLine(line);
|
||||
token = true;
|
||||
break;
|
||||
}
|
||||
if (!token)
|
||||
{
|
||||
LOGGER.warning("No path for boat " + boatName + " !!!");
|
||||
}
|
||||
}
|
||||
catch (FileNotFoundException e)
|
||||
{
|
||||
LOGGER.warning("boatpath.csv is missing in data folder " + e);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOGGER.warning("Error while creating boat table " + e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (lnr != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
lnr.close();
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
LOGGER.warning(e1.toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (buff != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
buff.close();
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
LOGGER.warning(e1.toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (reader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
catch (Exception e1)
|
||||
{
|
||||
LOGGER.warning(e1.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int state(int state, BoatInstance boat)
|
||||
{
|
||||
if (state < max)
|
||||
{
|
||||
final BoatPoint bp = _path.get(state);
|
||||
final double dx = boat.getX() - bp.x;
|
||||
final double dy = boat.getY() - bp.y;
|
||||
final double distance = Math.sqrt((dx * dx) + (dy * dy));
|
||||
final double cos = dx / distance;
|
||||
final double sin = dy / distance;
|
||||
|
||||
boat.getPosition().setHeading((int) (Math.atan2(-sin, -cos) * 10430.378350470452724949566316381) + 32768);
|
||||
|
||||
boat._vd = new VehicleDeparture(boat, bp.speed1, bp.speed2, bp.x, bp.y, bp.z);
|
||||
boatSpeed = bp.speed1;
|
||||
boat.moveToLocation(bp.x, bp.y, bp.z, (float) bp.speed1);
|
||||
final Collection<PlayerInstance> knownPlayers = boat.getKnownList().getKnownPlayers().values();
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
{
|
||||
return bp.time;
|
||||
}
|
||||
for (PlayerInstance player : knownPlayers)
|
||||
{
|
||||
player.sendPacket(boat._vd);
|
||||
}
|
||||
if (bp.time == 0)
|
||||
{
|
||||
bp.time = 1;
|
||||
}
|
||||
|
||||
return bp.time;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private final String _name;
|
||||
protected BoatTrajet _t1;
|
||||
protected BoatTrajet _t2;
|
||||
protected BoatPathHolder _t1;
|
||||
protected BoatPathHolder _t2;
|
||||
protected int _cycle = 0;
|
||||
protected VehicleDeparture _vd = null;
|
||||
public VehicleDeparture _vd = null;
|
||||
private Map<Integer, PlayerInstance> _inboat;
|
||||
|
||||
public BoatInstance(int objectId, CreatureTemplate template, String name)
|
||||
@@ -500,7 +299,7 @@ public class BoatInstance extends Creature
|
||||
if (player.isInBoat() && (player.getBoat() == this))
|
||||
{
|
||||
ItemInstance it;
|
||||
it = player.getInventory().getItemByItemId(_t1.idWTicket1);
|
||||
it = player.getInventory().getItemByItemId(_t1.ticketId);
|
||||
if ((it != null) && (it.getCount() >= 1))
|
||||
{
|
||||
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
|
||||
@@ -510,14 +309,14 @@ public class BoatInstance extends Creature
|
||||
_inboat.put(i, player);
|
||||
i++;
|
||||
}
|
||||
else if ((it == null) && (_t1.idWTicket1 == 0))
|
||||
else if ((it == null) && (_t1.ticketId == 0))
|
||||
{
|
||||
_inboat.put(i, player);
|
||||
i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
player.teleToLocation(_t1.ntx1, _t1.nty1, _t1.ntz1, false);
|
||||
player.teleToLocation(_t1.ntx, _t1.nty, _t1.ntz, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -537,7 +336,7 @@ public class BoatInstance extends Creature
|
||||
if (player.isInBoat() && (player.getBoat() == this))
|
||||
{
|
||||
ItemInstance it;
|
||||
it = player.getInventory().getItemByItemId(_t2.idWTicket1);
|
||||
it = player.getInventory().getItemByItemId(_t2.ticketId);
|
||||
if ((it != null) && (it.getCount() >= 1))
|
||||
{
|
||||
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
|
||||
@@ -547,14 +346,14 @@ public class BoatInstance extends Creature
|
||||
_inboat.put(i, player);
|
||||
i++;
|
||||
}
|
||||
else if ((it == null) && (_t2.idWTicket1 == 0))
|
||||
else if ((it == null) && (_t2.ticketId == 0))
|
||||
{
|
||||
_inboat.put(i, player);
|
||||
i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
player.teleToLocation(_t2.ntx1, _t2.nty1, _t2.ntz1, false);
|
||||
player.teleToLocation(_t2.ntx, _t2.nty, _t2.ntz, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -575,11 +374,11 @@ public class BoatInstance extends Creature
|
||||
{
|
||||
if (_cycle == 1)
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc1, _t1.sysmess10_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess10);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc1, _t2.sysmess10_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess10);
|
||||
}
|
||||
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
@@ -599,11 +398,11 @@ public class BoatInstance extends Creature
|
||||
{
|
||||
if (_cycle == 1)
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc1, _t1.sysmess5_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess5);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc1, _t2.sysmess5_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess5);
|
||||
}
|
||||
ps = new PlaySound(0, "itemsound.ship_5min", this);
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
@@ -621,11 +420,11 @@ public class BoatInstance extends Creature
|
||||
{
|
||||
if (_cycle == 1)
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc1, _t1.sysmess1_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc1, _t2.sysmess1_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess1);
|
||||
}
|
||||
ps = new PlaySound(0, "itemsound.ship_1min", this);
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
@@ -643,11 +442,11 @@ public class BoatInstance extends Creature
|
||||
{
|
||||
if (_cycle == 1)
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc1, _t1.sysmess0_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc1, _t2.sysmess0_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess0);
|
||||
}
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
{
|
||||
@@ -663,11 +462,11 @@ public class BoatInstance extends Creature
|
||||
{
|
||||
if (_cycle == 1)
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc1, _t1.sysmessb_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmessb);
|
||||
}
|
||||
else
|
||||
{
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc1, _t2.sysmessb_1);
|
||||
sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmessb);
|
||||
}
|
||||
ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
|
||||
for (PlayerInstance player : knownPlayers)
|
||||
@@ -698,27 +497,14 @@ public class BoatInstance extends Creature
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param idWaypoint1
|
||||
* @param idWTicket1
|
||||
* @param ntx1
|
||||
* @param nty1
|
||||
* @param ntz1
|
||||
* @param idnpc1
|
||||
* @param sysmess10
|
||||
* @param sysmess5
|
||||
* @param sysmess1
|
||||
* @param sysmess0
|
||||
* @param sysmessb
|
||||
*/
|
||||
public void setTrajet1(int idWaypoint1, int idWTicket1, int ntx1, int nty1, int ntz1, String idnpc1, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb)
|
||||
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)
|
||||
{
|
||||
_t1 = new BoatTrajet(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name);
|
||||
_t1 = new BoatPathHolder(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name, path);
|
||||
}
|
||||
|
||||
public void setTrajet2(int idWaypoint1, int idWTicket1, int ntx1, int nty1, int ntz1, String idnpc1, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb)
|
||||
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)
|
||||
{
|
||||
_t2 = new BoatTrajet(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name);
|
||||
_t2 = new BoatPathHolder(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name, path);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program 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.
|
||||
*
|
||||
* This program 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 org.l2jmobius.gameserver.model.holders;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.VehicleDeparture;
|
||||
|
||||
/**
|
||||
* @author Maktakien
|
||||
*/
|
||||
public class BoatPathHolder
|
||||
{
|
||||
protected static final Logger LOGGER = Logger.getLogger(BoatPathHolder.class.getName());
|
||||
|
||||
private final Map<Integer, BoatPoint> _path;
|
||||
private final int _max;
|
||||
public int ticketId;
|
||||
public int ntx;
|
||||
public int nty;
|
||||
public int ntz;
|
||||
public String boatName;
|
||||
public String npc;
|
||||
public String sysmess10;
|
||||
public String sysmess5;
|
||||
public String sysmess1;
|
||||
public String sysmessb;
|
||||
public String sysmess0;
|
||||
|
||||
public static class BoatPoint
|
||||
{
|
||||
public int speed1;
|
||||
public int speed2;
|
||||
public int x;
|
||||
public int y;
|
||||
public int z;
|
||||
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)
|
||||
{
|
||||
ticketId = pTicketId;
|
||||
ntx = pNtx;
|
||||
nty = pNty;
|
||||
ntz = pNtz;
|
||||
npc = pNpc;
|
||||
sysmess10 = pSysmess10;
|
||||
sysmess5 = pSysmess5;
|
||||
sysmess1 = pSysmess1;
|
||||
sysmessb = pSysmessb;
|
||||
sysmess0 = pSysmess0;
|
||||
boatName = pBoatname;
|
||||
_path = path;
|
||||
_max = _path.size();
|
||||
}
|
||||
|
||||
public int state(int state, BoatInstance boat)
|
||||
{
|
||||
if (state < _max)
|
||||
{
|
||||
final BoatPoint path = _path.get(state);
|
||||
final double dx = boat.getX() - path.x;
|
||||
final double dy = boat.getY() - path.y;
|
||||
final double distance = Math.sqrt((dx * dx) + (dy * dy));
|
||||
final double cos = dx / distance;
|
||||
final double sin = dy / distance;
|
||||
|
||||
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.boatSpeed = path.speed1;
|
||||
boat.moveToLocation(path.x, path.y, path.z, path.speed1);
|
||||
final Collection<PlayerInstance> knownPlayers = boat.getKnownList().getKnownPlayers().values();
|
||||
if ((knownPlayers == null) || knownPlayers.isEmpty())
|
||||
{
|
||||
return path.time;
|
||||
}
|
||||
for (PlayerInstance player : knownPlayers)
|
||||
{
|
||||
player.sendPacket(boat._vd);
|
||||
}
|
||||
if (path.time == 0)
|
||||
{
|
||||
path.time = 1;
|
||||
}
|
||||
|
||||
return path.time;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.clientpackets;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.BoatManager;
|
||||
import org.l2jmobius.gameserver.datatables.xml.BoatData;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.GetOffVehicle;
|
||||
@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.network.serverpackets.GetOffVehicle;
|
||||
*/
|
||||
public class RequestGetOffVehicle extends GameClientPacket
|
||||
{
|
||||
private int _id;
|
||||
private int _boatId;
|
||||
private int _x;
|
||||
private int _y;
|
||||
private int _z;
|
||||
@@ -34,7 +34,7 @@ public class RequestGetOffVehicle extends GameClientPacket
|
||||
@Override
|
||||
protected void readImpl()
|
||||
{
|
||||
_id = readD();
|
||||
_boatId = readD();
|
||||
_x = readD();
|
||||
_y = readD();
|
||||
_z = readD();
|
||||
@@ -44,14 +44,12 @@ public class RequestGetOffVehicle extends GameClientPacket
|
||||
protected void runImpl()
|
||||
{
|
||||
final PlayerInstance player = getClient().getPlayer();
|
||||
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final BoatInstance boat = BoatManager.getInstance().GetBoat(_id);
|
||||
final GetOffVehicle gon = new GetOffVehicle(player, boat, _x, _y, _z);
|
||||
player.broadcastPacket(gon);
|
||||
final BoatInstance boat = BoatData.getInstance().getBoat(_boatId);
|
||||
player.broadcastPacket(new GetOffVehicle(player, boat, _x, _y, _z));
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.clientpackets;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.BoatManager;
|
||||
import org.l2jmobius.gameserver.datatables.xml.BoatData;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
@@ -24,7 +24,7 @@ import org.l2jmobius.gameserver.network.serverpackets.GetOnVehicle;
|
||||
|
||||
public class RequestGetOnVehicle extends GameClientPacket
|
||||
{
|
||||
private int _id;
|
||||
private int _boatId;
|
||||
private int _x;
|
||||
private int _y;
|
||||
private int _z;
|
||||
@@ -32,7 +32,7 @@ public class RequestGetOnVehicle extends GameClientPacket
|
||||
@Override
|
||||
protected void readImpl()
|
||||
{
|
||||
_id = readD();
|
||||
_boatId = readD();
|
||||
_x = readD();
|
||||
_y = readD();
|
||||
_z = readD();
|
||||
@@ -42,22 +42,20 @@ public class RequestGetOnVehicle extends GameClientPacket
|
||||
protected void runImpl()
|
||||
{
|
||||
final PlayerInstance player = getClient().getPlayer();
|
||||
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final BoatInstance boat = BoatManager.getInstance().GetBoat(_id);
|
||||
final BoatInstance boat = BoatData.getInstance().getBoat(_boatId);
|
||||
if (boat == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final GetOnVehicle gon = new GetOnVehicle(player, boat, _x, _y, _z);
|
||||
player.setInBoatPosition(new Location(_x, _y, _z));
|
||||
player.getPosition().setXYZ(boat.getPosition().getX(), boat.getPosition().getY(), boat.getPosition().getZ());
|
||||
player.broadcastPacket(gon);
|
||||
player.broadcastPacket(new GetOnVehicle(player, boat, _x, _y, _z));
|
||||
player.revalidateZone(true);
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,7 @@
|
||||
package org.l2jmobius.gameserver.network.clientpackets;
|
||||
|
||||
import org.l2jmobius.gameserver.ai.CtrlIntention;
|
||||
import org.l2jmobius.gameserver.instancemanager.BoatManager;
|
||||
import org.l2jmobius.gameserver.datatables.xml.BoatData;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.BoatInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
@@ -26,25 +26,16 @@ import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
|
||||
public class RequestMoveToLocationInVehicle extends GameClientPacket
|
||||
{
|
||||
private final Location _pos = new Location(0, 0, 0);
|
||||
private final Location _originPos = new Location(0, 0, 0);
|
||||
private int _boatId;
|
||||
private Location _targetPos;
|
||||
private Location _originPos;
|
||||
|
||||
@Override
|
||||
protected void readImpl()
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int z;
|
||||
_boatId = readD(); // objectId of boat
|
||||
x = readD();
|
||||
y = readD();
|
||||
z = readD();
|
||||
_pos.setXYZ(x, y, z);
|
||||
x = readD();
|
||||
y = readD();
|
||||
z = readD();
|
||||
_originPos.setXYZ(x, y, z);
|
||||
_targetPos = new Location(readD(), readD(), readD());
|
||||
_originPos = new Location(readD(), readD(), readD());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -62,15 +53,15 @@ public class RequestMoveToLocationInVehicle extends GameClientPacket
|
||||
}
|
||||
else
|
||||
{
|
||||
final BoatInstance boat = BoatManager.getInstance().GetBoat(_boatId);
|
||||
final BoatInstance boat = BoatData.getInstance().getBoat(_boatId);
|
||||
if (boat == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.setBoat(boat);
|
||||
player.setInBoat(true);
|
||||
player.setInBoatPosition(_pos);
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO_IN_A_BOAT, new Location(_pos.getX(), _pos.getY(), _pos.getZ(), 0), new Location(_originPos.getX(), _originPos.getY(), _originPos.getZ(), 0));
|
||||
player.setInBoatPosition(_targetPos);
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO_IN_A_BOAT, _targetPos, _originPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user