Jump to content
Sign in to follow this  
Ramza

Removedor Automático de frags

Recommended Posts

Ramza    11
Ramza

Obs.: Não funciona nas versões novas, pois elas não tem a função getPlayerFrags(cid) :fuu:

Caso alguém consiga transformar aquela query em sql que tem em talkactions\scripts\frags.lua em uma função, eu edito aqui pra funfar nas versões mais novas de TFS :fist:

Abração!

Olá galera! Reparei que muitos estavam tendo problemas com frags, já que agora não se configura mais o tempo delas pelo config.lua, então a pedidos, resolvi criar um global event que remova todas as frags de 5 em 5 horas.

Você pode configurar o tempo que quiser, se quiser fazer isso de 1 em 1 hora, ou de 2 em 2 dias, aí é com você :)

O script é simples, porém bem útil (Y)

 

Vamos lá, faça uma cópia de qualquer arquivo dentro da pasta globalevents\scripts e renomeie para "removeFrags.lua"

Agora abra o arquivo, apague tudo que tiver dentro e coloque isso:

 

 [b]function onThink(interval, lastExecution, thinkInterval)[/b]
[b]   l[color=indigo]ocal players = getPlayersOnline()[/color][/b]
[b][color=indigo]   for _, pid in ipairs(players) do[/color][/b]
[b][color=darkslategray]doPlayerSetRedSkullTicks(pid, (getPlayerRedSkullTicks(pid) + getConfigInfo('timeToDecreaseFrags')) *  (- getPlayerFrags(pid)))[/color][/b]
[color=darkred][b]doCreatureSetSkullType(pid, 0)[/b][/color]
[b]   end[/b]
[b] [color=sienna]  doBroadcastMessage("All frags have been removed. Next remotion in [/color][color=red][color=sienna]5 [/color]hours[/color][color=sienna].")[/color][/b]
[b]   return true[/b]
[b]end[/b]

Para quem não conseguir, o dragonlorde deu uma ajuda! Use isso:

Obs.: Andei estudando LuaSQL e mudei a funçãozinha do dragonlorde, agora deve funcionar :)

 

[color=#000000][color=#007700]function [/color][color=#0000bb]onThink[/color][color=#007700]([/color][color=#0000bb]interval[/color][color=#007700])[/color]
[color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]executeQuery[/color][color=#007700]([/color][color=#dd0000]"DELETE * FROM `killers`;"[/color][color=#007700])[/color]
[color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]executeQuery[/color][color=#007700]([/color][color=#dd0000]"UPDATE `players` SET skull = 0, skulltime = 0;"[/color][color=#007700])[/color]
[color=#0000bb]doBroadcastMessage[/color][color=#007700]([/color][color=#dd0000]"All frags have been removed. Next remotion in 5 hours."[/color][color=#007700])[/color]
[color=#007700]   return [/color][color=#0000bb]true[/color]
[color=#0000bb]end  [/color][/color]

Agora vá em globalevents.xml e adicione isso:

 

    <globalevent name="removeFrags" interval="[color=red]18000[/color]" event="script" value="removeFrags.lua"/>

Pronto, agora é só rodar :)

 

Agora vou explicar o script:

 

Onde está em...

 

Vermelho: É o tempo de intervalo entre uma remoção e outra. 18000 são 5 horas pois 18000 ai está em segundos, e 18000 segundos = 5 horas (Y)

Caso queira mudar, já sabe como fazer né? Mas não se esqueça de mudar a mensagem também caso vá mudar o intervalo.

 

Roxo: É uma função pra pegar todos os players online pra mim, e fazer uma ação em cada um deles. Pra quem não entende muito bem, o "pid" ali é o ID do player na qual ela está checando.

 

Verde: É a função que é executada em todos os players.

 

Marrom: É a mensagem que é mandada após a remoção.

 

 

 

Bem, é isso, espero ter ajudado, não quero que isso seja apenas um script pra colocarem no OT, quero que seja também um método de aprendizagem para futuros scripts, e quem sabe alguém não pega o meu script e faz um ainda melhor? Abraços, e um bom desenvolvimento a vocês.

Edited by Ramza

Share this post


Link to post
Flatronez    1
Flatronez

Movido.

 

aprovadog.png

Share this post


Link to post
Mickfern    32
Mickfern

Aqui não deu amigo, no da errao, porém, não remove as frags, voce poderia me dizer se eu errei em algo ? Fiz do jeito do tuto.

Share this post


Link to post
Ramza    11
Ramza

Editei o script, tinha um errozinho :D

Agora tá funcionando hauhuauhau

Abração!

Edited by Ramza

Share this post


Link to post
dragonlorde    0
dragonlorde

Eu acho que com lua sql ficaria mais legalzinho vou postar aqui pra voce ver se voce me permite XD ja edito...

Share this post


Link to post
Ramza    11
Ramza
Eu acho que com lua sql ficaria mais legalzinho vou postar aqui pra voce ver se voce me permite XD ja edito...

Beleza, posta ae!

Eu não aprendi ainda sobre lua sql, mas procurarei aprender em breve :)

Share this post


Link to post
dragonlorde    0
dragonlorde

Assim ficaria um pouco mais simples e alias se voce quiser pode adicionar frases e tals mas a ideia é essa...

 

function onThink(interval)

db.executeQuery("UPDATE `players` SET skull = 0, skulltime = 0;")

return true

end

 

Isso vai remover as skulls....

Na database não tem tabela de frags dai num sei como funciona :S

Edited by dragonlorde

Share this post


Link to post
Ramza    11
Ramza

Ah, remover skull é fácil po, nem precisa disso tudo, com 1 linha de script eu removo ahuahuhaua

Share this post


Link to post
D u k e e H    0
D u k e e H

ramza, poderia fazer 1 desse que removesse só 1 frag por exemplo?

 

ficaria grato *-*"

Share this post


Link to post
Ramza    11
Ramza
ramza, poderia fazer 1 desse que removesse só 1 frag por exemplo?

 

ficaria grato *-*"

Claro, é só você substituir:

[/color][b][color=DarkSlateGray] doPlayerSetRedSkullTicks(pid, (getPlayerRedSkullTicks(pid) + getConfigInfo('timeToDecreaseFrags')) *  (- getPlayerFrags(pid))) [/color][/b][color=Black]

 

Por

 

[/color][/color][b][color=DarkSlateGray]doPlayerSetRedSkullTicks(pid, (getPlayerRedSkullTicks(pid) + getConfigInfo('timeToDecreaseFrags')) *  (- 1))[/color][/b][color=DarkSlateGray][color=Black] 

 

Share this post


Link to post
Notorious    1
Notorious

Nao entendi muito a utilidade disso

Se eu pegar a frag bem antes do intervalo ele vai remover minha skull então?

Share this post


Link to post
Ramza    11
Ramza
Nao entendi muito a utilidade disso

Se eu pegar a frag bem antes do intervalo ele vai remover minha skull então?

Como assim suricato?

Não entendi o que você tá perguntando :S

Share this post


Link to post
D u k e e H    0
D u k e e H

cara, valew script lindo *-*"

nenhum erro no tfs 0.3.6 aqui!

depois eu vejo se remove mesmo.

 

muito obrigado, e parabens ramza!

Share this post


Link to post
daniel14dan    0
daniel14dan

Boa mano mando muito bem no script!

parabéns

Share this post


Link to post
D u k e e H    0
D u k e e H

esperando solução para a função nos novos tfs ;x

 

:*

Share this post


Link to post
Mickfern    32
Mickfern

Ainda não deu o.O, para que versões é mesmo ? Acho que to tentando fazer em versão que nao funfa =/ é 1 server 8.1 ( distro SVN_War <<< algo assim ),servidor de war. Eu queria tirar as Reds dos players com acc's próprias, não consigo nem a pau ! Ja tentei tirar o skulltime, entre outras coisas não sei \o/ OMG.

Share this post


Link to post
Ramza    11
Ramza

Tem que ver se o server tem a função "getPlayerFrags"

Share this post


Link to post
dragonlorde    0
dragonlorde

Ramza....

No meu otro post a query aquela removia skull e não frags...

Acho que pra frag da pra usa essa query...

db.executeQuery("DELETE FROM `killers` WHERE `unjustified` = 1;")

Eu testei no query editor...

Isso deleta os registros de mortes injustificadas...

Depois tem a tabela player_killers não sei se deve mecher nela tambem...

O seu script ta muito bom cara xd

Share this post


Link to post
Ramza    11
Ramza
Ramza....

No meu otro post a query aquela removia skull e não frags...

Acho que pra frag da pra usa essa query...

db.executeQuery("DELETE FROM `killers` WHERE `unjustified` = 1;")

Eu testei no query editor...

Isso deleta os registros de mortes injustificadas...

Depois tem a tabela player_killers não sei se deve mecher nela tambem...

O seu script ta muito bom cara xd

Hm... será que funfa?

Se quiser testar ae, ponho créditos à você :D

Share this post


Link to post
dragonlorde    0
dragonlorde

function onThink(interval)
 db.executeQuery("DELETE FROM `killers` WHERE `unjustified` = 1;")
    db.executeQuery("UPDATE `players` SET skull = 0, skulltime = 0;")
       doBroadcastMessage("All frags have been removed. Next remotion in 5 hours.")
   return true
end

 

Eu testei so com a primeira query mas deve funciona com as 2 juntas...

Eu matei 1 player dai executo o global e dizia 0 frags....

Não precisa me dar creditos pelo script so por ajuda a reduzi :pirate:

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×