Postado Janeiro 13, 2015 10 anos Autor qnd acaba o tempo vc é teleportado pra fora, certo? certo, cada alvo morto ele vai ganhando dinheiro no banco VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!! CRIE SUA CONTA AGORA MESMO! www.baiakudo.com
Postado Janeiro 16, 2015 10 anos @DeathRocks, vc tem algum video desse sistema e ou saberia responder minhas dúvidas abaixo:1- o sistema tem suporte pra todas as direções ou só vai ter salas do lado viradas pra <?2- vc pretende fazer idêntico ou mudar o tamanho das salas e tal?3- qnd a sala tá ocupada oque acontece?4- vc entra na sala clicando na porta e ela abre ou vc é teleportado pra dentro?5- vai haver algum tipo de contagem antes de começar? tipo 3, 2, 1, GO? 6- custa algo pra entrar ou tem algum requerimento de premium/level?7- o tiro sai qnd diz algo ou ele fica saindo automaticamente a cada segundo por exemplo?8- qnd vc entra na sala a besta é criada ou ela ja está lá antes? as que eu risquei foram as que eu fiz de acordo com meu gosto Editado Janeiro 16, 2015 10 anos por xWhiteWolf (veja o histórico de edições) Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Janeiro 18, 2015 10 anos Autor @DeathRocks, vc tem algum video desse sistema e ou saberia responder minhas dúvidas abaixo: 1- o sistema tem suporte pra todas as direções ou só vai ter salas do lado viradas pra <? 2- vc pretende fazer idêntico ou mudar o tamanho das salas e tal? 3- qnd a sala tá ocupada oque acontece? 4- vc entra na sala clicando na porta e ela abre ou vc é teleportado pra dentro? 5- vai haver algum tipo de contagem antes de começar? tipo 3, 2, 1, GO? 6- custa algo pra entrar ou tem algum requerimento de premium/level? 7- o tiro sai qnd diz algo ou ele fica saindo automaticamente a cada segundo por exemplo? 8- qnd vc entra na sala a besta é criada ou ela ja está lá antes? as que eu risquei foram as que eu fiz de acordo com meu gosto 1- sim só salas viradas para < 2- fazer idêntico 3- você tem que esperar o outro jogador 4- quando clica na porta vc é teleportado para dentro 5- não precisa,entro na sala já esta contando,ou seja o alvo já nasce 6- não precisa custar nada 7- ele fica saindo automaticamente a cada segundo 8- ela ja fica la, quando vc entra ela começo a funcionar VENHAM JOGAR O MELHOR BAIAK JÁ CRIADO DE 2022!! CRIE SUA CONTA AGORA MESMO! www.baiakudo.com
Postado Fevereiro 8, 2015 10 anos Solução Este é um post popular. Crie um arquivo chamado 045 - Bird Hunt.lua em data/lib e coloque isso dentro dele: -- Bird Hunt Lib --1º function countDown(position, time, color) -- faz a contagem de tempo local msg = os.date("%M:%S", time) if time > 0 then doSendAnimatedText(position, msg, color) addEvent(countDown, 1000, position, time - 1, color) end return true end --2º function isRoomBusy(pos, rangey1, rangey2) -- checa se a sala está ocupada local minj = math.min(rangey1, rangey2) local maxj = math.max(rangey1, rangey2) for j = minj, maxj do local cPos = {x = pos.x, y = pos.y + j, z = pos.z} local creature = getTopCreature(cPos).uid if isCreature(creature) then return true end end return false end --3º function startEvent(posi, delay, color, mob, tempo) -- começa tudo e retorna o tempo de delay até carregar o evento local msgs = {3, 2, 1, "GO!!"} local monster = doCreateMonster(mob, posi) for index, str in ipairs (msgs) do addEvent(doSendAnimatedText, delay * index, posi, str, color) end addEvent(doRemoveCreature, (#msgs * delay) + (tempo * 1000), monster) return (#msgs * delay) end --4º function startShooting(uid, shots, a, delay, rangemax, color, key) -- começa a atirar e teleport o player após acabar o numero de tiros. local points = getPlayerStorageValue(uid, key) local fromPos = getCreaturePosition(uid) fromPos.x = fromPos.x + (3 * a) local toPos = {x = fromPos.x, y = fromPos.y, z = fromPos.z} for i = 1, (rangemax-4) do toPos.x = toPos.x + (1 * a) local creature = getTopCreature(toPos) if (creature.uid > 0) then local ePos = {x= toPos.x, y = toPos.y, z = toPos.z} setPlayerStorageValue(uid, key, points + 1) doSendAnimatedText(ePos, tostring(points + 1), color) doSendMagicEffect(ePos, 0) break end end doSendDistanceShoot(fromPos, toPos, 2) doSendAnimatedText(getCreaturePosition(uid), "Shoot!", color) addEvent(function() if isPlayer(uid) and shots > 1 then startShooting(uid, shots - 1, a, delay, rangemax, color, key) elseif isPlayer(uid) and shots <= 1 then local initPos = getCreaturePosition(uid) initPos.x = initPos.x - (3 * a) doTeleportThing(uid, initPos) --- teleporta o player pra posição inicial end end, delay) return true end --5º function getBestaPos(pos, a) local bestapos = { [-1] = { ids = {5698, 5700, 5699}, [1] = {x = pos.x - 2, y = pos.y, z = pos.z}, [2] = {x = pos.x - 3, y = pos.y, z = pos.z}, [3] = {x = pos.x - 3, y = pos.y - 1, z = pos.z} }, [1] = { ids = {5701, 5703, 5702}, [1] = {x = pos.x + 2, y = pos.y, z = pos.z}, [2] = {x = pos.x + 3, y = pos.y, z = pos.z}, [3] = {x = pos.x + 3, y = pos.y - 1, z = pos.z} } } return bestapos[a] end --6º function moveBesta(position, a, dir) local posBesta = getBestaPos(position, a) local bestaId = getBestaPos(position, a).ids for i = 1, 3 do local item = getTileItemById(posBesta[i], bestaId[i]) if item.uid > 0 then local createPos = {x = posBesta[i].x, y = posBesta[i].y - dir, z = posBesta[i].z} doRemoveItem(item.uid) doCreateItem(item.itemid, 1, createPos) end end return true end --7º function createBesta(position, a) local posBesta = getBestaPos(position, a) local bestaId = getBestaPos(position, a).ids for i = 1, 3 do local createPos = {x = posBesta[i].x, y = posBesta[i].y, z = posBesta[i].z} doCreateItem(bestaId[i], 1, createPos) end return true end --8º function removeBesta(position, a) local posBesta = getBestaPos(position, a) local bestaId = getBestaPos(position, a).ids for i = 1, 3 do local item = getTileItemById(posBesta[i], bestaId[i]) doSendMagicEffect(posBesta[i], 14) if item.uid > 0 then doRemoveItem(item.uid) end end return true end agr crie um arquivo chamado seagul.lua em data/actions/scripts e coloque isso dentro dele: local config = { rangecima = {x = -8, y = -4}, -- distancia em x e y da topos (ate a pos de cima) rangebaixo = {x = 0, y = 4}, -- distancia em x e y da topos (ate a pos de baixo) cor = 129 or 215, -- cor dos textos (a primeira eh branca e a segunda eh cinza) tempo = 60, -- tempo que vc fica no evento (segundos) delay = 1000, -- intervalo que os tiros saem (milisegundos) storage = 17367, -- storage que salva algumas informações mob = "Seagull" -- nome do monstro } function onUse(cid, item, frompos, itemEx, topos) if getPlayerStorageValue(cid, config.storage) < 0 then local a = getCreaturePosition(cid).x > topos.x and -1 or 1 local pos = {x = topos.x, y = topos.y, z = topos.z} pos.x = topos.x + (1 * a) if not isRoomBusy(pos, config.rangecima.y, config.rangebaixo.y) then doTeleportThing(cid, pos) setPlayerStorageValue(cid, config.storage, 0) local middlePos = {x = pos.x, y = pos.y, z = pos.z} middlePos.x = middlePos.x + (4 * a) tempoinit = startEvent(middlePos, config.delay, config.cor, config.mob, config.tempo) local cucoPos = {x = middlePos.x, y = middlePos.y, z = middlePos.z} cucoPos.x = cucoPos.x + (a * 1) --- qnt vai aumentar o cucopos.x cucoPos.y = cucoPos.y + config.rangecima.y -- qnt vai aumentar o cucopos.y addEvent(function() countDown(cucoPos, config.tempo, config.cor) if isPlayer(cid) then startShooting(cid, math.floor(((config.tempo * 1000) / config.delay)), a, config.delay, math.abs(config.rangecima.x), config.cor, config.storage) end end, tempoinit) else doPlayerSendCancel(cid, "This room is full.") end else doPlayerSendCancel(cid, "You're already inside a room.") end return true end a tag no actions.xml é só escolher um action/uniqueid e colocar na porta de entrada. agr vá em data/movements/scripts e crie um arquivo chamado seagulmove.lua e coloque isso dentro dele: local config = { position = -1, -- coloque 1 se a sala estiver pra direita > e -1 se estiver pra esquerda < storage = 17367, -- storage que salva os pontos recorde = 17368 -- storage que vai salvar sua maior pontuacao } function onStepIn(cid, item, topos, frompos) if not isPlayer(cid) then return true end if math.abs(frompos.x - getCreaturePos(cid).x) > 0 then createBesta(getCreaturePos(cid), config.position) -- cria besta ao entrar return true end local movePos = {x = frompos.x, y = frompos.y, z = frompos.z} local dir = movePos.y - topos.y local posBesta = getBestaPos(frompos, config.position) moveBesta(movePos, config.position, dir) -- move ao se mexer return true end function onStepOut(cid, item, frompos, topos, lastpos) if math.abs(frompos.x - getCreaturePos(cid).x) <= 0 then return true end local movePos = {x = frompos.x, y = frompos.y, z = frompos.z} local posBesta = getBestaPos(frompos, config.position) removeBesta(movePos, config.position) -- remove a besta ao sair if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, config.recorde) <= getPlayerStorageValue(cid, config.storage) then setPlayerStorageValue(cid, config.recorde, getPlayerStorageValue(cid, config.storage)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "[Bird Hunt]\nYou made ".. getPlayerStorageValue(cid, config.recorde) .." points, that\'\s your new record!") end setPlayerStorageValue(cid, config.storage, -1) return true end Agora vc precisa criar um uniqueid/actionid e colocar a tag no movements.xml pra stepin e stepout e vc vai colocar em toda a fileira em que o player pode andar. Eu terminei faz um tempão mas to bem ocupado com as coisas da facul e eu queria fazer um topico pra ele e tal explicando tudo certinho mas acho que vcs não vão ter problemas, no proprio script tem umas explicações. A unica coisa que não fiz foi recompensa por tiro mas vc pode tanto adicionar na função que seta o storage pra adicionar dinheiro ao player: a função é essa daqui, vc só precisa adicionar a linha doPlayerAddItem(uid, 2160, 1) function startShooting(uid, shots, a, delay, rangemax, color, key) -- começa a atirar e teleport o player após acabar o numero de tiros. local points = getPlayerStorageValue(uid, key) local fromPos = getCreaturePosition(uid) fromPos.x = fromPos.x + (3 * a) local toPos = {x = fromPos.x, y = fromPos.y, z = fromPos.z} for i = 1, (rangemax-4) do toPos.x = toPos.x + (1 * a) local creature = getTopCreature(toPos) if (creature.uid > 0) then local ePos = {x= toPos.x, y = toPos.y, z = toPos.z} setPlayerStorageValue(uid, key, points + 1) doPlayerAddItem(uid, 2160, 1) -- adiciona 1 crystal coin qnd acertar doSendAnimatedText(ePos, tostring(points + 1), color) doSendMagicEffect(ePos, 0) break end end doSendDistanceShoot(fromPos, toPos, 2) doSendAnimatedText(getCreaturePosition(uid), "Shoot!", color) addEvent(function() if isPlayer(uid) and shots > 1 then startShooting(uid, shots - 1, a, delay, rangemax, color, key) elseif isPlayer(uid) and shots <= 1 then local initPos = getCreaturePosition(uid) initPos.x = initPos.x - (3 * a) doTeleportThing(uid, initPos) --- teleporta o player pra posição inicial end end, delay) return true end mas dai vc pode tanto fazer como falei acima ou criar um npc que paga pela quantidade de pontos que você fez. Ex: faz 50 pontos vai lá e ele paga 100k, qnd fizer 55 ele paga 200k.. e assim por diante. Pra fazer isso é só pegar o storage recorde que está no movements, nele que vai ficar salvo seu best recorde do jogo. Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
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.