Esempio n. 1
0
        public static void SynchronizeElements()
        {
            foreach (var skill in SkillRecord.Skills)
            {
                if (skill.GfxLookId != -1)
                {
                    List <InteractiveElementRecord> elements = InteractiveElementRecord.GetElementByGfxLookId(skill.GfxLookId);

                    foreach (var element in elements)
                    {
                        if (element.ElementType == -1)
                        {
                            element.ElementType = skill.InteractiveId;


                            if (!InteractiveSkillRecord.OneExist(element.ElementId))
                            {
                                int uid = InteractiveSkillRecord.InteractiveSkills.DynamicPop(w => w.UID);
                                InteractiveSkillRecord record = new InteractiveSkillRecord(uid, "Collect", string.Empty, string.Empty, element.ElementId, skill.Id);
                                record.AddInstantElement();
                            }

                            element.UpdateInstantElement();
                            logger.Gray("Element fixed: " + element.ElementId + " with skill " + skill.Name);
                        }
                    }
                }
            }
        }
        public static void Build(WorldClient client, string[] args)
        {
            if (Mine == null)
            {
                client.Character.ReplyError("Unable to create mine, none has been initialized.");
                return;
            }

            if (!Mine.Maps.Any())
            {
                client.Character.ReplyError("You have not registered any map. See cmds <i>.mine addmap</i> and <i>.mine ps</i>.");
                return;
            }

            int        idx         = 0;
            List <int> oreSequence = BuildRandomInteractivesSequence();

            if (!oreSequence.Any())
            {
                client.Character.ReplyError("You have not registered any ore. See cmd <i>.mine addore</i>.");
                return;
            }

            int nextSkillUid = InteractiveSkillRecord.InteractiveSkills.DynamicPop(x => x.UID);

            foreach (MineMap mineMap in Mine.Maps)
            {
                foreach (int elementId in mineMap.ElementIds)
                {
                    int elementType = oreSequence[idx];

                    // InteractiveElements
                    InteractiveElementRecord interactiveElementRecord = InteractiveElementRecord.InteractiveElements.Find(rec => rec.MapId == mineMap.MapId && rec.ElementId == elementId);
                    interactiveElementRecord.ElementType = elementType;
                    // interactiveElementRecord.UpdateInstantElement();

                    // InteractiveSkills
                    InteractiveSkillRecord interactiveSkillRecord = new InteractiveSkillRecord(nextSkillUid, "Collect", "", "", elementId, (int)JobsTypeEnum.Mineur);
                    InteractiveSkillRecord.InteractiveSkills.Add(interactiveSkillRecord);
                    // interactiveSkillRecord.AddInstantElement();

                    idx++;
                    nextSkillUid++;
                }

                MapRecord mapRecord = MapRecord.GetMap(mineMap.MapId);
                mapRecord.Instance.Reload();

                client.Character.Reply($"Processed and reloaded map {mineMap.MapId}.");
            }

            // Mine = null;
            client.Character.Reply("Successfully built mine.");
        }
        public static void Zaap(string value, WorldClient client)
        {
            var element = InteractiveElementRecord.GetElement(int.Parse(value), client.Character.Map.Id);

            element.ElementType = 16;
            InteractiveSkillRecord skill = new InteractiveSkillRecord(InteractiveSkillRecord.InteractiveSkills.DynamicPop(x => x.UID), "Zaap", "Global", "", element.UId, 114);

            element.UpdateInstantElement();
            skill.AddInstantElement();
            client.Character.Map.Instance.Reload();
        }
Esempio n. 4
0
 public SkillZaapSave(int id, InteractiveSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject)
 {
 }
Esempio n. 5
0
 protected Skill(int id, InteractiveSkillRecord record, InteractiveObject interactiveObject)
 {
     this.Id                = id;
     this.Record            = record;
     this.InteractiveObject = interactiveObject;
 }
        private static void AddAllInteractivesOfGfx(WorldClient client, string[] args)
        {
            if (args.Length < 4)
            {
                if (args.Length != 1)
                {
                    client.Character.ReplyError("Invalid command.");
                }

                client.Character.Reply("Add an all interactive elements of specific GfxLookId.");
                client.Character.Reply("» .elements addall|aa $GfxLookId $ElementType $SkillId");
                client.Character.Reply("» Example: .elements addall 685 108 154  ");
                client.Character.Reply(" - <b>$GfxLookId</b> ⇒ The element GxfLookId (see <i>.elements show</i>)");
                client.Character.Reply(" - <b>$ElementType</b> ⇒ ElementType (id in interactives table) of the resource.");
                client.Character.Reply(" - <b>$SkillId</b> ⇒ The ID of the skill.");

                return;
            }

            int    gfxLookId   = int.Parse(args[1]);
            int    elementType = int.Parse(args[2]);
            ushort skillId     = ushort.Parse(args[3]);

            const string actionType = "Collect";

            int nextUid = InteractiveSkillRecord.InteractiveSkills.DynamicPop(x => x.UID);

            client.Character.Reply($"Retrieving element records with GfxLookId={gfxLookId}...");
            List <InteractiveElementRecord> elementRecords = InteractiveElementRecord.GetElementByGfxLookId(gfxLookId);

            int           counter        = 1;
            int           total          = elementRecords.Count;
            HashSet <int> impactedMapIds = new HashSet <int>();

            client.Character.Reply($"Updating {elementRecords.Count} element records...");
            foreach (InteractiveElementRecord record in elementRecords)
            {
                // Update InteractiveElement
                if (record.ElementType != elementType)
                {
                    record.ElementType = elementType;
                    record.UpdateInstantElement();
                }

                client.Character.Reply($"Updated {counter}/{total} InteractiveElement.");

                // Insert InteractiveSkill if not exists
                if (!InteractiveSkillRecord.InteractiveSkills.Exists(isk => isk.ElementId == record.ElementId && isk.SkillId == skillId && isk.ActionType.Equals(actionType)))
                {
                    InteractiveSkillRecord newRecord = new InteractiveSkillRecord(nextUid, actionType, "", "", record.ElementId, skillId);
                    // InteractiveSkillRecord.InteractiveSkills.Add(newRecord);
                    newRecord.AddInstantElement();
                    nextUid++;

                    client.Character.Reply($"Created {counter}/{total} InteractiveSKill.");
                }
                else
                {
                    client.Character.Reply($"InteractiveSKill {counter}/{total} Already exists.");
                }

                impactedMapIds.Add(record.MapId);
                counter++;
            }

            client.Character.Reply("Database updated.");

            counter = 1;
            total   = impactedMapIds.Count;
            client.Character.Reply($"Reloading {impactedMapIds.Count} maps...");
            foreach (int mapId in impactedMapIds)
            {
                MapRecord.GetMap(mapId).Instance.Reload();
                client.Character.Reply($"Map {counter}/{total} reloaded: {mapId}");
                counter++;
            }

            client.Character.Reply("All maps have been reloaded.");

            client.Character.Reply("Done!");
        }
 public SkillTeleport(int id, InteractiveSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject)
 {
 }
Esempio n. 8
0
 public MapInteractiveElementSkill(MapInteractiveElement element, InteractiveSkillRecord record)
 {
     this.Record   = record;
     this.Element  = element;
     this.Template = SkillRecord.GetSkill(record.SkillId);
 }
        public InteractiveSpawn Map(InteractiveSpawn spawn, InteractiveSpawnSkills binding, InteractiveSkillRecord skill)
        {
            InteractiveSpawn result;

            if (spawn == null)
            {
                result = this.m_current;
            }
            else
            {
                if (this.m_current != null && this.m_current.Id == spawn.Id)
                {
                    if (binding.InteractiveSpawnId == this.m_current.Id && binding.SkillId == skill.Id)
                    {
                        this.m_current.Skills.Add(skill);
                    }
                    result = null;
                }
                else
                {
                    InteractiveSpawn current = this.m_current;
                    this.m_current = spawn;
                    if (binding.InteractiveSpawnId == this.m_current.Id && binding.SkillId == skill.Id)
                    {
                        this.m_current.Skills.Add(skill);
                    }
                    result = current;
                }
            }
            return(result);
        }
        public InteractiveTemplate Map(InteractiveTemplate template, InteractiveTemplateSkills binding, InteractiveSkillRecord skill)
        {
            InteractiveTemplate result;

            if (template == null)
            {
                result = this.m_current;
            }
            else
            {
                if (this.m_current != null && this.m_current.Id == template.Id)
                {
                    if (binding.InteractiveTemplateId == this.m_current.Id && binding.SkillId == skill.Id)
                    {
                        this.m_current.Skills.Add(skill);
                    }
                    result = null;
                }
                else
                {
                    InteractiveTemplate current = this.m_current;
                    this.m_current = template;
                    if (binding.InteractiveTemplateId == this.m_current.Id && binding.SkillId == skill.Id)
                    {
                        this.m_current.Skills.Add(skill);
                    }
                    result = current;
                }
            }
            return(result);
        }