Ir para conteúdo
Entre para seguir isso  
Mock

[TFS] Action ativada quando algo morre.

Recommended Posts

Mock    32
Mock

Oi depois de nao aguentar mais o povo me perguntando como fazia para executar uma action quando um bicho morresse eu decidi posta logo um tutorial que FUNCIONA!

 

 

O primeiro passo é pensa na sua action vamos supor que você quer fazer um bixo que assim que ele morre e sumonado otros 2 iguais (meu deus o0) o primeiro passo e definir um monstro vamos supor que é o rat entao vamos copiar o arquivo rat.xml e renomear para rat2.xml abra ele e antes da ultima tag ponha isso

<script>

<event name="meuscript"/>

</script>

ficando assim:

[spoiler=Rat]<?xml version="1.0" encoding="UTF-8"?>

<monster name="rat" nameDescription="a rat" race="blood" experience="5" speed="134" manacost="200">

<health now="20" max="20"/>

<look type="21" head="20" body="30" legs="40" feet="50" corpse="5964"/>

<targetchange interval="2000" chance="0"/>

<strategy attack="100" defense="0"/>

<flags>

<flag summonable="1"/>

<flag attackable="1"/>

<flag hostile="1"/>

<flag illusionable="1"/>

<flag convinceable="1"/>

<flag pushable="1"/>

<flag canpushitems="0"/>

<flag canpushcreatures="0"/>

<flag targetdistance="1"/>

<flag staticattack="90"/>

<flag runonhealth="5"/>

</flags>

<attacks>

<attack name="melee" interval="2000" skill="15" attack="7"/>

</attacks>

<defenses armor="1" defense="2"/>

<elements>

<element earthPercent="12"/>

<element holyPercent="20"/>

<element icePercent="-6"/>

<element deathPercent="-10"/>

</elements>

<voices interval="5000" chance="10">

<voice sentence="Meep!"/>

</voices>

<loot>

<item id="3976" countmax="10" chance1="50000" chancemax="0"/>

<item id="2148" countmax="7" chance1="80000" chancemax="0"/>

<item id="2696" chance="20000"/>

</loot>

<script>

<event name="meuscript"/>

</script>

 

</monster>

 

Esse meu script e o que vai definir a função.

Agora va até monsters.xml procure a tag do rat

<monster name="Rat2" file="rat2.xml"/>

 

 

Agora o passo e definir o script para isso va até creaturescripts abra o creaturescripts.xml e ponha:

<event type="death" name="meuscript" script="inmorrivel.lua"/>

 

Repare que eu puis o mesmo nome em name e no xml da rat.

Agora na pasta scripts crie o arquivo inmorrivel.lua e vou ensinar agora.

 

function onDeath(cid, corpse, killer)

if isPlayer(cid) == FALSE then

-- bloco

end

return TRUE

end

E sempre bom colocar uam verificação se de quem morreu é um player pra se for um player que morrer você nao quer que apareça monstros e o return é OBRIGATORIO!

 

Bom aqui esta o script...

function isWalkable(pos) --- function by: nord

local wall0 = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})

local wall1 = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})

local wall2 = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=2})

local creature = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=255})

if wall0.uid ~= 0 and hasProperty(wall0.uid, 3) == FALSE and hasProperty(wall0.uid, 7) == FALSE then

if wall1.uid == 0 or (hasProperty(wall1.uid, 3) == FALSE and hasProperty(wall1.uid, 7) == FALSE) then

if wall2.uid == 0 or (hasProperty(wall2.uid, 3) == FALSE and hasProperty(wall2.uid, 7) == FALSE) then

if isCreature(creature.uid) == FALSE then

return TRUE

end

end

end

end

return FALSE

end

 

function onDeath(cid, corpse, killer)

if isPlayer(cid) == FALSE then

doRemoveItem(corpse,1)

local p = getCreaturePosition(cid)

for i=1,2 do

p = {x=p.x+math.random(-i,i),y=p.y+math.random(-i,i),z=p.z,stackpos=255}

if isCreature(getThingfromPos(p).uid) == FALSE and isWalkable(p) == TRUE then

doSummonCreature(getCreatureName(cid),p)

doCreatureSay(cid,"I'm back!",20)

end

end

 

end

return TRUE

end

 

Veja que eu puis a função iswalkeable junta pois vai presisar dela

Bom esse rat quando vc matar ele vai sumonar outros 2 rats (porem como na tag do xml se vc criou 2 rats sujiro que o rat do script tenha outro nome por que senao ele vai sumonar o rat que morre normalmente).

 

Porem você pode usar outras funções como essa:

 

function onDeath(cid, corpse, killer)

if isPlayer(cid) == FALSE and isPlayer(killer) == TRUE then

doTeleportThing(killer, getCreaturePosition(cid)) -- quando o bicho morrer quem matou e teleportado em cima do corpo.

end

return TRUE

end

ou:

function onDeath(cid, corpse, killer1,killer)

if isPlayer(cid) == FALSE and isPlayer(killer) == TRUE then

for i=0, getContainerSize(corpse) do

local it = getContainerItem(corpse,i) --- Qaundo um bicho morrer todo o loot vai para a backpack de quem deu mais hits.

if it.itemid == 0 then

break

else

doRemoveItem(it.uid,it.type)

doPlayerAddItem(killer, it.itemid,it.type)

end

end

end

return TRUE

end

 

Espero que aproveitem.

Editado por Mock

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

Muito bem explicado só achei que falto cores pra destacar algumas coisas

vai ajudar muita gente, parabens pelo tutorial Mock ;D

Compartilhar este post


Link para o post
DiegooooxD    0
DiegooooxD

Nao axei mta utilidade mas gostei do tuto :)

Compartilhar este post


Link para o post
myros    0
myros
Nao axei mta utilidade mas gostei do tuto :)

 

o.O, cara a arena eh isso dae, como num tem utilidade, esse script da pra faze mta coisa rox..

 

E mock, vlw ajudo bastante, um script q nunk vi ;D

Compartilhar este post


Link para o post
vedovi    0
vedovi

Muito Bom Desse Script Da Para Fazer Varios Outros Scripts Maneiro Fiko Bom Msm.

Compartilhar este post


Link para o post
Eventide    7
Eventide

isso não é uma action, rs.

e não precisava ter feito aquilo no xml do monstro, lol!

era só verificar o cid de quem morre e se for o monstro que você quer, ai continua..

 

mas btw, se funcionar mesmo, será de grande utilidade, faz tempos que estou querendo fazer scripts em monstros e não sabia como.. x]

Compartilhar este post


Link para o post
HaUUBa    0
HaUUBa

esse aqui com Certeza eh mtu bom velho ' Parabens

Compartilhar este post


Link para o post
ADM V8    0
ADM V8

Nossa muito legal esse script =D

Compartilhar este post


Link para o post
Mock    32
Mock

@plutoplutao

Nossa muito legal esse script =D

 

isso n e um script... e sim um tutorial

Compartilhar este post


Link para o post
Scryder    0
Scryder

Bom o tuto mas não entendi onde põe que bixo vai ser aparecer quando o do script morre '-'

 

PS: como faz tipo o da old widow do global que faz uma área de poison?

Compartilhar este post


Link para o post
Ratoww    0
Ratoww

Faltava destacar um pouco as coisas para que os usuários não se inrolem do meio do tutorial

o resto tá bem explicado

Aprovado Ctz

Compartilhar este post


Link para o post
Aioria    0
Aioria

Wow

Mto bom esse script,da pra fazer mtas coisa dahoras com ele.

Compartilhar este post


Link para o post
ions_29a    0
ions_29a
Oi depois de nao aguentar mais o povo me perguntando como fazia para executar uma action quando um bicho morresse eu decidi posta logo um tutorial que FUNCIONA!

 

uhiasihuasuisa

 

e como pedem

 

vlws!

Compartilhar este post


Link para o post
Kofesco II    0
Kofesco II

Mto bom Mock

:D

Compartilhar este post


Link para o post
FakLess    0
FakLess

Nossa,Parabens Sempre Quiz Saber Como Fazer-lo... :)

Aprovadissimo :D

Tchao

Compartilhar este post


Link para o post
Kah~    0
Kah~

Valeu mock, continua contribuindo bastante com a OTNet *:

Compartilhar este post


Link para o post
silcorfa    0
silcorfa

Otimo.

Bem interessante.

Nunca tinha visto nada igual.

Compartilhar este post


Link para o post
magonbruno    0
magonbruno

Gostei muito da explicação,

 

obrigado

Compartilhar este post


Link para o post
victorthegreenot    0
victorthegreenot

Hey... revivendo tópico pra fazer uma pergunta:

Como faço pra quando o bicho morrer aparecer um teleport? :x

Compartilhar este post


Link para o post
fadeooo    0
fadeooo

Muito Bom lgl:D

 

Aprovado

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×