mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-23 21:25:52 +12:00
Update
This commit is contained in:
parent
5061e503fe
commit
48d1b9e100
531 changed files with 9271 additions and 167 deletions
|
@ -68,8 +68,7 @@ namespace Horse_Isle_Server
|
|||
byte[] BaseStatsPacketData = PacketBuilder.CreatePlayerData(user.Money, Server.GetNumberOfPlayers(), user.MailBox.MailCount);
|
||||
sender.SendPacket(BaseStatsPacketData);
|
||||
|
||||
byte[] AreaMessage = PacketBuilder.CreateAreaMessage(user.X, user.Y);
|
||||
sender.SendPacket(AreaMessage);
|
||||
UpdateArea(sender);
|
||||
|
||||
foreach (Client client in ConnectedClients)
|
||||
{
|
||||
|
@ -223,7 +222,7 @@ namespace Horse_Isle_Server
|
|||
sender.SendPacket(moveLeftResponse);
|
||||
}
|
||||
}
|
||||
else if (movementDirection == PacketBuilder.MOVE_DOWN)
|
||||
else if (movementDirection == PacketBuilder.MOVE_DOWN || movementDirection == PacketBuilder.MOVE_ESCAPE)
|
||||
{
|
||||
loggedInUser.Facing = PacketBuilder.DIRECTION_DOWN;
|
||||
if (Map.CheckPassable(loggedInUser.X, loggedInUser.Y + 1))
|
||||
|
@ -241,11 +240,7 @@ namespace Horse_Isle_Server
|
|||
}
|
||||
|
||||
|
||||
UpdateUserInfo(sender.LoggedinUser);
|
||||
UpdateArea(sender);
|
||||
foreach (User nearbyUser in Server.GetNearbyUsers(sender.LoggedinUser.X, sender.LoggedinUser.Y, false, false))
|
||||
if(nearbyUser.Id != sender.LoggedinUser.Id)
|
||||
UpdateArea(nearbyUser.LoggedinClient);
|
||||
Update(sender);
|
||||
}
|
||||
|
||||
public static void OnChatPacket(Client sender, byte[] packet)
|
||||
|
@ -414,8 +409,26 @@ namespace Horse_Isle_Server
|
|||
return;
|
||||
}
|
||||
|
||||
byte[] areaData = PacketBuilder.CreateAreaMessage(forClient.LoggedinUser.X, forClient.LoggedinUser.Y);
|
||||
forClient.SendPacket(areaData);
|
||||
string LocationStr = "";
|
||||
if (!World.InSpecialTile(forClient.LoggedinUser.X, forClient.LoggedinUser.Y))
|
||||
{
|
||||
LocationStr = Meta.BuildMetaInfo(forClient.LoggedinUser.X, forClient.LoggedinUser.Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
World.SpecialTile specialTile = World.GetSpecialTile(forClient.LoggedinUser.X, forClient.LoggedinUser.Y);
|
||||
if(specialTile.AutoplaySwf != null && specialTile.AutoplaySwf != "")
|
||||
{
|
||||
byte[] swfModulePacket = PacketBuilder.CreateSwfModulePacket(specialTile.AutoplaySwf);
|
||||
forClient.SendPacket(swfModulePacket);
|
||||
}
|
||||
if(specialTile.Code != null)
|
||||
if (!ProcessMapCode(forClient, specialTile.Code))
|
||||
return;
|
||||
LocationStr = Meta.BuildSpecialTileInfo(specialTile);
|
||||
}
|
||||
byte[] AreaMessage = PacketBuilder.CreatePlaceInfo(LocationStr);
|
||||
forClient.SendPacket(AreaMessage);
|
||||
|
||||
}
|
||||
|
||||
|
@ -545,6 +558,60 @@ namespace Horse_Isle_Server
|
|||
return count;
|
||||
}
|
||||
|
||||
public static void Teleport(Client client, int newX, int newY)
|
||||
{
|
||||
if (!client.LoggedIn)
|
||||
return;
|
||||
Logger.DebugPrint("Teleporting: " + client.LoggedinUser.Username + " to: " + newX.ToString() + "," + newY.ToString());
|
||||
|
||||
client.LoggedinUser.X = newX;
|
||||
client.LoggedinUser.Y = newY;
|
||||
|
||||
byte[] MovementPacket = PacketBuilder.CreateMovementPacket(client.LoggedinUser.X, client.LoggedinUser.Y, client.LoggedinUser.CharacterId, client.LoggedinUser.Facing, PacketBuilder.DIRECTION_TELEPORT, true);
|
||||
client.SendPacket(MovementPacket);
|
||||
Update(client);
|
||||
|
||||
}
|
||||
public static void Update(Client client)
|
||||
{
|
||||
UpdateUserInfo(client.LoggedinUser);
|
||||
UpdateArea(client);
|
||||
foreach (User nearbyUser in Server.GetNearbyUsers(client.LoggedinUser.X, client.LoggedinUser.Y, false, false))
|
||||
if (nearbyUser.Id != client.LoggedinUser.Id)
|
||||
UpdateArea(nearbyUser.LoggedinClient);
|
||||
}
|
||||
|
||||
public static bool ProcessMapCode(Client forClient, string mapCode)
|
||||
{
|
||||
if(mapCode.Contains('-'))
|
||||
{
|
||||
string[] codeInfo = mapCode.Split('-');
|
||||
string command = codeInfo[0];
|
||||
string paramaters = codeInfo[1];
|
||||
|
||||
if(command == "JUMP")
|
||||
{
|
||||
if(paramaters.Contains(','))
|
||||
{
|
||||
string[] args = paramaters.Split(',');
|
||||
try
|
||||
{
|
||||
int newX = int.Parse(args[0]);
|
||||
int newY = int.Parse(args[1]);
|
||||
Teleport(forClient, newX, newY);
|
||||
return false;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public static int GetNumberOfAdminsOnline()
|
||||
{
|
||||
int count = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue