World of Gothic Archiv > NWN-Hilfe
Problem HILFE
Seite 1 von 1  1 
29.02.2004, 13:35 #1
kinglui2
Beiträge: 16
Problem HILFE
Also ich habe ein Problem muss leider auch zugeben dass ich es selbst verbockt hab... und ich hab auch keinen Bock das Spiel jetzt nue zu installieren also würd ich euch mal um was kleines bitten.
Also ich hab ein bissl im Werkzeugset rumgespielt und rumgescriptet... das wenige was ich kann... das alles natürlich mal wieder ohne Sicherheitskopie und dann hab ich ausversehen das normale on Hartbeat script von nwn das nw_c2_default1 überschrieben...
kann mir da mal jmd das original schnell posten weil immo alle npcs bei mir beten anstatt dazustehen oder ihre waypoints abzulaufen...
danke
mfg kinglui2
ach ja kann man die scripts irgendwo speicher so als sicherheitskopie?
Danke
:)
29.02.2004, 15:23 #2
Alamar
Beiträge: 4.050

    //:://////////////////////////////////////////////////
    //:: NW_C2_DEFAULT1
    /*
    Default OnHeartbeat script for NPCs.

    This script causes NPCs to perform default animations
    while not otherwise engaged.

    This script duplicates the behavior of the default
    script and just cleans up the code and removes
    redundant conditional checks.

    */
    //:://////////////////////////////////////////////////
    //:: Copyright (c) 2002 Floodgate Entertainment
    //:: Created By: Naomi Novik
    //:: Created On: 12/22/2002
    //:://////////////////////////////////////////////////

    #include "nw_i0_generic"

    void main()
    {
    // * if not runnning normal or better Ai then exit for performance reasons
    if (GetAILevel() == AI_LEVEL_VERY_LOW) return;

    // Buff ourselves up right away if we should
    if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
    {
    // This will return TRUE if an enemy was within 40.0 m
    // and we buffed ourselves up instantly to respond --
    // simulates a spellcaster with protections enabled
    // already.
    if(TalentAdvancedBuff(40.0))
    {
    // This is a one-shot deal
    SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);

    // This return means we skip sending the user-defined
    // heartbeat signal in this one case.
    return;
    }
    }


    if(GetHasEffect(EFFECT_TYPE_SLEEP))
    {
    // If we're asleep and this is the result of sleeping
    // at night, apply the floating 'z's visual effect
    // every so often

    if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
    {
    effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
    if(d10() > 6)
    {
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
    }
    }
    }

    // If we have the 'constant' waypoints flag set, walk to the next
    // waypoint.
    else if ( GetWalkCondition(NW_WALK_FLAG_CONSTANT) )
    {
    WalkWayPoints();
    }

    // Check to see if we should be playing default animations
    // - make sure we don't have any current targets
    else if ( !GetIsObjectValid(GetAttemptedAttackTarget())
    && !GetIsObjectValid(GetAttemptedSpellTarget())
    // && !GetIsPostOrWalking())
    && !GetIsObjectValid(GetNearestSeenEnemy()))
    {
    if (GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) || GetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE) ||
    GetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE))
    {
    // This handles special attacking/fleeing behavior
    // for omnivores & herbivores.
    DetermineSpecialBehavior();
    }
    else if (!IsInConversation(OBJECT_SELF))
    {
    if (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)
    || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)
    || GetIsEncounterCreature())
    {
    PlayMobileAmbientAnimations();
    }
    else if (GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS))
    {
    PlayImmobileAmbientAnimations();
    }
    }
    }

    // Send the user-defined event signal if specified
    if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
    {
    SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT));
    }
    }
29.02.2004, 15:31 #3
kinglui2
Beiträge: 16
DANKE
juhuu du hast dir die Mühe gemacht keine reinstall DANKE !!!
werd mich hier wohl öfters blicken lassen^^
mfg kinglui2:D :D :D :D :D :D :D :D :D <--- so fühl ich mich jetzt *fg*
29.02.2004, 20:07 #4
kinglui2
Beiträge: 16

Hab noch ne andere Frage: Also ich hab mit dem Handlungseditor im Toolset eine Handlung erstellt ich geh zu nem Magier und der sagt ich muss wen töten das is auch so wie ich es will aber ich will halt dass ich auch so mit dem Magier reden kann udn bei ihm einkaufen kann. Im moment stellt der PC die Handlung vor alles sodass ich erst den Quest machen muss bevor ich normal mit ihm reden kann und für das normale reden muss ich ja auch nen zusätzlichen Handlungsknotenpunkt dannach machen nämlich einen mit einer einfachen Äußerung die ich dann im Gesprächseditor ändere zu nem Gespräch. Meine Frage is halt wie ich das machen kann dass ich den Quest praktisch nur optional annehme aber das keinen Einfluss auf das Normale reden hat.
mfg kignlui
PS.: Ich kann ned scripten also ned wirklich also wenn was mit scripten is dann genau erklären bitte oder genau sagen was wohin muss. DANKE
29.02.2004, 21:50 #5
Alamar
Beiträge: 4.050

Wenn du englisch kannst, würde ich dir empfehlen das Tutorial von nwn.bioware.com zu saugen. Diese einfachen Sachen werden dort erklärt.

Ganz genau weiß ich es nicht mehr,
aber du brauchst nen eigenen Dialogzweig.
Wenn der Gegner getötet wird, wird eine Variable umgelegt und wenn diese Variable umgelegt ist, erscheint im Gespräch der Dialogzweig mit der Questlösung.

Das ganze geht auch ohne Skripten, aber genau kann ich es nicht erklären ;)
01.03.2004, 14:00 #6
kinglui2
Beiträge: 16

AH geil ich habs hinbekommen.... Ich kann jetzt mit ihm reden was ich will wie ich will und wann ich will und er sagt immer das richtige geil!

Ich will ja nicht schon wieder nerven und ihr denkt euch sicher was für depp ich bin dass ichs o viele Fragen hab.. aber ich will dass ich nen Charakter hab der betet und dabei irgendwie Worte vons ich gibt à la "Oh du allmächtiger Tyr" also hab ich folgendes gemacht:
Das Script is aus euerer Datenbank ^^ nur das andere hab ich hinzugefügt


void main()
{object oBeten = GetNearestObjectByTag("ALTAR");
//Jetzt kommt mein Teil
ActionSpeakString("Oh du Mächtiger Tyr");
//Habs mal vereinfacht so und der gibt jetzt aber leider nichts
// von sich sondern betet nur
if (IsInConversation(OBJECT_SELF) || GetIsInCombat(OBJECT_SELF))
ActionWait (6.0);
else
ClearAllActions();
ActionDoCommand(SetFacingPoint(GetPosition(oBeten)));
ActionDoCommand(PlayAnimation(ANIMATION_LOOPING_MEDITATE,1.0,7.0));
//Ich hab meinen Text auch mal hier unten hingsetzt aber er macht es //einfach nicht! ka warum kann mir da nochmal jmd helfen
}


DANKE
kinglui2
P.S. ja ich weis ich nerv euch sicher schon fürchterlich und ihr sagt dann alle ich soll scripten lernen dann könnte ich es aber das is mir jetzt zu viel Arbeit für son bissl was ich damit machen muss das frag ich lieber nach bevor ich jetzt Wochen mit lernen beschäftigt bin....
01.03.2004, 14:50 #7
$tormRider
Beiträge: 208

Naja, der anfang ist schwer, aber wenn man ein paar skripte geschrieben, ist es im prinzip ganz einfach ;)

Also, du brauchst einen gegenstand mit der Kennzeichnung ALTAR.
Das ist zwar nicht umbedingt nötig, das bewirkt nur, dass er immer in richtung des gegenstandes schaut (außer wenn sich jemand mit ihm unterhält)

Das Skript muss du dem NPC, der beten soll, statt dem OnHeartbeat Script geben.

Also am besten unter Kreaturen Eigenschaften auf das Register Skripte gehen und das, was im Feld neben OnHeartbeat steht, herauslöschen. Dann auf bearbeiten und das einfügen.

Wenn du das Skript keinem NPC gibst dann fühlt sich auch keiner angesprochen ;)
01.03.2004, 14:57 #8
kinglui2
Beiträge: 16

ups dann kam das falsch rüber! also den altar hab ich ja schon ich wollte nur dass der noch nen monolog spricht also so nach dem Motto "du toller Tyr" und beten tun sie ja auch zum Altar hin nur will er einfach ned seinen monolog sprechen und dass wollte ich eigentlich bezwecken!
mfg kinglui2
ps wo ich grad dabei bin... wie kann ich einen gegenstand einen Monolog mit mir reden lassen..
Also in dem Fall ich habe eine Falle in der Mitte des Raums die ein Objekt schützt aber ich will den Spieler bei Betreten des Raumes warnen lassen aber halt vond er Falle selber dass über ihr steht! Vorsicht komm nicht näher hier is ne Falle!

ach ja das is meine letzte frage für heute sry dass ich euch so nerve
01.03.2004, 16:04 #9
Kardor
Beiträge: 523

keine Angst, du nervst nicht die NWN_Scriptsprache ist Anfangs echt nicht ganz leicht...ich weiss nur nicht ob ich so ganz verstehe was du willst ;)

Wenn ichs richtig verstehe, soll der Spieler, von der Falle gewarnt werden, wenn er den Altarraum betritt, korrekt?

Mit Monolog meinst du, dass der Spieler nicht antworten können soll, korrekt?

Dein Script kann nicht funktionieren, weil du bei ActionSpeakString nicht sagst, wer denn nun den String speaken soll ;)

AFAIK kann eine Falle nichts von sich geben, da sie ja nur eine Art Auslöser ist. Ich würde es also folgendermassen lösen:

Erstelle an dem Ort an dem die Falle sein soll ein unsichtbares Placeable, dem du den Namen und das Tag ( Kennzeichen ) "Falle" gibst.
( Erstelle dazu ein platzierbares Objekt und gib ihm den Aussehenstyp unsichtbarer Gegenstand )


Dann erstelle einen Auslöser am Eingang,
und erstelle im OnEnter-Slot dieses Auslösers folgendes Script:

code\:

void main ()

{
object oFalle = GetNearestObjectByTag("Falle");
object oEnter = GetEnteringObject();
int iOnce = GetLocalInt(oEnter, "FALLENWARNUNG");

if(GetIsPC(oEnter) && iOnce == FALSE)
{
AssignCommand(oFalle, ActionSpeakString("Vorsicht! Komm nicht näher, hier ist ne Falle"));
SetLocalInt(oEnter, "FALLENWARNUNG", TRUE);
}

}



btw: ich empfehle dir Lilac Souls Scipt-Generator, mit dem lassen sich so kleine Probs prima lösen


___________________________

Pilze Band I - das NWN Modul ;)
Niemand hat die Absicht eine Mauer zu baun. Außer uns!
[/font]
01.03.2004, 16:26 #10
kinglui2
Beiträge: 16

ähm ja äh nach 3 mal lesen vond em script denk ich dass ich es check...
DANKE
ich werde den generator mal laden und testen.
Danke dir^^
Jetzt mal keine Frage mehr vielleicht morgen wieder wenn sich was ergibt *fg*
mfg kinglui
Seite 1 von 1  1