Entry option.

Get Help on scripting in POL with configurations, config setups, script trouble shooting, etc.
Post Reply
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Entry option.

Post by *Edwards »

I would be able to attribute a value to my entries. And I can't find the solution yet.

Code: Select all

foreach entry in ( options )

		GFCheckBox(s_gump, 180, y_pos, 2360, 2361, 0, _entry_iter);
                GFCheckBox(s_gump, 200, y_pos, 2360, 2361, 0, _entry_iter);
                GFCheckBox(s_gump, 220, y_pos, 2360, 2361, 0, _entry_iter);
Each checkbox represent different options that I would be able to add to another option.

using _entry_iter above is simply duping the checkbox function as if I click one it's always the same answer. I need to know how to give my _entry_iter values as 1 2 or 3.
User avatar
CWO
POL Expert
Posts: 1160
Joined: Sat Feb 04, 2006 5:49 pm

Post by CWO »

the _entry_iter only increases every time the foreach loops because its saying which iteration the foreach is on with the variable "entry". To get it to count up correctly in the way you want to use it, you'd have to do...

Code: Select all

var x_pos := 180;
foreach entry in (options)
  GFCheckBox(s_gump, x_pos, y_pos, 2360, 2361, 0, _entry_iter);
  x_pos := x_pos + 20; // (if on POL097) x_pos += 20
endforeach
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Post by *Edwards »

I will try that right now, thank you for your answer.
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Post by *Edwards »

Just to be sure, does the _entry_iter will return a different value with the foreach loops?

Code: Select all

GFPage(s_gump, 1);
	var num_options := options.Size();
	var y_pos := 110;
        var i;
	foreach entry in ( options )

                var x_pos := 200;
                for( i:=1; i<=7; i+=1 )
                          GFCheckBox(s_gump, x_pos, y_pos, 2360, 2361, 0, _entry_iter);
                          x_pos += 50;
                          SleepMS(2);
                endfor

		GFTextLine(s_gump, 20, y_pos, 1153, entry);
		y_pos := y_pos+20;

		if ( _entry_iter % 15 == 0 && _entry_iter < num_options )
			GFAddButton(s_gump, 590, 385, 0xA92, 0xA93, GF_PAGE_BTN, s_gump.cur_page+1);
			GFPage(s_gump, s_gump.cur_page+1);
			GFAddButton(s_gump, 590, 110, 0xA90, 0xA91, GF_PAGE_BTN, s_gump.cur_page-1);
			y_pos := 110;
		endif

		SleepMS(2);
	endforeach
If you understand, the CheckBox Button are different x value repeatly for y
User avatar
ncrsn
Grandmaster Poster
Posts: 255
Joined: Fri Feb 10, 2006 12:15 am

Post by ncrsn »

Maybe this clears it.

Code: Select all

var list := array{ "a", "b", "c" };

foreach value in list
    print(_value_iter + ": " + value);
    // 1: a
    // 2: b
    // 3: c
endforeach

list := dictionary{ "a" -> 1, "b" -> 2, "c" -> 3 };

foreach value in list
    print(_value_iter + ": " + value);
    // a: 1
    // b: 2
    // c: 3
endforeach
In foreach, _variable_iter is the index of the array (dictionary) that identifies the element it is just looping.
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Post by *Edwards »

Thanks a lot. It makes it clear now.
User avatar
*Edwards
Forum Regular
Posts: 303
Joined: Fri Dec 28, 2007 11:19 pm

Post by *Edwards »

I understand now the iteration applied in the foreach loop. But I still have some headache with my question:

Code: Select all

GFPage(s_gump, 1);
	var num_options := options.Size();
	var y_pos := 110;
        var i;
	foreach entry in ( options )

                var x_pos := 210;
                for( i:=1; i<=7; i+=1 )
                          GFCheckBox(s_gump, x_pos, y_pos, 2360, 2361, 0, _entry_iter);
                          x_pos += 50;
                          SleepMS(2);
                endfor

		GFTextLine(s_gump, 30, y_pos, 1153, entry);
		y_pos := y_pos+20;

		if ( _entry_iter % 14 == 0 && _entry_iter <num_options>= 1 && key <= num_options )
			values.Append(options[key]);
		endif
		SleepMS(2);
	endforeach
Options defined are a list of proprieties in an array. The checkboxes needs to send a special event to only the good option.

With the above code _entry_iter will simply loop to the next entry wich is normal but not exactly what I need. I tried to use numbers as if the value of the check box will return if checked. But it stills loop into the options given.

ex.:
entry1 checkbox1 checkbox2 checkbox3 checkbox4 checkbox5
entry2 checkbox1 checkbox2 checkbox3 checkbox4 checkbox5
entry3 checkbox1 checkbox2 checkbox3 checkbox4 checkbox5
[...]

If checkbox1 is checked, it will return a rename..
If checkbox2 is checked, it will return a new color..
If checkbox3 is checked, it will return a new graphic..

(that's an exemple)
Post Reply