ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/hiscore.C
(Generate patch)

Comparing deliantra/server/server/hiscore.C (file contents):
Revision 1.19 by root, Sun Mar 18 03:05:40 2007 UTC vs.
Revision 1.26 by root, Tue May 6 16:55:26 2008 UTC

1/* 1/*
2 * CrossFire, A Multiplayer game for X-windows 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team 4 * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * Deliantra is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 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 10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version. 11 * (at your option) any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details. 16 * GNU General Public License for more details.
17 * 17 *
18 * You should have received a copy of the GNU General Public License 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 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 * 20 *
22 * The authors can be reached via e-mail at <crossfire@schmorp.de> 21 * The authors can be reached via e-mail to <support@deliantra.net>
23 */ 22 */
24 23
25#include <global.h> 24#include <global.h>
26#include <sproto.h> 25#include <sproto.h>
27 26
167 static char retbuf[MAX_BUF]; 166 static char retbuf[MAX_BUF];
168 167
169 if (!strncmp (sc->killer, "quit", MAX_NAME)) 168 if (!strncmp (sc->killer, "quit", MAX_NAME))
170 sprintf (retbuf, "%3d %10lld %s the %s quit the game on map %s [%d][%d][%d].", 169 sprintf (retbuf, "%3d %10lld %s the %s quit the game on map %s [%d][%d][%d].",
171 sc->position, (long long) sc->exp, sc->name, sc->title, sc->maplevel, sc->maxhp, sc->maxsp, sc->maxgrace); 170 sc->position, (long long) sc->exp, sc->name, sc->title, sc->maplevel, sc->maxhp, sc->maxsp, sc->maxgrace);
172 else if (!strncmp (sc->killer, "left", MAX_NAME)) 171 else if (!strncmp (sc->killer, "leaving", MAX_NAME))
173 sprintf (retbuf, "%3d %10lld %s the %s left the game on map %s [%d][%d][%d].", 172 sprintf (retbuf, "%3d %10lld %s the %s left the game on map %s [%d][%d][%d].",
174 sc->position, (long long) sc->exp, sc->name, sc->title, sc->maplevel, sc->maxhp, sc->maxsp, sc->maxgrace); 173 sc->position, (long long) sc->exp, sc->name, sc->title, sc->maplevel, sc->maxhp, sc->maxsp, sc->maxgrace);
175 else 174 else
176 sprintf (retbuf, "%3d %10lld %s the %s was killed by %s on map %s [%d][%d][%d].", 175 sprintf (retbuf, "%3d %10lld %s the %s was killed by %s on map %s [%d][%d][%d].",
177 sc->position, (long long) sc->exp, sc->name, sc->title, sc->killer, sc->maplevel, sc->maxhp, sc->maxsp, sc->maxgrace); 176 sc->position, (long long) sc->exp, sc->name, sc->title, sc->killer, sc->maplevel, sc->maxhp, sc->maxsp, sc->maxgrace);
177
178 return retbuf; 178 return retbuf;
179} 179}
180 180
181/* 181/*
182 * add_score() adds the given score-structure to the high-score list, but 182 * add_score() adds the given score-structure to the high-score list, but
265 if (op->stats.exp == 0) 265 if (op->stats.exp == 0)
266 return; 266 return;
267 267
268 assign (new_score.name, op->name); 268 assign (new_score.name, op->name);
269 assign (new_score.title, op->title.length () ? &op->title : op->contr->title); 269 assign (new_score.title, op->title.length () ? &op->title : op->contr->title);
270 assign (new_score.killer, op->contr->killer[0] ? op->contr->killer : "a dungeon collapse"); 270 assign (new_score.killer, op->contr->killer_name ());
271 assign (new_score.maplevel, op->map ? op->map->name ? &op->map->name : &op->map->path : ""); 271 assign (new_score.maplevel, op->map ? op->map->name ? &op->map->name : &op->map->path : "");
272 272
273 new_score.exp = op->stats.exp; 273 new_score.exp = op->stats.exp;
274 new_score.maxhp = op->stats.maxhp; 274 new_score.maxhp = op->stats.maxhp;
275 new_score.maxsp = op->stats.maxsp; 275 new_score.maxsp = op->stats.maxsp;
323 LOG (llevError, "Cannot open highscore file %s: %s\n", buf, strerror (errno)); 323 LOG (llevError, "Cannot open highscore file %s: %s\n", buf, strerror (errno));
324 if (op != NULL) 324 if (op != NULL)
325 new_draw_info (NDI_UNIQUE, 0, op, "There is no highscore file."); 325 new_draw_info (NDI_UNIQUE, 0, op, "There is no highscore file.");
326 return; 326 return;
327 } 327 }
328 if (op != NULL) 328
329 clear_win_info (op);
330 new_draw_info (NDI_UNIQUE, 0, op, "Nr Score Who [max hp][max sp][max grace]"); 329 new_draw_info (NDI_UNIQUE, 0, op, "Nr Score Who [max hp][max sp][max grace]");
331 330
332 while (fgets (buf, MAX_BUF, fp) != NULL) 331 while (fgets (buf, MAX_BUF, fp) != NULL)
333 { 332 {
334 if (j >= HIGHSCORE_LENGTH || i >= (max - 1)) 333 if (j >= HIGHSCORE_LENGTH || i >= (max - 1))
335 break; 334 break;
335
336 if ((sc = get_score (buf)) == NULL) 336 if ((sc = get_score (buf)) == NULL)
337 break; 337 break;
338
338 sc->position = ++j; 339 sc->position = ++j;
339 if (match == NULL) 340 if (match == NULL)
340 { 341 {
341 scorebuf = draw_one_high_score (sc); 342 scorebuf = draw_one_high_score (sc);
342 i++; 343 i++;
349 i++; 350 i++;
350 } 351 }
351 else 352 else
352 continue; 353 continue;
353 } 354 }
355
354 /* Replaced what seemed to an overly complicated word wrap method 356 /* Replaced what seemed to an overly complicated word wrap method
355 * still word wraps, but assumes at most 2 lines of data. 357 * still word wraps, but assumes at most 2 lines of data.
356 * mw - 2-12-97 358 * mw - 2-12-97
357 */ 359 */
358 assign (buf, scorebuf); 360 assign (buf, scorebuf);
381 new_draw_info (NDI_UNIQUE, 0, op, buf); 383 new_draw_info (NDI_UNIQUE, 0, op, buf);
382 } 384 }
383 385
384 close_and_delete (fp, comp); 386 close_and_delete (fp, comp);
385} 387}
388

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines