The following warnings occurred:
Warning [2] Use of undefined constant SAPI_NAME - assumed 'SAPI_NAME' (this will throw an Error in a future version of PHP) - Line: 3388 - File: inc/functions.php PHP 7.4.33-nmm6 (Linux)
File Line Function
/inc/functions.php 3388 errorHandler->error
/showthread.php 116 build_archive_link
Warning [2] Use of undefined constant IN_ARCHIVE - assumed 'IN_ARCHIVE' (this will throw an Error in a future version of PHP) - Line: 3331 - File: inc/functions.php PHP 7.4.33-nmm6 (Linux)
File Line Function
/inc/functions.php 3331 errorHandler->error
/inc/functions.php 3324 build_forum_breadcrumb
/showthread.php 195 build_forum_breadcrumb
Warning [2] Use of undefined constant IN_ARCHIVE - assumed 'IN_ARCHIVE' (this will throw an Error in a future version of PHP) - Line: 3331 - File: inc/functions.php PHP 7.4.33-nmm6 (Linux)
File Line Function
/inc/functions.php 3331 errorHandler->error
/showthread.php 195 build_forum_breadcrumb






Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Show players home country
Author Message
Lano
Apprentice
*

Posts: 28
Likes Given: 3
Likes Received: 0 in 0 posts
Joined: Oct 2012
Reputation: 0



Post: #1
Show players home country
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?
02-12-2019 07:02 AM
Find all posts by this user Like Post Quote this message in a reply
Coruja
Sphere Developer
*****

Posts: 987
Likes Given: 5
Likes Received: 226 in 187 posts
Joined: Jul 2012
Reputation: 7

Dimension Shard

Post: #2
RE: Show players home 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
02-12-2019 10:34 AM
Find all posts by this user Like Post Quote this message in a reply
[+] 1 user Likes Coruja's post
Lano
Apprentice
*

Posts: 28
Likes Given: 3
Likes Received: 0 in 0 posts
Joined: Oct 2012
Reputation: 0



Post: #3
RE: Show players home country
Thought so. - Thank you a lot!
02-12-2019 09:57 PM
Find all posts by this user Like Post Quote this message in a reply
golfin
Banned

Posts: 213
Likes Given: 2
Likes Received: 32 in 28 posts
Joined: Nov 2017

Eranova

Post: #4
RE: Show players home country
You can see how he did on ServUO Felladrin: https://www.servuo.com/archive/display-c...-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.
02-13-2019 03:53 AM
Visit this user's website Find all posts by this user Like Post Quote this message in a reply
Coruja
Sphere Developer
*****

Posts: 987
Likes Given: 5
Likes Received: 226 in 187 posts
Joined: Jul 2012
Reputation: 7

Dimension Shard

Post: #5
RE: Show players home country
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"
...
02-14-2019 09:42 AM
Find all posts by this user Like Post Quote this message in a reply
golfin
Banned

Posts: 213
Likes Given: 2
Likes Received: 32 in 28 posts
Joined: Nov 2017

Eranova

Post: #6
RE: Show players home country
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.
02-14-2019 06:51 PM
Visit this user's website Find all posts by this user Like Post Quote this message in a reply
Lano
Apprentice
*

Posts: 28
Likes Given: 3
Likes Received: 0 in 0 posts
Joined: Oct 2012
Reputation: 0



Post: #7
RE: Show players home country
Uuuuh nice! - Thank you - Works like a charm!
(This post was last modified: 02-15-2019 06:21 AM by Lano.)
02-15-2019 06:06 AM
Find all posts by this user Like Post Quote this message in a reply
Kanibal
Master
**

Posts: 255
Likes Given: 6
Likes Received: 30 in 28 posts
Joined: Jun 2012
Reputation: 0



Post: #8
RE: Show players home country
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


Attached File(s)
.rar  geoip_ip.rar (Size: 1.99 MB / Downloads: 13)

Grandmaster Localhost Admin
(This post was last modified: 02-25-2019 07:39 AM by Kanibal.)
02-25-2019 07:03 AM
Visit this user's website Find all posts by this user Like Post Quote this message in a reply
[+] 2 users Like Kanibal's post
Kanibal
Master
**

Posts: 255
Likes Given: 6
Likes Received: 30 in 28 posts
Joined: Jun 2012
Reputation: 0



Post: #9
RE: Show players home country
Updated geoip 20201115


Attached File(s)
.zip  geoip_20201115.zip (Size: 1.52 MB / Downloads: 6)

Grandmaster Localhost Admin
11-15-2020 09:26 AM
Visit this user's website Find all posts by this user Like Post Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 2 Guest(s)