Jump to content

Enargy,

Members
  • Posts

    1,102
  • Joined

Posts posted by Enargy,

  1. los elementData consumen cpu porque tiene que sincronizarse ambos lados (cliente y servidor), pero al usar setElementData hay un argumento que funciona para manipular esa sincronización, si lo pasas a false solamente el valor va ser asignado en el lado donde está y no podrá leerse el dato desde el otro lado. Al usar tabla es lo mismo que setElementData sin haberse sincronizado.

    setElementData(element, "dataname", toJSON({"valor1", "valor2", "valor3"}), false) 
    -- ó 
    tabla = {"valor1", "valor2", "valor3"} 
    

  2. Usalo con la función que te hizo Simple01.

    function dimensions() 
     for I = 1, 65535 do 
      local p = getElementsInDimension("player", I) 
      if #p == 0 then 
        setElementDimension(source, I) 
        break 
      end 
     end 
    end 
    addCommandHandler("si", dimensions) 
    

  3. Las tablas como cualquier variable también utilizan RAM, lo "malo" que tienen los element data es que consumen tráfico al tener que sincronizarse con todos los jugadores, se puede obviar esto seteando como false el tercer argumento de setElementData.

    Cuarto argumento*

  4. "mapas/nombre_del_mapa.map" /> 
    

    Un error aquí, los archivos .map son descargados en la carpeta mods y así que es fácil entrar a ellos y robarte tus mapas, para evitar eso sería usar el atributo cache para que el script descargado no almacene en sí a los archivos map.

  5. En ese caso improvisa un sistema, el cual le asigne un elementData tipo 'chatPermitido' cuando se logeen y compruebalo en el onPlayerChat.

    Te dejo un ejemplo:

    -- Cuando no está logueado 
    local chat_no = getElementData ( source, "chatPermitido" ) == 0 
    if chat_no then cancelEvent ( ) end 
    

    Es mucho mejor usar una variable para eso, setElementData para que sincronice con todo los clientes consume una cantidad de CPU.

  6. Osea cuando vos ingreses al INT salga un mensaje por ejemplo "Estas en la casa de CJ" cuando ingreses a la int de cj, pero que ese mensaje solo salga cada vez que ingreses mediante teleport o warp a esa INT y pensé que había un evento para eso pero como ustedes me lo explicaron voy a tener que seguir leyendo, no quiero que sea ningun bind ni comando, solo que salga en el chat

    Gracias por su ayuda

    Puedes crear una función que haga exactamente lo mismo que setElementInterior, y agregando lo que Simple01 te dijo; cada vez que ejecutes esa función se va a ejecutar el evento.

  7. local dimensionProhibida = 90 -- Dimension prohibida 
    local comandos = { 
        ["comando1"] = true,  
        ["comando2"] = true, 
        ["comando3"] = true 
    } 
      
    function anularComandos( commandName ) 
        local pdim = getElementDimension ( player ) 
        if comandos[commandName] and pdim == dimensionProhibida then 
            outputChatBox ( "No puedes usar el comando en ésta dimension.", source, 255, 255, 255 ) 
            cancelEvent() 
            return 
        end 
        outputChatBox ( "Perfecto, has usado el comando "..commandName..".", source 0, 255, 0 ) 
    end 
    addEventHandler("onPlayerCommand", root, anularComandos) 
    

  8. Clientside setVehicleColor doesn't work directly after creation

    Como es serverside no te dará problema así que no haría falta esa función dentro del timer.

    addCommandHandler( 'fc', 
        function( uPlayer ) 
            if isPedInVehicle( uPlayer ) then 
            local uVehicle = getPedOccupiedVehicle( uPlayer ) 
            if uVehicle then 
               outputChatBox("Tu vehiculo cambiará de color ramdom", source, 255, 0, 0) 
               setVehicleColor (uVehicle, math.random(255), math.random(255), math.random(255)) 
               setVehicleHeadLightColor (uVehicle, math.random(255), math.random(255), math.random(255)) 
            end 
        end 
    end) 
    

  9. addEventHandler("onClientPedDamage", root, function(at,weapon, part) 
        if at and at ~= source then 
            if ( weapon ) then 
                local x, y, z = getPedTargetCollision ( localPlayer ); 
                if part == 9 then 
                    outputChatBox("Cabeza: "..x..", "..y..", "..z); 
                elseif part == 8 then 
                    outputChatBox("Pierna derecha: "..x..", "..y..", "..z); 
                elseif part == 7 then 
                    outputChatBox("Pierna izquierda: "..x..", "..y..", "..z); 
                elseif part == 6 then 
                    outputChatBox("Brazo derecho: "..x..", "..y..", "..z); 
                elseif part == 5 then 
                    outputChatBox("Brazo izquierdo: "..x..", "..y..", "..z); 
                elseif part == 2 then 
                    outputChatBox("Trasero: "..x..", "..y..", "..z); 
                elseif part == 3 then 
                    outputChatBox("Torso: "..x..", "..y..", "..z);  
                end 
            end 
        end 
    end)  
    

×
×
  • Create New...