Ir para conteúdo

Featured Replies

Postado

existe alguma possibilidade de quando puxar uma alavanca

esse globalevent seja ativado?

help plos<3

 

(esse globalevent ativa um efeito em todos os jogadores online, que fica aparecendo "2x EXP" a cada 7 seg)

Citar

function onThink(interval, lastExecution)
for _, name in ipairs(getOnlinePlayers()) do
local cid = getPlayerByName(name)
if getPlayerGroupId(cid) < 4 then
doSendAnimatedText(getPlayerPosition(cid), "2x EXP", 251)
doSendMagicEffect(getPlayerPosition(cid), 27)
doSendMagicEffect(getPlayerPosition(cid), 30)
            local spot = getThingPosition(cid)
            doSendDistanceShoot({x = spot.x + 1, y = spot.y + 1, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x + 1, y = spot.y + 0, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x + 0, y = spot.y + 1, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x - 1, y = spot.y + 0, z = spot.z}, spot, 34)
            doSendDistanceShoot({x = spot.x + 0, y = spot.y - 1, z = spot.z}, spot, 34)
        end
    end
    return true
end

 

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

  • Respostas 6
  • Visualizações 606
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Tente isso:

function onUse(player, item, fromPosition, target, toPosition)
	for _, name in ipairs(getOnlinePlayers()) do
		local cid = getPlayerByName(name)
		if getPlayerGroupId(cid) < 4 then
			doSendAnimatedText(getPlayerPosition(cid), "2x EXP", 251)
			doSendMagicEffect(getPlayerPosition(cid), 27)
			doSendMagicEffect(getPlayerPosition(cid), 30)
			local spot = getThingPosition(cid)
			doSendDistanceShoot({x = spot.x + 1, y = spot.y + 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 1, y = spot.y + 0, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 0, y = spot.y + 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x - 1, y = spot.y + 0, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 0, y = spot.y - 1, z = spot.z}, spot, 34)
		end
	end
	return true
end

Adiciona uma tag de use no actions.xml e coloca o action na alavanca pelo map editor.

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Postado
11 minutos atrás, Nazo disse:

Tente isso:


function onUse(player, item, fromPosition, target, toPosition)
	for _, name in ipairs(getOnlinePlayers()) do
		local cid = getPlayerByName(name)
		if getPlayerGroupId(cid) < 4 then
			doSendAnimatedText(getPlayerPosition(cid), "2x EXP", 251)
			doSendMagicEffect(getPlayerPosition(cid), 27)
			doSendMagicEffect(getPlayerPosition(cid), 30)
			local spot = getThingPosition(cid)
			doSendDistanceShoot({x = spot.x + 1, y = spot.y + 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 1, y = spot.y + 0, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 0, y = spot.y + 1, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x - 1, y = spot.y + 0, z = spot.z}, spot, 34)
			doSendDistanceShoot({x = spot.x + 0, y = spot.y - 1, z = spot.z}, spot, 34)
		end
	end
	return true
end

Adiciona uma tag de use no actions.xml e coloca o action na alavanca pelo map editor.

Não vai enviar a cada 7 segundos, mais fácil a alavanca adicionar um storage em todos players do jogo, e verificar esse storage na execução do onThink.

Postado
2 minutos atrás, Mono Singed disse:

Não vai enviar a cada 7 segundos, mais fácil a alavanca adicionar um storage em todos players do jogo, e verificar esse storage na execução do onThink.

Nem li o código, segundo ele já funciona, ué, só passei pra alavanca.

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Postado
18 minutos atrás, Nazo disse:

Nem li o código, segundo ele já funciona, ué, só passei pra alavanca.

A intenção é justamente o globalevent só ser executado quando os players tiverem a storage (na verdade o autor do post deixou ambíguo, mas se ele quiser o efeito a cada 7s, só do jeito que eu fiz, mesmo), o script da alavanca vai ficar algo do tipo:

--O problema aqui é que vai precisar de outro script para retirar a storage, por isso acho melhor fazer ele por talkaction do que por action

function onUse(player, item, fromPosition, target, toPosition)
  local strg = 50030
  for _, name in ipairs(getOnlinePlayers()) do
    local cid = getPlayerByName(name)
    if getPlayerGroupId(cid) < 4 and getCreatureStorage(cid, strg) < 1 then
      doCreatureSetStorage(cid, strg, 1)
    end
  end
  return true
end

e o do globalevent:

function onThink(interval, lastExecution)	
  local strg = 50030
  for _, name in ipairs(getOnlinePlayers()) do
    local cid = getPlayerByName(name)
    if getPlayerGroupId(cid) < 4 and getCreatureStorage(cid, strg) == 1 then
      doSendAnimatedText(getPlayerPosition(cid), "2x EXP", 251)
      doSendMagicEffect(getPlayerPosition(cid), 27)
      doSendMagicEffect(getPlayerPosition(cid), 30)
      local spot = getThingPosition(cid)
      doSendDistanceShoot({x = spot.x + 1, y = spot.y + 1, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x + 1, y = spot.y + 0, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x + 0, y = spot.y + 1, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x - 1, y = spot.y + 0, z = spot.z}, spot, 34)
      doSendDistanceShoot({x = spot.x + 0, y = spot.y - 1, z = spot.z}, spot, 34)
    end
  end
  return true
end

 

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

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo