/// <summary> /// </summary> /// <param name="username"> /// </param> /// <returns> /// </returns> public static byte[] Create(string username) { PacketWriter writer = new PacketWriter(0x07); IEnumerable <DBCharacter> chars = CharacterDao.GetAllForUser(username); byte[] numberOfCharacters = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((Int16)chars.Count())); writer.WriteBytes(numberOfCharacters); foreach (DBCharacter character in chars) { writer.WriteUInt32((UInt32)character.Id); } writer.WriteBytes(numberOfCharacters); foreach (DBCharacter character in chars) { writer.WriteString(character.Name); } writer.WriteBytes(numberOfCharacters); foreach (DBCharacter character in chars) { writer.WriteUInt32((UInt32)StatDao.GetById(50000, character.Id, 54).statvalue); } writer.WriteBytes(numberOfCharacters); foreach (DBCharacter character in chars) { writer.WriteUInt32((UInt32)OnlineDao.IsOnline(character.Id).Online); } return(writer.Finish()); }
/// <summary> /// Write Stat to Sql /// </summary> /// <param name="doit"> /// </param> public void WriteStatToSql(bool doit) { if (this.DoNotDontWriteToSql) { return; } if (doit) { Identity id = this.Parent.Identity; StatDao.AddStat((int)id.Type, id.Instance, this.StatId, (int)this.baseValue); } }
/// <summary> /// </summary> /// <param name="client"> /// </param> /// <returns> /// </returns> public override bool AddClient(IClient client) { Client cl = (Client)client; int charLevel = StatDao.GetById(50000, (int)cl.Character.CharacterId, StatNamesDefaults.GetStatNumber("Level")) .statvalue; if ((charLevel >= this.MinLevel) && (charLevel <= this.MaxLevel)) { return(base.AddClient(client)); } return(false); }
/// <summary> /// </summary> /// <param name="accountName"> /// </param> /// <returns> /// </returns> public static List <CharacterEntry> LoadCharacters(string accountName) { var characters = new List <CharacterEntry>(); foreach (DBCharacter ch in CharacterDao.GetAllForUser(accountName)) { var charentry = new CharacterEntry(); charentry.Id = ch.Id; charentry.Name = ch.Name; charentry.Playfield = ch.Playfield; charentry.Level = StatDao.GetById(50000, ch.Id, 54).statvalue; // 54 = Level charentry.Breed = StatDao.GetById(50000, ch.Id, 4).statvalue; // 4 = Breed charentry.Gender = StatDao.GetById(50000, ch.Id, 59).statvalue; // 59 = Sex charentry.Profession = StatDao.GetById(50000, ch.Id, 60).statvalue; // 60 = Profession characters.Add(charentry); } return(characters); }
/// <summary> /// </summary> /// <param name="charid"> /// </param> public void DeleteChar(int charid) { var ms = new SqlWrapper(); try { /* delete char */ /* i assume there should be somewhere a flag, caus FC can reenable a deleted char.. */ string sqlQuery = "DELETE FROM `characters` WHERE ID = " + charid; ms.SqlDelete(sqlQuery); StatDao.DeleteStats(50000, charid); sqlQuery = "DELETE FROM `organizations` WHERE ID = " + charid; ms.SqlDelete(sqlQuery); sqlQuery = "DELETE FROM `inventory` WHERE ID = " + charid; ms.SqlDelete(sqlQuery); } catch (Exception e) { Console.WriteLine(this.Name + e.Message); } }
/// <summary> /// </summary> /// <returns> /// </returns> public bool ReadNames() { List <DBCharacter> chars = new List <DBCharacter>(CharacterDao.GetById((int)this.CharacterId)); if (chars.Count > 0) { this.characterName = chars[0].Name; this.characterFirstName = chars[0].FirstName; this.characterLastName = chars[0].LastName; DBStats clan = StatDao.GetById(50000, (int)this.CharacterId, 5); if (clan != null) { DBOrganization org = OrganizationDao.GetOrganizationData(clan.statvalue); this.orgName = org.Name; } } else { return(false); } return(true); }
public ActionResult Upload(IEnumerable <HttpPostedFileBase> files, Hotel hotel, int stravovani) { HotelDao hd = new HotelDao(); StatDao sd = new StatDao(); Stat s = sd.FindStat(hotel.destinace.stat.jmeno); if (s == null) { sd.Create(hotel.destinace.stat); } else { hotel.destinace.stat = s; } DestinaceDao dd = new DestinaceDao(); Destinace d = dd.FindDestinace(hotel.destinace.nazev); if (d == null) { dd.Create(hotel.destinace); } else { hotel.destinace = d; } ZpusobStravovani st = new ZpusobStravovaniDao().GetById(stravovani); hotel.stravovani = st; hd.Create(hotel); FotografieDao fd = new FotografieDao(); foreach (var file in files) { if (file != null && file.ContentLength > 0) { Fotografie f = new Fotografie(); Stream str = file.InputStream; Image image = Image.FromStream(file.InputStream); Image smallImage = ImageHelper.ScaleImage(Image.FromStream(str), 300, 200); Bitmap b = new Bitmap(image); Bitmap sb = new Bitmap(smallImage); Guid guid = Guid.NewGuid(); string imageName = guid.ToString() + ".png"; b.Save(Server.MapPath("~/Images/hotely/" + imageName), ImageFormat.Jpeg); sb.Save(Server.MapPath("~/Images/hotely/nahled/" + imageName), ImageFormat.Jpeg); smallImage.Dispose(); b.Dispose(); f.fotografie = "~/Images/hotely/" + imageName; f.nahled = "~/Images/hotely/nahled/" + imageName; f.hotel = hotel; f.popisek = hotel.nazev; fd.Create(f); } TempData["x"] = "Hotel úspěšně přidán"; } IList <Uzivatel> odberatele = new UzivatelDao().GetUsersWithNews(); foreach (Uzivatel u in odberatele) { MailClient.sendMail(u.login, "Nový hotel", "V naši nabídce se objevil nový hotel: " + hotel.nazev + " nacházející se v " + hotel.destinace.stat.jmeno + " - " + hotel.destinace.nazev + " více na www.eurotravel.cz"); } return(RedirectToAction("Index", "Zajezdy")); }
public ActionResult UpdateInDB(IEnumerable <HttpPostedFileBase> files, Hotel hotel, int stravovani) { HotelDao hd = new HotelDao(); StatDao sd = new StatDao(); Stat s = sd.FindStat(hotel.destinace.stat.jmeno); if (s == null) { sd.Create(hotel.destinace.stat); } else { hotel.destinace.stat = s; } DestinaceDao dd = new DestinaceDao(); Destinace d = dd.FindDestinace(hotel.destinace.nazev); if (d == null) { dd.Create(hotel.destinace); } else { hotel.destinace = d; } ZpusobStravovani st = new ZpusobStravovaniDao().GetById(stravovani); hotel.stravovani = st; FotografieDao fd = new FotografieDao(); hotel.fotky = fd.GetPhotosByHotelId(hotel.Id); hd.Update(hotel); foreach (var file in files) { if (file != null && file.ContentLength > 0) { Fotografie f = new Fotografie(); Stream str = file.InputStream; Image image = Image.FromStream(file.InputStream); Image smallImage = ImageHelper.ScaleImage(Image.FromStream(str), 300, 200); Bitmap b = new Bitmap(image); Bitmap sb = new Bitmap(smallImage); Guid guid = Guid.NewGuid(); string imageName = guid.ToString() + ".png"; b.Save(Server.MapPath("~/Images/hotely/" + imageName), ImageFormat.Jpeg); sb.Save(Server.MapPath("~/Images/hotely/nahled/" + imageName), ImageFormat.Jpeg); smallImage.Dispose(); b.Dispose(); f.fotografie = "~/Images/hotely/" + imageName; f.nahled = "~/Images/hotely/nahled/" + imageName; f.hotel = hotel; f.popisek = hotel.nazev; fd.Create(f); } } return(RedirectToAction("Index", "Zajezdy")); }
/// <summary> /// </summary> /// <param name="message"> /// </param> /// <param name="client"> /// </param> public static void Read(OrgClientMessage message, ZoneClient client) { switch ((byte)message.Command) { case 1: { // org create /* client wants to create organization * name of org is message.CommandArgs */ if (OrganizationDao.CreateOrganization( message.CommandArgs, DateTime.UtcNow, client.Character.Identity.Instance)) { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "You have created the guild: " + message.CommandArgs)); int orgID = OrganizationDao.GetOrganizationId(message.CommandArgs); // Make sure the order of these next two lines is not swapped -NV client.Character.Stats[StatIds.clanlevel].Value = 0; client.Character.Stats[StatIds.clan].Value = orgID; break; } else { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "This guild already <font color=#DC143C>exists</font>")); break; } } case 2: // org ranks // Displays Org Rank Structure. /* Select governingform from DB, Roll through display from GovForm */ if (client.Character.Stats[StatIds.clan].BaseValue == 0) { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "You're not in an organization!")); break; } int governingForm = OrganizationDao.GetGovernmentForm((int)client.Character.Stats[StatIds.clan].BaseValue); client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "Current Rank Structure: " + GetRankList(governingForm))); break; case 3: // org contract break; case 4: Console.WriteLine("Case 4 Started"); break; case 5: { IInstancedEntity tPlayer = null; if ((tPlayer = client.Playfield.FindByIdentity(message.Target)) != null) { string orgDescription = string.Empty, orgObjective = string.Empty, orgHistory = string.Empty, orgLeaderName = string.Empty; int orgGoverningForm = 0, orgLeaderID = 0; DBOrganization orgData = OrganizationDao.GetOrganizationData((int)tPlayer.Stats[StatIds.clan].BaseValue); if (orgData != null) { orgDescription = orgData.Description; orgObjective = orgData.Objective; orgHistory = orgData.History; orgGoverningForm = orgData.GovernmentForm; orgLeaderID = orgData.LeaderID; } orgLeaderName = CharacterDao.GetCharacterNameById(orgLeaderID); string textGovForm = null; if (orgGoverningForm == 0) { textGovForm = "Department"; } else if (orgGoverningForm == 1) { textGovForm = "Faction"; } else if (orgGoverningForm == 2) { textGovForm = "Republic"; } else if (orgGoverningForm == 3) { textGovForm = "Monarchy"; } else if (orgGoverningForm == 4) { textGovForm = "Anarchism"; } else if (orgGoverningForm == 5) { textGovForm = "Feudalism"; } else { textGovForm = "Department"; } string orgRank = GetRank(orgGoverningForm, tPlayer.Stats[StatIds.clanlevel].BaseValue); var infoMessage = new OrgInfoMessage { Identity = tPlayer.Identity, Unknown = 0x00, Unknown1 = 0x00000000, Unknown2 = 0x00000000, Organization = new Identity { Type = IdentityType.Organization, Instance = (int) tPlayer.Stats[StatIds.clan] .BaseValue }, // TODO: Possible NULL here OrganizationName = (tPlayer as Character).OrganizationName, Description = orgDescription, Objective = orgObjective, GoverningForm = textGovForm, LeaderName = orgLeaderName, Rank = orgRank, Unknown3 = new object[0] }; client.SendCompressed(infoMessage); } } break; case 6: // Add Org Bank to prez DBOrganization orgDisband = OrganizationDao.GetOrganizationData((int)client.Character.Stats[StatIds.clan].BaseValue); client.Character.Stats[StatIds.cash].BaseValue += (uint)orgDisband.Bank; // Clear stat 5 (Clan) from all chars where value=orgId StatDao.DisbandOrganization((int)client.Character.Stats[StatIds.clan].BaseValue); break; case 7: // org startvote <"text"> <duration(minutes)> <entries> // arguments (<text> <duration> and <entries>) are in CmdStr break; case 8: // org vote info break; case 9: // <entry> is CmdStr break; case 10: { // some arg in CmdByte. No idea what it is // create the target namespace t_promote Character toPromote = null; int targetOldRank = -1; int targetNewRank; toPromote = client.Playfield.FindByIdentity <Character>(message.Target); if (toPromote != null) { // First we check if target is in the same org as you if (toPromote.Stats[StatIds.clan].BaseValue != client.Character.Stats[StatIds.clan].BaseValue) { // not in same org client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "Target is not in your organization!")); break; } // Target is in same org, are you eligible to promote? Promoter Rank has to be TargetRank-2 or == 0 if ((client.Character.Stats[StatIds.clanlevel].Value == (toPromote.Stats[StatIds.clanlevel].Value - 2)) || (client.Character.Stats[StatIds.clanlevel].Value == 0)) { // Promoter is eligible. Start the process // First we get the details about the org itself DBOrganization orgPromote = OrganizationDao.GetOrganizationData((int)client.Character.Stats[StatIds.clan].BaseValue); int promoteGovForm = -1; string promotedToRank = string.Empty; if (orgPromote != null) { // Check if new rank == 0, if so, demote promoter if ((targetOldRank - 1) == 0) { /* This is a bit more complex. Here we need to promote new president first * then we go about demoting old president * finally we set the new leader in Sql * Reset OrgName to set changes */ OrganizationDao.SetNewPrez(orgPromote.ID, toPromote.Identity.Instance); toPromote.Stats[StatIds.clanlevel].Value = 0; client.Character.Stats[StatIds.clanlevel].Value = 1; client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "You've passed leadership of the organization to: " + (toPromote as Character).Name)); client.Character.Playfield.Publish( ChatText.CreateIM( toPromote, "You've been promoted to the rank of " + promotedToRank + " by " + client.Character.Name)); } else { // Just Promote targetOldRank = toPromote.Stats[StatIds.clanlevel].Value; targetNewRank = targetOldRank - 1; promotedToRank = GetRank(promoteGovForm, (uint)targetNewRank); toPromote.Stats[StatIds.clanlevel].Value = targetNewRank; client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "You've promoted " + (toPromote as Character).Name + " to " + promotedToRank)); client.Character.Playfield.Publish( ChatText.CreateIM( toPromote, "You've been promoted to the rank of " + promotedToRank + " by " + client.Character.Name)); } } else { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "Organization does not exist?")); } } else { // Promoter not eligible to promote client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "Your Rank is not high enough to promote " + (toPromote as Character).Name)); } } break; } case 11: // demote target player // create the target namespace t_demote Character toDemote = null; int targetCurRank = -1; int targetNewerRank = -1; toDemote = client.Character.Playfield.FindByIdentity <Character>(message.Target); if (toDemote != null) { // First we check if target is in the same org as you if (toDemote.Stats[StatIds.clan].BaseValue != client.Character.Stats[StatIds.clan].BaseValue) { // not in same org client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "Target is not in your organization!")); break; } // Target is in same org, are you eligible to demote? Promoter Rank has to be TargetRank-2 or == 0 if ((client.Character.Stats[StatIds.clanlevel].Value <= (toDemote.Stats[StatIds.clanlevel].Value - 2)) || (client.Character.Stats[StatIds.clanlevel].Value == 0)) { // Promoter is eligible. Start the process // First we get the details about the org itself DBOrganization orgDemote = OrganizationDao.GetOrganizationData((int)client.Character.Stats[StatIds.clan].BaseValue); int demoteGovForm = -1; string demotedToRank = string.Empty; if (orgDemote == null) { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "Organization does not exist?")); break; } // Check whether new rank would be lower than lowest for current govform if ((targetCurRank + 1) > GetLowestRank(orgDemote.GovernmentForm)) { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "You can't demote character any lower!")); break; } targetCurRank = toDemote.Stats[StatIds.clanlevel].Value; targetNewerRank = targetCurRank + 1; demotedToRank = GetRank(demoteGovForm, (uint)targetNewerRank); toDemote.Stats[StatIds.clanlevel].Value = targetNewerRank; client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "You've demoted " + (toDemote as Character).Name + " to " + demotedToRank)); client.Character.Playfield.Publish( ChatText.CreateIM( toDemote, "You've been demoted to the rank of " + demotedToRank + " by " + client.Character.Name)); break; } else { // Promoter not eligible to promote client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "Your Rank is not high enough to demote " + (toDemote as Character).Name)); break; } } break; case 12: Console.WriteLine("Case 12 Started"); break; case 13: // kick <name> from org // <name> is CmdStr // create the t_player Client namespace, using CmdStr to find character id, in replacement of target.Instance uint kickedFrom = client.Character.Stats[StatIds.clan].BaseValue; DBCharacter kickChar = CharacterDao.GetByCharName(message.CommandArgs); if (kickChar == null) { client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "No character with name " + message.CommandArgs + " exists.")); break; } int kickeeId = kickChar.Id; Character targetPlayer = client.Playfield.FindByIdentity <Character>( new Identity() { Type = IdentityType.CanbeAffected, Instance = kickeeId }); if (targetPlayer != null) { // Check if CmdStr is actually part of the org uint kickeeOrgId = targetPlayer.Stats[StatIds.clan].BaseValue; if (kickeeOrgId != client.Character.Stats[StatIds.clan].BaseValue) { // Not part of Org. break out. client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, message.CommandArgs + "is not a member of your organization!")); break; } // They are part of the org, so begin the processing... // First we check if the player is online... int onlineStatus = OnlineDao.IsOnline(client.Character.Identity.Instance).Online; if (onlineStatus == 0) { // Player isn't online. Org Kicks are processed in a different method // TODO: Offline Org KICK // StatDao.SetStat(targetPlayer.Identity, ) break; } // Player is online. Start the kick. string kickedFromName = targetPlayer.OrganizationName; targetPlayer[StatIds.clanlevel].Value = 0; targetPlayer[StatIds.clan].Value = 0; client.Character.Playfield.Publish( ChatText.CreateIM( targetPlayer, "You've been kicked from the organization " + kickedFromName)); } // TODO: Offline Org KICK break; case 14: { Character tPlayer = client.Playfield.FindByIdentity <Character>(message.Target); if (tPlayer != null) { var inviteMessage = new OrgInviteMessage { Identity = tPlayer.Identity, Unknown = 0x00, Unknown1 = 0x00000000, Unknown2 = 0x00000000, Organization = new Identity { Type = IdentityType.Organization, Instance = (int) client.Character.Stats[ (int)StatIds.clan].Value }, OrganizationName = client.Character.OrganizationName, Unknown3 = 0x00000000 }; tPlayer.Client.SendCompressed(inviteMessage); } } break; case 15: { // target.Instance holds the OrgID of the Org wishing to be joined. int orgIdtoJoin = message.Target.Instance; int gov_form = OrganizationDao.GetGovernmentForm(orgIdtoJoin); // Make sure the order of these next two lines is not swapped -NV client.Character.Stats[StatIds.clanlevel].Value = GetLowestRank(gov_form); client.Character.Stats[StatIds.clan].Value = orgIdtoJoin; } break; #region /org leave case 16: // org leave // TODO: Disband org if it was leader that left org. -Suiv- // I don't think a Disband happens if leader leaves. I don't think leader -can- leave without passing lead to another // Something worth testing on Testlive perhaps ~Chaz // Just because something happens on TL, doesnt mean its a good idea. Really tbh id prefer it if you had to explicitly type /org disband to disband rather than /org leave doing it... -NV // Agreeing with NV. Org Leader can't leave without passing lead on. org disband requires /org disband to specifically be issued, with a Yes/No box. int govern_form = OrganizationDao.GetGovernmentForm(client.Character.Stats[StatIds.clan].Value); if ((client.Character.Stats[StatIds.clanlevel].Value == 0) && (govern_form != 4)) { client.Character.Playfield.Publish( ChatText.CreateIM( client.Character, "Organization Leader cannot leave organization without Disbanding or Passing Leadership!")); } else { int oldOrgId = client.Character.Stats[StatIds.clan].Value; string orgName = OrganizationDao.GetOrganizationData(oldOrgId).Name; client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "You left the organization " + orgName + ".")); } break; #endregion #region /org tax | /org tax <tax> case 17: // gets or sets org tax // <tax> is CmdStr // if no <tax>, then just send chat text with current tax info if (message.CommandArgs == null) { client.Character.Playfield.Publish( ChatText.CreateIM(client.Character, "The current organization tax rate is: ")); break; } else { break; } #endregion #region /org bank case 18: { /* * // org bank * dt = ms.ReadDatatable("SELECT * FROM organizations WHERE ID=" + client.Character.OrgId); * if (dt.Rows.Count > 0) * { * var bank_credits = (UInt64)dt.Rows[0]["Bank"]; * client.SendChatText("Your bank has " + bank_credits + " credits in its account"); * } */ } break; #endregion #region /org bank add <cash> case 19: { /* * if (client.Character.OrgId == 0) * { * client.SendChatText("You are not in an organisation."); * * break; * } * * // org bank add <cash> * var minuscredits_fromplayer = Convert.ToInt32(message.CommandArgs); * var characters_credits = client.Character.Stats.Cash.Value; * * if (characters_credits < minuscredits_fromplayer) * { * client.SendChatText("You do not have enough Credits"); * } * else * { * var total_Creditsspent = characters_credits - minuscredits_fromplayer; * client.Character.Stats.Cash.Set(total_Creditsspent); * * ms.SqlUpdate( * "UPDATE `organizations` SET `Bank` = `Bank` + " + minuscredits_fromplayer + " WHERE `ID` = " + client.Character.OrgId); + client.SendChatText("You have donated " + minuscredits_fromplayer + " to the organization"); + }*/ } break; #endregion #region /org bank remove <cash> case 20: /* * // org bank remove <cash> * // <cash> is CmdStr * // player wants to take credits from org bank * // only leader can do that * if ((client.Character.Stats.ClanLevel.Value != 0) || (client.Character.OrgId == 0)) * { * client.SendChatText("You're not the leader of an Organization"); * break; * } * * var removeCredits = Convert.ToInt32(message.CommandArgs); * long orgBank = 0; * dt = ms.ReadDatatable("SELECT Bank FROM organizations WHERE ID = " + client.Character.OrgId); * if (dt.Rows.Count > 0) * { * orgBank = (Int64)dt.Rows[0][0]; * } * * if (removeCredits > orgBank) * { * client.SendChatText("Not enough credits in Organization Bank!"); * break; * } * else * { * var neworgbank = orgBank - removeCredits; * var existingcreds = 0; * existingcreds = client.Character.Stats.Cash.Value; * var newcreds = existingcreds + removeCredits; * ms.SqlUpdate( * "UPDATE organizations SET Bank = " + neworgbank + " WHERE ID = " + client.Character.OrgId); * client.Character.Stats.Cash.Set(newcreds); * client.SendChatText("You've removed " + removeCredits + " credits from the organization bank"); * } */ break; #endregion #region /org bank paymembers <cash> case 21: // <cash> is CmdStr // give <cash> credits to every org member // credits are taken from org bank // only leader can do it break; #endregion #region /org debt case 22: // send player text about how big is his/her tax debt to org break; #endregion #region /org history <text> case 23: { /* * if (client.Character.Stats.ClanLevel.Value == 0) * { * // org history <history text> * ms.SqlUpdate( * "UPDATE organizations SET history = '" + message.CommandArgs + "' WHERE ID = '" + client.Character.OrgId + "'"); + client.SendChatText("History Updated"); + } + else + { + client.SendChatText("You must be the Organization Leader to perform this command!"); + }*/ } break; #endregion #region /org objective <text> case 24: { /* * if (client.Character.Stats.ClanLevel.Value == 0) * { * // org objective <objective text> * ms.SqlUpdate( * "UPDATE organizations SET objective = '" + message.CommandArgs + "' WHERE ID = '" + client.Character.OrgId + "'"); + client.SendChatText("Objective Updated"); + } + else + { + client.SendChatText("You must be the Organization Leader to perform this command!"); + }*/ } break; #endregion #region /org description <text> case 25: { /* * if (client.Character.Stats.ClanLevel.Value == 0) * { * // org description <description text> * ms.SqlUpdate( * "UPDATE organizations SET description = '" + message.CommandArgs + "' WHERE ID = '" + client.Character.OrgId + "'"); + client.SendChatText("Description Updated"); + } + else + { + client.SendChatText("You must be the Organization Leader to perform this command!"); + }*/ } break; #endregion #region /org name <text> case 26: { // org name <name> /* Renames Organization * Checks for Existing Orgs with similar name to stop crash * Chaz */ /* * if (client.Character.Stats.ClanLevel.Value == 0) * { * var SqlQuery26 = "SELECT * FROM organizations WHERE Name LIKE '" + message.CommandArgs + "' LIMIT 1"; + string CurrentOrg = null; + dt = ms.ReadDatatable(SqlQuery26); + if (dt.Rows.Count > 0) + { + CurrentOrg = (string)dt.Rows[0]["Name"]; + } + + if (CurrentOrg == null) + { + var SqlQuery27 = "UPDATE organizations SET Name = '" + message.CommandArgs + "' WHERE ID = '" + client.Character.OrgId + "'"; + ms.SqlUpdate(SqlQuery27); + client.SendChatText("Organization Name Changed to: " + message.CommandArgs); + + // Forces reloading of org name and the like + // XXXX TODO: Make it reload for all other members in the org + client.Character.OrgId = client.Character.OrgId; + break; + } + else + { + client.SendChatText("An Organization already exists with that name"); + break; + } + } + else + { + client.SendChatText("You must be the organization leader to perform this command!"); + }*/ break; } #endregion #region /org governingform <text> case 27: { // org governingform <form> /* Current Governing Forms: * Department, Faction, Republic, Monarchy, Anarchism, Feudalism */ /* * // Check on whether your President or not * if (client.Character.Stats.ClanLevel.Value == 0) * { * // first we drop the case on the input, just to be sure. * var GovFormNum = -1; * if (message.CommandArgs == null) * { * // list gov forms * client.SendChatText( * "List of Accepted Governing Forms is: department, faction, republic, monarchy, anarchism, feudalism"); * break; * } * * // was correct input passed? * switch (message.CommandArgs.ToLower()) * { * case "department": * GovFormNum = 0; * break; * case "faction": * GovFormNum = 1; * break; * case "republic": * GovFormNum = 2; * break; * case "monarchy": * GovFormNum = 3; * break; * case "anarchism": * GovFormNum = 4; * break; * case "feudalism": * GovFormNum = 5; * break; * default: * client.SendChatText(message.CommandArgs + " Is an invalid Governing Form!"); * client.SendChatText( * "Accepted Governing Forms are: department, faction, republic, monarchy, anarchism, feudalism"); * break; * } * * if (GovFormNum != -1) * { * ms.SqlUpdate( * "UPDATE organizations SET GovernmentForm = '" + GovFormNum + "' WHERE ID = '" + client.Character.OrgId + "'"); + foreach (var currentCharId in OrgMisc.GetOrgMembers(client.Character.OrgId, true)) + { + client.Character.Stats.ClanLevel.Set(GetLowestRank(GovFormNum)); + } + + client.SendChatText("Governing Form is now: " + message.CommandArgs); + break; + } + } + else + { + // Haha! You're not the org leader! + client.SendChatText("You must be the Org Leader to perform this command"); + break; + }*/ } break; #endregion #region /org stopvote <text> case 28: // <text> is CmdStr break; #endregion #region unknown command default: break; #endregion } }
/// <summary> /// </summary> /// <returns> /// </returns> private int CreateNewChar() { int charID = 0; switch (this.Breed) { case 0x1: /* solitus */ this.Abis = new[] { 6, 6, 6, 6, 6, 6 }; break; case 0x2: /* opifex */ this.Abis = new[] { 3, 3, 10, 6, 6, 15 }; break; case 0x3: /* nanomage */ this.Abis = new[] { 3, 10, 6, 15, 3, 3 }; break; case 0x4: /* atrox */ this.Abis = new[] { 15, 3, 3, 3, 10, 6 }; break; default: Console.WriteLine("unknown breed: ", this.Breed); break; } /* * Note, all default values are not specified here as defaults are handled * in the CharacterStats Class for us automatically. Also minimises SQL * usage for default stats that are never changed from their default value * ~NV */ // Delete orphaned stats for charID StatDao.DeleteStats(50000, charID); try { CharacterDao.AddCharacter( new DBCharacter { FirstName = string.Empty, LastName = string.Empty, Name = this.Name, Username = this.AccountName, }); } catch (Exception e) { LogUtil.ErrorException(e); return(0); } try { /* select new char id */ charID = CharacterDao.GetByCharName(this.Name).Id; } catch (Exception e) { LogUtil.ErrorException(e); return(0); } List <DBStats> stats = new List <DBStats>(); // Transmit GM level into stats table stats.Add( new DBStats { type = 50000, instance = charID, statid = 215, statvalue = LoginDataDao.GetByUsername(this.AccountName).GM }); // Flags stats.Add(new DBStats { type = 50000, instance = charID, statid = 0, statvalue = 20 }); // Level stats.Add(new DBStats { type = 50000, instance = charID, statid = 54, statvalue = 1 }); // SEXXX stats.Add(new DBStats { type = 50000, instance = charID, statid = 59, statvalue = this.Gender }); // Headmesh stats.Add(new DBStats { type = 50000, instance = charID, statid = 64, statvalue = this.HeadMesh }); // MonsterScale stats.Add(new DBStats { type = 50000, instance = charID, statid = 360, statvalue = this.MonsterScale }); // Visual Sex (even better ^^) stats.Add(new DBStats { type = 50000, instance = charID, statid = 369, statvalue = this.Gender }); // Breed stats.Add(new DBStats { type = 50000, instance = charID, statid = 4, statvalue = this.Breed }); // Visual Breed stats.Add(new DBStats { type = 50000, instance = charID, statid = 367, statvalue = this.Breed }); // Profession / 60 stats.Add(new DBStats { type = 50000, instance = charID, statid = 60, statvalue = this.Profession }); // VisualProfession / 368 stats.Add(new DBStats { type = 50000, instance = charID, statid = 368, statvalue = this.Profession }); // Fatness / 47 stats.Add(new DBStats { type = 50000, instance = charID, statid = 47, statvalue = this.Fatness }); // Strength / 16 stats.Add(new DBStats { type = 50000, instance = charID, statid = 16, statvalue = this.Abis[0] }); // Psychic / 21 stats.Add(new DBStats { type = 50000, instance = charID, statid = 21, statvalue = this.Abis[1] }); // Sense / 20 stats.Add(new DBStats { type = 50000, instance = charID, statid = 20, statvalue = this.Abis[2] }); // Intelligence / 19 stats.Add(new DBStats { type = 50000, instance = charID, statid = 19, statvalue = this.Abis[3] }); // Stamina / 18 stats.Add(new DBStats { type = 50000, instance = charID, statid = 18, statvalue = this.Abis[4] }); // Agility / 17 stats.Add(new DBStats { type = 50000, instance = charID, statid = 17, statvalue = this.Abis[5] }); // Set HP and NP auf 1 stats.Add(new DBStats { type = 50000, instance = charID, statid = 1, statvalue = 1 }); stats.Add(new DBStats { type = 50000, instance = charID, statid = 214, statvalue = 1 }); stats.Add( new DBStats { type = 50000, instance = charID, statid = 389, statvalue = LoginDataDao.GetByUsername(this.AccountName).Expansions }); StatDao.BulkReplace(stats); return(charID); }