Kerbal Space Program Forum | Polska Społeczność Gry
Tutoriale => Gotowe poradniki => Wątek zaczęty przez: angorek w Pią, 03 Sty 2014, 21:00:41
-
Witam
Odpowiadając na post w innym temacie wpadłem na pomysł napisania poradnika jako że już trochę zaczynam tą grę rozgryzać od strony mechaniki.
A więc aby zrozumieć o co kaman, należy wejść do folderu gdzie mamy grę zainstalowaną i tam będzie folder GameData. Do niego pakujemy wszystkie mody, ale jest też w nim folder Squad a w nim:
- Flags - flagi
- Parts - części
- FX - płomienie
- Props - najprawdopodbniej wskaźniki np. prędkościomierz
- Spaces - wnętrza pojazdów
- Resources - folder zasobów a w nim :
-Science defs - określa za co i ile dostajemy science, nie tykać bo psuje całą zabawę z kariery.
- ResourcesGeneric - tu zmieniamy i dodajemy własne surowce myślę że jest to tak proste że nie muszę tłumaczyć. Gdy chcemy dodać nowy surowiec po prostu kopiujemy jeden z nich i wprowadzamy swoją nazwę i ew. zmieniamy gęstość, oczywiście należy go potem wprowadzić również do zbiorników, silników itp. ale o tym później.
Podczas ładowania gry widzimy taki paseczek który ładuje się dłuższą chwilę i przelatują w nim nazwy plików - gra ładuje się do ramu a że jest tylko 32 bitowa to może obsłużyć maks 3,5GB, trochę mało. Nie raz ściągnie się mod który ma 500 części a używamy z 3-4 a reszta zawala ram, ścina grę i wkurza w hangarze bo trzeba szukać interesującego nas elementu wśród śmieci. Aby temu zaradzić decydujemy co zostawiamy a co wywalamy, w folderze gamedata znajdujemy interesujący nas mod, w nim elementy do usunięcia i po prostu je wywalamy.Nie spowoduje to żadnych błędów z grą a usprawni jej działanie. (statki na orbicie z usuniętym elementem, przepadną przy kolejnym ładowaniu save`a). Każda część ma swój folder, a w nim pliki tekstur, siatki i plik cfg, upewnij się że nie wywalasz całej kategorii ;)
WSTĘP DO CFG
Teraz trochę o tunningu.
Wchodzimy do folderu parts, w nim jest parę folderów odpowiadających typowi części, wchodzimy w Command, otwieramy Mk1-2Pod i widzimy 5 plików. Pliki model są nieedytowalne przynajmniej dopóki ktoś nie rozgryzie jak je odkodować, natomiast cfg jest i otwieramy go notatnikiem.
Widzimy dużo różnych dziwnych angielskich słów i cyferek.
Aby je ogarnąć trzeba zrozumieć jak taki plik działa. Wyróżniamy moduł MODULE i zasób RESOURCE oraz wartości. Plik można w zasadzie podzielić na 2 części. Pierwsza cześć zawiera zwykle to samo, czyli wypisane wartości takie jak masa, nazwa, opis itp. i są to wartości stałe, a moduły i zasoby są zmiennymi.
Dodawanie stałych jest proste, wystarczy wpisać np. mass = 10 i program już wie że pojazd waży 10 ton.
W zmiennych już tak łatwo nie jest. Każda zmienna zawarta jest w klamrze :
{
zmienna
}
Klamry rozmiar liter i spacja przed oraz po znaku = są bardzo ważne, nieraz brak jednej klamry potrafi crashować grę !
Poprzedza się ją komendą mówiącą czy jest to moduł czy zasób np.
MODULE
{
zmienna
}
Na przykład chcąc dodać do modelu sterowanie, dodajemy moduł który nazywa się ModuleCommand i robimy to tak :
MODULE
{
name - ModuleCommand
}
W tym momencie pojazdem można sterować. Ale można też wprowadzić warunki i parametry np.
MODULE
{
name = ModuleCommand
minimumCrew = 1
RESOURCE
{
name = ElectricCharge
rate = 1
}
}
W tym momencie sterować można jedynie gdy wewnątrz znajduje się minimum 1 kerbal, sterowanie pobiera 1 ładunek elektryczny na sekundę, a po wyczerpaniu baterii przestaje działać.
Przykład dla zasobu:
RESOURCE
{
name = LiquidFuel
amount = 100
maxAmount = 100
Teraz w części możemy zmieścić 100 jednostek paliwa, i na starcie bak jest pełny. Dalsza część powinna to nieco rozjaśnić ;)
KONSTRUKCJA CFG
(dodając // na początku powodujemy że komputer ignoruje daną linijkę )
// --- general parameters ---
name = Mark1-2Pod
module = Part
author = C. Jenkins
name - nazwa
module - rodzaj pliku zwykle nie zmieniamy
author autor
// --- asset parameters ---
mesh = model.mu
scale = 1
rescaleFactor = 1
model.mu - siatka, czyli docelowo plik siatki modelu .mu
rescaleFactor = 1 - skala modelu, zmieniając zmieniamy faktyczny rozmiar elementu
scale = 1 - skala punktów mocowania, zmieniamy tylko po modyfikacji rescalefactor gdy punkty mocowania nie pokrywają się z modelem
// --- node definitions --- -
// definition format is Position X, Position Y, Position Z, Up X, Up Y, Up Z
node_stack_bottom = 0.0, -0.47924, 0.0, 0.0, 1.0, 0.0, 2
node_stack_top = 0.0, 1.19319, 0.0, 0.0, 1.0, 0.0, 1
Określa pozycję punktów mocowania
// --- editor parameters ---
TechRequired = specializedControl
entryCost = 7600
cost = 3800
category = Pods
subcategory = 0
title = Mk1-2 Command Pod
manufacturer = Kerlington Model Rockets and Paper Products Inc. - Producent
description = This modern cockpit is designed to be fully re-useable. Its spacious cabin can hold a maximum of 3 crew.
// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,0,1,1,0
TechRequired - Kategoria na drzewku tech w karierze
entryCost - Koszt wybadania
cost - Koszt kupna, póki co jeszcze hajsu w grze nie ma
category - Kategoria w hangarze
subcategory - Póki co wpisujemy 0, brak funkcji
title - tytuł w grze
manufacturer - Producent
description - Opis
// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,0,1,1,0
Zasady mocowania, W górnej linijce wypisane są typy a w dolnej 1-tak 0-nie
-Stack -czy pozwalamy elementowi być umocowanym na innych w "stosie"
-Allow Stack - czy pozwalay innym elementom być mocowanym na naszym modelu
-srfAttach - czy element może być mocowany na powierzchni innego
-AllowsrfAttach - analogicznie do 2
-AllowCollision - czy element może być zamocowany jeśli on lub inny element przecinają jakąś część
// --- standard part parameters ---
mass = 4
dragModelType = default
maximum_drag = 0.20
minimum_drag = 0.15
angularDrag = 2
crashTolerance = 45
maxTemp = 3400
Mass - Masa
dragModelType - Model symulacji oporu, zostawiamy
maximum_drag - maksymalny opór aerodynamiczny
minimum_drag - minimalny opór aerodynamiczny
angularDrag - opór kątowy ??
crashTolerance - wytrzymałość na uderzenie w m/s
maxTemp - maksymalna temperatura, po przekroczeniu wybucha
vesselType = Ship
vesselType - typ statku, z grubsza określa ikonkę w mapie orbity
// --- internal setup ---
CrewCapacity = 3
CrewCapacity = 3 - ilość załogi, niezależna od wnętrza, choć we wnętrzu będzie ich jedynie tyle ile określił squad, dodatkowych można wyciągnąć przez kliknięcie na właz
{
name = PodCockpit
}
name - tu nazwa pliku wnętrza
MODULE
name = ModuleCommand
minimumCrew = 1
MODULE - moduł, określa można powiedzieć nową zmienną (funkcję\zadanie)
name - nazwa modułu, określa jaki moduł ma być aktywowany, tu ModuleCommand czyli moduł umożliwiający sterowanie.
minimumCrew - minimalna ilość kerbali do działania modułu, działa tylko z ModuleCommand
RESOURCE
{
name = ElectricCharge
amount = 150
maxAmount = 150
}
RESOURCE - określa zasób, jedna zakładka na jeden zasób
name = ElectricCharge -typ zasobu
amount = 150 - ilość początkowa na starcie misji
maxAmount = 150 - ilość maksymalna
MODULE
{
name = ModuleSAS
}
name - dodaje funkcję SAS
MODULE
{
name = ModuleReactionWheel
PitchTorque = 15
YawTorque = 15
RollTorque = 15
RESOURCE
{
name = ElectricCharge
rate = 1.2
}
name = ModuleReactionWheel - dodaje nawigację żyroskopową czyli ten system który obraca statki kosztem prądu
PitchTorque = 15 - moment obrotowy steru wysokości
YawTorque = 15 - steru kierunku
RollTorque = 15 - i obrotu
name = ElectricCharge - zasób potrzebny do pracy
rate = 1.2 - ilość pobierana na 1s
name = ModuleScienceExperiment
experimentID = crewReport
experimentActionName = Crew Report
resetActionName = Discard Crew Report
reviewActionName = Review Report
useStaging = False
useActionGroups = True
hideUIwhenUnavailable = True
rerunnable = True
xmitDataScalar = 1.0
name = ModuleScienceExperiment -moduł eksperymentu
experimentID = crewReport - typ raport załogi
experimentActionName = Crew Report - akcja wyświetlana
resetActionName = Discard Crew Report - akcja resetująca (wyrzucenie raportu
reviewActionName = Review Report - akcja przeglądu ( przegląd raportu)
useStaging = False - używanie stopniowania (spacja) chyba chodzi o to że nic nie robi po wciśnięciu spacji
useActionGroups = True - grupy akcji czyli np. raport załogi
rerunnable = True - można użyć wielokrotnie
xmitDataScalar = 1.0 - bodaj mnożnik science
name = ModuleScienceContainer
reviewActionName = Review Stored Data
storeActionName = Store Experiments
evaOnlyStorage = True
storageRange = 2.0
ModuleScienceContainer - moduł wprowadzający można powiedzieć zbiornik science, określa ile eksperymentów można przechowywać
reviewActionName - nazwa akcji odczytania eksp.
storeActionName - nazwa akcji zapisania eksp.
evaOnlyStorage - przechowywanie tylko przez kerbali EVA
storageRange = 2.0 - ilość
RESOURCE
{
name = MonoPropellant
amount = 30
maxAmount = 30
}
name = MonoPropellant - nazwa zasobu tu, monopropelant
amount - ilość na starcie
maxAmount - ilość maksymalna
Tworząc wpis zaczynamy dużymi MODULE dla czynności lub RESOURCE dla zasobu. Pamiętamy też o znakach { }. Plik należy zakończyć znakiem } przylegającym do lewej krawędzi.
Dobra mam nadzieję że już w miarę coś rozumiecie, teraz pasowało by coś zmienić. Na ten przykład dodam do poda ogniwo paliwowe. W założeniu po kliknięciu na moduł ma być dostępna opcja aktywacji, a ogniwo pobierając paliwo będzie robić prąd. Gotowy wpis wygląda tak :
MODULE
{
name = ModuleGenerator
activateGUIName = Activate Fuel Cell
shutdownGUIName = Shutdown Fuel Cell
isAlwaysActive = false
Efficency = 95
requiresAllinputs = true
INPUT_RESOURCE
{
name = Oxidizer
rate = 0.2
}
INPUT_RESOURCE
{
name = Fuel
rate = 0.1
}
OUTPUT_RESOURCE
{
name = ElectricCharge
rate = 0.2
}
Słowem wyjaśnienia :
name = ModuleGenerator - nazwa modułu zawartego w grze, tu generator
isAlwaysActive = false - jest zawsze aktywny = fałsz
requiresAllinputs = true - wymaga wszystkich zasobów wejściowych = tak
resourceThreshold = 0.05 - limit produkowanego zasobu na sekundę
activateGUIName = Activate Fuel Cell - ikona aktywacyjna i jej treść
shutdownGUIName = Shutdown Fuel Cell - ikona dezaktywacyjna
efficiency = 95 - wydajność
INPUT_RESOURCE - zasób wejściowy
{
name = Oxidizer - utleniacz
rate = 1 - ilość 1
}
{
name = LiquidFuel - wacha
rate = 1 - ilość 1
{
OUTPUT_RESOURCE - zasób wyjściowy
{
name = ElectricCharge - prąd
rate = 5 - ilość 5
}
Podsumowując zużywając 1 paliwa i 1 utleniacza otrzymamy 4,75 prądu (efektywność 95%).
Generator można też użyć do stałego dodawania lub odejmowania jakiegoś zasobu dla przykładu wyciąg z generatora RTG :
MODULE
{
name = ModuleGenerator
isAlwaysActive = true
OUTPUT_RESOURCE
{
name = ElectricCharge
rate = 0.75
}
}
Teraz pewnie większość zapyta a skąd ja mam wiedzieć jakie moduły są w grze i co wpisać. A no możecie poczekać do kolejnego posta bo mi już paluchy odpadają, albo tak jak ja, zacząć chodzić po plikach, czytać cfg i wiedząc co dany element robi w grze możemy kopiować różne moduły.
W następnym odcinku postaram się opisać poszczególne typy modułów, wprowadzić do gry nowy zasób w postaci tlenu i CO2, zrobić plik który zaaplikuje zasoby do kilkunastu plików od razu bez zbędnej zabawy, i postaram się stworzyć moduł symulacji oddychania kerbali 8) ( czyt. zamiana O2 na CO2)
Proszę też o komentarze, mówcie co wam się podoba a co nie, i co chcielibyście w następnym poście 8)
Dzięki za uwagę i pozdrawiam.
-
Szybko napisałeś ten poradnik ;D Jak dla mnie wporządku, ładnie opisany plik konfiguracyjny. Tak sobie myśle - czy taka modyfikacja moda nie jest jakoś niezgodna z licencją czy coś? Wkońcu edytujemy cudzą pracę.
-
Szybko napisałeś ten poradnik ;D Jak dla mnie wporządku, ładnie opisany plik konfiguracyjny. Tak sobie myśle - czy taka modyfikacja moda nie jest jakoś niezgodna z licencją czy coś? Wkońcu edytujemy cudzą pracę.
Dzięki ;) Raczej nie ma problemu, niezgodne z licencją byłaby dekompilacja plików modeli lub zmiany w silniku. Ogółem w plikach cfg po całej grze są porozrzucane informacje od squad, co to jest, jak to działa itp. Na przykład otwierając plik cfg choćby mk1 poda na wstępie jest notka od twórców, że plik może być wykorzystywany jako wzór do tworzenia modów i po krótce jest wyjaśnione że np. każde słowo ma swój odpowiednik we wbudowanym module, czyli jak wpiszemy mass, to program odczytuje z jakiejś tam swojej bazy że to ma być masa i wie co ma z tym zrobić, a jak wpiszemy wyraz który nie ma tam odpowiednika zostanie zignorowany.
-
W przypadku orginalnych plików Squad to jeszcze, ale jak w przypadku niezależnych od Squad modów? W sumie to na własny użytek chyba można zmodyfikować, przecież mody nie są płatne.
-
@up
Można zmieniać mody do woli, ale jeśli chcesz opublikować coś takiego, musisz bardzo wyraźnie oznaczyć kto jest autorem.
-
Otóż to, możecie sobie dowolnie przerabiać KSP i ściągnięte mody do póki nie będzie tego publikować jako swoje dzieło, bądź nie daj Boże, próbować na tym zarabiać.
-
Tak też myślałem, dzięki za rozwianie wątpliwości. Poradnik dobry, czekam na drugą część.
-
CZĘŚĆ DRUGA
Teraz przerabiam mod ION crew support plugin (http://kerbalspaceport.com/ioncross-crew-support-plugin/) ;) Miałem w planach zrobienie moda który doda do gry jedzenie, wodę, tlen i dwutlenek węgla, ale niestety po jakiś 5 godzinach prób doszedłem do wniosku że bez zrobienia wtyczki w języku C nie da się tego zrobić, tzn da się ale jest dużo roboty dla każdego modułu i nie wygląda to ładnie.
Dobra zaczynamy, jak już mówiłem chcemy wprowadzić 4 zasoby. Każdy z tego zasobu ma być konsumowany lub wytwarzany przez kerbala, więc jego ilość zależy od ilości zielonych na pokładzie. Wspomniany mod posiada wtyczkę Plugin która to umożliwia. Plugin jest napisany w języku C++ i zapisany w formacie .DLL, a że dla mnie to czarna magia to sobie go pożyczę 8) Mod sam w sobie mi się nie podoba, dodaje tylko tlen i CO2 a to za mało. Po wypakowaniu moda znajdziemy w środku plik ModuleManager.dll który jest bardzo przydatną rzeczą ale omówię go później. Wchodzimy dalej i znajdujemy 4 foldery oraz wspomniany plugin. Parts możemy zostawić jeśli ktoś chce (przerobione niebieskie zbiorniki rcs, mi lagują strasznie), usuwamy wszystko poza folderem plugins.
Wchodzimy do folderu Squad -> Resources, i otwieramy cfg Resources Generic w środku, i dodajemy od siebie 5 zasobów :
RESOURCE_DEFINITION
{
name = Oxygen
density = 0.0004
flowMode = ALL_VESSEL
transfer = PUMP
}
RESOURCE_DEFINITION
{
name = CarbonDioxide
density = 0.0004
flowMode = ALL_VESSEL
transfer = PUMP
}
RESOURCE_DEFINITION
{
name = Water
density = 0.004
flowMode = ALL_VESSEL
transfer = PUMP
}
RESOURCE_DEFINITION
{
name = Food
density = 0.004
flowMode = ALL_VESSEL
transfer = PUMP
}RESOURCE_DEFINITION
{
name = CO2 Filter
density = 0
flowMode = ALL_VESSEL
transfer = PUMP
}
RESOURCE_DEFINITION - Definicja zasobu
name - nazwa
density = 0.004 - gęstość, wpływa na masę, jednostki nie znam, paliwo ma 0.005, musimy ustawiać na oko ;)
flowMode - typ przepływu
ALL_VESSEL - przepływ po całym statku np. monopropelant lub STACK_PRIORITY_SEARCH DO pierwszeństwo do najbliższego elementu "w stosie"
transfer - transfer, PUMP dla pompy NO jeśli transfer wyłączamy.
Ok, tak więc zasoby dodane teraz trzeba je wprowadzić do gry. ( CO2 filter wyjaśnię później )
W modzie idziemy do Plugins -> Plugin Data -> Ion cross crew support.cfg. Plugin wprowadza do gry nowy moduł IonCrewSupport i tu są jego dane.
ION_SUPPORT_KERBAL_RESOURCE
{
name = Oxygen
GUIName = 02
ratePerKerbal = 0.000277778
boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
ION_SUPPORT_KERBAL_RESOURCE - nazwa podmodułu
name - nazwa zasobu
GUIName - nazwa zasobu na pasku stanu w grze
ratePerKerbal - ilość zmiany na 1 kerbala na sekundę, wartość dodatnia odejmuje zasób, wartość ujemna dodaje zasób.
boolCauseDeath - powoduje zgon przy wyczerpaniu/napełnieniu
killRollInterval - czas po jakim następuje zgon po wyczerpaniu się zasobu
killChance - mnożnik dla systemu, zostawiamy
Kopiując kod z góry i podmieniając wartości wprowadzamy do obiegu nowy zasób. Przyjmujemy że kerbal pobiera/wydala na dobę :
Tlen - 1L
Woda - 2L
Jedzenie - 3.5Kg
Dwutlenek węgla - 1.5 L
Godzina ma 3600s, doba ma 24 godziny, 3600x24=86400 tak więc :
O2 - 1L - 0.00001157
Water - 2L - 0.00002314
Food - 3.5 - 0.00003877
CO2 - 1,5L - 0.00001736
Wpisujemy wartości : (tu akurat inne ;) by obliczyć zużycie rate x 3600 i mamy zużycie na 1 godiznę )
ION_SUPPORT_KERBAL_RESOURCE
{
name = Oxygen
GUIName = 02
ratePerKerbal = 0.000277778
boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
ION_SUPPORT_KERBAL_RESOURCE
{
name = CarbonDioxide
GUIName = CO2
ratePerKerbal = -0.000277778
boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
ION_SUPPORT_KERBAL_RESOURCE
{
name = Food
GUIName = Food
ratePerKerbal = 0.00015
boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
ION_SUPPORT_KERBAL_RESOURCE
{
name = Water
GUIName = Water
ratePerKerbal = 0.0001
boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
}
Na dole jest moduł poboru prądu przez statek i CO2 scrubber należy je usunąć.
Dobra mamy wartości, ale nie mamy zasobów w statku, i tu przychodzi z pomocą ModuleManager.dll.
W folderze gamedata tworzymy nowy plik tekstowy. Zaczynamy go od :
@PART[nazwa pliku]
Taka komenda podczas startu gry doda do danego modelu to co wpiszemy poniżej ale zmiana ta nie będzie zapisana w oryginalnym pliku, tak więc jeśli coś spapramy to usuwamy ten plik i wszystko gra a pliki są nienaruszone. Tak więc zacznijmy od Mk1-2Pod. Wpisujemy jego nazwę ZAWARTĄ W CFG czyli Mark1-2Pod a nie nazwę folderu mk1-2Pod. Następnie dodajemy znaczek { i pod nim wprowadzamy wartości pamiętając by zakończyć }.
@PART[Mark1-2Pod]
{
MODULE
{
name = IonModuleCrewSupport
}
To wprowadza do gry moduł symulacji zasobów.
@PART[Mark1-2Pod]
{
MODULE
{
name = IonModuleCrewSupport
}
RESOURCE
{
name = Oxygen
amount = 300
maxAmount = 300
}
RESOURCE
{
name = CarbonDioxide
amount = 0
maxAmount = 18
}
RESOURCE
{
name = Food
amount = 40
maxAmount = 40
}
RESOURCE
{
name = Water
amount = 26
maxAmount = 26
}
}
I już z wprowadzonymi "zbiornikami" Taki plik gwarantuje że model będzie miał to co chcemy a pliki gry pozostaną bezpieczne.
Wcześniej dodałem zasób CO2 Filter i teraz mam zamiar go wykorzystać. Zrobię włączany filtr który pobiera CO2 i prąd, a wyrzuca tlen, jednak jak każdy filtr się zużywa i stąd ten zasób. Generator wygląda tak :
MODULE
{
name = ModuleGenerator
activateGUIName = Activate CO2 Filter
shutdownGUIName = Shutdown CO2 Filter
isAlwaysActive = false
Efficency = 95
requiresAllinputs = true
INPUT_RESOURCE
{
name = CarbonDioxide
rate = 0.2
}
INPUT_RESOURCE
{
name = CO2 Filter
rate = 0.01
}
INPUT_RESOURCE
{
name = ElectricCharge
rate = 0.4
}
OUTPUT_RESOURCE
{
name = Oxygen
rate = 0.07
}
}
Ten moduł tłumaczyłem w 1 poście, wrzucamy 0,4 prądu, 0.1 CO2 i 0.01 Filtra (co ma symulować jego zużycie) i dostajemy 0.07 tlenu ;) Po wszystkim zmieniamy rozszerzenie z txt na cfg, nazwa nie ma znaczenia. W późniejszym czasie postaram się również dodać zanieczyszczenia w postaci śmieci, zanieczyszczonej wody i jej filtra ale to dopiero za jakiś czas 8) Ilość zasobów i prędkość zużycia należy sobie ustawić samemu. Po kliknięciu prawym na pod wyskakuje okienko i mamy podane zużycie na sekundę, godzinę lub dzień, jeśli pisze np. Water Warning ! a wody mamy pełno to znaczy że wartość ubytku jest zbyt mała ale tego błędu nie mogę naprawić, mimo wsyzstko woda wciąż ubywa a w timewarp wszystko wraca do normy. ( wina DLL )
Teraz za symulujmy zużycie prądu przez pojazd (lampy, wentylatory itp. )
W utworzonym wcześniej cfg do managera dodajemy linijkę :
@MODULE[ModuleCommand]
Normalny wpis powoduje dodanie np. resources na spodzie pliku cfg poda, a wpisując tą linijkę "wcinamy " się w linijkę definiującą moduł sterujący który wygląda tak :
....
{
name = ModuleCommand
minimumCrew=1
}
....
Teraz dopisujemy zużycie prądu :
@MODULE[ModuleCommand]
{
RESOURCE
{
name = ElectricCharge
rate = 0.002
}
}
Gdybyśmy to robili w pliku poda wyglądało by to tak :
...
{
name = ModuleCommand
minimumCrew= 1
RESOURCE
{
name = ElectricCharge
rate = 0.002
}
}
...
Po zakończeniu modyfikacji czegokolwiek należy się upewnić że wszystko jest w należytym porządku, liczy się wielkość liter, sprawdzamy czy wszystkie { } są i są w odpowiednią stronę, oraz patrzymy czy gdzieś literki nie zgubiliśmy. Nieraz jedna literka decyduje czy gra w ogóle odpali czy nie ;)
Wprowadziłem też małą poprawkę w generatorze z 1 postu.
Sory za jakiekolwiek błędy, robiłem to przez 8 godzin, jutro jak już się porządnie wyśpię rzucę okiem czy aby na pewno wszystko gra ;) Na kolejny odcinek planuję dodać śmieci, oraz zbiorniki tlenu, wody, żywności i generatory dla stacji kosmicznych :)
Pozdrawiam
-
Co do pierwszej części, mam zastrzeżenia dot. opisu modułów. Spory chaos się wkradł. Proponuje lepiej opisać parametr MODULE.. Proponuje mocno zaznaczyć, że nazwa to określenie którego z modułów w grze będzie używać część. i dalsze zmienne są parametrami dla danego modułu. I tyle zastrzeżeń. Ogólnie bardzo dobrze napisany poradnik.
-
Co do pierwszej części, mam zastrzeżenia dot. opisu modułów. Spory chaos się wkradł. Proponuje lepiej opisać parametr MODULE.. Proponuje mocno zaznaczyć, że nazwa to określenie którego z modułów w grze będzie używać część. i dalsze zmienne są parametrami dla danego modułu. I tyle zastrzeżeń. Ogólnie bardzo dobrze napisany poradnik.
Dzięki :D Poprawiłem pierwszy post, mam nadzieję że jest już jaśniej 8)
-
Dobra za namową paru użytkowników wracam do pisania.
Porzucam póki co wszelkie wątki utrzymywania życia itp. a skupię się na najprostszych czynnościach np. zmianie ilości paliwa itp.
No to zaczynamy !
POŁOŻENIE CZĘŚCI
Wszystkie części oryginalne są w folderze KSP/GameData/Squad/Parts/
Po dotarciu do tej lokalizacji zobaczymy parę folderów :
Aero - cześć aerodynamiczne skrzydła itp.
Command - części dowodzenia, kapsuły, komputery, moduły asas..
Electrical - chyba nie muszę tłumaczyć
Engine - silniki
FuelTank - wszelkie zbiorniki
Science - moduły badawcze
Structural - belki, kratownice itp.
Wheel - koła
Utility - cała reszta, solary, rcs, anteny, doki, sensory itd..
Nazwa folderów nie zawsze mówi nam co jest w środku np. Fuel Tank 1-3, wtedy wchodzimy w folder, otwieramy plik cfg, i pod linijką title (gdzieś pośrodku) będzie nazwa modelu. Jeśli znajdziemy to czego szukaliśmy przystępujemy do edycji.
ZANIM ZACZNIESZ COŚ MODYFIKOWAĆ...
Sposoby modyfikacji są dwa, albo dodajemy do gry nowy element albo modyfikujemy istniejący. Teraz opiszę procedurę drugą, jeśli chcesz zmienić oryginalny zbiornik pomiń ten punkt.
A więc otwieramy plik CFG zaznaczamy wszystko i kopiujemy.
Następnie na samym dole pliku pod znakiem } robimy jedną linijkę przerwy i wpisujemy słowo PART. Pod nim wklejamy skopiowaną zawartość. Będzie to wyglądać mniej więcej tak :
zawartość oryginalna...
}
PART
{
skopiowana zawartość oryginalna
}
Teraz będziemy operować na skopiowanym fragmencie. znajdujemy linijkę name, modyfikujemy ją dowolnie można dodać jakąś literkę czy cyferkę byle by w żadnym innym pliku nie było takiej samej.
Następnie modyfikujemy linijkę Title, jest to nazwa wyświetlana w hangarze, treść dowolna byle nam się nie myliło z oryginalnym ;)
ZMIANA POJEMNOŚCI ZBIORNIKÓW
Znajdujemy na dole sekcję RESOURCE.
RESOURCE
{
name = LiquidFuel
amount = 360
maxAmount = 360
}
RESOURCE
{
name = Oxidizer
amount = 440
maxAmount = 440
}
W linijce name mamy nazwę czynnika przechowywanego. Pełną listę można znaleźć w ..Squad/Resources/Resources.cfg Zwracamy uwagę na wielkość liter !
Amount to liczba początkowa, ile danej substancji mamy w momencie startu. (wyjazdu z hangaru)
Max amount to po prostu pojemność. Można to dowolnie zmieniać, wielkość fizyczna zbiornika nie ma tu nic do rzeczy.
Aby dodać nowy czynnik/zasób kopiujemy :
RESOURCE
{
name =
amount =
maxAmount =
}
I po prostu uzupełniamy.
Można też dodawać swoje własne nowe paliwa czy inne czynniki, np. O2, CO2, MMH, UDMH, LOX, itp. zostało to opisane w poście wyżej apropo dodawania tlenu i dwutlenku węgla.
Po zakończonej edycji zapisujemy plik i odblokowujemy nowy zbiornik w R&D (chyba że gramy w sandboxie)
Ważne by zmodyfikować linijkę name !! Bez tego element będzie zablokowany !
MODYFIKACJA ROZMIARU
Otwieramy plik cfg interesującego nas obiektu i zmieniamy linijkę rescaleFactor.
Będzie ona na samym początku w asset parameters, jeśli jej nie ma tak jak w tym przypadku :
// --- asset parameters ---
mesh = model.mu
scale = 0.1
Dopisujemy po prostu tuż pod scale :
// --- asset parameters ---
mesh = model.mu
scale = 0.1
rescaleFactor = 1
Wielkość rescale`a może być dowolna, ale w granicach rozsądku jeśli chcemy uniknąć krakenów.
MODYFIKACJA SILNIKÓW
Po otwarciu cfg silników widzimy dużo dziwnych cyferek ale wcale nie jest to trudne ;)
Interesuje nas moduł module engines :
{
name = ModuleEngines
thrustVectorTransformName = thrustTransform
exhaustDamage = True
ignitionThreshold = 0.1
minThrust = 0
maxThrust = 215
heatProduction = 400
fxOffset = 0, 0, 0.8
PROPELLANT
{
name = LiquidFuel
ratio = 0.9
DrawGauge = True
}
PROPELLANT
{
name = Oxidizer
ratio = 1.1
}
atmosphereCurve
{
key = 0 370
key = 1 320
}
name = ModuleEngines - nazwa modułu silnikowego
thrustVectorTransformName = thrustTransform - coś od wektorowania ciągu, nie ruszam tego 8)
exhaustDamage = True - zniszczenia powodowane gazami wylotowymi - tak
ignitionThreshold = 0.1 - limit zapłonu, chodzi najprawdopodobniej o ilość prądu potrzebnego do zapłonu
minThrust = 0 - minimalny ciąg
maxThrust = 215 - maksymalny ciąg
heatProduction = 400 - produkcja ciepła, jednostka nieznana
fxOffset = 0, 0, 0.8 - odległość płomienia od środka silnika, nie ruszamy, ma to wpływ tylko na tekstury
PROPELLANT - zasób czynnik paliwowy - propelant
name = LiquidFuel - nazwa
ratio = 0.9 - stosunek
DrawGauge = True - wskaźnik ilości na drzewku Stage po lewej
Sekcja AtmosphereCurve określa impuls, im większy tym silnik mniej pali przy tym samym ciągu. ( łopatologicznie )
atmosphereCurve
{
key = 0 370 -
key = 1 320
}
Składa się z dwóch kodów. Każdy składa się z minimum 4 cyfr. Pierwsza cyfra zawsze jest jedynką lub zerem. Jedynka określa impuls na poziomie morza, a zero określa impuls w próżni. Kolejne 3 cyfry określają impuls, ale może być ich dowolna ilość, ale wtedy zabawa traci sens bo silniki będą spalać mikroskopijne ilości paliwa.
W uproszczeniu impuls ISP = ciąg/przepływ paliwa na sekundę.
ISP podajemy w sekundach, ciąg w kN a przepływ paliwa w tonach na sekundę.
Kolejnym parametrem który chcę omówić jest RATIO przy paliwie. Określa to stosunek materiałów pędnych czyli w tym przypadku na każde 0.9 paliwa ciekłego zejdzie 1.1 utleniacza.
Przy pędnikach RCS zmieniamy jedynie impuls i ciąg (thruster power )
No to na razie tyle. Nie wiem co będzie w następnym poście, piszcie propozycje i zobaczymy co da się zrobić :D
-
Nieważne - post do likwidacji