antiblock
Elveron
  • Chatbox

    Did you check out our Discord? https://discord.gg/FFdvMjk9xA
    You don't have permission to chat.
    Load More
Sign in to follow this  
Mário.

MN passar a ser visível com o ALT tal como no MKMT2

4 posts in this topic

Ontem estava a ver um vídeo do MKMT2 e reparei que quando a personagem carrega no ALT, o MN passa a ser visível da mesma forma como o HP é.

Em pouco menos de 30 minutos, fiz a mesma coisa, provavelmente (ou não) do mesmo jeito que o Micael fez:

FoUSGmu.jpg

 


 

Explicação

 

A primeira coisa que fiz foi ir no game.py e ver qual era o valor que o LALT era atribuído. Ao ver que o mesmo estava para o self.ShowName(), fui no def dele e reparei que ele chamava valores que estão presentes em outros ficheiros:
 

self.playerGauge.EnableShowAlways()

 

Isto é bastante simples de ler, ele chama o def EnableShowAlways que se encontra no ficheiro uiPlayerGauge.py


A partir daqui, foi muito mais fácil de entender as coisas, que irei demonstrar agora no Tutorial.

 


 

Tutorial

 

Criem um ficheiro no root chamado uiPlayerGauge1.py com o seguinte:

# Importante: Não apagar este ficheiro, uma vez que é por causa dele que o MN será mostrado sempre que o jogador carregar na tecla ALT // Mário.
import ui
import player
import chr
import textTail

class PlayerGauge(ui.Gauge):

	def __init__(self, parent):
		ui.Gauge.__init__(self)
		self.SetParent(parent)
		self.AddFlag("not_pick")
		self.MakeGauge(100, "blue")

		self.curSP = 0
		self.maxSP = 0

		self.showAlways = FALSE

	def __del__(self):
		ui.Gauge.__del__(self)

	def Hide(self):
		self.SetPosition(-100, -100)
		ui.Gauge.Hide(self)

	def OnUpdate(self):
		playerIndex = player.GetMainCharacterIndex()

		(x, y, z)=textTail.GetPosition(playerIndex)

		isChat = textTail.IsChat(playerIndex)
		ui.Gauge.SetPosition(self, int(x - self.GetWidth()/2), int(y + 15) + isChat*17)

	def RefreshGauge(self):

		self.curSP = player.GetStatus(player.SP)
		self.maxSP = player.GetStatus(player.MAX_SP)
		self.SetPercentage(self.curSP, self.maxSP)

		if self.showAlways:
			self.Show()

		else:

			if self.IsShow():
				if self.curSP > self.maxSP / 2:
					self.Hide()

			else:
				if self.curSP < self.maxSP / 2:
					self.OnUpdate()
					self.Show()

	def EnableShowAlways(self):
		self.showAlways = TRUE
		self.RefreshGauge()

	def DisableShowAlways(self):
		self.showAlways = FALSE
		self.RefreshGauge()

Importante: Eu uso python22, se usam o 27, mudem o TRUE para True e FALSE para False

 

 

Abram o game.py e procurem por:

import uiPlayerGauge

 

Por baixo, adicionem:

import uiPlayerGauge1

 

Procurem, duas vezes, por:

self.playerGauge = None

 

Por baixo, adicionem:

self.playerGauge1 = None

 

Procurem por:

self.playerGauge = uiPlayerGauge.PlayerGauge(self)
		self.playerGauge.Hide()

 

Por baixo, adicionem:

self.playerGauge1 = uiPlayerGauge1.PlayerGauge(self)
		self.playerGauge1.Hide()

 

Agora necessitamos que o valor do nosso ficheiro atualize sempre que o MN é perdido ou aumentado (seja com uma skill, ao chamar o cavalo, entre outros), por isso vamos no def RefreshStatus e procurem por:

if self.playerGauge:
			self.playerGauge.RefreshGauge()

 

Por baixo, adicionem:

if self.playerGauge1:
			self.playerGauge1.RefreshGauge()

 

Agora temos que ir no def ShowName e adicionar o nosso EnableShowAlways, por isso procurem por:

self.playerGauge.EnableShowAlways()

 

Por baixo, adicionem:

self.playerGauge1.EnableShowAlways()

 

Também vamos adicionar no def HideName, para tal procurem por:

self.playerGauge.DisableShowAlways()

 

Por baixo, adicionem:

self.playerGauge1.DisableShowAlways()

 

E já está, compilem e podem testar.

 


 

Como podem ver, o trabalho não foi assim tanto, tal como tinha dito, não demorou nada mais que 30 minutos, apenas criei outro uiPlayerGauge e editei-o de forma a ir buscar o valor do MN. Existem melhores formas de fazerem isso sem a necessidade de criar outro ficheiro, esta foi a forma mais preguiçosa que achei (fiz isto hoje por volta das 03:30 da manhã, dêem-me um desconto), mas não deixa de mostrar o resultado.

 

A comunidade portuguesa/brasileira tem a mania de copiar os tópicos e meter noutros fóruns sem meter os seus devidos créditos (falo disto por experiência própria em ver o meu trabalho a ser repassado sem o meu nome). Peço que se quiserem partilhar, não retirem o meu nome.

 

Agradeço ao MKMT2 pela ideia, realmente é sempre uma mais valia saber o MN, mesmo que para alguns isso seja inútil.

 

Dou suporte no tópico, em caso de não conseguirem.

 

Edited by Mário. (see edit history)

Share this post


Link to post
Share on other sites
antiblock
Cyphriun

Muito bom  !

Share this post


Link to post
Share on other sites

Obrigado pelo conteúdo

 

Cumprimentos.

Share this post


Link to post
Share on other sites

Simples mas útil

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this