Example #1
0
        //        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())));
        }
Example #4
0
        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;
 }
Example #6
0
        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);
        }