26

[Creatureevents] Onkill

Por 2694943kkkk, 06 de nov. de 2011 em Tutoriais de Scripting

otserv
tibia
script
7
3.5k
2694943kkkk2
06 de novembro de 2011 às 12:40

Olá galerinha Xtibiana!

Hoje eu estou aqui para ajudar a você um modo facil de entender um script, mas é muito facil mesmo!

Vamos lá...

Peguei esse script de um lugar qualquer...

 

function onKill(cid, target, lastHit)
local mName = "Nature Witch" -- monstername
local storage = 15598
       if(isPlayer(cid) and getCreatureName(target) == mName) then
       doPlayerAddItem(cid,12662,1)
       setPlayerStorageValue(cid, storage, 1)
               return true
       end
       elseif(isPlayer(cid) and getCreatureName(target) == mName  and getPlayerStorageValue(cid, storage) == 1) then
       end
               return true
end

 

Vou traduzir esse script facil :

function onKill(cid, target, lastHit)

A função funciona em Matar (Cid, target, LastHit)...

Então, para quem não sabe o "Cid" é o protagonista do script, no caso desse script é o Player.

Target, é aquele o que está dentro do onKill, ou seja o protagonista vai ser todos que tiverem dando TARGET em um monstro (como diz o script)

...

Depois vem a configuração com um comando lua "Local" isso eu não vou explicar...

 

if(isPlayer(cid) and getCreatureName(target) == mName) then

Bem, aqui é simples,

Se o player protagonista do script e o monstro selecionado no "mName" (Local config) está tomando target, Acontece:

doPlayerAddItem(cid,12662,1) --> Vai dar ao player protagonista o item 12662

setPlayerStorageValue(cid, storage, 1) --> Vai entregar ao player protagonista o storage, uma vez

Ai vem o end <-- Esse End indica o fim de uma função, neste caso ele ta dizendo que é o

fim da função if(isplayer.....) then

Da vem...

elseif(isPlayer(cid) and getCreatureName(target) == mName and getPlayerStorageValue(cid, storage) == 1) then

mas se o player protagonista do script e o monstro selecionado no "mName" (Local config) está tomando target e estiver o storage entregue Acontece:

Nada porque ali não tem nenhuma função pra acontecer...

 

Pronto agora pra regista é facil:

<event type="kill" name="nature_witch" event="script" value="nature_witch.lua"/>

O Event type é a mesma coisa que "fuction onKILL"

 

Lá no monstro que vai ser execultado o script você add

<script>
<event name="nature_witch"/>
</script>

 

Lembre-se:

Não esqueça de registra o evento no login.lua

registerCreatureEvent(cid, "nature_witch")

 

Muito obrigado, espero ter ajudado

Att. Kibe

SkyDangerousS
06 de novembro de 2011 às 14:14

Dahora :p

Eu utilizei seu tutorial para criar meu script :D

 

Parabéns !

2694943kkkk2
06 de novembro de 2011 às 22:51

Obrigado,

Espero que sejá util a todos.

BeekiB
07 de novembro de 2011 às 12:55

Belo tutorial, irá ajudar muitos.

 

Aprovado !:button_ok:

08 de novembro de 2011 às 00:12

Meu caro, mesmo que ele tenha o storage com o valor 1, o item será adicionado, pois não há a verificação do storage na primeira condição.

 

O script correto seria:

 

function onKill(cid, target, lastHit)

local mName = "Nature Witch" -- monstername
local storage = 15598

if isPlayer(cid) and getCreatureName(target) == mName and getPlayerStorageValue(cid, storage) ~= 1 then
   doPlayerAddItem(cid,12662,1)
   setPlayerStorageValue(cid, storage, 1)
   return true
end

end

 

Abraço.

AdministradorA
08 de novembro de 2011 às 17:59

Excelente amigo, muito boa a aula.

REP+

Gabriel CoutoG
10 de novembro de 2011 às 15:39

Excelente amigo, muito boa a aula.

REP+

 

Gustavo, você acabou dando reputation negativa.

Corrigi isso agora e estou aprovando o tutorial.

 

Até.