Ir para conteúdo
  • Cadastre-se

(Resolvido)(PEDIDO DE SCRIPT) Item que fornece uma chance do personagem realizar um ataque duplo.


Ir para solução Resolvido por Gantz,

Posts Recomendados

Olá programadores, blz?

Meu pedido é o seguinte:

 

- Item que quando equipado fornece uma pequena porcentagem de chance (configurável) do personagem realizar um ataque duplo se ele estiver atacando algo.

 

- O tal item pode ser qualquer um que seja equipável, como por exemplo um Helmet, basta simplesmente a pessoa por o Item ID lá no script.

 

- O dano do ataque duplo tem que ser igual ao dano normal que o personagem desferiu no alvo. Um exemplo: Se meu personagem hitou 250 no Behemoth, e se de repente der sorte e "cair" na porcentagem de chance definida lá no script, o dano será 500.

 

- O dano do ataque duplo precisa ter um atraso de tempo de 100 milissegundos para o dano ser desferido no alvo, (depois do ataque normal).

 

Então é só, obrigado pela atenção.

Tenho certeza que muita jente vai curtir o sistema.

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

Dark Souls Bonfire GIF - Dark Souls Bonfire Rest - Discover & Share GIFs

Link para o post
Compartilhar em outros sites

acredito que dê pra fazer bem facil através de onAttack, mas como vc quer que seja esse esquema de %?
Seria no caso, apenas um item que dá uma % definida no script ou vc quer algo mais completo, que dê pra vc aumentar a % dando upgrade no item e que aceite multiplos itens?

Obs: se fizer por onAttack o script vai ficar muito perfeito e sem gambiarras mas ele vai recalcular o dano novamente. 
Ex: Se meu range de ataque é 180~250 e o primeiro dano tira 200, no ataque duplo pode cair qualquer valor entre 180 e 250 e não vai ser necessariamente um dano dobrado. Dessa maneira eu acho que fica mais bonito doque só apenas pegar o value do dano por statschange e duplicar o valor. Mas se vc ainda quiser fazer com que o ataque duplo hite a mesma coisa dá pra fazer..

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

E aí Anderson, blz cara?!

Então cara, eu gostaria de um sistema bem simples mesmo conforme tá no meu pedido.

E que também o dano seja apenas dobrado mesmo, e que a chance do ataque duplo seja igual para todos os itens.

Você já jogou Ragnarok online? Se sim, concerteza você já deve ter visto o item "Chapéu do bebê dragão". A minha ideia surgiu desse item ai que tem nesse jogo.

#UP!

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

Dark Souls Bonfire GIF - Dark Souls Bonfire Rest - Discover & Share GIFs

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

tags no creaturescripts.xml:

<event type="combat" name="DoubleAttackRegister" event="script" value="doubleattack.lua"/>
<event type="statschange" name="DoubleAttack" event="script" value="doubleattack.lua"/>

crie um arquivo .lua na pasta creaturescripts/scripts com nome de doubleattack.lua e cole o código:

local config = {
	itemid = 2142, -- id do item
	slot = CONST_SLOT_HEAD, -- slot q precisa estar equipado
	chance = 10, -- chance de acontecer
	effect = 11, -- efeito ao acontecer
	message = "DOUBLE", -- e mensagem 
	color = 120, -- cor da mensagem
}

function onCombat(cid, target)
	registerCreatureEvent(target, "DoubleAttack")
        return true    
end

function onStatsChange(cid, attacker, type, combat, value)
	if type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) then
		if getPlayerSlotItem(attacker, config.slot)	then
			if getPlayerSlotItem(attacker, config.slot).itemid == config.itemid then
				if math.random(100) <= config.chance then
					addEvent(doTargetCombatHealth, 100, attacker, cid, type, -value, -value, config.effect)
					addEvent(doSendAnimatedText, 100, getThingPos(cid), config.message, config.color)
				end
			end
		end
	end
	return true
end

depois abra o arquivo creaturescripts/scripts/login.lua e antes do return true adicione a seguinte linha:

registerCreatureEvent(cid, "DoubleAttackRegister")

as configurações esta no inicio do código

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

whatsapp-4in.png (18) 98134-9991

 

icon-skype.png [email protected]

 

Link para o post
Compartilhar em outros sites

O texto "Double" não está aparecendo, e não tem como você por 100 milisegundos pro dano do script sair? Tipo, após o player dar o dano normal, já sai o outro rapidinho depois de 100ms.

Dark Souls Bonfire GIF - Dark Souls Bonfire Rest - Discover & Share GIFs

Link para o post
Compartilhar em outros sites

^nice script, aparenta estar perfeito

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

@lolksky


 

local config = {
	itemid = 2142, -- id do item
	slot = CONST_SLOT_HEAD, -- slot q precisa estar equipado
	chance = 10, -- chance de acontecer
	effect = 11, -- efeito ao acontecer
	message = "DOUBLE", -- e mensagem 
	color = 120, -- cor da mensagem
        storage = 1010, -- storage usada

}

function onCombat(cid, target)
	registerCreatureEvent(target, "DoubleAttack")
        return true    
end

function onStatsChange(cid, attacker, type, combat, value)
	if type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) then
		if getPlayerStorageValue(cid, config.storage) == 1 then
			if getPlayerSlotItem(attacker, config.slot).itemid == config.itemid then
				if math.random(100) <= config.chance then
					addEvent(doTargetCombatHealth, 100, attacker, cid, type, -value, -value, config.effect)
					addEvent(doSendAnimatedText, 100, getThingPos(cid), config.message, config.color)
				end
			end
		end
	end
	return true
end
Editado por xBen (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

^

local config = {
    chance = 10, -- chance de acontecer
    effect = 11, -- efeito ao acontecer
    message = "DOUBLE", -- e mensagem 
    color = 120, -- cor da mensagem
    storage = 1010, -- storage usada
}
function onCombat(cid, target)
    registerCreatureEvent(target, "DoubleAttack")
    return true    
end
function onStatsChange(cid, attacker, type, combat, value)
    if type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) then
        if getPlayerStorageValue(cid, config.storage) == 1 then
            if math.random(100) <= config.chance then
                addEvent(function()
                    if isCreature(attacker) and isCreature(cid) then
                        doTargetCombatHealth(attacker, cid, type, -value, -value, config.effect)
                        doSendAnimatedText(getThingPos(cid), config.message, config.color)
                    end
                end, 100)
            end
        end
    end
    return true
end

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

oq esta faltando garoto

 

O dano do ataque duplo está saindo junto ao ataque normal, porem em hits diferentes (separados), mas acontece que o dano dos hit estão saindo um por cima/baixo do outro.

Aí tá tipo que bugando os números dos hits, se é que você me entende.

 

Não dá pra por um tempo de 100 milisegundos pro dano do ataque duplo sair? (Tipo um tempo de espera).

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

Dark Souls Bonfire GIF - Dark Souls Bonfire Rest - Discover & Share GIFs

Link para o post
Compartilhar em outros sites

^no script do Gantz tem essa parte aqui que define oque vc pediu dos 100 milisegundos.

if math.random(100) <= config.chance then
	addEvent(doTargetCombatHealth, 100, attacker, cid, type, -value, -value, config.effect)
	addEvent(doSendAnimatedText, 100, getThingPos(cid), config.message, config.color)
end

ja tá como vc quer, se quiser alterar o tempo entre 1 dano e outro mude no 100 ali, qnt maior o numero, maior a diferença de tempo em milisegundos de um dano e outro.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo