Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Спавн НПЦ
#1
Хелп. Сборка РТ 1.4.2
Делаю спавн нпц гмом. После рестарта нпц пропадает.
Помогите где копать. Исходы есть. С меня ++++

И даю себе хиро после релога пропадает как исправить.
Ответ
#2
Evesis Написал:Хелп. Сборка РТ 1.4.2
Делаю спавн нпц гмом. После рестарта нпц пропадает.
Помогите где копать. Исходы есть. С меня ++++

И даю себе хиро после релога пропадает как исправить.

Хиро - смотреть на то чтобы прописывалось в бд
Когда нпц спавн ошибки возникают в гс?
Nope
Ответ
#3
Да возникают вот такие
Цитата:SpawnTable: Could not store spawn in the DB:com.mysql.jdbc.exceptions.jdbc4.MySQ
LIntegrityConstraintViolationException: Duplicate entry '59616' for key 'PRIMARY
'
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Dupl
icate entry '59616' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2696)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2105)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1367)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPr
eparedStatement.java:989)
at net.sf.l2j.database.FiltredPreparedStatement.execute(FiltredPreparedS
tatement.java:38)
at net.sf.l2j.gameserver.datatables.SpawnTable.addNewSpawn(SpawnTable.ja
va:279)
at net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSpawn.spawnMo
nster(AdminSpawn.java:259)
at net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSpawn.useAdmi
nCommand(AdminSpawn.java:170)
at net.sf.l2j.gameserver.clientpackets.RequestBypassToServer.runImpl(Req
uestBypassToServer.java:98)
at net.sf.l2j.gameserver.clientpackets.L2GameClientPacket.run(L2GameClie
ntPacket.java:70)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ответ
#4
Похоже, кто-то накосячил с ключами в таблице спауна, либо криво сделали сам запрос на запись в эту таблицу. Можете показать структуру таблицы spawnlist'а?
// aka Deft
Ответ
#5
Могу вот смотри
Цитата:DROP TABLE IF EXISTS `spawnlist`;
CREATE TABLE `spawnlist` (
`id` int(11) NOT NULL auto_increment,
`location` varchar(40) NOT NULL default '',
`count` int(9) NOT NULL default '0',
`npc_templateid` int(9) NOT NULL default '0',
`locx` int(9) NOT NULL default '0',
`locy` int(9) NOT NULL default '0',
`locz` int(9) NOT NULL default '0',
`randomx` int(9) NOT NULL default '0',
`randomy` int(9) NOT NULL default '0',
`heading` int(9) NOT NULL default '0',
`respawn_delay` int(9) NOT NULL default '0',
`loc_id` int(9) NOT NULL default '0',
`periodOfDay` decimal(2,0) default '0',
PRIMARY KEY (id),
KEY `key_npc_templateid` (`npc_templateid`)
) ENGINE=MyISAM;

--
-- Dumping data for table `spawnlist`
--

INSERT INTO `spawnlist` VALUES
(25015,'oren07_npc1819_002',1,'31034',-40307,34037,-3595,0,0,0,60,0,0),
(25016,'oren07_npc1819_002',1,'31034',-38317,45945,-3595,0,0,0,60,0,0),
(25017,'oren07_npc1819_002',1,'31034',-58353,57473,-3694,0,0,0,60,0,0),
(25018,'oren07_npc1819_gd02',1,'31845',-44052,35000,-3340,0,0,0,60,0,0),
(25019,'oren07_npc1819_gd02',1,'31850',-43951,35178,-3340,0,0,0,60,0,0),
(25020,'oren07_npc1819_gd02',1,'31845',-41725,38403,-3075,0,0,38730,60,0,0),
(25021,'oren07_npc1819_gd02',1,'31850',-34807,39420,-3350,0,0,7107,60,0,0),
(25022,'oren07_npc1819_gd02',1,'31845',-43388,42026,-3264,0,0,19418,60,0,0),
(25023,'oren07_npc1819_gd02',1,'31850',-39923,43789,-3295,0,0,61709,60,0,0),
(25024,'oren07_npc1819_gd02',1,'31845',-39160,56340,-3672,0,0,0,60,0,0),
(25025,'oren07_npc1819_gd02',1,'31845',-39242,55145,-3311,0,0,36558,60,0,0),
(25026,'oren07_npc1819_gd02',1,'31850',-38858,56162,-3672,0,0,0,60,0,0),
(25027,'oren07_npc1819_gd02',1,'31845',-37432,50772,-3500,0,0,0,60,0,0),
(25028,'oren07_npc1819_gd02',1,'31850',-37130,50950,-3500,0,0,0,60,0,0),
(25029,'oren07_npc1819_gd02',1,'31845',-58612,59008,-3480,0,0,0,60,0,0),
(25030,'oren07_npc1819_gd02',1,'31850',-58209,58652,-3480,0,0,0,60,0,0),
(25031,'oren07_npc1819_gd02',1,'31845',-40929,66496,-3363,0,0,29071,60,0,0),
(25032,'oren07_npc1819_gd02',1,'31845',-38541,65704,-3684,0,0,0,60,0,0),
(25033,'oren07_npc1819_gd02',1,'31845',-59648,65796,-3420,0,0,0,60,0,0),
(25034,'oren07_npc1819_gd02',1,'31845',-59547,65974,-3420,0,0,0,60,0,0),
(25035,'oren07_npc1819_gd02',1,'31845',-58002,71183,-3124,0,0,29186,60,0,0),
(25036,'oren07_npc1819_gd02',1,'31845',-56778,66914,-3332,0,0,47034,60,0,0),
(25037,'oren07_npc1819_gd02',1,'31850',-53924,71961,-3249,0,0,52812,60,0,0),
(25038,'oren07_npc1819_gd02',1,'31845',-49978,71901,-3314,0,0,51363,60,0,0),
(25039,'oren07_npc1819_gd02',1,'31845',-51286,73331,-3275,0,0,58368,60,0,0),
(25040,'oren07_npc1819_gd02',1,'31850',-49546,75858,-3407,0,0,9201,60,0,0),
(25041,'oren07_npc1819_gd02',1,'31845',-58487,75286,-3185,0,0,33475,60,0,0),
(25042,'oren07_npc1819_gd02',1,'31845',-62069,74012,-3269,0,0,41721,60,0,0),
(25043,'oren07_npc1819_gd02',1,'31850',-56038,77026,-3120,0,0,52033,60,0,0),
(25044,'oren07_npc1819_gd02',1,'31845',-56296,80356,-3696,0,0,0,60,0,0),
(25045,'oren07_npc1819_gd02',1,'31845',-52503,84616,-3574,0,0,10079,60,0,0),
(25046,'oren07_npc1819_gd02',1,'31850',-56195,80534,-3696,0,0,0,60,0,0),
...
Ответ
#6
Теперь надо посмотреть вот сюда: net.sf.l2j.gameserver.datatables.SpawnTable.addNew Spawn(SpawnTable.java:279) и найти запрос, который выполняется при спауне. Либо это тупит IdFactory, либо кто-то криво написал запрос. Возможно, что в запросе пытаюсь напрмую проставить значение в поле `id` (оно же является первичным ключом), что совершенно не нужно.
// aka Deft
Ответ
#7
..............................
Цитата:279 строка try
{
con = L2DatabaseFactory.getInstance().getConnection();
if (spawn.isCustom())
{
statement = con.prepareStatement("INSERT INTO `custom_spawnlist` (id,count,npc_templateid,locx,locy,locz,heading,respawn_delay,loc_id) values(?,?,?,?,?,?,?,?,?)");
}
else
{
statement = con.prepareStatement("INSERT INTO `spawnlist` (id,count,npc_templateid,locx,locy,locz,heading,respawn_delay,loc_id) values(?,?,?,?,?,?,?,?,?)");
}
statement.setInt(1, spawn.getId());
statement.setInt(2, spawn.getAmount());
statement.setInt(3, spawn.getNpcId());
statement.setInt(4, spawn.getLocx());
statement.setInt(5, spawn.getLocy());
statement.setInt(6, spawn.getLocz());
statement.setInt(7, spawn.getHeading());
statement.setInt(8, spawn.getRespawnDelay() / 1000);
statement.setInt(9, spawn.getLocation());
statement.execute();
statement.close();
}
Ответ
#8
найдите на свне лыжи коммит, в котором удалены ключи в ядре и spawnlist.sql и поставьте себе, ибо ключи в спаунлисте это конечно верх маразма:redlol:
Ответ
#9
Evesis Написал:..............................

ID спауна генерится и генерится криво. Решение на скорую руку:
1. Вместо
Цитата:(id,count,npc_templateid,locx,locy,locz,heading,re spawn_delay,loc_id) values(?,?,?,?,?,?,?,?,?)
->
Цитата:(count,npc_templateid,locx,locy,locz,heading,re spawn_delay,loc_id) values(?,?,?,?,?,?,?,?)
в обоих местах;

2. Удаляете строку
Цитата:statement.setInt(1, spawn.getId());

3. Тут
Цитата:statement.setInt(2, spawn.getAmount());
statement.setInt(3, spawn.getNpcId());
statement.setInt(4, spawn.getLocx());
statement.setInt(5, spawn.getLocy());
statement.setInt(6, spawn.getLocz());
statement.setInt(7, spawn.getHeading());
statement.setInt(8, spawn.getRespawnDelay() / 1000);
statement.setInt(9, spawn.getLocation());
Номера от 1 до 8.


Заработает. Но вообще неизвестно, как это себя поведет, потому что на выходе получите расхождение в идентификаторах, которые хранятся в памяти сервера и которые хранятся в БД.
Не легче ли обновить сборку?
// aka Deft
Ответ
#10
Yorie Написал:ID спауна генерится и генерится криво. Решение на скорую руку:
1. Вместо

->

в обоих местах;

2. Удаляете строку


3. Тут

Номера от 1 до 8.


Заработает. Но вообще неизвестно, как это себя поведет, потому что на выходе получите расхождение в идентификаторах, которые хранятся в памяти сервера и которые хранятся в БД.
Не легче ли обновить сборку?
этого мало, вот полное решение проблемы

http://trac.l2jserver.com/changeset/4440
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Спавн итемов finfan 3 1,799 01-31-2013, 10:47 PM
Последний пост: finfan
  Очень быстрый спавн мобов. Жужик 1 1,871 07-10-2010, 08:15 PM
Последний пост: Дух системы
  Как сделать авто-спавн НПС по глобальному событию? Rus. 5 3,323 06-18-2009, 07:45 AM
Последний пост: kakady
  Спавн РБ HukuTa 4 3,213 07-22-2008, 02:34 PM
Последний пост: DarkLoki

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)