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

Quisiera crear un enemigo

Saludos, me gustaria a ver si me podeis ayudar a hacer un scrip que cree un determinado numero de criaturas es para colocarlo en un objeto, quiero que al utilizarlo salgan unos cuantos bichos, solo consigo hacer que aparezca uno y esto se debe a que la variable ya esta utilizada (a saber que quiere decir eso) bueno este es el guión que uso y que de ams esta decir que no es mío lógicamente: void main() { object oPC = GetPCSpeaker(); int nPCgold = GetGold(oPC); if ( nPCgold >= 0) { TakeGoldFromCreature(0, oPC, TRUE); string sCreature = “muerto”; object oMonster = CreateObject(OBJECT_TYPE_CREATURE, sCreature, GetLocation(OBJECT_SELF)); object oItemToTake; oItemToTake = GetItemPossessedBy(GetPCSpeaker(),”amu_muerte”); if(GetIsObjectValid(oItemToTake) != 0) DestroyObject(oItemToTake); } Tambien me gustaria que no hubiese ningun condicionante como lo del dinero, de verdad que no consigo separar este scrip gracias por la paciencia

Saludos!!!

Creo que seria mas facil que pusieras un script en el objeto, que activase un desencadenante de criatura, y no eso, que si te digo la verdad… para hacer lo que quieres no creo que te sirva de mucho.

Te recomiendo que uses este de aqui que acabo de hacer:

void main()
{
object oObjeto = OBJECT_SELF;
//Determinas las criaturas que quieres poner y los puntos
//de ruta
object oBicho1 = GetObjectByTag(“orco1”);
object oBicho2 = GetObjectByTag(“orco2”);
object oPunto1 = GetWaypointByTag(“punto1”);
object oPunto2 = GetWaypointByTag(“punto2”);
location lPunto1 = GetLocation(oPunto1);
location lPunto2 = GetLocation(oPunto2);
//Mandas los orcos a los puntos de ruta
AssignCommand(oBicho1,ActionJumpToLocation(lPunto1));
AssignCommand(oBicho2,ActionJumpToLocation(lPunto2));
//destruyes el objeto
DestroyObject(oObjeto);
}

En este caso las criaturas son orcos. Crea un area vacia y situa alli a las criaturas que quieras, y al usar el objeto apareceran en los puntos de ruta.
El script lo he hecho para que los bichos aparezcan al usar el objeto, no creo que tengas ningun problema al ponerlo al final de una conversacion.
las etiquetas de las criaturas(en este caso), son:orco1 y orco2. Para que aparezcan las tuyas tienes que cambiar estas palabras del script por las etiquetas de tus bichos.
Las etiquetas de los puntos de ruta son: punto1 y punto2. Cambialas por las etiquetas de tus puntos de ruta.

Si quieres añadir mas criaturas, copia las lineas:

object oBichoX = GetObjectByTag(“etiqueta del bicho”);
object oPuntoX = GetObjectByTag(“etiqueta del waypoint”);
location lPuntoX = GetLocation(oPuntoX);
AssignCommand(oBichoX,ActionJumpToLocation(lPuntoX));

Ponlas debajo de las lineas similares a estas(para hacer menos lio).
X = esto lo pongo para facilitarte las cosas, solo tienes que asignarle un numero a cada criatura y ese mismo numero a cada waypoint en el lugar de la X.

En lugar de oBicho puedes poner lo que quieras: oOrco, oEsqueleto,…
pero acuerdate de poner el “o” delante y sustituir esta palabra en los lugares correspondientes. Lo mismo puedes hacer con oPunto y lPunto, pero te aconsejo que lo dejes como esta, que no pasa nada y es mas facil asi.

Si no quieres destruir el objeto al final, borra la linea DestroyObject, no creo que vuelvan a aparecer los bichos ya que el script los teleporta, no los crea de la nada.
El script lo he probado y no me ha dado ningun problema.

PD: Este es mi primer script creado totalmente de 0. Que ilusion .

Saludos!!!

He vuelto a releer el post… . No se si lo que querias era crear las criaturas desde un objeto que posea el PJ.

Si es asi, este script no vale ya que lo he hecho para un ubicado

Aun asi, si no te vale, dilo y miro a ver si puedo hacer algo con lo del objeto del PJ, si te vale…pos nada.

Gracias una vez mas por contestar, efectivamente lo que quería hacer es que el objeto que cree sea del personaje y no de un ubicado pero oye que lo que me has mandado me viene genial además si dices que sirve también para una conversación casi mejor y vamos de hecho ya lo tendría resuelto porque utilizaría un objeto que provoca el desenlace de una conversación:

void main()
{
object oPC;

if (!GetIsPC(GetItemActivatedTarget())
){

return;}

object oTarget;
oPC = GetItemActivator();

oTarget = oPC;

AssignCommand(oTarget, ActionStartConversation(oPC, “Blablabla”));

}

Pese a que esto funciona solo podría poner un objeto único ya que este escrip no reconoce a varios objetos. Tengo uno que si lo hace pero en vez de eso ejecuta otro scrip lo pongo quizas puedas juntarlos.

void main()
{
object oUser = GetItemActivator();
object oTarget = GetItemActivatedTarget();
string sItemTag = GetTag(GetItemActivated());
object oItem = GetItemActivated();

if (sItemTag == "Piedra blabla")
{
    ExecuteScript(" ---------------", oUser);
    return;
}
if (sItemTag == "vara de master")
{
    ExecuteScript("-----------------", oUser);
    return;
} }
Los más activos en Scripting