Foro: autor con personaje aleatorio de la cuenta

- El nombre del autor muestra un personaje ALEATORIO de la cuenta (no la id).
- Nombre con <Hermandad> en dorado (oculto si el personaje no tiene guild).
- Avatar = imagen de raza del personaje (raza+género).
- Cajas nuevas: puntos de logros, nivel y clase (con su color de clase).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 07:57:41 +00:00
parent beba7301a1
commit 24bd28fcca
93 changed files with 249 additions and 28 deletions
+16 -6
View File
@@ -1,7 +1,11 @@
import { shouldServeAds } from '@/lib/ads'
import { AdSenseScript } from './AdSenseScript'
/**
* Etiqueta de verificación de Google AdSense, con DOS interruptores:
* Google AdSense: etiqueta de verificación de la cuenta + script de anuncios
* («Auto ads»: se pega en todas las páginas y Google decide dónde colocarlos).
*
* TRES interruptores:
*
* 1. `ADSENSE_CLIENT_ID` en el .env. Vacío o sin poner = no se emite nada. Es el
* interruptor del administrador. No lleva prefijo NEXT_PUBLIC_ a propósito:
@@ -10,10 +14,11 @@ import { shouldServeAds } from '@/lib/ads'
* rebuildear para activarlo o desactivarlo.
* 2. El filtro común de publicidad (`shouldServeAds`, ver lib/ads.ts): fuera para
* admins y para quien sea rango 2+ o haya pagado alguna vez.
*
* Ojo: esto es solo la etiqueta de verificación de la cuenta, no carga adsbygoogle.js
* ni escribe cookies, por eso no pasa por el banner de consentimiento (el script de
* anuncios sí lo hace, ver components/Monetag.tsx).
* 3. El consentimiento «Marketing» del visitante, pero SOLO para el script, en
* <AdSenseScript/> (cliente). La <meta> se queda fuera del banner a propósito:
* es un identificador estático de la cuenta, no carga nada ni escribe cookies,
* y Google la quiere presente para poder verificar el sitio aunque el visitante
* rechace los anuncios.
*/
export async function AdSense() {
const client = process.env.ADSENSE_CLIENT_ID
@@ -21,5 +26,10 @@ export async function AdSense() {
if (!(await shouldServeAds())) return null
return <meta name="google-adsense-account" content={client} />
return (
<>
<meta name="google-adsense-account" content={client} />
<AdSenseScript client={client} />
</>
)
}