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

Twen

Призрачный страж раздела Loong
Пользователь
17 Авг 2013
53
31
18
30
Россия, Ярославль
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.838
Сообщения
21.197
Пользователи
7.601
Новый пользователь
hkuno