AM
pedido

Novo DEATH

Por Amantezinho, 11 de nov. de 2015 em Scripts

resolvido
script
7
2.1k
AmantezinhoA
11 de novembro de 2015 às 12:59

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á.
SkymagnumS
11 de novembro de 2015 às 16:09
Melhor resposta
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 Novembro 11 por Skymagnum

13 de novembro de 2015 às 21:08

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 ?
AmantezinhoA
13 de novembro de 2015 às 22:56

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

AdministradorA
14 de novembro de 2015 às 00:30

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.

AmantezinhoA
14 de novembro de 2015 às 01:28

 

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.

SkyLighS
14 de novembro de 2015 às 14:57

Tópico movido para dúvidas / pedidos resolvidos.