Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Estou refazendo o sistema de clean, mas ta usando muita CPU (100% de um core).

function onSay(cid, words, param, channel)
    local pos = {}
    local fromPos, toPos, toFloor = 800, 1200, 15
    for x = fromPos, toPos do
        for y = fromPos, toPos do
            for z = 0, toFloor do
                local coord = {x = x, y = y, z = z, stackpos = 0}
                if getTileThingByPos(coord).itemid ~= 0 and not getTileInfo(coord).house then
                    table.insert(pos, coord)
                end
            end
        end
    end

    local delay = 0.0001
    local _delay, i = delay, 1
    while i <= #pos do
        addEvent(doCleanTile, delay, pos[i], false)
        i = i + 1
        delay = delay + _delay
    end

    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Game map cleaned.')
    return true
end

Num mapa pequeno não tem problema, mas num mapa grande tem chances de travar o pc...

Alguém tem alguma sugestão para diminuir o uso de CPU?

Editado por fireelement (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Não da pra dividir em partes? Cria uma ou duas funções, cada uma dando save em xx tabela, e a outra em xxx tabela.

 

Compreende?


 

Contato: beeki@ resto vocês sabem, eu acho.

Link para o post
Compartilhar em outros sites

Não da pra dividir em partes? Cria uma ou duas funções, cada uma dando save em xx tabela, e a outra em xxx tabela.

 

Compreende?

O problema não ta no doCleanTile, e sim no table.insert, pois insere muitos valores ao mesmo tempo.

Queria tentar colocar um addEvent no table.insert também, mas não consegui fazer isso :mad:

Link para o post
Compartilhar em outros sites

não usa o table.insert.

 

function onSay(cid, words, param, channel)
    local fromPos, toPos, toFloor = 800, 1200, 15
    for x = fromPos, toPos do
        for y = fromPos, toPos do
            for z = 0, toFloor do
                local coord = {x = x, y = y, z = z, stackpos = 0}
                if getTileThingByPos(coord).itemid ~= 0 and not getTileInfo(coord).house then
					addEvent(doCleanTile, 1, coord, false)
                end
            end
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Game map cleaned.')
    return true
end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

restringe mais a posição, retira o addEvent.
 

function onSay(cid, words, param, channel)
local fromPos, toPos, toFloor = 800, 1200, 10
for x = fromPos, toPos do
for y = fromPos, toPos do
for z = 4, toFloor do
local coord = {x = x, y = y, z = z, stackpos = 0}
if getTileThingByPos(coord).itemid ~= 0 and not getTileInfo(coord).house then
                    doCleanTile(coord, false)
end
end
end
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Game map cleaned.')
return true
end

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo