Jump to content

Tutorial Básico Movements


DuuhCarvalho

Recommended Posts

Amigos o OTScritp Live! é muito ultrapassado... Sugiro fortemente que usem esse (é o mesmo que uso)

 

http://www.xtibia.com/forum/topic/226388-scripting-otm-ot-manager/

 

Ele não é completamente atualizado e faltam algumas funções, mas já ajuda muito.

 

Muito Foda ! ..

Link to comment
Share on other sites

  • 3 weeks later...

muito bom :D so explica algo tipo essa parte do piso bom si tive um negoco asim se pisa em um piso aparece um monstro de cada vez ele mata o monstro ai pisa denovo aparece ai quando pisa 30 veses ele sair e i pro templo como fasso isso ?

 

não entendi . se isso é um pedido use a área de pedidos e duvidas de scripting .

Link to comment
Share on other sites

  • 2 months later...
Em 17/03/2014 at 12:23, pprgfpedro disse:

muito bom :D so explica algo tipo essa parte do piso bom si tive um negoco asim se pisa em um piso aparece um monstro de cada vez ele mata o monstro ai pisa denovo aparece ai quando pisa 30 veses ele sair e i pro templo como fasso isso ?

eu entendi.. eu nao entendo muito de lua.. mas no C++ se usa o return e uma variavel de verificação em cima

ex:

 

function onStepIn(cid, item, pos)if isPlayer(cid) then   if getPlayerStorageValue(cid, 54321) <= 30 then      doPlayerAddItem(cid, 2160, 100)elseif getPlayerStorageValue(cid, 54321) == 30 then      doPlayerTeleport (x, y , z)   elseif getPlayerStorageValue(cid, 54321) == 31 then      doPlayerSendCancel(cid, "Você já fez essa quest!")   endendreturn trueend

 

 

Nao sei se esta correto porem essa é +- a ideia dele, so que ao inves de grana ele quer que apareça monstros... tipo task.. 

Edited by Everson Miranda
Link to comment
Share on other sites

Belo tutorial eu entendi basicamente tudo, só que quando fui tentar fazer o script não entendi por que o storage não funcionou quando pisava no tile :/

 

Como era para funcionar

 

 



Você pisa em um X Tile                 oque acontece : Você recebe um x storage, recebe uma mensagem e o monstro nasce em x localização.

 

Você tenta pisar novamente           oque acontece : Você recebe a mensagem que não pode mais respawnar o monstro.

 

 

Script

 

 



function onStepIn(cid, item, pos)
    
    
    if getPlayerStorageValue(cid, 4445) then
        doPlayerSendTextMessage(cid, 25, "Você já summonou o Frenzy Boar!")
    end
    if isPlayer(cid) then
    if getTileThingByPos(cid, {x=1111,y=1030,z=7}) then
        doCreateMonster("Frenzy Boar", {x=1111,y=1031,z=7})
        setPlayerStorageValue(cid, 4445)
        doPlayerSendTextMessage(cid, 25, "Você summonou um Frenzy Boar!")
    end
    end

    return true
end

 

 

No movements.xml

 

<movevent type="StepIn" uniqueid="15667" event="script" value="piso.lua"/>

 

 

Oque acontece

O script funciona pra summonar o monstro e receber a mensagem que nasceu, mas na parte da storage que era para verificar não sei oque está acontecendo que continua a summonar.

 

Oque a de errado no script?

 

 

Link to comment
Share on other sites

Spoiler
33 minutos atrás, CalistoKing disse:

Belo tutorial eu entendi basicamente tudo, só que quando fui tentar fazer o script não entendi por que o storage não funcionou quando pisava no tile :/

 

Como era para funcionar

 

  Ocultar conteúdo

 

 


Você pisa em um X Tile                 oque acontece : Você recebe um x storage, recebe uma mensagem e o monstro nasce em x localização.

 

Você tenta pisar novamente           oque acontece : Você recebe a mensagem que não pode mais respawnar o monstro.
 

 

 

 

Script

 

  Ocultar conteúdo

 

 


function onStepIn(cid, item, pos)
    
    
    if getPlayerStorageValue(cid, 4445) then
        doPlayerSendTextMessage(cid, 25, "Você já summonou o Frenzy Boar!")
    end
    if isPlayer(cid) then
    if getTileThingByPos(cid, {x=1111,y=1030,z=7}) then
        doCreateMonster("Frenzy Boar", {x=1111,y=1031,z=7})
        setPlayerStorageValue(cid, 4445)
        doPlayerSendTextMessage(cid, 25, "Você summonou um Frenzy Boar!")
    end
    end

    return true
end
 

 

 

 

No movements.xml

 

  Mostrar conteúdo oculto

<movevent type="StepIn" uniqueid="15667" event="script" value="piso.lua"/>

 

 

Oque acontece

O script funciona pra summonar o monstro e receber a mensagem que nasceu, mas na parte da storage que era para verificar não sei oque está acontecendo que continua a summonar.

 

Oque a de errado no script?

 

 

 

 

Muito bom, a questão da storage é que você esqueceu 2 coisinhas:
1º na parte:

setPlayerStorageValue(cid, 4445)

você esqueceu o param de valor, ou seja, o valor que vai ser atribuído a storage 4445. 

Exemplo: setPlayerStorageValue(cid, 4445, 1)  -- nesse caso foi setado o valor 1 na storage 4445.

 

2º na checagem:

if getPlayerStorageValue(cid, 4445) then        doPlayerSendTextMessage(cid, 25, "Você já summonou o Frenzy Boar!")end

já que eu setei a storage para 1 conforme expliquei acima, eu tenho que checar se o valor da storage é igual a 1.

Exemplo:  if getPlayerStorageValue(cid, 4445) == 1 then   -- nesse caso se a storage 4445 tiver o valor 1, vai entrar no if.

detalhe para que ele não entre nesse if e depois entre no outro if, utilize um return, exemplo:

if getPlayerStorageValue(cid, 4445) == 1 then       return doPlayerSendTextMessage(cid, 25, "Você já summonou o Frenzy Boar!")end

existe também outro possibilidade, que eu prefiro, estude o código abaixo:

Spoiler
function onStepIn(cid, item, pos)    if isPlayer(cid) then        if getPlayerStorageValue(cid, 4445) ~= 1 then            if getTileThingByPos(cid, {x=1111,y=1030,z=7}) then                doCreateMonster("Frenzy Boar", {x=1111,y=1031,z=7})                setPlayerStorageValue(cid, 4445, 1)                doPlayerSendTextMessage(cid, 25, "Você summonou um Frenzy Boar!")            end        else            doPlayerSendTextMessage(cid, 25, "Você já summonou o Frenzy Boar!")        end    endreturn trueend 

lendo o código..

 se é player(cid) então    se a storage 4445 do player(cid) é diferente de 1 então        ...    senão --(else)        mandar msg Você já summonou o Frenzy Boar    fimfim

 

 

: D

 

Edited by Ed'Specter
Link to comment
Share on other sites

29 minutos atrás, Ed'Specter disse:
  Ocultar conteúdo
function onStepIn(cid, item, pos)    if isPlayer(cid) then        if getPlayerStorageValue(cid, 4445) ~= 1 then            if getTileThingByPos(cid, {x=1111,y=1030,z=7}) then                doCreateMonster("Frenzy Boar", {x=1111,y=1031,z=7})                setPlayerStorageValue(cid, 4445, 1)                doPlayerSendTextMessage(cid, 25, "Você summonou um Frenzy Boar!")            end        else            doPlayerSendTextMessage(cid, 25, "Você já summonou o Frenzy Boar!")        end    endreturn trueend 

lendo o código..

 se é player(cid) então    se a storage 4445 do player(cid) é diferente de 1 então        ...    senão --(else)        mandar msg Você já summonou o Frenzy Boar    fimfim

 

 

 

 

Nossa que brilhante, eu sou iniciante e fiquei um pouco confuso mas entendi que quando colocou o param ele serviu para identificar se o player tinha ou não a storage para setar (4445, 1) e summonar o monstro ou não que no caso seria o else(se já tivesse 4445, 1).

 

Obrigado, abriu minha mente para diversas coisas, apesar de ser um iniciante e quero trazer bons conteúdo para o fórum, abraço.

Edited by CalistoKing
Link to comment
Share on other sites

×
×
  • Create New...