Replace pcall(funtion() with pcall(function()
I believe both of them are same
Can I know why you want to replace
pcall(function() with pcall(function()
funtion is a big typo
As others have stated, there is no point in using PlayerAdded for this, the server location won’t change so you only need a single request per server.
Also, you’ve said a “Java” table when you meant a JSON table.
I’ll leave a better formatted script below with good practices, feel free to edit your post and use it.
-- All you have to do is create a StringValue in ReplicatedStorage with name "ServerLocation" local HttpService = game:GetService("HttpService") local Location = game:GetService("ReplicatedStorage"):WaitForChild("ServerLocation") local Success, Response = pcall(function() return HttpService:GetAsync("http://ip-api.com/json/") end) if Success then Response = HttpService:JSONDecode(Response) Location.Value = Response["country"] end
You can also add more comments for beginners if you’d like to.
Can i ask what is this ? is it some kind of string value ?
Hi, there’s an easier way to do this by just requesting it from ipconfig.io/country.
local uri = "https://ipconfig.io/country" local httpsservice = game:GetService("HttpService") game.Players.PlayerAdded:Connect(function(plr) wait(2) -- player loads fully local getasyncinfo = httpsservice:GetAsync(uri) game.Workspace.ServerLocation.Value = "Server Location: "..getasyncinfo end)
Yes, its optional I just kept the server location string value in workspace
well this link is quite slow , it take like 10 second to get just 1 info . i recommended to use the first link they use .
Well, it does error if the value isn’t present, and you didn’t write anything about it in your topic either. This makes it extremely uncomfortable for less experienced programmers.
Oh sorry, but I will add it soon
Here is a sample this will print the country that the server is in:
local HttpService = game:GetService("HttpService") local URL = "http://ip-api.com/json/" local JSONServerData local ServerData local ServerCountry local Success,ErrorMessage = pcall(function() -- the script won't stop working at a line if its inside a pcall function JSONServerData = HttpService:GetAsync(URL) -- roblox server will get info from that link ServerData = HttpService:JSONDecode(JSONServerData) -- make the json into lua table, so its easy to use ServerCountry = ServerData["country"] -- Get the country where the server is located end) if ErrorMessage ~= nil then -- if its not success script, it will print the error print(ErrorMessage) else print(ServerCountry) end
Sorry for the bump by the way I thought it would be helpful
I have tried this before with my game, it will return a false server location. You should use the timezone from the API instead of the city.
This is most likely how it is used in games:
local HttpService = game:GetService("HttpService") local PlayerService = game:GetService("Players") local API = "http://ip-api.com/json/" local info = HttpService:JSONDecode(HttpService:GetAsync(API)) local function onPlayerAdded() local success, errorMessage = pcall(function() return end) if success then print("Server Location: "..tostring(info["timezone"])) end if errorMessage then warn(errorMessage) end end PlayerService.PlayerAdded:Connect(onPlayerAdded)
Here is another outcoome of when I used remotes and user interface:
I’m not sure about it, because It always works for me, and this might be a aid to people who also got false location just like your faced problem, so anyway thanks for the info
it worked, it isn’t false, maybe roblox assigned you a different server
Yes, also note that server location won’t always be your country, it sometimes changes location to different, when there is higher network traffic in a region, to avoid ping
I don’t really know where to find API, I found the API from someone’s post
However, you can try to find it here maybe
None of the values are hash tagged, I don’t want others to know my location, so I made it #### in reality, it does not return any hashtag values
you should use camelCasing, 2. that gets the server location, so there is no reason to put a playerAdded event, 3. you should be using requestasync.
It displays IP Address of whoever who clicks the link, so we make server in Roblox click the link
Also I don’t know if your allowed to display zip code thats some personal info, players might also think the game is dangerous
Oh sorry I did not know I typed funtion instead of function, a “c” is missing, thx for telling
It would be nice, if you told it in a better way, why don’t you explain it? you just told typo