Ir para conteúdo

Featured Replies

  • Respostas 28
  • Visualizações 3.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Crie um arquivo chamado  045 - Bird Hunt.lua em data/lib e coloque isso dentro dele:   agr crie um arquivo chamado seagul.lua em data/actions/scripts e coloque isso dentro dele: a tag n

Postado
  • 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

@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 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

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • 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

  • 3 weeks later...
Postado
  • 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

I7Pm6ih.png

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

Visitante
Responder

Quem Está Navegando 0

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

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo