Jump to content

[Solucionado][Re-Aporte] Interacción con Peds en una tabla


aka Blue

Recommended Posts

Tu script estaba del todo mal, intentabas conseguir la posición de una tabla y extraer un valor que no existe' peds' y es ped xD.

Ya funciona

-- Tabla de los peds 
-- Se usa [skin] [x] [y] [z] [rotacion x] [rotacion y] [rotacion z] 
  
local peds = 
{ 
  
    {201, x, y, z, 0}, 
  
    {}, 
} 
  
local mensajes = { "Hola", "Buenas tardes", "Buenas", "Oli", "EQUISDE" } 
  
function creacionPeds ( ) 
    for k, v in ipairs ( peds ) do 
        local skin = v[1] 
        local x, y, z, rz = v[2], v[3], v[4], v[5] 
        if ( skin and x and y and z and rz ) then 
            createPed ( skin, x, y, z, rz ) 
            outputDebugString ( "[interaccion] Peds creados satisfactoriamente." ) 
        else 
            outputDebugString ( "[interaccion] No has colocado los datos de creación de PEDS bien." ) 
        end 
    end 
end 
addEventHandler ( "onResourceStart", getRootElement(), creacionPeds ) 
  
function sendMessageToNearbyPlayers( message, messageType ) 
    if messageType == 0 then 
        for index, ped in ipairs(getElementsByType ( "ped" )) do 
            if ped and getElementType(ped) == "ped" then 
            local x, y, z = getElementPosition ( source ) 
            local x1, y1, z1 = getElementPosition ( ped ) 
            local distance = getDistanceBetweenPoints3D ( x, y, z, x1, y1, z1 ) 
                if distance < 1 then 
                    for _, txt in ipairs(mensajes) do 
                        if string.find ( message, txt )  then 
                            outputChatBox ( "Ped#"..index.." dice: Hola buenas tardes, ¿En qué le puedo ayudar?", source, 255, 255, 255 ) 
                        end 
                    end 
                end 
            end 
        end 
    end 
end 
-- attach our new chat handler to onPlayerChat 
addEventHandler( "onPlayerChat", getRootElement(), sendMessageToNearbyPlayers ) 

Link to comment

Gracias @Enargy, me funcionó. Ahora bien, tengo una duda, ¿podría hacer que el índex sea el nombre del ped para poder distinguirlos? Es decir, algo así:

["Enargy"] = {299, 2038.013671875, 1532.7841796875, 10.671875, 0 }, 
["Blue Pie"] = {102, 30.013671875, 12.7841796875, 4.671875, 0 }, 
  

Link to comment

Yo use el index para poder identificarlos y no confundirme, pero en la misma tabla agregas otra columna que te indique el nombre

local peds = 
{ 
  
    {"Enargy", 201, x, y, z, 0}, 
  
    {}, 
} 
  
local mensajes = { "Hola", "Buenas tardes", "Buenas", "Oli", "EQUISDE" } 
  
function creacionPeds ( ) 
    for k, v in ipairs ( peds ) do 
        local skin = v[1] 
        local name, x, y, z, rz = v[1], v[2], v[3], v[4], v[5] 
        if ( skin and x and y and z and rz ) then 
            ped = createPed ( skin, x, y, z, rz ) 
            setElementData(ped,"name", tostring(name)) 
            outputDebugString ( "[interaccion] Peds creados satisfactoriamente." ) 
        else 
            outputDebugString ( "[interaccion] No has colocado los datos de creación de PEDS bien." ) 
        end 
    end 
end 
addEventHandler ( "onResourceStart", getRootElement(), creacionPeds ) 
  
function sendMessageToNearbyPlayers( message, messageType ) 
    if messageType == 0 then 
        for index, ped in ipairs(getElementsByType ( "ped" )) do 
            if ped and getElementType(ped) == "ped" then 
            local x, y, z = getElementPosition ( source ) 
            local x1, y1, z1 = getElementPosition ( ped ) 
            local distance = getDistanceBetweenPoints3D ( x, y, z, x1, y1, z1 ) 
            local name = getElementData(ped, "name") or "N/A" 
                if distance < 1 then 
                    for _, txt in ipairs(mensajes) do 
                        if string.find ( message, txt )  then 
                            outputChatBox ( name.." dice: Hola buenas tardes, ¿En qué le puedo ayudar?", source, 255, 255, 255 ) 
                        end 
                    end 
                end 
            end 
        end 
    end 
end 
-- attach our new chat handler to onPlayerChat 
addEventHandler( "onPlayerChat", getRootElement(), sendMessageToNearbyPlayers )  

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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