Ir para conteúdo
Entre para seguir isso  
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.

Editado por Ramza

Compartilhar este post


Link para o post
Flatronez    1
Flatronez

Movido.

 

aprovadog.png

Compartilhar este post


Link para o 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.

Compartilhar este post


Link para o post
Ramza    11
Ramza

Editei o script, tinha um errozinho :D

Agora tá funcionando hauhuauhau

Abração!

Editado por Ramza

Compartilhar este post


Link para o 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...

Compartilhar este post


Link para o 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 :)

Compartilhar este post


Link para o 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

Editado por dragonlorde

Compartilhar este post


Link para o post
Ramza    11
Ramza

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

Compartilhar este post


Link para o 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 *-*"

Compartilhar este post


Link para o 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] 

 

Compartilhar este post


Link para o 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?

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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!

Compartilhar este post


Link para o post
daniel14dan    0
daniel14dan

Boa mano mando muito bem no script!

parabéns

Compartilhar este post


Link para o 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

 

:*

Compartilhar este post


Link para o 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.

Compartilhar este post


Link para o post
Ramza    11
Ramza

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

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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:

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×