-
Posts
2,869 -
Joined
-
Last visited
Everything posted by Alexs
-
Supongo que no hay problemas con que de mi opinión: Me parece excelente que un servicio de hosting como este cierre finalmente.
-
Es una de esas funciones que se aprenden a utilizar experimentando con ellas, no es tan complicada como parece. Mira este ejemplo de la wiki: local enabled = false addCommandHandler("ccam", function() enabled = not enabled if enabled then start = getTickCount() dx, dy, dz, lx, ly, lz = getCameraMatrix() addEventHandler("onClientPreRender", root, interpolateCam) else start = nil setCameraTarget(localPlayer) removeEventHandler("onClientPreRender", root, interpolateCam) end end) function interpolateCam() local now = getTickCount() local endTime = start + 2000 local elapsedTime = now - start local duration = endTime - start local progress = elapsedTime / duration local px, py, pz = getElementPosition(localPlayer) local x, y, z = interpolateBetween ( dx, dy, dz, dx+4, dy+4, dz, progress, "OutQuad") setCameraMatrix(x, y, z, px, py, pz+0.6, 0, 0) end
-
Tendrás que utilizar 'onClientRender' para conseguir movimiento. Te recomiendo, para mantener la eficiencia, utilizar 'interpolateBetween' y no un objeto.
-
Como cambiar el spawn de los Zombies de slothbot. Dayz.
Alexs replied to XodiaCompany's topic in Scripting
¿Eliminaste el mapa original de San Andreas? -
Tu mejor opción seria utilizar 'dxDrawMaterialLine3D' directamente.
-
No eres el único con este problema: viewtopic.php?f=91&t=78170&p=716311 Supongo que habrá algo mal en la documentación existente en la wiki.
-
¿Para qué? Eso ya esta explicado en el ejemplo: Es decir: Los primeros dos valores son coordenadas bi-dimensionales del cursor relativas a la pantalla: cursorX ("sX" en mi código) va desde 0 (lado izquierdo de la pantalla) a 1 (lado derecho de la pantalla); cursorY ("sY" en mi código) va desde 0 (zona superior de la pantalla) a 1 (zona inferior de la pantalla). Continuando con la explicación, para realizar la ubicación visual del cursor (es decir, conocer dentro de cual rectángulo esta posicionado) es necesario utilizar solo coordenadas, pero esto es un problema ya que, tal como expliqué, en la tabla están almacenadas coordenadas y valores, por lo tanto, se debe realizar una suma para convertir estos valores en coordenadas efectivas para nuestros fines: "POSICION FINAL X": La suma entre "POSICION X" y "ANCHO". "POSICION FINAL Y": La suma entre "POSICION Y" y "ALTO". Espero que esto aclare todas tus dudas, en caso de que no sea así, puedes hablarme por Skype para resolver los detalles específicos y otras dudas.
-
Según la wiki, el código que utilizaste dibuja un rectángulo en medio del mapa, ¿comprobaste esto?
-
El código que utilizas tiene los mismo problemas que el de @Tomas, las variables están de más y no se ajustaría a otras resoluciones. Realizare una explicación detallada de cada paso que seguí para escribir el código que publique como ejemplo: Para comenzar, los datos de los rectángulos que se dibujan están almacenados en la siguiente tabla: local gms = { [1] = { 0.04, 0.80, 0.20, 0.20 }, --Classic [2] = { 0.28, 0.80, 0.20, 0.20 }, --Time [3] = { 0.52, 0.80, 0.20, 0.20 }, --Teams [4] = { 0.76, 0.80, 0.20, 0.20 } --Score } Con el fin de ejecutar esta explicación de manera amena, utilizare solo los datos que anote como 'Classic'. [1] = { 0.04, 0.80, 0.20, 0.20 } --Classic La estructura de esta tabla es: [ID] = { POSICIÓN X, POSICIÓN Y, ANCHO, ALTO } La "ID" es aleatoria e incluso innecesaria, pues no realizo ordenamiento alguno; el resto de los datos son: "POSICION X": Coordenada del eje horizontal de la pantalla desde donde se origina el dibujado del rectángulo. "POSICION Y": Coordenada del eje vertical de la pantalla desde donde se origina el dibujado del rectángulo. "ANCHO": Valor que define el ancho del rectángulo, es decir, hasta donde se dibujara el rectángulo a partir de la coordenada en el eje horizontal (X). "ALTO": Valor que define el alto del rectángulo, es decir, hasta donde se dibujara el rectángulo a partir de la coordenada en el eje vertical (Y). Ahora, es necesario que se entienda lo siguiente: local sX, sY, _, _, _ = getCursorPosition() --Classic if sX >= gms[1][1] and sX <= gms[1][1]+gms[1][3] and sY >= gms[1][2] and sY <= gms[1][2]+gms[1][4] then if selected ~= 1 then selected = 1 bR, bG, bB = unpack( gColors[1] ) fadeSize = 0.6 end end --RECORDAR QUE LA TABLA 'gms' es: local gms = { [1] = { 0.04, 0.80, 0.20, 0.20 }, --Classic [2] = { 0.28, 0.80, 0.20, 0.20 }, --Time [3] = { 0.52, 0.80, 0.20, 0.20 }, --Teams [4] = { 0.76, 0.80, 0.20, 0.20 } --Score } Si conoces el funcionamiento de las tablas en Lua comprenderás que esta condicional resulta en: if sX >= 0.04 and sX <= 0.04+0.20 and sY >= 0.80 and sY <= 0.80+0.20 then En caso de que te preguntes por qué se utilizan valores entre 0 y 1, esto es debido a la función 'getCursorPosition': Es decir: Los primeros dos valores son coordenadas bi-dimensionales del cursor relativas a la pantalla: cursorX ("sX" en mi código) va desde 0 (lado izquierdo de la pantalla) a 1 (lado derecho de la pantalla); cursorY ("sY" en mi código) va desde 0 (zona superior de la pantalla) a 1 (zona inferior de la pantalla). Continuando con la explicación, para realizar la ubicación visual del cursor (es decir, conocer dentro de cual rectángulo esta posicionado) es necesario utilizar solo coordenadas, pero esto es un problema ya que, tal como expliqué, en la tabla están almacenadas coordenadas y valores, por lo tanto, se debe realizar una suma para convertir estos valores en coordenadas efectivas para nuestros fines: "POSICION FINAL X": La suma entre "POSICION X" y "ANCHO". "POSICION FINAL Y": La suma entre "POSICION Y" y "ALTO". Espero que esto aclare todas tus dudas, en caso de que no sea así, puedes hablarme por Skype para resolver los detalles específicos y otras dudas.
-
Es distinto, en mis códigos los datos son utilizados y aprovechados en toda oportunidad, en el tuyo son ajenos al dibujado de los rectángulos e incluso inútiles en términos económicos. * @lLinux no se me ocurre una explicación mas simple, pido al resto de mis compañeros del foro que, por favor, realicen una aclaración en términos más sencillos.
-
Tendrás que idear un método que te permita conseguir a los jugadores que deseas dañar, por mi parte, no se me ocurre ninguno que sea eficiente y funcional para el lado del servidor.
-
Según veo, este código le causaría daño exclusivamente a quien utilice el comando 'espada-combo'.
-
¿Esto sucede siempre o solo en situaciones especificas?
-
La suma es realizada por un motivo simple referente a la función 'dxDrawRectangle'; si revisas la documentación existente notaras que para dibujar estos rectángulos se utilizan posiciones iniciales y tamaños, por lo tanto, para conseguir las posiciones finales ejecuto una suma entre la posición inicial y el tamaño, con esto consigo los datos necesarios (como ya mencioné, posición inicial y posición final del rectángulo dibujado) para realizar la comparación con la posición del cursor. * En síntesis: mis datos son la posición inicial X, la posición inicial Y, el ancho y el largo, pero para realizar la comparación necesito la posición final X (se consigue sumando la posición inicial X con el ancho) y la posición final Y (se consigue sumando la posición inicial Y con el largo). * Espero que esta explicación sea comprensible, en caso de que no sea así avísame y haré un diagrama que la grafique.
-
El contenido del recurso se ajusta a las distintas resoluciones de pantalla. La información referida a la posición del cursor es conseguida utilizando 'getCursorPosition' y los datos de los rectángulos están dentro de una tabla; el resto son comparaciones simples. * Todos los datos comparados (incluso los conseguidos mediante 'getCursorPosition') son relativos a la pantalla, es decir, son valores entre 0 y 1.
-
Si. * En el futuro me abstendré de responder a tus preguntas obvias; evita hacerlas, por favor.
-
Tengo un recurso que hace algo parecido; es algo antiguo y poco eficiente, pero te dejare el código: local sW, sH = guiGetScreenSize() local lobFont = dxCreateFont ( 'Lobby/Files/LobbyFont.ttf', 0.0234375*sH ) local contFont = dxCreateFont ( 'Lobby/Files/ContentFont.ttf', 0.026041667*sH ) local gms = { [1] = { 0.04, 0.80, 0.20, 0.20 }, --Classic [2] = { 0.28, 0.80, 0.20, 0.20 }, --Time [3] = { 0.52, 0.80, 0.20, 0.20 }, --Teams [4] = { 0.76, 0.80, 0.20, 0.20 } --Score } local gIms = { [1] = { 0.04*sW, 0.80*sH, 0.24*sW, sH }, --Classic [2] = { 0.28*sW, 0.80*sH, 0.48*sW, sH }, --Time [3] = { 0.52*sW, 0.80*sH, 0.72*sW, sH }, --Teams [4] = { 0.76*sW, 0.80*sH, 0.96*sW, sH } --Score } local gColors = { [1] = {0, 110, 240}, [2] = {240, 110, 0}, [3] = {110, 240, 0}, [4] = {240, 0, 110} } local widgets = { [1] = { 0.11*sW, 0.575*sH, 0.88*sW, 0.78*sH }, --Gamemode Description [2] = { 0.35*sW, 0.5*sH, 0.65*sW, 0.6*sH }, --Gamemode Name [3] = { 0.00, 0.25, 0.9999, 0.20 }, --Middle Square [4] = { 0.29*sW, 0.06*sH, 0.42*sW, 0.17*sH }, --Logo [5] = { 0.35*sW, 0.3*sH, 0.65*sW, 0.4*sH } --Lobby Text } local gameNames = { [1] = 'Classic Battle' , [2] = 'Time Battle' , [3] = 'Cooperative', [4] = 'Get the Points' } local shortNames = { [1] = 'Classic\nShooting' , [2] = 'Time\nBattle' , [3] = 'Teams\nBattle', [4] = 'Point\nCollector' } local gameDescriptions = { [1] = 'Acaba con todos \ny evita ser #FF0000eliminado#000000!', [2] = '#FF0000Asesina #000000mas que nadie\n antes de que acabe el tiempo!', [3] = 'Protege a tu equipo\n y evita #FF0000morir#000000!', [4] = 'Ve consiguiendo puntos, \npero si #ff0000mueres #000000los perderas!' } local bR, bG, bB = 0, 0, 0 --Default Colored Square local fR, fG, fB = 0, 0, 0 local selected = false showPlayerHudComponent( 'all', false ) local appearing = false alpha = 0 function showLobby( show ) if show then addEventHandler( 'onClientRender', root, drawLobby ) appearing = true elseif not show then appearing = false setTimer( function() removeEventHandler( 'onClientRender', root, drawLobby ) end, 2590, 1 ) end fadeCamera( show, 2.5 ) showChat( not show ) showCursor( show ) end function drawLobby() if appearing then alpha = math.min( 255, alpha + 15 ) else alpha = math.max( 0, alpha - 20 ) end dxDrawRectangle( 0, 0, sW, sH, tocolor( 245, 245, 245, alpha ), false ) --Background dxDrawRectangle( widgets[3][1]*sW, widgets[3][2]*sH, widgets[3][3]*sW, widgets[3][4]*sH, tocolor( fR, fG, fB, alpha ), false ) dxDrawText( 'Lobby', widgets[5][1], widgets[5][2], widgets[5][3], widgets[5][4], tocolor( 245, 245, 245, alpha ), 1.12, lobFont, 'center', 'center' ) dxDrawText( selected and gameNames[selected] or '', widgets[2][1], widgets[2][2], widgets[2][3], widgets[2][4], tocolor( fR, fG, fB, alpha ), 0.75, contFont, 'center', 'top' ) dxDrawText( selected and gameDescriptions[selected] or '', widgets[1][1], widgets[1][2], widgets[1][3], widgets[1][4], tocolor( 0, 0, 0, alpha ), 0.6, contFont, 'center', 'top', false, false, false, true ) for id =1,4 do dxDrawRectangle( gms[id][1]*sW, gms[id][2]*sH, gms[id][3]*sW, gms[id][4]*sH, tocolor( gColors[id][1],gColors[id][2],gColors[id][3], alpha), false ) dxDrawText( shortNames[id]..'\n(0/0)', gIms[id][1] ,gIms[id][2], gIms[id][3], gIms[id][4], tocolor( 245, 245, 245, alpha ), selected == id and math.min( 0.85, fadeSize ) or 0.6, contFont, 'center', 'center' ) end if selected then fadeSize = fadeSize + 0.06 end --Smooth n' Fading if isCursorShowing() then local sX, sY, _, _, _ = getCursorPosition() --Classic if sX >= gms[1][1] and sX <= gms[1][1]+gms[1][3] and sY >= gms[1][2] and sY <= gms[1][2]+gms[1][4] then if selected ~= 1 then selected = 1 bR, bG, bB = unpack( gColors[1] ) fadeSize = 0.6 end --Time elseif sX >= gms[2][1] and sX <= gms[2][1]+gms[2][3] and sY >= gms[2][2] and sY <= gms[2][2]+gms[2][4] then if selected ~= 2 then selected = 2 bR, bG, bB = unpack( gColors[2] ) fadeSize = 0.6 end --Teams elseif sX >= gms[3][1] and sX <= gms[3][1]+gms[3][3] and sY >= gms[3][2] and sY <= gms[3][2]+gms[3][4] then if selected ~= 3 then selected = 3 bR, bG, bB = unpack( gColors[3] ) fadeSize = 0.6 end --Score elseif sX >= gms[4][1] and sX <= gms[4][1]+gms[4][3] and sY >= gms[4][2] and sY <= gms[4][2]+gms[4][4] then if selected ~= 4 then selected = 4 bR, bG, bB = unpack( gColors[4] ) fadeSize = 0.6 end else if selected then selected = false bR, bG, bB = 0, 0, 0 end end --Rainbow Color --Red if fR >= bR then fR = math.max( bR, fR - 25 ) elseif fR <= bR then fR = math.min( bR, fR + 25 ) end --Blue if fB >= bB then fB = math.max( bB, fB - 25 ) elseif fB <= bB then fB = math.min( bB, fB + 25 ) end --Green if fG >= bG then fG = math.max( bG, fG - 25 ) elseif fG <= bG then fG = math.min( bG, fG + 25 ) end end end --showLobby( true ) Lo que hace es comparar si la posición del cursor esta dentro de las posiciones de los rectángulos dibujado. Te advierto que mi código es un tanto largo, por lo tanto, puede ser difícil de comprender al principio.
-
Lo que sucede es que este recurso esta hecho para detectar etiquetas en el nombre de los jugadores y asignarlos a un equipo, por ejemplo: local names ={"Los sobrevivientes de ZMB", 'X TEAM'}--Nombre del Team local tags ={"%[ZMB%]", '%|X%|'} local colors ={"#FF0000", "#c0c0c0"}--Color En este caso, los usuarios que tengan "[ZMB]" en su nombre serian asignados al equipo "Los sobrevivientes de ZMB". * @depato123 Si, la mayor parte de las veces da igual si utilizas comillas simples o dobles (hay excepciones, pero son bastante especificas).
-
local names ={"Los sobrevivientes de ZMB"}--Nombre del Team local tags ={"#F89515~Ni#000000co~", 'TAG2', 'TAG3'}--Tag acá probé poniendo mas nombres pero no funciona. local colors ={"#FF0000"}--Color Es la idea mas básica que se me ocurrió, añadir mas valores a la tabla. * En la linea 12 del código que publicaste hay un carácter (") de sobra.
-
¿Podrías mostrarnos el resto del código? * @Tomas tu respuesta no tiene el mas mínimo sentido, si lo deseas, háblame por mensaje privado y te doy un par de enlaces a tutoriales de Lua.
-
Error CC23 La conexion ha expirado
Alexs replied to soke27's topic in Ayuda relacionada al cliente/servidor
¿Estas seguro de que no son problemas de conexión? ¿Internet de poca potencia o servidores muy lejanos a tu posición? -
Eso es por utilizar un trainer, es decir, un programa que se podría categorizar como cheat. * http://en.wikipedia.org/wiki/Trainer_(games)
-
¿Podrías publicar una captura de pantalla del problema en cuestión? * Seria bien recibido que, además, nos especifiques una lista de los servidores a los que has intentado entrar.