Jump to content

UserToDelete

Members
  • Posts

    766
  • Joined

  • Last visited

Everything posted by UserToDelete

  1. 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) 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 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.
  2. RETO: A MEDIAS 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)
  3. Simplemente, Cambia de color tu tag. Beneficioso para los nombres que se ponen sin color HEX, like: XtremeSeul54 --[[ //////////////////////////////////////// SERVER SIDE VENAD MINISCRIPT ccolor.lua --//////////////////////////////////////// ]] function ccolor (source, command, color, color2, color3) if type(color) == 'number' then if color <= 255 and color >= 0 then if color2 ~= nil and type(color2) == 'number' then if color3 ~= nil and type(color3) == 'number' then if color2 <= 255 and color2 >= 0 then if color3 <= 255 and color3 >= 0 then setPlayerNametagColor(source, tonumber(color), tonumber(color2), tonumber(color3)) outputChatBox("Ahora tu nombre es de este color",source, tonumber(color), tonumber(color2), tonumber(color3), true) else outputChatBox("Tu tercer color no es valido: "..tostring(color3), source, 255,0,0,true) end else outputChatBox("Tu segundo color no es valido: "..tostring(color2), source, 255,0,0,true) end else outputChatBox("Tu tercer color no es un numero: "..tostring(color3), source, 255,0,0,true) end else outputChatBox("Tu segundo color no es un numero: "..tostring(color2), source, 255,0,0,true) end else outputChatBox("Tu primer color no es valido: "..tostring(color), source, 255,0,0,true) end end color = tostring(color) if color == 'nil' then outputChatBox("========COLORES DISPONIBLES====",source, 255,150,0,true) outputChatBox("Recuerda poner \"/ccolor\" [Color] para cambiarlo", source, 255,150,0,true) outputChatBox("{ rojo, naranja, verde, negro, blanco, lila, azul, gris, gris2, azul2", source, 255,150,0,true) outputChatBox("amarillo} o usa \"/ccolor r g b\" para un color personalizado", source, 255,150,0,true) elseif color == "rojo" then local _ = setPlayerNametagColor(source, 255,0,0) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "naranja" then local _ = setPlayerNametagColor(source, 255,150,0) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "verde" then local _ = setPlayerNametagColor(source, 0,255,0) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "negro" then local _ = setPlayerNametagColor(source, 0,0,0) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "blanco" then local _ = setPlayerNametagColor(source, 255,255,255) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "lila" then elseif color == "azul" then local _ = setPlayerNametagColor(source, 0,0,255) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "gris" then local _ = setPlayerNametagColor(source, 60,60,60) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "gris2" then local _ = setPlayerNametagColor(source, 150,150,150) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "azul2" then local _ = setPlayerNametagColor(source, 120,120,255) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == "amarillo" then local _ = setPlayerNametagColor(source, 255,255,0) if _ then outputChatBox("has cambiado tu nombre al color: "..tostring(color), source, 10,255,10,true) end elseif color == color then outputChatBox("Ese color no existe", source, 255,0,0,true) end end addCommandHandler("ccolor", ccolor) Este es un script que usaba en mi servidor de forma privada, ovbiamente se puede mejorar y acepto las optimizaciones
  4. Gracias por los aportes , De todas formas, andaba pensando en ese error hace mucho tiempo y desisti a los 5 minutos pensando
  5. Client.lua function bucear () x,y,z = getElementPosition(localPlayer) if z <= 0 then cancelEvent() end end addEventHandler("onClientPlayerDamage", root, bucear)
  6. No seria mas lindo asi? function quemateCojones() for k,playeeee in ipairs(getElementsByType("player")) do if isPedOnFire(playeeee) then setElementHealth(playeeee, getElementHealth(playeeee) - 1) end end end setTimer(quemateCojones, 50, 0) function lava(thePlayer) for i,thePlayer in ipairs(getElementsByType("player")) do if not isPedDead(thePlayer) and isElementInWater(thePlayer) then setPedOnFire(thePlayer, true) end end end setTimer ( lava, 1000, 0) addEventHandler("onPlayerSpawn",root,function() setPedOnFire(source,false) end )
  7. Exactamente, que tengo que hacer si coloco esto: Lo que quiero lograr, es que se repita un valor de una tabla, 127 veces value = { "l" } function test (source, commandName) for i=1,127 in ipairs(¿¿¿value???) do outputChatBox(¿¿i??, source, 255,255,0,true) end end Como consecuencia: Tiene que hacer esto:
  8. Joinquit sencillito que muestra informacion para los administradores y demas staff. Por si se quieren ir de listos y escaparse de un ban. --Joinquit version para ADMINS database = { nombre = nil serial = nil } function onJoin () database.nombre = getPlayerName(source) database.serial = getPlayerSerial(source) for k,pla in ipairs(getElementsByType("player")) do if isObjectInACLGroup("user:"..getAccountName(getPlayerAccount(pla)), aclGetGroup({"Admin", "SuperModerator", "Moderator"})) then outputChatBox("[Admin joinquit]: #FFFFFF"..database.nombre.." se ha unido al servidor", pla, 255,255,255,true) outputChatBox("SERIAL: "..database.serial, pla, 255,255,255,true) end end for k,play in ipairs(getElementsByType("player")) do if not isObjectInACLGroup("user:"..getAccountName(getPlayerAccount(play)), aclGetGroup({"Admin", "SuperModerator", "Moderator"})) then outputChatBox("#FFFFFF"..database.nombre.." se ha unido al servidor", play, 255,255,255,true) end end end
  9. Explicate mejor, a que te refieres con interfaz grafica?, mostrando que tipo de informacion?
  10. Yo empezaria por el diseño del GUI y funciones basicas, por supuesto te ayudaremos, pero con un codigo base. Si no, seriamos negros trabajando en el foro.
  11. 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
  12. Depende de como lo cierres, control C o X directamente?
  13. function greetingHandler () givePlayerMoney ( client, 5 ) end addEvent( "onGreeting", true ) addEventHandler( "onGreeting", root, greetingHandler ) Actualizacion de la 1.4 me parece, ya se que es lo mismo, pero me gustan las variantes predifinidas "source" solo te funcionara en server side, si lo llamas remotamente desde client, el "source" del evento pasa a ser "client" ya que es el que lo llama
  14. Dios, vale, que retraso mas grande tengo; El mensaje de Tomas me abrió los ojos function chatEvent (msg, tipo) cancelEvent() if _antispam[source] then seg = _antispam[source] + (t * 1000) if seg > getTickCount() then outputChatBox("Debes esperar weon: "..math.floor((seg - getTickCount())/1000).." segundos", source, 255,0,0,true) return else _antispam[source] = getTickCount() end else _antispam[source] = getTickCount() end if tipo == 0 then playerName = getPlayerName(source) for id, ips in ipairs(ip) do if string.find(msg, ips) then --__msgSub = string.gsub(msg, ips, "*") --outputChatBox("#FFFFFF"..playerName.."#FFFFFF: "..__msgSub, root, 255, 255, 255, true) outputChatBox("No publiques servidores!", root, 255, 255, 255, true) _antispam[source] = getTickCount() + (t*20*1000) return end end outputChatBox("NOIP", root, 0,255,0,true) end end addEventHandler("onPlayerChat", root, chatEvent) Thank u
  15. Por si if no se cumple, que de else? Seria mas correcto asi? return; else por cierto, me uní al foro 22 dias despues de Tomas :OOOO
  16. Seria interesante saber la nueva IP del VPS del que adquirirás, a muchos usuarios se les olvida "Renovar la IP" en sus post de servidores. Es un poco dificil saber la IP de tu VPS antes de adquirirla Ya , me referia que la pusiera cuando cambiara de server xDD
  17. El script ya esta descompilado en la community, free to edit, como decian en los juegos online; De todas formas, era un miniproyecto para haber aprendido lua, obviamente, si hubiera sido un script que le tuviera interes (popular o economico) no estaría publicado en la community. Tus consejos son utiles, sobretodo el de "Util y dinamico" Me surgio la idea de crear varias carpetas dentro de otras y usar menos cantidad de script, ya que supone una perdida de tiempo para el que lo descarga. Tener que andar buscando cada cosa es una tonteria, cuando pudo haber tres archivos y una carpeta server.lua client.lua meta.xml player_data EDIT: Era Free to play. Aun así me considero unbuen scripter
  18. Estuve creando un sistema de deteccion de IP, en todo esto, me base en una tabla creada por mi (Y con un orden "Que te cagas") y usando string.gsub y string.find, El problema es, Cuando hablo, no censura la IP, quitando el break, veo un mensaje que si se ha silenciado, y el resto no (ovbio), bien pues asi. EDITO: No detecta la IP, (Con el return, sin el return funciopna pero salta supermega spam (ovbio por el loop)) y lo pasa como un mensaje normal local _antispam = {} --antispam array local playerName local msg local tipo local seg local t = 5 ip = { "%d%d%d.%d%d%d.%d%d%d.%d%d%d", "%d%d%d.%d%d%d.%d%d%d.%d%d", "%d%d%d.%d%d%d.%d%d%d.%d", "%d%d%d.%d%d%d.%d%d.%d%d%d", "%d%d%d.%d%d%d.%d%d.%d%d", "%d%d%d.%d%d%d.%d%d.%d", "%d%d%d.%d%d%d.%d.%d%d%d", "%d%d%d.%d%d%d.%d.%d%d", "%d%d%d.%d%d%d.%d.%d", "%d%d%d.%d%d.%d%d%d.%d%d%d", "%d%d%d.%d%d.%d%d%d.%d%d", "%d%d%d.%d%d.%d%d%d.%d", "%d%d%d.%d%d.%d%d.%d%d%d", "%d%d%d.%d%d.%d%d.%d%d", "%d%d%d.%d%d.%d%d.%d", "%d%d%d.%d%d.%d.%d%d%d", "%d%d%d.%d%d.%d.%d%d", "%d%d%d.%d%d.%d.%d", "%d%d%d.%d.%d%d.%d%d%d", "%d%d%d.%d.%d%d.%d%d", "%d%d%d.%d.%d%d.%d", "%d%d%d.%d.%d.%d%d%d", "%d%d%d.%d.%d.%d%d", "%d%d%d.%d.%d.%d", "%d%d.%d%d%d.%d%d%d.%d%d%d", "%d%d.%d%d%d.%d%d%d.%d%d", "%d%d.%d%d%d.%d%d%d.%d", "%d%d.%d%d%d.%d%d.%d%d%d", "%d%d.%d%d%d.%d%d.%d%d", "%d%d.%d%d%d.%d%d.%d", "%d%d.%d%d%d.%d.%d%d%d", "%d%d.%d%d%d.%d.%d%d", "%d%d.%d%d%d.%d.%d", "%d%d.%d%d.%d%d%d.%d%d%d", "%d%d.%d%d.%d%d%d.%d%d", "%d%d.%d%d.%d%d%d.%d", "%d%d.%d%d.%d%d.%d%d%d", "%d%d.%d%d.%d%d.%d%d", "%d%d.%d%d.%d%d.%d", "%d%d.%d%d.%d.%d%d%d", "%d%d.%d%d.%d.%d%d", "%d%d.%d%d.%d.%d", "%d%d.%d.%d%d%d.%d%d%d", "%d%d.%d.%d%d%d.%d%d", "%d%d.%d.%d%d%d.%d", "%d%d.%d.%d%d.%d%d%d", "%d%d.%d.%d%d.%d%d", "%d%d.%d.%d%d.%d", "%d%d.%d.%d.%d%d%d", "%d%d.%d.%d.%d%d", "%d%d.%d.%d.%d", "%d.%d%d%d.%d%d%d.%d%d%d", "%d.%d%d%d.%d%d%d.%d%d", "%d.%d%d%d.%d%d%d.%d", "%d.%d%d%d.%d%d.%d%d%d", "%d.%d%d%d.%d%d.%d%d", "%d.%d%d%d.%d%d.%d", "%d.%d%d%d.%d.%d%d%d", "%d.%d%d%d.%d.%d%d", "%d.%d%d%d.%d.%d", "%d.%d%d.%d%d%d.%d%d%d", "%d.%d%d.%d%d%d.%d%d", "%d.%d%d.%d%d%d.%d", "%d.%d%d.%d%d.%d%d%d", "%d.%d%d.%d%d.%d%d", "%d.%d%d.%d%d.%d", "%d.%d%d.%d.%d%d%d", "%d.%d%d.%d.%d%d", "%d.%d%d.%d.%d", "%d.%d.%d%d%d.%d%d%d", "%d.%d.%d%d%d.%d%d", "%d.%d.%d%d%d.%d", "%d.%d.%d%d.%d%d%d", "%d.%d.%d%d.%d%d", "%d.%d.%d%d.%d", "%d.%d.%d.%d%d%d", "%d.%d.%d.%d%d", "%d.%d.%d.%d", } function chatEvent (msg, tipo) cancelEvent() if _antispam[source] then seg = _antispam[source] + (t * 1000) if seg > getTickCount() then outputChatBox("Debes esperar weon: "..math.floor((seg - getTickCount())/1000).." segundos", source, 255,0,0,true) return else _antispam[source] = getTickCount() end else _antispam[source] = getTickCount() end if tipo == 0 then playerName = getPlayerName(source) for id, ips in ipairs(ip) do if string.find(msg, ips) then --__msgSub = string.gsub(msg, ips, "*") --outputChatBox("#FFFFFF"..playerName.."#FFFFFF: "..__msgSub, root, 255, 255, 255, true) outputChatBox("No publiques servidores!", root, 255, 255, 255, true) _antispam[source] = getTickCount() + (t*20*1000) return else outputChatBox("NOIP", root, 0,255,0,true) return end end end end addEventHandler("onPlayerChat", root, chatEvent)
  19. Ahora entendi, El error es la variante dentro de la tabla, que podia ser .tabPanel o [1]. Ty Castillo~
  20. Entonces he hecho todo un script de 80 lineas mal, mejor lo dejo con variantes normalitas. Hay que ver.. guiEditor no funciona bien !!
  21. Estaba realizando un panel de usuario en guiEditor y me vi en la obligacion de modificarlo manualmente, al volver a abrirlo me encuentro con esto; attempt to index field 'secret2' (a userdata value) Linea problematica en cuestion (Segun el error) secret.secret2.secret4= guiCreateTab("Player Information", secret.secret2) A donde hace referencia: secret.secret2= guiCreateTabPanel(10, 27, 541, 299, false, secret.secret3) secret.secret3= guiCreateWindow((screenW - 561) / 2, (screenH - 380) / 2, 561, 380, "=== Userpanel === [API] From vCore", false) Y las tablas son estas: secret = { secretNoImporta = {}, secret2 = { secret4 = {}, secretNoImporta1 = { secretNoImporta2 = {} } } }
  22. No es por molestar, pero me parece que escribiste muchas palabras sin sentido, contenido ni fondo. Un año despues, releo este post, y te doy la razon. PD: 80 > HTTP, 443 > HTTPS
  23. Bueno, hace unos dias empece el desarrolo de todo un sistema de servidor, o almenos, intento hacerlo de la manera mas eficiente que puedo. Bien explicare un poco lo que llevo hasta ahora; El resource se llama vCore, como su titulo indica, y tiene como funcion principal ofrecer ventajas al servidor con resources que otros no hacen correctamente, explicare todo en la lista de mas abajo: Soporte para los game monitor (Esto hace que los gameMonitor reconozcan el dinero como "score" o esa es la idea.) Soporte de saveSystem (Aun ando integrando cosas, pero por el momento soporta: Skin, posicion, armas, dinero, vida, armadura, nivel de busqueda, dimension, interior y [spawn (resource settings)]) Soporte de configurables, es decir, lo puedes configurar desde Resource Settings en el admin panel por defecto de MTA Archivos de lenguaje para los que no sean ni ingleses ni españoles. /gadmin, un comando que permite borrar gangs, pero es necesario el script "gang_system" de "Castillo14", lo que hoy en dia, es "SolidSnake14" en el foro https://community.multitheftauto.com/index.php?p= ... ls&id=1514 (gang_system) https://community.multitheftauto.com/index.php?p= ... s&id=11073 (vCore)
×
×
  • Create New...