--- deliantra/server/socket/info.C 2007/11/08 19:43:29 1.47 +++ deliantra/server/socket/info.C 2009/10/15 21:09:32 1.53 @@ -1,22 +1,23 @@ /* * This file is part of Deliantra, the Roguelike Realtime MMORPG. * - * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Deliantra team + * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team * Copyright (©) 1992,2007 Frank Tore Johansen * - * Deliantra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Deliantra is free software: you can redistribute it and/or modify it under + * the terms of the Affero GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * You should have received a copy of the Affero GNU General Public License + * and the GNU General Public License along with this program. If not, see + * . * * The authors can be reached via e-mail to */ @@ -141,10 +142,7 @@ * * flags is various flags - mostly color, plus a few specials. * - * pri is priority. It is a little odd - the lower the value, the more - * important it is. Thus, 0 gets sent no matter what. Otherwise, the - * value must be less than the listening level that the player has set. - * Unfortunately, there is no clear guideline on what each level does what. + * pri is unused. * * pl can be passed as NULL - in fact, this will be done if NDI_ALL is set * in the flags. @@ -158,16 +156,13 @@ if (flags & NDI_ALL) { for_all_players (pl) - new_draw_info (flags & ~NDI_ALL, pri, pl->ob, buf); + new_draw_info (flags & ~NDI_ALL, 0, pl->ob, buf); } else { if (!op || !op->contr || !op->contr->ns) return; - if (pri >= op->contr->listening) - return; - if ((flags & (NDI_COLOR_MASK | NDI_UNIQUE)) != NDI_BLACK || !op->contr->ns->msg_suppressed (buf)) print_message (flags & NDI_COLOR_MASK, op, buf); @@ -185,14 +180,10 @@ void new_draw_info_format (int flags, int pri, const object *pl, const char *format, ...) { - char buf[HUGE_BUF]; - va_list ap; va_start (ap, format); - vsnprintf (buf, HUGE_BUF, format, ap); + new_draw_info (flags, pri, pl, vformat (format, ap)); va_end (ap); - - new_draw_info (flags, pri, pl, buf); } void @@ -202,9 +193,6 @@ if (!pl || (pl->type != PLAYER) || (pl->contr == NULL)) return; - if (pri >= pl->contr->listening) - return; - if (!CLIENT_SUPPORT_READABLES (pl->contr->ns, type)) { char *buf = (char *) malloc (strlen (oldmessage == NULL ? message : oldmessage) + 1); @@ -226,35 +214,26 @@ void draw_ext_info_format (int flags, int pri, const object *pl, uint8 type, uint8 subtype, const char *old_format, char *new_format, ...) { - char buf[HUGE_BUF]; - - if (!pl || (pl->type != PLAYER) || (pl->contr == NULL)) - return; + va_list ap; + va_start (ap, new_format); - if (pri >= pl->contr->listening) + if (!pl || !pl->is_player ()) return; + // TODO: just assume, and rip out? if (!CLIENT_SUPPORT_READABLES (pl->contr->ns, type)) { - va_list ap; - LOG (llevDebug, "Non supported extension text type for client.\n"); - va_start (ap, new_format); - vsnprintf (buf, HUGE_BUF, old_format, ap); - va_end (ap); - new_draw_info (flags, pri, pl, buf); - return; + new_draw_info (flags, pri, pl, vformat (old_format, ap)); } else { - va_list ap; - - va_start (ap, new_format); - vsnprintf (buf, HUGE_BUF, new_format, ap); - va_end (ap); + char *buf = vformat (new_format, ap); strip_media_tag (buf); esrv_print_ext_msg (pl->contr->ns, flags & NDI_COLOR_MASK, type, subtype, buf); } + + va_end (ap); } /** @@ -265,7 +244,7 @@ new_info_map_except (int color, maptile * map, object *op, const char *str) { for_all_players (pl) - if (pl->ob != NULL && pl->ob->map == map && pl->ob != op) + if (pl->ob->map == map && pl->ob != op) new_draw_info (color, 0, pl->ob, str); } @@ -276,7 +255,7 @@ new_info_map_except2 (int color, maptile * map, object *op1, object *op2, const char *str) { for_all_players (pl) - if (pl->ob != NULL && pl->ob->map == map && pl->ob != op1 && pl->ob != op2) + if (pl->ob->map == map && pl->ob != op1 && pl->ob != op2) new_draw_info (color, 0, pl->ob, str); } @@ -287,7 +266,7 @@ new_info_map (int color, maptile * map, const char *str) { for_all_players (pl) - if (pl->ob != NULL && pl->ob->map == map) + if (pl->ob->map == map) new_draw_info (color, 0, pl->ob, str); } @@ -488,20 +467,3 @@ free (map_mark); } -/** - * Send a kill log record to sockets - */ -void -Log_Kill (const char *Who, const char *What, int WhatType, const char *With, int WithType) -{ - size_t len; - char buf[MAX_BUF]; - - if (With != NULL) - snprintf (buf, MAX_BUF, "%s\t%s\t%d\t%s\t%d\n", Who, What, WhatType, With, WithType); - else - snprintf (buf, MAX_BUF, "%s\t%s\t%d\n", Who, What, WhatType); - - len = strlen (buf); -} -