Skip to content

Exports y eventos

Exports, eventos y estados del jugador públicos de Cuxial Emotes para usar desde otros recursos.

Otros recursos pueden reproducir y cancelar emotes, bloquear al jugador, cambiar el estilo de caminar y consultar qué está haciendo. Lo que no aparece en esta página es interno.

Todos los exports de cliente actúan sobre el jugador local, salvo que se indique lo contrario.

Exports de cliente ​

Reproducir y cancelar ​

ExportParámetrosDevuelveQué hace
PlayEmoteByCommandcommand: string, variant?: numberbooleanReproduce un emote, escenario, estilo de caminar o expresión por su comando. Devuelve false si el comando no existe, el jugador está bloqueado o el cooldown sigue activo.
StartAnimationPlaycommand: string, variant?: number—Igual que el anterior, sin valor de retorno.
PlayEmotedata: table, variation?: numberbooleanReproduce un emote a partir de su tabla de datos, tal como la devuelve findEmoteByCommand.
playScenarioname: string—Inicia un escenario de GTA en el sitio. No hace nada dentro de un vehículo ni con el jugador bloqueado.
CancelEmoteskipReset?: boolean—Cancela el emote actual. Si hay un emote de torso superpuesto, solo cancela ese. Con true lo corta todo al momento, se salta la animación de salida y funciona aunque el jugador esté bloqueado.
StopAnimationskipReset?: boolean—Alias de CancelEmote.
CancelUpperLayer——Cancela solo la animación de torso superpuesta a otro emote.
CancelAllAnimations——Limpia los emotes y los estados de movimiento (manos arriba, brazos cruzados, señalar, tumbado). No hace nada con el jugador bloqueado.
PlayAnimOnNPCcommand: string, ped: number—Reproduce un emote o un escenario del catálogo en otro ped.
lua
local played = exports.cuxial_emotes:PlayEmoteByCommand('adjust')
if not played then
    print('No se pudo reproducir el emote')
end

-- más tarde
exports.cuxial_emotes:CancelEmote()

Bloqueo y estado ​

ExportParámetrosDevuelveQué hace
SetEmoteLocklocked: boolean, reason?: string—Bloquea o suelta al jugador para el recurso que llama y ese motivo ('default' si no se indica). Consulta Bloqueo de animaciones.
IsEmoteLocked—booleanSi hay algún bloqueo activo.
GetEmoteLocks—tableBloqueos activos por recurso: { [recurso] = { motivo, ... } }.
SetCanPlayAnimationvalue: boolean—Permite o impide iniciar emotes.
CanPlayAnimation—booleanSi se pueden iniciar emotes.
SetCanCancelAnimationvalue: boolean—Permite o impide cancelar el emote actual.
SetAnimationPlayingvalue: boolean—Fuerza el indicador de «hay un emote en curso».
IsPlayingAnimation—booleanSi hay un emote en curso.
isPlayerDead—booleanSi el script considera muerto al jugador, según deadCheck.
GetBaseLayer—table | nilEmote actual: { data, variation, dict, anim }.
GetUpperLayer—table | nilEmote de torso actual, con la misma forma.
HasUpperLayer—booleanSi hay un emote de torso superpuesto.

Bloqueo de animaciones ​

Un bloqueo mantiene al jugador quieto en una escena de tu recurso. Mientras haya alguno activo, el jugador no puede lanzar ni cancelar emotes (comandos, atajos, menú y emotes compartidos), levantar las manos, cruzar los brazos, señalar, hacer ragdoll, tumbarse ni agacharse, y recibe un aviso breve si lo intenta. Al empezar el bloqueo se suelta lo que estuviera haciendo.

Cada bloqueo pertenece al recurso que lo pone y a un motivo, así que varios recursos y escenas pueden bloquear a la vez. El jugador vuelve a estar libre cuando se han soltado todos.

lua
-- Mantener al jugador en una animación de tu script
exports.cuxial_emotes:SetEmoteLock(true, 'seat')
-- ... tu escena ...
exports.cuxial_emotes:SetEmoteLock(false, 'seat')

-- Quién bloquea al jugador ahora mismo
local locks = exports.cuxial_emotes:GetEmoteLocks()   -- { mi_recurso = { 'seat' } }

El estado del jugador animLock vale 'recurso:motivo' del primer bloqueo activo, o nil. Está replicado, así que el servidor y otros recursos pueden leerlo para no lanzar su propia animación encima. Los recursos que incluyen Cuxial Bridge pueden usar Bridge.Anim, que envuelve estos exports y vuelve a aplicar los bloqueos si Cuxial Emotes se reinicia.

Libera siempre el bloqueo que pongas, con el mismo motivo. Un jugador bloqueado no puede usar ningún emote hasta que se suelte. Los bloqueos también se sueltan cuando se detiene el recurso que los puso.

ExportParámetrosDevuelveQué hace
findEmoteByCommandcommand: stringtable | nil, string | nilDatos del emote y su tipo: 'emote', 'scenario', 'walk' o 'expression'.
buildAnimationsList—table[]La lista que muestra el menú. Cada entrada tiene name, title, description, category y liked. Los emotes llevan además isSynced, icon, tags y added.
GetAnimationFromSetsetIndex: number, animIndex: numberstring | nilComando guardado en un hueco de un set rápido.
buildPropsFromDataprops: table, variation?: numbertable[]Convierte los Options.Props de un emote en entradas { hash, bone, placement, variant }.
CleanAllPedProps——Quita los props de emote que lleva el jugador.
lua
local emote, kind = exports.cuxial_emotes:findEmoteByCommand('atm')
if emote then
    print(emote.Label, kind)
end

Estilo de caminar, expresión y apuntado ​

ExportParámetrosDevuelveQué hace
SetWalkclipset: string, skipSave?: boolean—Aplica un clipset de movimiento, como 'move_m@brave', y lo pone en el estado walkstyle. Con skipSave no se guarda para la siguiente sesión.
ResetWalk——Vuelve a la forma de caminar por defecto y limpia el estado walkstyle.
RestoreLastWalkStyle——Vuelve a aplicar el clipset del estado walkstyle, o la forma de caminar por defecto si no hay ninguno.
SetExpressionname: string, skipSave?: boolean—Aplica una expresión facial, como 'mood_angry_1'. Con skipSave no se guarda para la siguiente sesión.
ResetExpression——Vuelve a la expresión por defecto.
SetWeaponAnimationdict?: string, name?: string—Establece la animación que se reproduce al apuntar con un arma de data/weapons.lua. Llámalo sin argumentos para quitarla.
GetWeaponAnimation—string | nil, string | nilDiccionario y clip de apuntado actuales.
lua
-- Tu script ha cambiado el clipset de movimiento con natives para un efecto.
-- Al terminar, devuelve al jugador su estilo de caminar.
exports.cuxial_emotes:RestoreLastWalkStyle()

Movimiento ​

ExportParámetrosDevuelveQué hace
IsPlayerCrouched—boolean | nilAgachado.
IsPlayerProne—booleanTumbado.
IsPlayerCrawling—booleanArrastrándose.
IsHandUp—booleanManos arriba.
IsPointing—booleanSeñalando.
IsCrossArms—booleanBrazos cruzados.
IsInRagdoll—booleanEn ragdoll provocado por el script.
SetPlayerCrouchvalue: boolean—Fuerza agacharse o levantarse.
SetHandsUpvalue: boolean—Fuerza subir o bajar las manos.
lua
if exports.cuxial_emotes:IsHandUp() then
    -- el jugador se está rindiendo
end

Editor de posición, modo foto y zonas ​

ExportParámetrosDevuelveQué hace
GetLockedEditPosition—table | nilPosición fijada con el editor de posición: { x, y, z, heading }.
UnlockEditedPosition——Libera esa posición.
IsPhotoModeActive—booleanSi el modo foto está abierto.
IsCameraActive—booleanSi la cámara libre está en uso.
GetActiveZones—string[]Nombres internos de las zonas de emotes en las que está el jugador, con la forma cuxial_zone_<id>.
IsInZonezoneName: stringbooleanSi el jugador está dentro de la zona con ese nombre interno.
GetActiveZoneCategories—string[]Nombres de las categorías de zona disponibles en el menú en este momento.
lua
if exports.cuxial_emotes:IsPhotoModeActive() then return end

Exports de servidor ​

ForcePlaySyncedEmote ​

Inicia un emote en pareja entre dos jugadores sin pedir confirmación.

lua
exports.cuxial_emotes:ForcePlaySyncedEmote(requesterId, responderId, senderCommand)
ParámetroTipoDescripción
requesterIdnumberId de servidor del jugador que hace senderCommand.
responderIdnumberId de servidor del otro jugador.
senderCommandstringComando de un emote sincronizado.

Devuelve boolean: true si el emote ha empezado. Falla si alguno de los dos no está conectado, si los dos ids son el mismo, si el comando no es un emote sincronizado con un OtherEmote válido o si los jugadores están más lejos que sync.distance.

lua
local started = exports.cuxial_emotes:ForcePlaySyncedEmote(source, targetId, 'rasurar')

Exports de ítems ​

condom_closed, condom_open, pregnancy_test y hiv_test son enganches de ítem para ox_inventory. Están pensados para referenciarse desde la definición del ítem, no para llamarlos a mano. Mira Instalación.

Eventos ​

cuxial_emotes:OpenMenu ​

Cliente, local. Abre el menú de emotes. Útil desde un menú radial.

lua
TriggerEvent('cuxial_emotes:OpenMenu')

cuxial_emotes:PlayQuickAnim ​

Cliente, evento de red. Reproduce un hueco del set rápido activo. El hueco va en el segundo argumento, con la forma que usan los menús radiales.

lua
TriggerEvent('cuxial_emotes:PlayQuickAnim', nil, { id = 1 })

cuxial_emotes:ChangeSet ​

Cliente, evento de red. Cambia el set rápido activo.

lua
TriggerEvent('cuxial_emotes:ChangeSet', nil, { id = 2 })

Los dos eventos de sets rápidos solo existen cuando emotes.quickAnims es true.

cuxial_emotes:server:syncedEmoteStarted ​

Servidor, local. Se dispara cada vez que empieza un emote en pareja.

lua
AddEventHandler('cuxial_emotes:server:syncedEmoteStarted', function(requesterId, responderId, command)
    print(('%s y %s empezaron %s'):format(requesterId, responderId, command))
end)

Estados del jugador ​

El script escribe estos state bags en el jugador. Se pueden leer desde cualquier recurso.

ClaveReplicadoValor
isInEmoteSítrue mientras hay un emote en curso.
inSynchronizedEmoteSíId de servidor de la pareja durante un emote en pareja.
walkstyleSíClipset de movimiento actual.
expressionSíExpresión facial actual.
handsUpSítrue con las manos arriba.
emoteProps, emotePropsUpperSíProps del emote actual.
crouchNo, solo localtrue mientras está agachado.
animLockSí'recurso:motivo' del primer bloqueo de animaciones activo, o nil. Lo escribe el cliente: úsalo para impedir acciones, nunca para concederlas.
lua
-- lado servidor
if Player(source).state.handsUp then
    -- permitir el cacheo
end

El script también lee dos estados que ponen otros recursos:

ClaveEfecto
deadEl jugador cuenta como muerto cuando deadCheck.useStateBag es true.
isLimitedMientras está puesto, el jugador no puede iniciar emotes.

© Cuxial