ES/callClientFunction

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

Esta función permite llamar cualquier función del lado del cliente desde el lado del servidor. Por supesto que solo aquellas disponibles en en lado del cliente. No importa si es una función del MTA, una función Lua estándar o una función creada.

Los números se convierten automáticamenta a un string y vice versa en el lado del cliente para evitar una posible perdida de datos. Si no necesitas esta característica, solo borrala.

Nota Importante: Ten en cuenta que que el nombre de funcion debe ser un string! Evita usar callClientFunction dentro del evento onResourceStart del lado del servidor ya que el cliente no ha añadido aún el controlador de eventos onServerCallsClientFunction.

Sintaxis

void callClientFunction( element cliente, string nombreFuncion, [ var arg1, ... ] )

Argumentos Requeridos

  • cliente: El elemento player correspondiente al jugador afectado.
  • nombreFuncion: El nombre de la función que que debe ser llamada del lado del cliente. También puede ser una función dentro de un tabla, p.ej. "math.round".

Argumentos opcionales

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • arg1-argn: Los argumentos que deben ser pasados a la función.

Código

Click to collapse [-]
Script Servidor
function callClientFunction(cliente, nombreFuncion, ...)
    local arg = { ... }
    if (arg[1]) then
        for key, value in next, arg do
            if (type(value) == "number") then arg[key] = tostring(value) end
        end
    end
    -- Si el controlador de eventos del lado del cliente no está en el mismo resource, reemplaza 'resourceRoot' por el elemento apropiado
    triggerClientEvent(cliente, "onServerCallsClientFunction", resourceRoot, nombreFuncion, unpack(arg or {}))
end
Click to collapse [-]
Script Cliente
function callClientFunction(nombreFuncion, ...)
    local arg = { ... }
    if (arg[1]) then
        for key, value in next, arg do arg[key] = tonumber(value) or value end
    end
    loadstring("return "..nombreFuncion)()(unpack(arg))
end
addEvent("onServerCallsClientFunction", true)
addEventHandler("onServerCallsClientFunction", resourceRoot, callClientFunction)

Ejemplo

Click to collapse [-]
Servidor

En este ejemplo se establece la duración del minuto del jugador.

-- define la función para controlar playerJoinging
function playerJoinging()
    -- establece la duración del minuto
    callClientFunction(source, "setMinuteDuration", 10000)
end
-- añade el controlador de eventos
addEventHandler("onPlayerJoin", root, playerJoinging)

Vea también

  • callClientFunction » Esta función permite llamar cualquier función del lado del cliente desde el lado del servidor.
  • callServerFunction » Esta función permite llamar cualquier función del lado del servidor desde el lado del cliente.
  • centerWindow » Esta función centra la ventana en cualquier resolución.
  • Check » Esta funcion verifica si sus argumentos son de los tipos correctos y llama la función error si uno no lo es.
  • doForAllElements » Esta función puede ser usada para ejecutar una funcion especifica para todos los elementos de un tipo especifico.
  • dxDrawColorText » Esta función dibuja un texto dx con soporte para códigos de color #RRGGBB.
  • findRotation » Toma dos puntos y devuelve la dirección del punto A al punto B.
  • FormatDate » Formatea una fecha sobre la basándose en una cadena de formato y la devuelve.
  • getAge » Esta función la edad según el cumpleaños.
  • getCursorMoveOn » Esta función verifica de que forma se está moviendo el cursor actualmente.
  • getElementSpeed » Esta función permite obtener la velocidad del elemento en unidades de kph o mph.
  • IfElse » Devuelve uno de dos valores basado en una expresión booleana.
  • isLeapYear » Comprueba si año proporcionado es bisiesto.
  • iterElements » Devuelve un iterador para tus bucles, ahorrando tiempo en escribir ipairs( getElementsByType( type ) ), en lugar de eso escribes: iterElements( type ).
  • math.round »Redondea un número mientras pueden establecerce el numero de decimales y el método.
  • onVehicleWeaponFire » Este código implementa un evento que provocado cuando un jugador en un vehículo dispara un arma del vehículo.
  • RGBToHex » Esta funcion devuelve un string que representa el color en hexadecimal.
  • setElementSpeed » Esta funcio permite establecer la velocidad de movimiento de un elemento en unidades de kph o mph.
  • setVehicleGravityPoint » Esta función del lado del cliente establece una gravedad de vehiculo en la dirección de una coordenada tridimensional con la fuerza especificada.
  • string.explode » Esta función divide un string con un patrón separador dado y devuelve una tabla con las partes.
  • table.copy » Esta función copia una tabla completa y todas las tablas dentro de ella.
  • table.map » Esta función recorre una tabla y reemplaza cada campo con lo que devuelva la función que es pasada, donde los valores de campo son pasados como primer argumento y opcionalmente más argumentos.
  • table.size » Encuentra el tamaño completo de una tabla.
  • toHex » Esta función convierte un número decimal a un número hexadecimal, como una corrección para el lado del cliente.
  • var_dump » Esta función entrega información acerca de una o más variables usando outputConsole().
  • multi_check » Esta función comprueba de de uno a varios elementos, util y limpia.
  • isElementInPhotograph » Esta función comprueba si un elemento estuvo en la foto de cámara de un jugador. Necesita se escrita aun. --Ransom 21:45, 2 May 2012 (UTC)