PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lernen per Rezept



Earnur
22.07.2008, 20:39
Wie mache ich, dass der SC durch lesen eines Briefes einen Trank brauen lernt? Mit B_TeachPlayerTalentAlchemy gehts nicht.

Sumpfkrautjunkie
22.07.2008, 20:48
Eine globale Variable (in Story_Globals.d irgendwo z.B. als
var int Hero_Kann_Trank_XY_Brauen; deklarieren) im Brief auf true setzen(Hero_Kann_Trank_XY_Brauen=true; )

Und anschließend in der Mobsi-Dialog-Condition des Alchemietisches beim Braudialog des fraglichen Trankes abfragen (if (Hero_Kann_Trank_XY_Brauen==true) )

Earnur
23.07.2008, 12:35
Eine globale Variable (in Story_Globals.d irgendwo z.B. als
var int Hero_Kann_Trank_XY_Brauen; deklarieren) im Brief auf true setzen(Hero_Kann_Trank_XY_Brauen=true; )

Und anschließend in der Mobsi-Dialog-Condition des Alchemietisches beim Braudialog des fraglichen Trankes abfragen (if (Hero_Kann_Trank_XY_Brauen==true) )

das ist alles? ich denke, das kriege ich hin. danke dir.

//: Wo ist da der Fehler??



if (MIS_Potion1 == FALSE)
{
B_LogEntry (TOPIC_Alchemy,"blabla");
var int Hero_Trank_1 = TRUE
};
MIS_Potion1 = TRUE;

Milky-Way
23.07.2008, 12:48
schön wäre, wenn du auch eine Fehlermeldung gepostet hättest.
Der Fehler ist, glaube ich, hier:
var int Hero_Trank_1 = TRUE

VAR int Hero_Trank_1;
Hero_Trank_1 = TRUE;

Was ist
MIS_Potion1 ?

Wo steht das Script?

Ich würde
MIS_Potion1 = TRUE;
noch in die Abfrage mit rein schreiben. Denn es muss ja nur auf true gesetzt werden, wenn es vorher FALSE war.

Earnur
23.07.2008, 12:50
schön wäre, wenn du auch eine Fehlermeldung gepostet hättest.
Der Fehler ist, glaube ich, hier:
var int Hero_Trank_1 = TRUE

VAR int Hero_Trank_1;
Hero_Trank_1 = TRUE;

Was ist
MIS_Potion1 ?

Wo steht das Script?

Ich würde
MIS_Potion1 = TRUE;
noch in die Abfrage mit rein schreiben. Denn es muss ja nur auf true gesetzt werden, wenn es vorher FALSE war.

tut mir leid, hilft mir nicht weiter. ich habe natürlich die abfragen in die story globals gesetzt und der fehler ist nen zeichenfehler in der zeile mit dem Hero_Trank...

Earnur
23.07.2008, 12:59
DA:



//**********************************************************************
// Heilessenz Rezept
//**********************************************************************


INSTANCE ItWr_Recipe_Health_Potion_01 (C_Item)
{
name = "Rezept";

mainflag = ITEM_KAT_DOCS;
flags = ITEM_MISSION;

value = 50;

visual = "ItWr_Scroll_01.3DS";
material = MAT_LEATHER;
on_state[0] = UseItWr_UseRecipe1_Mis;
scemeName = "MAP";
description = name;
TEXT[0] = "Das Rezept für eine Essenz der Heilung";
};
func void UseItWr_UseRecipe1_Mis ()
{
var int nDocID;

nDocID = Doc_Create ();
Doc_SetPages (nDocID, 1);
Doc_SetPage (nDocID, 0, "letters.TGA", 0);
Doc_SetFont (nDocID, -1, FONT_BookHeadline);
Doc_SetMargins (nDocID, -1, 50, 50, 50, 50, 1);
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Essenz der Heilung" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "" );
Doc_SetFont (nDocID, 0, FONT_Book);
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Um eine Essenz der Heilung zu brauen" );
Doc_PrintLine (nDocID, 0, "benötigt der kundige Alchemist zunächst" );
Doc_PrintLine (nDocID, 0, "eine Laborflasche und die Zutaten." );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Die Zutaten für den Trank sind:" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "2 Heilpflanzen" );
Doc_PrintLine (nDocID, 0, "1 Feldknöterich" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Die Säfte beider Pflanzen werden durch" );
Doc_PrintLine (nDocID, 0, "den Destillator getrieben und stetig aufgekocht." );
Doc_SetMargins (nDocID, -1, 200, 50, 50, 50, 1);
Doc_Show (nDocID);

if (MIS_Potion1 == FALSE)
{
B_LogEntry (TOPIC_Alchemy,"Um eine Essenz der Heilung zu brauen, brauche ich zunächst eine Laborflasche (welche ich für jeden Trank brauche) und die Zutaten: 2 Heilpflanzen und 1 Feldknöterich.");
VAR int Hero_Trank_1 = TRUE;
MIS_Potion1 = TRUE;
};

wo ist denn jetzt der SCHEIß fehler?

Milky-Way
23.07.2008, 13:10
DA:



//**********************************************************************
// Heilessenz Rezept
//**********************************************************************


INSTANCE ItWr_Recipe_Health_Potion_01 (C_Item)
{
name = "Rezept";

mainflag = ITEM_KAT_DOCS;
flags = ITEM_MISSION;

value = 50;

visual = "ItWr_Scroll_01.3DS";
material = MAT_LEATHER;
on_state[0] = UseItWr_UseRecipe1_Mis;
scemeName = "MAP";
description = name;
TEXT[0] = "Das Rezept für eine Essenz der Heilung";
};
func void UseItWr_UseRecipe1_Mis ()
{
var int nDocID;

nDocID = Doc_Create ();
Doc_SetPages (nDocID, 1);
Doc_SetPage (nDocID, 0, "letters.TGA", 0);
Doc_SetFont (nDocID, -1, FONT_BookHeadline);
Doc_SetMargins (nDocID, -1, 50, 50, 50, 50, 1);
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Essenz der Heilung" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "" );
Doc_SetFont (nDocID, 0, FONT_Book);
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Um eine Essenz der Heilung zu brauen" );
Doc_PrintLine (nDocID, 0, "benötigt der kundige Alchemist zunächst" );
Doc_PrintLine (nDocID, 0, "eine Laborflasche und die Zutaten." );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Die Zutaten für den Trank sind:" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "2 Heilpflanzen" );
Doc_PrintLine (nDocID, 0, "1 Feldknöterich" );
Doc_PrintLine (nDocID, 0, "" );
Doc_PrintLine (nDocID, 0, "Die Säfte beider Pflanzen werden durch" );
Doc_PrintLine (nDocID, 0, "den Destillator getrieben und stetig aufgekocht." );
Doc_SetMargins (nDocID, -1, 200, 50, 50, 50, 1);
Doc_Show (nDocID);

if (MIS_Potion1 == FALSE)
{
B_LogEntry (TOPIC_Alchemy,"Um eine Essenz der Heilung zu brauen, brauche ich zunächst eine Laborflasche (welche ich für jeden Trank brauche) und die Zutaten: 2 Heilpflanzen und 1 Feldknöterich.");
VAR int Hero_Trank_1 = TRUE;
MIS_Potion1 = TRUE;
};

wo ist denn jetzt der SCHEIß fehler?

Es ist immernoch dads gleiche
statt
VAR int Hero_Trank_1 = TRUE;
schreibst du:
VAR int Hero_Trank_1;
Hero_Trank_1 = TRUE;

Außerdem weiß ich nicht, ob das in den Story_Globals so gut aufgehoben ist
Sollte das nicht lieber zu anderen Zetteln, Briefen, etc.?

Earnur
23.07.2008, 13:43
Es ist immernoch dads gleiche
statt
VAR int Hero_Trank_1 = TRUE;
schreibst du:
VAR int Hero_Trank_1;
Hero_Trank_1 = TRUE;

Außerdem weiß ich nicht, ob das in den Story_Globals so gut aufgehoben ist
Sollte das nicht lieber zu anderen Zetteln, Briefen, etc.?

achso! danke dir.

Earnur
23.07.2008, 14:00
er begreifts nicht, ich geb das mit dem rezept jetzt auf -.-

Milky-Way
23.07.2008, 14:05
er begreifts nicht, ich geb das mit dem rezept jetzt auf -.-
was ist denn das Problem?
Fehler beim Parsen?
Dokument wird nicht geöffnet?

Earnur
23.07.2008, 14:39
was ist denn das Problem?
Fehler beim Parsen?
Dokument wird nicht geöffnet?

beim parsen, irgendein { wird nicht erkannt, weiß nicht.

Sumpfkrautjunkie
23.07.2008, 14:55
if (MIS_Potion1 == FALSE)
{


muss am Ende mit einem }; geschlossen werden(Merkregel: Die Anzahl offener Klammern muss immer gleich der Anzahl der geschlossenen Klammern sein).

Earnur
23.07.2008, 15:23
if (MIS_Potion1 == FALSE)
{


muss am Ende mit einem }; geschlossen werden(Merkregel: Die Anzahl offener Klammern muss immer gleich der Anzahl der geschlossenen Klammern sein).

okay, das parsen klappt. aber er lernt nix. am alchemietisch kann ich keinen trank auswählen. :dnuhr:

Sumpfkrautjunkie
23.07.2008, 17:07
Alchemietisch-Script(Brauscript) zeigen.
Ansonsten:
Die Deklaration
VAR int Hero_Trank_1;
gehört nicht in den Brief, da sie sonst lokal und nur im Brief bekannt ist, sondern in die Story_globals.d(außerhalb des Briefes), damit sie global ist und z.B. das Mobis-Dialog-Script vom Alchemietisch die Variable kennt.

Earnur
23.07.2008, 17:27
hier:


//*******************************************************
INSTANCE PC_ItPo_Health_01 (C_INFO)
{
nr = 2;
npc = PC_Hero;
condition = PC_ItPo_Health_01_Condition;
information = PC_ItPo_Health_01_Info;
permanent = TRUE;
description = "Essenz der Heilung (2 Heilplanzen, 1 Feldknöterich)";
};

FUNC INT PC_ItPo_Health_01_Condition()
{
if((PLAYER_MOBSI_PRODUCTION == MOBSI_POTIONALCHEMY)
&& (PLAYER_TALENT_ALCHEMY[POTION_Health_01] == TRUE))
&& (HealthStart == TRUE)
&& (Hero_Trank_1 = TRUE)


{
return TRUE;
};

};

FUNC VOID PC_ItPo_Health_01_Info ()
{
if (Npc_HasItems (hero, ItPl_Health_Herb_01) >= 2)
&& (Npc_HasItems (hero, ItPl_Temp_Herb) >= 1)
{
Npc_RemoveInvItems (hero,ItPl_Health_Herb_01,2);
Npc_RemoveInvItems (hero,ItPl_Temp_Herb ,1);

CreateInvItem (hero,ItPo_Health_01);
Print (PRINT_AlchemySuccess);
}
else
{
Print (PRINT_ProdItemsMissing);
CreateInvItems (self, ItMi_Flask,1);
};
B_ENDPRODUCTIONDIALOG ();
};

Sumpfkrautjunkie
23.07.2008, 17:48
= ist eine Zuweisung, == eine Abfrage
Mach daher aus
&& (Hero_Trank_1 = TRUE)
besser
&& (Hero_Trank_1 == TRUE)

Ansonsten:
Sind
PLAYER_TALENT_ALCHEMY[POTION_Health_01]
HealthStart
Hero_Trank_1

alle auf True und bist du sicher, dass die Datei geparst wird(testweise Syntaxfehler einbauen und gucken, ob der Parser meckert)?

Earnur
23.07.2008, 19:24
= ist eine Zuweisung, == eine Abfrage
Mach daher aus
&& (Hero_Trank_1 = TRUE)
besser
&& (Hero_Trank_1 == TRUE)

Ansonsten:
Sind
PLAYER_TALENT_ALCHEMY[POTION_Health_01]
HealthStart
Hero_Trank_1

alle auf True und bist du sicher, dass die Datei geparst wird(testweise Syntaxfehler einbauen und gucken, ob der Parser meckert)?

okay, aber es geht immer noch nicht :scared:

Sumpfkrautjunkie
23.07.2008, 19:56
okay, aber es geht immer noch nicht :scared:


Sind
PLAYER_TALENT_ALCHEMY[POTION_Health_01]
HealthStart
Hero_Trank_1

alle auf True und bist du sicher, dass die Datei geparst wird(testweise Syntaxfehler einbauen und gucken, ob der Parser meckert)?
Ein bisschen Entgegenkommen und ein Tick Eigeninitiative schaden nie.

Meerschweinchen
24.07.2008, 15:41
Wenn er den Trank per Rezept lernen muss, kann es sein, dass

PLAYER_TALENT_ALCHEMY[POTION_Health_01]

Nach wie vor auf FALSE ist. Und dann stimmt die Bedingung nicht. Hat der SC den Trank POTION_Health_01 auch bei einem Lehrer gelernt? Oder wurde die Variable im Rezept auf TRUE gesetzt?

Ps.: Ich sehe gerade, dass Sumpfkrautjunkie das auch schon gefragt hat. Sry