Bom, fiz esse script para sanar uma dúvida de um membro de outra comunidade, e quero compartilhar com vocês, acho que não chega a ser um tutorial, mas está bem explicado e espero que usem =)
Veja:
-Antes de mais nada, entre no seu RME e faça a área da quest, depois modifique as coordenadas no script segundo seu mapa.
- Lembre-se de colocar um tile diferente para ajudar o player a saber a posição correta de onde estar, e de por a alavanca no lugar correto.
- Adicione mais posições para nascer os monstros, quanto mais posições mais dinamico fica sua quest.
Em Actions/scripts, adicione um novo documento .lua com nome que desejar, e ponha isso dentro..
local TeleportInPos = { x = 74, y = 111, z = 10} -- Posição para onde os players serão teleportados
local LeverPos = { x = 90, y = 110, z = 10} -- Posição da Alavanca
local timeToRemove = 40 -- Time before quest reset
local tile1Pos = { x = 80, y = 80, z = 8 } -- lugar que o player deverá estar para puxar a alavanca
local str = 2000 -- modifique para um storage valido no seu server
local config = {
{ x = 19, y = 8, z = 7 },
{ x = 20, y = 10, z = 7 },
{ x = 23, y = 12, z = 7 },
{ x = 22, y = 11, z = 7 },
{ x = 28, y = 20, z = 7 }
}
function onUse(cid, item, frompos, item2, topos)
if(getCreaturePosition(cid) == tile1Pos) then
if(getPlayerStorageValue(uid, str) == 0) then
doTeleportThing(cid, TeleportInPos)
doSendMagicEffect(TeleportInPos, CONST_ME_TELEPORT)
doPlayerSendTextMessage(cid,22,"Agora começará sua quest. Bom sorte! ")
addEvent(wave1(cid), 10)
addEvent(wave2(cid), 10)
addEvent(wave10(cid), 1)
else
doPlayerSendTextMessage(cid,22,"Você não está na posição correta, ou já fez essa quest! ") -- Mensagem caso o char n esteja no tile correto
end
end
end
function wave1(cid)
doCreateMonster(Dragon, config[math.random(1, #config)])
doCreateMonster(Demodras, config[math.random(1, #config)])
end
function wave2(cid)
doCreateMonster(Hydra, config[math.random(1, #config)])
doCreateMonster(Spider, config[math.random(1, #config)])
end
function wave10(cid)
doCreateMonster(TheBoss, config[math.random(1, #config)])
end
Então, embaixo de:
function wave2(cid)
doCreateMonster(Hydra, config[math.random(1, #config)])
doCreateMonster(Spider, config[math.random(1, #config)])
end
Adicione quantas waves quiser, seguindo o modelo:
function waveN(cid)
doCreateMonster(MONSTRO, config[math.random(1, #config)])
doCreateMonster(MONSTRO, config[math.random(1, #config)])
end
n = numero da wave
MONSTRO = nome do monstro
Depois, em baixo de:
addEvent(wave2(cid), 10)
Adicione quantas waves vc tiver, seguindo o modelo:
addEvent(waveN(cid), 10)
Onde n = numero da wave
Feito isso tudo, bora configurar para iniciar o evento...
Em actions.xml adicione a linha:
<action uniqueid="1026" script="nomedoarquivo.lua"/>
Mude o nome do arquivo, e no RME coloque o uniqueid 1026 na sua alavanca, que deverá estar no lugar correto também.
Depois disso, devemos modificar o arquivo do monstro ( The Boss). Para isso continue:
Em Creaturescript/scripts adicione um arquivo com nome de sua escolha .lua e coloque isso dentro:
function onDeath(cid, corpse, killer)
local Pos = {x = 340, y = 840, z = 15} -- posicao para onde o player irá (sala de premios)
local monstName = "TheBoss" -- nome do monstro
if isMonster(cid) then
if string.lower(getCreatureName(cid)) == string.lower(monstName) then
doTeleportThing(killer[1], Pos)
end
end
return TRUE
end
Modifique apenas a posição para a qual o player será teleportado e o nome do monstro boss.
Feito isso, volte para creaturescripts.xml e adicione:
<event type="death" name="Teleportquest" event="script" value="quest1.lua"/>
Modificando o nome do arquivo.
Estamos quase acabando ! rsrs
Vá para a pasta monster e procure pelo arquivo do monstro escolhido para ser o boss, no meu caso escolhi o TheBoss, dentro do arquivo do boss, coloque:
<script>
<event name="Teleportquest"/>
</script>
E pronto !! A quest está feita.
EXTRA
Agora, basta ir em actions/scripts e criar um novo arquivo para o bau da quest com qualquer nome .lua e adicionar dentro:
function onUse(cid, item, frompos, item2, topos)
if item.uid == 2001 then -- mude para um valor que será colocado em uniqueid no bau
queststatus = getPlayerStorageValue(cid,2000) -- mude para o numero da sua storage
if queststatus == -1 or queststatus == 0 then
doPlayerSendTextMessage(cid,22,"Você Achou Um Bolo De 100k")
item_uid = doPlayerAddItem(cid,2160,10) -- mude o premio! 2160 = Crystal Coin e 10 = quantidade.
setPlayerStorageValue(cid,2000,1) -- mude apenas o 2000 para o valor da sua storage
else
doPlayerSendTextMessage(cid,22,"Você já fez esta quest! ")
end
else
end
end
Faça as modificações que achar necessário.
Depois em actions.xml adicione:
<action uniqueid="2001" script="quests/700k/bau1.lua"/>
No RME, agora no baú, adicione a uniqueid, no meu caso 2001.
Bom, espero que goste e utilize em seu servidor!!
Utilizei como base Script do Vodkart para o teleport. ( acho que é assim que escreve o nick dele ).
-GstavoLiber