War3Ft 3.0 Краш сервера при подключении к БД |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
War3Ft 3.0 Краш сервера при подключении к БД |
Deimos7
|
19.6.2022, 1:15
Сообщение
|
|
|
Нужна помощь! Возможно кто-то на этом форуме имеет опыт работы с плагинами создающими подключение к БД и сможет дать хороший совет.
Пытаюсь развернуть War3FT мод версия 3.0 RC 13, которую можно скачать с официального форума авторов этого мода. Я не буду сбрасывать содержимое всего wa3ft.cfg, так как мне лично кажется, что именно в этом случае это вовсе неважно. Сбрасываю только те настройки, которые непосредственно относяться к подключению к БД. Мне кажется важно отметить, что сервер не крашится если не подсоединять его к какой либо БД впринципи. Я имею введу если оставить cvar wc3_save_xp со значением 0. Именно так, я кстати определил, что имею проблему с неработающим модом именно из-за проблем с подключением к базе. wa3ft.cfg // Warcraft 3 Frozen Throne Configuration File // Saving Options wc3_save_xp 1 // Enables saving of experience (default is 0) wc3_save_xp_db 1 // How should we save XP? (0 = SQLite, 1 = MySQL) wc3_save_by 0 // What should I save this as? steam id = 0, IP = 1, name = 2 (default is 0) wc3_save_pruning 0 // Automatically prunes the database of old users at a mapchange (default is 0) wc3_days_before_delete 0 // However many days before deleting XP or pruning from the database (default is 31) wc3_save_end_round 1 // Save xp at the end of each round (may cause lag, default is 1) wc3_sql_dbhost "" // Host Name wc3_sql_dbuser "" // User Name wc3_sql_dbpass "" // Password wc3_sql_dbname "" // Database Name ... Конечно первая мысль возникает, что я мог неправильно ввести данные для подключения. Скажу, что я лично тестил подключение через Sequelize Pro (SQL клиент для Mac OS X). Я даже пробовал разные базы данных. У меня уже есть БДшки, которые я держу на хостинге mirohost. Их поддержка сказала мне, что у них там стоит MariaDB 10.2. И кстати, с их базами данных не было никаких проблем ранее в контексте cs 1.6 серверов. Одна база сейчас прекрасно взаимодействует с FreshBans, а другая сейчас подключена к более старой версии варкрафт мода - War3FT 2.3.2, который у меня установлен на другом сервере, и тоже проблем с соединением нет. А второй тип БД, который я пробовал подключить - это MySQL 5.7 на хостинге Украина, и получил такой же результат - сервер сразу же падает. Прикол в том, что падает он без каких либо ошибок в логах, дающих явно понять в чем причина. Сам игровой сервер я держу на хостинге cshost.com.ua и там в консоли выводит Segmentation Fault. Выглядит это примерно вот так из их веб версии консоли: Cкрытый текст ![]() Вообщем, я полез в исходники мода и начал вставлять server_print в разных местах, чтоб понять как далеко я зайду, и что именно распечатается в консоли перед крашем, а что нет. В итоге, начиная с plugin_init() из scripting/war3ft.sma и продвигаясь дальше я стал выводить свои принты в консоли и дошел до иницизиализации соединения с базой данных, которая в этом моде описанна в файле scripting/war3ft/db/db_mysqlx.inl. Результат - в консоли сервера вывелись все принты, которые я добавил до вызова SQL_Connect() db_mysqlx.inl ![]() Код Код // Initiate the connection to the MySQL database MYSQLX_Init() { server_print("MYSQLX_Init..."); // Determine the database information new szHost[64], szUser[32], szPass[32], szDB[128], szError[256], iErrNum; get_pcvar_string( CVAR_wc3_sql_dbhost , szHost , 63 ); get_pcvar_string( CVAR_wc3_sql_dbuser , szUser , 31 ); get_pcvar_string( CVAR_wc3_sql_dbpass , szPass , 31 ); get_pcvar_string( CVAR_wc3_sql_dbname , szDB , 127 ); // Set up the tuple that will be used for threading g_DBTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB ); server_print("Created tuple."); // Attempt to connect g_DBConn = SQL_Connect( g_DBTuple, iErrNum, szError, 255 ); server_print("iErrNum: %d", iErrNum); server_print("szError: %s", szError); if ( !g_DBConn ) { WC3_Log( true, "[MYSQLX] Database Connection Failed: [%d] %s", iErrNum, szError ); return; } server_print( "[WAR3FT] MySQL X database connection successful" ); bDBAvailable = true; // Create tables! MYSQLX_CreateTables(); // Do we need to update the skills/races ? MYSQLX_UpdateWebTable(); // Do we need to run a conversion? MYSQLX_Convert(); } Консоль с моими принтами: Консоль после моих принтов ![]() У меня пока закончились идеи как справиться с этой проблемой и подключиться к БД поэтому прошу помощи. Сам я далеко не скриптер и опыта у меня мало - буду благодарен любым идеям и советам. Желания исправить ошибку есть - советуйте, будем пробовать ;) Я упомянул выше, что у меня есть так же сервер с этим же модом более ранней версии и там проблем с соединением к MySQL БД нету. Да, это так, но я могу здесь ошибаться (не было пока времени сравнивать исходный код обоих версий плагинов), но способ подключения к БД там кажется несколько другой. Версия варкрафт мода 2.3.2, о которой сейчас идет речь создавалась во времена очень старой версии amxmodx - еще во времена 1.7.1. У меня кстати стоит сейчас версия Amxmodx 1.8.2.
Отредактировал: Deimos7, - 19.6.2022, 1:51
|
|
|
|
georgeml
|
19.6.2022, 7:53
Сообщение
|
|
|
|
Поблагодарили 1 раз
|
|
Deimos7
|
19.6.2022, 11:36
Сообщение
|
|
|
georgeml, я попробовал выставить timeout на 10 в SQL_MakeDbTuple и сделал проверку с паузой как написал
Gecko. Код:
Спасибо ребят, но пока результат такой же с точки зрения распечатки консоли. Красным обвел свои собственно вставленные server_print'ы Консоль перед падением ![]()
georgeml, да логично, что сервер вроде бы и не должен падать на SQL_Connect, а возвращать как минимум ошибку, если что-то пойдет не так, но пока как видишь все выглядит именно так.Кстати, если кто-то из толковых скриптеров будет проходить мимо этой темы и захочет в этом всем покопаться, можете даже писать мне в личку - обменяемся контактами, так будет оперативней. Я в долгу точно не останусь. Если мы развернем мод именно этой версии и соединим его с БД у меня на голом сервере - я готов и денюжкой отблагодарить. Мне сейчас неплохо было бы сэкономить время на все эти разборки ))
Отредактировал: Deimos7, - 19.6.2022, 11:38
|
|
|
|
Deimos7
|
19.6.2022, 12:01
Сообщение
|
|
|
Тебе проще на форуме разработчика спросить, скачай плагин с официальной репы, проверь на совместимость и прочитай внимательно инструкцию по установке. Если у других всё работает а у тебя нет, значит ты что-то делаешь не так. Может допустил ошибку при редактировании настроек? Да впринципи, вот тот сайт на который я бросал ссылку в первом посте и этот форум - это и есть те официальные ресурсы с которого, как мне верится и выгружают этот мод. http://war3ft.com/downloads.php Cкрытый текст ![]() http://wc3mods.net/forums/viewforum.php?f=2 Cкрытый текст ![]() P.S: То есть я не пробовал искать этот мод где то на гите потому что думаю, что если и найду, то найду там тоже самое ;)
Отредактировал: Deimos7, - 19.6.2022, 12:01
|
|
|
|
dimamelnic
|
20.6.2022, 18:40
Сообщение
|
|
|
|
|
|
|
Deimos7
|
20.6.2022, 22:08
Сообщение
|
|
|
Привет! Не знаю, в курсе ли ты, есть ещё апдейт от русского скриптера SMaster`a, он там много всего интересного придумал к вар3моду, что стало тоже своеобразной "классикой" Чекнуть и скачать можно тут - http://perfect-soft.su/ Хотя может ты просто хочешь старый добрый олдовый варик запустить) тем не менее, ресурс может быть полезен Привет! У нас идея пока что начать с классики и кастомизировать её под себя в будущем. Тем самым добавляя новые классы, предметы и всякие прочие эксклюзивные плюшки, о которых пока еще рано говорить - всему свое время. Легче просто переписывать оригинал. Но спасибо за линк. Может в будущем будем черпать идеи и оттуда ;)
Отредактировал: Deimos7, - 20.6.2022, 22:09
|
|
|
|
![]() ![]() |