XodiaCompany Posted March 13, 2014 Share Posted March 13, 2014 como puedo unir estos dos scripts. Dejenme explicarles un poco lo que quiero conseguir con este script de globalchat. resulta que me descarge el exp_system de castillo para poner niveles en mi juego de dayz mta entonces con ayuda de amigos aqui en el foro pude hacer que funcionara, scripteando un poco consegui crear el sistema casi completo. el sistema genera experiencia matando zombies y cambia de nivel al llegar a un determinado numero de experiencia necesario ahora mi gran duda es la siguiente. como podria editar el globalchat para que cuando yo hable por la X aparesca mi nivel mas mi nombre y lo que voy a decir es decir asi. ejemplo- [Global][lvl1][Xodia]: Hola como estas ! encontre el script que me da el nivel cuando hablo por T pero no quiero que eso pase cuando hablo por T quisiera pornerlo en el global chat este es el script: function rangedChat ( message, messageType ) local r, g, b = getPlayerNametagColor ( source ) local playerName = getPlayerName ( source ) local lvl = getElementData(source, "level") if ( messageType == 0 ) then -- If it's normal chat (i.e. not PM or team) outputChatBox ( "[LVL "..lvl.."] ".. playerName ..": #ffffff".. message, root, r, g, b, true ) end cancelEvent ( ) end addEventHandler ( "onPlayerChat", root, rangedChat ) Con este script creando un resource nuevo. cuando hablo por T me sale el texto que escribi en local y luego se repite el mensaje con el [lvl1] pero salen dos mensajes cada vez q escribo como podria anexar solo el [lvl1] por ejemplo al globalchat y q balla cambiando a el igual que mi nivel es decir si soy nivel 5 pues en el chat global sale el [lvl5] este es el script de globalchat q uso el comun y corriente. Chat_Client GlobalChatKey = "X" addEventHandler( "onClientResourceStart", getResourceRootElement ( ), function ( ) bindKey ( GlobalChatKey, "down", "chatbox", "globalchat" ) outputChatBox ( "Presiona " .. string.upper ( GlobalChatKey ) .. " para usar el chat global." , 255, 255, 255, true ) end ) Chat_server colorCodesDefault = { } colorCodesDefault.colorcode1 = "#0D7474" colorCodesDefault.colorcode3 = "#0D7474" colorCodesDefault.colorcode2 = "#0D7474" colorCodes = { } colorCodes.colorcode1 = get ( "colorcode1" ) or colorCodesDefault.colorcode1 colorCodes.colorcode2 = get ( "colorcode2" ) or colorCodesDefault.colorcode2 colorCodes.colorcode3 = get ( "colorcode3" ) or colorCodesDefault.colorcode3 --Check color code on start for i, v in pairs ( colorCodes ) do if not getColorFromString ( v ) then colorCodes[i] = colorCodesDefault[i] --if the admin fails to enter a valid hex color code outputChatBox ( "Bad " .. i .. " specified at GlobalChat addon (format: #FFFFFF)", root, 255, 0, 0, false) outputDebugString ( "Bad " .. i .. " specified at GlobalChat addon (format: #FFFFFF)", 2 ) end end outputLimit = 128 --character limit for chatbox outputs (do not change this) messagePrefix = get ( "prefix" ) or "#0D7474[MUNDIAL]" --prefix for the outputs onlyLatinCharacters = get ( "latinchars" ) == "true" and true or false timeBetweenMessages = tonumber ( get ( "messagedelay" ) ) or 1000 --time to wait between chat messages playerTickTable = { } --create a table with tick counts of the most recent chat message --The message output function playeGlobalChat ( playersource, cmd, ... ) if cmd == "globalchat" then --Check whether the player is muted first if isPlayerMuted ( playersource ) then outputChatBox ("You are muted!", playersource, 255, 128, 22, true) outputChatBox ( "[LVL "..lvl.."] ".. playerName ..": #ffffff".. message, root, r, g, b, true ) return end local msg = table.concat ( {...} , " " ) --concat the arguments from table to a string seperated by spaces local msg = string.gsub ( msg, '#%x%x%x%x%x%x', '' ) --remove color-codes --Anti-spam checks local onlyLettersMsg = string.gsub ( msg , "%A", "" ) --extract letters only if onlyLettersMsg == string.upper ( onlyLettersMsg ) and #onlyLettersMsg > 6 then --check if there are more than 6 uppercase letters without any lowercase letters outputChatBox ( "Sem Caps Lock!", playersource, 255, 0, 0 ) return end if string.find ( msg, "http://" ) then --disallow links outputChatBox ( "Do not spam the chat with links. Please use a private message instead!", playersource, 255, 0, 0 ) return end if onlyLatinCharacters then local noSpacesMsg = string.gsub ( msg, " ", "" ) local onlySpecCharMsg = string.gsub( noSpacesMsg, "[%a%d]", "") --extract special chars only if #onlySpecCharMsg > 10 then --check if there are more than 10 non-latin characters used (including russian, chinese, etc. characters) outputChatBox ( "Do not spam the chat with special (language) characters!", playersource, 255, 0, 0 ) return end end local var, spacesCount = string.gsub( msg, " ", "") --get the count of spaces if ( #msg / spacesCount ) > 20 and #msg > 10 then --check if there is at least one space per 20 or less characters outputChatBox ( "Do not spam the chat with long words!", playersource, 255, 0, 0 ) return end if playerTickTable[playersource] then --check if a table entry for the player exists local tick = getTickCount ( ) --get the current tick count in ms local timePassed = tick - playerTickTable[playersource] --calculate the time that passed between two messages if timePassed <= timeBetweenMessages then outputChatBox ( "Please refrain from chat spam!", playersource, 255, 0, 0 ) return end else playerTickTable[playersource] = getTickCount ( ) end --End of anti-spam checks --Chat logging outputServerLog ( messagePrefix .. getPlayerName ( playersource ) .. " : " .. msg ) local message = messagePrefix .. colorCodes.colorcode2 .. string.gsub ( ( getPlayerName ( playersource ) .. " : " ), '#%x%x%x%x%x%x', '' ) .. colorCodes.colorcode3 .. msg --precreate the message string local message = string.sub ( message, 1, outputLimit ) --since the chatbox won't display messages with more than 128 characters we just drop the ones at the end local r, g, b = getColorFromString ( colorCodes.colorcode1 ) outputChatBox ( message, root, r, g, b, true ) playerTickTable[playersource] = getTickCount ( ) end end addCommandHandler ( "globalchat", playeGlobalChat ) --Admin panel resource settings checks addEventHandler ( "onSettingChange", root, function ( setting, oldValue, newValue ) local setting = gettok ( setting, 2, string.byte ( "." ) ) if setting == "colorcode1" or setting == "colorcode2" or setting == "colorcode3" then if getColorFromString ( fromJSON( newValue ) ) then --if the admin fails to enter a valid hex color code colorCodes[setting] = fromJSON( newValue ) else colorCodes[setting] = colorCodesDefault[setting] outputChatBox ( "Bad " .. setting .. " specified at GlobalChat addon (format: #FFFFFF)", root, 255, 0, 0, false) outputDebugString ( "Bad " .. setting .. " specified at GlobalChat addon (format: #FFFFFF)", 2 ) end end if setting == "messagedelay" then --update message delay when changed if tonumber ( fromJSON( newValue ) ) then timeBetweenMessages = tonumber ( fromJSON( newValue ) ) or 1000 --maximum securtiy is usually best end end if setting == "prefix" then --update message prefix when changed if fromJSON( newValue ) then messagePrefix = fromJSON ( newValue ) or "#0D7474[MUNDIAL]" --maximum securtiy is usually best end end if setting == "latinchars" then --update onlyLatinCharacters setting when changed onlyLatinCharacters = fromJSON ( newValue ) == "true" and true or false end end ) addEventHandler ( "onPlayerQuit", root, function ( ) playerTickTable[source] = nil --remove a leaving player from our cached table end ) alguien podria ayudarme porfavor espero que si gracias de antemano Link to comment
Jacobob14 Posted March 13, 2014 Share Posted March 13, 2014 Es necesario que agreges esta linea local lvl = getElementData(source, "level") y trata de no hacer mas post sobre el mismo tema Link to comment
XodiaCompany Posted March 13, 2014 Author Share Posted March 13, 2014 okok lo siento D: disculpa. amm donde agrego esa linea esactamente D: en mi global chat en que linea podria poner ese codigo? Link to comment
AlvareZ_ Posted March 14, 2014 Share Posted March 14, 2014 Debes usar esto para obtener su nivel, Como en tu primer script: local lvl = getElementData(source, "level") Luego agregar, Después de el [GLOBAL] esto [LVL "..lvl.."], lo que seria "..lvl.." devuelve su nivel, Quedaría algo así: "[GLOBAL][LVL "..lvl.."] ".. playerName ..": Te dejo para que trates de hacerlo y así puedas aprender mas, Suerte! Link to comment
XodiaCompany Posted March 14, 2014 Author Share Posted March 14, 2014 He intentado lo siguiente addAddonInfo ("GlobalChat","") function playeGlobalChat(playersource,cmd,...) if cmd == "globalchat" then local msg = table.concat({...}, " ") local lvl = getElementData(source, "level") outputChatBox("[GLOBAL][LVL "..lvl.."] ".. playerName ..":"..string.gsub((getPlayerName(playersource).." : "..msg), '#%x%x%x%x%x%x', ''),nearbyPlayer, 60,200,40,true ) end end pero no me funciona este es otro script de globalchat diferente al mio. pero aun asi hice lo que dijiste pero cuando retesteo el addon me inicia normal al momento de escribir un mensaje no aparece nada. este es el script de globalchat virgen me gusta ria que me dijeras que hago mal o como lo debo poner sigo confundido .. script de globalchat virgen (sin edicion ) --Functions function addAddonInfo (name,description) return call (getResourceFromName("DayZ"),"addAddonInfo",name,description) end -------------------------------------------------------------------- --Your Code addAddonInfo ("GlobalChat","") function playeGlobalChat(playersource,cmd,...) if cmd == "globalchat" then local msg = table.concat({...}, " ") outputChatBox("[GLOBAL]"..string.gsub((getPlayerName(playersource).." : "..msg), '#%x%x%x%x%x%x', ''),nearbyPlayer, 60,200,40,true ) end end addCommandHandler( "globalchat", playeGlobalChat ) Link to comment
MTA Team 0xCiBeR Posted March 14, 2014 MTA Team Share Posted March 14, 2014 --Functions function addAddonInfo (name,description) return call (getResourceFromName("DayZ"),"addAddonInfo",name,description) end -------------------------------------------------------------------- --Your Code addAddonInfo ("GlobalChat","") function playeGlobalChat(playersource,cmd,...) if cmd == "globalchat" then local msg = table.concat({...}, " ") local lvl = getElementData(playersource,"level") outputChatBox("[GLOBAL] [LVL"..tostring(lvl).."] "..string.gsub((getPlayerName(playersource).." : "..msg), '#%x%x%x%x%x%x', ''),nearbyPlayer, 60,200,40,true ) end end addCommandHandler( "globalchat", playeGlobalChat ) Link to comment
XodiaCompany Posted March 14, 2014 Author Share Posted March 14, 2014 Ho amigo muchas gracias :D es exelente es lo que queria muchas gracias :D ya solo me falta el de las placas que cuando pase de nivel ponga una placa diferente me pasaron un script para eso. junto a mi gui de experiencia y nivel lo que queria conseguir era lo siguiente te pasare una copia de lo que escribi "Hay alguna manera deque cuando pase a un nivel espesifico este muestre una imagen estatica es decir. quiero que cuando sea nivel uno me aparesca una imagen que paresca una placa como de soldado algo asi que cuando pase a level 2 me aparesca otra imagen sustituyendo a la primera y asi. ahy alguna manera de hacer esto??" entonces un amigo de aca me paso este comando dxDrawImage( 678, 103, 790, 110, "imagenes/"..level..".png") me dijo que agregara una carpeta dentro del script de nombre imagenes y que adentro pusiera una imagen de nombre 1 y la siguiente 2 etc y que en meta coloque la siguiente imagen es decir que agregara la imagen en meta . hice todo esto pero al momento de ejecutar el archivo este dice que no encuentra el archivo imagen 1.png y ya yo la puse en la carpeta imagen con fotmato png sabrias cuales el problema porfas ayudame te lo suplico D: D: ya con esto podria publicar mi direccion ip en el foro con toda la metodologia del dayz creada con cosas no vistas en la mayoria de los servers sacame de esta o otra persona que lo sepa. este es el script que me muestra mi nivel exp etc. addEventHandler("onClientRender", root, function() local lvl = (getElementData(getLocalPlayer(),"level")) local ex = (getElementData(getLocalPlayer(),"exp")) local text = "" local UP = tonumber ( getElementData ( localPlayer, "level" ) ) or 0 if ( UP == 1 ) then text = " /60" elseif ( UP == 2 ) then function showClientImage() guiCreateStaticImage( 0.68, 0, 0.32, 0.08333, "logo1.png", true, nil) end addEventHandler( "onClientResourceStart", getResourceRootElement( getThisResource() ), showClientImage ) text = " /110" elseif ( UP == 3 ) then text = " /160" elseif ( UP == 4 ) then text = " /250" elseif ( UP == 5 ) then text = " /500" elseif ( UP == 6 ) then text = " /1000" elseif ( UP == 7 ) then text = " /1250" elseif ( UP == 8 ) then text = " /1500" elseif ( UP == 9 ) then text = " /1820" elseif ( UP == 10 ) then text = " /2000" elseif ( UP == 11 ) then text = " /2800" elseif ( UP == 12 ) then text = " /3000" elseif ( UP == 13 ) then text = " /5000" elseif ( UP == 14 ) then text = " /7000" elseif ( UP == 15 ) then text = " /9000" elseif ( UP == 16 ) then text = " /11000" elseif ( UP == 17 ) then text = " /15000" elseif ( UP == 18 ) then text = " /19000" elseif ( UP == 19 ) then text = " /21000" elseif ( UP == 20 ) then text = " /25000" elseif ( UP == 21 ) then text = " /30000" elseif ( UP == 22 ) then text = " /35000" elseif ( UP == 23 ) then text = " /40000" elseif ( UP == 24 ) then text = " /45000" elseif ( UP == 25 ) then text = " /60000" elseif ( UP == 26 ) then text = " /65000" elseif ( UP == 27 ) then text = " /70000" elseif ( UP == 28 ) then text = " /85000" elseif ( UP == 29 ) then text = " /90000" elseif ( UP == 30 ) then text = " /95000" elseif ( UP == 31 ) then text = " /100000" elseif ( UP == 32 ) then text = " /110000" elseif ( UP == 33 ) then text = " /120000" elseif ( UP == 34 ) then text = " /130000" elseif ( UP == 35 ) then text = " /140000" elseif ( UP == 36 ) then text = " /150000" elseif ( UP == 37 ) then text = " /160000" elseif ( UP == 38 ) then text = " /170000" elseif ( UP == 39 ) then text = " /180000" elseif ( UP == 40 ) then text = " /190000" elseif ( UP == 41 ) then text = " /200000" elseif ( UP == 42 ) then text = " /210000" elseif ( UP == 43 ) then text = " /220000" elseif ( UP == 44 ) then text = " /230000" elseif ( UP == 45 ) then text = " /240000" elseif ( UP == 46 ) then text = " /250000" elseif ( UP == 47 ) then text = " /260000" elseif ( UP == 48 ) then text = " /270000" elseif ( UP == 49 ) then text = " /280000" elseif ( UP == 50 ) then text = " /290000" elseif ( UP == 51 ) then text = " /300000" end dxDrawText("Level", 1100, 350, 659, 66, tocolor(255, 255, 255, 255), 1.20, "sans", "left", "top", false, false, true, false, false) dxDrawText("Infectados", 1100, 300, 659, 66, tocolor(255, 255, 255, 255), 1.20, "sans", "left", "top", false, false, true, false, false) dxDrawText(""..lvl, 1110, 380, 659, 110, tocolor(255, 255, 255, 255), 2.50, "default", "left", "top", false, false, true, false, false) dxDrawText("Exp:", 1190, 370, 730, 64, tocolor(255, 255, 255, 255), 1.20, "sans", "left", "top", false, false, true, false, false) dxDrawText(""..ex..""..text.."", 1200, 390, 790, 110, tocolor(255, 255, 255, 255), 0.5, "bankgothic", "left", "top", false, false, true, false, false) dxDrawImage( 678, 103, 790, 110, "imagenes/"(..lvl..)".png")--aqui esta el comando dx end ) addEventHandler ( "onClientResourceStart", resourceRoot, dxsetText ) asi lo agrege y asi esta en el meta "TimmY14" version="1.0.0" type="script" name="drawyourlevel" description="esto te dira tu level en un texto bajo el hud" /> y de antemano disculpen q los moleste tanto es que de verdad los necesito siempre es bueno ser guiado por expertos asi aprendo el lenguaje mas rapido muchas gracias de antemano por su ayuda Link to comment
MTA Team 0xCiBeR Posted March 14, 2014 MTA Team Share Posted March 14, 2014 Tu primer error básico es este: guiCreateStaticImage( 0.68, 0, 0.32, 0.08333, "logo1.png", true, nil) Eso lo estas ejecutando cada Frame. Es completamente innecesario, solo crea la imagen una vez y ya, no hay necesidad de hacerlo cada frame. Además debes sacar tu función de tu otro evento. Lo segundo, esto: dxDrawImage( 678, 103, 790, 110, "imagenes/"(..lvl..)".png") debería ser esto: dxDrawImage( 678, 103, 790, 110, "imagenes/"..lvl..".png") Te quedaría así: addEventHandler("onClientRender", root, function() local lvl = getElementData(getLocalPlayer(),"level") local ex = getElementData(getLocalPlayer(),"exp") local text = "" local UP = tonumber ( getElementData ( localPlayer, "level" ) ) or 0 if ( UP == 1 ) then text = " /60" elseif ( UP == 2 ) then addEventHandler( "onClientResourceStart", getResourceRootElement( getThisResource() ), showClientImage ) text = " /110" elseif ( UP == 3 ) then text = " /160" elseif ( UP == 4 ) then text = " /250" elseif ( UP == 5 ) then text = " /500" elseif ( UP == 6 ) then text = " /1000" elseif ( UP == 7 ) then text = " /1250" elseif ( UP == 8 ) then text = " /1500" elseif ( UP == 9 ) then text = " /1820" elseif ( UP == 10 ) then text = " /2000" elseif ( UP == 11 ) then text = " /2800" elseif ( UP == 12 ) then text = " /3000" elseif ( UP == 13 ) then text = " /5000" elseif ( UP == 14 ) then text = " /7000" elseif ( UP == 15 ) then text = " /9000" elseif ( UP == 16 ) then text = " /11000" elseif ( UP == 17 ) then text = " /15000" elseif ( UP == 18 ) then text = " /19000" elseif ( UP == 19 ) then text = " /21000" elseif ( UP == 20 ) then text = " /25000" elseif ( UP == 21 ) then text = " /30000" elseif ( UP == 22 ) then text = " /35000" elseif ( UP == 23 ) then text = " /40000" elseif ( UP == 24 ) then text = " /45000" elseif ( UP == 25 ) then text = " /60000" elseif ( UP == 26 ) then text = " /65000" elseif ( UP == 27 ) then text = " /70000" elseif ( UP == 28 ) then text = " /85000" elseif ( UP == 29 ) then text = " /90000" elseif ( UP == 30 ) then text = " /95000" elseif ( UP == 31 ) then text = " /100000" elseif ( UP == 32 ) then text = " /110000" elseif ( UP == 33 ) then text = " /120000" elseif ( UP == 34 ) then text = " /130000" elseif ( UP == 35 ) then text = " /140000" elseif ( UP == 36 ) then text = " /150000" elseif ( UP == 37 ) then text = " /160000" elseif ( UP == 38 ) then text = " /170000" elseif ( UP == 39 ) then text = " /180000" elseif ( UP == 40 ) then text = " /190000" elseif ( UP == 41 ) then text = " /200000" elseif ( UP == 42 ) then text = " /210000" elseif ( UP == 43 ) then text = " /220000" elseif ( UP == 44 ) then text = " /230000" elseif ( UP == 45 ) then text = " /240000" elseif ( UP == 46 ) then text = " /250000" elseif ( UP == 47 ) then text = " /260000" elseif ( UP == 48 ) then text = " /270000" elseif ( UP == 49 ) then text = " /280000" elseif ( UP == 50 ) then text = " /290000" elseif ( UP == 51 ) then text = " /300000" end dxDrawText("Level", 1100, 350, 659, 66, tocolor(255, 255, 255, 255), 1.20, "sans", "left", "top", false, false, true, false, false) dxDrawText("Infectados", 1100, 300, 659, 66, tocolor(255, 255, 255, 255), 1.20, "sans", "left", "top", false, false, true, false, false) dxDrawText(""..lvl, 1110, 380, 659, 110, tocolor(255, 255, 255, 255), 2.50, "default", "left", "top", false, false, true, false, false) dxDrawText("Exp:", 1190, 370, 730, 64, tocolor(255, 255, 255, 255), 1.20, "sans", "left", "top", false, false, true, false, false) dxDrawText(""..ex..""..text.."", 1200, 390, 790, 110, tocolor(255, 255, 255, 255), 0.5, "bankgothic", "left", "top", false, false, true, false, false) dxDrawImage( 678, 103, 790, 110, "imagenes/"..lvl..".png") end ) addEventHandler ( "onClientResourceStart", resourceRoot, dxsetText ) function showClientImage() guiCreateStaticImage( 0.68, 0, 0.32, 0.08333, "logo1.png", true, nil) end Link to comment
XodiaCompany Posted March 15, 2014 Author Share Posted March 15, 2014 Y en el meta como lo pondria porq al agregar la imagen y refrescar para cargar el resource me dice failed en el meta lo puse asi "TimmY14" version="1.0.0" type="script" name="drawyourlevel" description="esto te dira tu level en un texto bajo el hud" /> o el error pasa porque tengo q pasar las 51 imagenes png?? y creo q si debo crear 51 imagenes el objetivo que busco es que por cada nivel me de una imagen personal como placas. lvl uno una mini imagen pequeña como una placa level dos la misma mini imagen con otra placa otro diseño en ejemplo. que en el lvl uno aparesca una estrella. para el level dos que se quite la estrella esa y cambie por la siguiente que seria una estrella plateada y asi va cambiando luego pasa de estreya a bandera luego medalla luego chapa etc.. como rangos por cada nivel Link to comment
MTA Team 0xCiBeR Posted March 15, 2014 MTA Team Share Posted March 15, 2014 En el meta, debe estar correctamente el path a ellas. Con "path" me refiero a Ruta. Por lo tanto si dentro de tu resource, las imágenes están en una carpeta llamadas imágenes deben estar agregadas al meta de la siguiente manera.: <file src="imagenes/1.png" /> Con respecto a tu pregunta, con el script que te hice, sí, todas las imágenes deben estar en .png Saludos. Link to comment
XodiaCompany Posted March 15, 2014 Author Share Posted March 15, 2014 gracias por tu ayuda el sistema funciona perfectamente gracias amigo :D Link to comment
MTA Team 0xCiBeR Posted March 15, 2014 MTA Team Share Posted March 15, 2014 No es nada, Saludos. Link to comment
Citrus Posted March 25, 2017 Share Posted March 25, 2017 No aparecen las fotos =( y eso que hice todo lo que dijieron!!!.. ayuda como lo han logrado?.... me aparece que nivel soy y todo perfecto pero la imagen cuand opasas de nivel Link to comment
Recommended Posts