Ir para conteúdo

Featured Replies

Postado

Olá galera da Tk, tive uma ideia meio louca para uma quest que dá vida a estátuas   :O

Sem mais delongas, vamos a quest. 

Bom, a quest é constituída por uma sala com uma alavanca, que é rodeada por estátuas, ao puxar esta alavanca as estátuas "ganhariam" vida  :O .

Imagem da quest em sí:

azRa97I.png

Minha ideia está nesta imagem, como vocês podem notar o outfit do meu char é igual as estátuas  :hum: 

 

Eis que surge o meu pedido:

Um script que ao puxar a alavanca ou passar pelo tile antes da alavanca (o que for mais fácil de fazer) as estátuas virassem monstros (qualquer um, eu mudo a outifit), e depois que todos fossem mortos um portal surgisse no tile central.

ID das estátuas: 

3705 (Virada para o \/ Sul )
3706 ( Leste >)
3707 ( Norte /\)
3708 ( Oeste <) 


ID da Outfit: (345)

Ot Versão 8.6  :bleh: 

 

 

Agradeço dês de já!  :wow:

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Resolvido por Adriano SwaTT

Ir para solução
  • Respostas 30
  • Visualizações 1.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Desculpe a demora, tive visitas em casa... Enfim, testei e funcionou perfeitamente.   A tag em movements.xml será: <movevent type="StepIn" actionid="12129" event="script" value="SurvivalStatu

  • Arrumou o script, as coordenadas do posarea está tudo correto? Reiniciou o servidor ao arrumar? Pois como se trata de creaturescripts, nem sempre ocorre efeito quando apenas da /reload.   Boa sorte

  • Que bom que funcionou, fiz com bastante dedicação... Só que fiz para 10 monsters, porque vi aqueles que estão atrás do GOD também, você removeu do script?   Enfim... Faça bom aproveito.

Postado

Fazendo...

Lembre-se de criar o monstro com esta outfit já.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Postado
  • Autor

Ok, estarei aguardando. 

 

obs: o monstro já está pronto :D

                                                                                                230x230.jpg

 

Postado
  • Solução

Desculpe a demora, tive visitas em casa...

Enfim, testei e funcionou perfeitamente.

 

A tag em movements.xml será:

<movevent type="StepIn" actionid="12129" event="script" value="SurvivalStatues.lua"/>

 

SurvivalStatues.lua, na pasta Movements/scripts:

local monster = 'Lizard Sentinel' -- Nome do Monstro que Aparecerá
local gstrg = 12130 -- Não precisa mexer
local effct = 38 -- Efeito nas státuas ao se transformarem
local tempo = 15 -- em segundos para checar se pode reativar as estatuas
local pos = {
[1] = {{x=992, y=1050, z=7}, 3707}, -- Posição, ID da Estátua
[2] = {{x=990, y=1048, z=7}, 3706},
[3] = {{x=990, y=1046, z=7}, 3706},
[4] = {{x=990, y=1044, z=7}, 3706},
[5] = {{x=993, y=1041, z=7}, 3705},
[6] = {{x=997, y=1041, z=7}, 3705},
[7] = {{x=1000, y=1044, z=7}, 3708},
[8] = {{x=1000, y=1046, z=7}, 3708},
[9] = {{x=1000, y=1048, z=7}, 3708},
[10] = {{x=997, y=1050, z=7}, 3707}
}
----------- FIM DAS CONFIGURAÇÕES -----------

function onStepIn(cid, item, position, fromPosition)
    
    if isPlayer(cid) then
        if getGlobalStorageValue(gstrg) < 1 then
        
            for x = 1, #pos do
                doRemoveItem(getTileItemById(pos[x][1], pos[x][2]).uid)
                doSendMagicEffect(pos[x][1], effct)
                doCreateMonster(monster, pos[x][1])
            end
            addEvent(ReAddStatues, tempo * 1000)
            setGlobalStorageValue(gstrg, 1)
        else
            doPlayerSendCancel(cid, "Missão em andamento.")
        end
    end

return true
end

function ReAddStatues()
    if getGlobalStorageValue(gstrg) == 2 then
        for i = 1, #pos do
            doCreateItem(pos[i][2], 1, pos[i][1])
        end
        setGlobalStorageValue(gstrg, 0)
    else
        addEvent(ReAddStatues, tempo * 1000)
    end    
    return true
end

 

Agora vamos em CreatureScripts.xml e registre a tag abaixo:

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

 

E em login.lua, registre a tag abaixo, junto com as do gênero:

registerCreatureEvent(cid, "FinalBattle_Kill")

 

E agora crie o arquivo SurvivalStatues.lua na mesma pasta:

local gstrg = 12130 -- Não precisa mexer
local tempo = 10 -- Tempo em Segundos que o teleport ficará ativo
local posarea = {{x=988, y=1040, z=7}, {x=1004, y=1050, z=7}} -- Área inicial e final da Sala do Evento
local tp = {1387, {x=995, y=1048, z=7}, {x=995, y=1052, z=7}} -- ID, PosCreate, PosDestino
local msgfinal = "Meus parabéns, você completou a missão." -- Mensagem Ao Concluir
local monsters = {"Lizard Sentinel"} -- que serão criados na missão
----------------- FIM DAS CONFIGURAÇÕES -----------------

function onKill(cid, target, lastHit)
    if isMonster(target) then
        if isInArray(monsters, getCreatureName(target)) then
            if getCreatureFinalBattle() > 0 then
                doSendAnimatedText(getThingPos(cid), "restam "..getCreatureFinalBattle()..".", 100)
            else
                doCreateTeleport(tp[1], tp[3], tp[2])
                doPlayerSendTextMessage(cid, 4, msgfinal)
                setGlobalStorageValue(gstrg, 2)
                doSendAnimatedText(getThingPos(cid), "Parabéns.", 205)
                
                addEvent(function ()
                    doRemoveItem(getTileItemById(tp[2], tp[1]).uid)
                end, tempo * 1000)
                
            end
        end
    end
return true
end

function getCreatureFinalBattle()  -- Função que Criei para Checar Se Há Monsters na Área (Ignorando Players e Summons)
local mtab = {}
    for xx = posarea[1].x, posarea[2].x do
        for yy = posarea[1].y, posarea[2].y do
            get_top = getTopCreature({x=xx, y=yy, z=7}).uid
            if get_top > 0 then
                if isMonster(get_top) and not isPlayer(getCreatureMaster(get_top)) then
                    table.insert(mtab, get_top)
                end
            end
        end
    end
local ret1 = #mtab - 1
return ret1
end

 

Lembre-se de configurar tudo no início dos scripts.

 

Volte para dizer como foi.

Boa sorte.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Postado
  • Autor

#Edite

 

Então, funcinou perfeitamente, só tem um probleminha, quando você mata qualquer lizard, o portal se abre e diz que você completou a missão '-'

 

Uma pergunta:

local posarea = {{x=10879, y=993, z=7}, {x=1088, y=1000, z=7}} -- Área inicial e final da Sala do Evento

Essas seriam as bordas Cima esquerda e baixo direita né?

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo