Jump to content

Pequeña duda


Pipeekz

Recommended Posts

  • MTA Team

Buenas,

lo que debes hacer es buscar la parte donde al bajarse del vehículo, te da kill. Usas una comprobación simple y si es Admin, no matas al jugador.

Todos los eventos y funciones lo encontraras en la wiki.

Cabe aclarar que debes modificar el race y no hacer un script aparte.

Saludos!

Link to comment

race/race_server.lua

Line 851:

addEventHandler('onVehicleStartExit', g_Root, function() cancelEvent() end) 
  

Ahora deberias probar algo así:

(Recuerda, Line 851)

  
addEventHandler('onVehicleStartExit', g_Root,  
function()  
 local accName = getAccountName ( getPlayerAccount ( source ) )  
 if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then 
else 
cancelEvent() end  
end) 
  

Perdona si Está mal o no es lo que Quieres, no sé nada de Race, solo trato de ayudar xD.

Link to comment

Muchas gracias a los dos, oscar, tu codigo funciona pero cuando el administrador se baja del auto lo vuelve a warpear a el, tendria que editar otra funcion tambien no?

creo que este es el codigo, tratare de editarlo yo, aunque no se mucho de esto :( espero de su ayuda de todas formas :P gracias :mrgreen:

g_checkPedIndex = 0 
  
TimerManager.createTimerFor("raceresource","warppeds"):setTimer( 
    function () 
        -- Make sure all players are in a vehicle 
        local maxCheck = 6      -- Max number to check per call 
        local maxWarp = 3       -- Max number to warp per call 
  
        local warped = 0 
        for checked = 0, #g_Players - 1 do 
            if checked >= maxCheck or warped >= maxWarp then 
                break 
            end 
            g_checkPedIndex = g_checkPedIndex + 1 
            if g_checkPedIndex > #g_Players then 
                g_checkPedIndex = 1 
            end 
            local player = g_Players[g_checkPedIndex] 
            if not getPedOccupiedVehicle(player) then 
                local vehicle = g_Vehicles[player] 
                if vehicle and isElement(vehicle) and not isPlayerRaceDead(player) then 
                    outputDebugString( "Warping player into vehicle for " .. tostring(getPlayerName(player)) ) 
                    warpPedIntoVehicle( player, vehicle ) 
                    warped = warped + 1 
                end 
            end 
        end 
    end, 
    50,0 
) 

Link to comment
  
g_checkPedIndex = 0 
  
TimerManager.createTimerFor("raceresource","warppeds"):setTimer( 
    function () 
        -- Make sure all players are in a vehicle 
        local maxCheck = 6      -- Max number to check per call 
        local maxWarp = 3       -- Max number to warp per call 
  
        local warped = 0 
        for checked = 0, #g_Players - 1 do 
            if checked >= maxCheck or warped >= maxWarp then 
                break 
            end 
            g_checkPedIndex = g_checkPedIndex + 1 
            if g_checkPedIndex > #g_Players then 
                g_checkPedIndex = 1 
            end 
            local player = g_Players[g_checkPedIndex] 
            if not getPedOccupiedVehicle(player) then 
                local vehicle = g_Vehicles[player] 
 if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(player)), aclGetGroup ( "Admin" ) ) then return end 
                if vehicle and isElement(vehicle) and not isPlayerRaceDead(player) then 
                    outputDebugString( "Warping player into vehicle for " .. tostring(getPlayerName(player)) ) 
                    warpPedIntoVehicle( player, vehicle ) 
                    warped = warped + 1 
                end 
            end 
        end 
    end, 
    50,0 
) 
  

Link to comment

Muchísimas gracias Tomas, una ultima duda, seria posible hacer que el jugador que no sea admin directamente no se pueda bajar del vehículo? por que aun así lo puede hacer pero obvio luego le hace warp, la idea seria que los jugadores no se vean afectados por esto, por que si presiona "f" que es la tecla por defecto para bajarse del auto, los frena en plena carrera :oops:

¿Podrían responderme eso eso? no molesto mas jeje <3

Link to comment

Modifica lo que te hizo Oskar por esto:

  
addEventHandler('onVehicleStartExit', g_Root, 
    function() 
        if not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup ( "Admin" ) ) then 
            cancelEvent() 
        end 
    end 
) 
  

Link to comment

Sigue igual Tomas :(

Creo que esta seria la solucion, obviamente si el jugador presiona la tecla antes de que empiece la carrera, se spamearia el killmessages :P

¿Que opinan?

addEventHandler('onVehicleStartExit', g_Root, 
    function(source) 
        if not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup ( "Admin" ) ) then 
            killPlayer(source) 
            cancelEvent() 
        end 
    end 
) 

EDIT: La solucion mediante mis pocos conocimientos :|

Link to comment
  • 4 weeks later...

Perdón por revivir el post, me habia dejado de interesar la idea pero ahora vuelve a mi cabeza xD

Tomas lo del countdown es que si el jugador trata de bajarse del auto durante el conteo (3,2,1,GO) o antes obviamente se muere pero vuelve a tener vida al instante y esto es un problema con un dashboard ya que se buguearia por completo >_<

como puedo hacer para que directamente no pueda intentar bajarse del auto

Link to comment
Perdón por revivir el post, me habia dejado de interesar la idea pero ahora vuelve a mi cabeza xD

Tomas lo del countdown es que si el jugador trata de bajarse del auto durante el conteo (3,2,1,GO) o antes obviamente se muere pero vuelve a tener vida al instante y esto es un problema con un dashboard ya que se buguearia por completo >_<

como puedo hacer para que directamente no pueda intentar bajarse del auto

Necesitaremos el código para ayudarte..

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...