Сообщений: 13
Тем: 1
Зарегистрирован: Dec 2012
Репутация:
-2
После удачной загрузки ГС и соединения с ЛС, в ГС постоянно выдает такую вот ошибку... Что за ошибка? С Чем связана и где искать устранение ее?
Перевел, что произошла ошибка при инициализации объекта Object ID = 268484402 java.lang.NullPointerException
в l2c.game.instancemanager.TownManager.getClosestTownName (TownManager.java: 54)
Код: 2013/01/01 03:41:16 WARNING 1 l2c.game.instancemanager.CastleSiegeManager Not found Siege Boss for , id 65
2013/01/01 03:41:16 WARNING 1 l2c.game.instancemanager.CastleSiegeManager Not found Messengers for , id 65
2013/01/01 03:41:16 WARNING 1 l2c.game.instancemanager.CastleSiegeManager Not found Zone for , id 65
2013/01/01 03:41:39 WARNING 1 l2c.game.templates.L2NpcTemplate Quest event not allowed in multiple quests. Skipped addition of Event Type "NPC_FIRST_TALK" for NPC "Lorain" and quest "_187_NikolasHeart".
2013/01/01 03:41:42 WARNING 1 l2c.game.Shutdown AutoRestart scheduled through 1h 19m
2013/01/01 03:42:11 WARNING 26 l2c.game.model.AutoSpawnHandler AutoSpawnHandler: An error occurred while initializing spawn instance (Object ID = 268484402): java.lang.NullPointerException
at l2c.game.instancemanager.TownManager.getClosestTownName(TownManager.java:54)
at l2c.game.model.AutoSpawnHandler$AutoSpawner.run(AutoSpawnHandler.java:429)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run
Сообщений: 145
Тем: 4
Зарегистрирован: Dec 2011
Репутация:
-420
в базе, в таблице итемы, удали данный итем и всё
Улыбаемся и машем:bye:
Сообщений: 2,444
Тем: 59
Зарегистрирован: May 2010
Репутация:
13,020
откройте TownManager.java: 54 строку и посмотрите о чём идёт речь
выделите вашу сборку и нажмите shift+del, далее в гугл на поиск нормальной рабочей сборке без варнингов и косяков со спавном
СЕО Оптимизация сайтов
Сообщений: 13
Тем: 1
Зарегистрирован: Dec 2012
Репутация:
-2
01-04-2013, 12:50 PM
(Сообщение последний раз редактировалось: 01-04-2013, 01:04 PM DeMi.)
gorodetskiy, Я открыл строку 54: там вот такое:
Код: {
return getClosestTown(activeChar).getName();
}
А в AutoSpawnHandler.java вот такое, строка 429:
Код: String nearestTown = TownManager.getInstance().getClosestTownName(npcInst);
Как можно исправить данную ошибку? Буду благодарен очень!
Добавлено через 5 минут
LestatL, это разве решение проблемы? :/
А базе etcitem даже нет такого ID с таким итемом, там максимум до 1859 ID всего.
Есть еще таблица items, но там пусто...
Сообщений: 2,444
Тем: 59
Зарегистрирован: May 2010
Репутация:
13,020
DeMi Написал:gorodetskiy, Я открыл строку 54: там вот такое:
Код: {
return getClosestTown(activeChar).getName();
}
А в AutoSpawnHandler.java вот такое, строка 429:
Код: String nearestTown = TownManager.getInstance().getClosestTownName(npcInst);
Как можно исправить данную ошибку? Буду благодарен очень!
Добавлено через 5 минут
LestatL, это разве решение проблемы? :/
хорошо бы весь метод
СЕО Оптимизация сайтов
Сообщений: 13
Тем: 1
Зарегистрирован: Dec 2012
Репутация:
-2
01-04-2013, 01:28 PM
(Сообщение последний раз редактировалось: 01-04-2013, 01:35 PM DeMi.)
gorodetskiy, вот, пожалуйста TownManager.java:
Код
package l2c.game.instancemanager;
import java.util.logging.Logger;
import l2c.commons.list.GArray;
import l2c.game.model.L2Object;
import l2c.game.model.L2Zone;
import l2c.game.model.L2Zone.ZoneType;
import l2c.game.model.actor.L2Character;
import l2c.game.model.entity.Town;
import l2c.game.tables.MapRegionTable;
public final class TownManager
{
private static TownManager _instance;
private GArray<Town> _towns = new GArray<Town>();
private final static Logger _log = Logger.getLogger(TownManager.class.getName());
private TownManager()
{
GArray<L2Zone> zones = ZoneManager.getInstance().getZoneByType(ZoneType.Town);
if(zones.size() == 0)
_log.warning("Not found zones for Towns!!!");
else
for(L2Zone zone : zones)
_towns.add(new Town(zone.getIndex()));
}
public static TownManager getInstance()
{
if(_instance == null)
_instance = new TownManager();
return _instance;
}
public Town getClosestTown(int x, int y)
{
return getTown(MapRegionTable.getInstance().getMapRegion(x, y));
}
public Town getClosestTown(L2Object activeObject)
{
return getTown(MapRegionTable.getInstance().getMapRegion(activeObject.getX(), activeObject.getY()));
}
public int getClosestTownNumber(L2Character activeChar)
{
return MapRegionTable.getInstance().getMapRegion(activeChar.getX(), activeChar.getY());
}
public String getClosestTownName(L2Character activeChar)
{
return getClosestTown(activeChar).getName();
}
public Town getTown(int townId)
{
for(Town town : _towns)
if(town.getTownId() == townId)
return town;
return null;
}
}
Добавлено через 7 минут
И AutoSpawnHandler
Код
package l2c.game.model;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.util.FastList;
import l2c.Config;
import l2c.commons.list.GArray;
import l2c.database.FiltredPreparedStatement;
import l2c.database.L2DatabaseFactory;
import l2c.database.ThreadConnection;
import l2c.database.utils.DbUtils;
import l2c.game.Announcements;
import l2c.game.L2GameThreadPools;
import l2c.game.idfactory.IdFactory;
import l2c.game.instancemanager.TownManager;
import l2c.game.model.instances.L2NpcInstance;
import l2c.game.tables.NpcTable;
import l2c.game.templates.L2NpcTemplate;
import l2c.util.Location;
import l2c.util.Rnd;
/**
* Auto Spawn Handler
* Allows spawning of a NPC object based on a timer.
* (From the official idea used for the Merchant and Blacksmith of Mammon)
* General Usage:
* - Call registerSpawn() with the parameters listed below.
* int npcId
* int[][] spawnPoints or specify NULL to add points later.
* int initialDelay (If < 0 = default value)
* int respawnDelay (If < 0 = default value)
* int despawnDelay (If < 0 = default value or if = 0, function disabled)
* spawnPoints is a standard two-dimensional int array containing X,Y and Z coordinates.
* The default respawn/despawn delays are currently every hour (as for Mammon on official servers).
* - The resulting AutoSpawnInstance object represents the newly added spawn index.
* - The interal methods of this object can be used to adjust random spawning, for instance a call to setRandomSpawn(1, true); would set the spawn at index 1
* to be randomly rather than sequentially-based.
* - Also they can be used to specify the number of NPC instances to spawn
* using setSpawnCount(), and broadcast a message to all users using setBroadcast().
* Random Spawning = OFF by default
* Broadcasting = OFF by default
*/
public class AutoSpawnHandler
{
protected static Logger _log = Logger.getLogger(AutoSpawnHandler.class.getName());
private static AutoSpawnHandler _instance;
private static final int DEFAULT_INITIAL_SPAWN = 30000; // 30 seconds after registration
private static final int DEFAULT_RESPAWN = 3600000; // 1 hour in millisecs
private static final int DEFAULT_DESPAWN = 3600000; // 1 hour in millisecs
protected TIntObjectHashMap<AutoSpawnInstance> _registeredSpawns;
protected TIntObjectHashMap<ScheduledFuture<AutoSpawner>> _runningSpawns;
protected boolean _activeState = true;
public AutoSpawnHandler()
{
_registeredSpawns = new TIntObjectHashMap<AutoSpawnInstance>();
_runningSpawns = new TIntObjectHashMap<ScheduledFuture<AutoSpawner>>();
restoreSpawnData();
}
public static AutoSpawnHandler getInstance()
{
if(_instance == null)
_instance = new AutoSpawnHandler();
return _instance;
}
public final int size()
{
return _registeredSpawns.size();
}
private void restoreSpawnData()
{
int numLoaded = 0;
ThreadConnection con = null;
FiltredPreparedStatement statement = null;
FiltredPreparedStatement statement2 = null;
ResultSet rset = null, rset2 = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
// Restore spawn group data, then the location data.
statement = con.prepareStatement("SELECT * FROM random_spawn ORDER BY groupId ASC");
statement2 = con.prepareStatement("SELECT * FROM random_spawn_loc WHERE groupId=?");
rset = statement.executeQuery();
while (rset.next())
{
// Register random spawn group, set various options on the created spawn instance.
AutoSpawnInstance spawnInst = registerSpawn(rset.getInt("npcId"), rset.getInt("initialDelay"), rset.getInt("respawnDelay"), rset.getInt("despawnDelay"));
spawnInst.setSpawnCount(rset.getByte("count"));
spawnInst.setBroadcast(rset.getBoolean("broadcastSpawn"));
spawnInst.setRandomSpawn(rset.getBoolean("randomSpawn"));
numLoaded++;
// Restore the spawn locations for this spawn group/instance.
statement2.setInt(1, rset.getInt("groupId"));
rset2 = statement2.executeQuery();
while (rset2.next())
// Add each location to the spawn group/instance.
spawnInst.addSpawnLocation(rset2.getInt("x"), rset2.getInt("y"), rset2.getInt("z"), rset2.getInt("heading"));
DbUtils.close(rset2);
}
if(Config.DEBUG)
_log.config("AutoSpawnHandler: Loaded " + numLoaded + " spawn group(s) from the database.");
}
catch(Exception e)
{
_log.warning("AutoSpawnHandler: Could not restore spawn data: " + e);
}
finally
{
DbUtils.closeQuietly(statement2, rset2);
DbUtils.closeQuietly(con, statement, rset);
}
}
/**
* Registers a spawn with the given parameters with the spawner, and marks it as active. Returns a AutoSpawnInstance containing info about the spawn.
*
* @param int npcId
* @param int[][] spawnPoints
* @param int initialDelay (If < 0 = default value)
* @param int respawnDelay (If < 0 = default value)
* @param int despawnDelay (If < 0 = default value or if = 0, function disabled)
* @return AutoSpawnInstance spawnInst
*/
public AutoSpawnInstance registerSpawn(int npcId, int[][] spawnPoints, int initialDelay, int respawnDelay, int despawnDelay)
{
if(initialDelay < 0)
initialDelay = DEFAULT_INITIAL_SPAWN;
if(respawnDelay < 0)
respawnDelay = DEFAULT_RESPAWN;
if(despawnDelay < 0)
despawnDelay = DEFAULT_DESPAWN;
AutoSpawnInstance newSpawn = new AutoSpawnInstance(npcId, initialDelay, respawnDelay, despawnDelay);
if(spawnPoints != null)
for(int[] spawnPoint : spawnPoints)
newSpawn.addSpawnLocation(spawnPoint);
int newId = IdFactory.getInstance().getNextId();
newSpawn._objectId = newId;
_registeredSpawns.put(newId, newSpawn);
setSpawnActive(newSpawn, true);
if(Config.DEBUG)
_log.config("AutoSpawnHandler: Registered auto spawn for NPC ID " + npcId + " (Object ID = " + newId + ").");
return newSpawn;
}
/**
* Registers a spawn with the given parameters with the spawner, and marks it as active. Returns a AutoSpawnInstance containing info about the spawn. <BR>
* <B>Warning:</B> Spawn locations must be specified separately using addSpawnLocation().
*
* @param int npcId
* @param int initialDelay (If < 0 = default value)
* @param int respawnDelay (If < 0 = default value)
* @param int despawnDelay (If < 0 = default value or if = 0, function disabled)
* @return AutoSpawnInstance spawnInst
*/
public AutoSpawnInstance registerSpawn(int npcId, int initialDelay, int respawnDelay, int despawnDelay)
{
return registerSpawn(npcId, null, initialDelay, respawnDelay, despawnDelay);
}
/**
* Remove a registered spawn from the list, specified by the given spawn instance.
*
* @param AutoSpawnInstance
* spawnInst
* @return boolean removedSuccessfully
*/
public boolean removeSpawn(AutoSpawnInstance spawnInst)
{
if(!isSpawnRegistered(spawnInst))
return false;
try
{
// Try to remove from the list of registered spawns if it exists.
_registeredSpawns.remove(spawnInst.getNpcId());
// Cancel the currently associated running scheduled task.
ScheduledFuture<AutoSpawner> respawnTask = _runningSpawns.remove(spawnInst._objectId);
respawnTask.cancel(false);
if(Config.DEBUG)
_log.config("AutoSpawnHandler: Removed auto spawn for NPC ID " + spawnInst._npcId + " (Object ID = " + spawnInst._objectId + ").");
}
catch(Exception e)
{
_log.warning("AutoSpawnHandler: Could not auto spawn for NPC ID " + spawnInst._npcId + " (Object ID = " + spawnInst._objectId + "): " + e);
return false;
}
return true;
}
/**
* Remove a registered spawn from the list, specified by the given spawn object ID.
*
* @param int objectId
* @return boolean removedSuccessfully
*/
public void removeSpawn(int objectId)
{
removeSpawn(_registeredSpawns.get(objectId));
}
/**
* Sets the active state of the specified spawn.
*
* @param AutoSpawnInstance
* spawnInst
* @param boolean isActive
*/
public void setSpawnActive(AutoSpawnInstance spawnInst, boolean isActive)
{
int objectId = spawnInst._objectId;
if(isSpawnRegistered(objectId))
{
ScheduledFuture<AutoSpawner> spawnTask = null;
if(isActive)
{
AutoSpawner rset = new AutoSpawner(objectId);
if(spawnInst._desDelay > 0)
spawnTask = L2GameThreadPools.getInstance().scheduleGeneralAtFixedRate(rset, spawnInst._initDelay, spawnInst._resDelay);
else
spawnTask = L2GameThreadPools.getInstance().scheduleGeneral(rset, spawnInst._initDelay);
// spawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(rset, spawnInst._initDelay, spawnInst._resDelay);
_runningSpawns.put(objectId, spawnTask);
}
else
{
spawnTask = _runningSpawns.remove(objectId);
if(spawnTask != null)
spawnTask.cancel(false);
}
spawnInst.setSpawnActive(isActive);
}
}
/**
* Returns the number of milliseconds until the next occurrance of the given spawn.
*
* @param AutoSpawnInstance
* spawnInst
* @param long milliRemaining
*/
public final long getTimeToNextSpawn(AutoSpawnInstance spawnInst)
{
int objectId = spawnInst._objectId;
if(!isSpawnRegistered(objectId))
return -1;
return _runningSpawns.get(objectId).getDelay(TimeUnit.MILLISECONDS);
}
/**
* Attempts to return the AutoSpawnInstance associated with the given NPC or Object ID type. <BR>
* Note: If isObjectId == false, returns first instance for the specified NPC ID.
*
* @param int id
* @param boolean isObjectId
* @return AutoSpawnInstance spawnInst
*/
public final AutoSpawnInstance getAutoSpawnInstance(int id, boolean isObjectId)
{
if(isObjectId)
{
if(isSpawnRegistered(id))
return _registeredSpawns.get(id);
}
else
for(AutoSpawnInstance spawnInst : _registeredSpawns.valueCollection())
if(spawnInst._npcId == id)
return spawnInst;
return null;
}
public Map<Integer, AutoSpawnInstance> getAllAutoSpawnInstance(int id)
{
HashMap<Integer, AutoSpawnInstance> spawnInstList = new HashMap<Integer, AutoSpawnInstance>();
for(AutoSpawnInstance spawnInst : _registeredSpawns.valueCollection())
if(spawnInst._npcId == id)
spawnInstList.put(spawnInst._objectId, spawnInst);
return spawnInstList;
}
/**
* Tests if the specified object ID is assigned to an auto spawn.
*
* @param int objectId
* @return boolean isAssigned
*/
public final boolean isSpawnRegistered(int objectId)
{
return _registeredSpawns.containsKey(objectId);
}
/**
* Tests if the specified spawn instance is assigned to an auto spawn.
*
* @param AutoSpawnInstance
* spawnInst
* @return boolean isAssigned
*/
public final boolean isSpawnRegistered(AutoSpawnInstance spawnInst)
{
return _registeredSpawns.containsValue(spawnInst);
}
/**
* AutoSpawner Class <BR>
* <BR>
* This handles the main spawn task for an auto spawn instance, and initializes a despawner if required.
*
* @author
*/
private class AutoSpawner implements Runnable
{
private int _objectId;
AutoSpawner(int objectId)
{
_objectId = objectId;
}
@
public void run()
{
try
{
// Retrieve the required spawn instance for this spawn task.
AutoSpawnInstance spawnInst = _registeredSpawns.get(_objectId);
// If the spawn is not scheduled to be active, cancel the spawn task.
if(!spawnInst.isSpawnActive() || Config.DONTLOADSPAWN)
return;
Location[] locationList = spawnInst.getLocationList();
// If there are no set co-ordinates, cancel the spawn task.
if(locationList.length == 0)
{
_log.info("AutoSpawnHandler: No location co-ords specified for spawn instance (Object ID = " + _objectId + ").");
return;
}
int locationCount = locationList.length;
int locationIndex = Rnd.get(locationCount);
/*
* If random spawning is disabled, the spawn at the next set of co-ordinates after the last. If the index is greater than the number of possible spawns, reset the counter to zero.
*/
if(!spawnInst.isRandomSpawn())
{
locationIndex = spawnInst._lastLocIndex;
locationIndex++;
if(locationIndex == locationCount)
locationIndex = 0;
spawnInst._lastLocIndex = locationIndex;
}
// Set the X, Y and Z co-ordinates, where this spawn will take place.
final int x = locationList[locationIndex].x;
final int y = locationList[locationIndex].y;
final int z = locationList[locationIndex].z;
final int heading = locationList[locationIndex].h;
// Fetch the template for this NPC ID and create a new spawn.
L2NpcTemplate npcTemp = NpcTable.getTemplate(spawnInst.getNpcId());
L2Spawn newSpawn = new L2Spawn(npcTemp);
newSpawn.setLocx(x);
newSpawn.setLocy(y);
newSpawn.setLocz(z);
if(heading != -1)
newSpawn.setHeading(heading);
newSpawn.setAmount(spawnInst.getSpawnCount());
if(spawnInst._desDelay == 0)
newSpawn.setRespawnDelay(spawnInst._resDelay);
L2NpcInstance npcInst = null;
for(int i = 0; i < spawnInst._spawnCount; i++)
{
npcInst = newSpawn.doSpawn(true);
// To prevent spawning of more than one NPC in the exact same spot,
// move it slightly by a small random offset.
npcInst.setXYZ(npcInst.getX() + Rnd.get(50), npcInst.getY() + Rnd.get(50), npcInst.getZ());
// Add the NPC instance to the list of managed instances.
spawnInst.addAttackable(npcInst);
}
String nearestTown = TownManager.getInstance().getClosestTownName(npcInst);
// Announce to all players that the spawn has taken place, with the nearest town location.
if(spawnInst.isBroadcasting() && npcInst != null)
Announcements.announceToAll("The " + npcInst.getName() + " has spawned near " + nearestTown + "!");
if(Config.DEBUG)
_log.info("AutoSpawnHandler: Spawned NPC ID " + spawnInst.getNpcId() + " at " + x + ", " + y + ", " + z + " (Near " + nearestTown + ") for " + spawnInst.getRespawnDelay() / 1000 / 60 + " minutes(s).");
// If there is no despawn time, do not create a despawn task.
if(spawnInst.getDespawnDelay() > 0)
{
AutoDespawner rd = new AutoDespawner(_objectId);
L2GameThreadPools.getInstance().scheduleGeneral(rd, spawnInst.getDespawnDelay() - 1000);
}
}
catch(Exception e)
{
_log.log(Level.WARNING, "AutoSpawnHandler: An error occurred while initializing spawn instance (Object ID = " + _objectId + "): ", e);
}
}
}
/**
* AutoDespawner Class <BR>
* <BR>
* Simply used as a secondary class for despawning an auto spawn instance.
*
* @author
*/
private class AutoDespawner implements Runnable
{
private int _objectId;
AutoDespawner(int objectId)
{
_objectId = objectId;
}
@
public void run()
{
try
{
AutoSpawnInstance spawnInst = _registeredSpawns.get(_objectId);
for(L2NpcInstance npcInst : spawnInst.getAttackableList())
{
npcInst.deleteMe();
spawnInst.removeAttackable(npcInst);
if(Config.DEBUG)
_log.info("AutoSpawnHandler: Spawns removed for spawn instance (Object ID = " + _objectId + ").");
}
}
catch(Exception e)
{
_log.warning("AutoSpawnHandler: An error occurred while despawning spawn (Object ID = " + _objectId + "): " + e);
}
}
}
/**
* AutoSpawnInstance Class <BR>
* <BR>
* Stores information about a registered auto spawn.
*
* @author
*/
public class AutoSpawnInstance
{
protected int _objectId;
protected int _spawnIndex;
protected int _npcId;
protected int _initDelay;
protected int _resDelay;
protected int _desDelay;
protected byte _spawnCount = 1;
protected int _lastLocIndex = -1;
private GArray<L2NpcInstance> _npcList = new GArray<L2NpcInstance>();
private GArray<Location> _locList = new GArray<Location>();
private boolean _spawnActive;
private boolean _randomSpawn = false;
private boolean _broadcastAnnouncement = false;
protected AutoSpawnInstance(int npcId, int initDelay, int respawnDelay, int despawnDelay)
{
_npcId = npcId;
_initDelay = initDelay;
_resDelay = respawnDelay;
_desDelay = despawnDelay;
}
void setSpawnActive(boolean activeValue)
{
_spawnActive = activeValue;
}
boolean addAttackable(L2NpcInstance npcInst)
{
return _npcList.add(npcInst);
}
boolean removeAttackable(L2NpcInstance npcInst)
{
return _npcList.remove(npcInst);
}
public int getObjectId()
{
return _objectId;
}
public int getInitialDelay()
{
return _initDelay;
}
public int getRespawnDelay()
{
return _resDelay;
}
public int getDespawnDelay()
{
return _desDelay;
}
public int getNpcId()
{
return _npcId;
}
public int getSpawnCount()
{
return _spawnCount;
}
public Location[] getLocationList()
{
return _locList.toArray(new Location[_locList.size()]);
}
public L2NpcInstance[] getAttackableList()
{
return _npcList.toArray(new L2NpcInstance[_npcList.size()]);
}
public L2Spawn[] getSpawns()
{
List<L2Spawn> npcSpawns = new FastList<L2Spawn>();
for(L2NpcInstance npcInst : _npcList)
npcSpawns.add(npcInst.getSpawn());
return npcSpawns.toArray(new L2Spawn[npcSpawns.size()]);
}
public void setSpawnCount(byte spawnCount)
{
_spawnCount = spawnCount;
}
public void setRandomSpawn(boolean randValue)
{
_randomSpawn = randValue;
}
public void setBroadcast(boolean broadcastValue)
{
_broadcastAnnouncement = broadcastValue;
}
public boolean isSpawnActive()
{
return _spawnActive;
}
public boolean isRandomSpawn()
{
return _randomSpawn;
}
public boolean isBroadcasting()
{
return _broadcastAnnouncement;
}
public boolean addSpawnLocation(int x, int y, int z, int heading)
{
return _locList.add(new Location(x, y, z, heading));
}
public boolean addSpawnLocation(int[] spawnLoc)
{
if(spawnLoc.length != 3)
return false;
return addSpawnLocation(spawnLoc[0], spawnLoc[1], spawnLoc[2], -1);
}
public Location removeSpawnLocation(int locIndex)
{
try
{
return _locList.remove(locIndex);
}
catch(IndexOutOfBoundsException e)
{
return null;
}
}
}
}
Буду очень благодарен в решении данной проблемы.
Сообщений: 145
Тем: 4
Зарегистрирован: Dec 2011
Репутация:
-420
DeMi Написал:LestatL, это разве решение проблемы? :/
А базе etcitem даже нет такого ID с таким итемом, там максимум до 1859 ID всего.
Есть еще таблица items, но там пусто...
а при чём тут etcitem ? - вам пишет конкретно, что итем (он мб и простой аденой) под таким то номером косячный, а все итемы находятся в таблице items - смотрите лучше и ядро тут не при делах!
Улыбаемся и машем:bye:
Сообщений: 5,862
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Вообщем не может определить ближайший город. Попробуйте сделать ловушку: если null, то присваиваем что-то.
Сообщений: 13
Тем: 1
Зарегистрирован: Dec 2012
Репутация:
-2
LestatL, вот что в items... 
Смотрел даже другие сборки сервером, аналогично, там пусто в items...
Zubastic, прошу прощения, а можно подробнее? Очень бы хотелось избавиться, решить эту проблему... Буду признателен Вам.
Сообщений: 5,862
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
У вас objectid а не item.
|