BlockMaker Bloque Bhop
#1
Hola, Yo uso el Blockmaker y en ese block maker esta el bloque de bunnyhop (No Slow Down), y mi problema es que cuando alguien esta buneando en los bloques y otro jugador se pone abajo y salta hace que el bloque se active y el que esta buneando caiga, en otras palabras bugea el bloque, hay alguna forma de hace que no pase eso ?, Dejo el codigo del bloque del bunnyhop:

Código PHP:
public pfn_touch(entid)
{
    
//if touch event involves a player
    
if (id && id <= 32)
    {
        
//if player is alive
        
if (is_user_alive(id))
        {
            
//if entity involved is a block
            
if (isBlock(ent))
            {
                
//get the blocktype
                
new blockType entity_get_int(entEV_INT_body);
                
                
//if blocktype is a bunnyhop block or barrier
                
if (blockType == BM_BHOP || blockType == BM_BARRIER_CT || blockType == BM_BARRIER_T || blockType == BM_BHOP_NOSLOW || blockType == BM_DELAYEDBHOP || blockType == BM_NOFALLDAMAGEBHOP)
                {
                    
//if task does not already exist for bunnyhop block
                    
if (!task_exists(TASK_BHOPSOLIDNOT ent) && !task_exists(TASK_BHOPSOLID ent))
                    {
                        
//get the players team
                        
new CsTeams:team cs_get_user_team(id);
                        
                        
//if players team is different to barrier
                        
if (blockType == BM_BARRIER_CT && team == CS_TEAM_T)
                        {
                            
//make block SOLID_NOT without any delay
                            
taskSolidNot(TASK_BHOPSOLIDNOT ent);
                        }
                        else if (
blockType == BM_BARRIER_T && team == CS_TEAM_CT)
                        {
                            
//make block SOLID_NOT without any delay
                            
taskSolidNot(TASK_BHOPSOLIDNOT ent);
                        }
                        else if (
blockType == BM_BHOP || blockType == BM_BHOP_NOSLOW || blockType == BM_NOFALLDAMAGEBHOP)
                        {
                            
//set bhop block to be SOLID_NOT after 0.1 seconds
                            
set_task(0.1"taskSolidNot"TASK_BHOPSOLIDNOT ent);
                        }
                        
                        else if (
blockType == BM_DELAYEDBHOP) {
                            
set_task(2.0"taskSolidNot"TASK_BHOPSOLIDNOT ent);
                        }
                    }
                }
            }
        }
    }
    
    return 
PLUGIN_CONTINUE;


Creo que es ese.

Saludos xGreat.
Responder
#2
Vas a tener que checkear que el jugador que lo toco este arriba de el bloque... para eso hace lo siguiente:

Código PHP:
    // ENT = Bloque - ID = Jugador
    
    
static Float:fMaxs[2][3], Float:fMins[2][3], Float:fOrigin[2][3], Float:fAxis[2]
    static 
IDENTID 0ENT 1
    
    pev
(idpev_originfOrigin[ID]) // Obtenemos origen del jugador
    
pev(entpev_originfOrigin[ENT]) // Obtenemos origen del bloque
    
    
pev(idpev_minsfMins[ID]) // Obtenemos mins del jugador
    
pev(entpev_minsfMins[ENT]) // Obtenemos mins del bloque
    
    
pev(idpev_maxsfMaxs[ID]) // Obtenemos maxs del jugador
    
pev(entpev_maxsfMaxs[ENT]) // Obtenemos maxs del jugador
    
    
fAxis[ID] = fOrigin[ID][2] - fMins[ID][2// Pies del jugador
    
fAxis[ENT] = fOrigin[ENT][2] + fMaxs[ENT][2// Superficie del bloque
    
    // Si lo toca desde abajo de la superficie del bloque retornamos...
    
if ((fOrigin[ID][2] + fMins[ID][2]) <= (fOrigin[ENT][2] + fMaxs[ENT][2])) return
    
    if ((
fAxis[ENT] - fAxis[ID]) <= 1.0// Si la distancia entre los pies del jugador y el bloque es menor a una unidad
    
{
        
// Toco el bloque desde arriba
    


Si tenes alguna duda avisa! Suerte con eso!!
Responder
#3
(02/01/2014, 11:13 PM)Gonza.-* escribió: Vas a tener que checkear que el jugador que lo toco este arriba de el bloque... para eso hace lo siguiente:

Código PHP:
    // ENT = Bloque - ID = Jugador
    
    
static Float:fMaxs[2][3], Float:fMins[2][3], Float:fOrigin[2][3], Float:fAxis[2]
    static 
IDENTID 0ENT 1
    
    pev
(idpev_originfOrigin[ID]) // Obtenemos origen del jugador
    
pev(entpev_originfOrigin[ENT]) // Obtenemos origen del bloque
    
    
pev(idpev_minsfMins[ID]) // Obtenemos mins del jugador
    
pev(entpev_minsfMins[ENT]) // Obtenemos mins del bloque
    
    
pev(idpev_maxsfMaxs[ID]) // Obtenemos maxs del jugador
    
pev(entpev_maxsfMaxs[ENT]) // Obtenemos maxs del jugador
    
    
fAxis[ID] = fOrigin[ID][2] - fMins[ID][2// Pies del jugador
    
fAxis[ENT] = fOrigin[ENT][2] + fMaxs[ENT][2// Superficie del bloque
    
    // Si lo toca desde abajo de la superficie del bloque retornamos...
    
if ((fOrigin[ID][2] + fMins[ID][2]) <= (fOrigin[ENT][2] + fMaxs[ENT][2])) return
    
    if ((
fAxis[ENT] - fAxis[ID]) <= 1.0// Si la distancia entre los pies del jugador y el bloque es menor a una unidad
    
{
        
// Toco el bloque desde arriba
    


Si tenes alguna duda avisa! Suerte con eso!!

Y eso donde iría ?.......
Responder
#4
Hay mismo
Responder
#5
No los puedo juntar XD, Me Tira error, Alguna ayuda ? XD Gracias pacman
Responder
#6
No tenemos bola de cristal nosotros, postea el error...
Responder
#7
(03/01/2014, 11:33 PM)Gonza.-* escribió: No tenemos bola de cristal nosotros, postea el error...

jaja... me tira error por que no lo se juntar...
Responder
#8
Código PHP:
else if (blockType == BM_BHOP || blockType == BM_BHOP_NOSLOW || blockType == BM_NOFALLDAMAGEBHOP)
                        {
                            
//A lo mejor acá , no se puede ser cuando el bloque es bhop o bhop noslow puede ser posible , :3 :lol:

                        

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)