[Resolvido] Broadcast em área específica

Inari
Por Inari
em Resolvidos

Inari

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/08/19Posts: 4

Oi, tudo bom pessoal?

Bom, estou desenvolvendo um event, mas falta nele algo essencial que não sei como fazer ainda...

Queria poder usar o doBroadcastMessage(message, type), mas que não fosse pro servidor inteiro, já q o intervalo seria de 2 em 2 minutos, e ia encher o saco de muita gente.
Tem que ser apenas para os players que estiverem em uma determinada área, parecido com a função getSpectators(centerPos, rangex, rangey[, multifloor = false]) que eu encontrei, mas não precisa ser essa.

 

Vou deixar meu código aqui pra terem uma ideia melhor. (obs: não manjo mt de c++, então se tiver algo errado e quiser corrigir, agradeço se o fizer e tbm explicar porque ta errado)

 

globalevents.xml

<!-- Airplane Schedule -->
	<globalevent name="airplane" interval="120000" event="script" value="schedule.lua"/>

 

schedule.lua

local config = {
	city = 1, -- Agenda: [1] Prontera, [2] Alberta
	landing1 = {x=1644,y=1570,z=0}, -- Local de desembarque do aeroplano
	landing2 = {x=1645,y=1570,z=0}, -- Local de desembarque do aeroplano
	toProntera1 = {x=1486,y=1525,z=7}, -- Coordenadas de Prontera
	toProntera2 = {x=1486,y=1526,z=7}, -- Coordenadas de Prontera
	toAlberta1 = {x=1492,y=1522,z=7}, -- Coordenadas de Alberta
	toAlberta2 = {x=1492,y=1523,z=7}, -- Coordenadas de Alberta
}

function onThink(cid, interval, lastExecution) -- Talvez não seja a função correta (?)
	if (config.city == 1) then -- Cria o portal para Prontera
		doCreateTeleport(1387, config.toProntera1, config.landing1)
		doCreateTeleport(1387, config.toProntera2, config.landing2)
		doBroadcastMessage("O aeroplano pousou na cidade de Prontera, mas partira novamente em 20 segundos.")
		addEvent(deleteTp, 20000) -- Remove o portal em 20 segundos
		addEvent(leftProntera, 20000)
		config.city = config.city + 1 -- Avança a agenda
		
	elseif (config.city == 2) then -- Cria o portal para Alberta
		doCreateTeleport(1387, config.toAlberta1, config.landing1)
		doCreateTeleport(1387, config.toAlberta2, config.landing2)
		doBroadcastMessage("O aeroplano pousou na cidade de Alberta, mas partira novamente em 20 segundos.")
		addEvent(deleteTp, 20000) -- Remove o portal em 20 segundos
		addEvent(leftAlberta, 20000)
		config.city = 1 -- Retorna a agenda para o início
		
	end
	
	return true
end

function deleteTp()

	local delete1 = getTileItemById(config.landing1, 1387)
	local delete2 = getTileItemById(config.landing2, 1387)

	doRemoveItem(delete1.uid, 1)
	doRemoveItem(delete2.uid, 1)

	doSendMagicEffect(config.landing1, CONST_ME_TELEPORT)
	doSendMagicEffect(config.landing2, CONST_ME_TELEPORT)
end

function leftProntera()

	doBroadcastMessage("O aeroplano partiu. Proximo destino: Alberta")
end

function leftAlberta()

	doBroadcastMessage("O aeroplano partiu. Proximo destino: Prontera")
end

 

Fjinst

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/04/08Posts: 251Gênero: MasculinoChar no Tibia: Senhor Mithril

não precisa colocar um broadcast, basta colocar um doPlayerSendTextMessage pros jogadores q estão na area.

I dont nothing to show, if u see this, sorry for you lose you time

Inari

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/08/19Posts: 4

e como eu determino essa área? é oq eu precisava saber tbm

Yan Liima

Scripter,Programador,WebMaster.
avatar
Diretor
Diretor

INFOS

Grupo: DiretorRegistrado: 12/05/12Posts: 818Gênero: MasculinoChar no Tibia: [ADM] Night
local config = {
	city = 1, -- Agenda: [1] Prontera, [2] Alberta
	landing1 = {x=1644,y=1570,z=0}, -- Local de desembarque do aeroplano
	landing2 = {x=1645,y=1570,z=0}, -- Local de desembarque do aeroplano
	toProntera1 = {x=1486,y=1525,z=7}, -- Coordenadas de Prontera
	toProntera2 = {x=1486,y=1526,z=7}, -- Coordenadas de Prontera
	toAlberta1 = {x=1492,y=1522,z=7}, -- Coordenadas de Alberta
	toAlberta2 = {x=1492,y=1523,z=7}, -- Coordenadas de Alberta
	area = {{x=100, y=100, z=7},{x=111, y=111, z=7}}, -- Superior esquerdo e inferior direito
}

function onThink(cid, interval, lastExecution) -- Talvez não seja a função correta (?)
	if (config.city == 1) then -- Cria o portal para Prontera
		doCreateTeleport(1387, config.toProntera1, config.landing1)
		doCreateTeleport(1387, config.toProntera2, config.landing2)
		for _, cid in pairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(cid), config.area[1], config.area[2]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "O aeroplano pousou na cidade de Prontera, mas partira novamente em 20 segundos.")
		end
		end
		addEvent(deleteTp, 20000) -- Remove o portal em 20 segundos
		addEvent(leftProntera, 20000)
		config.city = config.city + 1 -- Avança a agenda
		
	elseif (config.city == 2) then -- Cria o portal para Alberta
		doCreateTeleport(1387, config.toAlberta1, config.landing1)
		doCreateTeleport(1387, config.toAlberta2, config.landing2)
		for _, cid in pairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(cid), config.area[1], config.area[2]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "O aeroplano pousou na cidade de Alberta, mas partira novamente em 20 segundos.")
		end
		end
		addEvent(deleteTp, 20000) -- Remove o portal em 20 segundos
		addEvent(leftAlberta, 20000)
		config.city = 1 -- Retorna a agenda para o início
		
	end
	
	return true
end

function deleteTp()

	local delete1 = getTileItemById(config.landing1, 1387)
	local delete2 = getTileItemById(config.landing2, 1387)

	doRemoveItem(delete1.uid, 1)
	doRemoveItem(delete2.uid, 1)

	doSendMagicEffect(config.landing1, CONST_ME_TELEPORT)
	doSendMagicEffect(config.landing2, CONST_ME_TELEPORT)
end

function leftProntera()

	doBroadcastMessage("O aeroplano partiu. Proximo destino: Alberta")
end

function leftAlberta()

	doBroadcastMessage("O aeroplano partiu. Proximo destino: Prontera")
end

 

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

ALGUNS DOS MEUS TRABALHOS:

Spoiler

WODBOHS[DOWNLOAD]

Newstory dbo+nto+bleach[DOWNLOAD]

 

>> Mais infos <<

- Projetos lançados também feitos por mim {

DBO SKY

POKE SKY

WODBOWARS

Tic-tac-War

Dbo Universe(em desenvolvimento)

}

universe.thumb.png.6840320998d0fc1a4652b3db81a585c0.png

Separador.PNG

Te Ajudei? Rep + e ficamos Quits

imageproxy.png.84dce08dd18d31663a72aa1ce37b858a.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

Inari

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/08/19Posts: 4

@Yan Liima

Acabei de testar e funciona perfeitamente, MUITO OBRIGADO!

só tive que modificar as funções leftProntera e leftAlberta de acordo também.
 

function leftProntera()
	
	for _, cid in pairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(cid), config.area[1], config.area[2]) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "O aeroplano partiu. Proximo destino: Alberta.")
		end
	end
end

function leftAlberta()
	
	for _, cid in pairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(cid), config.area[1], config.area[2]) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "O aeroplano partiu. Proximo destino: Prontera.")
		end
	end
end

Reputado, podem fechar o tópico

Yan Liima

Scripter,Programador,WebMaster.
avatar
Diretor
Diretor

INFOS

Grupo: DiretorRegistrado: 12/05/12Posts: 818Gênero: MasculinoChar no Tibia: [ADM] Night
O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico.

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

ALGUNS DOS MEUS TRABALHOS:

Spoiler

WODBOHS[DOWNLOAD]

Newstory dbo+nto+bleach[DOWNLOAD]

 

>> Mais infos <<

- Projetos lançados também feitos por mim {

DBO SKY

POKE SKY

WODBOWARS

Tic-tac-War

Dbo Universe(em desenvolvimento)

}

universe.thumb.png.6840320998d0fc1a4652b3db81a585c0.png

Separador.PNG

Te Ajudei? Rep + e ficamos Quits

imageproxy.png.84dce08dd18d31663a72aa1ce37b858a.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝