-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIconsAdder.py
142 lines (114 loc) · 6.36 KB
/
IconsAdder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import yaml
import tkinter as tk
from tkinter import messagebox, filedialog
# Функция для загрузки данных из файла с иконками (формат YAML)
def load_icons(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
return yaml.safe_load(f)
# Функция для генерации нового документа на основе шаблона
def generate_glyphs_template(icon_data, output_file_path, start_number, slot_ranges):
# Шаблон для создания записи с сохранением всех переносов строк
template = """\
glyph_{number}:
material: oraxen-{icon}
slot: {slot}
priority: 1
hide_enchantments: true
view_requirement:
requirements:
has_rank:
type: 'has permission'
permission: 'glyph.{number}'
display_name: '&eЗначок &f{character}&e'
lore:
- ''
- '&aВы уже приобрели данный значок!'
- '&8Слот: {slot}'
- '&aНажмите чтобы установить!'
click_commands:
- '[console] lp user %player_name% meta removesuffix 1'
- '[console] lp user %player_name% permission set suffix.1.&f{character}'
- '[message]&x&F&2&D&9&1&DCobblemon &1>>&a Вы успешно установили значок.'
no_glyph_{number}:
material: barrier
slot: {slot}
priority: 2
display_name: '&eЗначок &f{character}&e'
lore:
- ''
- '&cУ вас нет прав на использование данного значка!'
click_commands:
- '[message]&x&F&2&D&9&1&DCobblemon &1>>&a Для того, чтобы установить данный значок, купите его в нашем дискорде!'
"""
# Список для хранения конечных записей
glyphs = []
# Индекс слота
slot_idx = 0
# Перебираем диапазоны слотов
slots = []
for start, end in slot_ranges:
slots.extend(range(start, end + 1))
# Перебираем данные о иконках и создаём запись для каждого символа
for idx, (key, icon_info) in enumerate(icon_data.items(), start=start_number):
# Извлекаем имя иконки, которое является полным ключом (например, screamtail_icon)
icon = key # Это извлечет полное имя иконки, включая _icon
# Извлекаем символ и текстуру
character = icon_info['char']
# Если слоты еще не кончились, то берем текущий слот
if slot_idx < len(slots):
slot = slots[slot_idx]
slot_idx += 1
else:
# Если слоты закончились, выходим из цикла (можно расширить, если нужно)
break
# Формируем запись для glyph_{number} в правильном формате
glyph_entry = template.format(number=idx, icon=icon, character=character, slot=slot)
# Добавляем записи в список
glyphs.append(glyph_entry)
# Открываем файл для записи
with open(output_file_path, 'w', encoding='utf-8') as output_file:
# Записываем все строки в файл, включая все переносы строк
output_file.write("\n".join(glyphs))
# Функция для запуска через интерфейс tkinter
def on_generate_button_click():
# Получаем значения из полей ввода
start_number_str = entry_start_number.get()
# Проверяем, что введено правильное число
try:
start_number = int(start_number_str)
except ValueError:
messagebox.showerror("Ошибка", "Пожалуйста, введите корректное число для начала пагинации.")
return
# Открываем диалог для выбора файла с иконками (YAML)
icon_file_path = filedialog.askopenfilename(title="Выберите файл с иконками", filetypes=[("YAML files", "*.yml")])
if not icon_file_path:
return # Если файл не выбран, выходим
# Загружаем данные из выбранного файла (чтение YAML)
try:
icon_data = load_icons(icon_file_path)
except Exception as e:
messagebox.showerror("Ошибка", f"Ошибка при загрузке файла: {str(e)}")
return
# Открываем диалог для сохранения выходного файла
output_file_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text files", "*.txt")])
if not output_file_path:
return # Если файл не выбран, выходим
# Диапазоны слотов (для примера: 14-16, 18-25, 26-34, 37-43)
slot_ranges = [(10, 16), (19, 25), (28, 34), (37, 43)]
# Генерируем новый текстовый файл с шаблонами
generate_glyphs_template(icon_data, output_file_path, start_number, slot_ranges)
# Уведомляем пользователя о завершении
messagebox.showinfo("Готово", f"Файл успешно сгенерирован и сохранён как {output_file_path}")
# Настройка интерфейса tkinter
root = tk.Tk()
root.title("Генератор Glyphs Шаблонов")
# Надпись и поле ввода для начального числа пагинации
label_start_number = tk.Label(root, text="Начальное число пагинации:")
label_start_number.pack(padx=10, pady=5)
entry_start_number = tk.Entry(root)
entry_start_number.pack(padx=10, pady=5)
# Кнопка для генерации файла
generate_button = tk.Button(root, text="Генерировать Шаблон", command=on_generate_button_click)
generate_button.pack(padx=10, pady=20)
# Запуск главного цикла интерфейса
root.mainloop()