Crear un lнmite en un бrea
#5

En un principio lo mбs fбcil es usar el streamer de Incognito, para entender lo que te voy a escribir, te recomiendo que leas primero mi tutorial sobre la manipulaciуn de datos.

Empecemos creando un cuadrado en el centro del mapa:
PHP код:
new mi_area;
public 
OnGameModeInit()
{
    
mi_area CreateDynamicRectangle(-100.0, -100.0100.0100.0);
    return 
1;

Obviamente usamos OnPlayerLeaveDynamicArea para detectar cuando el jugador abandona un бrea:
PHP код:
public OnPlayerLeaveDynamicArea(playeridareaid)
{
    
/* Obtenemos las coordenadas usadas para crear el бrea. */
    
new Float:min_x;
    new 
Float:min_y;
    new 
Float:max_x;
    new 
Float:max_y;
    
min_x Streamer_GetFloatData(STREAMER_TYPE_AREAareaidE_STREAMER_MIN_X);
    
min_y Streamer_GetFloatData(STREAMER_TYPE_AREAareaidE_STREAMER_MIN_Y);
    
max_x Streamer_GetFloatData(STREAMER_TYPE_AREAareaidE_STREAMER_MAX_X);
    
max_y Streamer_GetFloatData(STREAMER_TYPE_AREAareaidE_STREAMER_MAX_Y);
    
/* Obtenemos la posiciуn del jugador. */
    
new Float:p_x;
    new 
Float:p_y;
    new 
Float:p_z;
    
GetPlayerPos(playeridp_xp_yp_z);
    
/* Detectamos donde se encuentra el jugador respecto al бrea. */
    
if(areaid == mi_area)
    {
        if(
p_x max_x// El jugador se encuentra a la derecha del cuadrado
        
{
            
SetPlayerPos(playeridmax_xp_yp_z);
        }
        else if(
p_x min_x// El jugador se encuentra a la izquierda del cuadrado
        
{
            
SetPlayerPos(playeridmin_xp_yp_z);
        }
        if(
p_y max_y// El jugador se encuentra por encima del cuadrado
        
{
            
SetPlayerPos(playeridp_xmax_yp_z);
        }
        else if(
p_y min_y// El jugador se encuentra por debajo del cuadrado
        
{
            
SetPlayerPos(playeridp_xmin_yp_z);
        }
        return 
1;
    }
    return 
1;

Como puedes ver, hemos utilizado SetPlayerPos para colocarlo justo en el margen del cuadrado. En caso de que la posiciуn no sea muy exacta y el jugador quede fuera podrнas hacer algo como esto: max_x - 1.0 o min_y + 1.0.

Este es un ejemplo muy bбsico, no lo he probado pero deberнa funcionar. En caso de tratarse de una zona mбs compleja, las cosas se complicarнan.

Si el бrea fuese un circulo habrнa que trazar una recta desde la posiciуn del jugador al centro de la circunferencia, y detectar donde corta dicha recta con la circunferencia para poder colocar al jugador en dicha posiciуn. Para ello habrнa que desarrollar un algoritmo, no es complicado, pero sн que serнa algo mбs avanzado que el ejemplo anterior.
Reply


Messages In This Thread
Crear un lнmite en un бrea - by Ghost112397 - 06.01.2017, 02:02
Re: Crear un lнmite en un бrea - by SilverGaming - 06.01.2017, 02:05
Respuesta: Re: Crear un lнmite en un бrea - by Ghost112397 - 06.01.2017, 02:07
Re: Crear un lнmite en un бrea - by SilverGaming - 06.01.2017, 02:14
Respuesta: Crear un lнmite en un бrea - by RIDE2DAY - 06.01.2017, 02:26
Re: Crear un lнmite en un бrea - by lucesita - 06.01.2017, 02:38
Respuesta: Crear un lнmite en un бrea - by RIDE2DAY - 06.01.2017, 02:45

Forum Jump:


Users browsing this thread: 1 Guest(s)