07/01/2019, 10:19 PM
Código PHP:
public Sql_Init()
{
g_SqlTuple = mysql_makehost(mysql_host, mysql_user, mysql_pass, mysql_database)
if (!g_SqlTuple)
{
// Log error
log_to_file("SQL_ERROR.txt", "No se pudo conectar con la base de datos.")
// Pause plugin
return pause("a");
}
new ErrorCode, Handle:SqlConnection = mysql_connect(g_SqlTuple, ErrorCode, g_Error, charsmax(g_Error))
// Load account count
if (SqlConnection != Empty_Handle)
{
new Handle:query = mysql_query(SqlConnection, "SELECT * FROM `%s`", TABLE9)
//SQL_Execute(query)
if (mysql_num_results())
{
g_createdaccounts = SQL_ReadResult(query, 0)
g_createdcharacters = SQL_ReadResult(query, 1)
}
else
{
g_createdaccounts = g_createdcharacters = 0
formatex(g_query,charsmax(g_query), "INSERT INTO `%s` (`Created accounts`, `Created characters`) VALUES ('0', '0')", TABLE9)
mysql_query(g_SqlTuple, "IgnoreHandle", g_query)
}
mysql_free(query)
}
return PLUGIN_CONTINUE;
}
public QueryCreateTable(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
switch (FailState)
{
case TQUERY_CONNECT_FAILED: log_to_file("SQL_LOG_TQ.txt", "Failed to connect to database [%i]: %s", Errorcode, Error)
case TQUERY_QUERY_FAILED: log_to_file("SQL_LOG_TQ.txt", "Error on query for creating table [%i]: %s", Errorcode, Error)
}
return PLUGIN_HANDLED;
}
public plugin_cfg()
{
// Plugin disabled?
if (!g_pluginenabled) return;
// Get configs dir
new cfgdir[32]
get_configsdir(cfgdir, charsmax(cfgdir))
// Execute config file (zombieapocalypse.cfg)
server_cmd("exec %s/zombieapocalypse.cfg", cfgdir)
// Prevent any more stuff from registering
g_arrays_created = false
// Save customization data
save_customization()
// Lighting task
set_task(5.0, "lighting_effects", _, _, _, "b")
// Cache CVARs after configs are loaded / call roundstart manually
set_task(0.5, "cache_cvars")
set_task(0.5, "event_round_start")
set_task(0.5, "logevent_round_start")
}
public plugin_end()
{
// Finish SQL connection
if (g_SqlTuple) mysql_free(g_SqlTuple)
}
/*
GUARDADO Y CARGADO
*/
// Show player rank
show_rank(id)
{
static iData[2]
iData[0] = id
iData[1] = SHOW_RANK
formatex(g_query, charsmax(g_query), "SELECT (COUNT(*) + 1) FROM `%s` WHERE `Rango` > '%d' OR (`Rango` = '%d' AND `Experience` > '%d')", TABLE2, g_fame[id], g_fame[id], g_experience[id])
mysql_query(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Load top 15 motd
load_top15()
{
new ErrorCode, Handle:SqlConnection = mysql_connect(g_SqlTuple, ErrorCode, g_Error, charsmax(g_Error))
if (SqlConnection != Empty_Handle)
{
//new Handle:query = SQL_PrepareQuery(SqlConnection, "SELECT `Character`, `Level`, `Experience`, `Ammopacks`, `Rango`, `Human Points`, `Zombie Points` FROM `%s` ORDER BY `Rango` DESC, `Level` DESC, `Experience` DESC LIMIT 15", TABLE2)
new Handle:query = mysql_query(SqlConnection, "SELECT `Character`, `Level`, `Experience`, `Ammopacks`, `Rango`, `Human Points`, `Zombie Points` FROM `%s` ORDER BY `Rango` DESC, `Level` DESC, `Experience` DESC LIMIT 15", TABLE2)
//SQL_Execute(query)
if (mysql_num_results())
{
g_top15_clear = false
static len; len = 0
len += formatex(g_motd[len], charsmax(g_motd), "<body bgcolor=#000000><font color=#FFB000><pre><center><h2>---- Zombie Apocalypse Top 15 ----</h2></center>^n^n")
len += formatex(g_motd[len], charsmax(g_motd), "<b><u>%5s %29s %7s %2s %9s %7s %5s %5s</u></b>^n", "Rank", "Nombre", "Rango", "Nivel", "Experiencia", "Ammopacks", "H. Puntos", "Z. Puntos")
new iPosition, szName[32], iLevel, iExp, iAp, iFame, iHP, iZP
while (mysql_more_results())
{
++iPosition
mysql_read_result(query, 0, szName, charsmax(szName))
iLevel = mysql_read_result(query, 1)
iExp = mysql_read_result(query, 2)
iAp = mysql_read_result(query, 3)
iFame = mysql_read_result(query, 4)
iHP = mysql_read_result(query, 5)
iZP = mysql_read_result(query, 6)
len += formatex(g_motd[len], charsmax(g_motd), "%4d %29s %4d %8d %11d %9d %9d %9d^n", iPosition, szName, iFame, iLevel, iExp, iAp, iHP, iZP)
mysql_next_row()
}
}
else
g_top15_clear = true
mysql_free(query)
}
}
save_account_count()
{
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Created accounts`='%d', `Created characters`='%d'", TABLE9, g_createdaccounts, g_createdcharacters)
mysql_query(g_SqlTuple, "IgnoreHandle", g_query)
}
public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
mysql_free(Query)
return PLUGIN_HANDLED;
}
public QueryHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:time)
{
static id; id = Data[0]
// Connected?
if (!is_user_connected(id)) return PLUGIN_HANDLED;
switch (FailState)
{
case TQUERY_CONNECT_FAILED: log_to_file("SQL_LOG_TQ.txt", "Failed to connect to database [%i]: %s", Errcode, Error)
case TQUERY_QUERY_FAILED: log_to_file("SQL_LOG_TQ.txt", "Error in MySQL query [%i]: %s", Errcode, Error)
}
switch (Data[1])
{
case SHOW_RANK:
{
if (mysql_num_results())
zp_colored_print(id, "^x04[ZA]^x01 Tu ranking es ^x04%s^x01 de ^x04%s^x01.", add_point(mysql_read_result(Query, 0)), add_point(g_createdcharacters))
}
case REG_ID:
{
if (!mysql_num_results())
{
client_cmd(id, "messagemode ^"register_password^"")
set_hudmessage(0, 255, 255, 0.03, 0.05, 0, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync5, "Ingresa una Contraseña^nPulse ESC para salir")
}
else
{
client_print(id, print_center, "[ZA] Error: El ID ingresado se encuentra en uso")
show_menu_registration(id)
}
}
case REG_PASSWORD:
{
g_createdaccounts++
save_account_count()
user_id[id][0] = ""
client_print(id, print_center, "[ZA] Registro finalizado con éxito")
show_menu_registration(id)
}
case LOG_ID:
{
if (mysql_num_results())
{
client_cmd(id, "messagemode ^"your_password^"")
set_hudmessage(0, 255, 255, 0.03, 0.05, 0, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync5, "Ingresa tu Contraseña^nPulse ESC para salir")
}
else
{
g_attempts[id]--
client_print(id, print_center, "[ZA] Error: El ID ingresado no existe. Intentos restantes: %d", g_attempts[id])
show_menu_registration(id)
}
}
case LOG_PASSWORD:
{
if (mysql_num_results())
{
static szPass[35], szBuffer[34]
mysql_read_result(Query, 1, szPass, charsmax(szPass))
md5(user_password[id][0], szBuffer)
if (equal(szBuffer, szPass))
{
if (g_status[id] != OFFLINE)
{
CONFIRM_MENU = 3
client_cmd(id, "messagemode ^"register_new_password^"")
set_hudmessage(0, 255, 255, 0.03, 0.05, 0, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync5, "Ingresa una Contraseña nueva^nPulse ESC para salir")
}
else
check_online_account(id)
}
else
{
if (g_status[id] != OFFLINE)
{
user_password[id][0] = ""
client_print(id, print_center, "[ZA] Error: La contraseña ingresada es incorrecta.")
show_menu_character_selection(id)
}
else
{
g_attempts[id]--
client_print(id, print_center, "[ZA] Error: La contraseña ingresada es incorrecta. Intentos restantes: %d", g_attempts[id])
show_menu_registration(id)
}
}
}
}
case CHECK_CHARACTER:
{
if (!mysql_num_results())
{
CONFIRM_MENU = 1
show_menu_confirm(id)
}
else
{
client_print(id, print_center, "[ZA] El nombre se encuentra en uso. Por favor, cámbiese el nombre")
show_menu_character_selection(id)
}
}
case REG_CHARACTER:
{
static loading; loading++
switch (loading)
{
case 1: client_print(id, print_center, "[ZA] Cargando... 10%")
case 2: client_print(id, print_center, "[ZA] Cargando... 30%")
case 3: client_print(id, print_center, "[ZA] Cargando... 40%")
case 4: client_print(id, print_center, "[ZA] Cargando... 50%")
case 5: client_print(id, print_center, "[ZA] Cargando... 60%")
case 6: client_print(id, print_center, "[ZA] Cargando... 80%")
case 7: client_print(id, print_center, "[ZA] Cargando... 90%")
case 8:
{
loading = 0
g_createdcharacters++
save_account_count()
copy(g_charactername[id][SELECTED_CHARACTER], charsmax(g_charactername[][]), g_playername[id])
client_print(id, print_center, "[ZA] Personaje creado con éxito")
show_menu_character_selection(id)
}
}
}
case LOAD_DATA1:
{
if (mysql_num_results())
{
mysql_read_result(Query, 2, g_register_date[id], charsmax(g_register_date[]))
mysql_read_result(Query, 3, g_last_loggin[id], charsmax(g_last_loggin[]))
mysql_read_result(Query, 4, g_charactername[id][0], charsmax(g_charactername[][]))
mysql_read_result(Query, 5, g_charactername[id][1], charsmax(g_charactername[][]))
mysql_read_result(Query, 6, g_charactername[id][2], charsmax(g_charactername[][]))
mysql_read_result(Query, 7, g_charactername[id][3], charsmax(g_charactername[][]))
mysql_read_result(Query, 8, g_charactername[id][4], charsmax(g_charactername[][]))
}
g_status[id] = CHARACTER_MENU
show_menu_character_selection(id)
}
case LOAD_DATA2:
{
if (mysql_num_results())
{
g_level[id] = mysql_read_result(Query, 2)
g_experience[id] = mysql_read_result(Query, 3)
g_ammopacks[id][0] = mysql_read_result(Query, 4)
g_ammopacks[id][1] = mysql_read_result(Query, 5)
g_titles[id] = mysql_read_result(Query, 6)
g_fame[id] = mysql_read_result(Query, 7)
g_points[id][0] = mysql_read_result(Query, 8)
g_points[id][1] = mysql_read_result(Query, 9)
g_usedpoints[id][0] = mysql_read_result(Query, 10)
g_usedpoints[id][1] = mysql_read_result(Query, 11)
client_print(id, print_center, "[ZA] Cargando... 10%")
}
Load(id, 2)
}
case LOAD_DATA3:
{
if (mysql_num_results())
{
g_humanclass[id] = mysql_read_result(Query, 2)
g_humanclassnext[id] = mysql_read_result(Query, 3)
g_zombieclass[id] = mysql_read_result(Query, 4)
g_zombieclassnext[id] = mysql_read_result(Query, 5)
client_print(id, print_center, "[ZA] Cargando... 20%")
}
Load(id, 3)
}
case LOAD_DATA4:
{
if (mysql_num_results())
{
g_infected[id][0] = mysql_read_result(Query, 2)
g_infected[id][1] = mysql_read_result(Query, 3)
g_killed[id][0][0] = mysql_read_result(Query, 4)
g_killed[id][0][1] = mysql_read_result(Query, 5)
g_killed[id][0][2] = mysql_read_result(Query, 6)
g_killed[id][0][3] = mysql_read_result(Query, 7)
g_killed[id][0][4] = mysql_read_result(Query, 8)
g_killed[id][0][5] = mysql_read_result(Query, 9)
g_killed[id][1][0] = mysql_read_result(Query, 10)
g_killed[id][1][1] = mysql_read_result(Query, 11)
g_killed[id][1][2] = mysql_read_result(Query, 12)
g_killed[id][1][3] = mysql_read_result(Query, 13)
g_killed[id][1][4] = mysql_read_result(Query, 14)
g_killed[id][1][5] = mysql_read_result(Query, 15)
g_damage[id][0][0] = mysql_read_result(Query, 16)
g_damage[id][0][1] = mysql_read_result(Query, 17)
g_damage[id][0][2] = mysql_read_result(Query, 18)
g_damage[id][0][3] = mysql_read_result(Query, 19)
g_damage[id][0][4] = mysql_read_result(Query, 20)
g_damage[id][0][5] = mysql_read_result(Query, 21)
g_damage[id][1][0] = mysql_read_result(Query, 22)
g_damage[id][1][1] = mysql_read_result(Query, 23)
g_damage[id][1][2] = mysql_read_result(Query, 24)
g_damage[id][1][3] = mysql_read_result(Query, 25)
g_damage[id][1][4] = mysql_read_result(Query, 26)
g_damage[id][1][5] = mysql_read_result(Query, 27)
client_print(id, print_center, "[ZA] Cargando... 50%")
}
Load(id, 4)
}
case LOAD_DATA5:
{
if (mysql_num_results())
{
g_skill_points[id][0][0] = mysql_read_result(Query, 2)
g_skill_points[id][0][1] = mysql_read_result(Query, 3)
g_skill_points[id][0][2] = mysql_read_result(Query, 4)
g_skill_points[id][0][3] = mysql_read_result(Query, 5)
g_skill_points[id][0][4] = mysql_read_result(Query, 6)
g_skill_points[id][1][0] = mysql_read_result(Query, 7)
g_skill_points[id][1][1] = mysql_read_result(Query, 8)
g_skill_points[id][1][2] = mysql_read_result(Query, 9)
g_skill_points[id][1][3] = mysql_read_result(Query, 10)
g_skill_points[id][1][4] = mysql_read_result(Query, 11)
client_print(id, print_center, "[ZA] Cargando... 60%")
}
Load(id, 5)
}
case LOAD_DATA6:
{
if (mysql_num_results())
{
g_quest[id] = mysql_read_result(Query, 2)
g_questcompleted[id] = mysql_read_result(Query, 3)
g_questrounds[id] = mysql_read_result(Query, 4)
g_questkill[id][0] = mysql_read_result(Query, 5)
g_questkill[id][1] = mysql_read_result(Query, 6)
g_questkill[id][2] = mysql_read_result(Query, 7)
g_questkill[id][3] = mysql_read_result(Query, 8)
g_questkill[id][4] = mysql_read_result(Query, 9)
g_questkill[id][5] = mysql_read_result(Query, 10)
client_print(id, print_center, "[ZA] Cargando... 70%")
}
Load(id, 6)
}
case LOAD_DATA7:
{
if (mysql_num_results())
{
g_playedtime[id][0] = mysql_read_result(Query, 2)
g_playedtime[id][1] = mysql_read_result(Query, 3)
g_playedtime[id][2] = mysql_read_result(Query, 4)
g_playedtime[id][3] = mysql_read_result(Query, 5)
client_print(id, print_center, "[ZA] Cargando... 75%")
}
Load(id, 7)
}
case LOAD_DATA8:
{
if (mysql_num_results())
{
static datacolor[16], szRed[4], szGreen[4], szBlue[4]
g_hud_stats_t[id] = mysql_read_result(Query, 2)
mysql_read_result(Query, 3, Float:g_hud_stats_x[id])
mysql_read_result(Query, 4, Float:g_hud_stats_y[id])
mysql_read_result(Query, 5, datacolor, charsmax(datacolor))
parse(datacolor, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
g_hudred[id] = str_to_num(szRed)
g_hudgreen[id] = str_to_num(szGreen)
g_hudblue[id] = str_to_num(szBlue)
mysql_read_result(Query, 6, datacolor, charsmax(datacolor))
parse(datacolor, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
g_nvgred[id] = str_to_num(szRed)
g_nvggreen[id] = str_to_num(szGreen)
g_nvgblue[id] = str_to_num(szBlue)
mysql_read_result(Query, 7, datacolor, charsmax(datacolor))
parse(datacolor, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
g_flashred[id] = str_to_num(szRed)
g_flashgreen[id] = str_to_num(szGreen)
g_flashblue[id] = str_to_num(szBlue)
client_print(id, print_center, "[ZA] Cargando... 100%")
}
show_menu_character(id)
}
case CHANGE_PASSWORD:
{
copy(user_password[id][1], charsmax(user_password[][]), user_password[id][0])
user_password[id][0] = ""
client_print(id, print_center, "[ZA] Contraseña cambiada con éxito")
}
}
return PLUGIN_CONTINUE;
}
cambie casi todas las natives por las del modulo de destro excepto por algunas ya que no sabia, no se si esta bien hecho si me pueden ayudar con eso.
pd: no se mucho de guardado sqlite ni mysql pero estoy intentando aprender.