# Funciones

{% hint style="info" %}
Las funciones fueron introducidas en TrMenu 3.0
{% endhint %}

Para usar placeholders, argumentos o colorear textos se puede utilizar diferentes funciones los cuales pueden regresar la respuesta como texto o números y que aceptan un solo argumento para ser analizado.

El análisis de texto ejecuta el método `MenuSession#parse(String)` por lo que el texto introducido se analizará en este orden:

1. Se tratará el texto como una función ([argumentos](/opciones/argumentos.md), script).
2. Se coloreará el texto en caso de contener `&` o [RGB](/opciones/rgb.md).
3. Se reemplazarán los argumentos del texto.
4. Se tratará el texto como si tuviera placeholders.
5. Se volverá a colorear el texto.

El análisis de texto sigue el formato de `<expresión><dato>`.

### Expresiones

| Expresión      | Forma de escribirlo | Descipción                                                                                                                       |
| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Variable       | var                 | Realiza un análisis de texto al argumento especificado                                                                           |
| Función        | fun                 | Realiza un análisis de texto al argumento dentro de `{}`                                                                         |
| Script interno | func                | Realiza un análisis de texto al argumento dentro de `${}` y de esta manera obteniendo el resultado de un script interno del menú |
| Kether         | ke                  | Devuelve el valor de la función de kether especificada como el argumento                                                         |
| Nodo           | node                | Devuelve el valor del nodo del menú especificado como el argumento                                                               |
| Meta           | meta                | Devuelve el valor del meta en el caché del jugador especificado como el argumento                                                |
| Data           | data                | Devuelve el valor de la data del jugador especificada como el argumento                                                          |
| Data global    | gdata               | Devuelve el valor de la data global especificada como el argumento                                                               |

### Datos

| Tipo de dato | Forma de escribirlo | Descripción                                                            |
| ------------ | ------------------- | ---------------------------------------------------------------------- |
| String       | s                   | Es un texto como cualquier otro                                        |
| Integer      | Int                 | Es un número normal, sirve para ser comparado con expresiones de < > = |
| Double       | Double              | Es lo mismo que arriba, pero admite decimales                          |

### Ejemplos

```javascript
// Análisis de texto que devuelve otro texto
vars("{0} texto normal &e %player_name%")
// Análisis que devuelve el resultado como un número
// Devuelve "0" si el resultado NO es un número
varInt("%server_tps%")
// Análisis que devuelve el resultado como un número con decimales
// Devuelve "0.0" si el resultado NO es un número
varDouble("21.35567")
// Análisis que devuelve un número del resultado de una función
// Las funciones son textos dentro de { }
// Devuelve "0" si el resultado NO es un número
funInt("kether: math add [ *1 *2 *3 ]")
funDouble("js: bukkitServer.getTps()")
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://trmenu.minelatino.com/script/javascript/funciones.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
