Construction Set [Problem] AiFollow playe

Lichtkrieger

Abenteurer
ich habe folgendes Problem ich wollte das mir mehrere NPC's folgen mit AIFollow Player 0 0 0 0 0 das funktioniert aber nicht sie drehen sich mir zwar zu wenn ich in ihrer Nähe bin sie folgen mir aber nicht. Woran kann das liegen. Es ist auch so, das es eigendlich aktiviert werden müsste sie drehen sich mir zumindestens zu mehr aber nicht. Warum und wie kann ich das beheben???
 
Ich weiss zwar nicht, ob das nur die Alternativsyntax ist, aber im SFD stehts so:

Code:
AIFollow, player, 0, 0, 0, 0

So kannst du das aber nur in ein Script legen, wenn das Script direkt auf dem folgenden liegt, wenn du alle von extern ansprechen willst musst du das hier verwenden:

Code:
IDPerson1 -> AIFollow, player, 0, 0, 0, 0
IDPerson2 -> AIFollow, player, 0, 0, 0, 0
IDPersonX -> AIFollow, player, 0, 0, 0, 0
 
  • Like
Reaktionen: Lichtkrieger
Bitte beachte auch, dass jeder AI-Befehl nur einmal gegeben werden darf (also mit einer doOnce-Bedingung), da sich sonst die AI aufhängt.
 
  • Like
Reaktionen: Lichtkrieger
Baal Lukor: Das Script liegt auf den NPC. Daher nur:
Code:
AIFollow Player 0 0 0 0 0
Ich glaube nicht das es was mit den Kommas zu tun hat. Bei anderen Sachen benutzte ich auch kein Komma und es funktioniert.
Killfetzer: Ohh, das habe ich nicht gewusst. Danke. Das Script was ich meine sieht so aus.
Code:
Begin ZZ_Mine_Arbeiter_01

if ( GetJournalIndex "ZZ_Vul-Mine_01" < 10 )
   disable
elseif ( GetJournalIndex "ZZ_Vul-Mine_01" >= 10 )
   Enable
   AiFollow Player 0 0 0 0 0
endif

if ( ZZ_Mine_Arbeiter_02 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
   AiWander 50 5 10 0 0 0 0 0 0 0 0
elseif ( ZZ_Mine_Arbeiter_03 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
   AiWander 50 5 10 0 0 0 0 0 0 0 0
elseif ( ZZ_Mine_Arbeiter_04 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
   AiWander 50 5 10 0 0 0 0 0 0 0 0
   GetJournalIndex ZZ_Vul-Mine_01 15
endif

if ( ZZ_Mine_Arbeiter_02 -> OnDeath == 1 )
   if ( ZZ_Mine_Arbeiter_03 -> OnDeath == 1 )
      if ( ZZ_Mine_Arbeiter_04 -> OnDeath == 1 )
         Journal ZZ_Vul-Mine_01 20
         PcExpell "Gilde"
      endif
   endif
endif

end

Also kommt hier:
Code:
if ( GetJournalIndex "ZZ_Vul-Mine_01" < 10 )
   disable
elseif ( GetJournalIndex "ZZ_Vul-Mine_01" >= 10 )
   Enable
   AiFollow Player 0 0 0 0 0
endif

das so hin:
Code:
if ( GetJournalIndex "ZZ_Vul-Mine_01" < 10 )
   disable
else
If ( DoOnce == 0 )
if ( GetJournalIndex "ZZ_Vul-Mine_01" >= 10 )
   Enable
   AiFollow Player 0 0 0 0 0
   set DoOnce to 1
endif
EndIf
Nochmals Danke
 
Also vom logischen her würde ich die do_once schleife ja in den Tagebucheintrag verschachteln, aber gut, das is rein optisch...
 
Öhm, leider habe ich immer noch das Problem das Funktioniert mit oder ohne Do_once Variable nicht die bleiben stehen und sie Folgen mir nicht. Warum wie kann ich das beheben??? Sie drehen sich mir nur zu folgen mir aber nicht.
 
Probiers mal mit nur 4 Nullen. Der letzte ist ein Flag von dem scheinbar niemand weiß wozu er da ist.
 
Schade habe die fünfte null weggemacht aber da passiert immer noch nichts. Ob das daran liegt das ich das Wander pack, was man bei den NPC ausuchen kann, bei AI noch nicht weggemacht habe.
 
Du hast einen ganz bösen Fehler drin: Die Scripts dürfen nicht die gleiche ID wie Tagebuch und Arbeiter haben. Ausserdem gibt dein Script sofort in jedem Frame unterhalb der AiFollow-Anweisung AiWander-Anweisungen an alle anderen Arbeiter- vieleicht dreht sich das im Kreis???

Ausserdem:

if ( Arbeiter1-> OnDeath == 1 )
if ( Arbeiter2-> OnDeath == 1 )

;kann nur hier hin wenn beide im gleichen Moment getötet werden...
; so kann man einen Zauber mit Radius erzwingen aber so ist es sicher nicht gedacht.

endif
endif


besser ist wenn Du jedem Arbeiter im Script eine

"short isDead" deklarierst. Und dann im Arbeiter-Script einsetzt:

if ( isDead == 0 )
set isDead to OnDeath
endif

im anderen Script-Teil kannst Du dann abfragen:

if ( Arbeiter1.isDead == 1 )
if ( Arbeiter2.isDead == 1 )
; jetzt klappt das...
endif
endif

Sollte das zu kompliziert sein dann frag eben

if ( GetDeadCount "Arbeiter1" > 0 )
if ( GetDeadCount "Arbeiter2" > 0 )
; sobald beide mindestens einmal getötet wurden...
endif
endif
 
Zuletzt bearbeitet:
öhm das heist??
wie soll ich das anderst machen wenn ich journal ZZ_Vul-Mine_01 10 habe sollen sie da sein und sie sollen mir gleich folgen wenn min. einer ankommt soll ich Journal ZZ_Vul-Mine_01 15 bekommen und dann verschwinden wenn alle sterben soll ich 20 bekommen

EDIT: Mir ist was komisches aufgefallen sobald ich die drei arbeiter umgebracht habe sind die anderen mir gefolgt. Habe vergessen zu sagen das noch zwei andere mir folgen sollen.

EDIT(2): NICHT MEHR IN DIESEM TOPIC AUF MEIE FRAGE ANTWORTEN habe es schon gelöst
 
Zuletzt bearbeitet:
hi

hallo,
ich hab das alles gelesn und und werd nich schlau draus xD hab nämlich ne ähnliche frage ... wie mach ich des, dass ich zu nem npc hingeh und dann sowas wie "los gets" anklicken kann und der dann zu einer bestimmten stelle geht?