antiblock
Elveron

Mário.

Membro Elite
  • Content Count

    155
  • Joined

  • Last visited

  • Days Won

    11

Posts posted by Mário.


  1. 1 hora atrás, madk disse:

    Que client é que podemos usar como base para este binario? Tentei o cliente de testes 40250 mas dá erro.

     

    1089e1c1da.png

     

    Abre o system.py e procura por:

    sys.path.append("lib")

     

    Adiciona por baixo:

    app.__COMMAND_LINE__ = __COMMAND_LINE__

     


  2. Olá.

    Antes de mais, quero-te avisar que estás na área errada, para a próxima mete na aba das dúvidas!

     

    Em relação a quest, analisei o erro que aparece no teu print e reparei que o erro provém da linha 207:

    say_item(""70302, "")

    Falta uma vírgula antes do 70302 (é engraçado como o esquecimento de uma simples vírgula consegue originar um erro tão "complexo"), por isso substitui essa linha por isto:

    say_item("",70302, "")

     


  3. 3.1) CC | CV | MC

            VC | VV | VM

            MC | MV | MM

     

    3.2) 15% (3/2 X 10)

     

    3 representa a quantidade de prémios/slots que podem ganhar (seguindo a lógica que só é possível ganhar se for CC, VV ou MM)

    2 representa o número de representantes

    10 equaciona de forma a que a escala seja de 0-100

     

    3.3) 11% (1 x 100 / 9)

     

    1 representa a única combinação possível para ganhar o carro (CC)

    100 representa o total em % dos slots

    9 representa o número dos slots

     

     

    Atenção: Tudo o que disse pode estar certo como errado, não tenho matemática desde o 9 ano (estou no 2 ano da faculdade, para teres uma ideia do tempo) e segui pela lógica. 

    Apenas tentei ajudar-te de forma a usares a minha burrice/esperteza para despertar alguma lógica, ou não, dos exercícios.

     

    Boa sorte!


  4. Os bónus é no mesmo sentido.

     

    41120	ȓȍ	ITEM_COSTUME	COSTUME_BODY	2	ANTI_WOLFMAN | ANTI_STACK | ANTI_DROP | ANTI_MALE	NONE	NONE	NONE	0	0	0	0	0	REAL_TIME	2678400	LIMIT_NONE	0	APPLY_CAST_SPEED	20	APPLY_MAX_HP	1500	APPLY_ATTBONUS_HUMAN	10	5	0	0	40062	0	0	0	0	0	

     

    Usando o exemplo que te dei acima, o traje 41120 tem:

    • 20% de rapidez de ataque (APPLY_CAST_SPEED 20)
    • 1500 HP (APPLY_MAX_HP 1500)
    • 10% Semi-Humanos (APPLY_ATTBONUS_HUMAN 10)

    Para mudares os valores, ou mesmo os bónus, só precisas de mudar de acordo com o que tu queres, por exemplo:

    41120	ȓȍ	ITEM_COSTUME	COSTUME_BODY	2	ANTI_WOLFMAN | ANTI_STACK | ANTI_DROP | ANTI_MALE	NONE	NONE	NONE	0	0	0	0	0	REAL_TIME	2678400	LIMIT_NONE	0	APPLY_ATTBONUS_HUMAN	5	APPLY_CRITICAL_PCT	5	APPLY_PENETRATE_PCT	5	5	0	0	40062	0	0	0	0	0	

     

    Mudei os bónus para:

     

    • 5% Semi-Humanos (APPLY_ATTBONUS_HUMAN 5)
    • 5% Chance de Críticos (APPLY_CRITICAL_PCT 5)
    • 5% Chance de Perfurar (APPLY_PENETRATE_PCT 5)

     

     


  5. Abre o item_proto e procura o traje/pet que queres alterar pelo ID e muda o seu REAL_TIME para o valor que queres em segundos.

     

    Ex:

     

    41120	ȓȍ	ITEM_COSTUME	COSTUME_BODY	2	ANTI_WOLFMAN | ANTI_STACK | ANTI_DROP | ANTI_MALE	NONE	NONE	NONE	0	0	0	0	0	REAL_TIME	1814400	LIMIT_NONE	0	APPLY_CAST_SPEED	20	APPLY_MAX_HP	1500	APPLY_ATTBONUS_HUMAN	10	5	0	0	40062	0	0	0	0	0	

     

    O traje 41120 tem 1814400 segundos, o que equivale a 21 dias. Se quisesses modificar de forma a que ficasse para 30 dias (2678400 segundos), apenas substituías o valor:

     

    41120	ȓȍ	ITEM_COSTUME	COSTUME_BODY	2	ANTI_WOLFMAN | ANTI_STACK | ANTI_DROP | ANTI_MALE	NONE	NONE	NONE	0	0	0	0	0	REAL_TIME	2678400	LIMIT_NONE	0	APPLY_CAST_SPEED	20	APPLY_MAX_HP	1500	APPLY_ATTBONUS_HUMAN	10	5	0	0	40062	0	0	0	0	0	

     


  6. 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.

     


  7. 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

     

     


  8. Como o título indica, venho apresentar-vos uma boa forma de protegerem qualquer tipo de .dll que um jogador tente injetar no vosso servidor.

    Quem fez tal "proteção" foi um rapaz chamado Koray (provavelmente poucos saberão quem ele é) e podem ficar descansados que é funcional, desde que sigam todos os passos do guia que eu fiz para a sua implementação.

     

    O que vai dentro do .rar é:



    a421442e75.png

     

    GUIA:

     

     


    888f4e63fd.png
     

     

     

    Vírus-total para os preguiçosos em clicarem no link:

     

     


    8ff9949c48.png
     

     

     

    Download: https://mega.nz/#!w4lAVJ5C!bUdyfHs_9AC37_SvvPioc3fizLqmzVg89ndmphSmUgM

    VT: https://virustotal.com/pt/file/2bb0590de7f6aa4e82e9ed56e08bd022165ddc8d32d8cc322ee4baf87954b5b3/analysis/

     

    Créditos: Koray

    GUIA: Mário


  9. Apesar do tópico já ter perdido o seu interesse, venho apenas reforçar que não recomendo que tenham qualquer tipo de negócio com este sujeito.

    Na altura tinha ficado interessado neste tipo de 'hosting', sendo que o contactei pelo skype. O rapaz nem sequer deu-se ao trabalho de responder.

     

    8e0ac3e85c3d4eddaed5ee34e9bb12aa.png


  10. O vídeo do Nuno Agonia não pode ser considerado 'válido' pela simples razão de ter testado em 2 smartphones que têm o GorillaGlass, que por sua vez faz isso tudo sem qualquer tipo de película.

     

    Podem ver o vídeo do Fala Vertão - cujo foi a inspiração do Nuno para fazer o vídeo - onde o resultado é diferente.

     


  11. OVH tem domínios gratuitos? Também não tinha intenções de divulgar os meus dados de cartão de crédito...

     

    Podes sempre comprar o domínio .com na godaddy a menos de 1 euro.

    Comprei a dias atrás a 0,99.


  12. Então um tutorial muito simples e rápido.

     

    1. Liga o VirtualBox;

    2. Escreve o directório de onde vais instalar as serverfiles (ex: cd /usr/2e13r);

    3. Mete o ficheiro que acabaste de instalar dentro desse directório (ex: cd /usr/2e13r);

    4. Agora mete o seguinte comando: tar zxvf nomedoficheiro.taz (ex: 2e13rfiles.taz) e dá enter;

    5. Agora escreve o comando: cd;

    6.    ""           ""     "       ""       : cd /var/db;

    7. Mete o outro ficheiro, que deve ter o nome escrito como mysql.taz, dentro desse directório;

    8. Escreve o seguinte comando: tar zxvf mysql.taz e dá enter;

    9. Depois da pasta ter sido criada, vai a propriedades e dá permissões 777;

    10. Faça bom proveito e divirta-se.


  13. Provavelmente nunca ouviste falar nas equipas que apostas (e também não deves ter pesquisado sobre eles) e apenas estás a seguir à base das odds estarem baixas.

     

    A minha recomendação é apenas tirarem umas férias disso e iniciarem a partir da terceira jornada das grandes ligas.


  14. Metin2Panamera e um grande servidor , duvido muito o facto de um membro da equipa se dar ao trabalho de fazer editados , ou dar editados xD

    No GalaxyMt2 se não tou em erro , teve um acontecimento do mesmo tipo .

     

    Cumpz

     

    Quando refiro editados, refiro a 2 tipos:

     

    Armaduras & Espadas;

    Atributos.

     

     

    Não interessa se é um grande servidor, o pior tipo de corrupção é aquela que se faz por calada.


  15. As únicas marcas executivas são Mercedez e BMW.

    Citroen, Volvo e Peugeot são alternativos.

     

    A Diesel e com GPS.

    Seat Ibiza 1.4 TDI CR 90cv por 20.848€

    se_ibiza_my16_dt_15_g.jpg

    Peugeot 208 a partir de 14.290€

    01peugeot208.jpg

    Audi A1 ou Audi A1 Sportback a partir de 19.000€

    00006f32ae62-9b83-4c9a-b.jpg?mode=pad

    Renault Captur a partir de 17.000€

    renault-captur-motorisation-01.jpg

     

    Esqueci-me de referir que teria que ser com 5 portas.

    De resto, vou ver as reviews dos carros, obrigado.

     

    sei que são 21mil mas vale a pena

    https://www.toyota.pt/new-cars/corolla/index.json

     

    3,4l/100km diesel,

    e nao tem ar de executivo é um executivo :)

     

    ou este

    https://www.toyota.pt/new-cars/auris/index.json

     

    Gostei do design do primeiro, vou ver a review, obrigado.


  16. Preciso que vocês me ajudem na compra de um carro (antes de mais, não, não é para mim, mas a escolha é minha) que seja de longo prazo, que tenha GPS integrado e que tenha um ar de executivo.

    Orçamento: 15.000 ~ 20.000


    O carro tem que ser apelativo, quer no exterior, quer no interior (preferencialmente no interior).
    Gostaria também que fosse Diesel (pois consome muito menos), mas não deixo de escolher se for Gasolina.


    Estive a ver o Citroen C4 Cactus (custa 15,409,74)


    citroen-c4-cactus.9635.152.png



    O que acham?


    OBS: Por favor, não me digam apenas o nome do carro, metam uma imagem para ter uma visão de como é.