Fix arena starting at :59

This commit is contained in:
Bluzume 2021-11-12 06:05:15 -05:00
parent 6da0a81252
commit 91a535a2cd
3 changed files with 25 additions and 10 deletions

View file

@ -399,13 +399,17 @@ namespace HISP.Game
return false; return false;
} }
public static void StartArenas(int minutes) public static void StartArenas(int Minutes)
{ {
foreach(Arena arena in Arenas) foreach(Arena arena in Arenas)
{ {
if (minutes % arena.RaceEvery == 0) if ((Minutes % arena.RaceEvery) == 1)
if(arena.Mode == "TAKINGENTRIES") {
arena.Start(); if (arena.Mode == "TAKINGENTRIES")
{
arena.Start();
}
}
} }
} }

View file

@ -144,8 +144,8 @@ namespace HISP.Server
// HI1 Packets are terminates by 0x00 so we have to read until we receive that terminator // HI1 Packets are terminates by 0x00 so we have to read until we receive that terminator
if (isDisconnecting || if (isDisconnecting ||
ClientSocket == null || ClientSocket == null ||
ClientSocket.Poll(0, SelectMode.SelectRead) || e.BytesTransferred <= 0 ||
!ClientSocket.Connected || !ClientSocket.Connected ||
e.SocketError != SocketError.Success) e.SocketError != SocketError.Success)
{ {
@ -154,13 +154,13 @@ namespace HISP.Server
} }
int availble = e.BytesTransferred; int availble = e.BytesTransferred;
if (availble >= 1) if (availble >= 1) // More than 1 byte transfered..
{ {
for (int i = 0; i < availble; i++) for (int i = 0; i < availble; i++)
{ {
currentPacket.Add(e.Buffer[i]); currentPacket.Add(e.Buffer[i]);
if (e.Buffer[i] == PacketBuilder.PACKET_TERMINATOR) if (e.Buffer[i] == PacketBuilder.PACKET_TERMINATOR) // Read until \0...
{ {
parsePackets(currentPacket.ToArray()); parsePackets(currentPacket.ToArray());
currentPacket.Clear(); currentPacket.Clear();
@ -168,6 +168,9 @@ namespace HISP.Server
} }
} }
if (availble == 0)
Disconnect();
if (isDisconnecting || ClientSocket == null) if (isDisconnecting || ClientSocket == null)
return; return;

View file

@ -53,11 +53,15 @@ namespace HISP.Server
World.TickWorldClock(); World.TickWorldClock();
if(World.ServerTime.Minutes != lastServerTime) if(World.ServerTime.Minutes != lastServerTime)
{ {
lastServerTime = World.ServerTime.Minutes;
// Start all events with this RaceEvery set.
Arena.StartArenas(World.ServerTime.Minutes); Arena.StartArenas(World.ServerTime.Minutes);
// Decrement horse train timer
Database.DecHorseTrainTimeout(); Database.DecHorseTrainTimeout();
// write time to database: // Write time to database:
Database.SetServerTime(World.ServerTime.Minutes, World.ServerTime.Days, World.ServerTime.Years); Database.SetServerTime(World.ServerTime.Minutes, World.ServerTime.Days, World.ServerTime.Years);
// Ranch Windmill Payments // Ranch Windmill Payments
@ -103,7 +107,6 @@ namespace HISP.Server
} }
gameTimer.Change(gameTickSpeed, gameTickSpeed); gameTimer.Change(gameTickSpeed, gameTickSpeed);
lastServerTime = World.ServerTime.Minutes;
} }
} }
@ -146,29 +149,34 @@ namespace HISP.Server
{ {
ModsRevengeEvent.StartEvent(); ModsRevengeEvent.StartEvent();
} }
// Isle Card Trading Game // Isle Card Trading Game
if(totalMinutesElapsed % (60 *2) == 0) if(totalMinutesElapsed % (60 *2) == 0)
{ {
IsleCardTrading = new IsleCardTradingGame(); IsleCardTrading = new IsleCardTradingGame();
IsleCardTrading.StartEvent(); IsleCardTrading.StartEvent();
} }
// Water Balloon Game // Water Balloon Game
if(totalMinutesElapsed % (60 * 2) == 0) if(totalMinutesElapsed % (60 * 2) == 0)
{ {
WaterBalloonEvent.StartEvent(); WaterBalloonEvent.StartEvent();
} }
// Tack Shop Giveaway // Tack Shop Giveaway
if(totalMinutesElapsed % ((60 * 3)+5) == 0) if(totalMinutesElapsed % ((60 * 3)+5) == 0)
{ {
TackShopGiveawayEvent = new TackShopGiveaway(); TackShopGiveawayEvent = new TackShopGiveaway();
TackShopGiveawayEvent.StartEvent(); TackShopGiveawayEvent.StartEvent();
} }
// Real Time Riddle // Real Time Riddle
if(totalMinutesElapsed % (RealTimeRiddle.LastWon ? 20 : 15) == 0) if(totalMinutesElapsed % (RealTimeRiddle.LastWon ? 20 : 15) == 0)
{ {
RiddleEvent = RealTimeRiddle.GetRandomRiddle(); RiddleEvent = RealTimeRiddle.GetRandomRiddle();
RiddleEvent.StartEvent(); RiddleEvent.StartEvent();
} }
// Real Time Quiz // Real Time Quiz
if(totalMinutesElapsed % (60 + 30) == 0) if(totalMinutesElapsed % (60 + 30) == 0)
{ {