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

Comparing deliantra/server/server/c_wiz.C (file contents):
Revision 1.26 by root, Fri Dec 22 16:34:00 2006 UTC vs.
Revision 1.27 by root, Sat Dec 23 13:56:25 2006 UTC

47 * other player, or NULL otherwise. 47 * other player, or NULL otherwise.
48 */ 48 */
49static player * 49static player *
50get_other_player_from_name (object *op, char *name) 50get_other_player_from_name (object *op, char *name)
51{ 51{
52 player *pl;
53
54 if (!name) 52 if (!name)
55 return NULL; 53 return NULL;
56 54
57 for (pl = first_player; pl != NULL; pl = pl->next) 55 for_all_players (pl)
58 if (!strncmp (pl->ob->name, name, MAX_NAME)) 56 if (!strncmp (pl->ob->name, name, MAX_NAME))
59 break;
60
61 if (pl == NULL)
62 { 57 {
63 new_draw_info (NDI_UNIQUE, 0, op, "No such player.");
64 return NULL;
65 }
66
67 if (pl->ob == op) 58 if (pl->ob == op)
68 { 59 {
69 new_draw_info (NDI_UNIQUE, 0, op, "You can't do that to yourself."); 60 new_draw_info (NDI_UNIQUE, 0, op, "You can't do that to yourself.");
70 return NULL; 61 return NULL;
71 } 62 }
72 63
73 if (pl->ns->state != ST_PLAYING) 64 if (pl->ns->state != ST_PLAYING)
74 { 65 {
75 new_draw_info (NDI_UNIQUE, 0, op, "That player is in no state for that right now."); 66 new_draw_info (NDI_UNIQUE, 0, op, "That player is in no state for that right now.");
76 return NULL; 67 return NULL;
68 }
69
70 return pl;
77 } 71 }
78 72
73 new_draw_info (NDI_UNIQUE, 0, op, "No such player.");
79 return pl; 74 return 0;
80} 75}
81 76
82/** 77/**
83 * Actually hides specified player (obviously a DM). 78 * Actually hides specified player (obviously a DM).
84 * If 'silent_dm' is non zero, other players are informed of DM entering/leaving, 79 * If 'silent_dm' is non zero, other players are informed of DM entering/leaving,
232} 227}
233 228
234int 229int
235command_kick (object *op, char *params) 230command_kick (object *op, char *params)
236{ 231{
237 for (player *pl = first_player; pl; pl = pl->next) 232 for_all_players (pl)
238 if ((params == NULL || !strcmp (&pl->ob->name, params)) && !INVOKE_PLAYER (KICK, pl, ARG_STRING (params))) 233 if ((params == NULL || !strcmp (&pl->ob->name, params)) && !INVOKE_PLAYER (KICK, pl, ARG_STRING (params)))
239 { 234 {
240 object *op = pl->ob; 235 object *op = pl->ob;
241 236
242 if (!QUERY_FLAG (op, FLAG_REMOVED) && !QUERY_FLAG (op, FLAG_FREED)) 237 if (!QUERY_FLAG (op, FLAG_REMOVED) && !QUERY_FLAG (op, FLAG_FREED))
1069command_addexp (object *op, char *params) 1064command_addexp (object *op, char *params)
1070{ 1065{
1071 char buf[MAX_BUF], skill[MAX_BUF]; 1066 char buf[MAX_BUF], skill[MAX_BUF];
1072 int i, q; 1067 int i, q;
1073 object *skillob = NULL; 1068 object *skillob = NULL;
1074 player *pl;
1075 1069
1076 skill[0] = '\0'; 1070 skill[0] = '\0';
1077 if ((params == NULL) || (strlen (params) > MAX_BUF) || ((q = sscanf (params, "%s %d %s", buf, &i, skill)) < 2)) 1071 if ((params == NULL) || (strlen (params) > MAX_BUF) || ((q = sscanf (params, "%s %d %s", buf, &i, skill)) < 2))
1078 { 1072 {
1079 new_draw_info (NDI_UNIQUE, 0, op, "Usage: addexp <who> <how much> [<skill>]."); 1073 new_draw_info (NDI_UNIQUE, 0, op, "Usage: addexp <who> <how much> [<skill>].");
1080 return 1; 1074 return 1;
1081 } 1075 }
1082 1076
1083 for (pl = first_player; pl != NULL; pl = pl->next) 1077 for_all_players (pl)
1084 if (!strncmp (pl->ob->name, buf, MAX_NAME)) 1078 if (!strncmp (pl->ob->name, buf, MAX_NAME))
1085 break;
1086
1087 if (pl == NULL)
1088 { 1079 {
1089 new_draw_info (NDI_UNIQUE, 0, op, "No such player.");
1090 return 1;
1091 }
1092
1093 if (q >= 3) 1080 if (q >= 3)
1094 { 1081 {
1095 skillob = find_skill_by_name (pl->ob, skill); 1082 skillob = find_skill_by_name (pl->ob, skill);
1096 if (!skillob) 1083 if (!skillob)
1097 { 1084 {
1098 new_draw_info_format (NDI_UNIQUE, 0, op, "Unable to find skill %s in %s", skill, buf); 1085 new_draw_info_format (NDI_UNIQUE, 0, op, "Unable to find skill %s in %s", skill, buf);
1086 return 1;
1087 }
1088
1089 i = check_exp_adjust (skillob, i);
1090 skillob->stats.exp += i;
1091 calc_perm_exp (skillob);
1092 player_lvl_adj (pl->ob, skillob);
1093 }
1094
1095 pl->ob->stats.exp += i;
1096 calc_perm_exp (pl->ob);
1097 player_lvl_adj (pl->ob, NULL);
1098
1099 if (settings.real_wiz == FALSE)
1100 SET_FLAG (pl->ob, FLAG_WAS_WIZ);
1101
1099 return 1; 1102 return 1;
1100 } 1103 }
1101 1104
1102 i = check_exp_adjust (skillob, i); 1105 new_draw_info (NDI_UNIQUE, 0, op, "No such player.");
1103 skillob->stats.exp += i;
1104 calc_perm_exp (skillob);
1105 player_lvl_adj (pl->ob, skillob);
1106 }
1107
1108 pl->ob->stats.exp += i;
1109 calc_perm_exp (pl->ob);
1110 player_lvl_adj (pl->ob, NULL);
1111
1112 if (settings.real_wiz == FALSE)
1113 SET_FLAG (pl->ob, FLAG_WAS_WIZ);
1114 return 1; 1106 return 1;
1115} 1107}
1116 1108
1117/**************************************************************************/ 1109/**************************************************************************/
1118 1110
1124 1116
1125int 1117int
1126command_stats (object *op, char *params) 1118command_stats (object *op, char *params)
1127{ 1119{
1128 char thing[20]; 1120 char thing[20];
1129 player *pl;
1130 char buf[MAX_BUF]; 1121 char buf[MAX_BUF];
1131 1122
1132 thing[0] = '\0'; 1123 thing[0] = '\0';
1133 if (params == NULL || !sscanf (params, "%s", thing) || thing == NULL) 1124 if (params == NULL || !sscanf (params, "%s", thing) || thing == NULL)
1134 { 1125 {
1135 new_draw_info (NDI_UNIQUE, 0, op, "Who?"); 1126 new_draw_info (NDI_UNIQUE, 0, op, "Who?");
1136 return 1; 1127 return 1;
1137 } 1128 }
1138 1129
1139 for (pl = first_player; pl != NULL; pl = pl->next) 1130 for_all_players (pl)
1140 if (!strcmp (pl->ob->name, thing)) 1131 if (!strcmp (pl->ob->name, thing))
1141 { 1132 {
1142 sprintf (buf, "Str : %-2d H.P. : %-4d MAX : %d", pl->ob->stats.Str, pl->ob->stats.hp, pl->ob->stats.maxhp); 1133 sprintf (buf, "Str : %-2d H.P. : %-4d MAX : %d", pl->ob->stats.Str, pl->ob->stats.hp, pl->ob->stats.maxhp);
1143 new_draw_info (NDI_UNIQUE, 0, op, buf); 1134 new_draw_info (NDI_UNIQUE, 0, op, buf);
1144 sprintf (buf, "Dex : %-2d S.P. : %-4d MAX : %d", pl->ob->stats.Dex, pl->ob->stats.sp, pl->ob->stats.maxsp); 1135 sprintf (buf, "Dex : %-2d S.P. : %-4d MAX : %d", pl->ob->stats.Dex, pl->ob->stats.sp, pl->ob->stats.maxsp);
1151 new_draw_info (NDI_UNIQUE, 0, op, buf); 1142 new_draw_info (NDI_UNIQUE, 0, op, buf);
1152 sprintf (buf, "Pow : %-2d Grace : %d", pl->ob->stats.Pow, pl->ob->stats.grace); 1143 sprintf (buf, "Pow : %-2d Grace : %d", pl->ob->stats.Pow, pl->ob->stats.grace);
1153 new_draw_info (NDI_UNIQUE, 0, op, buf); 1144 new_draw_info (NDI_UNIQUE, 0, op, buf);
1154 sprintf (buf, "Cha : %-2d Food : %d", pl->ob->stats.Cha, pl->ob->stats.food); 1145 sprintf (buf, "Cha : %-2d Food : %d", pl->ob->stats.Cha, pl->ob->stats.food);
1155 new_draw_info (NDI_UNIQUE, 0, op, buf); 1146 new_draw_info (NDI_UNIQUE, 0, op, buf);
1156 break; 1147 return 1;
1157 } 1148 }
1158 if (pl == NULL) 1149
1159 new_draw_info (NDI_UNIQUE, 0, op, "No such player."); 1150 new_draw_info (NDI_UNIQUE, 0, op, "No such player.");
1160 return 1; 1151 return 1;
1161} 1152}
1162 1153
1163int 1154int
1164command_abil (object *op, char *params) 1155command_abil (object *op, char *params)
1187 { 1178 {
1188 new_draw_info (NDI_UNIQUE, 0, op, "Illegal range of stat.\n"); 1179 new_draw_info (NDI_UNIQUE, 0, op, "Illegal range of stat.\n");
1189 return 1; 1180 return 1;
1190 } 1181 }
1191 1182
1192 for (pl = first_player; pl != NULL; pl = pl->next) 1183 for_all_players (pl)
1193 { 1184 {
1194 if (!strcmp (pl->ob->name, thing)) 1185 if (!strcmp (pl->ob->name, thing))
1195 { 1186 {
1196 if (settings.real_wiz == FALSE) 1187 if (settings.real_wiz == FALSE)
1197 SET_FLAG (pl->ob, FLAG_WAS_WIZ); 1188 SET_FLAG (pl->ob, FLAG_WAS_WIZ);
1296 insert_ob_in_map (op, m, NULL, 0); 1287 insert_ob_in_map (op, m, NULL, 0);
1297 dummy->destroy (); 1288 dummy->destroy ();
1298 } 1289 }
1299 1290
1300 new_draw_info (NDI_UNIQUE, 0, op, "Reset failed, couldn't swap map, the following players are on it:"); 1291 new_draw_info (NDI_UNIQUE, 0, op, "Reset failed, couldn't swap map, the following players are on it:");
1301 for (pl = first_player; pl != NULL; pl = pl->next) 1292
1302 { 1293 for_all_players (pl)
1303 if (pl->ob->map == m && pl->ob != op) 1294 if (pl->ob->map == m && pl->ob != op)
1304 { 1295 {
1305 new_draw_info_format (NDI_UNIQUE, 0, op, "%s", &pl->ob->name); 1296 new_draw_info_format (NDI_UNIQUE, 0, op, "%s", &pl->ob->name);
1306 playercount++; 1297 playercount++;
1307 } 1298 }
1308 } 1299
1309 if (!playercount) 1300 if (!playercount)
1310 new_draw_info (NDI_UNIQUE, 0, op, "hmm, I don't see any other players on this map, something else is the problem."); 1301 new_draw_info (NDI_UNIQUE, 0, op, "hmm, I don't see any other players on this map, something else is the problem.");
1311 return 1; 1302 return 1;
1312 } 1303 }
1313} 1304}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines