Sergioks Posted June 19, 2014 Share Posted June 19, 2014 Hola! me podrían decir como hacer el script de los mensajes del MapEditor? Me refiero a este: http://sergioksvideo.com.ar/mta-screen_2014-06-18_18-47-57.png o donde se ubica el mismo? estaría muy agradecido. Ya se como hacer lo de los dxDrawText onClientRender pero como hago para que se ubiquen uno debajo del otro.. y para definir los colores del mismo? osea, que quede como el de la imagen, y se pueda llamar en otros scripts con algo como asi: exports["infoChat"]:outputInfoChat( source, "Como hago esto?", 255, 0, 0) ??? no se si pido mucho.. pero lo necesito con urgencia. - Gracias de Antemano. Link to comment
Tomas Posted June 19, 2014 Share Posted June 19, 2014 Para que se ubique debajo puedes usar un if, por ejemplo si a existe, colocarse en posición de b, si b existe en posición de c, y así... Para definir los colores usa tocolor ( r,g,b,a) Para llamarlo en otros scripts haz una función con argumentos vacíos que se tengan que emplear en el export, un ejemplo function dxCall (text,r,g,b,a) dxDrawText(text,r,g,b,a) end algo así Link to comment
Sergioks Posted June 19, 2014 Author Share Posted June 19, 2014 Para que se ubique debajo puedes usar un if, por ejemplo si a existe, colocarse en posición de b, si b existe en posición de c, y así... Para definir los colores usa tocolor ( r,g,b,a) Para llamarlo en otros scripts haz una función con argumentos vacíos que se tengan que emplear en el export, un ejemplo function dxCall (text,r,g,b,a) dxDrawText(text,r,g,b,a) end algo así Entonces... podria ser algo asi? addCommandHandler("error", function(...) local text = table.concat ( { ... }, " " ) local color = tocolor(255, 0, 0, 255) SendMessageBox (text, color ) end) function SendMessageBox (text, color ) dxDrawText (text, color) --- excluyendo las posiciones claro esta end y los exports serian algo asi?: export:["ScriptName"]SendMessageBox ("ola k ase?", 255, 0, 0) eso es lo que entiendo, no se si este bien lo que no entiendo es lo de los "if" y las posiciones. Podrias darme un ejemplo concreto de eso? Link to comment
Tomas Posted June 20, 2014 Share Posted June 20, 2014 Lo que te dije arriba de las posiciones fue una estupidez, no lo tomes como ejemplo a seguir porque te entreverarás más Te recomiendo poner un 'if' a cada argumento para detectar si existe, porque si éste no existiera te generaría un debug... addCommandHandler("error", function(texto,r,g,b) local text = table.concat ( {texto}, " " ) local color = tocolor(r, g, b, 255) SendMessageBox (text, color) end) function SendMessageBox (text, color ) dxDrawText (text, color) end El export está bien me parece Link to comment
Sergioks Posted June 20, 2014 Author Share Posted June 20, 2014 Lo que te dije arriba de las posiciones fue una estupidez, no lo tomes como ejemplo a seguir porque te entreverarás más Te recomiendo poner un 'if' a cada argumento para detectar si existe, porque si éste no existiera te generaría un debug... addCommandHandler("error", function dxDrawInfo(texto,r,g,b) local text = table.concat ( {texto}, " " ) local color = tocolor(r, g, b, 255) SendMessageBox (text, color) end) function SendMessageBox (text, color ) dxDrawText (text, color) end El export está bien me parece asi si funciono . Pero el mensaje dura como 0,1 segundo ( aparece y desaparece en menos de un parpadeo ) y apenas inicio el script me aparece este error: [color=#FF0000][b]ERROR: dxInfo/client.lua:11: attempt to concatenate local 'text' (a nil value)[/b][/color] aqui el script completo: function dxDrawInfo(texto,r,g,b) local text = table.concat ( {texto}, " " ) local color = tocolor(255, 0, 0, 255) SendMessageBox (text, color) end addCommandHandler("error", dxDrawInfo) --- BlackColor = tocolor(0, 0, 0, 255) function SendMessageBox (text, color ) dxDrawText("[ERROR] "..text, 855, 434, 1431, 449, BlackColor, 1.00, "clear", "right", "top", false, false, false, false, false) dxDrawText("[ERROR] "..text, 855, 432, 1431, 447, BlackColor, 1.00, "clear", "right", "top", false, false, false, false, false) dxDrawText("[ERROR] "..text, 853, 434, 1429, 449, BlackColor, 1.00, "clear", "right", "top", false, false, false, false, false) dxDrawText("[ERROR] "..text, 853, 432, 1429, 447, BlackColor, 1.00, "clear", "right", "top", false, false, false, false, false) dxDrawText("[ERROR] "..text, 854, 433, 1430, 448, color, 1.00, "clear", "right", "top", false, false, false, false, false) end addEventHandler("onClientRender", root, SendMessageBox) que pasa alli? Otro problema que tengo con este, es que un amigo me dio una.. digamos "modificacion" pequeña para hacer que el mismo aparezca un mensaje uno debajo del otro, aunque creo que faltan cosas. el debugscript aclara que faltan argumentos en la linea del "for ... do" pero no se cuales son .-. function SendMessageBox(text,color) i=1,4 for i do y=y*i dxDrawText("[ERROR] "..text, 854, y, 1430, 448, color, 1.00, "clear", "right", "top", false, false, false, false, false) end end EDIT: probe el export asi: exports["dxInfo"]:dxDrawInfo("funcionara", 255, 0, 0) Debugscript: ERROR: call: failed to call dxInfo:dxDrawInfo (tail call) Link to comment
Sergioks Posted June 20, 2014 Author Share Posted June 20, 2014 Ya lo termine use de guía el "sidechat". Solo necesito saber como colocar las letras del lado derecho de la pantalla, y no el el izquierdo client: local sx,sy = guiGetScreenSize () local scState = true local maxLines = 5 local oocMessages = {} local font = "clear" --chatData["chat_font"] addEventHandler ("onClientRender",getRootElement(), function () if isPlayerHudComponentVisible ("radar") then if scState then local chatData = getChatboxLayout() local _,scale = chatData["chat_scale"] local bg = {chatData["chat_color"]} local color = --[[{205,205,205,255}]] chatData["chat_text_color"] local lines = chatData["chat_lines"] local chatX,chatY = 0.015625*sx,16 + 15*lines + 25 for k,v in ipairs(oocMessages) do local tx,ty = chatX,chatY + (maxLines+1)*65 - k*20 local vNC = v repeat vNC = vNC:gsub("#%x%x%x%x%x%x", "") until not vNC:find("#%x%x%x%x%x%x") dxDrawText(vNC, tx+1, ty+1, 0, 0, tocolor(0, 0, 0, 255), 1, font, "left", "top", false, false, false, false) dxDrawText(vNC, tx+1, ty-1, 0, 0, tocolor(0, 0, 0, 255), 1, font, "left", "top", false, false, false, false) dxDrawText(vNC, tx-1, ty+1, 0, 0, tocolor(0, 0, 0, 255), 1, font, "left", "top", false, false, false, false) dxDrawText(vNC, tx-1, ty-1, 0, 0, tocolor(0, 0, 0, 255), 1, font, "left", "top", false, false, false, false) dxDrawText(v, tx, ty, 0, 0, tocolor(color[1], color[2], color[3], color[4]), 1, font, "left", "top", false, false, false, true) end end end end ) me ayudan con las coordenadas? no entiendo mucho eso de las multiplicaciones. ( en el uso del guiGetScreenSize, no me mal entiendan ) EDIT: coloco el "right" en el dxDrawText y se desaparece, me imagino que es porque las coordenadas creadas no van con "right" si no con "left" y eso es lo que necesito, saber como sacar esas cuentas... Link to comment
Tomas Posted June 22, 2014 Share Posted June 22, 2014 Para tomar coordenadas uso un programa que tiene mi PC (No estoy en ella no puedo pasartelo en este momento), pero si no lo tienes usa guieditor, es más facil O sino getCursorPosition. Link to comment
Sergioks Posted June 22, 2014 Author Share Posted June 22, 2014 Ya lo solucione, use el gui editor y "Preview in resolusion >" Gracias por Toda la Ayuda Tomasito Link to comment
Recommended Posts