Crossfire Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CF: what did I do? (so I don't do it again)



On Dec 8,  7:50pm, Aaron Baugher wrote:

 As far as the discussion about going back to an older save game and playing
again - for games that allow this, the entire world is rolled back to that
point.  However, crossfire, the world is not rolled back if you use and old
save - only the character is.  So allow players to use older characters
definately opens up some holes that should not be allowed (suppose there is a
dungeon
that has 2 different doors but only 1 key to open them (player has to decide
what door to open.)  If allowed to roll back, player can save after he has the
ky but before he used it - opens one door, quits, go back to that save, and
opens the other door.

> Here's my idea for keeping the save-on-disconnect from being abused in
> combination with server resets (gather treasure, disconnect, wait a
> day, gather treasure again):  Designate a point on each map where
> disconnected characters will be relocated.  So, if I'm anywhere on a
> map and my client gets disconnected, when I reconnect, I will be on
> the same map, but at a 'safe' location, that was chosen because it was
> neither under imminent attack or near any treasure.

 This is a good way.  The problem is that most all the maps would need to be
updated.  So it isn't the easiest solution.  In theory,this same idea could
also be used for emergency saves or when the player issues the save command.

>
> Of course, that opens up the 'kill connection if almost dead'
> strategy.  To combat that, the server, upon seeing a client
> disconnect, could check something to determine if the player was under
> attack.  This could mean looking for monsters in the squares around
> him, checking to see if his hit points are below a certain level, or
> some other means.  If the player is determined to have been under
> attack, save him in that same location.  If he was not under attack,
> and thus was presumably disconnected accidentally, then save him in
> the safe spot.  It wouldn't be perfect, and would require some more
> complexity to the save code, but it would attempt to deal with both
> abuses.

 Any method and guessing the server tries to do could be fooled.  I really
don't like the idea of the server trying to figure out of hte player is in
danger - even the above idea still has some problems - there are some maps
(like the power crystal), where you can get the crystal but then be surrounded
by dangerous lightning walls.  The player could be at full hp but not want to
deal with it - kill the connection, and start in a safe place.

 I don't think there is any perfect solution to the problem - any that people
come up with could probably be abused.  Given that fact, I would prefer to do a
simple/clean design which doesn't open up many bugs vs adding a bunch of logic
trying to figure out the player motives.

 IF anything, it just might be best to log the disconnects (player XXX lost
connection, map %d, x, y, had %d hp left).  Server admin could collect these
periodically, and if he notices taht player XXX disconnects a lot on dangerous
maps when he has <5 hp left could decide to do something about it.


-- 

-- Mark Wedel
mark@pyramid.com
-
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to crossfire-request@ifi.uio.no]