Jump to content

Ayuda con onColShapeLeave


Recommended Posts

Hola, yo estoy creando un server multigamemode en este momento estoy creando uno en donde no puedes salir de alguna de las 3 zonas, para eso utilice createColCuboid y onColShapeLeave es un panel donde escoges a que zona entrar, si abandonas la zona mueres hasta ahi todo bien, el problema es que cuando selecciono otra zona el jugador muere por que salio de la zona anterior como soluciono esto ? ya intente varias cosas:

local AREAA = createColCuboid (  -2882.6452636719, 1897.1723632813, 0, 1000, 1000, 1000 ) 
function AREAS( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end 
end 
addEventHandler("onColShapeLeave", AREAA, AREAS ) 
  
  
local AREAB = createColCuboid ( -363.17227172852, -416.40063476563, 0, 1000, 700, 500 ) 
function AREAS2( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 ) 
    end 
end 
addEventHandler("onColShapeLeave", AREAB, AREAS2 ) 
  
local AREAC = createColCuboid ( -3034.3217773438, -2238.9357910156, 1, 1150, 1300, 900 ) 
function AREAS3( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
         killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end 
end 
addEventHandler("onColShapeLeave", AREAC, AREAS3 ) 

Link to comment

Hola, gracias por responder, intente remover los eventos pero luego se podía salir de la zona con vida intente lo siguiente para que funcionara, creó las 3 zonas pero solo cumple la función en una zona, la ultima :

COLSHAPES = { 
            { -2882.6452636719, 1897.1723632813, 0, 1000, 1000, 1000 }, 
            { -363.17227172852, -416.40063476563, 0, 1000, 700, 500 }, 
            { -3034.3217773438, -2238.9357910156, 1, 1150, 1300, 900 } 
            } 
  
             
for k, data in ipairs( COLSHAPES ) do 
local x = data[1] 
local y = data[2] 
local z = data[3] 
local px = data[4] 
local py = data[5] 
local pz = data[6] 
COLS = createColCuboid( data[1], data[2], data[3], data[4], data[5], data[6] ) 
end 
  
function AREAS( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end 
  
end 
addEventHandler( "onColShapeLeave", COLS, AREAS ) 

La verdad no se mucho sobre tablas, pero me serviría los consejos :D

Link to comment
Hola, gracias por responder, intente remover los eventos pero luego se podía salir de la zona con vida intente lo siguiente para que funcionara, creó las 3 zonas pero solo cumple la función en una zona, la ultima :
COLSHAPES = { 
            { -2882.6452636719, 1897.1723632813, 0, 1000, 1000, 1000 }, 
            { -363.17227172852, -416.40063476563, 0, 1000, 700, 500 }, 
            { -3034.3217773438, -2238.9357910156, 1, 1150, 1300, 900 } 
            } 
  
             
for k, data in ipairs( COLSHAPES ) do 
local x = data[1] 
local y = data[2] 
local z = data[3] 
local px = data[4] 
local py = data[5] 
local pz = data[6] 
COLS = createColCuboid( data[1], data[2], data[3], data[4], data[5], data[6] ) 
end 
  
function AREAS( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end 
  
end 
addEventHandler( "onColShapeLeave", COLS, AREAS ) 

La verdad no se mucho sobre tablas, pero me serviría los consejos

Necesitas una reestructuración, ya que COLS es un elemento no una tabla que almacene varios elementos, lo que lleva a su cambio continuo en el loop de esa manera provocando que la función solo se ejecute cuando el elemento cumpla el evento definido en el addEventHandler. Una manera "sucia" de hacerlo sería así.

  
COLSHAPES =  
{ 
            { -2882.6452636719, 1897.1723632813, 0, 1000, 1000, 1000 }, 
            { -363.17227172852, -416.40063476563, 0, 1000, 700, 500 }, 
            { -3034.3217773438, -2238.9357910156, 1, 1150, 1300, 900 } 
 } 
  
function AREAS( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end  
end  
     
for k, data in ipairs( COLSHAPES ) do 
 COLS = createColCuboid( data[1], data[2], data[3], data[4], data[5], data[6] ) 
 addEventHandler( "onColShapeLeave", COLS, AREAS ) 
end 
  

Pero si quieres algo más optimizado puedes usar lo siguiente.

  
C =  
{ 
 COL1 = { -2882.6452636719, 1897.1723632813, 0, 1000, 1000, 1000 }, 
 COL2 = { -363.17227172852, -416.40063476563, 0, 1000, 700, 500 }, 
 COL3 = { -3034.3217773438, -2238.9357910156, 1, 1150, 1300, 900 } 
} 
  
CS = { } 
  
for I = 1, #C do 
 CS[I] = createColCuboid( unpack( C[I] ) ) 
 addEventHandler( "onColShapeLeave", CS[I], AREAS ) 
end 
  
function AREAS( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1 then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end  
end  
  

Link to comment

Disculpa la demora, la verdad no me funciono ninguno, logre hacerlo funcionar el problema ahora es que no remueve el evento en algunas ocaciones:

-- COMO ME FUNCIONO:

COLSHAPES = { 
            { -2882.6452636719, 1897.1723632813, 0, 1000, 1000, 1000 }, 
            { -363.17227172852, -416.40063476563, 0, 1000, 700, 500 }, 
            { -3034.3217773438, -2238.9357910156, 1, 1150, 1300, 900 } 
            } 
             
             
function AREAS( player, matchingDimension ) 
local DIMENSION = getElementDimension( player ) 
    if getElementType( player ) and DIMENSION == 1  then 
        killPed( player ) 
        outputChatBox( "**FUISTE ASESINADO POR ABANDONAR LA ZONA INFECTADA**", player, 255, 0, 0 )   
    end 
end 
  
for k, data in ipairs( COLSHAPES ) do 
local x = data[1] 
local y = data[2] 
local z = data[3] 
local px = data[4] 
local py = data[5] 
local pz = data[6] 
COLS = createColCuboid( x, y, z, px, py, pz ) 
addEventHandler( "onColShapeLeave", COLS , AREAS ) 
end 

-- MARKERS QUE REMUEVEN EL EVENTO DE LAS COLSHAPES AL ENTRAR EN ELLAS

NK_MARKERS = { 
             { -2674.0002441406, 1986.3414306641, 62.21745300293, "cylinder",60, 255, 0, 0, 255 }, 
             { -2462.0129394531, 2137.16796875, 11.354687690735, "cylinder",10, 255, 0, 0, 255 }, 
             { 272.48095703125, -380.62576293945, 9.785270690918, "cylinder",10, 255, 0, 0, 255 }, 
             { -112.59156799316, -121.5378036499, 4.1171875, "cylinder",60, 255, 0, 0, 255 }, 
             { -1997.6311035156, -1543.4739990234, 84.066291809082, "cylinder",10, 255, 0, 0, 255 }, 
             { -2259.7023925781, -1555.4602050781, 490.1413269043, "cylinder",10, 255, 0, 0, 255 } 
             } 
  
for k, MK in ipairs ( NK_MARKERS ) do 
local mx = MK[1] 
local my = MK[2] 
local mz = MK[3] 
local mtype = MK[4] 
local msize = MK[5] 
local mr = MK[6] 
local mg = MK[7] 
local mb = MK[8] 
local ma = MK[9] 
 NK_MARK = createMarker( mx, my, mz, mtype, msize, mr, mg, mb, ma ) 
setElementDimension( NK_MARK, 1 ) 
end 
  
function NOKILL( player, matchingDimension ) 
removeEventHandler( "onColShapeLeave", COLS, AREAS ) 
end           
addEventHandler( "onMarkerHit", NK_MARK, NOKILL ) 

y otra pregunta como logro que al terminar la cancion continue con otra aleatoriamente intente esto pero solo cambia de cancion al reiniciar el recurso:

SONG = {  
       [1] = {"SOUNDS/SONGG.mp3"}, 
       [2] = {"SOUNDS/SONGG2.mp3"}, 
       [3] = {"SOUNDS/SONGG3.mp3"}, 
       [4] = {"SOUNDS/SONGG4.mp3"},   
       [5] = {"SOUNDS/SONGG5.mp3"} 
       } 
  
  
  
--CANCION                                                
addEventHandler("onClientResourceStart", resourceRoot, 
function(source) 
local CANCION = playSound3D( unpack ( SONG [ math.random ( #SONG ) ] ) , 899.67602539063, 7366.8427734375, 9.5646343231201, true ) 
setSoundMaxDistance(CANCION, 190 ) 
setSoundVolume ( CANCION, 1.0 ) 
setElementDimension(CANCION, 5) 
end ) 

Link to comment
  • Recently Browsing   0 members

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