Advertisement
najjah

AutoKey Dice Roll Script

Apr 1st, 2024 (edited)
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | Source Code | 0 0
  1. # Open dialog to ask for dice formula
  2. retCode, dice_formula = dialog.input_dialog(title='Dice Roller', message='Type your dice formula')
  3. if retCode > 0:
  4.     dialog.info_dialog(title='Unknown Error!', message=f"Cancelling. The only available info is: Ret code {retcode}, Typed Formula {dice_formula}.")
  5.     exit()
  6.  
  7. # Trimming formula
  8. dice_formula = dice_formula.lower().replace(' ', '')
  9.  
  10. TITLE_FORMULA_ERROR = 'Dice Formula Error!'
  11. FORMULA_EXAMPLE = '2d10+5'
  12.  
  13. # Formula must contain the letter 'd' to separate number of dices from number of dice sides.
  14. index_of_d = dice_formula.find('d')
  15. if index_of_d < 0:
  16.     dialog.info_dialog(title=TITLE_FORMULA_ERROR, message=f"Fórmula inválida. A fórmula deve ser similar a este exemplo: {FORMULA_EXAMPLE}")
  17.     exit()
  18.  
  19. # Getting number of dice
  20. number_of_dice = dice_formula[:index_of_d]
  21. try:
  22.     number_of_dice = int(number_of_dice)
  23. except ValueError:
  24.     dialog.info_dialog(title=TITLE_FORMULA_ERROR, message=f"Fórmula inválida. Antes da letra 'd' deve ser inserido um número. Você inseriu {number_of_dice}.")
  25.     exit()
  26.  
  27. # Checking if there's any modifier to be applied to the total result.
  28. # It's also required to get the number of dice sides.
  29. import re
  30. match_of_modifier = re.search(r"[+-]", dice_formula)
  31. if match_of_modifier:
  32.     index_of_modifier = match_of_modifier.start()
  33.     modifier = match_of_modifier.group(0)
  34.     modifier_amount = dice_formula[index_of_modifier +1 :]
  35.     try:
  36.         modifier_amount = int(modifier_amount)
  37.     except ValueError:
  38.         dialog.info_dialog(title=TITLE_FORMULA_ERROR, message=f"Fórmula inválida. O modificador deve ser um número. Você inseriu {modifier_amount}.")
  39.         exit()
  40.     if modifier == '-':
  41.         modifier_amount = -modifier_amount
  42.     number_of_sides = dice_formula[index_of_d +1 : index_of_modifier]
  43. else:
  44.     modifier_amount = 0
  45.     number_of_sides = dice_formula[index_of_d +1 :]
  46. try:
  47.     number_of_sides = int(number_of_sides)
  48. except ValueError:
  49.     dialog.info_dialog(title=TITLE_FORMULA_ERROR, message=f"Fórmula inválida. Depois da letra 'd' deve ser inserido um número. Você inseriu {number_of_sides}.")
  50.     exit()
  51.  
  52. # Generating final result
  53. all_rolls = []
  54. import random
  55. for roll in range(number_of_dice):
  56.     all_rolls.append(random.randint(1, number_of_sides))
  57.  
  58. individual_rolls = '[' + ', '.join(list(map(str, all_rolls))) + ']'
  59. total_roll = sum(all_rolls) + modifier_amount
  60. dialog.info_dialog(title=f"Resultado:", message=f"Total: {total_roll}\r\n{individual_rolls}\r\nFórmula: {dice_formula}")
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement