Advertisement
Guest User

player_geolocation.inc

a guest
Aug 22nd, 2018
797
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. #if defined _player_geolocation_included
  2. #endinput
  3. #endif
  4. #define _player_geolocation_included
  5.  
  6. #if !defined _samp_included
  7. #error Please include <a_samp> first.
  8. #endif
  9.  
  10. #if !defined sscanf
  11. #error Please include <sscanf2> first.
  12. #endif
  13.  
  14. #define GEO_IP_INFO_DETECT_URL "ip-api.com/csv/"
  15. #define GEO_IP_INFO_DETECT_URL_FIELDS "?fields=131793"
  16.  
  17. #define GEO_MAX_IP_LENGTH 16
  18. #define GEO_MAX_COUNTRY_NAME_LENGTH 32
  19. #define GEO_MAX_CITY_NAME_LENGTH 32
  20. #define GEO_MAX_LAT_LON_LENGTH 12
  21. #define GEO_MAX_PROVIDER_NAME_LENGTH 32
  22. #define GEO_MAX_PROXY_LENGTH 6
  23.  
  24. enum e_PLAYER_GEO_INFORMATION
  25. {
  26. player_ip[GEO_MAX_IP_LENGTH + 1],
  27. player_country[GEO_MAX_COUNTRY_NAME_LENGTH + 1],
  28. player_city[GEO_MAX_CITY_NAME_LENGTH + 1],
  29. player_lat[GEO_MAX_LAT_LON_LENGTH + 1],
  30. player_lon[GEO_MAX_LAT_LON_LENGTH + 1],
  31. player_provider[GEO_MAX_PROVIDER_NAME_LENGTH + 1],
  32. player_proxy[GEO_MAX_PROXY_LENGTH + 1]
  33. };
  34. new
  35. player_geoInfo[MAX_PLAYERS][e_PLAYER_GEO_INFORMATION];
  36.  
  37. #define GetPlayerCountry(%0) player_geoInfo[%0][player_country]
  38. #define GetPlayerCity(%0) player_geoInfo[%0][player_city]
  39. #define GetPlayerLatitude(%0) player_geoInfo[%0][player_lat]
  40. #define GetPlayerLongtitude(%0) player_geoInfo[%0][player_lon]
  41. #define GetPlayerProvider(%0) player_geoInfo[%0][player_provider]
  42. #define GetPlayerProxyStatus(%0) player_geoInfo[%0][player_proxy]
  43.  
  44. public OnPlayerConnect(playerid)
  45. {
  46. GetPlayerIp(playerid, player_geoInfo[playerid][player_ip], GEO_MAX_IP_LENGTH);
  47.  
  48. new
  49. request[31 - 2 + GEO_MAX_IP_LENGTH];
  50.  
  51. strcat(request, GEO_IP_INFO_DETECT_URL);
  52. strcat(request, player_geoInfo[playerid][player_ip]);
  53. strcat(request, GEO_IP_INFO_DETECT_URL_FIELDS);
  54.  
  55. HTTP(playerid, HTTP_GET, request, "", "p_geo_OnInformationRequested");
  56.  
  57. #if defined p_geo_OnPlayerConnect
  58. p_geo_OnPlayerConnect(playerid);
  59. #endif
  60. return 1;
  61. }
  62. #if defined _ALS_OnPlayerConnect
  63. #undef OnPlayerConnect
  64. #else
  65. #define _ALS_OnPlayerConnect
  66. #endif
  67. #define OnPlayerConnect p_geo_OnPlayerConnect
  68. #if defined p_geo_OnPlayerConnect
  69. forward p_geo_OnPlayerConnect(playerid);
  70. #endif
  71.  
  72. forward p_geo_OnInformationRequested(playerid, response_code, data[]);
  73. public p_geo_OnInformationRequested(playerid, response_code, data[])
  74. {
  75. if(response_code == 200)
  76. {
  77. sscanf(data, "p<,>s[32]s[32]s[12]s[12]s[32]s[6]",
  78. player_geoInfo[playerid][player_country],
  79. player_geoInfo[playerid][player_city],
  80. player_geoInfo[playerid][player_lat],
  81. player_geoInfo[playerid][player_lon],
  82. player_geoInfo[playerid][player_provider],
  83. player_geoInfo[playerid][player_proxy]);
  84. }
  85. else
  86. {
  87. strmid(player_geoInfo[playerid][player_country], "-", 0, GEO_MAX_COUNTRY_NAME_LENGTH);
  88. strmid(player_geoInfo[playerid][player_city], "-", 0, GEO_MAX_CITY_NAME_LENGTH);
  89. strmid(player_geoInfo[playerid][player_lat], "-", 0, GEO_MAX_LAT_LON_LENGTH);
  90. strmid(player_geoInfo[playerid][player_lon], "-", 0, GEO_MAX_LAT_LON_LENGTH);
  91. strmid(player_geoInfo[playerid][player_provider], "-", 0, GEO_MAX_PROVIDER_NAME_LENGTH);
  92. strmid(player_geoInfo[playerid][player_proxy], "-", 0, GEO_MAX_PROXY_LENGTH);
  93. }
  94. return 1;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement