Jump to content

[APORTE] ClearChat - Ultra optimizado


Recommended Posts

Bueno, tras estár pensando durante 15 minutos como optimizar un clear chat, se me ocurrió este script, no está testado,pero no veo errores de sintaxis, está publicado en la community si se desea

https://community.multitheftauto.com/index.php?p=resources&s=details&id=12169

Client side - cc_client.lua
addEvent("clearchat:start", true) 
addEventHandler("clearchat:start", root, 
    function () 
    local lines = getChatboxLayout()["chat_lines"] 
        for i=1, lines do 
        outputChatBox(" ") 
        end 
        for i=1, lines*20 do 
        outputConsole(" ") 
        end 
    end 
) 
addEventHandler("onClientResourceStart", resourceRoot, 
    function () 
    triggerServerEvent("clearchat:playerready", localPlayer) 
    end 
) 

Server side - cc_server.lua
dl = {} 
addCommandHandler("cc", 
    function (source) 
        if not isGuestAccount(getPlayerAccount(source)) then 
            if hasObjectPermissionTo(source, "command.mute") then 
                for k,v in ipairs(getElementsByType("player")) do 
                    if dl[v] then 
                    triggerClientEvent(v, "clearchat:start", v) 
                    end 
                end 
            end 
        end 
    end 
) 
addEvent("clearchat:playerready", true) 
addEventHandler("clearchat:playerready", root, 
    function () 
    dl[client] = true 
    end 
) 
addEventHandler("onPlayerQuit", root, 
    function () 
        if dl[source] then 
        dl[source] = nil 
        end 
    end 
) 

META - meta.xml
<meta> 
    <info author="venadHD" type="script" version="1.0.0" name="vd_clearchat"/> 
    <script src="cc_client.lua" type='client'/> 
    <script src="cc_server" /> 
</meta> 

Si hay algo mal hecho, avisen

Edited by Guest
Link to comment
En vez de triggear el evento para cada jugador, por que no usas root?

Imagina que hay 100 jugadores, por tanto

100 x 12 (lineas por defecto, creo) = 1200 lineas a generar

Y en console

100 x (10*20) = 200*100 = 20.000 lineas

Una carga para el servidor innecesaria cuando puedes repartir la carga entre los clientes

Ademas de ahorrar un buen cacho de ancho de banda

Link to comment
Hidden

Me refiero asi:

  
addCommandHandler("cc", 
    function (source) 
        if not isGuestAccount(getPlayerAccount(source)) then 
            if hasObjectPermissionTo(source, "command.mute") then 
                 triggerClientEvent("clearchat:start",  resourceRoot) 
            end 
        end 
    end 
) 

En el caso de tu version, imagina que tienes 100 jugadores, allí estas ejecutando 100 veces la funcion innecesariamente cuando puede usar el argumento predeterninado root.

Link to comment
Me refiero asi:
  
addCommandHandler("cc", 
    function (source) 
        if not isGuestAccount(getPlayerAccount(source)) then 
            if hasObjectPermissionTo(source, "command.mute") then 
                 triggerClientEvent("clearchat:start",  resourceRoot) 
            end 
        end 
    end 
) 

En el caso de tu version, imagina que tienes 100 jugadores, allí estas ejecutando 100 veces la funcion innecesariamente cuando puede usar el argumento predeterninado root.

en que se diferencia resourceRoot de root en este caso en triggerClientEvent?

Realmente lo estas ejecutando 100 veces igual, ya que es para cada jugador aunque pongas root

Link to comment
  • 3 weeks later...

¿Y no es lo mismo hacer esto? Lo he probado y hace lo mismo.

addCommandHandler ( "cc", 
    function () 
        for i=1,20 do 
            outputChatBox(" ") 
        end 
        for i=1,20 do 
            outputConsole(" ") 
        end 
    end 
) 

PD: O esto mismo

addCommandHandler ( "cc", 
    function () 
        for i=1,20 do 
            outputChatBox(" ") 
        outputConsole(" ") 
        end 
    end 
) 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...