I've been thinking for a while about making a parser to interpret specially formatted strings added into speedwalks to perform some more automated activity, primarily for use in advanced speedwalking.
Here's some concepts of what I'm thinking of:
The entire thing would be sent through a plugin that would parse the entire line. It would send initial speedwalk normally via "world.Send world.EvaluateSpeedwalk()." Once it found a [] pair, it would stop to parse it, and what happens next depends on the data inside.
In this case, the "trigw" would force a trigger(trig) to be created to match the requested line, it would also wait(w) for the trigger to be matched before continuing the speedwalk.
Here's a few other things for complex matching:
This is all I can think of at the moment. Comments requested and any positive or negative feedback welcomed. This is still just a concept, but I'd like to see if anyone else would find this sort of thing useful to add to the functionality of speedwalks.
Here's some concepts of what I'm thinking of:
2n3es[trigw: *lands safely*](out)4esThe entire thing would be sent through a plugin that would parse the entire line. It would send initial speedwalk normally via "world.Send world.EvaluateSpeedwalk()." Once it found a [] pair, it would stop to parse it, and what happens next depends on the data inside.
In this case, the "trigw" would force a trigger(trig) to be created to match the requested line, it would also wait(w) for the trigger to be matched before continuing the speedwalk.
Here's a few other things for complex matching:
[trigs: *something* script] - Create the trigger to match on *something*, call function "script" when
it is matched.
[trigsp: *something* PluginName script] - Create the trigger to match on *something*, call the function "script" in the
plugin named "PluginName" when it is matched.
[trigv: *something* variable] - Create the trigger to match on *something*. If possible, parse whatever is
stored in variable through world.EvaluateSpeedwalk and send. If world.EvaluateSpeedwalk fails, send data as stored
in the variable.
[trigw: *something*] - Create the trigger and wait for it to match before continuing further with the
remaining speedwalk request.
[timerw: 3] - Create a 3 second pause inside the speedwalk. After the pause, continue with
the remaining speedwalk request.
[timers: 3 script] - Create a 3 second pause inside the speedwalk. After the pause, call the
function "script".
[timersp: 3 PluginName script] - Create a 3 second pause before calling the function "script" inside of the
plugin named "PluginName"
[var: kill_name human] - Set the world variable "kill_name" to value of "human".
[varp: PluginName kill_name human] - Set the "kill_name" variable in the plugin that has a name of "PluginName" to the
value of "human".
[vard: kill_name] - Delete the variable named "kill_name"
[vardp: PluginName kill_name] - Delete the variable named "kill_name" in the plugin named "PluginName"This is all I can think of at the moment. Comments requested and any positive or negative feedback welcomed. This is still just a concept, but I'd like to see if anyone else would find this sort of thing useful to add to the functionality of speedwalks.