Ir para conteúdo
  • Cadastre-se

Normal ANTI MC - EVENTOS - GLOBALEVENTS


Posts Recomendados

Olá, tenho essa script que certamente serveria para mover jogadores com o mesmo IP de uma determinada area. Mas não entendo muito bem de script e gostaria que esse script funcionasse como uma globalevents, que no caso seria ativada em determinado horário específico. (obs: não tenho certeza se o script realiza a função perfeitamente, por isso queria ajuda para arrumar)

Servidor OTX2 8.60

 

local frompos,topos = {x = 25477, y = 25134, z = 7},{x = 25490, y = 25139, z = 7} -- pos canto superior esquerdo, pos canto inferior direito da sala de espera

local function removeMc()
local ips = {}
for a,b in pairs(getPlayersOnline()) do
if isInArea(getThingPos(b),frompos, topos) then
if isInArray(ips,getPlayerIp(b)) then
doTeleportThing(b,getTownTemplePosition(getPlayerTown(b)))
end
table.insert(ips,getPlayerIp(b))
end
end
end

 

Link para o post
Compartilhar em outros sites

removemc.lua

 

local hour = "00:00" --- altere para a hora que desejar
local frompos, topos = {x = 25477, y = 25134, z = 7},{x = 25490, y = 25139, z = 7} 

function onThink(interval, lastExecution)
if hour == tostring(os.date("%X")):sub(1, 5) then
    removeMc(frompos, topos)
end
return true
end

function removeMc(frompos, topos)
local ips = {}
for a,b in pairs(getPlayersOnline()) do
if isInArea(getThingPos(b),frompos, topos) then
if isInArray(ips,getPlayerIp(b)) then
doTeleportThing(b,getTownTemplePosition(getPlayerTown(b)))
end
table.insert(ips,getPlayerIp(b))
end
end
end

 

 

 <globalevent name="RemoveMc" interval="60000" event="script" value="removemc.lua"/>

Contato:

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...
Em 15/08/2017 em 22:32, Dwarfer disse:

removemc.lua

 


local hour = "00:00" --- altere para a hora que desejar
local frompos, topos = {x = 25477, y = 25134, z = 7},{x = 25490, y = 25139, z = 7} 

function onThink(interval, lastExecution)
if hour == tostring(os.date("%X")):sub(1, 5) then
    removeMc(frompos, topos)
end
return true
end

function removeMc(frompos, topos)
local ips = {}
for a,b in pairs(getPlayersOnline()) do
if isInArea(getThingPos(b),frompos, topos) then
if isInArray(ips,getPlayerIp(b)) then
doTeleportThing(b,getTownTemplePosition(getPlayerTown(b)))
end
table.insert(ips,getPlayerIp(b))
end
end
end

 

 

 <globalevent name="RemoveMc" interval="60000" event="script" value="removemc.lua"/>

Opa amigo pode me ajudar, esse script ta 100% funcionando mas eu quero um sem hora determinada pra ser ativado, quero que fique sempre ativo, pois quero por na sala de quest e no evento castle do meu servidor. Outra coisa, ali a parte de frompos/topos como faz pra contar também uma area subterranea ao mesmo tempo, ex: se tiver 1 player no terreo com mesmo ip de outro player em uma montanha ou no subsolo ele joga para o templo. 

 

Grato desde já 

Link para o post
Compartilhar em outros sites
Em 15/08/2017 em 22:32, Dwarfer disse:

removemc.lua

 


local hour = "00:00" --- altere para a hora que desejar
local frompos, topos = {x = 25477, y = 25134, z = 7},{x = 25490, y = 25139, z = 7} 

function onThink(interval, lastExecution)
if hour == tostring(os.date("%X")):sub(1, 5) then
    removeMc(frompos, topos)
end
return true
end

function removeMc(frompos, topos)
local ips = {}
for a,b in pairs(getPlayersOnline()) do
if isInArea(getThingPos(b),frompos, topos) then
if isInArray(ips,getPlayerIp(b)) then
doTeleportThing(b,getTownTemplePosition(getPlayerTown(b)))
end
table.insert(ips,getPlayerIp(b))
end
end
end

 

 

 <globalevent name="RemoveMc" interval="60000" event="script" value="removemc.lua"/>

Gostei!

dx6rIyi.png

Link para o post
Compartilhar em outros sites
9 horas atrás, Thayguroficial disse:

Opa amigo pode me ajudar, esse script ta 100% funcionando mas eu quero um sem hora determinada pra ser ativado, quero que fique sempre ativo, pois quero por na sala de quest e no evento castle do meu servidor. Outra coisa, ali a parte de frompos/topos como faz pra contar também uma area subterranea ao mesmo tempo, ex: se tiver 1 player no terreo com mesmo ip de outro player em uma montanha ou no subsolo ele joga para o templo. 

 

Grato desde já 

 

Fiz um mais completo aqui. Nesse caso, vai verificar todos os andares configurados e vai deixar somente um player de cada ip na área, ou seja, removerá todos os MC's. Além disso, é possível fazer a verificação para mais de uma área. Você pode escolher se vai kickar e/ou teleportar o player para o templo.

 

Em globalevents/scripts, crie um arquivo:

 

removeMC.lua

 

Spoiler

local t = {kick = true, temple = true, -- kick = false - não kicka o player, temple = false não teleporta o player para o templo
areas = {
[1] = {{x = 1, y = 1, z = 7}, {x = 1, y = 1, z = 5}},
[2] = {{x = 1, y = 1, z = 7}, {x = 1, y = 1, z = 7}},
[3] = {{x = 1, y = 1, z = 6}, {x = 1, y = 1, z = 8}}
}}

function onThink(interval, lastExecution)
local total = 0 
for _, v in pairs(t.areas) do
    total = total + removeAllMcInArea(v[1], v[2], t.kick, t.temple)
end
print("Multi Clients removed: " .. total)
return true
end

function removeAllMcInArea(fromPosition, toPosition, kick, toTemple) -- by dwarfer
    local players, check, freq, remove, removeall = {}, {}, {}, {}, {}
    for _, pid in ipairs(getPlayersOnline()) do
        local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}
        local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z}
        local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z)
        for index = 0, math.abs(toPosition.z - fromPosition.z) do
            f.z = min + index
            t.z = min + index
            if isInRange(getPlayerPosition(pid), f, t) then
                table.insert(players, pid)
            end
        end    
    end
    if #players > 0 then
        for _, player in pairs(players) do
            table.insert(check, getPlayerIp(player))
        end
    end
    for _, v in pairs(check) do
        freq[v] = (freq[v] or 0) + 1
    end
    for ip, ip_freq in pairs(freq) do 
        if ip_freq > 1 then
           local text = ""
            local mc = getPlayersByIp(ip)
           for i = 1, #mc do
                if isInArray(players, mc[i]) and getPlayerAccess(mc[i]) < 3 then
                    text = text .. "" .. mc[i] .. ","
                end
            end
            remove[ip] = text
        end
    end
    for ip, players in pairs(remove) do
        ret = string.explode(players, ",")
        for i = 1, (#ret-2) do
            removeall[#removeall + 1] = ret[i]
        end
    end
    for _, tid in pairs(removeall) do
        if kick then
            if toTemple == false then
                doRemoveCreature(tid)
            else
                doTeleportThing(tid, getTownTemplePosition(getPlayerTown(tid)))
                doRemoveCreature(tid)
            end
        else
            doTeleportThing(tid, getTownTemplePosition(getPlayerTown(tid)))
        end
    end
    return #removeall
end

 

 

Em globalevents.xml, adicione a tag: <globalevent name="RemoveAllMc" interval="30000" event="script" value="removeMC.lua"/>

 

Edite o intervalo para o desejo, coloquei como exemplo 30 segundos.

 

 

 

Editado por Dwarfer (veja o histórico de edições)

Contato:

 

Link para o post
Compartilhar em outros sites
56 minutos atrás, Dwarfer disse:

 

Fiz um mais completo aqui. Nesse caso, vai verificar todos os andares configurados e vai deixar somente um player de cada ip na área, ou seja, removerá todos os MC's. Além disso, é possível fazer a verificação para mais de uma área. Você pode escolher se vai kickar e/ou teleportar o player para o templo.

 

Em globalevents/scripts, crie um arquivo:

 

removeMC.lua

 

  Ocultar conteúdo


local t = {kick = true, temple = true, -- kick = false - não kicka o player, temple = false não teleporta o player para o templo
areas = {
[1] = {{x = 1, y = 1, z = 7}, {x = 1, y = 1, z = 5}},
[2] = {{x = 1, y = 1, z = 7}, {x = 1, y = 1, z = 7}},
[3] = {{x = 1, y = 1, z = 6}, {x = 1, y = 1, z = 8}}
}}

function onThink(interval, lastExecution)
local total = 0 
for _, v in pairs(t.areas) do
    total = total + removeAllMcInArea(v[1], v[2], t.kick, t.temple)
end
print("Multi Clients removed: " .. total)
return true
end

function removeAllMcInArea(fromPosition, toPosition, kick, toTemple) -- by dwarfer
    local players, check, freq, remove, removeall = {}, {}, {}, {}, {}
    for _, pid in ipairs(getPlayersOnline()) do
        local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}
        local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z}
        local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z)
        for index = 0, math.abs(toPosition.z - fromPosition.z) do
            f.z = min + index
            t.z = min + index
            if isInRange(getPlayerPosition(pid), f, t) then
                table.insert(players, pid)
            end
        end    
    end
    if #players > 0 then
        for _, player in pairs(players) do
            table.insert(check, getPlayerIp(player))
        end
    end
    for _, v in pairs(check) do
        freq[v] = (freq[v] or 0) + 1
    end
    for ip, ip_freq in pairs(freq) do 
        if ip_freq > 1 then
           local text = ""
            local mc = getPlayersByIp(ip)
           for i = 1, #mc do
                if isInArray(players, mc[i]) and getPlayerAccess(mc[i]) < 3 then
                    text = text .. "" .. mc[i] .. ","
                end
            end
            remove[ip] = text
        end
    end
    for ip, players in pairs(remove) do
        ret = string.explode(players, ",")
        for i = 1, (#ret-2) do
            removeall[#removeall + 1] = ret[i]
        end
    end
    for _, tid in pairs(removeall) do
        if kick then
            if toTemple == false then
                doRemoveCreature(tid)
            else
                doTeleportThing(tid, getTownTemplePosition(getPlayerTown(tid)))
                doRemoveCreature(tid)
            end
        else
            doTeleportThing(tid, getTownTemplePosition(getPlayerTown(tid)))
        end
    end
    return #removeall
end

 

 

Em globalevents.xml, adicione a tag: <globalevent name="RemoveAllMc" interval="30000" event="script" value="removeMC.lua"/>

 

Edite o intervalo para o desejo, coloquei como exemplo 30 segundos.

 

 

 

 

Não funcionou aqui, eu coloque a area certinho mas não leva pro templo e também não kicka. Não deu nenhum erro na distro, só aparece Multi Clients removed: 0 que é normal

Link para o post
Compartilhar em outros sites
Em 05/09/2017 em 19:28, Dwarfer disse:

Se não tiver acesso maior que 3, vai funcionar

Enviado de meu GT-S7582L usando Tapatalk
 

Desculpa a demora pra responder, não chegou notificação da resposta. Cara muito obrigado, funcionou perfeitamente, eu estava testando com o adm :grin:

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo