Gene

13/12/2005 23:59:53

Pondre alggunos scrips.


Pnjs con apariencia fantasma

void main()
{
effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF, 0.0);
}


---------------------------------------


Mi estelar xd


#include "x2_inc_switches"

void main()
{
int nEvent =GetUserDefinedItemEventNumber();
object oPC;
object oItem;

if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{

oPC = GetItemActivator();
oItem = GetItemActivated();

//Aqui pon tu script
effect eZom=EffectPolymorph(POLYMORPH_TYPE_COW);//Aqui cambia ZOMBIE por la criatura que quieras y no hace falta tocar mas paraq ue s epoliformice

ApplyEffectToObject(DURATION_TYPE_PERMANENT,eZom,oPC,0.0);//EL 30.0 son los segundos que dura el cambio, si lo quieres permanente, cambia TEMPORAL, por PERMANENT, y el tiempo lo eliminas o pones 0.0
}
}



esto es una piedra de polifomar, tiene ske llamr al scrip igual ke al item ke des poder unico para si.









--------------------------------------------------------




Este hace pa ver al pj volar, y usar el item en cuestion igual ke el anterior, clikear en un sitio con poder unico y donde clikees vereis al pj dar un salto y volar (no nes coña) y subir mntañas y demas.



void main()
{
object oPC;

oPC = GetItemActivator();

AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0f, 11.0f)); //Ajustar tiempo de la animación de meditar

object oTarget;
oTarget = oPC;

effect eEffect;
eEffect =EffectDisappear();

ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 60.0f); //Ajustar el tiempo que permanece invisible

location lTarget;

lTarget = GetItemActivatedTargetLocation();


if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

AssignCommand(oPC, ClearAllActions());

AssignCommand(oPC, ActionJumpToLocation(lTarget));

}




Ojo, el vuelo no lo dominas, clikeas en un terrero como montaña de subir /bajar y el pj dra un ligero vuelo, croe ke los pjs ke tengan VV no le veran volar, creo, yo en modo DM e visto a pjs usarlo y ver la animacion bien.

Ninfablanca

14/12/2005 18:21:48

Muy interesantes, me quedo con la copla y saco mis cositas jeje

Elven_gladiator

15/12/2005 17:22:35

wow! que guapos, gracias Mixar!

mviper

15/12/2005 18:56:23

Mixar marica, ya que haces como propios los scripts que te me pides la menos explica bien las cosas:

En el script de poliformar tu "estelar" (jui jui...) dos cosas...

[quote:f44bf05acb]
esto es una piedra de polifomar, tiene ske llamr al scrip igual ke al item ke des poder unico para si.
[/quote:f44bf05acb]

Explicalo mejor, la piedra (el objeto que activa el pj) debe llevar la ETIQUETA exactamente igual al nombre del script, es decir la piedra puede llamarse "piedra tocanarices de biggby", pero si el script lo guardas con el nombre mx_pid_zom, la ETIQUETA de la piedra debe ser mx_pid_zom, es mas io.. io pondria ese nombre hasta en la ResRef del objeto por si las moscas :P

Y ahora la otra (jui jui jui)


[quote:f44bf05acb]
//Aqui pon tu script
effect eZom=EffectPolymorph(POLYMORPH_TYPE_COW);//Aqui cambia ZOMBIE por la criatura que quieras y no hace falta tocar mas paraq ue s epoliformice
[/quote:f44bf05acb]

Al menos, ya que el efecto es cambiar la apariencia del pj a una vaca, por lo menos modifica la explicacion que te puse io y cambia ZOMBIE por COW, que si no alguien que no sepa se puede perder un poco. Depaso puedes informar que las constantes en las que pueden transformarse estan en la lista de constantes del editor de guiones del aurora, en el botoncito que se llama (curiosamente :P) "constantes"

Ale... me voy a seguir trabajando con el asco de OnClienLeave.... no tiene mas bugs por que no es posible, al final hare que al entrar el pj lo haga sin usos de dotes, ni hechizos.... y si me apuras a solo 1pv :P

IgmarUsul

15/12/2005 19:25:53

[quote:2819eb0c51="Gene"]Pondre alggunos scrips.


Pnjs con apariencia fantasma

void main()
{
effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF, 0.0);
}


---------------------------------------[/quote:2819eb0c51]

Los otros ni los he entendido pero este parece claro y como yo soy muy limitado para esto de los scripts (como acabo de demostrar con eso de que los otros ni papa), donde se deberia colocar este script?? se que en guiones en los tres puntitos ... pero... en cual??

Un saludo y gracias a Gene por hacerlo pùblico y a mviper por crearlos, xDDDDD.

mviper

15/12/2005 21:09:39

Emm aclarare, de los que ha echo publicos solo le hice el de la piedra, los demas solo le guie un poco.

A colacion de la pregunta de igmar, supongo que los quieres para ponerlos sobre bichos que apararecen con un respaw (cuando el pj pisa el desencadenante correspondiente), bueno pues pones las lineas
[code:1:e6b89e6a33]
effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF, 0.0);
[/code:1:e6b89e6a33]

Al final del todo del script de la criatura en la casilla de guiones que se llama OnSpaw. Si usas el archivo que sale por defecto en la criatura te quedara asi:

[code:1:e6b89e6a33]
const int EVENT_USER_DEFINED_PRESPAWN = 1510;
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;


#include "x2_inc_switches"
void main()
{
// User defined OnSpawn event requested?
int nSpecEvent = GetLocalInt(OBJECT_SELF,"X2_USERDEFINED_ONSPAWN_EVENTS");

// Pre Spawn Event requested
if (nSpecEvent == 1 || nSpecEvent == 3 )
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN ));
}

/* Fix for the new golems to reduce their number of attacks */

int nNumber = GetLocalInt(OBJECT_SELF,CREATURE_VAR_NUMBER_OF_ATTACKS);
if (nNumber >0 )
{
SetBaseAttackBonus(nNumber);
}

// Execute default OnSpawn script.
ExecuteScript("nw_c2_default9", OBJECT_SELF);


//Post Spawn event requeste
if (nSpecEvent == 2 || nSpecEvent == 3)
{
SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN));
}

effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF);

}
[/code:1:e6b89e6a33]

Te aconsejo que nunca guardes las modificaciones con el mismo nombre que un archivo por defecto del nwn, si usas como base para tu script un archivo por defecto del nwn, no te cuesta nada guaradarlo con otro nombre y te ahorras problemas, despues al salir del editor de guiones asegurate de que en el bicho se queda el guion que has creado tu y listo, al aparecer lo haran con el semblante fantasmal permanente.

Por lo demas... para criatutras que no aparezcan de un desencadenate (por ejemplo que lo pongas tu con la mano, en el aurora), deberia funcionar igual. :P

Bueno, ya que estoy.. un par de aclaraciones sobre los otros scripts el de volar.... dado que se trata de un objeto de uso de poder unico para si, es muy muy muy muy aconsejable incluir el archivo de switch, porque de vez en cuando al señor nwn le da por fliparse y si ese archivo no esta incluido el objeto se activa (despuesd e la primera activacion) cada vez que lo activas y (aqui llega lo divertido) cada vez que lo adquieres.. es decir si te lo pasan por trueque y al nwn le da por hay.. si ya fue acivado, es muy posible que se active solito nada mas recibir el objeto...

Asi pues os adjunto el mismo script con los switch incluidos. y despues otro en elq ue tu controlas el punto de destino (que previamente has marcado)

[code:1:e6b89e6a33]
#include "x2_inc_switches"

void main()
{
int nEvent =GetUserDefinedItemEventNumber();
object oPC;
object oItem;

if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{

oPC = GetItemActivator();
oItem = GetItemActivated();

AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0f, 11.0f)); //Ajustar tiempo de la animación de meditar
object oTarget;
oTarget = oPC;

effect eEffect;
eEffect =EffectDisappear();

ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 60.0f); //Ajustar el tiempo que permanece invisible

location lTarget;
lTarget = GetItemActivatedTargetLocation();

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionJumpToLocation(lTarget));
}
[/code:1:e6b89e6a33]

Y ahora en otro post. en el que controlas el destino.. :P

IgmarUsul

15/12/2005 21:25:40

Esto.... de que estas hablando mviper??? xDDDDDD. No ahora en serio, supongo que si me lo imprimo y voy siguiendo paso por paso al final lo entenderé como conseguí descifrar lo del staticspaw, pero...

Te lo explico mejor.

Por ejemplo, quiero poner una casa encantada donde los tipos que anden por allí sean fantasmas, es decir personas normales con la apariencia esa que has dicho, me creo un bicho y lo llamo fantasma y creo el script con lo que me has dado y lo llamo Apa_Fantasma o hay que añadirle algo al script???.

Cuando tengo el script en que guion se lo coloco a la criatura??

(Espero no haberla cagado mucho y que esten tres dias riendose de mis nulos conocimientos del asunto, xDDD.)

mviper

15/12/2005 21:49:26

Ale ahi esta el objeto que os teleporta al ultimo punto que marcasteis dando un saltito...

Una ultima cosa sobre los scripts del salto, incluyen un efecto de desaparecer, esto hace que otros pjs no os vean, bueno, solo ven que dais un salto, despues del salto no ven nada mas, lo comento porque vosotros si vereis que vuestro pj aparece en el mismo punto del salto, se arrodilla y se pone a rezar :P pero los demas pjs no... bueno, quizas con vv pero no esta probado.

[code:1:b980db9ed5]
#include "x2_inc_switches"

void main()
{
int nEvent =GetUserDefinedItemEventNumber();
object oPC;
object oItem;

if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{

oPC = GetItemActivator();//Identificamos al pjq ue activa el objeto
oItem = GetItemActivated();//Identificamos el objetoq ue se activo

string sNom=GetName(oPC);//Creamos un string con el nombre del pj
string sNam=sNom+"localizacion";//lo mismo, pero al nombre le incrustamos "localizacion"

if(GetLocalInt(oPC,sNom)==0)//Llamamos a una variable gravada en el pj llamada como el (fijarsus en sNom), cuyo valor la primera vez es siempre 0
{
SetLocalLocation(oPC,sNam,GetLocation(oPC));//Si era 0, guardamos en la cabeza del pj el punto en donde se encuantra ahora el pj
SetLocalInt(oPC,sNom,1);//Cambiamos la variable llamada sNom, y ahora le decimos que vale 1, de esta forma la proxima vez que activemos el objeto, estas dos lineas no se ejecutan
}
else
{
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0f, 0.0f)); //Ajustar tiempo de la animación de meditar

effect eEffect =EffectDisappear();//Creamos un efecto
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oPC, 60.0f); //Y ejecutamos el efecto(Ajustar el tiempo que permanece invisible)

location JumpLoc = GetLocalLocation(oPC,sNam);//Recogemos la variable que guardamos previamente en la cabeza del pj que nos dice donde se activo el objeto la ultima vez

if (GetAreaFromLocation(JumpLoc)==OBJECT_INVALID) return;//Si el punto de aterrizage por lo que sea no es valido (una pared, un ubicado, la pantalla no esta etc.) no se anula el salto
AssignCommand(oPC,ActionJumpToLocation(JumpLoc));//SALTAMOS al punto donde usamos el objeto la ultima vez.
SetLocalInt(oPC,sNom,0);//Gravamos la variable a 0, para que no se ejecute de nuevo el salto la proxima vez que activemos esto.
}
}
}
/*Un par de aclaraciones, el objeto funciona asi:

Cada vez impar que se activa (la primera, tercera, quienta etc.) guarda el
punto donde se encuentra el feo del pj.

Cada vez par que se activa (la segunda, cuarta, sexta etc.) hace que el pj
salte al ultimo punto guardado

Por lo demas, lo de siempre, el objeto ha de tener "Uso unico para si" (ojo
este script no esta preparado para "uso unico", en el cual puedes marcar el
punto de salto con el cursor) debe llevar la ETIQUETA o TAG (depende si esta
en el idioma de los hijos de la gran bretanya, o en el neustro) con el nombre
exacto que valla a llevar este script, luego el nombre del objeto (el que se
ve jugando) puede ser el que us de la gana.

Toda esta parrafada podeis borrarla del script una vez acabeis de montarlo
todo. :P
*/
[/code:1:b980db9ed5]

Ale a disfrutarlo.

mviper

15/12/2005 21:59:14

Veamos.. lo de Igmar, copias (de los scripts que he puesto hoy) el que empieza asi:

[code:1:1a7e19f246]
const int EVENT_USER_DEFINED_PRESPAWN = 1510;
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
[/code:1:1a7e19f246]

Una vez lo has copiado enterito, vas al editor de guiones del Aurora, borras los dos corchetes y el "void main()" que aparecen, ahora que tienes la pagina toda en blanco, pegas el script que te he puesto aqui.

Guardas ese guion con el nombre que mas rabia te de.

Creas el bicho, con el nombre que quieras y aparaiencia que mas te guste, entras en sus propiedades y de todas las pestañas que tiene el bicho hay una que se llama "Guiones" cliqueas sobre ella.

Hay veras una serie de casillas, la primera es "OnBlocked". Bueno pues entre ellas busca la que se llama "OnSpaw", deberia ser la tercera empezando por abajo.

Bueno, en esa casilla OnSpaw, coloca el script que has echo pegando el que te he dejado aqui puesto, guardas el bicho... y listo.

Ahora pon el bicho donde mas te guste.. al entrar a jugar siempre tendra el efecto ese activado, ya entre a traves de un desencadente, lo ponga un dm u lo que sea.

Humm no me gusta hacer esto proque despues se añade quien no debe.. pero como ya noe ntro en el server no creoq ue puede pillarte a tiempo real, asique no em quda mas narices que dejar aqui mi mesenger mdjviper@hotmail"borraresto".com si tienes alguna duda mas, que no creas que sea necesario psotear me dasun toque.... pero ojo al primer listo que use mi mesenger para tocarme los mocos... lo veto, para echar una zarpa siempre tengo tiempo, pero pa chorradas (pasarse fotitos y leches) no pierdo ni un segundo de mi tiempo.

Ale nus vemos.

Gene

16/12/2005 00:32:39

weno weno yo e sio padawan de Mviper XDDDD y a mayoria de los scrips ke se es gracias a el,de exo los posteados son modifikados de los ke me mando el, despues de estar dandle la brasa muxo tiempo XDDDDD


si kereis aprender bien bien Mviper explika las kosas bien y tiene paciencia (pa averme afguantao a mi y lo ke le keda)

^^

mviper

16/12/2005 10:20:42

Naaa no es mi padawan, la cosa es que cuando tiene una duda, pregunta y io intento responder de forma mas o menos acertada, pero el tambien sabe sus cosillas.

Ademas me es muy util que la gente me pida cosas, mismamente mixar, las cosas que pide, muchas de ellas ni s eme habrian ocurrido por mi cuenta, asi pues el me dice loq ue quiere que haga el script, y entre lso dos lo sacamos, y de paso me fuerzo a buscar nuevos usos para funciones ya conocidas... el consigue su script, io aprendo algo nuevo... quid pro quo

:wink:

IgmarUsul

16/12/2005 17:10:48

mViper te explicas de Puta madre, lo entendi todo a la primera.. esta noche lo pongo a prueba, el fantasma dará un quest en Skullport, xDDDD.

Un saludo campeones