Zp - Проблема с аммо-банком, крашит сервер |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
+
) или ссылку на плагин который вызывает у вас вопросы.
|
|
Zp - Проблема с аммо-банком, крашит сервер |
ifx
|
22.2.2016, 20:18
Сообщение
|
![]() |
Ребята, привет!
У меня на зомби сервере ZP 4.3 стоит вот такой плагин - https://forums.alliedmods.net/showthread.php?t=240152 Сохраняет аммопаки в банк через бд и подгружает их соотв тоже. Перебопровабовал все возможные банки которые работают с mysql и этот пожалуй лучший, который сохраняет и при падении сервера и при выходе\коннекте игрока, все вроде *** если бы не одно НО - он крашит сервер черт знает как. Вот лог: Цитата [AMXX] Run time error 1: forced exit [AMXX] [1] zp_yaab.sma::plugin_init (line 47) [AMXX] [0] zp_yaab.sma::MySql_Init (line 65) Вот код плагина код Код //-----------------DEFINES-------------------------------------- //--Comment out ZP50 if you're using zp50 base plugins. Commend out ZPA is using Zombie Plague Advanced. //--Keep the both commented it you're using ZP4.3 //#define ZP50 //#define ZPA //--Comment out USINGAUTHID if you want to save with authid, else saving by name(default) #define USINGAUTHID //-------------------------------------------------------------- #include <amxmodx> #include <amxmisc> #include <sqlx> #if defined ZP50 #include <zp50_ammopacks> #else #if defined ZPA #include <zombie_plague_advance> #else #include <zombieplague> #endif #endif #define DB_NONE 0 #define DB_CONNECTING 1 #define DB_READY 2 #define TASK_BANK 78956 new Handle:Conexiune = Empty_Handle new Handle:SqlConnection new g_Error[512], g_db_status new Host[64], User[64], Pass[64], Db[64] new authid[33][32] public plugin_init() { register_plugin("[ZP] Yet Another Ammo Bank", "1.2", "EDUTz") new configsDi[64], configfile[128] get_configsdir(configsDi, 63) format(configfile, 127, "%s/sql.cfg", configsDi) if(file_exists(configfile)) { server_cmd("exec %s", configfile) } else log_amx("[AMXX] zp_yaab.amxx : sql.cfg not found in the config folder.") register_cvar("yaab", "EDUTz", (FCVAR_SERVER|FCVAR_SPONLY)); g_db_status = DB_NONE MySql_Init() } public MySql_Init() { if(g_db_status == DB_CONNECTING) return g_db_status = DB_CONNECTING new ErrorCode get_cvar_string("amx_sql_host", Host, 63) get_cvar_string("amx_sql_user", User, 63) get_cvar_string("amx_sql_pass", Pass, 63) get_cvar_string("amx_sql_db", Db, 63) Conexiune = SQL_MakeDbTuple(Host,User,Pass,Db) SqlConnection = SQL_Connect(Conexiune,ErrorCode,g_Error,charsmax(g_Error)) if(SqlConnection == Empty_Handle) set_fail_state(g_Error) new Handle:Queries Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS zombie_ammo_bank (user varchar(32),ammo INT(11))") if(!SQL_Execute(Queries)) { SQL_QueryError(Queries,g_Error,charsmax(g_Error)) set_fail_state(g_Error) g_db_status = DB_NONE } else g_db_status = DB_READY SQL_FreeHandle(Queries) SQL_FreeHandle(SqlConnection) } public client_putinserver(id) { get_user_authid(id, authid[id], 31); Load_MySql(id) set_task(60.0, "SaveAmmobank", id+TASK_BANK, _, _, "b") } public plugin_end() { if(g_db_status == DB_READY) SQL_FreeHandle(Conexiune) } public client_disconnect(id) { if(Conexiune != Empty_Handle) Save_MySql(id); remove_task(id+TASK_BANK) } public Load_MySql(id) { if(g_db_status != DB_READY) return new Data[1], szTemp[512] Data[0] = id #if defined USINGAUTHID format(szTemp,charsmax(szTemp),"SELECT * FROM zombie_ammo_bank WHERE zombie_ammo_bank.user = ^"%s^";", authid[id]) #else new szName[32] get_user_name(id, szName, charsmax(szName)) format(szTemp,charsmax(szTemp),"SELECT * FROM zombie_ammo_bank WHERE zombie_ammo_bank.user = ^"%s^";", szName) #endif SQL_ThreadQuery(Conexiune,"register_client",szTemp,Data,1) } public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(FailState == TQUERY_CONNECT_FAILED) { log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error) } else if(FailState == TQUERY_QUERY_FAILED) { log_amx("Load Query failed. [%d] %s", Errcode, Error) } new id, szTemp[512] id = Data[0] if(SQL_NumResults(Query) < 1) { #if defined USINGAUTHID format(szTemp,charsmax(szTemp),"INSERT INTO zombie_ammo_bank ( user , ammo )VALUES (^"%s^", %i);", authid[id], get_cvar_num("zp_starting_ammo_packs") ) #else new szName[32] get_user_name(id, szName, charsmax(szName)) format(szTemp,charsmax(szTemp),"INSERT INTO zombie_ammo_bank ( user , ammo )VALUES (^"%s^", %i);", szName, get_cvar_num("zp_starting_ammo_packs") ) #endif SQL_ThreadQuery(Conexiune,"IgnoreHandle",szTemp) } else { #if defined ZP50 zp_ammopacks_set(id, SQL_ReadResult(Query, 1)) #else zp_set_user_ammo_packs(id, SQL_ReadResult(Query, 1)) #endif } return PLUGIN_HANDLED } public SaveAmmobank(id) { id -= TASK_BANK if(!is_user_connected(id)) return if(g_db_status != DB_READY) return #if defined ZP50 new packs = zp_ammopacks_get(id) #else new packs = zp_get_user_ammo_packs(id) #endif new szTemp[512] if ( packs > get_cvar_num("zp_starting_ammo_packs") ) { #if defined USINGAUTHID format(szTemp,charsmax(szTemp),"UPDATE zombie_ammo_bank SET ammo = %i WHERE zombie_ammo_bank.user = ^"%s^";", packs, authid[id]) #else new szName[32] get_user_name(id, szName, charsmax(szName)) format(szTemp,charsmax(szTemp),"UPDATE zombie_ammo_bank SET ammo = %i WHERE zombie_ammo_bank.user = ^"%s^";", packs, szName) #endif SQL_ThreadQuery(Conexiune,"IgnoreHandle",szTemp) } } public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { SQL_FreeHandle(Query) return PLUGIN_HANDLED } public Save_MySql(id) { if(!is_user_connected(id)) return if(g_db_status != DB_READY) return #if defined ZP50 new packs = zp_ammopacks_get(id) #else new packs = zp_get_user_ammo_packs(id) #endif new szTemp[512] if ( packs > get_cvar_num("zp_starting_ammo_packs") ) { #if defined USINGAUTHID format(szTemp,charsmax(szTemp),"UPDATE zombie_ammo_bank SET ammo = %i WHERE zombie_ammo_bank.user = ^"%s^";",packs, authid[id]) #else new szNume[32] get_user_name(id, szNume, charsmax(szNume)) format(szTemp,charsmax(szTemp),"UPDATE zombie_ammo_bank SET ammo = %i WHERE zombie_ammo_bank.user = ^"%s^";",packs, szNume) #endif SQL_ThreadQuery(Conexiune,"IgnoreHandle",szTemp) } } Как я понимаю где-то при коннекте к БД идет сбой и все падает нахрен. Есть кто разбирается, может подсказать куда копать? Автор плагина на оленях не был 3 месяца, помощи оттуда ждать бестолку.
Отредактировал: meloman, - 22.2.2016, 21:30
Причина: Выдано устное предупреждение! ![]() держать паблик сервер кс 1.6 экономически не выгодно
|
|
|
|
![]() ![]() |