World of Gothic Archiv > NWN-Hilfe
wieder so ne scriptfrage...
Seite 1 von 1  1 
17.07.2002, 09:46 #1
Goon
Beiträge: 73
wieder so ne scriptfrage...
also, der einzige der mir da wahrscheinlich hier helfen kann, ist gawain....

wie schaffe ich es in einen Kampf gegen einen NPC, wenn der NPC "dem Tode nahe ist" mich anspricht und um sein Leben bettelt?

hoffe ich habs verständlich erklärt

mfg goon
17.07.2002, 10:11 #2
Levi
Beiträge: 43

Ich weiß es nicht genau, aber ich nehm an du musst im On_Damaged-Skript des NPC halt mit GetCurrentHitpoints abfragen, wie guts ihm noch geht, und ab einer bestimmten Grenze erreicht hat mit
AdjustReputation(GetPCSpeaker(), OBJECT_SELF, 100);
die beiden "befrieden" und mit
AssignCommand(oPC, ClearAllActions());
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC, ActionMoveToObject(oPC));
AssignCommand(oNPC, ActionStartConversation(oPC));

den Dialog starten.
Was ich aber nicht weiß ist, wie du verhinderst, dass der NPC bei nem besonders däftigen Schlag doch verreckt.
Vielleicht kann man das On_Death-Skript auch so ändern, dass der NPC nicht stirbt?
17.07.2002, 17:04 #3
Gawain15
Beiträge: 1.084

Yo so würd ichs auch machen. Du kannst den NPC nicht unverwundbar machen und dann wieder nicht... du kannst ihn aber heilen und Wiederauferstehung sprechen... aber das kommt nicht so gut wenn auf einmal wild rum gezaubert wird und der Spieler weiß gar nicht was passiert :) Es gibt den Befehl GetPercentageHPLoss oder so ähnlich (kann den Edi noch immer nicht starten... aber du wirst es schon finden) dort sagst du halt wenn der NPC 60% HP oder so verloren hat gibt er auf du kannst auch noch mit Speakstring eine Zeile machen so wie "Ich gebe auf" oder so dann weiß der Spieler warum der Kampf aufgehört hat und greift den NPC nicht gleich wieder an. Wenn jetzt natülich ein level 20 Char das Modul spielt und mit einem Schlag 80 Schaden macht ist es natürlich schlecht aber dann haben sie selbst Schuld das sie sich das Spiel versaut haben :)
17.07.2002, 17:19 #4
Cordovan
Beiträge: 39

Könnte man das skript gerade mal im Ganzen hier aufführen damit ich es direkt übernehmen kann? Das wäre Klasse :D

Vielen Dank :)
17.07.2002, 17:42 #5
Gawain15
Beiträge: 1.084

Ich grad nicht da der Edi noch immer nicht startet und ich daher die genauen Befehlsbezeichnungne nicht kenne (ja ich weiß ich sollte mich jetzt schämen weil ich die Bezeichnungen nicht alle auswendig kann :))
17.07.2002, 17:43 #6
Levi
Beiträge: 43

Also erstmal gibt GetPercentageHPLoss witzigerweise zurück, wieviel Prozent das opfer ÜBRIG hat! Witzige Skriptsprache...

void main()
{
// Wenn nur noch 40% Health übrig sind...
if (GetCurrentHitpoints(OBJECT_SELF)<=40)
{
// oPC sei der Angreifer
object oPC = GetAttackTarget();
// Frieden machen. :) 100 is vielleicht übertrieben,
// da heiraten die ja gleich, aber egal
AdjustReputation(oPC, OBJECT_SELF, 100);
// Alle bisherigen Kommandos (z.B. Angriffe) löschen
AssignCommand(oPC, ClearAllActions());
AssignCommand(OBJECT_SELF, ClearAllActions());
// Und jetzt: labern
AssignCommand(oNPC, ActionStartConversation(oPC));
}


Is ungetestet, das musste selber machen. ;)
17.07.2002, 17:51 #7
Cordovan
Beiträge: 39

Danke vielmals, werd es mal testen :)
*verbeug*
17.07.2002, 19:14 #8
Levi
Beiträge: 43

np.
Wenns nicht klappt sag bescheid, dann schau ichs mir nochmal genauer an.
18.07.2002, 09:17 #9
Targeteron
Beiträge: 5

versuch mal in das script das die HP checkt einfach das einzubauen:

// Use this on an NPC to cause all creatures within a 10-metre radius to stop
// what they are doing and sets the NPC's enemies within this range to be
// neutral towards the NPC for roughly 3 minutes. If this command is run on a PC
// or an object that is not a creature, nothing will happen.
void SurrenderToEnemies()

habs schnell aus dem scripteditor rauskopiert. der command sollte dann heissen

AssignCommand(oNPC, SurrenderToEnemies());
AssignCommand(oNPC, ActionStartConversation(oPC));

das wars.
18.07.2002, 11:20 #10
Levi
Beiträge: 43

Stimmt, das ist wahrscheinlich insofern besser, dass bei meinem Skript wahrscheinlich die Begleiter den Kampf nicht einstellen.
Außerdem ist es kürzer. ;)
Seite 1 von 1  1