World of Gothic Archiv > Editing
ThorusDialogfehler
Seite 1 von 1  1 
13.04.2004, 17:21 #1
Ken Suyoko
Beiträge: 923
ThorusDialogfehler
Erneutes skript prob:

ich habe mir milky eine Krone erstellt und möchte dieses als Drohmittel verwenden.
Die Krone heißt: Koenigskrone.
Dann DIalog habe ich Thorus's genommen und ihm noch vor alle anderen Dialoge oder Infos das reingemacht:


    // ************************************************************
    // Krone
    // ************************************************************

    INSTANCE INFO_Thorus_Krone (C_INFO)
    {
    npc = GRD_200_THORUS;
    nr = 1;
    condition = INFO_Thorus_Krone_Condition;
    information = INFO_Thorus_Krone_Info;
    permanent = 0;
    description = "Schau mal!";
    };

    FUNC INT INFO_Thorus_Krone_Condition()
    {
    if (Npc_HasItems(hero,Koenigskrone))
    && (Npc_GetTrueGuild (hero) == GIL_NONE)
    {
    return 1;
    };
    };

    FUNC VOID INFO_Thorus_Krone_Info()
    {
    AI_Output (other,self,"INFO_Thorus_Krone_15_00"); //Schau mal!
    AI_Output (self,other,"INFO_Thorus_Krone_02_01"); //Nanu was ist das?
    AI_Output (other,self,"INFO_Thorus_Krone_15_02"); //Das ist Rhobars Krone, ich habe ihm den Kopf abgeschlagen. Wenn du mir nicht glaubst dann solltest du deinen eigenen Kopf am besten aus dem Weg räumen.
    AI_Output (self,other,"INFO_Thorus_Krone_02_03"); //Nein Tu mir nichts! Wenn du es an den Leibwachen des Königs vorbeigeschafft hast dann kannst du es hier in der Burg mit jedem aufnehmen.
    AI_Output (self,other,"INFO_Thorus_Krone_02_04"); //Ja-Jaaaaa. Geh durch!
    var C_NPC wache212; wache212 = Hlp_GetNpc(Grd_212_Torwache);
    var C_NPC wache213; wache213 = Hlp_GetNpc(Grd_213_Torwache);
    wache212.aivar[AIV_PASSGATE] = TRUE;
    wache213.aivar[AIV_PASSGATE] = TRUE;

    };


also die Krone ist von sehr starken Monster bewacht und gibt eine weitere Möglichkeit an Thorus vorbei in die Burg zu kommen.
Ich habe reparst UND geuptatet (beides gleichzeitig)
Nach dem Updtaten habe ich die Dialogteile in der liste gefunden. d.h. das es die geben muss.
Nun komme ich im Spiel her aber Thorus hat die Option nicht trotz das ich die Krone hergecheatet hab und ich Gil_none bin.
Ich weis auch net aber irgenwie kommen solche Fehler nur bei mir und ich kann nicht mehr weiterskripten.

Bitte um Antwort!
13.04.2004, 17:56 #2
HornOx
Beiträge: 1.458

npc.guild und Npc_GetTrueGuild (npc) müssen nicht das gleiche sein, per cheat kannst du nur npc.guild verändern.
Entweder hero.guild == GIL_NONE abfragen oder sichergehn das du ein Npc_GetTrueGuild (hero, GIL_NONE); im Skript hast.
13.04.2004, 17:59 #3
Ken Suyoko
Beiträge: 923

Hab ich doch:
&& (Npc_GetTrueGuild (hero) == GIL_NONE)

oder soll ich es durch:

Npc_GetTrueGuild (hero, GIL_NONE);

ersetzenß
13.04.2004, 18:17 #4
HornOx
Beiträge: 1.458

Das Problem ist das es zwei unterschidliche Arten gibt in der Gil_none oder einer anderen Gilde zu sein, einmal über die NPC Instanz und einmal über die externen Npc_[G/S]etTrueGuild Funktionen. War vermutlich mal dafür gedacht das man sich verkleiden und dann andere Gilden infiltrieren kann (wird aber im Orginalskript nur bei den Tiergilden/Verwandlungszaubern benutzt)
Sollte natürlich "[...] sichergehn das du ein Npc_SetTrueGuild (hero, GIL_NONE); im Skript hast." heißten, das mußt du dahin schreiben wo der held seine gilde zugewiesen bekommt
13.04.2004, 21:05 #5
Ken Suyoko
Beiträge: 923

tuuuuut tuuut Bahnof aber danke. ich versuch mal das in die condition reinzubauen...
15.04.2004, 19:39 #6
Ken Suyoko
Beiträge: 923

Also schon wieder wollen die skripte nicht das tun was das beste für sie ist.
ich habe bei Nov_1312_Darrion folgenden skript hinzugefügt:


    // **************************************************
    // verbessern
    // **************************************************

    INSTANCE DIA_Darrion_verbessern (C_INFO)
    {
    npc = Vlk_581_Snaf;
    nr = 2;
    condition = DIA_Darrion_verbessern_Condition;
    information = DIA_Darrion_verbessern_Info;
    permanent = 0;
    description = "(Waffen verbessern)";
    };

    FUNC INT DIA_Darrion_verbessern_Condition()
    {
    if ( (Darrion_schmieden==LOG_SUCCESS) )
    {
    return 1;
    };
    };

    FUNC VOID DIA_Darrion_verbessern_Info()
    {
    Info_ClearChoices(DIA_Darrion_verbessern);
    Info_AddChoice (DIA_Darrion_verbessern, "Rostiges Schwert" ,DIA_Darrion_verbessern_roSch);
    Info_AddChoice (DIA_Darrion_verbessern, "Alter Speer" ,DIA_Darrion_verbessern_AlSpe);


    };
    func void DIA_Darrion_verbessern_roSch()
    {
    if (Npc_HasItems (other,ItMw_1H_Sword_Old_01)>=1) && (Npc_HasItems (other,ItMiNugget)>=30)
    {
    AI_Output (other, self,"DIA_Darrion_verbessern_roSch_15_01"); //Verbessere mein rostiges Schwert!
    AI_Output (self, other,"DIA_Darrion_verbessern_roSch_01_02"); //Schon geschehen!


    B_GiveInvItems (other,self,ItMw_1H_Sword_Old_01,1);
    Npc_RemoveInvItems(self, ItMw_1H_Sword_Old_01, 1);
    B_GiveInvItems (other,self,ItMiNugget,30);
    Npc_RemoveInvItems(self, ItMiNugget, 30);


    CreateInvItems(self, Altes_Schwert,1);
    B_GiveInvItems(self, other,Altes_Schwert,1);
    }
    else
    {
    AI_Output (self, other,"DIA_Darrion_verbessern_roSch_01_03"); //Ohne Erz oder Speer kann ich nichts verbessern.
    };
    };

    func void DIA_Darrion_verbessern_AlSpe()
    {
    if (Npc_HasItems (other,Alter_Speer)>=1) && (Npc_HasItems (other,ItMiNugget)>=50)
    {
    AI_Output (other, self,"DIA_Darrion_verbessern_AlSpe_15_01"); //Verbessere das alte Speer
    AI_Output (self, other,"DIA_Darrion_verbessern_AlSpe_01_02"); //Schon geschehen!


    B_GiveInvItems (other,self,Alter_Speer,1);
    Npc_RemoveInvItems(self, Alter_Speer, 1);
    B_GiveInvItems (other,self,ItMiNugget,50);
    Npc_RemoveInvItems(self, ItMiNugget, 50);

    CreateInvItems(self, Lanze,1);
    B_GiveInvItems(self, other,Lanze,1);
    }
    else
    {
    AI_Output (self, other,"DIA_Darrion_verbessern_AlSpe_01_03"); //Wenn du kein Erz oder Speer hast dann musst du jemand anderen suchen.
    };
    };


aber der Dialog kommt nicht! Ich habe die condition(die Quest) erfüllt. Ich habe schon Neues Spiel gemacht und er per cheat gelöst aber dennoch will er nicht meine Waffen verbessern.

Bitte um hilfe, diesse kann auch ganz kompliziert aussehen^^
16.04.2004, 02:04 #7
GülleMüller
Beiträge: 472

quote:
npc = Vlk_581_Snaf;

Also dir ist schon klar, daß dieser Dialog nicht Nov_1312_Darrion sondern Vlk_581_Snaf gehört?
Nur falls du dich wunderst, warum Nov_1312_Darrion das nicht als Gesprächsoption hat...

cu
GüMü
16.04.2004, 22:39 #8
Ken Suyoko
Beiträge: 923

OH danke^^ man bin ich dumm....
16.04.2004, 23:04 #9
Ken Suyoko
Beiträge: 923

Sry for Doppelpost...

also hier ist nochmal ein fehlerhafter srkipt: Gothic meldet das in Line 177 ein "," falsch ist.



    FUNC VOID DIA_Damarok_Ringab_Info()
    {
    AI_Output (other, self,"DIA_Damarok_Ringab_15_00"); //Ich habe den Ring gefunden.
    AI_Output (self, other,"DIA_Damarok_Ringab_01_01"); //Ich danke dir mein Bruder. Du hast mir sehr geholfen.

    B_GiveInvItems (other, Feuerring, 1); HIER iST LINE 177

    CreateInvItems (self, Machtring, 1);
    B_GiveInvItems (self, other,Machtring, 1);

    Damarok_Ring = LOG_SUCCESS;

    Log_SetTopicStatus (CH1_Ring, LOG_SUCCESS);
    B_LogEntry (CH1_Ring, "Damarok gab mir einen Machtring als Geschenk da ich ihm bei der Suche nach dem Feuerring geholfen habe..");

    B_GiveXP(400);
    AI_StopProcessInfos (self);

    };


Es kann auch sein die Zeile nicht ganz stimmt aber ich kann den skript nicht testen.

Danke im Vorraus
17.04.2004, 00:20 #10
NicoDE
Beiträge: 1.398

quote:
Zitat von Ken Suyoko
code\:
B_GiveInvItems(other, Feuerring, 1);
//...
B_GiveInvItems(self, other,Machtring, 1);

Entweder erfordert die Funktion drei oder vier Parameter...
17.04.2004, 09:22 #11
Ken Suyoko
Beiträge: 923

hä?

soll ich da nochmal ein removeitem reinmachen oder wie?
17.04.2004, 11:00 #12
Neely
Beiträge: 133

quote:
Zitat von Ken Suyoko
code\:
B_GiveInvItems (other, Feuerring, 1);

B_GiveInvItems (self, other,Machtring, 1);




Was NicoDE damit sagen will ist dass du einfach einen Parameter vergessen hast zu übergeben! Vergleiche doch einfach mal deine zweite B_GiveItems mit der ersten, dann findest du den Fehler von selbst ;)
17.04.2004, 12:48 #13
Ken Suyoko
Beiträge: 923

Muss nach dem other, noch ein self,????

also dann so:
B_GiveInvItems (other, self, Feuerring, 1);


hmm okay ich werds versuchen.
Seite 1 von 1  1