Вопрос по структуре БД L2Fortress

Теги:
 
+
-
edit
 

Dekster

новичок
Хочу мигрировать со сборки Неро 191rev (L2free based) на L2Fortress.

Вопросы по реализации хранения персонажей в этой сборке.

Одноименные таблицы (chatacters) довольно сильно различаются. Собственно, те значения , которые должны быть в characters в БД L2Fortress я уже перенес. Но как быть с остальными значениями? Класс, опыт и т.д. соответствующего персонажа (как я понял) хранится в character_subclasses (у Неро эти значения храняться в самой chatacters). Но как переносить тогда сами субклассы? Поясняю:
в форте в таблице character_subclasses хранятся следующие значения

char_obj_id,
class_id,
level,
exp,
sp,
curHp,
curMp,
curCp,
maxHp,
maxMp,
maxCp,
active,
isBase

а в неро
char_obj_id,
class_id,
exp,
sp,
level,
class_index

Откуда брать значения maxHp, maxMp, maxCp ? (очевдно, что пре переносе можно будет прописать значения curHp=maxHp). Насколько корректно будет, если я перенесу эти значения с значением '0'? Перезапишутся ли они после смены сабкласса на значения согл классу?

Следующий вопрос: не нашел где в L2Fortress хранятся текущие статы (в неро это все в chatacters).

Если можно, опишите, пожалуйста, кратко какие данные о персонажах где хранятся.

Заранее спасибо.
 
+
-
edit
 
max не используется, это для веб интерфейсов. Сабклассы хранятся там же, только у базового isBase=1
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  

x-net

втянувшийся
переносил друзьям с сборки херро на фортресс... заип***я... самое сложное с субами..(скрипты для них писал).. скиллы могу сказать сразу... можно не переносить.. лучше на сутки включить автопрокачку ...в таблице иттемс нужно в конце добавить 4 столбца.. и таблицу клананов нужно переделывать...альянсы можно удалять сразу.....остальное боле менее совместимо
http://laii.ru  
+
-
edit
 

Dekster

новичок
Вопрос: в чем различия между character_skills и character_skills_save?

Со скиллами там действительно что то не так. При первом просмотре заметил, что в Hero не хранится класс в таблице character_skills.



Может кому нибудь будет интересна моя технология переноса :). Наверняка, не очень оптимально.

1)Импортировал в *.sql нужные таблицы из базы Hero
2)Переименовал в файлах имена таблиц (с characters на characters_tmp).
3)Дропрул базу, создал новую через install в фортрессе
4)Импортнул полученные ранее файлы, те получил старые таблицы в новой базе с др именем.
5) Скриптами INSERT INTO ... SELECT ... заполняю нужные таблицы.
6) временные таблицы _tmp удаляются

Напр для таблицы accounts это выглядит так:

INSERT INTO `accounts`(login,
password,
lastactive,
access_level,
lastIP,
comments,
email
)
SELECT `accounts_tmp`.login,
`accounts_tmp`.password,
`accounts_tmp`.lastactive,
`accounts_tmp`.access_level,
`accounts_tmp`.lastIP,
'0',
'0'
FROM `accounts_tmp`
 

x-net

втянувшийся
это тебе понадобится
UPDATE `character_subclasses` SET `exp` =0 WHERE `level` = 1;
UPDATE `character_subclasses` SET `exp` =68 WHERE `level` = 2;
UPDATE `character_subclasses` SET `exp` =363 WHERE `level` = 3;
UPDATE `character_subclasses` SET `exp` =1168 WHERE `level` = 4;
UPDATE `character_subclasses` SET `exp` =2884 WHERE `level` = 5;
UPDATE `character_subclasses` SET `exp` =6038 WHERE `level` = 6;
UPDATE `character_subclasses` SET `exp` =11287 WHERE `level` = 7;
UPDATE `character_subclasses` SET `exp` =19423 WHERE `level` = 8;
UPDATE `character_subclasses` SET `exp` =31378 WHERE `level` = 9;
UPDATE `character_subclasses` SET `exp` =48229 WHERE `level` = 10;
UPDATE `character_subclasses` SET `exp` =71201 WHERE `level` = 11;
UPDATE `character_subclasses` SET `exp` =101676 WHERE `level` = 12;
UPDATE `character_subclasses` SET `exp` =141192 WHERE `level` = 13;
UPDATE `character_subclasses` SET `exp` =191452 WHERE `level` = 14;
UPDATE `character_subclasses` SET `exp` =254327 WHERE `level` = 15;
UPDATE `character_subclasses` SET `exp` =331864 WHERE `level` = 16;
UPDATE `character_subclasses` SET `exp` =426284 WHERE `level` = 17;
UPDATE `character_subclasses` SET `exp` =539995 WHERE `level` = 18;
UPDATE `character_subclasses` SET `exp` =675590 WHERE `level` = 19;
UPDATE `character_subclasses` SET `exp` =835854 WHERE `level` = 20;
UPDATE `character_subclasses` SET `exp` =1023775 WHERE `level` = 21;
UPDATE `character_subclasses` SET `exp` =1242536 WHERE `level` = 22;
UPDATE `character_subclasses` SET `exp` =1495531 WHERE `level` = 23;
UPDATE `character_subclasses` SET `exp` =1786365 WHERE `level` = 24;
UPDATE `character_subclasses` SET `exp` =2118860 WHERE `level` = 25;
UPDATE `character_subclasses` SET `exp` =2497059 WHERE `level` = 26;
UPDATE `character_subclasses` SET `exp` =2925229 WHERE `level` = 27;
UPDATE `character_subclasses` SET `exp` =3407873 WHERE `level` = 28;
UPDATE `character_subclasses` SET `exp` =3949727 WHERE `level` = 29;
UPDATE `character_subclasses` SET `exp` =4555766 WHERE `level` = 30;
UPDATE `character_subclasses` SET `exp` =5231213 WHERE `level` = 31;
UPDATE `character_subclasses` SET `exp` =5981539 WHERE `level` = 32;
UPDATE `character_subclasses` SET `exp` =6812472 WHERE `level` = 33;
UPDATE `character_subclasses` SET `exp` =7729999 WHERE `level` = 34;
UPDATE `character_subclasses` SET `exp` =8740372 WHERE `level` = 35;
UPDATE `character_subclasses` SET `exp` =9850111 WHERE `level` = 36;
UPDATE `character_subclasses` SET `exp` =11066012 WHERE `level` = 37;
UPDATE `character_subclasses` SET `exp` =12395149 WHERE `level` = 38;
UPDATE `character_subclasses` SET `exp` =13844879 WHERE `level` = 39;
UPDATE `character_subclasses` SET `exp` =15422851 WHERE `level` = 40;
UPDATE `character_subclasses` SET `exp` =17137002 WHERE `level` = 41;
UPDATE `character_subclasses` SET `exp` =18995573 WHERE `level` = 42;
UPDATE `character_subclasses` SET `exp` =21007103 WHERE `level` = 43;
UPDATE `character_subclasses` SET `exp` =23180442 WHERE `level` = 44;
UPDATE `character_subclasses` SET `exp` =25524751 WHERE `level` = 45;
UPDATE `character_subclasses` SET `exp` =28049509 WHERE `level` = 46;
UPDATE `character_subclasses` SET `exp` =30764519 WHERE `level` = 47;
UPDATE `character_subclasses` SET `exp` =33679907 WHERE `level` = 48;
UPDATE `character_subclasses` SET `exp` =36806133 WHERE `level` = 49;
UPDATE `character_subclasses` SET `exp` =40153995 WHERE `level` = 50;
UPDATE `character_subclasses` SET `exp` =45524865 WHERE `level` = 51;
UPDATE `character_subclasses` SET `exp` =51262204 WHERE `level` = 52;
UPDATE `character_subclasses` SET `exp` =57383682 WHERE `level` = 53;
UPDATE `character_subclasses` SET `exp` =63907585 WHERE `level` = 54;
UPDATE `character_subclasses` SET `exp` =70852742 WHERE `level` = 55;
UPDATE `character_subclasses` SET `exp` =80700339 WHERE `level` = 56;
UPDATE `character_subclasses` SET `exp` =91162131 WHERE `level` = 57;
UPDATE `character_subclasses` SET `exp` =102265326 WHERE `level` = 58;
UPDATE `character_subclasses` SET `exp` =114038008 WHERE `level` = 59;
UPDATE `character_subclasses` SET `exp` =126509030 WHERE `level` = 60;
UPDATE `character_subclasses` SET `exp` =146307211 WHERE `level` = 61;
UPDATE `character_subclasses` SET `exp` =167243291 WHERE `level` = 62;
UPDATE `character_subclasses` SET `exp` =189363788 WHERE `level` = 63;
UPDATE `character_subclasses` SET `exp` =212716741 WHERE `level` = 64;
UPDATE `character_subclasses` SET `exp` =237351413 WHERE `level` = 65;
UPDATE `character_subclasses` SET `exp` =271973532 WHERE `level` = 66;
UPDATE `character_subclasses` SET `exp` =308441375 WHERE `level` = 67;
UPDATE `character_subclasses` SET `exp` =346825235 WHERE `level` = 68;
UPDATE `character_subclasses` SET `exp` =387197529 WHERE `level` = 69;
UPDATE `character_subclasses` SET `exp` =429632402 WHERE `level` = 70;
UPDATE `character_subclasses` SET `exp` =474205751 WHERE `level` = 71;
UPDATE `character_subclasses` SET `exp` =532692055 WHERE `level` = 72;
UPDATE `character_subclasses` SET `exp` =606319094 WHERE `level` = 73;
UPDATE `character_subclasses` SET `exp` =696376867 WHERE `level` = 74;
UPDATE `character_subclasses` SET `exp` =804219972 WHERE `level` = 75;
UPDATE `character_subclasses` SET `exp` =931269476 WHERE `level` = 76;
UPDATE `character_subclasses` SET `exp` =1151264834 WHERE `level` = 77;
UPDATE `character_subclasses` SET `exp` =1511257834 WHERE `level` = 78;
UPDATE `character_subclasses` SET `exp` =2099246434 WHERE `level` = 79;
UPDATE `character_subclasses` SET `exp` =4199894964 WHERE `level` = 80;
#UPDATE `character_subclasses` SET `exp` =6299894999 WHERE `level` = 80;

в херро распределение опыта по тупому.. ты можеш быть 79 а опыта быть 1к
http://laii.ru  

x-net

втянувшийся
Dekster> Вопрос: в чем различия между character_skills и character_skills_save?

различие... в сайв сохраняются бафы... а в чар_скиллс твои скиллы...
http://laii.ru  
+
-
edit
 

Dekster

новичок
т.е. нет смысла переносить character_skills_save?
 
UA SoulKeeper #21.03.2007 19:01
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

нет
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  
+
-
edit
 

Dekster

новичок
Вопрос по таблице Items: насколько верен приведенный ниже скрипт?

INSERT INTO `items`(
owner_id,
object_id,
item_id,
count,
enchant_level,
loc,
loc_data,
price_sell,
price_buy,
time_of_use,
custom_type1,
custom_type2,
source,
destination,
create_type,
create_time
)
SELECT `items_tmp`.owner_id,
`items_tmp`.object_id,
`items_tmp`.item_id,
`items_tmp`.count,
`items_tmp`.enchant_level,
`items_tmp`.loc,
`items_tmp`.loc_data,
`items_tmp`.price_sell,
`items_tmp`.price_buy,
`items_tmp`.time_of_use,
`items_tmp`.custom_type1,
'0',
NULL,
NULL,
NULL,
NULL
FROM `items_tmp`

Интересует насколько верно писать значения NULL для последних 4 полей?

При таком методе переноса вещей возникают ошибки. Например, персонаж снимает одетую вещь, а одеть обратно уже не может.
 
Это сообщение редактировалось 31.03.2007 в 12:00
+
-
edit
 

Dekster

новичок
Также при перезаходе некоторые вещи пропадают.Сборка 5377. выкладываю кусок лога ошибок

1175323765531 WARNING 25 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268591629; itemID=1466; count=3908; owner=268500708; source=0; destination=0; create_type=null; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323765531 WARNING 25 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268591629; itemID=1466; count=3907; owner=268500708; source=0; destination=0; create_type=null; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323766687 WARNING 26 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268591629; itemID=1466; count=3906; owner=268500708; source=0; destination=0; create_type=null; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323766687 WARNING 26 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268591629; itemID=1466; count=3905; owner=268500708; source=0; destination=0; create_type=null; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323766734 WARNING 25 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268491133; itemID=3820; count=4; owner=268517330; source=0; destination=268517330; create_type=QuestState.giveItems; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323767609 WARNING 59 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268591629; itemID=1466; count=3904; owner=268500708; source=0; destination=0; create_type=null; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323767609 WARNING 59 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268493786; itemID=1832; count=1; owner=268500708; source=21084; destination=268500708; create_type=L2Attackable.dropItem; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
1175323784500 WARNING 19 l2f.gameserver.model.instances.L2ItemInstance Could not insert item 268491022; itemID=5535; count=2; owner=268581526; source=21296; destination=268581526; create_type=L2Attackable.dropItem; exception: java.sql.SQLException: Table storage engine for 'items' doesn't have this option
 
Это сообщение редактировалось 31.03.2007 в 14:00

sys

разработчик l2j-сервера
По поводу таблицы Items:

Для целых вещей:
create_type - откуда появилсо, например L2Attackable.dropItem
source - id моба из которого была выбита вещь
destination - id чара поднявшего эту вещь
create_time - timestamp

У меня для create_type в базе наблюдаются следующие значения:
AdminCreateItem.createItem[74]
CharacterCreate[178]
FishItem_add
From fish
Inventory.dropItem
JBForth.inventory_add81
L2Attackable.doSweepDrop
L2Attackable.dropItem
L2Attackable.levelSoulCrystals
L2Clan.completeAcademy
L2Party.distributeAdena
L2Player.removeHenna
L2SignsPriestInstance.onBypassFeedback18
L2SignsPriestInstance.onBypassFeedback2
L2SignsPriestInstance.onBypassFeedback9
PcInventory.addAdena
QuestState.giveItems
RecipeController
RequestBuyItem[145]
RequestCrystallizeItem[83]
RequestEnchantItem[179]
RequestMultiSellChoose[1002|1]
RequestMultiSellChoose[1002|10]
RequestMultiSellChoose[1002|11]
RequestMultiSellChoose[1002|12]
RequestMultiSellChoose[1002|13]
RequestMultiSellChoose[1002|14]
RequestMultiSellChoose[1002|16]
RequestMultiSellChoose[1002|17]
RequestMultiSellChoose[1002|2]
 
+
-
edit
 

Dekster

новичок
ошибки, как мне кажется , возникают именно из-за некорректной установки этих параметров. Какое значение по умолчанию вы посоветуете поставить (вместо Null). Может так? :
create_type значение L2Attackable.dropItem
source - Null или 0
destination - Id персонажа
create_time - Null или 0

Попробовал так. Тогда ошибок еще больше.
 
Это сообщение редактировалось 31.03.2007 в 15:14
+
-
edit
 

Dekster

новичок
Вообщем интересуют алгоритмы (хотя бы кратко) присваивания тех или иных значений для параметров create_type,source,destination . Чувствую, придется писать case в зависимости от параметра loc или еще как нибудь.

Существуют ли такие значения по умолчанию чтобы не возникало ошибок ни с какими вещами???
 

Dekster

новичок
x-net> переносил друзьям с сборки херро на фортресс... заип***я... самое сложное с субами..(скрипты для них писал).. скиллы могу сказать сразу... можно не переносить.. лучше на сутки включить автопрокачку ...в таблице иттемс нужно в конце добавить 4 столбца

подскажи пожалуйста, какие значения ты выставлял в этих последних 4 столбцах
 
+
-
edit
 

Dekster

новичок
Попробовал перенос всего на другой ревизии. Скорее всего дело в этом. На 5178 все вроде ок. На 5377 куча ошибок.
 

x-net

втянувшийся
x-net>> переносил друзьям с сборки херро на фортресс... заип***я... самое сложное с субами..(скрипты для них писал).. скиллы могу сказать сразу... можно не переносить.. лучше на сутки включить автопрокачку ...в таблице иттемс нужно в конце добавить 4 столбца
Dekster> подскажи пожалуйста, какие значения ты выставлял в этих последних 4 столбцах

любые.. от них мало что зависит.. там доп.. инфа.. самый глюк будет с дубликатами..
http://laii.ru  
+
-
edit
 

Dekster

новичок
Еще один вопрос. Перенес таблицы clan_data и clan_privs. Вторую перенес в точности как была на предыдущей сборке (неро 191). Ошибка в том, что из КВХ нельзя ни взять ни положить вещи. В чем может быть дело? (подозрение, что параметр `privilleges` имеет в форте другие значения)
 

sys

разработчик l2j-сервера
У меня на лайве clan_privs.privilleges:
Rows privilleges
13 0
9 4
3 6
2 130
2 134
1 1022
1 1024
2 1028
1 1030
1 1038
1 2052
1 3072
5 11268
1 11276
1 11278
1 11334
2 32766
1 295944
1 297992
1 8387588
1 8387590
1 8387722
1 8388540
12 8388606
 
+
-
edit
 

Dekster

новичок
Довольно много неоднозначных значений... Если не сложно, можно уточнить какие значения `privilleges` у КЛ? Попробую перенести только их, остльные права перераздадут. Ошибка следующего рода Could not restore clan privs by rank: java.lang.NullPointerException (в старой сборке значение rank имеет значение 0). Какое значение rank может быть для КЛ?
 

sys

разработчик l2j-сервера
Для свежесозданного клана записи в clan_privs отсутсвуют.
 
+
-
edit
 

Dekster

новичок
Очередной вопрос: что (кроме записи leader_id в таблице clan_data) определяет, что мгрок является лидером клана? Проблема в том, что КЛ не может пользоваться (брать вещи) из КВХ.
 

sys

разработчик l2j-сервера
А что мешает создать клан и посмотреть?
 
+
-
edit
 

Dekster

новичок
В том то и дело... Был создан клан, все работает.Посмотрел clan_privs для этого клана (записей нет - делаю вывод что дело не в привилегиях). Самое интересное, что у некоторых перенесенных со старой сборки кланов все работает (в смысле их КЛ берут и кладут свободно вещи в КВХ). Но у некоторых кл не может брать вещи. Вот и хотел уточнить что на уровне базы является необходимыми условиями того (кроме записи leader_id в таблице clan_data) что перс является КЛ. Сравнивал данные по таблицам clan_data и сharacters.
 

sys

разработчик l2j-сервера
Эксперименты помогут.
 
+
-
edit
 

Dekster

новичок
Да это понятно...
Хотел только узнать какие еще параметры кроме leader_id проверяются у персонажа при попытке взять вещь из КВХ
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru