-
Posts
2,869 -
Joined
-
Last visited
Everything posted by Alexs
-
¿Podrían hacer una pequeña demostración de las capacidades de su 'sistema de mascotas'?
-
Do this: RELATIVE VALUE * SCREEN SIZE
-
[Proyecto] Zone Gaming | Nueva Comunidad
Alexs replied to Noiz3's topic in Servidores en donde jugar
Tengo ganas de jugarlo, este es el único proyecto al que realmente le tengo fe. -
Error al escribir "openports" en la consola.
Alexs replied to Finijumper's topic in Ayuda relacionada al cliente/servidor
¿Comprobaste que MTA Server no este siendo bloqueado por algún Firewall? -
Preguntare lo mismo de siempre, ¿Que ofrece tu servidor que sea auténticamente original o novedoso?
-
Programación Orientada a Objetos, es un paradigma de programación que fue incorporado de manera importante en la ultima versión de MTA. * Te dejo el link al articulo de Wikipedia.
-
Me siento halagado, gracias por el comentario.
-
Ahora mismo con la salida de la versión 1.4 puede ser una prioridad hacer un tutorial sobre el uso de matrices, vectores y la capacidad de estos.
-
No me parece suficiente argumento como para escribir códigos que tarden el doble o el triple en ejecutarse, la eficiencia y la rapidez de ejecución siguen siendo una prioridad para mi.
-
20 milisegundos en comparación a 38 me parece una diferencia demasiado alta como para ignorarla, sin embargo estuve comprobando y en ciertos casos OOP resulta igual o más conveniente que un método estándar (cabe mencionar que OOP en otras ocasiones se tarda 3 ó 4 veces mas), de todas formas no me parece un gran cambio ni en cuanto a comodidad ni a posibilidades, seguiré aconsejando utilizar las formas procedimentales. * No me tomare la molestia ni el tiempo de hablar sobre traducciones incorrectas, por favor evitalo.
-
He hecho una comprobación sencilla, inicialmente iba a darles la razón, pero tras comprobar un par de veces note que OOP inicialmente puede tardar ligeramente menos que el método estándar, pero tras un par de ejecuciones el tiempo de ejecución aumenta de manera exponencial. * Ademas OOP posee una variación del tiempo de ejecución que varia erraticamente, mientras que de manera procedimental (la palabra 'procedural' no existe en el idioma español) los tiempos se mantienen constantes en todo momento.
-
En términos de eficiencia OOP es una aberración, sobretodo en un juego en línea donde cada milesima de segundo importa. A mi parecer la comodidad que OOP significa se ve completamente opacada por su poca o nula eficiencia, evitarla tanto como sea posible debe ser una prioridad.
-
Ignora todo lo referente al código que no tenga que ver con el diseño en si, ademas esta hecho en la 1.3. * Ninguna de las funciones para calculo de posiciones que utilice es mía, ambas están publicadas en la sección 'Useful Functions'.
-
Lo probé en este PC, que no es nada potente, y corre sin dar absolutamente ningún problema.
-
Lamentablemente eso no es posible, lo mejor que podrías hacer es reemplazar solo las texturas utilizando un shader.
-
Hace un rato publique este vídeo: Para todos aquellos que busquen conocer que funciones utilice, les dejo el código: CLIENTE: addEventHandler("onClientResourceStart", resourceRoot, function() myRenderTarget = dxCreateRenderTarget( 796, 512, true ) end ) text = '' cNumber = 1 cName = 'ROJO' cR, cG, cB = 245, 0, 0 oR, oG, oB = 245, 0, 0 state = 0 alpha = 0 tColors = { [1]= {'ROJO', 245, 0, 0}, [2]= {'AZUL', 0, 0, 230}, [3]= {'AMARILLO', 245, 223, 0}, [4]= {'VERDE', 0, 240, 0}, [5]= {'PURPURA', 157, 0, 214}, [6]= {'ROSA', 255, 15, 220}, [7]= {'PLATA', 192, 192, 192}, [8]= {'MARRON', 100, 50, 0}, [9]= {'BLANCO', 255, 255, 255}, [10]= {'NEGRO', 0, 0, 0} } function alternateColor( key ) if key == 'arrow_l' then cNumber = math.max( cNumber - 1, 1 ) elseif key == 'arrow_r' then cNumber = math.min( cNumber + 1, #tColors ) end if tColors[cNumber] then --outputChatBox( cNumber ) local name, r, g, b = unpack( tColors[cNumber] ) cName = name oR, oG, oB = r, g, b end end function getPositionFromElementOffset(element,offX,offY,offZ) local m = getElementMatrix ( element ) local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1] local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2] local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3] return x, y, z end function draw3DMenu() if state == 1 then alpha = math.min(alpha + 12.5, 255) elseif state == 2 then alpha = math.max( alpha - 10, 0 ) end if cR > oR then cR = math.max(cR - 8, oR) elseif cR < oR then cR = math.min(cR + 8, oR) end if cG > oG then cG = math.max(cG - 8, oG) elseif cG < oG then cG = math.min(cG + 8, oG) end if cB > oB then cB = math.max(cB - 8, oB) elseif cB < oB then cB = math.min(cB + 8, oB) end if myRenderTarget then dxSetRenderTarget( myRenderTarget, true ) dxDrawRectangle( 0, 0, 796, 512, tocolor( 128, 128, 128, math.max(alpha - 72, 0) ) ) dxDrawText( 'Vehiculo:', 32, 32, 764, 64, tocolor( 255, 255, 255, alpha ), 2.4, 'sans', 'left', 'center', true, true ) dxDrawRectangle( 64, 88, 668, 64, tocolor( 255, 255, 255, alpha ) ) dxDrawText( text, 66, 90, 732, 152, tocolor( 0, 0, 0, alpha ), 2.8, 'sans', 'center', 'center', true, true ) dxDrawText( '[<] '..cName..' [>]', 66, 184, 732, 248, tocolor( cR, cG, cB, alpha ), 2.4, 'sans', 'center', 'center', true, true ) dxDrawRectangle( 270, 296, 256, 132, tocolor( math.max(cR-20, 0), math.max(cG-20, 0), math.max(cB-20, 0), alpha) ) dxDrawRectangle( 282, 308, 232, 108, tocolor( 128, 128, 128, alpha ) ) dxDrawText( 'ACEPTAR', 286, 312, 512, 412, tocolor( 255, 255, 255, alpha ), 1.2, 'bankgothic', 'center', 'center', true, true ) dxSetRenderTarget() if x and y and z then dxDrawMaterialLine3D( x - 0.08, y, z + 0.7, x - 0.08, y, z - 0.7, myRenderTarget, 2.4, tocolor(255,255,255,255), x2, y2, z2 ) end end end function receptInput(char) if char then text = #text < 21 and text..char or text end end function deleteChar() if #text > 0 then text = (text):sub( 1, #text-1) end end function createCar() if getVehicleModelFromName( text ) then triggerServerEvent( 'createVeh', localPlayer, text, oR, oG, oB, ox, oy, oz ) state = 2 setTimer( function() removeEventHandler( 'onClientRender', root, draw3DMenu ) removeEventHandler( 'onClientCharacter', root, receptInput ) unbindKey( 'arrow_l', 'down', alternateColor ) unbindKey( 'arrow_r', 'down', alternateColor ) unbindKey( 'enter', 'down', createCar ) unbindKey( 'backspace', 'down', deleteChar ) toggleAllControls( true ) end, 1000, 1) end end addCommandHandler( 'cv', function() if state ~= 1 then x, y, z = getPositionFromElementOffset(localPlayer,0,1,1.2) x2, y2, z2 = getPedBonePosition( localPlayer, 8 ) ox, oy, oz = getPositionFromElementOffset(localPlayer,0,5,0.65) cR, cG, cB = 245, 0, 0 oR, oG, oB = 245, 0, 0 cNumber = 1 cName = 'ROJO' addEventHandler( 'onClientRender', root, draw3DMenu ) text = '' addEventHandler( 'onClientCharacter', root, receptInput ) state = 1 bindKey( 'arrow_l', 'down', alternateColor ) bindKey( 'arrow_r', 'down', alternateColor ) bindKey( 'enter', 'down', createCar ) bindKey( 'backspace', 'down', deleteChar ) toggleAllControls( false, true, true ) end end ) SERVIDOR: function findRotation(x1,y1,x2,y2) local t = -math.deg(math.atan2(x2-x1,y2-y1)) if t < 0 then t = t + 360 end; return t; end addEvent( 'createVeh', true ) addEventHandler( 'createVeh', root, function( text, oR, oG, oB, ox, oy, oz ) local x, y, z = getElementPosition( source ) local rz = findRotation(ox, oy, x, y) local veh = createVehicle( getVehicleModelFromName( text ), ox, oy, oz, 0, 0, rz-90 ) --outputChatBox( oR..' '..oG..' '..oB ) setVehicleColor( veh, oR, oG, oB ) end ) * El recurso en si no esta hecho para ser usado en un servidor, solo es una demostración de las posibilidades de MTA en conjunto a DirectX.
-
¿¡Un elementData!? ¿Estamos locos o que? Con una simple y sencilla variable booleana bastaría y seria mucho mas eficiente.
-
Utiliza un for-loop. for _, i in ipairs( tabla ) do --... end
-
Como numero, '0032' es igual a '32', por ende, se ignoran los cero. Si buscas añadir un cero en la izquierda del numero utiliza 'tostring' y manipulalo como un string.
-
Por ningún motivo utilices esta abominación de idea, lo mas correcto y eficiente es utilizar 'onClientRender', 'getCursorPosition' y 'onClientClick' para comprobar que el cursor este dentro de la posición del "botón" (Con "botón" me refiero a los rectángulos o imágenes que dibujes con DX). Combinar GUI con Dibujado DX es sumamente ineficiente.
-
Eso es 60 veces mayor que el minuto por defecto, por lo tanto, tardara 60 veces mas.
-
El problema es que la función 'setWeatherBlended' esta relacionada a la duración del minuto (que confuso suena eso) y, si no me equivoco, en DayZ u otros gamemodes hacen que el minuto dure mas de lo normal, por lo que el cambio de clima tarda mas tiempo en notarse.
-
Pido disculpas con anticipación por posibles errores, estoy un poco fuera de forma. function getRGColorFromPercentage(percentage) if not percentage or percentage and type(percentage) ~= "number" or percentage > 100 or percentage < 0 then outputDebugString( "Invalid argument @ 'getRGColorFromPercentage'", 2 ) return false end if percentage > 50 then local temp = 100 - percentage return temp*5.1, 255 elseif percentage == 50 then return 255, 255 else return 255, percentage*5.1 end end addEventHandler("onClientRender", root, function() local heal = math.min( getElementHealth(getLocalPlayer()), 100 ) local r, g = getRGColorFromPercentage(heal) dxDrawText("Health:"..math.ceil (heal).."%", 1253, 527, 1340, 551, tocolor(r, g, 0), 3.00, "default-bold", "center", "center", false, false, false, true, false) end ) Lo único que hice fue añadir y utilizar la función 'getRGColorFromPercentage', en la wiki hay mas información.
-
Comprueba en cada uno de los eventos que 'pHitElement' sea igual a 'localPlayer'.
-
Yo lo ago desde el admin panel , pongo un valor mas alto en salud , por def viene 100 , seria a tu gusto , pero si es con script no te puedo ayudar Por defecto viene 1000 y no puedes utilizar un valor mas alto que ese.
