Ir para conteúdo
  • 0

Efeitos..


leo420

Pergunta

Opa galera, to montando um ot queria um script que ao entrar no GOD, saia os efeitos 29,30,31 na tela inteira, a cada 3 segundos e em qualquer lugar ( Random Position )

 

Tenho um script que uso aqui apartir do lvl 350+ apareçe uns efeitos, acho que da pra tirar uma base doque é:

 

 

function sendEffect(cid)

if isCreature(cid) then

local pos = getCreaturePosition(cid)

local x = math.random(pos.x-1,pos.x+1)

local y = math.random(pos.y-1,pos.y+1)

doSendMagicEffect({x=x,y=y,z=pos.z}, 4)

doSendMagicEffect({x=x,y=y,z=pos.z}, 34)

addEvent(sendEffect,2000,cid)

end

end

 

function onLogin(cid)

if getPlayerLevel(cid) >= 350 then

sendEffect(cid)

end

registerCreatureEvent(cid, "AdvEffect")

return TRUE

end

 

function onAdvance(cid, skill, oldLevel, newLevel)

if skill == SKILL__LEVEL and newLevel == 350 then

sendEffect(cid)

end

return TRUE

end

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Script inical by: AnneMotta & Vodkart

function onLogin(cid)

registerCreatureEvent(cid, "EffectOutLogin")

registerCreatureEvent(cid, "OutfitEffects")

return doCreatureChangeOutfit(cid,{lookType = getCreatureOutfit(cid).lookType, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons})

end

local events = {}

function onOutfit(cid, old, current)

local effect = {

[288] = 6,[289] = 6, -- GOD OUTFIT

}

local o,c= effect[old.lookType],effect[current.lookType]

if getPlayerAccess(cid) < 3 then return true

elseif (not o or not c or old.lookAddons == 3 and o) then stopEvent(events[getPlayerGUID(cid)]) end

if current.lookAddons == 3 and c then

function WalkEffect(cid, c, pos)

if not isCreature(cid) then return LUA_ERROR end

if c then frompos = getThingPos(cid)

if frompos.x ~= pos.x or frompos.y ~= pos.y or frompos.z ~= pos.z then doSendMagicEffect(frompos, c) end

events[getPlayerGUID(cid)] = addEvent(WalkEffect, 100, cid, c, frompos)

end return true end

WalkEffect(cid, c, {x=0, y=0, z=0}) end

return true

end

Editando:

 

-Verde: Numero do efeito.

-Vermelho: Outfit do god

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

  • 0

Newtonnotwen o seu nunca ira funcionar so de vista da pra perceber

Reportado por conteúdo infuncional

 

edite aki leo nao sei se o do jeito que você quer

 

function sendEffect(cid)
if isCreature(cid) then
local pos = getCreaturePosition(cid)
local x = math.random(pos.x-1,pos.x+1)
local y = math.random(pos.y-1,pos.y+1)
doSendMagicEffect({x=x,y=y,z=pos.z}, 29)
doSendMagicEffect({x=x,y=y,z=pos.z}, 30)
doSendMagicEffect({x=x,y=y,z=pos.z}, 31)
addEvent(sendEffect,2000,cid)
end
end
function onLogin(cid)
if getPlayerAccess(cid) == 5 then
sendEffect(cid)
end
registerCreatureEvent(cid, "AdvEffect")
return TRUE
end
function onAdvance(cid, skill, oldLevel, newLevel)
if skill == SKILL__LEVEL and newLevel == 350 then
sendEffect(cid)
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

Newtonnotwen, mas esse eh soh nos sqm do lado do player, tentei aumentar os sqms, tipo 8X8 QUADRADO.. Na tela intera...

 

 

SkyLigh, eh isso que eu quero, como aumento o espaço dos efeitos, tentei assim bugo:

 

 

 

local x = math.random(pos.x-1,pos.x+1)

local y = math.random(pos.y-1,pos.y+1)

local x = math.random(pos.x-2,pos.x+2)

local y = math.random(pos.y-2,pos.y+2)

local x = math.random(pos.x-3,pos.x+3)

local y = math.random(pos.y-3,pos.y+3)

doSendMagicEffect({x=x,y=y,z=pos.z}, 29)

doSendMagicEffect({x=x,y=y,z=pos.z}, 30)

doSendMagicEffect({x=x,y=y,z=pos.z}, 31)

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

  • 0

Newtonnotwen o seu nunca ira funcionar so de vista da pra perceber

Reportado por conteúdo infuncional

 

edite aki leo nao sei se o do jeito que você quer

 

function sendEffect(cid)
if isCreature(cid) then
local pos = getCreaturePosition(cid)
local x = math.random(pos.x-1,pos.x+1)
local y = math.random(pos.y-1,pos.y+1)
doSendMagicEffect({x=x,y=y,z=pos.z}, 29)
doSendMagicEffect({x=x,y=y,z=pos.z}, 30)
doSendMagicEffect({x=x,y=y,z=pos.z}, 31)
addEvent(sendEffect,2000,cid)
end
end
function onLogin(cid)
if getPlayerAccess(cid) == 5 then
sendEffect(cid)
end
registerCreatureEvent(cid, "AdvEffect")
return TRUE
end
function onAdvance(cid, skill, oldLevel, newLevel)
if skill == SKILL__LEVEL and newLevel == 350 then
sendEffect(cid)
end
return TRUE
end

Reportado por me reportar pelo oque não sabe.

 

Não estou brincando.

Link para o comentário
Compartilhar em outros sites

  • 0

tente assim

 

function sendEffect(cid)
if isCreature(cid) then
local pos = getCreaturePosition(cid)
local x = math.random(pos.x-1,pos.x+1)
local y = math.random(pos.y-1,pos.y+1)
doSendMagicEffect({x=x,y=y,z=pos.z}, 29)
doSendMagicEffect({x=x,y=y,z=pos.z}, 30)
doSendMagicEffect({x=x,y=y,z=pos.z}, 31)
addEvent(sendEffect,2000,cid)
end
end
function onLogin(cid)
if getPlayerAccess(cid) == 5 then
local arr = {
{ 1, 1, 1, 1, 1, 1. },
{ 1, 0, 0, 0, 0, 1. },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 0, 0, 2, 0, 1, },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 1, 1, 1, 1, 1, },
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
sendEffect(cid)
end
registerCreatureEvent(cid, "AdvEffect")
return TRUE
end
function onAdvance(cid, skill, oldLevel, newLevel)
if skill == SKILL__LEVEL and newLevel == 350 then
sendEffect(cid)
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

tente assim

 

function sendEffect(cid)
if isCreature(cid) then
local pos = getCreaturePosition(cid)
local x = math.random(pos.x-1,pos.x+1)
local y = math.random(pos.y-1,pos.y+1)
doSendMagicEffect({x=x,y=y,z=pos.z}, 29)
doSendMagicEffect({x=x,y=y,z=pos.z}, 30)
doSendMagicEffect({x=x,y=y,z=pos.z}, 31)
addEvent(sendEffect,2000,cid)
end
end
function onLogin(cid)
if getPlayerAccess(cid) == 5 then
local arr = {
{ 1, 1, 1, 1, 1, 1. },
{ 1, 0, 0, 0, 0, 1. },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 0, 0, 2, 0, 1, },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 1, 1, 1, 1, 1, },
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
sendEffect(cid)
end
registerCreatureEvent(cid, "AdvEffect")
return TRUE
end
function onAdvance(cid, skill, oldLevel, newLevel)
if skill == SKILL__LEVEL and newLevel == 350 then
sendEffect(cid)
end
return TRUE
end

Testei aqui, os efeitos funcinou bem. mas soh nos sqm ao lado do char, queria que soltasse o efeito na tela intera tipo quadrado de 8 SQM X 8 SQM, mas aleatório o lugar dos efeitos..

 

-------- EDIIT

 

Deu certo, alterei esse:

local x = math.random(pos.x-1,pos.x+1)

local y = math.random(pos.y-1,pos.y+1)

 

para esse:

 

 

local x = math.random(pos.x-4,pos.x+4)

local y = math.random(pos.y-4,pos.y+4)

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

  • 0

Então eu criei essa parte

 

{ 1, 1, 1, 1, 1, 1. },
{ 1, 0, 0, 0, 0, 1. },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 0, 0, 2, 0, 1, },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 0, 0, 0, 0, 1, },
{ 1, 1, 1, 1, 1, 1, },

 

aonde ta o 1 e aonde vai aparecer os efeito e o 2 e o player e 0 e nada

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta assim:

 

local area1 = {x=ppos.x+7, y=ppos.y+5, z=ppos.z}

local area2 = {x=ppos.x-7, y=ppos.y-5, z=ppos.z}

 

Ai você põe

 

from area1 to area2.

 

Ai você faz a função e adiciona:

 

addEvent(function, 1, area1, area2, efeito)

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

  • 0

 

function sendEffect(cid)
if isCreature(cid) then
local pos = getPlayerPosition(cid)
local table_pos = {
{x = pos.x + 1, y = pos.y, z = pos.z},
{x = pos.x - 1, y = pos.y, z = pos.z},
{x = pos.x, y = pos.y + 1, z = pos.z},
{x = pos.x, y = pos.y - 1, z = pos.z},
{x = pos.x + 1, y = pos.y + 1, z = pos.z},
{x = pos.x - 1, y = pos.y - 1, z = pos.z},
{x = pos.x + 1, y = pos.y - 1, z = pos.z},
{x = pos.x - 1, y = pos.y + 1, z = pos.z}
}
for i = 1, #table_pos do
doSendMagicEffect(table_pos[i], math.random(28, 30))
end
addEvent(sendEffect,2000,cid)
end
end

function onLogin(cid)
if getPlayerLevel(cid) >= 350 then
sendEffect(cid)
end
registerCreatureEvent(cid, "AdvEffect")
return TRUE
end

function onAdvance(cid, skill, oldLevel, newLevel)
if skill == SKILL__LEVEL and newLevel == 350 then
sendEffect(cid)
end
return TRUE
end

 

 

ou usa

 

local pos = getPlayerPosition(cid)
local from = {x = pos.x + 8, y = pos.y + 8, z = pos.z}
local to = {x = pos.x - 8, y = pos.y - 8, z = pos.z}

for x = from.x, to.x do
for y = from.y, to.y do
pos = {x = x, y = y, z = pos.z}
end
end

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

  • 0

Cara as pessoas fazem muita confusão com um pedido simples... Misturando script onAdvance sendo que não tem nada a ver com o pedido do tópico, o que ele postou é apenas uma base pra exemplificar o que ele quer mais ou menos.

 

Veja se esse agrada:

 

 

local efeitos = {29, 30, 31}	 -- os efeitos que vão sair
local todos_sqms_com_mesmo_efeitos = true -- se vai ser o mesmo efeito em todos os sqms na mesma execução ou vão ser aleatórios (true ou false)
local cobrir_toda_a_area = false -- se vai sair efeito em todas as áreas possíveis, (true ou false)
local numero_de_efeitos = 50	 -- número de efeitos que irão aparecer caso não cubra toda a área (apenas se false acima)
local delay = 3 * 1000		   -- intervalo a cada execução dos efeitos

local function doSendGodEffect(cid)
   if not isCreature(cid) then return true end
   local positions = {}
   local effect = todos_sqms_com_mesmo_efeitos and efeitos[math.random(#efeitos)] or false
   for x = -7, 7 do
    for y = -5, 5 do
	    local newPos = getThingPos(cid)
	    newPos.x, newPos.y = newPos.x + x, newPos.y + y
	    if x ~= 0 or y ~= 0 then table.insert(positions, newPos) end
    end
   end
   if cobrir_toda_a_area then
    for _, pos in pairs (positions) do
	    doSendMagicEffect(pos, effect or efeitos[math.random(#efeitos)])
    end
   else
    for n = 1, numero_de_efeitos do
	    if #positions > 0 then
		    local randomPos = math.random(#positions)
		    doSendMagicEffect(positions[randomPos], effect or efeitos[math.random(#efeitos)])
		    table.remove(positions, randomPos)
	    end
    end
   end
addEvent(doSendGodEffect, delay, cid)
end


function onLogin(cid)

   if getPlayerAccess(cid) >= 5 then
    doSendGodEffect(cid)
   end

return true
end

 

 

As 6 primeiras linhas são de configurações para que você possa alterar ao seu gosto.

 

Se quiser algo a mais, mensagens saindo do god, tamanho da área ou qualquer outra coisa só pedir.

Qualquer dúvida em relação à configuração só perguntar também.

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

  • 0

Cara as pessoas fazem muita confusão com um pedido simples... Misturando script onAdvance sendo que não tem nada a ver com o pedido do tópico, o que ele postou é apenas uma base pra exemplificar o que ele quer mais ou menos.

 

Veja se esse agrada:

 

 

local efeitos = {29, 30, 31}	 -- os efeitos que vão sair
local todos_sqms_com_mesmo_efeitos = true -- se vai ser o mesmo efeito em todos os sqms na mesma execução ou vão ser aleatórios (true ou false)
local cobrir_toda_a_area = false -- se vai sair efeito em todas as áreas possíveis, (true ou false)
local numero_de_efeitos = 50	 -- número de efeitos que irão aparecer caso não cubra toda a área (apenas se false acima)
local delay = 3 * 1000		   -- intervalo a cada execução dos efeitos

local function doSendGodEffect(cid)
if not isCreature(cid) then return true end
local positions = {}
local effect = todos_sqms_com_mesmo_efeitos and efeitos[math.random(#efeitos)] or false
for x = -7, 7 do
	for y = -5, 5 do
		local newPos = getThingPos(cid)
		newPos.x, newPos.y = newPos.x + x, newPos.y + y
		if x ~= 0 or y ~= 0 then table.insert(positions, newPos) end
	end
end
if cobrir_toda_a_area then
	for _, pos in pairs (positions) do
		doSendMagicEffect(pos, effect or efeitos[math.random(#efeitos)])
	end
else
	for n = 1, numero_de_efeitos do
		if #positions > 0 then
			local randomPos = math.random(#positions)
			doSendMagicEffect(positions[randomPos], effect or efeitos[math.random(#efeitos)])
			table.remove(positions, randomPos)
		end
	end
end
addEvent(doSendGodEffect, delay, cid)
end


function onLogin(cid)

if getPlayerAccess(cid) >= 5 then
	doSendGodEffect(cid)
end

return true
end

 

 

As 6 primeiras linhas são de configurações para que você possa alterar ao seu gosto.

 

Se quiser algo a mais, mensagens saindo do god, tamanho da área ou qualquer outra coisa só pedir.

Qualquer dúvida em relação à configuração só perguntar também.

 

brun, é isso que eu quero parça, mas da um erro: [Warning - Event::: loadScript ] Event onAdvance not found <data/creaturescripts/scripts/GodEffect.lua>

Link para o comentário
Compartilhar em outros sites

  • 0

Isso não é bem um erro, é só um aviso de que o servidor tentou carregar um script do tipo onAdvance e ele não existe.

Você deixou bem claro que era pra ficar jogando efeitos a cada 3 segundos quando GODs fizerem login, mas não especificou nada sobre algo de aumentar o level e jogar efeitos também...

 

É só tirar a tag do tipo advance do seu creaturescripts.xml (provavelmente tem mais de uma, tira aquela que está ligada ao arquivo GodEffect.lua).

Se quiser que algo aconteça quando chegar em X level ou algo do tipo, só explicar direitinho o que você quer.

Link para o comentário
Compartilhar em outros sites

  • 0

ah sim, nem tinha me ligado no "Advance" haha, agora tirei deu certinho o script =) coloquei 2 efeitos a cada 1 segundo .. valeu brun e sky +rep..

 

-----------------------------------------------------

 

TÓPICO RESOLVIDO

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...