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?
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
Thought so. - Thank you a lot!
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"
...
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.
Uuuuh nice! - Thank you - Works like a charm!
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