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

@Skylight e Newtonnotwen

Vocês estão achando que o sistema de report é coisa pra ficar brincando!?

Só não alerto os dois porque acho desnecessário, mas está nas regras!

 

Se fizerem de novo vou alertar, isso atrapalha aqui na hora de moderar os tópicos.

Vamos tomar tendência ai

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

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