Jump to content

Que alguien me explique .-.


Kilfwan

Recommended Posts

Hola, Tengo esta duda hace dias, Quisiera mandar un texto o dato desde una tabla a server side por ejemplo asi:

tabla = { 
{"ITEM",500}, 
} 

Yo quiero hacer que el segundo valor o tercera o quinta como yo lo organice, lo pueda mandar a server side, ya que esto lo meto a una gridlist y quisiera saber como usar los datos de la tabla sin necesidad de añadir otra columna para ese segundo valor, si no que usar directamente lo de la tabla, uso esto en una columna:

function seleccion() 
    seleccionado = guiGridListGetSelectedItem(shopp) 
    item = guiGridListGetItemText ( shopp, seleccionado, columna)   
    precios = guiGridListGetItemText ( shopp, seleccionado, precio) 
    triggerServerEvent("textoBoton", getLocalPlayer(),  item, precios) 
end 
addEventHandler("onClientGUIClick", shopp, seleccion, false) 

y esto seria en server side:

addEvent ("comprarItems", true) 
addEventHandler ("comprarItems", root, 
function (  item, precio, monto ) 
    local money = getPlayerMoney( source ) 
    if ( money >= tonumber(precio) ) then 
        name = getPlayerName(source) 
        outputChatBox(" "..name..": Compro   "..item .." por "..precio.." !", getRootElement(), 0, 255, 0, true) 
        takePlayerMoney( source, precio) 
    else 
        outputChatBox("No tienes dinero", source, 200, 0,0, true) 
    end 
end 
) 

Pero yo no quiero usar la gridlist, sino solo la tabla para textos o precios, ¿Como tendría que hacerlo?

¿Me podrían dar un ejemplo?

Link to comment
tabla = { 
{item = "ITEM", precio = 500}, 
} 
  
function seleccion () 
  for k,data in pairs(tabla) do 
    local intem = data.item 
    local precio = data.precio 
    triggerServerEvent("textoBoton", getLocalPlayer(),  item, precio) 
  end 
end 
  

Link to comment
tabla = { 
{item = "ITEM", precio = 500}, 
} 
  
function seleccion () 
  for k,data in pairs(tabla) do 
    local intem = data.item 
    local precio = data.precio 
    triggerServerEvent("textoBoton", getLocalPlayer(),  item, precio) 
  end 
end 
  

Yo me refería a no usar el for .--. , Pero una cosa, ipairs es para agregar todos los valores no? Y pairs para hacer lo que hiciste arriba?

Si es así gracias entonces.

Link to comment

Revivo, Estaba practicando un rato con el exp_system pero al crear un solo marker anda todo perfecto, Pero si pongo mas cosas en la tabla me sale todo junto, por ejemplo si en el primer marker puse solo apto para nivel 3 y yo soy nivel 3 da el mensaje y si en el segundo marker esta en nivel 4 me tira el mensaje de error junto con el primero que es el del nivel 3.

Con esto estaba practicando:

Server

tabla = { 
{nivel = "3", x = -701.599609375, y = 987.353515625, z =12.375272750854, r = 0, g = 255, b = 0}, 
{nivel = "4", x = -710.3603515625, y = 988.5927734375, z = 12.379697799683,r = 0, g = 0, b = 255} 
} 
  
  
for k, s in ipairs(tabla) do 
    local x = s.x 
    local y = s.y 
    local z = s.z 
    local r = s.r 
    local g = s.g 
    local b = s.b 
    createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 )   
end 
  
  
function entras (hitElement) 
for valor, item in pairs (tabla) do 
    local numerito = item.nivel 
    triggerClientEvent(hitElement, "abrenivel", hitElement, numerito) 
end 
end 
addEventHandler("onMarkerHit", resourceRoot, entras) 

Client .-

function asdadsasd (numerito) 
    local nivel = exports.exp_system:getPlayerLevel( source ) 
        if nivel >= tonumber(numerito) then 
            outputChatBox("Eres apto para usar el marker") 
        else 
            outputChatBox("No tienes el nivel suficiente para entrar a este Marker") 
        end 
end 
addEvent("abrenivel", true) 
addEventHandler("abrenivel", localPlayer, asdadsasd) 

Aca la print que sale el doble mensaje:

riThpVf.png

En debugscript no tira ningún error.

Este seria casi la ultima cosa que me falta aprender de las tablas, Pero mi duda es ¿Por que me sale doble? Ayuden me con eso :$.

Link to comment

Aun no perfecciono mi conocimientoven tablas, pero puedes usar getPlayerLever como indice, por que ' numerito ' no estas especificando a cual indice quieres exportar.

Prueba usando 'numerito = item[getPlayerLevel]'

No estoy en pc, se me hace dificil explicarte si no testeo. Sry

Link to comment
Revivo, Estaba practicando un rato con el exp_system pero al crear un solo marker anda todo perfecto, Pero si pongo mas cosas en la tabla me sale todo junto, por ejemplo si en el primer marker puse solo apto para nivel 3 y yo soy nivel 3 da el mensaje y si en el segundo marker esta en nivel 4 me tira el mensaje de error junto con el primero que es el del nivel 3.

Con esto estaba practicando:

Server

tabla = { 
{nivel = "3", x = -701.599609375, y = 987.353515625, z =12.375272750854, r = 0, g = 255, b = 0}, 
{nivel = "4", x = -710.3603515625, y = 988.5927734375, z = 12.379697799683,r = 0, g = 0, b = 255} 
} 
  
  
for k, s in ipairs(tabla) do 
    local x = s.x 
    local y = s.y 
    local z = s.z 
    local r = s.r 
    local g = s.g 
    local b = s.b 
    createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 )   
end 
  
  
function entras (hitElement) 
for valor, item in pairs (tabla) do 
    local numerito = item.nivel 
    triggerClientEvent(hitElement, "abrenivel", hitElement, numerito) 
end 
end 
addEventHandler("onMarkerHit", resourceRoot, entras) 

Client .-

function asdadsasd (numerito) 
    local nivel = exports.exp_system:getPlayerLevel( source ) 
        if nivel >= tonumber(numerito) then 
            outputChatBox("Eres apto para usar el marker") 
        else 
            outputChatBox("No tienes el nivel suficiente para entrar a este Marker") 
        end 
end 
addEvent("abrenivel", true) 
addEventHandler("abrenivel", localPlayer, asdadsasd) 

Aca la print que sale el doble mensaje:

riThpVf.png

En debugscript no tira ningún error.

Este seria casi la ultima cosa que me falta aprender de las tablas, Pero mi duda es ¿Por que me sale doble? Ayuden me con eso :$.

Es porque estás triggeando todos los valores para luego chequearlos y comparar si el valor es igual o mayor, si quieres obtener el mayor valor segun su nivel puedes utilizar esto:

  
tabla = { 
    {nivel = "3", x = -701.599609375, y = 987.353515625, z =12.375272750854, r = 0, g = 255, b = 0}, 
    {nivel = "4", x = -710.3603515625, y = 988.5927734375, z = 12.379697799683,r = 0, g = 0, b = 255} 
} 
  
for k, s in ipairs(tabla) do 
    local x, y, z, r, g, b = s.x, s.y, s.z, s.r, s.g, s.b 
    addEventHandler("onMarkerHit", createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 ), entras) 
end 
  
  
function entras (hitElement) 
    current = 0 
    for valor, item in ipairs (tabla) do 
        if ( tostring(exports.exp_system:getPlayerLevel(hitElement)) > item.nivel ) then 
            current = exports.exp_system:getPlayerLevel(hitElement) 
        end 
    end 
    if ( current ~= 0 ) then 
        outputChatBox("El marcador del maximo nivel que puedes utilizar es: "..current, hitElement) 
    end 
end 
  

Debes ordenar los valores segun el nivel.

Link to comment
Revivo, Estaba practicando un rato con el exp_system pero al crear un solo marker anda todo perfecto, Pero si pongo mas cosas en la tabla me sale todo junto, por ejemplo si en el primer marker puse solo apto para nivel 3 y yo soy nivel 3 da el mensaje y si en el segundo marker esta en nivel 4 me tira el mensaje de error junto con el primero que es el del nivel 3.

Con esto estaba practicando:

Server

tabla = { 
{nivel = "3", x = -701.599609375, y = 987.353515625, z =12.375272750854, r = 0, g = 255, b = 0}, 
{nivel = "4", x = -710.3603515625, y = 988.5927734375, z = 12.379697799683,r = 0, g = 0, b = 255} 
} 
  
  
for k, s in ipairs(tabla) do 
    local x = s.x 
    local y = s.y 
    local z = s.z 
    local r = s.r 
    local g = s.g 
    local b = s.b 
    createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 )   
end 
  
  
function entras (hitElement) 
for valor, item in pairs (tabla) do 
    local numerito = item.nivel 
    triggerClientEvent(hitElement, "abrenivel", hitElement, numerito) 
end 
end 
addEventHandler("onMarkerHit", resourceRoot, entras) 

Client .-

function asdadsasd (numerito) 
    local nivel = exports.exp_system:getPlayerLevel( source ) 
        if nivel >= tonumber(numerito) then 
            outputChatBox("Eres apto para usar el marker") 
        else 
            outputChatBox("No tienes el nivel suficiente para entrar a este Marker") 
        end 
end 
addEvent("abrenivel", true) 
addEventHandler("abrenivel", localPlayer, asdadsasd) 

Aca la print que sale el doble mensaje:

riThpVf.png

En debugscript no tira ningún error.

Este seria casi la ultima cosa que me falta aprender de las tablas, Pero mi duda es ¿Por que me sale doble? Ayuden me con eso :$.

Es porque estás triggeando todos los valores para luego chequearlos y comparar si el valor es igual o mayor, si quieres obtener el mayor valor segun su nivel puedes utilizar esto:

  
tabla = { 
    {nivel = "3", x = -701.599609375, y = 987.353515625, z =12.375272750854, r = 0, g = 255, b = 0}, 
    {nivel = "4", x = -710.3603515625, y = 988.5927734375, z = 12.379697799683,r = 0, g = 0, b = 255} 
} 
  
for k, s in ipairs(tabla) do 
    local x, y, z, r, g, b = s.x, s.y, s.z, s.r, s.g, s.b 
    addEventHandler("onMarkerHit", createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 ), entras) 
end 
  
  
function entras (hitElement) 
    current = 0 
    for valor, item in ipairs (tabla) do 
        if ( tostring(exports.exp_system:getPlayerLevel(hitElement)) > item.nivel ) then 
            current = exports.exp_system:getPlayerLevel(hitElement) 
        end 
    end 
    if ( current ~= 0 ) then 
        outputChatBox("El marcador del maximo nivel que puedes utilizar es: "..current, hitElement) 
    end 
end 
  

Debes ordenar los valores segun el nivel.

Dice este error en debugscript cuando paso sobre el marker.

WARNING: sistemanivel\server.lua:10: Bad argument @ 'addEventHandler' [Expected function at argument 3, got nil]

Link to comment
  
addEventHandler("onResourceStart", resourceRoot, 
    function () 
        for k, s in ipairs(tabla) do 
            local x, y, z, r, g, b = s.x, s.y, s.z, s.r, s.g, s.b 
            addEventHandler("onMarkerHit", createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 ), entras) 
        end 
    end 
) 
  

Link to comment
  
addEventHandler("onResourceStart", resourceRoot, 
    function () 
        for k, s in ipairs(tabla) do 
            local x, y, z, r, g, b = s.x, s.y, s.z, s.r, s.g, s.b 
            addEventHandler("onMarkerHit", createMarker ( x, y, z -1, "cylinder", 1.5, r, g, b, 170 ), entras) 
        end 
    end 
) 
  

Ahora no sale ningún mensaje ni en el chat ni en debugscript :| .

Link to comment
  • Recently Browsing   0 members

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