Postado Março 18, 2017 8 anos @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 ?
Postado Março 18, 2017 8 anos 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 Março 18, 2017 8 anos @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
Postado Março 18, 2017 8 anos 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.
Postado Março 18, 2017 8 anos @Luzetti você tem certeza que seu tfs é 1.0 ? Meu script está mais que perfeito. Me passe seu login.lua ae!
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.