Neverwinter Nights
Menú
Gamersmafia es ahora un archivo de solo lectura.

Funcion para retrasar.

Saludos!!! Puede que esta pregunta sea una tonteria, pero necesito saber la respuesta. ¿Que funcion tengo que utilizar para que las demas funciones del script tarden en ejecutarse X segundos?. Ejemplo: Quiero que un PNJ se mueva a un WP y que al pasar 2 segundos otro PNJ se mueva a otro WP. Tendria que utilizar un MoveToObject para cada uno, pero sin la funcion que retrase la accion del segundo PNJ, los dos tipos se moveran a la vez en cuanto se ejecute el script. Supongo que hay que ponerle una funcion del tipo: AssignCommand o DelayCommand, en las que dentro van otras funciones. Si alguien me puede ayudar…Gracias.

Para tu caso, el scritp que buscas sería

AssignCommand(oPJ1, ActionMoveToObject(lLugar));
DelayCommand(2.0, AssignCommand(oPJ1, ActionMoveToObject(lLugar)));

Otra posibilidad que tienes, es usar el comando Wait, que sirve para parar todo el script durante el tiempo que precieses.

La diferencia, es que con el DelayCommand, el script sigue rulando, y espera 2 segundos para realizar la orden, mientras que en el Wait, el script se para durante 2 segundos, completamente.

Saludos!!!

Ya vi la opcion del ActionWait, pero no se cual seria la estructura del script para que funcione.
La del Delay es la que he utilizado pero no consigo que funcione. Lo de los PNJ que van a WP, era solo un ejemplo. Lo que yo quiero es que aparezcan unas luces una tras otra pasado 1 segundo. Esto es lo que hago:

DelayCommand(10,AssignCommand(oLuz,JumpToObject(oWp));

Con esto quiero que la luz pase de un lugar al WP, pero no consigo que aparezcan. Antes utilice el activar o desactivar las luces y si lo hacia pero no me gustaba el efecto que quedaba con ello y puse el JumpToObject.

Ya se porqué no te rula…

[quote:d5cfcbfcd7]DelayCommand(10,AssignCommand(oLuz,JumpToObject(oWp)); [/quote:d5cfcbfcd7]

Si te fijas [b:d5cfcbfcd7]bien[/b:d5cfcbfcd7], un DelayCommand es una función que hace esperar un tiempo una acción… y dicho tiempo, en el NwN se pone en segundos… y décimas de segundo.

DelayCommand(0.0f, Action);

Tu tienes puesto: DelayCommand(10, Action); , cuando debería ser: DelayCommand(10.0, Action); .

Tsk, hay que fijarse en esos detallitos

Saludos!!!

Mil perdones . El script que puse arriba esta mal. En el script mio esta puesto 1.0, no 10. El punto si lo he puesto. Pongo aqui el lugar donde me da el fallo:

//En la siguiente linea me da fallo
DelayCommand(2.0,AssignCommand(oAzul,ActionJumpToLocation(lSitio1));
//En la siguiente linea, no me da fallo
DelayCommand(2.0,AssignCommand(oPalanca,ActionSpeakString(sDice1)));

Las dos lineas son basicamente iguales.
Tiene que ser un fallo del ActionJump o no se. Lo he intentado con JumpToObject y Location, con CreateObject…pero no me va.

Saludos!!!

Mejor pongo el script entero y asi podeis ver si el fallo viene de antes o no(que alguna vez me a pasao).

void main()
{
object oLugar1 = GetWaypointByTag(“azul”);
object oLugar2 = GetWaypointByTag(“cyan”);
object oLugar3 = GetWaypointByTag(“verde”);
object oLugar4 = GetWaypointByTag(“amarillo”);
object oLugar5 = GetWaypointByTag(“naranja”);
object oLugar6 = GetWaypointByTag(“rojo”);
object oLugar7 = GetWaypointByTag(“purpura”);
location lSitio1 = GetLocation(oLugar1);
location lSitio2 = GetLocation(oLugar2);
location lSitio3 = GetLocation(oLugar3);
location lSitio4 = GetLocation(oLugar4);
location lSitio5 = GetLocation(oLugar5);
location lSitio6 = GetLocation(oLugar6);
location lSitio7 = GetLocation(oLugar7);
object oPalanca = GetObjectByTag(“palanca75_001”);
object oAzul = GetObjectByTag(“luzazul75”);
object oCyan = GetObjectByTag(“blueprint003”);
object oVerde = GetObjectByTag(“blueprint008”);
object oAmarillo = GetObjectByTag(“blueprint004”);
object oNaranja = GetObjectByTag(“blueprint007”);
object oRojo = GetObjectByTag(“blueprint005”);
object oPurpura = GetObjectByTag(“blueprint006”);
string sDice1 = “Activando cambio de instrucciones”;
string sDice2 = “Buscando objetivos”;
string sDice3 = “Objetivos encontrados”;
string sDice4 = “Iniciando cambios en instrucciones”;
string sDice5 = “Guardando cambios de instrucciones”;
string sDice6 = “Almacenando informacion”;
string sDice7 = “Accion finalizada”;
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
ActionStartConversation(GetLastUsedBy(), “ac_palanca76_1”);
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
DelayCommand(2.0,AssignCommand(oAzul,ActionJumpToLocation(lSitio1));
DelayCommand(2.0,AssignCommand(oPalanca,ActionSpeakString(sDice1)));
DelayCommand(4.0,AssignCommand(oCyan,ActionJumpToLocation(lSitio2));
DelayCommand(4.0,AssignCommand(oPalanca,ActionSpeakString(sDice2)));
DelayCommand(6.0,AssignCommand(oVerde,ActionJumpToLocation(lSitio3));
DelayCommand(6.0,AssignCommand(oPalanca,ActionSpeakString(sDice3)));
DelayCommand(8.0,AssignCommand(oAmarillo,ActionJumpToLocation(lSitio4));
DelayCommand(8.0,AssignCommand(oPalanca,ActionSpeakString(sDice4)));
DelayCommand(10.0,AssignCommand(oNaranja,ActionJumpToLocation(lSitio5));
DelayCommand(10.0,AssignCommand(oPalanca,ActionSpeakString(sDice5)));
DelayCommand(12.0,AssignCommand(oRojo,ActionJumpToLocation(lSitio6));
DelayCommand(12.0,AssignCommand(oPalanca,ActionSpeakString(sDice6)));
DelayCommand(14.0,AssignCommand(oPurpura,ActionJumpToLocation(lSitio7));
DelayCommand(14.0,AssignCommand(oPalanca,ActionSpeakString(sDice7)));
}

Se trata de que al activar un mecanismo, aparezcan unos haces de luz en orden y pasados un par de segundos.

Saludos!!!

Bueno…ejem.

  • Primero deciros que he encontrado el fallo del script.
  • Segundo deciros que podeis patearme el culo porque era lo mas tonto que me podia pasar.

¡¡¡UN PARENTESIS!!!.
El fallo era un “)” en las lineas de ActionJumpToLocation.

Si es que es para matarme.
Perdon por las molestias y gracias por la ayuda.

Ya… eso te iba a decir… que en la primera línea se abrían tres paréntesis, y se cerraban sólo dos…

Esos son los fallos a los que hay que prestar mayor interés

Saludos!!!

Una vez mas, lo siento por mi torpeza.

Tambien son los fallos en los que menos me fijo. Suelo mirar antes las funciones y los oTal,lTal,etc…que los parentesis y los punto y coma.

Los más activos en Scripting