Ir para conteúdo
  • Cadastre-se

Suporte [Ajuda] Criar uma armadura que diminui em porcentagem o dano desse script:


Ir para solução Resolvido por Toruk,

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

8.60 TFS 1.3

Qual o motivo deste tópico? 

Ajuda

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

 

 

Você tem o código disponível? Se tiver publique-o aqui: 

local areas = {
    {leftUpPoint = {x = 31815, y = 32206, z = 7}, rightDownPoint = {x = 32070, y = 32425, z = 7}, minHit = 300, maxHit = 600},

}

function onThink(interval, lastExecution, thinkInterval)
    for id, arr in pairs(areas) do
        for x = arr.leftUpPoint.x, arr.rightDownPoint.x do
            for y = arr.leftUpPoint.y, arr.rightDownPoint.y do
                for z = arr.leftUpPoint.z, arr.rightDownPoint.z do
                    local pos = {x = x, y = y, z = z}
                    local uid = getTopCreature(pos).uid
                    if isPlayer(uid) then
                        local random = math.random(arr.minHit, arr.maxHit)
                        doCreatureAddHealth(uid, -random)
                        doSendMagicEffect(pos, 8)
                    end
                end
            end
        end
    end
    return true
end


<globalevent name="think" interval="3000" script="others/areahit.lua"/>

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Link para o post
Compartilhar em outros sites
  • Solução

Exemplo de como fazer um "check" de armadura:

Sendo 2500 o id do item que está no slot da armor e 0.5 a porcentagem do dano que o player irá receber (nesse caso, 50%).

 

local player = Player(uid)
local random = math.random(arr.minHit, arr.maxHit)
local armor = player:getSlotItem(CONST_SLOT_ARMOR)
if armor and armor:getId() == 2500 then
	doCreatureAddHealth(uid, -random*0.5)
	doSendMagicEffect(pos, 8)
	return true
end

 

Link para o post
Compartilhar em outros sites
58 minutos atrás, Toruk disse:

Exemplo de como fazer um "check" de armadura:

Sendo 2500 o id do item que está no slot da armor e 0.5 a porcentagem do dano que o player irá receber (nesse caso, 50%).

 


local player = Player(uid)
local random = math.random(arr.minHit, arr.maxHit)
local armor = player:getSlotItem(CONST_SLOT_ARMOR)
if armor and armor:getId() == 2500 then
	doCreatureAddHealth(uid, -random*0.5)
	doSendMagicEffect(pos, 8)
	return true
end

 

Funcionou mano agradeço desde já! Mas teria como colocar tipo se tiver a armadura completa exemplo, boots, shield, legs, armor e elmo ele diminui 50% caso contrario diminui 10% cada parte?

Link para o post
Compartilhar em outros sites

Tem, basta criar um "local" para determinar a somatória de proteção dos itens e ir acrescentando conforme o item, vou dar um exemplo em seu script. Usei 3 exemplos: armor, legs e backpack.

 

Raciocínio do script: O se o player n tiver nenhum dos itens, vai passar "armorProtection = 1" para o final do scripts e vai tomar o dano multiplicado por 1, que seria o dano por inteiro. Conforme ele vai tendo as partes do set, ele vai diminuindo o "armorProtection em 0,1", isso fará com que o dano final seja multiplicado por 1 valor menor ainda (Ex: se tiver 2 itens, vai ser multiplicado por 0.8, ou seja, 80% do valor total).

 

Para adicionar mais partes da armadura é só ir seguindo o mesmo raciocínio e ir colocando conforme desejar. O nome de cada slot pode ser visto em creature.h do seu tfs, mas em geral, são sempre os mesmos: https://github.com/otland/forgottenserver/blob/master/src/creature.h#L24-L41

 

local areas = {
	{leftUpPoint = {x = 31815, y = 32206, z = 7},
	rightDownPoint = {x = 32070, y = 32425, z = 7},
	minHit = 300,
	maxHit = 600,
	armorID = 15000,
	legsID = 15001,
	backpackID = 15002,
},
}

function onThink(interval, lastExecution, thinkInterval)
	for id, arr in pairs(areas) do
		for x = arr.leftUpPoint.x, arr.rightDownPoint.x do
			for y = arr.leftUpPoint.y, arr.rightDownPoint.y do
				for z = arr.leftUpPoint.z, arr.rightDownPoint.z do
					local pos = {x = x, y = y, z = z}
					local uid = getTopCreature(pos).uid
					if isPlayer(uid) then
						local player = Player(uid)

						--- START ARMOR PROTECTION ---
						local armorProtection = 1 -- 100% damage
						--- Check Armor ---
						local armor = player:getSlotItem(CONST_SLOT_ARMOR)
						if armor and armor:getId() == arr.armorID then
							armorProtection = armorProtection - 0.1 -- remove 10%
						end
						--- Check Legs ---
						local legs = player:getSlotItem(CONST_SLOT_LEGS)
						if legs and legs:getId() == arr.legsID then
							armorProtection = armorProtection - 0.1 -- remove 10%
						end
						--- Check Backpack ---
						local bp = player:getSlotItem(CONST_SLOT_BACKPACK)
						if bp and bp:getId() == arr.backpackID then
							armorProtection = armorProtection - 0.1 -- remove 10%
						end
						--- END PROTECTION ---
						local finalDamage = math.random(arr.minHit, arr.maxHit)
						doCreatureAddHealth(uid, -finalDamage*armorProtection)
						doSendMagicEffect(pos, 8)
					end
				end
			end
		end
	end
	return true
end

 

Link para o post
Compartilhar em outros sites
3 minutos atrás, Toruk disse:

Tem, basta criar um "local" para determinar a somatória de proteção dos itens e ir acrescentando conforme o item, vou dar um exemplo em seu script. Usei 3 exemplos: armor, legs e backpack.

 

Raciocínio do script: O se o player n tiver nenhum dos itens, vai passar "armorProtection = 1" para o final do scripts e vai tomar o dano multiplicado por 1, que seria o dano por inteiro. Conforme ele vai tendo as partes do set, ele vai diminuindo o "armorProtection em 0,1", isso fará com que o dano final seja multiplicado por 1 valor menor ainda (Ex: se tiver 2 itens, vai ser multiplicado por 0.8, ou seja, 80% do valor total).

 

Para adicionar mais partes da armadura é só ir seguindo o mesmo raciocínio e ir colocando conforme desejar. O nome de cada slot pode ser visto em creature.h do seu tfs, mas em geral, são sempre os mesmos: https://github.com/otland/forgottenserver/blob/master/src/creature.h#L24-L41

 


local areas = {
	{leftUpPoint = {x = 31815, y = 32206, z = 7},
	rightDownPoint = {x = 32070, y = 32425, z = 7},
	minHit = 300,
	maxHit = 600,
	armorID = 15000,
	legsID = 15001,
	backpackID = 15002,
},
}

function onThink(interval, lastExecution, thinkInterval)
	for id, arr in pairs(areas) do
		for x = arr.leftUpPoint.x, arr.rightDownPoint.x do
			for y = arr.leftUpPoint.y, arr.rightDownPoint.y do
				for z = arr.leftUpPoint.z, arr.rightDownPoint.z do
					local pos = {x = x, y = y, z = z}
					local uid = getTopCreature(pos).uid
					if isPlayer(uid) then
						local player = Player(uid)

						--- START ARMOR PROTECTION ---
						local armorProtection = 1 -- 100% damage
						--- Check Armor ---
						local armor = player:getSlotItem(CONST_SLOT_ARMOR)
						if armor and armor:getId() == arr.armorID then
							armorProtection = armorProtection - 0.1 -- remove 10%
						end
						--- Check Legs ---
						local legs = player:getSlotItem(CONST_SLOT_LEGS)
						if legs and legs:getId() == arr.legsID then
							armorProtection = armorProtection - 0.1 -- remove 10%
						end
						--- Check Backpack ---
						local bp = player:getSlotItem(CONST_SLOT_BACKPACK)
						if bp and bp:getId() == arr.backpackID then
							armorProtection = armorProtection - 0.1 -- remove 10%
						end
						--- END PROTECTION ---
						local finalDamage = math.random(arr.minHit, arr.maxHit)
						doCreatureAddHealth(uid, -finalDamage*armorProtection)
						doSendMagicEffect(pos, 8)
					end
				end
			end
		end
	end
	return true
end

 

Mano você é foda! Me manda seu discord por favor!

Link para o post
Compartilhar em outros sites
4 minutos atrás, Scorpiondaniel disse:

Mano você é foda! Me manda seu discord por favor!

 

Tmj man. Mas infelizmente eu não consigo ficar ajudando em pv. 

Entro aqui de vez em nunca pra ajudar alguém por ai, até porque eu já fui um adm que fazia as perguntas e não sabia nada de lua.

 

Mas é isso ai. Desejo sucesso com o seu server! Abraço man.

Link para o post
Compartilhar em outros sites
1 minuto atrás, Toruk disse:

 

Tmj man. Mas infelizmente eu não consigo ficar ajudando em pv. 

Entro aqui de vez em nunca pra ajudar alguém por ai, até porque eu já fui um adm que fazia as perguntas e não sabia nada de lua.

 

Mas é isso ai. Desejo sucesso com o seu server! Abraço man.

Não quero ficar te incomodando pv não kkk, achei que nem iria me responder queria te contar um pouco sobre o projeto e ver se não gostaria de participar, se não tiver interesse não tem problema, mais para trocar ideia mesmo! faz o seguinte me add aew: True#3345

E qualquer coisa ta autorizado a me dar um blok lá se eu perturbar kkkk

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo