war3ft

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
34
Реакции
-1
Ошибка
ошибка в базе
ОС
Linux
Amx Mod X
1
Билд
1
ReGamedll
1
Версия Metamod
1
Список метамодулей
1
Список плагинов
1
Автор плагина
1
Версия плагина
1
Исходный код
1
привет
мод warcraft 3 frozen throne
пытаюсь поднять на debian 12 и mariadb(последней)
мод 2005 года, ясен красен все версии mysql уже устарели, но я костылями запустил в связке с maridb и кажется подключение есть.
но тут проблема, я не понимаю как должна выглядеть база, те теоретически я могу но не хочу ибо геморно и я надеюсь может у кого есть дефолтная база для wc3 мода? что-то в инете не нашел. он по идее должен создать всю таблицу сам, но нефига у него не получается ))) кароче нужна база пустая но с правильными колонками для wc3 мода, поделитесь?
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
274
Реакции
133
Помог
13 раз(а)
scoofcs, Ну смотри в начало логов - там где идет попытка создания таблиц - что там за ошибки и их исправляй.
Там поидее в запросах на создание таблиц в конец нужно добавить TYPE=MyISAM
 
Последнее редактирование:
Сообщения
35
Реакции
9
Возможно такое, что там, где вы брали мод, в основных либо же дополнительных ресурсах вы могли пропустить файл с расширением .sql , который как раз содержит пустую готовую структуру базы данных под этот мод. В противном случае, если такового нет, вам действительно придётся исправить неполадки, препятствующие автоматическому созданию, либо придётся создавать таблицу(-цы) вручную.
 
Сообщения
34
Реакции
-1
scoofcs, Ну смотри в начало логов - там где идет попытка создания таблиц - что там за ошибки и их исправляй.
Там поидее в запросах на создание таблиц в конец нужно добавить TYPE=MyISAM
не. с новой mariadb надо Engine=MyISAM;

Возможно такое, что там, где вы брали мод, в основных либо же дополнительных ресурсах вы могли пропустить файл с расширением .sql , который как раз содержит пустую готовую структуру базы данных под этот мод. В противном случае, если такового нет, вам действительно придётся исправить неполадки, препятствующие автоматическому созданию, либо придётся создавать таблицу(-цы) вручную.
не было там такого.

в общем я пофиксил все баги которые летели в консоль связанные с базой и создал базу ручками прописав туда все что было в скрипте
Код:
{
    "CREATE TABLE IF NOT EXISTS `wc3_player` ( `player_id` int(8) unsigned NOT NULL auto_increment, `player_steamid` varchar(25) NOT NULL default '', `player_ip` varchar(20) NOT NULL default '', `player_name` varchar(35) NOT NULL default '', `time` timestamp NOT NULL, PRIMARY KEY  (`player_id`), KEY `player_name` (`player_name`), KEY `player_ip` (`player_ip`), KEY `player_steamid` (`player_steamid`) ) Engine=MyISAM;",
    "CREATE TABLE IF NOT EXISTS `wc3_player_extra` ( `player_id` int(8) unsigned NOT NULL , `player_steamid` varchar(25) NOT NULL , `player_ip` varchar(20) NOT NULL , `player_name` varchar(35) NOT NULL , PRIMARY KEY ( `player_id` )) Engine=MyISAM ;",
    "CREATE TABLE IF NOT EXISTS `wc3_player_race` ( `player_id` int(8) unsigned NOT NULL default '0', `race_id` tinyint(4) unsigned NOT NULL default '0', `race_xp` int(8) default NULL, PRIMARY KEY  (`player_id`,`race_id`) ) Engine=MyISAM;",
    "CREATE TABLE IF NOT EXISTS `wc3_player_skill` ( `player_id` int(8) unsigned NOT NULL default '0', `skill_id` tinyint(4) unsigned NOT NULL default '0', `skill_level` tinyint(4) unsigned NOT NULL default '0', PRIMARY KEY  (`player_id`,`skill_id`) ) Engine=MyISAM;",
    "CREATE TABLE IF NOT EXISTS `wc3_web_race` ( `race_id` tinyint(4) unsigned NOT NULL default '0', `race_lang` char(2) NOT NULL default '', `race_name` varchar(100) default NULL, `race_description` text NOT NULL, PRIMARY KEY  (`race_id`,`race_lang`) ) Engine=MyISAM;",
    "CREATE TABLE IF NOT EXISTS `wc3_web_skill` ( `skill_id` tinyint(4) unsigned NOT NULL default '0', `skill_lang` char(2) NOT NULL default '', `skill_name` varchar(100) default NULL, `skill_description` text NOT NULL, `skill_type` tinyint(4) unsigned NOT NULL default '0', `skill_owner` tinyint(4) unsigned NOT NULL default '0', PRIMARY KEY  (`skill_id`,`skill_lang`) ) Engine=MyISAM;",
    "CREATE TABLE IF NOT EXISTS `wc3_config` ( `config_id` varchar(50) NOT NULL, `config_value` varchar(255) NOT NULL, PRIMARY KEY  (`config_id`) ) Engine=MyISAM;"
}
но теперь другая проблема
в таблицу wc3_player_race на одного и того же юзера, постоянно пишутся новые данные (не обновляя старые) скрин 2.
это норма? у кого есть War3ft мод у вас такое же поведение?

и при рестарте сервера так же пишутся новые значения в wc3_config

странное поведение. разве данные не должны браться из базы а не перезаписываться ? это баг уже скрипта? в консоле больше нет ошибок. вижу только это
Код:
[WAR3FT] MySQL X database connection successful
дальше все пишется в базу коррректно, но непонятно почему не меняются старые данные и именно пишутся новые и строки в базе постоянно добавляются, кажется это некорректное поведение


в коде нашел такую строку
я в С++ не очень


Код:
    // No matter what always update the XP levels
    for ( new iLevel = 0; iLevel <= MAX_LEVELS; iLevel++ )
    {
        formatex( szQuery, 255, "REPLACE INTO `wc3_config` ( `config_id`, `config_value` ) VALUES ( 'level%d_xp', '%d' );", iLevel, XP_GetByLevel( iLevel ) );
        query = SQL_PrepareQuery( g_DBConn, szQuery );

        if ( !SQL_Execute( query ) )
        {
            MYSQLX_Error( query, szQuery, 7 );

            return;
        }
    }
но кажется про wc3_config они это делают намеренно ?
 

Download all Attachments

  • 7.3 KB Просмотры: 13
  • 88.4 KB Просмотры: 13
Сообщения
34
Реакции
-1
кароче по wc3_config поставил первую колонку уникальной. перестало срать в базу новыми(одинаковыми) записями. по остальному оставил, победить дубли в базе по race_id и race_xp не удалось. но есть идея, нужен еще столбец player_id + race_id и тогда не будет срать записями но это нужна доп логика внутри модуля. видимо это изначальная недоработка
 
Сообщения
34
Реакции
-1
все разобрался. нужно было выставить ключи в базе которые в конце прописаны

Код:
PRIMARY KEY  (`player_id`), KEY `player_name` (`player_name`), KEY `player_ip` (`player_ip`), KEY `player_steamid` (`player_steamid`) ) Engine=MyISAM;
теперь все работает корректно
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу