World of Gothic Archiv > Editing
Wo wird der Abzug der Lernpunkte berechnet?
Seite 1 von 1  1 
26.04.2003, 15:41 #1
Mud-Hunter
Beiträge: 32
Wo wird der Abzug der Lernpunkte berechnet?
hai miteinander!
Ich hab ein problem, dass wahrscheinlich so einfach ist, dass ich den wald vor lauter bäumen nicht sehe :-)
Ich will - um es etwas schwerer zu machen - die kosten der lernpunkte für stärke und geschicklichkeit erhöhen.
dazu habe ich erst mal in den globals die punkte fürs lernen von 1 auf zwei erhöht.
dadurch erscheint auch im dialog mit einem lehrer ganz richtig bei der auswahl zum lernen
stärke +1 (2 Lernpunkte)
stärke +5 (10 lernpunkte) usw.
weiters steht auch richtig, wenn ich dann die auswahl treffe, auf dem bildschirm
stärke +1
bzw stärke +5

allerdings werden auch wieder genausoviele lernpunkte abgezogen :-(
es muss wohl am folgenden scriptteil liegen, denn durch die änderungen in der globals.d allein, funzt es nicht.

func void JIP_8001_Granig_Teach_DEX_5()
{
B_BuyAttributePoints (hero, ATR_DEXTERITY, 5*LPCOST_ATTRIBUTE_DEXTERITY);
Info_ClearChoices (JIP_8001_Granig_Teach);
Info_AddChoice (JIP_8001_Granig_Teach,DIALOG_BACK ,JIP_8001_Gr anig_Teach_BACK);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_5,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_1);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_1);
};

ich habe im oberen script auch schon manche änderung durchgeführt, aber alle hatten den gleichen effekt:
wenn auf dem bildschirm nach der auswahl angezeigt wird: stärke +1 dann wird auch nur 1 punkt abgezogen.

wäre toll, wenn mir jemand sagen kann, an welcher stelle genau ich ein "*2" oder ein "/2" eintragen muss, damit er richtig rechnet, oder ob es noch eine .d-datei gibt, bei der ich was ändern muss.

danke und dschau
26.04.2003, 16:49 #2
KaiserARM
Beiträge: 88

Also ich spekuliere mal:

Was du in deinem obenstehenden Code gemacht hast, ist nur die Änderung des Learnstrings, d.h. nur der Dialog. Gekauft werden die Attributspunkte mit B_BuyAttributePoints(), da musste halt nochmal kucken und das anpassen. Ich hab jetzt nicht ganz verstanden, ob du das schon gemacht hast, aber die Lernkosten kann man in der Story_Globals.d ändern, nach den Erfahrungspunkten:
code\:
const int LPCOST_ATTRIBUTE_STRENGTH = 1;
const int LPCOST_ATTRIBUTE_DEXTERITY = 1;
const int LPCOST_ATTRIBUTE_MANA = 1;
...
...
26.04.2003, 17:05 #3
Mud-Hunter
Beiträge: 32

@KaiserArm!
Dort habe ich es ja geändert und bekommen darum auch die richtigen dialoge, nur die anzeige am Bilschirm - große gelbe schrift: +1 Stärke - ist immer die gleiche, wie die wirklichen Punkteabzüge. wenn ich das script so verändere, dass die schrift +2 stärke oder nur + 3 Geschicklichkeit (statt 5) einstelle werden auch vom "punktekonto" genau diese punkteanzahl abgezogen, was ja nicht sein sollte, denn ich will ja bei anzeige am bildschirm: + 1 Stärke bei den lernpunkten 2 punkte abzug!!!
danke und dschau
26.04.2003, 18:56 #4
KaiserARM
Beiträge: 88

Hm wüsst ich jeztt auch nicht woran das liegt. Poste mal den deinen ganzen Code!
Und wenns gar nciht klappt, kannst du die LP ja immer noch von Hand abziehen...
26.04.2003, 19:46 #5
Mud-Hunter
Beiträge: 32

INSTANCE JIP_8001_Granig_Teach(C_INFO)
{
npc = JIP_8001_Granig;
condition = JIP_8001_Granig_Teach_Condition;
information = JIP_8001_Granig_Teach_Info;

important = FALSE;
permanent = TRUE; // So lange der Auftrag nicht erfüllt ist muß der
// Nsc den Dialog immer wieder bringen, alles
// andere wird in der Bedingung für den Dialog geregelt


description = "Kannst Du mir was beibringen";



};

FUNC int JIP_8001_Granig_Teach_Condition()
{
if (Npc_KnowsInfo ( hero, JIP_8001_Granig_AskForFood) // (siehe 1)
& int_GotFood) // (siehe 2)
{
return TRUE;
};
return FALSE;
};




FUNC VOID JIP_8001_Granig_Teach_Info()
{

AI_Output(hero,self,"JIP_8001_Granig_Teach_15_00"); //Kannst du meine Muckis stärker machen?
AI_Output(self,hero,"JIP_8001_Granig_Teach_11_01"); //Ja. Bei mir kannst du lernen, deine Geschicklichkeit zu verbessern oder deine Kampfkraft zu steigern.



Info_ClearChoices (JIP_8001_Granig_Teach);
Info_AddChoice (JIP_8001_Granig_Teach,DIALOG_BACK ,JIP_8001_Gr anig_Teach_BACK);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_5,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_1);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_1);


};

func void JIP_8001_Granig_Teach_BACK()
{
AI_Output(self,hero,"JIP_8001_Granig_Teach_BACK_11_00"); //Deine Kampfkraft ist um einiges gestiegen.

/*
AI_Output(self,hero,"JIP_8001_Granig_Teach_BACK_11_01"); //Dein Geschick im Umgang mit Bögen und Armbrüsten ist schon besser geworden.

AI_Output(self,hero,"JIP_8001_Granig_Teach_BACK_11_02"); //Komm bald wieder - Du musst noch besser werden, um alle umzunieten!
*/

Info_ClearChoices (JIP_8001_Granig_Teach);
};

func void JIP_8001_Granig_Teach_STR_1()
{
B_BuyAttributePoints (hero, ATR_STRENGTH, LPCOST_ATTRIBUTE_STRENGTH);
Info_ClearChoices (JIP_8001_Granig_Teach);
Info_AddChoice (JIP_8001_Granig_Teach,DIALOG_BACK ,JIP_8001_Gr anig_Teach_BACK);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_5 ,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_1);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_1);
};

func void JIP_8001_Granig_Teach_STR_5()
{
B_BuyAttributePoints (hero, ATR_STRENGTH, 5*LPCOST_ATTRIBUTE_STRENGTH);
Info_ClearChoices (JIP_8001_Granig_Teach);
Info_AddChoice (JIP_8001_Granig_Teach,DIALOG_BACK ,JIP_8001_Gr anig_Teach_BACK);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_5,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_1);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_1);
};

func void JIP_8001_Granig_Teach_DEX_1()
{
B_BuyAttributePoints (hero, ATR_DEXTERITY, LPCOST_ATTRIBUTE_DEXTERITY);
Info_ClearChoices (JIP_8001_Granig_Teach);
Info_AddChoice (JIP_8001_Granig_Teach,DIALOG_BACK ,JIP_8001_Gr anig_Teach_BACK);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_5,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_1);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_1);
};

func void JIP_8001_Granig_Teach_DEX_5()
{
B_BuyAttributePoints (hero, ATR_DEXTERITY, 5*LPCOST_ATTRIBUTE_DEXTERITY);
Info_ClearChoices (JIP_8001_Granig_Teach);
Info_AddChoice (JIP_8001_Granig_Teach,DIALOG_BACK ,JIP_8001_Gr anig_Teach_BACK);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_5,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnStr ength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,JIP_8001_Granig_Teach_STR_1);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_5);
Info_AddChoice (JIP_8001_Granig_Teach,B_BuildLearnString(NAME_LearnDex terity_1,LPCOST_ATTRIBUTE_DEXTERITY,0),JIP_8001_Granig_Teach_DEX_1);
};
26.04.2003, 20:09 #6
GülleMüller
Beiträge: 472

Tach,
quote:
es muss wohl am folgenden scriptteil liegen,

Im Prinzip schon, da die Funktion B_BuyAttributePoints([C_NPC],int,int) immer den letzten int Wert vom LP-Konto abzieht.
Dazu die entsprechende Scriptstelle in B_BuyAttributePoints.d:
quote:
...
typ.lp = typ.lp - AtrPlus;
...


Im Originalscript ist das Zeile 16.
[EDIT]
typ ist der C_NPC und AtrPlus ist der letzte int.
Sei aber vorsichtig beim ändern diese Funktion. Ich würde eine neue schreiben, oder so... hab allerdings diese Probs auch nicht ;)

cu
GüMü
27.04.2003, 16:23 #7
Mud-Hunter
Beiträge: 32

danke für die antworten.
soll das heissen, dass, wenn ich die kosten der lernpunkte - ich glaube in den globals - von 1 auf 2 stelle, dies nur bewirkt, dass sie im dialog-text "teurer" angezeigt werden?
dann werde ich mich mal an die B_BuyAttributePoints machen.
mit: typ.lp = typ.lp - AtrPlus*2; statt: typ.lp = typ.lp - AtrPlus;
sollte es doch gehen. dann werden doch doppelt soviele punkte abgezogen und das ist ja genau das, was ich will.
ist nur die frage, ob dann erkannt wird, wenn ich zuwenig punkte habe, also etwa 6 lernpunkte, dann könnte ich ja bisher zb Stärke +5 lernen, was aber in zukunft nicht gehen soll!
aber das werden wir ja sehen :-)
danke und dschau
27.04.2003, 22:28 #8
GülleMüller
Beiträge: 472

Abend,

quote:
soll das heissen, dass, wenn ich die kosten der lernpunkte - ich glaube in den globals - von 1 auf 2 stelle, dies nur bewirkt, dass sie im dialog-text "teurer" angezeigt werden?

Ähm, Nein. LPCOST_ Konstanten erhöhen die Kosten UND die Differenz bei der Benutzung von B_BuyAttributePoints.

Wegen LP-Abfrage:
LP-Check ( if (!(typ.lp < AtrPlus*2))) ersetzen.

cu
GüMü
28.04.2003, 04:39 #9
Mud-Hunter
Beiträge: 32

danke für antwort und gleichzeitig lösung
dschau
Seite 1 von 1  1