Pipeekz Posted December 14, 2014 Share 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 Link to comment
MTA Team 0xCiBeR Posted December 14, 2014 MTA Team Share 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! Link to comment
TheOskar Posted December 14, 2014 Share 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 . Link to comment
Pipeekz Posted December 15, 2014 Author Share 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 ) Link to comment
Tomas Posted December 15, 2014 Share 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 ) Link to comment
Pipeekz Posted December 15, 2014 Author Share 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 Link to comment
Tomas Posted December 15, 2014 Share 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 ) Link to comment
Pipeekz Posted December 15, 2014 Author Share 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 Link to comment
Tomas Posted December 15, 2014 Share Posted December 15, 2014 Podría ser, pero utiliza killPed Link to comment
Pipeekz Posted December 15, 2014 Author Share Posted December 15, 2014 & respecto a lo del countdown? Link to comment
Tomas Posted December 15, 2014 Share Posted December 15, 2014 & respecto a lo del countdown? Hmm? Link to comment
Pipeekz Posted January 9, 2015 Author Share 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 Link to comment
Tomas Posted January 9, 2015 Share 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.. Link to comment
Recommended Posts