Jump to content

[DUDA] - Chat Como el Editor?


Sergioks

Recommended Posts

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. :mrgreen:

Link to comment

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í xD

Link to comment
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í xD

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 xD

lo que no entiendo es lo de los "if" y las posiciones. Podrias darme un ejemplo concreto de eso? :)

Link to comment

Lo que te dije arriba de las posiciones fue una estupidez, no lo tomes como ejemplo a seguir porque te entreverarás más xD

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 xD

Link to comment
Lo que te dije arriba de las posiciones fue una estupidez, no lo tomes como ejemplo a seguir porque te entreverarás más xD

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 xD

asi si funciono xD. 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

Ya lo termine :D 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 xD )

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
  • Recently Browsing   0 members

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