Script Variable from .cfg

Post your scripting questions / solutions here

Moderator: Moderators

dcoshea
Colour Sergeant
Posts: 94
Joined: Thu Mar 04, 2004 3:00 am
Location: Sydney, Australia
Contact:

Post by dcoshea »

omniscient wrote:could i do what i asked???
Okay, here is your proposal:
omniscient wrote:I ahte to bring this back but could i do:

set "test_variable" 2

Then in the script :

Code: Select all

while(getcvar test_variable = 2)
  waitframe
'=' is an assignment operator - it sets the value of the variable on the left-hand side to the value on the right-hand side. 'getcvar test_variable' is not a variable, it is a call to the 'getcvar' function which returns the value of a cvar, not a variable.

I assume you meant to test for equality. The correct operator for that is '=='. Alternatively you could test for them not being equal with '!='.

If you testing for equality with '==', the loop above will loop forever while the cvar is set to 2. So when you use 'set "test_variable" 2' as you proposed above before the code runs, it will just sit in that loop forever.

What you need to do is test for difference with '!='. That will make the thread sit in the loop until the cvar becomes equal to 2.

Code: Select all

iprintlnbold_noloc "Yay I execed the fancy cfg file!!"
would that work
I think if you changed the '=' to '!=' it would do what you want.

I hope this makes sense!

Regards,
David
kai0ty
Brigadier General
Posts: 507
Joined: Fri Mar 19, 2004 1:45 am

Post by kai0ty »

okay i gotchaa, except i thought != meant isnt =. so if i put
set "test_variable" 2

and

while(getcvar test_variable != 2)
waitframe
iprintlnbold_noloc "Yay I execed the fancy cfg file!!"

would that appear as though i didnt do anything???

or does != mean becomes equal.
There are only 10 kinds of people in this world; those who know what binary is, and those who don't.
dcoshea
Colour Sergeant
Posts: 94
Joined: Thu Mar 04, 2004 3:00 am
Location: Sydney, Australia
Contact:

Post by dcoshea »

kai0ty wrote:okay i gotchaa, except i thought != meant isnt =.
Correct, it means "not equal to".
so if i put
set "test_variable" 2

and

while(getcvar test_variable != 2)
waitframe
iprintlnbold_noloc "Yay I execed the fancy cfg file!!"

would that appear as though i didnt do anything???
Well, to me, the sensible order to do things in is have the script running first, sitting in the 'while' loop. It will sit there until you enter 'set "test_variable" 2' in the console, at which point it will say "Yay I execed the fancy cfg file!!".

Of course, you could 'set "test_variable" 2' before the map script runs, and then have 'while (getcvar test_variable == 2)', which will mean that the 'while' loop will run until you change "test_variable" to something else, e.g. 3.

I tried to write a bit of a tutorial about this stuff at http://dynamic6.gamespy.com/~rjukanproj ... tsViaCvars, I might have explained it better there!

Regards,
David
kai0ty
Brigadier General
Posts: 507
Joined: Fri Mar 19, 2004 1:45 am

Post by kai0ty »

im having trouble understanding why changing it to 2 would execute that thread if the condition is for the cvar not to = 2. can u explain that to me?
There are only 10 kinds of people in this world; those who know what binary is, and those who don't.
User avatar
bdbodger
Moderator
Posts: 2596
Joined: Tue Feb 25, 2003 7:34 am
Location: canada
Contact:

Post by bdbodger »

The answer is in the thread

while(getcvar test_variable != 2)
waitframe

the while loop loops while the test_variable is not 2 and the loop just waits untill it is 2 then continues with the rest of the thread.
Image
dcoshea
Colour Sergeant
Posts: 94
Joined: Thu Mar 04, 2004 3:00 am
Location: Sydney, Australia
Contact:

Post by dcoshea »

This is code which describes someone who sits on their butt until they see the flag on their mailbox is up, and then they go and get the mail:

Code: Select all

some_person_who_fetches_the_mail:
        while ($mailbox.flag != "up") {
                self waitthread sit_on_my_butt
        } // in other words, sit_on_my_butt until the flag is up
        self waitthread go_get_the_mail
I hope this real-world example might help to explain it :)

Regards,
David
kai0ty
Brigadier General
Posts: 507
Joined: Fri Mar 19, 2004 1:45 am

Post by kai0ty »

dcoshea wrote:This is code which describes someone who sits on their butt until they see the flag on their mailbox is up, and then they go and get the mail:

Code: Select all

some_person_who_fetches_the_mail:
        while ($mailbox.flag != "up") {
                self waitthread sit_on_my_butt
        } // in other words, sit_on_my_butt until the flag is up
        self waitthread go_get_the_mail
I hope this real-world example might help to explain it :)

Regards,
David
rofl that actually did it lol.
There are only 10 kinds of people in this world; those who know what binary is, and those who don't.
dcoshea
Colour Sergeant
Posts: 94
Joined: Thu Mar 04, 2004 3:00 am
Location: Sydney, Australia
Contact:

Post by dcoshea »

kai0ty wrote:
dcoshea wrote:This is code which describes someone who sits on their butt until they see the flag on their mailbox is up, and then they go and get the mail:

Code: Select all

some_person_who_fetches_the_mail:
        while ($mailbox.flag != "up") {
                self waitthread sit_on_my_butt
        } // in other words, sit_on_my_butt until the flag is up
        self waitthread go_get_the_mail
I hope this real-world example might help to explain it :)

Regards,
David
rofl that actually did it lol.
That's good ;)

Oops, I left the "end" off the thread, and unfortunately the next piece of code after the above thread was:

Code: Select all

play_the_blindfold_game
        self waitthread put_on_blindfold
        while (isAlive self) {
                self waitthread walk_around_aimlessly
        }
end
What with the mailbox being so close to the road, 'isAlive self' wasn't true for very long! :( We'd better not forget that 'end' on the end of our threads again :)

Regards,
David

PS Apologies for the pathetic programming humour :)
kai0ty
Brigadier General
Posts: 507
Joined: Fri Mar 19, 2004 1:45 am

Post by kai0ty »

no apology needed. i knew what u meant anyway, i just wasnt getting it.
There are only 10 kinds of people in this world; those who know what binary is, and those who don't.
Post Reply