Jump to content

[Reto] Proponganme un reto (Server Side)


Recommended Posts

Posted

He estado aprendiendo estos ultimos dos años mucha cantidad de script, y me gustaría seguir ampliando,

Asi que doy la posibilidad de que me digan "Que hacer" en un archivo lua que posteriormente publicare para su correccion.

Solo server side :D

Posted
Una interfaz gráfica en server-side 8)

¿Es posible eso ._.?

Usando las funciones de texto de MTA en server-side se puede hacer un rectángulo, cuesta muucho lograrlo pero es posible :P

Posted (edited)
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
Posted

Con interfaz gráfica no me refiero a hacer un rectángulo, me refiero a una interfaz gráfica con funciones y todas esas weas :P

Posted · Hidden
Hidden
O mejor semanas ._.'

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

Posted
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

Posted · Hidden
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

Posted
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.

Posted · Hidden
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.

Posted
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.

Posted

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?

Posted · Hidden
Hidden

Mmm... tienes razon. Lo que podrias hacer es un ida y vuelta al cliente para obtener su resolucion, o bien utilizar un element data.

Posted · Hidden
Hidden

onPlayerClick regresa posiciones absolutas de la pantalla, si se desea convertirla en posiciones relativas primero debemos conocer la resolucion de la pantalla del cliente.

Posted
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) 

  • Recently Browsing   0 members

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