本文整理汇总了C#中Estrella.FiestaLib.Networking.Packet.ReadSkip方法的典型用法代码示例。如果您正苦于以下问题:C# Packet.ReadSkip方法的具体用法?C# Packet.ReadSkip怎么用?C# Packet.ReadSkip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Estrella.FiestaLib.Networking.Packet
的用法示例。
在下文中一共展示了Packet.ReadSkip方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TransferKey
public static void TransferKey(WorldClient client, Packet packet)
{
string key;
if (!packet.ReadSkip(18) || !packet.TryReadString(out key, 32))
{
Log.WriteLine(LogLevel.Warn, "Invalid connection request.");
client.Disconnect();
return;
}
ClientTransfer transfer = ClientManager.Instance.GetTransfer(key);
if (transfer != null)
{
// Check if client does not connect from localhost or LAN,
// and if it's connecting from the correct IP.
// When this check is not done, people can remote hack someone.
if (!client.Host.StartsWith("127.0") && !client.Host.StartsWith("192.") && transfer.HostIP != client.Host)
{
Log.WriteLine(LogLevel.Warn, "Remotehack from {0}", client.Host);
SendError(client, ServerError.InvalidCredentials);
}
else
{
if (ClientManager.Instance.RemoveTransfer(transfer.Hash) && (!Program.Maintenance || transfer.Admin > 0)) //admins can still login
{
client.Authenticated = true;
client.AccountID = transfer.AccountID;
client.Admin = transfer.Admin;
client.Username = transfer.Username;
client.lastPing = DateTime.Now; //this is so pongthread can start checking him
client.Pong = true;
client.RandomID = MathUtils.RandomizeUShort(ushort.MaxValue);
Log.WriteLine(LogLevel.Debug, "{0} authenticated.", client.Username);
SendCharacterList(client);
}
}
}
else
{
Log.WriteLine(LogLevel.Warn, "Invalid client authentication from {0}", client.Host);
SendError(client, ServerError.InvalidCredentials);
}
}
示例2: On_GameClient_CreateGuild
public static void On_GameClient_CreateGuild(WorldClient Client, Packet Packet)
{
string name, password;
bool allowGuildWar;
if (!Packet.TryReadString(out name, 16)
|| !Packet.TryReadString(out password, 8)
|| !Packet.ReadSkip(4) // unk ?
|| !Packet.TryReadBool(out allowGuildWar))
{
return;
}
GuildCreateResponse response;
if (Client.Character.Character.CharLevel < 20)
{
response = GuildCreateResponse.LevelTooLow;
}
else if (Client.Character.Character.Money < Guild.Price)
{
response = GuildCreateResponse.MoneyTooLow;
}
else
{
//encrypt guild pw
var pwData = Encoding.UTF8.GetBytes(password);
// InterCrypto.Encrypt(ref pwData, 0, pwData.Length);
Guild guild;
//try to create guild
lock (ThreadLocker)
{
int result;
int guildID;
var createTime = Program.CurrentTime;
using (var con = Program.DatabaseManager.GetClient().GetConnection())
{
//insert guild in db
using (var cmd = con.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Guild_Create";
cmd.Parameters.Add(new MySqlParameter("@pName", name));
cmd.Parameters.Add(new MySqlParameter("@pPassword", pwData));
cmd.Parameters.Add(new MySqlParameter("@pAllowGuildWar", allowGuildWar));
cmd.Parameters.Add(new MySqlParameter("@pCreaterID", Client.Character.ID));
cmd.Parameters.Add(new MySqlParameter("@pCreateTime", createTime));
var idParam = cmd.Parameters.Add(new MySqlParameter("@pID", SqlDbType.Int)
{
Direction = ParameterDirection.Output
});
result = Convert.ToInt32(cmd.ExecuteScalar());
guildID = (int)idParam.Value;
}
switch (result)
{
case -1:
//guild name already exists (ToDo: get response code)
SendGuildCreateResponse(Client, name, password, allowGuildWar, GuildCreateResponse.AlredyExist);
return;
case -2: //database error @ insert guild (ToDo: get response code)
SendGuildCreateResponse(Client, name, password, allowGuildWar, GuildCreateResponse.Failed);
return;
case -3: //database error @ insert guild academy (ToDo: get response code)
SendGuildCreateResponse(Client, name, password, allowGuildWar, GuildCreateResponse.Failed);
return;
case 0:
//create guild
guild = new Guild(con, guildID, name, pwData, allowGuildWar, Client.Character, createTime);
//insert guild master (character will get updated)
guild.AddMember(Client.Character, GuildRank.Master, con, false, false);
//add to loaded guilds
LoadedGuilds.Add(guild);
break;
default:
return;
}
}
}
Client.Character.
//revoke money
Client.Character.ChangeMoney(Client.Character.Character.Money - Guild.Price);
//let character broadcast guild name packet
using (var packet = new Packet(SH29Type.GuildNameResult))
{
packet.WriteInt(guild.ID);
packet.WriteString(guild.Name, 16);
//.........这里部分代码省略.........