Jump to content

[SOLUCIONADO]Problema con sistema de lenguaje.


DBY

Recommended Posts

fetchRemote("http://ip-api.com/json/"..getPlayerIP(player), returnData, "", false, player) 
  
function returnData(data, err, player) 
    if err == 0 then 
        local json = fromJSON(data) 
        outputChatBox(getPlayerName(player).." proviene de "..json.country, root) 
    end 
end 

No lo he probado, estoy desde el telefono.

Link to comment

Y por que no directamente usas el sistema de 'admin' diseñado por Lil_Toady?

El problema, es que CLIENT no admite todos los fetchRemote (o almenos, hace 2 dias, que fue cuando probé)

De esta forma puedes usar

getElementData(element, "lang") --en servidor 
getElementData(localPlayer, "lang") --en client 

local mensajes = { 
    ["ES"] = "Bienvenido al servidor", 
    ["PT"] = "Benvido ao servidor", 
    ["EN"] = "Welcome to server" 
} 
function subLang (value) 
local langs = { 
    ["ES"] = {"MX", "VE", "SV", "PY", "PE", "AR", "CL", "UY", "CO", "EC"}, 
    ["PT"] = {"BR"}, 
    ["EN"] = {} 
} 
    for k,v in pairs(langs) do 
        for k,v in ipairs(v) do 
            if v == value then 
            return k 
            end 
        end 
    end 
return "EN" 
end 
  
function getLang(player) 
local country = subLang(exports.admin:getPlayerCountry(player)) 
    if country then 
    return country 
    else 
    return false 
    end 
end 
addEventHandler("onPlayerJoin", root, 
    function () 
    local country = getLang(source) 
        if country then 
        setElementData(source, "lang", country) 
        end 
    end 
) 
addEventHandler("onResourceStart", resourceRoot, 
    function () 
        for k,v in ipairs(getElementsByType('player')) do 
            if not getElementData(v, "lang") then 
            local country = getLang(v) 
                if country then 
                setElementData(v, "lang", country) 
                end 
            end 
        end 
    end 
) 

Link to comment
Y por que no directamente usas el sistema de 'admin' diseñado por Lil_Toady?

El problema, es que CLIENT no admite todos los fetchRemote (o almenos, hace 2 dias, que fue cuando probé)

De esta forma puedes usar

getElementData(element, "lang") --en servidor 
getElementData(localPlayer, "lang") --en client 

local mensajes = { 
    ["ES"] = "Bienvenido al servidor", 
    ["PT"] = "Benvido ao servidor", 
    ["EN"] = "Welcome to server" 
} 
function subLang (value) 
local langs = { 
    ["ES"] = {"MX", "VE", "SV", "PY", "PE", "AR", "CL", "UY", "CO", "EC"}, 
    ["PT"] = {"BR"}, 
    ["EN"] = {} 
} 
    for k,v in pairs(langs) do 
        for k,v in ipairs(v) do 
            if v == value then 
            return k 
            end 
        end 
    end 
return "EN" 
end 
  
function getLang(player) 
local country = subLang(exports.admin:getPlayerCountry(player)) 
    if country then 
    return country 
    else 
    return false 
    end 
end 
addEventHandler("onPlayerJoin", root, 
    function () 
    local country = getLang(source) 
        if country then 
        setElementData(source, "lang", country) 
        end 
    end 
) 
addEventHandler("onResourceStart", resourceRoot, 
    function () 
        for k,v in ipairs(getElementsByType('player')) do 
            if not getElementData(v, "lang") then 
            local country = getLang(v) 
                if country then 
                setElementData(v, "lang", country) 
                end 
            end 
        end 
    end 
) 

Dijo que no le devolvia el pais de la IP española.

@Dannys, fetchRemote funciona con web's remotas(no son propio del mismo host) solo en server-side, tendras que usar triggerClientEvent

Link to comment
Y por que no directamente usas el sistema de 'admin' diseñado por Lil_Toady?

El problema, es que CLIENT no admite todos los fetchRemote (o almenos, hace 2 dias, que fue cuando probé)

De esta forma puedes usar

getElementData(element, "lang") --en servidor 
getElementData(localPlayer, "lang") --en client 

local mensajes = { 
    ["ES"] = "Bienvenido al servidor", 
    ["PT"] = "Benvido ao servidor", 
    ["EN"] = "Welcome to server" 
} 
function subLang (value) 
local langs = { 
    ["ES"] = {"MX", "VE", "SV", "PY", "PE", "AR", "CL", "UY", "CO", "EC"}, 
    ["PT"] = {"BR"}, 
    ["EN"] = {} 
} 
    for k,v in pairs(langs) do 
        for k,v in ipairs(v) do 
            if v == value then 
            return k 
            end 
        end 
    end 
return "EN" 
end 
  
function getLang(player) 
local country = subLang(exports.admin:getPlayerCountry(player)) 
    if country then 
    return country 
    else 
    return false 
    end 
end 
addEventHandler("onPlayerJoin", root, 
    function () 
    local country = getLang(source) 
        if country then 
        setElementData(source, "lang", country) 
        end 
    end 
) 
addEventHandler("onResourceStart", resourceRoot, 
    function () 
        for k,v in ipairs(getElementsByType('player')) do 
            if not getElementData(v, "lang") then 
            local country = getLang(v) 
                if country then 
                setElementData(v, "lang", country) 
                end 
            end 
        end 
    end 
) 

Dijo que no le devolvia el pais de la IP española.

Estaba en localhost. 127.0.0.1 no pertenece a ningún país.

Link to comment
Lo he borrado todo y lo he vuelto a hacer, ahora funciona y no necesito usar la api, puse el getPlayerCountry.

Realmente lo que yo te puse, era tu script optimizado, la tabla dentro de la funcion significa que si hay un pais de esa lista, lo asigna a ES automaticamente sin tener que hacer tantos elseif o or

Gracias por el código, pero al final lo hice todo nuevo xDé.

Link to comment
  • Recently Browsing   0 members

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