Рейты для талисманов

Twen

Призрачный страж раздела Loong
Пользователь
Всем привет. Написал простенький скрипт на Python, который массово меняет рейты для талисманов на опыт, деньги, дроп.

Использование:
Запустить, указать пути к файлу buff_proto.xml (по умолчанию возьмёт тот, что написан) и рейты.
Программа пройдётся по всей xmlке и умножит все бафы, влияющие на рейты, на ваш множитель.
Также, программа создаёт бэкап файла.

Необходимые пакеты:
  • lxml
Code:
# -*- coding: utf-8 -*-
from lxml import etree, objectify
import sys
 
 
xmlfile = input("Full path to buff_proto.xml file (C:\game\data\system\\attdata\\buff_proto.xml): ")
exp_rate_multiplier = input("Exp multiplier (1): ")
money_rate_multiplier = input("Money multiplier (1): ")
loot_rate_multiplier = input("Loot multiplier (1): ")
 
if xmlfile == "":
	xmlfile = "C:\\game\\data\\system\\attdata\\buff_proto.xml"
if exp_rate_multiplier == "":
	exp_rate_multiplier = 1.0
else:
	exp_rate_multiplier = float(exp_rate_multiplier)
if money_rate_multiplier == "":
	money_rate_multiplier = 1.0
else:
	money_rate_multiplier = float(money_rate_multiplier)
if loot_rate_multiplier == "":
	loot_rate_multiplier = 1.0
else:
	loot_rate_multiplier = float(loot_rate_multiplier)
 
with open(xmlfile, 'r') as f:
	xml = f.read().encode("ascii")
 
backup_file = open(xmlfile+'.bak', 'wb')
backup_file.write(xml)
backup_file.close()
 
root = objectify.fromstring(xml)
exp_count = 0
money_count = 0
loot_count = 0
for item in root.getchildren():
	try:
		exp_rate = int(item.attrib['ERA_Exp_Add_Rate'])
	except KeyError:
		pass
	else:
		exp_rate = str(int(float(exp_rate*exp_rate_multiplier)))
		item.attrib['ERA_Exp_Add_Rate'] = exp_rate
		exp_count += 1
	try:
		money_rate = int(item.attrib['ERA_Money_Add_Rate'])
	except KeyError:
		pass
	else:
		money_rate = str(int(float(money_rate*money_rate_multiplier)))
		item.attrib['ERA_Money_Add_Rate'] = money_rate
		money_count += 1
	try:
		loot_rate = int(item.attrib['ERA_Loot_Add_Rate'])
	except KeyError:
		pass
	else:
		loot_rate = str(int(float(loot_rate*loot_rate_multiplier)))
		item.attrib['ERA_Loot_Add_Rate'] = loot_rate
		loot_count += 1
 
 
print("Processing complete. \n Exp fields multiplied: {} \n Money fields multiplied: {} \n Loot fields multiplied: {} \n".format(exp_count, money_count, loot_count))
f.close()
while True:
	choice = input("Save? (Y/n): ")
	if choice == "Y":
		etree.cleanup_namespaces(root)
		obj_xml = etree.tostring(root, pretty_print=True)
		file_to_write = open(xmlfile, 'wb')
		file_to_write.write(obj_xml)
		file_to_write.close()
		print("File saved.")
		sys.exit(0)
	elif choice == "n":
		sys.exit(0)
	else:
		print("Please type Y or n.")

Специально для dyndev.ru
 
  • Like
Reactions: Juzilkree

Members online

No members online now.

Latest resources

Forum statistics

Threads
3,852
Messages
21,339
Members
7,971
Latest member
SMRiST