Construction Set Von NPC angesprochen werden?

Merin

Freund des Hauses
Was muss ich machen, damit mich ein NPC von alleine anspricht?

MfG,

Merin
 
Zuletzt bearbeitet:
Du legst folgendes Script auf ihn:
Code:
Begin NPCquassler
 
if ( GetDistance player < 30 )
  forcegreeting player
endif
 
end

Bei der 30 musst du ausprobieren, auf welche Distanz der NPC dich ansprechen soll.

Es könnte allerdings sein, dass er dich, sobald du auf "Leb wohl" klickst, sofort wieder anspricht. In diesem Falle müsste das Script entsprechend modifiziert werden:
Code:
Begin NPCquassler
 
short doOnce
 
if ( doOnce == 0 )
  if ( GetDistance player < 30 )
    forcegreeting player
    set doOnce to 1
  endif
endif
 
end

Poste mal, ob's wie gewünscht funktioniert.

Edit: Ach, ja: Sei nicht so ungeduldig.^^
 
  • Like
Reaktionen: Merin
Das erste habe ich gar nicht probiert ... nur das Zweite.

Und das funktioniert jetzt leider auch nicht richtig. Es sah wohl nur so aus, als würde es. Ich werde nicht angesprochen ... :( Ich probier mal das Erste.

MfG,

Merin
 
Es könnte sein, dass du aus der Zeile "forcegreeting player" ein ""NPC-ID"->forcegreeting player" machen musst, sonst weiß das Script nicht, auf welchen NPC der forcegreeting-Befehl anzuwenden ist. Sorry, mein Fehler.
 
  • Like
Reaktionen: Merin
Funktioniert nicht :cry: Ich poste mal das Script, dann siehst du, ob was falsch ist ...

begin MDrecruiter

short doOnce

if ( doOnce == 1 )
if ( GetDistance player < 20 )
MD_recruiter->forcegreeting player
set doOnce to 1
endif
endif

end

MfG,

Merin
 
begin MDrecruiter

short doOnce

if ( doOnce == 1 )
if ( GetDistance player < 20 )
MD_recruiter->forcegreeting player
set doOnce to 1
endif
endif

end

rote Zeile: der Effekt wird nur ausgeführt, wenn doOnce den Wert 1 hat. Diesen Wert bekommt doOnce aber erst mit dem blauen Befehl. Es muss "doOnce == 0" in der Klammer stehen, weil alle Variablen erstmal den Wert null haben. Nach der Ausführung wird doOnce dann auf eins gesetzt und die Bedingung "doOnce == 0" wird nie mehr erfüllt. Folge: Der Effekt tritt nur einmal ein, dann nie wieder.
So muss es aussehen:
Code:
begin MDrecruiter
 
short doOnce
 
[COLOR=black]if ( doOnce == 0 )[/COLOR]
  if ( GetDistance player < 20 )
    MD_recruiter->forcegreeting player
    set doOnce to 1
  endif
endif
 
end
 
  • Like
Reaktionen: Merin
Theoretisch könntest du es aber auch so machen und da ich das schon benutzt habe müsste es auch klappen.:

Begin Name_script
Short status
if ( status == 0 )
if ( getdistance player < 512 ) ;Die Zahl gibt nur die Entfernung an
Forcegreeting
set status to 1
endif
endif
end

Das müsste eigentlich so klappen, aber da ich davon ausgehe, dass das Script von Darkshade funktioniert habe ich das hier nur geschrieben um mla klug zu wirken. :D
 
Das von dir, Darkshade, funktioniert leider immer noch nicht. Ich versuche mal das von Caffalor ...