Ir para conteúdo

Featured Replies

Postado

Preciso fazer a spell UE acertar apenas inimigos (monstros, summons, players) e nao afetar aliados da party (players, summons), o maximo que consegui foi acertar players fora da party sem acertar aliados, mas se estou solo nao afeta nada... nem mesmo monstros o.O

 

local minDano = 50
local minDanoLvl = 0.2
local minDanoMl = 8

local maxDano = 75
local maxDanoLvl = 0.2
local maxDanoMl = 12

local combat = createCombatObject()
local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

function onTargetCreature(caster, target) -- função para não bater em membros da party, ainda não esta funcionando. 
	local castersParty = caster:getParty()
	if target:isPlayer() then             -- adicionar elseif target:isMonster() quando concluir de player.
		local targetsParty = target:getParty()
		if castersParty == targetsParty then
			return true
		end
	end

	local min = - (minDano + minDanoLvl*caster:getLevel() + minDanoMl*caster:getMagicLevel())
	local max = - (maxDano + maxDanoLvl*caster:getLevel() + maxDanoMl*caster:getMagicLevel())
	local dano = math.random(min, max)
	target:addHealth(dano) -- aprender outros efeitos de target pra n usar mais formula de addHealth negativo.
	return true
end

setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")

function onCastSpell(caster, variant)
    return doCombat(caster, combat, variant)
end

 

 

Editado por torresmo01 (veja o histórico de edições)

  • Respostas 7
  • Visualizações 577
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @torresmo01 Por nada. Acho que você não entendeu, ou não me expressei bem. O que quis dizer é que, quando o caster não tem party (nil), e um player alvo não tem party também (nil), vai entrar nessa co

  • @lordzetros muito obrigado. Estive sem tempo pra checar o forum pois estavam viajando e fiz uns testes offline e consegui chegar no resultado que vc descreveu acima graças a sua primeira resposta

  • Por nada, o esforço foi seu, muito normal a gente deixar passar esses pequenos detalhes e ficar quebrando cabeça para descobrir o motivo do bug. 

Postado

Cuidado com as verificações antes de confirmar a existência de dados. Por exemplo, suponha que nem o player (caster) tenha party e o alvo (player também), ou seja, 

(castersParty == nil and targetsParty == nil) ---> nil == nil

Enfim, quando ambos não tiverem party, não será removido vida do jogador. O que você pode fazer, é verificar se castersParty existe antes de verificar a igualdade entre as que citei acima. 

Postado
  • Autor

@lordzetros Vlw pela informação, mas ainda não cheguei ao resultado esperado.

local castersParty = caster:getParty()
local targetsParty = target:getParty()
if castersParty == targetsParty then

Se eu seto esses local pra serem usados no if para proteger membros da party, a função ja cai como eles tendo party obrigatoriamente, mesmo se usar castersParty == nil ou (not castersParty) e o mesmo para targetsParty, não reconhece como estando sem party.

Procurei em tudo que é lugar algum modo de dar check na party mas não encontrei.

Agradeço se alguem puder me ajudar a resolver!

Postado

@torresmo01 Por nada. Acho que você não entendeu, ou não me expressei bem. O que quis dizer é que, quando o caster não tem party (nil), e um player alvo não tem party também (nil), vai entrar nessa condição que criou para party iguais:

if castersParty == targetsParty then

Porque nil == nill, logo, não terá dano aplicado sobre ele.
Uma forma de solucionar este problema, seria checkar se o caster tem party, e se tiver, ser igual ao do target (caso ele tenha), para que assim, o dano seja anulado sobre amigos de party. Veja bem:

local targetsParty = target:getParty()
if (castersParty and castersParty == targetsParty) then
   return true
end

Editado por lordzetros (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo