[TUT] Nueva forma de leer archivos con JSON
#1
[TUT] Nueva forma de leer archivos con JSON

Nota: Este tutorial va para personas que ya saben programar
Requerimientos: Amxmodx 1.9.0 o superior

Supongamos que tienes este archivo ubicado en: addos/amxmodx/configs/welcome.config.json

Código:
{
    "prefix": "!g[AMXX]",
    "message": "!tMensaje enviado desde !gwelcome.config.json"
}
Como lo leerias? usarias un fopen, con while para leer linea por linea etc

Bueno con el include de json, esto se facilita
Te dejo un pequeño ejemplo de como leer ese archivo y usarlo para mostrar el mensaje de bienvenida al jugador

Código PHP:
#include <amxmodx>
#include <amxmisc>

// Incluimos la libreria de json
#include <json>

#define PLUGIN  "Ejemplo de uso de JSON para configuraciones"
#define VERSION "1.0"
#define AUTHOR  "[N]drs"

// Almacenamos el nombre de 
// nuestro archivo de configuracíón
// en una variable
new const FILENAME[] = "welcome"

// Variable para el ejemplo
new g_szWelcomeMessage[320]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

    
// Cargamos nuestra configuraación
    
loadConfig()
}

loadConfig()
{
    
// Obtenemos la ruta de configs
    
new szConfigDir[30]
    
get_configsdir(szConfigDircharsmax(szConfigDir))

    
// Añadimos la ruta y formateamos el nombre del archivo con su extención
    
new szFilePath[60]
    
formatex(szFilePathcharsmax(szFilePath), "%s/%s.config.json"szConfigDirFILENAME)

    
// Cargamos el archivo json
    
new JSON:jFile json_parse(szFilePathtrue)


    
// Creamos variables temporales para obtener los datos
    
new szPrefix[15], szMessage[256]

    
// Obtenemos el campo prefix del json
    
json_object_get_string(jFile"prefix"szPrefixcharsmax(szPrefix))

    
// Obtenemos el campo message del json
    
json_object_get_string(jFile"message"szMessagecharsmax(szMessage))


    
// Almacenamos la informacion en la variable creada al inicio
    
formatex(g_szWelcomeMessagecharsmax(g_szWelcomeMessage), "%s %s"szPrefixszMessage)

    
// Pequeño stock para formatear el color al texto
    
format_color(g_szWelcomeMessage)
}

// Cuando el jugador entre
public client_putinserver(id)
{
    
// Nos esperamos 5 segundos y llamamos
    // a la funcion Task_SendWelcomeMesage
    // pasandole el id dle jugador
    
set_task(5.0"Task_SendWelcomeMesage"id)
}

// al llamarse esta funcion
public Task_SendWelcomeMesage(id)
{
    
// Enviamos el mensaje al jugador
    
client_print_color(idprint_team_greyg_szWelcomeMessage)
}

stock format_color(szBuffer[])
{
    
replace_string(szBufferstrlen(szBuffer), "!g""^4")
    
replace_string(szBufferstrlen(szBuffer), "!t""^3")
    
replace_string(szBufferstrlen(szBuffer), "!n""^1")

[Imagen: image.png]

Si tienes alguna duda, solo hazla y te responderé
1
Responder
#2
Me solucionastes la paja de leer archivos Gran sonrisa
Responder
#3
Wow, desconocía de esto

Me hubiera servido bastante para el pedido, gracias por el tutorial
“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.
Responder
#4
Se pueden modificar los campos desde el mismo plugin o solo sirve para leer?

Responder
#5
(02/02/2023, 03:49 AM)Skylar escribió: Se pueden modificar los campos desde el mismo plugin o solo sirve para leer?

Solo es para leer, si quieres guardar los datos tendrias que sobreescribir el archivo con las natives del amxx
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)