Jump to content

Bc#

Members
  • Posts

    516
  • Joined

  • Last visited

Everything posted by Bc#

  1. Un proceso que se repite hasta completar una determinada condición, o mejor llamado en el idioma español un "bucle". Resumen, un for o un while.
  2. ¿Notaron al menos que le faltan argumentos a su función?
  3. Bc#

    dxGridLsit

    Son rectangulos, simulan botones.
  4. Esas 500 lineas las puedes resumir a 100 usando tablas, así es mucho mas fácil detectar errores.
  5. Ahora comprendi lo que querias hacer, podrías crear una función aparte para que re retorne el ID, asi seria mas simple: weapons = {} weapons[1] = {"BM16 Pellet",".50 Barret Mag","Sig550 Mag","Gauss Rifle Mag","M-14 Camouflage Grid Mag", "Thompson 1928 Mag","Type 99 Mag","AK Mag","14mm Ammo","LR300 Mag","GAU-19 Mag","TOS 34 Pellet", "SPSA 14 Pellet","SVDm 2 Mag", "Ballesta Mag","M136 Rocket","M136 Rocket"} weapons[2] = {"Nails","Taser Battery","PB1s Mag","Berta Mag","Desert Eagle","PDW Mag","Viper 5"} weapons[3] = {"Parachute","Grenade","Tear Gas"} wpn = {} wpn[1] = {"BM16",".50 Barret","Sig550","Gauss Rifle","M-14 Camouflage Grid","Thompson 1928","Type 99", "Ak74","Hammerhead 47","LR300","GAU-19","TOS 34","SPSA 14","SVDm 2","Ballesta","Heat-Seeking RPG", "M136 Rocket Launcher"} wpn[2] = {"Nailgun","Taser","PB1s","Berta","Desert Eagle","PDW","Viper 5"} wpn[3] = {"Parachute","Grenade","Tear Gas"} current={} current[1] = {"25,26,27,30,31,33,34,35,36,37,38"} current[2] = {"1,2,3,4,5,6,7,8,22,23,24,28,29,32"} current[3] = {"16,17,18,39,46"} function weaponSwitch(weapon) if source == getLocalPlayer() then for i = 1, 3 do for j = 1, #weapons[i] do local ID = searchID(weapon) local wpnID = getElementData(getLocalPlayer(), "currentweapon_"..ID) if wpnID == wpn[i][j] then if getElementData(getLocalPlayer(), weapons[i][j]) > 0 then setElementData(getLocalPlayer(), weapons[i][j], getElementData(getLocalPlayer(), weapons[i][j]) - 1) end end end end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), weaponSwitch) function searchID(weapon) local find = false local ID = false for i = 1, 3 do for j = 1, #current[i] do if weapon == current[i][j] then ID = i find = true break end end if find then break end end return ID end
  6. Creo que no entiendes bien el concepto de un for, simplemente es un for por cada dimensión, si deseas agregar otra dimensión tienes que agregar otro for, así te ahorras poner tantos elseif. La verdad no entendí mucho lo que quisiste hacer. Prueba esto: PD: te recomiendo que aprendas a trabajar con tablas y for, es difícil de entender, pero te simplifican mucho los trabajos. weapons = {} weapons[1] = {"BM16 Pellet",".50 Barret Mag","Sig550 Mag","Gauss Rifle Mag","M-14 Camouflage Grid Mag", "Thompson 1928 Mag","Type 99 Mag","AK Mag","14mm Ammo","LR300 Mag","GAU-19 Mag","TOS 34 Pellet", "SPSA 14 Pellet","SVDm 2 Mag", "Ballesta Mag","M136 Rocket","M136 Rocket"} weapons[2] = {"Nails","Taser Battery","PB1s Mag","Berta Mag","Desert Eagle","PDW Mag","Viper 5"} weapons[3] = {"Parachute","Grenade","Tear Gas"} wpn = {} wpn[1] = {"BM16",".50 Barret","Sig550","Gauss Rifle","M-14 Camouflage Grid","Thompson 1928","Type 99", "Ak74","Hammerhead 47","LR300","GAU-19","TOS 34","SPSA 14","SVDm 2","Ballesta","Heat-Seeking RPG", "M136 Rocket Launcher"} wpn[2] = {"Nailgun","Taser","PB1s","Berta","Desert Eagle","PDW","Viper 5"} wpn[3] = {"Parachute","Grenade","Tear Gas"} current={} current[1] = {"25,26,27,30,31,33,34,35,36,37,38"} current[2] = {"1,2,3,4,5,6,7,8,22,23,24,28,29,32"} current[3] = {"16,17,18,39,46"} function weaponSwitch(weapon) if source == getLocalPlayer() then for i = 1, 3 do for j = 1, #weapons[i] do local wpnID = getElementData(getLocalPlayer(), "currentweapon_"..i) if wpnID == wpn[i][j] then for k = 1, 3 do if weapon == current[k][j] then if getElementData(getLocalPlayer(), weapons[i][j]) > 0 then setElementData(getLocalPlayer(), weapons[i][j], getElementData(getLocalPlayer(), weapons[i][j]) - 1) end end end end end end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), weaponSwitch)
  7. Quizás con un break te funcione, aunque no se si funciona el break en lua. weapons = {} weapons[1] = {"BM16 Pellet",".50 Barret Mag","Sig550 Mag","Gauss Rifle Mag","M-14 Camouflage Grid Mag", "Thompson 1928 Mag","Type 99 Mag","AK Mag","14mm Ammo","LR300 Mag","GAU-19 Mag","TOS 34 Pellet", "SPSA 14 Pellet","SVDm 2 Mag", "Ballesta Mag","M136 Rocket","M136 Rocket"} weapons[2] = {"Nails","Taser Battery","PB1s Mag","Berta Mag","Desert Eagle","PDW Mag","Viper 5"} weapons[3] = {"Parachute","Grenade","Tear Gas"} wpn = {} wpn[1] = {"BM16",".50 Barret","Sig550","Gauss Rifle","M-14 Camouflage Grid","Thompson 1928","Type 99", "Ak74","Hammerhead 47","LR300","GAU-19","TOS 34","SPSA 14","SVDm 2","Ballesta","Heat-Seeking RPG", "M136 Rocket Launcher"} wpn[2] = {"Nailgun","Taser","PB1s","Berta","Desert Eagle","PDW","Viper 5"} wpn[3] = {"Parachute","Grenade","Tear Gas"} function weaponSwitch(weapon) if source == getLocalPlayer() then for i = 1, 3 do for j = 1, #weapons[i] do local wpnID = getElementData(getLocalPlayer(), "currentweapon_"..i) if wpnID == wpn[i][j] then if getElementData(getLocalPlayer(), weapons[i][j]) > 0 then setElementData(getLocalPlayer(), weapons[i][j], getElementData(getLocalPlayer(), weapons[i][j]) - 1) break end end end end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), weaponSwitch)
  8. Para esto lo mas simple es usar tablas. De 150 lineas te lo reduje a 30 aprox: weapons = {} weapons[1] = {"BM16 Pellet",".50 Barret Mag","Sig550 Mag","Gauss Rifle Mag","M-14 Camouflage Grid Mag", "Thompson 1928 Mag","Type 99 Mag","AK Mag","14mm Ammo","LR300 Mag","GAU-19 Mag","TOS 34 Pellet", "SPSA 14 Pellet","SVDm 2 Mag", "Ballesta Mag","M136 Rocket","M136 Rocket"} weapons[2] = {"Nails","Taser Battery","PB1s Mag","Berta Mag","Desert Eagle","PDW Mag","Viper 5"} weapons[3] = {"Parachute","Grenade","Tear Gas"} wpn = {} wpn[1] = {"BM16",".50 Barret","Sig550","Gauss Rifle","M-14 Camouflage Grid","Thompson 1928","Type 99", "Ak74","Hammerhead 47","LR300","GAU-19","TOS 34","SPSA 14","SVDm 2","Ballesta","Heat-Seeking RPG", "M136 Rocket Launcher"} wpn[2] = {"Nailgun","Taser","PB1s","Berta","Desert Eagle","PDW","Viper 5"} wpn[3] = {"Parachute","Grenade","Tear Gas"} function weaponSwitch(weapon) if source == getLocalPlayer() then for i = 1, 3 do for j = 1, #weapons[i] do local wpnID = getElementData(getLocalPlayer(), "currentweapon_"..i) if wpnID == wpn[i][j] then if getElementData(getLocalPlayer(), weapons[i][j]) > 0 then setElementData(getLocalPlayer(), weapons[i][j], getElementData(getLocalPlayer(), weapons[i][j]) - 1) end end end end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), weaponSwitch)
  9. ¿Quieres un mensaje en el chat? Explícate.
  10. Obvio, te el segundo argumento pedía un string y tu le entregabas un object.
  11. Le pasas una variable del tiempo que deseas que dure la animación, y te retorna 3 variables. La verdad si estas comenzando esta seria la manera "mas fácil" de hacerlo, pero para animaciones pequeñas, es mejor usar solo getTickCount. La función interpolateBetween, es mas eficaz al momento de mover cámaras u objetos.
  12. Bc#

    Skin Shader

    "..pueden tener el mismo skin pero distinto..". Explícate.
  13. Me encontré por ahí este codigo para saber si un punto pertenece a un poligono, esto es muy util cuando queremos hacer un boton con forma de polígono y queremos buscar si nuestro puntero esta dentro del polígono. Aquí esta el código: --la tabla debe ser del estilo {{x = 10, y = 20}, {x = 59, y = 13, ...}} function isPointInPolygon(poli, px, py) local c = false; local npol = #poli; local j = npol-1; for i = 0, i < npol do j = i; if ((((poli[i].y <= py) && (py < poli[j].y)) or ((poli[j].y <= py) && (py < poli[i].y))) and (px < (poli[j].x - poli[i].x) * (py - poli[i].y) / (poli[j].y - poli[i].y) + poli[i].x)) c = not c; end return c; end --poli es una tabla que contiene cada uno de los puntos del polígono --px y py son las coordenadas del punto a buscar dentro del polígono PD: Alexs, vez que no era tan dificil.
  14. intenta usando isPlayerMuted, te quedaría mas simple.
  15. ¿Ya tienes un sistema de dimenciones? Recuerda poner un nombre mas descriptivo en tu post.
  16. Por lo que tengo entendido, no puedes leer imagenes con fileOpen, y para lo que entiendo que quieres lograr no es necesario usar esa funcion. Prueba con esto: function showReportImage(id) local img1 = id..".png" showImageInWindow(img1) end
  17. Eso viene siempre incluido en los sistemas de los userpanel, ya que no sirve de nada ganar dinero si no lo puedes usar en algo.
  18. Si quieres un script que se ajuste a tus necesidades tienes que hacerlo.
  19. Buenos tutoriales, creo que al de tablas le falto mucho contenido, ahí esta solo lo basico, si puedes hacer uno mas avanzado (si es que tienes los conocimientos) hazlo, me refiero al manejo de tablas, funciones relacionadas a estas, como hacer matrices, como recorrer una tabla, etc. Ya que solo te centraste en definirlas.
  20. El uso de herramientas depende única y exclusivamente del código que quieras hacer, ver la eficacia de un código es la fase final, donde pruebas tiempos de ejecución, una vez que te acostumbras a hacerlo de la manera mas rápida ya no tienes que estar recurriendo a hacer esto. Seria bueno que aprendieran maneras de ver la complejidad de un código, cuantos recursos consume un for por ejemplo, cuantos datos puede procesar su maquina sin caerse, bueno todo esto depende mucho de que sistema operativo y el hardware que usen. Ahí podrán ver que las diferencias en tiempos de ejecución varían de forma notable.
  21. Bc#

    DXedit?

    igual me podrias explicar? de todas formas como scripter que soy debo aprenderlo. - Salu2! Para hacerlo como dx solamente tardarías días en crear una función que te permitiera hacerlo, yo lo que hago simplemente es poner el gui encima del dx, ponerle alpha 0 al gui, luego en el evento de onclienrender para que se pueda ver lo que tiene escrito el gui usas un dxDrawText donde en el primer argumento pones guiGetTex(tugui), y listo.
  22. +1 a lo de arriba, ahora si tienes problemas con los tamaños, puedes usar esto, acomoda los tamaños como mas te guste: local sX,sY = guiGetScreenSize() function calculateScale() if sX <= 800 and sY <=600 then return 0.25 elseif sX<=1024 and sY <=768 then return 0.3 elseif sX<=1280 and sY <=720 then return 0.35 elseif sX<=1400 and sY <=900 then return 0.4 elseif sX<=1650 and sY <=1000 then return 0.45 else return 0.5 end end scale = calculateScale()
  23. Para comprender las funciones te recomiendo que hagas un script de pruebas, si comienzas editando directamente el race_client te enredaras mucho. Intenta con lo mas simple primero, --Este script no esta probado así que puede que tenga errores. function main() start = getTickCount() --Aqui obtienes el contador del momento en el que inicio el script end addEventHandler ( "onClientResourceStart", root, main) function draw() now = getTickCount() count = now - start dxDrawRectangle ( count/5, 300, 100, 100, tocolor ( 0, 0, 0, 150 ) ) -- Esto hará que el rectángulo se mueva hacia la derecha hasta salirse de la pantalla addEventHandler("onClientRender", root, draw) --Recuerda que el evento onClientRender cada vez que tu pantalla se "actualiza" hace lo que esta dentro de la función, por lo tanto count es una función que te toma el tiempo transcurrido desde que iniciaste el script hasta el infinito.
  24. interpolateBetween o solo getTickCount
×
×
  • Create New...