Jump to content

Bc#

Members
  • Posts

    516
  • Joined

  • Last visited

Everything posted by Bc#

  1. Bc#

    Error con SQLite

    Supongo que le metiste datos a las tablas antes de consultarlas. Ya que la tabla te esta arrojando un false
  2. Para programar este tipo de cosas hay que tener buena base matemática, no es algo que aprendas en 1 día. Yo tarde varios días en calibrar un radar y contando que tengo toda la base necesaria para resolver problemas trigonométricos. Para mi no hay limite de edad para programar, pero para algunas aplicaciones necesitas conocimientos mínimos en ciertas ciencias.
  3. Ya busque eso, pero no entendí mucho que digamos. Pondré la parte de un script que usa esos math para ver si alguien sabe y me puede explicar para que los uso . addEventHandler("onClientPedDamage", getRootElement(), function(attacker) -- attacker == getLocalPlayer() because setElementVelocity is synced with server if(attacker and attacked ~= source and attacker == getLocalPlayer())then local aPosX, aPosY, aPosZ = getElementPosition(attacker) local sPosX, sPosY, sPosZ = getElementPosition(source) local angle = math.atan2(aPosX - sPosX, aPosY - sPosY) - math.rad(90) local velX, velY, velZ = getElementVelocity(source) setElementVelocity(source, velX + power*-math.cos(angle), velY + power*math.sin(angle), velZ + powerUp) end end) Ese es un script que vi en un post, lo que hace es mandar a volar a un ped si lo golpeas, pero para qué uso math.rad ,math.atan2, y los otros math que están ahí? no era más fácil solo usar setElementVelocity(x,y+15,z+0.5)? ¿Sabes que es trigonometria? Esos math sirven para obtener funciones trigonometricas.
  4. Es cosa de googlear: http://lua-users.org/wiki/MathLibraryTutorial
  5. Estas usando mal la libreria, es copiar todo lo que esta dentro en un script a parte. Por lo que veo tu sacaste las funciones que necesitabas y las pusiste en el script. Hay variables globales necesarias para que el script funcione.
  6. No modificaste nada en tu mtaserver.conf a parte de la ip? A veces suelen haber problemas de descarga por eso. Crear un servidor sin hamachi no es complejo. Hace un tiempo hice un vídeo completo de como hacerlo, incluido como abrir puertos y comprobar que estén abiertos. También explico como hacer que tus amigos puedan entrar a tu servidor. Video: https://forum.multitheftauto.com/viewtopic.php?f=146&t=68679 PD: También puede deberse a la velocidad de tu conexión aunque si no avanza después de unos minutos hay que descartar esa posibilidad.
  7. Es orientado a objetos, en el mismo repositorio hay ejemplos de como usarlo. La funcion crea un elemento, el cual contiene varias funciones lidagas a el. Mirando el código puedes aprender a crear tus propias librerias. Ejemplo de lo que quieres hacer: boton = dxDrawButton("#ffffffhola",300,300,300,300,tocolor(0,0,0,255),"default",2) if boton.isClicked() then outputChatBox("sirve") end PD: dxDrawButton retorna false si hay errores en la sintaxis de los argumentos requeridos de la funcion.
  8. Es como dicen ellos. La libreria en si no esta terminada, pero lo que es el dxDrawButton esta funcional. Ofrezco unirse al aporte para crear el resto de elementos dx.
  9. Bc#

    onClientRender

    Es mas rapido un loop que un render.
  10. Bc#

    Ordenar ComboBox

    https://www.lua.org/pil/19.3.html
  11. Si no te diste cuenta, te deje una libreria que hice yo mismo mas arriba, solo editala a tu gusto. Hay una manera de hacer lo que necesitas ahi mismo.
  12. Yo estaba trabajando en una libreria, se le pueden agregar mas cosas. Si quieres puedes ayudarme aqui: https://github.com/XWark/dxLibrary/blob/master/dxLibrary.lua
  13. Bc#

    sendmoney(ayuda)

    1. El problema de los desimales lo puedes resolver con string.format, ejemplo var = string.format("%d", 0.1) print(var) Nota: Lo que hace la funcion es quitarle los decimales al numero. 2. El problema de las letras con numeros lo resuelves facil aplicando un debug. var = tonumber("1a1") if var then print(var) else print("La cantidad ingresada no es valida") end 3. Al debug anterior le agregas otro debug var = tonumber("-11") if var then if var > 0 then print(var) else print("El monto ingresado debe ser mayor que 0") end else print("La cantidad ingresada no es valida") end PD: Muchos scripters no hacen esto, pero sirve mucho para pulir scripts. Tambien sirve bastante al momento de buscar errores en codigos muy extensos.
  14. Hice eso pero a medida q la barra va pasando se queda abajo el texto function renderizar_progreso( ) progreso_barra = progreso_barra + 0.4 if progreso_barra >= 300 then removeEventHandler( "onClientRender", root, renderizar_barras ) removeEventHandler( "onClientRender", root, renderizar_progreso ) end end addEventHandler( "onClientRender", root, renderizar_progreso ) function renderizar_barras( ) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, 300, 25, tocolor(0, 0, 0, 160), true) dxDrawRectangle((screenW - 23) / 2-131, (screenH - 10) / 2, progreso_barra, 25, tocolor(0, 255, 0, 255), true) dxDrawBorderedText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 0, 0, 0, 255 ), 2, "sans" ) dxDrawText ("Drogandose",(screenWidth - 15) / 2 -120, (screenHeight - 10) / 2, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 2, "sans" ) end addEventHandler( "onClientRender", root, renderizar_barras ) Solucionado, gracias a los 2 No sería más simple dejar en un solo render los dos? No habría ningún problema & así es menos funciones a lo loco Yo también pensé en eso, y claro haría mas simple hacer todo en un solo render, pero no seria lo mas optimo si es que el render fuese infinito. Estaría consultando un if innecesariamente. Ahora si es un caso particular como creo que es este, no habría problema en hacer todo en un if.
  15. Eso va por orden, lo ultimo que escribes en el codigo es lo que queda en frente.
  16. ¿Un ejemplo de como usar eso para la animación que quiero hacer?, yo use los ejemplos de la wiki pero no cambia nada. Valla aplicándose con el ingles, en la wiki sale todo explicado y con ejemplos. Eso te da el largo y alto de un texto, te sirve para cuando pasas el puntero del mouse encima. Lo que pedias mas arriba.
  17. Bc#

    Super Golpe

    Falto agregarle el daño a eso
  18. El contador tiene que ir dentro de la funcion donde renderizas para que sume a cada frame
  19. getTickCount es un contador de tiempo en milisegundos, por eso si tomas un punto de inicio y haces un progreso en un onClientRender puedes usarlo para crear una animacion. En palabras sencillas, para tu animacion necesitas que una variable aumente su valor linealmente, por lo que te viene bien la funcion. Intenta comprender el funcionamiento mas que el script en si. PD: si quieres una animacion un poco mas compleja debes usar getEasingValue
  20. getTickCount Ejemplo de un progreso lineal con getTickCount; local start = getTickCount() local progress=0 addEventHandler("onClientRender", root, function() if progress<5 then progress = getTickCount() - start end dxDrawText("Olakase", 100,100,0,0,white,"default",progress) end) PD: no lo testie así que no esta exento de bugs
  21. Tampoco veo el error, pero intenta reemplazar player por source.
  22. Mira, despues de leer un poco tu codigo, el error mas evidente que pude encontrar fue que estas seteando un string a una funcion que te pide un integer. local skinG = getAccountData (acc, "Sking") -- sking es una variable de tipo string setElementModel(source, skinG) -- aqui te pide en segundo argumento una variable de tipo integer La solucion. --Siemplemente transformar el string a numero setElementModel(source, tonumber(skinG)) PD: Si tienes mas errores intenta dejar en tu post lo que arroja el debug, este es un error que te lo detecta el debug.
  23. En que momento haces un save del skin anterior?
  24. Esto es un consejo para todo scripter, hay que poner comentarios en el código para hacer mas facil su comprensión. Puedes entender tu código ya que usas tus variables, pero estas muchas veces no se entienden si otra persona lee tu codigo.
×
×
  • Create New...