Mock 32 #1 Posted February 16, 2009 (edited) 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. Edited August 14, 2009 by Mock Share this post Link to post
Elys Zarox 0 #2 Posted February 16, 2009 Muito bem explicado só achei que falto cores pra destacar algumas coisas vai ajudar muita gente, parabens pelo tutorial Mock ;D Share this post Link to post
DiegooooxD 0 #3 Posted February 20, 2009 Nao axei mta utilidade mas gostei do tuto Share this post Link to post
myros 0 #4 Posted February 25, 2009 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 Share this post Link to post
vedovi 0 #5 Posted February 25, 2009 Muito Bom Desse Script Da Para Fazer Varios Outros Scripts Maneiro Fiko Bom Msm. Share this post Link to post
Eventide 7 #6 Posted February 26, 2009 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] Share this post Link to post
HaUUBa 0 #7 Posted March 2, 2009 esse aqui com Certeza eh mtu bom velho ' Parabens Share this post Link to post
Mock 32 #9 Posted March 3, 2009 @plutoplutao Nossa muito legal esse script =D isso n e um script... e sim um tutorial Share this post Link to post
Scryder 0 #10 Posted March 8, 2009 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? Share this post Link to post
Ratoww 0 #11 Posted March 9, 2009 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 Share this post Link to post
Aioria 0 #12 Posted March 11, 2009 Wow Mto bom esse script,da pra fazer mtas coisa dahoras com ele. Share this post Link to post
ions_29a 0 #13 Posted March 16, 2009 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! Share this post Link to post
FakLess 0 #15 Posted March 29, 2009 Nossa,Parabens Sempre Quiz Saber Como Fazer-lo... Aprovadissimo Tchao Share this post Link to post
Kah~ 0 #16 Posted March 29, 2009 Valeu mock, continua contribuindo bastante com a OTNet *: Share this post Link to post
silcorfa 0 #17 Posted March 30, 2009 Otimo. Bem interessante. Nunca tinha visto nada igual. Share this post Link to post
magonbruno 0 #18 Posted March 30, 2009 Gostei muito da explicação, obrigado Share this post Link to post
victorthegreenot 0 #19 Posted July 22, 2009 Hey... revivendo tópico pra fazer uma pergunta: Como faço pra quando o bicho morrer aparecer um teleport? :x Share this post Link to post