I've encountered a strange problem while making a trigger to uncheck all checkboxes in a dialog other than the one that was checked. I don't know if there's another way to do this, but I thought I could do something like so to do the job:
Checkbox Unchecker
Events
Dialog - Any Dialog Item is used by Player Any Player with event type Checked
Local Variables
Loop Control = 0 <Integer>
Checked Box = No Dialog Item <Dialog Item>
Conditions
(Dialog containing (Used dialog item)) == My Dialog
Actions
Variable - Set Checked Box = (Used dialog item)
General - For each integer Loop Control from 1 to 6 with increment 1, do (Actions)
Actions
Dialog - Set Dialog Checkbox[Loop Control] to Unchecked for (Player group((Triggering player)))
Dialog - Set Checked Box to Checked for (Player group((Triggering player)))
But strangely as soon as I checked a box the trigger would seem to glitch and inceasingly repeat over and over.
So I thought maybe it had something to do with the loop bugging and running non-stop so I changed the loop to:
General - For each integer Loop Control from 1 to 6 with increment 1, do (Actions)
Actions
Dialog - Set Checkbox[Loop Control] to Unchecked for (Player group((Triggering player)))
General - If (Conditions) then do (Actions) else do (Actions)
If
Loop Control == 6
Then
General - Break
Else
Dialog - Set Checked Box to Checked for (Player group((Triggering player)))
For more precision, the variable Checkbox[array] was set in the initialization so each array is one of the 6 checkboxes in the dialog
Sorry to double post :( but now I'm getting very angry!
You see, I decided to try another attempt myself afterwards using another way and, well, it failed but I simply don't understand why!
Can someone with more experience than me find my mistake and help the noobish person I am?
Here was my new attempt:
Checkbox Unchecker
Events
Dialog - Any Dialog Item is used by Player Any Player with event type Checked
Local Variables
Checked Box = No Dialog Item <Dialog Item[14]>
Conditions
(Dialog containing (Used dialog item)) == My Dialog
Actions
Dialog - Set Checked Box[(Triggering player)] to Unchecked for (Player group((Triggering player)))
Variable - Set Checked Box[(Triggering player)] = (Used dialog item)
This should theoricly be unchecking the previous checkbox that was checked by the player and set the checked box as the new checked box, as simple as that but why isn't it working? This time, theres simply nothing that happens I just end up with two checked boxes.
I tried and it still doesnt seem to work but I found a way to do what they were intended for using a button instead so i guess I just give up :/ thanks anyways
Was there, it sux but the trigger runs when you use actions to check/uncheck check boxes.
Add Turn Off(this trigger) at the top of your trigger, and Turn On(this trigger) at the bottom. Should do the trick, if not look for creating some variable that will prevent this trigger from running >.>
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
I've encountered a strange problem while making a trigger to uncheck all checkboxes in a dialog other than the one that was checked. I don't know if there's another way to do this, but I thought I could do something like so to do the job:
Checkbox Unchecker
Events
Dialog - Any Dialog Item is used by Player Any Player with event type Checked
Local Variables
Loop Control = 0 <Integer>
Checked Box = No Dialog Item <Dialog Item>
Conditions
(Dialog containing (Used dialog item)) == My Dialog
Actions
Variable - Set Checked Box = (Used dialog item)
General - For each integer Loop Control from 1 to 6 with increment 1, do (Actions)
Actions
Dialog - Set Dialog Checkbox[Loop Control] to Unchecked for (Player group((Triggering player)))
Dialog - Set Checked Box to Checked for (Player group((Triggering player)))
But strangely as soon as I checked a box the trigger would seem to glitch and inceasingly repeat over and over.
So I thought maybe it had something to do with the loop bugging and running non-stop so I changed the loop to:
General - For each integer Loop Control from 1 to 6 with increment 1, do (Actions)
Actions
Dialog - Set Checkbox[Loop Control] to Unchecked for (Player group((Triggering player)))
General - If (Conditions) then do (Actions) else do (Actions)
If
Loop Control == 6
Then
General - Break
Else
Dialog - Set Checked Box to Checked for (Player group((Triggering player)))
For more precision, the variable Checkbox[array] was set in the initialization so each array is one of the 6 checkboxes in the dialog
Sorry to double post :( but now I'm getting very angry!
You see, I decided to try another attempt myself afterwards using another way and, well, it failed but I simply don't understand why!
Can someone with more experience than me find my mistake and help the noobish person I am?
Here was my new attempt:
Checkbox Unchecker
Events
Dialog - Any Dialog Item is used by Player Any Player with event type Checked
Local Variables
Checked Box = No Dialog Item <Dialog Item[14]>
Conditions
(Dialog containing (Used dialog item)) == My Dialog
Actions
Dialog - Set Checked Box[(Triggering player)] to Unchecked for (Player group((Triggering player)))
Variable - Set Checked Box[(Triggering player)] = (Used dialog item)
This should theoricly be unchecking the previous checkbox that was checked by the player and set the checked box as the new checked box, as simple as that but why isn't it working? This time, theres simply nothing that happens I just end up with two checked boxes.
@OverPoweredZeratul: Go
Maybe it cannot handle the instant change, try adding a 0 wait and see, if it works? Also print messages, to see, if the trigger is responding at all.
I tried and it still doesnt seem to work but I found a way to do what they were intended for using a button instead so i guess I just give up :/ thanks anyways
Was there, it sux but the trigger runs when you use actions to check/uncheck check boxes.
Add Turn Off(this trigger) at the top of your trigger, and Turn On(this trigger) at the bottom. Should do the trick, if not look for creating some variable that will prevent this trigger from running >.>