Would someone explain "Armor" functions
by Mike Rowley · in Torque Game Engine · 06/25/2006 (2:52 pm) · 16 replies
I'm working on getting a player selection setup going. Simple and extendable.
My problem is I keep getting an error stating:
My default avatar works fine. It's only my "choice" avatars that aren't working and are both throwing this error.
Here is the code I have from startMissionGui.gui:
I changed "datablock PlayerData(PlayerBody)" to "datablock PlayerData(male)" and another to female with a different avatar.
My player.cs files for both avatars are just renamed player.cs files with 2 items changed. (the male name in the function declaration, and the actual avatar.)
I'm using the stock starter.fps demo to work on this, and torsion to search files. (any reason why it won't add the control folder to my project??)
My goal is to set this up so that under where you type your name are 2 check boxes giving you a choice of male or female. Which ever box is checked, places the proper avatar.
I must admit, all my code searching is teaching me a whole lot about how torque works and how powerful it is, :) but I am lost here.
Thanks for any help.
oops, edit:
I forgot my clientConnections.cs code. :blush:
My problem is I keep getting an error stating:
Quote:
Error: cannot change namespace parent linkage for male from GuiCheckBoxCtrl to armor
My default avatar works fine. It's only my "choice" avatars that aren't working and are both throwing this error.
Here is the code I have from startMissionGui.gui:
//Check boxes for our players
new GuiCheckBoxCtrl(male) {
profile = "GuiCheckBoxProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "102 36";
extent = "147 23";
minExtent = "8 8";
visible = "1";
variable = "pref::model::male";
text = "Male";
groupNum = "-1";
buttonType = "ToggleButton";
helpTag = "0";
maxLength = "255";
};
new GuiCheckBoxCtrl(female) {
profile = "GuiCheckBoxProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "152 36";
extent = "147 23";
minExtent = "8 8";
visible = "1";
variable = "pref::model::female";
text = " Female";
groupNum = "-1";
buttonType = "ToggleButton";
helpTag = "0";
maxLength = "255";
};I changed "datablock PlayerData(PlayerBody)" to "datablock PlayerData(male)" and another to female with a different avatar.
My player.cs files for both avatars are just renamed player.cs files with 2 items changed. (the male name in the function declaration, and the actual avatar.)
I'm using the stock starter.fps demo to work on this, and torsion to search files. (any reason why it won't add the control folder to my project??)
My goal is to set this up so that under where you type your name are 2 check boxes giving you a choice of male or female. Which ever box is checked, places the proper avatar.
I must admit, all my code searching is teaching me a whole lot about how torque works and how powerful it is, :) but I am lost here.
Thanks for any help.
oops, edit:
I forgot my clientConnections.cs code. :blush:
function GameConnection::onConnect( %client, %name, %model )
{
//Added model functions. Male set to default
switch$(%model)
{
case "male":
%client.model = "male";
case "female":
%client.model = "female";
default:
%client.model = "male";
}To me, this looks like it should work, but I know I have something wrong somewhere.
#2
You named the checkboxes 'male' and 'female', so whatever it's doing, it's trying to use the checkbox as the model. So the first thing I'd suggest is to rename them to something like chkBoxFemale/chkBoxMale.
As for the second error, when you do a commandToServer, you have to define the actual command. In your example, you would have to create a function called serverCmdSpawnPlayer(%client, %newModel) inside of a server script.
Also what are the names of the actual female and male datablocks? That's what you should set %client.model to. Client side you could have:
Server side:
but inside of of GameConnection::createPlayer() you would have to change the
to
and make sure you initialize a default.
06/25/2006 (6:12 pm)
new GuiCheckBoxCtrl([b]male[/b]) {
profile = "GuiCheckBoxProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "102 36";
extent = "147 23";
minExtent = "8 8";
visible = "1";
variable = "pref::model::male";
text = "Male";
groupNum = "-1";
buttonType = "ToggleButton";
helpTag = "0";
maxLength = "255";
};
new GuiCheckBoxCtrl([b]female[/b]) {
profile = "GuiCheckBoxProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "152 36";
extent = "147 23";
minExtent = "8 8";
visible = "1";
variable = "pref::model::female";
text = " Female";
groupNum = "-1";
buttonType = "ToggleButton";
helpTag = "0";
maxLength = "255";
};You named the checkboxes 'male' and 'female', so whatever it's doing, it's trying to use the checkbox as the model. So the first thing I'd suggest is to rename them to something like chkBoxFemale/chkBoxMale.
As for the second error, when you do a commandToServer, you have to define the actual command. In your example, you would have to create a function called serverCmdSpawnPlayer(%client, %newModel) inside of a server script.
Also what are the names of the actual female and male datablocks? That's what you should set %client.model to. Client side you could have:
if ($pref::model::male) {
GoMale();
} else if ($pref::model::female) {
GoFemale();
}
function GoMale() {
commandToServer('spawnPlayer', "MaleDataBlockName");
}Server side:
function serverCmdSpawnPlayer(%client, %newDataBlockName) {
%client.model = %newDataBlockName;
%client.spawnPlayer(pickSpawnPoint());
}but inside of of GameConnection::createPlayer() you would have to change the
%player = new Player() {
dataBlock = PlayerBody;
}to
%player = new Player() {
dataBlock = %this.model;
}and make sure you initialize a default.
#3
It works.
gallery.3dcentral.net/Album/main.php?g2_view=core.ShowItem&g2_itemId=302
Now all I need to do is to write some code to stop people from checking both boxes. :D
It looks really funny when you are two avatars in one. :D
Thankyou very much for your help. It is greatly appreciated.
Now, when I get home from work tuesday, I can package it up for other beginners to work from. :)
06/25/2006 (7:59 pm)
Thankyou. That's exactly what I needed. :)It works.
gallery.3dcentral.net/Album/main.php?g2_view=core.ShowItem&g2_itemId=302
Now all I need to do is to write some code to stop people from checking both boxes. :D
It looks really funny when you are two avatars in one. :D
Thankyou very much for your help. It is greatly appreciated.
Now, when I get home from work tuesday, I can package it up for other beginners to work from. :)
#4
06/25/2006 (8:38 pm)
I think all you have to do it set them to the same groupNum (inside your startMission.gui file). Haven't tried it out but usually that's what groupNum means...might be a radio control somewhere in there but don't know for sure as I haven't messed with GUIs that much.
#5
06/25/2006 (10:59 pm)
Why not just have one checkbox defining if you want male/female?
#6
Martin, That's a good thought. I'll be gone at work for 2 days, so have some time to chew on it.
Thanks guys for your help. It is greatly appreciated. :-)
06/26/2006 (3:47 am)
Juan, thankyou. That is an idea.Martin, That's a good thought. I'll be gone at work for 2 days, so have some time to chew on it.
Thanks guys for your help. It is greatly appreciated. :-)
#7
A pic instead of a thousand words:
There is a pic here
I tried commenting out the spawnPlayer code here:
This is my createPlayer function:
I'm figuring my problem is here:
I'm getting my kork info, but if I comment that section out, I get an error stating that I am attempting to spawn an angus ghost.
06/27/2006 (2:24 pm)
Ok, I'm still having trouble with this. I thought I had this all fixed, but, found out that 2 avatars are continually being spawned into the game. A pic instead of a thousand words:
There is a pic here
I tried commenting out the spawnPlayer code here:
function GameConnection::onClientEnterGame(%this)
{
commandToClient(%this, 'SyncClock', $Sim::Time - $Game::StartTime);
// Create a new camera object.
%this.camera = new Camera() {
dataBlock = Observer;
};
MissionCleanup.add( %this.camera );
%this.camera.scopeToClient(%this);
// Setup game parameters, the onConnect method currently starts
// everyone with a 0 score.
%this.score = 0;
// Create a player object.
%this.spawnPlayer(); //[b]I tried commenting this out[/b]
}
function GameConnection::onClientLeaveGame(%this)
{
if (isObject(%this.camera))
%this.camera.delete();
if (isObject(%this.player))
%this.player.delete();
}but that stopped all players from entering.This is my createPlayer function:
function GameConnection::createPlayer(%this, %spawnPoint)
{
if (%this.player > 0) {
// The client should not have a player currently
// assigned. Assigning a new one could result in
// a player ghost.
error( "Attempting to create an angus ghost!" );
}
// Create the player object
//*************Changed to model for selection*****************
%player = new Player() {
dataBlock = %this.model;
client = %this;
};
MissionCleanup.add(%player);
// Player setup...
%player.setTransform(%spawnPoint);
%player.setShapeName(%this.name);
// Starting equipment
%player.setInventory(Crossbow,1);
%player.setInventory(CrossbowAmmo,20);
%player.mountImage(CrossbowImage,0);
// Update the camera to start with the player
%this.camera.setTransform(%player.getEyeTransform());
// Give the client control of the player
%this.player = %player;
%this.setControlObject(%player);
}I'm figuring my problem is here:
function GameConnection::initialControlSet(%this)
{
echo ("*** Initial Control Object");
// The first control object has been set by the server
// and we are now ready to go.
// first check if the editor is active
if (!Editor::checkActiveLoadDone())
{
if (Canvas.getContent() != PlayGui.getId())
Canvas.setContent(PlayGui);
echo("\n--------- I am Kork!! ---------"); //added for debugging
}
//Here is where the fun begins----------------------------
if ($pref::model::male)
{
GoMale();
}
else if ($pref::model::female)
{
GoFemale();
}
}
function GoMale()
{
commandToServer('spawnPlayer', "HumanMale");
}
function serverCmdSpawnPlayer(%client, %HumanMale)
{
%client.model = %HumanMale;
%client.spawnPlayer(pickSpawnPoint());
}
function GoFemale()
{
commandToServer('spawnPlayer', "HumanFemale");
}
function serverCmdSpawnPlayer(%client, %HumanFemale)
{
%client.model = %HumanFemale;
%client.spawnPlayer(pickSpawnPoint());
}
//That's all folks.------------------------------------------I'm getting my kork info, but if I comment that section out, I get an error stating that I am attempting to spawn an angus ghost.
#8
I doubt this is the problem, but why do you have two of these? You should only have one function called serverCmdSpawnPlayer(%client, %newModel).
You should turn on trace (trace(1);) and see where the spawning is getting called from?
06/27/2006 (3:25 pm)
function serverCmdSpawnPlayer(%client, %HumanMale) {
%client.model = %HumanMale;
%client.spawnPlayer(pickSpawnPoint());
}
function serverCmdSpawnPlayer(%client, %HumanFemale)
{
%client.model = %HumanFemale;
%client.spawnPlayer(pickSpawnPoint());
}I doubt this is the problem, but why do you have two of these? You should only have one function called serverCmdSpawnPlayer(%client, %newModel).
You should turn on trace (trace(1);) and see where the spawning is getting called from?
#9
I didn't know how to do it any other way.
How?? Nevermind. I found out how. :-)
Edit to add
Here's my console log.
06/27/2006 (4:45 pm)
Quote:
why do you have two of these?
I didn't know how to do it any other way.
Quote:
You should turn on trace (trace(1);) and see where the spawning is getting called from?
How?? Nevermind. I found out how. :-)
Edit to add
Here's my console log.
Quote:Kork is in the code above, and I am female I added to the function to load the female avatar.
*** Initial Control Object
Activating DirectInput...
keyboard0 input device acquired.
--------- I am Kork!! ---------
Mapping string: Holding:5.5:0:4 to index: 13
Mapping string: spawnPlayer to index: 3
Attempting to create an angus ghost!
--------- I am female!! ---------
#10
06/27/2006 (8:22 pm)
Ok, here's the log. It looks to me like I have 2 identicle spawnPlayer messages getting used, but I'm not sure.Quote:
Entering GameConnection::onClientEnterGame(1539)
Entering GameConnection::spawnPlayer(1539)
Entering pickSpawnPoint()
Leaving pickSpawnPoint() - return 702.918 -117.614 204.325 0 0 -1 0.85
Entering GameConnection::createPlayer(1539, 702.918 -117.614 204.325 0 0 -1 0.85)
Entering armor::onAdd(100, 1597)
Leaving armor::onAdd() - return
Entering ShapeBase::setInventory(1597, Crossbow, 1)
Entering ShapeBase::maxInventory(1597, Crossbow)
Leaving ShapeBase::maxInventory() - return 1
Entering Weapon::onInventory(Crossbow, 1597, 1)
Leaving Weapon::onInventory() - return 1
Leaving ShapeBase::setInventory() - return 1
Entering ShapeBase::setInventory(1597, CrossbowAmmo, 20)
Entering ShapeBase::maxInventory(1597, CrossbowAmmo)
Leaving ShapeBase::maxInventory() - return 50
Entering ammo::onInventory(CrossbowAmmo, 1597, 20)
Leaving ammo::onInventory() - return 0
Leaving ShapeBase::setInventory() - return 20
Entering WeaponImage::onMount(61, 1597, 0)
Entering ShapeBase::getInventory(1597, CrossbowAmmo)
Leaving ShapeBase::getInventory() - return 20
Leaving WeaponImage::onMount() - return 20
Leaving GameConnection::createPlayer() - return 1597
Leaving GameConnection::spawnPlayer() - return 1597
Leaving GameConnection::onClientEnterGame() - return 1597
Leaving serverCmdMissionStartPhase3Ack() - return 1597
Leaving [CanvasCursor]GuiCanvas::setContent() - return 1219
Call to Spawn first player here. I don't understand why.
--------- I am Kork!! ---------
Entering GoFemale()
Leaving GoFemale() - return Call to Spawn second player here.
Leaving GameConnection::initialControlSet() - return
Mapping string: Holding:5.5:0:4 to index: 13
Entering refreshCenterTextCtrl()
Leaving refreshCenterTextCtrl() - return 0 0
Entering refreshBottomTextCtrl()
Leaving refreshBottomTextCtrl() - return 0 0
Mapping string: spawnPlayer to index: 3
Entering serverCmdSpawnPlayer(1539, HumanFemale) spawn my elf here
Entering pickSpawnPoint()
Leaving pickSpawnPoint() - return 676.083 -172.257 212.069 1 0 0 0
Entering GameConnection::spawnPlayer(1539) Spawning second player here. No clue why/
Entering pickSpawnPoint()
Leaving pickSpawnPoint() - return 702.918 -117.614 204.325 0 0 -1 0.85
Entering GameConnection::createPlayer(1539, 702.918 -117.614 204.325 0 0 -1 0.85)
Attempting to create an angus ghost! It wanted to spawn a third player??
Entering armor::onAdd(103, 1615)
Leaving armor::onAdd() - return
Entering ShapeBase::setInventory(1615, Crossbow, 1)
Entering ShapeBase::maxInventory(1615, Crossbow)
Leaving ShapeBase::maxInventory() - return 1
Entering Weapon::onInventory(Crossbow, 1615, 1)
Leaving Weapon::onInventory() - return 1
Leaving ShapeBase::setInventory() - return 1
Entering ShapeBase::setInventory(1615, CrossbowAmmo, 20)
Entering ShapeBase::maxInventory(1615, CrossbowAmmo)
Leaving ShapeBase::maxInventory() - return 50
Entering ammo::onInventory(CrossbowAmmo, 1615, 20)
Leaving ammo::onInventory() - return 0
Leaving ShapeBase::setInventory() - return 20
Entering WeaponImage::onMount(61, 1615, 0)
Entering ShapeBase::getInventory(1615, CrossbowAmmo)
Leaving ShapeBase::getInventory() - return 20
Leaving WeaponImage::onMount() - return 20
Leaving GameConnection::createPlayer() - return 1615
Leaving GameConnection::spawnPlayer() - return 1615
--------- I am female!! ---------
Leaving serverCmdSpawnPlayer() - return
#11
First of all, why do you spawn inside of initialControlset?
Secondly, have you set the client's default model?
If you want the client to spawn based on the $pref variable, all you'd have to do is something like this:
- remove that code from initialcontrolset
server-side:
Client-side:
Basically what this is doing is saying:
1. client enters game
2. server tells client it's time to spawn
3. client tells server what to spawn as
4. server spawns him/her
06/29/2006 (1:52 am)
I threw some tabs in to make it more readable (you should use the 'code' tag to preserve formatting).Entering GameConnection::onClientEnterGame(1539)
Entering GameConnection::spawnPlayer(1539)
Entering pickSpawnPoint()
Leaving pickSpawnPoint() - return 702.918 -117.614 204.325 0 0 -1 0.85
Entering GameConnection::createPlayer(1539, 702.918 -117.614 204.325 0 0 -1 0.85)
Entering armor::onAdd(100, 1597)
Leaving armor::onAdd() - return
Entering ShapeBase::setInventory(1597, Crossbow, 1)
Entering ShapeBase::maxInventory(1597, Crossbow)
Leaving ShapeBase::maxInventory() - return 1
Entering Weapon::onInventory(Crossbow, 1597, 1)
Leaving Weapon::onInventory() - return 1
Leaving ShapeBase::setInventory() - return 1
Entering ShapeBase::setInventory(1597, CrossbowAmmo, 20)
Entering ShapeBase::maxInventory(1597, CrossbowAmmo)
Leaving ShapeBase::maxInventory() - return 50
Entering ammo::onInventory(CrossbowAmmo, 1597, 20)
Leaving ammo::onInventory() - return 0
Leaving ShapeBase::setInventory() - return 20
Entering WeaponImage::onMount(61, 1597, 0)
Entering ShapeBase::getInventory(1597, CrossbowAmmo)
Leaving ShapeBase::getInventory() - return 20
Leaving WeaponImage::onMount() - return 20
Leaving GameConnection::createPlayer() - return 1597
Leaving GameConnection::spawnPlayer() - return 1597
Leaving GameConnection::onClientEnterGame() - return 1597
Leaving serverCmdMissionStartPhase3Ack() - return 1597
Leaving [CanvasCursor]GuiCanvas::setContent() - return 1219
Call to Spawn first player here. I don't understand why.
--------- I am Kork!! ---------
Entering GoFemale()
Leaving GoFemale() - return Call to Spawn second player here.
Leaving GameConnection::initialControlSet() - return
Entering refreshCenterTextCtrl()
Leaving refreshCenterTextCtrl() - return 0 0
Entering refreshBottomTextCtrl()
Leaving refreshBottomTextCtrl() - return 0 0
Mapping string: spawnPlayer to index: 3
Entering serverCmdSpawnPlayer(1539, HumanFemale) spawn my elf here
Entering pickSpawnPoint()
Leaving pickSpawnPoint() - return 676.083 -172.257 212.069 1 0 0 0
Entering GameConnection::spawnPlayer(1539) Spawning second player here. No clue why/
Entering pickSpawnPoint()
Leaving pickSpawnPoint() - return 702.918 -117.614 204.325 0 0 -1 0.85
Entering GameConnection::createPlayer(1539, 702.918 -117.614 204.325 0 0 -1 0.85)
Attempting to create an angus ghost! It wanted to spawn a third player??
Entering armor::onAdd(103, 1615)
Leaving armor::onAdd() - return
Entering ShapeBase::setInventory(1615, Crossbow, 1)
Entering ShapeBase::maxInventory(1615, Crossbow)
Leaving ShapeBase::maxInventory() - return 1
Entering Weapon::onInventory(Crossbow, 1615, 1)
Leaving Weapon::onInventory() - return 1
Leaving ShapeBase::setInventory() - return 1
Entering ShapeBase::setInventory(1615, CrossbowAmmo, 20)
Entering ShapeBase::maxInventory(1615, CrossbowAmmo)
Leaving ShapeBase::maxInventory() - return 50
Entering ammo::onInventory(CrossbowAmmo, 1615, 20)
Leaving ammo::onInventory() - return 0
Leaving ShapeBase::setInventory() - return 20
Entering WeaponImage::onMount(61, 1615, 0)
Entering ShapeBase::getInventory(1615, CrossbowAmmo)
Leaving ShapeBase::getInventory() - return 20
Leaving WeaponImage::onMount() - return 20
Leaving GameConnection::createPlayer() - return 1615
Leaving GameConnection::spawnPlayer() - return 1615First of all, why do you spawn inside of initialControlset?
Secondly, have you set the client's default model?
If you want the client to spawn based on the $pref variable, all you'd have to do is something like this:
- remove that code from initialcontrolset
server-side:
//replace the %this.spawnPlayer in GameConnection::onClientEnterGame(%this) with this
commandToClient(%this, 'startSpawn');
//---------------------------------
// replace this in GameConnection::createPlayer
%player = new Player(){
dataBlock = getClientSpawnDataBlock(%this);
client = %this;
};
// add this function
function getClientSpawnDataBlock(%client) {
if (!isObject(%client.model))
%client.model = HumanMale; //put the default datablock you want here
return %client.model;
}
function serverCmdSpawnPlayer(%client, %model) {
// more secure would be to tell the client to pass a 'description' as %model,
// server switches the %model (switch$ (%model)), and sets the right datablock
// accordingly
switch$ (%model) {
case MaleModel:
%client.model = HumanMale;
case FemaleModel:
%client.model = HumanFemale;
}
%client.spawnPlayer();
}Client-side:
//add this
function clientCmdStartSpawn() {
%spawnModel = "MaleModel"; //set your default
if ($pref::model::female)
%spawnModel = "FemaleModel";
//you could check $pref::model::male [else if...] here, but since it's the default, no need to
commandToServer('spawnPlayer', %spawnModel);
}Basically what this is doing is saying:
1. client enters game
2. server tells client it's time to spawn
3. client tells server what to spawn as
4. server spawns him/her
#12
I was following the RealmWars example.
Yes. In common/server/clientConnections.cs
Ok, I'll give it a go and see how it goes.Thanks for your help. :)
06/29/2006 (12:46 pm)
Quote:First of all, why do you spawn inside of initialControlset?
I was following the RealmWars example.
Quote:
Secondly, have you set the client's default model?
Yes. In common/server/clientConnections.cs
function GameConnection::onConnect( %client, %name, %model )
{
//Added model functions. Male set to default
//You can extend this to use as many different avatars as you like.
switch$(%model)
{
case "male":
%client.model = "male"; //from male.cs
case "female":
%client.model = "female"; //from female.cs
default:
%client.model = "PlayerBody"; //From player.cs
}Ok, I'll give it a go and see how it goes.Thanks for your help. :)
#13
I was getting a syntax error on " function getClientSpawnDataBlock(%client) { " But I was able to get rid of that error by moving the code to the end of the datablock.
I have one question.
Which file would be best for the client code??
The error is being called on the opening {
06/29/2006 (3:10 pm)
Ok, I stripped out all the code I added in, and replaced code with yours.I was getting a syntax error on " function getClientSpawnDataBlock(%client) { " But I was able to get rid of that error by moving the code to the end of the datablock.
I have one question.
Which file would be best for the client code??
clientCmdStartSpawn()
{
%spawnModel = "MaleModel";
//set your default
if ($pref::model::female)
%spawnModel = "FemaleModel";
//you could check $pref::model::male [else if...] here, but since it's the default, no need to
commandToServer('spawnPlayer', %spawnModel);
}I have it in serverConnections.cs, but am getting a syntax error for the function.Quote:
Compiling GameOne/client/scripts/serverConnection.cs...
GameOne/client/scripts/serverConnection.cs Line: 82 - Syntax error.
.....
Mission lighting done
Mapping string: MissionStartPhase3Ack to index: 2
Mapping string: MissionStart to index: 11
Mapping string: SyncClock to index: 12
Mapping string: startSpawn to index: 13
clientCmdstartSpawn: Unknown command.
The error is being called on the opening {
#14
06/29/2006 (6:23 pm)
Thankyou Juan. I took the client code and placed it into it's own file and it works perfectly now. :)
#15
06/29/2006 (11:48 pm)
Cool; sorry about the syntax errors...I didn't actually try to run it before I posted that stuff.
#16
The code you gave works perfectly. :)
Thanks again.
06/30/2006 (5:38 pm)
Now worries about the syntax errors. They were caused by me putting the code in the wrong place. :blush:The code you gave works perfectly. :)
Thanks again.
Torque Owner Mike Rowley
Mike Rowley
I looked at the code in reamwars, and found the GoRed() function, so remade it to work for my purposes.
//Added to client/game.cs function GoMale() { commandtoServer('spawnPlayer',male); Canvas.setContent(playGui); echo("\n--------- I am Male!! The dominator!!! ---------"); } function GoFemale() { commandtoServer('spawnPlayer',female); Canvas.setContent(playGui); echo("\n--------- I am Female. Hear me roar!!! ---------"); }Then, changed "variable = "pref::model::female";" to "variable="GoFemale" and tested.
I still get the same error message above, and am still using kork the orc.
If I open up the console in game and type in "GoFemale();", I get my echo statement and another error.
I really don't understand any of this yet.
Sorry for the double post, but wanted to let you know what I've tried so that I'm not given the same advice over.