Example #1
0
        protected override int ExecInternal()
        {
            var msg = GeneralLib.ListTail(EventData.Data, 2);

            if (GeneralLib.ListLength(msg) == 1)
            {
                msg = Expression.GetValueAsString(msg);
            }

            Expression.FormatMessage(ref msg);
            var BGM = Sound.SearchMidiFile(Sound.BGMName("Subtitle"));

            if (Strings.Len(BGM) > 0)
            {
                Sound.StartBGM(BGM, false);
                if (!GUI.IsRButtonPressed())
                {
                    GUI.Sleep(1000);
                }

                GUI.DisplayTelop(msg);
                if (!GUI.IsRButtonPressed())
                {
                    GUI.Sleep(2000);
                }
            }
            else
            {
                GUI.DisplayTelop(msg);
            }

            return(EventData.NextID);
        }
Example #2
0
        // Flashファイルからイベントを取得
        // Flashのアクションの「GetURL」で
        // 1.「URL」に"FSCommand:"
        // 2.「ターゲット」に「サブルーチン名 [引数1 [引数2 […]]」
        // を指定すると、そのアクションが実行されたときに
        // ターゲットのサブルーチンが実行される。
        // サブルーチンを実行している間、Flashの再生は停止する。
        public static void GetEvent(string fpara)
        {
            var    buf = default(string);
            short  i, j;
            string funcname, funcpara;
            var    etype      = default(Expression.ValueType);
            var    str_result = default(string);
            var    num_result = default(double);

            // 再生を一時停止
            // UPGRADE_WARNING: オブジェクト frmMain.FlashObject.StopMovie の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
            My.MyProject.Forms.frmMain.FlashObject.StopMovie();
            funcname = "";
            funcpara = "";

            // 念のためにFlashから渡されたパラメータ全てを解析
            // 一番最初に見つかった文字列を、呼び出すサブルーチン名とする
            if (string.IsNullOrEmpty(funcname))
            {
                funcname = GeneralLib.ListIndex(ref fpara, 1);
                buf      = GeneralLib.ListTail(ref fpara, 2);
            }
            // サブルーチンの引数を記録
            var loopTo = GeneralLib.ListLength(ref buf);

            for (j = 1; j <= loopTo; j++)
            {
                funcpara = funcpara + ", " + GeneralLib.ListIndex(ref buf, j);
            }

            // サブルーチン名と引数から、Call関数の呼び出しの文字列を生成
            buf = "Call(" + funcname + funcpara + ")";
            // 式として生成した文字列を実行
            Expression.CallFunction(ref buf, ref etype, ref str_result, ref num_result);

            // 再生を再開
            // UPGRADE_WARNING: オブジェクト frmMain.FlashObject.PlayMovie の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
            My.MyProject.Forms.frmMain.FlashObject.PlayMovie();
        }
Example #3
0
File: PrintCmd.cs Project: 7474/SRC
        protected override int ExecInternal()
        {
            if (ArgNum == 1)
            {
                throw new EventErrorException(this, "Printコマンドの引数の数が違います");
            }

            // TODO ファイル出力例外処理
            var f   = SRC.FileHandleManager.Get(GetArgAsLong(2));
            var msg = GeneralLib.ListTail(EventData.Data, 3);

            if (Strings.Right(msg, 1) != ";")
            {
                if (Strings.Left(msg, 1) != "`" || Strings.Right(msg, 1) != "`")
                {
                    if (Strings.Left(msg, 2) == "$(")
                    {
                        if (Strings.Right(msg, 1) == ")")
                        {
                            msg = Expression.GetValueAsString(Strings.Mid(msg, 3, Strings.Len(msg) - 3));
                        }
                    }
                    else if (GeneralLib.ListLength(msg) == 1)
                    {
                        msg = Expression.GetValueAsString(msg);
                    }

                    Expression.ReplaceSubExpression(ref msg);
                }
                else
                {
                    msg = Strings.Mid(msg, 2, Strings.Len(msg) - 2);
                }

                f.Writer.WriteLine(msg);
            }
            else
            {
                msg = Strings.Left(msg, Strings.Len(msg) - 1);
                if (Strings.Left(msg, 1) != "`" || Strings.Right(msg, 1) != "`")
                {
                    if (Strings.Left(msg, 2) == "$(")
                    {
                        if (Strings.Right(msg, 1) == ")")
                        {
                            msg = Expression.GetValueAsString(Strings.Mid(msg, 3, Strings.Len(msg) - 3));
                        }
                    }
                    else if (GeneralLib.ListLength(msg) == 1)
                    {
                        msg = Expression.GetValueAsString(msg);
                    }

                    Expression.ReplaceSubExpression(ref msg);
                }
                else
                {
                    msg = Strings.Mid(msg, 2, Strings.Len(msg) - 2);
                }

                f.Writer.WriteLine(msg);
            }

            return(EventData.NextID);
        }
Example #4
0
        // 特殊能力を追加
        public void AddSkill(ref string sname, double slevel, string sdata, short lv)
        {
            SkillData sd;
            short     i;

            ;

            // データ定義が省略されている場合は前回と同じ物を使う
            if ((last_sname ?? "") == (sname ?? "") & Strings.Len(sdata) == 0)
            {
                sdata = last_sdata;
            }

            last_sname = sname;
            last_sdata = sdata;

            // エリアスが定義されている?
            object argIndex2 = sname;

            if (SRC.ALDList.IsDefined(ref argIndex2))
            {
                if (GeneralLib.LIndex(ref sdata, 1) != "解説")
                {
                    object argIndex1 = sname;
                    {
                        var withBlock = SRC.ALDList.Item(ref argIndex1);
                        var loopTo    = withBlock.Count;
                        for (i = 1; i <= loopTo; i++)
                        {
                            // エリアスの定義に従って特殊能力定義を置き換える
                            sd      = new SkillData();
                            sd.Name = withBlock.get_AliasType(i);
                            string localLIndex()
                            {
                                string arglist = withBlock.get_AliasData(i); var ret = GeneralLib.LIndex(ref arglist, 1); withBlock.get_AliasData(i) = arglist; return(ret);
                            }

                            if (localLIndex() == "解説")
                            {
                                if (!string.IsNullOrEmpty(sdata))
                                {
                                    sd.Name = GeneralLib.LIndex(ref sdata, 1);
                                }
                            }

                            if (withBlock.get_AliasLevelIsPlusMod(i))
                            {
                                if (slevel == SRC.DEFAULT_LEVEL)
                                {
                                    slevel = 1d;
                                }

                                sd.Level = slevel + withBlock.get_AliasLevel(i);
                            }
                            else if (withBlock.get_AliasLevelIsMultMod(i))
                            {
                                if (slevel == SRC.DEFAULT_LEVEL)
                                {
                                    slevel = 1d;
                                }

                                sd.Level = slevel * withBlock.get_AliasLevel(i);
                            }
                            else if (slevel != SRC.DEFAULT_LEVEL)
                            {
                                sd.Level = slevel;
                            }
                            else
                            {
                                sd.Level = withBlock.get_AliasLevel(i);
                            }

                            sd.StrData = withBlock.get_AliasData(i);
                            if (!string.IsNullOrEmpty(sdata))
                            {
                                string localLIndex1()
                                {
                                    string arglist = withBlock.get_AliasData(i); var ret = GeneralLib.LIndex(ref arglist, 1); withBlock.get_AliasData(i) = arglist; return(ret);
                                }

                                if (withBlock.get_AliasData(i) != "非表示" & localLIndex1() != "解説")
                                {
                                    string localListTail()
                                    {
                                        string arglist = withBlock.get_AliasData(i); var ret = GeneralLib.ListTail(ref arglist, 2); withBlock.get_AliasData(i) = arglist; return(ret);
                                    }

                                    sd.StrData = Strings.Trim(sdata + " " + localListTail());
                                }
                            }

                            if (withBlock.get_AliasLevelIsPlusMod(i) | withBlock.get_AliasLevelIsMultMod(i))
                            {
                                sd.StrData = sd.StrData + "Lv" + Microsoft.VisualBasic.Compatibility.VB6.Support.Format(slevel);
                            }

                            sd.NecessaryLevel = lv;
                            colSkill.Add(sd, sname + Microsoft.VisualBasic.Compatibility.VB6.Support.Format(colSkill.Count));
                        }
                    }

                    return;
                }
            }

            // 特殊能力を登録
            sd                = new SkillData();
            sd.Name           = sname;
            sd.Level          = slevel;
            sd.StrData        = sdata;
            sd.NecessaryLevel = lv;
            colSkill.Add(sd, sname + Microsoft.VisualBasic.Compatibility.VB6.Support.Format(colSkill.Count));
        }
Example #5
0
        protected override int ExecInternal()
        {
            if (ArgNum != 4 && ArgNum != 5)
            {
                throw new EventErrorException(this, "SetSkillコマンドの引数の数が違います");
            }

            var pname = GetArgAsString(2);

            if (SRC.PList.IsDefined(pname))
            {
                pname = SRC.PList.Item(pname).ID;
            }
            else if (SRC.PDList.IsDefined(pname))
            {
                pname = SRC.PDList.Item(pname).Name;
            }
            else
            {
                throw new EventErrorException(this, "「" + pname + "」というパイロットが見つかりません");
            }

            var sname  = GetArgAsString(3);
            var slevel = GetArgAsDouble(4);
            var sdata  = "";

            if (ArgNum == 5)
            {
                sdata = GetArgAsString(5);
            }

            // エリアスが定義されている?
            var sList = new List <SkillData>();

            if (SRC.ALDList.IsDefined(sname))
            {
                {
                    var alias = SRC.ALDList.Item(sname);
                    foreach (var elm in alias.Elements)
                    {
                        var sd = new SkillData();
                        sList.Add(sd);

                        if (GeneralLib.LIndex(elm.strAliasData, 1) == "解説")
                        {
                            if (string.IsNullOrEmpty(sdata))
                            {
                                sd.Name = elm.strAliasType;
                            }
                            else
                            {
                                sd.Name = GeneralLib.LIndex(sdata, 1);
                            }

                            if (slevel == 0d)
                            {
                                sd.Level = 0d;
                            }
                            else
                            {
                                sd.Level = Constants.DEFAULT_LEVEL;
                            }

                            sd.StrData = elm.strAliasData;
                        }
                        else
                        {
                            sd.Name = elm.strAliasType;
                            if (slevel == -1)
                            {
                                sd.Level = elm.dblAliasLevel;
                            }
                            else if (elm.blnAliasLevelIsPlusMod)
                            {
                                sd.Level = slevel + elm.dblAliasLevel;
                            }
                            else if (elm.blnAliasLevelIsMultMod)
                            {
                                sd.Level = slevel * elm.dblAliasLevel;
                            }
                            else
                            {
                                sd.Level = slevel;
                            }

                            if (string.IsNullOrEmpty(sdata))
                            {
                                sd.StrData = elm.strAliasData;
                            }
                            else
                            {
                                sd.StrData = Strings.Trim(sdata + " " + GeneralLib.ListTail(elm.strAliasData, 2));
                            }

                            if (elm.blnAliasLevelIsPlusMod || elm.blnAliasLevelIsPlusMod)
                            {
                                sd.StrData = Strings.Trim(GeneralLib.LIndex(sd.StrData, 1) + "Lv" + SrcFormatter.Format(slevel) + " " + GeneralLib.ListTail(sd.StrData, 2));
                            }
                        }
                    }
                }
            }
            else
            {
                sList.Add(new SkillData
                {
                    Name    = sname,
                    Level   = slevel,
                    StrData = sdata,
                });
            }

            foreach (var sd in sList)
            {
                sname  = sd.Name;
                slevel = sd.Level;
                sdata  = sd.StrData;
                if (string.IsNullOrEmpty(sname))
                {
                    continue;
                }

                string slist;
                // アビリティ一覧表示用にSetSkillが適用された能力の一覧用変数を作成
                if (!Expression.IsGlobalVariableDefined("Ability(" + pname + ")"))
                {
                    Expression.DefineGlobalVariable("Ability(" + pname + ")");
                    slist = sname;
                }
                else
                {
                    slist = Conversions.ToString(Event.GlobalVariableList["Ability(" + pname + ")"].StringValue);
                    if (!GeneralLib.ToL(slist).Contains(sname))
                    {
                        slist = slist + " " + sname;
                    }
                }

                Expression.SetVariableAsString("Ability(" + pname + ")", slist);

                // 今回SetSkillが適用された能力sname用変数を作成
                var vname = "Ability(" + pname + "," + sname + ")";
                if (!Expression.IsGlobalVariableDefined(vname))
                {
                    Expression.DefineGlobalVariable(vname);
                }

                if (!string.IsNullOrEmpty(sdata))
                {
                    // 別名指定があった場合
                    Expression.SetVariableAsString(vname, SrcFormatter.Format(slevel) + " " + sdata);

                    // 必要技能用
                    if (sdata != "非表示" && GeneralLib.LIndex(sdata, 1) != "解説")
                    {
                        vname = "Ability(" + pname + "," + GeneralLib.LIndex(sdata, 1) + ")";
                        if (!Expression.IsGlobalVariableDefined(vname))
                        {
                            Expression.DefineGlobalVariable(vname);
                        }

                        Expression.SetVariableAsString(vname, SrcFormatter.Format(slevel));
                    }
                }
                else
                {
                    Expression.SetVariableAsString(vname, SrcFormatter.Format(slevel));
                }
            }

            // パイロットやユニットのステータスをアップデート
            if (SRC.PList.IsDefined(pname))
            {
                {
                    var withBlock1 = SRC.PList.Item(pname);
                    withBlock1.Update();
                    if (withBlock1.Unit is object)
                    {
                        withBlock1.Unit.Update();
                        if (withBlock1.Unit.Status == "出撃")
                        {
                            SRC.PList.UpdateSupportMod(withBlock1.Unit);
                        }
                    }
                }
            }
            return(EventData.NextID);
        }
Example #6
0
        private void RegisterAlias(string sname, double slevel, string sdata, int lv)
        {
            var aliasData = SRC.ALDList.Item(sname);

            foreach (var aliasElement in aliasData.Elements)
            {
                // エリアスの定義に従って特殊能力定義を置き換える
                var sd = new SkillData();
                sd.Name = aliasElement.strAliasType;

                if (GeneralLib.LIndex(aliasElement.strAliasData, 1) == "解説")
                {
                    if (!string.IsNullOrEmpty(sdata))
                    {
                        sd.Name = GeneralLib.LIndex(sdata, 1);
                    }
                }

                if (aliasElement.blnAliasLevelIsPlusMod)
                {
                    if (slevel == Constants.DEFAULT_LEVEL)
                    {
                        slevel = 1d;
                    }

                    sd.Level = slevel + aliasElement.dblAliasLevel;
                }
                else if (aliasElement.blnAliasLevelIsMultMod)
                {
                    if (slevel == Constants.DEFAULT_LEVEL)
                    {
                        slevel = 1d;
                    }

                    sd.Level = slevel * aliasElement.dblAliasLevel;
                }
                else if (slevel != Constants.DEFAULT_LEVEL)
                {
                    sd.Level = slevel;
                }
                else
                {
                    sd.Level = aliasElement.dblAliasLevel;
                }

                sd.StrData = aliasElement.strAliasData;
                if (!string.IsNullOrEmpty(sdata))
                {
                    if (aliasElement.strAliasData != "非表示" && GeneralLib.LIndex(aliasElement.strAliasData, 1) != "解説")
                    {
                        sd.StrData = Strings.Trim(sdata + " " + GeneralLib.ListTail(aliasElement.strAliasData, 2));
                    }
                }

                if (aliasElement.blnAliasLevelIsPlusMod || aliasElement.blnAliasLevelIsMultMod)
                {
                    sd.StrData = sd.StrData + "Lv" + SrcFormatter.Format(slevel);
                }

                sd.NecessaryLevel = lv;
                colSkill.Add(sd, sname + SrcFormatter.Format(colSkill.Count));
            }
        }