[CF-Devel] Patch submission: 'tell' improvement
crossfire-devel-admin at archives.real-time.com
crossfire-devel-admin at archives.real-time.com
Fri Oct 24 02:02:30 CDT 2003
Nicolas Weeger wrote:
>
Hello.
>
>
Here's a small patch to tweak the 'tell' command.
>
You can now enter the first letters of the name only, provided there is
>
only one matching player.
>
IE if you have 'playerA', 'playerB' and 'human', you can do 'tell h hello'.
>
But you'll have to use 'tell playera hello' since 'player' can be 2
>
players.
>
>
Note: not case sensitive.
>
>
If I don't have any negative feedback, I'll commit it in 1 or 2 weeks...
Few notes: If you post diffs, please make context diffs (diff -c) as they are
more readable when it comes to trying to find changes.
Note 2: strnicmp does not appear to be a standard library function, so such a
change does not appear that it will work on any unix type systems.
>
>
Nicolas 'Ryo'
>
>
(note: patch directly in mail, since it isn't that big)
>
>
>
Index: include/sproto.h
>
===================================================================
>
RCS file: /cvsroot/crossfire/crossfire/include/sproto.h,v
>
retrieving revision 1.96
>
diff -r1.96 sproto.h
>
476c476,477
>
< player *find_player(char *plname);
>
---
>
> player *find_player(char *plname);
>
> player* find_player_partial_name( char* plname );
>
Index: server/c_chat.c
>
===================================================================
>
RCS file: /cvsroot/crossfire/crossfire/server/c_chat.c,v
>
retrieving revision 1.15
>
diff -r1.15 c_chat.c
>
149,152c149,153
>
<
>
< 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 )
>
> {
>
155c156
>
< "You tell %s: %s", name, msg);
>
---
>
> "You tell %s: %s", pl->ob->name, msg);
>
159,161c160,163
>
< return 1;
>
< }
>
< new_draw_info(NDI_UNIQUE, 0,op,"No such player.");
>
---
>
> return 1;
>
> }
>
>
>
> new_draw_info(NDI_UNIQUE, 0,op,"No such player or ambiguous name.");
>
Index: server/player.c
>
===================================================================
>
RCS file: /cvsroot/crossfire/crossfire/server/player.c,v
>
retrieving revision 1.137
>
diff -r1.137 player.c
>
52c52,73
>
< }
>
---
>
> }
>
>
>
> 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 ( !strnicmp( pl->ob->name, plname, namelen ) )
>
> {
>
> if ( found )
>
> return NULL;
>
>
>
> found = pl;
>
> }
>
> }
>
> return found;
>
> }
>
>
>
_______________________________________________
>
crossfire-devel mailing list
>
crossfire-devel at lists.real-time.com
>
https://mailman.real-time.com/mailman/listinfo/crossfire-devel
_______________________________________________
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