PDA

View Full Version : Neverwinter Nights-Fragen zum SDK



knarrschak
23.05.2005, 16:38
Hi, es passt zwar nicht richtig in dieses Forum, doch hab ich gesehen das es einige Modder in diesem Forum gibt! Und da ich nichts zu tun hab bis DL, hab ich angefangen nen kleinen Mod für NWN zu basteln (Der SDK ist schön einfach zu bedienen :D ).

Ich hab nun aber einige Fragen:

1.Wie kann ich es machen das ein gesprochenes gespräch kein zweites mal kommt bzw. ein neues kommt?

2.Wie kann ich ein Heilemann machen?

3.Wie kann ich bestehende Questlogbuch einträge aktualisieren?(also z.B. nach erfolgreichem Quest.)

Helft bitte einem armen Unwissenden :confused:

Danke im vorraus Knarrschak

Sehenesmet
23.05.2005, 16:42
Öhm, wenn ich das richtig verstanden habe geht es hier um NVW, oder?
Dazu gibt es eine eigene Abteilung.Unter Planet Neverwinter (auch in diesem Forum) findet du sicher Hilfe...

Dragonlady
23.05.2005, 16:44
Komm mal hier hin (http://forum.worldofplayers.de/forum/forumdisplay.php?f=176) Da bist Du dann richtig ;)

Edit: :D Wer hat denn hier so schnell geschoben :D

Micha LNH HSV
23.05.2005, 18:27
Hi, es passt zwar nicht richtig in dieses Forum, doch hab ich gesehen das es einige Modder in diesem Forum gibt! Und da ich nichts zu tun hab bis DL, hab ich angefangen nen kleinen Mod für NWN zu basteln (Der SDK ist schön einfach zu bedienen :D ).
Ich hab nun aber einige Fragen:
1.Wie kann ich es machen das ein gesprochenes gespräch kein zweites mal kommt bzw. ein neues kommt?
2.Wie kann ich ein Heilemann machen?
3.Wie kann ich bestehende Questlogbuch einträge aktualisieren?(also z.B. nach erfolgreichem Quest.)
Helft bitte einem armen Unwissenden :confused:
Danke im vorraus Knarrschak
SDK= Toolset?
Als erstes hier die Info an Dich Scripte als Anfänger nicht einfach zu kopieren, sondern
zu tippen und versuchen zu verstehen. Das hilft am Anfang wirklich weiter.
Hier 3 wichtige Links zum Thema NWN Scripting:

http://nwn.bioware.com/forums/viewtopic.html?topic=428728&forum=47
http://www.nwnlexicon.com/
http://www.rpg-pool.de/include.php?path=content/overview.php&type=4&letter=&catid=14&order=&themeid=11

1.) Indem Du Variable verwendest. Entweder auf den PC(PCSpeaker) oder
auf den NSC(OBJECT_SELF).
(Wenn Variable "X" gleich "Y" dann sage das).

Variable auf NSC(OBJECT_SELF) sichten:


int StartingConditional()
{
// Lokale Variablen sichten
if (!(GetLocalInt(OBJECT_SELF, "wert") == 2))
return FALSE;
return TRUE;
}


Variable auf NSC(OBJECT_SELF) setzen:


void main()
{
SetLocalInt(OBJECT_SELF, "wert", 2);
}


2.)
Denke Du meinst einen Priester, welcher im Tempel per Gespräch heilt:


void FakeRestore(object oTarget);

void main()
{
object oPC = GetPCSpeaker();
object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oPC);
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
ActionPauseConversation();
ActionCastFakeSpellAtObject(SPELL_GREATER_RESTORATION, OBJECT_SELF);
ActionDoCommand(FakeRestore(oPC));
if(GetIsObjectValid(oHenchman))
{
ActionDoCommand(FakeRestore(oHenchman));
// checks to see if they have any cure crital wound potions; if not, creates it on them.
if (!GetIsObjectValid(GetItemPossessedBy(oHenchman,"NW_IT_MPOTION003")))
{
CreateItemOnObject("NW_IT_MPOTION003",oHenchman,3);
}
}
if(GetIsObjectValid(oAnimal))
{
ActionDoCommand(FakeRestore(oAnimal));
}
if(GetIsObjectValid(oFamiliar))
{
ActionDoCommand(FakeRestore(oFamiliar));
}
if(GetIsObjectValid(oDominated))
{
ActionDoCommand(FakeRestore(oDominated));
}
if(GetIsObjectValid(oSummoned))
{
ActionDoCommand(FakeRestore(oSummoned));
}
ActionResumeConversation();
}

void FakeRestore(object oTarget)
{
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER);

effect eBad = GetFirstEffect(oTarget);
//Search for negative effects
while(GetIsEffectValid(eBad))
{
if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
GetEffectType(eBad) == EFFECT_TYPE_CURSE ||
GetEffectType(eBad) == EFFECT_TYPE_DISEASE ||
GetEffectType(eBad) == EFFECT_TYPE_POISON ||
GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
{
//Remove effect if it is negative.
RemoveEffect(oTarget, eBad);
}
eBad = GetNextEffect(oTarget);
}
if(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
{
//Apply the VFX impact and effects
int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
effect eHeal = EffectHeal(nHeal);
if (nHeal > 0)
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget);
}




3.)


void main()
{
AddJournalQuestEntry("Text", 2, GetPCSpeaker(), FALSE);
}

Fizzban
23.05.2005, 21:45
Edit: :D Wer hat denn hier so schnell geschoben :D

Ich war gerade in der Gegend.. :D

knarrschak
24.05.2005, 15:06
Hi danke für die schnelle hilfe! §danke

SDK hab ich wo aufgeschnappt und habe es als toolset interpretiert, doch dachte ich ich müsste auch solche fachsprache wie sdk verwenden um nicht ausgelacht zu werden doch anscheinend habe ich das gegenteil bewirkt.

Nochmal danke... werde sobald ich zeit hab mich mal rein arbeiten.

Micha LNH HSV
24.05.2005, 15:32
doch dachte ich ich müsste auch solche fachsprache wie sdk verwenden um nicht ausgelacht zu werden doch anscheinend habe ich das gegenteil bewirkt.

Warum sollte dich jemand auslachen. Quatsch.
Wenn Du noch später Fragen hast wann und wo Du die Scripte einfügen
musst frag einfach...