Topic: Полный список онлайн игроков со статусом VIP
В общем на своем сервере сделал специальный VIP статус для игроков (всякие там команды, фишки и тп). Хотелось бы показать список текущих игроков у которых VIP статус. Есть кстате аналог команды - /admins.
Добавлено: 04.02.2014 17:26
{
unsigned int i;
t_elem const * curr;
t_connection * tc;
char const * nick;
std::strcpy(msgtemp,"VIP-игроки (онлайн):");
i = std::strlen(msgtemp);
LIST_TRAVERSE_CONST(connlist(),curr)
{
tc = (t_connection*)elem_get_data(curr);
if (!tc)
continue;
if (!conn_get_account(tc))
continue;
if (account_get_auth_vip(conn_get_account(tc))==1)
{
if ((nick = conn_get_username(tc)))
{
if (i+std::strlen(nick)+2>sizeof(msgtemp)) /* " ", name, '\0' */
{
message_send_text(c,message_type_info,c,msgtemp);
i = 0;
}
std::sprintf(&msgtemp[i]," %s", nick);
i += std::strlen(&msgtemp[i]);
}
}
}
if (i>0)
message_send_text(c,message_type_info,c,msgtemp);
return 0;
}
^код который показывает онлайн вип игроков, как показать не именно онлайн, а всех
Добавлено: 04.02.2014 17:51
static int _handle_listplayers_command(t_connection * c, char const *text)
{
unsigned int i;
t_entry * curr;
t_account * tc;
char const * nick;
std::strcpy(msgtemp,"Список VIP-игроков:");
i = std::strlen(msgtemp);
HASHTABLE_TRAVERSE(accountlist(),curr)
{
tc = (t_account*)entry_get_data(curr);
if (!tc)
continue;
if (account_get_auth_vip(tc)==1)
{
if ((nick = account_get_name(tc)))
{
if (i+std::strlen(nick)+2>sizeof(msgtemp)) /* " ", name, '\0' */
{
message_send_text(c,message_type_info,c,msgtemp);
i = 0;
}
std::sprintf(&msgtemp[i]," %s", nick);
i += std::strlen(&msgtemp[i]);
}
}
}
if (i>0)
message_send_text(c,message_type_info,c,msgtemp);
return 0;
}