[Notepad++] Poten. problemy z parsowaniem skryptów wynikające z EoL 1970 0

O temacie

Autor Czudak

Zaczęty 13.02.2019 roku

Wyświetleń 1970

Odpowiedzi 0

Czudak

Czudak

Użytkownicy
posty141
Propsy60
ProfesjaSkrypter
  • Użytkownicy


Jestem pewien, że wielu modderów doświadczyło problemów z parsowaniem skryptów, gdzie skrypt technicznie był poprawny, ale mimo tego i gra, i Sourcer negowały wysiłki upierdliwym "syntax error/expected ;". Szczególnie często występującym jest to zjawisko przy złożonych funkcjach if/else if, zwłaszcza jeśli zawierają dużo tekstu albo dialogów.

Istotnym problemem jest różnica w kodowaniu zapisanych bajtów o "końcu linii" (dla uproszczenia umownie nazwiemy tak pojedyncze naciśnięcie klawisza ENTER), a gdzie stosowane są trzy formaty:

- CR (Carriage Return) znany jeszcze z czasów maszyn do pisania, czy Commodore (oraz wcześniejszych maszyn Macintosh/Mac od Apple'a)
- LF (Line Feed) to "nowocześniejszy" sposób zapisu (głównym środowiskiem są tutaj maszyny Unix i jego pochodne, czyli Linux i późniejsze Mac OSX)
- CRLF, czyli "mieszany", zwany też EoL (End of Line), ukierunkowany na systemy Windows (czyli na zdecydowaną większość sprzętu na świecie, nie licząc urządzeń mobilnych)

CR i LF to normalne, pojedyncze znaki, które można wklepać z klawiatury, odpowiednio dla ASCII i Unicode, podczas gdy CRLF/EoL to praktycznie dwa znaki z repertuaru ASCII. Można też przyjąć podział na:

- CR = \r
- LF = \n
- CRLF = \r\n

Należy zaznaczyć, iż pomimo dzisiejszej wszechwładzy CRLF na świecie, wszystkie trzy sposoby są wykorzystywane do dziś. Napisałbym coś więcej o ich historii, ale na dziś już wystarczy dziejowych wątków. Może kiedyś jeszcze coś tu dopiszę.



Najważniejszą dla nas informacją jest to, że EoL w plikach skryptów Gothica i Gothica II są zapisane w formacie Unixowym (czyli \n), a przynajmniej w tej wersji od CD Projekt/GoG. Ci co wykorzystują GothicSourcera lub chociażby Worda od Microsoftu do edycji skryptów, operują dwoma różnymi formatami zapisu końca linii, gdzie każde naciśnięcie klawisza ENTER może doprowadzić do niepotrzebnie podniesionego ciśnienia.

Najprostszym rozwiązaniem jest po prostu hurtowe przekształcenie tychże plików pod tym względem, aby uniknąć kłopotów tej natury w przyszłości. Poniżej pokażę wam jak to zrobić za pomocą Notepad++; jeśli masz program, który wykorzystuje Scintillę do edycji kodu/tekstu, poniższy poradnik ma to samo zastosowanie, bo wykorzystuje te same polecenia. Dobra, pora na konkrety:

0. Zrób kopię zapasową plików. To punkt obowiązkowy.

1. Zainstaluj Notepad++ jeśli jeszcze tego nie zrobiłeś (do pobrania tutaj; obecna wersja to v7.6.3, ale wcześniejsze też dadzą radę, jeśli z jakiegoś powodu musisz ich użyć, a to samo dotyczy wersji późniejszych; bez znaczenia czy to wersja 32- czy 64-bitowa) albo otwórz swój edytor kodu/tekstu ze Scintillą.

2. Wciśnij CTRL + SHIFT + F ("Szukaj w plikach").

3. Zmień "Tryb szukania" na "Wyrażenia regularne" (lewy dolny róg).

4. W "Katalog" wybierz folder ze skryptami.

5. W "Szukany tekst:" wpisz "(?<!\r)\n" (dokładnie tak, bez cudzysłowy na początku i końcu całej zbitki).

6. Pod "Zamień na:" dopisz "\r\n" (znów bez cudzysłowy).

7. Upewnij się, że "Flitry:" są ustawione na "*.d" (pomiń cudzysłowy).

7. Kliknij "Zamień w plikach" (nie pomyl ze "Znajdź wszystkie", które jest powyżej tego co masz kliknąć), potwierdź i poczekaj aż skończy.



Powyższa receptura komputerowa do każdego samotnego \n doda przed nim \r, transformując zapis Unixowy w Windowsowy. Potem już możesz bez obaw uderzać w ENTER w GothicSourcerze, czy Wordzie, unikając błędów składni.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry