DBY Posted September 13, 2015 Share Posted September 13, 2015 (edited) Solucionado, pueden cerrar el tema. Edited September 13, 2015 by Guest Link to comment
aka Blue Posted September 13, 2015 Share Posted September 13, 2015 Podrías hacerlo con getPlayerIP Link to comment
DBY Posted September 13, 2015 Author Share Posted September 13, 2015 Con eso saco la IP pero no saco el país en el que está. Link to comment
aka Blue Posted September 13, 2015 Share Posted September 13, 2015 Cada país tiene diferentes IP. Link to comment
Sasu Posted September 13, 2015 Share 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. Link to comment
DBY Posted September 13, 2015 Author Share Posted September 13, 2015 Country es nil, no funciona. Link to comment
Sasu Posted September 13, 2015 Share 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 Link to comment
DBY Posted September 13, 2015 Author Share 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 . Link to comment
Sasu Posted September 13, 2015 Share Posted September 13, 2015 Cual te funciona? La de telize? Link to comment
DBY Posted September 13, 2015 Author Share Posted September 13, 2015 Cual te funciona? La de telize? Ambas. POST ACTUALIZADO, PROBLEMA CON LA FUNCIÓN 'getLanguage' Link to comment
UserToDelete Posted September 13, 2015 Share 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 ) Link to comment
Sasu Posted September 13, 2015 Share 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 Link to comment
UserToDelete Posted September 13, 2015 Share 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. Link to comment
Sasu Posted September 13, 2015 Share Posted September 13, 2015 Estaba en localhost. 127.0.0.1 no pertenece a ningún país. No habia pensado en eso Link to comment
DBY Posted September 13, 2015 Author Share 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. Link to comment
UserToDelete Posted September 13, 2015 Share 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 Link to comment
DBY Posted September 13, 2015 Author Share 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 é. Link to comment
Recommended Posts