Jump to content

Tomas

Members
  • Posts

    2,530
  • Joined

  • Last visited

Everything posted by Tomas

  1. No ves que dice que tienes 1000 de blood en el costadito? ... El shader se activa cuando tienes menos de 200..
  2. El script que te di funciona.. lo acabo de probar. Sobre éste último debería funcionar. Con los binoculares te refieres a los lentes de Night Vision o a la Cámara?
  3. local w, h = guiGetScreenSize( ); isEnablededededed = false function renderEffect2( ) dxSetRenderTarget( ); dxUpdateScreenSource( screenSrc2 ); dxDrawImage( 0, 0, w, h, screenShader2 ); end function enableBlackWhite(enable) if enable then if isEnablededededed then return end screenShader2 = dxCreateShader( "blackwhite.fx" ); screenSrc2 = dxCreateScreenSource( w, h ); if screenShader2 and screenSrc2 then dxSetShaderValue( screenShader2, "BlackWhiteTexture", screenSrc2 ); addEventHandler( "onClientHUDRender", getRootElement( ), renderEffect2 ); end isEnablededededed = true else if screenShader2 and screenSrc2 then destroyElement( screenShader2 ); destroyElement( screenSrc2 ); screenShader2, screenSrc2 = nil, nil; removeEventHandler( "onClientHUDRender", getRootElement( ), renderEffect2 ); isEnablededededed = false end end end function enableBlackWhite2( ) if getElementData(getLocalPlayer(),"blood") < 2000 then enableBlackWhite(true) else enableBlackWhite(false) end end setTimer(enableBlackWhite2,1000,0) El problema estaba en la línea 15, decía 'screenShader' en vez de 'screenShader2'.
  4. Te salió que tu 'blood' es 2000, y en el resource dice que se active debes tener menos de 2000.
  5. No se mucho sobre DayZ (no se para qué es 'blood'), pero, ¿estás seguro que 'blood' es menor a 2000? Puedes comprobarlo usando el resource 'runcode'. /crun getElementData(localPlayer,"blood") En el chat te dirá algo como: Result: x [number] o false [boolean]
  6. Eso no es muy eficiente que digamos, ya que no hay necesidad de usar un loop. Simplemente haces asi: function decodeString ( cName ) if ( tColors [ cName ] ) then return unpack ( tColors [ cName ] ) end return false end Oh. No se me había ocurrido , gracias.
  7. Presumido Nah, sólo apliqué la idea de Castillo e intenté hacerlo un poco más eficiente
  8. Tengo un server offline con el gamemode de BomBerman, bastante divertido. y ando haciendo un RPG muy trabajado. La GUI En server side, lo veo IMPOSIBLE, ya que en server side, no hay una function para detectar "Si estas viendo un objeto" o "detectar algo en sí" Necesitarías como mínimo un trigger desde client con la resolución de cliente. Por si a alguien se le ocurre como hacerlo, dejo la parte del script útil, y lo ha construir en comentario --[[ TODO - Saber la resolucion del cliente [ESTADO: IMPOSBIEL] ]] values = { oderecha = 0.35, oabajo = 0.05, spacing = 0.01667, lineas = 9, current_line = 0, derecha = 0.35, abajo = 0.05 } --[[playerData = { posx = nil, posy = nil, posz = nil }]] element = { posx = nil, posy = nil, posz = nil } mtaresolutions = { {1360, 768}, {1280, 768}, {1280, 720}, {1024, 768}, {800, 600}, {720, 576}, {720, 480}, {640, 480} } putaletra = { "lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll" } function createWindowc (source, command) for index=1, 9999999 do values.derecha = values.derecha + 0.001 myDisplay = textCreateDisplay () textDisplayAddObserver(myDisplay, source) myText = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) textDisplayAddText(myDisplay, myText) values.derecha = values.derecha + 0.001 myText2 = textCreateTextItem(putaletra[1], values.derecha,values.abajo,0,0,0,0,175,1) textDisplayAddText(myDisplay, myText2) values.abajo = values.abajo + values.spacing values.current_line = values.current_line + 1 values.derecha = values.oderecha if values.current_line >= values.lineas then values.abajo = values.oabajo values.derecha = values.oderecha values.current_line = 0 --textDisplayAddText(myDisplay, textCreateTextItem("Tu nombre es: "..getPlayerName(source):gsub("#%x%x%x%x%x%x", ""), values.oderecha + 0.015,values.oabajo + 0.03,0,255,255,255,255,1)) --textDisplayAddText(myDisplay, textCreateTextItem("Tu IP es: "..getPlayerIP(source), values.oderecha + 0.015,values.oabajo + 0.06,0,255,255,255,255,1)) textDisplayAddText(myDisplay, textCreateTextItem("PULSA 1 PARA VER TUS DETALLES", values.oderecha + 0.015,values.oabajo + 0.09,0,255,255,255,255,1)) textDisplayAddText(myDisplay, textCreateTextItem("_____________________________________________", values.oderecha + 0.015,values.oabajo + 0.1,0,255,255,255,255,1)) textDisplayAddText(myDisplay, textCreateTextItem("_____________________________________________", values.oderecha + 0.015,values.oabajo + 0.065,0,255,255,255,255,1)) showCursor(source, true) break end end --CAMERA CLIENT RESOLUTION GETTER --local x, y, z = getElementPosition(source) --playerData.posx, playerData.posy, playerData.posz = tonumber(x), tonumber(y), tonumber(z) --setCameraMatrix(source,0,0,5000,0,0,0,0) --toCheck = createMarker(990,0,4990,"corona", 1, 0, 0, 0, 255, source) --[[if isElementVisibleTo(toCheck, source) then outputChatBox("ES VISIBLE",source,0,255,0,true) else outputChatBox("NOO ES VISIBLE", source, 255,255,0,true) end ]] for ke, resolution in ipairs(mtaresolutions) do end end addCommandHandler("cc", createWindowc) local function onClickInServerScreen (button, state,element, wx, wy, wz, sx, sy) end addEventHandler("onClick", root, onClickInServerScreen) Meses mejor dicho... ¿Por qué sólo aceptas proposiciones de cosas de server-side? Porque de client no tengo mucha idea, solo de funciones básicas, y lo mas seguro que digan en "client" serán animaciones de GUI Semanas no, andaba pensando en crear un "element" para detectar la resolucion, pero al no poder comprobar si el objeto entra dentro de la pantalla de source en cuestión, no puedo comprobar si la pantalla esta mirando a ese elemento o no, de esa manera podrías comprobar la resolución desde server side. Resumidamente, si quieres hacer un gui desde server side, la unica manera de con keyBind. ¿A qué te refieres con detectar "Si estas viendo un objeto"? Puedes guardar la información en una tabla y luego con una función leerla. No es imposible.
  9. Pensé que te referías a la línea sobre el radar ._.
  10. function weaponSwitchBack(previousWeaponID, currentWeaponID) local weapon1 = getElementData(source, "currentweapon_1") if not weapon1 then return end local ammoData1, weapID1 = getWeaponAmmoType(weapon1) local x, y, z = getElementPosition(source) local rx, ry, rz = getElementRotation(source) if previousWeaponID == weapID1 then if elementWeaponBack[source] then setElementID(player, "elementWeaponBack[source]") detachElementFromBone(elementWeaponBack[source]) destroyElement(elementWeaponBack[source]) elementWeaponBack[source] = false end elementWeaponBack[source] = createObject(getWeaponObjectID(weapID1), x, y, z) setObjectScale(elementWeaponBack[source], 0.875) if elementBackpack[source] then attachElementToBone(elementWeaponBack[source], source, 3, 0.19, -0.31, -0.1, 0, 270, -90) else attachElementToBone(elementWeaponBack[source], source, 3, 0.19, -0.11, -0.1, 0, 270, 10) end elseif currentWeaponID == weapID1 then setElementID(source, tostring(elementWeaponBack[source])) detachElementFromBone(elementWeaponBack[source]) if isElement(elementWeaponBack[source]) then destroyElement(elementWeaponBack[source]) end elementWeaponBack[source] = false end end
  11. Me hice mi propia versión tColors = { ["rojo"] = {255, 0, 0}, ["azul"] = {0, 0, 255}, ["naranja"] = {255, 150, 0}, ["verde"] = {0, 255, 0}, ["negro"] = {0, 0, 0}, ["blanco"] = {255, 255, 255}, ["gris"] = {150, 150, 150}, ["amarillo"] = {255, 255, 0}, } function changeColor(player, command , R, G, B) if isRGB( R, G, B) then local R = tonumber(R) G = tonumber(G) B = tonumber(B) setPlayerNametagColor(player, R, G, B) outputChatBox("El color de tu nombre fue cambiado al de este mensaje.", player, R, G, B) elseif decodeString(R) then setPlayerNametagColor(player, decodeString(R)) outputChatBox("El color de tu nombre fue cambiado al de este mensaje.", player, decodeString(R)) else outputChatBox("#00ff00Usa /"..command.." R G B #ffffffo el#ff0000 nombre del color, disponibles: ", player, 255, 255, 255, true) printAvailableColours(player) end end addCommandHandler("cColor",changeColor) function isRGB( R, G, B ) if tonumber(R) and tonumber(G) and tonumber(B) then R = tonumber(R) G = tonumber(G) B = tonumber(B) return R >= 0 and R <= 255 and G >= 0 and G <= 255 and B >= 0 and B <= 255 else return false end end function decodeString(cName) for index, value in pairs (tColors) do while index == cName do return value[1],value[2],value[3] end end end function printAvailableColours(player) for index, value in pairs (tColors) do outputChatBox(firstToUpper(index), player, decodeString(index)) end end function firstToUpper(str) return (str:gsub("^%l", string.upper)) end
  12. OOh ya (: se soluciono el error! Muchas gracias! Tengo un warning Bad argument @ 'destroyElement' [Expected element at argument 1, got nil] Estube buscando en google y wiki de mta, encontre un post donde tu le ayudas a un chico que tiene este mismo problema, y en la wiki encontre que destroyElement se usa así: destroyElement(Lo que quieres destruir), revise y esta colocado correctamente, solo queria saber si tiene alguna solucion al warning, aunque como ya lo dijiste en el post donde le ayudas a un chico diciendole que es raro, ya que esta puesto correctamente! pero bueno quizas ya le encontraste solucion Cx o algo jaja bueno gracias (: function weaponSwitchBack(previousWeaponID, currentWeaponID) local weapon1 = getElementData(source, "currentweapon_1") if not weapon1 then return end local ammoData1, weapID1 = getWeaponAmmoType(weapon1) local x, y, z = getElementPosition(source) local rx, ry, rz = getElementRotation(source) if previousWeaponID == weapID1 then if elementWeaponBack[source] then setElementID(player, "elementWeaponBack[source]") detachElementFromBone(elementWeaponBack[source]) destroyElement(elementWeaponBack[source]) elementWeaponBack[source] = false end elementWeaponBack[source] = createObject(getWeaponObjectID(weapID1), x, y, z) setObjectScale(elementWeaponBack[source], 0.875) if elementBackpack[source] then attachElementToBone(elementWeaponBack[source], source, 3, 0.19, -0.31, -0.1, 0, 270, -90) else attachElementToBone(elementWeaponBack[source], source, 3, 0.19, -0.11, -0.1, 0, 270, 10) end elseif currentWeaponID == weapID1 then setElementID(source, tostring(elementWeaponBack[source])) detachElementFromBone(elementWeaponBack[source]) destroyElement(elementWeaponBack[source]) elementWeaponBack[source] = false end end ¿Podrías especificar cuál es la línea del error? Una simple forma de arreglarlo es comprobar si el objeto existe antes de intentar destruirlo.
  13. TheChine te ha puesto el evento, es mas efectivo cara a un onClientRender, No sé para que inventan este evento, es inutil. Ya que solo se ejecuta una vez addEventHandler("onClientPlayerTarget", localPlayer, nil) Ah bueno, puedes combinarlo con un cancel. addEventHandler("onClientPlayerTarget", root, function () cancelEvent() end ) Vamos, casi inutil. isPedAiming no es un evento. addEvent ( "onClientAim" , true) function onClientKey ( button, press ) local keyT = getBoundKeys("aim_weapon") for name, state in pairs (keyT) do if button == name and press then triggerEvent ( "onClientAim", localPlayer, localPlayer ) end end end addEventHandler ( "onClientKey", root, onClientKey )
  14. El error quiere decir que no es posible comparar un booleano (seguramente false) con un número, puedes agregar esto para fixearlo: if getElementData(source, "blood") or 0 > 0 and not getElementData(source, "animal") then
  15. guiConvertToCustomBlip Un ejemplo, addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), function() local blip = guiCreateButton ( 0, 0, 25, 20, "Spawn", false ) guiSetFont(blip,"default-small") exports.customblips:guiConvertToCustomBlip ( blip, -700, 960, 10 ) end )
  16. Meses mejor dicho... ¿Por qué sólo aceptas proposiciones de cosas de server-side? TheChine deberías tener cuidado con el banner de las stats de tu servidor, está vulnerable a inyecciones SQL gg
  17. Necesitas usar las funciones del customblip
  18. Con interfaz gráfica no me refiero a hacer un rectángulo, me refiero a una interfaz gráfica con funciones y todas esas weas
  19. ¿Es posible eso ._.? Usando las funciones de texto de MTA en server-side se puede hacer un rectángulo, cuesta muucho lograrlo pero es posible
  20. Otra forma sería: addEventHandler("onClientPlayerDamage",root, function(attacker) if not attacker and isPedInWater(source) then cancelEvent() end end )
  21. Explicate mejor, a que te refieres con interfaz grafica?, mostrando que tipo de informacion? http://es.wikipedia.org/wiki/Interfaz_gráfica_de_usuario
  22. Eso no funcionaría al 100% porque no siempre el agua está debajo de la altura 0 addEventHandler("onClientPlayerDamage",root, function (_,wep) if wep == 53 then cancelEvent() end end )
×
×
  • Create New...