DBY Posted September 13, 2015 Posted September 13, 2015 (edited) Solucionado, pueden cerrar el tema. Edited September 13, 2015 by Guest
DBY Posted September 13, 2015 Author Posted September 13, 2015 Con eso saco la IP pero no saco el país en el que está.
Sasu Posted September 13, 2015 Posted September 13, 2015 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.
Sasu Posted September 13, 2015 Posted September 13, 2015 Fijate desde la pagina si no te la reconoce http://ip-api.com/json . Y sino puedes buscar tu alguna que la reconozca. EDIT: Aqui tienes otro para probar http://www.telize.com/geoip | https://ip.nf/me.json
DBY Posted September 13, 2015 Author Posted September 13, 2015 Okay, sí funciona. Probé con el segundo link y sólo devolvía mi IP local y era eso, estoy algo despistado .
DBY Posted September 13, 2015 Author Posted September 13, 2015 Cual te funciona? La de telize? Ambas. POST ACTUALIZADO, PROBLEMA CON LA FUNCIÓN 'getLanguage'
UserToDelete Posted September 13, 2015 Posted September 13, 2015 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 )
Sasu Posted September 13, 2015 Posted September 13, 2015 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
UserToDelete Posted September 13, 2015 Posted September 13, 2015 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.
Sasu Posted September 13, 2015 Posted September 13, 2015 Estaba en localhost. 127.0.0.1 no pertenece a ningún país. No habia pensado en eso
DBY Posted September 13, 2015 Author Posted September 13, 2015 Lo he borrado todo y lo he vuelto a hacer, ahora funciona y no necesito usar la api, puse el getPlayerCountry.
UserToDelete Posted September 13, 2015 Posted September 13, 2015 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
DBY Posted September 13, 2015 Author Posted September 13, 2015 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 é.
Recommended Posts