Strona DZN - Artykuły: Debug Modding Ta strona używa plików cookies w celu ulepszenia funkcjonalności.
in english
Historia SVN: 2223
2223: tom: Groby polskie i niemieckie
2222: tom:
2221: tom:
(Odczytano: czw, 2 kwi 2015, 21:15:01 CEST)
Logowanie
Nazwa użytkownika

Hasło



Aby założyć konto, skontaktuj się z Archerem

Nie możesz się zalogować?
Poproś o nowe hasło
Ankieta
Najlepsza gra z serii Battlefield?

Battlefield 1942

Battlefield 1942

Battlefield 1942

Battlefield 1942

Battlefield 1942

Battlefield 1942

Random Photo
Kuble atakują Ultiego!
Kuble atakują Ultiego!
Wielki Wyścig (z produkcji)

Debug Modding

Oto daaawno obiecany artykuł o modowaniu BF1942 "w locie":
Ten artykuł pokaże Wam jak zrobić rzeczy pokazane w tym filmie.

Tryb debug był często używany przez twórców Battlefielda jeszcze w czasie kiedy nad nim pracowali - wprowadzanie zmian bez wyłączania gry pomogło im lepiej wyważyć rozrywkę, a także wprowadzić drobne usprawnienia i oczywiście naprawić błędy.

Aby włączyć tryb debug, potrzebny jest specjalny plik o nazwie "Battlefield 1942 Community Debug". Do niedawna był dostępny na oficjalnej stronie gry, ale po jej zamknięciu można go pobrać z naszej strony. Po ściągnięciu wrzucamy plik exe do katalogu BF1942 (najczęściej: C:\Program Files\EA GAMES\Battlefield 1942), natomiast mod_r.dll idzie do Mods\bf1942. Potem wystarczy odpalić bf1942_r.exe i ładujemy dowolną mapę, tak jak w "zwykłym" bf.

Niestety, wersja Debug nie pozwala grać przez internet, chociaż tryb LAN działa bezproblemowo. Niestety, opisane tutaj techniki nie działają w trybie dla wielu graczy, ale działają w rozrywce z botami.

Przepis na Mustanga z rakietami:

  1. Ładujemy dowolną mapę w trybie coop. (Mustang nie musi się na niej spawnować.)
  2. Naciskamy tyldę (klawisz na lewo od 1) aby otworzyć konsolę.
  3. W konsoli wpisujemy poniższy kod. Naciśnięcie strzałki w górę przywoła poprzednią komendę, co zaoszczędzi nam dużo pisania. Wielkość liter nie ma znaczenia.

  4. ObjectTemplate.active Mustang
    ObjectTemplate.addTemplate Katyusha_Ramp_Rot
    ObjectTemplate.setRotation 0/0/180
    ObjectTemplate.addTemplate Katyusha_Ramp_Rot
    ObjectTemplate.setPosition -5/0/0
    ObjectTemplate.setRotation 0/0/180
    ObjectTemplate.addTemplate Katyusha_Ramp_Rot
    ObjectTemplate.setPosition 5/0/0
    ObjectTemplate.setRotation 0/0/180
    Game.SpawnObject Mustang

Przejdźmy przez kod linijka po linijce:

ObjectTemplate.active Mustang

W BF1942 każdy obiekt ma swój szablon (ObjectTemplate tłumaczymy na SzablonObiektu). Na podstawie tego szablonu tworzone są wszystkie spawnowane pojazdy. Używając polecenia "Active", informujemy BF, że chcemy edytować szablon Mustanga.

ObjectTemplate.addTemplate Katyusha_Ramp_Rot

Tą linijką dodajemy do Mustanga obiekt Katyusha_Ramp_Rot - jak nazwa wskazuje, jest to wyrzutnia rakiet z Katiuszy. Od tej pory aż do dodania następnego obiektu lub wydania polecenia Active, wszystkie instrukcje setPosition oraz setRotation będą się odnosić do tej konkretnej rampy którą dodaliśmy do Mustanga.

ObjectTemplate.setRotation 0/0/180

Ta instrukcja obraca naszą wyrzutnię o 180* wokół osi pojazdu, co sprawia że rakiety są pod skrzydłami, a nie nad. Polecenie setRotation przyjmuje trzy parametry oddzielone znakiem '/'.
Pierwsza liczba to kąt o jaki chcemy obrócić obiekt w prawo lub w lewo. (Ujemne liczby obracają w lewo.)
Druga liczba to kąt o jaki chcemy obrócić obiekt w górę lub w dół (Ujemne liczby obracają w górę)
Trzecia liczba to kąt o jaki chcemy obrócić obiekt wokół osi przód-tył - Taki obrót wykonujesz przekręcając głowę (żeby obejrzeć emotkę ;) lub przewracając jeepa do góry kołami. Taki obrót wykonuje też śmigło w samolocie. (Ujemne liczby obracają w lewo.)
Nie martw się jeśli na razie nie rozumiesz, jak zaczniesz eksperymentować z kodem, wszystko stanie się jasne

ObjectTemplate.addTemplate Katyusha_Ramp_Rot

Dodajemy do Mustanga drugą wyrzutnię - dodam jeszcze, że tuż po dodaniu każdy obiekt domyślnie zajmuje pozycję 0/0/0 - jest to sam środek pojazdu do którego dodajemy.

ObjectTemplate.setPosition -5/0/0

Przesuwamy tą wyrzutnię o 5 metrów w lewo, tak aby była pod lewym skrzydłem. Polecenie setPosition też przyjmuje 3 parametry:
Pierwsza liczba to odległość o jaką chcemy przesunąć obiekt w lewo lub w prawo. (siedząc w pojeździe i patrząc do przodu, ujemne liczby przesuwają w lewo)
Druga liczba to odległość o jaką chcemy przesunąć obiekt w górę lub w dół. (siedząc w pojeździe i patrząc do przodu, ujemne liczby przesuwają do góry)
Trzecia liczba to odległość o jaką chcemy przesunąć obiekt do przodu lub do tyłu. (siedząc w pojeździe i patrząc do przodu, ujemne liczby przesuwają do do tyłu)

ObjectTemplate.setRotation 0/0/180

Obracamy drugą wyrzutnię do góry spodem, żeby rakiety były pod skrzydłami.

ObjectTemplate.addTemplate Katyusha_Ramp_Rot
ObjectTemplate.setPosition 5/0/0
ObjectTemplate.setRotation 0/0/180

Kolejne 3 instrukcje dodają trzecią wyrzutnię do Mustanga, przesuwają ją o 5 metrów w prawo, oraz przekręcają ją do góry spodem.

Game.SpawnObject Mustang

Ostatnia linijka spawnuje Mustanga dokładnie w tym miejscu w którym stoisz. Obrót Twojej postaci też jest kopiowany do nowo-powstałego Mustanga, więc uważaj żeby nie patrzeć w niebo (wtedy Mustang stanie na ogonie i wybuchnie), ani na nogi (wtedy Mustang zaryje dziobem w ziemie i też wybuchnie).

Korzystając tylko z tych czterech komend, możesz zmodować każdy pojazd z każdego modu według swoich upodobań. Oczywiście BF posiada ogromną ilość innych poleceń, które regulują wszystko od mocy silnika Willisa, poprzez ilość HP łodzi podwodnej, na szybkostrzelności dział przeciwlotniczych kończąc. Dla dociekliwych, listę tych komend można zobaczyć tutaj.
Poniżej zamieszczam listę ciekawych obiektów, które możecie dodać do pojazdów za pomocą komendy addTemplate: (Naturalnie jest ich więcej, wystarczy otworzyć plik mods/bf1942/archives/objects.rfa programem WinRFA i podejrzeć deklaracje pojazdów)

Katyusha_Ramp_Rot - wyrzutnia rakiet z Katiuszy
B17BombRack - bomby od B17
B17_MG1_FB - karabin z wieżyczki B17
AA_Allies_GunBarrel - Lufa działa przeciwlotniczego (to sama lufa - nie obraca się, ale strzela)
DefgunGunBarrel - Lufa defguna (j.w.)
DefgunTurret - Wieżyczka Defguna (obraca się)
T34-85GunBarrel - Lufa ciężkiego T34
T34-85Tower - wieżyczka T34 (z KM)
YamatoFatTurret - wieżyczka Yamato (Uwaga, jest ogromna)
YamatoFatCannon - Lufa Yamato (japoński pancernik)

Here's an article about Battlefield 1942 debug modding I promised a loooong time ago:
This article will show you how to do things like showed in this video.

Debug mode was often used by Battlefield 1942 creators when the game was still in development: making changes "on the fly" allowed them to quicker balance the gameplay, make improvements, and of course fix bugs.

To enable debug mode, we need a special file named "Battlefield 1942 Community Debug". Until some time ago, it could be downloaded from the game's official website. However, that website was closed, but the file can still be downloaded from our website. After downloading and unpacking it, move the bf1942_r.exe file to your Battlefield 1942 directory (most commonly C:\Program Files\EA GAMES\Battlefield 1942), while mod_r.dll goes to Mods\bf1942. Then all you need to do is run bf1942_r.exe and load a (coop) map, just like in "casual" bf.

Unfortunately, the Debug version won't allow to play Internet games, but playing over LAN works fine. However, techniques described below will cause a multilayer game to crash. They work perfectly in singleplayer (with bots) though.

How to make a missile launcher Mustang?

  1. Load any map in coop mode. (It's OK if there are no Mustang spawns.)
  2. Press tilde (a key to the left of 1) to open the console.
  3. In the console type the following code. Pressing the up arrow will recall the previous line, saving you a lot of typing. Commands are case insensitive.

  4. ObjectTemplate.active Mustang
    ObjectTemplate.addTemplate Katyusha_Ramp_Rot
    ObjectTemplate.setRotation 0/0/180
    ObjectTemplate.addTemplate Katyusha_Ramp_Rot
    ObjectTemplate.setPosition -5/0/0
    ObjectTemplate.setRotation 0/0/180
    ObjectTemplate.addTemplate Katyusha_Ramp_Rot
    ObjectTemplate.setPosition 5/0/0
    ObjectTemplate.setRotation 0/0/180
    Game.SpawnObject Mustang

Let's analyze this code line after line:

ObjectTemplate.active Mustang

In BF1942 every object has it's own template. All spawned vehicles are based on their respective object templates. By using "Active" command, we tell BF, that we want to edit Mustang's template.

ObjectTemplate.addTemplate Katyusha_Ramp_Rot

This line adds a Katyusha_Ramp_Rot object to the Mustang template. As the name suggests, it's a missile launcher from Katyusha. From now until the next Active or addTemplate call, every setPosition and setRotation commands will affect this single launcher we just added to the Mustang.

ObjectTemplate.setRotation 0/0/180

This command rotates our launcher bottom up (180* degrees around Mustang's length axis). In result, the missiles end up below the hull and not above it. The setRotation instruction takes 3 parameters, separated by '/' character.
The first number is the angle through which we want to rotate our object to the left hand or to the right hand side. (Negative numbers rotate to the left hand side.) [Yaw]
The second number is the angle through which we want to rotate our object to the top or to the bottom (Negative numbers rotate to the top) [Pitch]
The third number is the angle through which we want to roll our object. (Negative numbers roll to the left)
Don't worry if you don't understand everything, it will come clear as soon as you start playing with the code.

ObjectTemplate.addTemplate Katyusha_Ramp_Rot

Here we add another launcher to our Mustang. Note that every object we add takes position 0/0/0 by default. This position is usually the exact center of the vehicle we add to.

ObjectTemplate.setPosition -5/0/0

Move that launcher 5 meters (~16.5 ft) to the left, so it ends up under the left wing. The setPosition command also takes 3 parameters:
The first number is the distance by which we want to move our object to the left hand side or to the right hand side. (Negative number smove to the left)
The second number is the distance by which we want to move our object to the top or to bottom. (Negative numbers move to the top)
The third number is the distance by which we want to move our object to the front or to the back. (Negative numbers move to the back)

ObjectTemplate.setRotation 0/0/180

Rotate the second launcher bottom up, so it's missiles end up under the hull.

ObjectTemplate.addTemplate Katyusha_Ramp_Rot
ObjectTemplate.setPosition 5/0/0
ObjectTemplate.setRotation 0/0/180

The next 3 commands add the third launcher to the Mustang, move it 5 meters to the right and rotate it bottom up.

Game.SpawnObject Mustang

The last line spawns the Mustang exactly where you are standing. The rotation of your character is also copied to the new vehicle, so don't look at the sky or at your feet, or the Mustang will spawn sitting on it's tail or on it's nose respectively.

By using just these 4 commands, you can mod any vehicle from any mod to the way you like. Of course BF supports a whole lot of other commands, which regulate everything, beginning from Willy's engine torque, through HP of the US submarine, ending with rate of fire of the AA-Gun. If you are interested, you can read the list of all commands here.
Lastly, here's a list of some interesting objects, that you can add to any vehicle by the addTemplate command. (Of course there are more, you can find them by opening the mods/bf1942/archives/objects.rfa file with WinRFA and look up vehicle declarations)

Katyusha_Ramp_Rot - Katyusha missile launcher
B17BombRack - B17 bombs
B17_MG1_FB - B17 machine gun
AA_Allies_GunBarrel - AA-Gun barrel (just the barrel: it doesn't rotate, but shoots)
DefgunGunBarrel - Defgun barrel (see above)
DefgunTurret - Defgun turret (it does rotate)
T34-85GunBarrel - Barrel of the haevy T-34
T34-85Tower - Tower of the heavy T34 (MG included)
YamatoFatTurret - Yamato turret (Caution, it's Huge!)
YamatoFatCannon - Yamato barrel (Yamato is the Japanese Battleship)

Komentarze
#1 | assasinseye1 dnia 13/05/2010 06:51
sweet man!are their more codes i can look at?
#2 | archer dnia 11/07/2010 14:39
Well, not unless I create something else actually worth showing. That Mustang-Katyusha hybrid was the only thing I could come up with that was both easy to code and fun to play. All the other "inventions" from the video are not really worth the hassle.. Even the submarine bomber was so difficult to fly around, that it took me like half an hour to do the destroyer bombing scene Grin
#3 | hanskloss dnia 02/12/2010 19:23
Dlaczego gdy próbuje np. zespawnowac kuter torpedowy, lub dodać do czegoś coś innego niż rakiety katyushy gra się wyłącza? Mam bf1942 v 1.6.1, a debug jest w wersji 1.6
#4 | archer dnia 02/12/2010 20:05
Dlatego że nie możesz spawnować jednostek pływających na mapach bez wody. W przypadku dodawania najpewniej źle wpisujesz nazwę. Wersję debug należy uruchamiać w oknie, ponieważ w trybie pełnoekranowym gra domyślnie wyłącza się po napotkaniu najdrobniejszego błędu, a jeśli uruchomisz w oknie to wyskoczy komunikat o błędzie z trzema opcjami: Przerwij wyłączy grę, Ignoruj pójdzie dalej, Ponów Próbę zignoruje ten i następne komunikaty tego typu.
#5 | hanskloss dnia 03/12/2010 15:33
Ale z debug zawsze gram na midway, a tam jest dużo wody, gdy coś źle wpiszę, w konsoli wyskakuje 0 P.S jak sie uruchamia w oknie???
#6 | archer dnia 03/12/2010 16:09
Trzeba edytować plik Battlefield 1942\mods\bf1942\settings\videodefault.con i dodać do niego linijkę renderer.setFullScreen 0

ten program włącza/wyłącza pełny ekran jednym kliknięciem.
http://dzn.org.pl/infusions/pro_download_panel/download.php?did=6
#7 | hanskloss dnia 04/12/2010 10:48
Dzięki. A czy w podstawce bf1942 są normalne rakiety, czy tylko te z katyushy? I czy debug działa z modami?
#8 | archer dnia 04/12/2010 13:26
Są jeszcze pociski z bazooki i to chyba tyle. Tak, debug działa z modami.
Dodaj komentarz
Nick:

Kod potwierdzający:


Wpisz kod potwierdzający: