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

Twen

Призрачный страж раздела Loong
Пользователь
17 Авг 2013
53
33
18
31
Россия, Ярославль
gtwenty.com
Всем привет. Написал простенький скрипт на Python, который массово меняет рейты для талисманов на опыт, деньги, дроп.

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

Необходимые пакеты:
  • lxml
Код:
# -*- 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
Реакции: Juzilkree

Пользователи онлайн

Последние ресурсы

Статистика форума

Темы
3.852
Сообщения
21.322
Пользователи
7.882
Новый пользователь
galownet