Kwasowa Grota Heroes VIIMight & Magic XHeroes III - Board GameHorn of the AbyssHistoria Światów MMSkarbiecCzat
Cmentarz jest opustoszały
Witaj Nieznajomy!
zaloguj się    załóż konto
Niebiańska Kuźnia  (WoG, HotA, VCMI)temat: [przyklejony] ERM poziom - "Impossible"
komnata: Niebiańska Kuźnia (WoG, HotA, VCMI)
strona: 1 - 2 - 3 - 4

Altair PW
11 lipca 2010, 15:14
W tym temacie zamieszczane będą skrypty ERM (oraz fragmenty kodów), triki i sztuczki których napisanie jest b. trudne, a czasem wręcz wydaje się niemożliwe.
Przez "bardzo trudne" rozumiem modyfikowanie czegoś co nie jest ujęte w żadnej oficjalnej dokumentacji. Od prostych trików używających nieznane (lub zapomniane) funkcje po ekstremalne skrypty pracujące na pamięci.
Oczywiście nie ukrywam, że jest temat dla bardziej obeznanych z ERM. Znających oficjalną dokumentację i umiejących z niej korzystać.

Poniżej zbiór takich skryptów aktualnie prezentowanych na AC:

Na początek coś prostego:

Każdy kto grał w H2 pamięta, że aby zdobyć niektóre artefakty (leżące na ziemi) należało posiadać umiejętność (m.in dowodzenie) lub zapłacić złotem. Mało kto wie, ale ta funkcja pozostała także w H3 (O czym można się przekonać eksportując sobie pliki tekstowe). Są to prawdopodobnie pozostałości jakiś wersji alfa H3. Skrypt na to jest bardzo prosty:

______________________________________________________________

ZVSE
!#ARx/y/p:Vnr;** nr od 0 do 6


Uwagi - żeby nie było zbyt pięknie są pewne ograniczenia. Artefakt ten MUSI być dodany na mapę w edytorze. Nie może zawierać jakiegokolwiek tekstu, strażników itp.


______________________________________________________________

Skrypt na szkieletornie (ta w nektropolis):

!?GM0;
!!FU22221:P;

!?FU22222;

!!VRy1:S8072312;**wog 3.58F
!!VRy2:Sx1*4;
!!VRy1:+y2;
!!UN:Cy1/4/?x9;
!!UN:Cy1/4/x2;

!?FU22221;
!!FU22222:P24/172;**jednorożec w zmorę
!!FU22222:P172/172;** zmora nie podlega transformacji ;P
!#FU22221:P;

Wystarczy dodawać linijki z !!FU22222:Ptyp_stwora/typ_po_tranformacji;

Uwagi - skrypt pozwala zmieniać przypisane transformacje stworów. Jednak tam modyfikacja nie jest zapisywana w stanie gry. Dlatego komenda !?GM0; jest tu niezbędna.

______________________________________________________________

Własne klasy bohaterów:


ZVSE

!#VRz500:S^Czarodziejka^;
!?FU29001;
!!VRy1:Sx1 *64 +6805612;
!!VRy2:Sx2*512+40225400;
!!UN:Cy1/4/y2;
!#FU29001:P5/500;

Wystarczy wywołać !!FU29001:Pnr_klasy/nr_zmiennej_z;

Uwagi - oczywiście od teraz każda zmiana zmiennej z500 zmieni nazwę klasy. Działa to globalnie na wszystkich bohaterów danej klasy.

______________________________________________________________

Kolejny skrypt był już kiedyś prezentowany. To zbalansowany pożeracz dusz.
Aktualna wersja 2.0 została poprawiona i przetestowana na różnych komputerach i dla różnych wersji językowych (polskiej i angielskiej).
http://www.erm.acidcave.net/download.php#42

Uwagi - może nie działać z "mieszanymi" wersjami językowymi.

______________________________________________________________

Wkrótce dodam kolejne. :)





Alamar PW
12 lipca 2010, 10:29
Cytat:
Każdy kto grał w H2 pamięta, że aby zdobyć niektóre artefakty (leżące na ziemi) należało posiadać umiejętność (m.in dowodzenie) lub zapłacić złotem. Mało kto wie, ale ta funkcja pozostała także w H3 (O czym można się przekonać eksportując sobie pliki tekstowe). Są to prawdopodobnie pozostałości jakiś wersji alfa H3.
Zagraj w czyste RoE, to tę funkcję znajdziesz bez problemu.

Altair PW
12 lipca 2010, 20:00
Być może, ale w czyste RoE grałem chyba wieki temu. ;)

Altair PW
16 listopada 2010, 21:50
Tak jak obiecałem kolejna porcja ekstremalnych skryptów.

Jedynym z najbardziej irytujących błędów ERMu WOGa 3.58F jest błędne działanie komendy !!MR:N (Niewtajemniczonych informuję, że powinna zwracać nr sloty/oddziałów na polu bitwy w który trafi zaklęcie punktowe lub obszarowe).
Rozwiązaniem tego problemu jest poniższy skrypt:
______________________________________________________________

!?MR2;
!!UN:C42147184/4/?y1;
!!VRy1:+56;
!!UN:Cy1/4/?y2;
!!BU:Ey2/?y3;

W zmiennej y3 zwracany jest numer oddziału.
______________________________________________________________

Czarny Rynek jest jednym z nielicznych obiektów w 3.58F, który nie da się w żaden zwykły sposób zmodyfikować. Po wielu bezowocnych poszukiwaniach na jednym z zagranicznych for udało mi się znaleźć rozwiązanie:

!?PI;
!!FU888:Pnr_slotu/nr_artefaktu/x/y/p;
!?FU888;
!!VRx1:-1;
!!OBx3/x4/x5:C?y80;
!!UN:C6919480/4/?y81;
!!VRy81:+128644;
!!UN:Cy81/4/?y81;
!!VRy82:Sy80*28;
!!VRy83:Sx1*4;
!!VRy81:+y82;
!!VRy81:+y83;
!!UN:Cy81/4/x2;

Powyższy skrypt na początku rozgrywki zmienia artefakty dla danego Rynku o współrzędnych x, y, p. Uwaga! Akceptowane są tylko artefakty, próba dodania zwojów skończy się crashem.
______________________________________________________________

Na koniec rzucanie zaklęć przez zwykłe jednostki z uwzględniam magicznych odporności. Czyli np. Gremlin rzucający pole minowe, harpia rzucająca klątwę. A wszystko to w stylu Czarodziejskiego Smoka. Skrypt poniżej:

Oczywiście dostępne są także inne style np. Wielkiego dżina (losowe zaklęcie wspomagające). Wystarczy dodać kolejny parametr do składni !#FU11111
!#FU11111:Pnr_stworzenia/zaklęcie/liczba_tur_lub_moc/nr_stworzenie_wzorcowego.
Czyli w wypadku losowych zaklęć będzie to numer dżina.


!?FU11111;
!!VRx10:Sx4;
!!VRv1:C8/7/2;
!!VRx4&x10>0:Sx10+7960963;
!!VRx5&x10>0:Sx10+7960775;
!!VRx6&x10>0:Sx10+7960587;
!!UN&x10>0:Cx4/1/?y1 Cx5/1/?y2 Cx6/1/?y3;
** Cx7/1/?y4 Cx8/1/?y5 Cx9/1/?y6;
!!VRv1&x10>0:Cy1/y2/y3/y4/y5/y6;

!!VRx4:Sx1+7960963;
!!VRx5:Sx1+7960775;
!!VRx6:Sx1+7960587;

!!UN:Cx4/1/v1 Cx5/1/v2 Cx6/1/v3;
**UN&x10>0:Cx7/1/y4 Cx8/1/y5 Cx9/1/y6;
!!MA:Bx1/3;
!!VRy1:S8700+x1;
!!VRvy1:Sx2*10000+x3;

!#FU11111:Pnr_stworzenia/zaklęcie/liczba_tur_lub_moc;**tą linijkę można kopiować



!?FU11112;
!!BMx16:T?y1 N?y2 H?y3;
!!FU&y1<0|y1>196/y2<1/y3<1:E;
!!VRy4:S8700+y1;
!!FU&vy4<1:E;
!!VRy5:Svy4:10000;
!!BMx16:U4/y5;

!?BR&1000;
!!DO11112/0/41/1:P;



!?BG0;
!!VRv9215:C-1/-1/-1/-1/-1;
!!BG:A?y10 N?y11;

!!FU&y10<>10|y11<0/y11>41:E;
!!BMy11:T?y3;
!!FU|y3<0/y3>196:E;

!!VRy4:Sy3+8700;
!!FU&vy4<1:E;
!!BG:E?v9215;
!!VRv9216:Sy3;

!!VRy5:Svy4:10000;
!!BMy11:Gy5/?v9217/?v9218;


!?BG1&v9215<>-1;

!!BM21:P?y1;
!!VRy7:Sv9216+8700;
!!FU&vy7<1:E;
!!VRy5:Svy7:10000;
!!VRy6:Sy5*10000;
!!VRy8:Svy7-y6;

!!FU&y8<1:E;
!!BMv9215:Gy5/?y1/?y3;
!!BMv9215&v9217>0:Gy5/v9217/v9218;
!!BMv9215&y3=>v9218/y8>v9217/y1>0:Gy5/y8/y3;
!!VRv9215:S-1;
!!BU:R;

Jednak jest jedno "ale". "Umagiczniać" można tylko stworzenia od Archanioła w wzwyż. Póki co nie sposobu na resztę jednostek z Castle (Należałoby przekopiować tablice umiejętności i znieść ograniczenie dla castle).
______________________________________________________________



Altair PW
26 listopada 2010, 03:31
Kolejne skrypty. Pierwszy pozwala przypisać niektóre umiejętności jednostkom (Od Jednorożca do Drakolicza). Nie sprawdzałem czy zapisują się one wraz z grą dlatego dla pewności można użyć !?GM0;


ZVSE

!?FU22228;
!!VRx1:-22;
!!VRy1:S7961304+x1;
!!UN:Cy1/1/x2;

!?PI;
!!FU22228:Pnr_stworzenia/nr_umiejętności;
!?GM0;
!!FU22228:Pnr_stworzenia/nr_umiejętności;


Czyli np. Chcemy ustawić jednorożcowi umiejętność "Postarzania" zamiast oślepiania piszemy:
!!FU22228:P24/4;

Oto inne umiejętności:
1 oślepienie
2 zaraza
3 klątwa
4 starość
5 skamienienie
6 paraliż
7 trucizna
8 zionięcie kwasem
9 brak efektu

______________________________________________________________

Drugi Skrypt pozwala ustawiać premie do ataku obrony, moc i wiedzy dla artefaktów bez użycia !?AE; (działa także na puste artefakty)

ZVSE

!?PI;
!!FU9129:Pnr_artefaktu/atak/obrona/moc/wiedza;
!?GM0;
!!FU9129:Pnr_artefaktu/atak/obrona/moc/wiedza;

!?FU9129; artefakty funkcji
!!VRy1:S8073100;
**S8094552
!!VRy2:Sx1*4+y1;
!!UN:Cy2/1/x2;
!!VRy2:+1;
!!UN:Cy2/1/x3;
!!VRy2:+1;
!!UN:Cy2/1/x4;
!!VRy2:+1;
!!UN:Cy2/1/x5;

Czyli aby przypisać "pustym butom" +1 ataku, +2 obrony, +3 mocy, +4 wiedzy wystarczy użyć:
!!FU9129:P169/1/2/3/4;


Altair PW
14 marca 2011, 17:50
Kolejny skrypt pozwalający niestrzelające jednostki zmieniać w strzelające (Z którego korzystają m.in twórcy Gaju):


!?FU8900;

!!VRx3&x1=1/x2<2:S16;
!!VRx3&x1=1/x2>197:S16;
!!FU|x2<2/x2>197:E;

!!UN:V?y1/?y2;**test wersji
!!VRx2&y1=358:+7961526; **dla 3.58f
!!VRx2&y1=359:+7994814; **dla 3.59 + era

!!UN&x1=0:Cx2/1/x3;
!!UN&x1=1:Cx2/1/?x3;

!?PI;
**ustawiamy flagę strzelania
!!MA:Xnr_stwora/?i;
!!VRi:|4;
!!MA:Xnr_stwora/i;

!!FU8900:P0/nr_stwora/typ_pocisku;

**potrzebne aby działało po wczytaniu save'a
!?GM0;
!!FU8900:P0/nr_stwora/typ_pocisku;

typy pocisku:
0 - Łucznik
1 - Mnich
2 - Elf
3 - Master Gremlin;
4 - Mag
5 - Tytan
6 - Gog
7 - Lisz
8 - Meduza
9 - Ork
10 - Cyklop
11 - Reptilion
12 - Żywiołak lodu
13 - Niziołek
14 - Katapulta
15 - Balista


Na koniec kilka uwag. Powyższa wersja będzie działać poprawnie zarówno pod 3.58F jak i 3.59 (Era). Jest wysoce prawdopodobne, że otrzymacie komunikat o braku pliku dźwiękowego strzału np. xxxxshot.82m. Plik musicie umieścić w katalogu data.
Jeśli chcemy przypisać więcej niż jednemu stworowi zdolność strzelania to dodajemy TYLKO dodatkowe linijki np.:


!!MA:Xnr_stwora/?i;
!!VRi:|4;
!!MA:Xnr_stwora/i;

!!MA:Xnr_stwora2/?i;
!!VRi:|4;
!!MA:Xnr_stwora2/i;

oraz

!!FU8900:P0/nr_stwora/typ_pocisku;
!!FU8900:P0/nr_stwora2/typ_pocisku2;

W żadnym wypadku nie należy powielać, dublować, multiplikować reszty skryptu (która ma pozostać w jednej kopii)




majaczek PW
29 marca 2012, 00:12
Jak dodać umiejętność w stylu "Stack Experience" dla commandera, który jest prawdziwym commanderem (nie "monster commander")?

bebechy polecenie !!EA działają, ale rezultaty są ignorowane przez grę...
jest na to jakiś !!UN:C ?

gruziak97 PW
11 kwietnia 2012, 18:24
Mam pytanie dotyczące skryptu dodającego umiejętność strzelania:
Co powinienem wstawić za typ_pocisku? Czy to działa na zasadzie jak numery stworzeń tzn. jakaś liczba odpowiada jakiemuś pociskowi np. 1 bełtowi kusznika?

Trochę inna sprawa:
Czy po dodaniu tych linii do jakiegoś skryptu z data\s będzie to działać?

majaczek PW
11 kwietnia 2012, 20:20
Rozumiem że kod na ustawienie pustego artefaktu nie działa z wtyczką Emerald (która daje możliwość dodania nowych pustych artefaktów i w tym celu zmienia miejsce w pamięci informacji o artefakcie aby się zmieściła)?

Co do sztuczek na strzelanie/czarowanie stworka to czy będą działać z wtyczką Amethyst (umozliwia dodanie nowych stworków)? bo nie mam pojęcia czy potrzebna informacja zmieniła miejsce w pamięci czy nie...

Czy istnieje możliwość napisania wersji skryptu zgodną z Amethystem/Emeraldem/inną_wtyczką_ERY? podejrzewam że zmiana adresu na właściwy powinna wystarczyć, a ten można sprawdzić czytając źródełko wtyczki.

Co do właściwości Commanderów, Bersy udostępnił mi potrzebne adresy, więc jak będę miał czas je sprawdzić, to zapodam skrypt wyłączający różne różnice między Commanderem a zwykłą jednostką (Każdy z podanych adresów przez Bersyego na coś takiego pozwala, muszę tylko wiedzieć który adres odpowiada za którą cechę). Jeśli ktoś mimo wszystko chciałby mnie wyręczyć mogę zapodać tą listę adresów wraz z wartościami początkowymi (wystarczy sprawdzić która za co odpowiada i czy nie trzeba "wyłączyć" kilku na raz aby wyłączyć jedną cechę), które oczywiście zawierają początek lub koniec zakresu numerów stworzeń dla Commandera, więc "wyłączenie" polega na taką zamianę niektórych z nich by dany kawałek kodu nigdy się nie wykonał (tj. zmienić zakres na pusty).

Altair PW
11 kwietnia 2012, 22:41
Cytat:
Mam pytanie dotyczące skryptu dodającego umiejętność strzelania:
Co powinienem wstawić za typ_pocisku? Czy to działa na zasadzie jak numery stworzeń tzn. jakaś liczba odpowiada jakiemuś pociskowi np. 1 bełtowi kusznika?

Trochę inna sprawa:
Czy po dodaniu tych linii do jakiegoś skryptu z data\s będzie to działać?

Powinno działać. Aczkolwiek są pewne restrykcje. Np. stworzenie musi posiadać animacje strzelania i gra "chyba" musi być o tym jakoś poinformowana.
Lista typów pocisków była już chyba gdzieś podawana na forum.

Cytat:
Co do sztuczek na strzelanie/czarowanie stworka to czy będą działać z wtyczką Amethyst (umozliwia dodanie nowych stworków)? bo nie mam pojęcia czy potrzebna informacja zmieniła miejsce w pamięci czy nie...

Czy istnieje możliwość napisania wersji skryptu zgodną z Amethystem/Emeraldem/inną_wtyczką_ERY? podejrzewam że zmiana adresu na właściwy powinna wystarczyć, a ten można sprawdzić czytając źródełko wtyczki.

Nie mam pojęcia. Zgaduje, że nie, ale nic nie stoi na przeszkodzie by to poprawić. Niestety nie śledzę na bieżąco rozwoju ERY i pluginów do niej dlatego bardzo proszę o link. Jak znajdę czas (pewnie w czerwcu lub lipcu) postaram się zaktualizować skrypty.

Swoją drogą za dużo robi się tych wersji, pluginów i innych skryptowych modyfikacji i przydałaby się jakaś unifikacja.
Dlatego pół roku temu zacząłem projekt "Aquamarine Library" zbierający istniejące UN:C'owe skrypty i pozwalające na pisanie skryptów nie martwiąc się o wersję WoGa (3.58F, ERA). Oczywiście nie wszystko da się przenieść, ale póki co się udało: zebranie poprawek (MR:N, TR:T, HE:F), skryptów do kontroli zaklęć (SP), autosawu, czarnego rynku (itd.) wszystko działające od 3.58F wzwyż. Raz napisane skrypty będą działać niezależnie od wersji, a w razie pojawienia się nowinek (nowych wersji ERY) wystarczy zaktualizować wersję (Aquamarine Library)

gruziak97 PW
12 kwietnia 2012, 06:58
Cytat:
Np. stworzenie musi posiadać animacje strzelania i gra "chyba" musi być o tym jakoś poinformowana.

A w jaki sposób mam ją "poinformować"? Sam skrypt tego nie zrobi?

Cytat:
Lista typów pocisków była już chyba gdzieś podawana na forum.

A mógłbyś ją jeszcze raz podać, albo czy znajdę ją w ERM help, w tych listach Format X?

Irhak PW
12 kwietnia 2012, 10:28
Cytat:
A w jaki sposób mam ją "poinformować"? Sam skrypt tego nie zrobi?
We flagach jednostki masz m.in. strzelca. IMO to trzeba dać, aby gra była poinformowana (o ile nie ma tego w powyższym skrypcie).

gruziak97 PW
12 kwietnia 2012, 16:03
A czy to nie informuje gry?
**ustawiamy flagę strzelania
!!MA:Xnr_stwora/?i;
!!VRi:|32789;
!!MA:Xnr_stwora/i;
Skoro jest opisane jako ustawianie flagi strzelania?

Irhak PW
12 kwietnia 2012, 16:16
EKHM!:
(o ile nie ma tego w powyższym skrypcie)

Nie jestem przekonany co do liczby jedynie, ale skoro to rzekomo działa...

gruziak97 PW
12 kwietnia 2012, 18:11
Chciałem się upewnić. W każdym razie dzięki. Pewnie niedługo to przetestuje i się okaże, chociaż myślę, że jest dobrze, skoro nikt nic jeszcze nie pisał.


@DOWN
Dzięki Altair.

Altair PW
12 kwietnia 2012, 18:17
Dodałem typy pocisków.

TopFunny525 PW
7 sierpnia 2012, 15:02
Altair, takie dwa pytania.

Pierwsze gdzie znajduje się ten dźwięk strzału(pierwotnie?)
A drugie, napiszesz skrypt na zmianę umiejętności bohatera? Np. Chciałbym dać Ash(z inferno heretyk), umiejętność Expert magii ognia(taką jaką ma Adrienne w swojej kampanii). Czy pomożesz?

gruziak97 PW
7 sierpnia 2012, 18:20
Co prawda nie jestem Altair, ale chyba mogę pomóc.
Cytat:
Pierwsze gdzie znajduje się ten dźwięk strzału(pierwotnie?)
Altair:
Jest wysoce prawdopodobne, że otrzymacie komunikat o braku pliku dźwiękowego strzału np. xxxxshot.82m. Plik musicie umieścić w katalogu data.
Oznacza to, że tego pliku w ogóle niema. Musisz go sam dodać i wrzucić do katalogu data. Natomiast już istniejące dźwięki znajdują się w archiwum heroes3.snd w data.
Cytat:
A drugie, napiszesz skrypt na zmianę umiejętności bohatera? Np. Chciałbym dać Ash(z inferno heretyk), umiejętność Expert magii ognia(taką jaką ma Adrienne w swojej kampanii). Czy pomożesz?
Skorzystaj z zakładki HE w ERMHelp.

EDIT
U mnie działa coś takiego:
!#HE@:S#/$;
@nr bohatera (format H w ERMHelp)
#nr umiejętności (format SS w ERMHelp)
$poziom umiejętności 0-brak 1-podstawowy 2-zaawansowany 3-ekspert

TopFunny525 PW
7 sierpnia 2012, 19:19
Dzięki Gruziak:). A jak wejść do Archiwum snd?(tego który napisałeś związku z dźwiękami?

gruziak97 PW
7 sierpnia 2012, 20:11
Wystarczy MMarchive :)
strona: 1 - 2 - 3 - 4
temat: [przyklejony] ERM poziom - "Impossible"

powered by phpQui
beware of the two-headed weasel