Jump to content
soulbody

VT tow truck

Recommended Posts

I'm busy with a back-up pack but there is one unit which does not work as it have to.

i'm trying to let police call back-up from a tow truck but then i got a error. according the log file the error is caused by line 121:

in search for line 121 and came to this:

		VehicleList patrolCars(VT_THW_ASF);

i know did is wrong but i also tried this

		VehicleList patrolCars(VT_FIREFIGHTERS_ASF);

can anybody tell me what i need to use for the tow truck, nothing seems to work here.

The hole script:

//******************************************************************************************
// #Version 1.2#
//
// Includes: Backup command for police units.
//
// - PcmdCallPatrolCar
//
// Script by Hoppah
// Thanks to Bass-Ti for his help
//
// 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_OFF[] = "VcmdWarningLightsOff";
const char CMD_WARNINGLIGHTS_ON[] = "VcmdWarningLightsOn";
const char CMD_FLOODLIGHTS_OFF[] = "VcmdFloodLightsOff";
const char CMD_FLOODLIGHTS_ON[] = "VcmdFloodLightsOn";
const char CMD_STANDBY_ON[] = "VcmdStandbyOn";
const char CMD_STANDBY_OFF[] = "VcmdStandbyOff";
const char DUMMY_HASSIREN[] = "DummyHasSiren";
const char DUMMY_PATROL[] = "DummyPatrol";
const char HINT_NOPATROLCAR[] = "No patrol car available!";
const char HINT_BACKUP[] = "Backup is on its way!";
const char HINT_PATROLCARBOUGHT[] = "Patrol car bought for $1000 and dispatched!";
const char VO_PARK01[] = "policestation_park01";
const char VO_PARK02[] = "policestation_park02";
const char VO_PARK03[] = "policestation_park03";
const char SND_BATBACKUP[] = "mod:Audio/FX/radio/bat_pd.wav";
const char SND_EMSBACKUP[] = "mod:Audio/FX/radio/ems_pd.wav";
const char SND_PDBACKUP[] = "mod:Audio/FX/radio/pd_backup.wav";
const char VO_SPAWN_ALL[] = "spawn_all";
const char VO_SPAWN_POLICE01[] = "spawn_police1";
const char VO_SPAWN_POLICE02[] = "spawn_police2";
const char VO_SPAWN_ALLR[] = "spawn_allr";
const char VO_SPAWN_POLICE01R[] = "spawn_police1r";
const char VO_SPAWN_POLICE02R[] = "spawn_police2r";
const char OBJ_OFFICER_M[] = "mod:Prototypes/Persons/03 LA Police/lapd_officer_m.e4p";
const char OBJ_OFFICER_LASD[] = "mod:Prototypes/Persons/03 LA Police/lasd_officer.e4p";
const char OBJ_OFFICER_CHP[] = "mod:Prototypes/Persons/03 LA Police/chp_officer.e4p";
const char OBJ_TRAFFIC_OFFICER_LASD[] = "mod:Prototypes/Persons/03 LA Police/lasd_traffic_officer.e4p";
const char OBJ_TRAFFIC_OFFICER_CHP[] = "mod:Prototypes/Persons/03 LA Police/chp_traffic_officer.e4p";
const char OBJ_BATTALION_CHIEF[] = "mod:Prototypes/Persons/02 LA Fire Department/battalion_chief.e4p";
const char OBJ_EMS_CAPTAIN[] = "mod:Prototypes/Persons/01 LA Ambulance/ems_paramedic_captain.e4p";
const char PROTO_CV_LAPD[] = "mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p";
const char PROTO_CV_CHP[] = "mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p";
const char PROTO_CV_LASD[] = "mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p";
const char PROTO_CHARGER_LAPD[] = "mod:Prototypes/Vehicles/04 LA Tec/rollback.e4p";
const char UNNAMED[] = "Unnamed";

object PcmdCallTowTruck : CommandScript
{
PcmdCallTowTruck()
{
SetIcon("callpatrolcar");
SetCursor("callassistance");
SetValidTargets(ACTOR_FLOOR | ACTOR_VIRTUAL);
SetDeselectCaller(false);
SetSelfClickActivation(true);
SetHighlightingEnabled(false);
SetGroupID(CGROUP_GETEQUIPMENT);
SetGroupLeader(true);
}

bool CheckPossible(GameObject *Caller)
{
GameObjectList SelectPer = Game::GetSelectedGameObjects();
if (SelectPer.GetNumObjects() != 1)
return false;

Person p(Caller);
if(p.IsValid() && (p.IsLinkedWithPerson() || p.IsCarryingPerson() || p.IsEquipped() || p.IsPulling() || p.GetFirehoseID()!=0 || p.GetEnteredCarID() != -1))
return false;

if (p.IsCurrentAction("EActionTreatPerson"))
return false;

if (!Caller->IsValid() || Caller->GetType() != ACTOR_PERSON)
return false;

return true;
}

bool CheckTarget(GameObject *Caller, Actor *Target, int childID)
{
if(!Caller->IsValid() || Caller->GetID() == Target->GetID())
return false;

if (Caller->GetType() != ACTOR_PERSON)
return false;

Person p(Caller);
if(p.IsValid() && (p.IsLinkedWithPerson() || p.IsCarryingPerson() || p.IsEquipped() || p.IsPulling() || p.GetFirehoseID()!=0 || p.GetEnteredCarID() != -1))
return false;

if (p.IsCurrentAction("EActionTreatPerson"))
return false;

return true;
}

void PushActions(GameObject *Caller, Actor *Target, int ChildID)
{
Vector CmdPos = Game::GetCommandPos();
Caller->PushActionTurnTo(ACTION_NEWLIST, CmdPos);
Caller->PushActionSwitchAnim(ACTION_APPEND, "talkmike");
Caller->PushActionWait(ACTION_APPEND, 3.5f);
Caller->PushActionSwitchAnim(ACTION_APPEND, "idle");

if(StrCompare(Caller->GetPrototypeFileName(), OBJ_BATTALION_CHIEF) == 0)
Audio::PlaySample3D(SND_BATBACKUP, Caller->GetPosition());
else if(StrCompare(Caller->GetPrototypeFileName(), OBJ_EMS_CAPTAIN) == 0)
Audio::PlaySample3D(SND_EMSBACKUP, Caller->GetPosition());
else
Audio::PlaySample3D(SND_PDBACKUP, Caller->GetPosition());

Vehicle *theCar = NULL;
float bestCar = 0.;
VehicleList patrolCars(VT_THW_ASF);
for (int i = 0; i < patrolCars.GetNumVehicles(); i++)
{
Vehicle *aCar = patrolCars.GetVehicle(i);
if (aCar->GetPlayerMP() == Caller->GetPlayerMP() && !aCar->IsCurrentAnimation("Getoff") && (aCar->HasCommand(CMD_STANDBY_OFF) || aCar->HasCommand(DUMMY_PATROL) || aCar->IsCollidingWithVirtualObject(VO_PARK01) || aCar->IsCollidingWithVirtualObject(VO_PARK02) || aCar->IsCollidingWithVirtualObject(VO_PARK03)))
{
float distCurrCar = Math::dist(CmdPos.x, CmdPos.y, aCar->GetPosition().x, aCar->GetPosition().y);
if (distCurrCar < bestCar || bestCar == 0.)
{
theCar = aCar;
bestCar = distCurrCar;
}
}
}
if (theCar)
{
Mission::PlayHint(HINT_BACKUP);
if (!theCar->HasCommand(DUMMY_HASSIREN) && theCar->HasCommand(CMD_AUTOSIREN_OFF) && !Input::LShiftPressed() && !Input::RShiftPressed())
Game::ExecuteCommand(CMD_SIREN, theCar, theCar);
theCar->PushActionWait(ACTION_NEWLIST, 0.3f);
if (theCar->HasCommand(DUMMY_PATROL))
theCar->PushActionExecuteCommand(ACTION_APPEND, DUMMY_PATROL, theCar, 1, false);
theCar->PushActionMove(ACTION_APPEND, CmdPos);
if (theCar->HasCommand(CMD_STANDBY_OFF))
{
theCar->RemoveCommand(CMD_STANDBY_OFF);
theCar->AssignCommand(CMD_STANDBY_ON);
}
if (theCar->HasCommand(CMD_WARNINGLIGHTS_OFF))
{
theCar->EnableBlinker(BLT_NONE);
theCar->RemoveCommand(CMD_WARNINGLIGHTS_OFF);
theCar->AssignCommand(CMD_WARNINGLIGHTS_ON);
}
if (theCar->HasCommand(CMD_FLOODLIGHTS_OFF))
{
theCar->EnableSpecialLights(false);
theCar->RemoveCommand(CMD_FLOODLIGHTS_OFF);
theCar->AssignCommand(CMD_FLOODLIGHTS_ON);
}
} else
{
Vector Spawn;
Vector Rotate;
ActorList l1 = Game::GetActors(VO_SPAWN_ALL);
ActorList l2 = Game::GetActors(VO_SPAWN_POLICE01);
ActorList l3 = Game::GetActors(VO_SPAWN_POLICE02);
ActorList l4 = Game::GetActors(VO_SPAWN_ALLR);
ActorList l5 = Game::GetActors(VO_SPAWN_POLICE01R);
ActorList l6 = Game::GetActors(VO_SPAWN_POLICE02R);
if(l1.GetNumActors() == 0 && l2.GetNumActors() == 0 && l3.GetNumActors() == 0)
{
Mission::PlayHint(HINT_NOPATROLCAR);
return;
}
if(l1.GetNumActors() > 0)
{
Spawn = l1.GetActor(0)->GetPosition();
Rotate = l4.GetActor(0)->GetPosition();
}
System::Log("Buy patrol car");
int Money = Mission::GetMoneyLeft();
if (Money <= 1000)
{
Mission::PlayHint(HINT_NOPATROLCAR);
return;
}

int NewMoney = Money - 1000;
Mission::SetMoney(NewMoney);
Vehicle n;
Person p1;
Person p2;
Person p(Caller);
if(StrCompare(p.GetPrototypeFileName(), OBJ_BATTALION_CHIEF) == 0)
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CHARGER_LAPD, UNNAMED);
n.SetSpeed(8.0f);

}
else if(StrCompare(p.GetPrototypeFileName(), OBJ_OFFICER_LASD) == 0 || StrCompare(p.GetPrototypeFileName(), OBJ_TRAFFIC_OFFICER_LASD) == 0)
{
if(l1.GetNumActors() == 0 && l3.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_LASD, UNNAMED);
n.SetSpeed(8.0f);
}
else if(StrCompare(p.GetPrototypeFileName(), OBJ_OFFICER_CHP) == 0 || StrCompare(p.GetPrototypeFileName(), OBJ_TRAFFIC_OFFICER_CHP) == 0)
{
if(l1.GetNumActors() == 0 && l3.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_CHP, UNNAMED);
n.SetSpeed(8.0f);

}
else
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l2.GetActor(0)->GetPosition();
Rotate = l5.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_LAPD, UNNAMED);
n.SetSpeed(8.0f);
}
n.SetPlayerMP(Caller->GetPlayerMP());
n.SetMaxPassengers(0);
n.SetMaxTransports(0);
Game::FindFreePosition(&n, Spawn);
n.SetPosition(Spawn);
n.UpdatePlacement();
n.Hide();
n.PushActionTurnTo(ACTION_NEWLIST, Rotate);
n.PushActionWait(ACTION_APPEND, 2.5f);
n.PushActionShowHide(ACTION_APPEND, false);
n.PushActionMove(ACTION_APPEND, CmdPos);
if (Game::IsMission())
{
n.RemoveCommand("VcmdToPoliceStation");
n.RemoveCommand("VcmdPatrol");
}

if (!n.HasCommand(DUMMY_HASSIREN) && n.HasCommand(CMD_AUTOSIREN_OFF) && !Input::LShiftPressed() && !Input::RShiftPressed())
Game::ExecuteCommand(CMD_SIREN, &n, &n);

Mission::PlayHint(HINT_PATROLCARBOUGHT);
}
}
};

Link to comment
Share on other sites

Are you sure the tow truck is classified as VT_THW_ASF?

Perhaps its something to do with the word patrolCars?

If you can copy and paste a similar command here, like call police back up. Doesnt need to be the whole script, just the code for the command.

well according to this site: ''http://www.emergency...dex.php/Vehicle'' it need to be ''VT_FIREFIGHTERS_ASF'' i tried that but it crash with the same message behind it was standing ''TODO: ist jetzt THW''

so i tried ''VT_THW_ASF as well but either that make it crash, i used/edited this command for the army units, those units are units without the patrol command either and there it doesn't crash...

Error Logfile:

(_LACallTowTruck8b2e5): Error: Symbol VT_THW_ASF is not defined in current scope

Logfile:

?(_LACallTowTruck8b2e5): Error: Symbol VT_THW_ASF is not defined in current scope <div>?(_LACallTowTruck8b2e5):  FILE:mod:/scripts/game/command/LACallTowTruck.script8b2e5 LINE:121</div><div>?(_LACallTowTruck8b2e5): !!!Dictionary position rewound... </div>?(_LACallTowTruck8b2e5): !!!Error recovered!!!

Link to comment
Share on other sites

In the editor its listed as firefighters_asf. Your trying to dispatch it based on the vehicle type, rather then a vehicle prototype. The script has to call a specific prototype.

SetIcon("callpatrolcar");

Ok first make sure you change this to something like calltowtruck.

Second, keep in mind you need to dispatch the tow truck by its prototype. Something like:

n = Game::CreateVehicle(PROTO_TOW, UNNAMED);

Then define proto_tow above.

Link to comment
Share on other sites

In the editor its listed as firefighters_asf. Your trying to dispatch it based on the vehicle type, rather then a vehicle prototype. The script has to call a specific prototype.

SetIcon("callpatrolcar");

Ok first make sure you change this to something like calltowtruck.

Second, keep in mind you need to dispatch the tow truck by its prototype. Something like:

n = Game::CreateVehicle(PROTO_TOW, UNNAMED);

Then define proto_tow above.

well line 121 is according to back-up for units in the area on stand-by, patrol and at the station.

the seticon is temperorly (excuse my english) but can not cause the error, the icon is there in-game and there is nothing mentioned in the error message or logfile.

According to PROTO_TOW... this is already being done, i change everything needed to be done excactly like i did in the call humvee, army truck and blackhawk commands and those commands works.

Link to comment
Share on other sites

Im not saying the icon thing will cause an error, i just suggested that to make sure you use the right command because both this command and the call patrol car script/command will be using the same image.

Technically the error the game is spitting out says it wants VT_THW_ASF to be a constant, so more or less it wants:

const char VT_THW_ASF[] = "mod:Prototypes/Vehicles/04 LA Tech/roll_back.e4p";

Link to comment
Share on other sites

I was doing some searching and came across this. Soulbody, I know you paused the project but wanted to point out some stuff in this script:

You were using:

 VehicleList patrolCars(VT_FIREFIGHTERS_ASF);

Your trying to do dispatch based onaq vehichle type, but the way your code is written, it is written where VT_FIREFIGHTERS_ASF is a specific vehicle, not vehicle type.

If you are doing vehicle type, you want something like this:

if (v.GetVehicleType() == VT_FIREFIGHTERS_ASF)

You can also optimize the script. You have:

 int NewMoney = Money - 1000;
Mission::SetMoney(NewMoney);
Vehicle n;
Person p1;
Person p2;
Person p(Caller);
if(StrCompare(p.GetPrototypeFileName(), OBJ_BATTALION_CHIEF) == 0)
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CHARGER_LAPD, UNNAMED);
n.SetSpeed(8.0f);

}
else if(StrCompare(p.GetPrototypeFileName(), OBJ_OFFICER_LASD) == 0 || StrCompare(p.GetPrototypeFileName(), OBJ_TRAFFIC_OFFICER_LASD) == 0)
{
if(l1.GetNumActors() == 0 && l3.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_LASD, UNNAMED);
n.SetSpeed(8.0f);
}
else if(StrCompare(p.GetPrototypeFileName(), OBJ_OFFICER_CHP) == 0 || StrCompare(p.GetPrototypeFileName(), OBJ_TRAFFIC_OFFICER_CHP) == 0)
{
if(l1.GetNumActors() == 0 && l3.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_CHP, UNNAMED);
n.SetSpeed(8.0f);

}
else
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l2.GetActor(0)->GetPosition();
Rotate = l5.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_LAPD, UNNAMED);
n.SetSpeed(8.0f);
}

Most of this code is not needed. The code is written so if the BC calls for a patrol car a LAPD Charger is bought and dispatched. If an LASD officer calls for a patrol car, then an LASD CV shows up, and if CHP call for back up CHP Charger shows up. However in your case there calling a tow truck, so theres no need for that.

First delete:

Person p1;
Person p2;
Person p(Caller);

Your not spawning people so no need for that.

Secondly any one that calls the tow truck is calling the same unit, thw tow truck, so no point in the extra checks, and I would do it like this...first define PROTO_TOW_TRUCK as a constant at the top of the script, then do this:

if(StrCompare(p.GetPrototypeFileName(), OBJ_BATTALION_CHIEF) == 0)
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_TOW_TRUCK, UNNAMED);
n.SetSpeed(8.0f);

}
else
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l2.GetActor(0)->GetPosition();
Rotate = l5.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_TOW_TRUCK, UNNAMED);
n.SetSpeed(8.0f);
}

This way there is less code and less if/else checks. No point in checking all those things when there all calling the same unit. If you want to use my call tow truck script instead, let me know. It is in game and working.

Link to comment
Share on other sites

Guest nbrown8568

This way there is less code and less if/else checks. No point in checking all those things when there all calling the same unit. If you want to use my call tow truck script instead, let me know. It is in game and working.

Hey Xplorer,

Is this available in your submod. I have wanted this since playing LA Mod.

Norm,

Hey Stan can you link this to Xplorer's Submod. Thanx.

Link to comment
Share on other sites

Guest nbrown8568

It will be included in the submod I am working on. Its almsot done on the scripting side. The 2 things I am waiting on right now are models and lights(the lights have to be moved a bit since I used NNICOs Crown Vic rather then the original LA Mod CV). More info here:

It would be great that the officer on scene could call dispatch for the tow truck

Link to comment
Share on other sites

Guest nbrown8568

I was doing some searching and came across this. Soulbody, I know you paused the project but wanted to point out some stuff in this script:

You were using:

 VehicleList patrolCars(VT_FIREFIGHTERS_ASF);

Your trying to do dispatch based onaq vehichle type, but the way your code is written, it is written where VT_FIREFIGHTERS_ASF is a specific vehicle, not vehicle type.

If you are doing vehicle type, you want something like this:

if (v.GetVehicleType() == VT_FIREFIGHTERS_ASF)

You can also optimize the script. You have:

 int NewMoney = Money - 1000;
Mission::SetMoney(NewMoney);
Vehicle n;
Person p1;
Person p2;
Person p(Caller);
if(StrCompare(p.GetPrototypeFileName(), OBJ_BATTALION_CHIEF) == 0)
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CHARGER_LAPD, UNNAMED);
n.SetSpeed(8.0f);

}
else if(StrCompare(p.GetPrototypeFileName(), OBJ_OFFICER_LASD) == 0 || StrCompare(p.GetPrototypeFileName(), OBJ_TRAFFIC_OFFICER_LASD) == 0)
{
if(l1.GetNumActors() == 0 && l3.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_LASD, UNNAMED);
n.SetSpeed(8.0f);
}
else if(StrCompare(p.GetPrototypeFileName(), OBJ_OFFICER_CHP) == 0 || StrCompare(p.GetPrototypeFileName(), OBJ_TRAFFIC_OFFICER_CHP) == 0)
{
if(l1.GetNumActors() == 0 && l3.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_CHP, UNNAMED);
n.SetSpeed(8.0f);

}
else
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l2.GetActor(0)->GetPosition();
Rotate = l5.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_CV_LAPD, UNNAMED);
n.SetSpeed(8.0f);
}

Most of this code is not needed. The code is written so if the BC calls for a patrol car a LAPD Charger is bought and dispatched. If an LASD officer calls for a patrol car, then an LASD CV shows up, and if CHP call for back up CHP Charger shows up. However in your case there calling a tow truck, so theres no need for that.

First delete:

Person p1;
Person p2;
Person p(Caller);

Your not spawning people so no need for that.

Secondly any one that calls the tow truck is calling the same unit, thw tow truck, so no point in the extra checks, and I would do it like this...first define PROTO_TOW_TRUCK as a constant at the top of the script, then do this:

if(StrCompare(p.GetPrototypeFileName(), OBJ_BATTALION_CHIEF) == 0)
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l3.GetActor(0)->GetPosition();
Rotate = l6.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_TOW_TRUCK, UNNAMED);
n.SetSpeed(8.0f);

}
else
{
if(l1.GetNumActors() == 0 && l2.GetNumActors() > 0)
{
Spawn = l2.GetActor(0)->GetPosition();
Rotate = l5.GetActor(0)->GetPosition();
}
n = Game::CreateVehicle(PROTO_TOW_TRUCK, UNNAMED);
n.SetSpeed(8.0f);
}

This way there is less code and less if/else checks. No point in checking all those things when there all calling the same unit. If you want to use my call tow truck script instead, let me know. It is in game and working.

I need to know where to paste this script and if this is all I need to do for the P.O. to call tow truck.

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...