I've implemented wiper animations in the next version of the Lincolns: (change the animations, classes to suit). Its probably messy but you'll get the idea. The wiper useractions are only on while the engine is running.
wiperson.sqs
_car = _this select 0
_player = player
?(_player in _car):goto "start"
#start
_car removeaction WipersTurnedOff
_car removeaction WipersAreOn
; reset the wipers when engine is off
_car animate ["AniWipersL",0]
_car animate ["AniWipersR",0]
wiperson=false;
#AI
~0.001
?(_player in _car):goto "stateloop"
?(not alive _car):goto "end"
goto "AI"
#stateLoop
_direction1 = getpos _car select 2
?(isengineon _car and _player in _car) : goto "wipersAreOff"
~0.001
?(not alive _car):goto "end"
goto "stateLoop"
#wipersAreOff
WipersAreOn = _car addAction ["Turn Wipers On","\cwkLdip\wipers.sqs"];
#waitForWipers
direction1 = getpos _car select 2
~0.001
?!(isengineon _car): goto "Start"
?!(_player in _car): goto "Start"
;?(speed _car <20):goto "Start"
?(not alive _car):goto "end"
?!(wiperson):goto "waitForWipers";
WipersTurnedOff = _car addAction ["Turn Wipers Off","\cwkLdip\wipers.sqs"];
_car removeaction WipersAreOn
#Loop
?!(isengineon _car): goto "Start"
?!(_player in _car): goto "Start"
_car say "DIPLincolnWiper1"
_car animate ["AniWipersL",1]
_car animate ["AniWipersR",1]
~1
_car say "DIPLincolnWiper2"
_car animate ["AniWipersL",0]
_car animate ["AniWipersR",0]
?!(wiperson):goto "reset"
~1
goto "loop"
#reset
_car say "DIPLincolnWiper2"
_car animate ["AniWipersL",0]
_car animate ["AniWipersR",0]
_car removeaction WipersTurnedOff
goto "wipersAreOff"
#End
EXIT
Wipers.sqs
?(wiperson):wiperson=false;exit;
?!(wiperson):wiperson=true;exit;
Animations in config.cpp
        Â
class AniWipersL
{
animperiod = 1;
type = "rotation";
axis = "osa_LeftWiper";
selection = "LeftWiper"
angle0=0;
angle1=-1.623150;
};
class AniWipersR
{
animperiod = 1;
type = "rotation";
axis = "osa_RightWiper";
selection = "RightWiper"
angle0=0;
angle1=-1.623150;
};
All.sqs run from the init eventhandler
_car = _this select 0
wiperson = false
[_car] exec "\cwkLDIP\wiperson.sqs"
In the eventhandler all the all.sqs
init = [_this select 0] exec "\CWKLDIP\all.sqs";