Array Commands
array_equal()
|
---|
Checks the values of two arrays. Returns 1 if all values are equal, 0 if not. |
Remarks
This command does not work with arrays of real numbers.
Examples
on init declare %array_1[10] declare %array_2[11] if (array_equal(%array_1, %array_2)) message("Arrays are not equal!") else message("Arrays are equal!") end if end on
This script will produce an error message as the two arrays don't have the same size.
See Also
num_elements()
|
---|
Returns the number of elements in an array. |
Remarks
With this function you can, e.g., check how many groups are affected by the current event, using
num_elements(%GROUPS_AFFECTED)
.
Examples
on note message(num_elements(%GROUPS_AFFECTED)) end on
Outputs the number of groups that are playing when you press a key.
See Also
Events and MIDI: %GROUPS_AFFECTED
search()
| |
---|---|
Searches the specified array for the specified value (optionally within the range specified by | |
| Array to be searched through |
| Value to be found in the specified array. |
| Optional argument which specifies the array index from which to start the searching operation. |
| Optional argument which specifies the array index at which searching operation will end. |
Remarks
This command does not work with arrays of real numbers.
Examples
on init declare ui_table %array[10] (2, 2, 5) declare ui_button $check set_text($check, "Zero present?") end on on ui_control ($check) if (search(%array, 0) = -1) message("No") else message("Yes") end if $check := 0 end on
Checking if a specific value is present in an array.
on init declare const $SEARCH_FOR := 54321 declare const $SEARCH_FROM := 54000 declare const $SEARCH_TO := 55000 declare $i declare %array[100000] declare ui_button $Check set_text($Check, $SEARCH_FOR & " present?") { fill the array with sequential numbers, just to have something to search through } while ($i < num_elements(%array)) %array[$i] := $i inc($i) end while end on on ui_control ($Check) if (search(%array, $SEARCH_FOR, $SEARCH_FROM, $SEARCH_TO) = -1) message("No") else message("Yes") end if $Check := 0 end on
Searching for a specific value in a smaller part of a large array - much more performant than doing the same thing with a while loop directly in KSP!
See Also
sort()
| |
---|---|
Sorts an array in ascending or descending order (optionally within the range specified by | |
| The array to be sorted. |
| When equal to 0, the array is sorted in ascending order. When not equal to 0, the array is sorted in descending order. |
| Optional argument which specifies the array index from which to start the sorting operation. |
| Optional argument which specifies the array index at which sorting operation will end. |
Examples
on init declare $count declare ui_button $Invert declare ui_table %array[128] (3, 3, 127) while ($count < 128) %array[$count] := $count inc($count) end while end on on ui_control ($Invert) sort(%array, $Invert) end on
Quickly inverting a linear curve display.
on init declare const $ARRAY_SIZE := 32 declare ui_table %T[$ARRAY_SIZE](6, 4, -100) declare ui_value_edit $From (1, $ARRAY_SIZE, 1) declare ui_value_edit $To (1, $ARRAY_SIZE, 1) declare ui_button $Randomize declare ui_button $Direction declare ui_button $SortAll declare ui_button $SortRange make_persistent(%T) make_persistent($From) make_persistent($To) $From := 4 $To := 8 end on on ui_control ($Randomize) $i := 0 while ($i < num_elements(%T)) %T[$i] := random(-100, 100) inc($i) end while $Randomize := 0 end on on ui_control ($SortAll) sort(%T, $Direction) $SortAll := 0 end on on ui_control ($SortRange) sort(%T, $Direction, $From, $To) $SortRange := 0 end on
Comparing sorting the whole array versus sorting a range within the array.