Czołem!
Mój poprzedni post został całkiem nieźle odebrany. Cieszę się z tego powodu, bo motywuje to mnie do pracy. Przedstawiłem tam również sposób na usunięcie bonusów. Teraz jednak zajmę się czymś trudnym. MODDING! Co to jest do cholery? Jest to sposób na modyfikowanie pewnych zachowań gry z celu uzyskania pożądanych efektów. Nie jestem w tym ekspertem, bo część rzeczy zmieniam na chłopski rozum. Zanim zaczniesz modować, miej na uwadze, że:
- Mody w społeczności BombSquada nie występują. Stworzysz jakiegoś? Podziel się w internecie!
- Mod nie musi być koniecznie modyfikacja kodu. Moja paczka z TF2 też jest modyfikacją. Jedyna różnica co to, że ciągle możemy korzystać z zawartości sieciowej.
- Zabierając się za kod trzeba uważać. Mały błąd może nie być pokazany w grze, chyba, że użyjemy konsoli, która jest ukryta pod przyciskiem ` (pod ESC).
- Przed zmienianiem czegokolwiek z gry warto zrobić kopię zapasową tych plików, by nie instalować BombSquada na nowo.
- Jeśli mod nie działa, zapewne trzeba zmienić w Opcje, Zaawansowane, Włącz lokalne pakiety modów.
- By ułatwić dostęp do folderu z modami, gdzie dodamy własne tryby gry lub wklejamy wyedytowane pliki, należy wejść w Opcje, Zaawansowane, Pokaż katalog modów.
- Należy pamiętać, że mieszanie w kodzie, czy mody dodające tryby kooperacyjne, zablokuje tryb turniejowy. Po zakończonej zabawie trzeba pozmieniać pliki i wsadzić do folderu, gdzie będą bezpieczne.
Dosyć gadania. Czas na gwóźdź programu!
Odblokuj wszystkie postacie bez wydawania kuponów
Przydatność: **
Trudność: **
Chcesz odblokować bałwana? Mikołaja? A może całą paczkę? Ta modyfikacja miesza w kodzie gry, przez co gra nie będzie wykrywała czy masz kupione postacie, tylko od razu je udostępni.
- Wejdź w folder data, scripts
- Znajdź folder bsSpaz.py i otwórz go z Notepad++
- Poszukaj takiej liniki:
import bsInternal
disallowed = []
# hmm yeah this will be tough for people to hack ;-)
if not bsInternal._getPurchased('characters.santa'): disallowed.append('Santa Claus')
if not bsInternal._getPurchased('characters.frosty'): disallowed.append('Frosty')
if not bsInternal._getPurchased('characters.bones'): disallowed.append('Bones')
if not bsInternal._getPurchased('characters.bernard'): disallowed.append('Bernard')
return [s for s in appearances.keys() if s not in disallowed]
WOW. Eric wie, że chcemy odblokować sobie postacie. Mniejsza z tym. Kto zna angielski już wie, które liniki służą jako sprawdzanie, czy zakupiłeś postać. Linika 5 tłumaczy następująco:
Jeśli Mikołaj na aktywnym koncie nie jest kupiony, nie pozwalaj na grę nim.
Proste, prawda? Wystarczy usunąć liniki podobne do if not bsInternal._getPurchased('characters.santa'): disallowed.append('Santa Claus') i problem z głowy.
Ostateczny produkt wygląda tak:
def getAppearances():
import bsInternal
disallowed = []
# hmm yeah this will be tough for people to hack ;-)
return [s for s in appearances.keys() if s not in disallowed]
- Zapisz skrypt
Zmiana ilości życia postaci
Przydatność: *
Trudność: *
Kolejna rzecz jaką można zrobić w grze competetive. Zmiana ilości życia graczy. Mniej wymusi na dobre manewrowanie. Więcej pozwoli tankować obrażenia.
- Otwórz folder data, scripts
- Edytuj plik bsSpaz.py
- Poszukaj takiej liniki (numer 374 w Notepad++)
self.hitPointsMax = 1000
Tutaj już wiesz co zrobić. Zmień wartości na takie, jakie chcesz. Mój przykład
self.hitPoints = 850
self.hitPointsMax = 1250
self.hitPointsMax = 1250
Tutaj postać po respawnie będzie miała 850 punktów życia. Wystarczająco, by ją zabić dobrze rzuconą bombą. Zebranie apteczki sprawi, że będzie miała więcej punktów życia niż na starcie. Takie buty!
Zmiana zasięgu wybuchu bomb i typu wybuchu
Przydatność: ***
Trudność: ***
Chcesz poćwiczyć celność? A może zmniejszyć zasięg, by dać pole do popisu profesjonalistom? Tutaj to jest to możliwe modyfikując jeden plik.
- Otwórz folder data, scripts
- Edytuj plik bsBomb.py
- Poszukaj takiej liniki (numer 249 w Notepad++)
def __init__(self,position=(0,1,0),velocity=(0,0,0),blastRadius=2.0,blastType="normal",sourcePlayer=None,hitType='explosion',hitSubType='normal'):
Tutaj można zmienić aż trzy rzeczy. Typ wybuchu, zasięg oraz pozycja wybuchu (wygląda komicznie, jak wybuch jest nie z bomby tylko poza nią). Jak chcę zwiększyć zasięg do kosmicznych wartości, zmieniam blastRadius na inną liczbę. Oto jak to będzie wyglądać:
def __init__(self,position=(0,1,0),velocity=(0,0,0),blastRadius=10.0,blastType="normal",sourcePlayer=None,hitType='explosion',hitSubType='normal'):
A teraz zmienię co innego. Dam, by zwykłe bomby były mrożące. Heh!
def __init__(self,position=(0,1,0),velocity=(0,0,0),blastRadius=2.0,blastType="ice",sourcePlayer=None,hitType='explosion',hitSubType='normal'):
A teraz coś jeszcze innego. Sprawię, by wybuch był wyżej niż bomba!
def __init__(self,position=(0,4,0),velocity=(0,0,0),blastRadius=2.0,blastType="normal",sourcePlayer=None,hitType='explosion',hitSubType='normal'):
- Zapisz plik. Nuff said.
Ten komentarz został usunięty przez autora.
OdpowiedzUsuń