Ir para conteúdo
  • 0

[Resolvido] Item aparece em local aleatorio


M i s s

Pergunta

Alguém pode me ajudar com o seguinte script?

Pode ser por global event ou talkaction (oque for mlr pra vcs).

Ao ser ativado uma mensagem irá aparecer na tela e um item irá ser spawnado no mapa aleatoriamente (os locais em que ele pode aparecer podem ser configurados).

 

Obgd desde já ❤️ 

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 1
6 minutos atrás, R e d disse:

-- TABELA COM O ID E QUANTIDADE DO ITEM --
local items = {
{id = 2707, quantidade = 1},
}

-- TABELA COM AS POSIÇÕES ONDE SERÁ CRIADO O ITEM NO MAPA --
local coordenadas_mapa = {
{x= 267, y= 1380, z= 7},
{x= 271, y= 1380, z= 7},
{x= 267, y= 1377, z= 7}
}

--------------------------------- CÓDIGO ---------------------------------

 

ta assim

Que estranho, está certo as tabelas, esse erro geralmente é de coordenada. Testa assim:

 

-- TABELA COM O ID E QUANTIDADE DO ITEM --
local items = {
{id = 2707, quantidade = 1}
}

-- TABELA COM AS POSIÇÕES ONDE SERÁ CRIADO O ITEM NO MAPA --
local coordenadas_mapa = {
{x= 267, y= 1380, z= 7},
{x= 271, y= 1380, z= 7},
{x= 267, y= 1377, z= 7}
}

--------------------------------- CÓDIGO ---------------------------------
function onThink(cid, interval, lastExecution)
local mensagem = true -- VARIAEL QUE DEFINE SE VAI APARECER MENSAGEM, SE QUER MENSAGEM MUDE DEIXE TRUE, CASO CONTRÁRIO MUDE PARA FALSE
local random_item = math.random(#items) -- VALOR ALEATÓRIO PARA PEGAR UM ID DE ITEM DE ACORDO COM O ÍNDICE DA TABELA
local random_position = math.random(#coordenadas_mapa) -- VALOR ALEATÓRIO DO ÍNDICE DA TABELA PARA PEGAR UMA POSIÇÃO PARA CRIAR O ITEM
local texto = "Um item surgiu no mapa." -- TEXTO QUE VAI APARECER NO BROADCAST

	if mensagem then
		doCreateItem(items[random_item].id, items[random_item].quantidade, coordenadas_mapa[random_position])
		doBroadcastMessage(texto)
	return true

	else
		doCreateItem(items[random_item].id, items[random_item].quantidade, coordenadas_mapa[random_position])
	return true
	end
	
end

Agora estou passando a tabela diretamente em vez de passar os elementos individuais (x, y, z).

 

Testa e me fala.

Link para o comentário
Compartilhar em outros sites

  • 1

Vai em Data/Globalevents/Scripts e cria o arquivo item_random.lua e adiciona o código dentro:

 

-- TABELA COM O ID E QUANTIDADE DO ITEM --
local items = {
{id = 15412, quantidade = 5}, 
{id = 15487, quantidade = 1},
{id = 8987, quantidade = 1},
{id = 6585, quantidade = 1},
{id = 9658, quantidade = 1},
{id = 3258, quantidade = 1},
{id = 2152, quantidade = 100},
{id = 2160, quantidade = 50},
}

-- TABELA COM AS POSIÇÕES ONDE SERÁ CRIADO O ITEM NO MAPA --
local coordenadas_mapa = {
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7},
{x= 1000, y= 1000, z= 7}
}

--------------------------------- CÓDIGO ---------------------------------
function onThink(cid, interval, lastExecution)
local mensagem = true -- VARIAEL QUE DEFINE SE VAI APARECER MENSAGEM, SE QUER MENSAGEM MUDE DEIXE TRUE, CASO CONTRÁRIO MUDE PARA FALSE
local random_item = math.random(#items) -- VALOR ALEATÓRIO PARA PEGAR UM ID DE ITEM DE ACORDO COM O ÍNDICE DA TABELA
local random_position = math.random(#coordenadas_mapa) -- VALOR ALEATÓRIO DO ÍNDICE DA TABELA PARA PEGAR UMA POSIÇÃO PARA CRIAR O ITEM
local texto = "Um item surgiu no mapa." -- TEXTO QUE VAI APARECER NO BROADCAST

	if mensagem then
		doCreateItem(items[random_item].id, items[random_item].quantidade, {coordenadas_mapa[random_position].x, coordenadas_mapa[random_position].y, coordenadas_mapa[random_position].z})
		doBroadcastMessage(texto)
	return true

	else
		doCreateItem(items[random_item].id, items[random_item].quantidade, {coordenadas_mapa[random_position].x, coordenadas_mapa[random_position].y, coordenadas_mapa[random_position].z})
	return true
	end
	
end

Deixei a tabela com as coordenadas tudo 1000 x e y para você trocar (valor genérico), e na tabela de itens só colocar id e quantidade dos itens. Deixei uma variável booleana mensagem para aparecer mensagem broadcast caso queira, mas se não quiser, só colocar false. Tem a variável texto que é o texto que vai aparecer no broadcast, só mudar lá como queira.

 

Agora adicione a tag no arquivo globalevents.xml:

<globalevent name="item_random" interval="3600" script="item_random.lua"/>

No atributo interval você coloca a quantidade de tempo que quer, tem servidor que é em segundos e servidor que é em milissegundos, mas normalmente é em segundos. Se for em em milissegundos, só multiplicar por 1000. No caso ali, deixei em segundos (1 hora).

 

Teste e me fale caso der algum erro ou problema.

Editado por Yan18
Link para o comentário
Compartilhar em outros sites

  • 0

Deu esse erro, o item n apareceu no mapa

 

 

 

[26/07/2020 18:24:57] [Error - GlobalEvent Interface] 
[26/07/2020 18:24:57] data/globalevents/scripts/itemRandom.lua:onThink
[26/07/2020 18:24:57] Description: 
[26/07/2020 18:24:57] (luaDoCreateItem) Tile not found
[26/07/2020 18:24:57] > Broadcasted message: "Um item surgiu no mapa.".

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, R e d disse:

Deu esse erro, o item n apareceu no mapa

 

 

 

[26/07/2020 18:24:57] [Error - GlobalEvent Interface] 
[26/07/2020 18:24:57] data/globalevents/scripts/itemRandom.lua:onThink
[26/07/2020 18:24:57] Description: 
[26/07/2020 18:24:57] (luaDoCreateItem) Tile not found
[26/07/2020 18:24:57] > Broadcasted message: "Um item surgiu no mapa.".

Você colocou os ids e coordenadas certa? Como você deixou as tabelas?

Link para o comentário
Compartilhar em outros sites

  • 0

-- TABELA COM O ID E QUANTIDADE DO ITEM --
local items = {
{id = 2707, quantidade = 1},
}

-- TABELA COM AS POSIÇÕES ONDE SERÁ CRIADO O ITEM NO MAPA --
local coordenadas_mapa = {
{x= 267, y= 1380, z= 7},
{x= 271, y= 1380, z= 7},
{x= 267, y= 1377, z= 7}
}

--------------------------------- CÓDIGO ---------------------------------

 

ta assim

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...