Gludar31/07/2009 09:36:16Pues 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 kosturero31/07/2009 15:38:57Si 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.Gludar31/07/2009 17:03:09Gracias Kostu por responder, me alegra saber que es posible, intentaré investigar el tema de scripts, por ahora scripts3-gludar 0, pero a ver si remontamosAlthorDeMalavir01/08/2009 00:55:17Un 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í. Gludar01/08/2009 21:00:03Pues 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_Gorcan02/08/2009 15:52:31A 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 Gludar02/08/2009 22:29:37Pues, 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_Gorcan02/08/2009 23:39:20En 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. mviper29/12/2009 00:52:25Haber 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" |