Ir para conteúdo
  • Cadastre-se

(Resolvido)GlobalEvent criar item no mapa


Ir para solução Resolvido por Mor3nao,

Posts Recomendados

Cara vou te passar um código que fiz pra 0.4, deve funcionar pra 0.36 também:
código lua:
 

local config = {
   itemid = 1451,
   itemid2 = 1451,
   itemid3 = 1451,
   pos = {x=718, y=1534, z=10},
   pos2 = {x= 107, y=1507, z=8},
   pos3 = {x= 111, y=1507, z=8},
   chance = 50
 }


function onTime(interval)
  if config.chance >= math.random(1, 100) then
        doBroadcastMessage("Os items X Y Z foram spawnados!") --- Caso queira que mande uma mensagem pra todos players online, ja deixei pronto.
        doCreateItem(config.itemid, 1, config.pos)
        doCreateItem(config.itemid1, 1, config.pos2)
        doCreateItem(config.itemid2, 1, config.pos3)
  end
return true
end

tag no xml:
<globalevent name="nomedoevento" time="04:05:00" event="script" value="nomedoarquivo.lua"/>

Link para o post
Compartilhar em outros sites

Opa, obrigado amigo, poderia em ajudar para que os itens não fosse stackeis, só respawnasse quando o item sumisse do local q foi respawnado?

 

Codigo:

 

local fromx = 32369 -- posiçao x superior a esquerda da area que sera analisada
local tox = 32370 -- posiçao x inferior a direita da area que sera analisada
local fromy = 32229 -- posiçao y superior a esquerda da area que sera analisada
local toy = 32231 -- posiçao y inferior a direita da area que sera analisada
local floor = 7 -- posição z referece ao andar que criara o item


-- Inicio e Fim devem ser 0, pois serão preenchidos de acordo com sua chance,
-- e se você preencher não fará diferença pois o valor será modificado mesmo assim :D
-- Quanto maior o número em "Chance" maior será a probabilidade de ser o item escolhido

local Itens = 
{	
	{Item = 2160, Chance = 60, Inicio = 0, Fim = 0}, 
	{Item = 2161, Chance = 30, Inicio = 0, Fim = 0},
	{Item = 2164, Chance = 10, Inicio = 0, Fim = 0}
}

function onThink(cid, interval, lastExecution)
	
	local pos = {x= math.random(fromx, tox), y=math.random(fromy, toy), z=floor}
	local ItemSpawn = RetornarItemRandom()
	
	
	if ItemSpawn > 0 then
		if doCreateItem(ItemSpawn, 1, pos) == true then
			return true
		end
	end
	
    return true
end

function RetornarItemRandom()
	
	local Num = 0
	
	-- Adicionar probabilidades
	for i = 1, #Itens do
		Itens[i].Inicio = Num
		Num = ((Num + Itens[i].Chance) - 1)
		Itens[i].Fim = Num
	end
	
	-- Criar a chance
	local Math = math.random(0, Num)
	
	-- Retornar item
	for i = 1, #Itens do
		
		if Itens[i].Inicio <= Math and Itens[i].Fim >= Math then
			return Itens[i].Item
		end
		
	end
	
	return 0
end

 

Link para o post
Compartilhar em outros sites

Fiz uma bagunça aqui kk mas acho q dá pra entender, mexe só nas config, e cuidado com as virgulas =]

no fim vai ficar assim:

[1] = { 7730, 1125, 6574, 2, 4, 20 }

No caso, teria 20% de chance, de spawnar 4 blue legs(7730), na posição xyz=(1125, 6574, 2)

 

ps: a chance é um numero entre 0 e 100

local config = {
[1] = {1111, POSX1, POSY1, POSZ1, QUANTIDADEITEM1, CHANCE1},
[2] = {2222, POSX2, POSY2, POSZ2, QUANTIDADEITEM2, CHANCE2},
[3] = {3333, POSX3, POSY3, POSZ3, QUANTIDADEITEM3, CHANCE3}
}

function onTime(interval)
local item1 = config[1]
local item2 = config[2]
local item3 = config[3]
local rand = math.random(100)

        local item1Pos = Position((item1[2]), (item1[3]), item1[4])
        local Checkitem1 = Tile(item1Pos):getItemById(item1[1])
if Checkitem1 == 0 and item1[6] >= rand then
     doCreateItem(item1[1], item1[5], item1Pos)
end    

        local item2Pos = Position((item2[2]), (item2[3]), item2[4])
        local Checkitem2 = Tile(item2Pos):getItemById(item2[1])
if Checkitem2 == 0 and item2[6] >= rand then
     doCreateItem(item2[1], item2[5], item2Pos)
end    

        local item3Pos = Position((item3[2]), (item3[3]), item3[4])
        local Checkitem3 = Tile(item3Pos):getItemById(item3[1])
if Checkitem3 == 0 and item3[6] >= rand then
     doCreateItem(item3[1], item3[5], item3Pos)
end    

return true
end

 

Editado por Mor3nao (veja o histórico de edições)

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

tenta usar assim:

globalevents.xml

<globalevent name="createitem" interval="1800000" script="spawnItem.lua" />

/script/spawnItem.lua

local config = {
[1] = {1111, POSX1, POSY1, POSZ1, QUANTIDADEITEM1, CHANCE1},
[2] = {2222, POSX2, POSY2, POSZ2, QUANTIDADEITEM2, CHANCE2},
[3] = {3333, POSX3, POSY3, POSZ3, QUANTIDADEITEM3, CHANCE3}
}

function onThink(cid, interval, lastExecution)
local item1 = config[1]
local item2 = config[2]
local item3 = config[3]
local rand = math.random(100)

        local item1Pos = Position((item1[2]), (item1[3]), item1[4])
        local Checkitem1 = Tile(item1Pos):getItemById(item1[1])
if Checkitem1 == 0 and item1[6] >= rand then
     doCreateItem(item1[1], item1[5], item1Pos)
end    

        local item2Pos = Position((item2[2]), (item2[3]), item2[4])
        local Checkitem2 = Tile(item2Pos):getItemById(item2[1])
if Checkitem2 == 0 and item2[6] >= rand then
     doCreateItem(item2[1], item2[5], item2Pos)
end    

        local item3Pos = Position((item3[2]), (item3[3]), item3[4])
        local Checkitem3 = Tile(item3Pos):getItemById(item3[1])
if Checkitem3 == 0 and item3[6] >= rand then
     doCreateItem(item3[1], item3[5], item3Pos)
end    

return true
end

 

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites
[Error - GlobalEvent Interface]
data/globalevents/scripts/spawnitem.lua:onThink
Description:
data/globalevents/scripts/spawnitem.lua:14: attempt to call global 'Tile' (a nil value)
stack traceback:
        data/globalevents/scripts/spawnitem.lua:14: in function <data/globalevents/scripts/spawnitem.lua:7>
[Error - GlobalEvents::think] Couldn't execute event: createitem

 

Link para o post
Compartilhar em outros sites

tá dando errado pq a versão é diferente.. teu map é globalfull?

Editado por Mor3nao (veja o histórico de edições)

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

Tenta assim, n uso tfs, ai fica foda kk:

 

local config = {
[1] = {1111, POSX1, POSY1, POSZ1, QUANTIDADEITEM1, CHANCE1},
[2] = {2222, POSX2, POSY2, POSZ2, QUANTIDADEITEM2, CHANCE2},
[3] = {3333, POSX3, POSY3, POSZ3, QUANTIDADEITEM3, CHANCE3}
}

function onThink(cid, interval, lastExecution)
local item1 = config[1]
local item2 = config[2]
local item3 = config[3]
local rand = math.random(100)

        local item1Pos = Position((item1[2]), (item1[3]), item1[4])
		local Checkitem1 = getTileItemById(item1Pos, item1[1])
if Checkitem1 == 0 and item1[6] >= rand then
     doCreateItem(item1[1], item1[5], item1Pos)
end    

        local item2Pos = Position((item2[2]), (item2[3]), item2[4])
        local Checkitem2 = getTileItemById(item2Pos, item2[1])
if Checkitem2 == 0 and item2[6] >= rand then
     doCreateItem(item2[1], item2[5], item2Pos)
end    

        local item3Pos = Position((item3[2]), (item3[3]), item3[4])
		local Checkitem3 = getTileItemById(item3Pos, item3[1])
if Checkitem3 == 0 and item3[6] >= rand then
     doCreateItem(item3[1], item3[5], item3Pos)
end    

return true
end

 

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

Ve se na tua pasta de actions, tem o script da alavanca de rookguard, ou se no teu movements tem o script do coal basin das tombs, se tiver me manda ai, pra eu ver como é a função na tua versão

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites
  • Moderador

Entao só tirar o Position? kk

1 minuto atrás, Movie disse:

Nas versões antigas não existe a função Position(), adapte. Só falta isso para o seu script funcionar :)

 

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites
  • Moderador
Link para o post
Compartilhar em outros sites
  • Solução

Tenta agora, se nao der, nao sei kk
 

Agora vai:

local config = {
[1] = {1111, POSX1, POSY1, POSZ1, QUANTIDADEITEM1, CHANCE1},
[2] = {2222, POSX2, POSY2, POSZ2, QUANTIDADEITEM2, CHANCE2},
[3] = {3333, POSX3, POSY3, POSZ3, QUANTIDADEITEM3, CHANCE3}
}

function onThink(cid, interval, lastExecution)
local item1 = config[1]
local item2 = config[2]
local item3 = config[3]
local rand = math.random(100)

        local item1Pos = {x = item1[2], y = item1[3], z = item1[4], stackpos = 1}
		local Checkitem1 == getThingfromPos(item1Pos)
if Checkitem1~= item1[1] and item1[6] >= rand then
     doCreateItem(item1[1], item1[5], item1Pos)
end    

        local item2Po s= {x = item2[2], y =item2[3], z =item2[4], stackpos = 1}
        local Checkitem2 = getThingfromPos(item2Pos)
if Checkitem2~= item2[1] and item2[6] >= rand then
     doCreateItem(item2[1], item2[5], item2Pos)
end
local item3Pos = {x =item3[2], y =item3[3], z =item3[4], stackpos = 1}
local Checkitem3 = getThingfromPos(item3Pos)
if Checkitem3 ~= item3[1] and item3[6] >= rand then
     doCreateItem(item3[1], item3[5], item3Pos)
end    

return true
end
Editado por Mor3nao (veja o histórico de edições)

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

Funcionou, só tem um porem, ele fica aparecendo encima de outro item
 

Teria como por pra ele checkar e se tiver o item ele não aparecer?

Editado por shanden4502 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Agora deu?

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo