AD

[Resolvido] [Resolvido] Ao morrer pra monster não perder xp, nem skills

Por AdilsonHacker, 17 de dez. de 2018 em Resolvidos

8
2.3k
AdilsonHackerA
17 de dezembro de 2018 às 22:27

Galera, gostaria de saber se teria como criar um script que ao morrer pra monstros, o jogador não perca experience nem skills. Que só perdesse xp etc quando morresse para players...

Yan LiimaY
19 de dezembro de 2018 às 22:10
Melhor resposta

Fiz aqui, testa ai

Em creaturescript/scripts crie um arquivo com o nome qualquer e coloque isto dentro:

-- Script by Yan Liima(Night)
function onDeath(cid, corpse, deathList)
if not isPlayer(cid) then
        return true
    end

local loot = false -- Se o jogador morrer ele irá perder o loot?
local xp = false -- Se o jogador morrer ele irá perder EXP?

local loss = getConfigValue('deathLostPercent')
local killer = deathList[1] -- Não mexa aqui

if isMonster(killer) then
doCreatureSetDropLoot(cid, loot)
doPlayerSetLossPercent(cid, PLAYERLOSS_SKILLS, 0)
doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0)
if xp == false then 
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 1) 
end
end
return TRUE 
end 

XML:

<event type="death" name="ProtegerPlayer" event="script" value="nome_do_arquivo.lua"/> 

Login.lua:

registerCreatureEvent(cid, "ProtegerPlayer")

Cara o unico problema vai ser o PLAYERLOSS_EXPERIENCE, bem provavel que ele buga e faz o jogador voltar pro nv1. Muitos reclamam sobre isso. Se acontecer o mesmo, tente trocar para Blessing

Editado Dezembro 19 por nedroesdoksdja

AdilsonHackerA
20 de dezembro de 2018 às 01:11
3 horas atrás, Yan Liima disse:

Fiz aqui, testa ai

Em creaturescript/scripts crie um arquivo com o nome qualquer e coloque isto dentro:

-- Script by Yan Liima(Night)
function onDeath(cid, corpse, deathList)
if not isPlayer(cid) then
        return true
    end

local loot = false -- Se o jogador morrer ele irá perder o loot?
local xp = false -- Se o jogador morrer ele irá perder EXP?

local loss = getConfigValue('deathLostPercent')
local killer = deathList[1] -- Não mexa aqui

if isMonster(killer) then
doCreatureSetDropLoot(cid, loot)
doPlayerSetLossPercent(cid, PLAYERLOSS_SKILLS, 0)
doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0)
if xp == false then 
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 1) 
end
end
return TRUE 
end 

XML:

<event type="death" name="ProtegerPlayer" event="script" value="nome_do_arquivo.lua"/> 

Login.lua:

registerCreatureEvent(cid, "ProtegerPlayer")

Cara o unico problema vai ser o PLAYERLOSS_EXPERIENCE, bem provavel que ele buga e faz o jogador voltar pro nv1. Muitos reclamam sobre isso. Se acontecer o mesmo, tente trocar para Blessing

Amigo, testei aqui.. morri várias vezes pra bixo e não perdeu level, e morri pra player e perdeu level normal.. até então tudo normal, deu certo! Uma dúvida, após esses test, tem risco de acontecer isso de voltarem pro level 1?

EDIT: Teria como adicionar para que que se o jogador morrer para bixo + de 5 vezes, ele fique com speed 200 por 10 minutos com uma mensagem explicando o pq q ele ficar lento?

Editado Dezembro 20 por AdilsonHacker

Yan LiimaY
20 de dezembro de 2018 às 14:46
13 horas atrás, AdilsonHacker disse:

Amigo, testei aqui.. morri várias vezes pra bixo e não perdeu level, e morri pra player e perdeu level normal.. até então tudo normal, deu certo! Uma dúvida, após esses test, tem risco de acontecer isso de voltarem pro level 1?

EDIT: Teria como adicionar para que que se o jogador morrer para bixo + de 5 vezes, ele fique com speed 200 por 10 minutos com uma mensagem explicando o pq q ele ficar lento?

 

Ufa! que bom que deu certo, no meu se eu usar essa função logo de cara volta pro nv1 até hoje nunca descobri o motivo. Já vi muita gente reclamando sobre isso. Então se deu certo acho que não irá ter problemas futuramente.

 

Sobre morrer 5 vezes pro monster, seria um pouco mais complexo de se fazer. Mas creio que seria feito por storage e utilizando frags.

AdilsonHackerA
20 de dezembro de 2018 às 15:06

Entendo... mesmo assim, obrigado!!

Yan LiimaY
20 de dezembro de 2018 às 15:22

Se for possivel marque a opção de melhor resposta. Muito obrigado, foi um prazer te ajudar! :D

2 meses depois...
MarshmelloM
18 de fevereiro de 2019 às 09:25
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
MarshmelloM
18 de fevereiro de 2019 às 09:25

Tópico movido de Scripts para Resolvidos.

Fique atento às regras do fórum.