############################# # simple GUI Calculator # scripted by dr_lennon # 2017/3/1 # version 1.0 # special thanks to mcmonkey, blackcoyote, anthony, and Other Dev. ############################# easy_command_inv_calculator: type: inventory title: "GUI - calculator" size: 54 definitions: b: i@eci_blank d1: i@eci_calculator_number_button[display_name=<&9>1;quantity=1] d2: i@eci_calculator_number_button[display_name=<&9>2;quantity=2] d3: i@eci_calculator_number_button[display_name=<&9>3;quantity=3] d4: i@eci_calculator_number_button[display_name=<&9>4;quantity=4] d5: i@eci_calculator_number_button[display_name=<&9>5;quantity=5] d6: i@eci_calculator_number_button[display_name=<&9>6;quantity=6] d7: i@eci_calculator_number_button[display_name=<&9>7;quantity=7] d8: i@eci_calculator_number_button[display_name=<&9>8;quantity=8] d9: i@eci_calculator_number_button[display_name=<&9>9;quantity=9] d0: i@eci_calculator_number_button_0[display_name=<&9>0] d00: i@eci_calculator_number_button_0[display_name=<&9>00] dot: i@eci_calculator_number_button_dot ac: i@eci_calculator_ac c: i@eci_calculator_c confirm: i@eci_calculator_confirm[lore=<&6>result :<&b>] equal: i@eci_calculator_equal[display_name=<&a>=;base_color=red;patterns=li@white/stripe_top|white/stripe_bottom|white/stripe_middle] plus: i@eci_calculator_operation[display_name=<&a>+;base_color=white;patterns=li@red/stripe_middle|red/stripe_center] minus: i@eci_calculator_operation[display_name=<&a>-;base_color=white;patterns=li@red/stripe_middle] multiply: i@eci_calculator_operation[display_name=<&a>÷;base_color=white;patterns=li@red/stripe_downleft] divide: i@eci_calculator_operation[display_name=<&a>X;base_color=white;patterns=li@red/cross] mr: i@eci_calculator_memory[display_name=<&9>MR;lore=<&6>memory - <&b>] mc: i@eci_calculator_memory[display_name=<&9>MC] m+: i@eci_calculator_memory[display_name=<&9>M+] m-: i@eci_calculator_memory[display_name=<&9>M-] display1: i@eci_calculator_display[display_name=<&6>1;base_color=white;patterns=li@BLACK/SQUARE_TOP_LEFT|WHITE/BORDER|BLACK/STRIPE_CENTER] display2: i@eci_calculator_display[display_name=&62;base_color=white;patterns=li@BLACK/STRIPE_TOP|WHITE/RHOMBUS_MIDDLE|BLACK/STRIPE_DOWNLEFT|BLACK/STRIPE_BOTTOM|WHITE/BORDER] display3: i@eci_calculator_display[display_name=&63;base_color=white;patterns=li@BLACK/STRIPE_MIDDLE|WHITE/STRIPE_LEFT|BLACK/STRIPE_BOTTOM|BLACK/STRIPE_RIGHT|BLACK/STRIPE_TOP|WHITE/BORDER] display4: i@eci_calculator_display[display_name=&64;base_color=BLACK;patterns=li@WHITE/HALF_HORIZONTAL|BLACK/STRIPE_LEFT|WHITE/STRIPE_BOTTOM|BLACK/STRIPE_RIGHT|BLACK/STRIPE_MIDDLE|WHITE/BORDER] display5: i@eci_calculator_display[display_name=&65;base_color=white;patterns=li@BLACK/STRIPE_BOTTOM|BLACK/STRIPE_DOWNRIGHT|WHITE/CURLY_BORDER|BLACK/SQUARE_BOTTOM_LEFT|BLACK/STRIPE_TOP|WHITE/BORDER] display6: i@eci_calculator_display[display_name=&66;base_color=BLACK;patterns=li@WHITE/HALF_HORIZONTAL_MIRROR|BLACK/STRIPE_RIGHT|WHITE/STRIPE_TOP|BLACK/STRIPE_BOTTOM|BLACK/STRIPE_LEFT|WHITE/BORDER] display7: i@eci_calculator_display[display_name=&67;base_color=white;patterns=li@BLACK/STRIPE_TOP|WHITE/DIAGONAL_RIGHT|BLACK/STRIPE_DOWNLEFT|BLACK/SQUARE_BOTTOM_LEFT|WHITE/BORDER] display8: i@eci_calculator_display[display_name=&68;base_color=BLACK;patterns=li@WHITE/STRIPE_CENTER|BLACK/STRIPE_BOTTOM|BLACK/STRIPE_TOP|BLACK/STRIPE_MIDDLE|WHITE/BORDER] display9: i@eci_calculator_display[display_name=9;base_color=BLACK;patterns=li@WHITE/HALF_HORIZONTAL|BLACK/STRIPE_LEFT|WHITE/STRIPE_BOTTOM|BLACK/STRIPE_TOP|BLACK/STRIPE_RIGHT|WHITE/BORDER] display0: i@eci_calculator_display[display_name=0;base_color=white;patterns=li@BLACK/STRIPE_TOP|BLACK/STRIPE_BOTTOM|BLACK/STRIPE_RIGHT|BLACK/STRIPE_LEFT|WHITE/BORDER] displaydot: i@eci_calculator_display[display_name=dot;base_color=white;patterns=li@BLACK/SQUARE_BOTTOM_LEFT|WHITE/BORDER] displaydash: i@eci_calculator_display[display_name=-;base_color=white;patterns=li@BLACK/stripe_middle] procedural items: - define list li@ - if > 0 { - define display } else { - define display } - define blank_digit - define redual_digit ].max[0]> - repeat { - define list ]> } - foreach { - if = { - define list ]> } - if = <&dot> { - define list ]> } else { - define number display - define list ]>]> } } - determine slots: - "[b] [b] [b] [b] [eci_message] [b] [b] [b] [b]" - "[b] [mr] [b] [d1] [d2] [d3] [plus] [b] [b]" - "[b] [m+] [ac] [d4] [d5] [d6] [minus] [b] [b]" - "[b] [m-] [c] [d7] [d8] [d9] [multiply] [confirm] [b]" - "[b] [mc] [d00] [d0] [dot] [equal] [divide] [b] [b]" - "[] [] [] [] [] [] [] [] []" ## flag clear task easy_command_inv_calculator_clear_task: type: task script: - ^flag player eci_calc_buffer_value:! - ^flag player eci_calc_result_value:! - ^flag player eci_calc_oper_value:! - ^flag player eci_calc_equal_value:! - ^flag player eci_calc_memory_value:! - ^flag player eci_calc_dot_position:0 - ^flag player eci_calc_display_value:! ## calculator handler easy_command_inv_calculator_handler: type: world events: on player clicks in easy_command_inv_calculator: - determine cancelled on player drags in easy_command_inv_calculator: - determine cancelled on player clicks eci_calculator_confirm in easy_command_inv_calculator: - narrate "<&6>result : <&b>" - ~run easy_command_inv_calculator_clear_task - inventory close #clicks 1-9 on player clicks eci_calculator_number_button in easy_command_inv_calculator: - if == true { - flag player eci_calc_result_value:! - flag player eci_calc_equal_value:! } - define initial ## point below - if > 0 { - define belowdot ]> - define digitadd ].add[].div[].round_to[6]> - flag player eci_calc_dot_position:+:1 } else { - define digitadd ]> } - flag player eci_calc_buffer_value: - flag player eci_calc_display_value: - inventory open d:in@easy_command_inv_calculator #0 or 00 on player clicks eci_calculator_number_button_0 in easy_command_inv_calculator: - if == true { - flag player eci_calc_result_value:! - flag player eci_calc_equal_value:! } - define initial - choose : - case "<&9>0": - if > 0 { - flag player eci_calc_dot_position:+:1 - queue clear } - define digitadd - case "<&9>00": - if > 0 { - flag player eci_calc_dot_position:+:2 - queue clear } - define digitadd - flag player eci_calc_buffer_value: - flag player eci_calc_display_value: - inventory open d:in@easy_command_inv_calculator ## dot on player clicks eci_calculator_number_button_dot in easy_command_inv_calculator: - if > 0 queue clear - flag player eci_calc_dot_position:1 ## allclear on player clicks eci_calculator_ac in easy_command_inv_calculator: - ~run easy_command_inv_calculator_clear_task - inventory open d:in@easy_command_inv_calculator ### clear on player clicks eci_calculator_c in easy_command_inv_calculator: - if == 1 { - flag player eci_calc_dot_position:0 - queue clear } else if >= 2 { - define belowdot ]> - flag player eci_calc_buffer_value:].round_down.div[]> - flag player eci_calc_dot_position:-:1 - if == 1 flag player eci_calc_dot_position:0 } else { - flag player eci_calc_buffer_value: } - flag player eci_calc_display_value: - inventory open d:in@easy_command_inv_calculator ## mr, mc, m+, m- on player clicks eci_calculator_memory in easy_command_inv_calculator: - choose : - case "<&9>MR": - flag player eci_calc_buffer_value: - flag player eci_calc_display_value: - case "<&9>MC": - flag player eci_calc_memory_value:0 - case "<&9>M+": - flag player eci_calc_memory_value:+: - case "<&9>M-": - flag player eci_calc_memory_value:-: - inventory open d:in@easy_command_inv_calculator # operator + - * / on player clicks eci_calculator_operation in easy_command_inv_calculator: - flag player eci_calc_dot_position:0 - if == true { - flag player eci_calc_equal_value:! } - if == true && == true && == true { - if == <&a>+ { - flag player eci_calc_result_value:+: } else if == <&a>- { - flag player eci_calc_result_value:-: } else if == <&a>÷ { - flag player eci_calc_result_value:/: } else if == <&a>X { - flag player eci_calc_result_value:*: } - flag player eci_calc_buffer_value:! - flag player eci_calc_oper_value: - flag player eci_calc_display_value: - queue clear } - flag player eci_calc_oper_value: - if { - flag player eci_calc_result_value: - flag player eci_calc_buffer_value:! } - inventory open d:in@easy_command_inv_calculator # = button on player clicks eci_calculator_equal in easy_command_inv_calculator: - flag player eci_calc_dot_position:0 - choose : - case "0": - flag player eci_calc_result_value: - case "<&a>+": - flag player eci_calc_result_value:+: - case "<&a>-": - flag player eci_calc_result_value:-: - case "<&a>÷": - flag player eci_calc_result_value:/: - case "<&a>X": - flag player eci_calc_result_value:*: - flag player eci_calc_buffer_value:! - flag player eci_calc_display_value: - flag player eci_calc_equal_value:true - inventory open d:in@easy_command_inv_calculator ## press buttons eci_blank: type: item Material: gray_stained_glass_pane display name: ' ' eci_message: type: item Material: workbench display name: '<&6>calculator' eci_calculator_memory: type: item material: chest eci_calculator_number_button_dot: type: item Material: ink display name: <&9>. eci_calculator_number_button: type: item Material: lime_dye eci_calculator_number_button_0: type: item Material: gray_dye eci_calculator_display: type: item material: banner eci_calculator_AC: type: item Material: bone_meal display name: <&c>AC eci_calculator_C: type: item Material: light_gray_dye display name: <&c>C eci_calculator_confirm: type: item Material: compass display name: <&a>print output eci_calculator_operation: type: item Material: banner eci_calculator_equal: type: item Material: banner easy_command: type: command name: calc aliases: - c description: The calculator usage: - /calc - open your gui calculator script: - run easy_command_inv_calculator_clear_task instantly - inventory open d:in@easy_command_inv_calculator