Ir para conteúdo
  • 0

Novo DEATH


Amantezinho

Pergunta

Gente preciso de um novo jeito de o player "morrer".

 

 

 

  • Motivo:
    Por algum motivo, meu servidor 0.3.6 TFS, buga ao player morrer. Ou seja, o player morre, o server crasha.

    Já tentamos alguns modos de arrumar isso. Então vou apelar para um sistema de death.lua

  • Como funcionar?

    O script vai ver se o player vai morrer, na hora que ele "morrer" ele volta para a pos do templo de tal player, recupera o MAX de HP/MP. Caso o player for acima do level 15 ele perde 10% de exp, abaixo não perde EXP.

    Não precisa deixar corpse, nem blood, nem nada no local da morte, pois no meu servidor não haverá loss items e tal.

    Agradeço desde já.
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
function onStatsChange(cid, attacker, type, combat, value)
 
local percent = 10
local expCalc = getPlayerExperience(cid)*(percent/100)
    if isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS and value >= getCreatureHealth(cid) then
if getPlayerLevel(cid) >= 15 then
doPlayerAddExp(cid, - expCalc)
end
doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid))
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
return false
end
 
    return true
end
 
<event type="statschange" name="NewDeath" script="newdeath.lua"/>
 
registerCreatureEvent(cid, "NewDeath")

Não creio que ira funcionar, mas teste.

Editado por Skymagnum
Link para o comentário
Compartilhar em outros sites

  • 0

Dei uma realçada nesse script. Se não funcionar, use:

 

Em Data, creaturescripts, scripts:

.lua

 

function onPrepareDeath(cid, corpse, deathlist)
 
           if (isPlayer(cid)) then
              if getPlayerLevel(cid) >= 15 then
              local numero = 10
              local porcento = getPlayerExperience(cid) * (numero/100)
                 doPlayerAddExp(cid, - porcento)
              end
            end
 
            local health = getCreatureMaxHealth(cid)
            doCreatureAddHealth(cid, health) 
          doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
 
 
    return true
end

Data, creaturescripts, creaturescripts.xml:
Tag:
<event type="preparedeath" name="PrepareDeath" event="script" value="nome_do_arquivo.lua"/>

 

 

Data, creaturescripts, login.lua:

Adicione nos registros:

registerCreatureEvent(cid, "PrepareDeath")

Dê FeedBack ?
Link para o comentário
Compartilhar em outros sites

  • 0
  • Administrador

Já foi sanada a dúvida. Agradeço a ajuda, mas os administradores não fecharam. :/

 

Poderia colocar no tópico como resolveu a dúvida? Pode ajudar outras pessoas. De qualquer jeito, vou marcar como resolvido.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Poderia colocar no tópico como resolveu a dúvida? Pode ajudar outras pessoas. De qualquer jeito, vou marcar como resolvido.

Meu amigo que entende de script compilou o servidor novamente, retirando o corpse e blood. Com um script de preparedeath foi feito uma simulação de morte, impedindo que o server crashe. Não sabemos o motivo, pois muitas coisas foram mudadas antes de descobrirmos o erro.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...