mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-26 06:43:25 -04:00
Fix random level picking not being random.
This commit is contained in:
parent
e68cf4edf6
commit
21c5a9c25b
@ -159,7 +159,7 @@ namespace MCGalaxy {
|
|||||||
|| Math.Abs(pAlive.pos[2] - pKiller.pos[2]) > HitboxPrecision)
|
|| Math.Abs(pAlive.pos[2] - pKiller.pos[2]) > HitboxPrecision)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!pAlive.infected && pKiller.infected && !pAlive.referee && !pKiller.referee &&
|
if (!pAlive.infected && pKiller.infected && !pAlive.referee && !pKiller.referee &&
|
||||||
pKiller != pAlive && pKiller.level.name == currentLevelName && pAlive.level.name == currentLevelName)
|
pKiller != pAlive && pKiller.level.name == currentLevelName && pAlive.level.name == currentLevelName)
|
||||||
{
|
{
|
||||||
pAlive.infected = true;
|
pAlive.infected = true;
|
||||||
@ -265,7 +265,7 @@ namespace MCGalaxy {
|
|||||||
|
|
||||||
pl.blockCount = 50;
|
pl.blockCount = 50;
|
||||||
pl.playersInfected = 0;
|
pl.playersInfected = 0;
|
||||||
pl.money += money;
|
pl.money += money;
|
||||||
pl.infected = false;
|
pl.infected = false;
|
||||||
pl.color = pl.group.color;
|
pl.color = pl.group.color;
|
||||||
if (pl.referee) {
|
if (pl.referee) {
|
||||||
@ -286,85 +286,81 @@ namespace MCGalaxy {
|
|||||||
playersString += p.group.color + p.DisplayName + Colors.white + ", ";
|
playersString += p.group.color + p.DisplayName + Colors.white + ", ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChooseNextLevel()
|
void ChooseNextLevel() {
|
||||||
{
|
if (queLevel) { ChangeLevel(nextLevel); return; } // TODO: show global message of 'x level was queued'
|
||||||
if (queLevel)
|
if (!ChangeLevels) return;
|
||||||
{
|
|
||||||
ChangeLevel(nextLevel, Server.ZombieOnlyServer);
|
|
||||||
}
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (ChangeLevels)
|
List<string> levels = GetCandidateLevels();
|
||||||
{
|
if (levels.Count <= 2 && !UseLevelList) { Server.s.Log("You must have more than 2 levels to change levels in Zombie Survival"); return; }
|
||||||
List<string> levels = GetCandidateLevels();
|
|
||||||
if (levels.Count <= 2 && !UseLevelList) { Server.s.Log("You must have more than 2 levels to change levels in Zombie Survival"); return; }
|
|
||||||
|
|
||||||
if (levels.Count < 2 && UseLevelList) { Server.s.Log("You must have more than 2 levels in your level list to change levels in Zombie Survival"); return; }
|
if (levels.Count < 2 && UseLevelList) { Server.s.Log("You must have more than 2 levels in your level list to change levels in Zombie Survival"); return; }
|
||||||
|
|
||||||
string selectedLevel1 = "", selectedLevel2 = "";
|
string selectedLevel1 = "", selectedLevel2 = "";
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
|
|
||||||
LevelChoice:
|
LevelChoice:
|
||||||
int x = 0, x2 = 1;
|
string level = levels[r.Next(0, levels.Count)];
|
||||||
string level = "", level2 = "";
|
string level2 = levels[r.Next(0, levels.Count)];
|
||||||
level = levels[r.Next(0, levels.Count)];
|
|
||||||
level2 = levels[r.Next(0, levels.Count)];
|
|
||||||
Level current = Server.mainLevel;
|
|
||||||
|
|
||||||
if (lastLevelVote1 == level || lastLevelVote2 == level2 || lastLevelVote1 == level2 || lastLevelVote2 == level || current == LevelInfo.Find(level) || currentZombieLevel == level || current == LevelInfo.Find(level2) || currentZombieLevel == level2)
|
if (lastLevel1 == level || lastLevel2 == level2 || lastLevel1 == level2 ||
|
||||||
goto LevelChoice;
|
lastLevel2 == level || currentLevelName == level || currentLevelName == level2) {
|
||||||
else if (selectedLevel1 == "") { selectedLevel1 = level; goto LevelChoice; }
|
goto LevelChoice;
|
||||||
else
|
} else if (selectedLevel1 == "") {
|
||||||
selectedLevel2 = level2;
|
selectedLevel1 = level; goto LevelChoice;
|
||||||
|
} else {
|
||||||
Level1Vote = 0; Level2Vote = 0; Level3Vote = 0;
|
selectedLevel2 = level2;
|
||||||
lastLevelVote1 = selectedLevel1; lastLevelVote2 = selectedLevel2;
|
|
||||||
|
|
||||||
if (Status == ZombieGameStatus.NotStarted || Status == ZombieGameStatus.LastRound)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (initialChangeLevel)
|
|
||||||
{
|
|
||||||
Server.votingforlevel = true;
|
|
||||||
Player.GlobalMessage(" " + Colors.black + "Level Vote: %S" + selectedLevel1 + ", " + selectedLevel2 +
|
|
||||||
" or random " + "(" + Colors.lime + "1%S/" + Colors.red + "2%S/" + Colors.blue + "3%S)");
|
|
||||||
System.Threading.Thread.Sleep(15000);
|
|
||||||
Server.votingforlevel = false;
|
|
||||||
}
|
|
||||||
else { Level1Vote = 1; Level2Vote = 0; Level3Vote = 0; }
|
|
||||||
|
|
||||||
if (Status == ZombieGameStatus.NotStarted || Status == ZombieGameStatus.LastRound)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (Level1Vote >= Level2Vote) {
|
|
||||||
if (Level3Vote > Level1Vote && Level3Vote > Level2Vote) {
|
|
||||||
ChangeLevel(levels[r.Next(0, levels.Count)], Server.ZombieOnlyServer);
|
|
||||||
}
|
|
||||||
ChangeLevel(selectedLevel1, Server.ZombieOnlyServer);
|
|
||||||
} else {
|
|
||||||
if (Level3Vote > Level1Vote && Level3Vote > Level2Vote) {
|
|
||||||
ChangeLevel(levels[r.Next(0, levels.Count)], Server.ZombieOnlyServer);
|
|
||||||
}
|
|
||||||
ChangeLevel(selectedLevel2, Server.ZombieOnlyServer);
|
|
||||||
}
|
|
||||||
Player[] online = PlayerInfo.Online.Items;
|
|
||||||
foreach (Player pl in online)
|
|
||||||
pl.voted = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Level1Vote = 0; Level2Vote = 0; Level3Vote = 0;
|
||||||
|
lastLevel1 = selectedLevel1; lastLevel2 = selectedLevel2;
|
||||||
|
|
||||||
|
if (Status == ZombieGameStatus.NotStarted || Status == ZombieGameStatus.LastRound)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (initialChangeLevel) {
|
||||||
|
Server.votingforlevel = true;
|
||||||
|
Player.GlobalMessage(" " + Colors.black + "Level Vote: %S" + selectedLevel1 + ", " + selectedLevel2 +
|
||||||
|
" or random " + "(" + Colors.lime + "1%S/" + Colors.red + "2%S/" + Colors.blue + "3%S)");
|
||||||
|
System.Threading.Thread.Sleep(15000);
|
||||||
|
Server.votingforlevel = false;
|
||||||
|
} else { Level1Vote = 1; Level2Vote = 0; Level3Vote = 0; }
|
||||||
|
|
||||||
|
if (Status == ZombieGameStatus.NotStarted || Status == ZombieGameStatus.LastRound)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (Level1Vote >= Level2Vote) {
|
||||||
|
if (Level3Vote > Level1Vote && Level3Vote > Level2Vote) {
|
||||||
|
ChangeLevel(levels[r.Next(0, levels.Count)]);
|
||||||
|
} else {
|
||||||
|
ChangeLevel(selectedLevel1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (Level3Vote > Level1Vote && Level3Vote > Level2Vote) {
|
||||||
|
ChangeLevel(levels[r.Next(0, levels.Count)]);
|
||||||
|
} else {
|
||||||
|
ChangeLevel(selectedLevel2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Player[] online = PlayerInfo.Online.Items;
|
||||||
|
foreach (Player pl in online)
|
||||||
|
pl.voted = false;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Server.ErrorLog(ex);
|
||||||
}
|
}
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<string> GetCandidateLevels() {
|
List<string> GetCandidateLevels() {
|
||||||
if (UseLevelList) return LevelList;
|
if (UseLevelList) return LevelList;
|
||||||
|
|
||||||
List<string> maps = new List<string>();
|
List<string> maps = new List<string>();
|
||||||
DirectoryInfo di = new DirectoryInfo("levels/");
|
DirectoryInfo di = new DirectoryInfo("levels/");
|
||||||
FileInfo[] fi = di.GetFiles("*.lvl");
|
FileInfo[] fi = di.GetFiles("*.lvl");
|
||||||
foreach (FileInfo fil in fi)
|
foreach (FileInfo fil in fi)
|
||||||
maps.Add(fil.Name.Split('.')[0]);
|
maps.Add(fil.Name.Split('.')[0]);
|
||||||
return maps;
|
return maps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,6 @@ namespace MCGalaxy {
|
|||||||
public bool RoundInProgress = false;
|
public bool RoundInProgress = false;
|
||||||
|
|
||||||
public int aliveCount = 0;
|
public int aliveCount = 0;
|
||||||
public string currentZombieLevel = "";
|
|
||||||
public static System.Timers.Timer timer;
|
public static System.Timers.Timer timer;
|
||||||
public bool initialChangeLevel = false;
|
public bool initialChangeLevel = false;
|
||||||
public string lastLevelName = "", currentLevelName = "";
|
public string lastLevelName = "", currentLevelName = "";
|
||||||
@ -73,7 +72,7 @@ namespace MCGalaxy {
|
|||||||
internal bool ChangeLevels = true, UseLevelList = false;
|
internal bool ChangeLevels = true, UseLevelList = false;
|
||||||
|
|
||||||
internal List<string> LevelList = new List<string>();
|
internal List<string> LevelList = new List<string>();
|
||||||
string lastLevelVote1 = "", lastLevelVote2 = "";
|
string lastLevel1 = "", lastLevel2 = "";
|
||||||
|
|
||||||
int Level1Vote = 0, Level2Vote = 0, Level3Vote = 0;
|
int Level1Vote = 0, Level2Vote = 0, Level3Vote = 0;
|
||||||
|
|
||||||
@ -148,18 +147,17 @@ namespace MCGalaxy {
|
|||||||
aliveCount = alive.Count;
|
aliveCount = alive.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeLevel(string LevelName, bool changeMainLevel)
|
void ChangeLevel(string next) {
|
||||||
{
|
|
||||||
string next = LevelName;
|
|
||||||
currentLevelName = next;
|
currentLevelName = next;
|
||||||
queLevel = false;
|
queLevel = false;
|
||||||
nextLevel = "";
|
nextLevel = "";
|
||||||
Command.all.Find("load").Use(null, next.ToLower() + " 0");
|
Command.all.Find("load").Use(null, next.ToLower() + " 0");
|
||||||
|
|
||||||
Player.GlobalMessage("The next map has been chosen - " + Colors.red + next.ToLower());
|
Player.GlobalMessage("The next map has been chosen - " + Colors.red + next.ToLower());
|
||||||
Player.GlobalMessage("Please wait while you are transfered.");
|
Player.GlobalMessage("Please wait while you are transfered.");
|
||||||
string oldLevel = Server.mainLevel.name;
|
string oldLevel = Server.mainLevel.name;
|
||||||
if (changeMainLevel)
|
if (Server.ZombieOnlyServer)
|
||||||
Server.mainLevel = LevelInfo.Find(next.ToLower());
|
Server.mainLevel = LevelInfo.Find(next);
|
||||||
|
|
||||||
Player[] online = PlayerInfo.Online.Items;
|
Player[] online = PlayerInfo.Online.Items;
|
||||||
foreach (Player pl in online) {
|
foreach (Player pl in online) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user