Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
23/06/2021, 03:22 AM
(Última modificación: 25/06/2021, 07:15 PM por Meliodas. Edited 1 time in total.)
Estoy utilizando SQLITE para guardar datos el problema es que a la hora de guardar se produce un frezeo en el servidor de 4 a 5 segundos a que se debe eso y como lo podria solucionar
Pawn Básico no critiquen xD
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
1. Posiblemente la consulta que usas es muy larga. Muéstrala, tal vez se pueda optimizar.
2. Usa SQL_ThreadQuery.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(23/06/2021, 09:27 AM)Mía escribió: 1. Posiblemente la consulta que usas es muy larga. Muéstrala, tal vez se pueda optimizar.
2. Usa SQL_ThreadQuery. Es esto?
Código PHP: public CheckTabla() { new szTemp[768] formatex(szTemp, charsmax(szTemp), "\ CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K) g_query = SQL_PrepareQuery(g_tuple, szTemp) if(SQL_Execute(g_query)) { server_print("Se realizo el registro") } else server_print("Error en el registro") }
Pawn Básico no critiquen xD
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
(23/06/2021, 01:45 PM)Meliodas escribió: Es esto?
Código PHP: public CheckTabla() { new szTemp[768] formatex(szTemp, charsmax(szTemp), "\ CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K) g_query = SQL_PrepareQuery(g_tuple, szTemp) if(SQL_Execute(g_query)) { server_print("Se realizo el registro") } else server_print("Error en el registro") }
Tienes problemas cuando guardas y ahí no guardas nada, muestra las consultas donde guardas los datos.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(23/06/2021, 02:08 PM)Valentina. escribió: Tienes problemas cuando guardas y ahí no guardas nada, muestra las consultas donde guardas los datos. disculpa
Código PHP: public SaveGlobalPlayerData(index) { if(!is_user_connected(index) || is_user_bot(index) || is_user_hltv(index)) { return; }
new szTemp[456]; formatex(szTemp, charsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^"", SQLX_TABLA, COLUMN_AUTHID, g_szPlayerAuthdID[index]); g_query = SQL_PrepareQuery(g_tuple, szTemp);
if(SQL_Execute(g_query)) { new iKills = SQL_ReadResult(g_query, 2); new iDeaths = SQL_ReadResult(g_query, 3); new iHeadShots = SQL_ReadResult(g_query, 4); new iBombPlanteds = SQL_ReadResult(g_query, 5); new iBombDefused = SQL_ReadResult(g_query, 6); new Float:flDamage; SQL_ReadResult(g_query, 7, flDamage); new iRounds = SQL_ReadResult(g_query, 8); new iPugs = SQL_ReadResult(g_query, 9); new iKill3k = SQL_ReadResult(g_query, 10); new iKill4k = SQL_ReadResult(g_query, 11); new iKill5k = SQL_ReadResult(g_query, 12);
formatex(szTemp, charsmax(szTemp), "UPDATE %s SET `%s`=^"%s^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%0.02f^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^" WHERE %s=^"%s^"", SQLX_TABLA, COLUMN_NAME, g_szPlayerName[index], COLUMN_KILLS, iKills + g_PlayerData[index][Kills], COLUMN_DEATHS, iDeaths + g_PlayerData[index][Deaths], COLUMN_HEADSHOTS, iHeadShots + g_PlayerData[index][HeadShots], COLUMN_BOMBPLANTEDS, iBombPlanteds + g_PlayerData[index][BombPlanteds], COLUMN_BOMBDEFUSED, iBombDefused + g_PlayerData[index][BombDefuseds], COLUMN_DAMAGES, flDamage + g_PlayerData[index][Damages], COLUMN_ROUNDS, iRounds + g_PlayerData[index][Rounds], COLUMN_PUGS, iPugs + g_PlayerData[index][Pugs], COLUMN_KILLS3K, iKill3k + g_PlayerData[index][Kills3k], COLUMN_KILLS4K, iKill4k + g_PlayerData[index][Kills4k], COLUMN_KILLS5K, iKill5k + g_PlayerData[index][Kills5k], COLUMN_AUTHID, g_szPlayerAuthdID[index]); g_query = SQL_PrepareQuery(g_tuple, szTemp); if(SQL_Execute(g_query)) console_print(index, "Datos Actualizados"); else console_print(index, "Error Actualizar datos"); } }
Pawn Básico no critiquen xD
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
23/06/2021, 03:25 PM
(Última modificación: 23/06/2021, 03:26 PM por Hinami. Edited 1 time in total.)
te vendría mejor hacer un select al entrar al servidor y le agregas un estado (conectado, digamos), y a la hora del update solo se lo permites hacer si ese estado es conectado, asi evitas esas 2 consultas seguidas.
usa SQL_ThreadQuery
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(23/06/2021, 03:25 PM)Hinami escribió: te vendría mejor hacer un select al entrar al servidor y le agregas un estado (conectado, digamos), y a la hora del update solo se lo permites hacer si ese estado es conectado, asi evitas esas 2 consultas seguidas.
usa SQL_ThreadQuery
soy algo nuevo con sqlite me podrias dar un ejemplo
Pawn Básico no critiquen xD
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
(23/06/2021, 03:30 PM)Meliodas escribió: soy algo nuevo con sqlite me podrias dar un ejemplo EJ
https://github.com/Chris4589/rangos_csgo...rangos.sma
Usa SQL_ThreadQuery
Solo ignora la función MySQL_Init() y busca el equivalente a sqlite (mira el plugin de r0ma)
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
23/06/2021, 04:08 PM
(Última modificación: 23/06/2021, 04:09 PM por Meliodas. Edited 1 time in total.)
una cosa que no entiendo del SQL_ThreadQuery
Código PHP: SQL_ThreadQuery( g_hTuple, "DataHandler", szQuery, iData, 2 );
DataHandler lo tengo que cambiar por mi funcion de PlayerRegister
Código PHP: public PlayerRegister(index) { if(!is_user_connected(index) || is_user_bot(index) || is_user_hltv(index)) { return; }
g_iStatus[index] = Logueado;
new szTemp[2048]; formatex(szTemp, charsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K, g_szPlayerAuthdID[index], g_szPlayerName[index]); g_query = SQL_PrepareQuery(g_tuple, szTemp); if(SQL_Execute(g_query)) { console_print(index, "No se encontro resultados, creando nuevos datos..."); } else console_print(index, "Error al registrar"); }
Pawn Básico no critiquen xD
Mensajes: 1,040
Temas: 89
Registro en: Jun 2015
Reputación:
21
24/06/2021, 02:23 PM
(Última modificación: 24/06/2021, 02:23 PM por HK-416. Edited 2 times in total.)
Código PHP: public PlayerRegister(index) { new szTemp[2048], data[1]; g_iStatus[index] = Logueado;
formatex(szTemp, charsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K, g_szPlayerAuthdID[index], g_szPlayerName[index]); data[0] = index; SQL_ThreadQuery(g_tuple, "handler_registrar", szTemp, data, 1); }
public handler_registrar(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { new id = Data[0];
if (fail_query(FailState, Error, Errcode)) { console_print(id, "Error al registrar"); return PLUGIN_HANDLED; } console_print(id, "No se encontro resultados, creando nuevos datos..."); return PLUGIN_CONTINUE }
fail_query(FailState, Error[], Errcode) { switch(FailState) { case TQUERY_CONNECT_FAILED: { log_to_file("sql_logs.log", "Error en la conexion [%i] [%s]", Errcode, Error); return true; } case TQUERY_QUERY_FAILED: { log_to_file("sql_logs.log", "Error en la consulta [%i] [%s]" , Errcode, Error); return true; } } return false; }
Ni lo probe
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(24/06/2021, 02:23 PM)HK-416 escribió: Código PHP: public PlayerRegister(index) { new szTemp[2048], data[1]; g_iStatus[index] = Logueado;
formatex(szTemp, charsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K, g_szPlayerAuthdID[index], g_szPlayerName[index]); data[0] = index; SQL_ThreadQuery(g_tuple, "handler_registrar", szTemp, data, 1); }
public handler_registrar(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { new id = Data[0];
if (fail_query(FailState, Error, Errcode)) { console_print(id, "Error al registrar"); return PLUGIN_HANDLED; } console_print(id, "No se encontro resultados, creando nuevos datos..."); return PLUGIN_CONTINUE }
fail_query(FailState, Error[], Errcode) { switch(FailState) { case TQUERY_CONNECT_FAILED: { log_to_file("sql_logs.log", "Error en la conexion [%i] [%s]", Errcode, Error); return true; } case TQUERY_QUERY_FAILED: { log_to_file("sql_logs.log", "Error en la consulta [%i] [%s]" , Errcode, Error); return true; } } return false; }
Ni lo probe
me lanza estos logs en consola
Código: [SQLITE] Invalid query handle: 0
[AMXX] Displaying debug trace (plugin "Pug-Stats.amxx", version "1.0")
[AMXX] Run time error 10: native error (native "SQL_NumResults")
[AMXX] [0] Pug-Stats.sma::CheckTabla (line 340)
[AMXX] [1] Pug-Stats.sma::SQLXInit (line 327)
[AMXX] [2] Pug-Stats.sma::plugin_init (line 86)
Código PHP: public SQLXInit() { new get_type[12]; SQL_SetAffinity("sqlite"); SQL_GetAffinity(get_type, sizeof get_type);
if(!equali(get_type, "sqlite")) { log_to_file("SQLITE_ERROR.txt", "Error de conexion"); return pause("a"); } g_tuple = SQL_MakeDbTuple("", "", "", SQLX_DATABASE); CheckTabla(); return PLUGIN_CONTINUE }
public CheckTabla() { new szTemp[768], data[1]; static index; formatex(szTemp, charsmax(szTemp), "\ CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K); data[0] = index; SQL_ThreadQuery(g_tuple, "handler_registrar", szTemp, data, 1); if(SQL_NumResults(Query)) //Aqui { server_print("Se realizo el registro") } else server_print("Error en el registro") }
Pawn Básico no critiquen xD
Mensajes: 1,040
Temas: 89
Registro en: Jun 2015
Reputación:
21
Código PHP: public CheckTabla() { new szTemp[768]; formatex(szTemp, charsmax(szTemp), "\ CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K); //data[0] = index; / static index; = No es necesario ya que no necesitas mandar la ID de un cliente o ID de un estado SQL_ThreadQuery(g_tuple, "handler_checktable", szTemp); }
public handler_checktable(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if (fail_query(FailState, Error, Errcode)) { return PLUGIN_HANDLED; }
server_print("Consulta realizada correctamente") return PLUGIN_CONTINUE }
Si usas "SQL_ThreadQuery" no esperes respuesta en la misma función por asi decirlo, el "data" que puse antes es por que mandabas el ID de un cliente en este caso es una simple verificacion de tabla no lo vas a necesitar y si luego necesitas usar el "SQL_ReadResult", "SQL_NumResults" y demas usalo dentro del handler "handler_checktable" luego del abajo del "if (fail_query(FailState, Error, Errcode))" que verifica si hubo algún tipo de fallo
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(24/06/2021, 04:17 PM)HK-416 escribió: Código PHP: public CheckTabla() { new szTemp[768]; formatex(szTemp, charsmax(szTemp), "\ CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K); //data[0] = index; / static index; = No es necesario ya que no necesitas mandar la ID de un cliente o ID de un estado SQL_ThreadQuery(g_tuple, "handler_checktable", szTemp); }
public handler_checktable(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if (fail_query(FailState, Error, Errcode)) { return PLUGIN_HANDLED; }
server_print("Consulta realizada correctamente") return PLUGIN_CONTINUE }
Si usas "SQL_ThreadQuery" no esperes respuesta en la misma función por asi decirlo, el "data" que puse antes es por que mandabas el ID de un cliente en este caso es una simple verificacion de tabla no lo vas a necesitar y si luego necesitas usar el "SQL_ReadResult", "SQL_NumResults" y demas usalo dentro del handler "handler_checktable" luego del abajo del "if (fail_query(FailState, Error, Errcode))" que verifica si hubo algún tipo de fallo
entiendo muchas gracias pero ahora tengo este ultimo error creo
Código: [SQLITE] Invalid query handle: 0
[AMXX] Displaying debug trace (plugin "Pug-Stats.amxx", version "1.0")
[AMXX] Run time error 10: native error (native "SQL_NumResults")
[AMXX] [0] Pug-Stats.sma::DisplayPlayerStats (line 491)
Código PHP: public DisplayPlayerStats(index, target) { if(!is_user_connected(index)) { return; }
if(!is_user_connected(target)) { client_print_color(index, print_team_default, "%s El usuario no está conectado", g_szTag); return; }
new szTemp[256]; formatex(szTemp, charsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^"", SQLX_TABLA, COLUMN_AUTHID, g_szPlayerAuthdID[target]); g_iStatus[index] = LOGUEADO; SQL_ThreadQuery(g_tuple, "handler_registrar", szTemp);
if(SQL_NumResults(Query)) { new iKills = SQL_ReadResult(Query, 2); new iDeaths = SQL_ReadResult(Query, 3); new iHeadShots = SQL_ReadResult(Query, 4); new iBombPlanteds = SQL_ReadResult(Query, 5); new iBombDefused = SQL_ReadResult(Query, 6); new Float:flDamage; SQL_ReadResult(Query, 7, flDamage); new iRounds = SQL_ReadResult(Query, 8); new iPlayingPugs = SQL_ReadResult(Query, 9); new iKills3k = SQL_ReadResult(Query, 10); new iKills4k = SQL_ReadResult(Query, 11); new iKills5k = SQL_ReadResult(Query, 12); } }
Pawn Básico no critiquen xD
Mensajes: 1,040
Temas: 89
Registro en: Jun 2015
Reputación:
21
Código PHP: public DisplayPlayerStats(index, target) { if(!is_user_connected(index)) { return; }
if(!is_user_connected(target)) { client_print_color(index, print_team_default, "%s El usuario no está conectado", g_szTag); return; }
new szTemp[256], data[1]; formatex(szTemp, charsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^"", SQLX_TABLA, COLUMN_AUTHID, g_szPlayerAuthdID[target]); g_iStatus[index] = LOGUEADO;
if(SQL_NumResults(Query)) { new iKills = SQL_ReadResult(Query, 2); new iDeaths = SQL_ReadResult(Query, 3); new iHeadShots = SQL_ReadResult(Query, 4); new iBombPlanteds = SQL_ReadResult(Query, 5); new iBombDefused = SQL_ReadResult(Query, 6); new Float:flDamage; SQL_ReadResult(Query, 7, flDamage); new iRounds = SQL_ReadResult(Query, 8); new iPlayingPugs = SQL_ReadResult(Query, 9); new iKills3k = SQL_ReadResult(Query, 10); new iKills4k = SQL_ReadResult(Query, 11); new iKills5k = SQL_ReadResult(Query, 12); }
data[0] = index;
SQL_ThreadQuery(g_tuple, "handler_get_player_stats", szTemp, data, 1); }
public handler_get_player_stats(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if (fail_query(FailState, Error, Errcode)) { return PLUGIN_HANDLED; }
new id = data[0]; // te dejo el id del jugador por si lo necesitas por algo if(SQL_NumResults(Query)) { new iKills = SQL_ReadResult(Query, 2); new iDeaths = SQL_ReadResult(Query, 3); new iHeadShots = SQL_ReadResult(Query, 4); new iBombPlanteds = SQL_ReadResult(Query, 5); new iBombDefused = SQL_ReadResult(Query, 6); new Float:flDamage; SQL_ReadResult(Query, 7, flDamage); new iRounds = SQL_ReadResult(Query, 8); new iPlayingPugs = SQL_ReadResult(Query, 9); new iKills3k = SQL_ReadResult(Query, 10); new iKills4k = SQL_ReadResult(Query, 11); new iKills5k = SQL_ReadResult(Query, 12); }
return PLUGIN_CONTINUE }
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(24/06/2021, 05:11 PM)HK-416 escribió: Código PHP: public DisplayPlayerStats(index, target) { if(!is_user_connected(index)) { return; }
if(!is_user_connected(target)) { client_print_color(index, print_team_default, "%s El usuario no está conectado", g_szTag); return; }
new szTemp[256], data[1]; formatex(szTemp, charsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^"", SQLX_TABLA, COLUMN_AUTHID, g_szPlayerAuthdID[target]); g_iStatus[index] = LOGUEADO;
if(SQL_NumResults(Query)) { new iKills = SQL_ReadResult(Query, 2); new iDeaths = SQL_ReadResult(Query, 3); new iHeadShots = SQL_ReadResult(Query, 4); new iBombPlanteds = SQL_ReadResult(Query, 5); new iBombDefused = SQL_ReadResult(Query, 6); new Float:flDamage; SQL_ReadResult(Query, 7, flDamage); new iRounds = SQL_ReadResult(Query, 8); new iPlayingPugs = SQL_ReadResult(Query, 9); new iKills3k = SQL_ReadResult(Query, 10); new iKills4k = SQL_ReadResult(Query, 11); new iKills5k = SQL_ReadResult(Query, 12); }
data[0] = index;
SQL_ThreadQuery(g_tuple, "handler_get_player_stats", szTemp, data, 1); }
public handler_get_player_stats(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if (fail_query(FailState, Error, Errcode)) { return PLUGIN_HANDLED; }
new id = data[0]; // te dejo el id del jugador por si lo necesitas por algo if(SQL_NumResults(Query)) { new iKills = SQL_ReadResult(Query, 2); new iDeaths = SQL_ReadResult(Query, 3); new iHeadShots = SQL_ReadResult(Query, 4); new iBombPlanteds = SQL_ReadResult(Query, 5); new iBombDefused = SQL_ReadResult(Query, 6); new Float:flDamage; SQL_ReadResult(Query, 7, flDamage); new iRounds = SQL_ReadResult(Query, 8); new iPlayingPugs = SQL_ReadResult(Query, 9); new iKills3k = SQL_ReadResult(Query, 10); new iKills4k = SQL_ReadResult(Query, 11); new iKills5k = SQL_ReadResult(Query, 12); }
return PLUGIN_CONTINUE }
me sale
Código: C:\Users\Luis\Desktop\Pug-Stats.sma(562) : warning 204: symbol is assigned a value that is never used: "iKills5k"
C:\Users\Luis\Desktop\Pug-Stats.sma(561) : warning 204: symbol is assigned a value that is never used: "iKills4k"
C:\Users\Luis\Desktop\Pug-Stats.sma(560) : warning 204: symbol is assigned a value that is never used: "iKills3k"
C:\Users\Luis\Desktop\Pug-Stats.sma(559) : warning 204: symbol is assigned a value that is never used: "iPlayingPugs"
C:\Users\Luis\Desktop\Pug-Stats.sma(558) : warning 204: symbol is assigned a value that is never used: "iRounds"
C:\Users\Luis\Desktop\Pug-Stats.sma(555) : warning 204: symbol is assigned a value that is never used: "iBombDefused"
C:\Users\Luis\Desktop\Pug-Stats.sma(554) : warning 204: symbol is assigned a value that is never used: "iBombPlanteds"
C:\Users\Luis\Desktop\Pug-Stats.sma(553) : warning 204: symbol is assigned a value that is never used: "iHeadShots"
C:\Users\Luis\Desktop\Pug-Stats.sma(552) : warning 204: symbol is assigned a value that is never used: "iDeaths"
C:\Users\Luis\Desktop\Pug-Stats.sma(551) : warning 204: symbol is assigned a value that is never used: "iKills"
C:\Users\Luis\Desktop\Pug-Stats.sma(547) : warning 204: symbol is assigned a value that is never used: "id"
Pawn Básico no critiquen xD
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
(24/06/2021, 05:52 PM)Meliodas escribió: me sale
Código: C:\Users\Luis\Desktop\Pug-Stats.sma(562) : warning 204: symbol is assigned a value that is never used: "iKills5k"
C:\Users\Luis\Desktop\Pug-Stats.sma(561) : warning 204: symbol is assigned a value that is never used: "iKills4k"
C:\Users\Luis\Desktop\Pug-Stats.sma(560) : warning 204: symbol is assigned a value that is never used: "iKills3k"
C:\Users\Luis\Desktop\Pug-Stats.sma(559) : warning 204: symbol is assigned a value that is never used: "iPlayingPugs"
C:\Users\Luis\Desktop\Pug-Stats.sma(558) : warning 204: symbol is assigned a value that is never used: "iRounds"
C:\Users\Luis\Desktop\Pug-Stats.sma(555) : warning 204: symbol is assigned a value that is never used: "iBombDefused"
C:\Users\Luis\Desktop\Pug-Stats.sma(554) : warning 204: symbol is assigned a value that is never used: "iBombPlanteds"
C:\Users\Luis\Desktop\Pug-Stats.sma(553) : warning 204: symbol is assigned a value that is never used: "iHeadShots"
C:\Users\Luis\Desktop\Pug-Stats.sma(552) : warning 204: symbol is assigned a value that is never used: "iDeaths"
C:\Users\Luis\Desktop\Pug-Stats.sma(551) : warning 204: symbol is assigned a value that is never used: "iKills"
C:\Users\Luis\Desktop\Pug-Stats.sma(547) : warning 204: symbol is assigned a value that is never used: "id"
Hay problemas graves en esa porción de código. ¿Podrías dejar la función de carga de datos? Necesitaremos nuevas variables para almacenar los datos cargados cuando se conecte un jugador, porque me parece que en tus variables solo almacenas los datos desde la última conexión del jugador.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(24/06/2021, 06:39 PM)Mía escribió: Hay problemas graves en esa porción de código. ¿Podrías dejar la función de carga de datos? Necesitaremos nuevas variables para almacenar los datos cargados cuando se conecte un jugador, porque me parece que en tus variables solo almacenas los datos desde la última conexión del jugador.
ese es el que carga cuando se conecta el jugador
Código PHP: public PlayerRegister(index) { new szTemp[2048], data[1]; g_iStatus[index] = LOGUEADO;
formatex(szTemp, charsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K, g_szPlayerAuthdID[index], g_szPlayerName[index]); data[0] = index; SQL_ThreadQuery(g_tuple, "handler_registrar", szTemp, data, 1); }
Pawn Básico no critiquen xD
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
(24/06/2021, 06:45 PM)Meliodas escribió: ese es el que carga cuando se conecta el jugador
Código PHP: public PlayerRegister(index) { new szTemp[2048], data[1]; g_iStatus[index] = LOGUEADO;
formatex(szTemp, charsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')", SQLX_TABLA, COLUMN_AUTHID, COLUMN_NAME, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K, g_szPlayerAuthdID[index], g_szPlayerName[index]); data[0] = index; SQL_ThreadQuery(g_tuple, "handler_registrar", szTemp, data, 1); }
En serio se resetea todo cuando se conecta un jugador? Cual es el punto de usar una DB entonces
Me rehúso a creerlo, pasa el client_putinserver!
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(24/06/2021, 07:01 PM)Mía escribió:
En serio se resetea todo cuando se conecta un jugador? Cual es el punto de usar una DB entonces
Me rehúso a creerlo, pasa el client_putinserver!
Código PHP: public client_putinserver(index) { if(!is_user_connected(index)) { return; } for(new i = 0; i <sizeof(g_PlayerData[]); i++) { g_PlayerData[index][i] = EOS; } g_iStatus[index] = NO_LOGUEADO; get_user_authid(index, g_szPlayerAuthdID[index], charsmax(g_szPlayerAuthdID[])); get_user_name(index, g_szPlayerName[index], charsmax(g_szPlayerName[])) PlayerRegister(index); }
Pawn Básico no critiquen xD
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
Ya veo, usa el Steam ID como key esa Db. Creo que se debe rediseñar la tabla para tener un id con auto incremento, así optimizamos las consultas. Y cargar los datos en client_putinserver, así evitamos obtenerlos cada vez que se quieran guardar. Me desocupo más tarde y lo veo, si alguien no te lo hizo aun.
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(24/06/2021, 09:26 PM)Mía escribió: Ya veo, usa el Steam ID como key esa Db. Creo que se debe rediseñar la tabla para tener un id con auto incremento, así optimizamos las consultas. Y cargar los datos en client_putinserver, así evitamos obtenerlos cada vez que se quieran guardar. Me desocupo más tarde y lo veo, si alguien no te lo hizo aun.
Gracias.
Pawn Básico no critiquen xD
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
EJ.
Código PHP: /* CREATE TABLE example ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, steam_id varchar(64) NOT NULL UNIQUE KEY ...masdata ); */ #include <amxmodx> #include <sqlx> #include <reapi>
new const exampleTable[] = "example";
new playerId[33], statusPlayer[33]; new Handle:Tuple; //cambias esa por tu variable de conexión
enum { REGISTER, LOGIN, SAVE };
enum { NOT_LOGUED = 0, LOGUED };
public DataHandler(failstate, Handle:Query, error[], error2, data[], datasize, Float:flTime) { switch (failstate) { case TQUERY_CONNECT_FAILED: { log_to_file( "SQL_LOG_TQ.txt", "Error en la conexion al MySQL [%i]: %s", error2, error ); return; } case TQUERY_QUERY_FAILED: { log_to_file( "SQL_LOG_TQ.txt", "Error en la consulta al MySQL [%i]: %s", error2, error ); } } new id = data[0]; if (!is_user_connected(id)) { return; } switch (data[1]) { case LOGIN: {
if (SQL_NumResults(Query)) { playerId[ id ] = SQL_ReadResult( Query, 0 ); //le cargo todo de la db
statusPlayer[ id ] = LOGUED;
} else { //g_frags[id] = 0; //no estoy registrado le doy todo a 0 antes de registrarlo new AuthId[32];
if (is_user_steam(id)) { get_user_authid(id, AuthId, charsmax(AuthId)); } else { get_user_name(id, AuthId, charsmax(AuthId)); }
new query[MAX_MENU_LENGTH], data[2];
data[0] = id; data[1] = REGISTER;
//Insert into query formatex(query, charsmax(query), "inert into ...."); SQL_ThreadQuery(Tuple, "DataHandler", query, data, sizeof(data)); } } case REGISTER: {
if (failstate < TQUERY_SUCCESS){ //error al registrar usuario } else { new AuthId[32];
if (is_user_steam(id)) { get_user_authid(id, AuthId, charsmax(AuthId)); } else { get_user_name(id, AuthId, charsmax(AuthId)); }
new query[MAX_MENU_LENGTH], data[2];
data[0] = id; data[1] = LOGIN;
formatex(query, charsmax(query), "SELECT * FROM %s WHERE steam_id= ^"%s^"", exampleTable, AuthId);
SQL_ThreadQuery(Tuple, "DataHandler", query, data, sizeof(data)); } } case SAVE: {
if (failstate < TQUERY_SUCCESS) { //error no se guardo ni vrg } else { //se guardo } } } }
public save_data(id) {
if (statusPlayer[id] != LOGUED) { return; }
new query[MAX_MENU_LENGTH], data[2];
data[0] = id; data[1] = SAVE; formatex(query, charsmax(query), "UPDATE %s SET algo=0 WHERE id='%d'", exampleTable, playerId[id]); SQL_ThreadQuery(Tuple, "DataHandler", query, data, sizeof(data)); }
public client_disconnected(id) {
if (statusPlayer[id] == LOGUED) { save_data(id);
statusPlayer[id] = NOT_LOGUED; } }
public client_putinserver(id) {
new AuthId[32];
if (is_user_steam(id)) { get_user_authid(id, AuthId, charsmax(AuthId)); } else { get_user_name(id, AuthId, charsmax(AuthId)); }
new query[MAX_MENU_LENGTH], data[2];
data[0] = id; data[1] = LOGIN;
formatex(query, charsmax(query), "SELECT * FROM %s WHERE steam_id= ^"%s^"", exampleTable, AuthId);
SQL_ThreadQuery(Tuple, "DataHandler", query, data, sizeof(data)); }
public plugin_init() { //conexion sql }
en tu busqueda será más rápido procesar un numero que un varchar. (ni idea si esta bien hecho)
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
24/06/2021, 11:41 PM
(Última modificación: 25/06/2021, 07:25 PM por Meliodas. Edited 2 times in total.)
Solucionado gracias a Mía
Código PHP: public client_putinserver(index) { if(!is_user_connected(index)) { return; } arrayset(g_PlayerData[index], 0, DATA_PLAYERS); g_iStatus[index] = NO_LOGUEADO; get_user_authid(index, g_szPlayerAuthdID[index], charsmax(g_szPlayerAuthdID[])); get_user_name(index, g_szPlayerName[index], charsmax(g_szPlayerName[])) PlayerLoad(index); }
public CheckTabla() { new szTemp[768]; formatex(szTemp, charsmax(szTemp), "\ CREATE TABLE IF NOT EXISTS %s (`%s` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `%s` varchar(33), `%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)", SQLX_TABLA, COLUMN_USERID, COLUMN_AUTHID, COLUMN_KILLS, COLUMN_DEATHS, COLUMN_HEADSHOTS, COLUMN_BOMBPLANTEDS, COLUMN_BOMBDEFUSED, COLUMN_DAMAGES, COLUMN_ROUNDS, COLUMN_PUGS, COLUMN_KILLS3K, COLUMN_KILLS4K, COLUMN_KILLS5K); SQL_ThreadQuery(g_tuple, "handler_checktable", szTemp); }
public handler_checktable(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if (fail_query(FailState, Error, Errcode)) { server_print("Error al crear la tabla.") return PLUGIN_HANDLED; }
server_print("Tabla creada.") return PLUGIN_CONTINUE }
public handler_cargar(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { new index = Data[0]; if (index != find_player("k", Data[1])) { SQL_FreeHandle(Query); return; } if(fail_query(FailState, Error, Errcode)) { console_print(index, "Error al registrar"); return; } if (SQL_NumResults(Query)) { g_iPlayerUserID[index] = SQL_ReadResult(Query, 0); g_OldPlayerData[index][Kills] = SQL_ReadResult(Query, 2); g_OldPlayerData[index][Deaths] = SQL_ReadResult(Query, 3); g_OldPlayerData[index][HeadShots] = SQL_ReadResult(Query, 4); g_OldPlayerData[index][BombPlanteds] = SQL_ReadResult(Query, 5); g_OldPlayerData[index][BombDefuseds] = SQL_ReadResult(Query, 6); SQL_ReadResult(Query, 7, Float:g_OldPlayerData[index][Damages]); g_OldPlayerData[index][Rounds] = SQL_ReadResult(Query, 8); g_OldPlayerData[index][Pugs] = SQL_ReadResult(Query, 9); g_OldPlayerData[index][Kills3k] = SQL_ReadResult(Query, 10); g_OldPlayerData[index][Kills4k] = SQL_ReadResult(Query, 11); g_OldPlayerData[index][Kills5k] = SQL_ReadResult(Query, 12); console_print(index, "Datos cargados"); arrayset(g_PlayerData[index], 0, DATA_PLAYERS); g_iStatus[index] = LOGUEADO; } else PlayerRegister(index); SQL_FreeHandle(Query); }
public handler_actualizar(FailState, Handle:Query, Error[], Errcode, data[], DataSize) { new id = data[0];
if(fail_query(FailState, Error, Errcode)) { console_print(id, "Error al registrar"); return; } SQL_FreeHandle(Query); if (!is_user_connected(id)) return; console_print(id, "Datos Actualizados"); }
public handler_registrar(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { new id = Data[0];
if(fail_query(FailState, Error, Errcode)) { console_print(id, "Error al registrar"); return PLUGIN_HANDLED; } console_print(id, "Cuenta creada"); arrayset(g_OldPlayerData[id], 0, DATA_PLAYERS); arrayset(g_PlayerData[id], 0, DATA_PLAYERS); g_iStatus[id] = LOGUEADO; return PLUGIN_CONTINUE }
Pawn Básico no critiquen xD
|