Action6
en
EN
pl
PL

nfo

Contents

Wprowadzenie

Działanie 6 pozwala modyfikować zawartość następującego 'sprite'. Wykorzystuje wartości parametrów grf i zapisuje je w danych następnego 'sprite'.

Ta akcja jest przetwarzana tylko raz podczas inicjowania pliku .grf i jest ignorowana podczas kolejnych aktywacji za każdym razem, gdy gra jest uruchamiana lub ładowana.  Dlatego, aby warunkowo pominąć tę akcję, musisz użyć akcji 9, a nie akcji 7.

Od wersji TTDPatch 2.0.1 alfa 51 nie jest to już prawdą, działanie 6 zostanie zastosowane zarówno podczas inicjalizacji, jak i aktywacji. Możesz więc użyć akcji 7 lub 9, aby ją pominąć, w zależności od tego, co jest odpowiednie.

Format

Dane wyglądają następująco:

<sprite-number> * <Length> 06 (<param-num> <param-size> <offset>){n} FF
Element Rozmiar Opis
<sprite-number> dec Sekwencyjny numer 'sprite'
<length> dec Łączna liczba bajtów użytych w tej akcji
06 B Definiuje action 06
<param-num> B Który parametr GRF należy zastosować
<param-size> B Ile bajtów do zastąpienia
<offset> B* Który bajt zastąpić
<FF> B Oznacza koniec listy

Triplet <param-num> <param-size> <offset> można powtarzać tak często, jak to pożądane.

Opis

Sprite-number

To tylko numer, na którym jesteś.

Length

Policz liczbę bajtów w tej akcji.

param-num

Jest to numer parametru z parametrów newgrf(w).cfg, który ma zastosowanie do następujących danych duszka. Może to oczywiście wynikać również z obliczeń ActionD. Pierwszy parametr ma numer 00.

Modyfikacja nie jest przeprowadzana, jeśli parametr nie został jeszcze zdefiniowany.

param-size

Ile bajtów parametru użyć. Jeśli jest to więcej niż 4 (rozmiar parametru), używane są bajty następującego parametru. W takim przypadku należy zdefiniować wszystkie wymagane parametry, w przeciwnym razie nie zostaną wykonane żadne modyfikacje.

Jeśli ta wartość ma ustawiony bit 7, parametr jest added do wartości docelowej, zamiast po prostu zapisywany. Jest to przydatne szczególnie przy alokacji duszków za pomocą GRF Resource Management, ponieważ zwykle alokuje się więcej niż jedną duszkę, ale parametr może przechowywać tylko jedną liczbę, pierwsza przydzielona duszka.  Tak więc, aby poprawnie zastosować kilka liczb ikonek (tak, że działa na kilka aktywacji, nie tylko na pierwszą), użyj algorytmu takiego jak poniżej:

Przykład poniżej.

offset

Liczba bajtów w poniższym ikonce do zmodyfikowania. Liczenie zaczyna się od 0 w bajcie akcji i może wzrosnąć do długości duszka. Nie ma możliwości dodania danych na końcu duszka.

Od Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 51)2.5 , jest to bajt rozszerzony (patrz GRFActionsDetailed).

Przykład

To jest przykład zastosowania liczb sprite zwróconych przez GRF Resource Management do akcji 0:

// First, set param 1 (<j>) to the old value of param 0 (<i>)

  -1 * 5        0D 01 00 00 00

// Then, use the GRF Resource Management to reserve 3 sprites

  -1 * 9        0D 00 00 00 FE FF 08 03 00

// Now calculate <j> = <i> - <j>

  -1 * 5        0D 01 02 00 01

// So <j> = new <i> - old <i>

// Use Action 6 to add <j> to the sprite numbers in the sample sprite layout

  -1 * 11       06 01 84 07 01 84 11 01 84 1B FF

  -1 * 32       00 04 01 01 00 09

                       01

                       00 00 00 00     // first allocated sprite

                       00 00 00  10 05 02  01 00 00 00 // second allocated sprite

                       00 0B 00  10 05 02  02 00 00 00 // third

                       80