Macser_old 0 Posted February 23, 2007 Greetings. I've made a few animations for a motorcycle addon and have most of them configured and working.But I wanted to add a finishing touch.And I think the best way to go about it,is to use a script. Unfortunately scripting isn't one of my strengths. So,I'd really appreciate any help on this. Basically,I'd like to call animations based on the vehicle's speed. When the vehicle comes to a halt,I'd like the rider to put their feet out,as if to stabilize it.Then pull their feet back in as it moves off again. I've tried this bit of scripting without much sucess <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_veh = _this select 0 _unit = (driver _veh) #ChkSpeed ?!(alive _veh):exit ?speed _veh <5:_unit Switchmove "RcnBkrFootDwn" ?speed _veh >5:_unit Switchmove "RcnBkrFootUp" ~1 goto "ChkSpeed" And here's the CfgMovesMc section of the .cpp <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class CfgMovesMC { class Default{}; class DefaultDie:Default{}; class States { class Driver:Default{}; class ReconBiker:Driver { file="\Armalyte\A\ReconBiker.rtm"; speed=10000000000.0; looped=1; interpolationSpeed=1; connectTo[]={"ReconBikerDying",1}; interpolateTo[]={"ReconBikerDying",0.1}; }; class RcnBkrFootDwn:ReconBiker { file="\Armalyte\A\RcnBkrFootDwn.rtm"; speed=-0.5; looped=0; interpolationSpeed=1; connectFrom[]={"ReconBiker",1}; connectTo[]={"RcnBkrFootUp",1}; interpolateTo[]={"ReconBikerDying",0.1}; }; class RcnBkrFootUp:ReconBiker { file="\Armalyte\A\RcnBkrFootUp.rtm"; speed=-0.5; looped=0; interpolationSpeed=1; connectFrom[]={"RcnBkrFootDwn",1}; connectTo[]={"ReconBiker",1}; interpolateTo[]={"ReconBikerDying",0.1}; }; class ReconBikerDying:DefaultDie { actions="NoActions"; file="\Armalyte\A\ReconBiker_dead.rtm"; speed="-0.5"; looped=0; soundEnabled=0; connectFrom[]={"ReconBiker",1}; }; class ReconBikerDead:ReconBikerDying { actions="DeadActions"; file="\Armalyte\A\ReconBiker_dead_stat.rtm"; speed=10000000000.0; terminal=1; connectFrom[]={"ReconBikerDying",1}; connectTo[]={"DeadState",1}; }; }; }; That's it in a nutshell.So if somebody could possibly give me an example of code that would work,or point out my mistakes,I'd be grateful. Thanks for your time. Oh yeah,here's what it looks like Macser Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 1, 2007 Do you get any errors? Or is it just not working? How is the script launched and how is the scripts argument defined? BTW, I would use >= 5 just to cover for if the speed somehow stays at five. Share this post Link to post Share on other sites
Macser_old 0 Posted March 1, 2007 Quote[/b] ]Do you get any errors? Or is it just not working? How is the script launched and how is the scripts argument defined?BTW, I would use >= 5 just to cover for if the speed somehow stays at five. Thanks for the reply Unicorn.I was resigned to defeat. I haven't gotten any errors so far.Script seems to be running,but the animations don't seem to be called. I've been passing the vehicle itself through the script,by way of a trigger,set to true,in the mission editor. In the on activation field: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">[VehicleName] exec "check.sqs" As my scripting skills are poor,I'm not too sure what you mean about argument definition. I don't believe the anims are the problem though.Those I can run with switchmove in a waypoint.So at least they're available. Do you think adding the "=" might have an effect? How would you go about scripting something like this idea? Anyway,Whether you can help or not,I appreciate the reponse. Macser. Share this post Link to post Share on other sites
granQ 293 Posted March 1, 2007 Quote[/b] ]Do you get any errors? Or is it just not working? How is the script launched and how is the scripts argument defined?BTW, I would use >= 5 just to cover for if the speed somehow stays at five. Thanks for the reply Unicorn.I was resigned to defeat. I haven't gotten any errors so far.Script seems to be running,but the animations don't seem to be called. I've been passing the vehicle itself through the script,by way of it's init field,in the mission editor. As my scripting skills are poor,I'm not too sure what you mean about argument definition. I don't believe the anims are the problem though.Those I can run with switchmove in a waypoint.So at least they're available. Do you think adding the "=" might have an effect? How would you go about scripting something like this idea? Anyway,Whether you can help or not,I appreciate the reponse. Macser. thats really cool, didnt know it was possible at all. myDriver Switchmove "RcnBkrFootDwn" so that works in a waypoint? Thought you couldnt override the animation played in a vehicle. about the script it looks OK.. _unit = (driver _veh) you dont need the ( ). Other then that it looks like something I could have done. Share this post Link to post Share on other sites
Macser_old 0 Posted March 1, 2007 Quote[/b] ]thats really cool, didnt know it was possible at all.myDriver Switchmove "RcnBkrFootDwn" so that works in a waypoint? Thought you couldnt override the animation played in a vehicle. Well,it works,but it runs the animation to the last frame,then halts.So you need to run switchmove again to change it to another. This is of course assuming you don't have any transition(connecting) anims created and configured. Which is the case with me. Thanks fer the input GranQ. Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 2, 2007 Well, I don't know much about addons - kinda figured the script was integrated in it. Since I saw you used _this select 0, I was wondering how you launched the script. As you put in the vehiclename it should be ok. Did you say you launch it through a trigger set to true? Does that mean the script is launched before you get on the motorcycle? Try putting _unit = driver _veh below the #chkspeed - as it is now the variable _unit is only updated when the script is launched.... Since you are asking what I would do: Try writing it in sqf format Share this post Link to post Share on other sites
Macser_old 0 Posted March 2, 2007 Hello again Unicorn, I did eventually want to integrate the script into the vehicle Config.cpp,using an init eventhandler.But I thought it better to just tackle the script manually at first,then move on from there. If I was sucessful. So I've just been using a trigger to test it out with an empty bike.Which I jump into myself. Also I thought I might try another line in there to halt the script, when the driver hops out.And resumes again when they hop back in. Somethin' like: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">@(_unit in _veh) But I may be misunderstanding how this works. Quote[/b] ]Try putting _unit = driver _veh below the #chkspeed - as it is now the variable _unit is only updated when the script is launched.... I think I see what you mean here,I'll give that a shot. Quote[/b] ]Since you are asking what I would do: Try writing it in sqf format Sqf?So,as a function it would be more memory efficient?And I suppose it's the kind of code that wouldn't necessarily need to be halted.That's a good suggestion. Thanks Unicorn. Good to see experienced members still browsing this end of the forums. Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 2, 2007 Lol, I just registered after I got OFP, but didn't pay much attention to the multiplayer aspect or forums (had dialup)... Anyway, I'm usually being encouraged to use sqf scripts whenever I ask for some help. I'll leave the reason-giving to the pro's Personally I would run the script only when someone got onto the bike - using eventhandlers. But I'm not sure if that would be ok when you make it as an addon. I don't think @ (waitUntil?) fits well here. Unless you restructure the script it would just halt after changing drivers or something like that. Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 2, 2007 Lol, I just registered after I got OFP, but didn't pay much attention to the multiplayer aspect or forums (had dialup)... Anyway, I'm usually being encouraged to use sqf scripts whenever I ask for some help. I'll leave the reason-giving to the pro's Personally I would run the script only when someone got onto the bike - using eventhandlers. But I'm not sure if that would be ok when you make it as an addon. I don't think @ (waitUntil?) fits well here. Unless you restructure the script it would just halt after changing drivers or something like that. Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 2, 2007 Lol, I just registered after I got OFP, but didn't pay much attention to the multiplayer aspect or forums (had dialup)... Anyway, I'm usually being encouraged to use sqf scripts whenever I ask for some help. I'll leave the reason-giving to the pro's Personally I would run the script only when someone got onto the bike - using eventhandlers. But I'm not sure if that would be ok when you make it as an addon. I don't think @ (waitUntil?) fits well here. Unless you restructure the script it would just halt after changing drivers or something like that. Share this post Link to post Share on other sites
Macser_old 0 Posted March 2, 2007 Ah.I see.Was wonderin' why you hadn't made many posts. I only recently got broadband meself.One of the first things I did was register here.It's a great source of info.And even if OFP is an old game,it's still a good learnin' tool. I'll tell ya what though.Yer last few posts have got me on track. I tried the edit you suggested.Moved the "_unit" variable inside the main loop.And it bloody worked! Excellent! Here's the script before: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_veh = _this select 0 _unit = (driver _veh) #ChkSpeed ?!(alive _veh):exit ?speed _veh <5:_unit Switchmove "RcnBkrFootDwn" ?speed _veh >5:_unit Switchmove "RcnBkrFootUp" ~1 goto "ChkSpeed" And after the edit: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_veh = _this select 0 #ChkSpeed ?!(alive _veh):exit _unit = driver _veh ?speed _veh <=5:_unit Switchmove "ReconBikerStop" ?speed _veh >=5:_unit Switchmove "ReconBiker" ~1 goto "ChkSpeed" I think people keep tellin us to use functions because they're just more streamlined.Unlike a script they get activated as soon as the mission starts,and stay there until the end.Problem is,even though an .sqf is faster and neater,it doesn't look as flexible as a script.At least,not to me.And once it gets goin' it can't be stopped.But,I'm no expert. As for the eventhandler.I know you can integrate it into yer addon's .cpp,because that's how the dkm suspension script works.That way you don't have to keep entering it into a unit's init field.Just pop yer unit in the mission editor and the script will run automatically. Would you be talkin about the "getin" variety? Anyway,Many thanks Unicorn.You've been a great help. Keep postin' Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 2, 2007 Good to hear! I suppose you can regard my reg date as Jan07 I was talking about getin, yes. In your loop you can check for: ?(isNil (driver _veh)):exit so script is started when you enter and stops when you get out.. I missed goto at first, but now I have to say that the for loop works just as well. You can stop sqf scripts though, by using terminate, I think. Share this post Link to post Share on other sites
Macser_old 0 Posted March 3, 2007 Hmm,just when ye think one problem is solved, another one crops up.It seemed like such a simple concept. And with some nudges in the right direction,from HulkingUnicorn and GranQ,I seemed to be getting somewhere. This little script works just fine. <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_veh = _this select 0 #ChkSpeed ?!(alive _veh):exit _unit = driver _veh ?speed _veh <=5:_unit Switchmove "ReconBikerStop" ?speed _veh >=5:_unit Switchmove "ReconBiker" ~1 goto "ChkSpeed" As long as you're using "static" anims.Which I have been for the purpose of testing. Unfortunately,when you try using an animation Which has movement,a simple script suddenly starts looking more complex.I should've seen it before.Suppose I just got distracted by getting it to work in the first place. Let me explain.Substituting the "static" anims with moving ones, will result in them "looping",until the speed changes again. When the script reaches this line <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">?speed _veh <=5:_unit Switchmove "ReconBikerStop" And the condition is returned "true",ie:the vehicle is coming to a halt or stopped.It'll keep executing the "switchmove" command until the vehicle speed goes above 5.Then moves on to the next line,and proceeds to do the same with the other anim. So,in effect,the driver looks like they're putting their foot up and down,over and over again. What I need to do,is find some way of playing the anims once,each time their conditions are met.Preventing switchmove from being repeatedly executed.Yet still maintaining a main loop to activate animations when needed. I don't know,maybe calling a couple of extra scripts within the main loop,that run then exit? Well, in the mean time,I'm gonna keep tryin. But if anyone can help,please do. Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 4, 2007 playMove? Anyway, your conditioncheck overlaps... You should remove 1 of the = signs... Instead of: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> ?speed _veh <=5:_unit Switchmove "ReconBikerStop" ?speed _veh >=5:_unit Switchmove "ReconBiker" Do: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> ?speed _veh <5:_unit Switchmove "ReconBikerStop" ?speed _veh >=5:_unit Switchmove "ReconBiker" Also... I'm haven't really used animations before but: If the speed goes below 5, the biker will put his feet to the sides, yes? Then there is a little delay before the script checks again. If the speed never goes up again or the rider goes off, this code will be triggered again and again. So it seems something more complex might be needed. I do have an idea though. Put a loop after you play the feet-to-the-sides animation that does nothing at all, but prevents the animation from playing again. <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> _veh = _this select 0 #ChkSpeed ?!(alive _veh):exit _unit = driver _veh ?speed _veh <5:_unit Switchmove "ReconBikerStop" #staticLoop ?speed _veh <5:goto "staticLoop" ?speed _veh >=5:_unit Switchmove "ReconBiker" #staticLoop2 ?speed _veh >=5:goto "staticLoop2" ~1 goto "ChkSpeed" Good luck! Share this post Link to post Share on other sites
Macser_old 0 Posted March 5, 2007 I feel like such a pratt That works a treat,and it's so simple. No need to call in any unnecessary extra scripts. With a few tweaks it's workin' the way I wanted it to. It looks a hell of a lot more natural now. Here's the amended animation script: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_veh = _this select 0 #CHKSPEED ?!(alive _veh):exit _unit = driver _veh ?speed _veh >=3:_unit Switchmove "ReconBikerFtUp" #STATICLOOP ?speed _veh >=3:goto "staticLoop" ?speed _veh <10:_unit Switchmove "ReconBikerFtDwn" #STATICLOOP2 ?speed _veh <10:goto "staticLoop2" ~1 goto "CHKSPEED" As you can see,I tweaked the speed to suit. And also reversed the order of the loops. The script doesn't have immediate effect so I'm now using one static anim and two moving anims. The static anim takes the place of the normal driver version. In otherwords as soon as you "get in" your feet are out. But because I'm using the "switchmove" command,that anim won't be played again while the script runs.And is only mentioned in the Config.Cpp. Here's the relevant sections of the .Cpp: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> class CfgNonAIVehicles { class ProxyCrew{}; class ProxyDriver:ProxyCrew{}; class ProxyReconBiker:ProxyDriver{}; }; class CfgVehicleActions { ReconBiker="ReconBiker"; }; class CfgMovesMC { class Default{}; class DefaultDie:Default{}; class States { class Driver:Default{}; class ReconBiker:Driver { file="\Armalyte\A\ReconBikerStop.rtm"; <<<(The static animation) speed=10000000000.0; looped=1; interpolationSpeed=1; }; class ReconBikerFtUp:Driver { file="\Armalyte\A\ReconBikerFtUp.rtm"; speed=1.5; looped=0; interpolationSpeed=1; }; class ReconBikerFtDwn:Driver { file="\Armalyte\A\ReconBikerFtDwn.rtm"; speed=3.0; looped=0; interpolationSpeed=1; }; }; }; Hopefully this has been of value to someone other than myself. Anyway,thanks yet again Unicorn. Without yer help,I'd probably still be goin' round in circles. Share this post Link to post Share on other sites
Macser_old 0 Posted March 6, 2007 Ok,I've gotten my animations working,via the script and .Cpp On the previous page. So I decided,rightly or wrongly,to try incorporating that script into the .Cpp,using an EventHandler. Despite being a total idiot,and running into ".Scope" errors; (it's nearly always something small you miss).I have managed to successfully implement the EventHandler. I tried the "engine" variety,seeing as the script relies on the vehicles movement. Just in case there's any Cfg/Script newbies like myself reading this. Let me explain why I got ".Scope" errors. I was trying to define the EH as a subclass of the "parent" class;CfgVehicles.When I should've defined it as part of the "ReconBike"class.Which is my addon.I also didn't properly close my addon's class,which is what gave me the errors. Here's the .Cpp from CfgVehicles onwards: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> class cfgVehicles { class All {}; class AllVehicles: All {}; class Land: AllVehicles {}; class LandVehicle: Land {}; class Motorcycle: LandVehicle {}; class Jawa: Motorcycle {}; class ReconBike: Jawa { scope=public; vehicleClass="Car"; displayName = "ReconBike"; unloadInCombat = true; cost = 1000; maxSpeed = 250; crew = "SoldierWb"; side =1; nameSound = "car"; accuracy = 0.500000; model = "\Armalyte\v\ReconBike3.p3d"; picture = ""; Icon = "\Armalyte\v\Edicon.paa"; soundEngine[] = {"\Armalyte\snd\fav.wss",1,1.2}; fuelCapacity = 50; armor = 50; weapons[]={}; magazines[] = {}; driverAction = "ManActReconBiker"; cargoAction[] = {}; ejectDeadDriver = 1; hideweaponsdriver= 1; transportSoldier = 0; transportAmmo = 0; driverCanSee = "2+8+16"; gunnerCanSee = "2+8"; terrainCoef = 0.25000; preferRoads =0; unitInfoType = "UnitInfoAirplane"; hideUnitInfo = 1; armorWheels = 1.12; damperSize = 0.1; damperForce = 30; predictTurnSimul = 2.0; predictTurnPlan = 2.0; }; <<<<<<My mistake,needs to be removed class EventHandlers { engine="[_this select 0] exec {\Armalyte\Animbiker.sqs}"; }; <<<<Also needs 1 more "};" to close CfgVehicles }; Here it is, corrected: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> predictTurnSimul = 2.0; predictTurnPlan = 2.0; class EventHandlers { engine="[_this select 0] exec {\Armalyte\Animbiker.sqs}"; }; }; }; Solving this problem was made a lot easier by searching the forums.So if like me,you're just getting started,then definately use the search function. And if you run into problems,and you solve them,do post the results. That way others can study them,and not have to repeatedly post in on the same subject. Btw,if I don't find out in the meantime.Would there be any advantage to using "getin" EH,as HulkingUnicorn suggested? Or would "Engine" EH work just as well? I was only trying it out as an exercise. Also,does anyone think I would have problems with the script, or these EHs,in a multiplayer environment? Macser Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 6, 2007 Good to see it's working mate - I better look into this addon stuff someday... Try to test with two different riders. If that works, there is no need to change to getin Share this post Link to post Share on other sites
Macser_old 0 Posted March 6, 2007 Hows it goin Unicorn? Tried a few different units,ordering them in and out of an empty bike.No problems. I think I'll have to adjust the "speed" condition check,to allow for speed in negative values as well though. As in,when the vehicle moves in reverse.But that shouldn't be to difficult. Time for some experimentation now. Hmm..Maybe a height check,when the bike gets some air.Have the rider do a little lean animation. Anyway. Thanks man Share this post Link to post Share on other sites
Macser_old 0 Posted March 7, 2007 Why does this run fine in a trigger: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">(getpos driver Bike select 2)>20:hint"Up we go" But this won't work in a script: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> _veh=_this select 0 _unit= driver _veh ?(getpos _unit select 2)>20:hint "Up we go" exit They are essentially the same thing,expressed differently.Yes? No errors occur,just no "hint" when the condition is true. Share this post Link to post Share on other sites
Planck 1 Posted March 7, 2007 Try: ?(getpos (driver _veh) select 2)>20:hint "Up we go" Planck Share this post Link to post Share on other sites
Macser_old 0 Posted March 7, 2007 Thanks for the reply Planck But no deal. Incorrect syntax would show up an error,wouldn't it? I mean,I can't see any errors. Maybe I'm way off,but if no error is being reported,would that mean the conditon isn't being resolved? Would that happen,if for some reason the height of the "driver" relative to the "vehicle" object was being returned,rather than distance to the ground?If so,that wouldn't return a value,cause the "driver" doesn't move.Yeah? <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">?(getpos (driver _veh) select 2)>20:hint "Up we go" Seeing as I'm essentially a newbie with scripts. Let me just verify I'm understanding how this line works. "?" states what follows is a conditon. getpos returns an array[x,y,z] relative to the "driver" of the variable "_veh". "select 2" is the "z" element of the array to be processed. And if it's value is greater than 20,the condition is true. So the "hint" command is executed.(Hint command used for testing only) Am I wrong in this? Am I missing something really obvious? Macser Share this post Link to post Share on other sites
Planck 1 Posted March 8, 2007 In essence.......when a unit enters a vehicle as driver they 'become' the vehicle, at least that is the way it was in OFP, however it might not hold true in ArmA.....I will try some experiments. Planck Share this post Link to post Share on other sites
Macser_old 0 Posted March 8, 2007 Just so ye know,it's flashpoint I'm workin with. But I'm sure the results of your experiments will be of value anyway.Ofp and Arma have scripting commands in common. Incidently I came across a link to this thread relating to "getpos" and Arma, in the BIS wiki.Doubt it can help with my problem,but you may find it useful. http://www.flashpoint1985.com/cgi-bin....t=57918 Thanks again for the interest Planck. Share this post Link to post Share on other sites
Macser_old 0 Posted March 9, 2007 Now,if I can't resolve the above "getpos" problem,I'll just have to live without it.But in the meantime something else has cropped up. The script as it stands: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> _veh = _this select 0 #CHKSPEED _unit = driver _veh ~1 ?!(alive _veh):exit ?(IsNull _unit):exit ?speed _veh >=3:_unit Switchmove "ReconBikerFtUp" #STATICLOOP ?speed _veh >=3:goto "staticLoop" ?speed _veh <10:_unit Switchmove "ReconBikerFtDwn" #STATICLOOP2 ?speed _veh <10:goto "staticLoop2" goto "CHKSPEED" Problem is,even when the driver is dead,and has been ejected out of the vehicle,he's still responding to the script.In other words,he's lying there dead. Then when the bike slows down and stops, (with no-one on it)the "foot down" animation plays. I had assumed "?(IsNull _unit)"would take care of that.I also used "Hint" in place of "exit" to verify the line. It does indeed exit at that point. Btw,this script is run using an "Engine" EH,within the vehicle's .Cpp. I've tried using the "GetIn" EH,but that yields exactly the same results. Planck said the driver "becomes" the vehicle when he's in it. Perhaps he's remaining in that state even after death? If so,How do I go about "detaching" him? Any clues? Share this post Link to post Share on other sites
HulkingUnicorn 0 Posted March 12, 2007 Hi again - didn't know you were flashpoint scripting Anyway... IsNull means it doesn't excist, but there is a body, yes? Try using !alive instead, and post your findings. As for the height thing, try checking for the vehicles pos instead - does that work? Share this post Link to post Share on other sites