Jump to content
Sign in to follow this  
IndeedPete

Wrong SQF Syntax?

Recommended Posts

Hello,

i'm trying to make a briefing which is recreated after respawn. It works so far, but something's wrong with the "setCurrentTask". Well, anyways, what's wrong with the code below?

// Aufgaben
tskZiel4 = player createSimpleTask ["Point Delta erreichen"];
tskZiel4 setSimpleTaskDescription ["Erreichen Sie Point Delta!","Point Delta erreichen","Point Delta"];
if (Ziel4) 
then
	{
		tskZiel4 setTaskState "Succeeded";
	}
else
	{
		tskZiel4 setTaskState "Created";
		tskZiel4 setSimpleTaskDestination (getMarkerPos "markerZiel4");
	};

tskZiel3 = player createSimpleTask ["Störsender zerstören"];
tskZiel3 setSimpleTaskDescription ["Zerstören Sie den Störsender!","Störsender zerstören","Störsender"];
if (Ziel3) 
then
	{
		tskZiel3 setTaskState "Succeeded";
	}
else
	{
		tskZiel3 setTaskState "Created";
		tskZiel3 setSimpleTaskDestination (getMarkerPos "markerZiel3");
	};

tskZiel2 = player createSimpleTask ["Strassensperre zerstören"];
tskZiel2 setSimpleTaskDescription ["Zerstören Sie die Strassenperre!","Strassensperre zerstören","Strassensperre"];
if (Ziel2) 
then
	{
		tskZiel2 setTaskState "Succeeded";
	}
else
	{
		tskZiel2 setTaskState "Created";
		tskZiel2 setSimpleTaskDestination (getMarkerPos "markerZiel2");
	};

tskZiel1 = player createSimpleTask ["Sammelpunkt erreichen"];
tskZiel1 setSimpleTaskDescription ["Erreichen Sie den Sammelpunkt an der Absprungzone!","Sammelpunkt erreichen","Sammelpunkt"];
if (Ziel1) 
then
	{
		tskZiel1 setTaskState "Succeeded";
	}
else
	{
		tskZiel1 setTaskState "Created";
		tskZiel1 setSimpleTaskDestination (getMarkerPos "markerZiel1");
	};

if (Ziel1)
then
	{
		if (Ziel2)
			then
				{
					if (Ziel3)
						then
							{
								if (Ziel4)
									then
										{
										}
									else
										{
											player setCurrentTask tskZiel4;
										}
							}
				}
	}
						else
							{
								player setCurrentTask tskZiel3;
							}
			else
				{
					player setCurrentTask tskZiel2;
				}
else
	{
		player setCurrentTask tskZiel1;
	};

Any help would be appreciated! :yay:

Edited by IndeedPete

Share this post


Link to post
Share on other sites

ARGH! Dude, that's some HORRIBLE tabbing there. Personally I cant even make sense of what you're trying to do.

Also, looks like you're a few semi-colons short on the else statements, no? Maybe an extra "}" too... Its really hard to tell.

EDIT: Ok, maybe now its more understandable in terms of tabbing:

if (Ziel1) then {
if (Ziel2) then	{
	if (Ziel3) then {
		if (Ziel4) then	{ 
		} 
		else { 
			player setCurrentTask tskZiel4; 
		}
	}
}
}
else {
player setCurrentTask tskZiel3;
}
else {
player setCurrentTask tskZiel2;
}
else {
player setCurrentTask tskZiel1;
};

And now you should be able to see your own mistake, those if else statements are all screwed up ;)

I still dont understand what exactly its supposed to do however (especially since you already if the same variables above it)...

Edited by Murklor

Share this post


Link to post
Share on other sites

Hm, i don't really get your tabbing, too.^^

Anyways, thank you. =) It's late over here, so I didn't see my mistake or found a better solution... :rolleyes:

I've changed it a bit and it works now.

// Aufgaben
tskZiel4 = player createSimpleTask ["Point Delta erreichen"];
tskZiel4 setSimpleTaskDescription ["Erreichen Sie Point Delta!","Point Delta erreichen","Point Delta"];
if (Ziel4) 
then
	{
		tskZiel4 setTaskState "Succeeded";
	}
else
	{
		tskZiel4 setTaskState "Created";
		tskZiel4 setSimpleTaskDestination (getMarkerPos "6");
		player setCurrentTask tskZiel4;
	};

tskZiel3 = player createSimpleTask ["Störsender zerstören"];
tskZiel3 setSimpleTaskDescription ["Zerstören Sie den Störsender!","Störsender zerstören","Störsender"];
if (Ziel3) 
then
	{
		tskZiel3 setTaskState "Succeeded";
	}
else
	{
		tskZiel3 setTaskState "Created";
		tskZiel3 setSimpleTaskDestination (getMarkerPos "5");
		player setCurrentTask tskZiel3;
	};

tskZiel2 = player createSimpleTask ["Strassensperre zerstören"];
tskZiel2 setSimpleTaskDescription ["Zerstören Sie die Strassenperre!","Strassensperre zerstören","Strassensperre"];
if (Ziel2) 
then
	{
		tskZiel2 setTaskState "Succeeded";
	}
else
	{
		tskZiel2 setTaskState "Created";
		tskZiel2 setSimpleTaskDestination (getMarkerPos "4");
		player setCurrentTask tskZiel2;
	};

tskZiel1 = player createSimpleTask ["Sammelpunkt erreichen"];
tskZiel1 setSimpleTaskDescription ["Erreichen Sie den Sammelpunkt an der Absprungzone!","Sammelpunkt erreichen","Sammelpunkt"];
if (Ziel1) 
then
	{
		tskZiel1 setTaskState "Succeeded";
	}
else
	{
		tskZiel1 setTaskState "Created";
		tskZiel1 setSimpleTaskDestination (getMarkerPos "3");
		player setCurrentTask tskZiel1;
	};

Problem solved. :yay:

Share this post


Link to post
Share on other sites

I'm not a script pro but the first think i learned was to keep a clean code style. I think that looks better:

// Aufgaben
tskZiel4 = player createSimpleTask ["Point Delta erreichen"];
tskZiel4 setSimpleTaskDescription ["Erreichen Sie Point Delta!","Point Delta erreichen","Point Delta"];
if (Ziel4) then {
tskZiel4 setTaskState "Succeeded";
} else {
tskZiel4 setTaskState "Created";
tskZiel4 setSimpleTaskDestination (getMarkerPos "6");
player setCurrentTask tskZiel4;
};

tskZiel3 = player createSimpleTask ["Störsender zerstören"];
tskZiel3 setSimpleTaskDescription ["Zerstören Sie den Störsender!","Störsender zerstören","Störsender"];
if (Ziel3) then	{
tskZiel3 setTaskState "Succeeded";
} else {
tskZiel3 setTaskState "Created";
tskZiel3 setSimpleTaskDestination (getMarkerPos "5");
player setCurrentTask tskZiel3;
};

tskZiel2 = player createSimpleTask ["Strassensperre zerstören"];
tskZiel2 setSimpleTaskDescription ["Zerstören Sie die Strassenperre!","Strassensperre zerstören","Strassensperre"];
if (Ziel2) then	{
tskZiel2 setTaskState "Succeeded";
} else {
tskZiel2 setTaskState "Created";
tskZiel2 setSimpleTaskDestination (getMarkerPos "4");
player setCurrentTask tskZiel2;
};

tskZiel1 = player createSimpleTask ["Sammelpunkt erreichen"];
tskZiel1 setSimpleTaskDescription ["Erreichen Sie den Sammelpunkt an der Absprungzone!","Sammelpunkt erreichen","Sammelpunkt"];
if (Ziel1) then	{
tskZiel1 setTaskState "Succeeded";
} else {
tskZiel1 setTaskState "Created";
tskZiel1 setSimpleTaskDestination (getMarkerPos "3");
player setCurrentTask tskZiel1;
};

Share this post


Link to post
Share on other sites

Thanks for the advice but i've made it like it is explained here. ;)

Share this post


Link to post
Share on other sites

could you not combine some of those horrible nested IFs using AND?

if ((Ziel1) && (Ziel2) && (Ziel3) && (Ziel4)) then
{
    player setCurrentTask tskZiel4;
}

...etc...

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×