ActionD
en
EN
pl
PL

nfo

Contents

Wprowadzenie

Przypisz parametry i oblicz wyniki.

Działanie D pozwala ustawić wartość parametru grf (tj. Te, które zwykle ustawia się jako opcje w pliku newgrf(w).cfg ), a także wykonać na nich matematykę.

Syntax

Dane wyglądają następująco:

<Sprite-number> * <Length> 0D <target> <operation> <source1> <source2> [<data>]
Element Rozmiar Opis
<Sprite-number> dec Sekwencyjny numer 'sprite'
<length> dec Łączna liczba bajtów użytych w tej akcji
0D B Definiuje action 0D
<target> B Parametr docelowy
<operation> B Obliczenia do przeprowadzenia
<source1> B Pierwszy argument
<source2> B Drugi argument
<data> D Wartość do wykorzystania jako źródło, jeśli nie parametr

Opis

target, source1, source2

Te bajty określają parametr docelowy i parametry źródłowe. Mogą to być albo liczby parametrów grf, albo mogą być global variable.

Jeśli źródło1 lub źródło2 to FF, zamiast wartości parametru używana jest wartość z <danych>.

Jeśli <source2> to FE, to działanie D wykona jeden z następujących dostępów specjalnych zmiennych. W takim przypadku <operation> musi być przypisaniem, a <data> jest argumentem dostępu do danych, a nie wartością źródłową.

operation

Operacja przeprowadzania argumentów źródłowych. Ten bajt ma sekwencję zmiany znaczenia dla każdej z możliwych wartości wymienionych poniżej. Zobacz the discussion of escape sequences w celu uzyskania dalszych informacji na temat sekwencji specjalnych. Wynik tego obliczenia zostanie zapisany w parametrze docelowym.

Operacja Escape Version Nazwa Rezultat
00 \D= Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 'Przypisanie' target = source1
01 \D+ Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 'Dodanie' target = source1 + source2
02 \D- Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 'Odejmowanie' target = source1 - source2
03 \Du* Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 'Mnożenie bez znaku' target = source1 * source2, przy czym oba 'źródła' są uważane za 'unsigned'
04 \D* Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 'ze znakiem mnożenie' target = source1 * source2, z obydwoma 'źródłami' uważanymi za signed'
05 \Du<< Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch Unsigned bit shift target = source1 << source2 if source2>0, or target = source1 >> abs(source2) if source2 < 0. source1 jest uważane za 'unsigned'
06 \D<< Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 'ze znakiem przesunięcie bitu' tak samo jak 05, ale source1 jest uważane za 'signed')
07 \D& Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 48)2.5 Bitowo AND target = source1 AND source2
08 \D Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 48)2.5 Bitowo OR target = source1 OR source2
09 \Du/ Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 59)2.5 'Unsigned division' target = source1 / source2
0A \D/ Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 59)2.5 'Signed division' target = source1 / source2
0B \Du% Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 59)2.5 Unsigned modulo target = source1 % source2
0C \D% Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 59)2.5 'Signed modulo' target = source1 % source2

Możesz dodać 80 do numeru operacji, aby zastosować go tylko wtedy, gdy cel nie został jeszcze zdefiniowany. W tym względzie przyjmuje się, że parametr jest definiowany, jeśli ma zastosowanie którykolwiek z poniższych warunków:

Jeśli na przykład parametry 0 i 1 są ustawione w pliku newgrf(w).cfg, a akcja D ustawia parametr 4, wówczas parametry 2 i 3 zostają automatycznie zdefiniowane i otrzymują wartość zero.

Notes

Możesz zrobić bitowe NIE dla <param>, obliczając "-1 - <param>" , tj. operation=02, source1=FF, source2=param, data=FF FF FF FF .

Operand docelowy może również odnosić się do zmiennych specjalnych z działania 7, patrz poniżej lista zmiennych, do których można zapisać.

Ponieważ łatka musi ponownie przydzielić pamięć dla całej listy parametrów za każdym razem, gdy dodawany jest nowy parametr, należy najpierw ustawić parametr o najwyższym numerze (przynajmniej w miarę możliwości), aby cała pamięć mogła zostać przydzielona od razu.

Pamiętaj, że parametry nigdy nie są resetowane po uruchomieniu gry, dlatego nie wolno modyfikować parametrów newgrf(w).cfg przy jakimkolwiek nieodwracalnym działaniu. Można na przykład dodać wartość do parametru tylko wtedy, gdy ta sama wartość zostanie później odjęta, aby utrzymać ten sam parametr podczas ładowania lub uruchamiania kilku gier.

Te zmienne globalne, dla których można zapisać, są wskazane w osobnej kolumnie w global variable list . Zauważ, że akcja D obsługuje tylko zapisywanie wartości dword. Podany tam rozmiar służy jedynie do przekazania, ile tej wartości dworu zostanie wykorzystane w grze, tj. Jaka jest maksymalna wartość.

Przykład

Something to go here