Jump to content

(Resolvido)GlobalEvent criar item no mapa


Go to solution Solved by Mor3nao,

Recommended Posts

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 to post
Share on other 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 to post
Share on other 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

 

Edited by Mor3nao (see edit history)

MEUS POSTS:

 

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

Link to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

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

Edited by Mor3nao (see edit history)

MEUS POSTS:

 

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

Link to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

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 to post
Share on other sites

Agora, Mor3nao disse:

Entao só tirar o Position? kk

 

Como ele vai identificar em qual posição vai ser criado o item se você não declarar a posição? 

Tente pensar em outras formas de puxar a posição da tabela.

Link to post
Share on other sites

  • Solution

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
Edited by Mor3nao (see edit history)

MEUS POSTS:

 

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

Link to post
Share on other sites

Agora deu?

MEUS POSTS:

 

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Confirmação de Termo