[CF-Devel] Patch submission: 'tell' improvement, round 2
crossfire-devel at archives.real-time.com
crossfire-devel at archives.real-time.com
Mon Nov 3 15:09:04 CST 2003
Hello.
Tweaked my 'tell' improvement command, so it uses the ANSI strncasecmp function
instead of the evil ms-only one.
Here's the patch, feel free to tweak it.
I'll commit it in a week if no one objects :)
Nicolas 'Ryo'
-------------- next part --------------
Index: server/c_chat.c
===================================================================
RCS file: /cvsroot/crossfire/crossfire/server/c_chat.c,v
retrieving revision 1.15
diff -u -r1.15 c_chat.c
--- server/c_chat.c 28 Jul 2003 05:19:35 -0000 1.15
+++ server/c_chat.c 3 Nov 2003 21:00:02 -0000
@@ -147,18 +147,20 @@
snprintf(buf,MAX_BUF-1, "%s tells you: %s",op->name, msg);
- for(pl=first_player;pl!=NULL;pl=pl->next)
- if(strncasecmp(pl->ob->name,name,MAX_NAME)==0) {
+ pl = find_player_partial_name( name );
+ if ( pl )
+ {
new_draw_info(NDI_UNIQUE | NDI_ORANGE, 0, pl->ob, buf);
new_draw_info_format(NDI_UNIQUE | NDI_ORANGE, 0, op,
- "You tell %s: %s", name, msg);
+ "You tell %s: %s", pl->ob->name, msg);
/* Update last_tell value [mids 01/14/2002] */
strcpy(pl->last_tell, op->name);
return 1;
- }
- new_draw_info(NDI_UNIQUE, 0,op,"No such player.");
+ }
+
+ new_draw_info(NDI_UNIQUE, 0,op,"No such player or ambiguous name.");
return 1;
}
Index: include/sproto.h
===================================================================
RCS file: /cvsroot/crossfire/crossfire/include/sproto.h,v
retrieving revision 1.96
diff -u -r1.96 sproto.h
--- include/sproto.h 13 Sep 2003 05:01:34 -0000 1.96
+++ include/sproto.h 3 Nov 2003 21:03:01 -0000
@@ -474,6 +474,7 @@
int summon_object(object *op, object *caster, object *spell_ob, int dir);
/* player.c */
player *find_player(char *plname);
+player* find_player_partial_name( char* plname );
void display_motd(object *op);
int playername_ok(char *cp);
int add_player(NewSocket *ns);
Index: server/player.c
===================================================================
RCS file: /cvsroot/crossfire/crossfire/server/player.c,v
retrieving revision 1.137
diff -u -r1.137 player.c
--- server/player.c 17 Oct 2003 17:24:53 -0000 1.137
+++ server/player.c 3 Nov 2003 21:03:34 -0000
@@ -51,6 +51,27 @@
return NULL;
}
+player* find_player_partial_name( char* plname )
+ {
+ player* pl;
+ player* found = NULL;
+ size_t namelen = strlen( plname );
+ for ( pl = first_player; pl != NULL; pl = pl->next )
+ {
+ if ( strlen( pl->ob->name ) < namelen )
+ continue;
+
+ if ( !strncasecmp( pl->ob->name, plname, namelen ) )
+ {
+ if ( found )
+ return NULL;
+
+ found = pl;
+ }
+ }
+ return found;
+ }
+
void display_motd(object *op) {
char buf[MAX_BUF];
FILE *fp;
-------------- next part --------------
_______________________________________________
crossfire-devel mailing list
crossfire-devel at lists.real-time.com
https://mailman.real-time.com/mailman/listinfo/crossfire-devel
More information about the crossfire
mailing list