UserToDelete Posted October 6, 2015 Share Posted October 6, 2015 (edited) 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 October 8, 2015 by Guest Link to comment
Castillo Posted October 6, 2015 Share Posted October 6, 2015 · Hidden Hidden Tenes un pequeño error: addComandHandler Link to comment
UserToDelete Posted October 6, 2015 Author Share Posted October 6, 2015 Tenes un pequeño error:addComandHandler Corregido, gracias por ello Link to comment
Sasu Posted October 10, 2015 Share Posted October 10, 2015 · Hidden Hidden En vez de triggear el evento para cada jugador, por que no usas root? Link to comment
UserToDelete Posted October 10, 2015 Author Share Posted October 10, 2015 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
Sasu Posted October 10, 2015 Share Posted October 10, 2015 · Hidden 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
UserToDelete Posted October 10, 2015 Author Share Posted October 10, 2015 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
Sasu Posted October 10, 2015 Share Posted October 10, 2015 · Hidden Hidden Deshice el for-loop lo que ahorra CPU, y el resourceRoot se debe utilizar cuando no es necesario mandar ningun elemento ya que tambien ahorra CPU según dice la wiki. Link to comment
UserToDelete Posted October 10, 2015 Author Share Posted October 10, 2015 Deshice el for-loop lo que ahorra CPU, y el resourceRoot se debe utilizar cuando no es necesario mandar ningun elemento ya que tambien ahorra CPU según dice la wiki. Teoricamente resourceRoot manda a todos los elementos creados por el script, luego pruebo y edito este post Link to comment
Enargy, Posted October 10, 2015 Share Posted October 10, 2015 · Hidden Hidden for i=1, lines*20 do outputConsole(" ") end ¿Por que hiciste esa aritmetica? Link to comment
UserToDelete Posted October 10, 2015 Author Share Posted October 10, 2015 for i=1, lines*20 do outputConsole(" ") end ¿Por que hiciste esa aritmetica? A la console le puedes dar con el scroll para arriba, igual que el chatbox, siempre se puede editar para que aparezcan más como ultimo recurso Link to comment
aka Blue Posted October 31, 2015 Share Posted October 31, 2015 ¿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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now