I've been thinking of making a ban command for my 5165 server but I don't know where I should put the code (not the command but the actual function code). So if anyone knows, step up blez.
I've been thinking of making a ban command for my 5165 server but I don't know where I should put the code (not the command but the actual function code). So if anyone knows, step up blez.
Try making a definition in character.cs and then adding it to the save/load/create char sequences.
Code:
public byte Ban = 0;
Then make a command somewhat like this:
Code:
if (Cmd[0] == "/ban")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.Ban += 1;
}
Then go to the load char sequence and under C.Loaded = true;
put something like if (C.Ban >0) C.Disconnect;
get it?
Try making a definition in character.cs and then adding it to the save/load/create char sequences.
Code:
public byte Ban = 0;
Then make a command somewhat like this:
Code:
if (Cmd[0] == "/ban")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.Ban += 1;
}
Then go to the load char sequence and under C.Loaded = true;
put something like if (C.Ban >0) C.Disconnect;
get it?
Or, to be more efficient, only add the "Ban=" (or whatever) string in the Character file once you use "/ban <name>". And then let the Auth thread check if the character is banned when it is checking acc/pass. More efficient than the auth okaying acc and then game loads all the stats and then finally reads that and then has to end the client's connection. X.x
Or, to be more efficient, only add the "Ban=" (or whatever) string in the Character file once you use "/ban <name>". And then let the Auth thread check if the character is banned when it is checking acc/pass. More efficient than the auth okaying acc and then game loads all the stats and then finally reads that and then ends the client connection. X.x
LetterX is quite rightly saying that if you modified AuthWorker.cs, specifically:
Code:
if (Info.LogonType != 255)
{
byte[] IV = new byte[8];
for (int i = 0; i < 8; i++)
IV[i] = (byte)Rnd.Next(255);
KeyedClients.Add(BitConverter.ToUInt64(IV, 0), Info);
AC.Send(Packets.SendAuthentication(GameIP, IV));
//AC.Disconnect();
}
else
{
AC.Send(Packets.WrongAuth());
//AC.Disconnect();
}
Then you could do this for example:
Code:
if (Info.LogonType != 255)
{
if (Info.LogonType == 3)//Banned
{
AC.Send(Packets.BannedAuth());//Example!
AC.Disconnect();
}
byte[] IV = new byte[8];
for (int i = 0; i < 8; i++)
IV[i] = (byte)Rnd.Next(255);
KeyedClients.Add(BitConverter.ToUInt64(IV, 0), Info);
AC.Send(Packets.SendAuthentication(GameIP, IV));
//AC.Disconnect();
}
else
{
AC.Send(Packets.WrongAuth());
//AC.Disconnect();
}
This would require modifiying the layout of the .usr files to incorporate a bool (banned/not banned), and modifying the database backend so that durring authorization:
Code:
AuthInfo Info = Database.Authenticate(Account, Password);
The server would check this bool and return 3 for the LogonType if banned.
Okay, make sure you following the directions below step by step and carefully.
First go to Database.cs and put the following code inside the Database class.
Code:
public static bool CheckBan(string Name)
{
if (File.Exists(@"C:\OldCODB\banname.txt"))
{
TextReader tr = new StreamReader(@"C:\OldCODB\banname.txt");//You can change to where ever your OldCODB is
string name;
while ((name = tr.ReadLine()) != null)
{
if (name == Name)
{
return true;
}
}
tr.Close();
}
return false;
}
public static void AddBan(string Name)
{
if (!CheckBan(Name))
{
TextWriter tw = new StreamWriter(@"C:\OldCODB\banname.txt");//You can change to where ever your OldCODB is
tw.WriteLine(Name);
tw.Close();
}
}
Then find the following line in your project:
Code:
GC.Soc = StO.Sock;
And put this code under it:
Code:
if (GC.AuthInfo.LogonType == 3)
{
GC.AddSend(Packets.SystemMessage(GC.MessageID, "You are banned!"));
}
Then find
Code:
public bool Ghost = false;
Put this below it
Code:
public string AccountName;
Next, find
Code:
if (Game.World.H_Chars.Contains(GC.MyChar.EntityID))
And place this above it
Code:
GC.MyChar.AccountName = Acc;
Then find the following line (make sure you don't use the one that's commented)
Code:
Info.LogonType = 1;
Place this under
Code:
if (CheckBan(RealAccount))
Info.LogonType = 3;
Finally place this command in the chat commands
Code:
if (Cmd[0] == "/ban")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
Database.AddBan(C.AccountName);
C.MyClient.Disconnect();
}
Question about a code (5165) 08/23/2010 - CO2 Private Server - 3 Replies SERVER 5165 LOTF
Well, what this npc is suppose to do in order is: Check if you have 50k cps or more, check if you are level 130 or more, check if you are level 137 or less (so check if your between level 130-137 and also checks if you have 50k or more cps). If true, the npc takes away 50k cps from your inventory, and adds a level and broadcasts that you bought a lvl. Otherwise, it gives an error message.
But I'm getting 2 errors on the line where "else" is which are "Invalid Expression...
[5165]Question... 06/16/2010 - CO2 Private Server - 3 Replies Can i add in 5165 to make allies , enemies and to change the buletin?
can i add that or it`s imposible :D ?
One question about 5165 05/03/2010 - CO2 Private Server - 4 Replies Today I was playing with my archer on my 5165 private server and he is the GM i was looking through the gm commands and i seen counter kill so I typed it in and there it was in my skill list i made counter kill active attacked a guard and the attack was countered. So the skill works and is already in the source without me adding it. But I can't find where to get it on my normal ninja char in game. Where do you find counter kill? or how can I give it to a existing npc so when you talk to him he...
[QUESTION]About NPC and IDs (5165) 12/02/2009 - CO2 Private Server - 9 Replies Can someone give me IDs for ninja gear for the 5165 source? And also can someone tell me what number represents the + on the item below:
Thanks.