Această pagină descrie erorile frecvente atunci când lucrează cu Papyrus și cum să le diagnosticați și să le remediați.
Obișnuirea cu Papyrus poate fi un proces dificil - această pagină este concepută pentru a facilita acest proces! Scopul acestei pagini este de a colecta cele mai frecvente obstacole și bariere pe care le întâmpinăm cu toții atunci când încercăm să lucrăm cu Papyrus la început.
Află-te - spune-i și altora! Dacă găsiți o modalitate de a rezolva unele dificultăți, vă rugăm să le adăugați la acest FAQ. Este recomandat să furnizați linkuri și fragmente de cod pentru a vă demonstra deciziile.
Aspecte generale
Scriptul meu se compilează, dar nu funcționează! Cum pot remedia problema?
Înainte de a începe să lucrați cu Papyrus, ar trebui să activați sistemul de înregistrare a erorilor de script. Implicit, această caracteristică este dezactivată - majoritatea utilizatorilor nu au nevoie de aceasta, iar înregistrarea ușoară reduce performanța calculatorului dvs. pentru joc.
Logarea este activată în fișierul ini. Deschideți (sau creați) fișierul SkyrimCustom.ini în dosar. / Documentele mele / Jocuri mele / Skyrim. Adăugați următoarele linii. Dacă oricare dintre ele există deja, asigurați-vă că valorile pentru acești parametri sunt setați la "1", în caz contrar modificați "0" la "1".
- bEnableLogging permite / dezactivează sistemul de scripting;
- bEnableTrace include funcția Debug.Trace și funcțiile asociate,
- bLoadDebugInformation va încărca informații despre numerele de linie în care a apărut eroarea, astfel încât să puteți determina cu ușurință unde a apărut.
Dacă jocul detectează o eroare în scenariu, acesta va afișa o eroare în următorul format:
Funcția 0 este funcția numită mesajul de eroare. Funcția 1 este o funcție numită Funcție 0. Funcție 2 apeluri Funcția 1, etc. Acest lucru vă va ajuta să urmăriți ce ar putea fi cauza oricăror erori pe care vi le-ați raportat.
Dar, poate că nu veți vedea greșeli. Ce ar trebui să fie făcut? Puteți utiliza diferite funcții de depanare, de exemplu Trace și TraceStack, pentru a vedea cum funcționează scriptul, ce variabile și proprietăți are. De exemplu, uitați-vă la această funcție:
După adăugarea instrucțiunilor de urmărire la funcția dvs., puteți examina intrările din jurnal pentru a încerca să determinați exact ce a mers prost. Nu vedeți "Funcția mea a sunat!" În jurnalul dvs.? Aceasta înseamnă că funcția dvs. nu funcționează deloc și este necesar să continuați căutarea cauzei. Veți vedea primul mesaj, dar nu îl vedeți pe cel de-al doilea ("Valoarea răcoroasă este 20!")? Apoi va trebui să aflați de ce valoarea afișată de funcție este diferită de cea așteptată. Și veți observa că în exemplu, într-adevăr, urmărim valoarea variabilei prin simpla "fuziune" cu operatorul "+".
Nu se poate elimina elementul din caracterul playerului
- Focalizarea cu valori negative pentru funcția AddItem rulează numai în consola, dar nu funcționează în scenariile. În locul acestei funcții, utilizați RemoveItem corect.
Scriptul meu nu se compilează și nu pot folosi Editor ID!
Pluginul meu funcționează pentru mine și nu funcționează pentru ceilalți!
Sună ca o problemă complexă. Să o considerăm în parte:
- Ați uitat să atașați pluginurile și / sau texturile necesare? Este puțin probabil ca texturile să provoace prăbușirea jocului, dar absența lor va afecta aspectul (de exemplu, obiectele vor fi roz sau purpuriu). Mesele pierdute (ochiuri) pot provoca anomalii grafice și chiar prăbușirea jocului. Asigurați-vă că elementele grafice au căi relative, mai degrabă decât absolute, altfel nu vor fi încărcate în mod normal din foldere ale căror căi sunt diferite de cele specificate de dvs.
- Utilizați scripturi personalizate care extind alte scripturi personalizate? Există o greșeală [1] în ambalatorului .bsa înveliș în cazul în care în cazul în care script-ul părinte personalizat nu este de fapt prezent într-o formă de bază în joc, atunci nu va fi listat în selectorul de fișiere pentru ambalatorului. Soluția este de a crea o plasă falsă care are scriptul părinte atașat sau să o includeți manual în .bsa pe build.
Acest material necesită traducere sau pre-traducere. .
Puteți să-l traduceți. Nu uitați să adăugați o linie
>> în materialele pe care lucrați, pentru a nu crea un conflict de editare.
Vă rugăm să eliminați șablonul acestui mesaj atunci când materialul este citit.
Crearea obiectelor
Nu pot crea un obiect nou
- Problemă: Nu pot crea un obiect nou.
- Explicație: Papirusul nu acceptă instanțierea obiectelor din script; noul cuvânt cheie funcționează doar pentru matrice, nu pentru obiecte (spre deosebire de Java, de exemplu), iar constructorii nu par să funcționeze.
- Soluție: Pentru o soluție, ați putea încerca să aruncați o ObjectReference PlaceAtMe ca obiect dorit. Desigur, obiectul dvs. trebuie să extindă ObjectReference pentru ca aceasta să funcționeze.
Nu se poate arunca un obiect ca copil
- Problema: Nu pot să arunc un obiect ca copil. De exemplu, distribuirea unei ObjectReference ca TestReference atunci când TestReference extinde ObjectReference.
- Explicație: Castingul va funcționa numai dacă referința a fost atașată. De exemplu, obiectul de bază TestReference trebuie să aibă script-ul TestReference atașat în formă fereastra de editare pentru ca acesta să fie de la ObjectReference la care se poate turna TestReference.
- Soluție: Utilizați editorul și atașați scriptul la obiectul pe care îl jucați. De exemplu, în cazul în care TestReference ar trebui să se refere la o carte, deschide cartea pe care doriți să arunce în fereastra de editare, secțiunea script-uri Du-te, și atașați script-ul TestReference de acolo.