-
Posts
1,102 -
Joined
Posts posted by Enargy,
-
-
Just now, Anzo said:
@aka Blue No me da ningún error en el debug, voy a probarlo con un amigo y te aviso
Todavía saca a todos los jugadores que estén en el asiento derecho del auto (si un jugador esta en el auto de otra persona y no en el mio, y yo le doy click al botón para sacar de asiento, teniendo yo a nadie en ese asiento, igual los sacará a todos del asiento)
Saca el loop y colocas source en lugar de thePlayer...
-
14 hours ago, Tomas said:
A qué te refieres?
serials[serial] and serials[serial]
-
5 hours ago, aka Blue said:
La verdad, no sé si se podrían usar tablas. No he testeado a ver si cuando me desconecto y entro de nuevo sigue un valor, por lo tanto, SQLite para un dato creo que no es muy importante, podrías usar elementData, así:
-- Cuando se desconecte: setElementData( player, "tiempo", getTickCount( ) + 86400000 ) -- Cuando se conecte local tiempo = getElementData( player, "tiempo" ) or 0 if getTickCount( ) > tiempo or tiempo == 0 then outputChatBox( "Han pasado 24 horas" ) setElementData( player, "tiempo", getTickCount( ) + 86400000 ) else outputChatBox( "No han pasado 24 horas" ) end
Creo que debería funcionar.
No va a funcionar porque se resetea el elementData.
@Anzo usa setTimer.
Si mal no recuerdo el timer al estar en el server side no se borra porque al estar en el cliente siempre vas a cargarlo, pero el server side tiene que sincronizarse con el cliente antes de que inicie. Eso fue lo que me había dicho hace tiempo CiBeR
-
8 hours ago, Dannys said:
Te explicas como el culo, pero bueno, sólo debes hacer una condicional comparando la serial de la persona a la que se le ha de abrir el panel y la del usuario que está intentando abrirlo. Si quieres hacerlo con varias seriales puedes probar esto:
local serials = { ["smakdasmdkemeqkeqle32"] = true, ["ksoakeowqpewqpo213m121321"] = true } function isPlayerSerialAllowed(serial) return serials[serial] and serials[serial] or false end
No hace falta colocar doble tablas.
-
4 hours ago, aka Blue said:
La verdad, no sé si se podrían usar tablas. No he testeado a ver si cuando me desconecto y entro de nuevo sigue un valor, por lo tanto, SQLite para un dato creo que no es muy importante, podrías usar elementData, así:
-- Cuando se desconecte: setElementData( player, "tiempo", getTickCount( ) + 86400000 ) -- Cuando se conecte local tiempo = getElementData( player, "tiempo" ) or 0 if getTickCount( ) > tiempo or tiempo == 0 then outputChatBox( "Han pasado 24 horas" ) setElementData( player, "tiempo", getTickCount( ) + 86400000 ) else outputChatBox( "No han pasado 24 horas" ) end
Creo que debería funcionar.
No va a funcionar porque se resetea el elementData.
@Anzo usa setTimer.
-
5 hours ago, aka Blue said:
function getMyData ( thePlayer, command ) local data = getAllElementData ( thePlayer ) -- get all the element data of the player who entered the command for k, v in pairs ( data ) do -- loop through the table that was returned outputConsole ( k .. ": " .. tostring ( v ) ) -- print the name (k) and value (v) of each element data, we need to make the value a string, since it can be of any data type end end addCommandHandler ( "elemdata", getMyData )
No me acordaba que existía esa xd. Tengo que repasarme la wiki
-
10 hours ago, MarkFlash said:
quisiera saber como puedo ver todo los elementsData desde un comando uu gracias?
local elementsData = {"Ping", "FPS", "Dinero"} -- Los element datas que quieras leer. function getElementsDataFrom(element) local data = {} local i = 0 while ( #data < #elementsData ) do i = i + 1 table.insert( data, { tostring(getElementData(element, elementsData[i])) } ) end return data end
-
dxDrawRectangle( x-textWidth, y-10, textWidth * 2, y/15, tocolor(0, 0, 0, 30) )
-
1 hour ago, aka Blue said:
Bueno, como dice el título, estoy realizando unos pequeños cambios y lo que quiero hacer es crear nametags encima de la cabeza del jugador pero que los mismos tengan un rectángulo que se vaya poniendo más grande o más pequeño según la longitud del nombre con la función DxGetTextWidth. ¿Cómo podría hacerlo? Actualmente tengo ésto:
local font = dxCreateFont( "Lato.ttf" ) addEventHandler ( "onClientRender", root, function() local playersTable = getElementsByType( 'player' ) for i=1, #playersTable do local p = playersTable[ i ] -- Get the player --if isLoggedIn( p ) then local px, py, pz = getElementPosition( p ) -- Get the position local cx, cy, cz = getCameraMatrix( ) -- Get the camera matrix local min_distance = getDistanceBetweenPoints3D( cx, cy, cz, px, py, pz ) -- Get the min distance between 3D points if min_distance < 15 then if isLineOfSightClear( cx, cy, cz, px, py, pz, true, false, false, true, false, false, false, localPlayer ) then local bx, by, bz = getPedBonePosition( p, 5 ) local x,y = getScreenFromWorldPosition( bx, by, bz + 0.3 ) if x and y then dxDrawRectangle( x-54, y-10, x/5, y/15, tocolor(0, 0, 0, 30) ) dxDrawText( "[Player] "..getPlayerName( p ), x-10, y+2, x, y, tocolor(0, 0, 0), 0.85 + ( 15 - min_distance ) * 0.03, font, "center", "center", false, false, false, true ) dxDrawText( "[#800000Player#ffffff] "..getPlayerName( p ), x-10, y, x, y, tocolor(255, 255, 255), 0.85 + ( 15 - min_distance ) * 0.03, font, "center", "center", false, false, false, true ) end end end --end end end)
Cómo se ve:
En X y el ancho del rectangulo le vas a sumar lo que hiciste en el tamaño del texto y en el ancho lo contrario.
-
Me hizo recordar al DKR de años atras xd.
-
4 hours ago, aka Blue said:
No te recomiendo guardarlo así. Guardalo tipo 1 o 0, 1 sería igual a completado y 0 a no completado. Y no, no uses executeSQLQuery porque esas funciones solo actúan para el registry.db como bien dice la wiki:
NOTE: This function only acts upon registry.db. Use dbQuery to query a custom SQL databse.
Te lo digo porque creo que no se pueden guardar variables en una base de datos. Simplemente antes del guardado, realiza una condicion, es decir, si la variable es true, entonces lo guardas como '1', y en caso de que no, pues como '0'. Algo así:
--Client e = { t = triggerServerEvent, a = addEventHandler, l = addEvent } e.a( "onClientPlayerQuit", root, function( ) e.t( "test", localPlayer, completeAll ) end ) e.l( "loadDataAccount", true ) e.a( "loadDataAccount", root, function( tabla_variables ) variables = tabla_variables end ) e.a( "onClientRender", root, function( ) if variables then if variables[1]["logro_1"] == 1 then guiSetText(none10, "COMPLETADO") else guiSetText(none10, "NO COMPLETADO") end end end )
PD: Por favor, ordena un poco el código que no entiendo nada xd.
No entiendo para que le cambias el nombre a las funciones xd.
-
13 hours ago, aka Blue said:
Gracias @Gaberiel. Quiero preguntar... ayer hice lo siguiente, porque lo vi en un post de la sección inglesa.
local sWidth, sHeight = guiGetScreenSize( )local sx1, sy1 = sWidth/1024, sHeight/768dxDrawRectangle( sx1*50, sy1*555, sx1*210, sy1*25, tocolor( 0, 0, 0, 50 ) )
Por lo visto se dibuja bien en todas las resoluciones (lo dibujé en 800 y lo testeé en 1024 y por lo visto, quedaba en la misma posición), aunque no estoy muy seguro.
Y bueno, mi otra duda es hacerlo relativo con la posición del ratón, ya que, ahora tengo ésto:
local sx, sy = guiGetScreenSize( )local mx, my, worldx, worldy, worldz = getCursorPosition( )dxDrawRectangle( sx*(1024/sx*mx-0.004), sy*(768/sy*my), sx*(1024/sx/5), sy*(768/sy/10+0.095), tocolor( 0, 0, 0, 80 ) )dxDrawImage ( sx*mx+42, sy*my, sx/12, sy/10, 'tuerca.png', 0, 0, 0, tocolor( 255, 145, 0, 200 ) )
Ví en la wiki, exactamente en la explicación de guiGetScreenSize que lo que se tenía que dividir era la posición del rectángulo entre la resolución de la pantalla y después multiplicarlo.
addEventHandler("onClientRender", root, function() local sx, sy = guiGetScreenSize( ) local mx, my = getCursorPosition( ) local cx, cy = mx*sx, my*sy mx, my = cx / sx, cy / sy x, y = mx * sx, my * sy dxDrawRectangle(x, y, sx*(1024/5), sy*(768/sy/10+0.095), tocolor( 0, 0, 0, 80 ) ) --dxDrawImage ( sx*mx+42, sy*my, sx/12, sy/10, 'tuerca.png', 0, 0, 0, tocolor( 255, 145, 0, 200 ) ) end )
CX y CY te da el resultado directo, MX y MY lo pasa a relativo. x, y fue un adicional que le agregue porque nose como piensas implementar que el cursor mueva el rectangulo con relativos asi que por eso está x, y; aunque como dije que cx, cy te los da directamente.
-
3 hours ago, aka Blue said:
1024/sx, 768/sy (?
Si pero no la dividas con tu resolución sino con la posición del rectángulo.
-
9 hours ago, aka Blue said:
¿Hay cálculos que lo transformen en relativo? Para los text uso sx/1000, sy/1000 y la escala sy*scale
Haciendo la inversa.
-
2 hours ago, aka Blue said:
Buenas. Estoy utilizando un nuevo método para hacer dxDraws relativos y tengo problemas con el dxDrawRectangle, la cosa está en que, en resolución baja (800x624 si no me equivoco), se ponen más pequeños y no sé si en una mayor a la que tengo (1024x768) se verían bien o mal. Ésto es lo que uso:
-- Parte normal: local sx, sy = guiGetScreenSize( ) dxDrawRectangle( sx/19, sy/10+480, sx/5, sy/30, tocolor( 0, 0, 0, 50 ) ) -- Con posiciones del ratón: local sx, sy = guiGetScreenSize( ) local mx, my, worldx, worldy, worldz = getCursorPosition( ) dxDrawRectangle( sx*mx-10, sy*my-3, sx/10+90, sy/10+70, tocolor( 0, 0, 0, 80 ) )
Gracias de antemano.
Eso no son relativos. y son mas pequeños porque los estas dividiendo.
-
40 minutes ago, DarkNeSsOak said:
y que nombre le deberia colocar?
onExplodeVehicle?
Cual sea que no sea ese ._.
-
3 hours ago, Slash14 said:
¿Y con el color?
local group = exports.gang_system:getPlayerGang(source) local red, green, blue = unpack(exports.gang_system:getGangData(group, "color") ) or ""local message = RGBToHex(red, green, blue) .. gangTag outputChatBox(message, getRootElement(), 255, 255, 255, true)function RGBToHex(red, green, blue, alpha) return string.format("#%.2X%.2X%.2X", red,green,blue)end
-
local red, green, blue = unpack(exports.gang_system:getGangData(group, "color") or {255, 255, 255})
-
local red, green, blue = unpack(exports.gang_system:getGangData(group, "color") or {255, 255, 255})
-
31 minutes ago, Tomas said:
A qué te refieres con eso?
Que al objeto lo tenía en una variable local y la cambió a global.
-
On 20/9/2016 at 3:11 PM, -Rex- said:
y luego haciéndole un string.reverse quedaría perfecto
y luego haciéndole un hash 'sha512' quedaría perfecto
-
No mucho porque Luke aparece solo el final, me gustó mas la parte de kylo ren y la mascara de vader.
-
-
12 hours ago, saygoodbye said:
Esto deberia servir
texto = {"Text", "Text2", "Text3"} local randomtext = "" addEventHandler("onClientVehicleEnter",root, function() randomtext = texto[math.random(1, #texto)] addEventHandler("onClientRender",root, drawve) end ) function drawve() local screenW,screenH = guiGetScreenSize() dxDrawText("Carga Actual: "..randomtext, (screenW * 0.3050) - 1, (screenH * 0.7844) - 1, (screenW * 0.6913) - 1, (screenH * 0.8900) - 1, tocolor(255, 255, 0, 255), 1.50, "default-bold", "center", "center", false, false, false, false, false) end
Elimina el evento del render al salir del auto
-
-
Yo.
-
5 hours ago, Tomas said:
1. Se crea la tabla vacía.
2. Él crea los objetos en el juego.
3. El recurso se para y se guarda en la tabla.
4. El recurso se vuelve a iniciar, se cargan los objetos y se limpia la tabla.
(y así una y otra vez, si la tabla ya tiene cosas los objetos se reescribirían)
Yo al ver tu método supe que esta correcto a simple vista pero cuando lo testee daba debug.
-
getElementRotation setElementRotation
Armas de 'createWeapon' las puedan ver todos los jugadores
in Scripting
Posted
Tendrías que hacer un tipo de callback o como se le diga, para hacer trigger de cliente a servidor y luego trigger de server a cliente para todos los players.