ne tela toda ou so no player
local incorreto reportado pra moverem
info
Grupo: Lorde
Registrado: 22/07/12
Posts: 2.2k
Reputação: +453
Char no Tibia: Kissy

ne tela toda ou so no player
local incorreto reportado pra moverem
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

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 Setembro 1 por Newtonnotwen
info
Grupo: Lorde
Registrado: 22/07/12
Posts: 2.2k
Reputação: +453
Char no Tibia: Kissy

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
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 Setembro 1 por leo420
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

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.
info
Grupo: Lorde
Registrado: 22/07/12
Posts: 2.2k
Reputação: +453
Char no Tibia: Kissy

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
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 Setembro 1 por leo420
info
Grupo: Lorde
Registrado: 22/07/12
Posts: 2.2k
Reputação: +453
Char no Tibia: Kissy

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
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

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 Setembro 1 por Newtonnotwen
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

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 Setembro 1 por Skymagnum
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 Setembro 2 por brun123
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>
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.
info
Grupo: Campones
Registrado: 28/07/12
Posts: 27
Reputação: 0
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