Jump to content

[Reto] Proponganme un reto (Server Side)


Recommended Posts

Una interfaz gráfica en server-side 8)

RETO: A MEDIAS xD

values = { 
oderecha = 0.35, 
oabajo = 0.05, 
spacing = 0.01667, 
lineas = 6, 
current_line = 0, 
derecha = 0.35, 
abajo = 0.05 
} 
putaletra = { 
"lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll" 
} 
function createWindowc (source, command) 
    for index=1, 9999999 do 
    values.derecha = values.derecha + 0.001 
    local myDisplay = textCreateDisplay () 
    textDisplayAddObserver(myDisplay, source) 
    local myText = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) 
    textDisplayAddText(myDisplay, myText) 
    values.derecha = values.derecha + 0.001 
    local myText2 = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) 
    textDisplayAddText(myDisplay, myText2) 
    values.abajo = values.abajo + values.spacing 
    values.current_line = values.current_line + 1 
    values.derecha = values.oderecha 
        if values.current_line >= values.lineas then 
        values.abajo = values.oabajo 
        values.derecha = values.oderecha 
        values.current_line = 1 
        textDisplayAddText(myDisplay, textCreateTextItem("Tu nombre es: "..getPlayerName(source):gsub("#%x%x%x%x%x%x", ""), values.oderecha + 0.015,values.oabajo + 0.03,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("Tu IP es: "..getPlayerIP(source), values.oderecha + 0.015,values.oabajo + 0.06,0,255,255,255,255,1)) 
        break 
        end 
    end 
end 
addCommandHandler("cc", createWindowc) 

retoguiserverside.JPG

Edited by Guest
Link to comment
Hidden
O mejor semanas ._.'

Meses mejor dicho... ¿Por qué sólo aceptas proposiciones de cosas de server-side? :)

TheChine deberías tener cuidado con el banner de las stats de tu servidor, está vulnerable a inyecciones SQL gg

O_o

Link to comment
Díganle Que Haga un Gamemode Haber si se Atreve xD

Tengo un server offline con el gamemode de BomBerman, bastante divertido.

y ando haciendo un RPG muy trabajado.

La GUI En server side, lo veo IMPOSIBLE, ya que en server side, no hay una function para detectar "Si estas viendo un objeto" o "detectar algo en sí" Necesitarías como mínimo un trigger desde client con la resolución de cliente.

Por si a alguien se le ocurre como hacerlo, dejo la parte del script útil, y lo ha construir en comentario

--[[ TODO 
 - Saber la resolucion del cliente [ESTADO: IMPOSBIEL] 
]] 
values = { 
oderecha = 0.35, 
oabajo = 0.05, 
spacing = 0.01667, 
lineas = 9, 
current_line = 0, 
derecha = 0.35, 
abajo = 0.05 
} 
--[[playerData = { 
posx = nil, 
posy = nil, 
posz = nil 
}]] 
element = { 
posx = nil, 
posy = nil, 
posz = nil 
} 
mtaresolutions = { 
{1360, 768}, 
{1280, 768}, 
{1280, 720}, 
{1024, 768}, 
{800, 600}, 
{720, 576}, 
{720, 480}, 
{640, 480} 
} 
putaletra = { 
"lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll" 
} 
function createWindowc (source, command) 
    for index=1, 9999999 do 
    values.derecha = values.derecha + 0.001 
    myDisplay = textCreateDisplay () 
    textDisplayAddObserver(myDisplay, source) 
    myText = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) 
    textDisplayAddText(myDisplay, myText) 
    values.derecha = values.derecha + 0.001 
    myText2 = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) 
    textDisplayAddText(myDisplay, myText2) 
    values.abajo = values.abajo + values.spacing 
    values.current_line = values.current_line + 1 
    values.derecha = values.oderecha 
        if values.current_line >= values.lineas then 
        values.abajo = values.oabajo 
        values.derecha = values.oderecha 
        values.current_line = 0 
        --textDisplayAddText(myDisplay, textCreateTextItem("Tu nombre es: "..getPlayerName(source):gsub("#%x%x%x%x%x%x", ""), values.oderecha + 0.015,values.oabajo + 0.03,0,255,255,255,255,1)) 
        --textDisplayAddText(myDisplay, textCreateTextItem("Tu IP es: "..getPlayerIP(source), values.oderecha + 0.015,values.oabajo + 0.06,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("PULSA 1 PARA VER TUS DETALLES", values.oderecha + 0.015,values.oabajo + 0.09,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("_____________________________________________", values.oderecha + 0.015,values.oabajo + 0.1,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("_____________________________________________", values.oderecha + 0.015,values.oabajo + 0.065,0,255,255,255,255,1)) 
        showCursor(source, true) 
        break 
        end 
    end 
    --CAMERA CLIENT RESOLUTION GETTER 
--local x, y, z = getElementPosition(source) 
--playerData.posx, playerData.posy, playerData.posz = tonumber(x), tonumber(y), tonumber(z) 
--setCameraMatrix(source,0,0,5000,0,0,0,0) 
--toCheck = createMarker(990,0,4990,"corona", 1, 0, 0, 0, 255, source) 
    --[[if isElementVisibleTo(toCheck, source) then 
    outputChatBox("ES VISIBLE",source,0,255,0,true) 
    else 
    outputChatBox("NOO ES VISIBLE", source, 255,255,0,true) 
    end ]] 
    for ke, resolution in ipairs(mtaresolutions) do 
    end 
end 
addCommandHandler("cc", createWindowc) 
  
local function onClickInServerScreen (button, state,element, wx, wy, wz, sx, sy) 
end 
addEventHandler("onClick", root, onClickInServerScreen) 

O mejor semanas ._.'

Meses mejor dicho... ¿Por qué sólo aceptas proposiciones de cosas de server-side? :)

Porque de client no tengo mucha idea, solo de funciones básicas, y lo mas seguro que digan en "client" serán animaciones de GUI

O mejor semanas ._.'

Semanas no, andaba pensando en crear un "element" para detectar la resolucion, pero al no poder comprobar si el objeto entra dentro de la pantalla de source en cuestión, no puedo comprobar si la pantalla esta mirando a ese elemento o no, de esa manera podrías comprobar la resolución desde server side.

Resumidamente, si quieres hacer un gui desde server side, la unica manera de con keyBind.

Link to comment
Hidden

Te costará algo de tiempo a no ser que estes todo el dia.

-Las posiciones son relativas, no nesecitas la resolucion del cliente

¿Para que nesecitas saber si el jugador esta mirando un elemnto? No necesitas eso para el gui en server.

Link to comment
Díganle Que Haga un Gamemode Haber si se Atreve xD

Tengo un server offline con el gamemode de BomBerman, bastante divertido.

y ando haciendo un RPG muy trabajado.

La GUI En server side, lo veo IMPOSIBLE, ya que en server side, no hay una function para detectar "Si estas viendo un objeto" o "detectar algo en sí" Necesitarías como mínimo un trigger desde client con la resolución de cliente.

Por si a alguien se le ocurre como hacerlo, dejo la parte del script útil, y lo ha construir en comentario

--[[ TODO 
 - Saber la resolucion del cliente [ESTADO: IMPOSBIEL] 
]] 
values = { 
oderecha = 0.35, 
oabajo = 0.05, 
spacing = 0.01667, 
lineas = 9, 
current_line = 0, 
derecha = 0.35, 
abajo = 0.05 
} 
--[[playerData = { 
posx = nil, 
posy = nil, 
posz = nil 
}]] 
element = { 
posx = nil, 
posy = nil, 
posz = nil 
} 
mtaresolutions = { 
{1360, 768}, 
{1280, 768}, 
{1280, 720}, 
{1024, 768}, 
{800, 600}, 
{720, 576}, 
{720, 480}, 
{640, 480} 
} 
putaletra = { 
"lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll" 
} 
function createWindowc (source, command) 
    for index=1, 9999999 do 
    values.derecha = values.derecha + 0.001 
    myDisplay = textCreateDisplay () 
    textDisplayAddObserver(myDisplay, source) 
    myText = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) 
    textDisplayAddText(myDisplay, myText) 
    values.derecha = values.derecha + 0.001 
    myText2 = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) 
    textDisplayAddText(myDisplay, myText2) 
    values.abajo = values.abajo + values.spacing 
    values.current_line = values.current_line + 1 
    values.derecha = values.oderecha 
        if values.current_line >= values.lineas then 
        values.abajo = values.oabajo 
        values.derecha = values.oderecha 
        values.current_line = 0 
        --textDisplayAddText(myDisplay, textCreateTextItem("Tu nombre es: "..getPlayerName(source):gsub("#%x%x%x%x%x%x", ""), values.oderecha + 0.015,values.oabajo + 0.03,0,255,255,255,255,1)) 
        --textDisplayAddText(myDisplay, textCreateTextItem("Tu IP es: "..getPlayerIP(source), values.oderecha + 0.015,values.oabajo + 0.06,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("PULSA 1 PARA VER TUS DETALLES", values.oderecha + 0.015,values.oabajo + 0.09,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("_____________________________________________", values.oderecha + 0.015,values.oabajo + 0.1,0,255,255,255,255,1)) 
        textDisplayAddText(myDisplay, textCreateTextItem("_____________________________________________", values.oderecha + 0.015,values.oabajo + 0.065,0,255,255,255,255,1)) 
        showCursor(source, true) 
        break 
        end 
    end 
    --CAMERA CLIENT RESOLUTION GETTER 
--local x, y, z = getElementPosition(source) 
--playerData.posx, playerData.posy, playerData.posz = tonumber(x), tonumber(y), tonumber(z) 
--setCameraMatrix(source,0,0,5000,0,0,0,0) 
--toCheck = createMarker(990,0,4990,"corona", 1, 0, 0, 0, 255, source) 
    --[[if isElementVisibleTo(toCheck, source) then 
    outputChatBox("ES VISIBLE",source,0,255,0,true) 
    else 
    outputChatBox("NOO ES VISIBLE", source, 255,255,0,true) 
    end ]] 
    for ke, resolution in ipairs(mtaresolutions) do 
    end 
end 
addCommandHandler("cc", createWindowc) 
  
local function onClickInServerScreen (button, state,element, wx, wy, wz, sx, sy) 
end 
addEventHandler("onClick", root, onClickInServerScreen) 

O mejor semanas ._.'

Meses mejor dicho... ¿Por qué sólo aceptas proposiciones de cosas de server-side? :)

Porque de client no tengo mucha idea, solo de funciones básicas, y lo mas seguro que digan en "client" serán animaciones de GUI

O mejor semanas ._.'

Semanas no, andaba pensando en crear un "element" para detectar la resolucion, pero al no poder comprobar si el objeto entra dentro de la pantalla de source en cuestión, no puedo comprobar si la pantalla esta mirando a ese elemento o no, de esa manera podrías comprobar la resolución desde server side.

Resumidamente, si quieres hacer un gui desde server side, la unica manera de con keyBind.

¿A qué te refieres con detectar "Si estas viendo un objeto"? Puedes guardar la información en una tabla y luego con una función leerla. No es imposible.

Link to comment

O_o

No me gusta el offtopic, Ni tus PM insultantes de los que ni hago caso porque no me drogo xD

Enfin, la solucion de serverGUI que he pensado en en un loop con las resoluciones de MTA y checkear el click en cada una de ellas, si, es relativo, pero el click que devuelve "onClick", son absolutas.

Alguna otra solucion?

Link to comment
textItemGetPosition también devuelve posiciones relativas a la pantalla

Tomas, fijate, onPlayerClick devuelve posiciones absolutas, no relativas, me interesa saber el getPosition absoluto, no relativo.

He logrado hacer esto, no es efectivo, pero es lo unico que he podido hacer.

local function onClickInServerScreen (button, state,element, wx, wy, wz, sx, sy) 
    if button == "left" and state == "down" then 
        for ke, VALUE in ipairs(mtaresolutions) do 
            local rx = (sx / tonumber(VALUE[1])) --X relative. 
            local ry = (sy / tonumber(VALUE[2])) --Y relative. 
            local YZ = 0.135 
            local YY = YZ + 0.03 
                if rx >= values.oderecha + 0.015 and rx <= values.oderecha + 0.015 + (string.len("PULSA 1 PARA VER TUS DETALLES") * 0.014) and ry >= YZ and ry <= YY then 
                return  
                end 
        end 
    end 
end 
addEventHandler("onPlayerClick", root, onClickInServerScreen) 

Link to comment
  • Recently Browsing   0 members

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