Gludar

31/07/2009 09:36:16

Pues jugando con el Aurora y buscando un tipo de trampa completa para el modulillo que estoy terminando, (espero no hacer el gambay que ya esté resuelto pero no lo veo por ningun lado), estaba preguntándome si hay alguna forma de que cuando uno llegue a una transición solo pueda usarla en el caso de que cumplas unos requisítos.

Ejemplo,: LLegas a una gran zanja y solo puedes pasar al otro lado si superas una tirada de lo que sea, si fallas tiene consecuencias, si aciertas otra
Vamos para que uno pueda estar controlando otras cosas en la aventura sin tener que estar pendiente de esa alma descarriada que se ha apartado del grupo por Unos segundos

Quizás sea lo más fácil de hacer de este mundo, o peor inclusive que ya se haya esplicado y uno inútil no lo encuentre, pero hay días que uno está negado y no atina ni a la de tres, así que mil ojos ven más que dos

Thanks

kosturero

31/07/2009 15:38:57

Si que se puede, pero eso es cosa de los cracks de los scripts, es cuestión de meter un par de lineas nada mas...pero mi ignorancia no me permite ayudarte mas ;) A ver si alguno de los entendidos te lo solventa, puedes pedir tiradas, clases específicas, que e diga una palabra en concreto...lo que quieras.

Gludar

31/07/2009 17:03:09

Gracias Kostu por responder, me alegra saber que es posible, intentaré investigar el tema de scripts, por ahora scripts3-gludar 0, pero a ver si remontamos

AlthorDeMalavir

01/08/2009 00:55:17

Un transicion o una trampa son los llamados triggers, pueden activarse al pasar por encima, pinchar sobre ellos o eventos de este tipo, cuando se realiza esa acción salta normalmente un script que hayas programado.

Primero y ante todo has de saber lo que quieres hacer para poder hacerlo después y que alguien te pueda ayudar, si comentas lo que quieres hacer se te puede hechar una mano desde aquí.

Gludar

01/08/2009 21:00:03

Pues tengo hecha una mazmorra y me gusta la idea del típico precipio que solo se puede saltar si sacas tanto en la tirada, y más adelante otro precipio con una fina cuerda a modo de tiralíneas y pasarla haciéndo equilibrio
.
Mi idea es que una vez llegado a ese punto, haga directamente una tirada de la habilidad requerida y si se solventa con éxito pasar al otro lado sin tener que estar uno pendiente y tenerlo que pasar manualmente

Espero haberme esplicado correctamente

Thanks

Haldyr_Gorcan

02/08/2009 15:52:31

A ver yo conseguí hacer un script de trampas medio solvente...

Pasabas por encima y si no pasabas una tirada de Destreza, caías por ella, asignandote un daño dependiendo de la armadura con la que caigas y los metros ( por eso de llevar ropas o armadura completa) ademas de llevarte a un área distinta. Costo lo suyo pero se hizo.Ademas la losa que tenias debajo se transformaba en foso y ya los demás podían verla...

Lo malo es que no conseguía que la trampa volviese a su estado original, no hubo forma, pero si interesa ya me lo comentas y veremos si se puede hacer algo.

Un saludo

Gludar

02/08/2009 22:29:37

Pues, vaya currada la trampa, suena muy interesante y era una de las dos cosas que tenía en mente, me lo anoto y en cuanto llegue a ese punto te pego un toquetazo.

Ahora que caigo, eso serviría para pasar por una liana?, pongo ejemplo, pasar de un lado a otro de una estancia que el suelo es un lago de lo que querais que haga mucha pupa, y si pasa esa tirada va al otro lado...

Haldyr esa trampa soloservía para destreza o tb para otras tiradas?

Haldyr_Gorcan

02/08/2009 23:39:20

En principio se podría aplicar a la característica que quieras, pero te comento que revisándolo no hacia una tirada ,si no que se aplicaba un valor minimo, pero se podria hacer.

Ya te comento que no es fácil pero lo revisare bien para ver las posibilidades.

mviper

29/12/2009 00:52:25

Haber si hay suerte, y esto es lo que quieres.

Son 3 scripts y una conversacion, la idea es que al pisar un desencadenante generico (o area de transicion), te salte uan conversacion en al que puedas elegir si quieres saltar (pasar por la cuerda, escalar etc), o si por el contrario te lo piensas mejor.

Como pediste, he puesto que te mire tu destreza y lance un D20 para superar una dificultad de 10. En el script esto s epued cambiar a tu antojo, y si decidieras usar una habilidad en vez de caracteristica, podrías eliminar un par de lineas, pero bueno tu querias destreza, y destreza tienes.

Lo primero, has de poner este script en un desencadenante generico o area de transicion, en el OnEnter

[quote:29e5d80e17]
void main()
{
object oPC=GetEnteringObject();//El jugador que entra en el area
if(GetIsPC(oPC)==FALSE)return;//Si el mueco que entra no es un jugador, el script se cancela.

int iSal;
string sSal=GetStringRight(GetTag(OBJECT_SELF),2);//Cogemos el valor entre 1 y 99, del desencadenante,,para saber donde enviarla pj despues

SetLocalInt(oPC,"salto001",StringToInt(sSal));//Guardamos una variable, para asegurarnos que el enviamos al lugar correcto, dependiendo del desencadenante en el que entro
ActionStartConversation(oPC,"salto001");//Iniciamos la conversacion para que confirme que quiere saltar.
}
}
[/quote:29e5d80e17]

Con este script iniciamos al conversacion y ademas guardamos una variable que nos servira para identificar el punto de destino en el caso de tener exito en la prueba de destreza. Es importante (o no funcionara), que la conversacion se llame "salto001"

Una vez puesto el script, creamos la conversacion, por ejemplo:

[quote:29e5d80e17]
Una gran grieta se abre ante ti, el sonido lejano del aire te hace percatarte de que es muy profunda

¿Estas seguro de intentar saltarla?

- Si, por supuesto (Destreza)
- No, ni de coña
[/quote:29e5d80e17]

Nos ponemos en "Si, por supuesto" y en la pestaña "Acciones emprendidas" le metemos este script:

[quote:29e5d80e17]
void main()
{
object oPC=GetPCSpeaker();//El Pj que esta hablando

int iHab=GetAbilityModifier(ABILITY_DEXTERITY,oPC);//Sus bonos de destreza
int iD20=d20(1);//La tirada del D20

if(iD20+iHab>=10)//Si la tirada del D20 mas lso bonos de destreza suman 10 o mas, pasa al otro lado. Si se quiere, se puede sustituir el 10 por cualquier otro valor, modificando asi, la dificultad del salto.
{
string sTag;
int iAre=GetLocalInt(oPC,"salto001");//Cogemos la variable que se guardo cuando entraste en el area.
if(iAre<=9)sTag="salto00"+IntToString(iAre);//Creamos el nombre de la referencia del punto a donde vamos a llevar al pj.
else sTag="salto0"+IntToString(iAre);

object oSal=GetWaypointByTag(sTag);//Marcamos el punto de salto
AssignCommand(oPC,JumpToLocation(GetLocation(oSal)));//Le hacemos saltar
}
else//Si falla la tirada de destreza
{
SendMessageToPC(oPC,"Tu tirada ha sido de "+IntToString(iD20)+" + "+IntToString(iHab)+", insuficiente, te caes");//Le mandamos un mensaje al jugador para indicarle que ha fallado
effect eDan=EffectDamage(d20(1)+5,DAMAGE_TYPE_DIVINE,DAMAGE_POWER_NORMAL);//Calculamos el dano
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDan,oPC);//Le aplicamos el dano
}
}
[/quote:29e5d80e17]

Este ultimo script esta preparado para que puedas ponerlo en hasta 99 desencadenantes genericos con simplemente nombrar su etiqueta "salto0..." lo que sea, por ejemplo el primero seria "salto001", y el ultimo "salto099"

Una vez puesto el primer script en OnEnter, del desencadenante, Puesto el segundo script en la conversacion que se habre, tenemos que poner "Puntos de ruta" alli dodne tenga que terminar el pj, estos puntos de ruta, deben tener la misa etiqueta que el area desde el cual s eenviara al pj.

Es decir, si creamos el desencadenante con al etiqueta "salto004", pondremos un "punto de ruta" con al etiqueta "salto004" alli donde , en caso de tener exito en el chequeo de destreza, deba acabar el pj.

Siempre recordar no poner ese punto de ruta dentro de otro area de este tipo, porque si no, nada mas llegar, se le abrira de nuevo al conversacion para ir a dodne este nuevo desencadenante le envie.

Y por ultimo, y para evitar pequeños problemas, pondremos en el OnExit del desencadenante un pard e lineas, por si el jugador decide no saltar, que no se valla con la variable puesta en la cabeza.

[quote:29e5d80e17]
void main()
{
object oPC=GetExitingObject();//El mueco que sale del area
DeleteLocalInt(oPC,"salto001");//Nos asefuramos no dejar rastros del script de salto
}
[/quote:29e5d80e17]


Recapitulemos, creamos una desencadenante generico con una etiqueta entre "salto001" y "salto099", le ponemos el primer script en OnEnter y el tercer script en OnExit.

Creamos una conversacion, y en al pestaña de "Acciones emprendidas" de la respuesta que enviara al pj al otro lado, ponemos el segundo script.

Realizado todo eso, ponemos un "Punto de ruta" con la misma etiqueta que el desencadenante generico, en el lugar a donde deba ser "teleportado" en caso de exito con el chequeo de destreza.

Espero te sirva... por supuesto el primer script tambien puede ser puesto en uan cuerda, pero deberas ponerlo en OnUsed, y cambiar en al primera linea "GetEnteringObject" por "GetLastUsedBy", y sera la cuerda (u objeto que uses), el que debera llevar la etiqueta y el resref con el nombre de "salto001" a "salto099"