MOD - Nowe technologie

Gotowe kody SAIL'a, informacje na temat moddingu, itd.

Moderator: zoNE

Post Reply
User avatar
zoNE
The Great Uniter & Site Administrator
The Great Uniter & Site Administrator
Posts: 2059
Joined: Fri Feb 17, 2006 3:44 pm
Location: Poland
Contact:

MOD - Nowe technologie

Post by zoNE »

Serpent wrote: Fri Jun 17, 2022 12:03 pm Na prośbę Mietka postanowiłem napisać ten krótki poradnik "Jak dodać nowe technologie do moda".

1. W pliku Data/GameInit/technologies.txt dodaj wpis dla nowej technologii, przykład:

Code: Select all

      TECHNOLOGY  82
      NAME "Basic tools"
      NATIONS 1 1 1
      REQUIRES 0
      LAB  9 
      TIME 40 
2. Kopiujemy foldery Data oraz Interface ze swojego moda do głównego folderu gry.
Image

3. W folderze Interface musi znajdować się plik CommButtons.dat który można wypakować z jednego z archiwów .OWP.

4. Odpalamy program OWCommPanelButtons.
Image

5. Przechodzimy do zakładki Buttons i wypełniamy formularz dla nowego przycisku:
Image

Name: ID tekstowe guzika
TechReq: Wymagana technologia (ID z pliku technologies.txt, gdy 0 wówczas nie jest wymagana żadna technologia)
LangReqId: ID opisu wymagań (ID linijki z pliku LangXXX.wri w Texts)
LabTech: ID technologii z pliku technologies.txt
LangID: ID nazwy technologii (ID linijki z pliku LangXXX.wri w Texts)
Command: ustawiamy na Custom Research Command
Command Str: wpisujemy numer technologii z technologies.txt
Next page: zostawiamy jako NONE

6. Przechodzimy do zakładki Pages i dodajemy guzik w odpowiednim miejscu (w dowolnej zakładce).
Image

7. Przenosimy plik CommButtons.dat do folderu Interface w naszym modzie.

W tym momencie, mamy już nową technologię lecz będzie nam brakować kilku ważnych detali.

Po pierwsze, proponuje dodać brakujące opisy dla dodanej technologii w pliku LangPOL.wri (ewentualnie też w LangENG.wri jeżeli planujemy angielskie napisy).

Przykład z SoS'a:

Code: Select all

6900=[|Z] Zbadaj Materiały popromienne. ~Umożliwia budowę bomb biologicznych.
6901=Wymaga znajomości Skażenie syberytu i Implozja syberytu
6902=[|Z] Zbadaj Artylerię. ~Umożliwia budowę artylerii.
6903=Wymaga znajomości Zaawansowanej metalurgii
6904=[|A] Zbadaj Podstawowe narzędzia. ~Umożliwia dalsze badania nad narzędziami.
6905=Wymaga znajomości Podstawowych narzędzi.
6906=[|S] Zbadaj Pojemniki. ~Umożliwia budowę komór transportowych.
6907=Wymaga znajomości Pojemników.
6908=[|Z] Zbadaj podwozie gąsienicowe. ~Umożliwia budowę rozbudowy gąsienicowej.
6909=Wymaga znajomości Gąsienic.
6910=[|C] Zbadaj Dźwig. ~Umożliwia budowę dźwigu.
6911=Wymaga znajomości Dźwigu.
6912=[|B] Zbadaj Buldożer. ~Umożliwia budowę buldożera.
6913=Wymaga znajomości Buldożera.
6914=[|E] Zbadaj Poduszkowiec. ~Umożliwia budowę poduszkowców.
6915=Wymaga znajomości Poduszkowców.
Drugim brakującym elementem będzie brak miniaturki lub błędna miniaturka podczas badań. Można to zrobić za pomocą krótkiego skryptu lua. Poniżej wklejam kod z SoS'a który odpowiada za obsługę miniaturek badań, można go dostosować do własnych potrzeb.

Code: Select all

-- lua
IT_LR_Artillery = 80;
IT_LR_RadMat = 81;
IT_LR_NonCombat = 82;
IT_LR_Cargo = 83;
IT_LR_Track = 84;
IT_LR_Crane = 85;
IT_LR_Bulldozer = 86;
IT_LR_Hovercraft = 87;

-- buttons.txt
SOS_TECH = {
	{
		TECH = IT_LR_Artillery,
		BUTTON = 68,
	},
	{
		TECH = IT_LR_RadMat,
		BUTTON = 56
	},
    {
        TECH = IT_LR_NonCombat,
        BUTTON = 42
    },
    {
        TECH = IT_LR_Cargo,
        BUTTON = 28
    },
    {
        TECH = IT_LR_Track,
        BUTTON = 27
    },
    {
        TECH = IT_LR_Crane,
        BUTTON = 72
    },
    {
        TECH = IT_LR_Bulldozer,
        BUTTON = 170
    },
    {
        TECH = IT_LR_Hovercraft,
        BUTTON = 173
    }
}

function GetLabQueueIcon(ID)
    if (ID <= -1) then
        return getIconTypeIndex(BudLab2IT(-ID));
    elseif (ID >= 80) then
    	return getCustomIconTypeIndex(ID);
    else
        return getIconTypeIndex(_Tech2ITTable[ID]);
    end;
end;

function getCustomIconTypeIndex(TECH)
    for i = 1, #SOS_TECH do
    	if (SOS_TECH[i].TECH == TECH) then
    		return SOS_TECH[i].BUTTON;
    	end;
    end;

    return -1;
end;
Na koniec chciałbym wspomnieć że istnieje opcja dodawania własnych grafik przycisków, aby to osiągnąć należy zmodyfikować pliki buttons.png oraz buttons small.png w następujący sposób:

buttons.png (doklejamy 3 kolumnę przycisków po prawej)
Image

buttons small.png (doklejamy przyciski na dole)
Image

W razie problemów zapraszam do zaglądnięcia w pliki SoS'a, ewentualnie do pytań w tym temacie.

Pozdro :amhello:

Author: Serpent
Topic: viewtopic.php?f=42&t=6469
Post Reply