Atrinik Server  4.0
who.c
Go to the documentation of this file.
1 /*************************************************************************
2  * Atrinik, a Multiplayer Online Role Playing Game *
3  * *
4  * Copyright (C) 2009-2014 Alex Tokar and Atrinik Development Team *
5  * *
6  * Fork from Crossfire (Multiplayer game for X-windows). *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  * This program is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16  * GNU General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this program; if not, write to the Free Software *
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
21  * *
22  * The author can be reached at admin@atrinik.org *
23  ************************************************************************/
24 
32 #include <global.h>
33 #include <player.h>
34 #include <object.h>
35 
37 void command_who(object *op, const char *command, char *params)
38 {
39  player *pl;
40  int ip = 0;
41  char buf[MAX_BUF];
42 
43  draw_info(COLOR_WHITE, op, " ");
44 
45  for (pl = first_player; pl; pl = pl->next) {
46  ip++;
47 
48  snprintf(buf, sizeof(buf), "%s the %s %s (lvl %d)", pl->ob->name, gender_noun[object_get_gender(pl->ob)], pl->ob->race, pl->ob->level);
49 
50  if (pl->afk) {
51  strncat(buf, " [AFK]", sizeof(buf) - strlen(buf) - 1);
52  }
53 
54  if (pl->cs->is_bot) {
55  strncat(buf, " [BOT]", sizeof(buf) - strlen(buf) - 1);
56  }
57 
58  draw_info(COLOR_WHITE, op, buf);
59  }
60 
61  draw_info_format(COLOR_WHITE, op, "There %s %d player%s online.", ip > 1 ? "are" : "is", ip, ip > 1 ? "s" : "");
62 }
const char * race
Definition: object.h:174
int object_get_gender(const object *op)
Definition: object.c:2877
object * ob
Definition: player.h:185
uint32_t afk
Definition: player.h:443
uint8_t is_bot
Definition: newserver.h:146
const char * name
Definition: object.h:168
void command_who(object *op, const char *command, char *params)
Definition: who.c:37
socket_struct * cs
Definition: player.h:148
player * first_player
Definition: main.c:57
int8_t level
Definition: object.h:347
struct pl_player * next
Definition: player.h:145
const char * gender_noun[GENDER_MAX]
Definition: object.c:47