Serginix Posted September 6, 2011 Share Posted September 6, 2011 Esto es algo complicado Hola gente, estaba haciendo uno scripts, basicamente sencillos, con los players, y me doy cuenta, q varias personas amigos mios tienen codigos de colores, osea los #XXXXXX en su nombre, par aponerlo de X Color, hasta aca todo bn. Lo q susede esq estos Codigos de Colores, me Estorban, para siertos propositos, por lo tanto, pense en acer un script para removerlo, y coji mi mayor ejemplo de scripts, el Admin Panel de Lil_Toady, Para extraer la funcion q tiene de "Hide Color Color" Explore el script, y me encontre con esta funcion exportada (explore mucho mas pero realmente, es demasiado entonces quizas se me escapo algo...) : -- remove color coding from string function removeColorCoding( name ) return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or name end Junto con esta funcion, para removerlos de la Grid List (lo pongo como ejemplo) : function guiGridListSetItemPlayerName( gridlist, row, col, name ) local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes ) guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false ) guiGridListSetItemData( gridlist, row, col, name ) end Ok lo q yo hize (mmm... no me fue muy bien con los tets, y no funcionaba, simplemente no pasaba nada, no se que ago mal, y no fue lo unico con lo q intentente, pero esto fue basicamente la estructura) : function noColor () removeColorCoding (source) -- le puse ipairs a la funcion, tambien puse en los argumrntos "name" como en el ejemplo de la grid list, pero nada.... end addEventHandler("onPlayerJoin", getRootElement(), noColor) addEventHandler("onPlayerChangeNick", getRootElement(), noColor) addEventHandler("onResourceStart", getRootElement(), noColor) Muchas gracias al q se aya tomado la molestia de almenos leerlo u responderme... creo q es algo avanzado... Link to comment
Castillo Posted September 6, 2011 Share Posted September 6, 2011 function noColor () setPlayerName(source, removeColorCoding (getPlayerName(source))) -- le puse ipairs a la funcion, tambien puse en los argumrntos "name" como en el ejemplo de la grid list, pero nada.... end addEventHandler("onPlayerJoin", getRootElement(), noColor) addEventHandler("onPlayerChangeNick", getRootElement(), noColor) addEventHandler("onResourceStart", getRootElement(), noColor) Proba con eso. Link to comment
Serginix Posted September 6, 2011 Author Share Posted September 6, 2011 (edited) Justo era lo q estaba intentando, pero como yo le hize y como vos le hiciste, salie error en la consola de (al iniciar el resource) bad argument "setPlayerName", [Expected string a argument 2] y en el juego, como tengo un resource q diga el nuevo name del jugador cuando lo sambia, se Spameaba 1.000.000 de veces (debe de ser por el evento de "onPlayerChangeNick", y no funcionaba, sigo con los colores ) Espera, are unos test. Ok, este es el resultado: Cuando el Jugador se une, si lo remueve , Pero al cambiar de Nick, se spamea y no pasa nada, intentare meterlo en donde esta el resoruce q controla mis mensajes de chat al cambiarse el name... Edited September 6, 2011 by Guest Link to comment
Castillo Posted September 6, 2011 Share Posted September 6, 2011 -- remove color coding from string function removeColorCoding( name ) return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or name end function noColor () local oldNick = getPlayerName(source) setTimer(setPlayerName, 1000, 1, source, removeColorCoding (oldNick)) end addEventHandler("onPlayerJoin", getRootElement(), noColor) addEventHandler("onPlayerChangeNick", getRootElement(), noColor) onResourceStart no funciona asi, no puedes cambiar el nick de "getRootElement()", para eso necesitas un loop. Link to comment
Serginix Posted September 6, 2011 Author Share Posted September 6, 2011 Listo, va bien, de joya, diria yo, solo q el mensaje de chat, se repite 2 veces, pero no es nada ante el super spam de hace rato, supongo... (digamos q se vaya a poner el nombre en rojo con el #FF0000X): "X Ahora se llama (En Rojo)X" y a el segundo (por el setTimer tuyo), "X Ahora se Llama (normal)X" Pero ya creo saber porq es, (mi resource) EDIT: Ya encontre el error(el del spam), susede q cuando el jugador se pone otro Nick, el setPlayerName, empieza a interferir el evento "onPlayerChangeNick", y hace q el evento se repita muchas veces, dado a q el setPlayerName, tiene un setTimer, intente borrandolo, pero el sentido de borrar los #XXXXXX No funcionaria... si no, quitaria el outputChatBox, pero... el nombre se sigueria cambiando infinidad de veces... Link to comment
Serginix Posted September 6, 2011 Author Share Posted September 6, 2011 El Big Spam Continua, ya no se ni q ahcer intente varias cosas, pero nada... y mi resource de cambia e nick, seria: addEventHandler('onPlayerChangeNick', getRootElement(), function(oldNick, newNick) local name = getPlayerName(source) setTimer (setPlayerName, 1000, 1, source, removeColorCoding(name)) outputChatBox('#0fc0fcNICK: #ffffff' .. oldNick .. ' #0fc0fcis now known as #ffffff' .. newNick, getRootElement(), 255, 100, 100, true) end ) es basicamente lo mismo, exeptuando, el local: function noColor () local oldNick = getPlayerName(source) setTimer(setPlayerName, 1000, 1, source, removeColorCoding (oldNick)) end addEventHandler("onPlayerChangeNick", getRootElement(), noColor) Link to comment
Castillo Posted September 6, 2011 Share Posted September 6, 2011 Proba con esto: addEventHandler('onPlayerChangeNick', getRootElement(), function(oldNick, newNick) setTimer (setPlayerName, 1000, 1, source, removeColorCoding(newNick)) outputChatBox('#0fc0fcNICK: #ffffff' .. oldNick .. ' #0fc0fcis now known as #ffffff' .. newNick, getRootElement(), 255, 100, 100, true) end) Link to comment
Serginix Posted September 7, 2011 Author Share Posted September 7, 2011 Listo, va de 10, gracias men Link to comment
Recommended Posts