Advertisement
Guest User

Untitled

a guest
Jun 1st, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.50 KB | None | 0 0
  1. // get_player_information(name)
  2. int ModApiServer::l_get_player_information(lua_State *L)
  3. {
  4.  
  5.     NO_MAP_LOCK_REQUIRED;
  6.     const char * name = luaL_checkstring(L, 1);
  7.     RemotePlayer *player = dynamic_cast<ServerEnvironment *>(getEnv(L))->getPlayer(name);
  8.     if (player == NULL) {
  9.         lua_pushnil(L); // no such player
  10.         return 1;
  11.     }
  12.  
  13.     Address addr;
  14.     try
  15.     {
  16.         addr = getServer(L)->getPeerAddress(player->peer_id);
  17.     }
  18.     catch(con::PeerNotFoundException) // unlikely
  19.     {
  20.         dstream << FUNCTION_NAME << ": peer was not found" << std::endl;
  21.         lua_pushnil(L); // error
  22.         return 1;
  23.     }
  24.  
  25.     float min_rtt,max_rtt,avg_rtt,min_jitter,max_jitter,avg_jitter;
  26.     ClientState state;
  27.     u32 uptime;
  28.     u16 prot_vers;
  29.     u8 ser_vers,major,minor,patch;
  30.     std::string vers_string;
  31.  
  32. #define ERET(code)                                                             \
  33.     if (!(code)) {                                                             \
  34.         dstream << FUNCTION_NAME << ": peer was not found" << std::endl;     \
  35.         lua_pushnil(L); /* error */                                            \
  36.         return 1;                                                              \
  37.     }
  38.  
  39.     ERET(getServer(L)->getClientConInfo(player->peer_id,con::MIN_RTT,&min_rtt))
  40.     ERET(getServer(L)->getClientConInfo(player->peer_id,con::MAX_RTT,&max_rtt))
  41.     ERET(getServer(L)->getClientConInfo(player->peer_id,con::AVG_RTT,&avg_rtt))
  42.     ERET(getServer(L)->getClientConInfo(player->peer_id,con::MIN_JITTER,&min_jitter))
  43.     ERET(getServer(L)->getClientConInfo(player->peer_id,con::MAX_JITTER,&max_jitter))
  44.     ERET(getServer(L)->getClientConInfo(player->peer_id,con::AVG_JITTER,&avg_jitter))
  45.  
  46.     ERET(getServer(L)->getClientInfo(player->peer_id,
  47.                                         &state, &uptime, &ser_vers, &prot_vers,
  48.                                         &major, &minor, &patch, &vers_string))
  49.  
  50.     lua_newtable(L);
  51.     int table = lua_gettop(L);
  52.  
  53.     lua_pushstring(L,"address");
  54.     lua_pushstring(L, addr.serializeString().c_str());
  55.     lua_settable(L, table);
  56.  
  57.     lua_pushstring(L,"ip_version");
  58.     if (addr.getFamily() == AF_INET) {
  59.         lua_pushnumber(L, 4);
  60.     } else if (addr.getFamily() == AF_INET6) {
  61.         lua_pushnumber(L, 6);
  62.     } else {
  63.         lua_pushnumber(L, 0);
  64.     }
  65.     lua_settable(L, table);
  66.  
  67.     lua_pushstring(L,"min_rtt");
  68.     lua_pushnumber(L, min_rtt);
  69.     lua_settable(L, table);
  70.  
  71.     lua_pushstring(L,"max_rtt");
  72.     lua_pushnumber(L, max_rtt);
  73.     lua_settable(L, table);
  74.  
  75.     lua_pushstring(L,"avg_rtt");
  76.     lua_pushnumber(L, avg_rtt);
  77.     lua_settable(L, table);
  78.  
  79.     lua_pushstring(L,"min_jitter");
  80.     lua_pushnumber(L, min_jitter);
  81.     lua_settable(L, table);
  82.  
  83.     lua_pushstring(L,"max_jitter");
  84.     lua_pushnumber(L, max_jitter);
  85.     lua_settable(L, table);
  86.  
  87.     lua_pushstring(L,"avg_jitter");
  88.     lua_pushnumber(L, avg_jitter);
  89.     lua_settable(L, table);
  90.  
  91.     lua_pushstring(L,"connection_uptime");
  92.     lua_pushnumber(L, uptime);
  93.     lua_settable(L, table);
  94.  
  95.     lua_pushstring(L,"protocol_version");
  96.     lua_pushnumber(L, prot_vers);
  97.     lua_settable(L, table);
  98.    
  99.     lua_pushstring(L,"version_string");
  100.     lua_pushstring(L, vers_string.c_str());
  101.     lua_settable(L, table);
  102. #ifndef NDEBUG
  103.     lua_pushstring(L,"serialization_version");
  104.     lua_pushnumber(L, ser_vers);
  105.     lua_settable(L, table);
  106.  
  107.     lua_pushstring(L,"major");
  108.     lua_pushnumber(L, major);
  109.     lua_settable(L, table);
  110.  
  111.     lua_pushstring(L,"minor");
  112.     lua_pushnumber(L, minor);
  113.     lua_settable(L, table);
  114.  
  115.     lua_pushstring(L,"patch");
  116.     lua_pushnumber(L, patch);
  117.     lua_settable(L, table);
  118.  
  119.     lua_pushstring(L,"state");
  120.     lua_pushstring(L,ClientInterface::state2Name(state).c_str());
  121.     lua_settable(L, table);
  122. #endif
  123.  
  124. #undef ERET
  125.     return 1;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement