Ir para conteúdo
  • Cadastre-se

Normal [Action] ativar efeito com alavanca


Posts Recomendados

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)
Link para o post
Compartilhar em outros sites

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.

Link para o post
Compartilhar em outros sites
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.

Link para o post
Compartilhar em outros sites
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.

Link para o post
Compartilhar em outros sites
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)
Link para o post
Compartilhar em outros sites

@Mono Singed

quando eu puxasse a alavanca pra direita -> todos os players online ganhariam esse efeito.
quando eu puxasse a alavanca pra esquerda <- o efeito seria desativado

tipo, por storage acho que não funciona , porq não so ganharia os players online no momento que eu ativasse a alavanca?
e os players que logassem após eu puxar a alavanca? ganhariam o efeito?



PS: O ideal não seria um "Globalstorage"?  ( eu n sei fazer =/ )
 

Editado por poko360 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 hora atrás, poko360 disse:

@Mono Singed

quando eu puxasse a alavanca pra direita -> todos os players online ganhariam esse efeito.
quando eu puxasse a alavanca pra esquerda <- o efeito seria desativado

tipo, por storage acho que não funciona , porq não so ganharia os players online no momento que eu ativasse a alavanca?
e os players que logassem após eu puxar a alavanca? ganhariam o efeito?



PS: O ideal não seria um "Globalstorage"?  ( eu n sei fazer =/ )
 

 

Ah, sim. Para isso, abra a pasta data, depois a lib, e no arquivo de nome parecido "000-constants", adicione no começo: DOUBLEXP_STORAGE = 30050

(já fica a dica, sempre que tu quiser criar uma variável ou função que seja acessível em todos scripts, bote num arquivo dentro dessa lib)

Crie a action:

alavancas = {1945, 1946}


function onUse(player, item, fromPosition, target, toPosition)
	if getStorage(DOUBLEXP_STORAGE) < 1 then 
		setStorage(DOUBLEXP_STORAGE, 1)
	else
		setStorage(DOUBLEXP_STORAGE, -1)
	end
	doTransformItem(item, (item.itemid == alavancas[1] and alavancas[2] or alavancas[1]))
	return true
end

E substitua teu globalevent:

function onThink(interval, lastExecution)
	if getStorage(DOUBLEXP_STORAGE) == 1 then
  		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
	end
	return true
end

 

 

Editado por Mono Singed (veja o histórico de edições)
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.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo