Jump to content
timmiej93

Angle doens match VO / Personell spawning at wrong FS

Recommended Posts

I checked what you said, and it actually was there, BUT there was the same problem with L#.

now i fixed that, but it still doesnt work :s

I'll ad my scripts again with all the edits.

//******************************************************************************************

// #Version 1.4#

//

// Includes: To fire station command.

//

// - VcmdToFireStation

//

// Script by Hoppah

//

// Usage of this script in other mods is NOT allowed without permission of Hoppah

//

//******************************************************************************************

const char CMD_SIREN[] = "VcmdSiren";

const char CMD_AUTOSIREN_OFF[] = "VcmdAutoSirenOff";

const char CMD_WARNINGLIGHTS[] = "VcmdWarningLightsOn";

const char DUMMY_WARNINGLIGHTS[] = "DummyHasWarningLights";

const char CMD_FLOODLIGHTS_OFF[] = "VcmdFloodLightsOff";

const char CMD_FLOODLIGHTS_ON[] = "VcmdFloodLightsOn";

const char CMD_GETTILLER[] = "VcmdGetTiller";

const char CMD_FLASHINGLIGHTS[] = "VcmdFlashingLights";

const char CMD_GOHOME[] = "GoHome";

const char CMD_TOHOSPITAL[] = "VcmdToHospital";

const char CMD_TOFIRESTATION[] = "VcmdToFireStation";

const char CMD_PATROL[] = "VcmdPatrol";

const char CMD_STANDBY_ON[] = "VcmdStandbyOn";

const char CMD_STANDBY_OFF[] = "VcmdStandbyOff";

const char CMD_GETTILLER[] = "VcmdGetTiller";

const char DUMMY_TILLERGOHOME[] = "DummyTillerGoHome";

const char DUMMY_DISABLE[] = "DummyDisableSiren";

const char DUMMY_HASSIREN[] = "DummyHasSiren";

const char DUMMY_PATROL[] = "DummyPatrol";

const char DUMMY_GATES[] = "DummyGates";

const char DUMMY_FIRESTATION[] = "DummyAtFireStation";

const char DUMMY_CHECKPARKED[] = "DummyCheckParked";

const char DUMMY_ISTRAILED[] = "DummyIsTrailed";

const char DUMMY_VCALLED[] = "DummyVehicleCalled";

const char DUMMY_HOSESON[] = "DummyHosesAreOn";

const char DUMMY_TILLER[] = "DummyTiller";

const char OBJ_BATTALION[] = "mod:Prototypes/Vehicles/02 LA Fire Department/battalion_chief_vehicle.e4p";

const char OBJ_ENGINE01[] = "mod:Prototypes/Vehicles/02 LA Fire Department/fire_engine1.e4p";

const char OBJ_ENGINE02[] = "mod:Prototypes/Vehicles/02 LA Fire Department/fire_engine2.e4p";

const char OBJ_USAR[] = "mod:Prototypes/Vehicles/02 LA Fire Department/usar_squad.e4p";

const char OBJ_LADDER[] = "mod:Prototypes/Vehicles/02 LA Fire Department/aerial_ladder.e4p";

const char OBJ_TILLER[] = "mod:Prototypes/Vehicles/02 LA Fire Department/tiller_cabin.e4p";

const char OBJ_BATTALION[] = "mod:Prototypes/Vehicles/02 LA Fire Department/battalion_chief_vehicle.e4p";

const char OBJ_TENDER[] = "mod:Prototypes/Vehicles/02 LA Fire Department/water_tender.e4p";

const char OBJ_AMBULANCE01[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance01.e4p";

const char OBJ_AMBULANCE02[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance02.e4p";

const char OBJ_AMBULANCE03[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance03.e4p";

const char OBJ_AMBULANCE04[] = "mod:Prototypes/Vehicles/01 LA Ambulance/ambulance04.e4p";

const char OBJ_FOREST[] = "mod:Prototypes/Vehicles/01 LA Fire Department/usfs_engine.e4p";

const char OBJ_HES[] = "mod:Prototypes/Vehicles/01 LA Fire Department/heavy_equipment_squad.e4p";

const char VO_SPAWN01[] = "fs_spawn01";

const char VO_SPAWN02[] = "fs_spawn02";

const char VO_SPAWN03[] = "fs_spawn03";

const char VO_FP1[] = "fs_gate01";

const char VO_FP2[] = "fs_gate02";

const char VO_FP3[] = "fs_gate03";

const char VO_FP4[] = "fs_gate04";

const char VO_FP5[] = "fs_gate05";

const char VO_FP6[] = "fs_gate06";

const char VO_FP7[] = "fs_gate07";

const char VO_FP8[] = "fs_gate08";

const char VO_TURNTO1[] = "fs_vogate01a";

const char VO_TURNTO2[] = "fs_vogate02a";

const char VO_TURNTO3[] = "fs_vogate03a";

const char VO_TURNTO4[] = "fs_vogate04a";

const char VO_TURNTO5[] = "fs_vogate05a";

const char VO_TURNTO6[] = "fs_vogate06a";

const char VO_TURNTO7[] = "fs_vogate07a";

const char VO_TURNTO8[] = "fs_vogate08a";

const char VO_AMBULANCE01[] = "fs_ambulance01";

const char VO_AMBULANCE02[] = "fs_ambulance02";

const char VO_AMBULANCE03[] = "fs_ambulance03";

const char VO_AMBULANCE04[] = "fs_ambulance04";

const char VO_ENGINE01[] = "fs_engine01";

const char VO_ENGINE02[] = "fs_engine02";

const char VO_ENGINE03[] = "fs_engine03";

const char VO_ENGINE04[] = "fs_engine04";

const char VO_ENGINE05[] = "fs_engine05";

const char VO_BATTALION[] = "fs_battalion";

const char VO_BATTALION2[] = "fs_battalion2";

const char VO_USAR[] = "fs_usar";

const char VO_LADDER[] = "fs_ladder";

const char VO_HAZMAT[] = "fs_hazmat";

const char VO_SQUAD01[] = "fs_squad01";

const char VO_SQUAD02[] = "fs_squad02";

const char VO_FOREST[] = "fs_extra01a";

const char VO_HES[] = "fs_extra02a";

const char VO_EXTRA_BOTH[] = "fs_extra_both";

const char SND_TOSTATION[] = "mod:Audio/FX/radio/1019.wav";

const char HINT_NOTVALID[] = "This vehicle doesn't belong in the fire station!";

const char HINT_NOSPACE[] = "No space at the fire station, vehicle returns to base!";

const char HINT_NOSPACE_AMBULANCE[] = "No space at the fire station, vehicle starts a patrol!";

const char HINT_TRANSPORTS[] = "The ambulance has transports, it will go to the hospital first!";

const char NAME_CONTROLPANEL[] = "fire_station_controlpanel";

const char NAME_CONTROLPANEL2[] = "fire_station_controlpanel2";

int DummyGroup = 32;

object VcmdToFireStation : CommandScript

{

VcmdToFireStation()

{

SetCursor("tofirestation");

SetIcon("tofirestation");

SetGroupID(DummyGroup);

SetGroupLeader(true);

SetRestrictions(RESTRICT_SELFEXECUTE);

}

bool CheckPossible(GameObject *Caller)

{

if (!Caller->IsValid())

return false;

if (!Game::IsFreeplay())

return false;

Vehicle v(Caller);

if (v.IsCollidingWithVirtualObject(VO_SQUAD01) || v.IsCollidingWithVirtualObject(VO_SQUAD02) || v.IsCollidingWithVirtualObject(VO_BATTALION) || (v.HasCommand(DUMMY_ISTRAILED) && !v.HasCommand(CMD_GETTILLER)) || v.HasCommand(DUMMY_HOSESON) || v.IsInstalled())

return false;

if (!v.HasCommand("MoveTo"))

return false;

if (v.HasCommand(CMD_FLOODLIGHTS_OFF) && (StrCompare(v.GetPrototypeFileName(), OBJ_TENDER) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_USAR) == 0))

return false;

return true;

}

bool CheckTarget(GameObject *Caller, Actor *Target, int childID)

{

if (!Caller->IsValid() || !Target->IsValid() || (Caller->GetID() != Target->GetID()))

return false;

return true;

}

void PushActions(GameObject *Caller, Actor *Target, int ChildID)

{

Vector Pos = Caller->GetPosition();

Vehicle v(Caller);

if (v.GetVehicleType() == VT_AMBULANCE_RTW && v.GetNumTransported() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOHOSPITAL, Caller, 0, false);

Mission::PlayHint(HINT_TRANSPORTS);

return;

}

if (v.IsBlueLightEnabled())

Game::ExecuteCommand(CMD_FLASHINGLIGHTS, &v, &v);

if (v.HasCommand(DUMMY_TILLERGOHOME))

v.RemoveCommand(DUMMY_TILLERGOHOME);

if (v.HasCommand(CMD_STANDBY_OFF))

{

v.RemoveCommand(CMD_STANDBY_OFF);

v.AssignCommand(CMD_STANDBY_ON);

}

if (v.HasCommand(DUMMY_WARNINGLIGHTS))

{

v.EnableBlinker(BLT_NONE);

v.RemoveCommand(DUMMY_WARNINGLIGHTS);

v.AssignCommand(CMD_WARNINGLIGHTS);

}

if (v.HasCommand(CMD_FLOODLIGHTS_OFF))

{

v.EnableSpecialLights(false);

v.RemoveCommand(CMD_FLOODLIGHTS_OFF);

v.AssignCommand(CMD_FLOODLIGHTS_ON);

}

if (v.HasObjectPath(NULL))

Game::ExecuteCommand(DUMMY_PATROL, &v, &v);

if (v.HasCommand(DUMMY_HASSIREN) && v.HasCommand(CMD_AUTOSIREN_OFF))

Game::ExecuteCommand(DUMMY_DISABLE, &v, &v);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_BATTALION, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_BATTALION2);

ActorList l2 = Game::GetActors(VO_BATTALION);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_USAR) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_USAR, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FP2);

ActorList l2 = Game::GetActors(VO_TURNTO2);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_LADDER) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_LADDER, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

Game::ExecuteCommand(CMD_GOHOME, &v, &v);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FP3);

ActorList l2 = Game::GetActors(VO_TURNTO3);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_TENDER) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_HAZMAT, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FP6);

ActorList l2 = Game::GetActors(VO_TURNTO6);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_FOREST) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_FOREST, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_FOREST);

ActorList l2 = Game::GetActors(VO_EXTRA_BOTH);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_HES) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_HES, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ActorList l1 = Game::GetActors(VO_HES);

ActorList l2 = Game::GetActors(VO_EXTRA_BOTH);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE02) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE03) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE04) == 0)

{

bool Possible = false;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE01, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE02, l5, ACTOR_VEHICLE);

if(l5.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l6;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE03, l6, ACTOR_VEHICLE);

if(l6.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP1);

ActorList l2 = Game::GetActors(VO_TURNTO1);

} else

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE01) == 0)

{

bool Possible = false;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP8);

ActorList l2 = Game::GetActors(VO_TURNTO8);

} else

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE01) == 0)

{

GameObjectList cpl1 = Game::GetGameObjects(NAME_CONTROLPANEL);

if(cpl1.GetNumObjects() > 0)

GameObject cp1 = cpl1.GetObject(0);

GameObjectList cpl2 = Game::GetGameObjects(NAME_CONTROLPANEL2);

if(cpl2.GetNumObjects() > 0)

GameObject cp2 = cpl2.GetObject(0);

bool FS1Closer = false;

bool FS2Closer = false;

if (Math::dist(Pos.x, Pos.y, cp1.GetPosition().x, cp1.GetPosition().y) > Math::dist(Pos.x, Pos.y, cp2.GetPosition().x, cp2.GetPosition().y))

FS2Closer = true;

else

FS1Closer = true;

bool FS1Possible = false;

bool FS2Possible = false;

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE01, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() == 0 && !FS1Possible)

FS1Possible = true;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE03, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !FS1Possible)

FS1Possible = true;

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE05, l5, ACTOR_VEHICLE);

if(l5.GetNumObjects() == 0 && !FS2Possible)

FS2Possible = true;

if (!FS1Possible && !FS2Possible)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

}

else if ((FS1Closer && FS1Possible) || (FS2Closer && !FS2Possible))

{

ActorList l1 = Game::GetActors(VO_FP4);

ActorList l2 = Game::GetActors(VO_TURNTO4);

}

else if ((FS2Closer && FS2Possible) || (FS1Closer && !FS1Possible))

{

ActorList l1 = Game::GetActors(VO_FP7);

ActorList l2 = Game::GetActors(VO_TURNTO7);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE02) == 0)

{

bool Possible = false;

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE02, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() == 0 && !Possible)

Possible = true;

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() == 0 && !Possible)

Possible = true;

if (Possible)

{

ActorList l1 = Game::GetActors(VO_FP5);

ActorList l2 = Game::GetActors(VO_TURNTO5);

} else

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

}

} else

{

Mission::PlayHint(HINT_NOTVALID);

return;

}

if(l1.GetNumActors() > 0)

Vector FirstPoint = l1.GetActor(0)->GetPosition();

if(l2.GetNumActors() > 0)

Vector TurnTo = l2.GetActor(0)->GetPosition();

Audio::PlaySample3D(SND_TOSTATION, Caller->GetPosition());

v.PushActionmove(ACTION_NEWLIST, FirstPoint);

v.PushActionTurnTo(ACTION_APPEND, TurnTo);

if (StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_TILLER, Caller, 3, false);

v.PushActionWait(ACTION_APPEND, 1.0f);

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_CHECKPARKED, Caller, 0, false);

}

};

object DummyCheckParked : CommandScript

{

DummyCheckParked()

{

SetGroupID(DummyGroup);

}

bool CheckTarget(GameObject *Caller, Actor *Target, int ChildID)

{

}

void PushActions(GameObject *Caller, Actor *Target, int ChildID)

{

bool ParkinglotFound = false;

Vector Pos = Caller->GetPosition();

GameObjectList cpl1 = Game::GetGameObjects(NAME_CONTROLPANEL);

if(cpl1.GetNumObjects() > 0)

GameObject cp1 = cpl1.GetObject(0);

GameObjectList cpl2 = Game::GetGameObjects(NAME_CONTROLPANEL2);

if(cpl2.GetNumObjects() > 0)

GameObject cp2 = cpl2.GetObject(0);

bool FS1Closer = false;

bool FS2Closer = false;

if (Math::dist(Pos.x, Pos.y, cp1.GetPosition().x, cp1.GetPosition().y) > Math::dist(Pos.x, Pos.y, cp2.GetPosition().x, cp2.GetPosition().y))

FS2Closer = true;

else

FS1Closer = true;

Vehicle v(Caller);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_BATTALION, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_BATTALION);

ActorList l2 = Game::GetActors(VO_BATTALION2);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE02) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE03) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE04) == 0)

{

ActorList l2 = Game::GetActors(VO_TURNTO1);

if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && !Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE01);

}

else if (Game::IsSquadInVirtualObject(VO_AMBULANCE01) && !Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE02);

}

else if (Game::IsSquadInVirtualObject(VO_AMBULANCE01) && Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE03);

}

else if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && Game::IsSquadInVirtualObject(VO_AMBULANCE02) && !Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE02);

ActorList l3 = Game::GetActors(VO_AMBULANCE01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE02, l4, ACTOR_VEHICLE);

for (int i = 0; i < l4.GetNumObjects(); i++)

{

Vehicle m = l4.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

}

else if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && !Game::IsSquadInVirtualObject(VO_AMBULANCE02) && Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE02);

ActorList l3 = Game::GetActors(VO_AMBULANCE01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE03, l4, ACTOR_VEHICLE);

for (int i = 0; i < l4.GetNumObjects(); i++)

{

Vehicle m = l4.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

}

else if (!Game::IsSquadInVirtualObject(VO_AMBULANCE01) && Game::IsSquadInVirtualObject(VO_AMBULANCE02) && Game::IsSquadInVirtualObject(VO_AMBULANCE03))

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE03);

ActorList l3 = Game::GetActors(VO_AMBULANCE01);

if(l3.GetNumActors() > 0)

Vector Forward = l3.GetActor(0)->GetPosition();

ActorList l4 = Game::GetActors(VO_AMBULANCE02);

if(l4.GetNumActors() > 0)

Vector Forward2 = l4.GetActor(0)->GetPosition();

float rot[9];

float childRot[9];

GameObjectList l5;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE02, l5, ACTOR_VEHICLE);

for (int i = 0; i < l5.GetNumObjects(); i++)

{

Vehicle m = l5.GetObject(i);

m.PushActionmove(ACTION_NEWLIST, Forward);

}

GameObjectList l6;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE03, l6, ACTOR_VEHICLE);

for (int i = 0; i < l6.GetNumObjects(); i++)

{

Vehicle c = l6.GetObject(i);

c.PushActionWait(ACTION_NEWLIST, 0.7f);

c.PushActionmove(ACTION_APPEND, Forward2);

}

} else

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE01) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE04, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE_AMBULANCE);

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_PATROL, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_AMBULANCE04);

ActorList l2 = Game::GetActors(VO_TURNTO8);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_USAR) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_USAR, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_USAR);

ActorList l2 = Game::GetActors(VO_TURNTO2);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_LADDER) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_LADDER, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

Game::ExecuteCommand(CMD_GOHOME, &v, &v);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_LADDER);

ActorList l2 = Game::GetActors(VO_TURNTO3);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_TENDER) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_HAZMAT, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_HAZMAT);

ActorList l2 = Game::GetActors(VO_TURNTO6);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_FOREST) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_FOREST, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_FOREST);

ActorList l2 = Game::GetActors(VO_EXTRA_BOTH);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_HES) == 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_HES, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

Mission::PlayHint(HINT_NOSPACE);

v.PushActionReturnToBase(ACTION_NEWLIST);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_HES);

ActorList l2 = Game::GetActors(VO_EXTRA_BOTH);

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE01) == 0)

{

if(FS1Closer)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE01, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE03, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOFIRESTATION, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ENGINE03);

ActorList l2 = Game::GetActors(VO_TURNTO4);

}

} else

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE03, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

ActorList l1 = Game::GetActors(VO_ENGINE03);

ActorList l5 = Game::GetActors(VO_ENGINE01);

Vector Move = l5.GetActor(0)->GetPosition();

l4.GetObject(0)->PushActionmove(ACTION_NEWLIST, Move, true);

} else

ActorList l1 = Game::GetActors(VO_ENGINE01);

ActorList l2 = Game::GetActors(VO_TURNTO4);

ParkinglotFound = true;

}

}

else if(FS2Closer)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE05, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOFIRESTATION, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ENGINE05);

ActorList l2 = Game::GetActors(VO_TURNTO7);

}

}

}

else if(StrCompare(v.GetPrototypeFileName(), OBJ_ENGINE02) == 0)

{

GameObjectList l3;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE02, l3, ACTOR_VEHICLE);

if(l3.GetNumObjects() > 0)

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

v.PushActionExecuteCommand(ACTION_NEWLIST, CMD_TOFIRESTATION, Caller, 0, false);

return;

} else

{

ParkinglotFound = true;

ActorList l1 = Game::GetActors(VO_ENGINE04);

ActorList l2 = Game::GetActors(VO_TURNTO5);

}

} else

{

GameObjectList l4;

Game::CollectObstaclesOnVirtualObject(VO_ENGINE04, l4, ACTOR_VEHICLE);

if(l4.GetNumObjects() > 0)

{

ActorList l1 = Game::GetActors(VO_ENGINE04);

ActorList l5 = Game::GetActors(VO_ENGINE02);

Vector Move = l5.GetActor(0)->GetPosition();

l4.GetObject(0)->PushActionmove(ACTION_NEWLIST, Move, true);

} else

ActorList l1 = Game::GetActors(VO_ENGINE02);

ActorList l2 = Game::GetActors(VO_TURNTO5);

ParkinglotFound = true;

}

}

if(ParkinglotFound)

{

if(l1.GetNumActors() > 0)

{

if (StrCompare(v.GetPrototypeFileName(), OBJ_TILLER) == 0)

{

Vector Park = l1.GetActor(0)->GetPosition();

float dx = 125.f, dy = 0.f, dz = 0.f;

float r[9];

float childr[9];

v.GetRotation(r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]);

Math::RotateVector(dx, dy, dz, r);

Math::EulerToMatrix(0.0f, 0.f, 0.f, childr);

Math::MultiplyMatrices(childr, r);

Park = Park + Vector(dx, dy, 0);

} else

Vector Park = l1.GetActor(0)->GetPosition();

}

if(l2.GetNumActors() > 0)

Vector TurnTo = l2.GetActor(0)->GetPosition();

if (v.HasCommand(DUMMY_VCALLED))

v.RemoveCommand(DUMMY_VCALLED);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

{

v.PushActionmove(ACTION_APPEND, Park);

v.PushActionTurnTo(ACTION_APPEND, TurnTo);

} else

{

if(FS1Closer)

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 7, false);

else

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 8, false);

v.PushActionWait(ACTION_APPEND, 1.8f);

v.PushActionmove(ACTION_APPEND, Park);

v.PushActionTurnTo(ACTION_APPEND, TurnTo);

v.PushActionWait(ACTION_APPEND, 0.5f);

PersonList passengers = v.GetPassengers();

if (passengers.GetNumPersons() > 0 && (FS1Closer && cp1.HasCommand("VcmdAutoStaffOff")) || (FS2Closer && cp2.HasCommand("VcmdAutoStaffOff")))

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_FIRESTATION, Caller, 0, false);

v.PushActionWait(ACTION_APPEND, 2.2f);

if(FS1Closer)

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 9, false);

else

v.PushActionExecuteCommand(ACTION_APPEND, DUMMY_GATES, Caller, 10, false);

if (v.HasCommand(DUMMY_WARNINGLIGHTS))

{

v.EnableBlinker(BLT_NONE);

v.RemoveCommand(DUMMY_WARNINGLIGHTS);

v.AssignCommand(CMD_WARNINGLIGHTS);

} else

v.EnableBlinker(BLT_NONE);

}

}

}

};

object DummyAtFireStation : CommandScript

{

DummyAtFireStation()

{

SetGroupID(DummyGroup);

}

bool CheckTarget(GameObject *Caller, Actor *Target, int ChildID)

{

}

void PushActions(GameObject *Caller, Actor *Target, int ChildID)

{

Vehicle v(Caller);

if(StrCompare(v.GetPrototypeFileName(), OBJ_BATTALION) == 0)

ActorList l1 = Game::GetActors(VO_SPAWN02);

else if(v.IsCollidingWithVirtualObject(VO_SQUAD01))

ActorList l1 = Game::GetActors(VO_SPAWN01);

else if(v.IsCollidingWithVirtualObject(VO_SQUAD02))

ActorList l1 = Game::GetActors(VO_SPAWN03);

else

return;

if(l1.GetNumActors() > 0)

Vector Delete = l1.GetActor(0)->GetPosition();

PersonList passengers = v.GetPassengers();

if (passengers.GetNumPersons() > 0)

{

for(int i=0; i<passengers.GetNumPersons(); i++)

{

Person *p = passengers.GetPerson(i);

p->PushActionLeaveCar(ACTION_NEWLIST, Caller);

p->PushActionmove(ACTION_APPEND, Delete);

p->PushActionDeleteOwner(ACTION_APPEND);

}

}

}

};

object DummyEngine : CommandScript

{

DummyEngine()

{

SetGroupID(DummyGroup);

}

bool CheckTarget(GameObject *Caller, Actor *Target, int ChildID)

{

}

void PushActions(GameObject *Caller, Actor *Target, int ChildID)

{

}

};

PasteBin

Link to comment
Share on other sites

Ok try this, on the first one. Instead of:

ActorList l1 = Game::GetActors(VO_HES);
ActorList l2 = Game::GetActors(VO_EXTRA_BOTH);

Try:

ActorList l1 = Game::GetActorsVO_EXTRA_BOTH();
ActorList l2 = Game::GetActors(VO_HES);

The first part of the script you want the turnto vo listed first. In the second part of the script, you want the turn to second.

Link to comment
Share on other sites

TBH I never quite understoof it either but this is how i have my units scripts and its working fine for me. In object VcmdToFireStation : CommandScript you want it like this:

else if(StrCompare(v.GetPrototypeFileName(), OBJ_BRUSH) == 0)
{
GameObjectList l4;
Game::CollectObstaclesOnVirtualObject(VO_BRUSH, l4, ACTOR_VEHICLE);
if(l4.GetNumObjects() > 0)
{
Mission::PlayHint(HINT_NOSPACE);
v.PushActionReturnToBase(ACTION_NEWLIST);
return;
} else
{
ActorList l1 = Game::GetActors(VO_BRUSH2);
ActorList l2 = Game::GetActors(VO_BRUSH);
}
}

But in the object DummyCheckParked : CommandScript section you want it like this:

else if(StrCompare(v.GetPrototypeFileName(), OBJ_BRUSH) == 0)
{
GameObjectList l3;
Game::CollectObstaclesOnVirtualObject(VO_BRUSH, l3, ACTOR_VEHICLE);
if(l3.GetNumObjects() > 0)
{
Mission::PlayHint(HINT_NOSPACE);
v.PushActionReturnToBase(ACTION_NEWLIST);
return;
} else
{
ParkinglotFound = true;
ActorList l1 = Game::GetActors(VO_BRUSH);
ActorList l2 = Game::GetActors(VO_BRUSH2);
}
}

Link to comment
Share on other sites

ok i tried it, but i get this error on the logfile:

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?no door found for animation with door-type 3

?(_LAToFireStationa620): Warning: else if(StrCompare(v.GetPrototypeFileName(),OBJ_AMBULANCE02)==0||StrCompare(v.GetPrototypeFileName(),OBJ_AMBULANCE03)==0||StrCompare(v.GetPrototypeFileName(),OBJ_AMBULANCE04)==0) Missing ';'

?(_LAToFireStationa620): FILE:mod:/scripts/game/command/LAToFireStation.scripta620 LINE:414

--- load time profile begin ---

--- load time profile end ---

Destroy Network...

Deleting units...

Destroy XGUI...

Destroy Audio...

Destroy GameFramework...

Destroy GFX...

Destroy Vision...

|VisMain_cl::DeInit

|DeInitializing Object Data...

|DeInitializing World Data...

|DeInitializing Surface and Texture Data...

|Dump resources...

|...no resource leaks.

|Deallocated fast Geometry Buffer.

Destroy Input...

Destroy Scriptscheduler...

Destroy Timer...

Destroy Screen...

Destroy UpdateChain...

Destroy Console...

Destroy Filesystem...

if you check line 414, there it says:

first line is 413


else if(StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE02) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE03) == 0 || StrCompare(v.GetPrototypeFileName(), OBJ_AMBULANCE04) == 0)
{
bool Possible = false;

GameObjectList l4;
Game::CollectObstaclesOnVirtualObject(VO_AMBULANCE01, l4, ACTOR_VEHICLE);
if(l4.GetNumObjects() == 0 && !Possible)
Possible = true;

does anyone understand this??

entire script here.

-edit-

hmm, sudenly not a single vehicle belongs to the firestation anymore :s

I have absolutely no idea how this is possible

Edited by Lithium
converted to code
Link to comment
Share on other sites

you would think so yes, but it isn't

there doesnt belong a ; after the end of such a line because it is followed by a {.

i've tried allmost anything to fix it, but i'm affraid i'll have to use my backup and restart all over....

-edit-

btw do you have a special program to test your code before you run it ingame or something???

i think its pretty inconvenient that you have to run the game, the mod and then freeplay too test if your code works...

Link to comment
Share on other sites

you would think so yes, but it isn't

there doesnt belong a ; after the end of such a line because it is followed by a {.

i've tried allmost anything to fix it, but i'm affraid i'll have to use my backup and restart all over....

-edit-

btw do you have a special program to test your code before you run it ingame or something???

i think its pretty inconvenient that you have to run the game, the mod and then freeplay too test if your code works...

No, you may have an extra one somewhere where it's not needed. Check your files, brackets and all that jazz using Notepad2.

http://www.flos-freeware.ch/notepad2.html

Link to comment
Share on other sites

you would think so yes, but it isn't

there doesnt belong a ; after the end of such a line because it is followed by a {.

i've tried allmost anything to fix it, but i'm affraid i'll have to use my backup and restart all over....

-edit-

btw do you have a special program to test your code before you run it ingame or something???

i think its pretty inconvenient that you have to run the game, the mod and then freeplay too test if your code works...

Oh good point, try using the code tags next time, might make the code ab it easier to read. ;)

As for testing, i wish. Its a tedious problem as you usually need to go in to the game, test, and if you have an error, you can fix the script while the mods running, but for the game to realize you changed something as as small as a ; you have to exit the game and reload the mod. You may be able to get away with just reloading the mod from the main menu but sadly I usually see problems when trying to do it this way.

Oh and Moo is right. Grab notepad2. It wont test it for you but can help you spot errors. ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...