AW: AW: [CF-Devel] cfclient issues

crossfire-devel-admin at archives.real-time.com crossfire-devel-admin at archives.real-time.com
Sat May 24 09:25:27 CDT 2003


True, its some work. If you have time, look for TRAPDOOR and
HOLE in the code - but i am out of patch sync for CF, so its
fixed perhaps.

I had done some more interesting stuff:

For tiled maps, which builds a bigger meta map, it is a bad
thing that teleporters can't teleport items & monster over map
borders (aka to a new map) - only players. Also, the
enter_map()/enter_exit() functions are player only/single arch only.

I had advanced this functions to work for items & monsters (multi
arch too) and it was easier as i thought. Problems are only random maps
& unique maps - but there i can't see why we need it.

Also, i added a "no_teleport" flag for TELEPORTERS. The i advanced them
to teleport ALL whats in the spot of the TELEPORTER and don't have the flag
set
- also i added to teleport multi arch too when only one part is on the
teleporter.

This added really new features to maps. In daimonin, system objects are
autosorted
when put on a map (no need to put them explicit under the floor). Now, i can
put some
system objects or stuff like traps on the map and a invisible teleporter to
it. One
handle pull - and the map part is cleared - all teleported out to a save
area... then
you move over it, pull another handle and all is teleported back.

This will allow new dynamic effects to maps and map makers. To avoid
problems with old maps, just create a NEW_TELEPORTER object...

>
     
     
     >
     
     
     >
     
        Fixed in CVS.
     
     >
     
     
     >
     
        There have been some of those in the past also - slowly they
     
     >
     
      get fixed as
     
     >
     
      discovered, as the fix is easy.  Just no one has bothered to look
     
     >
     
      at all the
     
     >
     
      code which could generate such cases.
     
     >
     
     
     >
     
     
     >
     
     
     >
     
      Michael Toennies wrote:
     
     >
     
      > I find some bad bug in player movement,
     
     >
     
      > which can course this client affects too.
     
     >
     
      >
     
     >
     
      > Because we track in the client now more accurate
     
     >
     
      > what happens on the map, this bug will come in effect -
     
     >
     
      > missing
     
     >
     
      >
     
     >
     
      > esrv_map_scroll(&op->contr->socket, freearr_x[dir],freearr_y[dir]);
     
     >
     
      >
     
     >
     
      > functions when the player moves.
     
     >
     
      >
     
     >
     
      > This is the right way to move a player (from move_ob() ).
     
     >
     
      >
     
     >
     
      > 	remove_ob(op);
     
     >
     
      > 	op->x+=freearr_x[dir];
     
     >
     
      > 	op->y+=freearr_y[dir];
     
     >
     
      > 	insert_ob_in_map(op,op->map,originator,0);
     
     >
     
      > 	/* Currently, assume that players will only be single space
     
     >
     
      objects */
     
     >
     
      > 	if (op->type==PLAYER) {
     
     >
     
      > 	    esrv_map_scroll(&op->contr->socket,
     
     >
     
      freearr_x[dir],freearr_y[dir]);
     
     >
     
      > 	    op->contr->socket.update_look=1;
     
     >
     
      > 	    op->contr->socket.look_position=0;
     
     >
     
      > 	}
     
     >
     
      >
     
     >
     
      > This is, how for example the shop_mat function teleports a player back
     
     >
     
      > in the shop when he can't pay all unpaid items:
     
     >
     
      >
     
     >
     
      >    else {
     
     >
     
      > 	/* if we get here, a player tried to leave a shop but was not able
     
     >
     
      > 	 * to afford the items he has.  We try to move the player so that
     
     >
     
      > 	 * they are not on the mat anymore
     
     >
     
      > 	 */
     
     >
     
      >
     
     >
     
      > 	int i = find_free_spot (op->arch, op->map, op->x, op->y, 1, 9);
     
     >
     
      > 	if(i == -1) {
     
     >
     
      > 	    LOG (llevError, "Internal shop-mat problem.\n");
     
     >
     
      > 	} else {
     
     >
     
      > 	    remove_ob (op);
     
     >
     
      > 	    op->x += freearr_x[i];
     
     >
     
      > 	    op->y += freearr_y[i];
     
     >
     
      > 	    rv = insert_ob_in_map (op, op->map, shop_mat,0) == NULL;
     
     >
     
      > 	}
     
     >
     
      >     }
     
     >
     
      >
     
     >
     
      > The map scroll cmd is missed. This will bring every feature out
     
     >
     
      of track,
     
     >
     
      > which
     
     >
     
      > depends on exactly map data & position data.
     
     >
     
      >
     
     >
     
      > You will notice this effect sometimes, when you get ported/moved, and a
     
     >
     
      > "shadow"
     
     >
     
      > of your player char animation stays on the position where you
     
     >
     
      was before.
     
     >
     
      >
     
     >
     
      > This missing scroll cmds are numerous in the code - better to
     
     >
     
      check every
     
     >
     
      > insert_ob_in_map() and add it when needed.
     
     >
     
      >
     
     >
     
      >
     
     >
     
      > _______________________________________________
     
     >
     
      > 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
      
      
     

_______________________________________________
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