Forum Tawerny Four Ways
Mount&Blade - Modyfikacje => Modding => Wątek zaczęty przez: Dravic w Października 29, 2010, 16:53:32
-
Witam, naszła mnie dzisiaj chęć na proste modyfikowanie gry. Moje pytanie brzmi:
Jak wykonać nowy budynek do wybudowania w wiosce.
Chciałbym pododawać budynki, które działałyby jak:
- młyn, ale nazywałyby się np. "Kanały irygacyjne", "Kuźnia", "Pchli targ", "Stajnie", "Browar"
- szkoła, ale nazywałyby się np. "Brukowane drogi", "Burdel", "Szpital", "Tawerna (nie musi dać się jej odwiedzać, to chyba za trudne)" (tutaj, jeśli tak się da, zmieniłbym wartości, które dają budynki z 1pkt relacji, na 1/4, jeśli tak się da. jeśli nie, trudno - 4-5 pktów relacji miesięcznie :P)
- Strażnica, ale nazywałyby się np. "Palisada", "Drewniana brama" (tutaj , musiałbym pozmieniać wszystkie wartości tych budynków na mniejsze, np. z 50% na 25%, albo nawet 20% - inaczej dałoby się przedłużyć czas plądrowania wioski o 150%, co jest przesadą)
Proszę o pomoc!
PS Całość bardzo chciałbym wprowadzić do już gotowego moda Diplomacy (takie osobiste usprawnienie)...
-
Spróbuję ci pomóc:
1. Otwieramy module_constans i wyszukujemy slot_center_has_manor = 130 #village
2. Pod "slot_center_has_prisoner_tower" piszemy np. slot_center_has_pchli_targ
3.Otwieramy module_game_menus i wyszukujemy
("center_build_watch_tower",[(eq, reg6, 0),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_village),
(party_slot_eq, "$g_encountered_party", slot_center_has_watch_tower, 0),
],
"Build a watch tower.",[(assign, "$g_improvement_type", slot_center_has_watch_tower),
(jump_to_menu, "mnu_center_improve"),]),
4. Kopiujesz to i wklejasz pod
"Build a prisoner tower.",[(assign, "$g_improvement_type", slot_center_has_prisoner_tower),
(jump_to_menu, "mnu_center_improve"),]),
i edytujesz zaznaczone elementy menu. Watch_tower to wiesz dlaczego, spt_village określala gdzie można to wybudować.
5. W module_scripts wyszukajemy, kopiujemy, wklejamy pod tym i edytujemy zaznaczone elementy(cyfra to koszt wybudowania)
(else_try),
(eq, ":improvement_no", slot_center_has_prisoner_tower),
(str_store_string, s0, "@Prison Tower"),
(str_store_string, s1, "@A prison tower reduces the chance of captives held here running away successfully."),
(assign, reg0, 7000),
.
6. Tylko nie wiem gdzie dodawać efekty budowania takie jak np. +2 do relacji z miastem,wioską co miesiąc.
Jak są jakieś błędy to pisać
-
Dzięki za dobre chęci, tylko że ja już do tego sam doszedłem już wczoraj :)
Ale w ramach wzajemnej pomocy, jeśli ty też chciałbyś to zrobić, ja doszedłem do tego, jak zrobić konkretny efekt (w tym wypadku taki sam, jak w szkole, ale nasz budynek nazwiemy ambitnie: bordello)
Po pierwsze: w module_constans.py pod innymi budynkami (co już zauważyłeś) dodajemy wpis:
slot_center_has_bordello = 801 #village
- gdzie liczba musi być duża, byśmy mogli łatwo sobie wyszukac później wpis w razie chęci usunięcia budynku.
Po drugie: w module_game_menus.py musimy dodać wpis, dzięki któremu budynek będzie się dało wybudować (tutaj zauważ, że skopiowałem dokładnie blok szkoły, a jedynie pozmieniałem wszystkie "school" (tutaj w sumie 4) na "bordello"
("center_build_bordello",[(eq, reg6, 0),
(party_slot_eq, "$g_encountered_party", slot_party_type, spt_village),
(party_slot_eq, "$g_encountered_party", slot_center_has_bordello, 0),
],
"Build a bordello.",[(assign, "$g_improvement_type", slot_center_has_bordello),
(jump_to_menu, "mnu_center_improve"),]),
Po trzecie: w module_scripts.py musimy dodać opis, jaki będzie się wyświetlał przy kliknięciu w menu usprawnien (nawiasem ^^ mówiąc trochę podrasowałem te opisy, bo są nudne) - czyli kopiujemy szkołę, zmieniamy "school" na bordello i ewentualnie zmieniamy opis budynku
(else_try),
(eq, ":improvement_no", slot_center_has_bordello),
(str_store_string, s0, "@Bordello"),
(str_store_string, s1, "@A bordello increases the loyality of the villagers to you by +1 every 4 weeks, because every man need a while of relax, and you gave them the best girls."),
(assign, reg0, 9000),
Teraz uważaj: tego nie wiedziałeś. W module_simple_triggers.py znajdź pod hasłem "school" lub "has_school" blok zaczynający się na "try_for_range". Widzisz to działanie nad blokiem, 30 x 24? Ono oblicza, co ile dni dostajesz z calego triggersa +1 relacji, gdzie 30 to liczba dni a 24 to liczba godzin (w tym wypadku doba).
A więc nie kopiujesz liczby, nie zaznaczasz też pierwszego "[", zaczynasz od nawiasu przed try_for range, o tak:
(try_for_range, ":cur_village", villages_begin, villages_end),
(party_slot_eq, ":cur_village", slot_town_lord, "trp_player"),
(party_slot_eq, ":cur_village", slot_center_has_school, 1),
(party_get_slot, ":cur_relation", ":cur_village", slot_center_player_relation),
(val_add, ":cur_relation", 1),
(val_min, ":cur_relation", 100),
(party_set_slot, ":cur_village", slot_center_player_relation, ":cur_relation"),
(try_end),
Kończąc na skopiowaniu przecinka po "try_end".
Co wazne: Wklej to centralnie po try_end, ale przed ]),
i zmień "slot_center_has_school, 1" na "slot_center_has_bordello, 1".
Własnie dodałeś budynek: bordello, w pełni działający, jesli nie zrobiłeś żadnego błędu. Doszedłem do tego wpisując w wyszukiwarce w notepadzie++ "school" --> szukaj we wszystkich otwartych plikach :)
-
trzeba jeszcze w module_constants zmienić improvements np:
jak ostatni budynek jest
slot_center_has_burdello = 136 to w village_improvements_end = wpisać 136
Dla wiosek:
przykład:
slot_center_has_messenger_post = 134
slot_center_has_prisoner_tower = 135
slot_center_has_burdello = 136 (nowy budynek, wpis - 136)
village_improvements_begin = slot_center_has_manor (od którego budynku mają zacząć się ulepszenia)
village_improvements_end = 136 (było 135)
Dzięki temu po wybudowaniu ulepszenia burdello w wsi, będzie pisać w ulepszeniach że jest już wybudowane.
Dla miast i zamków jest podobnie, tylko trzeba zmienić wartość 135 w walled_center_improvements_end.
Ja taką metodą dodałem kilka ulepszeń jak zakon templariuszy, klasztor, akademia wojskowa, dom medyka, teatr i kilka innych i po ich wybudowaniu, są dostępne w wiadomościach ulepszeń.