(Creaturescript) Ondeath become imortal for 5 sec

textoy
Por textoy
em Scripts

textoy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/06/13Posts: 19Char no Tibia: Mister M

Eai glr ,quero pedir ajuda em um script que to tentando criar:

 

se o player tiver storage e morrer ele fica imortal por 5 segundos, isso só pode acontecer uma vez a cada 2 minutos.

 

Eu tentei desenvolver o script mas nao consegui, por isso peço ajuda:

 

 

 

function onStatsChange(cid, attacker, type, combat, value)
local race = getPlayerStorageValue(cid, 50508)
local hp = getCreatureHealth(cid)
-- UNDEAD PASSIVE --
if race == 5 then
if value >= hp and (type == STATSCHANGE_HEALTHLOSS) then
return false
else
return true
end
end
end

valeu

christopher17288

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/06/13Posts: 39Gênero: Masculino

Cara... Vão dá 04:50 da manhã... Então, não vou testar, tava passando rápido e ví o pedido aí ..

Bom, testa aí, se não funcionar, vejamos oque podemos fazer (se bem que só vou ter tempo agora, na quinta feita huahauha), mas alguém deve ajudar aí, é coisa simples.. '-'

 

Tente em creaturescript/script

checagemimortal.lua

local config = {
storagelocal = 50508, --Storage que ele tem que ter, para quando morrer, virar imortal.
storageimortal = 39473, --Storage de tempo, não mexe.. :V rsrs
tempo = 3600                    --Tempo em segundos, que o player vai ficar imortal.
}
function onPrepareDeath(cid, corpse, deathlist)
if getPlayerStorageValue(cid, config.storagelocal) >= 1 then
setPlayerStorageValue(cid, config.storageimortal, 1)
exhaustion.set(cid, config.storageimortal, config.time)
end
return true
end
 
function onCombat(cid, target)
if isPlayer(cid) and isPlayer(target) then
if getPlayerStorageValue(target, config.storageimortal) >= 1 then
if exhaustion.check(cid, config.storageimortal) then
return doPlayerSendCancel(cid, "O player "..getCreatureTarget(cid).." se mantem imortal ainda por "..exhaustion.get(cid, storage)..".")
end
end
end
return true
end
Tags:
     <event type="combat" name="CombatImortal" event="script" value="checagemimortal.lua"/>
      <event type="preparedeath" name="MorteImortal" event="script" value="checagemimortal.lua"/>
Registers em login.lua
    registerCreatureEvent(cid, "CombatImortal")
    registerCreatureEvent(cid, "MorteImortal")
Se tiver algum erro, perdão.. Não testei e são quase 05 da manhã .-.

 

textoy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/06/13Posts: 19Char no Tibia: Mister M

no caso seria getPlayerStorageValue(cid, config.storagelocal) == 5 then

 

mas de qualquer forma não funcionou, só q pelo seu script me parece não estar executando nada, só adicionando storage

 

@edit não há necessidade do atacante ser player, pode ser bixo, qualquer coisa, o que vale é que quando o player com storagevalue 50508 == 5 morrer ele vai ficar imortal por 5 segundos, não tomando dano.

 

no seu script oncombat voce não ta retornando nada para os danos, deveria ter um return false, mas aqui não ta funcionando

christopher17288

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/06/13Posts: 39Gênero: Masculino

Cara, tá.. Outra hora eu paro pra fazer o script pra ele não morrer pra qualquer tipo de criatura, sendo monstros ou players.

Mas, agora eu só terminei esse que eu já tinha começado a fazer.. Que roda em torno de dois players se atacando. Aaahh.. E desculpa aew, o erro, sim, falta o 'returns false' e também eu não podia ter criado aquele local config. Mas como eu tinha relatado, nem conseguindo pensar eu não estava.. rsrs'

Bom, aqui está o script funcionando, ele manda uma mensagem em segundos, para o player que está tentando atacar.. E quando acaba os segundos, o player consegue atacar. Mas isso, só vai acontecer, se o player morrer com a storage..

 

Bom, primeiramente, arquivo.lua, pro creaturescript:

local storagelocal = 50508 --Storage que ele tem que ter, para quando morrer, virar imortal.
local storageimortal = 394734534 --Storage de tempo, não mexe.. :V rsrs
local tempo = 40                    --Tempo em segundos, que o player vai ficar imortal.
 
function onPrepareDeath(cid, corpse, deathlist)
if (isPlayer(cid)) then
if getPlayerStorageValue(cid, storagelocal) >= 1 then
exhaustion.set(cid, storageimortal, tempo)
end
end
return true
end
 
 
function onCombat(cid, target)
if isPlayer(target) then
if exhaustion.check(target, storageimortal) then
doPlayerSendTextMessage(cid, 27,"O player "..getCreatureName(target).." ainda está imortal. Por: "..exhaustion.get(target, storageimortal).." ")
return false
end
end
 
return true
end
Com as Tags:
      <event type="preparedeath" name="MorteImortal" event="script" value="checagemimortal.lua"/>
      <event type="combat" name="AttackImortal" event="script" value="checagemimortal.lua"/>
E os registros, pro login.lua:
    registerCreatureEvent(cid, "MorteImortal")
    registerCreatureEvent(cid, "AttackImortal")
Lembrando que não precisa alterar os nomes, pra não correr o risco de erros, muda só o nome do arquivo, deixa o nome da tag. rs'
Flw, até dps.