acasă / Mozilla firefox / Recuperarea Skyrim vrăji. Remediază erorile Skyrim. Restaurați conexiunile

Recuperarea Skyrim vrăji. Remediază erorile Skyrim. Restaurați conexiunile

M-am săturat să repar jocurile salvate de alte persoane, așa că în acest articol vă voi spune cum să remediați unele erori de script în Skyrim.

În plus, articolul va fi util pentru modders pentru a înțelege cum funcționează jocul și pentru a evita erorile populare.

Nu trebuie confundat cu prăbușirile pe desktop!

Declar imediat că nu voi răspunde la comentarii naive ale formularului „Pur și simplu fac curățarea folosind SaveTool și totul este în regulă cu mine". Sper sincer să nu întâlniți o situație în care SaveToolva fi inutil. Dar dacă întâlniți, amintiți-vă despre acest articol.

Am înțeles că unitățile de pe site sunt familiare cu termenii de programare, precum „pointer”, „instrucțiune” etc., așa că voi începe de la elementele de bază.

Atât citirea articolului, cât și corectarea fișierelor salvate necesită utilizatorului capacitatea și dorința de a GÂNDI. Dar cred că nu există probleme cu acest lucru, deoarece „nevoia va forța”. Perspectiva de a pierde economiile de 600 de ore și de a începe din nou va obliga pe oricine să miște gyrus.

În plus, parcă am auzit undeva că toată lumea se plânge că puzzle-urile din Skyrim nu sunt suficient de complicate?) Ei bine, puteți percepe problema dvs. ca un puzzle demn

Pentru a simplifica sarcina, am marcat în mod specific locurile din articolul în care utilizatorul va trebui A gândi   de unul singur.

Ce este un scenariu?

Un script în Skyrim este un program scris într-un limbaj interpretat care extinde funcționalitatea obiectelor din joc.

corpun script care introduce doar funcționalitatea, răspunde la evenimentele jocului și conține toată sarcina utilă, este format din instrucțiuni (un set de instrucțiuni se numește și bytecode). Corpul este obținut din codul sursă prin compilare (de exemplu, de la CreationKit). TOATE scripturile care vin cu mod-uri (nu contează dacă sunt în arhivă sau nu) vin sub forma unui bytecode compilat.

Ca orice alt program, scriptul trebuie să aibă memorie. Variabilele (proprietățile) scriptului o alcătuiesc   memoria pe termen lung. Variabilele pot stoca numere sau pot stoca identificatori ai altor scripturi  pentru a comunica cu ele (variabilele care stochează ID-urile altor scripturi sunt numite „Pointeri“ ).

Cum se scriu scripturile la un joc salvat?

Simplistic, jocul scrie pe firul de salvare (ca parte a StackFrames) și entități.

fir- Aceasta este o copie a corpului scriptului, bytecode-ul său în momentul executării + numărul instrucțiunii executabile. Jocul scrie corpul astfel încât după încărcarea jocului de salvare, scriptul reia execuția sub forma în care a existat la scrierea fișierului de salvare (chiar dacă ați actualizat modificarea la noua versiune)

esențăeste memoria pe termen lung a scenariului. Fiecare obiect este asociat cu propria entitate de script.

De exemplu, dacă aveți două manechine identice în casă, atunci veți avea două  entități script (fiecare dintre ele fiind atașat de manechinul propriu). Dacă activați și adăugați un element la inventar, entitatea scriptă a manechinului corespunzător va procesa evenimentul și îi va schimba memoria. Ea își va aminti ce fel de obiect se află în slotul corespunzător. De fiecare dată când intri în casă, scenariul pune această armură pe manechin.

Dar clasa de script este unul  pe toate manechinele (toate manechinele sunt procesate la fel de).

Deci, există bug-uri de script două tipuri:

Eroare în majoritatea   logica scriptului(Corpul). În acest caz, trebuie să-l lovești pe autorul modului. Tu însuți nu vei rezolva problema. După corectare, este suficient să treci la noua versiune a modului.

Bug legate memorie greșităentitate de script (adică valoarea greșită a oricărei variabile). În același timp, nu există bug-uri în modul original. În acest caz, lovitura cu autorul este inutilă (și chiar dăunătoare), deoarece Problema este DOAR în economisirea ta.

"Cum poate fi asta?"  - intrebati? Cert este că accesul la memoria scriptului este nelimitat. Orice script din orice mod poate schimba variabilele script din alt mod, jocul nu interzice acest lucru.

De obicei, acest lucru se întâmplă dacă diferite scripturi de la mod-uri diferite rescriu memoria acelorași scripturi de vanilie. Fiecare mod trage pătura de partea sa, rezultând un conflict și ceva din joc nu mai funcționează.

De asemenea, în unele situații, jocul nu reușește să completeze corect valorile indicatoarelor. Acest lucru poate, de exemplu, să apară din cauza unei schimbări haotice a versiunilor modului.

De exemplu, ați actualizat modificarea la versiunea 2. Nu v-a plăcut - ați redat la versiunea 1. Totul este în regulă, se folosesc scripturile primei versiuni, dar memoria rămâne din a doua versiune! Autorul modificării ar putea schimba ceva în structurile de date, entitățile din salvarea dvs. au fost actualizate și memoria scriptului s-a schimbat. Valorile variabilelor de script existente NU se modifică cu o modificare a versiunii mod.

Dacă ceva nu funcționează așa cum este de așteptat, sunt probabil resetați unii parametri numerici.

Dar mai des, ceva pur și simplu nu funcționează. De exemplu elementele nu sunt activate. Care ar putea fi motivul?

Țineți minte, am scris mai sus despre „indicatoare”? Un pointer este o variabilă care leagă o entitate scriptă la alta (stochează identificatorul numeric al acestei alte entități). De ce este chiar necesar acest lucru?

În cazul manechinelor, face toate lucrările   un singur scenariu.  Un singur script este suficient pentru a urmări armura și a-l pune pe un manechin.

Dar, în cazul unor căutări complexe, un singur script nu este niciodată suficient. Susținut rețea de scripturi interconectate. Fiecare dintre aceste scripturi își face partea. Când are nevoie de ceva dintr-un alt script, îi trimite „mesaje” (apelează funcțiile acestui script). Dar pentru a trimite mesaje scriptului, acesta trebuie să-i cunoască identificatorul. Pentru aceasta, există „ indici". Se leagă scripturi între ele pentru a putea interacționa.


Ce se întâmplă dacă indicatorul își pierde sensul din motivele descrise mai sus? Conexiunea se va rupe scripturile nu vor putea interacționa  unul cu celălalt. Unele scripturi nu vor trimite mesaje, în timp ce altele nu le vor primi, ca urmare - o parte din lucrare nu va fi finalizată  (pe care, de fapt, îl observi în joc).

Deci, știm - pentru a restabili scripturile în acest caz, este suficient să restabiliți relația dintre entitățile scriptului. Cum se face?

Dacă memoria script nu conține nimic important, puteți încerca pur și simplu ștergeți entitatea. Potrivit pentru așa cum este SaveToolașa și   Transfer de date Papyrus (Scalpel Script). Trebuie să determinați numele scriptului și să îl specificați manual.

Când jocul încarcă salvarea editată, vede asta   ceva nu se potrivește  - entitatea nu mai este acolo, deși ar trebui să fie legată de un obiect din joc (conform informațiilor din fișierul plug-in.esp). După care, jocul restabilește entitatea de script cu memorie implicită  (toate variabilele vor conține valorile specificate inițial de modder). Acest lucru ne rezolvă doar problema în majoritatea cazurilor, deoarece scripturile sunt inițial legate între ele.

Dar dacă memoria scriptului stochează date importante, de exemplu, despre trecerea căutării? Când ștergeți, jocul va uita aceste date, iar jucătorul nu va putea finaliza misiunea. Sau, de exemplu, modderul nu completează valorile inițial și scrie un script care le va expune la un anumit eveniment. În acest caz, eliminarea scriptului nu este o soluție.

Restaurați manual legăturile

SaveTool nu poate edita variabile, deci trebuie să descărcați.

Luați în considerare cazul real când un jucător nu poate scoate sigiliul și nu poate elibera Serana din mormânt (Braziers nu raspundecând sunt activate).


În primul rând, trebuie să înțelegeți ce fel de script este atașat la activatorul Brazier. Dacă vă gândiți la asta, puteți înțelege că, în versiunea engleză, sunt numiți activatori căldărarașa că vom încerca doar să încărcăm secțiunea în PDT și să căutăm scripturi cu acest nume în filă „Date script”(folosiți bara de căutare de mai jos). În cazurile în care numele activatorului nu se potrivește cu numele scriptului, puteți deschide CreationKit, găsiți activatorul și vedeți ce script specific este atașat la acesta.

Succes! Am găsit o clasă DLC1VQ01PuzzleBrazierScript.

Să ne uităm la una dintre entități. Temerile au fost confirmate, vedem doi indicatori (Pointer), care conțin valoarea 0 (adică nu indică niciun script).


În total, 5 entități sunt salvate în DLC1VQ01PuzzleBrazierScript (evident, deoarece 5 braziere sunt utilizate în puzzle). Vedem că fiecare dintre ele are această problemă.

Din numele (mainScript - „Scriptul principal” și puzzleController), puteți ghici logic că acest lucru este anormal, TREBUIE să indice spre ceva pentru ca întregul circuit să funcționeze.

Acum trebuie să te gândești și să ghicești ce ID de script ar trebui să conțină aceste variabile.

MainScript are tipul de script DLC1VQ01PuzzleController. Să încercăm să introducem acest nume în căutare și să vedem ce fel de scripturi există cu o astfel de clasă. Vedem o singură entitate.


Evident, pur și simplu nu avem alte opțiuni. Toate variabilele mainScript cu tipul de date DLC1VQ01PuzzleController trebuie să indice această entitate.

Dar mai avem variabila PuzzleController, logica ne spune (da, trebuie să gândiți în acest loc) că ar trebui să puncteze și DLC1VQ01PuzzleController(de ce autorii au făcut acest lucru nu este clar ... dar cel mai probabil, o variabilă cu acest nume a fost adăugată de un petic neoficial). Pentru a ne asigura, încercăm să găsim o astfel de variabilă într-un alt script.

Din numele clasei și variabile DLC1VQ01PuzzleController, rezultă că acesta este un script care controlează puzzle-ul. Ar trebui să conțină legături către alte scripturi care sunt implicate în puzzle.

Da, vedem scriptul asociat butonului DLC1VQ01PuzzleButtonScript. Faceți dublu clic și ajungem la entitate. Graficul de dependență confirmă ipoteza noastră: puzzleControllerar trebui să punctez DLC1VQ01PuzzleController.


Să ne gândim și să vedem ce alte scripturi de puzzle sunt neconectate. Înapoi la DLC1VQ01PuzzleController. Cu butonul, totul este în regulă. Pe lângă buton și brazier, avem și scenariul Mormântului. Faceți dublu clic pe indicatorul puzzleCoffinși ajungem la scenariu DLC1VQ01PuzzleCoffinScript.

Vedem că suferă de aceeași problemă ca Brazier. mainScript nu indică nimic. În plus, vedem un indicator Serana(evident că ar trebui să punctez scriptul lui Seran), care este, de asemenea, gol!

Total avem 6 scripturi  cu indicatoarele goale. 5 braziere, fiecare conținând doi indicatori cu valoare zero. Și un script de sicriu care conține doi indicatori goi (cu care trebuie asociat unul Suranialta cu controler puzzle).

Mai întâi trebuie să faceți un filtru care să spună instrumentului care variabile pot fi schimbate.

Mergeți la DLC1VQ01PuzzleCoffinScript. Faceți clic dreapta pe mainScript - instrumentul va adăuga o variabilă la filtru.


În mod similar faceți DLC1VQ01PuzzleBrazierScript(suficient pentru a face o singură tigaie).

Vedem o fereastră ca aceasta:

Instrumentul a completat automat ID-ul și filtrul scriptului (ambele valori pot fi modificate acum manual). Vă amintiți că am construit un filtru pentru un singur frypot? Dacă vă gândiți acum, puteți înțelege asta atunci când faceți clic pe „ modifica", numai 1 din 5 tigaie va fi corectată.

Avem nevoie de un filtru care să acopere TOATE cele 5 entități (adică întreaga clasă). Pentru a face acest lucru, trebuie doar să eliminați REFID din filtru. Așa va arăta:

presa "Change".  variabile mainScriptacum conțin valoarea corectă. Puteți vedea în jurnal că operația a afectat 6 variabile.


Acționăm în mod similar cu puzzleController

Deci, avem un indicator gol la Surani. Dar cum să aflu scenariul ei? S-ar putea să vă gândiți și să căutați un indicator similar undeva în cartier. Nu trebuie să mă duc departe dacă mă întorc la controler puzzle, puteți vedea variabila SeranaRef


Faceți dublu clic și instrumentul ne duce la script DLC1SeranaLevelingScript, vedem că scripturile de la alte mod-uri și resurse se referă și la acestea Surani, ceea ce înseamnă că este clientul nostru.


Pointer către Serana într-un scenariu DLC1VQ01PuzzleCoffinScriptsetați în mod similar:

Conexiunile restaurate, acum scripturile pot interacționa din nou între ele.

Descărcați jocul - bug-ul a dispărut, brazierii se mișcă!
  Serana este salvată!

Dacă încărcați o nouă salvare în PDT, puteți vedea clar diferențele din graficul de dependență

Link-uri script căldărarînainte și după:

Link-uri script Sicriulînainte și după:


Mai multe detalii despre modificarea variabilelor puteți vedea în videoclip:

Vă mulțumim pentru atenție!

Îmi place Skyrim datorită echilibrului său în raport cu abilitățile de artizanat. După ce am parcurs jocul departe și în larg, am încercat să creez lucruri cu caracteristici maxime. Alchimia, fermecarea și fierăria sunt atât de conectate organic, încât este imposibil de creat super-lucruri. Mai degrabă, nu a rezultat înainte de a fi găsit gaura asociată cu abilitatea de recuperare. Voi scrie despre această gaură în ordine.

Nu există deloc un echipament cu o abilitate crescută de fermecare. Poțiunile cu + până la fermecare sunt slabe, iar „încântarea de set pentru recurs la alchimie - poțiuni de gătit cu + la vrăjire” se termină cu + 32% pentru îndemânare. Cu această poțiune, se obține un farmec de + 28% către abilitatea alchimiei.

Eu joc un arcaș. Cu acest set, s-a dovedit a produce o poțiune cu + 130% pentru fierărie și forjarea unui arc la 250 daune + 4 articole la + 47% la tir cu arcul, pentru un total de aproximativ 600 de daune. Cu toate acestea, forumurile scriu despre 1300. Unde?

A fost realizată o campanie pentru căștile Falmer și cu ea s-a făcut un set pentru alchimie format din 5 articole, și nu 4, dar acest lucru a adăugat destul de mult - poțiuni + 32% la fermecare și + 147% la fierărie, setat la +29 % la alchimie și + 48% la tir cu arcul. Aceasta s-a terminat.

1300-ul necesar nu a funcționat, iar o suspiciune a apărut că alte abilități afectau că nu am fost pompat. A fost găsit după compararea tuturor parametrilor. S-a dovedit a fi o abilitate de recuperare.

Ie abilitatea de recuperare afectează parametrii obiectelor fermecate. Mai mult, ea afectează într-un grad dominant și intră în recurs. Deci, după aceea, pompa devine neinteresantă.

Facem o poțiune pe + la îndemânarea restaurării, bem, eliminăm armuri, le îmbrăcăm din nou (se primește un nou bonus), facem următoarele și așa mai departe. După 3 iterații, am obținut această poțiune:

O gaură pentru crearea lucrurilor cu parametri infiniti



O gaură pentru crearea lucrurilor cu parametri infiniti

O astfel de poțiune pentru fierărie a fost fabricată cu el:

O gaură pentru crearea lucrurilor cu parametri infiniti



O gaură pentru crearea lucrurilor cu parametri infiniti

Și astfel de articole au fost fermecate:

O gaură pentru crearea lucrurilor cu parametri infiniti

O gaură pentru crearea lucrurilor cu parametri infiniti

O gaură pentru crearea lucrurilor cu parametri infiniti

O gaură pentru crearea lucrurilor cu parametri infiniti

Iată o astfel de gaură în joc. Da, o eroare. Nu că este o gafă ca în cazul ogma infinium (care este literalmente un infinit de abilități :)). Doar că abilitățile de artizanat sunt echilibrate, iar recuperarea este uitată și poate fi ufigachit până la infinit. Apropo, o altă întrebare este de ce afectează chiar și obiectele fermecate.

descriere

Acest mod vă permite să controlați viteza de regenerare a sănătății, manei și rezistenței.

Caracteristici:

  * Scris pentru SkyUI (numai MCM)
  * Controlul regenerarii în timpul somnului, ședinței, alergării, sprintului
  * Reglare regenerare pentru poțiuni și alimente
  * Reglare regenerare în timpul luptei
  * Setare de regenerare pentru articole, magie și caracteristici

cerinţe

  * SKSE 1.6.16 sau o versiune ulterioară
  * SkyUI 5.1 sau o versiune ulterioară

Ce este nou

  * Valorile pentru setările jocului sunt acum aplicate automat după repornirea jocului.
  * Șablonul Daggerfall actualizat, include regenerarea magiei și a altor modificări.
  * S-a adăugat o nouă caracteristică pentru GG: încetinirea până la -50% (consultați pagina „Diverse”).
  * Modificarea comportamentului setărilor pentru funcții (numite anterior vrăji): acum aceasta este o creștere constantă a vitezei de regenerare în timp ce acestea sunt active. În această versiune, afectează și Semnul Doamnei (anterior nu exista niciun sens în el, acum va fi).

Diferențe față de versiunea 2.xx ramură: semnificative, nu enumerați toate.

actualizare

Actualizați din versiunea 3.x:
   * Doar actualizați fișierele și continuați să jucați.

Actualizați din versiunea 2.x:
   * Eliminați versiunea veche descrisă în acest document de mai jos
   * Instalați noua versiune așa cum este scris în acest document de mai jos

Notă despre actualizarea de la versiunea 2.x la versiunea 3.x: poate cauza mare  probleme.
  Trebuie să folosiți economiile „curățătorilor” etc. Sfatul meu: este mai ușor să începi un joc nou.

Q. Numere. Ce înseamnă?
  A. În jocul original, parametrii HealRate, MagickaRate, StaminaRate au valori strict specificate:

HealRate \u003d 0,7, MagickaRate \u003d 3,0 și StaminaRate \u003d 5,0.

Cu cât este mai mare valoarea, cu atât este mai repede restabilitul atributului specificat. Aproximativ vorbind, aceste valori indică în procente cât de mult crește atributul pe unitatea de timp. Pentru sănătate, de exemplu, aceasta este de 0,7% / sec. de la baza / valoarea maximă de sănătate.

Există, de asemenea, trei parametri suplimentari care sunt folosiți în timpul bătăliei:

CombatHealthRegenMult \u003d 0,7, fCombatMagickaRegenRateMult \u003d 0,33, fCombatStaminaRegenRateMult \u003d 0,35

Acești parametri sunt înmulțiți cu cei de mai sus. Astfel, rata de regenerare în timpul bătăliei este redusă brusc.

Î. Poțiunile pentru a accelera recuperarea nu mai sunt relevante? În general, sunt afectați parametri pentru poțiuni?
  A. Nu. Modul nu atinge poțiuni sau alte articole. Viteza de regenerare depinde de setările modului. Începând cu versiunea 2.06, poțiunile și mâncarea au propriile setări.

Î. Cum funcționează setările pentru poțiuni, mâncare etc.
  A. Poțiunile și setările alimentare au cea mai mare prioritate și, prin urmare, rescriu alte valori.

Priorități de la cea mai mare la cea mai mică:
  Poțiuni\u003e Mâncare\u003e Ședință / Alergare / Sprint

În același timp, setările pentru dormit și sub formă de fiară opresc toate setările pentru poțiuni etc.

Începând cu versiunea 3.09, setările responsabile pentru comportamentul caracteristicilor enumerate mai jos au fost modificate astfel încât acestea să devină un plus la valoarea actuală a ratei de regenerare. De exemplu, în modul stand-up, ritmul este setat la 0,3, în timp ce în timpul rulării este 0,55, iar valoarea pentru caracteristică este 0,11. Apoi, când funcția este activă, ritmul final va fi egal cu: 0,41 în picioare și 0,66 în timpul rulării. Lista de caracteristici: Zodia Lady, Altar Akatosh, Inelul Namira și „Aripile vântului”.

Î. Compatibil cu alte mod-uri?
  A. Nu este compatibil cu cele care schimbă valorile jucătorului: HealRate, MagickaRate, StaminaRate. În orice fel.

Î. Curse personalizate?
  A. Ar trebui să funcționeze, nu testat.

Î. După somn, este clar că starea de sănătate a crescut la maxim, apoi a scăzut brusc. Deci conceput?
  A. Da. Nu intenționez să o rezolv, aceasta va adăuga doar mai multe probleme de compatibilitate cu patch-urile neoficiale și alte mod-uri.

Î. Care este formula pentru somn și standby?
  A. Formula sa schimbat în comparație cu versiunile 2.xx, arată astfel:

Valoare / oră \u003d 36 *<ЧАСЫ> * <ТЕМП>


  Î. Modul afectează alte caractere, dragoni?
  A. Nu. Și nu planificat.

Î. Este prevăzută o versiune fără SKSE?
  A. Nu. Și nu planificat.

Î. Este necesar SkyUI?
  A. Nu, nu este necesar. Totul se face în cadrul MCM. Dacă nu vă place SkyUI, puteți încerca modul SkyUI-Away etc.

instalare

1. Copiați fișierele din arhiva care se află în directorul Date în directorul cu jocul (... / Skyrim / Data)

2. Conectați modul Realistic_Regeneration.esp în lansator

3. După descărcarea jocului, accesați meniul Mods Settings și ieșiți imediat. Secvență: Escape -\u003e Mods Settings -\u003e TAB -\u003e TAB. Acest lucru va începe procesul de inițializare și conectare a noilor MCM-uri.

4. Așteptați 5-10 secunde și așteptați mesajul că acest mod este activat (în colțul din stânga sus inscripția „Regenerare realistă este activată”)

5. Personalizați modul cum doriți. Valorile maxime de pe glisiere indică valoarea maximă permisă (sunt aceleași ca în jocul inițial).

îndepărtare

1. În setările modului, dezactivați modul: debifați caseta de lângă „Mod este activat”
  2. Salvați
  3. Dezactivați modul în lansator
  4. Ștergeți fișierele din livrarea modului