help with script how to make the nozzle truck according foam. make a foam truck!! object Cool : CommandScript { bool useDLKlogic; Cool() { SetValidTargets(ACTOR_VEHICLE | ACTOR_OBJECT | ACTOR_HOUSE | ACTOR_OPEN_HOUSE); SetRestrictions(RESTRICT_COOLABLE | RESTRICT_NOTBURNING); SetKeepAsCurrentCommand(true); SetPossibleCallers(ACTOR_PERSON | ACTOR_VEHICLE); SetPossibleEquipment(EQUIP_FIRE_EXTINGUISHER | EQUIP_FIREHOSE); SetPossibleExists(CPE_COOLABLE_OBJECTS); SetNeedsConnectedHose(CFN_NEEDED); } /*bool CheckPossible(GameObject *Caller) { if(!Caller->IsValid()) return false; if (Caller->GetType() == ACTOR_VEHICLE || Caller->GetEquipment()==EQUIP_FIRE_EXTINGUISHER || (Caller->GetEquipment()== EQUIP_FIREHOSE && Caller->GetFirehoseID() != 0)) return Game::ExistsCoolableobject(); return false; }*/ bool CheckTarget(GameObject *Caller, Actor *Target, int childID) { if(!Caller->IsValid() || !Target || !Target->IsValid() || Caller->GetID() == Target->GetID()) return false; if(Target->GetType() == ACTOR_PERSON) return false; GameObject o(Target); if (!o.IsValid() || o.GetNumActiveFireChilds() == 0) return false; if (o.GetType() == ACTOR_VEHICLE) { Vehicle v(Target); if ((v.GetVehicleType() == VT_POLICE_PHC || v.GetVehicleType() == VT_AMBULANCE_RHC) && !v.IsOnGround()) return false; } if (Caller->GetType() == ACTOR_PERSON ) { Person p(Caller); if (p.GetEquipment() == EQUIP_FIREHOSE && o.GetParentHouseID() > -1) return false; if (p.CanUseDLKCannon()) { useDLKlogic = true; if (o.GetNumActiveFireChilds() == 0) return false; if (p.GetEnteredCarTargetID() != -1 && p.GetEnteredCarTargetID() != Target->GetID()) return false; if (p.GetEnteredCarID() == Target->GetID()) return false; if (!p.CheckDLKExtinguishDistance(Target)) return false; if (p.GetEnteredCarTargetID() != -1/* && o.IsBurningInside()*/) return false; else if (p.GetEnteredCarTargetID() == -1 && o.IsBurningOutside()) return false; return true; } if (p.GetEnteredCarID() != -1) return false; } useDLKlogic = false; if (Caller->GetType() == ACTOR_VEHICLE || Caller->GetEquipment()==EQUIP_FIRE_EXTINGUISHER || Caller->GetEquipment()== EQUIP_FIREHOSE) { if (Caller->GetEquipment() == EQUIP_FIREHOSE && Caller->GetFirehoseID() == 0) return false; return true; } return false; } void PushActions(GameObject *Caller, Actor *Target, int childID) { if (!Target) return; if (useDLKlogic) { Person p(Caller); if (p.GetEnteredCarTargetID() != -1) { Caller->PushActionCannonExtinguish(ACTION_NEWLIST, Target, 100.f, true); } else { Caller->PushActionTurnBase(ACTION_NEWLIST, Target); Caller->PushActionCannonExtinguish(ACTION_APPEND, Target, 100.f, true); } return; } if (Caller->GetType() == ACTOR_VEHICLE) { GameObject o(Target); Vehicle v(Caller); if (!v.CheckExtinguishDistance(o)) { if (Target->GetType() == ACTOR_VEHICLE) Caller->PushActionMove(ACTION_NEWLIST, Target, TARGET_ENGINE_EXTINGUISH); else Caller->PushActionMove(ACTION_NEWLIST, Target, TARGET_EXTINGUISH); Caller->PushActionCool(ACTION_APPEND, Target); o.PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 1, false); } else Caller->PushActionCool(ACTION_NEWLIST, Target); o.PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 2, false); } else if (Caller->GetType() == ACTOR_PERSON) { if (Target->GetType()==ACTOR_VEHICLE) { Caller->PushActionMove(ACTION_NEWLIST, Target, TARGET_ENGINE_EXTINGUISH); Vector Pos = Target->GetTargetPoint(Caller, TARGET_ENGINE); Caller->PushActionTurnTo(ACTION_APPEND, Pos); } else { Caller->PushActionMove(ACTION_NEWLIST, Target, TARGET_EXTINGUISH); Caller->PushActionTurnTo(ACTION_APPEND, Target); } } Caller->PushActionCool(ACTION_NEWLIST, Target); Caller->PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 1, false); } }; object Schaum : CommandScript { Schaum() { SetGroupID(120); } bool CheckTarget(GameObject *Caller, Actor *Target, int childID) { return true; } void PushActions(GameObject *Caller, Actor *Target, int childID) { Vehicle v(Caller); if (childID == 0) { Vector Posi = v.GetPosition(); GameObject Schaum = Game::CreateObject("mod:Prototypes/Objects/Schaum/Schaum.e4p", "Bauschaum"); Schaum.SetPosition(Posi); Schaum.PushActionSwitchAnim(ACTION_NEWLIST, "open"); Schaum.PushActionWait(ACTION_APPEND, 30.0f); Schaum.PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 3, false); v.PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 2, false); } if(childID == 1) { Vehicle v(Caller); GameObject o(Target); Vector Poso = o.GetPosition(); GameObject Schaum = Game::CreateObject("mod:Prototypes/Objects/Schaum/Schaum.e4p", "Bauschaum"); Schaum.SetPosition(Poso); Schaum.PushActionSwitchAnim(ACTION_NEWLIST, "open"); Schaum.PushActionWait(ACTION_APPEND, 30.0f); Schaum.PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 3, false); v.PushActionExecuteCommand(ACTION_APPEND, "Schaum", Target, 2, false); } if(childID == 2) { v.PushActionCool(ACTION_APPEND, Target); } if(childID == 3) { Caller->PushActionSwitchAnim(ACTION_NEWLIST, "close"); } } };