Пример #1
0
        public bool Proccess_Line(string line, bool advance_line)
        {
            ScriptLine new_line = new ScriptLine();
            new_line.FullLine = line;

            string cmd = Get_String(ref line).ToUpperInvariant();

            new_line.Command = GetCommandType(cmd);
            new_line.UnParsedParams = line;

            return Proccess_Line(new_line, advance_line);
        }
Пример #2
0
        public void ReadFile(ScriptFile filein)
        {
            File = filein.Name;

            //gotta find the varbeing and varend and read in the middle
            bool cstarted = false;
            bool vstarted = false;
            bool cended   = false;

            string p1, p2, p3;

            for (int i = 0; i < filein._ScriptLines.Count; i++)
            {
                ScriptLine cmd = (ScriptLine)filein._ScriptLines[i];

                string line = cmd.UnParsedParams;

                switch (cmd.Command)
                {
                case ScriptCommands.INCLUDE:
                    if (!cstarted)
                    {
                        Globals.scriptthread.Script_INCLUDE(line);
                    }
                    break;

                case ScriptCommands.PUBLIC:
                    if (cstarted && vstarted)
                    {
                        //defining a variable
                        p1 = ScriptEngine.Get_String(ref line);
                        p2 = ScriptEngine.Get_String(ref line).ToUpperInvariant();
                        p3 = ScriptEngine.Get_String(ref line);

                        ScriptVariable nv = ScriptEngine.Create_Variable(p1, p2, p3, Var_State.PUBLIC);

                        _Variables.Add(nv);
                    }
                    else if (cstarted)
                    {
                        //a function
                        p1 = ScriptEngine.Get_String(ref line);
                        Add_Function(p1, i, filein, Var_State.PUBLIC);
                    }
                    break;

                case ScriptCommands.PRIVATE:
                    if (cstarted && vstarted)
                    {
                        //defining a variable
                        p1 = ScriptEngine.Get_String(ref line);
                        p2 = ScriptEngine.Get_String(ref line).ToUpperInvariant();
                        p3 = ScriptEngine.Get_String(ref line);

                        ScriptVariable nv = ScriptEngine.Create_Variable(p1, p2, p3, Var_State.PRIVATE);

                        _Variables.Add(nv);
                    }
                    else if (cstarted)
                    {
                        //a function
                        p1 = ScriptEngine.Get_String(ref line);
                        Add_Function(p1, i, filein, Var_State.PRIVATE);
                    }
                    break;

                case ScriptCommands.PROTECTED:
                    if (cstarted && vstarted)
                    {
                        //defining a variable
                        p1 = ScriptEngine.Get_String(ref line);
                        p2 = ScriptEngine.Get_String(ref line).ToUpperInvariant();
                        p3 = ScriptEngine.Get_String(ref line);

                        ScriptVariable nv = ScriptEngine.Create_Variable(p1, p2, p3, Var_State.PROTECTED);

                        _Variables.Add(nv);
                    }
                    else if (cstarted)
                    {
                        //a function
                        p1 = ScriptEngine.Get_String(ref line);
                        Add_Function(p1, i, filein, Var_State.PROTECTED);
                    }
                    break;

                case ScriptCommands.STATIC:
                    if (cstarted && vstarted)
                    {
                        //defining a variable
                        p1 = ScriptEngine.Get_String(ref line);
                        p2 = ScriptEngine.Get_String(ref line).ToUpperInvariant();
                        p3 = ScriptEngine.Get_String(ref line);

                        ScriptVariable nv = ScriptEngine.Create_Variable(p1, p2, p3, Var_State.STATIC);

                        _Variables.Add(nv);
                    }
                    else if (cstarted)
                    {
                        //a function
                        p1 = ScriptEngine.Get_String(ref line);
                        Add_Function(p1, i, filein, Var_State.STATIC);
                    }
                    break;

                case ScriptCommands.CLASS:
                    cstarted = true;
                    Name     = ScriptEngine.Get_String(ref line).ToUpperInvariant();
                    p1       = ScriptEngine.Get_String(ref line).ToUpperInvariant();
                    if (p1 != "NULL" && p1.Length != 0)
                    {
                        //gotta find this class... and copy over it's stuff
                        if (ScriptEngine.Classes.ContainsKey(p1))
                        {
                            Script_Class sc = (Script_Class)ScriptEngine.Classes[p1];

                            foreach (ScriptVariable nv in sc._Variables)
                            {
                                _Variables.Add(nv.Clone());
                            }

                            ParentName = sc.Name;
                            ParentFile = sc.File;
                        }
                        else
                        {
                            ScriptEngine.Script_Error("CLASS [" + p1 + "] NOT LOADED PRIOR TO USAGE");
                        }
                    }
                    break;

                case ScriptCommands.END_CLASS:
                    cended   = true;
                    cstarted = false;
                    break;

                case ScriptCommands.VAR_START:
                    vstarted = true;
                    break;

                case ScriptCommands.VAR_END:
                    vstarted = false;
                    break;
                }

                if (cended)
                {
                    break;
                }
            }
        }
Пример #3
0
        public void ReadScript(System.IO.StreamReader filein)
        {
            _ScriptLines.Clear();

            string line;

            while ((line = filein.ReadLine()) != null)
            {
                line = line.Trim();

                ScriptLine sl = new ScriptLine();
                sl.FullLine = line;

                string cmd = ScriptEngine.Get_String(ref line, false).ToUpperInvariant();

                sl.Command = ScriptEngine.GetCommandType(cmd);

                switch (sl.Command)
                {
                case ScriptCommands.ENCRYPTED:
                    //need to scrap everything that has been loaded so far...
                    _ScriptLines.Clear();
                    int key = Util.GetInt32(line);

                    string encoded_script = filein.ReadLine();

                    filein = Script_Crypt.Decrypt(encoded_script, key);
                    break;

                case ScriptCommands.IF:
                case ScriptCommands.WHILE:
                case ScriptCommands.LOOP:
                case ScriptCommands.UNKNOWN:
                    if (Globals.ScriptCompatibilityv386)
                    {
                        sl.UnParsedParams = line.Replace("(", " ( ").Replace(")", " ) ");
                    }
                    else
                    {
                        sl.UnParsedParams = line;
                    }

                    _ScriptLines.Add(sl);
                    break;

                default:
                    sl.UnParsedParams = line;

                    _ScriptLines.Add(sl);
                    break;
                }
            }

            //need to parse out comments in the file here...
            bool comment_block = false;

            for (int i = 0; i < _ScriptLines.Count; i++)
            {
                string cmd = ((ScriptLine)_ScriptLines[i]).FullLine.ToUpperInvariant();

                //start a comment block
                if (cmd.StartsWith("/*"))
                {
                    comment_block = true;
                }

                if (comment_block)
                {
                    ((ScriptLine)_ScriptLines[i]).Command  = ScriptCommands.NULL;
                    ((ScriptLine)_ScriptLines[i]).FullLine = "";
                }

                //end of comment block
                //  we end after we clear because we want to clear this line still (inclusive)
                if (cmd.EndsWith("*/"))
                {
                    comment_block = false;
                }

                //normal line comment
                if (cmd.StartsWith("//"))
                {
                    ((ScriptLine)_ScriptLines[i]).Command  = ScriptCommands.NULL;
                    ((ScriptLine)_ScriptLines[i]).FullLine = "";
                }
            }
        }
Пример #4
0
        public void ReadScript(System.IO.StreamReader filein)
        {
            _ScriptLines.Clear();

            string line;

            while ((line = filein.ReadLine()) != null)
            {
                line = line.Trim();

                ScriptLine sl = new ScriptLine();
                sl.FullLine = line;

                string cmd = ScriptEngine.Get_String(ref line, false).ToUpperInvariant();

                sl.Command = ScriptEngine.GetCommandType(cmd);

                switch (sl.Command)
                {
                    case ScriptCommands.ENCRYPTED:
                        //need to scrap everything that has been loaded so far...
                        _ScriptLines.Clear();
                        int key = Util.GetInt32(line);

                        string encoded_script = filein.ReadLine();

                        filein = Script_Crypt.Decrypt(encoded_script, key);
                        break;
                    case ScriptCommands.IF:
                    case ScriptCommands.WHILE:
                    case ScriptCommands.LOOP:
                    case ScriptCommands.UNKNOWN:
                        if (Globals.ScriptCompatibilityv386)
                        {
                            sl.UnParsedParams = line.Replace("(", " ( ").Replace(")", " ) ");
                        }
                        else
                        {
                            sl.UnParsedParams = line;
                        }

                        _ScriptLines.Add(sl);
                        break;
                    default:
                        sl.UnParsedParams = line;

                        _ScriptLines.Add(sl);
                        break;
                }
            }

            //need to parse out comments in the file here...
            bool comment_block = false;

            for (int i = 0; i < _ScriptLines.Count; i++)
            {
                string cmd = ((ScriptLine)_ScriptLines[i]).FullLine.ToUpperInvariant();

                //start a comment block
                if (cmd.StartsWith("/*"))
                {
                    comment_block = true;
                }

                if (comment_block)
                {
                    ((ScriptLine)_ScriptLines[i]).Command = ScriptCommands.NULL;
                    ((ScriptLine)_ScriptLines[i]).FullLine = "";
                }

                //end of comment block
                //  we end after we clear because we want to clear this line still (inclusive)
                if (cmd.EndsWith("*/"))
                {
                    comment_block = false;
                }

                //normal line comment
                if (cmd.StartsWith("//"))
                {
                    ((ScriptLine)_ScriptLines[i]).Command = ScriptCommands.NULL;
                    ((ScriptLine)_ScriptLines[i]).FullLine = "";
                }
            }
        }
Пример #5
0
        public bool Proccess_Line(ScriptLine command, bool advance_line)
		{
            ScriptCommands my_command = command.Command;
            string line = command.UnParsedParams;

            bool do_advance = false;

#if !DEBUG
			try
			{
#endif
			switch(my_command)
			{
                case ScriptCommands.SET:
                    Dead_Command("SET","=");
                    do_advance = true;
                    break;
                case ScriptCommands.MATH:
                    Dead_Command("MATH","=");
                    do_advance = true;
                    break;
                case ScriptCommands.SORT:
                    Script_SORT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DELETE_GLOBAL:
                    Script_DELETE_GLOBAL(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DELETE:
                    Script_DELETE(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TEST_WEBSITE:
                    Script_TEST_WEBSITE(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TEST_ODBC:
                    Script_TEST_ODBC(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TEST_DNS:
                    Script_TEST_DNS(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TEST_PING:
                    Script_TEST_PING(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SEND_EMAIL:
                    Script_SEND_EMAIL(line);
                    do_advance = true;
                    break;
                case ScriptCommands.MESSAGE_BOX:
                    Script_MESSAGE_BOX(line);
                    do_advance = true;
                    break;
                case ScriptCommands.NMESSAGE_BOX:
                    Script_NMESSAGE_BOX(line);
                    do_advance = true;
                    break;
                case ScriptCommands.NMESSAGE_BOX2:
                    Script_NMESSAGE_BOX2(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INCLUDE:
                    Script_INCLUDE(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DEFAULT:
                    do_advance = true;//we can just skip over this line, nothing really needed
                    break;
                case ScriptCommands.CASE:
                    do_advance = true;//we can just skip over this line, nothing really needed
                    break;
                case ScriptCommands.SWITCH:
                    Script_SWITCH(line);
                    break;
                case ScriptCommands.ENDSWITCH:
                    do_advance = true;//we can just skip over this line, nothing really needed
                    break;
                case ScriptCommands.LOCK:
                    return Script_LOCK(line);
                case ScriptCommands.UNLOCK:
                    Script_UNLOCK(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SET_EVENT:
                    Script_SET_EVENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.THREAD:
                    Script_THREAD(line);
                    do_advance = true;
                    break;
                case ScriptCommands.BREAK:
					Script_BREAK(line);
					break;
                case ScriptCommands.GET_TIME:
					Script_GET_TIME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CALLSUB:
					Script_CALLSUB(line);
					break;
                case ScriptCommands.RETURNSUB:
					Script_RETURNSUB();
					break;
                case ScriptCommands.SUB:
					Script_SUB(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CALL_EXTERN:
                    Script_CALL_EXTERN(line);
                    break;
                case ScriptCommands.CALL:
					Script_CALL(line);
					break;
                case ScriptCommands.RETURN:
					Script_RETURN(line);
					break;
                case ScriptCommands.FUNCTION:
					Script_FUNCTION(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DISTANCE:
					Script_DISTANCE(line);
                    do_advance = true;
                    break;
                case ScriptCommands.WHILE:
					Script_WHILE(line);
					break;
                case ScriptCommands.WEND:
					Script_WEND();
					break;
                case ScriptCommands.DO:
                    do_advance = true;
                    break;
                case ScriptCommands.LOOP:
					Script_LOOP(line);
					break;
                case ScriptCommands.FOREACH:
                    Script_FOREACH(line);
                    break;
                case ScriptCommands.NEXTEACH:
                    Script_NEXTEACH();
                    break;
                case ScriptCommands.FOR:
					Script_FOR(line);
					break;
                case ScriptCommands.NEXT:
					Script_NEXT();
					break;
                case ScriptCommands.IF:
					Script_IF(line);
					break;
                case ScriptCommands.ELSE:
					//need to jump to the next endif
					Script_ELSE();
					break;
                case ScriptCommands.ENDIF:
                    do_advance = true;//we can just skip over this line, nothing really needed
					break;
                case ScriptCommands.DEFINE_GLOBAL:
                    Script_DEFINE_GLOBAL(line);
                    break;
                case ScriptCommands.DEFINE:
					Script_DEFINE(line);
                    break;
                case ScriptCommands.SLEEP:
                    Script_SLEEP(line);
                    do_advance = true;
                    break;
                case ScriptCommands.PAUSE:
                    Globals.gamedata.CurrentScriptState = ScriptState.Paused;//ok, stopped
                    do_advance = true;
                    break;
                case ScriptCommands.END_OF_FILE:
                    Globals.gamedata.CurrentScriptState = ScriptState.EOF;
					break;
                case ScriptCommands.END_SCRIPT:
                    Globals.gamedata.CurrentScriptState = ScriptState.Finished;
                    do_advance = true;
                    Globals.l2net_home.SetStartScript();
                    break;
                case ScriptCommands.JUMP_TO_LINE:
					Script_JUMP_TO_LINE(line);
					break;
                case ScriptCommands.LABEL:
					Script_LABEL(line);
                    do_advance = true;
                    break;
                case ScriptCommands.JUMP_TO_LABEL:
					Script_JUMP_TO_LABEL(line);
					break;
                case ScriptCommands.PRINT_TEXT:
					Script_PRINT_TEXT(line, false);
                    do_advance = true;
                    break;
                case ScriptCommands.PRINT_DEBUG:
                    Script_PRINT_TEXT(line, true);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_RAND:
					Script_GET_RAND(line);
                    do_advance = true;
                    break;
                case ScriptCommands.HEX_TO_DEC:
                    Script_HEX_TO_DEC(line);
                    do_advance = true;
                    break;
                case ScriptCommands.PLAYALARM:
                    Script_PLAYALARM();
                    do_advance = true;
                    break;
                case ScriptCommands.PLAYWAV:
                    Script_PLAYWAV(line);
                    do_advance = true;
                    break;
                case ScriptCommands.PLAYSOUND:
                    Script_PLAYSOUND(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DELETE_SHORTCUT:
                    Script_DELETE_SHORTCUT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.REGISTER_SHORTCUT:
                    Script_REGISTER_SHORTCUT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.USE_SHORTCUT:
                    Script_USE_SHORTCUT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TARGET_SELF:
                    Script_TARGET_SELF();
                    do_advance = true;
                    break;
                case ScriptCommands.CANCEL_TARGET:
                    Script_CANCEL_TARGET();
                    do_advance = true;
                    break;
                case ScriptCommands.UDP_SEND:
                    Script_UDP_SEND(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UDP_SENDBB:
                    Script_UDP_SENDBB(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UDP_IP_SEND:
                    Script_UDP_IP_SEND(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UDP_IP_SENDBB:
                    Script_UDP_IP_SENDBB(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SLEEP_HUMAN_READING:
                    Script_SLEEP_HUMAN_READING(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SLEEP_HUMAN_WRITING:
                    Script_SLEEP_HUMAN_WRITING(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_ELIZA:
                    Script_GET_ELIZA(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_NPCS:
                    Script_GET_NPCS(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_INVENTORY:
                    Script_GET_INVENTORY(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_ITEMS:
                    Script_GET_ITEMS(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_PARTY:
                    Script_GET_PARTY(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_PLAYERS:
                    Script_GET_PLAYERS(line);
                    do_advance = true;
                    break;
                case ScriptCommands.FORCE_LOG:
                    Script_FORCE_LOG();
                    do_advance = true;
                    break;
                case ScriptCommands.IGNORE_ITEM:
                    Script_IGNORE_ITEM(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CRYSTALIZE_ITEM:
                    Script_CRYSTALIZE_ITEM(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DELETE_ITEM:
                    Script_DELETE_ITEM(line);
                    do_advance = true;
                    break;
                case ScriptCommands.DROP_ITEM:
                    Script_DROP_ITEM(line);
                    do_advance = true;
                    break;
                case ScriptCommands.BOTSET:
                    Script_BOTSET(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INJECTBB:
                    Script_INJECTBB(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INJECT:
					Script_INJECT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INJECTBB_CLIENT:
                    Script_INJECTBB_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INJECT_CLIENT:
                    Script_INJECT_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.COMMAND:
					Script_COMMAND(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLICK_NEAREST_ITEM:
					Script_CLICK_NEAREST_ITEM();
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_WALLS:
					Globals.gamedata.Walls.Clear();
                    do_advance = true;
                    break;
                case ScriptCommands.ADD_WALL:
					Script_ADD_WALL(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BORDER:
					Globals.gamedata.Paths.ClearBorder();
                    do_advance = true;
                    break;
                case ScriptCommands.ADD_BORDER_PT:
					Script_ADD_PATH_PT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.NPC_DIALOG:
					Script_NPC_DIALOG(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CHECK_TARGETING:
                    Script_CHECK_TARGETING(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SET_TARGETING:
                    Script_SET_TARGETING(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TARGET_NEAREST:
					Script_TARGET_NEAREST();
                    do_advance = true;
                    break;
                case ScriptCommands.TARGET_NEAREST_NAME:
					Script_TARGET_NEAREST_NAME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TARGET_NEAREST_ID:
					Script_TARGET_NEAREST_ID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TARGET:
                    Script_TARGET(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TALK_TARGET:
					Script_TALK_TARGET();
                    do_advance = true;
                    break;
                case ScriptCommands.ATTACK_TARGET:
					Script_ATTACK_TARGET();
                    do_advance = true;
                    break;
                case ScriptCommands.USE_ACTION:
                    Script_USE_ACTION(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CANCEL_BUFF:
                    Script_CANCEL_BUFF(line);
                    do_advance = true;
                    break;
                case ScriptCommands.USE_SKILL:
					Script_USE_SKILL(line);
                    do_advance = true;
                    break;
                case ScriptCommands.USE_SKILL_SMART:
                    Script_USE_SKILL_SMART(line);
                    do_advance = true;
                    break;
                case ScriptCommands.USE_ITEM:
					Script_USE_ITEM(line,false);
                    do_advance = true;
                    break;
                case ScriptCommands.USE_ITEM_EXPLICIT:
                    Script_USE_ITEM(line,true);
                    do_advance = true;
                    break;
                case ScriptCommands.ITEM_COUNT:
					Script_ITEM_COUNT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.MOVE_TO:
					Script_MOVE_TO(line);
                    do_advance = true;
                    break;
                case ScriptCommands.MOVR_WAIT:
                    Script_MOVE_WAIT(line);
                    break;
                case ScriptCommands.MOVE_SMART:
                    Script_MOVE_SMART(line);
                    break;
                case ScriptCommands.MOVE_INTERRUPT:
                    Script_MOVE_INTERRUPT();
                    break;
                case ScriptCommands.SAY_TEXT:
                    Script_SAY_TEXT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SAY_TO_CLIENT:
                    Script_SAY_TO_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INVEN_GET_UID:
                    Script_INVEN_GET_UID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.INVEN_GET_ITEMID:
                    Script_INVEN_GET_ITEMID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CHAR_GET_NAME:
                    Script_CHAR_GET_NAME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CHAR_GET_ID:
                    Script_CHAR_GET_ID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SKILL_GET_REUSE:
                    Script_SKILL_GET_REUSE(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SKILL_GET_NAME:
                    Script_SKILL_GET_NAME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SKILL_GET_DESC1:
                    Script_SKILL_GET_DESC1(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SKILL_GET_DESC2:
                    Script_SKILL_GET_DESC2(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SKILL_GET_DESC3:
                    Script_SKILL_GET_DESC3(line);
                    do_advance = true;
                    break;
                case ScriptCommands.SKILL_GET_ID:
                    Script_SKILL_GET_ID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.NPC_GET_NAME:
                    Script_NPC_GET_NAME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.NPC_GET_ID:
                    Script_NPC_GET_ID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.ITEM_GET_NAME:
					Script_ITEM_GET_NAME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.ITEM_GET_DESC:
                    Script_ITEM_GET_DESC(line);
                    do_advance = true;
                    break;
                case ScriptCommands.ITEM_GET_ID:
					Script_ITEM_GET_ID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLAN_GET_NAME:
                    Script_CLAN_GET_NAME(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLAN_GET_ID:
                    Script_CLAN_GET_ID(line);
                    do_advance = true;
                    break;
                case ScriptCommands.TAP_TO:
					Script_TAP_TO(line);
                    do_advance = true;
                    break;
                case ScriptCommands.RESTART:
					Script_RESTART();
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCK:
                    Script_BLOCK(line);
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCKEX:
                    Script_BLOCKEX(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UNBLOCK:
                    Script_UNBLOCK(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UNBLOCKEX:
                    Script_UNBLOCKEX(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BLOCK:
                    Script_CLEAR_BLOCK();
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BLOCKEX:
                    Script_CLEAR_BLOCKEX();
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCK_CLIENT:
                    Script_BLOCK_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCKEX_CLIENT:
                    Script_BLOCKEX_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UNBLOCK_CLIENT:
                    Script_UNBLOCK_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UNBLOCKEX_CLIENT:
                    Script_UNBLOCKEX_CLIENT(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BLOCK_CLIENT:
                    Script_CLEAR_BLOCK_CLIENT();
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BLOCKEX_CLIENT:
                    Script_CLEAR_BLOCKEX_CLIENT();
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCK_SELF:
                    Script_BLOCK_SELF(line);
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCK_SELF_ALL:
                    Script_BLOCK_SELF_ALL();
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCKEX_SELF:
                    Script_BLOCKEX_SELF(line);
                    do_advance = true;
                    break;
                case ScriptCommands.BLOCKEX_SELF_ALL:
                    Script_BLOCKEX_SELF_ALL();
                    do_advance = true;
                    break;
                case ScriptCommands.UNBLOCK_SELF:
                    Script_UNBLOCK_SELF(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UNBLOCKEX_SELF:
                    Script_UNBLOCKEX_SELF(line);
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BLOCK_SELF:
                    Script_CLEAR_BLOCK_SELF();
                    do_advance = true;
                    break;
                case ScriptCommands.CLEAR_BLOCKEX_SELF:
                    Script_CLEAR_BLOCKEX_SELF();
                    do_advance = true;
                    break;
                case ScriptCommands.GET_ZONE:
                    Script_GET_ZONE(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GENERATE_POLY:
                    Script_GENERATE_POLY(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_EFFECTS:
                    Script_GET_EFFECTS(line);
                    do_advance = true;
                    break;
                case ScriptCommands.GET_SKILLS:
                    Script_GET_SKILLS(line);
                    do_advance = true;
                    break;
                case ScriptCommands.UNKNOWN://unknown command... skip
                    //maybe this is a variable thingy...
                    do_advance = true;
                    if (command.FullLine.Length > 0)
                    {
                        Script_CALL(command.FullLine);
                        do_advance = false;
                    }
                    break;
                case ScriptCommands.NULL:
                    do_advance = true;
                    break;
                default:
                    //a command for which no handler exists... PUBLIC or VAR_START or something...
                    do_advance = true;
                    break;
			}//end of switch
#if !DEBUG
			}
			catch
			{
				//we had a bad script thingy
                ScriptEngine.Script_Error(command.FullLine);
                do_advance = true;
			}
#endif

            if (advance_line && do_advance)
            {
                Line_Pos++;
            }

            return true;
		}
Пример #6
0
        private ScriptLine Get_Line(int cnt, string file)
		{
			try
			{
                return ((ScriptLine)((ScriptFile)Files[file])._ScriptLines[cnt]);
			}
            catch
			{
                ScriptEngine.Script_Error("failed to get line " + cnt.ToString());

                ScriptLine sl = new ScriptLine();
                sl.Command = ScriptCommands.END_OF_FILE;
                return sl;
			}
		}