public virtual void OnPlayerTalks(MabiCreature creature, string message) { if (creature.Region == NPC.Region && message.Contains("start")) { Start(); start = DateTime.Now; state = 0; } }
public static bool CreateGuild(string name, GuildType type, MabiCreature leader, IEnumerable<MabiCreature> otherMembers) { if (WorldDb.Instance.GetGuildForChar(leader.Id) != null) { Send.MsgBox(leader.Client, leader, Localization.Get("guild.already_you")); // You are already a member of a guild return false; } foreach (var member in otherMembers) { if (WorldDb.Instance.GetGuildForChar(member.Id) != null) { Send.MsgBox(leader.Client, leader, Localization.Get("guild.already"), member.Name); // {0} is already a member of a guild return false; } } if (!WorldDb.Instance.GuildNameOkay(name)) { Send.MsgBox(leader.Client, leader, Localization.Get("guild.name_used")); // That name is not valid or is already in use. return false; } // TODO: checks in here... var pos = leader.GetPosition(); var guild = new MabiGuild(); guild.IntroMessage = string.Format(Localization.Get("guild.intro"), name); // Guild stone for the {0} guild guild.LeavingMessage = string.Format(Localization.Get("guild.leaving"), name); // You have left the {0} guild guild.RejectionMessage = string.Format(Localization.Get("guild.rejection"), name); // You have been denied admission to the {0} guild. guild.WelcomeMessage = string.Format(Localization.Get("guild.welcome"), name); // Welcome to the {0} guild! guild.Name = name; guild.Region = leader.Region; guild.X = pos.X; guild.Y = pos.Y; guild.Rotation = leader.Direction; guild.StoneClass = GuildStoneType.Normal; guild.Type = type; var guildId = guild.Save(); leader.GuildMember = new MabiGuildMember(leader.Id, guildId, GuildMemberRank.Leader); leader.GuildMember.Save(); foreach (var member in otherMembers) { member.GuildMember = new MabiGuildMember(member.Id, guildId, GuildMemberRank.SeniorMember); member.GuildMember.Save(); } // Reload guild to make sure it gets initialized and gets an id guild = WorldDb.Instance.GetGuild(guildId); leader.Guild = guild; WorldManager.Instance.Broadcast(PacketCreator.GuildMembershipChanged(guild, leader, GuildMemberRank.Leader), SendTargets.Range, leader); foreach (var member in otherMembers) { member.Guild = guild; WorldManager.Instance.Broadcast(PacketCreator.GuildMembershipChanged(guild, member, GuildMemberRank.SeniorMember), SendTargets.Range, member); } AddGuildStone(guild); Send.ChannelNotice(NoticeType.Top, 20000, Localization.Get("guild.created"), name, leader.Name); // {0} Guild has been created. Guild leader: {1} return true; }
private static void GuildstoneTouch(WorldClient client, MabiCreature creature, MabiProp p) { var match = Regex.Match(p.ExtraData, "guildid=\"([0-9]+)\""); if (!match.Success) return; var guildId = ulong.Parse(match.Groups[1].Value); var guild = WorldDb.Instance.GetGuild(guildId); if (guild != null) { if (creature.Guild != null) { if (guild.Id == creature.Guild.Id && creature.GuildMember.MemberRank < GuildMemberRank.Applied) { client.Send(new MabiPacket(Op.OpenGuildPanel, creature.Id).PutLong(guild.Id).PutBytes(0, 0, 0)); } else { client.Send( new MabiPacket(Op.GuildInfo, creature.Id) .PutLong(guild.Id) .PutString(guild.Name) .PutString(guild.LeaderName) .PutInt(CountAcceptedMembers(guild.Id)) .PutString(guild.IntroMessage) ); } } else { client.Send( new MabiPacket(Op.GuildInfoNoGuild, creature.Id) .PutLong(guild.Id) .PutStrings(guild.Name) .PutStrings(guild.LeaderName) .PutInt(CountAcceptedMembers(guild.Id)) .PutString(guild.IntroMessage) ); } } }