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

Comparing deliantra/server/socket/request.C (file contents):
Revision 1.122 by root, Sun Aug 26 04:21:30 2007 UTC vs.
Revision 1.128 by root, Tue May 6 16:55:26 2008 UTC

1/* 1/*
2 * This file is part of Crossfire TRT, the Roguelike Realtime MORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team 4 * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2001,2007 Mark Wedel 5 * Copyright (©) 2001,2007 Mark Wedel
6 * Copyright (©) 1992,2007 Frank Tore Johansen 6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 * 7 *
8 * Crossfire TRT 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 3 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,
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, see <http://www.gnu.org/licenses/>. 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 * 20 *
21 * The authors can be reached via e-mail to <crossfire@schmorp.de> 21 * The authors can be reached via e-mail to <support@deliantra.net>
22 */ 22 */
23 23
24/** 24/**
25 * \file 25 * \file
26 * Client handling. 26 * Client handling.
886 886
887/** 887/**
888 * Tells the client that here is a player it should start using. 888 * Tells the client that here is a player it should start using.
889 */ 889 */
890void 890void
891esrv_new_player (player *pl, uint32 weight) 891esrv_new_player (player *pl)
892{ 892{
893 sint32 weight = pl->ob->client_weight ();
894
893 packet sl ("player"); 895 packet sl ("player");
894 896
895 sl << uint32 (pl->ob->count) 897 sl << uint32 (pl->ob->count)
896 << uint32 (weight) 898 << uint32 (weight)
897 << uint32 (pl->ob->face) 899 << uint32 (pl->ob->face)
1031 1033
1032 /* If player is just joining the game, he isn't here yet, so the map 1034 /* If player is just joining the game, he isn't here yet, so the map
1033 * can get swapped out. If so, don't try to send them a map. All will 1035 * can get swapped out. If so, don't try to send them a map. All will
1034 * be OK once they really log in. 1036 * be OK once they really log in.
1035 */ 1037 */
1036 if (!plmap || plmap->in_memory != MAP_IN_MEMORY) 1038 if (!plmap || plmap->in_memory != MAP_ACTIVE)
1037 return; 1039 return;
1038 1040
1039 int x, y, ax, ay, startlen, max_x, max_y, oldlen; 1041 int x, y, ax, ay, startlen, max_x, max_y, oldlen;
1040 int estartlen, eoldlen; 1042 int estartlen, eoldlen;
1041 uint8 eentrysize; 1043 uint8 eentrysize;
1242 uint8 flags = 0; 1244 uint8 flags = 0;
1243 tag_t player = 0; 1245 tag_t player = 0;
1244 1246
1245 // send hp information, if applicable 1247 // send hp information, if applicable
1246 if (object *op = ms.faces_obj [0]) 1248 if (object *op = ms.faces_obj [0])
1249 if (op->is_head () && !op->invisible)
1247 { 1250 {
1248 if (op->head || op->invisible) 1251 if (op->stats.maxhp > op->stats.hp
1249 ; // do not show 1252 && op->stats.maxhp > 0
1250 else if (op->type == PLAYER 1253 && (op->type == PLAYER
1254 || op->type == DOOR // does not work, have maxhp 0
1251 || QUERY_FLAG (op, FLAG_MONSTER) || QUERY_FLAG (op, FLAG_ALIVE) || QUERY_FLAG (op, FLAG_GENERATOR)) 1255 || QUERY_FLAG (op, FLAG_MONSTER) || QUERY_FLAG (op, FLAG_ALIVE) || QUERY_FLAG (op, FLAG_GENERATOR)))
1252 {
1253 if (op->stats.maxhp > 0 && (unsigned) op->stats.maxhp > (unsigned) op->stats.hp)
1254 { 1256 {
1255 stat_hp = 255 - (op->stats.hp * 255 + 254) / op->stats.maxhp; 1257 stat_hp = 255 - (op->stats.hp * 255 + 254) / op->stats.maxhp;
1256 stat_width = op->arch->max_x - op->arch->x; //TODO: should be upper-left edge 1258 stat_width = op->arch->max_x - op->arch->x; //TODO: should be upper-left edge
1257 } 1259 }
1258 }
1259 1260
1260 if (op->msg && op->msg[0] == '@') 1261 if (op->msg && op->msg[0] == '@')
1261 flags |= 1; 1262 flags |= 1;
1262 1263
1263 if (op->type == PLAYER && op != ob) 1264 if (op->type == PLAYER && op != ob)
1264 player = op->count; 1265 player = op->count;
1265 } 1266 }
1266 1267
1267 if (lastcell.stat_hp != stat_hp) 1268 if (lastcell.stat_hp != stat_hp)
1268 { 1269 {
1269 lastcell.stat_hp = stat_hp; 1270 lastcell.stat_hp = stat_hp;
1270 1271

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines