<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def RunScript(self, script):
        '''
        Actuate on the vehicle through a script. The script is a sequence of
        commands. Each command is a sequence with the first element as the
        command name and the remaining values as parameters.

        The script is executed asynchronously by a timer with a period of 0.1
        seconds. At each timer tick, the next command is executed if it's ready
        for execution.

        If a command name starts with '.', then the remaining characters are a
        method name and the arguments are passed to the method call. For
        example, the command ('.SetEuler', 0, math.pi / 2, 0) sets the vehicle
        nose up. The methods available for that type of command are in the
        class property script_available_methods.

        The other possible commands are:
         - wait(sec): wait for sec seconds. Because of the timer period, some
           inaccuracy is expected depending on the value of sec.
         - restart: go back to the first command.

        Example::

            vehicle.RunScript((
                ('.SetEuler', 0, 0, 0), # Set vehicle level
                ('wait', 2), # Wait for 2 seconds
                # Rotate continuously on the x-axis at a rate of 90 degrees per
                # second
                ('.SetAngvel', (1, 0, 0), math.pi / 2),
                ('wait', 5), # Let the vehicle rotating for 5 seconds
                ('restart',), # Restart the script
            ))
        '''
        self.script = script
        self.script_command = 0
        self.script_command_start_time = 0
        self.script_command_state = 'ready'
        self.script_timer.Start(100)
        self.script_wait_time = 0