Esempio n. 1
0
 public static void ClientPacketsEXAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (events_clientpacketsEXLock)
     {
         _events_clientpacketsEX.Add(key, sc_ec);
     }
 }
Esempio n. 2
0
 public static void SelfPacketsEXAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (events_selfpacketsEXLock)
     {
         _events_selfpacketsEX.Add(key, sc_ec);
     }
 }
Esempio n. 3
0
 public static void EventsAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (eventsLock)
     {
         _events.Add(key, sc_ec);
     }
 }
Esempio n. 4
0
 public static void ServerPacketsAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (events_serverpacketsLock)
     {
         _events_serverpackets.Add(key, sc_ec);
     }
 }
Esempio n. 5
0
        private void Call_Event(ScriptEventCaller evn_call, ScriptEvent pop_event)
        {
            if (evn_call == null)
            {
                return;
            }
            //is the file loaded?
            if (!Files.ContainsKey(evn_call.File))
            {
                System.IO.StreamReader filein = new System.IO.StreamReader(evn_call.File);
                ScriptFile sf = new ScriptFile();
                sf.Name = evn_call.File;
                sf.ReadScript(filein);
                filein.Close();

                Files.Add(sf.Name, sf);
            }
            //find the function
            int dest_line = Get_Function_Line(evn_call.Function, evn_call.File);
            if (dest_line == -1)
            {
                ScriptEngine.Script_Error("EVENT CALLER: FUNCTION DOES NOT EXIST : " + evn_call.File + " : " + evn_call.Function);
                Globals.gamedata.CurrentScriptState = ScriptState.Error;
                return;
            }

            //create a new thread at the function...
            ScriptThread scr_thread = new ScriptThread();
            scr_thread.Current_File = evn_call.File;
            scr_thread.Line_Pos = dest_line + 1;

            VariableList stack_bottom = new VariableList();
            //copy the variables over
            foreach (ScriptVariable svar in pop_event.Variables)
            {
                stack_bottom.Add_Variable(svar);
            }
            scr_thread._stack.Add(stack_bottom);
            scr_thread.ID = GetUniqueThreadID();
            Threads.Add(scr_thread.ID, scr_thread);
        }
Esempio n. 6
0
 public static void SelfPacketsEXAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (events_selfpacketsEXLock)
     {
         _events_selfpacketsEX.Add(key, sc_ec);
     }
 }
Esempio n. 7
0
 public static void ClientPacketsEXAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (events_clientpacketsEXLock)
     {
         _events_clientpacketsEX.Add(key, sc_ec);
     }
 }
Esempio n. 8
0
 public static void ServerPacketsAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (events_serverpacketsLock)
     {
         _events_serverpackets.Add(key, sc_ec);
     }
 }
Esempio n. 9
0
 public static void EventsAddKey(int key, ScriptEventCaller sc_ec)
 {
     lock (eventsLock)
     {
         _events.Add(key, sc_ec);
     }
 }
Esempio n. 10
0
        private void Script_SET_EVENT(string line)
        {
            int event_id = Util.GetInt32(Get_String(ref line));
            string file = Get_String(ref line);
            string function = Get_String(ref line);
            ScriptEventCaller sc_ec = new ScriptEventCaller();
            sc_ec.Type = (EventType)event_id;
            sc_ec.File = file;
            sc_ec.Function = function.ToUpperInvariant();

            switch(sc_ec.Type)
            {
                case EventType.ServerPacket:
                    int packet_id = Util.GetInt32(Get_String(ref line));

                    if (ServerPacketsContainsKey(packet_id))
                    {
                        ServerPacketsRemoveKey(packet_id);
                    }

                    ServerPacketsAddKey(packet_id, sc_ec);
                    break;
                case EventType.ServerPacketEX:
                    int packetex_id = Util.GetInt32(Get_String(ref line));

                    if (ServerPacketsEXContainsKey(packetex_id))
                    {
                        ServerPacketsEXRemoveKey(packetex_id);
                    }

                    ServerPacketsEXAddKey(packetex_id, sc_ec);
                    break;
                case EventType.ClientPacket:
                    int cpacket_id = Util.GetInt32(Get_String(ref line));

                    if (ClientPacketsContainsKey(cpacket_id))
                    {
                        ClientPacketsRemoveKey(cpacket_id);
                    }

                    ClientPacketsAddKey(cpacket_id, sc_ec);
                    break;
                case EventType.ClientPacketEX:
                    int cpacketex_id = Util.GetInt32(Get_String(ref line));

                    if (ClientPacketsEXContainsKey(cpacketex_id))
                    {
                        ClientPacketsEXRemoveKey(cpacketex_id);
                    }

                    ClientPacketsEXAddKey(cpacketex_id, sc_ec);
                    break;
                case EventType.SelfPacket:
                    int spacket_id = Util.GetInt32(Get_String(ref line));

                    //Globals.l2net_home.Add_Text("spacket_id: " + spacket_id.ToString(),Globals.Green);

                    if (SelfPacketsContainsKey(spacket_id))
                    {
                        SelfPacketsRemoveKey(spacket_id);
                    }

                    SelfPacketsAddKey(spacket_id, sc_ec);
                    break;
                case EventType.SelfPacketEX:
                    int spacketex_id = Util.GetInt32(Get_String(ref line));

                    if (SelfPacketsEXContainsKey(spacketex_id))
                    {
                        SelfPacketsEXRemoveKey(spacketex_id);
                    }

                    SelfPacketsEXAddKey(spacketex_id, sc_ec);
                    break;
                default:
                    if (EventsContainsKey(event_id))
                    {
                        EventsRemoveKey(event_id);
                    }
                    EventsAddKey(event_id, sc_ec);
                    break;
            }
        }