Jump to content

Arsilex

Members
  • Posts

    1,410
  • Joined

  • Last visited

Everything posted by Arsilex

  1. Has probado el código? Que te he posteado
  2. No estoy seguro pero debería de funcionar. local autores = {} local outputs = {} local informacionTotal = {} function output1() local text = guiGetText ( nombreBox ) local text1 = guiGetText ( mensajeBox ) if ( (guiCheckBoxGetSelected(staffCheck) == false) and (guiCheckBoxGetSelected(gobiernoCheck) == false) and (guiCheckBoxGetSelected(faCheck) == false) and (guiCheckBoxGetSelected(swatCheck) == false) and (guiCheckBoxGetSelected(desempleadosCheck) == false) and (guiCheckBoxGetSelected(desocupadosCheck) == false) and (guiCheckBoxGetSelected(emergencyCheck) == false) and (guiCheckBoxGetSelected(civilCheck) == false) and (guiCheckBoxGetSelected(pandillerosCheck) == false) and (guiCheckBoxGetSelected(policiasCheck) == false) and (guiCheckBoxGetSelected(criminalesCheck) == false) and (guiCheckBoxGetSelected(honourablesCheck) == false) and (guiCheckBoxGetSelected(hitCheck) == false) and (guiCheckBoxGetSelected(noticiasCheck) == true)) then if (text1 ~= "") then textito14 = "\n#00FF00NOTICIAS: #FFFFFF "..text1.."\n" triggerServerEvent("onClientMessage", localPlayer, textito14) table.insert(autores, getPlayerName(localPlayer)) table.insert(outputs, textito14) end end for k,v in ipairs(autores) do for _,i in ipairs(outputs) do cadenitaTexto = tostring(autores[v].."agregó un output cuyo texto era: "..outputs[i].."\n") table.insert(informacionTotal, cadenitaTexto) end end end addEventHandler("onClientGUIClick", showingButton, output1) function mostrarLogs() if (guiGetVisible(ventanaLogs) == true) then local textoString = table.concat(informacionTotal) guiSetText(memoLogs, textoString) end end function mostrarLogs() if (guiGetVisible(ventanaLogs) == true) then local textoString = table.concat(informacionTotal) guiSetText(memoLogs, textoString) end end Eso del error en que linea exactamente te sale?
  3. Solo te pasa en un servidor. Si es asi entra en el servidor y cuando te kicke abre F8 allí te sale una información de AC postea aquí lo que sale.
  4. Buenos como estaba aburrido y sigo en youtube a un programador de la universidad de NY decidí ver uno de sus vídeos y me dije porque no hacerlo en mta así que aquí esta: Os dejo el vídeo en el cual código me base para hacer esto. Source local sX, sY = guiGetScreenSize() local w, h = 600, 700 local x, y = sX*0.5 - w*0.5, sY*0.5 - h*0.5 local len = 100 local angleOffset = 10 local separation = 20 local tick = getTickCount() local baseX, baseY = x + w*.5, y + h local updateLen = false local nodes = {} function setup() table.insert(nodes, {x = baseX, y = baseY - len, angle = 300, len = len, parent = 0, haveChildres = false}) end addEventHandler("onClientResourceStart", resourceRoot, setup) function renderWorkStation() --Render Background dxDrawRectangle(x, y, w, h, tocolor(50, 50, 50, 255)) for i = 1, #nodes do branch(i) end --Create new Nodes if getTickCount() - tick > 500 then for i = 1, #nodes do local node = nodes[i] if not node.haveChildres and len > 2 then createChildrens(i) node.haveChildres = true end end tick = getTickCount() updateLen = true end if updateLen then len = len*0.67 updateLen = false end end addEventHandler("onClientRender", root, renderWorkStation) function getXYFromAngle(angle, len) return math.cos( math.rad( angle ) ) * len, math.sin( math.rad( angle ) ) * len end function createChildrens(index) local parent = nodes[index] local angle = parent.angle - angleOffset --Right local startX, startY = getXYFromAngle(angle, len) table.insert(nodes, {x = startX + parent.x, y = startY + parent.y, angle = angle + separation*2, len = len, parent = index}) --outputChatBox("[Node] Creating node ID => "..#nodes.. " Angle => "..angle) --Left local startX, startY = getXYFromAngle(angle - separation*2, len) table.insert(nodes, {x = startX + parent.x, y = startY + parent.y, angle = angle - separation, len = len, parent = index}) --outputChatBox("[Node] Creating node ID => "..#nodes.. " Angle => "..-angle) end function branch(index) local node = nodes[index] if index == 1 then --dxDrawRectangle(node.x - 2.5, node.y - 2.5, 5, 5, tocolor(255, 0, 0, 255)) dxDrawLine(node.x, node.y, baseX, baseY) else --dxDrawRectangle(node.x - 2.5, node.y - 2.5, 5, 5, tocolor(255, 0, 0, 255)) local color = node.len < 20 and tocolor(75, 200, 75) or tocolor(255, 255, 255) dxDrawLine(node.x, node.y, nodes[node.parent].x, nodes[node.parent].y, color) end end addCommandHandler("changeAngle", function(cmd, angle, sep) angleOffset = tonumber(angle) separation = tonumber(sep) len = 100 nodes = {} setup() end) Esto lo hice porque me aburria así que no es un código ni bien organizado ni pensado para un servidor simplemente for-fun
  5. No tendrás algún cleo mod o plugin para GTA instalado ya sea ENB o el de cámaras creo que era Hackcam o algo asi
  6. Client-side local myText = "#00FF00 NOTICIAS: #ffFFff "..text1.."" triggerServerEvent("onClientMessage", localPlayer, myText) Server-side addEvent("onClientMessage", true) addEventHandler("onClientMessage", root, function(message) outputChatBox(message, root, 231, 217, 176, true) end)
  7. Buenas, principalmente porque no le estas diciendo al script que te lo ponga en color outputChatBox ( string text [, int r=231, int g=217, int b=176, bool colorCoded=false ] ) Esa es la syntax de outputChatBox en client-side eso quiere decir que aparte del string que tu tienes definido para que aparezca en color debes de poner el colorCoded en true que por defecto esta en false. outputChatBox("\n#00FF00 NOTICIAS: #ffFFff "..text1.."\n", 231, 217, 176, true) Así te debería de funcionar a la perfección el color.
  8. Si donde hosteas el servidor tiene poco rendimiento es decir un PC portátil o algo así y tienes una cantidad muy grande de recursos/scripts suele tardar mucho en arrancar el servidor te sugiero abrir la consola del servidor y esperar unos 5 - 10 minutos a ver que pasa. Y para la próxima haz el favor de mirarte este post para saber como pedir ayuda.
  9. Estos son los aportes que creo que deberían de quedarse.
  10. Yo opino que todo los que son aportes reales se deberían de guardar ya que detrás de ellos hubo una persona que hizo el aporte par la comunidad y así ayudar a la gente que no pueda o no sepa hacerlo por si mismo. Así que eso creo que los aportes deberían de quedarse.
  11. Arsilex

    Crear agua

    El agua no se genera si las coordenadas no se ponen en el orden correcto. Es decir: bottom left (south-west) bottom right (south-east) top left (north-west) top right (north-east)
  12. Si quieres que tu script siga funcionando client-side es decir el bind y tal debes usar un triggerServerEvent cuando vayas a encender el motor ya que si no solo se enciende el motor para el jugador que presiono la tecla "K"
  13. Asegúrate de que tienes las imágenes así: imagenes/1.png imagenes/2.png imagenes/3.png imagenes/4.png imagenes/5.png ... Es decir las imágenes deben de tener de nombre 1.png y deben estar en la carpeta imágenes partiendo del archivo meta.xml de tu script. Esta seria la syntax que tienes que tener.
  14. local fire = {} addEventHandler ( "onPlayerWeaponSwitch", root, function ( _, currentWeaponID ) if currentWeaponID == 8 then fire[source] = createObject ( 1337, 5540.6654, 1020.55122, 1240.545, 90, 0, 0 ) exports.bone_attach:attachElementToBone(fire[source], localPlayer, 12, -0.5, 0, 0.1, 0, 0, 0) else if fire[source] then destroyElement(fire[source]) fire[source] = nil end end end) Supongo que estas hablando de algo tal que así..
  15. Podrías decirnos a que te refieres con que no es la katana? El arma que tienes en la mano, el arma que has clickeado, el arma que has puesto usando el comand fire? QUE ES LA KATANA?
  16. Usando esta funcion function getElementMatrix(element) local rx, ry, rz = getElementRotation(element, "ZXY") rx, ry, rz = math.rad(rx), math.rad(ry), math.rad(rz) local matrix = {} matrix[1] = {} matrix[1][1] = math.cos(rz)*math.cos(ry) - math.sin(rz)*math.sin(rx)*math.sin(ry) matrix[1][2] = math.cos(ry)*math.sin(rz) + math.cos(rz)*math.sin(rx)*math.sin(ry) matrix[1][3] = -math.cos(rx)*math.sin(ry) matrix[1][4] = 1 matrix[2] = {} matrix[2][1] = -math.cos(rx)*math.sin(rz) matrix[2][2] = math.cos(rz)*math.cos(rx) matrix[2][3] = math.sin(rx) matrix[2][4] = 1 matrix[3] = {} matrix[3][1] = math.cos(rz)*math.sin(ry) + math.cos(ry)*math.sin(rz)*math.sin(rx) matrix[3][2] = math.sin(rz)*math.sin(ry) - math.cos(rz)*math.cos(ry)*math.sin(rx) matrix[3][3] = math.cos(rx)*math.cos(ry) matrix[3][4] = 1 matrix[4] = {} matrix[4][1], matrix[4][2], matrix[4][3] = getElementPosition(element) matrix[4][4] = 1 return matrix end Pero claro la cosa esta en sacar el offset de cada vehículo a mano. Sigo pensando que es mucho mas eficiente y rápido editar el archivo .dff para dejar los faros como un componente y con la función getVehicleComponentPosition con el valor de base="root" sacar la posición exacta.
  17. Aunque obtengas la posiciones exactas para cada vehículo de los faros traseros y delanteros y tal no podrás de ninguna manera remplazar la textura de ellos si no los tienes separados bueno podrías también remplazar la textura general de los vehículos cada vez que usas el intermitente puede que funcione
  18. Que yo sepa solo se puede hacer separando la textura de los faros del vehículo es decir separas los faros y les asignas una nueva textura a la cual dentro del juego mediante shader aplicas una u otra imagen depende del estado del intermitente.
  19. Arsilex

    The last reply

    Is there any possibility of winning this game?
  20. Si no me equivoco el código que he publicado hace exactamente ese efecto, el ultimo código me refiero.
  21. addEventHandler( "onClientRender", root, function() local cx, cy, cz = getCameraMatrix() local lx, ly, lz = getElementPosition( localPlayer ) local jugadores = getElementsByType( "player" ) for i=1, #jugadores do local p = jugadores[i] --if players[ p ] then local x, y, z = getElementPosition( p ) local dist = getDistanceBetweenPoints3D( lx, ly, lz, x, y, z ) if dist < 15 then if isLineOfSightClear( lx, ly, lz, x, y, z, true, false, false, true, false, false, false, localPlayer ) then local name = getPlayerName( p ) local bone = { getPedBonePosition( p, 5 ) } local c = { getScreenFromWorldPosition( bone[1], bone[2], bone[3]+0.3 ) } if c[1] and c[2] then dxDrawText(name, c[1], c[2], c[1], c[2], tocolor( 0, 0, 0 ), 1, font, "center", "center") dxDrawText(name, c[1], c[2], c[1], c[2], tocolor( 255, 145, 0 ), 1, font, "center", "center") end end end --end end end) Y si realmente quieres recibir los valores como array te sugiero usar OOP ya que te devuelve esos valores en forma de Vector3
  22. No puedes hacer eso. Es decir el table.insert tiene 2 argumentos 1º Tabla 2º Valor En este caso como en la tabla inicial tienes como index al jugador no puedes meter directamente el valor con table.insert si no defines players[player] = {} Ya que el table.insert solo funciona con arrays. No es remplazar es asignar un dato ya que estamos asignando el dado al jugador si quiere asignar varios datos simplemente usa una array dentro players[player] y dentro de esa array como dije anteriormente usa table.insert. Si realmente estas empeñado en seguir usando table.insert este es el código correcto local players = {} addEventHandler("onPlayerJoin", root, function() if source and isElement(source) then players[source] = {} end end) function insertarEnTabla() local player = getPlayerFromName("PrivateBeach") table.insert(players[player], "Este es un valor.") end insertarEnTabla()
  23. local players = {} function insertarEnTabla() local player = getPlayerFromName("PrivateBeach") players[player] = "Esto es un dato" end insertarEnTabla()
  24. Si esto te pasa cada vez que entras al servidor entonces el servidor tiene o bien el puerto de descargas cerrado o están usando HTTP para descargas y por alguna razón falla Si te pasa esto de vez en cuando, deberías de revisar tu conexión a Internet.
×
×
  • Create New...