What I am trying to do is make Jose's Total Online work for 5017 LOTF. I got the easy part done adding it to the txt file upon login, however I am having trouble removing it on disconnect.
Here is a couple voids I tried placing it in:
Code:
public void Drop()
{
try
{
if (Online)
{
DataBase.ChangeOnlineStatus(Account, 0);
if (MyChar != null)
{
World.RemoveEntity(MyChar);
if (MyChar.TheTimer != null)
{
MyChar.TheTimer.Stop();
MyChar.TheTimer.Dispose();
MyChar.TheTimer = null;
}
if (MyChar.LocMap == 700)
{
MyChar.CPs += 27;
SendPacket(General.MyPackets.Vital(MyChar.UID, 30, MyChar.CPs));
MyChar.Teleport(1036, 200, 200);
}
foreach (DictionaryEntry DE in MyChar.Friends)
{
uint FriendID = (uint)DE.Key;
if (World.AllChars.Contains(FriendID))
{
Character Friend = (Character)World.AllChars[FriendID];
if (Friend != null)
{
Friend.MyClient.SendPacket(General.MyPackets.FriendEnemyPacket(MyChar.UID, MyChar.Name, 14, 0));
Friend.MyClient.SendPacket(General.MyPackets.FriendEnemyPacket(MyChar.UID, MyChar.Name, 15, 0));
Friend.MyClient.SendPacket(General.MyPackets.SendMsg(Friend.MyClient.MessageId, "SYSTEM", Friend.Name, "Your friend " + MyChar.Name + " has logged out.", 2005));
}
}
}
DataBase.SaveChar(MyChar);
MyChar.Trading = false;
MyChar.TradingSilvers = 0;
MyChar.TradingCPs = 0;
MyChar.TradeOK = false;
MyChar.Trading = false;
MyChar.AtkType = 0;
MyChar.JoinForbidden = false;
MyChar.SkillLoopingTarget = 0;
MyChar.SkillLoopingX = 0;
MyChar.SkillLoopingY = 0;
MyChar.SkillLooping = 0;
MyChar.SMOn = false;
MyChar.CycloneOn = false;
MyChar.CastingPray = false;
MyChar.Inventory = new string[41];
MyChar.Equips = new string[10];
MyChar.TCWH = new string[20];
MyChar.PCWH = new string[20];
MyChar.ACWH = new string[20];
MyChar.DCWH = new string[20];
MyChar.BIWH = new string[20];
MyChar.MAWH = new string[40];
MyChar.Skills.Clear();
MyChar.Skill_Exps.Clear();
MyChar.Profs.Clear();
MyChar.Prof_Exps.Clear();
MyChar.Friends.Clear();
MyChar.Enemies.Clear();
MyChar.KO = 0;
if (MyChar.Trading)
{
Character Who = (Character)World.AllChars[MyChar.TradingWith];
Who.MyClient.SendPacket(General.MyPackets.TradePacket(MyChar.TradingWith, 5));
Who.TradingSilvers = 0;
Who.TradingCPs = 0;
Who.TradeOK = false;
Who.Trading = false;
MyChar.TradingWith = 0;
Who.MyClient.SendPacket(General.MyPackets.SendMsg(Who.MyClient.MessageId, "SYSTEM", Who.Name, "Trading failed!", 2005));
}
if (MyChar.TeamLeader)
MyChar.TeamDismiss();
if (MyChar.MyTeamLeader != null && !MyChar.TeamLeader)
MyChar.MyTeamLeader.TeamRemove(MyChar, false);
try
{
if (World.AllChars.Contains(MyChar.UID))
World.AllChars.Remove(MyChar.UID);
}
catch (Exception Exc) { General.WriteLine(Exc.ToString()); }
MyChar = null;
}
ListenSock.WinSock.Close();
Online = false;
ListenSock = null;
}
}
catch (Exception Exc) { General.WriteLine(Convert.ToString(Exc)); }
}
Code:
try
{
foreach (DictionaryEntry DE in World.AllChars)
{
Character Char = (Character)DE.Value;
DataBase.ChangeOnlineStatus(Char.MyClient.Account, 0);
}
World.PlayersOffLottery();
World.SaveAllChars();
sw.Flush();
sw.Close();
DataBase.AllOffline();
Environment.Exit(Environment.ExitCode);
}
Code I am using:
Code:
foreach (DictionaryEntry DE in World.AllChars)
{
Character.TotalLogged++;
FileStream outStream = File.Create("C:\\AppServ\\www\\TotalLogged.txt");
StreamWriter sw = new StreamWriter(outStream);
sw.WriteLine(Character.TotalLogged.ToString());
sw.Flush();
sw.Close();
}
Help will be appreciated.
Thank you






