LU

Effect Pos.x Pos.y (Math.random)

Por lukervis, 15 de mar. de 2012 em Scripts

script
21
3.1k
lukervisL
15 de março de 2012 às 18:36

Opa, estou com uma pequena dúvida a respeito de um effect

 

 

 

 

function onThink(cid, interval)

if getPlayerLevel(cid) >= 400 then

local position = getPlayerPosition(cid)

local time = 1

local effectPositions = {

{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, z = pos.z},

{x = pos.x + 1, y = pos.y, 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, 6 do

doSendMagicEffect(effectPositions[math.random(#effectPositions)](4))

doSendMagicEffect(effectPositions[math.random(#effectPositions)](34))

month = addEvent(SayText, time * 1000 / 2, cid)

end

end

 

return true

end

 

 

O script basicamente seria esse, só que aqui no distro, teve vários atritos, gostaria que alguém arrumasse para mim, antes que perguntem, o effect 4 e o 34 sairiam no mesmo position, se não entender como o script funciona, me pergunte ..

 

Desde já, agradecido ..

Editado Março 15 por luakao

VincV
15 de março de 2012 às 19:12

tenta assim

function onThink(cid, interval)
if getPlayerLevel(cid) >= 400 then
local pos = getPlayerPosition(cid) ---aki tava position mas abixo tava pos
local time = 1
local effectPositions = {
{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, z = pos.z},
{x = pos.x + 1, y = pos.y, 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, 6 do
doSendMagicEffect(effectPositions[math.random(#effectPositions)],4) -- separe com virgulas n com parentes
doSendMagicEffect(effectPositions[math.random(#effectPositions)],34) -- mesmo de cima
month = addEvent(SayText, time * 500, cid)-- n sei pra que serve isso, mas n a nessesidade de por 1000/2, e so por 500 que o resultado
end
end

return true
end

LucasptL
15 de março de 2012 às 19:23

lord isso vai em qual pasta ? action ,creaturescripts?

VincV
15 de março de 2012 às 19:33

creaturescript

LucasptL
15 de março de 2012 às 19:38

que tag eu adiciono no creaturescript.xml?

<event type="?" name="Effectlv" event="script" value="Effectlv.lua"/>

 

e no ? o que eu coloko

Editado Março 15 por Lucaspt

VincV
15 de março de 2012 às 20:05

think

lukervisL
15 de março de 2012 às 20:10

Então, eu coloquei essa aura lord, só que é o seguinte, ela sai vários efeitos em vários sqm, eu gostaria de que saísse 1 combinação no mesmo sqm do effect 4 e 34, e onde a combinação sairia, seria um math.random das posições disponíveis

 

estilo isso

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

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

 

mas só que em math.random das positions que eu esta no script,

Editado Março 15 por luakao

VincV
15 de março de 2012 às 20:25

function onThink(cid, interval)
if getPlayerLevel(cid) >= 400 then
local pos = getPlayerPosition(cid) 
local time = 1
local effectPositions = {
{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, z = pos.z},
{x = pos.x + 1, y = pos.y, 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}
}

k = math.random(#effectPositions)

doSendMagicEffect(effectPositions[k],4) 
doSendMagicEffect(effectPositions[k],34) 
month = addEvent(SayText, time * 500, cid)

end

return true
end

n da pra comtrola o intervalo,entre um e outro

lukervisL
15 de março de 2012 às 20:29

function onThink(cid, interval)
if getPlayerLevel(cid) >= 400 then
local pos = getPlayerPosition(cid)
local time = 1
local effectPositions = {
{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, z = pos.z},
{x = pos.x + 1, y = pos.y, 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}
}

k = math.random(#effectPositions)

doSendMagicEffect(effectPositions[k],4)
doSendMagicEffect(effectPositions[k],34)
month = addEvent(SayText, time * 500, cid)

end

return true
end

n da pra comtrola o intervalo,entre um e outro

 

Acho que tem como, o local time que eu adicione é o multiplicador do tempo, por exemplo 1*2000, é só colocar um addevent, tem como ? *-*

VincV
15 de março de 2012 às 20:31

o onthink vai executa sempara de qualquer geito

lukervisL
15 de março de 2012 às 20:36

Tranquilo, já esta ótimo já, valeu...

para variar, REP+ rs

 

 

EDIT@:

rep+ fail, limite de hoje excedido ...

amanhã eu te dou u-u

 

uma pergunta, teria como colocar o effect system em talkaction?

criar 2 setting, igual ao !afk on/off

!aura on/off

Editado Março 15 por luakao

VincV
15 de março de 2012 às 20:46

sim dai dava pra fase so com talkaction se usa o onthink,passa o afk dai eu fasso emcima fica mais facil

lukervisL
15 de março de 2012 às 20:48

Script AFK:

 

 

 

 

--[[

Talking Tp/signs/tiles for TFS 0.2+

70%shawak,30%Damadgerz

Idea by Damadgerz

]]--

local time = 5 -- 1 = 1 sec, 2 = 2 sec, ...

 

local say_events = {}

local function SayText(cid)

if isPlayer(cid) == TRUE then

if say_events[getPlayerGUID(cid)] ~= nil then

if isPlayer(cid) == TRUE then

doSendAnimatedText(getPlayerPosition(cid),"Ausente!", math.random(01,255))

end

say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 1000 / 2, cid)

end

end

return TRUE

end

function onSay(cid, words, param, channel)

if(param == '') then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")

return true

end

if param == "on" then

if isPlayer(cid) == TRUE then

doSendAnimatedText(getPlayerPosition(cid),"Ausente!", math.random(01,255))

end

say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 1000, cid)

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"You Now Stated you are (afk).")

elseif param == "off" then

stopEvent(say_events[getPlayerGUID(cid)])

say_events[getPlayerGUID(cid)] = nil

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"You Now stated your are not (afk).")

end

return TRUE

end

 

 

 

Ao invés de ser if getplayerlevel, poderia colocar um if getplayervocation?

Editado Março 15 por luakao

VincV
15 de março de 2012 às 21:25

ve se assim da

ocal time = 5 -- 1 = 1 sec, 2 = 2 sec, ...

local say_events = {}
local function SayText1(cid)
if isPlayer(cid) == TRUE then
if say_events[getPlayerGUID(cid)] ~= nil then
local pos = getPlayerPosition(cid)

local effectPositions = {
{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, z = pos.z},
{x = pos.x + 1, y = pos.y, 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}
}

k = math.random(#effectPositions)

doSendMagicEffect(effectPositions[k],4)
doSendMagicEffect(effectPositions[k],34)


say_events[getPlayerGUID(cid)] = addEvent(SayText1, time * 1000 / 2, cid)
end
end
return TRUE
end
function onSay(cid, words, param, channel)
if getPlayerVocation(cid) == (id da voc) then ------aki configura a voc
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return true
end
if param == "on" then
if isPlayer(cid) == TRUE then
local pos = getPlayerPosition(cid)

local effectPositions = {
{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, z = pos.z},
{x = pos.x + 1, y = pos.y, 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}
}

k = math.random(#effectPositions)

doSendMagicEffect(effectPositions[k],4)
doSendMagicEffect(effectPositions[k],34)
end
say_events[getPlayerGUID(cid)] = addEvent(SayText1, time * 1000, cid)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"aura was been actived.")
elseif param == "off" then
stopEvent(say_events[getPlayerGUID(cid)])
say_events[getPlayerGUID(cid)] = nil
doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"aura was been desactived.")
end
return TRUE
end
end

Editado Março 15 por lordbug99

lukervisL
15 de março de 2012 às 21:30

PERFEITO!

teria como você fazer essa aura somente para tal ID vocation ?

Editado Março 15 por luakao