Script De Not Lose Loot

exorcist
em Scripts
  • 1
  • 2

exorcist

Nossos dias nunca voltarão
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 14/06/11Posts: 172

Cara se não for pedir muito, eu queria que voces fizesse para min um script que:

 

 

 

Quando o player estivesse SEM aol e morrese para algum monstro, ele não iria perder o loot dele

 

 

porem se ele estivesse sem aol e moresse para um PLAYER ele continuaria perdendo o seu loot

 

 

Mas se ele estivesse com aol e moresse para um player, não perderia

 

 

 

|-------------------|

por favor só vocês pode salvar minha vida!.

att : neero102

|rep quem conseguir |

251899_278013482304915_1728848852_n.jpg

Mulizeu

Programar ate cair os dedos
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 05/08/10Posts: 218Gênero: Masculino
function onKill(cid, target, lastHitKiller)
if isPlayer(target) == TRUE and isCreature(lastHitKiller) then
doSetCreatureDropLoot(cid, false)
return TRUE
end
end

exorcist

Nossos dias nunca voltarão
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 14/06/11Posts: 172

Desculpe mais não funciono :/

251899_278013482304915_1728848852_n.jpg

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

creaturescripts.xml:

 

<event type="preparedeath" name="MonsterKill" event="script" value="monsterkill.lua"/>

 

monsterkill.lua:

 

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

if isPlayer(cid) and isMonster(mostDamageKiller) then

doCreatureSetDropLoot(cid, false)

end

return true

end

 

 

Adicione isso no final do login.lua:

 

registerCreatureEvent(cid, "MonsterKill")

Piabeta Kun

Ex-Coordenador de Websites
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 23/12/08Posts: 2403Gênero: MasculinoChar no Tibia: Gordo Warlike

amigo vc poderia adptar esse script e por ele por comando para que o player nao perca apenas loot para players e monstros isso sem usar as blessings?

 

se sim Agradeço desde já!

Daijobu!

 

exorcist

Nossos dias nunca voltarão
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 14/06/11Posts: 172

obrigado

LuckOake vou testas aqui se der eu te reputo

 

Ainda não funciona kk mais se ajuda o meu server é 8.60

251899_278013482304915_1728848852_n.jpg

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

@neero102

 

Pode não estar funcionando pelos seguinte motivo: Você colocou o registerCreatureEvent no lugar errado do login.lua

 

Ou então, você testou errado. O player não vai perder o loot apenas se foi o mostro que deu mais damage nele.

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

Na verdade, LuckOake, depende muito da versão do servidor usada. Nos servidores mais atuais, a função onPrepareDeath e a função onDeath retornam uma tabela com todas as criaturas que estavam atacando na hora da execução do evento:

 

onDeath(cid, corpse, deathList)
onPrepareDeath(cid, deathList)

 

Antigamente elas retornavam dois parâmetros, um que retornava a criatura que causou maior dano e o outro que retornava a criatura que deu o último ataque, como usado em seus scripts.

 

O erro então pode estar vindo daí.

 

Um grande abraço.

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

@Oneshot

 

Bom, eu parcialmente entendi o que você falou, mas tou meio perdido sobre o que devo fazer pra arrumar o script. Se puder dar uma mão, eu agradeço.

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

Por exemplo,

 

function onPrepareDeath(cid, deathList)
for _, killer in ipairs(deathList) do
	if isMonster(killer) then
		doCreatureSetDropLoot(cid, false)
		break
	end
end
return true
end

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

@neero102

 

Tenta assim:

function onPrepareDeath(cid, deathList)

for _, killer in ipairs(deathList) do

if isPlayer(cid) and isMonster(killer) then

doCreatureSetDropLoot(cid, false)

break

end

end

return true

end

 

@Oneshot

 

Me explica aquele break alí?

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

O break é uma palavra-chave que para um loop, no caso, o loop causado pelo for ali no script.

 

Eu usei o for junto com ipairs para percorrer a tabela deathlist retornada pelo creaturescript e quando ele achar um jogador na tabela, eu comando a interrupção da procura por jogadores através do break. Simples assim.

 

Abraço.

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Hm... Ok, entendi. Obrigado, REP + pela explicação.

exorcist

Nossos dias nunca voltarão
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 14/06/11Posts: 172

luck, eu vou testa aqui e se der eu te reputo kk

 

@Edit

 

Desculpe mais não funciono kk, esperando uma resposta

 

 

putz mano 1000 desculpas, eu esqueci de dizer que não é para perder o aol para monster

251899_278013482304915_1728848852_n.jpg

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

@neero102

 

Deu algum erro no distro?

  • 1
  • 2