===== Typical Scripts ===== Examples of using JavaScript in tasks. They should be inserted in the **"Task Script"** block (in the settings of a specific level). ==== Hide Codes ==== $('#out_codes').hide(); ==== Hide Bonuses ==== $('#out_bonuses').hide(); ==== Hide Global (Spanning) Bonuses ==== $('#out_global_bonuses').hide(); ==== Show Custom Messages Instead of Original Code Submission Results ==== $('#answer_result_right_out').text('Looks correct'); $('#answer_result_repeat_out').text('Already submitted'); $('#answer_result_wrong_out').text('Something is wrong'); ==== Display Time Spent on Task Instead of Auto-transition Timer ==== show_time_on_task(); *Note: Only works if there is no auto-transition set for the level.* ==== Replace 'Auto-transition' with Another Name ==== $('span#out_end_time').each(function(){$(this).html($(this).html().replace('Автопереход', 'Time until zone closure'));}); ==== Replace 'Hint' with Another Name ==== $('span.hint_name').each(function(){$(this).html($(this).html().replace('Подсказка', 'Possible time until zone closure'));}); ==== Replace Text on 'Get Hint' Button ==== $('div#out_hints').each(function(){$(this).html($(this).html().replaceAll('Взять подсказку', 'Buy task'));}); ==== Olympic Tournament (Playoff Grid) ==== - Write **''[olymp]''** in the task text (it will be replaced with a table layout during the game). - Write in the task script: **''olymp('8.2')'';** * Instead of `'8.2'`, you can use `'4.2'`, `'16.2'`, `'32.2'`, `'64.2'`, `'128.2'`, `'256.2'`, `'9.3'`, `'27.3'`, `'81.3'`, `'16.4'`, `'64.4'` (where the first number is the number of starting codes, and the second is the cell merging count in subsequent stages). * If you want to keep the numbers in the codes, use: **''olymp_with_numbers('8.2')'';** - To display a custom value instead of the submitted word in the bracket: * Create a bonus with the same code. * In the **"Text after solution"** field of that bonus, in Source mode, insert: * Where ''n'' is the number of the Olympic field, and ''html'' is the text or HTML code to display (e.g. ''olymp_value(3, 'Sanctuary')''). [[https://qeng.org/game.php?jump_to&gid=3493&task_id=42715|Example of Olympic system]] | [[https://qeng.org/game.php?jump_to&gid=3493&task_id=49134|Example with tasks in starting cells]] ==== Displaying Earned Storm Points in Task Description ==== Insert into the task text: Total points: !bonus! ==== Task Answer Handler ==== You can intercept and modify submitted answers in the browser before they are sent to the server (e.g., automatically prepend a prefix ''p_''): window.submitAnswerCallback = function(answer) { return 'p_' + answer; } *If the function returns an empty string, the answer will not be sent to the server.* [[https://qeng.org/game.php?jump_to&gid=3493&task_id=52080|Example of answer hook in game]] ===== Scripts in Bonuses and Hints ===== These scripts must be inserted in the solution text field of bonuses/hints in **"Source"** mode: ==== Automatically Submit Code on Hint/Bonus Reveal ==== ==== Composite Codes in Bonuses / Penalty Hints ==== If a code consists of multiple parts scattered across different hints or bonuses: * **''composite_code_number''** — index number of the composite code if there are multiple (if it's the only one, use ''0''). * **'''code_part_string'** — the string fragment (must be quoted). * **''total_composite_parts''** — the total number of parts to collect. **Important:** Make sure to add the final assembled code to the level as a standard main code, otherwise the page will reload in a loop trying to submit a non-existent code. ===== System Events: Invoking a Script on Task Refresh ===== If you need to call a script on every task refresh in the game, write it in the **"Common HTML header of the game"**: ===== Auto-redirect in Storm Games (Do not show closed tasks) ===== To automatically redirect a team to the main game dashboard if they open an already completed storm task, insert into the **"Common HTML header of the game"**: