Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Спавн НПЦ (https://forum.zone-game.info/showthread.php?t=18976)

Evesis 01.04.2012 20:48

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

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

Double 01.04.2012 22:48

Re: Спавн НПЦ
 
Цитата:

Сообщение от Evesis (Сообщение 174532)
Хелп. Сборка РТ 1.4.2
Делаю спавн нпц гмом. После рестарта нпц пропадает.
Помогите где копать. Исходы есть. С меня ++++

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

Хиро - смотреть на то чтобы прописывалось в бд
Когда нпц спавн ошибки возникают в гс?

Evesis 02.04.2012 11:24

Re: Спавн НПЦ
 
Да возникают вот такие
Цитата:

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.MySQLIntegrityCons traintViolationException: Dupl
icate entry '59616' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(Unknown Sou
rce)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:40 9)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:1041)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:3562)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:3494)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:19 60)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java :2114)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionIm pl.java:2696)
at com.mysql.jdbc.PreparedStatement.executeInternal(P reparedStatement.ja
va:2105)
at com.mysql.jdbc.PreparedStatement.execute(PreparedS tatement.java:1367)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement .execute(NewProxyPr
eparedStatement.java:989)
at net.sf.l2j.database.FiltredPreparedStatement.execu te(FiltredPreparedS
tatement.java:38)
at net.sf.l2j.gameserver.datatables.SpawnTable.addNew Spawn(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.RequestBypassT oServer.runImpl(Req
uestBypassToServer.java:98)
at net.sf.l2j.gameserver.clientpackets.L2GameClientPa cket.run(L2GameClie
ntPacket.java:70)
at java.util.concurrent.ThreadPoolExecutor$Worker.run Task(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (Unknown Source)
at java.lang.Thread.run(Unknown Source)

Yorie 02.04.2012 11:29

Re: Спавн НПЦ
 
Похоже, кто-то накосячил с ключами в таблице спауна, либо криво сделали сам запрос на запись в эту таблицу. Можете показать структуру таблицы spawnlist'а?

Evesis 02.04.2012 13:08

Re: Спавн НПЦ
 
Могу вот смотри
Цитата:

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),
...

Yorie 02.04.2012 13:24

Re: Спавн НПЦ
 
Теперь надо посмотреть вот сюда: net.sf.l2j.gameserver.datatables.SpawnTable.addNew Spawn(SpawnTable.java:279) и найти запрос, который выполняется при спауне. Либо это тупит IdFactory, либо кто-то криво написал запрос. Возможно, что в запросе пытаюсь напрмую проставить значение в поле `id` (оно же является первичным ключом), что совершенно не нужно.

Evesis 02.04.2012 13:33

Re: Спавн НПЦ
 
..............................
Цитата:

279 строка try
{
con = L2DatabaseFactory.getInstance().getConnection();
if (spawn.isCustom())
{
statement = con.prepareStatement("INSERT INTO `custom_spawnlist` (id,count,npc_templateid,locx,locy,locz,heading,re spawn_delay,loc_id) values(?,?,?,?,?,?,?,?,?)");
}
else
{
statement = con.prepareStatement("INSERT INTO `spawnlist` (id,count,npc_templateid,locx,locy,locz,heading,re spawn_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();
}

linliss 02.04.2012 13:36

Re: Спавн НПЦ
 
найдите на свне лыжи коммит, в котором удалены ключи в ядре и spawnlist.sql и поставьте себе, ибо ключи в спаунлисте это конечно верх маразма:redlol:

Yorie 02.04.2012 15:56

Re: Спавн НПЦ
 
Цитата:

Сообщение от Evesis (Сообщение 174733)
..............................

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.


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

linliss 02.04.2012 16:03

Re: Спавн НПЦ
 
Цитата:

Сообщение от Yorie (Сообщение 174768)
ID спауна генерится и генерится криво. Решение на скорую руку:
1. Вместо

->

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

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


3. Тут

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


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

этого мало, вот полное решение проблемы

http://trac.l2jserver.com/changeset/4440


Текущее время: 14:09. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot