From d1739e454fd3bc3c5832f1890e7980e387a4482d Mon Sep 17 00:00:00 2001 From: deuce <> Date: Thu, 21 Feb 2008 00:55:14 +0000 Subject: [PATCH] Since we are tracking users by the BBS user number, and we all allowing inactive users to persist until they are killed, use a %04d.tw2 file in data/users to track that it is the "right" user by that number. Move user deletion "stuff" into a separate function. --- xtrn/tw2/tw2.js | 73 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 6 deletions(-) diff --git a/xtrn/tw2/tw2.js b/xtrn/tw2/tw2.js index c5f8269bfd..daf21fc04a 100644 --- a/xtrn/tw2/tw2.js +++ b/xtrn/tw2/tw2.js @@ -66,9 +66,8 @@ if(Settings.MaintLastRan != system.datestr()) { for(i=1; i<players.length; i++) { var p=players.Get(i); if(p.UserNumber > 0) { - if(system.datestr(p.LastOnDay) < oldest_allowed) { - p.UserNumber=0; - twmsg.writeln(" - "+playerlist[player]+" deleted from game"); + if((!file_exists(system.data_dir+format("user/%04d.tw2",p.UserNumber))) || (system.datestr(p.LastOnDay) < oldest_allowed && p.KilledBy != 0)) { + DeletePlayer(p) } } } @@ -100,6 +99,8 @@ var player; var firstnew; for(i=1; i<players.length; i++) { player=players.Get(i); + if(player.UserNumber == user.number && (!file_exists(system.data_dir+format("user/%04d.tw2",player.UserNumber)))) + DeletePlayer(player); if(player.UserNumber==0 && firstnew==undefined) firstnew=player; if(player.UserNumber == user.number) @@ -162,7 +163,7 @@ else { console.writeln("You don't have any turns left today. You will be allowed to play tomorrow."); exit(0); } - if(player.KilledBy==user.number) { + if(player.KilledBy==player.Record) { console.writeln("You killed yourself today. You will be allowed to play tomorrow."); exit(0); } @@ -171,7 +172,7 @@ else { for(i=0; i<twpmsg.length; i++) { var msg=twpmsg.Get(i); - if(msg.To==user.number && !msg.Read) { + if(msg.To==player.Record && !msg.Read) { count++; if(msg.From==-98) console.writeln("A deleted player destroyed "+msg.Destroyed+" fighters."); @@ -198,7 +199,7 @@ else { player.LastOnDay=system.datestr(); if(player.KilledBy != 0) { switch(player.KilledBy) { - case user.number: + case player.Record: console.attributes="R"; console.writeln("You managed to kill yourself on your last time on."); break; @@ -218,6 +219,7 @@ else { player.ReInit(); } } +file_touch(system.data_dir+format("user/%04d.tw2",player.UserNumber)) ReadRadio(); if(player.Sector < 1 || player.Sector >= sectors.length) { console.writeln("You are being moved to sector 1"); @@ -2281,3 +2283,62 @@ function MoveCabal() } } } + +function DeletePlayer(player) +{ + /* Delete player */ + player.ReInit(); + player.UserNumber=0; + player.Alias="<Deleted>"; + player.Sector=0; + player.Put(); + /* Move to sector zero */ + var loc=playerLocation.Get(player.Record); + loc.Sector=0; + loc.Put(); + /* Set fighter owner to "Deleted Player" */ + var i; + for(i=1; i<sectors.length; i++) { + var sector=sectors.Get(i); + if(sector.FighterOwner==player.Record) { + sector.FighterOwner=-98; + sector.Put(); + } + } + /* Set messages TO the deleted player as read and FROM as from deleted */ + for(i=0; i<twpmsg.length; i++) { + var msg=twpmsg.Get(i); + + if(msg.To==player.Record && !msg.Read) { + msg.Read=true; + msg.Put(); + } + else if(msg.From==player.Record) { + msg.From=-98; + msg.Put(); + } + } + /* Set radio messages TO the deleted player as read and FROM as from deleted */ + for(i=0; i<twrmsg.length; i++) { + var msg=twrmsg.Get(i); + + if(msg.To==player.Record && !msg.Read) { + msg.Read=true; + msg.Put(); + } + else if(msg.From==player.Record) { + msg.From=-98; + msg.Put(); + } + } + /* Set killed bys to Deleted Player */ + for(i=1; i<players.length; i++) { + var otherplayer=players.Get(i); + + if(otherplayer.KilledBy==player.Record) { + otherplayer.KilledBy=-98; + otherplayer.Put(); + } + } + twmsg.writeln(" - "+player.Alias+" deleted from game"); +} -- GitLab