Expose lastinputtime to Lua

This commit is contained in:
Gustaf Alhäll 2023-10-14 21:50:59 +02:00
parent 436de21808
commit 80e386b16f
No known key found for this signature in database
GPG key ID: 6C1F67D690CDEDFD
3 changed files with 17 additions and 5 deletions

View file

@ -3572,6 +3572,7 @@ static int lib_gAddPlayer(lua_State *L)
newplayer->jointime = 0;
newplayer->quittime = 0;
newplayer->lastinputtime = 0;
// Read the skin argument (defaults to Sonic)
if (!lua_isnoneornil(L, 1))

View file

@ -223,6 +223,7 @@ enum player_e
player_blocked,
player_jointime,
player_quittime,
player_lastinputtime,
player_ping,
#ifdef HWRENDER
player_fovadd,
@ -371,6 +372,7 @@ static const char *const player_opt[] = {
"blocked",
"jointime",
"quittime",
"lastinputtime",
"ping",
#ifdef HWRENDER
"fovadd",
@ -826,6 +828,9 @@ static int player_get(lua_State *L)
case player_quittime:
lua_pushinteger(L, plr->quittime);
break;
case player_lastinputtime:
lua_pushinteger(L, plr->lastinputtime);
break;
case player_ping:
lua_pushinteger(L, playerpingtable[plr - players]);
break;
@ -1349,6 +1354,9 @@ static int player_set(lua_State *L)
case player_quittime:
plr->quittime = (tic_t)luaL_checkinteger(L, 3);
break;
case player_lastinputtime:
plr->lastinputtime = (tic_t)luaL_checkinteger(L, 3);
break;
#ifdef HWRENDER
case player_fovadd:
plr->fovadd = luaL_checkfixed(L, 3);

View file

@ -227,6 +227,7 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum)
newplayer->jointime = 0;
newplayer->quittime = 0;
newplayer->lastinputtime = 0;
READSTRINGN(*p, player_names[newplayernum], MAXPLAYERNAME);
@ -1282,19 +1283,21 @@ static void IdleUpdate(void)
for (i = 1; i < MAXPLAYERS; i++)
{
if (cv_idletime.value && playeringame[i] && playernode[i] != UINT8_MAX && !players[i].quittime && !players[i].spectator && !IsPlayerAdmin(i))
if (cv_idletime.value && playeringame[i] && playernode[i] != UINT8_MAX && !players[i].quittime && !players[i].spectator && !players[i].bot && !IsPlayerAdmin(i) && i != serverplayer)
{
if (players[i].cmd.forwardmove || players[i].cmd.sidemove || players[i].cmd.buttons)
players[i].lastinputtime = gametime;
players[i].lastinputtime = 0;
else
players[i].lastinputtime++;
if (gametime - players[i].lastinputtime > (tic_t)cv_idletime.value * TICRATE * 60)
if (players[i].lastinputtime > (tic_t)cv_idletime.value * TICRATE * 60)
{
players[i].lastinputtime = gametime;
players[i].lastinputtime = 0;
SendKick(i, KICK_MSG_IDLE | KICK_MSG_KEEP_BODY);
}
}
else
players[i].lastinputtime = gametime;
players[i].lastinputtime = 0;
}
}