Ir para conteúdo

Featured Replies

Postado

@Luzetti preciso tirar uma duvida para que eu possa fazer o seu pedido, essa parte do script:  local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}

é a área onde os monstros são invocados, mas essas área são 2x andares, então seria tipo um evento isso ? Seria uma área de quest ?

 

Irei fazer um onKill, a cada ferrumbra sla o que, morto, irá setá uma globalStorage(não irei setar no player se não irá ficar escroto, sabe porque, ahsuhas),

na contagem de 30 valores nessa storage, o último monstro morto irá abrir um portal que levará para outro local.

Irá contar qualquer pessoa que matar o monstro.  

 

Esse monstro é especifico dessa quest/evento ou sla oquê ? Se não for usarei a mesma área acima, pois se esse monstro dar respawn em outro canto, irá morrer e irá contar do mesmo jeito, então farei assim para ficar fixado nessa quest/evento sla oquê. Haush pode ser ?

 

Qual a versão da distro ? 0.3.6 ou 0.4 ?

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

  • Respostas 26
  • Visualizações 678
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
  • Autor
32 minutos atrás, KotZletY disse:

@Luzetti preciso tirar uma duvida para que eu possa fazer o seu pedido, essa parte do script:  local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}

é a área onde os monstros são invocados, mas essas área são 2x andares, então seria tipo um evento isso ? Seria uma área de quest ?

 

Irei fazer um onKill, a cada ferrumbra sla o que, morto, irá setá uma globalStorage(não irei setar no player se não irá ficar escroto, sabe porque, ahsuhas),

na contagem de 30 valores nessa storage, o último monstro morto irá abrir um portal que levará para outro local.

Irá contar qualquer pessoa que matar o monstro.  

 

Esse monstro é especifico dessa quest/evento ou sla oquê ? Se não for usarei a mesma área acima, pois se esse monstro dar respawn em outro canto, irá morrer e irá contar do mesmo jeito, então farei assim para ficar fixado nessa quest/evento sla oquê. Haush pode ser ?

 

Qual a versão da distro ? 0.3.6 ou 0.4 ?

entao é uma quest...essa area ai é o todo de onde vai se espalhar os ferumbras, ai queria que quando morto aparecesse um tp, quando acabar todos, uso tfs 1.0, e teria como o player fala a palavra estando na presença da statua? ai no script ta a posição dela, pq tipo, se eu to dp de thais eu falo a palavra ela é removida, por isso queria que desse pra fala somente quando tiver perto dela.

Postado

@Luzetti nova talkactions com o check de posição, que só poderá usar a talk na posição desejada:

Spoiler

function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end

function doCreateFerumbras(amount)
    local vetor = 0
    local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}
    repeat
        local pos = {x=math.random(Area[1].x, Area[2].x), y=math.random(Area[1].y,Area[2].y), z=math.random(Area[1].z,Area[2].z)}
        if isWalkable(pos, false, false, false) then
            doSummonCreature("Ferumbras", pos) 
            vetor = vetor + 1    
        end
    until vetor == amount
end

function onSay(cid, words, param, channel)
local w ={	
	needPos = {x=1022, y=909, z=7}, -- pos que precisa está para usar o item
	myPos = getPlayerPosition(cid), 
    avisoproibido = "Desculpe isso não é possível.",
    horario = "Apenas uma vez por dia os deuses podem ser liberados.",
	tempo = 1*24*60*60,
    storage = 94368,
}



if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end
   
if getTilePzInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end

if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.horario)
end
  
  local M = {
        Pos = {x=7691,y=16409,z=5}, 
        id= 1355, 
    time = 86400}
    local x = M
   
function criar()
        local parede = getTileItemById(x.Pos, x.id)
        doCreateItem(x.id, 1, x.Pos)
end
   
if w.myPos.x == w.needPos.x and w.myPos.y == w.needPos.y and w.myPos.z == w.needPos.z then	
    if x then
        local parede = getTileItemById(x.Pos, x.id)
        if getTileInfo(getCreaturePosition(cid)).itemid == 3217 or 3216 then
            if (getPlayerStorageValue(cid, w.storage) <= os.time()) then
                if parede then
                    setPlayerStorageValue(cid, w.storage, os.time()+w.tempo)
                    doRemoveItem(parede.uid, 1)
                    --doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))--
                    doPlayerSendTextMessage(cid, 25, "A furia dos Deuses foi liberada tenha cuidado")
                    doCreateFerumbras(30)
                    addEvent(criar, x.time*1000)
                end
            else
                doPlayerSendCancel(cid, "A furia dos deuses só pode ser liberada a cada 24 horas.")
            end
        end
    end
	else
    doPlayerSendCancel(cid, "Você precisa está na posição correta para usar o item que invoca os DEUSES.")
	end
    return true
end

 

 

 

vá em creaturescripts entre na pasta scripts e crie um arquivo chamado FerumbrasQuest.lua e cole dentro:

Spoiler

local frbs = {
-- Mesma área da talkactions que invoca os monstros
AreaFrom = {x=7649,y=16379,z=5}, -- Canto superior esquerdo da área
AreaTo = {x=7735,y=16443,z=7}, -- Canto inferior direito da área
monsterName = "Ferumbras", -- Nome do monstros
storage = 98392, -- Storage global da script
TpTo = {x=1019,y=928,z=7}, -- Para onde o teleporte vai levar
TpId = 11655, -- id do Teleporte
TpTime = 10 -- Tempo em segundos que o tp irá durá aberto
}

function onKill(cid, target)

	if target:isMonster() and target:getName():lower() == frbs.monsterName:lower() and Player(cid) then
		if isInRange(target:getPosition(), frbs.AreaFrom, frbs.AreaTo) then
			setGlobalStorageValue(frbs.storage, getGlobalStorageValue(frbs.storage)+1)
		end
		
		
	if getGlobalStorageValue(frbs.storage) >= 30 then -- 30 é a quantidade de monstro que precisa ser morto para abrir o Teleporte
		local TpActive = Game.createItem(frbs.TpId, 1, target:getPosition())
			if TpActive and TpActive:isTeleport() then
					TpActive:setDestination(frbs.TpTo)
						setGlobalStorageValue(frbs.storage, 0)
							Creature(target):say("O teleporte foi e vai sumir em ".. frbs.TpTime .." segundos.", TALKTYPE_MONSTER_SAY)
						addEvent(function() TpActive:remove() end, frbs.TpTime*1000)
					end
				end
			end
	return true
end

 

 

vá no login.lua e registre esse evento:

player:registerEvent("FerumbrasQuest")

 

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

 

Testei aqui e está 1000% porque 100 é pouco. Kkkkk

xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Postado
  • Autor
11 horas atrás, KotZletY disse:

@Luzetti nova talkactions com o check de posição, que só poderá usar a talk na posição desejada:

  Ocultar conteúdo


function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end

function doCreateFerumbras(amount)
    local vetor = 0
    local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}
    repeat
        local pos = {x=math.random(Area[1].x, Area[2].x), y=math.random(Area[1].y,Area[2].y), z=math.random(Area[1].z,Area[2].z)}
        if isWalkable(pos, false, false, false) then
            doSummonCreature("Ferumbras", pos) 
            vetor = vetor + 1    
        end
    until vetor == amount
end

function onSay(cid, words, param, channel)
local w ={	
	needPos = {x=1022, y=909, z=7}, -- pos que precisa está para usar o item
	myPos = getPlayerPosition(cid), 
    avisoproibido = "Desculpe isso não é possível.",
    horario = "Apenas uma vez por dia os deuses podem ser liberados.",
	tempo = 1*24*60*60,
    storage = 94368,
}



if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end
   
if getTilePzInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end

if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.horario)
end
  
  local M = {
        Pos = {x=7691,y=16409,z=5}, 
        id= 1355, 
    time = 86400}
    local x = M
   
function criar()
        local parede = getTileItemById(x.Pos, x.id)
        doCreateItem(x.id, 1, x.Pos)
end
   
if w.myPos.x == w.needPos.x and w.myPos.y == w.needPos.y and w.myPos.z == w.needPos.z then	
    if x then
        local parede = getTileItemById(x.Pos, x.id)
        if getTileInfo(getCreaturePosition(cid)).itemid == 3217 or 3216 then
            if (getPlayerStorageValue(cid, w.storage) <= os.time()) then
                if parede then
                    setPlayerStorageValue(cid, w.storage, os.time()+w.tempo)
                    doRemoveItem(parede.uid, 1)
                    --doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))--
                    doPlayerSendTextMessage(cid, 25, "A furia dos Deuses foi liberada tenha cuidado")
                    doCreateFerumbras(30)
                    addEvent(criar, x.time*1000)
                end
            else
                doPlayerSendCancel(cid, "A furia dos deuses só pode ser liberada a cada 24 horas.")
            end
        end
    end
	else
    doPlayerSendCancel(cid, "Você precisa está na posição correta para usar o item que invoca os DEUSES.")
	end
    return true
end

 

 

 

vá em creaturescripts entre na pasta scripts e crie um arquivo chamado FerumbrasQuest.lua e cole dentro:

  Ocultar conteúdo


local frbs = {
-- Mesma área da talkactions que invoca os monstros
AreaFrom = {x=7649,y=16379,z=5}, -- Canto superior esquerdo da área
AreaTo = {x=7735,y=16443,z=7}, -- Canto inferior direito da área
monsterName = "Ferumbras", -- Nome do monstros
storage = 98392, -- Storage global da script
TpTo = {x=1019,y=928,z=7}, -- Para onde o teleporte vai levar
TpId = 11655, -- id do Teleporte
TpTime = 10 -- Tempo em segundos que o tp irá durá aberto
}

function onKill(cid, target)

	if target:isMonster() and target:getName():lower() == frbs.monsterName:lower() and Player(cid) then
		if isInRange(target:getPosition(), frbs.AreaFrom, frbs.AreaTo) then
			setGlobalStorageValue(frbs.storage, getGlobalStorageValue(frbs.storage)+1)
		end
		
		
	if getGlobalStorageValue(frbs.storage) >= 30 then -- 30 é a quantidade de monstro que precisa ser morto para abrir o Teleporte
		local TpActive = Game.createItem(frbs.TpId, 1, target:getPosition())
			if TpActive and TpActive:isTeleport() then
					TpActive:setDestination(frbs.TpTo)
						setGlobalStorageValue(frbs.storage, 0)
							Creature(target):say("O teleporte foi e vai sumir em ".. frbs.TpTime .." segundos.", TALKTYPE_MONSTER_SAY)
						addEvent(function() TpActive:remove() end, frbs.TpTime*1000)
					end
				end
			end
	return true
end

 

 

vá no login.lua e registre esse evento:

player:registerEvent("FerumbrasQuest")

 


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

 

Testei aqui e está 1000% porque 100 é pouco. Kkkkk

xD

 

deu isso: [18/03/2017 11:28:15] [Error - CreatureScript Interface] 
[18/03/2017 11:28:15] data/creaturescripts/scripts/login.lua:onLogin
[18/03/2017 11:28:15] Description: 
[18/03/2017 11:28:15] data/creaturescripts/scripts/login.lua:75: attempt to index global 'player' (a nil value)
[18/03/2017 11:28:15] stack traceback:
[18/03/2017 11:28:15]     data/creaturescripts/scripts/login.lua:75: in function <data/creaturescripts/scripts/login.lua:6>
[18/03/2017 11:28:15] Kevintwo has logged out.

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.7k

Informação Importante

Confirmação de Termo