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); }
// 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(); }
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); }
// 特殊能力を追加 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)); }
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); }
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)); } }