World of Gothic Archiv
Alle Beiträge von therealjoker
Seite 2 von 2  1  2 
17.08.2002, 12:16 #26
therealjoker
Beiträge: 48
Wie benennt ihr eure Variablen/Scripts? -
Für Variablen nehme ich die Programmierstandards:
für Integer Variablen wo die wirkliche Anzahl irrelevant ist ein "n" dvor z.B. nHitPoints
für Objekte ein "o" davor,
für strings ein "s" davor,
usw.
Wörter werden immer durch Groß- und Kleinschreibeung trennen.
17.08.2002, 14:56 #27
therealjoker
Beiträge: 48
Wie benennt ihr eure Variablen/Scripts? -
jup, bin ich von c++ her so gewöhnt...
18.08.2002, 13:27 #28
therealjoker
Beiträge: 48
Frage zu EndGame und StartNewModule -
vielleicht kannst du die beiden Befehle ja einfach hintereinander schreiben. wenn das neue Modul da ist, wird es gestartet, ansonsten fährt er im Quelltext weiter. Keine Ahnung, ob das funktioniert. Aber mal ne andere Frage: Funktioniert bei dir die Funktion "StartNewModul()". Bei mir stürzt dann immer gleich das Spiel ab.
18.08.2002, 13:31 #29
therealjoker
Beiträge: 48
Hakpacks?? -
in deinen hak-Ordner ins NWN-Verzeichnis (falls es das war was du wissen wolltest)
19.08.2002, 15:00 #30
therealjoker
Beiträge: 48
Was fürs Forgotten Book -
Du solltest deine Forgotten Book-Vorschläge unter www.ribenschi.de posten, da dort am Fogotten Book gearbeitet wird.
19.08.2002, 15:03 #31
therealjoker
Beiträge: 48
Hakpacks?? -
Musih-HakPaks kannst du mit dem Klang-Assistenten einfügen. Mit den anderen Dateiarten kenne ich mich auch nicht aus. ;)
19.08.2002, 17:14 #32
therealjoker
Beiträge: 48
Tagebuch wird Aktualisiert wenn man ein Gegensans einsammelt.. -
Lies dir mal den Thread "kleine FAQ" durch. Dort wo steht wie man eine Quest erstellt, steht auch das entsprechende Script.
21.08.2002, 12:57 #33
therealjoker
Beiträge: 48
Tool-Set in 1.21? Immernoch Crash Bugs? -
Also ich kann zwischen den beiden Versionen keine Unterschiede feststell. Bei beiden gibt es bei mir immer die gleichen Fehler. Allerdings haben mit der alten weigstens die Module noch richtig funktioniert.
22.08.2002, 18:24 #34
therealjoker
Beiträge: 48
Neues Tileset -
Kompliment, scheint echt gut zu sein. Wenn ich Zeit habe, lade ich es mir gleich mal runter...
24.08.2002, 12:36 #35
therealjoker
Beiträge: 48
NWN mit 8MB Grafikkarte? -
@Fromfondel
Mit ner 32Mb Geforce 2 MX ruckelts wie sau???
Also bei mir läufst damit perfekt und ich habe auch nur 600Mhz...
28.08.2002, 14:25 #36
therealjoker
Beiträge: 48
Nochmal ne Frage wegen den Hak Packs -
also ich halte nichts von den ganzen combine.programmen. das einzige was die bei mir zustande gebracht haben war eine reihe fehlermeldungen
28.08.2002, 16:47 #37
therealjoker
Beiträge: 48
Nochmal ne Frage wegen den Hak Packs -
ne, du kannst ja eine hak-datei reinmachen. Wenn du allerdings mehrere haben willst, würde ich entweder warten bis es neuerere combine programme gibt, dein Modul in mehrere Kapitel unterteilen oder warten bis ein neuer patch das problem löst. Du siehst, wir sind also wieder auf die Gnade der Programmierer angewiesen.
29.08.2002, 13:30 #38
therealjoker
Beiträge: 48
Übergänge HILFE -
ja, dein Problem ist mir früher auch passiert. Lag bei mir daran, dass die türen keine eigenen Tags hatten.
29.08.2002, 15:33 #39
therealjoker
Beiträge: 48
Wie viele Wörter hat euer Modul bis jetzt? -
Kapitel 1 von meinem Modul hat bis jetzt 44863 Wörter. Es werden aber garantiert noch mehr werden.
29.08.2002, 19:01 #40
therealjoker
Beiträge: 48
Wie viele Wörter hat euer Modul bis jetzt? -
also ich schätze mal, bei mir gibts um die 30 NPCS. 5 davon sind sehr wichtig. Im 1. Kapitel lege ich viel Wert darauf die Story zu erzählen, also eher RPG-mäßig (allerdings gibt es auch mehrere Kampfeinlagen). 2mal habe ich Dialoge nie benutzt, aber ich versuche die Gespräche so individuell wie möglich zu machen.
31.08.2002, 13:16 #41
therealjoker
Beiträge: 48
Modul aufteilen -
mach einfach für jedes Kapitel ein eigenes Modul und verknüpf sie dann indem du die Scriptfunktion 'StartNewModule("deinModul.mod")' benutzt.
01.09.2002, 10:59 #42
therealjoker
Beiträge: 48
Wie viele Wörter hat euer Modul bis jetzt? -
also erstmal: Natürlich sprechen auch unwichtigere Personen in meinenm Modul und nicht nur die Hauptpersonen! Wie soll man denn sonst die ganze Atmosphäre erzeugen? Außerdem ist für mich Abwechslun in den Dialogen sehr wichtig und die vielen Nebenquest geben auch noch ein bisschen Diskusionsstoff her.
Klar, Dialoge schreiben für irgendwelche unwichtigen Personen ist zwar langweilig, aber was für ein Modul ist es denn, wenn man die Leute anklicken, aber nicht mit ihnen reden kann.
Ihr seht also: 45000 Wörter sind gar nicht so viel und wie gesagt: es werden sicherlich noch viele dazukommen.
02.09.2002, 14:46 #43
therealjoker
Beiträge: 48
Competition -
ja, wegen der knappen Zeitbegrenzung habe ich auch nicht mitgemacht...
05.09.2002, 13:11 #44
therealjoker
Beiträge: 48
Gesprächs-Script -
statt mit dem scripteditor zu arbeiten, trag lieber folgendes ins OnHeartbeatScript des Moduls ein:
code\:

void main()
{
if(GetIsDead(GetObjectByTag("NPC2")))
//oben tag des NPCs eintragen bei dem beim Sterben das Ereignis ausgeloest werden soll
{
AssignCommand(GetFirstPC(), ActionSpeakString("blablabla")); //zu sprechenden String eingeben
}
}




___________________________

"Kein Alkohol ist auch keine Lösung!"
-Campino, Die Toten Hosen[/font]
05.09.2002, 16:27 #45
therealjoker
Beiträge: 48
Gesprächs-Script -
ups , hab dich falsch verstanden
10.09.2002, 13:16 #46
therealjoker
Beiträge: 48
sprechendes Item ... -
ich habe sowas auch mal probiert, habe aber leider gedacht, dass man auch Items Scripte zuweisen kann. Danach habe ich versucht es bei OnItemAquired() reinzusetzen, hat aber auch nicht funktioniert. Deswegen kann das folgende Script dein Problem auch nicht lösen. Es beinhaltet jedoch viele verschiedene Sprechsätze sowie in der Main() Funktion eine Einstellung, ob der Gegenstand zusätzlich noch Aktionen(z.B. heilen, reizen, etc.) zufällig ausführen soll. Also hier erstmal das Script:
code\:

int Sprechen(string sWaffenName)
{
object oPC=GetFirstPC();
int Zufall=Random(10);
if(Zufall==1)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Manno, wann kann ich endlich mal wieder jemanden aufschlitzen?"));
}
if(Zufall==2)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich will mal wieder gegen einen Drachen kaempfen!"));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Also los, besorg' mir einen Drachen!"));
}
if(Zufall==3)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Mmh, ist das oede! Ist ja nichts los hier!"));
}
if(Zufall==4)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Langweilig!"));
}
if(Zufall==5)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Heho, nur ein toter Goblin ist ein guter Goblin!"));
}
if(Zufall==6)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich zeige dem Gegner gegenueber keine Gnade!"));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Du kannst noch von mir lernen!"));
}
if(Zufall==7)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich bin mit Abstand die beste Waffe der Welt!"));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Ganze Imperien mussten schon vor mir kapitulieren!"));
}
if(Zufall==8)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich esse am liebsten Eingeweidebrei mit einer deftigen Blutsosse."));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Moment, ich habe eine Brise zermahlene Knochen vergessen..."));
}
if(Zufall==9)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich sage dir, uns beide kann keiner schlagen!"));
}
if(Zufall==10)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich werde langsam stumpf; du koenntest mich mal wieder schraefen lassen!"));
}
return 0;
}

int Aktion(string sWaffenName)
{
object oPC=GetFirstPC();
float MaxDistanz=5.0;
object oNah=GetNearestObject(OBJECT_TYPE_CREATURE, oPC);
int Laune=Random(3);
if(Laune==1)
{
if(GetDistanceToObject(oNah)<=MaxDistanz)
{
int Wut=Random(2);
if(Wut==1)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Man, dich kann ich ja ueberhaupt nicht leiden..."));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectKnockdown(), oNah);
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Haha, ich habe ihn fuer dich niedergeworfen, nun greif ihn aber auch an"));
AssignCommand(oNah, ActionSpeakString("Ich finde das gar nicht lustig!"));
AdjustReputation(oPC, oNah, -20);
}
if(Wut==2)
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Was is'n das fuer'n Idiot, hahaha!"));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Hey du, komm doch mal rueber!"));
AssignCommand(oNah, ActionSpeakString("Jetzt reicht's mir aber!"));
AssignCommand(oNah, ActionAttack(oPC));
}
}
}
else
{
int Gut=Random(2);
if(Gut==1)
{
int nLohn=GetGold(oPC)/6;
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Lauf doch nicht so schnell!"));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Hier, das hast du glatt uebersehen"));
GiveGoldToCreature(oPC, nLohn);
}
if(Gut==2)
{
int nLeben=GetCurrentHitPoints(oPC);
int nLebenMax=GetMaxHitPoints(oPC);
if(nLeben<nLebenMax)
{
int nDifferenz=nLebenMax-nLeben;
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Du siehst ja uebel aus, ich glaube ich sollte dich mal heilen"));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nDifferenz), oPC);
}
else
{
AssignCommand(oPC, ActionSpeakString(sWaffenName));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("sagt:"));
AssignCommand(oPC, ActionWait(1.0));
AssignCommand(oPC, ActionSpeakString("Ich mag dich, lass' mich dir einige Geschichten erzaehlen!"));
AssignCommand(oPC, ActionWait(3.0));
AssignCommand(oPC, ActionSpeakString("Blablabla..."));
GiveXPToCreature(oPC, 500);
}
}
}
return 0;
}

void main()
{
//Art auf 0 stellen, wenn der Gegenstand nur sprechen soll
int Art=1;
object oPC;
object oItem=GetModuleItemAcquired();
string sTag=GetTag(oItem);
if(GetIsObjectValid(oItem) == TRUE)
{
//Tag der Waffe eingeben
if(sTag=="waffe")
{
string sWaffe=GetName(oItem);
oPC=GetItemPossessor(oItem);
while((!GetIsInCombat(oPC)) && (!IsInConversation(oPC)))
{
ActionWait(180.0);
Sprechen(sWaffe);
if(Art>=1)
{
Aktion(sWaffe);
}
continue;
}
}
}
}


mal ne andere Frage. In Elessars Scipt spricht immer der Gegenstand. Können die überhaupt Strings sprechen? Bei meinem Script habe ich nämlich immer versucht das zu umgehen.


___________________________

"Kein Alkohol ist auch keine Lösung!"
-Campino, Die Toten Hosen[/font]
10.09.2002, 17:18 #47
therealjoker
Beiträge: 48
Sitzende Wache -
Hmm, probiers mal so (Habs noch nicht getestet, mein Neverwinter Nights schmiert zur Zeit immer ab):
code\:

void main()
{
object oNPC=OBJECT_SELF;
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectSleep(), oNPC);
object oPC=GetFirstPC();
if(GetDistanceToObject(oPC)<=3.0)
{
RemoveEffect(oNPC, EffectSleep());
}
if((!IsInConversation(oNPC)) && (GetFirstEffect(oNPC)!=EffectSleep()))
{
ActionWait(60.0);
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectSleep(), oNPC));
}
}


Immer wenn der Spieler 3m oder weniger von der Wache entfernt ist, wacht die Wache auf und solange sie nicht im
Gespräch mit dem Spieler ist, schläft sie nach einer Minute auch wieder ein.


___________________________

"Kein Alkohol ist auch keine Lösung!"
-Campino, Die Toten Hosen[/font]
10.09.2002, 17:44 #48
therealjoker
Beiträge: 48
Sitzende Wache -
Scripten ist doch gar nicht so schwer. Die Hauptsache dabei ist aber immer üben, üben und nochmals üben. Nur so kann man's erlernen.
Seite 2 von 2  1  2