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(); }
public SkillZaapSave(int id, InteractiveSkillRecord record, InteractiveObject interactiveObject) : base(id, record, interactiveObject) { }
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) { }
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); }