public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; Util.Assert(str != null, m_script, "LoadScript 参数必须是 string"); return(ScriptManager.GetInstance().LoadFile(str.Value)); }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; Util.Assert(str != null, m_script, "require 参数必须是 string"); return(m_script.LoadSearchPathFile(str.Value)); }
static List <MessageField> GetFields(string tableName, ScriptTable table, List <MessageField> Fields, bool cs) { Fields.Clear(); var itor = table.GetIterator(); while (itor.MoveNext()) { string name = itor.Current.Key as string; ScriptString val = itor.Current.Value as ScriptString; if (string.IsNullOrEmpty(name) || val == null) { throw new Exception(string.Format("Message:{0} Field:{1} 参数出错 参数模版 \"索引,类型,是否数组=false\"", tableName, name)); } string[] infos = val.Value.Split(','); if (infos.Length < 2) { throw new Exception(string.Format("Message:{0} Field:{1} 参数出错 参数模版 \"索引,类型,是否数组=false\"", tableName, name)); } bool array = infos.Length > 2 && infos[2] == "true"; BasicType type = GetType(infos[1]); Fields.Add(new MessageField() { Index = int.Parse(infos[0]), SourceType = infos[1], Type = type, Name = name, TypeName = type != null ? (cs ? type.CSharpName : type.JavaName) : infos[1], Array = array }); } Fields.Sort((m1, m2) => { return(m1.Index.CompareTo(m2.Index)); }); return(Fields); }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; Util.Assert(str != null, m_script, "import_type 参数必须是 string"); return(m_script.LoadType(str.Value)); }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; Util.Assert(str != null, "require 参数必须是 string"); return(m_script.LoadFile(m_script.GetValue("searchpath") + "/" + str.Value)); }
public void SetScriptID(int index, int state, int idScript, ScriptString pstrSection) { m_nType = ENUM_EVENT_ITEM_TYPE.EVENT_ITEM_TYPE_SCRIPT_ID; m_state = state; m_index = index; m_idScript = idScript; m_strString = pstrSection; }
public void AddText(ScriptString pText) { if (m_yTextCount < SCRIPT_COMMAND.MAX_MISSION_TEXT_COUNT) { m_aText[m_yTextCount] = pText; m_yTextCount++; } }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; Util.Assert(str != null, m_script, "push_define 参数必须是 string"); m_script.PushDefine(str.Value); return(null); }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; Util.Assert(str != null, m_script, "load_assembly 参数必须是 string"); m_script.PushAssembly(Assembly.Load(new AssemblyName(str.Value))); return(null); }
protected override void ProcessString(ITerminalNode @string) { base.ProcessString(@string); var name2 = new HashSet <string> { "add_character_modifier.name", "character_event.name", "create_character.name", "defined_text.name", "has_game_rule.name", "option.name", "per_attribute.name", "add_province_modifier.name" }; ScriptString s = this.Strings.Last(); if (IdManager.IgnoreValues.Contains(s.Value) || IdManager.IgnoreValueRegex.IsMatch(s.Value) || !IdManager.StringKeys.Any(keyPattern => s.Key.Path.LastStep.EqualsWildcard(keyPattern)) || name2.Contains(s.Key.Path.LastTwoSteps)) { return; } string translation = this.translator(s); if (translation != null) { string str = @string.GetText(); string begin; begin = str[0] == '\'' ? "\'" : "\""; string end = ""; int i = str.Length - 1; while (i >= 0 && char.IsWhiteSpace(str[i])) { end = str[i] + end; i--; } if (str[i] == '\'') { end = '\'' + end; } else { end = '"' + end; } translation = begin + translation + end; this.Rewriter.Replace(@string.Symbol, translation); } }
public object Call(ScriptObject[] args) { if (args[0].IsString) { ScriptString sstr = args[0] as ScriptString; return(m_Script.DoString(sstr.Value)); } return(m_Script.Null); }
public override void Read(ref List <ScriptLine> list, ref int start, ref int end, ref ScriptString function) { var wilds = new List <ScriptWild> { new ScriptWord(new ScriptString("if", Program.ScriptsFolder + "60302262020")) }; end--; var stack = new Stack <string>(); bool expectingCondition = true; bool expectingInstruction = false; while (++end < function.Length) { char chr = (char)function[end]; // Skip whitespaces, since the parsing is done mostly done in the separate loops below. if (char.IsWhiteSpace(chr)) { continue; } if (expectingCondition) { // <<Expecting Condition>> if (chr == '(') { stack.Push("(\\)"); } else { throw new Compiler.SyntaxException("Expected '(...)' after keyword 'if'.", Compiler.CurrentScriptTrace); } start = end; // Find the end of the condition parenthesies. while (++end < function.Length) { chr = (char)function[end]; if (ScriptLine.IsBlockCharStart(chr, out string block)) { // Start a new block. stack.Push(block); } else if (ScriptLine.IsBlockCharEnd(chr, out block)) { // End the current block. string b = stack.Pop(); if (block != b) { throw new Compiler.SyntaxException($"Expected '{b[2]}', but got '{block[2]}'.", Compiler.CurrentScriptTrace); } if (stack.Count == 0) /* <<End of Conditional>> */ break { ; } } } // Get the full conditional as a string. ScriptString s = function[start..(end + 1)];
public object Call(ScriptObject[] args) { if (args[0].IsString) { ScriptString str = args[0] as ScriptString; return(m_Script.LoadSearchPathFile(str.Value)); } return(m_Script.Null); }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; if (str == null) { throw new ExecutionException("import_type 参数必须是 string"); } return(m_script.LoadType(str.Value)); }
private ScriptObject ParseEval(CodeEval eval) { ScriptString str = this.ResolveOperand(eval.EvalObject) as ScriptString; if (str == null) { throw new ExecutionException(this.m_script, "Eval参数必须是一个字符串"); } return(this.m_script.LoadString("", str.Value, this, false)); }
ScriptObject ParseEval(CodeEval eval) { ScriptString obj = ResolveOperand(eval.EvalObject) as ScriptString; if (obj == null) { throw new ExecutionException(m_script, "Eval参数必须是一个字符串"); } return(m_script.LoadString("", obj.Value, this, false)); }
public object Call(ScriptObject[] args) { ScriptString str = args[0] as ScriptString; if (str == null) { throw new ExecutionException("load_assembly 参数必须是 string"); } m_script.PushAssembly(Assembly.Load(str.Value)); return(null); }
public void SetLightColor(ScriptNumber lightId, ScriptString value) { Logger.InfoFormat("Setting light #{0} color to '{1}'", lightId, value); var cgPoint = HueColorConverter.XyFromColor(value.ToPrimitiveString().Replace(" ", "")); _lightService.SetLightStateAsync(lightId.ToPrimitiveInt32(), new { on = true, // cannot modify color when light is off xy = new[] { cgPoint.x, cgPoint.y } }); }
ScriptObject ParseAssign(CodeAssign assign) { if (assign.AssignType == TokenType.Assign) { var ret = ResolveOperand(assign.value); SetVariable(assign.member, ret); return(ret); } else { ScriptObject obj = GetVariable(assign.member); ScriptString str = obj as ScriptString; if (str != null) { if (assign.AssignType == TokenType.AssignPlus) { return(str.AssignPlus(ResolveOperand(assign.value))); } else { throw new ExecutionException("string类型只支持[+=]赋值操作"); } } ScriptNumber num = obj as ScriptNumber; if (num != null) { ScriptNumber right = ResolveOperand(assign.value) as ScriptNumber; if (right == null) { throw new ExecutionException("[+= -=...]值只能为 number类型"); } switch (assign.AssignType) { case TokenType.AssignPlus: return(num.AssignPlus(right)); case TokenType.AssignMinus: return(num.AssignMinus(right)); case TokenType.AssignMultiply: return(num.AssignMultiply(right)); case TokenType.AssignDivide: return(num.AssignDivide(right)); case TokenType.AssignModulo: return(num.AssignModulo(right)); } } throw new ExecutionException("[+= -=...]左边值只能为number或者string"); } }
public bool Read(ref NetInputBuffer iStream) { if (iStream.ReadUint(ref m_idNPC) != sizeof(uint)) { return(false); } if (iStream.ReadInt(ref m_idScript) != sizeof(int)) { return(false); } if (iStream.ReadInt(ref m_idMission) != sizeof(int)) { return(false); } if (iStream.ReadByte(ref m_yTextCount) != sizeof(byte)) { return(false); } if (iStream.ReadInt(ref m_IsPush) != sizeof(int)) { return(false); } for (byte i = 0; i < m_yTextCount; i++) { m_aText[i] = new ScriptString(); if (!m_aText[i].Read(ref iStream)) { return(false); } } if (iStream.ReadByte(ref m_yBonusCount) != sizeof(byte)) { return(false); } for (byte i = 0; i < m_yBonusCount; i++) { m_aBonus[i] = new SMissionBonus(); if (!m_aBonus[i].Read(ref iStream)) { return(false); } } return(true); }
public ScriptString SendNotificationToUser(ScriptNumber priority, ScriptString user, ScriptString title, ScriptString message, ScriptString sound) { var response = PushMessage( user.ToPrimitiveString(), title.ToPrimitiveString(), priority.ToPrimitiveInt32(), message.ToPrimitiveString(), sound.ToPrimitiveString() ); ProcessResponse(response); return(new ScriptString(response.ErrorMessage ?? response.Content)); }
private static string?TranslateString(ScriptString @string) { string?translation = null; //DB.TranslatedStrings.Get(@string.Value, @string.Key.Path); if (translation != null) { IdManager.Transleated.AddLast(translation); } else { IdManager.NotTransleated.AddLast(@string.Value); } return(translation); }
public bool Read(ref NetInputBuffer iStream) { if (iStream.ReadUint(ref m_idNPC) != sizeof(uint)) { return(false); } if (iStream.ReadInt(ref m_idScript) != sizeof(int)) { return(false); } if (iStream.ReadInt(ref m_idMission) != sizeof(int)) { return(false); } if (iStream.ReadInt(ref m_bDone) != sizeof(int)) { return(false); } if (iStream.ReadByte(ref m_yTextCount) != sizeof(byte)) { return(false); } for (int i = 0; i < m_yTextCount; i++) { m_aText[i] = new ScriptString(); m_aText[i].Read(ref iStream); } if (iStream.ReadByte(ref m_yDemandCount) != sizeof(byte)) { return(false); } for (int i = 0; i < m_yDemandCount; i++) { m_aDemandItem[i] = new SMissionBonusItem(); m_aDemandItem[i].Read(ref iStream); } return(true); }
public void RadioMessage(ushort channel, string text) { var ss = new ScriptString(text); Global_RadioMessage(channel, ss.ThisPtr); }
public virtual void Say(Say how_say, string text, params object[] args) { var ss = new ScriptString(string.Format(text, args)); Crit_Say(thisptr, (byte)how_say, ss.ThisPtr); }
public bool Set(string name, int[] data) { var ss = new ScriptString(name); return Global_SetAnyData(ss.ThisPtr, new IntArray(data).ThisPtr); }
public virtual void PlaySound(string sound_name, ushort hx, ushort hy, uint radius) { var ss = new ScriptString(sound_name); Map_PlaySoundRadius(thisptr, ss.ThisPtr, hx, hy, radius); }
public ScriptField(string alias, string type, Access access, Usage usage, ScriptObject declarer, ScriptString phrase, Compiler.Scope scope) : this(alias, type, access, usage, declarer, new ScriptWild(ScriptLine.GetWilds(phrase).Array, "(\\)", ' '), scope) { }
public virtual void SetText(ushort hx, ushort hy, uint color, string text) { var ss = new ScriptString(text); Map_SetText(thisptr, hx, hy, color, ss.ThisPtr); }
public void Log(string s) { var ss = new ScriptString(s + Environment.NewLine); Global_Log(ss.ThisPtr); }
public virtual void ShowScreen(Screen screen_type, uint param, string func_name) { var ss = new ScriptString(func_name); Cl_ShowScreen(thisptr, (int)screen_type, param, ss.ThisPtr); }
public void Send(ScriptString data) { this.Send(data.ToPrimitiveString()); }
public virtual void Say(Say how_say, string text) { var ss = new ScriptString(text); Crit_Say(thisptr, (byte)how_say, ss.ThisPtr); }
public void SetText(ScriptString pstrSection) { m_nType = ENUM_EVENT_ITEM_TYPE.EVENT_ITEM_TYPE_TEXT; m_strString = pstrSection; }
public void SetSection(ScriptString pstrSection) { m_nType = ENUM_EVENT_ITEM_TYPE.EVENT_ITEM_TYPE_SECTION; m_strString = pstrSection; }
public virtual void SayMsg(Say how_say, ushort text_msg, uint str_num, string lexems) { var ss = new ScriptString(lexems); Crit_SayMsgLex(thisptr, (byte)how_say, text_msg, str_num, ss.ThisPtr); }
public static void Tests_GlobalFunctions() { var module_ = ScriptEngine.GetModule("test", asEGMFlags.asGM_ALWAYS_CREATE); module_.AddScriptSection("GlobalFunctions", @" int One() { return 1; } bool SomeTest(int i) { return i % 2 == 0; } float Square(float x) { return x * x; } int RefFunc(string& s) { return s.length(); } int HandleFunc(string@ s) { return s.length(); } shared interface IFoo { int get_Prop(); } class CFoo : IFoo { CFoo(int i) { this.i = i; } int i; int get_Prop() { return i; } } IFoo@ GetAsInterface(int i) { return CFoo(i); } CFoo@ GetNull() { return null; } "); module_.Build(); dynamic module = module_ as dynamic; assert (module.One() == 1, "Calling parameterless function"); assert (module.SomeTest(2), "Calling func returning true"); assert (!module.SomeTest(3), "Calling func returning false"); assert (module.Square(1.2f) == 1.44f, "Calling float function"); var s = new ScriptString("hello"); assert (module.RefFunc(s) == 5, "Calling byref function"); assert (module.HandleFunc(s) == 5, "Calling handle function"); assert (module.GetAsInterface(2) != null, "Calling function returning script object"); assert(module.GetNull() == null, "Caling null returning function"); }
public void RadioMessageMsg(ushort channel, ushort text_msg, uint str_num, string lexems) { var ss = new ScriptString(lexems); Global_RadioMessageMsgLex(channel, text_msg, str_num, ss.ThisPtr); }
public virtual void PlaySound(string sound_name) { var ss = new ScriptString(sound_name); Map_PlaySound(thisptr, ss.ThisPtr); }
public virtual void PlaySound(string sound_name, bool send_self) { var ss = new ScriptString(sound_name); Crit_PlaySound(thisptr, ss.ThisPtr, send_self); }
public virtual void SetTextMsgLex(ushort hx, ushort hy, uint color, ushort text_msg, uint str_num, string lexems) { var ss = new ScriptString(lexems); Map_SetTextMsgLex(thisptr, hx, hy, color, text_msg, str_num, ss.ThisPtr); }
public void Log(string s, params object[] args) { var ss = new ScriptString(string.Format(s + Environment.NewLine, args)); Global_Log(ss.ThisPtr); }
public void Erase(string name) { var ss = new ScriptString(name); Global_EraseAnyData(ss.ThisPtr); }
public virtual bool SetScript(string script) { var ss = new ScriptString(script); return Map_SetScript(thisptr, ss.ThisPtr); }
public bool Get(string name, IntArray data) { var ss = new ScriptString(name); return Global_GetAnyData(ss.ThisPtr, data.ThisPtr); }
//譜面読み込み void SonglistReadin() { TextAsset textasset = new TextAsset(); textasset = Resources.Load("SONGS/" + SongKeyword + "." + SongHard, typeof(TextAsset)) as TextAsset; string TextLines = textasset.text; TextLines = ScriptString.RemoveSlash(TextLines); //コメントの場所を取り除く //TextLines = ScriptString.RemoveSpace(TextLines); //スペースがある場所を取り除く TextLines = ScriptString.RemoveTab(TextLines); //タッブがある場所を取り除く TextLines = ScriptString.RemoveEnter(TextLines); //複数のエンターの場所を取り除く string[] s = TextLines.Split('\n'); drbfile.onpuWeightCount = 0; for (int i = 0; i < s.Length; i++) { //空き行を抜く if (s[i] == "") { continue; } //命令行を認識 if (s[i].Substring(0, 1) == "#") { //OFFSET認識 if (s[i].Substring(0, Mathf.Min(s[i].Length, "#OFFSET".Length)) == "#OFFSET") { string ss = s[i]; ss = ss.Replace("#OFFSET=", ""); ss = ss.Replace(";", ""); drbfile.offset = float.Parse(ss); } //BEAT認識 if (s[i].Substring(0, Mathf.Min(s[i].Length, "#BEAT".Length)) == "#BEAT") { string ss = s[i]; ss = ss.Replace("#BEAT=", ""); ss = ss.Replace(";", ""); drbfile.beat = float.Parse(ss); } //BPM_NUMBER認識 //if (s[i].Substring(0, "#BPM_NUMBER".Length) == "#BPM_NUMBER") //{ // string ss = s[i]; // ss = ss.Replace("#BPM_NUMBER=", ""); // ss = ss.Replace(";", ""); // drbfile.bpms = new List<BPMS>(); //} //SCN認識 //if (s[i].Substring(0, "#SCN".Length) == "#SCN") //{ // string ss = s[i]; // ss = ss.Replace("#SCN=", ""); // ss = ss.Replace(";", ""); // drbfile.scns = new List<SCNS>(); //} //BPM [i]認識 if (s[i].Substring(0, Mathf.Min(s[i].Length, ("#BPM [" + drbfile.bpms.Count + "]").Length)) == ("#BPM [" + drbfile.bpms.Count + "]")) { string ss = s[i]; string ss2 = s[i + 1]; ss = ss.Replace("#BPM [" + drbfile.bpms.Count + "]=", ""); ss = ss.Replace(";", ""); ss2 = ss2.Replace("#BPMS[" + drbfile.bpms.Count + "]=", ""); ss2 = ss2.Replace(";", ""); BPMS bpms = new BPMS(); bpms.bpm = float.Parse(ss); bpms.bpms = float.Parse(ss2); drbfile.bpms.Add(bpms); } //SC [i]認識 if (s[i].Substring(0, Mathf.Min(s[i].Length, ("#SC [" + drbfile.scns.Count + "]").Length)) == ("#SC [" + drbfile.scns.Count + "]")) { string ss = s[i]; string ss2 = s[i + 1]; ss = ss.Replace("#SC [" + drbfile.scns.Count + "]=", ""); ss = ss.Replace(";", ""); ss2 = ss2.Replace("#SCI[" + drbfile.scns.Count + "]=", ""); ss2 = ss2.Replace(";", ""); SCNS sc = new SCNS(); sc.sc = float.Parse(ss); sc.sci = float.Parse(ss2); drbfile.scns.Add(sc); } //NoteDesigner認識; if (s[i].Substring(0, Mathf.Min(s[i].Length, "#NDNAME".Length)) == "#NDNAME") { string ss = s[i]; ss = ss.Replace("#NDNAME=", ""); ss = ss.Replace(";", ""); ss = ss.Replace("\'", ""); drbfile.ndname = ss; } } //ノーツ行を認識 else { //Notesデータ取得 string ss = s[i].Replace("<", ""); string[] sss = ss.Substring(0, ss.Length - 2).Split('>'); TheOnpu onpu = new TheOnpu(); onpu.id = int.Parse(sss[0]); onpu.kind = int.Parse(sss[1]); if (onpu.kind == 12) { onpu.kind = 6; } if (onpu.kind == 8) { onpu.kind = 7; } onpu.ichi = float.Parse(sss[2]); onpu.pos = float.Parse(sss[3]); onpu.width = float.Parse(sss[4]); onpu.nsc = sss[5]; onpu.isnadnsc = sss[5].Contains(":"); if (!onpu.isnadnsc) { onpu.insc = float.Parse(sss[5]); } onpu.insc = onpu.insc == 0.0f ? 1.0f : onpu.insc; onpu.parent = int.Parse(sss[6]); if (sss.Length > 7) { onpu.mode = sss[7]; } else { onpu.mode = "n"; } if (onpu.mode == "P") { onpu.isnadnsc = true; } //ミラー処理 if (GameMirror) { onpu.pos = 16 - onpu.pos - onpu.width; if (onpu.kind == 13 || onpu.kind == 14) { onpu.kind = onpu.kind == 13 ? 14 : 13; } } drbfile.onpu.Add(onpu); drbfile.onpuWeightCount += OnpuWeight[onpu.kind]; } } }
public bool IsAnyData(string name) { var ss = new ScriptString(name); return Global_IsAnyData(ss.ThisPtr); }
public virtual bool Misc_SetScript(string func_name) { var ss = new ScriptString(func_name); return NpcPlane_Misc_SetScript(thisptr, ss.ThisPtr); }
public static void asAssert(bool cond, IntPtr msg) { var ss = new ScriptString(msg); Assert(cond, ss.ToString()); }
public void SendLine(ScriptString data) { this.Send(data.ToPrimitiveString() + this._newLineString); }
public virtual void RunClientScript(string func_name, int p0, int p1, int p2, string p3, IntArray p4) { var func_name_ = new ScriptString(func_name); var p3_ = p3 != null ? new ScriptString(p3) : null; Cl_RunClientScript(thisptr, func_name_.ThisPtr, p0, p1, p2, p3_ != null ? p3_.ThisPtr : IntPtr.Zero, p4 != null ? p4.ThisPtr : IntPtr.Zero); }
public void SendBytes(ScriptString hexData) { this.SendBytes(this.hexStringToByteArray((string)hexData)); }
public virtual void SetLexems(string lexems) { var ss = new ScriptString(lexems); Item_SetLexems(thisptr, ss.ThisPtr); }