players cant kick member when he is offline
No such player or name exsists
Kick him from where, already offline ?.
from the clan
I also encountered this problem and hope to solve it
Go into the code and replace
private BasePlayer findPlayerByPartialName(string name)
{
if (string.IsNullOrEmpty(name))
return null;
BasePlayer player = null;
name = name.ToLower();
var allPlayers = BasePlayer.activePlayerList.ToArray();
foreach (var p in allPlayers) {
if (p.displayName == name) {
if (player != null)
return null; // Not unique
player = p;
}
}
if (player != null)
return player;
foreach (var p in allPlayers) {
if (p.displayName.ToLower().IndexOf(name) >= 0) {
if (player != null)
return null; // Not unique
player = p;
}
}
return player;
}
section with
private BasePlayer findPlayerByPartialName(string name)
{
if (string.IsNullOrEmpty(name))
return null;
BasePlayer player = null;
name = name.ToLower();
var allPlayers = BasePlayer.activePlayerList.ToArray();
var allPlayersOffline = BasePlayer.sleepingPlayerList.ToArray();
foreach (var p in allPlayersOffline)
{
if (p.displayName == name)
{
if (player != null)
return null; // Not unique
player = p;
}
}
if (player != null)
return player;
foreach (var p in allPlayersOffline)
{
if (p.displayName.ToLower().IndexOf(name) >= 0)
{
if (player != null)
return null; // Not unique
player = p;
}
}
foreach (var p in allPlayers)
{
if (p.displayName == name)
{
if (player != null)
return null; // Not unique
player = p;
}
}
if (player != null)
return player;
foreach (var p in allPlayers)
{
if (p.displayName.ToLower().IndexOf(name) >= 0)
{
if (player != null)
return null; // Not unique
player = p;
}
}
}
The problem it has, is when you call to kick a player, instead of checking everyone (sleepers included), it just check the active online players. I added a code that checks for both online and offline players!
Merged post
Go into the code and replace
private BasePlayer findPlayerByPartialName(string name)
{
if (string.IsNullOrEmpty(name))
return null;
BasePlayer player = null;
name = name.ToLower();
var allPlayers = BasePlayer.activePlayerList.ToArray();
foreach (var p in allPlayers)
{
if (p.displayName == name)
{
if (player != null)
return null; // Not unique
player = p;
}
}
if (player != null)
return player;
foreach (var p in allPlayers)
{
if (p.displayName.ToLower().IndexOf(name) >= 0)
{
if (player != null)
return null; // Not unique
player = p;
}
}
return player;
}
section with
private BasePlayer findPlayerByPartialName(string name)
{
if (string.IsNullOrEmpty(name))
return null;
BasePlayer player = null;
name = name.ToLower();
var allPlayers = BasePlayer.activePlayerList.ToArray();
var allPlayersOffline = BasePlayer.sleepingPlayerList.ToArray();
foreach (var p in allPlayersOffline)
{
if (p.displayName == name)
{
if (player != null)
return null; // Not unique
player = p;
}
}
if (player != null)
return player;
foreach (var p in allPlayersOffline)
{
if (p.displayName.ToLower().IndexOf(name) >= 0)
{
if (player != null)
return null; // Not unique
player = p;
}
}
return player;
foreach (var p in allPlayers)
{
if (p.displayName == name)
{
if (player != null)
return null; // Not unique
player = p;
}
}
if (player != null)
return player;
foreach (var p in allPlayers)
{
if (p.displayName.ToLower().IndexOf(name) >= 0)
{
if (player != null)
return null; // Not unique
player = p;
}
}
return player;
}
The problem it has, is when you call to kick a player, instead of checking everyone (sleepers included), it just check the active online players. I added a code that checks for both online and offline players!