Jump to content
Korean Random
StranikS_Scan

PjOrion - редактирование, компиляция, декомпиляция, обфускация модов (Версия: 1.3.5 Дата: 11.08.2019)

Пользуетесь ли вы Орионом?  

310 members have voted

You do not have permission to vote in this poll, or see the poll results. Please sign in or register to vote in this poll.

Recommended Posts

из перекрываемого файла - а это как ?

файлы в res_mods/<wot_ver>/ перекрывают файлы из res. Так работает загрузчик. Edited by ShadowHunterRUS
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

 

Там про шифрование ни слова нет гыгыгыг

для общего развития)))

Share this post


Link to post

Short link
Share on other sites

https://bitbucket.org/ShadowHunterRUS/wot-tools-python/src/

@StranikS_Scan, у тебя есть идеи по оптимизации?

 

Думаю стоит подключить профайлер и поработать над сокращением времени выполнения.


	def ReadChar(self):
		self.visual_data = self.visual_data[1:]
		return str(self.visual_data[0])

так вроде быстрее будет

	def ReadChar(self):
		self.visual_data = self.visual_data[1:]
		return '%s' % self.visual_data[0]


	def ReadSByte(self):
		sbyte = self.visual_data[:1]
		self.visual_data = self.visual_data[1:]
		return sbyte 

не думаю что постепенно кромсать массив данных self.visual_data - это лучше чем юзать i-тую позицию и инкрементировать её на каждом шаге.

Явно будет быстрее:

	def ReadSByte(self):
		sbyte = self.visual_data[self.position:self.position+1]
		self.position += 1
		return sbyte 


 

Мой вариант:

def readStringTillZero(self):
    index = self.visual_data.find('\x00', self.position)
    if index == -1:
        work = self.visual_data[self.position:]
        self.position += len(work)
    else:
        work = self.visual_data[self.position:index]
        self.position += index+1
    return work

Код на глаз набросал, мог накосячить с позициями в строке.

 


	def readFloats(self, lengthInBytes):
		n = lengthInBytes / 4
		sb = ''
		for i in range(n):
			if (i != 0):
				sb += ' '
			rFloat = '{0:0.6f}'.format(self.readLittleEndianFloat())
			sb += rFloat
		return sb

а можно и вот так:

	def readFloats(self, lengthInBytes):
		return ' '.join(['{0:0.6f}'.format(self.readLittleEndianFloat()) for i in xrange(lengthInBytes / 4)])


	def readDictionary(self):
		dictionary = []
		text = self.readStringTillZero();
		while (len(text) != 0):
			dictionary.append(text)
			text = self.readStringTillZero()
		self.visual_data = self.visual_data[1:]
		return dictionary

думаю лучше так:

	def readDictionary(self):
		dictionary = []
		text = self.readStringTillZero();
		while text:
                    ...


	def readNumber(self, lengthInBytes):
		Number = ''
		if lengthInBytes == 1:
			Number = str(self.ReadSByte())
		elif lengthInBytes == 2:
			Number = str(self.readLittleEndianShort())
		elif lengthInBytes == 4:
			Number = str(self.readLittleEndianInt())
		elif lengthInBytes == 8:
			Number = str(self.readLittleEndianInt64())
		else:
			Number = '0'
		return Number

Быстрее будет наверно:

	def readNumber(self, lengthInBytes):
		Number = ''
		if lengthInBytes == 1:
			Number = '%s' % self.ReadSByte()
		elif lengthInBytes == 2:
			Number = '%s' % self.readLittleEndianShort()
		elif lengthInBytes == 4:
			Number = '%s' % self.readLittleEndianInt()
		elif lengthInBytes == 8:
			Number = '%s' % self.readLittleEndianInt64()
		else:
			Number = '0'
		return Number


По своему опыту для быстродействия помогает превращение в константы:

	def readDictionary(self):
		dictionary = []
                ...
		return tuple(dictionary)
	def readElementDescriptors(self, number):
		elements = []
                ... 
		return tuple(elements)
Edited by StranikS_Scan
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, спасибо. Буду знать.

Еще не понятно как это оптимизировать под Python 3.X

P.S. вариант с tuple замедлил все. Оо

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, спасибо. Буду знать.

Еще не понятно как это оптимизировать под Python 3.X

 

Ни как, под Пи3 надо с нуля писать, я его особенностей совсем не знаю. А там усе поменялось, даже то что было медленно в Пи2 может оказаться круче и быстрее в Пи3.

 

 

P.S. вариант с tuple замедлил все. Оо

 

Возможно время конвертирования в tuple оказалось больше суммарного времени обрещения к []

 

Заюзай профайлер и программку graph и смотри чего там и как. - тыц и тыц

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Я нашел отличный способ сделать ридер моделей primitives в питоне.

Теперь есть вопрос: есть ли адекватный биндинг OpenGL под Python?

Кто-нибудь работал с PyOpenGL?

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

Эффект оценивал на насколько быстрее стало?

~20%. На некоторых файлах до 40%.

Я теперь занялся разработкой читалки примитивов.

Пока все работает.

Не знаю пока как оформить GUI.

Склоняюсь к PyQT.

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

 

 

Склоняюсь к PyQT.

 

Надеюсь на выходе готовое exe-приложение будет а не куча запчастей с инструкцией "собери себе прогу"?

Share this post


Link to post

Short link
Share on other sites

Надеюсь на выходе готовое exe-приложение будет а не куча запчастей с инструкцией "собери себе прогу"?

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

StranikS_Scan чего ты с народом в темах перестал много общаться и ушёл в подполье?

Чё случилось то?

Edited by KACTET

Share this post


Link to post

Short link
Share on other sites

Так лето же , море, пляж , пиво , девчёнки - вот это общение , на форум осенью вернёмся !;)

Share this post


Link to post

Short link
Share on other sites

Так лето же , море, пляж , пиво , девчёнки - вот это общение , на форум осенью вернёмся !;)

wtf? 'девченки - вот это общение'-что вы этим хотели сказать?

Share this post


Link to post

Short link
Share on other sites

Так лето же , море, пляж , пиво , девчёнки - вот это общение , на форум осенью вернёмся !;)

цитата St1m`a

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...