World of Gothic Archiv
> NWN-Hilfe erstes eigenes script! please help |
|
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 ;) ;) ;) |
||
|