mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-18 19:01:32 +12:00
try and fail at making horses work >_<
This commit is contained in:
parent
60fbc4b3b4
commit
6c01c98a29
5 changed files with 279 additions and 121 deletions
|
@ -173,7 +173,8 @@ namespace HISP.Game.Horse
|
||||||
while(wildHorses.Count < 40)
|
while(wildHorses.Count < 40)
|
||||||
{
|
{
|
||||||
HorseInfo.Breed horseBreed = HorseInfo.Breeds[GameServer.RandomNumberGenerator.Next(0, HorseInfo.Breeds.Count)];
|
HorseInfo.Breed horseBreed = HorseInfo.Breeds[GameServer.RandomNumberGenerator.Next(0, HorseInfo.Breeds.Count)];
|
||||||
|
if (horseBreed.Swf == "")
|
||||||
|
continue;
|
||||||
if (horseBreed.SpawnInArea == "none") // no unipegs >_>
|
if (horseBreed.SpawnInArea == "none") // no unipegs >_>
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
@ -655,6 +655,8 @@ namespace HISP.Game
|
||||||
string message = "";
|
string message = "";
|
||||||
foreach(HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
|
foreach(HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
|
||||||
{
|
{
|
||||||
|
if (breed.Swf == "")
|
||||||
|
continue;
|
||||||
if (breed.Type == "horse")
|
if (breed.Type == "horse")
|
||||||
message += Messages.FormatHorseBreed(breed.Name, breed.Id);
|
message += Messages.FormatHorseBreed(breed.Name, breed.Id);
|
||||||
else
|
else
|
||||||
|
|
|
@ -45,7 +45,6 @@ namespace HISP.Player
|
||||||
public Inn LastVisitedInn;
|
public Inn LastVisitedInn;
|
||||||
public HorseInventory HorseInventory;
|
public HorseInventory HorseInventory;
|
||||||
public HorseInstance LastViewedHorse;
|
public HorseInstance LastViewedHorse;
|
||||||
public HorseInstance Riding;
|
|
||||||
public PlayerQuests Quests;
|
public PlayerQuests Quests;
|
||||||
public Highscore Highscores;
|
public Highscore Highscores;
|
||||||
public Award Awards;
|
public Award Awards;
|
||||||
|
|
|
@ -275,7 +275,77 @@ namespace HISP.Server
|
||||||
string ridingHorseMessage = Messages.FormatHorseRidingMessage(horseInst.Name);
|
string ridingHorseMessage = Messages.FormatHorseRidingMessage(horseInst.Name);
|
||||||
byte[] ridingHorseMessagePacket = PacketBuilder.CreateChat(ridingHorseMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
byte[] ridingHorseMessagePacket = PacketBuilder.CreateChat(ridingHorseMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
sender.SendPacket(ridingHorseMessagePacket);
|
sender.SendPacket(ridingHorseMessagePacket);
|
||||||
sender.LoggedinUser.Riding = horseInst;
|
|
||||||
|
// Determine what sprite to use;
|
||||||
|
int incBy = 0;
|
||||||
|
switch(horseInst.Color)
|
||||||
|
{
|
||||||
|
case "brown":
|
||||||
|
incBy = 1;
|
||||||
|
break;
|
||||||
|
case "cremello":
|
||||||
|
case "white":
|
||||||
|
incBy = 2;
|
||||||
|
break;
|
||||||
|
case "black":
|
||||||
|
incBy = 3;
|
||||||
|
break;
|
||||||
|
case "chestnut":
|
||||||
|
incBy = 4;
|
||||||
|
break;
|
||||||
|
case "bay":
|
||||||
|
incBy = 5;
|
||||||
|
break;
|
||||||
|
case "grey":
|
||||||
|
incBy = 6;
|
||||||
|
break;
|
||||||
|
case "dun":
|
||||||
|
incBy = 7;
|
||||||
|
break;
|
||||||
|
case "palomino":
|
||||||
|
incBy = 8;
|
||||||
|
break;
|
||||||
|
case "roan":
|
||||||
|
incBy = 9;
|
||||||
|
break;
|
||||||
|
case "pinto":
|
||||||
|
incBy = 10;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(horseInst.Breed.Type == "zebra")
|
||||||
|
{
|
||||||
|
incBy = 11;
|
||||||
|
}
|
||||||
|
if (horseInst.Breed.Type == "camel")
|
||||||
|
{
|
||||||
|
if (horseInst.Color == "brown")
|
||||||
|
incBy = 13;
|
||||||
|
if (horseInst.Color == "white")
|
||||||
|
incBy = 14;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (horseInst.Breed.Type == "unicorn")
|
||||||
|
{
|
||||||
|
incBy = 15;
|
||||||
|
}
|
||||||
|
if (horseInst.Breed.Type == "pegasus")
|
||||||
|
{
|
||||||
|
incBy = 16;
|
||||||
|
}
|
||||||
|
if(horseInst.Breed.Id == 170) // Unipeg
|
||||||
|
{
|
||||||
|
incBy = 17;
|
||||||
|
}
|
||||||
|
|
||||||
|
incBy *= 5;
|
||||||
|
sender.LoggedinUser.Facing += incBy;
|
||||||
|
|
||||||
|
byte[] rideHorsePacket = PacketBuilder.CreateHorseRidePacket(sender.LoggedinUser.X, sender.LoggedinUser.Y, sender.LoggedinUser.CharacterId, sender.LoggedinUser.Facing, 10, true);
|
||||||
|
Logger.DebugPrint("packet dump: " +BitConverter.ToString(rideHorsePacket).Replace("-", " "));
|
||||||
|
sender.SendPacket(rideHorsePacket);
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1403,6 +1473,18 @@ namespace HISP.Server
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int onHorse = 0;
|
||||||
|
int facing = sender.LoggedinUser.Facing;
|
||||||
|
while (facing >= 5)
|
||||||
|
{
|
||||||
|
facing = facing - 5;
|
||||||
|
onHorse++;
|
||||||
|
}
|
||||||
|
byte direction = 0;
|
||||||
|
int newX = loggedInUser.X;
|
||||||
|
int newY = loggedInUser.Y;
|
||||||
|
bool moveTwo = false;
|
||||||
|
|
||||||
if (movementDirection == PacketBuilder.MOVE_ESCAPE)
|
if (movementDirection == PacketBuilder.MOVE_ESCAPE)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -1410,9 +1492,6 @@ namespace HISP.Server
|
||||||
if (World.InSpecialTile(loggedInUser.X, loggedInUser.Y))
|
if (World.InSpecialTile(loggedInUser.X, loggedInUser.Y))
|
||||||
{
|
{
|
||||||
|
|
||||||
int newX = loggedInUser.X;
|
|
||||||
int newY = loggedInUser.Y;
|
|
||||||
|
|
||||||
World.SpecialTile tile = World.GetSpecialTile(loggedInUser.X, loggedInUser.Y);
|
World.SpecialTile tile = World.GetSpecialTile(loggedInUser.X, loggedInUser.Y);
|
||||||
if (tile.ExitX != 0)
|
if (tile.ExitX != 0)
|
||||||
newX = tile.ExitX;
|
newX = tile.ExitX;
|
||||||
|
@ -1448,74 +1527,70 @@ namespace HISP.Server
|
||||||
Direction = PacketBuilder.DIRECTION_DOWN;
|
Direction = PacketBuilder.DIRECTION_DOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
loggedInUser.Facing = Direction + (onHorse * 5);
|
||||||
Logger.DebugPrint("Exiting player: " + loggedInUser.Username + " to: " + loggedInUser.X + "," + loggedInUser.Y);
|
Logger.DebugPrint("Exiting player: " + loggedInUser.Username + " to: " + loggedInUser.X + "," + loggedInUser.Y);
|
||||||
byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, Direction, Direction, true);
|
byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, Direction, true);
|
||||||
sender.SendPacket(moveResponse);
|
sender.SendPacket(moveResponse);
|
||||||
|
Update(sender);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (movementDirection == PacketBuilder.MOVE_UP)
|
if (movementDirection == PacketBuilder.MOVE_UP)
|
||||||
{
|
{
|
||||||
|
direction = PacketBuilder.DIRECTION_UP;
|
||||||
|
if (Map.CheckPassable(newX, newY - 1))
|
||||||
|
newY -= 1;
|
||||||
|
|
||||||
|
|
||||||
|
if (loggedInUser.Facing == (direction + (onHorse * 5))&& onHorse != 0) // Double move
|
||||||
loggedInUser.Facing = PacketBuilder.DIRECTION_UP;
|
if (Map.CheckPassable(newX, newY - 1))
|
||||||
if (Map.CheckPassable(loggedInUser.X, loggedInUser.Y - 1))
|
{
|
||||||
{
|
newY -= 1;
|
||||||
loggedInUser.Y -= 1;
|
moveTwo = true;
|
||||||
|
}
|
||||||
byte[] moveUpResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, sender.LoggedinUser.Facing, PacketBuilder.DIRECTION_UP, true);
|
|
||||||
sender.SendPacket(moveUpResponse);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] moveUpResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, sender.LoggedinUser.Facing, PacketBuilder.DIRECTION_NONE, false);
|
|
||||||
sender.SendPacket(moveUpResponse);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (movementDirection == PacketBuilder.MOVE_LEFT)
|
else if (movementDirection == PacketBuilder.MOVE_LEFT)
|
||||||
{
|
{
|
||||||
loggedInUser.Facing = PacketBuilder.DIRECTION_LEFT;
|
direction = PacketBuilder.DIRECTION_LEFT;
|
||||||
if (Map.CheckPassable(loggedInUser.X - 1, loggedInUser.Y))
|
if (Map.CheckPassable(newX - 1, newY))
|
||||||
{
|
newX -= 1;
|
||||||
loggedInUser.X -= 1;
|
|
||||||
byte[] moveLeftResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_LEFT, true);
|
|
||||||
sender.SendPacket(moveLeftResponse);
|
if (loggedInUser.Facing == (direction + (onHorse * 5)) && onHorse != 0) // Double move
|
||||||
}
|
if (Map.CheckPassable(newX - 1, newY))
|
||||||
else
|
{
|
||||||
{
|
newX -= 1;
|
||||||
byte[] moveLeftResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_NONE, false);
|
moveTwo = true;
|
||||||
sender.SendPacket(moveLeftResponse);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (movementDirection == PacketBuilder.MOVE_RIGHT)
|
else if (movementDirection == PacketBuilder.MOVE_RIGHT)
|
||||||
{
|
{
|
||||||
loggedInUser.Facing = PacketBuilder.DIRECTION_RIGHT;
|
direction = PacketBuilder.DIRECTION_RIGHT;
|
||||||
if (Map.CheckPassable(loggedInUser.X + 1, loggedInUser.Y))
|
if (Map.CheckPassable(newX + 1, newY))
|
||||||
{
|
newX += 1;
|
||||||
loggedInUser.X += 1;
|
|
||||||
byte[] moveLeftResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_RIGHT, true);
|
|
||||||
sender.SendPacket(moveLeftResponse);
|
if (loggedInUser.Facing == (direction + (onHorse * 5)) && onHorse != 0) // Double move
|
||||||
}
|
if (Map.CheckPassable(newX + 1, newY))
|
||||||
else
|
{
|
||||||
{
|
newX += 1;
|
||||||
byte[] moveLeftResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_NONE, false);
|
moveTwo = true;
|
||||||
sender.SendPacket(moveLeftResponse);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (movementDirection == PacketBuilder.MOVE_DOWN)
|
else if (movementDirection == PacketBuilder.MOVE_DOWN)
|
||||||
{
|
{
|
||||||
loggedInUser.Facing = PacketBuilder.DIRECTION_DOWN;
|
direction = PacketBuilder.DIRECTION_DOWN;
|
||||||
if (Map.CheckPassable(loggedInUser.X, loggedInUser.Y + 1))
|
if (Map.CheckPassable(newX, newY + 1))
|
||||||
{
|
newY += 1;
|
||||||
loggedInUser.Y += 1;
|
|
||||||
byte[] moveDownResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_DOWN, true);
|
|
||||||
sender.SendPacket(moveDownResponse);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
byte[] moveDownResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_NONE, false);
|
|
||||||
sender.SendPacket(moveDownResponse);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
if (loggedInUser.Facing == (direction + (onHorse * 5)) && onHorse != 0) // Double move
|
||||||
|
if (Map.CheckPassable(newX, newY + 1))
|
||||||
|
{
|
||||||
|
newY += 1;
|
||||||
|
moveTwo = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(movementDirection == PacketBuilder.MOVE_UPDATE)
|
else if(movementDirection == PacketBuilder.MOVE_UPDATE)
|
||||||
{
|
{
|
||||||
|
@ -1523,6 +1598,21 @@ namespace HISP.Server
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(loggedInUser.Y != newY || loggedInUser.X != newX)
|
||||||
|
{
|
||||||
|
loggedInUser.Facing = direction + (onHorse * 5);
|
||||||
|
if (moveTwo)
|
||||||
|
direction += 20;
|
||||||
|
loggedInUser.Y = newY;
|
||||||
|
loggedInUser.X = newX;
|
||||||
|
byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, direction, true);
|
||||||
|
sender.SendPacket(moveResponse);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_NONE, false);
|
||||||
|
sender.SendPacket(moveResponse);
|
||||||
|
}
|
||||||
|
|
||||||
Update(sender);
|
Update(sender);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using HISP.Game;
|
using HISP.Game;
|
||||||
|
using HISP.Game.Horse;
|
||||||
using HISP.Game.SwfModules;
|
using HISP.Game.SwfModules;
|
||||||
|
|
||||||
namespace HISP.Server
|
namespace HISP.Server
|
||||||
|
@ -96,6 +97,7 @@ namespace HISP.Server
|
||||||
public const byte MOVE_ESCAPE = 0x18;
|
public const byte MOVE_ESCAPE = 0x18;
|
||||||
public const byte MOVE_UPDATE = 0x0A;
|
public const byte MOVE_UPDATE = 0x0A;
|
||||||
|
|
||||||
|
|
||||||
public const byte CHAT_BOTTOM_LEFT = 0x14;
|
public const byte CHAT_BOTTOM_LEFT = 0x14;
|
||||||
public const byte CHAT_BOTTOM_RIGHT = 0x15;
|
public const byte CHAT_BOTTOM_RIGHT = 0x15;
|
||||||
public const byte CHAT_DM_RIGHT = 0x16;
|
public const byte CHAT_DM_RIGHT = 0x16;
|
||||||
|
@ -275,6 +277,33 @@ namespace HISP.Server
|
||||||
return Packet;
|
return Packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static byte[] CreateHorseRidePacket(int x, int y, int charId, int facing, int direction, bool walk)
|
||||||
|
{
|
||||||
|
// Header information
|
||||||
|
MemoryStream ms = new MemoryStream();
|
||||||
|
ms.WriteByte(PACKET_MOVE);
|
||||||
|
|
||||||
|
ms.WriteByte((byte)(((x - 4) / 64) + 20)); //1
|
||||||
|
ms.WriteByte((byte)(((x - 4) % 64) + 20)); //2
|
||||||
|
|
||||||
|
ms.WriteByte((byte)(((y - 1) / 64) + 20)); //3
|
||||||
|
ms.WriteByte((byte)(((y - 1) % 64) + 20)); //4
|
||||||
|
|
||||||
|
ms.WriteByte((byte)(facing + 20)); //5
|
||||||
|
|
||||||
|
ms.WriteByte((byte)((charId / 64) + 20)); //6
|
||||||
|
ms.WriteByte((byte)((charId % 64) + 20)); //7
|
||||||
|
|
||||||
|
ms.WriteByte((byte)(direction + 20)); //8
|
||||||
|
|
||||||
|
ms.WriteByte((byte)(Convert.ToInt32(walk) + 20)); //9\
|
||||||
|
ms.WriteByte(PACKET_TERMINATOR);
|
||||||
|
ms.Seek(0x00, SeekOrigin.Begin);
|
||||||
|
byte[] packetData = ms.ToArray();
|
||||||
|
ms.Dispose();
|
||||||
|
return packetData;
|
||||||
|
}
|
||||||
|
|
||||||
public static byte[] CreateMovementPacket(int x, int y,int charId,int facing, int direction, bool walk)
|
public static byte[] CreateMovementPacket(int x, int y,int charId,int facing, int direction, bool walk)
|
||||||
{
|
{
|
||||||
// Header information
|
// Header information
|
||||||
|
@ -291,116 +320,153 @@ namespace HISP.Server
|
||||||
|
|
||||||
ms.WriteByte((byte)((charId / 64) + 20)); //6
|
ms.WriteByte((byte)((charId / 64) + 20)); //6
|
||||||
ms.WriteByte((byte)((charId % 64) + 20)); //7
|
ms.WriteByte((byte)((charId % 64) + 20)); //7
|
||||||
|
|
||||||
ms.WriteByte((byte)(direction + 20)); //8
|
ms.WriteByte((byte)(direction + 20)); //8
|
||||||
|
|
||||||
ms.WriteByte((byte)(Convert.ToInt32(walk) + 20)); //9
|
ms.WriteByte((byte)(Convert.ToInt32(walk) + 20)); //9
|
||||||
|
|
||||||
// Map Data
|
|
||||||
|
|
||||||
if (direction >= 20)
|
// Map Data
|
||||||
|
bool moveTwo = false;
|
||||||
|
if(direction >= 20)
|
||||||
{
|
{
|
||||||
direction -= 20;
|
direction -= 20;
|
||||||
|
moveTwo = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ystart = y - 4;
|
int ystart = y - 4;
|
||||||
int xstart = x - 6;
|
int xstart = x - 6;
|
||||||
|
|
||||||
if (direction == DIRECTION_UP)
|
if (direction == DIRECTION_UP)
|
||||||
{
|
{
|
||||||
for (int relx = 0; relx <= 12; relx++)
|
int totalY = 0;
|
||||||
|
if (moveTwo)
|
||||||
|
totalY = 1;
|
||||||
|
|
||||||
|
for (int relY = totalY; relY >= 0; relY--)
|
||||||
{
|
{
|
||||||
int tileId = Map.GetTileId(xstart + relx, ystart, false);
|
for (int relx = 0; relx <= 12; relx++)
|
||||||
int otileId = Map.GetTileId(xstart + relx, ystart, true);
|
|
||||||
|
|
||||||
if (tileId >= 190)
|
|
||||||
{
|
{
|
||||||
ms.WriteByte((byte)190);
|
int tileId = Map.GetTileId(xstart + relx, ystart + relY, false);
|
||||||
tileId -= 100;
|
int otileId = Map.GetTileId(xstart + relx, ystart + relY, true);
|
||||||
}
|
|
||||||
ms.WriteByte((byte)tileId);
|
if (tileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
tileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)tileId);
|
||||||
|
|
||||||
|
if (otileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
otileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)otileId);
|
||||||
|
|
||||||
|
|
||||||
if (otileId >= 190)
|
|
||||||
{
|
|
||||||
ms.WriteByte((byte)190);
|
|
||||||
otileId -= 100;
|
|
||||||
}
|
}
|
||||||
ms.WriteByte((byte)otileId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (direction == DIRECTION_LEFT)
|
if (direction == DIRECTION_LEFT)
|
||||||
{
|
{
|
||||||
for (int rely = 0; rely <= 9; rely++)
|
int totalX = 0;
|
||||||
|
if (moveTwo)
|
||||||
|
totalX = 1;
|
||||||
|
|
||||||
|
for (int relX = totalX; relX >= 0; relX--)
|
||||||
{
|
{
|
||||||
int tileId = Map.GetTileId(xstart, ystart + rely, false);
|
for (int rely = 0; rely <= 9; rely++)
|
||||||
int otileId = Map.GetTileId(xstart, ystart + rely, true);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (tileId >= 190)
|
|
||||||
{
|
{
|
||||||
ms.WriteByte((byte)190);
|
int tileId = Map.GetTileId(xstart + relX, ystart + rely, false);
|
||||||
tileId -= 100;
|
int otileId = Map.GetTileId(xstart + relX, ystart + rely, true);
|
||||||
}
|
|
||||||
ms.WriteByte((byte)tileId);
|
|
||||||
|
|
||||||
|
if (tileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
tileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)tileId);
|
||||||
|
|
||||||
|
if (otileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
otileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)otileId);
|
||||||
|
|
||||||
|
|
||||||
if (otileId >= 190)
|
|
||||||
{
|
|
||||||
ms.WriteByte((byte)190);
|
|
||||||
otileId -= 100;
|
|
||||||
}
|
}
|
||||||
ms.WriteByte((byte)otileId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (direction == DIRECTION_RIGHT)
|
if (direction == DIRECTION_RIGHT)
|
||||||
{
|
{
|
||||||
for (int rely = 0; rely <= 9; rely++)
|
int totalX = 0;
|
||||||
|
if (moveTwo)
|
||||||
|
totalX = 1;
|
||||||
|
|
||||||
|
for (int relX = 0; relX <= totalX; relX++)
|
||||||
{
|
{
|
||||||
int tileId = Map.GetTileId(xstart + 12, ystart + rely, false);
|
|
||||||
int otileId = Map.GetTileId(xstart + 12, ystart + rely, true);
|
|
||||||
|
|
||||||
|
for (int rely = 0; rely <= 9; rely++)
|
||||||
if (tileId >= 190)
|
|
||||||
{
|
{
|
||||||
ms.WriteByte((byte)190);
|
int tileId = Map.GetTileId(xstart + relX + 12, ystart + rely, false);
|
||||||
tileId -= 100;
|
int otileId = Map.GetTileId(xstart + relX + 12, ystart + rely, true);
|
||||||
}
|
|
||||||
ms.WriteByte((byte)tileId);
|
|
||||||
|
if (tileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
tileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)tileId);
|
||||||
|
|
||||||
|
if (otileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
otileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)otileId);
|
||||||
|
|
||||||
if (otileId >= 190)
|
|
||||||
{
|
|
||||||
ms.WriteByte((byte)190);
|
|
||||||
otileId -= 100;
|
|
||||||
}
|
}
|
||||||
ms.WriteByte((byte)otileId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (direction == DIRECTION_DOWN)
|
if (direction == DIRECTION_DOWN)
|
||||||
{
|
{
|
||||||
for (int relx = 0; relx <= 12; relx++)
|
int totalY = 0;
|
||||||
|
if (moveTwo)
|
||||||
|
totalY = 1;
|
||||||
|
|
||||||
|
for (int relY = totalY; relY >= 0; relY--)
|
||||||
{
|
{
|
||||||
int tileId = Map.GetTileId(xstart + relx, ystart + 9, false);
|
|
||||||
int otileId = Map.GetTileId(xstart + relx, ystart + 9, true);
|
|
||||||
|
|
||||||
|
for (int relx = 0; relx <= 12; relx++)
|
||||||
if (tileId >= 190)
|
|
||||||
{
|
{
|
||||||
ms.WriteByte((byte)190);
|
int tileId = Map.GetTileId(xstart + relx, ystart + relY + 9 , false);
|
||||||
tileId -= 100;
|
int otileId = Map.GetTileId(xstart + relx, ystart + relY + 9, true);
|
||||||
}
|
|
||||||
ms.WriteByte((byte)tileId);
|
|
||||||
|
if (tileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
tileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)tileId);
|
||||||
|
|
||||||
|
if (otileId >= 190)
|
||||||
|
{
|
||||||
|
ms.WriteByte((byte)190);
|
||||||
|
otileId -= 100;
|
||||||
|
}
|
||||||
|
ms.WriteByte((byte)otileId);
|
||||||
|
|
||||||
if (otileId >= 190)
|
|
||||||
{
|
|
||||||
ms.WriteByte((byte)190);
|
|
||||||
otileId -= 100;
|
|
||||||
}
|
}
|
||||||
ms.WriteByte((byte)otileId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (direction == DIRECTION_TELEPORT)
|
if (direction == DIRECTION_TELEPORT)
|
||||||
{
|
{
|
||||||
|
@ -436,7 +502,7 @@ namespace HISP.Server
|
||||||
byte[] Packet = ms.ToArray();
|
byte[] Packet = ms.ToArray();
|
||||||
ms.Dispose();
|
ms.Dispose();
|
||||||
|
|
||||||
//Logger.DebugPrint(BitConverter.ToString(Packet).Replace("-", " "));
|
Logger.DebugPrint(BitConverter.ToString(Packet).Replace("-", " "));
|
||||||
return Packet;
|
return Packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue