// DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup`=12 AND `SourceEntry`=456; // INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES public static string GenerateConditionsSQL(SAIType source_type, int entryorguid, SmartEventsCollection events) { List<string> lines = new List<string>(); foreach (SmartEvent e in events) { int else_group = 0; foreach(SmartCondition condition in e.conditions) { if (condition.ID == CONDITION_LOGICAL_OR._ID) { else_group++; } else { lines.Add(GenerateSingleCondition(condition, source_type, entryorguid, e.actualID, else_group)); } } } string header = "DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`="+entryorguid+" AND SourceId = "+(int)source_type+";\n"; header += "INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES\n"; if (lines.Count > 0) return header+String.Join(",\n", lines) + ";"; return null; }
public static string GenerateSAISQL(SAIType source_type, int entryorguid, SmartEventsCollection events) { int event_id = 0; List <string> lines = new List <string>(); foreach (SmartEvent e in events) { if (e.GetActions().Count == 0) { continue; } e.actualID = event_id; lines.Add(GenerateSingleSAI(source_type, entryorguid, event_id, e, e.GetAction(0), (e.GetActions().Count == 1 ? 0 : event_id + 1))); event_id++; for (int index = 1; index < e.GetActions().Count; ++index) { lines.Add(GenerateSingleSAI(source_type, entryorguid, event_id, Events.EVENT_LINK.GetInstance(), e.GetAction(index), (e.GetActions().Count - 1 == index ? 0 : event_id + 1))); event_id++; } } return(GenerateHeader(source_type, entryorguid) + String.Join(",\n", lines) + ";"); }
public static string GenerateSAICpp(SAIType source_type, int entryorguid, SmartEventsCollection events) { Dictionary <EventMethod, List <SmartEvent> > methods = new Dictionary <EventMethod, List <SmartEvent> >(); StringBuilder output = new StringBuilder(); foreach (SmartEvent ev in events) { SmartGenericJSONData generic_data = SmartFactory.GetInstance().GetGenericData(SmartType.SMART_EVENT, ev.ID); if (!methods.ContainsKey(generic_data.event_method)) { methods.Add(generic_data.event_method, new List <SmartEvent>()); } methods[generic_data.event_method].Add(ev); } foreach (EventMethod event_method in methods.Keys) { cppMethodAttribute method_data = Extensions.GetAttribute <cppMethodAttribute>(event_method); InvokerAttribute invoker_data = Extensions.GetAttribute <InvokerAttribute>(event_method); output.AppendLine(method_data.method); output.AppendLine("{"); string invoker = "me"; if (invoker_data != null) { invoker = invoker_data.invoker; } int id = 0; foreach (SmartEvent ev in methods[event_method]) { SmartGenericJSONData generic_data = SmartFactory.GetInstance().GetGenericData(SmartType.SMART_EVENT, ev.ID); id++; string actions = GenerateActionsCpp(ev.actions, invoker); object data = new { pram1value = ev.parameters[0].GetValue().ToString(), pram2value = ev.parameters[1].GetValue().ToString(), pram3value = ev.parameters[2].GetValue().ToString(), pram4value = ev.parameters[3].GetValue().ToString(), content = actions, content_in_brackets = "{\n" + actions + "\n}", no_id = id.ToString(), cbra = "}", obra = "{", }; output.AppendLine(SmartFormat.Smart.Format(generic_data.GetCpp(), data)); } output.AppendLine("}\n"); } string npc = DB.GetInstance().GetString(DB.GetInstance().StorageForType(SAIType.Creature, entryorguid < 0), entryorguid); return(Indent(GenerateScriptedAIHeader(npc, output.ToString()))); }
public static string GenerateSAICpp(SAIType source_type, int entryorguid, SmartEventsCollection events) { Dictionary<EventMethod, List<SmartEvent>> methods = new Dictionary<EventMethod, List<SmartEvent>>(); StringBuilder output = new StringBuilder(); foreach (SmartEvent ev in events) { SmartGenericJSONData generic_data = SmartFactory.GetInstance().GetGenericData(SmartType.SMART_EVENT, ev.ID); if (!methods.ContainsKey(generic_data.event_method)) methods.Add(generic_data.event_method, new List<SmartEvent>()); methods[generic_data.event_method].Add(ev); } foreach (EventMethod event_method in methods.Keys) { cppMethodAttribute method_data = Extensions.GetAttribute<cppMethodAttribute>(event_method); InvokerAttribute invoker_data = Extensions.GetAttribute<InvokerAttribute>(event_method); output.AppendLine(method_data.method); output.AppendLine("{"); string invoker = "me"; if (invoker_data != null) invoker = invoker_data.invoker; int id = 0; foreach (SmartEvent ev in methods[event_method]) { SmartGenericJSONData generic_data = SmartFactory.GetInstance().GetGenericData(SmartType.SMART_EVENT, ev.ID); id++; string actions = GenerateActionsCpp(ev.actions, invoker); object data = new { pram1value = ev.parameters[0].GetValue().ToString(), pram2value = ev.parameters[1].GetValue().ToString(), pram3value = ev.parameters[2].GetValue().ToString(), pram4value = ev.parameters[3].GetValue().ToString(), content = actions, content_in_brackets = "{\n" + actions + "\n}", no_id = id.ToString(), cbra = "}", obra = "{", }; output.AppendLine(SmartFormat.Smart.Format(generic_data.GetCpp(), data)); } output.AppendLine("}\n"); } string npc =DB.GetInstance().GetString(DB.GetInstance().StorageForType(SAIType.Creature, entryorguid < 0), entryorguid); return Indent(GenerateScriptedAIHeader(npc, output.ToString())); }
// DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup`=12 AND `SourceEntry`=456; // INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES public static string GenerateConditionsSQL(SAIType source_type, int entryorguid, SmartEventsCollection events) { List<string> lines = new List<string>(); foreach (SmartEvent e in events) { int else_group = 0; foreach(SmartCondition condition in e.conditions) { if (condition.ID == CONDITION_LOGICAL_OR._ID) { else_group++; } else { lines.Add(GenerateSingleCondition(condition, source_type, entryorguid, e.actualID, else_group)); } } } if (lines.Count > 0) return String.Join(",\n", lines) + ";"; return null; }
public static string GenerateSAISQL(SAIType source_type, int entryorguid, SmartEventsCollection events) { int event_id = 0; List<string> lines = new List<string>(); foreach (SmartEvent e in events) { if (e.GetActions().Count == 0) continue; e.actualID = event_id; lines.Add(GenerateSingleSAI(source_type, entryorguid, event_id, e, e.GetAction(0), (e.GetActions().Count == 1 ? 0 : event_id + 1))); event_id++; for (int index = 1; index < e.GetActions().Count; ++index) { lines.Add(GenerateSingleSAI(source_type, entryorguid, event_id, Events.EVENT_LINK.GetInstance(), e.GetAction(index), (e.GetActions().Count -1 == index ? 0 : event_id + 1))); event_id++; } } return GenerateHeader(source_type, entryorguid)+String.Join(",\n", lines) + ";"; }
// DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup`=12 AND `SourceEntry`=456; // INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES public static string GenerateConditionsSQL(SAIType source_type, int entryorguid, SmartEventsCollection events) { List <string> lines = new List <string>(); foreach (SmartEvent e in events) { int else_group = 0; foreach (SmartCondition condition in e.conditions) { if (condition.ID == CONDITION_LOGICAL_OR._ID) { else_group++; } else { lines.Add(GenerateSingleCondition(condition, source_type, entryorguid, e.actualID, else_group)); } } } string header = "DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=" + entryorguid + " AND SourceId = " + (int)source_type + ";\n"; header += "INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES\n"; if (lines.Count > 0) { return(header + String.Join(",\n", lines) + ";"); } return(null); }
// DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup`=12 AND `SourceEntry`=456; // INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES public static string GenerateConditionsSQL(SAIType source_type, int entryorguid, SmartEventsCollection events) { List <string> lines = new List <string>(); foreach (SmartEvent e in events) { int else_group = 0; foreach (SmartCondition condition in e.conditions) { if (condition.ID == CONDITION_LOGICAL_OR._ID) { else_group++; } else { lines.Add(GenerateSingleCondition(condition, source_type, entryorguid, e.actualID, else_group)); } } } if (lines.Count > 0) { return(String.Join(",\n", lines) + ";"); } return(null); }