World of Gothic Archiv > NWN-Hilfe
Wiederbelebung
Seite 1 von 1  1 
15.09.2002, 10:23 #1
The King
Beiträge: 100
Wiederbelebung
Ich mach mit einem Freund ein Modul das wir den ganzen Tag auf einem Server laufen lassen. Damit nicht nach einer Stunde die Monster weg sind möchten wir sie nach einer Minute wiederbeleben:

code\:

int zahl = GetUserDefinedEventNumber();
location punkt = GetLocation(OBJECT_SELF);
object pc= GetLastKiller();


void main()
{
switch(zahl);
{
case 1007:

AssignCommand(pc, ActionSpeakString("Noch 60 sec. bis zur wiederbelebung!"));
ActionWait(60.0);
CreateObject(OBJECT_TYPE_CREATURE, "Panther_s", punkt);
break;
}

}


Allerdings geht es mit ActionWait(60.0); nicht den Createobject 60 sec. zu unterdrücken. Kennt jemand eine Funktion mit der CreateObject Wartet bis ActionWait(60.0); fertig ist? PS: Mit ActionDoCommand gehts nicht.
15.09.2002, 11:09 #2
Elessar
Beiträge: 495

Man sollte es durch eine selbstgemachte Funktion so einrichten können, also etwa so:
code\:

void ActionCreateObject(int nType, string sTemplate, location lLocation)
{
CreateObject(nType, sTemplate, lLocation);
}

void main()
{
Action...
Action...
ActionWait(60.0);
ActionDoCommand(ActionCreateObject);
}

15.09.2002, 12:09 #3
Rhaegar
Beiträge: 296

Es reicht auch einfach das CreateObject in ein ActionDoCommand(...) einzupacken. CreateObject ist naemlich keine Action und laesst sich nicht durch ActionWait verzoegern es sei denn man legt es ueber ActionDoCommand auf die ActionQueue.

Alternativ kannst du auch DelayCommand verwenden...
15.09.2002, 12:15 #4
The King
Beiträge: 100

Das alles weiss ich selber aber das mit gleich in ActionDoCommand einpacken geht nicht, der Kompiler zeigt dann einen Fehler an!

Hab das hier probiert:
code\:

void ActionCreateObject(int nType, string sTemplate, location lLocation)
{
CreateObject(nType, sTemplate, lLocation);
}

int zahl = GetUserDefinedEventNumber();
location punkt = GetLocation(OBJECT_SELF);
object pc= GetLastKiller();


void main()
{
switch(zahl);
{
case 1007:

AssignCommand(pc, ActionSpeakString("Noch 60 sec. bis zur wiederbelebung!"));
ActionWait(5.0);
ActionDoCommand(ActionCreateObject(OBJECT_TYPE_CREATURE, "panther001", punkt));
break;
}

}



Geht aber nicht er wartet keine Sckunde und mach dazu noch kein panter sondern ein dachs(habs mit kenz. und resref ausprobiert)
15.09.2002, 12:19 #5
The King
Beiträge: 100

Sorry das mit ActionDoCommand geht jetzt doch(habs nochmal ausprobiert. Aber es kommt immer noch ein dachs und er wartet immer noch nicht. Hier das Script

code\:


int zahl = GetUserDefinedEventNumber();
location punkt = GetLocation(OBJECT_SELF);
object pc= GetLastKiller();


void main()
{
switch(zahl);
{
case 1007:

AssignCommand(pc, ActionSpeakString("Noch 60 sec. bis zur wiederbelebung!"));
ActionWait(20.0);
ActionDoCommand(CreateObject(OBJECT_TYPE_CREATURE, "panther001", punkt));
break;
}

}

15.09.2002, 12:47 #6
Shirat
Beiträge: 511

Das Problem mit dem Dachs hab' ich auch immer, wenn ich eine Kreatur mit dem CreateObject-Befehl erstellen will. Bei Platzierbaren Objekten seltsamerweise net. Auf jeden Fall kann ich dir da auch net helfen. Vielleicht liegts ja an dem OBJECT_TYPE_CREATURE. Versuchs mal mit dem Skript:

code\:

int zahl = GetUserDefinedEventNumber();
location punkt = GetLocation(OBJECT_SELF);
object pc= GetLastKiller();

void main()
{
switch(zahl);
{
case 1007:

AssignCommand(pc, ActionSpeakString("Noch 60 sec. bis zur wiederbelebung!"));
DelayCommand(60,CreateObject(OBJECT_TYPE_ALL, "panther001", punkt));
break;
}

}



Aber ohne Garantie!


___________________________

Visit:
Martins Homepage[/font]
15.09.2002, 12:59 #7
The King
Beiträge: 100

Funzt auch nicht, bei mir geht das mit den plaz. objecten auch!
15.09.2002, 13:04 #8
The King
Beiträge: 100

Ich versuchs mal mit CreateObject(OBJECT_TYPE_CREATURE, GetTag(OBJECT_SELF), GetLocation(OBJECT_SELF), TRUE));

Da fällt mir auf hab den Fehler 15.09.2002 14:03:31: Fehler. '_respawnifdeath' konnte nicht kompiliert werden.
15.09.2002, 13:12 #9
Elessar
Beiträge: 495

Eine Möglichkeit wäre auch noch DelayCommand(60.0, );
Und der Dachs der bei euch erscheint bedeutet eindeutig, dass ihr die falsche ResRef Vorlage angegeben habt (bzw. eine nicht existente)., bei Kreaturen steht die ResRef Vorlage unter Erweitert bei den Eigenschaften.... Glaubt mir es muss daran liegen, schon viele hatten das Problem und merkten dann nach 30 Posts, dass sie tatsächlich einen falschen String angegeben haben...

Rhaegar: Es gibt einige Funktionen die man nicht verzögern kann und da muss man so n Workaround machen...
15.09.2002, 13:28 #10
The King
Beiträge: 100

code\:

int zahl = GetUserDefinedEventNumber();
location punkt = GetLocation(OBJECT_SELF);
object pc= GetLastKiller();
string panter = GetTag(OBJECT_SELF);

void main()
{
if(zahl == 1007)
{
ActionDoCommand(CreateObject(OBJECT_TYPE_CREATURE, panter, punkt)); // Hier kommt respawncreatur.nss(10): FEHLER: DEKLARATION PASST NICHT ZU PARAMETERN
}

}




DAs geht wieder nicht
15.09.2002, 13:39 #11
The King
Beiträge: 100

Prob 1 gelöst:
Jetzt hab ich wieder das gemacht( glaube ActionDoCommand verträgt sich nicht mit createobject:


code\:

int zahl = GetUserDefinedEventNumber();
location punkt = GetLocation(OBJECT_SELF);
object pc= GetLastKiller();
string panter = "panther001"; //sind die resref

void main()
{
if(zahl == 1007)
{
CreateObject(OBJECT_TYPE_CREATURE, panter, punkt);
}

}


Jetzt kommt ein Phanter!
Aber er kommt sofort wenn er stirbt! kann mir wer sagen wie ich das mit der Zeit mache?
15.09.2002, 19:17 #12
The King
Beiträge: 100
War ich dumm!
lösung des Probs: Begebnung! Dort kann man einstellen das man ihn mehrmal aktivieren kann!
Seite 1 von 1  1