JH
pedido

Talk Action

Por jhowxd, 03 de ago. de 2012 em Scripts

15
1.7k
jhowxdJ
03 de agosto de 2012 às 23:05

Boa noite meus queridos, mais um pedido para vc's. Gostaria de duas talkaction acho que é simples ou não rsrsrsr

 

Gostaria da Talk action:

 

!afk / !noafk ( o player da !afk e fica subindo aquela mensagem em amarelo nele falando AFK sabe? E se ele da um !noafk saia o comando )

 

Uma outra assim quando o player morrer, aparecer no lugar onde ele morreu mensagem Morreu! sabe só uma vez em sima do corpo do player em vermelho.

LuckOakeL
03 de agosto de 2012 às 23:09

O comando de AFK:

 

Coloque isso no talkactions.xml:

<talkaction words="!afk" event="script" value="afk.lua"/>

 

E crie um arquivo afk.lua na pasta scripts e coloque isso dentro:

 

--[[

Talking Tp/signs/tiles for TFS 0.2+

70%shawak,30%Damadgerz

Idea by Damadgerz

]]--

local time = 1 -- 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),"Ocupado!", math.random(01,255))

end

say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 100, 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),"Ocupado!", math.random(01,255))

end

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

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"Now, your status is afk.")

elseif param == "off" then

stopEvent(say_events[getPlayerGUID(cid)])

say_events[getPlayerGUID(cid)] = nil

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"Now, your status is online.")

end

return TRUE

end

 

 

 

PS: O comando é assim = !afk on/off

 

Script da msg "Morreu!"

 

Em creaturescripts.xml:

<event type="death" name="MsgMorte" script="morreu.lua"/>

 

Crie um arquivo morreu.lua na pasta scripts e coloque isso dentro:

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

doSendAnimatedText(getCreaturePosition(cid), "Morreu!", 144)

return TRUE

end

 

 

 

PS: Não testei, se der deu, se não der avisa.

Editado Agosto 4 por LuckOake

jhowxdJ
03 de agosto de 2012 às 23:12

Blz vou testar assim que ver coloco aqui.

LuckOakeL
03 de agosto de 2012 às 23:18

Certo. Quaisquer erros, poste aqui. Não cheguei a testar o script, então, talvez eu possa ter cometido um errinho :)

Editado Agosto 3 por LuckOake

jhowxdJ
03 de agosto de 2012 às 23:43

Ae manolo funfo numa boa porem ele ta aparecendo os !afk muito rápido e lota a tela rsrsr queria um tempo sabe 2 segundos entre cada afk

LuckOakeL
03 de agosto de 2012 às 23:51

Rapidim, só corrigir uma coisa no script de afk. Coloquei sem querer um negócio que não era pra estar lá. Substitui seu script por esse:

 

 

--[[

Talking Tp/signs/tiles for TFS 0.2+

70%shawak,30%Damadgerz

Idea by Damadgerz

]]--

local time = 1 -- 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),"Ocupado!", math.random(01,255))

end

say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 100, 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),"Ocupado!", math.random(01,255))

end

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

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"Now, your status is afk.")

elseif param == "off" then

stopEvent(say_events[getPlayerGUID(cid)])

say_events[getPlayerGUID(cid)] = nil

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"Now, your status is online.")

end

return TRUE

end

 

 

 

E quanto à sua dúvida, só modificar nessa linha aqui:

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

Modifique o 100. Exemplos: 100 = AFK a cada 100 milésimos, 1000 = AFK a cada 1 segundo, 2000 = AFK a cada 2 segundos.

 

OBS: O script da msg "Morreu!" tá funfando certim? To com uma sensação de que cometi um erro nele.

Editado Agosto 3 por LuckOake

SkymagnumS
04 de agosto de 2012 às 00:31

Cometeu mesmo deveria usar onPrepareDeath não onDeath

LuckOakeL
04 de agosto de 2012 às 00:36

É, percebi. Xo arrumar.

 

@jhowxd

 

Substitui o script morreu.lua e coloca isso dentro:

 

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

doSendAnimatedText(getCreaturePosition(cid), "Morreu!", 144)

return TRUE

end

 

Editado Agosto 4 por LuckOake

jhowxdJ
04 de agosto de 2012 às 01:10

Kra o afk ta sussa mas o MOrreu não ta indo não

 

Ops não atualizei a pagina não vi rsrsr mas vou testar

Editado Agosto 4 por jhowxd

SkymagnumS
04 de agosto de 2012 às 01:14

acho que é porque você não registrou no login.lua

 

coloque no login.lua

 

registerCreatureEvent(cid, "MsgMorte")

LuckOakeL
04 de agosto de 2012 às 15:17

Certim, caso só meu script não funcione, faça o que o Skymagnum disse.

 

Dúvida Sanada.

Editado Agosto 4 por LuckOake

jhowxdJ
05 de agosto de 2012 às 16:30

Mesmo assim não funcionou amigo deu erro em que parte do login eu tenho que por no começo do código? no final?

NewtonnotwenN
05 de agosto de 2012 às 16:33

Antes do ultimo end.

 

registerCreatureEvent(cid, "MsgMorte")

return true

end

Editado Agosto 5 por Newtonnotwen

LuckOakeL
05 de agosto de 2012 às 17:24

Acho que sei porquê tá bugando. É o seguinte, eu atualizei a função do script mas esqueci de atualizar a tag.

 

Substitua isso:

 

<event type="death" name="MsgMorte" script="morreu.lua"/>

 

Por isso:

 

<event type="preparedeath" name="MsgMorte" script="morreu.lua"/>

 

OBS: Se seu server for da versão 9.0 pra cima, não vai funcionar mesmo. A função doSendAnimatedText não existe mais dessa versão em diante.

 

Caso seu server for 9.0 pra cima, substitui seu script por esse:

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
doCreatureSay(cid, "Morreu!", TALKTYPE_MONSTER)
return true
end

Editado Agosto 5 por LuckOake

jhowxdJ
06 de agosto de 2012 às 02:19

Luck era isso mesmo manolo obrigado pela ajuda problema resolvido alterei a tag

 

<event type="preparedeath" name="MsgMorte" script="morreu.lua"/>

 

 

E fico tudo certo podem fechar o tópico!

Vai um RESP+ para vc!!!