public void Add(uint id) { // SCAppellationGainedPacket if (Appellations.Contains(id)) { Log.Warn("Duplicate add {0}, ownerId {1}", id, Owner.Id); return; } Appellations.Add(id); Owner.SendPacket(new SCAppellationGainedPacket(id)); }
public void Change(uint id) { if (id == 0) { // TODO remove buff ActiveAppellation = 0; } else { if (Appellations.Contains(id)) { ActiveAppellation = id; // TODO add/change buff if exist in template } else { Log.Warn("Id {0} doesn't exist, owner {1}", id, Owner.Id); } } Owner.BroadcastPacket(new SCAppellationChangedPacket(Owner.ObjId, ActiveAppellation), true); }
public bool Save() { bool result; try { var unitModelParams = ModelParams.Write(new PacketStream()).GetBytes(); var slots = new PacketStream(); foreach (var slot in Slots) { slots.Write((byte)slot.Type); if (slot.Type != ActionSlotType.None) { slots.Write(slot.ActionId); } } using (var connection = MySQL.CreateConnection()) { using (var transaction = connection.BeginTransaction()) { using (var command = connection.CreateCommand()) { command.Connection = connection; command.Transaction = transaction; // ---- command.CommandText = "REPLACE INTO `characters` " + "(`id`,`account_id`,`name`,`race`,`gender`,`unit_model_params`,`level`,`expirience`,`recoverable_exp`,`hp`,`mp`,`labor_power`,`labor_power_modified`,`consumed_lp`,`ability1`,`ability2`,`ability3`,`zone_id`,`x`,`y`,`z`,`rotation_x`,`rotation_y`,`rotation_z`,`faction_id`,`faction_name`,`family`,`dead_count`,`dead_time`,`rez_wait_duration`,`rez_time`,`rez_penalty_duration`,`leave_time`,`money`,`money2`,`crime_point`,`crime_record`,`delete_request_time`,`transfer_request_time`,`delete_time`,`bm_point`,`auto_use_aapoint`,`prev_point`,`point`,`gift`,`num_inv_slot`,`num_bank_slot`,`slots`,`updated_at`) " + "VALUES(@id,@account_id,@name,@race,@gender,@unit_model_params,@level,@expirience,@recoverable_exp,@hp,@mp,@labor_power,@labor_power_modified,@consumed_lp,@ability1,@ability2,@ability3,@zone_id,@x,@y,@z,@rotation_x,@rotation_y,@rotation_z,@faction_id,@faction_name,@family,@dead_count,@dead_time,@rez_wait_duration,@rez_time,@rez_penalty_duration,@leave_time,@money,@money2,@crime_point,@crime_record,@delete_request_time,@transfer_request_time,@delete_time,@bm_point,@auto_use_aapoint,@prev_point,@point,@gift,@num_inv_slot,@num_bank_slot,@slots,@updated_at)"; command.Parameters.AddWithValue("@id", Id); command.Parameters.AddWithValue("@account_id", AccountId); command.Parameters.AddWithValue("@name", Name); command.Parameters.AddWithValue("@race", (byte)Race); command.Parameters.AddWithValue("@gender", (byte)Gender); command.Parameters.AddWithValue("@unit_model_params", unitModelParams); command.Parameters.AddWithValue("@level", Level); command.Parameters.AddWithValue("@expirience", Expirience); command.Parameters.AddWithValue("@recoverable_exp", RecoverableExp); command.Parameters.AddWithValue("@hp", Hp); command.Parameters.AddWithValue("@mp", Mp); command.Parameters.AddWithValue("@labor_power", LaborPower); command.Parameters.AddWithValue("@labor_power_modified", LaborPowerModified); command.Parameters.AddWithValue("@consumed_lp", ConsumedLaborPower); command.Parameters.AddWithValue("@ability1", (byte)Ability1); command.Parameters.AddWithValue("@ability2", (byte)Ability2); command.Parameters.AddWithValue("@ability3", (byte)Ability3); command.Parameters.AddWithValue("@zone_id", Position.ZoneId); command.Parameters.AddWithValue("@x", Position.X); command.Parameters.AddWithValue("@y", Position.Y); command.Parameters.AddWithValue("@z", Position.Z); command.Parameters.AddWithValue("@rotation_x", Position.RotationX); command.Parameters.AddWithValue("@rotation_y", Position.RotationY); command.Parameters.AddWithValue("@rotation_z", Position.RotationZ); command.Parameters.AddWithValue("@faction_id", Faction.Id); command.Parameters.AddWithValue("@faction_name", FactionName); command.Parameters.AddWithValue("@family", Family); command.Parameters.AddWithValue("@dead_count", DeadCount); command.Parameters.AddWithValue("@dead_time", DeadTime); command.Parameters.AddWithValue("@rez_wait_duration", RezWaitDuration); command.Parameters.AddWithValue("@rez_time", RezTime); command.Parameters.AddWithValue("@rez_penalty_duration", RezPenaltyDuration); command.Parameters.AddWithValue("@leave_time", LeaveTime); command.Parameters.AddWithValue("@money", Money); command.Parameters.AddWithValue("@money2", Money2); command.Parameters.AddWithValue("@crime_point", CrimePoint); command.Parameters.AddWithValue("@crime_record", CrimeRecord); command.Parameters.AddWithValue("@delete_request_time", DeleteRequestTime); command.Parameters.AddWithValue("@transfer_request_time", TransferRequestTime); command.Parameters.AddWithValue("@delete_time", DeleteTime); command.Parameters.AddWithValue("@bm_point", BmPoint); command.Parameters.AddWithValue("@auto_use_aapoint", AutoUseAAPoint); command.Parameters.AddWithValue("@prev_point", PrevPoint); command.Parameters.AddWithValue("@point", Point); command.Parameters.AddWithValue("@gift", Gift); command.Parameters.AddWithValue("@num_inv_slot", NumInventorySlots); command.Parameters.AddWithValue("@num_bank_slot", NumBankSlots); command.Parameters.AddWithValue("@slots", slots.GetBytes()); command.Parameters.AddWithValue("@updated_at", Updated); command.ExecuteNonQuery(); } using (var command = connection.CreateCommand()) { command.Connection = connection; command.Transaction = transaction; foreach (var pair in _options) { command.CommandText = "REPLACE INTO `options` (`key`,`value`,`owner`) VALUES (@key,@value,@owner)"; command.Parameters.AddWithValue("@key", pair.Key); command.Parameters.AddWithValue("@value", pair.Value); command.Parameters.AddWithValue("@owner", Id); command.ExecuteNonQuery(); command.Parameters.Clear(); } } Inventory.Save(connection, transaction); Abilities.Save(connection, transaction); Appellations.Save(connection, transaction); Skills.Save(connection, transaction); Quests.Save(connection, transaction); try { transaction.Commit(); result = true; } catch (Exception ex) { _log.Error(ex); try { transaction.Rollback(); } catch (Exception ex2) { _log.Error(ex2); } result = false; } } } } catch (Exception ex) { _log.Error(ex); result = false; } return(result); }