Pipeekz Posted December 14, 2014 Posted December 14, 2014 He visto que en algunos servidores de race los admins se bajan del auto, me gustaria saber como puedo hacer esto
MTA Team 0xCiBeR Posted December 14, 2014 MTA Team Posted December 14, 2014 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!
TheOskar Posted December 14, 2014 Posted December 14, 2014 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 .
Pipeekz Posted December 15, 2014 Author Posted December 15, 2014 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 gracias 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 )
Tomas Posted December 15, 2014 Posted December 15, 2014 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 )
Pipeekz Posted December 15, 2014 Author Posted December 15, 2014 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 ¿Podrían responderme eso eso? no molesto mas jeje <3
Tomas Posted December 15, 2014 Posted December 15, 2014 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 )
Pipeekz Posted December 15, 2014 Author Posted December 15, 2014 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 ¿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
Pipeekz Posted January 9, 2015 Author Posted January 9, 2015 Perdón por revivir el post, me habia dejado de interesar la idea pero ahora vuelve a mi cabeza 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
Tomas Posted January 9, 2015 Posted January 9, 2015 Perdón por revivir el post, me habia dejado de interesar la idea pero ahora vuelve a mi cabeza 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..
Recommended Posts