World of Gothic Archiv > NWN-Hilfe
erstes eigenes script! please help
Seite 1 von 1  1 
19.07.2002, 19:55 #1
Leman Russ
Beiträge: 47
erstes eigenes script! please help
Also ich habe folgendes script geschrieben! Es ist mein erstes und ich hab null Ahnung! (weshalb es noch nicht funzt) Vielleicht kann mir jemand sagen was ich falsch gemacht hab!

void main()
{
object oNPC = GetObjectByTag("NPCS");
object oWP_NPCS = GetObjectByTag("WP_NPCS");
AssignCommand(oNPC, ClearAllActions());
ActionForceMoveToObject(oWP_NPCS, TRUE, 1.0f, 20.0f);
ActionDoCommand(DestroyObject(OBJECT_SELF));
}
int StartingConditional()
{

if(!(GetLocalInt(GetPCSpeaker(), "isania") == 1))

return FALSE;

return TRUE;
}

Es geht also darum, das Ich einen Trigger gesetzt hab, und bei onHeartbeat das script eingetragen hab! Sobald die locale variable auf isania 1 steht soll er ausgelöst werden und einige Leute sollen fliehen; in diesem Fall gab ich ihnen den Tag NPCS, und zwar zum wegpunkt WP_NPCS!

Liegt es eventuel daran, das ich allen NPC's den selben Tag gegeben hab, oder hab ich einen Fehler gemacht? Ich habe es so geschrieben wie es mir logisch erschien!

Hab es jetzt folgendermaßen umgeändert! Geht aber immernoch net

void main()
{
object oNPC = GetObjectByTag("NPCS");
object oWP_NPCS = GetWaypointByTag("WP_NPCS");
AssignCommand(oNPC, ClearAllActions());
ActionMoveToObject(oWP_NPCS, TRUE);
ActionDoCommand(DestroyObject(OBJECT_SELF));
}
int StartingConditional()
{

if(!(GetLocalInt(GetPCSpeaker(), "isania") == 1))

return FALSE;

return TRUE;
}
19.07.2002, 21:04 #2
GuradonHellsing
Beiträge: 232

eohm mir is noch nich ganz klar was du mit dem zerstören des triggers bezwecken willst,aber ich würde das ganze eher so schreiben:

void main()
{
object oNPC = GetObjectByTag("NPCS");
object oWP_NPCS = GetWaypointByTag("WP_NPCS");
if((GetLocalInt(GetPCSpeaker(), "isania") == 1))
{
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oWP_NPCS, TRUE));
SetLocalInt(GetLastSpeaker(),"isania",0);
};
}
unter onheartbeatnurn vorschlag
19.07.2002, 22:09 #3
Leman Russ
Beiträge: 47

Nein das klappt leider auch nicht!

Hups! Ich wollt nich den Trigger zerstören...sindern die NPC Leute

Liegt es eventuell daran, das ich den NPCS dieses script

void main()
{
int iRandom;
iRandom = Random(5);
if (iRandom == 0)
SpeakString("Ich flehe euch an, lasst Sie gehn!");
ActionPlayAnimation(ANIMATION_LOOPING_TALK_PLEADING,1.0,3.0);
if (iRandom == 1)
SpeakString("Gnade!!");
if (iRandom == 2)
SpeakString("Nieder mit dem Schreckenregiem");
ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT,1.0,1.5);
if (iRandom == 3)
SpeakString("Tot der Daemonenmeisterin!");
ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY1,1.0,1.0);
if (iRandom == 4)
SpeakString("Gnade bitte Gnade!");
}

bei onHeartbeat gegeben hab? Weden sie vieleicht damit zusammenhängend nicht von der clearAllActions function betroffen? --> Ich verstehs nich mehr!
19.07.2002, 22:15 #4
GuradonHellsing
Beiträge: 232

mh es könnte sein das das ganze nich geht weil die alle 6 sec wieda anfangen zu labern also nimma das clear all actions weg oder test ma ohne das npc script
19.07.2002, 22:19 #5
Leman Russ
Beiträge: 47

Also es liegt defenitiv am script! <--mein fehler

Ich weiss jetzt wie ichs mach!
Aber kann ich irgendwie ne verzögerung einbauen?
19.07.2002, 22:25 #6
GuradonHellsing
Beiträge: 232

gib den npcs ma verschiedene kennungen,wenn du es nich schon getan hast.
und dann ma so
void main()
{
object oNPC = GetObjectByTag("NPCS");
object oNPC2 =GetObjectByTag("NPC2");
object oWP_NPCS = GetWaypointByTag("WP_NPCS");
AssignCommand(oNPC,ActionMoveToObject(oWP_NPCS, TRUE));
AssignCommand(oNPC2,ActionMoveToObject(oWP_NPCS, TRUE));
//usw.
}
19.07.2002, 22:50 #7
Leman Russ
Beiträge: 47

Ja ich war gerade dabei, sieht jetzt folgendermaßen aus!

void main()
{
object oNPC = GetObjectByTag("NPCS");
object oNPC1 = GetObjectByTag("NPCS1");
object oNPC2 = GetObjectByTag("NPCS2");
object oNPC3 = GetObjectByTag("NPCS3");
object oNPC4 = GetObjectByTag("NPCS4");
object oNPC5 = GetObjectByTag("NPCS5");
object oNPC6 = GetObjectByTag("NPCS6");
object oWP_NPCS = GetWaypointByTag("WP_NPCS");
object oWP_NPCS1 = GetWaypointByTag("WP_NPCS1");
object oWP_NPCS2 = GetWaypointByTag("WP_NPCS2");
{
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC1, ClearAllActions());
AssignCommand(oNPC2, ClearAllActions());
AssignCommand(oNPC3, ClearAllActions());
AssignCommand(oNPC4, ClearAllActions());
AssignCommand(oNPC5, ClearAllActions());
AssignCommand(oNPC6, ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oWP_NPCS, FALSE));
AssignCommand(oNPC1,ActionMoveToObject(oWP_NPCS1, FALSE));
AssignCommand(oNPC2,ActionMoveToObject(oWP_NPCS2, FALSE));
AssignCommand(oNPC3,ActionMoveToObject(oWP_NPCS1, FALSE));
AssignCommand(oNPC4,ActionMoveToObject(oWP_NPCS, FALSE));
AssignCommand(oNPC5,ActionMoveToObject(oWP_NPCS2, FALSE));
AssignCommand(oNPC6,ActionMoveToObject(oWP_NPCS, FALSE));
};
}

Werds jetzt probieren! brauch dan nur noch eine verzögerung, damit die net alle sofort rumlaufen! kann ich den parameter eventuel gleich hinter die Funktion oder Konstante hängen!

@GuradonHellsing
Auf jeden Fall schon mal THX a lot! :-)
20.07.2002, 13:37 #8
GuradonHellsing
Beiträge: 232

np
ich empfehle delaycommand()
20.07.2002, 13:42 #9
Leman Russ
Beiträge: 47

Hab ich eingebaut, funktioniert wunderbar! Das ganze sieht jetzt so aus

void main()
{
object oNPC = GetObjectByTag("NPCS");
object oNPC1 = GetObjectByTag("NPCS1");
object oNPC2 = GetObjectByTag("NPCS2");
object oNPC3 = GetObjectByTag("NPCS3");
object oNPC4 = GetObjectByTag("NPCS4");
object oNPC5 = GetObjectByTag("NPCS5");
object oNPC6 = GetObjectByTag("NPCS6");
object oWP_NPCS = GetWaypointByTag("WP_NPCS");
object oWP_NPCS1 = GetWaypointByTag("WP_NPCS1");
object oWP_NPCS2 = GetWaypointByTag("WP_NPCS2");
{
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC1, ClearAllActions());
AssignCommand(oNPC2, ClearAllActions());
AssignCommand(oNPC3, ClearAllActions());
AssignCommand(oNPC4, ClearAllActions());
AssignCommand(oNPC5, ClearAllActions());
AssignCommand(oNPC6, ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oWP_NPCS, FALSE));
AssignCommand(oNPC1,ActionMoveToObject(oWP_NPCS1, FALSE));
AssignCommand(oNPC2,ActionMoveToObject(oWP_NPCS2, FALSE));
AssignCommand(oNPC3,ActionMoveToObject(oWP_NPCS1, FALSE));
AssignCommand(oNPC4,ActionMoveToObject(oWP_NPCS, FALSE));
AssignCommand(oNPC5,ActionMoveToObject(oWP_NPCS2, FALSE));
AssignCommand(oNPC6,ActionMoveToObject(oWP_NPCS, FALSE));
DelayCommand(10.0, DestroyObject(oNPC));
DelayCommand(12.0, DestroyObject(oNPC1));
DelayCommand(10.0, DestroyObject(oNPC2));
DelayCommand(9.0, DestroyObject(oNPC3));
DelayCommand(10.0, DestroyObject(oNPC4));
DelayCommand(10.0, DestroyObject(oNPC5));
DelayCommand(11.0, DestroyObject(oNPC6));
};
}
20.07.2002, 14:57 #10
GuradonHellsing
Beiträge: 232

dann gratuliere ich dir zum ersten script ;) ;) ;)
Seite 1 von 1  1