Pulse Control+D para no olvidar este enlace.
 
Pagina principal­Índice­Portal­FAQ­Buscar­Registrarse­Conectarse­Pagina principal
Compartir | 
 

 LOs animales que huyen al verte ¿Es eso posible? =D

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Rhapsode
Patos@
Patos@


Masculino
Edad: 18
Localización: Llegando a Shikkudo
¿Que me Gusta?: Muchas, demasiadas cosas!
Humor: A la perfección
Puntos de Actividad: 758

Cantidad de envíos: 22
Fecha de inscripción: 07/04/2009

Nº. de Miembro: 67
Respeto por el Foro:
100 / 100100 / 100


MensajeTema: LOs animales que huyen al verte ¿Es eso posible? =D   Sáb 30 Mayo 2009, 8:22 pm

Buenas a todos después de un largo tiempo sin pasarme por aquí. Veréis estoy desarrollando un mundo persistente por mi cuenta del que ya os hablaré algún día de estos. Vamos al grano, necesito un script que haga que los animales que lo tengan implementado huyan de todo personaje que divisen en su área de visión. Por si acaso pongo que el módulo utiliza la v1.69.

Venga un saludo, nos veremos bastante a partir de ahora!
Volver arriba Ir abajo
Xiulito
Administrador/a
Administrador/a


Masculino
Edad: 30
Localización: Vivo aqui
Puntos de Actividad: 1620

Cantidad de envíos: 100
Fecha de inscripción: 22/03/2008

Nº. de Miembro: 1
Respeto por el Foro:
100 / 100100 / 100


MensajeTema: Re: LOs animales que huyen al verte ¿Es eso posible? =D   Dom 31 Mayo 2009, 2:25 pm

He estado mirando si conseguía hacer el script que pides pero es algo complicado, mas o menos tengo algo.

Tienes que ponerlo en el OnHearbeat del animal, este saldrá corriendo cada vez que se le acerque un Jugador, ( no puse que saliera corriendo cada vez que viera a cualquier criatura por si quieres poner varios de estos animales juntos y no se asusten los unos de los otros ),
bueno la cuestión es que salir sale corriendo y el script hace un intento de que el punto de destino sea uno alejado al Jugador, pero esto algunas veces no se consigue y aunque nunca va a parar al lado del PC si que se puede dar el caso de que estando alejado se ponga a correr y pase por delante del Jugador aunque su fin sea alejarse del jugador que esto si que lo consigue, te lo dejo por aquí y ya lo retocas como quieras.

Código:
int GetAnchoArea(object oArea);
int GetAltoArea(object oArea);
location LocationAleatoria(object oArea);

location LocDestino(object oPC, object oAnimal)
{
object oAreaAnimal = GetArea(oAnimal);

int i;
location lLocPC = GetLocation(oPC);
location lLocAnimal = GetLocation(oAnimal);

for (i=0; i<999; i++)
    {
    float fDisBet = GetDistanceBetween(oPC, oAnimal);
    location lNewLocAnimal = LocationAleatoria(oAreaAnimal);
    float fDisBetLoc = GetDistanceBetweenLocations(lLocPC, lNewLocAnimal);

    if (fDisBet<fDisBetLoc) {return lNewLocAnimal;}
    else {lNewLocAnimal = LocationAleatoria(oAreaAnimal);}
    }
return lLocPC;
}


void main()
{
object oAnimal = OBJECT_SELF;
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oAnimal);

float fDisBet = GetDistanceBetween(oPC, oAnimal);

if (fDisBet>10.0) return;

if(GetIsObjectValid(oPC))
    {ActionMoveToLocation(LocDestino(oPC, oAnimal), TRUE);}
}

int GetAnchoArea(object oArea)
{
int iResult = 32;
vector vPos = Vector(0.0f, 0.0f, 0.0f );
location lLoc;
int iColor = 517;

while ( iResult > 0 )
    {
    vPos.x = IntToFloat( iResult - 1 );
    lLoc = Location( oArea, vPos, 0.0f );
    iColor = GetTileMainLight1Color( lLoc );

    if ( iColor > -1 && iColor < 32 )
        return iResult;

    iResult--;
    }
return 0;
}

int GetAltoArea(object oArea)
{
int iResult = 32;
vector vPos = Vector(0.0f, 0.0f, 0.0f );
location lLoc;
int iColor = 517;

while ( iResult > 0 )
    {
    vPos.y = IntToFloat( iResult - 1 );
    lLoc = Location( oArea, vPos, 0.0f );
    iColor = GetTileMainLight1Color( lLoc );

    if ( iColor > -1 && iColor < 32 )
        return iResult;

    iResult--;
    }
return 0;
}

location LocationAleatoria(object oArea)
{
int iAncho = GetAnchoArea(oArea)*10;
int iAlto = GetAltoArea(oArea)*10;

return Location(oArea, Vector(IntToFloat(Random(iAncho)+1), IntToFloat(Random(iAlto)+1)), IntToFloat(Random(360)+1));
}

_________________
¿Saben cual es la diferencia entre un hombre inteligente y uno sabio?
Que el inteligente sabe lo que dice y el sabio sabe cuando decirlo.


Fdo.: El Administrador del Foro.
Volver arriba Ir abajo
http://www.nwnforo.com
Rhapsode
Patos@
Patos@


Masculino
Edad: 18
Localización: Llegando a Shikkudo
¿Que me Gusta?: Muchas, demasiadas cosas!
Humor: A la perfección
Puntos de Actividad: 758

Cantidad de envíos: 22
Fecha de inscripción: 07/04/2009

Nº. de Miembro: 67
Respeto por el Foro:
100 / 100100 / 100


MensajeTema: Re: LOs animales que huyen al verte ¿Es eso posible? =D   Dom 31 Mayo 2009, 4:26 pm

Muchas gracias Xiuluto. Verás la idea que tenía con esto es que los animales herbívoros salieran corriendo al ver un humano, como pasa en la realidad. No es lo mismo un conejo que un jabalí, un jabalí te ataca un conejo sale por patas. Con esto quería conseguir un mayor realismo en el ambiente natural, iré posteando algunas ideas que tengo a ver si se puede hacer algo de lo que tengo pensado.
Volver arriba Ir abajo
Ender
Patos@
Patos@


Masculino
Edad: 18
Puntos de Actividad: 481

Cantidad de envíos: 11
Fecha de inscripción: 31/08/2009

Nº. de Miembro: 100
Respeto por el Foro:
100 / 100100 / 100


MensajeTema: Re: LOs animales que huyen al verte ¿Es eso posible? =D   Lun 31 Ago 2009, 2:38 am

Nada más sencillo.

En el evento spawn de la criatura, descomenta lo de cowardly, no tengo ganas de poner ejemplos, pero en ese mismo guion te viene como hacerlo.

Y hay un spawn para herbivoros que hace lo que tu dices, según el nivel. Abre una vaca y lee el guión del spawn, allí lo explica.
Volver arriba Ir abajo
 

LOs animales que huyen al verte ¿Es eso posible? =D

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

Permiso de este foro:No puedes responder a temas en este foro.
Neverwinter Nights, modding - scripts - manuales, todo sobre el NWN :: NWToolSet (Aurora) :: Scripting NWN :: Dudas y Preguntas (Scripting)-