PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iLevelUpSkillPointBase funktioniert nicht



NACHTSCHRAT
31.01.2011, 23:04
kurze einführung:

momentan erhält mein char pro level 16 skillpunkte (incl. stats und perk).

da ich für meine mods die skillpunkte die man pro level erhält anpassen möchte, habe ich den wert bei "iLevelUpSkillPointBase" von 11 auf 6 geändert. wenn ich allerdings mit meinem char ein level aufsteige habe ich wieder 16 skillpunkte zu vergeben. das gleiche problem auch bei einem neuen spiel.

was könnte da falsch laufen? soweit ich weis bekommt man doch pro investierten punkt in intelligenz 0.5 skillpunkte pro levelaufstieg. oder irre ich mich? und ja: ich habe im geck abgespeichert ;).

ich bedanke mich schonmal im vorraus für die hilfe.

PS: gibt es eine speicherbegrenzung für geck? die esp meiner mod hat ca 1.4 mb und ich benutze immer eine kopie der esp zum testen von effekten oder spieleinstellungen.

tommyd2
31.01.2011, 23:39
Zu den Skillpoints kann ich zwar nichts sagen, aber dafür zu deinem PS.

Eine Speicherbegrenzung sollte es theoretisch nicht geben. Denn...
In Oblivion gab es eine Ressource, die komplett in eine esp gepackt war.
Die war insgesmmt 350mb groß !!
Oblivion und das Construction Set hatten damit kein Problem, das wurde korrekt geladen. Einzig einige externe Tools hatten da beim laden Probleme, da der RAM manchmal dafür nicht ausreichte.
Da NV im Großen und Ganzen die gleiche Engine nutzt, sollte es hier ähnlich sein.

Misantrooper
01.02.2011, 09:22
meine esp ist mittlerweile 1,6mb gross und es wird jede änderung übernommen. ich muss diese zum testen zwar in eine esm konvertieren, da ich einige npc´s mit definierten pfaden habe, die in einer esp nur stucken oder porten würden.
aber das geck hat keine probleme mit grösseren esp´s

NACHTSCHRAT
01.02.2011, 10:04
Hab wieder ein paar Werte verändert, sie funktionieren. Nur das mit den Skillpunkten klappt nicht :(. Ich dreh noch durch :O.

Misantrooper
01.02.2011, 10:57
ray hat in nevax die skillpunkte bei levelaufstieg angepasst. er wird sicherlich nichts dagegen haben, wenn du dir mal anguggst wie er es gelöst hat.
um mal meinen alten php-dozenten zu zitieren:
warum das rad neu erfinden, wenn es schon jemand anders getan hat.
;)

NACHTSCHRAT
01.02.2011, 13:34
Hab mir mal sämtliche Nevax-Esp angeguckt die was mit Balancing und Skills zu tun haben, es wird kein einziges mal die iLevelUpSkillPointBase verändert....Jetzt bin ich völlig ratlos :O...

nicht_nett
01.02.2011, 14:28
Probiere mal iLevelUpSkillPointsInterval - steht Standart auf 1

Der Wert ist der Multiplikator für den Spieler-Intelligenz-Wert zur Bestimmung der Anzahl der Skillpunkte pro LevelUp. Mit 0.5 sollten es genau die Hälfte Skillpunkte sein.

So habe ich zumindest den Originaltext verstanden. Versuch mach kluch.

n_n

NACHTSCHRAT
01.02.2011, 14:54
Habs probiert, der Wert lässt sich nicht auf 0.5 setzen, er springt immer zurück. Hab ihn dann mal auf 0 gestellt, aber es hat keine änderung ergeben.

Hab mich mal im G.E.C.K. Forum schlau gemacht, iLevelUpSkillPointBase ist richtig. Bloß funktioniert es bei mir nicht. Kann ich jemanden vll. die .esp schicken damit er sie testen kann und mir sagen kann wieviel Skillpunkte bei einem LevelUp er bei einem INT-Wert von 1 hat?

Boïndil
01.02.2011, 16:17
Funktioniert bei mir auch nicht richtig: bei meinem eigenen Mod und Char habe ich folgende Werte:
Intelligenz: 1
iLevelUpSkillPointsBase: 7
iLevelUpSkillPointsInterval: 0

Ergibt 11 Punkte.

Habe zuerst gedacht, das sei der Vanilla Wert von iLevelUpSkillPointsBase, der ja ebenfalls 11 ist.

Dann habe ich statt dessen eine 6 bei SkillPointsBase gesetzt und jetzt 10 Punkte bekommen. Keine Ahnung, wieso das so ist.

In Venom(FO3) ist das genau so gelöst und dort funktioniert es.

iLevelsPerPerk funzt bei mir übrigens ebenfalls nicht, da wollte ich einen Perk jedes Level, habe also den Wert 1 gesetzt(wie ich es in einem anderen Mod gesehen habe) und kriege trotzdem keinen.

Übrigens, das "i" in iLevel hat eine Bedeutung, es ist eine Ganz-Zahl. Wenn f wie float vorne dran stehen würde, könntest du eine 0.5 setzen.

tommyd2
01.02.2011, 17:25
iLevelsperPerk funktioniert bei mir tadellos. Das hatte ich auch extra so gesetzt, weil ich mich im Laufe meines derzeitigen Durchgangs nicht mit den Perk Rängen von NEVAX anfreunden konnte.
In meiner Ladeliste steht mein eigener kleiner Tweakmod natürlich an letzter Stelle, das auch alles korrekt funktioniert.

Boïndil
01.02.2011, 18:38
Es gibt keinen Mod, der die genannten Werte verändern könnte, ich überprüfe natürlich immer alles im FNVEdit. Oder kann es sein, dass es nur auf den ersten 3 Leveln zickt oder so?

tommyd2
01.02.2011, 20:04
Ich kann nicht mehr mit Sicherheit sagen, wann ich das gesetzt habe. war zumindest sehr früh. Entweder auf dem 2., oder auf dem 3 Level.
Das Setting ist übrigens neu bei NV dazu gekommen, das gab es so in Fallout 3 noch nicht. Vieleicht funktioniert die Implementation unter bestimmten Voraussetzungen nicht immer.

Danke für den Hinweis auf die Präbuchstaben, so einleuchtend, aber ich bin trotzdem nicht drauf gekommen. :rolleyes:
Na klar - f wie float, i wie integer, s wie short

Boïndil
01.02.2011, 20:41
Habe ja heute schon den dritten Char erstellt, um meiinen Mod zu testen.
Vielleicht muss ich mal einen weiter zocken, um zu sehen, wie sich das verhält.
Allerdings ist für heute Feierabend in der Wüste und ich kloppe mich gerade mit den Zombies in Dead Space :D

NACHTSCHRAT
01.02.2011, 23:25
Hab mich nochmals schlau gemacht, und herausgefunden das "iLevelUpSkillPointBase" nicht funktioniert. Ist anscheinend eine Daten-Leiche.

Laut diverser Aussagen ist für das absenken der Basis-Skillpoints ein Perk notwendig der per Script eingebunden wird...Da wünsch ich mir viel Spaß beim Tüfteln :O...Sobald ich es raus habe werde ich das Ergebnis mal posten.

EDIT: Habs rausgekriegt. Und es funktioniert :). Wenn ihr wollt kann ich ja meine Arbeitsschritte posten.

Boïndil
02.02.2011, 06:00
EDIT: Habs rausgekriegt. Und es funktioniert :). Wenn ihr wollt kann ich ja meine Arbeitsschritte posten.

Nur zu.... :)
Hast du auch Links?

Ich hoffe, dass iXPBumpBase nicht ebenfalls so eine Leiche ist, denn es kommt mir so vor, als ob ich verdächtig schnell leveln würde.

Edit:
Alles klar, gecheckt, man muss wirklich Perks per Quest-Script setzen, sofern man möchte, indem man diese von Intelligenz abhängig macht.
Das habe ich für meinen Mod auch getan, allerdings umgekehrt: Bis zwei Intelligenz-Punkte werden mit 5 Punkten Resistenz belohnt, anschliessend wird im 2-Punkte-Intervall Resistenz abgezogen und die Skillpunkte pro Level um einen verringert :D Das alles basiert auf einem Basis-Perk, der von Beginn weg 6 Punkte pro Level abzieht:
11- 6 -Strafe für Intelligenz
Der Mod ist nur für harte Krieger, keine Intelligenzbestien ;)

NACHTSCHRAT
02.02.2011, 11:07
1.Also zunächst einmal erstellt man einen Perk (Ich habe diesen PerkSkillpunkte genannt). Die Flag "Hidden" wird aktiviert, das Level stellt man auf 0 und die Ränge auf 1.

2.Nun geht man in die Perk Entries Zelle und erstelt einen neuen Entry Point. Rank wird auf 1 gesetzt, Priority auf 0. Unter dem Punkt Entry Point wählt man "Adjust Gained Skillpoints" und als Function "Add Value". Den Value Wert habe ich auf -6 gesetzt (Basis SP-6). Perk abspeichern.

3. Nun erstellt man ein Script. Script Type stellt man auf Quest. Der Script sieht bei mir so aus:

scn PerkSkillpunkte

float DoOnce

begin GameMode

Set DoOnce to 0

player.addperk PerkSkillpunkte

end

Abspeichern.

4. Nun erstellt man eine Neue Quest. Priority wird dabei auf 0 gesetzt die Flag "Start Game Enabled" aktiviert. Bei Script wählt ihr euren soeben entworfenen Script aus und speichert anschließend ab.

Eine .esp werde ich im Laufe des Tages hochladen.

EDIT: @Boindil: Das mit der iXPBumpBase kann ich dir leider nicht beantworten. Weist du zufällig wie die Formel für die benötigten EP für einen LevelUp lautet? Hab da bei der G.E.C.K.-Wiki Seite was gelesen, aber die dort gepostete Formel ergibt keinen Sinn wenn ich was in die Variablen einsetze xD. Level x = (x-1) * ((x - 2) / 2 * iXpBumpBase + iXpBase).

EDIT: EDIT: Hat sich erledigt, hatte einen Denkfehler xD.

Misantrooper
02.02.2011, 11:41
das script würde ich so schreiben:



scn PerkSkillpunkte

float DoOnce
short PerkDone

begin GameMode
if PerkDone == 0
Set DoOnce to 0
Set PerkDone to 1
player.addperk PerkSkillpunkte
endif
end


da der block "begin gamemode" mehrmals in der sekunde abgefragt wird, würdest du dem spieler immer wieder dieses Perk adden.
Ist jetzt nur die frage wo du das doOnce verwendest, und warum das ein float ist.

NACHTSCHRAT
02.02.2011, 12:00
Ich bin im Scripten eine Niete, deswegen sieht der bei mir so aus xD.

Dann probier ich mal deinen Script aus :P.

nicht_nett
02.02.2011, 12:05
Ich hoffe, dass iXPBumpBase nicht ebenfalls so eine Leiche ist, denn es kommt mir so vor, als ob ich verdächtig schnell leveln würde.


Zum langsamer Leveln gibt es zwei Möglichkeiten, zum einen kann man die XP reduzieren und die Levelgrenzen behalten - dabei muss aber viel angepasst werden, was die Fehlerquote erhöht.
Zum anderen kann man die Basispunkte anpassen, welche die Punktgrenze zum nächsten Level erhöht, hier muss man nur einen Wert ändern.

n_n

Boïndil
02.02.2011, 13:15
da der block "begin gamemode" mehrmals in der sekunde abgefragt wird, würdest du dem spieler immer wieder dieses Perk adden.
So wie es aussieht, kann man nur einen Perk mit einer ID haben, auch ohne DoOnce passiert nichts. Stellt sich die Frage, was performanter ist, das alles diesem Fakt überlassen, oder jedes Mal abfragen, ob der Perk schon da ist, oder jedes Mal abfragen, ob DoOnce nicht Null ist.
Bringt das zusätzlich was, wenn man das Intervall manuell rauf setzt?

Misantrooper
02.02.2011, 14:25
So wie es aussieht, kann man nur einen Perk mit einer ID haben, auch ohne DoOnce passiert nichts.

falch, es passiert sehr wohl etwas. das game siehr den befehl addperk, versucht diesen auszuführen, bekommt eine interne fehlermeldung, muss diese auswerten, und die funktion wieder rückgängig machen, bis zu dem punkt wo der fehler auftrat.

der spieler oder geck´ler bekommt davon nichts mit weil es systemintern abläuft.

das script ist nur eine kleinigkeit, und schlägt sich nicht wirklich auf die performance nieder, aber ich denke, man sollte sich von anfang an diese "scriptblocker" angewöhnen, denn irgendwann stehen an der stelle von addperk mehrfach verschachtelte if-else-schleifen.


was mir gerade einfällt. man kann das script auch an einen x-beliebigen selbstplatzierten gegenstand hängen, der z.b. in mitchels haus platziert wird. gibt den script dann ein markfordelete.GEGENSTAND mit, und das script ist beim nächsten cell-reset geschichte. bei grossen scripts, die nur einmal benötigt werden, gehe ich z.b. so vor

Boïndil
02.02.2011, 14:28
Klar, je sauberer, je besser.