SphereCommunity
Show players home country - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Requests (/Forum-Script-Requests)
+--- Thread: Show players home country (/Thread-Show-players-home-country)



Show players home country - Lano - 02-12-2019 07:02 AM

Hello.

What is the easiest way to make a script that shows a players home country in the tooltip?

The tooltip part i got down, but how to check the Ip and link it to a country?


RE: Show players home country - Coruja - 02-12-2019 10:34 AM

unfortunately there's no easy way to do it using an UO client/emulator, you can't just assume that IPs starting with 101 (example) is from country X, because today the IP address list is totally messed up. You can have a IP number from country X, the next one will be from country Y and the next from country Z, so it's almost impossible to relate all IPs/countries yourself

to get this system working you must find a site that have an public API where you enter something like http://something.com/ip=123.123.123.123 and it will return the country (usually in json format). Next you must make sphere export the client IP to an external app which will send this IP to the external API, read the country name from received json data and export it to sphere

also keep in mind that the server result is not 100% accurate and if the server API goes down this will break your engine too

it's not impossible, but this an complex engine that honestly will take you many hours/days/weeks of headaches... just to show a single tooltip. So probably it would be better just create an sphere dialog with some country names and let the player choose one


RE: Show players home country - Lano - 02-12-2019 09:57 PM

Thought so. - Thank you a lot!


RE: Show players home country - golfin - 02-13-2019 03:53 AM

You can see how he did on ServUO Felladrin: https://www.servuo.com/archive/display-country-under-characters-name.541/. Or you can create another solution. When registering a account, the player writes his country. And then you drag it from DB to tooltip.


RE: Show players home country - Coruja - 02-14-2019 09:42 AM

that's a nice idea, you can get the client language using <ACCOUNT.LANG> and use this value to get the country name (eg: ENU = united states)

note that client language is only stored on server-side after the client speak something, but this can be easily fixed just showing an "Not Available" text

the script should be something like this:
Code:
[EVENTS e_char_country_tooltip]   // add this event on all players
ON=@ClientTooltip
SRC.ADDCLILOC <DEF.empty_cliloc>,Country: <DEF.CountryName<ACCOUNT.LANG>>

[DEFNAMES country_names]
CountryName        "Not Available"
CountryNameENG     "United Kingdom"
CountryNameENU     "United States"
CountryNameFRA     "France"
CountryNameITA     "Italy"
CountryNameJPN     "Japan"
CountryNamePTB     "Brazil"
CountryNamePTG     "Portugal"
CountryNameRUS     "Russia"
...



RE: Show players home country - golfin - 02-14-2019 06:51 PM

Coruja, You're a Super Man, Master Programmer. I did not find it, and I read the cS script from ServUo and could not understand how their system works with language. Your version is a simple solution. Very nice.

Even if I do not need it. But it's great work from you. Thank you.


RE: Show players home country - Lano - 02-15-2019 06:06 AM

Uuuuh nice! - Thank you - Works like a charm!


RE: Show players home country - Kanibal - 02-25-2019 07:03 AM

MySQL + GeoIP
Code:
[EVENTS e_char_country_tooltip]
on=@clienttooltip
src.addcliloc <def.empty_cliloc>,Country: <f_get_country <account.lastip>>

[FUNCTION f_get_country]
db.connect
db.query "SELECT * FROM `geoip_ip` WHERE INET_ATON('<argv[0]>') BETWEEN `start` AND `end`"
    if (<db.row.numrows> > 0)
      return <db.row.0.country>
    else
      return "N/A"
    endif
db.close
Country GeoIP database in attachment


RE: Show players home country - Kanibal - 11-15-2020 09:26 AM

Updated geoip 20201115