World of Gothic Archiv > NWN-Hilfe
Einen Schutzstein erschaffen
Seite 1 von 1  1 
16.09.2002, 13:42 #1
Clouty
Beiträge: 39
Einen Schutzstein erschaffen
Moin ihr Leutchen da draußen in der weiten, weiten Ferne!

Vielleicht hat ja nochmal jemnand lußt mir zu helfen, nachdem ich wegen des Probs mit der Tür hier auf sehr gute und nette Hilfe gestoßen bin.

Aaalso, ...ihr kennt doch sicherlich in Kapitel 2 in NWN die Stelle wo man in Turm des Magiers kommt (weiß den Namen grade nicht) und mit Hilfe seines Schutzsteines vor den Monstern sicher ist und die den Spieler nicht angreifen?!

Genau sowas wollte ich bei mir ins Modul einbauen, und bevor ich jetzt das Modul durchwühle mal hier nachfragen ob einer so ein Script parrat hat:

Man hat den Schutzstein im Inventar, solange greifen einen die Monster im Raum auch nicht an. Sobals man den Stein aber nicht hat bzw. ihn nie hatte wird man normal angegriffen.

Was muß ich da tun?

THX!

Gruß,
Clouty
17.09.2002, 19:14 #2
The King
Beiträge: 100

Hmm... Du must einstellen das wenn der Speler das item ablegt die Fraktion der Monster sich negativ verändert! Wenn er es aufnimmt dann muss die sich wieder auf 100 stellen! (OnAcquireItem und OnunAcquireItem, bei eigenschaften des Moduls)

Schau am besten in Kapitel 2 nach! Wiso sollen wir ein script schreiben wenn es schon eins giebt!!
18.09.2002, 15:45 #3
Clouty
Beiträge: 39

Jo, danke. Das ist ganz schön groß das 2te Kapitel. Ich such nun schon fast ewig. :) Egal.

Wenn denoch jemand ein script hat kann er es ja posten.

Clouty
09.10.2002, 16:23 #4
Clouty
Beiträge: 39

Moin,

habe trotz suchen und suchen immer noch nicht ds Script gefunden.
Kann mir wer bitte weiterhelfen?

Clouty
10.10.2002, 15:42 #5
DTime
Beiträge: 155

So, hier ist ein bißchen Hilfe:
Das/die Skripte ist/sind ein bißchen lang um sie hier zu posten, außerdem haben die das nicht per Modulskript OnAquireItem gemacht. Ich sag dir mal wo du die Skripte findest!

Öffne das Kapitel 2 mit dem Toolset (ich weiß das dauert ewig, aber ich hab mir die Arbeit ja auch gemacht ;) ). Suche das Gebiet Südstraße-Warnevs Turm(Erdgeschoss) und öffne es. Gehe zu den Kreaturen und öffne die Eigenschaften eines der beiden Golems (da ist nämlich auch das Alarmskript hinterlegt!). Unter Skripte das OnHeartbeat und das OnPerception Skript ansehen! Da steht alles was du brauchst!

Hoffe das hilft dir jetzt weiter

Gruß
DTime
10.10.2002, 17:00 #6
Clouty
Beiträge: 39

quote:
Zitat von DTime
So, hier ist ein bißchen Hilfe:
Das/die Skripte ist/sind ein bißchen lang um sie hier zu posten, außerdem haben die das nicht per Modulskript OnAquireItem gemacht. Ich sag dir mal wo du die Skripte findest!

Öffne das Kapitel 2 mit dem Toolset (ich weiß das dauert ewig, aber ich hab mir die Arbeit ja auch gemacht ;) ). Suche das Gebiet Südstraße-Warnevs Turm(Erdgeschoss) und öffne es. Gehe zu den Kreaturen und öffne die Eigenschaften eines der beiden Golems (da ist nämlich auch das Alarmskript hinterlegt!). Unter Skripte das OnHeartbeat und das OnPerception Skript ansehen! Da steht alles was du brauchst!

Hoffe das hilft dir jetzt weiter

Gruß
DTime



Jo, danke erstmal man!
Klar hilft mir das weiter.

Ich habe mir jetzt beide Scripts herauskopiert ... oh oh oh ... mus erstmal schaun wie ich, als nichtscripter, den ganzen anderen Gedöhns aus den Scripts raushauen kann der überflüssig ist, Gong schlagen, Objektbezeichnungen usw. Den so stüzt er irgendwie ab. Und was ist der Schutzstein-Tag in dem Script, da ist sovieles ....?

Clouty
11.10.2002, 13:23 #7
DTime
Beiträge: 155

Wenn du nur überprüfen willst ob der PC den Gegenstand trägt und im Falle des nicht Besitzens angegriffen werden soll ist das eher einfach


void main()
{
else if (!GetIsObjectValid(GetItemPossessedBy(GetLastPerceived(),"Name deines Items")) && GetIsPC(GetLastPerceived()))

{
ClearAllActions();
AdjustReputation(GetLastPerceived(),OBJECT_SELF,-100);
}
}


in das OnPerception Skript der Kreatur einbinden, oder noch besser ins OnUserdefined (wie das geht kannst du in jedem Tutorial oder im NWN Lexikon nachlesen)! Da ich eigentlich selber eine Skriptingkatastrophe bin, verbessert mich ruhig, habs noch nicht selber getestet, da ich im Moment selber an diversen Skripten hänge ;)
11.10.2002, 15:15 #8
Clouty
Beiträge: 39

Ja, sowas suche ich, wo einfach abgefragt wird ob man den entsprechenden Gegenstand hat und wenn ja dann ist die Fraktion des Monsters dir gegenüber gut, ansonsten böse.

Bei deinem Script bekomme ich beim combilieren eine Fehlermeldung: "else" ohne "if"

Nehme ich das Wort "else" raus combiliert er es, aberdas Monster greift mich immer an.

Leider kann ich bisher nur ein wenig Visual Basic proggen ...

Aber auch danke dafür, für deine Mühen!!!

Bist ja schließlich der einzige hier der mir antwortet.

Clouty
12.10.2002, 12:52 #9
DTime
Beiträge: 155

Sorry, glaube das Skript ist wohl eher nicht wirklich toll, aber ich bin eben selber nur ein klein wenig mit c++ vertraut (aber wirklich nur ganz wenig ;) ) und kämpfe mich gerade selber durch die NWN Skripsprache, aber eher schlecht als recht :). Lies am besten im NWN Lexikon nach, das hilft mir oft sehr, außerdem solltest du, gut Englischkenntniss vorrausgesetzt, auch mal im offiziellen Forum nachsehen, da sind einige echte Skriptperlen! Da spart man sich viel Arbeit, da es Leute gibt die das besser können und schon solche Skripte erstellt haben!

Ich versuch mal das Skript so zu ändern das es klappen müsste ;) Wieder ohne Gewähr und ungetestet:

void main()
{
if (!GetIsObjectValid(GetItemPossessedBy(GetLastPerceived(),"Name deines Items")) && GetIsPC(GetLastPerceived()))

{
ClearAllActions();
AdjustReputation(GetLastPerceived(),OBJECT_SELF,50);
}
else
{
ClearAllActions();
AdjustReputation(GetLastPerceived(),OBJECT_SELF,-50);
}

Den Kreaturen musst du jetzt ne eigene Fraktion verpassen, die neutral (Wert 50) zu dem PC ist! Das sollte eigentlich klappen
12.10.2002, 15:09 #10
Clouty
Beiträge: 39

Ich hattemich zwarauch mal dranversuchtc++ in etwa zu begreifen, aber irgendwie fehlt mir dafür komplett das Verständnis ...da check ich nischt, leider!

Bei demjetzigen Script bekomme ich beim combilieren die Meldung: FEHLER: UNBEKANNTER COMPILERSTATUS

Tja, und dazu kommen meine ehnicht so tollen englisch-Kenntnisse, bei Fremdsprachen ist das bei mir genau so wie mit der Programmierung: Null Peilung. :(

Clouty
12.10.2002, 16:03 #11
The King
Beiträge: 100

Ich glaube da kommt der Compiler nicht mehr mit.
17.10.2002, 16:28 #12
Clouty
Beiträge: 39

Hat hier noch wer eine Idee?

Biddeeee!
Komm nicht weiter mit dem Script.
18.10.2002, 12:01 #13
The King
Beiträge: 100

Ich hab gerade keine Zeit aber in ein paar Tagen würde ich dir ein Script schreiben.
18.10.2002, 13:01 #14
GuradonHellsing
Beiträge: 232

Also ich würde es so machen:
Du musst den kreaturen vorher ne eigene fraction erstellen ,die freundlich gegenüber dem PC und sich selbst ist.
du packst bei jeder Kreatur unter onheartbeat folgendes Script:

#include "NW_I0_TOOL"

void main()
{
object opc=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);

if(GetDistanceBetween(OBJECT_SELF,opc)<10)
{
if(!CheckPartyForItem(opc,"kennzeichnungdessteines"))
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_HOSTILE);
}
}

}
18.10.2002, 13:39 #15
DTime
Beiträge: 155

Ist viel eleganter und funktioniert ;)
Wieder einmal sieht man, das man warten sollte bis Leute da sind die vom Skripten Ahnung haben ;) Aber irgendwann werd ich das auch hinbekommen.
18.10.2002, 22:51 #16
Clouty
Beiträge: 39

quote:
Zitat von GuradonHellsing
Also ich würde es so machen:
Du musst den kreaturen vorher ne eigene fraction erstellen ,die freundlich gegenüber dem PC und sich selbst ist.
du packst bei jeder Kreatur unter onheartbeat folgendes Script:

#include "NW_I0_TOOL"

void main()
{
object opc=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);

if(GetDistanceBetween(OBJECT_SELF,opc)<10)
{
if(!CheckPartyForItem(opc,"kennzeichnungdessteines"))
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_HOSTILE);
}
}

}



Danke dir!
Allerdings erhalte ich beim combilieren folgenden Fehler:
"18.10.02 23:43:54: Fehler. 'schutzstein' konnte nicht kompiliert werden.
schutzstein.nss(7): FEHLER: VERGLEICHSTEST HAT UNGÜLTIGE OPERANDEN"

Dabei bezieht er sich auf die Zeile:
if(GetDistanceBetween(OBJECT_SELF,opc)<10)

Leider kann ich das Problem nicht selber beheben.

Gruß,
Clouty
19.10.2002, 09:07 #17
GuradonHellsing
Beiträge: 232

ja das liegt daran das getdistance ne float zahl zurück gibt du musst dann mal 10.0 anstelle von 10 schreiben.
---------------------------------------------------------
#include "NW_I0_TOOL"

void main()
{
object opc=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);

if(GetDistanceBetween(OBJECT_SELF,opc)<10.0)
{
if(!CheckPartyForItem(opc,"kennzeichnungdessteines"))
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_HOSTILE);
}
}

}
19.10.2002, 20:45 #18
Clouty
Beiträge: 39

Jetzt bekomme ich keinen fehler mehr beim combilieren, ... sowas, auf diese Änderung hätte ich trotzdem auch selbst kommen müssen. ;)

Aber irgendwas mache ich wohl grundlegend falsch:
Ich erstelle für zB. einen Goblin eine neue Fraktion, so das er mich im Spiel auch nicht angreift. Packe ich bei der Kreatur jetzt aber unter "onheartbeat" dieses Script rein greift mich diese Kreatur an, egal ob ich den vorher definierten Schutzstein oder nicht bei mir trage.


Schon schlimm wenn man so Konfus ist wie ich.

Gruß,
Clouty
20.10.2002, 09:38 #19
GuradonHellsing
Beiträge: 232

du hast aber auch die kennzeichnung geändert mh seh gradn fehler
stell mal die kreatur standard mässig feindlich zum npc.

#include "NW_I0_TOOL"

void main()
{
object opc=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);

if(GetDistanceBetween(OBJECT_SELF,opc)<10.0)
{
if(CheckPartyForItem(opc,"kennzeichnungdessteines"))
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_DEFENDER);
}
else
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_HOSTILE);
}
}
}
21.10.2002, 15:01 #20
Clouty
Beiträge: 39

quote:
Zitat von GuradonHellsing
du hast aber auch die kennzeichnung geändert mh seh gradn fehler
stell mal die kreatur standard mässig feindlich zum npc.

#include "NW_I0_TOOL"

void main()
{
object opc=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC);

if(GetDistanceBetween(OBJECT_SELF,opc)<10.0)
{
if(CheckPartyForItem(opc,"kennzeichnungdessteines"))
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_DEFENDER);
}
else
{ChangeToStandardFaction(OBJECT_SELF,STANDARD_FACTION_HOSTILE);
}
}
}



Krass! Fettes "danke" man!
Jetzt habe ich die Fraktion der Kreatur auf feindlich gestellt. Betritt man den Raum nun mit dem Schutzstein ist alles ok. Hat man den Schutzstein nicht, wird man fertig gemacht. Funktioniert also astrein dein Script!

Coole Sache.
Nochmals danke!

Ps. Nun ist dieses Script ja geeignet für mein Singelplayermodul, hast du noch zufällig eine Idee wie man soetwas für ein Multiplayermodul umändern kann? Hier wird ja die komplette Fraktion gegenüber den Spielern auf gut gestellt wenn einer den Schutzstein hat, so werden also die anderen die keinen haben im Multiplayer auch nicht angegriffen. Weißt du wie man das ins Script reinnehmen kann das die Kreaturen nur den PC mit Schutzstein nicht angreifen?
Sorry, ich nerve, ich weiß!

Gruß,
Clouty
31.10.2002, 00:10 #21
Clouty
Beiträge: 39

Hat jemand eine Idee wie dies im MP zu bewerkstelligen ist??? (s.o)

Clouty
05.11.2002, 18:32 #22
The King
Beiträge: 100

HAb diesen Thread nicht ganz durchgelesen.

Du müsstest es so einrichten dass nur einer nach dem Item gescannt wird und dass er eine eigene Fraktion hat die gegenüber allen Spielern, Wachen und Bürgern eine Fraktion von 50 hat. Dann müsstest du den Spieler angreifen lassen.
07.11.2002, 23:26 #23
Clouty
Beiträge: 39

quote:
Zitat von The King
HAb diesen Thread nicht ganz durchgelesen.

Du müsstest es so einrichten dass nur einer nach dem Item gescannt wird und dass er eine eigene Fraktion hat die gegenüber allen Spielern, Wachen und Bürgern eine Fraktion von 50 hat. Dann müsstest du den Spieler angreifen lassen.



Jo, danke dir für deinen Tip. Jetzt aber mal ne ganz dumme Frage ... äh... was muß ich jetzt dazu machen damit es im MP funzt? Bin zu blöde alleine dafür, sorry! :D
Seite 1 von 1  1