Jump to content

Error con getPlayerName (Error de sentencia o concatenación)


Shody

Recommended Posts

Hola,

Soy nuevo, posiblemente sea la razón de un error que tengo cuando intento mostrar un mensaje en el chat de la variable que recoge el nombre del usuario.

He probado muchas cosas y tengo errores como:

"Bad argument @ 'getPlayerName' [Expected element at argument 1, got function]" 

O también

"myserver\script.lua:21: attempt to concatenate a boolean value" 

He probado de varias formas:

function entradaServidor() 
    spawnPlayer(source, PosX, PosY, PosZ) 
    fadeCamera(source, true) 
    setCameraTarget(source, source) 
    outputChatBox("Nombre: " .. getPlayerName(entradaServidor), getRootElement(), 255, 255, 255, true) 
end 
addEventHandler("onPlayerJoin", getRootElement(), entradaServidor) 

También he probado con:

  
local localPlayerName = getPlayerName(getLocalPlayer()) 
  

Y sale un error que si mal no recuerdo el valor getLocalPlayer era nulo.

A ver si doy un paso más adelante porque estoy estancado aquí :lol:

Un saludo.

Link to comment

Solucionado, gracias por la ayuda Tomas.

Creo que me estoy confundiendo con el getRootElement() y source.

Por lo que he visto getRootElement() es el que dice quién lo ejecuta y no se si se refiere a cliente o servidor, o es al igual que el "source" que dice que la función es para él mismo o para todos por ejemplo.

Un saludo :)

Link to comment
Solucionado, gracias por la ayuda Tomas.

Creo que me estoy confundiendo con el getRootElement() y source.

Por lo que he visto getRootElement() es el que dice quién lo ejecuta y no se si se refiere a cliente o servidor, o es al igual que el "source" que dice que la función es para él mismo o para todos por ejemplo.

Un saludo :)

'source' es una variable predefinida que viene con la mayoría de los eventos, no importa el side.

getRootElement returna el nodo del 'árbol de elementos', no es fácil de comprender pero si tienes una buena comprensión del inglés aquí lo explica medianamente bien Element_tree, en un básico resumen, devuelve todos los elementos.

Link to comment

Entendido, gracias nuevamente.

Tengo que reconocer que todavía soy nuevo tanto en la programación como en LUA. Acabo de hacer un comando para crear un vehículo pero le añadí un poco de dificultad (dificultad para mí), funcionar funciona pero con lo del tema de la optimización del código entre otras cosas siempre me quedo dudando por mucho que funcione:

function crearVehiculo(Jugador, Comando, Modelo) 
  
    if Modelo then 
        local PosXA, PosYA, PosZA = getElementPosition(Jugador) -- Obtener la posición actual del usuario 
        PosXA = PosXA + 5 
        local vehiculoCreado = createVehicle(tonumber(Modelo), PosXA, PosYA, PosZA) -- Creamos el vehículo al lado de la posición del usuario 
         
        if (vehiculoCreado == false) 
            then outputChatBox("* La ID del vehículo debe estar entre 400 y 611", Jugador, 173, 0, 0) 
        end 
    else 
        outputChatBox("[uSO]: /veh [iD]", Jugador, 146, 146, 146) 
    end  
end 
addCommandHandler("veh", crearVehiculo) 

Link to comment

Pues sí, no está mal, pero hay mejores formas de hacerlo, antes de crearlo puedes verificar si es una ID de vehículo en vez de hacerlo luego:

  
function crearVehiculo(Jugador, Comando, Modelo) 
    if Modelo then 
        if ( getVehicleNameFromModel(tonumber(Modelo)) ) then 
            local PosXA, PosYA, PosZA = getElementPosition(Jugador) -- Obtener la posición actual del usuario 
            PosXA = PosXA + 5 
            createVehicle(tonumber(Modelo), PosXA, PosYA, PosZA) 
        else 
            outputChatBox("* La ID del vehiculo debe estar entre 400 y 611", Jugador, 255, 0, 0) 
        end 
    end 
end 
addCommandHandler("veh", crearVehiculo) 
  

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...