Rich Presence +

Host

host es cómo un script lee la computadora. Arranca vacío, y cada permiso de permissions en el manifiesto le agrega funciones. Llamar a una que no se pidió falla con permission denied y el nombre del permiso.

"permissions": { "process": true, "window": true, "files": ["%LOCALAPPDATA%/MyGame/logs"] }
Permiso Valor Agrega
process true host.process.list()
args objeto host.process.args(name)
window true host.window.foreground()
media true host.media.current()
files lista de carpetas host.files
http lista de hosts host.http.get(url)
query lista de protocolos host.query(protocol, address, port)

La gente ve esta lista antes de activar la presencia. Una actualización que suma un permiso espera a que lo acepten, y mientras tanto sigue corriendo la versión instalada.

process#

host.process.list() da los nombres de los programas abiertos, como ["explorer.exe", "Game.exe"]. Los nombres llegan con las mayúsculas que les da Windows, así que comparalos en minúsculas.

const running = host.process.list().some((name) => name.toLowerCase() === "game.exe");

args#

host.process.args(name) lee opciones elegidas de la línea de comandos de un programa abierto. El manifiesto nombra el programa y hasta 16 opciones para cada uno de hasta 16 programas. El script nunca ve el resto de la línea.

"permissions": { "args": { "gta_sa.exe": ["-h", "-p"] } }
host.process.args("gta_sa.exe");   // { "-h": "127.0.0.1", "-p": "7777" }

Devuelve un objeto con cada opción encontrada: su valor, o true si no tiene. null cuando el programa no está abierto.

window#

host.window.foreground() da { process, title } de la ventana que está al frente, o null. El título suele tener el nombre de un archivo o proyecto: si alcanza con el nombre del programa, no lo uses.

media#

host.media.current() da lo que Windows dice que se está reproduciendo: { app, title, artist, album, status, position, duration }, o null. position y duration son segundos.

files#

Lee archivos de log dentro de las carpetas que lista el manifiesto. Una carpeta puede empezar con una variable de entorno como %LOCALAPPDATA%; una que no existe en la computadora se ignora.

Miembro Qué hace
host.files.roots Las carpetas que lista el manifiesto, como rutas de esta computadora.
host.files.latest(dir, suffix) El archivo más nuevo de dir cuyo nombre termina en suffix, o null.
host.files.tail(path, lines) Las últimas lines líneas de un archivo, hasta 500.
const log = host.files.latest(host.files.roots[0], ".log");
const lines = host.files.tail(log, 50);

Leé el final de un archivo y no todo, y guardá la ruta por un minuto en vez de buscar en cada llamada: una carpeta puede tener cientos de archivos.

http#

host.http.get(url) trae una dirección https:// de los hosts que lista el manifiesto, tal como están escritos: api.example.com no permite www.example.com.

"permissions": { "http": ["api.example.com"] }

Devuelve { status, body }, donde body es texto. No sigue redirecciones, espera hasta 5 segundos y lee hasta 1 MB.

query#

host.query(protocol, address, port) le pregunta a un servidor de juegos por sí mismo. El único protocolo es samp, para servidores de SA-MP y open.mp. port va de 1 a 65535.

"permissions": { "query": ["samp"] }

Devuelve { password, players, max_players, hostname, gamemode, language }, o null cuando el servidor no responde.

Editar esta página en GitHub